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 1wbBqH-002MTh-0r for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 06:39:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wbBqE-002aSU-2v for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jun 2026 06:39:38 +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 1wbBqD-002aSK-2g for pgsql-hackers@lists.postgresql.org; Sun, 21 Jun 2026 06:39:38 +0000 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wbBq2-00000001P2x-0uL4 for pgsql-hackers@postgresql.org; Sun, 21 Jun 2026 06:39:36 +0000 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-c0e12cb1d90so15485166b.2 for ; Sat, 20 Jun 2026 23:39:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782023964; cv=none; d=google.com; s=arc-20240605; b=cnIpYL4QC99YoumfxqQyalhHtBFJCc5T1zIhUIruKL2dsBH3wY4WOYl3ZDrYz1H+SX eE2XrKs1IbYTCAOMDWvftmUMR8UV8utAxHBMBYb3q+mdvRxGGN9kHBqldRNkmDFQUzKX FGl/6kDwuyGNIzCm4YhgAl0gc+neOTwyk4rBNZ+FYzdq0Xv5ZOpZ9VQ8F7m9lHQaT7QX o6WbZKthIXv8hIR6BKKuvbvHzJLrlR2PoiKfF15DkkstcTM7rzfeThnhfMU6gWVAzizi zyjE7xhN9FJ5bhNHF2gb2Shugvjep6LpbxuO3+0JvJbeyRyzI1EM//n7iiDXBRObTpa0 NZcg== 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=Kf7nmbei/Jf06yT2aZwG7TXOrCGmma2RGvlvyjClxEI=; fh=wXZONcAvCD1v/qiGvj1lQ/INPR21bAt9tZJZLBFbXOQ=; b=TJgTLGKC8twBrcieSfonKEONrrvqIKHJlVaoI1B0/SwsE8mObKq5X3UClc3qhGnsD3 Nbr/jUU/VDxX3R73t47XDPQGTY6nL3PHIBgLya3yzF7yamBg84nIMVJs3IcLTem3dQoV 7e7CFyGnBg1nymO3YQyIPg3nN8rc9933tJUMmdmrsoudc5gfr/tMvpmpDxGJDUsMdb9y 8xML0jV6Mm3b59vcH+NOYWlGHjtqJfBrOZFMkjg/tlGdEB4aG1HnTH5XrwNAqf/pLBgV 5PQREAvwO4KGp1cvQMCHSjtBK32446Kxq4KjdGIVBEotdTXGmvBNZaUODjwXDHLRF1tw /4Sw==; 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=1782023964; x=1782628764; 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=Kf7nmbei/Jf06yT2aZwG7TXOrCGmma2RGvlvyjClxEI=; b=V5gcwOa4zG0uFbb7pt+UnlpIpKqBJPqbzVwNW4uY7GfVlLD7v8CNAfo99F/mzklCEp 7uBHWX5w2Ay5A+z9ypGH/k30qGEH1aKZH3EA7ntpC5E2EKt43ukFOe19EZ4aW5iDSI8F Gm79OM+pvBhZngotAyKR3br2tTdpRKnJvP31BgMI0AHf3CU0v/rCBsJTg7f5+wiTYLvm bUBAnkjp0FNZuRKxjQaEzBhJZAo1gDH8UYwB014mDTw+DEP5EQUaEBFGX8g/d4Z8e6av x30iq7DMgZNE+MjgyGnDM9wG3JM5nHrbKE46cWdsdPBnBqNtDM3q/V9k2k86B5rwvB2I BcRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782023964; x=1782628764; 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=Kf7nmbei/Jf06yT2aZwG7TXOrCGmma2RGvlvyjClxEI=; b=mh8gmjFAMaRU7V2Xy+z4+CoRLvlYOJ4QbZzm+cMyy6i8Aa3Egt8Ug8eKicDYi+Gb1d WQ5d8rclxr0NFLus5Ods4Jbw283xpxl7og+kGYNX2p7Ylt5muX1jnews74DCNzAN78Db SI2qryv9KCAfvDIbO9QO6ADWFj00PBpCju9iYR5pUoGrCyxALw1+fhvLfQWRRRhby/bT WjQ6ifRjSDEDl8EhV9FWGmsp5Oo+DtUo+6iHr8Heq3PjL3aPnzaYyuvwcvE0RDQZhg4v M76I5dAUCxzr4HF2ussQnNuHQ0zQbB3d+PHM4ARTBYQneRQakNbpl6EoYjbInef5Ed27 LEYQ== X-Gm-Message-State: AOJu0Yx16lRHYWXmQ2a7DGZ5KEKWoJ9Gx23UlKGEDiUuQOYSByPwlck7 OT9p9Eiry9UvrGbyCwFDdC8Nz/YwpOQLDYlRSQH1jDmZmqYGVefXW/+VJGfFAxVR17lxzUQ8dB9 d6NMlWlbajw7sUUUTA7U051msmrtCwZg= X-Gm-Gg: AfdE7clVDsohuqQhpQyRDAs9j12RJ6m+AZJOtu/hiPji5Cu0FA6n3gCCDYloFLA4bgk CBjvGrqrKFHgzWRZwKHd6wkkBc5F1dU0TpHxLFfkxn3/tyE3Og9A6bY0UqfKwXl+n76Tn4lBsYF O6fv3zUkI8+e0WrS69Z5mddz9LMk4QkitbYY584ok+bgiKdPMH4u3JJdGH6nxAb8kwCyP/HeSdo jdGqnqcM95Ix+AWEOJhakBglZ+H2eePcGcECc62zxs92ZEtqj0FMPipt9XQtwALMPd5fzarO3sR 2fpirTG3pNn6QctIK7USp+Q6rotM6HqoJkFDlu+bZxEfSiSysaNsUyz7vFvAd9deSFLbgmjavBV uVWFwYHso8W3xz+iB0fYR6g== X-Received: by 2002:a17:907:944f:b0:bec:6c5c:ccea with SMTP id a640c23a62f3a-c097b491cccmr485214666b.19.1782023963841; Sat, 20 Jun 2026 23:39:23 -0700 (PDT) MIME-Version: 1.0 References: <20260613.212530.63949290085162247.ishii@postgresql.org> <20260619.203901.1981089207355838490.ishii@postgresql.org> In-Reply-To: <20260619.203901.1981089207355838490.ishii@postgresql.org> Reply-To: assam258@gmail.com From: Henson Choi Date: Sun, 21 Jun 2026 15:39:11 +0900 X-Gm-Features: AVVi8CfPIIlAEX7-dRxV5Sh48L5Aji0dYvUzY9049bihlTMcY6Un0Vx6ktWR1DA Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: pgsql-hackers@postgresql.org, jian.universality@gmail.com, 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, li.evan.chao@gmail.com Content-Type: multipart/mixed; boundary="00000000000058e00f0654bdc9b8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000058e00f0654bdc9b8 Content-Type: multipart/alternative; boundary="00000000000058e00e0654bdc9b6" --00000000000058e00e0654bdc9b6 Content-Type: text/plain; charset="UTF-8" Hi hackers, This is an increment on top of v49: it lands the two fixes I left as still-to-come there -- the DEFINE-evaluation use-after-free, now a dedicated ExprContext, and the PREV/NEXT/FIRST/LAST namespace collision -- adds a correctness fix found while reviewing the tuplestore spool (dormant matches), and applies Jian He's and Tatsuo Ishii's review of the v48 series as a set of mostly behavior-neutral commits. Before the patch list, a note on CI: cfbot has been red here, but the failure is not RPR -- it is the libLLVM 19 + ASAN JIT crash (CF 6870), which reproduces on plain master. The build-system fix (exclude sanitizer flags from JIT bitcode generation) is Matheus Alcantara's; the meson half is v3-0001-Exclude-sanitizer-flags-from-LLVM-JIT-bitcode-gen.patch: https://postgr.es/m/CAAAe_zBX5uV9K0ikuROLgdNvDCgGqHRskT-73L+oX9=3aXR2AQ@mail.gmail.com For v50, what would you think about folding that meson patch in as a temporary prerequisite at the front of the series, so cfbot's ASAN build gets past the JIT crash and actually exercises RPR? First, two cleanups splitting changes unrelated to RPR out of the feature patch: nocfbot-0001 Remove blank-line changes unrelated to row pattern recognition nocfbot-0002 Remove unnecessary includes from the row pattern recognition patch The fixes -- the two I left as still-to-come in v48, plus the dormant-match fix found since (nocfbot-0003..0005, all behavior-changing): nocfbot-0003 Recognize row pattern navigation operations by name in DEFINE The placeholder PREV/NEXT/FIRST/LAST pg_proc functions polluted the ordinary function namespace and could be silently misbound to same-named user functions. They are dropped; an unqualified PREV/NEXT/FIRST/LAST inside a DEFINE clause is recognized as navigation by name, while a schema-qualified call still reaches an ordinary function. A navigation operation inside a navigation offset -- which must be a run-time constant -- is now rejected instead of crashing the planner. (f).prev follows attribute notation as an ordinary function, the same inside and outside DEFINE. nocfbot-0004 Use a dedicated ExprContext for RPR DEFINE clause evaluation nocfbot-0039's interim leak fix had turned into a use-after-free and was voided in v48. DEFINE evaluation now has its own ExprContext, reset once per row and separate from both the per-output-tuple context and tmpcontext, resolving the leak and the use-after-free together. nocfbot-0005 Drive RPR row pattern matching once per row Matching only advanced when a window function read the frame, so a row whose only window function skips the frame (e.g. nth_value() with a NULL offset) left the match behind the current row -- silently wrong results and a spurious "cannot fetch row ... before WindowObject's mark position" error. The match is now driven once per row, before the window functions run; the navigation mark advances from the frontier the match reached, so the tuplestore is trimmed sooner. Review of v48 (Jian He, and Tatsuo Ishii), as nocfbot-0006..0013 -- behavior-neutral except where tagged [behavior change]: nocfbot-0006 Tidy up row pattern recognition plumbing Remove the dead collectPatternVariables()/buildDefineVariableList() helpers; drop the redundant rpSkipTo/defineClause arguments of make_windowagg(); mark RPRNavExpr.resulttype query_jumble_ignore; rename WindowAggState.defineClauseList to defineClauseExprs; assorted block flattening. No change to planner or executor output. nocfbot-0007 Further tidy up row pattern recognition plumbing Drop the now-unused WindowClause argument of transformDefineClause(); use foreach_node()/foreach_current_index() in the DEFINE walkers and drop their redundant end-of-list break tests; minor include and comment fixups. No output change. nocfbot-0008 Refactor transformDefineClause in row pattern recognition [behavior change] Hoist the "DEFINE variable not used in PATTERN" cross-check out of the recursive walker into its caller, and reorder per-variable processing to transformExpr -> coerce_to_boolean -> pull_var_clause, dropping the separate second coercion pass. The only observable change is one error-cursor position: the duplicate-variable error now points at the later definition. New regression coverage for DEFINE coercion and Var propagation is added. nocfbot-0009 Replace a bare block with an else in the RPR DEFINE clause walker Cosmetic flattening of define_walker()'s phase dispatch into an if / else if / else chain. nocfbot-0010 Rename loop index variables in row pattern deparse helpers Tatsuo's suggestion; descriptive names for the deparse index/loop variables, no change to deparsed output. nocfbot-0011 Rename absorption "judgment point" to "comparison point" in comments Comment and executor-README wording only; identifiers unchanged. nocfbot-0012 Improve comments, documentation, and naming for row pattern recognition A batch of comment/doc clarity fixes -- the AST-vs-parse-tree wording, the Run Condition EXPLAIN test, the contain_rpr_walker comment, the ALT-marker and quantifier comments, the RPCommonSyntax.location "or -1" convention, and the transformDefineClause header -- plus renaming the saturated-count sentinel RPR_COUNT_MAX to RPR_COUNT_INF for consistency with RPR_QUANTITY_INF. nocfbot-0013 Document eval_nav_offset_helper's NULL/negative offset handling Comment only. The NEEDS_EVAL offset branch is reachable (a Param offset can be NULL or negative at run time), so it stays a graceful return rather than an assertion. For traceability, where each patch came from: patch proposer proposal ------------- -------------- ------------------------------------------------- nocfbot-0001 Henson drop blank-line churn unrelated to RPR nocfbot-0002 Henson drop unnecessary includes nocfbot-0003 Henson nav namespace collision; (f).prev as ordinary function nocfbot-0004 Henson dedicated ExprContext for DEFINE evaluation nocfbot-0005 Henson drive row pattern matching once per row nocfbot-0006 Jian He tidy RPR plumbing nocfbot-0007 Henson further plumbing tidy nocfbot-0008 Jian He refactor transformDefineClause nocfbot-0009 Jian He bare block -> else in the DEFINE walker nocfbot-0010 Tatsuo Ishii rename deparse loop/index variables nocfbot-0011 Jian He "judgment point" -> "comparison point" wording nocfbot-0012 Jian He comment/doc clarity batch + RPR_COUNT_INF rename nocfbot-0013 Jian He document eval_nav_offset NULL/negative offset handling Still to come -- Jian He's follow-ups on this thread (2026-06-19), to fold once each approach is agreed (all under review): topic proposed change ----------------------------- ------------------------------------------- DEFINE qualified column-ref make the differing pg_temp.t.c / error messages public.t.c / t.c messages consistent, on the standard "invalid reference to FROM-clause entry for table" validateRPRPatternVarCount rename to preprocessRPRPattern quantifier INF bound abstract behind an RPR_QUANTITY_INF macro "nullable" variables rename to match_empty splitRPRTrailingAlt use foreach_node / foreach_current_index buildRPRPattern signature pass the WindowClause directly collectDefineVariables / inline and drop the helpers tryUnwrapSingleChild variable-limit error msg fold the maximum into the primary message Quality work to run alongside, on Linux: Valgrind (leak and use-after-free, to exercise the DEFINE ExprContext fix, whose reproducer is cassert-only) and standing gcov coverage to catch untested planner paths. Longer term, and out of scope for this CF entry: - Smaller documentation and error-message follow-ups (glossary, the bounded-quantifier message, README wording). - Short-circuit / tri-state DEFINE evaluation, as a separate series. - SEEK clause support (SQL:2016). - Empty pattern PATTERN () -- correctly rejected today; deferred because its empty-match semantics (SHOW/OMIT EMPTY MATCHES) are tied to the still-out-of-scope MEASURES clause. - Relaxing the DEFINE-subquery over-rejection where the standard permits it (the subquery does no RPR of its own and makes no outer reference). - Prefix-pattern absorption (an optimization; designed and intentionally split out as its own series). - R010 (MATCH_RECOGNIZE in the FROM clause) and the shared RPRContext it would back. Please let me know if any of the slicing or grouping looks off. On a personal note, some fatigue has built up, so I'll be easing off the pace a little for a while and may be slower to follow up on this thread than I have been. The work continues -- just at a gentler pace. Thanks again to Jian and Tatsuo for the careful review. Best regards, Henson --00000000000058e00e0654bdc9b6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

This is an increment on top of v49: it = lands the two fixes I left as
still-to-come there -- the DEFINE-evaluati= on use-after-free, now a dedicated
ExprContext, and the PREV/NEXT/FIRST/= LAST namespace collision -- adds a
correctness fix found while reviewing= the tuplestore spool (dormant
matches), and applies Jian He's and T= atsuo Ishii's review of the v48 series
as a set of mostly behavior-n= eutral commits.

Before the patch list, a note on CI: cfbot has been = red here, but the
failure is not RPR -- it is the libLLVM 19 + ASAN JIT = crash (CF 6870), which
reproduces on plain master.=C2=A0 The build-syste= m fix (exclude sanitizer flags
from JIT bitcode generation) is Matheus A= lcantara's; the meson half is
v3-0001-Exclude-sanitizer-flags-from-L= LVM-JIT-bitcode-gen.patch:

=C2=A0 https://= postgr.es/m/CAAAe_zBX5uV9K0ikuROLgdNvDCgGqHRskT-73L+oX9=3D3aXR2AQ@mail.gmai= l.com

For v50, what would you think about folding that meson pat= ch in as a
temporary prerequisite at the front of the series, so cfbot&#= 39;s ASAN build
gets past the JIT crash and actually exercises RPR?
<= br>First, two cleanups splitting changes unrelated to RPR out of the featur= e
patch:

=C2=A0 nocfbot-0001 =C2=A0Remov= e blank-line changes unrelated to row pattern
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 recognition
=C2=A0 nocfbot-0002 =C2=A0Re= move unnecessary includes from the row pattern
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 recognition patch


The fixes -= - the two I left as still-to-come in v48, plus the dormant-match
fix fou= nd since (nocfbot-0003..0005, all behavior-changing):

=C2=A0 nocfbot= -0003 =C2=A0Recognize row pattern navigation operations by name in
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 DEFINE
=C2=A0 =C2= =A0 =C2=A0 The placeholder PREV/NEXT/FIRST/LAST pg_proc functions polluted = the
=C2=A0 =C2=A0 =C2=A0 ordinary function namespace and could be silent= ly misbound to
=C2=A0 =C2=A0 =C2=A0 same-named user functions.=C2=A0 The= y are dropped; an unqualified
=C2=A0 =C2=A0 =C2=A0 PREV/NEXT/FIRST/LAST = inside a DEFINE clause is recognized as
=C2=A0 =C2=A0 =C2=A0 navigation = by name, while a schema-qualified call still reaches an
=C2=A0 =C2=A0 = =C2=A0 ordinary function.=C2=A0 A navigation operation inside a navigation = offset
=C2=A0 =C2=A0 =C2=A0 -- which must be a run-time constant -- is n= ow rejected instead of
=C2=A0 =C2=A0 =C2=A0 crashing the planner. =C2=A0= (f).prev follows attribute notation as an
=C2=A0 =C2=A0 =C2=A0 ordinary = function, the same inside and outside DEFINE.

=C2=A0 nocfbot-0004 =C2=A0Use a dedicated ExprContext for RPR DEFINE cla= use
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 evaluation=C2=A0 =C2=A0 =C2=A0 nocfbot-0039's interim leak fix had turned into = a use-after-free and
=C2=A0 =C2=A0 =C2=A0 was voided in v48.=C2=A0 DEFIN= E evaluation now has its own ExprContext,
=C2=A0 =C2=A0 =C2=A0 reset onc= e per row and separate from both the per-output-tuple context
=C2=A0 =C2= =A0 =C2=A0 and tmpcontext, resolving the leak and the use-after-free togeth= er.

=C2=A0 nocfbot-0005 =C2=A0Drive RPR row pattern matching once pe= r row
=C2=A0 =C2=A0 =C2=A0 Matching only advanced when a window function= read the frame, so a row
=C2=A0 =C2=A0 =C2=A0 whose only window functio= n skips the frame (e.g. nth_value() with a
=C2=A0 =C2=A0 =C2=A0 NULL off= set) left the match behind the current row -- silently wrong
=C2=A0 =C2= =A0 =C2=A0 results and a spurious "cannot fetch row ... before WindowO= bject's mark
=C2=A0 =C2=A0 =C2=A0 position" error.
=C2=A0 = =C2=A0 =C2=A0 The match is now driven once per row, before the window funct= ions run;
=C2=A0 =C2=A0 =C2=A0 the navigation mark advances from the fro= ntier the match reached, so
=C2=A0 =C2=A0 =C2=A0 the tuplestore is trimm= ed sooner.


Review of v48 (Jian He, and Tatsuo Ishii), as nocf= bot-0006..0013 --
behavior-neutral except where tagged [behavior change]= :

=C2=A0 nocfbot-0006 =C2=A0Tidy up row pat= tern recognition plumbing
=C2=A0 =C2=A0 =C2=A0 Remove the dead collectPa= tternVariables()/buildDefineVariableList()
=C2=A0 =C2=A0 =C2=A0 helpers;= drop the redundant rpSkipTo/defineClause arguments of
=C2=A0 =C2=A0 =C2= =A0 make_windowagg(); mark RPRNavExpr.resulttype query_jumble_ignore;
= =C2=A0 =C2=A0 =C2=A0 rename WindowAggState.defineClauseList to defineClause= Exprs; assorted
=C2=A0 =C2=A0 =C2=A0 block flattening.=C2=A0 No change t= o planner or executor output.

=C2=A0 nocfbot-0007 =C2=A0Further tidy= up row pattern recognition plumbing
=C2=A0 =C2=A0 =C2=A0 Drop the now-u= nused WindowClause argument of transformDefineClause();
=C2=A0 =C2=A0 = =C2=A0 use foreach_node()/foreach_current_index() in the DEFINE walkers and=
=C2=A0 =C2=A0 =C2=A0 drop their redundant end-of-list break tests; mino= r include and
=C2=A0 =C2=A0 =C2=A0 comment fixups.=C2=A0 No output chang= e.

=C2=A0 nocfbot-0008 =C2=A0Refactor transformDefineClause in row p= attern recognition
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 [behavior change]
=C2=A0 =C2=A0 =C2=A0 Hoist the "DEFINE variab= le not used in PATTERN" cross-check out of the
=C2=A0 =C2=A0 =C2=A0= recursive walker into its caller, and reorder per-variable processing
= =C2=A0 =C2=A0 =C2=A0 to transformExpr -> coerce_to_boolean -> pull_va= r_clause, dropping the
=C2=A0 =C2=A0 =C2=A0 separate second coercion pas= s.=C2=A0 The only observable change is one
=C2=A0 =C2=A0 =C2=A0 error-cu= rsor position: the duplicate-variable error now points at the
=C2=A0 =C2= =A0 =C2=A0 later definition.=C2=A0 New regression coverage for DEFINE coerc= ion and Var
=C2=A0 =C2=A0 =C2=A0 propagation is added.

=C2=A0 noc= fbot-0009 =C2=A0Replace a bare block with an else in the RPR DEFINE clause<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 walker
=C2=A0= =C2=A0 =C2=A0 Cosmetic flattening of define_walker()'s phase dispatch = into an
=C2=A0 =C2=A0 =C2=A0 if / else if / else chain.

=C2=A0 no= cfbot-0010 =C2=A0Rename loop index variables in row pattern deparse helpers=
=C2=A0 =C2=A0 =C2=A0 Tatsuo's suggestion; descriptive names for the= deparse index/loop
=C2=A0 =C2=A0 =C2=A0 variables, no change to deparse= d output.

=C2=A0 nocfbot-0011 =C2=A0Rename absorption "judgment= point" to "comparison point" in
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 comments
=C2=A0 =C2=A0 =C2=A0 Comment an= d executor-README wording only; identifiers unchanged.

=C2=A0 nocfbo= t-0012 =C2=A0Improve comments, documentation, and naming for row pattern=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 recognition
=C2= =A0 =C2=A0 =C2=A0 A batch of comment/doc clarity fixes -- the AST-vs-parse-= tree wording,
=C2=A0 =C2=A0 =C2=A0 the Run Condition EXPLAIN test, the c= ontain_rpr_walker comment, the
=C2=A0 =C2=A0 =C2=A0 ALT-marker and quant= ifier comments, the RPCommonSyntax.location "or -1"
=C2=A0 =C2= =A0 =C2=A0 convention, and the transformDefineClause header -- plus renamin= g the
=C2=A0 =C2=A0 =C2=A0 saturated-count sentinel RPR_COUNT_MAX to RPR= _COUNT_INF for
=C2=A0 =C2=A0 =C2=A0 consistency with RPR_QUANTITY_INF.
=C2=A0 nocfbot-0013 =C2=A0Document eval_nav_offset_helper's NULL/= negative offset
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = handling
=C2=A0 =C2=A0 =C2=A0 Comment only.=C2=A0 The NEEDS_EVAL offset = branch is reachable (a Param
=C2=A0 =C2=A0 =C2=A0 offset can be NULL or = negative at run time), so it stays a graceful
=C2=A0 =C2=A0 =C2=A0 retur= n rather than an assertion.



For traceability, where each = patch came from:

=C2=A0 patch =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0proposer =C2=A0 =C2=A0 =C2=A0 =C2=A0proposal
=C2=A0= ------------- =C2=A0-------------- =C2=A0---------------------------------= ----------------
=C2=A0 nocfbot-0001 =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0drop blank-line churn unrelated to RPR
=C2=A0 nocfbot-0002 = =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0drop unnecessary includes=C2=A0 nocfbot-0003 =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0nav n= amespace collision; (f).prev as ordinary function
=C2=A0 nocfbot-0004 = =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dedicated ExprContext for D= EFINE evaluation
=C2=A0 nocfbot-0005 =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0drive row pattern matching once per row
=C2=A0 nocfbot-0006= =C2=A0 Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0 tidy RPR plumbing
=C2=A0 noc= fbot-0007 =C2=A0 Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0further plumbing = tidy
=C2=A0 nocfbot-0008 =C2=A0 Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0 refa= ctor transformDefineClause
=C2=A0 nocfbot-0009 =C2=A0 Jian He =C2=A0 =C2= =A0 =C2=A0 =C2=A0 bare block -> else in the DEFINE walker
=C2=A0 nocf= bot-0010 =C2=A0 Tatsuo Ishii =C2=A0 =C2=A0rename deparse loop/index variabl= es
=C2=A0 nocfbot-0011 =C2=A0 Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0 "= judgment point" -> "comparison point" wording
=C2=A0 n= ocfbot-0012 =C2=A0 Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0 comment/doc clarity = batch + RPR_COUNT_INF rename
=C2=A0 nocfbot-0013 =C2=A0 Jian He =C2=A0 = =C2=A0 =C2=A0 =C2=A0 document eval_nav_offset NULL/negative offset handling=


Still to come -- Jian He's follow-ups on this thread= (2026-06-19), to fold
once each approach is agreed (all under review):<= br>
=C2=A0 topic =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0proposed chan= ge
=C2=A0 ----------------------------- =C2=A0--------------------------= -----------------
=C2=A0 DEFINE qualified column-ref =C2=A0 =C2=A0make t= he differing pg_temp.t.c /
=C2=A0 =C2=A0error messages =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 public.t.c / t.c messages consistent= , on
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 the standard "inv= alid reference to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 FROM-cla= use entry for table"
=C2=A0 validateRPRPatternVarCount =C2=A0 =C2= =A0 rename to preprocessRPRPattern
=C2=A0 quantifier INF bound =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 abstract behind an RPR_QUANTITY_INF macro
= =C2=A0 "nullable" variables =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 re= name to match_empty
=C2=A0 splitRPRTrailingAlt =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0use foreach_node / foreach_current_index
=C2=A0 buildRP= RPattern signature =C2=A0 =C2=A0 =C2=A0pass the WindowClause directly
= =C2=A0 collectDefineVariables / =C2=A0 =C2=A0 =C2=A0 inline and drop the he= lpers
=C2=A0 =C2=A0tryUnwrapSingleChild
=C2=A0 variable-limit error m= sg =C2=A0 =C2=A0 =C2=A0 fold the maximum into the primary message


Quality work to run alongside, on Linux: Valgrind (leak and use-af= ter-free,
to exercise the DEFINE ExprContext fix, whose reproducer is ca= ssert-only)
and standing gcov coverage to catch untested planner paths.<= br>

Longer term, and out of scope for this CF entry:

=C2=A0 - Smaller documentation and error-message follow-up= s (glossary, the
=C2=A0 =C2=A0 bounded-quantifier message, README wordin= g).
=C2=A0 - Short-circuit / tri-state DEFINE evaluation, as a separate = series.
=C2=A0 - SEEK clause support (SQL:2016).
=C2=A0 - Empty patte= rn PATTERN () -- correctly rejected today; deferred because
=C2=A0 =C2= =A0 its empty-match semantics (SHOW/OMIT EMPTY MATCHES) are tied to the
= =C2=A0 =C2=A0 still-out-of-scope MEASURES clause.
=C2=A0 - Relaxing the = DEFINE-subquery over-rejection where the standard permits
=C2=A0 =C2=A0 = it (the subquery does no RPR of its own and makes no outer reference).
= =C2=A0 - Prefix-pattern absorption (an optimization; designed and intention= ally
=C2=A0 =C2=A0 split out as its own series).
=C2=A0 - R010 (MATCH= _RECOGNIZE in the FROM clause) and the shared RPRContext it
=C2=A0 =C2= =A0 would back.


Please let me know if any of the slicing = or grouping looks off.

On a personal note, some fatigue has built up= , so I'll be easing off the
pace a little for a while and may be slo= wer to follow up on this thread
than I have been.=C2=A0 The work continu= es -- just at a gentler pace.

Thanks again to Jian and Tatsuo for th= e careful review.

Best regards,
Henson
--00000000000058e00e0654bdc9b6-- --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0001-drop-blank-line-churn.txt" Content-Disposition: attachment; filename="nocfbot-0001-drop-blank-line-churn.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11iu0 RnJvbSA5ZDU4Y2RmNDBkNzhlZmRiMzUxMzEyNzlhMDA2YjYxODIxMzg0M2RiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDE2IEp1biAyMDI2IDIzOjI2OjE2ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwMS8xM10g UmVtb3ZlIGJsYW5rLWxpbmUgY2hhbmdlcyB1bnJlbGF0ZWQgdG8gcm93IHBhdHRlcm4KIHJlY29n bml0aW9uCgpUaGUgUlBSIHBhdGNoIGFkZGVkIG9yIGRyb3BwZWQgYmxhbmsgbGluZXMgaW4gZml2 ZSBleGlzdGluZyBmaWxlcyB3aXRoIG5vCnJlbGF0ZWQgY29kZSBjaGFuZ2UuICBSZXZlcnQgdGhl bSBzbyB0aGUgZmlsZXMgZGlmZmVyIGZyb20gdGhlIGJhc2Ugb25seQp3aGVyZSBSUFIgYWN0dWFs bHkgdG91Y2hlcyB0aGVtLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YyB8IDIgLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyB8IDEgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jICAgIHwgMSArCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgICAgfCAxIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dm dW5jcy5jICB8IDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IGNiNmE0ODRiN2Rl Li41YjIzODVmMWQ4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMTc3 LDcgKzE3Nyw2IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd1N0YXRlUGVyQWdnRGF0YQogCWJvb2wJ CXJlc3RhcnQ7CQkvKiBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhZ2cgaW4gdGhpcyBjeWNsZT8gKi8K IH0gV2luZG93U3RhdGVQZXJBZ2dEYXRhOwogCi0KIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfd2lu ZG93YWdncmVnYXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKIAkJCQkJCQkJCSAgIFdpbmRv d1N0YXRlUGVyRnVuYyBwZXJmdW5jc3RhdGUsCiAJCQkJCQkJCQkgICBXaW5kb3dTdGF0ZVBlckFn ZyBwZXJhZ2dzdGF0ZSk7CkBAIC0xMDg2LDcgKzEwODUsNiBAQCBuZXh0X3R1cGxlOgogCQlFeGVj Q2xlYXJUdXBsZShhZ2dfcm93X3Nsb3QpOwogCX0KIAotCiAJLyogVGhlIGZyYW1lJ3MgZW5kIGlz IG5vdCBzdXBwb3NlZCB0byBtb3ZlIGJhY2t3YXJkcywgZXZlciAqLwogCUFzc2VydChhZ2dyZWdh dGVkdXB0b19ub25yZXN0YXJ0ZWQgPD0gd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDgxM2EzMjZiZDc4Li42ZTRmM2ZkNjFl MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjE0LDYgKzIxNCw3IEBA IHN0YXRpYyBMaXN0ICpzZXRfd2luZG93YWdnX3J1bmNvbmRpdGlvbl9yZWZlcmVuY2VzKFBsYW5u ZXJJbmZvICpyb290LAogc3RhdGljIHZvaWQgcmVjb3JkX2VsaWRlZF9ub2RlKFBsYW5uZXJHbG9i YWwgKmdsb2IsIGludCBwbGFuX25vZGVfaWQsCiAJCQkJCQkJICAgTm9kZVRhZyBlbGlkZWRfdHlw ZSwgQml0bWFwc2V0ICpyZWxpZHMpOwogCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAq CQlTVUJQTEFOIFJFRkVSRU5DRVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCA1NTBl YTRlYjljMC4uOGViMzY3YWE1NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jbGF1c2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKQEAgLTEw Miw2ICsxMDIsNyBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRnJhbWVPZmZzZXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBpbnQgZnJhbWVPcHRpb25zLAogCQkJCQkJCQkgIE9pZCByYW5nZW9wZmFtaWx5 LCBPaWQgcmFuZ2VvcGNpbnR5cGUsIE9pZCAqaW5SYW5nZUZ1bmMsCiAJCQkJCQkJCSAgTm9kZSAq Y2xhdXNlKTsKIAorCiAvKgogICogdHJhbnNmb3JtRnJvbUNsYXVzZSAtCiAgKgkgIFByb2Nlc3Mg dGhlIEZST00gY2xhdXNlIGFuZCBhZGQgaXRlbXMgdG8gdGhlIHF1ZXJ5J3MgcmFuZ2UgdGFibGUs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNDE1ZGE2NDE3ZDQuLjRlYjdlMzViZWU0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC03MzExLDcgKzczMTEsNiBAQCBnZXRf cnVsZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRhcmdldExpc3QsCiAJCWdl dF9ydWxlX29yZGVyYnkod2MtPm9yZGVyQ2xhdXNlLCB0YXJnZXRMaXN0LCBmYWxzZSwgY29udGV4 dCk7CiAJCW5lZWRzcGFjZSA9IHRydWU7CiAJfQotCiAJLyogZnJhbWluZyBjbGF1c2UgaXMgbmV2 ZXIgaW5oZXJpdGVkLCBzbyBwcmludCB1bmxlc3MgaXQncyBkZWZhdWx0ICovCiAJaWYgKHdjLT5m cmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9OT05ERUZBVUxUKQogCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3dpbmRvd2Z1bmNzLmMKaW5kZXggMzg2OWY2Yzg5OTQuLmQxNWFhMGM3NWRiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvd2luZG93ZnVuY3MuYwpAQCAtNDEsNiArNDEsNyBAQCBzdGF0aWMgYm9vbCByYW5r X3VwKFdpbmRvd09iamVjdCB3aW5vYmopOwogc3RhdGljIERhdHVtIGxlYWRsYWdfY29tbW9uKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCWJvb2wgZm9yd2FyZCwgYm9vbCB3aXRob2Zm c2V0LCBib29sIHdpdGhkZWZhdWx0KTsKIAorCiAvKgogICogdXRpbGl0eSByb3V0aW5lIGZvciAq X3JhbmsgZnVuY3Rpb25zLgogICovCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-nav-by-name.txt" Content-Disposition: attachment; filename="nocfbot-0003-nav-by-name.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11j72 RnJvbSA3ZjEzNWQ5ZGVlMzBjNmM0Yzg2ZjQ3MGE5Nzk5Njg4MGIwZjZlY2UyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDE1IEp1biAyMDI2IDE1OjI5OjU5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwMy8xM10g UmVjb2duaXplIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9ucyBieSBuYW1lIGluCiBE RUZJTkUKClBSRVYsIE5FWFQsIEZJUlNULCBhbmQgTEFTVCB3ZXJlIHBsYWNlaG9sZGVyIGZ1bmN0 aW9ucyBpbiBwZ19wcm9jIHRoYXQKcG9sbHV0ZWQgdGhlIG9yZGluYXJ5IGZ1bmN0aW9uIG5hbWVz cGFjZSBhbmQgY291bGQgYmUgc2lsZW50bHkgbWlzYm91bmQgdG8Kc2FtZS1uYW1lZCB1c2VyIGZ1 bmN0aW9ucy4gIFJlY29nbml6ZSB0aGVtIGJ5IG5hbWUgaW5zaWRlIGEgREVGSU5FIGNsYXVzZQph bmQgZHJvcCB0aGUgcGxhY2Vob2xkZXJzOyBhbiB1bnF1YWxpZmllZCBjYWxsIGlzIGFsd2F5cyBu YXZpZ2F0aW9uLCB3aGlsZQphIHNjaGVtYS1xdWFsaWZpZWQgY2FsbCBzdGlsbCByZWFjaGVzIGFu IG9yZGluYXJ5IGZ1bmN0aW9uLiAgQWxzbyByZWplY3QgYQpuYXZpZ2F0aW9uIG9wZXJhdGlvbiBp bnNpZGUgYSBuYXZpZ2F0aW9uIG9mZnNldCwgd2hpY2ggbXVzdCBiZSBhIHJ1bi10aW1lCmNvbnN0 YW50IGFuZCBwcmV2aW91c2x5IGNvdWxkIGNyYXNoIHRoZSBwbGFubmVyLgoKUmVjb2duaXRpb24g aGFwcGVucyBpbiB0d28gc3RlcHMgaW4gUGFyc2VGdW5jT3JDb2x1bW46IG5vdGUgdGhlIG1hdGNo ZWQKbmFtZSB1cCBmcm9udCwgc2tpcCB0aGUgY2F0YWxvZyBsb29rdXAgYnkgdHJlYXRpbmcgaXQg YXMgRlVOQ0RFVEFJTF9OT1JNQUwsCmxldCB0aGUgY29tbW9uIGRlY29yYXRpb24gYW5kIHdyb25n LWtpbmQtb2Ytcm91dGluZSBjaGVja3MgcnVuLCBhbmQgb25seQp0aGVuIHJvdXRlIHRvIFBhcnNl UlBSTmF2Q2FsbCB0byBidWlsZCB0aGUgUlBSTmF2RXhwci4gIFBhcnNlUlBSTmF2Q2FsbAp0aGVy ZWZvcmUgZG9lcyBub3QgZHVwbGljYXRlIHRoZSBhZ2dyZWdhdGUvd2luZG93IGRlY29yYXRpb24g Y2hlY2tzCihhZ2dfc3RhciwgRElTVElOQ1QsIFdJVEhJTiBHUk9VUCwgT1JERVIgQlksIEZJTFRF UiwgT1ZFUik7IHRoZSBjb21tb24gcGF0aApwZXJmb3JtcyB0aGVtIHdpdGggaWRlbnRpY2FsIG1l c3NhZ2VzLgoKRG9jdW1lbnQgdGhpcyBpbiBmdW5jLXdpbmRvdy5zZ21sLgotLS0KIGRvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwgICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9mdW5jLmMgICAgICAgIHwgMjk2ICsrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3Jwci5jICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgIHwgIDU1ICsrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRv d2Z1bmNzLmMgICAgfCAxMTggLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICB8ICAyNCAtLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0ICAgICAg fCAgMzIgLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IHwgNDkyICsr KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgICAg ICAgICAgIHwgIDE1IC0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCAgICAgIHwg MjUxICsrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDEwMDcgaW5zZXJ0aW9ucygrKSwg Mjk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2lu ZG93LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sCmluZGV4IGFiNDY5 YjU2ZmQ3Li4xMDc5YjZhYmI2ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13 aW5kb3cuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sCkBAIC0y ODIsNiArMjgyLDEwIEBAIElHTk9SRSBOVUxMUwogICAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24g bmF2aWdhdGlvbiBmdW5jdGlvbnMgYXJlIGxpc3RlZCBpbgogICAgPHhyZWYgbGlua2VuZD0iZnVu Y3Rpb25zLXJwci1uYXZpZ2F0aW9uLXRhYmxlIi8+LiAgVGhlc2UgZnVuY3Rpb25zCiAgICBjYW4g YmUgdXNlZCB0byBkZXNjcmliZSB0aGUgREVGSU5FIGNsYXVzZSBvZiBSb3cgUGF0dGVybiBSZWNv Z25pdGlvbi4KKyAgIFRoZSBuYW1lcyA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+LCA8ZnVuY3Rp b24+TkVYVDwvZnVuY3Rpb24+LAorICAgPGZ1bmN0aW9uPkZJUlNUPC9mdW5jdGlvbj4sIGFuZCA8 ZnVuY3Rpb24+TEFTVDwvZnVuY3Rpb24+IGFyZQorICAgcmVjb2duaXplZCBhcyBuYXZpZ2F0aW9u IGZ1bmN0aW9ucyBvbmx5IGluIGFuIHVucXVhbGlmaWVkIGNhbGw7IGEKKyAgIHNjaGVtYS1xdWFs aWZpZWQgY2FsbCBpcyByZXNvbHZlZCBhcyBhbiBvcmRpbmFyeSBmdW5jdGlvbiBpbnN0ZWFkLgog ICA8L3BhcmE+CiAKICAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLXJwci1uYXZpZ2F0aW9uLXRhYmxl Ij4KQEAgLTM5Nyw2ICs0MDEsOCBAQCBJR05PUkUgTlVMTFMKICAgICBwZXJtaXR0ZWQuIFNhbWUt Y2F0ZWdvcnkgbmVzdGluZyAoZS5nLiwKICAgICA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+IGlu c2lkZSA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+KSBpcyBhbHNvCiAgICAgcHJvaGliaXRlZC4K KyAgICBUaGUgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gYXJndW1lbnQgbXVzdCBiZSBh IHJ1bi10aW1lIGNvbnN0YW50OgorICAgIGl0IGNhbm5vdCByZWZlcmVuY2UgY29sdW1ucyBvciBj b250YWluIGEgbmF2aWdhdGlvbiBvcGVyYXRpb24uCiAgICA8L3BhcmE+CiAKICAgPG5vdGU+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCAxZjZjOGZhNGZiMi4uZjNiMzdhYTk5MmMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgInBhcnNlci9w YXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCi0jaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC00 OSw2ICs0OCw5IEBAIHN0YXRpYyB2b2lkIHVuaWZ5X2h5cG90aGV0aWNhbF9hcmdzKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCUxpc3QgKmZhcmdzLCBpbnQgbnVtQWdncmVnYXRlZEFyZ3Ms CiAJCQkJCQkJCQlPaWQgKmFjdHVhbF9hcmdfdHlwZXMsIE9pZCAqZGVjbGFyZWRfYXJnX3R5cGVz KTsKIHN0YXRpYyBPaWQJRnVuY05hbWVBc1R5cGUoTGlzdCAqZnVuY25hbWUpOworc3RhdGljIE5v ZGUgKlBhcnNlUlBSTmF2Q2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLAor CQkJCQkJCSBMaXN0ICpmYXJncywgTGlzdCAqYXJnbmFtZXMsIEZ1bmNDYWxsICpmbiwKKwkJCQkJ CQkgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICpQYXJzZUNvbXBsZXhQcm9qZWN0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJCQlOb2RlICpm aXJzdF9hcmcsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgT2lkCUxvb2t1cEZ1bmNOYW1lSW50ZXJu YWwoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpmdW5jbmFtZSwKQEAgLTEyMiw2ICsxMjQsNyBA QCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBM aXN0ICpmYXJncywKIAlpbnQJCQlmZ2NfZmxhZ3M7CiAJY2hhcgkJYWdna2luZCA9IDA7CiAJUGFy c2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCWJvb2wJCWNvdWxkX2JlX3Jwcl9uYXYgPSBmYWxz ZTsKIAogCS8qCiAJICogSWYgdGhlcmUncyBhbiBhZ2dyZWdhdGUgZmlsdGVyLCB0cmFuc2Zvcm0g aXQgdXNpbmcgdHJhbnNmb3JtV2hlcmVDbGF1c2UKQEAgLTIxOCw2ICsyMjEsMjggQEAgUGFyc2VG dW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFy Z3MsCiAJCUFzc2VydChmaXJzdF9hcmcgIT0gTlVMTCk7CiAJfQogCisJLyoKKwkgKiBJbnNpZGUg YW4gUlBSIERFRklORSBjbGF1c2UsIGFuIHVucXVhbGlmaWVkIGNhbGwgdG8gb25lIG9mIHRoZSBy b3cKKwkgKiBwYXR0ZXJuIG5hdmlnYXRpb24gbmFtZXMgUFJFVi9ORVhUL0ZJUlNUL0xBU1QgZGVu b3RlcyB0aGUgbmF2aWdhdGlvbgorCSAqIG9wZXJhdGlvbiwgbm90IGFuIG9yZGluYXJ5IGZ1bmN0 aW9uLiAgSnVzdCBub3RlIHRoYXQgaGVyZTsgdGhlIGNhdGFsb2cKKwkgKiBsb29rdXAgaXMgc2tp cHBlZCBhbmQgdGhlIFJQUk5hdkV4cHIgaXMgYnVpbHQgYXQgdGhlIGVuZCwgYWZ0ZXIgdGhlCisJ ICogY29tbW9uIGRlY29yYXRpb24gY2hlY2tzIGhhdmUgcnVuIChzZWUgdGhlIGNvdWxkX2JlX3Jw cl9uYXYgaGFuZGxpbmcKKwkgKiBiZWxvdykuICBBIHNjaGVtYS1xdWFsaWZpZWQgY2FsbCBpcyB0 aGUgZXhwbGljaXQgd2F5IHRvIHJlYWNoIGFuCisJICogb3JkaW5hcnkgZnVuY3Rpb24gb2Ygb25l IG9mIHRoZXNlIG5hbWVzLgorCSAqLworCWlmICghaXNfY29sdW1uICYmICFwcm9jX2NhbGwgJiYK KwkJcHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUlBSX0RFRklORSAmJgorCQlsaXN0 X2xlbmd0aChmdW5jbmFtZSkgPT0gMSkKKwl7CisJCWNvbnN0IGNoYXIgKm5hbWUgPSBzdHJWYWwo bGluaXRpYWwoZnVuY25hbWUpKTsKKworCQlpZiAoc3RyY21wKG5hbWUsICJwcmV2IikgPT0gMCB8 fAorCQkJc3RyY21wKG5hbWUsICJuZXh0IikgPT0gMCB8fAorCQkJc3RyY21wKG5hbWUsICJmaXJz dCIpID09IDAgfHwKKwkJCXN0cmNtcChuYW1lLCAibGFzdCIpID09IDApCisJCQljb3VsZF9iZV9y cHJfbmF2ID0gdHJ1ZTsKKwl9CisKIAkvKgogCSAqIERlY2lkZSB3aGV0aGVyIGl0J3MgbGVnaXRp bWF0ZSB0byBjb25zaWRlciB0aGUgY29uc3RydWN0IHRvIGJlIGEgY29sdW1uCiAJICogcHJvamVj dGlvbi4gIEZvciB0aGF0LCB0aGVyZSBoYXMgdG8gYmUgYSBzaW5nbGUgYXJndW1lbnQgb2YgY29t cGxleApAQCAtMjY2LDE3ICsyOTEsMzIgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJICogd2l0aCBkZWZhdWx0IGFy Z3VtZW50cy4KIAkgKi8KIAotCXNldHVwX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNi c3RhdGUsIHBzdGF0ZSwgbG9jYXRpb24pOworCWlmICghY291bGRfYmVfcnByX25hdikKKwl7CisJ CXNldHVwX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUsIHBzdGF0ZSwgbG9j YXRpb24pOworCisJCWZkcmVzdWx0ID0gZnVuY19nZXRfZGV0YWlsKGZ1bmNuYW1lLCBmYXJncywg YXJnbmFtZXMsIG5hcmdzLAorCQkJCQkJCQkgICBhY3R1YWxfYXJnX3R5cGVzLAorCQkJCQkJCQkg ICAhZnVuY192YXJpYWRpYywgdHJ1ZSwgcHJvY19jYWxsLAorCQkJCQkJCQkgICAmZmdjX2ZsYWdz LAorCQkJCQkJCQkgICAmZnVuY2lkLCAmcmV0dHlwZSwgJnJldHNldCwKKwkJCQkJCQkJICAgJm52 YXJncywgJnZhdHlwZSwKKwkJCQkJCQkJICAgJmRlY2xhcmVkX2FyZ190eXBlcywgJmFyZ2RlZmF1 bHRzKTsKIAotCWZkcmVzdWx0ID0gZnVuY19nZXRfZGV0YWlsKGZ1bmNuYW1lLCBmYXJncywgYXJn bmFtZXMsIG5hcmdzLAotCQkJCQkJCSAgIGFjdHVhbF9hcmdfdHlwZXMsCi0JCQkJCQkJICAgIWZ1 bmNfdmFyaWFkaWMsIHRydWUsIHByb2NfY2FsbCwKLQkJCQkJCQkgICAmZmdjX2ZsYWdzLAotCQkJ CQkJCSAgICZmdW5jaWQsICZyZXR0eXBlLCAmcmV0c2V0LAotCQkJCQkJCSAgICZudmFyZ3MsICZ2 YXR5cGUsCi0JCQkJCQkJICAgJmRlY2xhcmVkX2FyZ190eXBlcywgJmFyZ2RlZmF1bHRzKTsKKwkJ Y2FuY2VsX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUpOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBBIHJlY29nbml6ZWQgbmF2aWdhdGlvbiBuYW1lIHNraXBzIGNhdGFs b2cgbG9va3VwIGVudGlyZWx5LiAgVHJlYXQKKwkJICogaXQgYXMgYW4gb3JkaW5hcnkgZnVuY3Rp b24gc28gdGhlIGNvbW1vbiB3cm9uZy1raW5kLW9mLXJvdXRpbmUgYW5kCisJCSAqIGRlY29yYXRp b24gY2hlY2tzIGJlbG93IHJ1biB3aXRoIHRoZSBleGlzdGluZyBtZXNzYWdlcywgdGhlbiByb3V0 ZQorCQkgKiB0byBQYXJzZVJQUk5hdkNhbGwgdG8gYnVpbGQgdGhlIFJQUk5hdkV4cHIuCisJCSAq LworCQlBc3NlcnQoIXByb2NfY2FsbCk7CiAKLQljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2Nh bGxiYWNrKCZwY2JzdGF0ZSk7CisJCWZkcmVzdWx0ID0gRlVOQ0RFVEFJTF9OT1JNQUw7CisJfQog CiAJLyoKIAkgKiBDaGVjayBmb3IgdmFyaW91cyB3cm9uZy1raW5kLW9mLXJvdXRpbmUgY2FzZXMu CkBAIC02NTMsNiArNjkzLDE1IEBAIFBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24pKSk7CiAJfQogCisJLyoKKwkgKiBBIHJlY29nbml6ZWQgbmF2aWdh dGlvbiBuYW1lIGhhcyBub3cgcGFzc2VkIHRoZSBjb21tb24gZGVjb3JhdGlvbiBhbmQKKwkgKiB3 cm9uZy1raW5kIGNoZWNrcyBhYm92ZTsgYnVpbGQgdGhlIFJQUk5hdkV4cHIuICBObyBmYWxsYmFj ayB0byBmdW5jdGlvbgorCSAqIHJlc29sdXRpb24gZXZlciBoYXBwZW5zIGhlcmUuCisJICovCisJ aWYgKGNvdWxkX2JlX3Jwcl9uYXYpCisJCXJldHVybiBQYXJzZVJQUk5hdkNhbGwocHN0YXRlLCBm dW5jbmFtZSwgZmFyZ3MsIGFyZ25hbWVzLCBmbiwKKwkJCQkJCQkgICBsb2NhdGlvbik7CisKIAkv KgogCSAqIElmIHRoZXJlIGFyZSBkZWZhdWx0IGFyZ3VtZW50cywgd2UgaGF2ZSB0byBpbmNsdWRl IHRoZWlyIHR5cGVzIGluCiAJICogYWN0dWFsX2FyZ190eXBlcyBmb3IgdGhlIHB1cnBvc2Ugb2Yg Y2hlY2tpbmcgZ2VuZXJpYyB0eXBlIGNvbnNpc3RlbmN5LgpAQCAtNzU5LDg4ICs4MDgsOCBAQCBQ YXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0 ICpmYXJncywKIAlpZiAocmV0c2V0KQogCQljaGVja19zcmZfY2FsbF9wbGFjZW1lbnQocHN0YXRl LCBsYXN0X3NyZiwgbG9jYXRpb24pOwogCi0JLyoKLQkgKiBSUFIgbmF2aWdhdGlvbiBmdW5jdGlv bnMgKFBSRVYvTkVYVC9GSVJTVC9MQVNUKSBhcmUgb25seSBtZWFuaW5nZnVsCi0JICogaW5zaWRl IGEgV0lORE9XIERFRklORSBjbGF1c2UuCi0JICoKLQkgKiBPdXRzaWRlIERFRklORSwgdGhlc2Ug cG9seW1vcnBoaWMgcGxhY2Vob2xkZXJzIGNhbiBzaGFkb3cgY29sdW1uIGFjY2VzcwotCSAqIHZp YSBmdW5jdGlvbmFsIG5vdGF0aW9uIChlLmcuLCBsYXN0KGYpIG1lYW5pbmcgZi5sYXN0KS4gRm9y IHRoZSAxLWFyZwotCSAqIGZvcm0sIHRyeSBjb2x1bW4gcHJvamVjdGlvbiBmaXJzdDsgaWYgdGhh dCBzdWNjZWVkcywgdXNlIGl0IGluc3RlYWQuCi0JICogT3RoZXJ3aXNlLCByZXBvcnQgYSBjbGVh ciBwYXJzZXIgZXJyb3IuCi0JICovCi0JaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFM ICYmCi0JCXBzdGF0ZS0+cF9leHByX2tpbmQgIT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUgJiYKLQkJ KGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1F TlQgfHwKLQkJIGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBG X05FWFRfQU5ZRUxFTUVOVF9JTlQ4IHx8Ci0JCSBmdW5jaWQgPT0gRl9GSVJTVF9BTllFTEVNRU5U IHx8IGZ1bmNpZCA9PSBGX0xBU1RfQU5ZRUxFTUVOVCB8fAotCQkgZnVuY2lkID09IEZfRklSU1Rf QU5ZRUxFTUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBGX0xBU1RfQU5ZRUxFTUVOVF9JTlQ4KSkKLQl7 Ci0JCS8qIDEtYXJnIGZvcm06IHRyeSBjb2x1bW4gcHJvamVjdGlvbiBiZWZvcmUgZXJyb3Jpbmcg b3V0ICovCi0JCWlmIChuYXJncyA9PSAxICYmICFhZ2dfc3RhciAmJiAhYWdnX2Rpc3RpbmN0ICYm IG92ZXIgPT0gTlVMTCAmJgotCQkJbGlzdF9sZW5ndGgoZnVuY25hbWUpID09IDEpCi0JCXsKLQkJ CU5vZGUJICAgKnByb2plY3Rpb247Ci0KLQkJCXByb2plY3Rpb24gPSBQYXJzZUNvbXBsZXhQcm9q ZWN0aW9uKHBzdGF0ZSwKLQkJCQkJCQkJCQkJCXN0clZhbChsaW5pdGlhbChmdW5jbmFtZSkpLAot CQkJCQkJCQkJCQkJbGluaXRpYWwoZmFyZ3MpLAotCQkJCQkJCQkJCQkJbG9jYXRpb24pOwotCQkJ aWYgKHByb2plY3Rpb24pCi0JCQkJcmV0dXJuIHByb2plY3Rpb247Ci0JCX0KLQotCQkvKiBOb3Qg YSBjb2x1bW4gcHJvamVjdGlvbiAtLSByZXBvcnQgZXJyb3IgKi8KLQkJZXJlcG9ydChFUlJPUiwK LQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQllcnJtc2coImNhbm5vdCB1 c2UgJXMgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiLAotCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5n KGZ1bmNuYW1lKSksCi0JCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKTsK LQl9Ci0KIAkvKiBidWlsZCB0aGUgYXBwcm9wcmlhdGUgb3V0cHV0IHN0cnVjdHVyZSAqLwotCWlm IChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCAmJgotCQlwc3RhdGUtPnBfZXhwcl9raW5k ID09IEVYUFJfS0lORF9SUFJfREVGSU5FICYmCi0JCShmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1F TlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UIHx8Ci0JCSBmdW5jaWQgPT0gRl9QUkVW X0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCB8fAot CQkgZnVuY2lkID09IEZfRklSU1RfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVM RU1FTlQgfHwKLQkJIGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQg PT0gRl9MQVNUX0FOWUVMRU1FTlRfSU5UOCkpCi0JewotCQkvKgotCQkgKiBSUFIgbmF2aWdhdGlv biBmdW5jdGlvbnMgKFBSRVYvTkVYVC9GSVJTVC9MQVNUKSBhcmUgY29tcGlsZWQgaW50bwotCQkg KiBFRU9QX1JQUl9OQVZfU0VUIC8gRUVPUF9SUFJfTkFWX1JFU1RPUkUgb3Bjb2RlcyBpbnN0ZWFk IG9mIGEgbm9ybWFsCi0JCSAqIGZ1bmN0aW9uIGNhbGwuICBSZXByZXNlbnQgdGhlbSBhcyBSUFJO YXZFeHByIG5vZGVzIHNvIHRoYXQgbGF0ZXIKLQkJICogc3RhZ2VzIGNhbiBpZGVudGlmeSB0aGVt IHdpdGhvdXQgcmVseWluZyBvbiBmdW5jaWQgY29tcGFyaXNvbnMuCi0JCSAqLwotCQlSUFJOYXZL aW5kCWtpbmQ7Ci0JCWJvb2wJCWhhc19vZmZzZXQ7Ci0JCVJQUk5hdkV4cHIgKm5hdmV4cHI7Ci0K LQkJaWYgKGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9QUkVWX0FO WUVMRU1FTlRfSU5UOCkKLQkJCWtpbmQgPSBSUFJfTkFWX1BSRVY7Ci0JCWVsc2UgaWYgKGZ1bmNp ZCA9PSBGX05FWFRfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5U OCkKLQkJCWtpbmQgPSBSUFJfTkFWX05FWFQ7Ci0JCWVsc2UgaWYgKGZ1bmNpZCA9PSBGX0ZJUlNU X0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfRklSU1RfQU5ZRUxFTUVOVF9JTlQ4KQotCQkJa2lu ZCA9IFJQUl9OQVZfRklSU1Q7Ci0JCWVsc2UKLQkJCWtpbmQgPSBSUFJfTkFWX0xBU1Q7Ci0KLQkJ aGFzX29mZnNldCA9IChmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fAotCQkJCQkg IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVF9JTlQ4IHx8Ci0JCQkJCSAgZnVuY2lkID09IEZf RklSU1RfQU5ZRUxFTUVOVF9JTlQ4IHx8Ci0JCQkJCSAgZnVuY2lkID09IEZfTEFTVF9BTllFTEVN RU5UX0lOVDgpOwotCi0JCW5hdmV4cHIgPSBtYWtlTm9kZShSUFJOYXZFeHByKTsKLQotCQluYXZl eHByLT5raW5kID0ga2luZDsKLQkJbmF2ZXhwci0+YXJnID0gKEV4cHIgKikgbGluaXRpYWwoZmFy Z3MpOwotCQluYXZleHByLT5vZmZzZXRfYXJnID0gaGFzX29mZnNldCA/IChFeHByICopIGxzZWNv bmQoZmFyZ3MpIDogTlVMTDsKLQkJbmF2ZXhwci0+cmVzdWx0dHlwZSA9IHJldHR5cGU7Ci0JCS8q IHJlc3VsdGNvbGxpZCB3aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KLQkJbmF2ZXhw ci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKLQotCQlyZXR2YWwgPSAoTm9kZSAqKSBuYXZleHByOwot CX0KLQllbHNlIGlmIChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCB8fCBmZHJlc3VsdCA9 PSBGVU5DREVUQUlMX1BST0NFRFVSRSkKKwlpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JN QUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9QUk9DRURVUkUpCiAJewogCQlGdW5jRXhwciAg ICpmdW5jZXhwciA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKIApAQCAtMjExMSw2ICsyMDgwLDE1MSBA QCBGdW5jTmFtZUFzVHlwZShMaXN0ICpmdW5jbmFtZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisv KgorICogUGFyc2VSUFJOYXZDYWxsCisgKgkJUmVjb2duaXplIGEgcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBvcGVyYXRpb24gaW4gYSBERUZJTkUgY2xhdXNlLgorICoKKyAqIEluc2lkZSBhbiBFWFBS X0tJTkRfUlBSX0RFRklORSBjbGF1c2UgYW4gdW5xdWFsaWZpZWQgY2FsbCB0byBvbmUgb2YgdGhl CisgKiBuYW1lcyBQUkVWL05FWFQvRklSU1QvTEFTVCBkZW5vdGVzIHRoZSBjb3JyZXNwb25kaW5n IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24KKyAqIG9wZXJhdGlvbiAoSVNPL0lFQyAxOTA3NS01IFN1 YmNsYXVzZSA1LjYpLCBub3QgYW4gb3JkaW5hcnkgZnVuY3Rpb24gY2FsbC4KKyAqIFRoZSBuYW1l IGlzIG1hdGNoZWQgaGVyZSwgYmVmb3JlIGFueSBjYXRhbG9nIGxvb2t1cCwgd2l0aCBubyBmYWxs YmFjayB0bworICogZnVuY3Rpb24gcmVzb2x1dGlvbjogb25jZSBpdCBtYXRjaGVzLCBkZWNvcmF0 aW9uIGFuZCBhcmd1bWVudC1jb3VudAorICogdmlvbGF0aW9ucyBhcmUgZGVkaWNhdGVkIGVycm9y cyByYXRoZXIgdGhhbiBsZXR0aW5nIGFuIG9yZGluYXJ5IGZ1bmN0aW9uIG9mCisgKiB0aGUgc2Ft ZSBuYW1lIHRha2Ugb3Zlci4gIEEgc2NoZW1hLXF1YWxpZmllZCBjYWxsICh0aGUgY2FsbGVyIHJl c3RyaWN0cyB1cworICogdG8gdW5xdWFsaWZpZWQgbmFtZXMpIGlzIHRoZSBkb2N1bWVudGVkIHdh eSB0byByZWFjaCBzdWNoIGEgZnVuY3Rpb24KKyAqIGluc3RlYWQuCisgKgorICogVGhlIGNhbGxl ciByb3V0ZXMgaGVyZSBvbmx5IGFmdGVyIHRoZSBuYW1lIGhhcyBtYXRjaGVkIG9uZSBvZiB0aGUg Zm91cgorICogbmF2aWdhdGlvbiBuYW1lcyBhbmQgdGhlIGNvbW1vbiBkZWNvcmF0aW9uL3dyb25n LWtpbmQgY2hlY2tzIGluCisgKiBQYXJzZUZ1bmNPckNvbHVtbiBoYXZlIHJ1biwgc28gdGhpcyBh bHdheXMgcmV0dXJucyBhbiBSUFJOYXZFeHByLgorICovCitzdGF0aWMgTm9kZSAqCitQYXJzZVJQ Uk5hdkNhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3Ms CisJCQkJTGlzdCAqYXJnbmFtZXMsIEZ1bmNDYWxsICpmbiwgaW50IGxvY2F0aW9uKQoreworCWNv bnN0IGNoYXIgKm5hbWUgPSBzdHJWYWwobGluaXRpYWwoZnVuY25hbWUpKTsKKwlSUFJOYXZLaW5k CWtpbmQ7CisJY29uc3QgY2hhciAqbmF2bmFtZTsKKwlpbnQJCQluYXJncyA9IGxpc3RfbGVuZ3Ro KGZhcmdzKTsKKwlOb2RlCSAgICphcmc7CisJUlBSTmF2RXhwciAqbmF2ZXhwcjsKKworCS8qIG1h dGNoIHRoZSBwYXJzZXItZG93bmNhc2VkIGlkZW50aWZpZXI7IG90aGVyd2lzZSBub3QgYSBuYXZp Z2F0aW9uIG5hbWUgKi8KKwlpZiAoc3RyY21wKG5hbWUsICJwcmV2IikgPT0gMCkKKwl7CisJCWtp bmQgPSBSUFJfTkFWX1BSRVY7CisJCW5hdm5hbWUgPSAiUFJFViI7CisJfQorCWVsc2UgaWYgKHN0 cmNtcChuYW1lLCAibmV4dCIpID09IDApCisJeworCQlraW5kID0gUlBSX05BVl9ORVhUOworCQlu YXZuYW1lID0gIk5FWFQiOworCX0KKwllbHNlIGlmIChzdHJjbXAobmFtZSwgImZpcnN0IikgPT0g MCkKKwl7CisJCWtpbmQgPSBSUFJfTkFWX0ZJUlNUOworCQluYXZuYW1lID0gIkZJUlNUIjsKKwl9 CisJZWxzZSBpZiAoc3RyY21wKG5hbWUsICJsYXN0IikgPT0gMCkKKwl7CisJCWtpbmQgPSBSUFJf TkFWX0xBU1Q7CisJCW5hdm5hbWUgPSAiTEFTVCI7CisJfQorCWVsc2UKKwl7CisJCS8qIHRoZSBj YWxsZXIgb25seSByb3V0ZXMgaGVyZSBhZnRlciBtYXRjaGluZyBvbmUgb2YgdGhlIGZvdXIgbmFt ZXMgKi8KKwkJcGdfdW5yZWFjaGFibGUoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyoKKwkg KiBPbmNlIHRoZSBuYW1lIG1hdGNoZXMgd2UgbmV2ZXIgZmFsbCBiYWNrIHRvIGZ1bmN0aW9uIHJl c29sdXRpb24sIHNvIGFueQorCSAqIGRlY29yYXRpb24gdGhhdCBkb2VzIG5vdCBtYWtlIHNlbnNl IGZvciBhIG5hdmlnYXRpb24gb3BlcmF0aW9uIGlzIGEKKwkgKiBoYXJkIGVycm9yLiAgVGhlIGFn Z3JlZ2F0ZS93aW5kb3cgZGVjb3JhdGlvbnMgKGFnZ19zdGFyLCBESVNUSU5DVCwKKwkgKiBXSVRI SU4gR1JPVVAsIE9SREVSIEJZLCBGSUxURVIsIE9WRVIsIFJFU1BFQ1QvSUdOT1JFIE5VTExTKSBh cmUgYWxyZWFkeQorCSAqIHJlamVjdGVkIGJ5IHRoZSBjb21tb24gcGF0aCBpbiBQYXJzZUZ1bmNP ckNvbHVtbiwgd2hpY2ggdHJlYXRlZCB0aGUKKwkgKiByZWNvZ25pemVkIG5hbWUgYXMgYW4gb3Jk aW5hcnkgZnVuY3Rpb247IHdoYXQgcmVtYWlucyBhcmUgdGhlCisJICogZGVjb3JhdGlvbnMgdGhh dCBwYXRoIGFjY2VwdHMgZm9yIGEgcGxhaW4gZnVuY3Rpb24gYnV0IGEgbmF2aWdhdGlvbgorCSAq IG9wZXJhdGlvbiBtdXN0IHN0aWxsIHJlamVjdC4KKwkgKi8KKwlpZiAoZm4tPmZ1bmNfdmFyaWFk aWMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgVkFSSUFESUMgd2l0aCByb3cgcGF0dGVybiBuYXZp Z2F0aW9uIGZ1bmN0aW9uICVzIiwKKwkJCQkJCW5hdm5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwlpZiAoYXJnbmFtZXMgIT0gTklMKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMgY2Fubm90IHVz ZSBuYW1lZCBhcmd1bWVudHMiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9j YXRpb24pKSk7CisJLyogdGFrZXMgYSB2YWx1ZSBleHByZXNzaW9uIGFuZCBhbiBvcHRpb25hbCBv ZmZzZXQgKi8KKwlpZiAobmFyZ3MgPT0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygidG9vIGZldyBhcmd1bWVudHMg Zm9yIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gZnVuY3Rpb24gJXMiLAorCQkJCQkJbmF2bmFtZSks CisJCQkJIGVycmRldGFpbCgiJXMgdGFrZXMgYSB2YWx1ZSBleHByZXNzaW9uIGFuZCBhbiBvcHRp b25hbCBvZmZzZXQgYXJndW1lbnQuIiwKKwkJCQkJCSAgIG5hdm5hbWUpLAorCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwlpZiAobmFyZ3MgPiAyKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJy bXNnKCJ0b28gbWFueSBhcmd1bWVudHMgZm9yIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gZnVuY3Rp b24gJXMiLAorCQkJCQkJbmF2bmFtZSksCisJCQkJIGVycmRldGFpbCgiJXMgdGFrZXMgYSB2YWx1 ZSBleHByZXNzaW9uIGFuZCBhbiBvcHRpb25hbCBvZmZzZXQgYXJndW1lbnQuIiwKKwkJCQkJCSAg IG5hdm5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsK KworCS8qCisJICogUmVzb2x2ZSBhIHN0aWxsLXVua25vd24gZmlyc3QgYXJndW1lbnQgdG8gdGV4 dCwgdGhlIHNhbWUgd2F5IHRoZQorCSAqIGFueWNvbXBhdGlibGUgZmFtaWx5IGRvZXMuICBBIG5h dmlnYXRpb24gb3BlcmF0aW9uIGlzIG5vdCBhIHBvbHltb3JwaGljCisJICogZnVuY3Rpb24sIHNv IHRoZSBvbGQgImNvdWxkIG5vdCBkZXRlcm1pbmUgcG9seW1vcnBoaWMgdHlwZSIgZXJyb3IgZG9l cworCSAqIG5vdCBhcHBseTsgYW4gdW5rbm93biBsaXRlcmFsIGNhbm5vdCBjb250YWluIGEgY29s dW1uIHJlZmVyZW5jZSwgc28gdGhlCisJICogd2Fsa2VyIHN0aWxsIHJlamVjdHMgaXQgbGF0ZXIu CisJICovCisJYXJnID0gbGluaXRpYWwoZmFyZ3MpOworCWlmIChleHByVHlwZShhcmcpID09IFVO S05PV05PSUQpCisJCWFyZyA9IGNvZXJjZV90b19jb21tb25fdHlwZShwc3RhdGUsIGFyZywgVEVY VE9JRCwgbmF2bmFtZSk7CisKKwluYXZleHByID0gbWFrZU5vZGUoUlBSTmF2RXhwcik7CisJbmF2 ZXhwci0+a2luZCA9IGtpbmQ7CisJbmF2ZXhwci0+YXJnID0gKEV4cHIgKikgYXJnOworCisJLyog YW4gZXhwbGljaXQgb2Zmc2V0IGlzIGNvZXJjZWQgdG8gaW50OCwgd2hpY2ggdGhlIGV4ZWN1dG9y IHJlYWRzICovCisJaWYgKG5hcmdzID09IDIpCisJeworCQlOb2RlCSAgICpvZmZzZXQgPSBsc2Vj b25kKGZhcmdzKTsKKwkJT2lkCQkJb2ZmdHlwZSA9IGV4cHJUeXBlKG9mZnNldCk7CisKKwkJaWYg KG9mZnR5cGUgIT0gSU5UOE9JRCkKKwkJeworCQkJTm9kZQkgICAqbmV3b2Zmc2V0OworCisJCQlu ZXdvZmZzZXQgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBvZmZzZXQsIG9mZnR5cGUs CisJCQkJCQkJCQkJCSAgSU5UOE9JRCwgLTEsIENPRVJDSU9OX0lNUExJQ0lULAorCQkJCQkJCQkJ CQkgIENPRVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisJCQlpZiAobmV3b2Zmc2V0ID09IE5VTEwp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlT TUFUQ0gpLAorCQkJCQkJIGVycm1zZygib2Zmc2V0IGFyZ3VtZW50IG9mICVzIG11c3QgYmUgdHlw ZSAlcywgbm90IHR5cGUgJXMiLAorCQkJCQkJCQluYXZuYW1lLCAiYmlnaW50IiwgZm9ybWF0X3R5 cGVfYmUob2ZmdHlwZSkpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJM b2NhdGlvbihvZmZzZXQpKSkpOworCQkJb2Zmc2V0ID0gbmV3b2Zmc2V0OworCQl9CisJCW5hdmV4 cHItPm9mZnNldF9hcmcgPSAoRXhwciAqKSBvZmZzZXQ7CisJfQorCWVsc2UKKwkJbmF2ZXhwci0+ b2Zmc2V0X2FyZyA9IE5VTEw7CisKKwkvKiBjb21wb3VuZF9vZmZzZXRfYXJnIHN0YXlzIE5VTEw7 IGRlZmluZV93YWxrZXIgZmxhdHRlbmluZyBmaWxscyBpdCBpbiAqLworCW5hdmV4cHItPnJlc3Vs dHR5cGUgPSBleHByVHlwZShhcmcpOworCS8qIHJlc3VsdGNvbGxpZCB3aWxsIGJlIHNldCBieSBw YXJzZV9jb2xsYXRlLmMgKi8KKwluYXZleHByLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0 dXJuIChOb2RlICopIG5hdmV4cHI7Cit9CisKIC8qCiAgKiBQYXJzZUNvbXBsZXhQcm9qZWN0aW9u IC0KICAqCSAgaGFuZGxlcyBmdW5jdGlvbiBjYWxscyB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IHRo YXQgaXMgb2YgY29tcGxleCB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmluZGV4IDNlYWVhMmJl NzUwLi44ZWQwMWJiOGYyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jw ci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAtNDcyLDYgKzQ3Miw3 IEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVz ZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogICogICAgICogUFJFVi9ORVhUIHdyYXBwaW5nIEZJ UlNUL0xBU1QgZmxhdHRlbnMgdG8gYSBjb21wb3VuZCBraW5kCiAgKiAgICAgKiBPdGhlciBuZXN0 aW5ncyBhcmUgcmVqZWN0ZWQgKEZJUlNUKFBSRVYoKSksIFBSRVYoUFJFVigpKSwgLi4uKQogICog ICAgICogb2Zmc2V0X2FyZyAvIGNvbXBvdW5kX29mZnNldF9hcmcgbXVzdCBub3QgY29udGFpbiBj b2x1bW4gcmVmcworICogICAgICAgb3IgbmVzdGVkIG5hdmlnYXRpb24gb3BlcmF0aW9ucwogICoK ICAqIFZvbGF0aWxlIGNhbGxlZXMgKGFuZCBzZXF1ZW5jZSBvcGVyYXRpb25zKSBhcmUgcmVqZWN0 ZWQgbGF0ZXIgaW4gdGhlCiAgKiBwbGFubmVyIHZpYSB2YWxpZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0 aWxpdHkoKTsgc2VlIG9wdGltaXplci9wbGFuL3Jwci5jLgpAQCAtNDgyLDcgKzQ4Myw3IEBAIHRy YW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2Ms IFdpbmRvd0RlZiAqd2luZGVmLAogICogd2Fsa3MgbmF2LmFyZyBpbiBQSEFTRV9OQVZfQVJHIHRv IGNvbGxlY3QgbmVzdGluZy9jb2x1bW4tcmVmIHN0YXRlLAogICogYXBwbGllcyBjb21wb3VuZCBm bGF0dGVuIG9yIHJhaXNlcyBhIG5lc3RpbmcgZXJyb3IsIHRoZW4gd2Fsa3MgdGhlCiAgKiAocG9z dC1mbGF0dGVuKSBvZmZzZXQocykgaW4gUEhBU0VfTkFWX09GRlNFVCB0byBlbmZvcmNlIHRoZQot ICogY29uc3RhbnQtb2Zmc2V0IHJ1bGUuICBObyBzdWJ0cmVlIGlzIHdhbGtlZCB0d2ljZS4KKyAq IGNvbnN0YW50LW9mZnNldCBhbmQgbm8tbmVzdGVkLW5hdiBydWxlcy4gIE5vIHN1YnRyZWUgaXMg d2Fsa2VkIHR3aWNlLgogICovCiAKIC8qCkBAIC00OTgsNiArNDk5LDcgQEAgdHJhbnNmb3JtRGVm aW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVm ICp3aW5kZWYsCiAgKgkJCQlQUkVWKFBSRVYoKSksIEZJUlNUKEZJUlNUKCkpLCB0aHJlZS1vci1t b3JlIGRlZXApCiAgKgkJICBbMl0gZm9yIGVhY2ggbmF2IG9mZnNldCAoUEhBU0VfTkFWX09GRlNF VCk6CiAgKgkJCSAgLSBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQgKG5vIGNvbHVtbiByZWZl cmVuY2VzKQorICoJCQkgIC0gbXVzdCBub3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRp b24gb3BlcmF0aW9uCiAgKgogICogVmFyIHNpZ2h0aW5ncyBmZWVkIHRoZSBjb2x1bW4tcmVmIHJ1 bGUgZm9yIHRoZSBlbmNsb3NpbmcgbmF2IHNjb3BlOwogICogUlBSTmF2RXhwciBzaWdodGluZ3Mg aW5zaWRlIFBIQVNFX05BVl9BUkcgZmVlZCB0aGUgbmVzdGluZyBkZWNpc2lvbi4KQEAgLTUzOCwx MSArNTQwLDE0IEBAIGRlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJ aWYgKGN0eC0+cGhhc2UgPT0gREVGSU5FX1BIQVNFX05BVl9PRkZTRVQpCiAJCXsKIAkJCS8qCi0J CQkgKiBOYXZzIGluc2lkZSBvZmZzZXRfYXJnIGFyZSB1bnVzdWFsIGJ1dCBub3QgZGlyZWN0bHkg YmFubmVkOyB0aGUKLQkJCSAqIGNvbnN0YW50LW9mZnNldCBydWxlIHdpbGwgY2F0Y2ggYW55IFZh ciBvciB2b2xhdGlsZSB0aGV5Ci0JCQkgKiBjb250YWluLgorCQkJICogQSBuYXZpZ2F0aW9uIG9m ZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQsIHNvIGl0IGNhbm5vdAorCQkJICogY29u dGFpbiBhIG5hdmlnYXRpb24gb3BlcmF0aW9uLgogCQkJICovCi0JCQlyZXR1cm4gZXhwcmVzc2lv bl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVfd2Fsa2VyLCBjdHgpOworCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygicm93 IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgY2Fubm90IGNvbnRhaW4gYSByb3cgcGF0dGVybiBu YXZpZ2F0aW9uIG9wZXJhdGlvbiIpLAorCQkJCQllcnJkZXRhaWwoIkEgbmF2aWdhdGlvbiBvZmZz ZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50LiIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRp b24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAkJfQogCiAJCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggNGViN2UzNWJlZTQuLjJiN2ZkNzM2N2YzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMjcsNiArMTI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAli b29sCQl2YXJwcmVmaXg7CQkvKiB0cnVlIHRvIHByaW50IHByZWZpeGVzIG9uIFZhcnMgKi8KIAli b29sCQljb2xOYW1lc1Zpc2libGU7CS8qIGRvIHdlIGNhcmUgYWJvdXQgb3V0cHV0IGNvbHVtbiBu YW1lcz8gKi8KIAlib29sCQlpbkdyb3VwQnk7CQkvKiBkZXBhcnNpbmcgR1JPVVAgQlkgY2xhdXNl PyAqLworCWJvb2wJCWluUlBSRGVmaW5lOwkvKiBkZXBhcnNpbmcgYW4gUlBSIERFRklORSBjbGF1 c2U/ICovCiAJYm9vbAkJdmFySW5PcmRlckJ5OwkvKiBkZXBhcnNpbmcgc2ltcGxlIFZhciBpbiBP UkRFUiBCWT8gKi8KIAlCaXRtYXBzZXQgICphcHBlbmRwYXJlbnRzOwkvKiBpZiBub3QgbnVsbCwg bWFwIGNoaWxkIFZhcnMgb2YgdGhlc2UgcmVsaWRzCiAJCQkJCQkJCSAqIGJhY2sgdG8gdGhlIHBh cmVudCByZWwgKi8KQEAgLTU0NSw3ICs1NDYsNyBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVh bGlmaWVkX3JlbGF0aW9uX25hbWUoT2lkIHJlbGlkKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9m dW5jdGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywKIAkJCQkJCQkJCUxpc3QgKmFyZ25h bWVzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJYm9vbCBoYXNfdmFyaWFkaWMsIGJvb2wgKnVz ZV92YXJpYWRpY19wLAotCQkJCQkJCQkJYm9vbCBpbkdyb3VwQnkpOworCQkJCQkJCQkJYm9vbCBp bkdyb3VwQnksIGJvb2wgaW5SUFJEZWZpbmUpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX29wZXJh dG9yX25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIHN0YXRpYyB2b2lkIGFk ZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVy YXRlX3F1YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlkKTsKQEAgLTExMzEsNiArMTEzMiw3IEBA IHBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSkKIAkJY29u dGV4dC5pbmRlbnRMZXZlbCA9IFBSRVRUWUlOREVOVF9TVEQ7CiAJCWNvbnRleHQuY29sTmFtZXNW aXNpYmxlID0gdHJ1ZTsKIAkJY29udGV4dC5pbkdyb3VwQnkgPSBmYWxzZTsKKwkJY29udGV4dC5p blJQUkRlZmluZSA9IGZhbHNlOwogCQljb250ZXh0LnZhckluT3JkZXJCeSA9IGZhbHNlOwogCQlj b250ZXh0LmFwcGVuZHBhcmVudHMgPSBOVUxMOwogCkBAIC0xMTQyLDcgKzExNDQsNyBAQCBwZ19n ZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJYXBwZW5kU3Ry aW5nSW5mbygmYnVmLCAiRVhFQ1VURSBGVU5DVElPTiAlcygiLAogCQkJCQkgZ2VuZXJhdGVfZnVu Y3Rpb25fbmFtZSh0cmlncmVjLT50Z2ZvaWQsIDAsCiAJCQkJCQkJCQkJCU5JTCwgTlVMTCwKLQkJ CQkJCQkJCQkJZmFsc2UsIE5VTEwsIGZhbHNlKSk7CisJCQkJCQkJCQkJCWZhbHNlLCBOVUxMLCBm YWxzZSwgZmFsc2UpKTsKIAogCWlmICh0cmlncmVjLT50Z25hcmdzID4gMCkKIAl7CkBAIC0zNDAx LDcgKzM0MDMsNyBAQCBwZ19nZXRfZnVuY3Rpb25kZWYoUEdfRlVOQ1RJT05fQVJHUykKIAkJYXBw ZW5kU3RyaW5nSW5mbygmYnVmLCAiIFNVUFBPUlQgJXMiLAogCQkJCQkJIGdlbmVyYXRlX2Z1bmN0 aW9uX25hbWUocHJvYy0+cHJvc3VwcG9ydCwgMSwKIAkJCQkJCQkJCQkJCU5JTCwgYXJndHlwZXMs Ci0JCQkJCQkJCQkJCQlmYWxzZSwgTlVMTCwgZmFsc2UpKTsKKwkJCQkJCQkJCQkJCWZhbHNlLCBO VUxMLCBmYWxzZSwgZmFsc2UpKTsKIAl9CiAKIAlpZiAob2xkbGVuICE9IGJ1Zi5sZW4pCkBAIC00 MDU0LDYgKzQwNTYsNyBAQCBkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KE5vZGUgKmV4cHIsIExp c3QgKmRwY29udGV4dCwKIAljb250ZXh0LmluZGVudExldmVsID0gc3RhcnRJbmRlbnQ7CiAJY29u dGV4dC5jb2xOYW1lc1Zpc2libGUgPSB0cnVlOwogCWNvbnRleHQuaW5Hcm91cEJ5ID0gZmFsc2U7 CisJY29udGV4dC5pblJQUkRlZmluZSA9IGZhbHNlOwogCWNvbnRleHQudmFySW5PcmRlckJ5ID0g ZmFsc2U7CiAJY29udGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsKIApAQCAtNTg0OSw2ICs1ODUy LDcgQEAgbWFrZV9ydWxlZGVmKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcnVsZXR1cCwgVHVw bGVEZXNjIHJ1bGV0dGMsCiAJCWNvbnRleHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1RE OwogCQljb250ZXh0LmNvbE5hbWVzVmlzaWJsZSA9IHRydWU7CiAJCWNvbnRleHQuaW5Hcm91cEJ5 ID0gZmFsc2U7CisJCWNvbnRleHQuaW5SUFJEZWZpbmUgPSBmYWxzZTsKIAkJY29udGV4dC52YXJJ bk9yZGVyQnkgPSBmYWxzZTsKIAkJY29udGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsKIApAQCAt NjA0MSw2ICs2MDQ1LDcgQEAgZ2V0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIFN0cmluZ0luZm8g YnVmLCBMaXN0ICpwYXJlbnRuYW1lc3BhY2UsCiAJY29udGV4dC5pbmRlbnRMZXZlbCA9IHN0YXJ0 SW5kZW50OwogCWNvbnRleHQuY29sTmFtZXNWaXNpYmxlID0gY29sTmFtZXNWaXNpYmxlOwogCWNv bnRleHQuaW5Hcm91cEJ5ID0gZmFsc2U7CisJY29udGV4dC5pblJQUkRlZmluZSA9IGZhbHNlOwog CWNvbnRleHQudmFySW5PcmRlckJ5ID0gZmFsc2U7CiAJY29udGV4dC5hcHBlbmRwYXJlbnRzID0g TlVMTDsKIApAQCAtNzIyMCwxNSArNzIyNSwyNSBAQCBnZXRfcnVsZV9kZWZpbmUoTGlzdCAqZGVm aW5lQ2xhdXNlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiB7CiAJU3RyaW5nSW5mbwlidWYg PSBjb250ZXh0LT5idWY7CiAJY29uc3QgY2hhciAqc2VwOworCWJvb2wJCXNhdmVfaW5ycHJkZWZp bmUgPSBjb250ZXh0LT5pblJQUkRlZmluZTsKIAogCXNlcCA9ICIgICI7CiAKKwkvKgorCSAqIFdp dGhpbiB0aGUgREVGSU5FIGNsYXVzZSBhbiB1bnF1YWxpZmllZCBwcmV2L25leHQvZmlyc3QvbGFz dCBpcyBhCisJICogbmF2aWdhdGlvbiBvcGVyYXRpb24sIHNvIGEgdXNlciBmdW5jdGlvbiBvZiBv bmUgb2YgdGhvc2UgbmFtZXMgbXVzdCBiZQorCSAqIHNjaGVtYS1xdWFsaWZpZWQgdG8gc3Vydml2 ZSBhIHJlcGFyc2U7IHNlZSBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKCkuCisJICovCisJY29udGV4 dC0+aW5SUFJEZWZpbmUgPSB0cnVlOworCiAJZm9yZWFjaF9ub2RlKFRhcmdldEVudHJ5LCB0ZSwg ZGVmaW5lQ2xhdXNlKQogCXsKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyVzIEFTICIsIHNl cCwgcXVvdGVfaWRlbnRpZmllcih0ZS0+cmVzbmFtZSkpOwogCQlnZXRfcnVsZV9leHByKChOb2Rl ICopIHRlLT5leHByLCBjb250ZXh0LCBmYWxzZSk7CiAJCXNlcCA9ICIsXG4gICI7CiAJfQorCisJ Y29udGV4dC0+aW5SUFJEZWZpbmUgPSBzYXZlX2lucnByZGVmaW5lOwogfQogCiAvKgpAQCAtNzQ1 OSw2ICs3NDc0LDcgQEAgZ2V0X3dpbmRvd19mcmFtZV9vcHRpb25zX2Zvcl9leHBsYWluKGludCBm cmFtZU9wdGlvbnMsCiAJY29udGV4dC5pbmRlbnRMZXZlbCA9IDA7CiAJY29udGV4dC5jb2xOYW1l c1Zpc2libGUgPSB0cnVlOwogCWNvbnRleHQuaW5Hcm91cEJ5ID0gZmFsc2U7CisJY29udGV4dC5p blJQUkRlZmluZSA9IGZhbHNlOwogCWNvbnRleHQudmFySW5PcmRlckJ5ID0gZmFsc2U7CiAJY29u dGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsKIApAQCAtMTE2OTEsNyArMTE3MDcsOCBAQCBnZXRf ZnVuY19leHByKEZ1bmNFeHByICpleHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJ CQkJCQkJCWFyZ25hbWVzLCBhcmd0eXBlcywKIAkJCQkJCQkJCQkJZXhwci0+ZnVuY3ZhcmlhZGlj LAogCQkJCQkJCQkJCQkmdXNlX3ZhcmlhZGljLAotCQkJCQkJCQkJCQljb250ZXh0LT5pbkdyb3Vw QnkpKTsKKwkJCQkJCQkJCQkJY29udGV4dC0+aW5Hcm91cEJ5LAorCQkJCQkJCQkJCQljb250ZXh0 LT5pblJQUkRlZmluZSkpOwogCW5hcmdzID0gMDsKIAlmb3JlYWNoKGwsIGV4cHItPmFyZ3MpCiAJ ewpAQCAtMTE3NjEsNyArMTE3NzgsOCBAQCBnZXRfYWdnX2V4cHJfaGVscGVyKEFnZ3JlZiAqYWdn cmVmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCWZ1bmNuYW1lID0gZ2VuZXJhdGVfZnVu Y3Rpb25fbmFtZShhZ2dyZWYtPmFnZ2Zub2lkLCBuYXJncywgTklMLAogCQkJCQkJCQkJCSAgYXJn dHlwZXMsIGFnZ3JlZi0+YWdndmFyaWFkaWMsCiAJCQkJCQkJCQkJICAmdXNlX3ZhcmlhZGljLAot CQkJCQkJCQkJCSAgY29udGV4dC0+aW5Hcm91cEJ5KTsKKwkJCQkJCQkJCQkgIGNvbnRleHQtPmlu R3JvdXBCeSwKKwkJCQkJCQkJCQkgIGNvbnRleHQtPmluUlBSRGVmaW5lKTsKIAogCS8qIFByaW50 IHRoZSBhZ2dyZWdhdGUgbmFtZSwgc2NoZW1hLXF1YWxpZmllZCBpZiBuZWVkZWQgKi8KIAlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKCVzIiwgZnVuY25hbWUsCkBAIC0xMTkwMiw3ICsxMTkyMCw4 IEBAIGdldF93aW5kb3dmdW5jX2V4cHJfaGVscGVyKFdpbmRvd0Z1bmMgKndmdW5jLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQsCiAJaWYgKCFmdW5jbmFtZSkKIAkJZnVuY25hbWUgPSBnZW5lcmF0 ZV9mdW5jdGlvbl9uYW1lKHdmdW5jLT53aW5mbm9pZCwgbmFyZ3MsIGFyZ25hbWVzLAogCQkJCQkJ CQkJCSAgYXJndHlwZXMsIGZhbHNlLCBOVUxMLAotCQkJCQkJCQkJCSAgY29udGV4dC0+aW5Hcm91 cEJ5KTsKKwkJCQkJCQkJCQkgIGNvbnRleHQtPmluR3JvdXBCeSwKKwkJCQkJCQkJCQkgIGNvbnRl eHQtPmluUlBSRGVmaW5lKTsKIAogCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMoIiwgZnVuY25h bWUpOwogCkBAIC0xMzc0Myw3ICsxMzc2Miw3IEBAIGdldF90YWJsZXNhbXBsZV9kZWYoVGFibGVT YW1wbGVDbGF1c2UgKnRhYmxlc2FtcGxlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIgVEFCTEVTQU1QTEUgJXMgKCIsCiAJCQkJCSBnZW5lcmF0ZV9m dW5jdGlvbl9uYW1lKHRhYmxlc2FtcGxlLT50c21oYW5kbGVyLCAxLAogCQkJCQkJCQkJCQlOSUws IGFyZ3R5cGVzLAotCQkJCQkJCQkJCQlmYWxzZSwgTlVMTCwgZmFsc2UpKTsKKwkJCQkJCQkJCQkJ ZmFsc2UsIE5VTEwsIGZhbHNlLCBmYWxzZSkpOwogCiAJbmFyZ3MgPSAwOwogCWZvcmVhY2gobCwg dGFibGVzYW1wbGUtPmFyZ3MpCkBAIC0xNDE1NywxMiArMTQxNzYsMTQgQEAgZ2VuZXJhdGVfcXVh bGlmaWVkX3JlbGF0aW9uX25hbWUoT2lkIHJlbGlkKQogICoKICAqIGluR3JvdXBCeSBtdXN0IGJl IHRydWUgaWYgd2UncmUgZGVwYXJzaW5nIGEgR1JPVVAgQlkgY2xhdXNlLgogICoKKyAqIGluUlBS RGVmaW5lIG11c3QgYmUgdHJ1ZSBpZiB3ZSdyZSBkZXBhcnNpbmcgYW4gUlBSIERFRklORSBjbGF1 c2UuCisgKgogICogVGhlIHJlc3VsdCBpbmNsdWRlcyBhbGwgbmVjZXNzYXJ5IHF1b3RpbmcgYW5k IHNjaGVtYS1wcmVmaXhpbmcuCiAgKi8KIHN0YXRpYyBjaGFyICoKIGdlbmVyYXRlX2Z1bmN0aW9u X25hbWUoT2lkIGZ1bmNpZCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywgT2lkICphcmd0eXBl cywKIAkJCQkJICAgYm9vbCBoYXNfdmFyaWFkaWMsIGJvb2wgKnVzZV92YXJpYWRpY19wLAotCQkJ CQkgICBib29sIGluR3JvdXBCeSkKKwkJCQkJICAgYm9vbCBpbkdyb3VwQnksIGJvb2wgaW5SUFJE ZWZpbmUpCiB7CiAJY2hhcgkgICAqcmVzdWx0OwogCUhlYXBUdXBsZQlwcm9jdHVwOwpAQCAtMTQx OTYsNiArMTQyMTcsMjQgQEAgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQg bmFyZ3MsIExpc3QgKmFyZ25hbWVzLCBPaWQgKmFyZ3R5cGVzLAogCQkJZm9yY2VfcXVhbGlmeSA9 IHRydWU7CiAJfQogCisJLyoKKwkgKiBJbnNpZGUgYSByb3cgcGF0dGVybiBERUZJTkUgY2xhdXNl LCB0aGUgcGFyc2VyIGJpbmRzIGFuIHVucXVhbGlmaWVkCisJICogcHJldi9uZXh0L2ZpcnN0L2xh c3QgdG8gYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBiZWZvcmUgYW55IGNhdGFsb2cKKwkgKiBsb29r dXAsIHNvIGFuIHVucXVhbGlmaWVkIGNhbGwgdG8gYSB1c2VyIGZ1bmN0aW9uIG9mIG9uZSBvZiB0 aG9zZSBuYW1lcworCSAqIHdvdWxkIGNoYW5nZSBtZWFuaW5nIGFjcm9zcyBhIGRlcGFyc2UvcmVw YXJzZSBjeWNsZS4gIEZvcmNlIHNjaGVtYQorCSAqIHF1YWxpZmljYXRpb247IHRoZSBxdWFsaWZp ZWQgZm9ybSBpcyB0aGUgZG9jdW1lbnRlZCBlc2NhcGUgaGF0Y2guICBPbmx5CisJICogdGhlIGV4 YWN0IGxvd2VyLWNhc2UgbmFtZXMgYXJlIGF0IHJpc2s6IGEgbWl4ZWQtY2FzZSBwcm9uYW1lIGRl cGFyc2VzCisJICogcXVvdGVkIGFuZCBjYW5ub3QgbWF0Y2ggdGhlIHBhcnNlcidzIGRvd25jYXNl ZCBjb21wYXJpc29uLgorCSAqLworCWlmIChpblJQUkRlZmluZSkKKwl7CisJCWlmIChzdHJjbXAo cHJvbmFtZSwgInByZXYiKSA9PSAwIHx8CisJCQlzdHJjbXAocHJvbmFtZSwgIm5leHQiKSA9PSAw IHx8CisJCQlzdHJjbXAocHJvbmFtZSwgImZpcnN0IikgPT0gMCB8fAorCQkJc3RyY21wKHByb25h bWUsICJsYXN0IikgPT0gMCkKKwkJCWZvcmNlX3F1YWxpZnkgPSB0cnVlOworCX0KKwogCS8qCiAJ ICogRGV0ZXJtaW5lIHdoZXRoZXIgVkFSSUFESUMgc2hvdWxkIGJlIHByaW50ZWQuICBXZSBtdXN0 IGRvIHRoaXMgZmlyc3QKIAkgKiBzaW5jZSBpdCBhZmZlY3RzIHRoZSBsb29rdXAgcnVsZXMgaW4g ZnVuY19nZXRfZGV0YWlsKCkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvd2lu ZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jCmluZGV4IGQx NWFhMGM3NWRiLi43OGI3ZjA1YWJhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMK QEAgLTcyNCwxMjEgKzcyNCwzIEBAIHdpbmRvd19udGhfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykK IAogCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOwogfQotCi0vKgotICogcHJldgotICogQ2F0YWxv ZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgUFJFViBuYXZpZ2F0aW9uIG9wZXJhdG9yLgotICoKLSAq IFRoZSBwYXJzZXIgdHJhbnNmb3JtcyBwcmV2KCkgY2FsbHMgaW5zaWRlIERFRklORSBpbnRvIFJQ Uk5hdkV4cHIgbm9kZXMsCi0gKiBzbyB0aGlzIGZ1bmN0aW9uIGlzIG5ldmVyIHJlYWNoZWQgZHVy aW5nIG5vcm1hbCBSUFIgZXhlY3V0aW9uLiAgSXQgZXhpc3RzCi0gKiBvbmx5IHNvIHRoYXQgdGhl IHBhcnNlciBjYW4gcmVzb2x2ZSB0aGUgZnVuY3Rpb24gbmFtZSBmcm9tIHBnX3Byb2MuCi0gKiBD YWxscyBvdXRzaWRlIERFRklORSBhcmUgcmVqZWN0ZWQgYnkgcGFyc2VfZnVuYy5jIChFWFBSX0tJ TkRfUlBSX0RFRklORQotICogY2hlY2spLiAgVGhlIGVycm9yIGJlbG93IGlzIGEgZGVmZW5zaXZl IG1lYXN1cmUgaW4gY2FzZSB0aGF0IGNoZWNrIGlzCi0gKiBieXBhc3NlZCAoZS5nLiwgZGlyZWN0 IEMtbGV2ZWwgZnVuY3Rpb24gaW52b2NhdGlvbikuCi0gKi8KLURhdHVtCi13aW5kb3dfcHJldihQ R19GVU5DVElPTl9BUkdTKQotewotCWVyZXBvcnQoRVJST1IsCi0JCQllcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCWVycm1zZygiY2Fubm90IHVzZSBQUkVWKCkgb3V0 c2lkZSBhIERFRklORSBjbGF1c2UiKSk7Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVh Y2hlZCAqLwotfQotCi0vKgotICogbmV4dAotICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBS J3MgTkVYVCBuYXZpZ2F0aW9uIG9wZXJhdG9yLgotICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRl dGFpbHMuCi0gKi8KLURhdHVtCi13aW5kb3dfbmV4dChQR19GVU5DVElPTl9BUkdTKQotewotCWVy ZXBvcnQoRVJST1IsCi0JCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK LQkJCWVycm1zZygiY2Fubm90IHVzZSBORVhUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7 Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwotfQotCi0vKgotICogcHJl dih2YWx1ZSwgb2Zmc2V0KQotICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgUFJFViBu YXZpZ2F0aW9uIG9wZXJhdG9yIHdpdGggb2Zmc2V0LgotICogU2VlIHdpbmRvd19wcmV2KCkgZm9y IGRldGFpbHMuCi0gKi8KLURhdHVtCi13aW5kb3dfcHJldl9vZmZzZXQoUEdfRlVOQ1RJT05fQVJH UykKLXsKLQllcmVwb3J0KEVSUk9SLAotCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQllcnJtc2coImNhbm5vdCB1c2UgUFJFVigpIG91dHNpZGUgYSBERUZJTkUg Y2xhdXNlIikpOwotCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KLX0KLQot LyoKLSAqIG5leHQodmFsdWUsIG9mZnNldCkKLSAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQ UidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRvciB3aXRoIG9mZnNldC4KLSAqIFNlZSB3aW5kb3df cHJldigpIGZvciBkZXRhaWxzLgotICovCi1EYXR1bQotd2luZG93X25leHRfb2Zmc2V0KFBHX0ZV TkNUSU9OX0FSR1MpCi17Ci0JZXJlcG9ydChFUlJPUiwKLQkJCWVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAotCQkJZXJybXNnKCJjYW5ub3QgdXNlIE5FWFQoKSBvdXRzaWRl IGEgREVGSU5FIGNsYXVzZSIpKTsKLQlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVk ICovCi19Ci0KLS8qCi0gKiBmaXJzdAotICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3Mg RklSU1QgbmF2aWdhdGlvbiBvcGVyYXRvci4KLSAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRh aWxzLgotICovCi1EYXR1bQotd2luZG93X2ZpcnN0KFBHX0ZVTkNUSU9OX0FSR1MpCi17Ci0JZXJl cG9ydChFUlJPUiwKLQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAot CQkJZXJybXNnKCJjYW5ub3QgdXNlIEZJUlNUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7 Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwotfQotCi0vKgotICogbGFz dAotICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgTEFTVCBuYXZpZ2F0aW9uIG9wZXJh dG9yLgotICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCi0gKi8KLURhdHVtCi13aW5k b3dfbGFzdChQR19GVU5DVElPTl9BUkdTKQotewotCWVyZXBvcnQoRVJST1IsCi0JCQllcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCWVycm1zZygiY2Fubm90IHVzZSBM QVNUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkv KiBub3QgcmVhY2hlZCAqLwotfQotCi0vKgotICogZmlyc3QodmFsdWUsIG9mZnNldCkKLSAqIENh dGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIEZJUlNUIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0 aCBvZmZzZXQuCi0gKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KLSAqLwotRGF0dW0K LXdpbmRvd19maXJzdF9vZmZzZXQoUEdfRlVOQ1RJT05fQVJHUykKLXsKLQllcmVwb3J0KEVSUk9S LAotCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQllcnJtc2co ImNhbm5vdCB1c2UgRklSU1QoKSBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZSIpKTsKLQlQR19SRVRV Uk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCi19Ci0KLS8qCi0gKiBsYXN0KHZhbHVlLCBv ZmZzZXQpCi0gKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBMQVNUIG5hdmlnYXRpb24g b3BlcmF0b3Igd2l0aCBvZmZzZXQuCi0gKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4K LSAqLwotRGF0dW0KLXdpbmRvd19sYXN0X29mZnNldChQR19GVU5DVElPTl9BUkdTKQotewotCWVy ZXBvcnQoRVJST1IsCi0JCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK LQkJCWVycm1zZygiY2Fubm90IHVzZSBMQVNUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7 Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwotfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggYjNhYTQyZmM2NmUuLmJlMTU3YTVmYmU5IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTEwOTY3LDMwICsxMDk2Nyw2IEBACiB7IG9pZCA9PiAnMzExNCcsIGRlc2Ny ID0+ICdmZXRjaCB0aGUgTnRoIHJvdyB2YWx1ZScsCiAgIHByb25hbWUgPT4gJ250aF92YWx1ZScs IHByb2tpbmQgPT4gJ3cnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKICAgcHJvYXJndHlw ZXMgPT4gJ2FueWVsZW1lbnQgaW50NCcsIHByb3NyYyA9PiAnd2luZG93X250aF92YWx1ZScgfSwK LXsgb2lkID0+ICc4MTI2JywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBwcmVjZWRpbmcgcm93IHZhbHVl JywKLSAgcHJvbmFtZSA9PiAncHJldicsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9 PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywgcHJvc3JjID0+ ICd3aW5kb3dfcHJldicgfSwKLXsgb2lkID0+ICc4MTI4JywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBO dGggcHJlY2VkaW5nIHJvdyB2YWx1ZScsCi0gIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xhdGls ZSA9PiAncycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcs Ci0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGludDgnLCBwcm9zcmMgPT4gJ3dpbmRvd19w cmV2X29mZnNldCcgfSwKLXsgb2lkID0+ICc4MTI3JywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBmb2xs b3dpbmcgcm93IHZhbHVlJywKLSAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdz JywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVt ZW50JywgcHJvc3JjID0+ICd3aW5kb3dfbmV4dCcgfSwKLXsgb2lkID0+ICc4MTI5JywgZGVzY3Ig PT4gJ2ZldGNoIHRoZSBOdGggZm9sbG93aW5nIHJvdyB2YWx1ZScsCi0gIHByb25hbWUgPT4gJ25l eHQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9 PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGludDgnLCBwcm9z cmMgPT4gJ3dpbmRvd19uZXh0X29mZnNldCcgfSwKLXsgb2lkID0+ICc4MTMwJywgZGVzY3IgPT4g J2ZldGNoIHRoZSBmaXJzdCByb3cgdmFsdWUgd2l0aGluIG1hdGNoJywKLSAgcHJvbmFtZSA9PiAn Zmlyc3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAot ICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X2ZpcnN0JyB9 LAoteyBvaWQgPT4gJzgxMzInLCBkZXNjciA9PiAnZmV0Y2ggdGhlIE50aCByb3cgdmFsdWUgd2l0 aGluIG1hdGNoJywKLSAgcHJvbmFtZSA9PiAnZmlyc3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHBy b2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5 cGVzID0+ICdhbnllbGVtZW50IGludDgnLCBwcm9zcmMgPT4gJ3dpbmRvd19maXJzdF9vZmZzZXQn IH0sCi17IG9pZCA9PiAnODEzMScsIGRlc2NyID0+ICdmZXRjaCB0aGUgbGFzdCByb3cgdmFsdWUg d2l0aGluIG1hdGNoJywKLSAgcHJvbmFtZSA9PiAnbGFzdCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCi0gIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50 JywgcHJvc3JjID0+ICd3aW5kb3dfbGFzdCcgfSwKLXsgb2lkID0+ICc4MTMzJywgZGVzY3IgPT4g J2ZldGNoIHRoZSBOdGgtZnJvbS1sYXN0IHJvdyB2YWx1ZSB3aXRoaW4gbWF0Y2gnLAotICBwcm9u YW1lID0+ICdsYXN0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHBy b3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBp bnQ4JywgcHJvc3JjID0+ICd3aW5kb3dfbGFzdF9vZmZzZXQnIH0sCiAKICMgZnVuY3Rpb25zIGZv ciByYW5nZSB0eXBlcwogeyBvaWQgPT4gJzM4MzInLCBkZXNjciA9PiAnSS9PJywKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByLm91dAppbmRleCBjMDJjOWQ3NWE5YS4uZGM1MTQwZmVjYzkgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwci5vdXQKQEAgLTEwMjEsMTYgKzEwMjEsNiBAQCBXSU5ET1cgdyBBUyAo CiAtLQogLS0gRXJyb3IgY2FzZXM6IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKIC0tCi0t LSBQUkVWIG91dHNpZGUgREVGSU5FIGNsYXVzZQotU0VMRUNUIHByZXYocHJpY2UpIEZST00gc3Rv Y2s7Ci1FUlJPUjogIGNhbm5vdCB1c2UgcHJldiBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQotTElO RSAxOiBTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsKLSAgICAgICAgICAgICAgIF4KLS0t IE5FWFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCi1TRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9j azsKLUVSUk9SOiAgY2Fubm90IHVzZSBuZXh0IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlCi1MSU5F IDE6IFNFTEVDVCBuZXh0KHByaWNlKSBGUk9NIHN0b2NrOwotICAgICAgICAgICAgICAgXgogLS0g TmVzdGVkIFBSRVYKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCiBXSU5ET1cgdyBBUyAoCkBAIC0x NTk4LDE1ICsxNTg4LDYgQEAgV0lORE9XIHcgQVMgKAogIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKICgyMCByb3dzKQogCi0t LSAyLWFyZyBQUkVWL05FWFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCi1TRUxFQ1QgcHJldihwcmlj ZSwgMikgRlJPTSBzdG9jazsKLUVSUk9SOiAgY2Fubm90IHVzZSBwcmV2IG91dHNpZGUgYSBERUZJ TkUgY2xhdXNlCi1MSU5FIDE6IFNFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0b2NrOwotICAg ICAgICAgICAgICAgXgotU0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7Ci1FUlJPUjog IGNhbm5vdCB1c2UgbmV4dCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQotTElORSAxOiBTRUxFQ1Qg bmV4dChwcmljZSwgMikgRlJPTSBzdG9jazsKLSAgICAgICAgICAgICAgIF4KIC0tIDItYXJnIFBS RVYvTkVYVDogbmVnYXRpdmUgb2Zmc2V0CiBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CiBGUk9NIHN0b2NrCkBAIC0yMTM0LDE5ICsyMTE1LDYg QEAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcg QVMgKAogICAgIERFRklORSBBIEFTIExBU1QodmFsLCAtMSkgSVMgTlVMTAogKTsKIEVSUk9SOiAg cm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKLS0tIEZJ UlNUL0xBU1Qgb3V0c2lkZSBERUZJTkUgY2xhdXNlIChlcnJvciBjYXNlcykKLVNFTEVDVCBmaXJz dCh2YWwpIEZST00gcnByX25hdjsKLUVSUk9SOiAgY2Fubm90IHVzZSBmaXJzdCBvdXRzaWRlIGEg REVGSU5FIGNsYXVzZQotTElORSAxOiBTRUxFQ1QgZmlyc3QodmFsKSBGUk9NIHJwcl9uYXY7Ci0g ICAgICAgICAgICAgICBeCi1TRUxFQ1QgbGFzdCh2YWwpIEZST00gcnByX25hdjsKLUVSUk9SOiAg Y2Fubm90IHVzZSBsYXN0IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlCi1MSU5FIDE6IFNFTEVDVCBs YXN0KHZhbCkgRlJPTSBycHJfbmF2OwotICAgICAgICAgICAgICAgXgotU0VMRUNUIGZpcnN0KHZh bCwgMSkgRlJPTSBycHJfbmF2OwotRVJST1I6ICBjYW5ub3QgdXNlIGZpcnN0IG91dHNpZGUgYSBE RUZJTkUgY2xhdXNlCi1MSU5FIDE6IFNFTEVDVCBmaXJzdCh2YWwsIDEpIEZST00gcnByX25hdjsK LSAgICAgICAgICAgICAgIF4KIC0tIEZ1bmN0aW9uYWwgbm90YXRpb246IHNob3VsZCBhY2Nlc3Mg Y29sdW1uLCBub3QgUlBSIG5hdmlnYXRpb24KIENSRUFURSBURU1QIFRBQkxFIHJwcl9uYW1lcyAo cHJldiBpbnQsIG5leHQgaW50LCBmaXJzdCB0ZXh0LCBsYXN0IHRleHQpOwogSU5TRVJUIElOVE8g cnByX25hbWVzIFZBTFVFUyAoMSwgMiwgJ0pvZScsICdCbG93Jyk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2Jhc2Uub3V0CmluZGV4IDQxNTQxODk4ZjVhLi5jZjE1OGUxYzA0MyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKQEAgLTE3MDksOSArMTcwOSwxMCBAQCBX SU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgdmFsID4gUFJFVih2YWwpCiApCiBPUkRFUiBCWSBp ZDsKLUVSUk9SOiAgY2Fubm90IHVzZSBwcmV2IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlCitFUlJP UjogIGZ1bmN0aW9uIHByZXYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKIExJTkUgMTogU0VMRUNU IFBSRVYoaWQpLCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CiAgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0IG5hbWUuCiAtLSBORVhU IGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCiBTRUxFQ1QgTkVY VChpZCksIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKIEZST00gcnByX25hdgpAQCAt MTcyNCw5ICsxNzI1LDEwIEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQiBBUyB2YWwgPiBQUkVW KHZhbCkKICkKIE9SREVSIEJZIGlkOwotRVJST1I6ICBjYW5ub3QgdXNlIG5leHQgb3V0c2lkZSBh IERFRklORSBjbGF1c2UKK0VSUk9SOiAgZnVuY3Rpb24gbmV4dChpbnRlZ2VyKSBkb2VzIG5vdCBl eGlzdAogTElORSAxOiBTRUxFQ1QgTkVYVChpZCksIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFRoZXJlIGlzIG5vIGZ1bmN0aW9uIG9m IHRoYXQgbmFtZS4KIC0tIEZJUlNUIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIG1hdGNoX3N0YXJ0IHJv dwogU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKIEZST00gcnByX25hdgpA QCAtMTc5MiwxNSArMTc5NCwzNzYgQEAgT1JERVIgQlkgaWQ7CiAKIC0tIEZJUlNUIGZ1bmN0aW9u IGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCiBTRUxFQ1QgRklSU1QoaWQpLCBp ZCwgdmFsIEZST00gcnByX25hdjsKLUVSUk9SOiAgY2Fubm90IHVzZSBmaXJzdCBvdXRzaWRlIGEg REVGSU5FIGNsYXVzZQorRVJST1I6ICBmdW5jdGlvbiBmaXJzdChpbnRlZ2VyKSBkb2VzIG5vdCBl eGlzdAogTElORSAxOiBTRUxFQ1QgRklSU1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsKICAg ICAgICAgICAgICAgIF4KK0RFVEFJTDogIFRoZXJlIGlzIG5vIGZ1bmN0aW9uIG9mIHRoYXQgbmFt ZS4KIC0tIExBU1QgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBpbiBERUZJTkUK IFNFTEVDVCBMQVNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7Ci1FUlJPUjogIGNhbm5vdCB1 c2UgbGFzdCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorRVJST1I6ICBmdW5jdGlvbiBsYXN0KGlu dGVnZXIpIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IFNFTEVDVCBMQVNUKGlkKSwgaWQsIHZhbCBG Uk9NIHJwcl9uYXY7CiAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5j dGlvbiBvZiB0aGF0IG5hbWUuCiBEUk9QIFRBQkxFIHJwcl9uYXY7CistLSBOYW1lLXNwYWNlOiBw cmV2L25leHQvZmlyc3QvbGFzdCBhcmUgbmF2aWdhdGlvbiBmdW5jdGlvbnMsIG5vdCBvcmRpbmFy eSBmdW5jdGlvbnMKK0NSRUFURSBTQ0hFTUEgcnByX25hdm5zOworU0VUIHNlYXJjaF9wYXRoIFRP IHJwcl9uYXZucywgcHVibGljOworQ1JFQVRFIFRBQkxFIG50IChnIHRleHQsIGlkIGludCwgdmFs IGludCk7CitJTlNFUlQgSU5UTyBudCBWQUxVRVMgKCd4JywgMSwgMTAwKSwgKCd4JywgMiwgMjAw KSwgKCd4JywgMywgMTUwKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ3gnLCA0LCAxNDApLCAo J3gnLCA1LCAxNTApOworLS0gT3V0c2lkZSBERUZJTkUgdGhlc2UgYXJlIG9yZGluYXJ5IGlkZW50 aWZpZXJzIGFuZCByZXNvbHZlIHRvIG5vdGhpbmcKK1NFTEVDVCBwcmV2KHZhbCkgRlJPTSBudDsK K0VSUk9SOiAgZnVuY3Rpb24gcHJldihpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBT RUxFQ1QgcHJldih2YWwpIEZST00gbnQ7CisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVy ZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0IG5hbWUuCitTRUxFQ1QgbmV4dCh2YWwpIEZST00gbnQ7 CitFUlJPUjogIGZ1bmN0aW9uIG5leHQoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTog U0VMRUNUIG5leHQodmFsKSBGUk9NIG50OworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhl cmUgaXMgbm8gZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgorU0VMRUNUIHByZXYodmFsLCAyKSBGUk9N IG50OworRVJST1I6ICBmdW5jdGlvbiBwcmV2KGludGVnZXIsIGludGVnZXIpIGRvZXMgbm90IGV4 aXN0CitMSU5FIDE6IFNFTEVDVCBwcmV2KHZhbCwgMikgRlJPTSBudDsKKyAgICAgICAgICAgICAg IF4KK0RFVEFJTDogIFRoZXJlIGlzIG5vIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZS4KK1NFTEVDVCBu ZXh0KHZhbCwgMikgRlJPTSBudDsKK0VSUk9SOiAgZnVuY3Rpb24gbmV4dChpbnRlZ2VyLCBpbnRl Z2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgbmV4dCh2YWwsIDIpIEZST00gbnQ7 CisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0 IG5hbWUuCitTRUxFQ1QgZmlyc3QodmFsKSBGUk9NIG50OworRVJST1I6ICBmdW5jdGlvbiBmaXJz dChpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgZmlyc3QodmFsKSBGUk9N IG50OworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhlcmUgaXMgbm8gZnVuY3Rpb24gb2Yg dGhhdCBuYW1lLgorU0VMRUNUIGxhc3QodmFsKSBGUk9NIG50OworRVJST1I6ICBmdW5jdGlvbiBs YXN0KGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBsYXN0KHZhbCkgRlJP TSBudDsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFRoZXJlIGlzIG5vIGZ1bmN0aW9uIG9m IHRoYXQgbmFtZS4KK1NFTEVDVCBmaXJzdCh2YWwsIDEpIEZST00gbnQ7CitFUlJPUjogIGZ1bmN0 aW9uIGZpcnN0KGludGVnZXIsIGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVD VCBmaXJzdCh2YWwsIDEpIEZST00gbnQ7CisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVy ZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0IG5hbWUuCistLSBBIHNjaGVtYS1xdWFsaWZpZWQgY2Fs bCBpcyBhbHNvIGEgcGxhaW4gKGZhaWxpbmcpIGZ1bmN0aW9uIGxvb2t1cAorU0VMRUNUIHBnX2Nh dGFsb2cucHJldih2YWwpIEZST00gbnQ7CitFUlJPUjogIGZ1bmN0aW9uIHBnX2NhdGFsb2cucHJl dihpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgcGdfY2F0YWxvZy5wcmV2 KHZhbCkgRlJPTSBudDsKKyAgICAgICAgICAgICAgIF4KKy0tIE91dHNpZGUgREVGSU5FLCBhIHVz ZXItZGVmaW5lZCBmdW5jdGlvbiBvZiB0aGF0IG5hbWUgaXMgY2FsbGFibGUKK0NSRUFURSBGVU5D VElPTiBuZXh0KG51bWVyaWMpIFJFVFVSTlMgbnVtZXJpYyBBUyAnU0VMRUNUIC05OTk6Om51bWVy aWMnCisgIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitTRUxFQ1QgbmV4dCgxMCk7CisgbmV4dCAK Ky0tLS0tLQorIC05OTkKKygxIHJvdykKKworLS0gSW5zaWRlIERFRklORSwgdW5xdWFsaWZpZWQg UFJFViBpcyBuYXYgd2hldGhlciBvciBub3QgYSB1c2VyIHByZXYoKSBleGlzdHMKK1NFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBJTklUSUFMCisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORSBTVEFSVCBBUyBU UlVFLCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpCisgIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwg Y250IHwgbGFzdF9pZCAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgIDEgfCAxMDAgfCAg IDIgfCAgICAgICAyCisgIDIgfCAyMDAgfCAgIDAgfCAgICAgICAgCisgIDMgfCAxNTAgfCAgIDAg fCAgICAgICAgCisgIDQgfCAxNDAgfCAgIDIgfCAgICAgICA1CisgIDUgfCAxNTAgfCAgIDAgfCAg ICAgICAgCisoNSByb3dzKQorCistLSBBIHF1YWxpZmllZCBjYWxsIGludm9rZXMgdGhlIGZ1bmN0 aW9uLCBzbyBpdHMgdm9sYXRpbGl0eSBzdGlsbCBtYXR0ZXJzCistLSBWT0xBVElMRTogdW5xdWFs aWZpZWQgaXMgbmF2OyBxdWFsaWZpZWQgaXMgcmVqZWN0ZWQgYXMgYSB2b2xhdGlsZSBmdW5jdGlv bgorQ1JFQVRFIEZVTkNUSU9OIHByZXYoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICdTRUxF Q1QgLTk5OScKKyAgTEFOR1VBR0Ugc3FsIFZPTEFUSUxFOworU0VMRUNUIGlkLCB2YWwsIGNvdW50 KCopIE9WRVIgdyBBUyBjbnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBsYXN0X2lkCisgIEZS T00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAg ICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVGSU5FIFNUQVJUIEFTIFRSVUUsIFVQIEFTIHZh bCA+IFBSRVYodmFsKSkKKyAgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgfCBsYXN0X2lk IAorLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgMSB8IDEwMCB8ICAgMiB8ICAgICAgIDIK KyAgMiB8IDIwMCB8ICAgMCB8ICAgICAgICAKKyAgMyB8IDE1MCB8ICAgMCB8ICAgICAgICAKKyAg NCB8IDE0MCB8ICAgMiB8ICAgICAgIDUKKyAgNSB8IDE1MCB8ICAgMCB8ICAgICAgICAKKyg1IHJv d3MpCisKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJ T04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgcnByX25hdm5zLnByZXYodmFsKSA9IC05OTkpCisgIE9SREVSIEJZIGlkOworRVJST1I6ICB2 b2xhdGlsZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUg NjogICAgIERFRklORSBBIEFTIHJwcl9uYXZucy5wcmV2KHZhbCkgPSAtOTk5KQorICAgICAgICAg ICAgICAgICAgICAgICAgXgorRFJPUCBGVU5DVElPTiBwcmV2KGludGVnZXIpOworLS0gSU1NVVRB QkxFOiB1bnF1YWxpZmllZCBpcyBuYXY7IHF1YWxpZmllZCBpcyB0aGUgZXNjYXBlIGhhdGNoIGFu ZCBzdWNjZWVkcworQ1JFQVRFIEZVTkNUSU9OIHByZXYoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2Vy IEFTICdTRUxFQ1QgLTk5OScKKyAgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRTsKK1NFTEVDVCBpZCwg dmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbGFz dF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJ TklUSUFMCisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORSBTVEFSVCBBUyBUUlVF LCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpCisgIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IHwgbGFzdF9pZCAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgIDEgfCAxMDAgfCAgIDIg fCAgICAgICAyCisgIDIgfCAyMDAgfCAgIDAgfCAgICAgICAgCisgIDMgfCAxNTAgfCAgIDAgfCAg ICAgICAgCisgIDQgfCAxNDAgfCAgIDIgfCAgICAgICA1CisgIDUgfCAxNTAgfCAgIDAgfCAgICAg ICAgCisoNSByb3dzKQorCistLSAodmFsKS5wcmV2IGlzIGF0dHJpYnV0ZSBub3RhdGlvbiwgc28g aXQgY2FsbHMgdGhlIG9yZGluYXJ5IGZ1bmN0aW9uIHByZXYodmFsKQorLS0gKHRoZSBJTU1VVEFC TEUgdXNlciBwcmV2IGhlcmUpLCB0aGUgc2FtZSBhcyB0aGUgc2NoZW1hLXF1YWxpZmllZCBjYWxs IGJlbG93CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElU SU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTICh2YWwpLnByZXYgPSAtOTk5KQorICBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCB8 IGxhc3RfaWQgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAxIHwgMTAwIHwgICA1IHwg ICAgICAgNQorICAyIHwgMjAwIHwgICAwIHwgICAgICAgIAorICAzIHwgMTUwIHwgICAwIHwgICAg ICAgIAorICA0IHwgMTQwIHwgICAwIHwgICAgICAgIAorICA1IHwgMTUwIHwgICAwIHwgICAgICAg IAorKDUgcm93cykKKworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQsIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBsYXN0X2lkCisgIEZST00gbnQKKyAgV0lORE9XIHcgQVMg KFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBycHJfbmF2bnMucHJldih2YWwpID0gLTk5OSkKKyAgT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgfCBsYXN0X2lkIAorLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0KKyAg MSB8IDEwMCB8ICAgNSB8ICAgICAgIDUKKyAgMiB8IDIwMCB8ICAgMCB8ICAgICAgICAKKyAgMyB8 IDE1MCB8ICAgMCB8ICAgICAgICAKKyAgNCB8IDE0MCB8ICAgMCB8ICAgICAgICAKKyAgNSB8IDE1 MCB8ICAgMCB8ICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFplcm8gb3IgbW9yZSB0aGFuIHR3byBh cmd1bWVudHMgaXMgYW4gZXJyb3IsIHdpdGggbm8gZnVuY3Rpb24gZmFsbGJhY2sKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCkgSVMgTlVM TCk7CitFUlJPUjogIHRvbyBmZXcgYXJndW1lbnRzIGZvciByb3cgcGF0dGVybiBuYXZpZ2F0aW9u IGZ1bmN0aW9uIFBSRVYKK0xJTkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVW KCkgSVMgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVU QUlMOiAgUFJFViB0YWtlcyBhIHZhbHVlIGV4cHJlc3Npb24gYW5kIGFuIG9wdGlvbmFsIG9mZnNl dCBhcmd1bWVudC4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBB UyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJ TkUgQSBBUyBQUkVWKHZhbCwgMSwgMikgSVMgTlVMTCk7CitFUlJPUjogIHRvbyBtYW55IGFyZ3Vt ZW50cyBmb3Igcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBmdW5jdGlvbiBQUkVWCitMSU5FIDQ6ICAg ICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwsIDEsIDIpIElTIE5VTEwpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBSRVYgdGFrZXMg YSB2YWx1ZSBleHByZXNzaW9uIGFuZCBhbiBvcHRpb25hbCBvZmZzZXQgYXJndW1lbnQuCistLSB0 aGUgZXJyb3Igc3RhbmRzIGV2ZW4gd2hlbiBhIHVzZXIgZnVuY3Rpb24gb2YgdGhhdCBleGFjdCBh cml0eSBleGlzdHMKK0NSRUFURSBGVU5DVElPTiBwcmV2KGludGVnZXIsIGludGVnZXIsIGludGVn ZXIpIFJFVFVSTlMgaW50ZWdlcgorICBBUyAnU0VMRUNUIC05OTknIExBTkdVQUdFIHNxbCBJTU1V VEFCTEU7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBB UlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEg QVMgUFJFVih2YWwsIDEsIDIpIElTIE5VTEwpOworRVJST1I6ICB0b28gbWFueSBhcmd1bWVudHMg Zm9yIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gZnVuY3Rpb24gUFJFVgorTElORSA0OiAgICAgUEFU VEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsLCAxLCAyKSBJUyBOVUxMKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQUkVWIHRha2VzIGEgdmFs dWUgZXhwcmVzc2lvbiBhbmQgYW4gb3B0aW9uYWwgb2Zmc2V0IGFyZ3VtZW50LgorRFJPUCBGVU5D VElPTiBwcmV2KGludGVnZXIsIGludGVnZXIsIGludGVnZXIpOworLS0gU3ludGFjdGljIGRlY29y YXRpb24gaXMgcmVqZWN0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5E T1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBQUkVWKCopIElTIE5VTEwpOworRVJST1I6ICBwcmV2KCopIHNwZWNpZmll ZCwgYnV0IHByZXYgaXMgbm90IGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorTElORSA0OiAgICAgUEFU VEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoKikgSVMgTlVMTCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50Cisg IFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVS TiAoQSspIERFRklORSBBIEFTIFBSRVYoRElTVElOQ1QgdmFsKSBJUyBOVUxMKTsKK0VSUk9SOiAg RElTVElOQ1Qgc3BlY2lmaWVkLCBidXQgcHJldiBpcyBub3QgYW4gYWdncmVnYXRlIGZ1bmN0aW9u CitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihESVNUSU5DVCB2YWwp IElTIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCBP UkRFUiBCWSB2YWwpIElTIE5VTEwpOworRVJST1I6ICBPUkRFUiBCWSBzcGVjaWZpZWQsIGJ1dCBw cmV2IGlzIG5vdCBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24KK0xJTkUgNDogICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBQUkVWKHZhbCBPUkRFUiBCWSB2YWwpIElTIE5VTEwpLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisg ICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsKSBGSUxURVIgKFdIRVJFIHRydWUp IElTIE5VTEwpOworRVJST1I6ICBGSUxURVIgc3BlY2lmaWVkLCBidXQgcHJldiBpcyBub3QgYW4g YWdncmVnYXRlIGZ1bmN0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg UFJFVih2YWwpIEZJTFRFUiAoV0hFUkUgdHJ1ZSkgSS4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5E T1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBQUkVWKHZhbCkgV0lUSElOIEdST1VQIChPUkRFUiBCWSB2YWwpIElTIE5V TEwpOworRVJST1I6ICBXSVRISU4gR1JPVVAgc3BlY2lmaWVkLCBidXQgcHJldiBpcyBub3QgYW4g YWdncmVnYXRlIGZ1bmN0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg UFJFVih2YWwpIFdJVEhJTiBHUk9VUCAoT1JERVIgQi4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5E T1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBQUkVWKHZhbCkgT1ZFUiAoKSBJUyBOVUxMKTsKK0VSUk9SOiAgT1ZFUiBz cGVjaWZpZWQsIGJ1dCBwcmV2IGlzIG5vdCBhIHdpbmRvdyBmdW5jdGlvbiBub3IgYW4gYWdncmVn YXRlIGZ1bmN0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2 YWwpIE9WRVIgKCkgSVMgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJU SVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFT IFBSRVYoVkFSSUFESUMgQVJSQVlbdmFsXSkgSVMgTlVMTCk7CitFUlJPUjogIGNhbm5vdCB1c2Ug VkFSSUFESUMgd2l0aCByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIGZ1bmN0aW9uIFBSRVYKK0xJTkUg NDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKFZBUklBRElDIEFSUkFZW3ZhbF0p IElTIE5VLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNU IGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByZXYoeCA9PiB2 YWwpIElTIE5VTEwpOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMg Y2Fubm90IHVzZSBuYW1lZCBhcmd1bWVudHMKK0xJTkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJ TkUgQSBBUyBwcmV2KHggPT4gdmFsKSBJUyBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9X IHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykg REVGSU5FIEEgQVMgUFJFVih2YWwpIElHTk9SRSBOVUxMUyBJUyBOVUxMKTsKK0VSUk9SOiAgb25s eSB3aW5kb3cgZnVuY3Rpb25zIGFjY2VwdCBSRVNQRUNUL0lHTk9SRSBOVUxMUworTElORSA0OiAg ICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsKSBJR05PUkUgTlVMTFMgSVMgTlVM TCkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBRdW90aW5n IGRvZXMgbm90IGVzY2FwZTogInByZXYiIGlzIG5hdiwgIlBSRVYiIGlzIGFuIG9yZGluYXJ5IG5h bWUKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgIEZST00gbnQKKyAg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJO IChTVEFSVCBVUCspCisgICAgREVGSU5FIFNUQVJUIEFTIFRSVUUsIFVQIEFTIHZhbCA+ICJwcmV2 Iih2YWwpKQorICBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8IDEwMCB8ICAgMgorICAyIHwgMjAwIHwgICAwCisgIDMgfCAxNTAgfCAgIDAKKyAg NCB8IDE0MCB8ICAgMgorICA1IHwgMTUwIHwgICAwCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H IElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgIlBSRVYiKHZhbCkgSVMgTlVM TCk7CitFUlJPUjogIGZ1bmN0aW9uIFBSRVYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg NDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyAiUFJFViIodmFsKSBJUyBOVUxMKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBu byBmdW5jdGlvbiBvZiB0aGF0IG5hbWUuCistLSBBIHZpZXcgcm91bmQtdHJpcHM6IGJhcmUgUFJF ViBzdGF5cyBhIG5hdmlnYXRpb24gZnVuY3Rpb24sIGFuZCBhIHF1YWxpZmllZAorLS0gdXNlciBw cmV2KCkgc3RheXMgc2NoZW1hLXF1YWxpZmllZCBzbyBpdCBkb2VzIG5vdCByZXBhcnNlIGFzIG5h dmlnYXRpb24KK0NSRUFURSBWSUVXIG5hdm5zX25hdiBBUworICBTRUxFQ1QgaWQsIGNvdW50KCop IE9WRVIgdyBBUyBjbnQgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJUIFVQKykgREVGSU5FIFNUQVJUIEFTIFRS VUUsIFVQIEFTIHZhbCA+IFBSRVYodmFsKSk7CitDUkVBVEUgVklFVyBuYXZuc19mbiBBUworICBT RUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgRlJPTSBudAorICBXSU5ET1cgdyBBUyAo UEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBycHJfbmF2bnMucHJldih2YWwpID0gLTk5OSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J25hdm5zX25hdicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg RlJPTSBudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChQQVJUSVRJ T04gQlkgZyBPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJ TklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKHN0YXJ0IHVwKykg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBz dGFydCBBUyB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIHVwIEFTICh2YWwgPiBQUkVWKHZh bCkpICk7CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignbmF2bnNfZm4nKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhKykgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAocnByX25hdm5zLnBy ZXYodmFsKSA9ICctOTk5Jzo6aW50ZWdlcikgKTsKKygxIHJvdykKKworRFJPUCBWSUVXIG5hdm5z X25hdiwgbmF2bnNfZm47CistLSBBdHRyaWJ1dGUgbm90YXRpb24gaXMgZmllbGQgc2VsZWN0aW9u IG9ubHksIG5ldmVyIGEgZnVuY3Rpb24gZmFsbGJhY2sKK0NSRUFURSBUWVBFIHJwcl9uYXZuc19w YWlyIEFTIChmaXJzdCBpbnQsIGxhc3QgaW50KTsKK0NSRUFURSBUQUJMRSBjdCAoaWQgaW50LCBw IHJwcl9uYXZuc19wYWlyKTsKK0lOU0VSVCBJTlRPIGN0IFZBTFVFUyAoMSwgKDEwLCAyMCkpLCAo MiwgKDMwLCA0MCkpOworU0VMRUNUIChwKS5sYXN0IEZST00gY3QgT1JERVIgQlkgaWQ7CisgbGFz dCAKKy0tLS0tLQorICAgMjAKKyAgIDQwCisoMiByb3dzKQorCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3IEZST00gY3QKKyAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgKHApLmxhc3QgPiAwKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAg MgorICAgICAwCisoMiByb3dzKQorCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gY3QKKyAg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEg QVMgKHApLnByZXYgPiAwKTsKK0VSUk9SOiAgY29sdW1uICJwcmV2IiBub3QgZm91bmQgaW4gZGF0 YSB0eXBlIHJwcl9uYXZuc19wYWlyCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEg QVMgKHApLnByZXYgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gTmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgY29udGFpbiBhIG5hdmlnYXRpb24gb3Bl cmF0aW9uCitTRUxFQ1QgaWQsIHZhbAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJ T04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgUFJFVih2YWwsIEZJUlNUKDEpKSA+IDApCisgIE9SREVSIEJZIGlkOworRVJST1I6ICByb3cg cGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBjYW5ub3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb3BlcmF0aW9uCitMSU5FIDY6ICAgICBERUZJTkUgQSBBUyBQUkVWKHZhbCwgRklS U1QoMSkpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBBIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudC4KK0RST1Ag U0NIRU1BIHJwcl9uYXZucyBDQVNDQURFOworUkVTRVQgc2VhcmNoX3BhdGg7CiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IFNLSVAgVE8gLyBJTklUSUFMIFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTM2NTUsNiArNDAxOCwxMjcgQEAg RVJST1I6ICBjYW5ub3QgbmVzdCByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG1vcmUgdGhhbiB0d28g bGV2ZWxzIGRlZXAKIExJTkUgNjogICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoUFJFVih2KSkp ID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgXgogSElOVDogIE9ubHkgUFJFVihGSVJTVCgp KSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5k IGZvcm1zIGFyZSBhbGxvd2VkLgorLS0gQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVu LXRpbWUgY29uc3RhbnQsIG5vdCBhIG5hdmlnYXRpb24gb3BlcmF0aW9uCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1QoMSkpID4gMCk7CitFUlJPUjogIHJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IGNhbm5vdCBjb250YWluIGEgcm93IHBhdHRlcm4g bmF2aWdhdGlvbiBvcGVyYXRpb24KK0xJTkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBB UyBQUkVWKHYsIEZJUlNUKDEpKSA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEg cnVuLXRpbWUgY29uc3RhbnQuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBS RVYodiwgRklSU1QoMSkgKyAxKSA+IDApOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9u IG9mZnNldCBjYW5ub3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9u CitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBGSVJTVCgxKSAr IDEpID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBBIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFu dC4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBORVhUKDEsIDAp KSA+IDApOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBjYW5ub3QgY29u dGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uCitMSU5FIDQ6ICAgICBQQVRU RVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBORVhUKDEsIDApKSA+IDApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgQSBuYXZpZ2F0 aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQuCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspIERFRklORSBBIEFTIFBSRVYoRklSU1QodiksIExBU1QoMSkpID4gMCk7CitFUlJPUjog IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IGNhbm5vdCBjb250YWluIGEgcm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvcGVyYXRpb24KK0xJTkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBQUkVWKEZJUlNUKHYpLCBMQVNUKDEpKSA+IDApOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgbmF2aWdhdGlvbiBv ZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50LgorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBQUkVWKHYsIEZJUlNUKHYpKSA+IDApOworRVJST1I6ICByb3cgcGF0dGVy biBuYXZpZ2F0aW9uIG9mZnNldCBjYW5ub3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRp b24gb3BlcmF0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2 LCBGSVJTVCh2KSkgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0RFVEFJTDogIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1l IGNvbnN0YW50LgorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBORVhUKHYsIFBS RVYodiwgMSkpID4gMCk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IGNh bm5vdCBjb250YWluIGEgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24KK0xJTkUgNDog ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBORVhUKHYsIFBSRVYodiwgMSkpID4gMCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBB IG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudC4KK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2LCBMQVNUKDEpKSwgMikgPiAw KTsKK0VSUk9SOiAgY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3JlIHRoYW4g dHdvIGxldmVscyBkZWVwCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJF VihGSVJTVCh2LCBMQVNUKDEpKSwgMikgPiAwKS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwg TkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dl ZC4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBGSVJTVCgxOjpi aWdpbnQpKSA+IDApOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBjYW5u b3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uCitMSU5FIDQ6ICAg ICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBGSVJTVCgxOjpiaWdpbnQpKSA+IDAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQuCistLSBB biB1bmtub3duIGxpdGVyYWwgYXJndW1lbnQgcmVzb2x2ZXMgdG8gdGV4dDsgaXQgbXVzdCBzdGls bCByZWZlcmVuY2UgYSBjb2x1bW4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsNSkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQ UkVWKCdmb28nKSA9ICdiYXInKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2 aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJl bmNlCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVignZm9vJykgPSAn YmFyJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBzKHYpCitXSU5ET1cgdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoJ2ZvbycpKTsKK0VSUk9SOiAgYXJndW1lbnQg b2YgREVGSU5FIG11c3QgYmUgdHlwZSBib29sZWFuLCBub3QgdHlwZSB0ZXh0CitMSU5FIDQ6ICAg ICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVignZm9vJykpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsNSkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBB UyBQUkVWKE5VTEwpIElTIE5VTEwpOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBu YXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZl cmVuY2UKK0xJTkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKE5VTEwpIElT IE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1BSRVBBUkUg cnByX25hdmFyZyBBUyBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVigkMSkg SVMgTlVMTCk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3Bl cmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA0 OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoJDEpIElTIE5VTEwpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEFuIGludDIgb2Zmc2V0IGlzIGNv ZXJjZWQgdG8gaW50OCBsaWtlIGFueSBpbXBsaWNpdCBjYXN0IChzYW1lIGFzIHBsYWluIDApCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIHModikKK1dJ TkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCAwOjpzbWFsbGludCkgPSB2 KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNQorICAgICAwCisgICAgIDAKKyAgICAgMAorICAg ICAwCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2 LCAwKSA9IHYpOworIGNvdW50IAorLS0tLS0tLQorICAgICA1CisgICAgIDAKKyAgICAgMAorICAg ICAwCisgICAgIDAKKyg1IHJvd3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gV2luZG93IERlZHVwbGljYXRpb24g VGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggYjE1YjMwYzg1YWMuLmUzZTlkZTc4 OWRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKQEAgLTQ0NCwxMiArNDQ0LDYgQEAgV0lORE9XIHcgQVMg KAogLS0gRXJyb3IgY2FzZXM6IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKIC0tCiAKLS0t IFBSRVYgb3V0c2lkZSBERUZJTkUgY2xhdXNlCi1TRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9j azsKLQotLS0gTkVYVCBvdXRzaWRlIERFRklORSBjbGF1c2UKLVNFTEVDVCBuZXh0KHByaWNlKSBG Uk9NIHN0b2NrOwotCiAtLSBOZXN0ZWQgUFJFVgogU0VMRUNUIHByaWNlIEZST00gc3RvY2sKIFdJ TkRPVyB3IEFTICgKQEAgLTgzMSwxMCArODI1LDYgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklO RSBBIEFTIFBSRVYocHJpY2UsIDApID0gcHJpY2UKICk7CiAKLS0tIDItYXJnIFBSRVYvTkVYVCBv dXRzaWRlIERFRklORSBjbGF1c2UKLVNFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0b2NrOwot U0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7Ci0KIC0tIDItYXJnIFBSRVYvTkVYVDog bmVnYXRpdmUgb2Zmc2V0CiBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1 ZShwcmljZSkgT1ZFUiB3CiBGUk9NIHN0b2NrCkBAIC0xMTI0LDExICsxMTE0LDYgQEAgU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAogICAg IERFRklORSBBIEFTIExBU1QodmFsLCAtMSkgSVMgTlVMTAogKTsKIAotLS0gRklSU1QvTEFTVCBv dXRzaWRlIERFRklORSBjbGF1c2UgKGVycm9yIGNhc2VzKQotU0VMRUNUIGZpcnN0KHZhbCkgRlJP TSBycHJfbmF2OwotU0VMRUNUIGxhc3QodmFsKSBGUk9NIHJwcl9uYXY7Ci1TRUxFQ1QgZmlyc3Qo dmFsLCAxKSBGUk9NIHJwcl9uYXY7Ci0KIC0tIEZ1bmN0aW9uYWwgbm90YXRpb246IHNob3VsZCBh Y2Nlc3MgY29sdW1uLCBub3QgUlBSIG5hdmlnYXRpb24KIENSRUFURSBURU1QIFRBQkxFIHJwcl9u YW1lcyAocHJldiBpbnQsIG5leHQgaW50LCBmaXJzdCB0ZXh0LCBsYXN0IHRleHQpOwogSU5TRVJU IElOVE8gcnByX25hbWVzIFZBTFVFUyAoMSwgMiwgJ0pvZScsICdCbG93Jyk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfYmFzZS5zcWwKaW5kZXggZmNlZmQ1OWRlNGEuLmU3MWYwZGQzNjgwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0xMzA5LDYgKzEzMDksMTk1IEBAIFNFTEVDVCBMQVNUKGlk KSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7CiAKIERST1AgVEFCTEUgcnByX25hdjsKIAorLS0gTmFt ZS1zcGFjZTogcHJldi9uZXh0L2ZpcnN0L2xhc3QgYXJlIG5hdmlnYXRpb24gZnVuY3Rpb25zLCBu b3Qgb3JkaW5hcnkgZnVuY3Rpb25zCitDUkVBVEUgU0NIRU1BIHJwcl9uYXZuczsKK1NFVCBzZWFy Y2hfcGF0aCBUTyBycHJfbmF2bnMsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSBudCAoZyB0ZXh0LCBp ZCBpbnQsIHZhbCBpbnQpOworSU5TRVJUIElOVE8gbnQgVkFMVUVTICgneCcsIDEsIDEwMCksICgn eCcsIDIsIDIwMCksICgneCcsIDMsIDE1MCksCisgICAgICAgICAgICAgICAgICAgICAgKCd4Jywg NCwgMTQwKSwgKCd4JywgNSwgMTUwKTsKKworLS0gT3V0c2lkZSBERUZJTkUgdGhlc2UgYXJlIG9y ZGluYXJ5IGlkZW50aWZpZXJzIGFuZCByZXNvbHZlIHRvIG5vdGhpbmcKK1NFTEVDVCBwcmV2KHZh bCkgRlJPTSBudDsKK1NFTEVDVCBuZXh0KHZhbCkgRlJPTSBudDsKK1NFTEVDVCBwcmV2KHZhbCwg MikgRlJPTSBudDsKK1NFTEVDVCBuZXh0KHZhbCwgMikgRlJPTSBudDsKK1NFTEVDVCBmaXJzdCh2 YWwpIEZST00gbnQ7CitTRUxFQ1QgbGFzdCh2YWwpIEZST00gbnQ7CitTRUxFQ1QgZmlyc3QodmFs LCAxKSBGUk9NIG50OworLS0gQSBzY2hlbWEtcXVhbGlmaWVkIGNhbGwgaXMgYWxzbyBhIHBsYWlu IChmYWlsaW5nKSBmdW5jdGlvbiBsb29rdXAKK1NFTEVDVCBwZ19jYXRhbG9nLnByZXYodmFsKSBG Uk9NIG50OworCistLSBPdXRzaWRlIERFRklORSwgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2Yg dGhhdCBuYW1lIGlzIGNhbGxhYmxlCitDUkVBVEUgRlVOQ1RJT04gbmV4dChudW1lcmljKSBSRVRV Uk5TIG51bWVyaWMgQVMgJ1NFTEVDVCAtOTk5OjpudW1lcmljJworICBMQU5HVUFHRSBzcWwgSU1N VVRBQkxFOworU0VMRUNUIG5leHQoMTApOworCistLSBJbnNpZGUgREVGSU5FLCB1bnF1YWxpZmll ZCBQUkVWIGlzIG5hdiB3aGV0aGVyIG9yIG5vdCBhIHVzZXIgcHJldigpIGV4aXN0cworU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBsYXN0X2lkCisgIEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVGSU5FIFNUQVJUIEFT IFRSVUUsIFVQIEFTIHZhbCA+IFBSRVYodmFsKSkKKyAgT1JERVIgQlkgaWQ7CisKKy0tIEEgcXVh bGlmaWVkIGNhbGwgaW52b2tlcyB0aGUgZnVuY3Rpb24sIHNvIGl0cyB2b2xhdGlsaXR5IHN0aWxs IG1hdHRlcnMKKy0tIFZPTEFUSUxFOiB1bnF1YWxpZmllZCBpcyBuYXY7IHF1YWxpZmllZCBpcyBy ZWplY3RlZCBhcyBhIHZvbGF0aWxlIGZ1bmN0aW9uCitDUkVBVEUgRlVOQ1RJT04gcHJldihpbnRl Z2VyKSBSRVRVUk5TIGludGVnZXIgQVMgJ1NFTEVDVCAtOTk5JworICBMQU5HVUFHRSBzcWwgVk9M QVRJTEU7CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElU SU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJUIFVQKykKKyAgICBE RUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgdmFsID4gUFJFVih2YWwpKQorICBPUkRFUiBCWSBp ZDsKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04g QlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg cnByX25hdm5zLnByZXYodmFsKSA9IC05OTkpCisgIE9SREVSIEJZIGlkOworRFJPUCBGVU5DVElP TiBwcmV2KGludGVnZXIpOworLS0gSU1NVVRBQkxFOiB1bnF1YWxpZmllZCBpcyBuYXY7IHF1YWxp ZmllZCBpcyB0aGUgZXNjYXBlIGhhdGNoIGFuZCBzdWNjZWVkcworQ1JFQVRFIEZVTkNUSU9OIHBy ZXYoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICdTRUxFQ1QgLTk5OScKKyAgTEFOR1VBR0Ug c3FsIElNTVVUQUJMRTsKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFT IChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoU1RBUlQgVVAr KQorICAgIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpCisgIE9S REVSIEJZIGlkOworLS0gKHZhbCkucHJldiBpcyBhdHRyaWJ1dGUgbm90YXRpb24sIHNvIGl0IGNh bGxzIHRoZSBvcmRpbmFyeSBmdW5jdGlvbiBwcmV2KHZhbCkKKy0tICh0aGUgSU1NVVRBQkxFIHVz ZXIgcHJldiBoZXJlKSwgdGhlIHNhbWUgYXMgdGhlIHNjaGVtYS1xdWFsaWZpZWQgY2FsbCBiZWxv dworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQsIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBsYXN0X2lkCisgIEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBC WSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAo dmFsKS5wcmV2ID0gLTk5OSkKKyAgT1JERVIgQlkgaWQ7CitTRUxFQ1QgaWQsIHZhbCwgY291bnQo KikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJP TSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHJwcl9uYXZucy5wcmV2KHZhbCkgPSAtOTk5 KQorICBPUkRFUiBCWSBpZDsKKworLS0gWmVybyBvciBtb3JlIHRoYW4gdHdvIGFyZ3VtZW50cyBp cyBhbiBlcnJvciwgd2l0aCBubyBmdW5jdGlvbiBmYWxsYmFjaworU0VMRUNUIGNvdW50KCopIE9W RVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklU SUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoKSBJUyBOVUxMKTsKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCwg MSwgMikgSVMgTlVMTCk7CistLSB0aGUgZXJyb3Igc3RhbmRzIGV2ZW4gd2hlbiBhIHVzZXIgZnVu Y3Rpb24gb2YgdGhhdCBleGFjdCBhcml0eSBleGlzdHMKK0NSRUFURSBGVU5DVElPTiBwcmV2KGlu dGVnZXIsIGludGVnZXIsIGludGVnZXIpIFJFVFVSTlMgaW50ZWdlcgorICBBUyAnU0VMRUNUIC05 OTknIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00g bnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQ QVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwsIDEsIDIpIElTIE5VTEwpOworRFJPUCBG VU5DVElPTiBwcmV2KGludGVnZXIsIGludGVnZXIsIGludGVnZXIpOworCistLSBTeW50YWN0aWMg ZGVjb3JhdGlvbiBpcyByZWplY3RlZAorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50Cisg IFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVS TiAoQSspIERFRklORSBBIEFTIFBSRVYoKikgSVMgTlVMTCk7CitTRUxFQ1QgY291bnQoKikgT1ZF UiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJ QUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihESVNUSU5DVCB2YWwpIElTIE5V TEwpOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJU SVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFT IFBSRVYodmFsIE9SREVSIEJZIHZhbCkgSVMgTlVMTCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwK KyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwpIEZJTFRFUiAoV0hFUkUgdHJ1 ZSkgSVMgTlVMTCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcg QVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVG SU5FIEEgQVMgUFJFVih2YWwpIFdJVEhJTiBHUk9VUCAoT1JERVIgQlkgdmFsKSBJUyBOVUxMKTsK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9O IEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVW KHZhbCkgT1ZFUiAoKSBJUyBOVUxMKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAor ICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRF Uk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKFZBUklBRElDIEFSUkFZW3ZhbF0pIElTIE5VTEwpOwor U0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04g QlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByZXYo eCA9PiB2YWwpIElTIE5VTEwpOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJ TkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAo QSspIERFRklORSBBIEFTIFBSRVYodmFsKSBJR05PUkUgTlVMTFMgSVMgTlVMTCk7CisKKy0tIFF1 b3RpbmcgZG9lcyBub3QgZXNjYXBlOiAicHJldiIgaXMgbmF2LCAiUFJFViIgaXMgYW4gb3JkaW5h cnkgbmFtZQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgRlJPTSBu dAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBB VFRFUk4gKFNUQVJUIFVQKykKKyAgICBERUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgdmFsID4g InByZXYiKHZhbCkpCisgIE9SREVSIEJZIGlkOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9N IG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTICJQUkVWIih2YWwpIElTIE5VTEwpOworCistLSBBIHZp ZXcgcm91bmQtdHJpcHM6IGJhcmUgUFJFViBzdGF5cyBhIG5hdmlnYXRpb24gZnVuY3Rpb24sIGFu ZCBhIHF1YWxpZmllZAorLS0gdXNlciBwcmV2KCkgc3RheXMgc2NoZW1hLXF1YWxpZmllZCBzbyBp dCBkb2VzIG5vdCByZXBhcnNlIGFzIG5hdmlnYXRpb24KK0NSRUFURSBWSUVXIG5hdm5zX25hdiBB UworICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgRlJPTSBudAorICBXSU5ET1cg dyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJU IFVQKykgREVGSU5FIFNUQVJUIEFTIFRSVUUsIFVQIEFTIHZhbCA+IFBSRVYodmFsKSk7CitDUkVB VEUgVklFVyBuYXZuc19mbiBBUworICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQg RlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAor ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBycHJfbmF2bnMucHJldih2YWwpID0gLTk5OSk7 CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ25hdm5zX25hdicpOworU0VMRUNUIHBnX2dldF92aWV3 ZGVmKCduYXZuc19mbicpOworRFJPUCBWSUVXIG5hdm5zX25hdiwgbmF2bnNfZm47CisKKy0tIEF0 dHJpYnV0ZSBub3RhdGlvbiBpcyBmaWVsZCBzZWxlY3Rpb24gb25seSwgbmV2ZXIgYSBmdW5jdGlv biBmYWxsYmFjaworQ1JFQVRFIFRZUEUgcnByX25hdm5zX3BhaXIgQVMgKGZpcnN0IGludCwgbGFz dCBpbnQpOworQ1JFQVRFIFRBQkxFIGN0IChpZCBpbnQsIHAgcnByX25hdm5zX3BhaXIpOworSU5T RVJUIElOVE8gY3QgVkFMVUVTICgxLCAoMTAsIDIwKSksICgyLCAoMzAsIDQwKSk7CitTRUxFQ1Qg KHApLmxhc3QgRlJPTSBjdCBPUkRFUiBCWSBpZDsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJP TSBjdAorICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBE RUZJTkUgQSBBUyAocCkubGFzdCA+IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIGN0 CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklO RSBBIEFTIChwKS5wcmV2ID4gMCk7CisKKy0tIE5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGNv bnRhaW4gYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorU0VMRUNUIGlkLCB2YWwKKyAgRlJPTSBudAor ICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodmFsLCBGSVJTVCgxKSkgPiAwKQorICBPUkRF UiBCWSBpZDsKKworRFJPUCBTQ0hFTUEgcnByX25hdm5zIENBU0NBREU7CitSRVNFVCBzZWFyY2hf cGF0aDsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLSBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cwogLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0y NDIwLDYgKzI2MDksNjggQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIFBSRVYoRklS U1QoUFJFVih2KSkpID4gMAogKTsKIAorLS0gQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEg cnVuLXRpbWUgY29uc3RhbnQsIG5vdCBhIG5hdmlnYXRpb24gb3BlcmF0aW9uCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1QoMSkpID4gMCk7CitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cg dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1QoMSkgKyAxKSA+IDApOwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQor V0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHYsIE5FWFQoMSwgMCkpID4g MCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBz KHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoRklSU1QodiksIExB U1QoMSkpID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwg RklSU1QodikpID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIE5FWFQo diwgUFJFVih2LCAxKSkgPiAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg UFJFVihGSVJTVCh2LCBMQVNUKDEpKSwgMikgPiAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykg REVGSU5FIEEgQVMgUFJFVih2LCBGSVJTVCgxOjpiaWdpbnQpKSA+IDApOworCistLSBBbiB1bmtu b3duIGxpdGVyYWwgYXJndW1lbnQgcmVzb2x2ZXMgdG8gdGV4dDsgaXQgbXVzdCBzdGlsbCByZWZl cmVuY2UgYSBjb2x1bW4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsNSkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCdm b28nKSA9ICdiYXInKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsNSkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCdm b28nKSk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUp IHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihOVUxMKSBJUyBO VUxMKTsKK1BSRVBBUkUgcnByX25hdmFyZyBBUyBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5F IEEgQVMgUFJFVigkMSkgSVMgTlVMTCk7CisKKy0tIEFuIGludDIgb2Zmc2V0IGlzIGNvZXJjZWQg dG8gaW50OCBsaWtlIGFueSBpbXBsaWNpdCBjYXN0IChzYW1lIGFzIHBsYWluIDApCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCAwOjpzbWFsbGludCkgPSB2KTsKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgcyh2KQorV0lO RE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHYsIDApID0gdik7CisKIC0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0gV2luZG93IERlZHVwbGljYXRpb24gVGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSAKMi41MC4xIChBcHBs ZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0002-drop-unused-includes.txt" Content-Disposition: attachment; filename="nocfbot-0002-drop-unused-includes.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11j31 RnJvbSAyMDI1ZjU0OWVmN2M2NTNiMGUwZTg3ZjI4MmFjOGZhNDZmZWIyZmM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDA4OjE2OjU3ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwMi8xM10g UmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGZyb20gdGhlIHJvdyBwYXR0ZXJuCiByZWNvZ25p dGlvbiBwYXRjaAoKRHJvcCBpbmNsdWRlcyB0aGF0IGFyZSB1bnVzZWQgb3IgY292ZXJlZCBieSBl eGlzdGluZyBmb3J3YXJkIHR5cGVkZWZzOgpjb25kaXRpb25fdmFyaWFibGUuaCwgaHNlYXJjaC5o LCBxdWVyeWVudmlyb25tZW50LmggZnJvbSBleGVjbm9kZXMuaDsKPGxpbWl0cy5oPiBmcm9tIHJw ci5jOyB3aW5kb3dhcGkuaCBmcm9tIGV4ZWNSUFIuaC4gIFN3aXRjaCBycHIuaCBmcm9tCnBhcnNl bm9kZXMuaCB0byBwcmltbm9kZXMuaCwgd2hlcmUgUlBSTmF2RXhwciBpcyBhY3R1YWxseSBkZWZp bmVkLgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIHwgMiAtLQogc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oICAgfCAxIC0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgIHwgMyAtLS0KIHNyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAgICAgIHwgNyAr KysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3Jwci5jCmluZGV4IDE3NTc3N2E4ZmZjLi41MGJjYTU5NDUxZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTM3LDggKzM3LDYgQEAKIAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQogI2luY2x1ZGUgImNhdGFsb2cv cGdfcHJvYy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUlBSLmggYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUlBSLmgKaW5kZXggN2IyYjBmZWJiNzYuLmZiN2RjNjNhNGM2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUlBSLmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY1JQUi5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIEVYRUNSUFJf SAogCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCi0jaW5jbHVkZSAid2luZG93YXBpLmgi CiAKIC8qIE5GQSBjb250ZXh0IG1hbmFnZW1lbnQgKi8KIGV4dGVybiBSUFJORkFDb250ZXh0ICpF eGVjUlBSU3RhcnRDb250ZXh0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKaW5kZXggNzkyYWEzZjBkMDUuLjgwNjBiMDE4ZWY4IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aApAQCAtMzgsOSArMzgsNiBAQAogI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1 ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCi0j aW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKLSNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCi0jaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg InV0aWxzL3JlbHRyaWdnZXIuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcnByLmgKaW5kZXggODAyZDJmMWRkNjkuLmI0Zjg3ZDhjYWE0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5o CkBAIC0xMCwxMSArMTAsMTIgQEAKICAqCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotI2lmbmRl ZiBPUFRJTUlaRVJfUlBSX0gKLSNkZWZpbmUgT1BUSU1JWkVSX1JQUl9ICisjaWZuZGVmIFJQUl9I CisjZGVmaW5lIFJQUl9ICiAKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAibm9kZXMvcGxhbm5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAKIC8q IExpbWl0cyBhbmQgc3BlY2lhbCB2YWx1ZXMgKi8KIC8qCkBAIC05Niw0ICs5Nyw0IEBAIHR5cGVk ZWYgc3RydWN0IE5hdlRyYXZlcnNhbAogCiBleHRlcm4gYm9vbCBuYXZfdHJhdmVyc2FsX3dhbGtl cihOb2RlICpub2RlLCB2b2lkICpjdHgpOwogCi0jZW5kaWYJCQkJCQkJLyogT1BUSU1JWkVSX1JQ Ul9IICovCisjZW5kaWYJCQkJCQkJLyogUlBSX0ggKi8KLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1 NSkKCg== --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0004-dedicated-define-exprcontext.txt" Content-Disposition: attachment; filename="nocfbot-0004-dedicated-define-exprcontext.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11ja3 RnJvbSBhNzBmMWMxZTc1MzQyNWFkY2VjNjAyMWMwN2EwZjVhZjZkYzA5NjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDE1IEp1biAyMDI2IDE2OjU0OjEzICswOTAwClN1YmplY3Q6IFtQQVRDSCAwNC8xM10g VXNlIGEgZGVkaWNhdGVkIEV4cHJDb250ZXh0IGZvciBSUFIgREVGSU5FIGNsYXVzZQogZXZhbHVh dGlvbgoKREVGSU5FIGNsYXVzZXMgd2VyZSBldmFsdWF0ZWQgaW4gdGhlIHBlci1vdXRwdXQtdHVw bGUgY29udGV4dC4gIEJlY2F1c2UKRUVPUF9SUFJfTkFWX1JFU1RPUkUgY29waWVzIHBhc3MtYnkt cmVmZXJlbmNlIG5hdmlnYXRpb24gcmVzdWx0cyBpbnRvIHRoYXQKY29udGV4dCwgcmVzZXR0aW5n IGl0IHBlciByb3cgZnJlZWQgd2luZG93IGZ1bmN0aW9uIHJlc3VsdHMgYmVmb3JlCkV4ZWNQcm9q ZWN0IChhIHVzZS1hZnRlci1mcmVlKSwgd2hpbGUgbm90IHJlc2V0dGluZyBpdCBsZWFrZWQgYWNy b3NzIHRoZQpwYXJ0aXRpb24uICB0bXBjb250ZXh0IGNhbm5vdCBiZSByZXVzZWQgZWl0aGVyLCBh cyBFeGVjUXVhbEFuZFJlc2V0KCkgcmVzZXRzCml0IG1pZC1leHByZXNzaW9uIHdoZW4gTkVYVCBy ZS1lbnRlcnMgc3Bvb2xfdHVwbGVzLiAgVXNlIGEgdGhpcmQgRXhwckNvbnRleHQsCnJlc2V0IG9u Y2UgcGVyIHJvdyBhbmQgc2VwYXJhdGUgZnJvbSBib3RoLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSUFIuYyAgICAgICB8ICA1ICsrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl V2luZG93QWdnLmMgfCAyNSArKysrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGIzMjZh NThiYmY1Li5kZTc4YjA2ZDI3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMTU5MiwxMCAr MTU5MiwxMyBAQCBzdGF0aWMgdm9pZAogbmZhX3JlZXZhbHVhdGVfZGVwZW5kZW50X3ZhcnMoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJCQkJCQkJICBpbnQ2 NCBjdXJyZW50UG9zKQogewotCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHdpbnN0YXRlLT5zcy5w cy5wc19FeHByQ29udGV4dDsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSB3aW5zdGF0ZS0+cnBy Q29udGV4dDsKIAlpbnQ2NAkJc2F2ZWRfbWF0Y2hfc3RhcnQgPSB3aW5zdGF0ZS0+bmF2X21hdGNo X3N0YXJ0OwogCWludDY0CQlzYXZlZF9wb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvczsKIAorCS8q IFJlbGVhc2UgdGhlIHByZXZpb3VzIGV2YWx1YXRpb24ncyBERUZJTkUgZXhwcmVzc2lvbiBtZW1v cnkgKi8KKwlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwogCS8qIFRlbXBvcmFyaWx5IHNl dCBuYXZfbWF0Y2hfc3RhcnQgYW5kIGN1cnJlbnRwb3MgZm9yIEZJUlNUL0xBU1QgKi8KIAl3aW5z dGF0ZS0+bmF2X21hdGNoX3N0YXJ0ID0gY3R4LT5tYXRjaFN0YXJ0Um93OwogCXdpbnN0YXRlLT5j dXJyZW50cG9zID0gY3VycmVudFBvczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpp bmRleCA1YjIzODVmMWQ4ZC4uOTBmMzNiZGVlNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKQEAgLTI3NDIsMTIgKzI3NDIsMjggQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93 QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qCiAJICogQ3JlYXRl IGV4cHJlc3Npb24gY29udGV4dHMuICBXZSBuZWVkIHR3bywgb25lIGZvciBwZXItaW5wdXQtdHVw bGUKLQkgKiBwcm9jZXNzaW5nIGFuZCBvbmUgZm9yIHBlci1vdXRwdXQtdHVwbGUgcHJvY2Vzc2lu Zy4gIFdlIGNoZWF0IGEgbGl0dGxlCi0JICogYnkgdXNpbmcgRXhlY0Fzc2lnbkV4cHJDb250ZXh0 KCkgdG8gYnVpbGQgYm90aC4KKwkgKiBwcm9jZXNzaW5nIGFuZCBvbmUgZm9yIHBlci1vdXRwdXQt dHVwbGUgcHJvY2Vzc2luZywgcGx1cyBhbiBvcHRpb25hbAorCSAqIHRoaXJkIGZvciByb3cgcGF0 dGVybiByZWNvZ25pdGlvbiBERUZJTkUgZXZhbHVhdGlvbiAoYnVpbHQganVzdCBiZWxvdworCSAq IHdoZW4gYSBERUZJTkUgY2xhdXNlIGlzIHByZXNlbnQpLiAgV2UgY2hlYXQgYSBsaXR0bGUgYnkg dXNpbmcKKwkgKiBFeGVjQXNzaWduRXhwckNvbnRleHQoKSB0byBidWlsZCB0aGVtIGFsbC4gIEVh Y2ggY2FsbCBvdmVyd3JpdGVzCisJICogcHNfRXhwckNvbnRleHQsIHNvIHRoZSBsYXN0IGNhbGwg bXVzdCBlc3RhYmxpc2ggdGhlIG91dHB1dCBjb250ZXh0LgogCSAqLwogCUV4ZWNBc3NpZ25FeHBy Q29udGV4dChlc3RhdGUsICZ3aW5zdGF0ZS0+c3MucHMpOwogCXRtcGNvbnRleHQgPSB3aW5zdGF0 ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CiAJd2luc3RhdGUtPnRtcGNvbnRleHQgPSB0bXBjb250 ZXh0OworCisJLyoKKwkgKiBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBldmFsdWF0ZXMgREVGSU5F IGNsYXVzZXMgaW4gYSB0aGlyZCBjb250ZXh0LAorCSAqIHJlc2V0IGJlZm9yZSBlYWNoIERFRklO RSBldmFsdWF0aW9uIHBhc3MuICBJdCBtdXN0IGJlIGRpc3RpbmN0IGZyb20KKwkgKiB0bXBjb250 ZXh0IGFuZCBwc19FeHByQ29udGV4dCBzbyBpdHMgcmVzZXQgZnJlZXMgbmVpdGhlciBpbnB1dCBu b3IKKwkgKiBvdXRwdXQgdHVwbGUgbWVtb3J5LgorCSAqLworCWlmIChub2RlLT5kZWZpbmVDbGF1 c2UgIT0gTklMKQorCXsKKwkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJndpbnN0YXRl LT5zcy5wcyk7CisJCXdpbnN0YXRlLT5ycHJDb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4 cHJDb250ZXh0OworCX0KKwogCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZ3aW5zdGF0 ZS0+c3MucHMpOwogCiAJLyogQ3JlYXRlIGxvbmctbGl2ZWQgY29udGV4dCBmb3Igc3RvcmFnZSBv ZiBwYXJ0aXRpb24tbG9jYWwgbWVtb3J5IGV0YyAqLwpAQCAtNDU3MiwxMiArNDU4OCwxNSBAQCBz dGF0aWMgYm9vbAogbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBw b3MsIGJvb2wgKnZhck1hdGNoZWQpCiB7CiAJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lu b2JqLT53aW5zdGF0ZTsKLQlFeHByQ29udGV4dCAqZWNvbnRleHQgPSB3aW5zdGF0ZS0+c3MucHMu cHNfRXhwckNvbnRleHQ7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnJwckNv bnRleHQ7CiAJaW50CQkJbnVtRGVmaW5lVmFycyA9IGxpc3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZp bmVWYXJpYWJsZUxpc3QpOwogCWludAkJCXZhcklkeCA9IDA7CiAJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CiAJaW50NjQJCXNhdmVkX3BvczsKIAorCS8qIFJlbGVhc2UgdGhlIHByZXZpb3VzIHJvdydz IERFRklORSBldmFsdWF0aW9uIG1lbW9yeSAqLworCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQp OworCiAJLyogRmV0Y2ggY3VycmVudCByb3cgaW50byB0ZW1wX3Nsb3RfMSAqLwogCXNsb3QgPSB3 aW5zdGF0ZS0+dGVtcF9zbG90XzE7CiAJaWYgKCF3aW5kb3dfZ2V0dHVwbGVzbG90KHdpbm9iaiwg cG9zLCBzbG90KSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggODA2MGIwMThlZjguLjViNGFjOGE2 YzMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjY5OCw2ICsyNjk4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgV2luZG93QWdnU3RhdGUKIAlNZW1vcnlDb250ZXh0IGFnZ2NvbnRleHQ7CS8qIHNoYXJl ZCBjb250ZXh0IGZvciBhZ2dyZWdhdGUgd29ya2luZyBkYXRhICovCiAJTWVtb3J5Q29udGV4dCBj dXJhZ2djb250ZXh0OwkvKiBjdXJyZW50IGFnZ3JlZ2F0ZSdzIHdvcmtpbmcgZGF0YSAqLwogCUV4 cHJDb250ZXh0ICp0bXBjb250ZXh0OwkvKiBzaG9ydC10ZXJtIGV2YWx1YXRpb24gY29udGV4dCAq LworCUV4cHJDb250ZXh0ICpycHJDb250ZXh0OwkvKiBERUZJTkUgY2xhdXNlIGV2YWx1YXRpb24g Y29udGV4dCAqLwogCiAJYm9vbAkJYWxsX2ZpcnN0OwkJLyogdHJ1ZSBpZiB0aGUgc2NhbiBpcyBz dGFydGluZyAqLwogCWJvb2wJCXBhcnRpdGlvbl9zcG9vbGVkOwkvKiB0cnVlIGlmIGFsbCB0dXBs ZXMgaW4gY3VycmVudCBwYXJ0aXRpb24KLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-match-once-per-row.txt" Content-Disposition: attachment; filename="nocfbot-0005-match-once-per-row.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jd4 RnJvbSAwZWQyODVkYzUxMDE2ZTI3MzY5NGU5NzI0ZTU4ODQ5M2VlMjQzNTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDE2IEp1biAyMDI2IDEzOjAyOjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwNS8xM10g RHJpdmUgUlBSIHJvdyBwYXR0ZXJuIG1hdGNoaW5nIG9uY2UgcGVyIHJvdwoKUm93IHBhdHRlcm4g bWF0Y2hpbmcgb25seSBhZHZhbmNlZCB3aGVuIGEgd2luZG93IGZ1bmN0aW9uIHJlYWQgdGhlIGZy YW1lLApzbyBhIHJvdyB3aG9zZSBvbmx5IHdpbmRvdyBmdW5jdGlvbiBza2lwcyB0aGUgZnJhbWUg KGUuZy4gbnRoX3ZhbHVlKCkgd2l0aAphIE5VTEwgb2Zmc2V0KSBsZWZ0IHRoZSBtYXRjaCBzdGF0 ZSBiZWhpbmQgdGhlIGN1cnJlbnQgcm93LCBwcm9kdWNpbmcKc2lsZW50bHkgd3JvbmcgcmVzdWx0 cyBhbmQgYSBzcHVyaW91cyAiY2Fubm90IGZldGNoIHJvdyBiZWZvcmUgbWFyawpwb3NpdGlvbiIg ZXJyb3IuCgpBZHZhbmNlIHRoZSBtYXRjaCBvbmNlIHBlciByb3csIGJlZm9yZSB0aGUgd2luZG93 IGZ1bmN0aW9ucyBydW4sIHNvIGl0CnRyYWNrcyB0aGUgcm93IHNjYW4gcmF0aGVyIHRoYW4gZnJh bWUgYWNjZXNzLiAgRXh0cmFjdCB0aGUgcmVkdWNlZC1mcmFtZQpsb29wIGludG8gYWR2YW5jZV9y ZWR1Y2VkX2ZyYW1lX25mYSgpIGFuZCB0aGUgbWFyayBhZHZhbmNlIGludG8KYWR2YW5jZV9uYXZf bWFyaygpLCBhZHZhbmNpbmcgdGhlIG5hdmlnYXRpb24gbWFyayBmcm9tIHRoZSBmcm9udGllciB0 aGUKbWF0Y2ggcmVhY2hlZCByYXRoZXIgdGhhbiBmcm9tIHRoZSBvdXRwdXQgcm93LCBzbyB0dXBs ZXN0b3JlX3RyaW0oKSBmcmVlcwpyb3dzIHNvb25lci4KCkFkZCByZWdyZXNzaW9uIGNvdmVyYWdl IGZvciB0aGUgZnJhbWUtc2tpcHBpbmcgYW5kIFBSRVYtb25seSBkZWZlcnJlZC1mcmFtZQpjYXNl cywgYW5kIGFzc2VydCB0aGUgY29udGV4dHMnIG5vbmRlY3JlYXNpbmcgbWF0Y2hTdGFydFJvdyBv cmRlcmluZy4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDI1NCArKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICB8 IDE0OSArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAg ICAgfCAgNzUgKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMzg1IGluc2VydGlvbnMoKyksIDEw MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBS LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKaW5kZXggZGU3OGIwNmQyNzcuLmNl YTdlMGIyOTczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCkBAIC0xNjY2LDcgKzE2NjYsMTMgQEAg RXhlY1JQUlN0YXJ0Q29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHN0YXJ0 UG9zKQogCQljdHgtPnN0YXRlcy0+aXNBYnNvcmJhYmxlID0gZmFsc2U7CiAJfQogCi0JLyogQWRk IHRvIHRhaWwgb2YgYWN0aXZlIGNvbnRleHQgbGlzdCAoZG91Ymx5LWxpbmtlZCwgb2xkZXN0LWZp cnN0KSAqLworCS8qCisJICogQWRkIHRvIHRhaWwgb2YgYWN0aXZlIGNvbnRleHQgbGlzdCAoZG91 Ymx5LWxpbmtlZCwgb2xkZXN0LWZpcnN0KS4KKwkgKiBtYXRjaFN0YXJ0Um93IGlzIG5vbmRlY3Jl YXNpbmcgYWxvbmcgdGhlIGxpc3QsIHNvIHRoZSBoZWFkIGhvbGRzIHRoZQorCSAqIHNtYWxsZXN0 IC0tIGFuIG9yZGVyaW5nIG90aGVyIGNvZGUgcmVsaWVzIG9uLgorCSAqLworCUFzc2VydCh3aW5z dGF0ZS0+bmZhQ29udGV4dFRhaWwgPT0gTlVMTCB8fAorCQkgICBzdGFydFBvcyA+PSB3aW5zdGF0 ZS0+bmZhQ29udGV4dFRhaWwtPm1hdGNoU3RhcnRSb3cpOwogCWN0eC0+cHJldiA9IHdpbnN0YXRl LT5uZmFDb250ZXh0VGFpbDsKIAljdHgtPm5leHQgPSBOVUxMOwogCWlmICh3aW5zdGF0ZS0+bmZh Q29udGV4dFRhaWwgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRl eCA5MGYzM2JkZWU0MC4uMmQ5NzcxMGRhOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKQEAgLTIzOSw2ICsyMzksMTAgQEAgc3RhdGljIGludDY0IHJvd19pc19pbl9yZWR1Y2Vk X2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcyk7CiAKIHN0YXRpYyB2b2lkIGNs ZWFyX3JlZHVjZWRfZnJhbWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKIHN0YXRpYyBpbnQJ Z2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQg cG9zKTsKK3N0YXRpYyB2b2lkIGFkdmFuY2VfbmF2X21hcmsoV2luZG93QWdnU3RhdGUgKndpbnN0 YXRlLCBpbnQ2NCBjdXJyZW50UG9zKTsKK3N0YXRpYyB2b2lkIGFkdmFuY2VfcmVkdWNlZF9mcmFt ZV9uZmEoV2luZG93T2JqZWN0IHdpbm9iaiwKKwkJCQkJCQkJCSAgUlBSTkZBQ29udGV4dCAqdGFy Z2V0Q3R4LCBpbnQ2NCBwb3MsCisJCQkJCQkJCQkgIGJvb2wgaGFzTGltaXRlZEZyYW1lLCBpbnQ2 NCBmcmFtZU9mZnNldCk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dP YmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIE5G QSByb3cgZXZhbHVhdGlvbiAqLwpAQCAtMjUyMSw2ICsyNTI1LDE2IEBAIEV4ZWNXaW5kb3dBZ2co UGxhblN0YXRlICpwc3RhdGUpCiAJCQl7CiAJCQkJaWYgKHdpbnN0YXRlLT5ycFNraXBUbyA9PSBT VF9ORVhUX1JPVykKIAkJCQkJY2xlYXJfcmVkdWNlZF9mcmFtZSh3aW5zdGF0ZSk7CisKKwkJCQkv KgorCQkJCSAqIERyaXZlIHRoZSByb3cgcGF0dGVybiBtYXRjaCBldmVyeSByb3csIHNvIGl0IHRy YWNrcyB0aGUgcm93CisJCQkJICogc2NhbiByYXRoZXIgdGhhbiBmcmFtZSBhY2Nlc3M6IGEgd2lu ZG93IGZ1bmN0aW9uIHRoYXQgc2tpcHMKKwkJCQkgKiB0aGUgZnJhbWUgKGUuZy4gbnRoX3ZhbHVl KCkgd2l0aCBhIE5VTEwgb2Zmc2V0KSBtdXN0IG5vdAorCQkJCSAqIGxlYXZlIHRoZSBtYXRjaCBz dGF0ZSBiZWhpbmQgY3VycmVudHBvcy4KKwkJCQkgKi8KKwkJCQlBc3NlcnQod2luc3RhdGUtPm5h dl93aW5vYmogIT0gTlVMTCk7CisJCQkJKHZvaWQpIHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKHdp bnN0YXRlLT5uYXZfd2lub2JqLAorCQkJCQkJCQkJCQkgICB3aW5zdGF0ZS0+Y3VycmVudHBvcyk7 CiAJCQl9CiAKIAkJCS8qCkBAIC0yNTYyLDQzICsyNTc2LDYgQEAgRXhlY1dpbmRvd0FnZyhQbGFu U3RhdGUgKnBzdGF0ZSkKIAkJaWYgKHdpbnN0YXRlLT5ncm91cHRhaWxfcHRyID49IDApCiAJCQl1 cGRhdGVfZ3JvdXB0YWlscG9zKHdpbnN0YXRlKTsKIAotCQkvKgotCQkgKiBBZHZhbmNlIFJQUiBu YXZpZ2F0aW9uIG1hcmsgcG9pbnRlciBpZiBwb3NzaWJsZSwgc28gdGhhdAotCQkgKiB0dXBsZXN0 b3JlX3RyaW0oKSBjYW4gZnJlZSByb3dzIG5vIGxvbmdlciByZWFjaGFibGUgYnkgbmF2aWdhdGlv bi4KLQkJICovCi0JCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaiAmJgotCQkJd2luc3RhdGUtPnJw UGF0dGVybiAhPSBOVUxMICYmCi0JCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9PSBSUFJf TkFWX09GRlNFVF9GSVhFRCkKLQkJewotCQkJaW50NjQJCW5hdm1hcmtwb3M7Ci0KLQkJCS8qIEJh Y2t3YXJkIHJlYWNoIGZyb20gUFJFVi9MQVNUL2NvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1Qg Ki8KLQkJCWlmICh3aW5zdGF0ZS0+Y3VycmVudHBvcyA+IHdpbnN0YXRlLT5uYXZNYXhPZmZzZXQp Ci0JCQkJbmF2bWFya3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zIC0gd2luc3RhdGUtPm5hdk1h eE9mZnNldDsKLQkJCWVsc2UKLQkJCQluYXZtYXJrcG9zID0gMDsKLQotCQkJLyoKLQkJCSAqIElm IEZJUlNUIGlzIHVzZWQsIGFsc28gY29uc2lkZXIgbWF0Y2hfc3RhcnQgKyBuYXZGaXJzdE9mZnNl dC4KLQkJCSAqIFRoZSBvbGRlc3QgYWN0aXZlIGNvbnRleHQgKG5mYUNvbnRleHQpIGhhcyB0aGUg c21hbGxlc3QKLQkJCSAqIG1hdGNoU3RhcnRSb3cuCi0JCQkgKi8KLQkJCWlmICh3aW5zdGF0ZS0+ aGFzRmlyc3ROYXYgJiYKLQkJCQl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5kID09IFJQUl9O QVZfT0ZGU0VUX0ZJWEVEICYmCi0JCQkJd2luc3RhdGUtPm5mYUNvbnRleHQgIT0gTlVMTCkKLQkJ CXsKLQkJCQlpbnQ2NAkJZmlyc3RyZWFjaDsKLQotCQkJCWlmICghcGdfYWRkX3M2NF9vdmVyZmxv dyh3aW5zdGF0ZS0+bmZhQ29udGV4dC0+bWF0Y2hTdGFydFJvdywKLQkJCQkJCQkJCQkgd2luc3Rh dGUtPm5hdkZpcnN0T2Zmc2V0LAotCQkJCQkJCQkJCSAmZmlyc3RyZWFjaCkpCi0JCQkJCW5hdm1h cmtwb3MgPSBNaW4obmF2bWFya3BvcywgTWF4KGZpcnN0cmVhY2gsIDApKTsKLQkJCX0KLQotCQkJ aWYgKG5hdm1hcmtwb3MgPiB3aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcykKLQkJCQlXaW5T ZXRNYXJrUG9zaXRpb24od2luc3RhdGUtPm5hdl93aW5vYmosIG5hdm1hcmtwb3MpOwotCQl9Ci0K IAkJLyoKIAkJICogVHJ1bmNhdGUgYW55IG5vLWxvbmdlci1uZWVkZWQgcm93cyBmcm9tIHRoZSB0 dXBsZXN0b3JlLgogCQkgKi8KQEAgLTQzODIsNiArNDM1OSwxNDMgQEAgZ2V0X3JlZHVjZWRfZnJh bWVfc3RhdHVzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKQogCXJldHVybiBS Rl9TS0lQUEVEOwogfQogCisvKgorICogYWR2YW5jZV9uYXZfbWFyaworICoJCUFkdmFuY2UgdGhl IFJQUiBuYXZpZ2F0aW9uIG1hcmssIGRlcml2ZWQgZnJvbSB0aGUgTkZBIGZyb250aWVyCisgKgkJ KGN1cnJlbnRQb3MpIGJ1dCBoZWxkIGJhY2sgYnkgdGhlIG5hdmlnYXRpb24ncyBiYWNrd2FyZCBy ZWFjaCwgc28KKyAqCQl0dXBsZXN0b3JlX3RyaW0oKSBjYW4gZnJlZSByb3dzIG5vIGxvbmdlciBy ZWFjaGFibGUgYnkgbmF2aWdhdGlvbi4KKyAqCisgKiBUaGUgbmF2IHJlYWQgcG9pbnRlciBpcyBp bmRlcGVuZGVudCBvZiB0aGUgYWdncmVnYXRlIGFuZCBwZXItZnVuY3Rpb24gcmVhZAorICogcG9p bnRlcnMsIHNvIG1vdmluZyBpdHMgbWFyayBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgZmV0Y2hlczsg aXQgb25seSBib3VuZHMKKyAqIHRoZSBERUZJTkUgY2xhdXNlJ3Mgb3duIFBSRVYvTEFTVC9GSVJT VCBsb29rdXBzLiAgQmFja3dhcmQgcmVhY2ggKFBSRVYvTEFTVCkKKyAqIGlzIG1lYXN1cmVkIGZy b20gdGhlIGZyb250aWVyLiAgRklSU1QgcmVhY2hlcyBiYWNrIGZyb20gdGhlIGhlYWQgY29udGV4 dCdzCisgKiBtYXRjaFN0YXJ0Um93IGluc3RlYWQsIHNvIGl0IGlzIGJvdW5kZWQgc2VwYXJhdGVs eTsgd2l0aG91dCBGSVJTVCB0aGUgbWFyaworICogY2FuIGZvbGxvdyB0aGUgZnJvbnRpZXIgZnJl ZWx5LgorICovCitzdGF0aWMgdm9pZAorYWR2YW5jZV9uYXZfbWFyayhXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIGludDY0IGN1cnJlbnRQb3MpCit7CisJaW50NjQJCW5hdm1hcmtwb3M7CisKKwkv KiBObyBSUFIgbmF2aWdhdGlvbiByZWFkIHBvaW50ZXI6IG5vdGhpbmcgdG8gYWR2YW5jZSAqLwor CWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaiA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBSRVRB SU5fQUxMIGRpc2FibGVzIHRyaW0gZm9yIHRoZSBiYWNrd2FyZCAoUFJFVi9MQVNUKSBkaW1lbnNp b24gKi8KKwlpZiAod2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRf UkVUQUlOX0FMTCkKKwkJcmV0dXJuOworCisJLyogbmF2TWF4IGlzIEZJWEVEIGhlcmU6IE5FRURT X0VWQUwgcmVzb2x2ZWQsIFJFVEFJTl9BTEwgcmV0dXJuZWQgKi8KKwlBc3NlcnQod2luc3RhdGUt Pm5hdk1heE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfRklYRUQpOworCisJaWYgKGN1cnJl bnRQb3MgPiB3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0KQorCQluYXZtYXJrcG9zID0gY3VycmVudFBv cyAtIHdpbnN0YXRlLT5uYXZNYXhPZmZzZXQ7CisJZWxzZQorCQluYXZtYXJrcG9zID0gMDsKKwor CWlmICh3aW5zdGF0ZS0+aGFzRmlyc3ROYXYgJiYgd2luc3RhdGUtPm5mYUNvbnRleHQgIT0gTlVM TCkKKwl7CisJCWludDY0CQlmaXJzdHJlYWNoOworCisJCS8qIG5hdkZpcnN0IGlzIGFsd2F5cyBG SVhFRDsgaXQgbmV2ZXIgdGFrZXMgUkVUQUlOX0FMTCAqLworCQlBc3NlcnQod2luc3RhdGUtPm5h dkZpcnN0T2Zmc2V0S2luZCA9PSBSUFJfTkFWX09GRlNFVF9GSVhFRCk7CisKKwkJLyoKKwkJICog SGVhZCBjb250ZXh0IGhhcyB0aGUgc21hbGxlc3QgbWF0Y2hTdGFydFJvdyAoY29udGV4dHMgYXBw ZW5kZWQgaW4KKwkJICogbm9uZGVjcmVhc2luZyBvcmRlciksIHNvIGJvdW5kaW5nIGJ5IGl0IGNv dmVycyBldmVyeSBGSVJTVCByZWFjaC4KKwkJICovCisJCWlmICghcGdfYWRkX3M2NF9vdmVyZmxv dyh3aW5zdGF0ZS0+bmZhQ29udGV4dC0+bWF0Y2hTdGFydFJvdywKKwkJCQkJCQkJIHdpbnN0YXRl LT5uYXZGaXJzdE9mZnNldCwKKwkJCQkJCQkJICZmaXJzdHJlYWNoKSkKKwkJCW5hdm1hcmtwb3Mg PSBNaW4obmF2bWFya3BvcywgTWF4KGZpcnN0cmVhY2gsIDApKTsKKwl9CisKKwlpZiAobmF2bWFy a3BvcyA+IHdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcG9zKQorCQlXaW5TZXRNYXJrUG9zaXRp b24od2luc3RhdGUtPm5hdl93aW5vYmosIG5hdm1hcmtwb3MpOworfQorCisvKgorICogYWR2YW5j ZV9yZWR1Y2VkX2ZyYW1lX25mYQorICoJCURyaXZlIHRoZSBORkEgZm9yd2FyZCB1bnRpbCB0YXJn ZXRDdHggY29tcGxldGVzIG9yIHRoZSBwYXJ0aXRpb24gZW5kcy4KKyAqCisgKiBUaGlzIGlzIHRo ZSBtYXRjaCBkcml2ZXIsIGV4dHJhY3RlZCBmcm9tIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lKCksIHdo aWNoIGNhbGxzCisgKiBpdCB0byBhZHZhbmNlIHRoZSBtYXRjaCBhbmQgdGhlbiByZWNvcmRzIHRo ZSByZXNvbHZlZCByZXN1bHQuICBSb3cKKyAqIGV2YWx1YXRpb25zIGFyZSBzaGFyZWQgYWNyb3Nz IGFsbCBhY3RpdmUgY29udGV4dHMuCisgKi8KK3N0YXRpYyB2b2lkCithZHZhbmNlX3JlZHVjZWRf ZnJhbWVfbmZhKFdpbmRvd09iamVjdCB3aW5vYmosIFJQUk5GQUNvbnRleHQgKnRhcmdldEN0eCwK KwkJCQkJCSAgaW50NjQgcG9zLCBib29sIGhhc0xpbWl0ZWRGcmFtZSwgaW50NjQgZnJhbWVPZmZz ZXQpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKKwlp bnQ2NAkJY3VycmVudFBvczsKKwlpbnQ2NAkJc3RhcnRQb3M7CisKKwkvKgorCSAqIERldGVybWlu ZSB3aGVyZSB0byBzdGFydCBwcm9jZXNzaW5nLiBVc3VhbGx5IG5mYUxhc3RQcm9jZXNzZWRSb3cr MSA+PQorCSAqIHBvcyBzaW5jZSBjb250ZXh0cyBhcmUgY3JlYXRlZCBhdCBjdXJyZW50UG9zKzEg ZHVyaW5nIHByb2Nlc3NpbmcuCisJICogSG93ZXZlciwgcG9zIGNhbiBleGNlZWQgdGhpcyB3aGVu IHJvd3MgYXJlIHNraXBwZWQgKGUuZy4sIHVubWF0Y2hlZAorCSAqIHJvd3MgZG9uJ3QgdXBkYXRl IG5mYUxhc3RQcm9jZXNzZWRSb3cpLgorCSAqLworCXN0YXJ0UG9zID0gTWF4KHBvcywgd2luc3Rh dGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgKyAxKTsKKworCS8qCisJICogUHJvY2VzcyByb3dzIHVu dGlsIHRhcmdldCBjb250ZXh0IGNvbXBsZXRlcyBvciB3ZSBoaXQgYm91bmRhcmllcy4gRWFjaAor CSAqIHJvdyBldmFsdWF0aW9uIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIGFjdGl2ZSBjb250ZXh0cy4K KwkgKi8KKwlmb3IgKGN1cnJlbnRQb3MgPSBzdGFydFBvczsgdGFyZ2V0Q3R4LT5zdGF0ZXMgIT0g TlVMTDsgY3VycmVudFBvcysrKQorCXsKKwkJYm9vbAkJcm93RXhpc3RzOworCisJCS8qCisJCSAq IEV2YWx1YXRlIHZhcmlhYmxlcyBmb3IgdGhpcyByb3cgLSBkb25lIG9ubHkgb25jZSwgc2hhcmVk IGJ5IGFsbAorCQkgKiBjb250ZXh0cy4KKwkJICoKKwkJICogU2V0IG5hdl9tYXRjaF9zdGFydCB0 byB0aGUgaGVhZCBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdyBmb3IKKwkJICogRklSU1QvTEFTVCBu YXZpZ2F0aW9uLiAgTWF0Y2hfc3RhcnQtZGVwZW5kZW50IHZhcmlhYmxlcyAoRklSU1QsCisJCSAq IExBU1Qtd2l0aC1vZmZzZXQpIGFyZSByZS1ldmFsdWF0ZWQgcGVyLWNvbnRleHQgaW4gRXhlY1JQ UlByb2Nlc3NSb3cKKwkJICogd2hlbiBtYXRjaFN0YXJ0Um93IGRpZmZlcnMuCisJCSAqLworCQl3 aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0ID0gdGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93OworCQly b3dFeGlzdHMgPSBuZmFfZXZhbHVhdGVfcm93KHdpbm9iaiwgY3VycmVudFBvcywgd2luc3RhdGUt Pm5mYVZhck1hdGNoZWQpOworCisJCS8qIE5vIG1vcmUgcm93cyBpbiBwYXJ0aXRpb24/IEZpbmFs aXplIGFsbCBjb250ZXh0cyAqLworCQlpZiAoIXJvd0V4aXN0cykKKwkJeworCQkJRXhlY1JQUkZp bmFsaXplQWxsQ29udGV4dHMod2luc3RhdGUsIGN1cnJlbnRQb3MgLSAxKTsKKwkJCS8qIENsZWFu IHVwIGRlYWQgY29udGV4dHMgZnJvbSBmaW5hbGl6YXRpb24gKi8KKwkJCUV4ZWNSUFJDbGVhbnVw RGVhZENvbnRleHRzKHdpbnN0YXRlLCB0YXJnZXRDdHgpOworCQkJYnJlYWs7CisJCX0KKworCQkv KiBVcGRhdGUgbGFzdCBwcm9jZXNzZWQgcm93ICovCisJCXdpbnN0YXRlLT5uZmFMYXN0UHJvY2Vz c2VkUm93ID0gY3VycmVudFBvczsKKworCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJ CSAqIFByb2Nlc3MgYWxsIGNvbnRleHRzIGZvciB0aGlzIHJvdzoKKwkJICogICAxLiBNYXRjaCBh bGwgKGNvbnZlcmdlbmNlKQorCQkgKiAgIDIuIEFic29yYiByZWR1bmRhbnQKKwkJICogICAzLiBB ZHZhbmNlIGFsbCAoZGl2ZXJnZW5jZSkKKwkJICovCisJCUV4ZWNSUFJQcm9jZXNzUm93KHdpbnN0 YXRlLCBjdXJyZW50UG9zLCBoYXNMaW1pdGVkRnJhbWUsIGZyYW1lT2Zmc2V0KTsKKworCQkvKgor CQkgKiBDcmVhdGUgYSBuZXcgY29udGV4dCBmb3IgdGhlIG5leHQgcG90ZW50aWFsIHN0YXJ0IHBv c2l0aW9uLiBUaGlzCisJCSAqIGVuYWJsZXMgb3ZlcmxhcHBpbmcgbWF0Y2ggZGV0ZWN0aW9uIGZv ciBTS0lQIFRPIE5FWFQgUk9XLgorCQkgKi8KKwkJRXhlY1JQUlN0YXJ0Q29udGV4dCh3aW5zdGF0 ZSwgY3VycmVudFBvcyArIDEpOworCisJCS8qCisJCSAqIENsZWFuIHVwIGRlYWQgY29udGV4dHMg KGZhaWxlZCB3aXRoIG5vIGFjdGl2ZSBzdGF0ZXMgYW5kIG5vIG1hdGNoKS4KKwkJICogVGhpcyBy ZW1vdmVzIGNvbnRleHRzIHRoYXQgZmFpbGVkIGR1cmluZyBwcm9jZXNzaW5nIGFuZCBjb3VudHMg dGhlbQorCQkgKiBhcHByb3ByaWF0ZWx5IGFzIHBydW5lZCBvciBtaXNtYXRjaGVkLgorCQkgKi8K KwkJRXhlY1JQUkNsZWFudXBEZWFkQ29udGV4dHMod2luc3RhdGUsIHRhcmdldEN0eCk7CisKKwkJ LyogQWR2YW5jZSB0aGUgbmF2IG1hcmsgdG8gdGhlIGZyb250aWVyIHNvIHRyaW0gY2FuIGZyZWUg b2xkIHJvd3MuICovCisJCWFkdmFuY2VfbmF2X21hcmsod2luc3RhdGUsIGN1cnJlbnRQb3MpOwor CX0KK30KKwogLyoKICAqIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lCiAgKgkJVXBkYXRlIHJlZHVjZWQg ZnJhbWUgaW5mbyB1c2luZyBtdWx0aS1jb250ZXh0IE5GQSBwYXR0ZXJuIG1hdGNoaW5nLgpAQCAt NDQwMSw4ICs0NTE1LDYgQEAgdXBkYXRlX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9i aiwgaW50NjQgcG9zKQogewogCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9iai0+d2lu c3RhdGU7CiAJUlBSTkZBQ29udGV4dCAqdGFyZ2V0Q3R4OwotCWludDY0CQljdXJyZW50UG9zOwot CWludDY0CQlzdGFydFBvczsKIAlpbnQJCQlmcmFtZU9wdGlvbnMgPSB3aW5zdGF0ZS0+ZnJhbWVP cHRpb25zOwogCWJvb2wJCWhhc0xpbWl0ZWRGcmFtZTsKIAlpbnQ2NAkJZnJhbWVPZmZzZXQgPSAw OwpAQCAtNDQ2OCw2NyArNDU4MCw5IEBAIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVj dCB3aW5vYmosIGludDY0IHBvcykKIAkJZ290byByZWdpc3Rlcl9yZXN1bHQ7CiAJfQogCi0JLyoK LQkgKiBEZXRlcm1pbmUgd2hlcmUgdG8gc3RhcnQgcHJvY2Vzc2luZy4gVXN1YWxseSBuZmFMYXN0 UHJvY2Vzc2VkUm93KzEgPj0KLQkgKiBwb3Mgc2luY2UgY29udGV4dHMgYXJlIGNyZWF0ZWQgYXQg Y3VycmVudFBvcysxIGR1cmluZyBwcm9jZXNzaW5nLgotCSAqIEhvd2V2ZXIsIHBvcyBjYW4gZXhj ZWVkIHRoaXMgd2hlbiByb3dzIGFyZSBza2lwcGVkIChlLmcuLCB1bm1hdGNoZWQKLQkgKiByb3dz IGRvbid0IHVwZGF0ZSBuZmFMYXN0UHJvY2Vzc2VkUm93KS4KLQkgKi8KLQlzdGFydFBvcyA9IE1h eChwb3MsIHdpbnN0YXRlLT5uZmFMYXN0UHJvY2Vzc2VkUm93ICsgMSk7Ci0KLQkvKgotCSAqIFBy b2Nlc3Mgcm93cyB1bnRpbCB0YXJnZXQgY29udGV4dCBjb21wbGV0ZXMgb3Igd2UgaGl0IGJvdW5k YXJpZXMuIEVhY2gKLQkgKiByb3cgZXZhbHVhdGlvbiBpcyBzaGFyZWQgYWNyb3NzIGFsbCBhY3Rp dmUgY29udGV4dHMuCi0JICovCi0JZm9yIChjdXJyZW50UG9zID0gc3RhcnRQb3M7IHRhcmdldEN0 eC0+c3RhdGVzICE9IE5VTEw7IGN1cnJlbnRQb3MrKykKLQl7Ci0JCWJvb2wJCXJvd0V4aXN0czsK LQotCQkvKgotCQkgKiBFdmFsdWF0ZSB2YXJpYWJsZXMgZm9yIHRoaXMgcm93IC0gZG9uZSBvbmx5 IG9uY2UsIHNoYXJlZCBieSBhbGwKLQkJICogY29udGV4dHMuCi0JCSAqCi0JCSAqIFNldCBuYXZf bWF0Y2hfc3RhcnQgdG8gdGhlIGhlYWQgY29udGV4dCdzIG1hdGNoU3RhcnRSb3cgZm9yCi0JCSAq IEZJUlNUL0xBU1QgbmF2aWdhdGlvbi4gIE1hdGNoX3N0YXJ0LWRlcGVuZGVudCB2YXJpYWJsZXMg KEZJUlNULAotCQkgKiBMQVNULXdpdGgtb2Zmc2V0KSBhcmUgcmUtZXZhbHVhdGVkIHBlci1jb250 ZXh0IGluIEV4ZWNSUFJQcm9jZXNzUm93Ci0JCSAqIHdoZW4gbWF0Y2hTdGFydFJvdyBkaWZmZXJz LgotCQkgKi8KLQkJd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCA9IHRhcmdldEN0eC0+bWF0Y2hT dGFydFJvdzsKLQkJcm93RXhpc3RzID0gbmZhX2V2YWx1YXRlX3Jvdyh3aW5vYmosIGN1cnJlbnRQ b3MsIHdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkKTsKLQotCQkvKiBObyBtb3JlIHJvd3MgaW4gcGFy dGl0aW9uPyBGaW5hbGl6ZSBhbGwgY29udGV4dHMgKi8KLQkJaWYgKCFyb3dFeGlzdHMpCi0JCXsK LQkJCUV4ZWNSUFJGaW5hbGl6ZUFsbENvbnRleHRzKHdpbnN0YXRlLCBjdXJyZW50UG9zIC0gMSk7 Ci0JCQkvKiBDbGVhbiB1cCBkZWFkIGNvbnRleHRzIGZyb20gZmluYWxpemF0aW9uICovCi0JCQlF eGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cyh3aW5zdGF0ZSwgdGFyZ2V0Q3R4KTsKLQkJCWJyZWFr OwotCQl9Ci0KLQkJLyogVXBkYXRlIGxhc3QgcHJvY2Vzc2VkIHJvdyAqLwotCQl3aW5zdGF0ZS0+ bmZhTGFzdFByb2Nlc3NlZFJvdyA9IGN1cnJlbnRQb3M7Ci0KLQkJLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotCQkgKiBQcm9jZXNzIGFsbCBjb250ZXh0cyBmb3IgdGhpcyByb3c6Ci0JCSAq ICAgMS4gTWF0Y2ggYWxsIChjb252ZXJnZW5jZSkKLQkJICogICAyLiBBYnNvcmIgcmVkdW5kYW50 Ci0JCSAqICAgMy4gQWR2YW5jZSBhbGwgKGRpdmVyZ2VuY2UpCi0JCSAqLwotCQlFeGVjUlBSUHJv Y2Vzc1Jvdyh3aW5zdGF0ZSwgY3VycmVudFBvcywgaGFzTGltaXRlZEZyYW1lLCBmcmFtZU9mZnNl dCk7Ci0KLQkJLyoKLQkJICogQ3JlYXRlIGEgbmV3IGNvbnRleHQgZm9yIHRoZSBuZXh0IHBvdGVu dGlhbCBzdGFydCBwb3NpdGlvbi4gVGhpcwotCQkgKiBlbmFibGVzIG92ZXJsYXBwaW5nIG1hdGNo IGRldGVjdGlvbiBmb3IgU0tJUCBUTyBORVhUIFJPVy4KLQkJICovCi0JCUV4ZWNSUFJTdGFydENv bnRleHQod2luc3RhdGUsIGN1cnJlbnRQb3MgKyAxKTsKLQotCQkvKgotCQkgKiBDbGVhbiB1cCBk ZWFkIGNvbnRleHRzIChmYWlsZWQgd2l0aCBubyBhY3RpdmUgc3RhdGVzIGFuZCBubyBtYXRjaCku Ci0JCSAqIFRoaXMgcmVtb3ZlcyBjb250ZXh0cyB0aGF0IGZhaWxlZCBkdXJpbmcgcHJvY2Vzc2lu ZyBhbmQgY291bnRzIHRoZW0KLQkJICogYXBwcm9wcmlhdGVseSBhcyBwcnVuZWQgb3IgbWlzbWF0 Y2hlZC4KLQkJICovCi0JCUV4ZWNSUFJDbGVhbnVwRGVhZENvbnRleHRzKHdpbnN0YXRlLCB0YXJn ZXRDdHgpOwotCX0KKwkvKiBEcml2ZSB0aGUgTkZBIGZvcndhcmQgdW50aWwgcG9zJ3MgbWF0Y2gg aXMgcmVzb2x2ZWQuICovCisJYWR2YW5jZV9yZWR1Y2VkX2ZyYW1lX25mYSh3aW5vYmosIHRhcmdl dEN0eCwgcG9zLCBoYXNMaW1pdGVkRnJhbWUsCisJCQkJCQkJICBmcmFtZU9mZnNldCk7CiAKIHJl Z2lzdGVyX3Jlc3VsdDoKIAlBc3NlcnQocG9zID09IHRhcmdldEN0eC0+bWF0Y2hTdGFydFJvdyk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKaW5kZXggZGM1MTQwZmVjYzkuLjZhZDgzMGI5ZTM2 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CkBAIC0zMjk3LDYgKzMyOTcsMTU1IEBAIFdJ TkRPVyB3IEFTICgKICAgNCB8ICAyMCB8ICAgICAgICAgICB8ICAgMAogKDQgcm93cykKIAorLS0K Ky0tIG50aF92YWx1ZSB3aXRoIGEgTlVMTCBvZmZzZXQKKy0tCitDUkVBVEUgVEFCTEUgcnByX2Rv cm1hbnQgKGlkIGludCwgcHJpY2UgaW50KTsKK0lOU0VSVCBJTlRPIHJwcl9kb3JtYW50IFNFTEVD VCBnLCBnKjEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNjApIGc7CistLSByZWZlcmVuY2U6IGZp cnN0X3ZhbHVlKGlkKSBpcyB0aGUgc3RhcnQgcm93IG9mIHRoZSBtYXRjaCBiZWdpbm5pbmcgYXQg dGhlCistLSBjdXJyZW50IHJvdywgY291bnQoKikgaXMgdGhhdCBtYXRjaCdzIGxlbmd0aCBvdmVy IHRoZSByZWR1Y2VkIGZyYW1lCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hf bGVuCisgIEZST00gcnByX2Rvcm1hbnQKKyAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmlj ZSA+IFBSRVYoRklSU1QocHJpY2UpLCA1MCkpCispIHMgV0hFUkUgaWQgPiA1MCBPUkRFUiBCWSBp ZDsKKyBpZCB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfbGVuIAorLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgNTEgfCAgICAgICAgICA1MSB8ICAgICAgICAxMAorIDUyIHwgICAgICAgICAg ICAgfCAgICAgICAgIDAKKyA1MyB8ICAgICAgICAgICAgIHwgICAgICAgICAwCisgNTQgfCAgICAg ICAgICAgICB8ICAgICAgICAgMAorIDU1IHwgICAgICAgICAgICAgfCAgICAgICAgIDAKKyA1NiB8 ICAgICAgICAgICAgIHwgICAgICAgICAwCisgNTcgfCAgICAgICAgICAgICB8ICAgICAgICAgMAor IDU4IHwgICAgICAgICAgICAgfCAgICAgICAgIDAKKyA1OSB8ICAgICAgICAgICAgIHwgICAgICAg ICAwCisgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgMAorKDEwIHJvd3MpCisKKy0tIG50aF92 YWx1ZSB3aXRoIGEgTlVMTCBvZmZzZXQ7IEZJUlNUIG5hdmlnYXRpb24gaW4gREVGSU5FLCBTS0lQ IFBBU1QgTEFTVCBST1cKK1NFTEVDVCAqIEZST00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAor ICAgIFNFTEVDVCBpZCwgbnRoX3ZhbHVlKHByaWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5V TEwgRUxTRSAxIEVORCkgT1ZFUiB3IEFTIG52CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg ICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByaWNlID4gUFJFVihGSVJTVChwcmljZSksIDUw KSkKKyAgKSBzCispIHQgV0hFUkUgaWQgPiA1MCBPUkRFUiBCWSBpZDsKKyBpZCB8IG52ICAKKy0t LS0rLS0tLS0KKyA1MSB8IDUxMAorIDUyIHwgICAgCisgNTMgfCAgICAKKyA1NCB8ICAgIAorIDU1 IHwgICAgCisgNTYgfCAgICAKKyA1NyB8ICAgIAorIDU4IHwgICAgCisgNTkgfCAgICAKKyA2MCB8 ICAgIAorKDEwIHJvd3MpCisKKy0tIHRoZSBzYW1lIHdpbmRvdyB3aXRoIGZpcnN0X3ZhbHVlIGFu ZCBjb3VudCBhbG9uZ3NpZGUgbnRoX3ZhbHVlCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlk LCBudiwgZnYsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1ZShwcmljZSwgQ0FT RSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBBUyBudiwKKyAgICAg ICAgICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgZnYsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKKyAgICBGUk9NIHJwcl9kb3JtYW50CisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICBQQVRURVJOIChBKykgREVGSU5F IEEgQVMgcHJpY2UgPiBQUkVWKEZJUlNUKHByaWNlKSwgNTApKQorICApIHMKKykgdCBXSEVSRSBp ZCA+IDUwIE9SREVSIEJZIGlkOworIGlkIHwgbnYgIHwgZnYgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0rLS0tLS0KKyA1MSB8IDUxMCB8IDUxIHwgIDEwCisgNTIgfCAgICAgfCAgICB8ICAgMAorIDUz IHwgICAgIHwgICAgfCAgIDAKKyA1NCB8ICAgICB8ICAgIHwgICAwCisgNTUgfCAgICAgfCAgICB8 ICAgMAorIDU2IHwgICAgIHwgICAgfCAgIDAKKyA1NyB8ICAgICB8ICAgIHwgICAwCisgNTggfCAg ICAgfCAgICB8ICAgMAorIDU5IHwgICAgIHwgICAgfCAgIDAKKyA2MCB8ICAgICB8ICAgIHwgICAw CisoMTAgcm93cykKKworLS0gdGhlIHNhbWUgbnRoX3ZhbHVlIHdpdGggYSBub24tbmF2aWdhdGlv biBERUZJTkUKK1NFTEVDVCAqIEZST00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAorICAgIFNF TEVDVCBpZCwgbnRoX3ZhbHVlKHByaWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5VTEwgRUxT RSAxIEVORCkgT1ZFUiB3IEFTIG52CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFU VEVSTiAoQSspIERFRklORSBBIEFTIHByaWNlID4gMCkKKyAgKSBzCispIHQgV0hFUkUgaWQgPiA1 MCBPUkRFUiBCWSBpZDsKKyBpZCB8IG52IAorLS0tLSstLS0tCisgNTEgfCAgIAorIDUyIHwgICAK KyA1MyB8ICAgCisgNTQgfCAgIAorIDU1IHwgICAKKyA1NiB8ICAgCisgNTcgfCAgIAorIDU4IHwg ICAKKyA1OSB8ICAgCisgNjAgfCAgIAorKDEwIHJvd3MpCisKKy0tIHRoZSBzYW1lIG50aF92YWx1 ZSB3aXRoIGEgUFJFVi1vbmx5IERFRklORSAobm8gRklSU1QgbmF2aWdhdGlvbikKK1NFTEVDVCAq IEZST00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAorICAgIFNFTEVDVCBpZCwgbnRoX3ZhbHVl KHByaWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5VTEwgRUxTRSAxIEVORCkgT1ZFUiB3IEFT IG52CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFUVEVSTiAoQSspIERFRklORSBB IEFTIHByaWNlID4gUFJFVihwcmljZSwgNTApKQorICApIHMKKykgdCBXSEVSRSBpZCA+IDUwIE9S REVSIEJZIGlkOworIGlkIHwgbnYgIAorLS0tLSstLS0tLQorIDUxIHwgNTEwCisgNTIgfCAgICAK KyA1MyB8ICAgIAorIDU0IHwgICAgCisgNTUgfCAgICAKKyA1NiB8ICAgIAorIDU3IHwgICAgCisg NTggfCAgICAKKyA1OSB8ICAgIAorIDYwIHwgICAgCisoMTAgcm93cykKKworLS0gbnRoX3ZhbHVl IHdpdGggYSBOVUxMIG9mZnNldCBiYW5kIGluIHRoZSBtaWRkbGUgb2YgdGhlIHBhcnRpdGlvbgor U0VMRUNUICogRlJPTSAoCisgIFNFTEVDVCBpZCwgbnYgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBu dGhfdmFsdWUocHJpY2UsIENBU0UgV0hFTiBpZCBCRVRXRUVOIDIwIEFORCA0MCBUSEVOIE5VTEwg RUxTRSAxIEVORCkgT1ZFUiB3IEFTIG52CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByaWNlID4gUFJFVihGSVJTVChwcmljZSksIDUwKSkK KyAgKSBzCispIHQgV0hFUkUgaWQgQkVUV0VFTiAzOCBBTkQgNDYgT1JERVIgQlkgaWQ7CisgaWQg fCBudiAKKy0tLS0rLS0tLQorIDM4IHwgICAKKyAzOSB8ICAgCisgNDAgfCAgIAorIDQxIHwgICAK KyA0MiB8ICAgCisgNDMgfCAgIAorIDQ0IHwgICAKKyA0NSB8ICAgCisgNDYgfCAgIAorKDkgcm93 cykKKworRFJPUCBUQUJMRSBycHJfZG9ybWFudDsKIC0tCiAtLSBOVUxMIGhhbmRsaW5nCiAtLQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKaW5kZXggZTNlOWRlNzg5ZGIuLjMzNjM2OTFjMDQxIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3Jwci5zcWwKQEAgLTE4MTIsNiArMTgxMiw4MSBAQCBXSU5ET1cgdyBBUyAoCiAgICAgQiBBUyB2 YWwgSVMgTlVMTAogKTsKIAorLS0KKy0tIG50aF92YWx1ZSB3aXRoIGEgTlVMTCBvZmZzZXQKKy0t CisKK0NSRUFURSBUQUJMRSBycHJfZG9ybWFudCAoaWQgaW50LCBwcmljZSBpbnQpOworSU5TRVJU IElOVE8gcnByX2Rvcm1hbnQgU0VMRUNUIGcsIGcqMTAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw2 MCkgZzsKKworLS0gcmVmZXJlbmNlOiBmaXJzdF92YWx1ZShpZCkgaXMgdGhlIHN0YXJ0IHJvdyBv ZiB0aGUgbWF0Y2ggYmVnaW5uaW5nIGF0IHRoZQorLS0gY3VycmVudCByb3csIGNvdW50KCopIGlz IHRoYXQgbWF0Y2gncyBsZW5ndGggb3ZlciB0aGUgcmVkdWNlZCBmcmFtZQorU0VMRUNUICogRlJP TSAoCisgIFNFTEVDVCBpZCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwg Y291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2xlbgorICBGUk9NIHJwcl9kb3JtYW50CisgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBKykgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKEZJUlNUKHByaWNlKSwgNTApKQorKSBz IFdIRVJFIGlkID4gNTAgT1JERVIgQlkgaWQ7CisKKy0tIG50aF92YWx1ZSB3aXRoIGEgTlVMTCBv ZmZzZXQ7IEZJUlNUIG5hdmlnYXRpb24gaW4gREVGSU5FLCBTS0lQIFBBU1QgTEFTVCBST1cKK1NF TEVDVCAqIEZST00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAorICAgIFNFTEVDVCBpZCwgbnRo X3ZhbHVlKHByaWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5VTEwgRUxTRSAxIEVORCkgT1ZF UiB3IEFTIG52CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFUVEVSTiAoQSspIERF RklORSBBIEFTIHByaWNlID4gUFJFVihGSVJTVChwcmljZSksIDUwKSkKKyAgKSBzCispIHQgV0hF UkUgaWQgPiA1MCBPUkRFUiBCWSBpZDsKKworLS0gdGhlIHNhbWUgd2luZG93IHdpdGggZmlyc3Rf dmFsdWUgYW5kIGNvdW50IGFsb25nc2lkZSBudGhfdmFsdWUKK1NFTEVDVCAqIEZST00gKAorICBT RUxFQ1QgaWQsIG52LCBmdiwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgbnRoX3ZhbHVlKHBy aWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5VTEwgRUxTRSAxIEVORCkgT1ZFUiB3IEFTIG52 LAorICAgICAgICAgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBmdiwgY291bnQoKikg T1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoRklSU1QocHJpY2UpLCA1MCkpCisgICkgcworKSB0 IFdIRVJFIGlkID4gNTAgT1JERVIgQlkgaWQ7CisKKy0tIHRoZSBzYW1lIG50aF92YWx1ZSB3aXRo IGEgbm9uLW5hdmlnYXRpb24gREVGSU5FCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBu diBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwg NTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBBUyBudgorICAgIEZST00gcnByX2Rvcm1h bnQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmljZSA+IDApCisgICkgcwor KSB0IFdIRVJFIGlkID4gNTAgT1JERVIgQlkgaWQ7CisKKy0tIHRoZSBzYW1lIG50aF92YWx1ZSB3 aXRoIGEgUFJFVi1vbmx5IERFRklORSAobm8gRklSU1QgbmF2aWdhdGlvbikKK1NFTEVDVCAqIEZS T00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAorICAgIFNFTEVDVCBpZCwgbnRoX3ZhbHVlKHBy aWNlLCBDQVNFIFdIRU4gaWQgPCA1MCBUSEVOIE5VTEwgRUxTRSAxIEVORCkgT1ZFUiB3IEFTIG52 CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFT IHByaWNlID4gUFJFVihwcmljZSwgNTApKQorICApIHMKKykgdCBXSEVSRSBpZCA+IDUwIE9SREVS IEJZIGlkOworCistLSBudGhfdmFsdWUgd2l0aCBhIE5VTEwgb2Zmc2V0IGJhbmQgaW4gdGhlIG1p ZGRsZSBvZiB0aGUgcGFydGl0aW9uCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBG Uk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIEJFVFdF RU4gMjAgQU5EIDQwIFRIRU4gTlVMTCBFTFNFIDEgRU5EKSBPVkVSIHcgQVMgbnYKKyAgICBGUk9N IHJwcl9kb3JtYW50CisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgcHJpY2UgPiBQ UkVWKEZJUlNUKHByaWNlKSwgNTApKQorICApIHMKKykgdCBXSEVSRSBpZCBCRVRXRUVOIDM4IEFO RCA0NiBPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfZG9ybWFudDsKKwogLS0KIC0tIE5V TEwgaGFuZGxpbmcKIC0tCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-tidy-plumbing.txt" Content-Disposition: attachment; filename="nocfbot-0006-tidy-plumbing.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jf5 RnJvbSBiODQ4NDA4ODE5MmEzZWE4ZDI0YmRiZmY0YjQ1OTY0NTBlMTM4M2MzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDEzOjEyOjM2ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwNi8xM10g VGlkeSB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwbHVtYmluZwoKU2V2ZXJhbCBiZWhhdmlv ci1uZXV0cmFsIGNsZWFudXBzIHRvIHRoZSByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBjb2RlLAp3 aXRoIG5vIGNoYW5nZSB0byBwbGFubmVyIG9yIGV4ZWN1dG9yIG91dHB1dDoKCi0gUmVtb3ZlIHRo ZSBkZWFkIGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKCkgYW5kIGJ1aWxkRGVmaW5lVmFyaWFibGVM aXN0KCkKICBoZWxwZXJzLiAgVGhlIHBhcnNlciBhbHJlYWR5IGd1YXJhbnRlZXMgdGhhdCBldmVy eSBERUZJTkUgdmFyaWFibGUKICBhcHBlYXJzIGluIFBBVFRFUk4sIHNvIGNyZWF0ZV93aW5kb3dh Z2dfcGxhbigpIGFuZCBjb3N0X3dpbmRvd2FnZygpIHdhbGsKICB0aGUgREVGSU5FIGNsYXVzZSBk aXJlY3RseSBpbnN0ZWFkLgoKLSBEcm9wIHRoZSByZWR1bmRhbnQgcnBTa2lwVG8gYW5kIGRlZmlu ZUNsYXVzZSBhcmd1bWVudHMgb2YKICBtYWtlX3dpbmRvd2FnZygpOyBib3RoIGFyZSByZWFkIGZy b20gdGhlIFdpbmRvd0NsYXVzZS4KCi0gTWFyayBSUFJOYXZFeHByLnJlc3VsdHR5cGUgYXMgcXVl cnlfanVtYmxlX2lnbm9yZSwgbWF0Y2hpbmcgdGhlIG90aGVyCiAgZGVyaXZlZCByZXN1bHQtdHlw ZSBmaWVsZHMuCgotIFJlbmFtZSBXaW5kb3dBZ2dTdGF0ZS5kZWZpbmVDbGF1c2VMaXN0IHRvIGRl ZmluZUNsYXVzZUV4cHJzIHRvIHJlZmxlY3QKICB0aGF0IGl0IHN0b3JlcyBFeHByU3RhdGUgbm9k ZXMuCgotIFJlcGxhY2UgYSBwb3N0LWxvb3AgTGlzdENlbGwgTlVMTCB0ZXN0IGluIHJlbW92ZV91 bnVzZWRfc3VicXVlcnlfb3V0cHV0cygpCiAgd2l0aCBhIGJvb2xlYW4gZmxhZywgZmxhdHRlbiB0 aGUgbmVzdGVkIGJsb2NrIGluIHNob3dfd2luZG93X2RlZigpLCBhbmQKICBmbGF0dGVuIHRoZSBE RUZJTkUgaW5pdCBsb29wIGluIEV4ZWNJbml0V2luZG93QWdnKCkuCgotIE1pbm9yIHJlZ3Jlc3Np b24tdGVzdCBjb21tZW50IGNsZWFudXAuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jICAgICAgICAgICAgICAgIHwgOTQgKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvUkVBRE1FLnJwciAgICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSUFIuYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCA0MSArKysrLS0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyAgICAgICAgIHwgMTMgKystCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAgfCAyMiArLS0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jICAgICAgIHwgMjQgKysrLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3Jwci5jICAgICAgICAgICAgICB8IDc3IC0tLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAzICstCiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggICAgICAgICAgICAgICAgICAgfCAgMyAtCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgfCAyOSArKy0tLS0KIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgICAgICB8IDMxICsrLS0tLQogMTMg ZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDIzNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKaW5kZXggNzBmZDdmMzg2YTAuLjY5NmJkYjljOGI1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCkBAIC0zMjEyLDc3ICszMjEyLDczIEBAIHNob3dfd2luZG93X2RlZihXaW5k b3dBZ2dTdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMp CiAJLyogU2hvdyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIGlmIHByZXNlbnQgKi8K IAlpZiAod2FnZy0+cnBQYXR0ZXJuICE9IE5VTEwpCiAJeworCQlSUFJOYXZPZmZzZXRLaW5kIG1h eEtpbmQgPSB3YWdnLT5uYXZNYXhPZmZzZXRLaW5kOworCQlpbnQ2NAkJbWF4T2Zmc2V0ID0gd2Fn Zy0+bmF2TWF4T2Zmc2V0OworCQlSUFJOYXZPZmZzZXRLaW5kIGZpcnN0S2luZCA9IHdhZ2ctPm5h dkZpcnN0T2Zmc2V0S2luZDsKKwkJaW50NjQJCWZpcnN0T2Zmc2V0ID0gd2FnZy0+bmF2Rmlyc3RP ZmZzZXQ7CisKIAkJY2hhcgkgICAqcGF0dGVyblN0ciA9IGRlcGFyc2VfcnByX3BhdHRlcm4od2Fn Zy0+cnBQYXR0ZXJuKTsKIAotCQlpZiAocGF0dGVyblN0ciAhPSBOVUxMKQotCQl7Ci0JCQlFeHBs YWluUHJvcGVydHlUZXh0KCJQYXR0ZXJuIiwgcGF0dGVyblN0ciwgZXMpOwotCQkJcGZyZWUocGF0 dGVyblN0cik7Ci0JCX0KKwkJRXhwbGFpblByb3BlcnR5VGV4dCgiUGF0dGVybiIsIHBhdHRlcm5T dHIsIGVzKTsKKworCQlwZnJlZShwYXR0ZXJuU3RyKTsKIAogCQkvKgogCQkgKiBTaG93IG5hdmln YXRpb24gb2Zmc2V0cyBmb3IgdHVwbGVzdG9yZSB0cmltLiAgRm9yIEVYUExBSU4gQU5BTFlaRSwK IAkJICogdXNlIHRoZSBleGVjdXRvci1yZXNvbHZlZCB2YWx1ZXMgKHdoaWNoIG1heSBkaWZmZXIg ZnJvbSB0aGUgcGxhbgogCQkgKiB3aGVuIE5FRURTX0VWQUwgd2FzIHJlc29sdmVkIHRvIEZJWEVE IG9yIFJFVEFJTl9BTEwgYXQgaW5pdCkuCiAJCSAqLworCQlpZiAoZXMtPmFuYWx5emUpCiAJCXsK LQkJCVJQUk5hdk9mZnNldEtpbmQgbWF4S2luZCA9IHdhZ2ctPm5hdk1heE9mZnNldEtpbmQ7Ci0J CQlpbnQ2NAkJbWF4T2Zmc2V0ID0gd2FnZy0+bmF2TWF4T2Zmc2V0OwotCQkJUlBSTmF2T2Zmc2V0 S2luZCBmaXJzdEtpbmQgPSB3YWdnLT5uYXZGaXJzdE9mZnNldEtpbmQ7Ci0JCQlpbnQ2NAkJZmly c3RPZmZzZXQgPSB3YWdnLT5uYXZGaXJzdE9mZnNldDsKKwkJCW1heEtpbmQgPSBwbGFuc3RhdGUt Pm5hdk1heE9mZnNldEtpbmQ7CisJCQltYXhPZmZzZXQgPSBwbGFuc3RhdGUtPm5hdk1heE9mZnNl dDsKKwkJCWZpcnN0S2luZCA9IHBsYW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5kOworCQkJZmly c3RPZmZzZXQgPSBwbGFuc3RhdGUtPm5hdkZpcnN0T2Zmc2V0OworCQl9CiAKLQkJCWlmIChlcy0+ YW5hbHl6ZSkKLQkJCXsKLQkJCQltYXhLaW5kID0gcGxhbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5k OwotCQkJCW1heE9mZnNldCA9IHBsYW5zdGF0ZS0+bmF2TWF4T2Zmc2V0OwotCQkJCWZpcnN0S2lu ZCA9IHBsYW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5kOwotCQkJCWZpcnN0T2Zmc2V0ID0gcGxh bnN0YXRlLT5uYXZGaXJzdE9mZnNldDsKLQkJCX0KKwkJc3dpdGNoIChtYXhLaW5kKQorCQl7CisJ CQljYXNlIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUw6CisJCQkJRXhwbGFpblByb3BlcnR5VGV4 dCgiTmF2IE1hcmsgTG9va2JhY2siLCAicnVudGltZSIsIGVzKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTDoKKwkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJO YXYgTWFyayBMb29rYmFjayIsICJyZXRhaW4gYWxsIiwgZXMpOworCQkJCWJyZWFrOworCQkJY2Fz ZSBSUFJfTkFWX09GRlNFVF9GSVhFRDoKKwkJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJOYXYg TWFyayBMb29rYmFjayIsIE5VTEwsCisJCQkJCQkJCQkgICBtYXhPZmZzZXQsIGVzKTsKKwkJCQli cmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBSUFIgbmF2 IG9mZnNldCBraW5kOiAlZCIsCisJCQkJCSBtYXhLaW5kKTsKKwkJCQlicmVhazsKKwkJfQogCi0J CQlzd2l0Y2ggKG1heEtpbmQpCisJCWlmICh3YWdnLT5oYXNGaXJzdE5hdikKKwkJeworCQkJc3dp dGNoIChmaXJzdEtpbmQpCiAJCQl7CiAJCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFM OgotCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYmFjayIsICJydW50aW1l IiwgZXMpOworCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAi cnVudGltZSIsCisJCQkJCQkJCQkJZXMpOwogCQkJCQlicmVhazsKIAkJCQljYXNlIFJQUl9OQVZf T0ZGU0VUX1JFVEFJTl9BTEw6Ci0JCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExv b2tiYWNrIiwgInJldGFpbiBhbGwiLCBlcyk7CisJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5h diBNYXJrIExvb2thaGVhZCIsICJyZXRhaW4gYWxsIiwKKwkJCQkJCQkJCQllcyk7CiAJCQkJCWJy ZWFrOwogCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfRklYRUQ6Ci0JCQkJCUV4cGxhaW5Qcm9wZXJ0 eUludGVnZXIoIk5hdiBNYXJrIExvb2tiYWNrIiwgTlVMTCwKLQkJCQkJCQkJCQkgICBtYXhPZmZz ZXQsIGVzKTsKKwkJCQkJaWYgKGZpcnN0T2Zmc2V0ID09IFBHX0lOVDY0X01BWCkKKwkJCQkJCUV4 cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJpbmZpbml0ZSIsCisJCQkJ CQkJCQkJCWVzKTsKKwkJCQkJZWxzZQorCQkJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2 IE1hcmsgTG9va2FoZWFkIiwgTlVMTCwKKwkJCQkJCQkJCQkJICAgZmlyc3RPZmZzZXQsIGVzKTsK IAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBSUFIgbmF2IG9mZnNldCBraW5kOiAlZCIsCi0JCQkJCQkgbWF4S2luZCk7CisJCQkJCQkgZmly c3RLaW5kKTsKIAkJCQkJYnJlYWs7CiAJCQl9Ci0KLQkJCWlmICh3YWdnLT5oYXNGaXJzdE5hdikK LQkJCXsKLQkJCQlzd2l0Y2ggKGZpcnN0S2luZCkKLQkJCQl7Ci0JCQkJCWNhc2UgUlBSX05BVl9P RkZTRVRfTkVFRFNfRVZBTDoKLQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExv b2thaGVhZCIsICJydW50aW1lIiwKLQkJCQkJCQkJCQkJZXMpOwotCQkJCQkJYnJlYWs7Ci0JCQkJ CWNhc2UgUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTDoKLQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRl eHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJyZXRhaW4gYWxsIiwKLQkJCQkJCQkJCQkJZXMpOwot CQkJCQkJYnJlYWs7Ci0JCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfRklYRUQ6Ci0JCQkJCQlpZiAo Zmlyc3RPZmZzZXQgPT0gUEdfSU5UNjRfTUFYKQotCQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQo Ik5hdiBNYXJrIExvb2thaGVhZCIsICJpbmZpbml0ZSIsCi0JCQkJCQkJCQkJCQllcyk7Ci0JCQkJ CQllbHNlCi0JCQkJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2IE1hcmsgTG9va2FoZWFk IiwgTlVMTCwKLQkJCQkJCQkJCQkJCSAgIGZpcnN0T2Zmc2V0LCBlcyk7Ci0JCQkJCQlicmVhazsK LQkJCQkJZGVmYXVsdDoKLQkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgUlBSIG5hdiBv ZmZzZXQga2luZDogJWQiLAotCQkJCQkJCSBmaXJzdEtpbmQpOwotCQkJCQkJYnJlYWs7Ci0JCQkJ fQotCQkJfQogCQl9CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FLnJwciBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIKaW5kZXggMDBhZjg2Njgx YjguLjcxM2FkODRlMWQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUu cnByCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIKQEAgLTE4OCw3ICsxODgs NiBAQCBDaGFwdGVyIElWICBDb21waWxhdGlvbiBQaGFzZQogSVYtMS4gRW50cnkgUG9pbnQKIAog ICBjcmVhdGVfd2luZG93YWdnX3BsYW4oKSAoY3JlYXRlcGxhbi5jKQotICAgICstLSBidWlsZERl ZmluZVZhcmlhYmxlTGlzdCgpICAgIEJ1aWxkIHZhcmlhYmxlIG5hbWUgbGlzdCBmcm9tIERFRklO RQogICAgICstLSBidWlsZFJQUlBhdHRlcm4oKSAgICAgICAgICAgTkZBIGNvbXBpbGF0aW9uICg2 IHBoYXNlcykKIAogSVYtMi4gVGhlIDYgUGhhc2VzIG9mIGJ1aWxkUlBSUGF0dGVybigpCkBAIC0x NDY4LDggKzE0NjcsNiBAQCBBcHBlbmRpeCBBLiBLZXkgRnVuY3Rpb24gSW5kZXgKICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgdHJhbnNmb3JtUlBSICAgICAgICAgICAgICAgICAgcGFyc2VfcnByLmMg ICAgICAgICAgIFBhcnNlciBlbnRyeSBwb2ludAogICB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UgICAg ICAgICBwYXJzZV9ycHIuYyAgICAgICAgICAgREVGSU5FIHRyYW5zZm9ybWF0aW9uCi0gIGNvbGxl Y3RQYXR0ZXJuVmFyaWFibGVzICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBWYXJpYWJsZSBj b2xsZWN0aW9uCi0gIGJ1aWxkRGVmaW5lVmFyaWFibGVMaXN0ICAgICAgIHJwci5jICAgICAgICAg ICAgICAgICBERUZJTkUgdmFyaWFibGUgbGlzdAogICBidWlsZFJQUlBhdHRlcm4gICAgICAgICAg ICAgICBycHIuYyAgICAgICAgICAgICAgICAgTkZBIGNvbXBpbGF0aW9uIG1haW4KICAgb3B0aW1p emVSUFJQYXR0ZXJuICAgICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIEFTVCBvcHRpbWl6 YXRpb24KICAgZmlsbFJQUlBhdHRlcm4gICAgICAgICAgICAgICAgcnByLmMgICAgICAgICAgICAg ICAgIE5GQSBlbGVtZW50IGdlbmVyYXRpb24KQEAgLTE1MzgsNyArMTUzNSw3IEBAIEFwcGVuZGl4 IEIuIERhdGEgU3RydWN0dXJlIFJlbGF0aW9uc2hpcCBEaWFncmFtCiAgICAgfC0tLSBycFNraXBU bzogUlBTa2lwVG8gKEFGVEVSIE1BVENIIFNLSVAgbW9kZSkKICAgICB8LS0tIHJwUGF0dGVybjog UlBSUGF0dGVybiogKGNvcGllZCBmcm9tIHBsYW4pCiAgICAgfC0tLSBkZWZpbmVWYXJpYWJsZUxp c3Q6IExpc3Q8U3RyaW5nPiAodmFyaWFibGUgbmFtZXMsIERFRklORSBvcmRlcikKLSAgICB8LS0t IGRlZmluZUNsYXVzZUxpc3Q6IExpc3Q8RXhwclN0YXRlPgorICAgIHwtLS0gZGVmaW5lQ2xhdXNl RXhwcnM6IExpc3Q8RXhwclN0YXRlPgogICAgIHwtLS0gbmZhVmFyTWF0Y2hlZDogYm9vbFtdIChw ZXItcm93IGNhY2hlKQogICAgIHwtLS0gZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudDogQml0bWFw c2V0KiAobWF0Y2hfc3RhcnRfZGVwZW5kZW50CiAgICAgfCAgICAgICAgREVGSU5FIHZhcnM7IHNl ZSBWSS00KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGNlYTdlMGIyOTczLi5kZWYwYjg0MjNi MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgbmZhX3JlZXZh bHVhdGVfZGVwZW5kZW50X3ZhcnMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsCiAJLyogSW52YWxpZGF0ZSBuYXZfc2xvdCBjYWNoZSBzaW5jZSBtYXRjaF9zdGFy dCBjaGFuZ2VkICovCiAJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOwogCi0JZm9yZWFjaF9w dHIoRXhwclN0YXRlLCBleHByU3RhdGUsIHdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0KQorCWZv cmVhY2hfcHRyKEV4cHJTdGF0ZSwgZXhwclN0YXRlLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlRXhw cnMpCiAJewogCQlpbnQJCQl2YXJJZHggPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoZXhwclN0YXRl KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDJkOTc3MTBkYThhLi41 ZDQ4MzJkMWRiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMzA2Nywy NyArMzA2NywyNiBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9u IERFRklORSBjbGF1c2UgKi8KIAl3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0ID0gTklMOwot CXdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0ID0gTklMOwotCWlmIChub2RlLT5kZWZpbmVDbGF1 c2UgIT0gTklMKQorCXdpbnN0YXRlLT5kZWZpbmVDbGF1c2VFeHBycyA9IE5JTDsKKworCS8qCisJ ICogQ29tcGlsZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb25zLiAgUFJFVi9ORVhUIG5hdmlnYXRp b24gaXMgaGFuZGxlZCBieQorCSAqIEVFT1BfUlBSX05BVl9TRVQvUkVTVE9SRSBvcGNvZGVzIGVt aXR0ZWQgZHVyaW5nIEV4ZWNJbml0RXhwciwgc28gbm8KKwkgKiB2YXJubyByZXdyaXRpbmcgaXMg bmVlZGVkIGhlcmUuCisJICovCisJZm9yZWFjaF9ub2RlKFRhcmdldEVudHJ5LCB0ZSwgbm9kZS0+ ZGVmaW5lQ2xhdXNlKQogCXsKLQkJLyoKLQkJICogQ29tcGlsZSBERUZJTkUgY2xhdXNlIGV4cHJl c3Npb25zLiAgUFJFVi9ORVhUIG5hdmlnYXRpb24gaXMgaGFuZGxlZAotCQkgKiBieSBFRU9QX1JQ Ul9OQVZfU0VUL1JFU1RPUkUgb3Bjb2RlcyBlbWl0dGVkIGR1cmluZyBFeGVjSW5pdEV4cHIsIHNv Ci0JCSAqIG5vIHZhcm5vIHJld3JpdGluZyBpcyBuZWVkZWQgaGVyZS4KLQkJICovCi0JCWZvcmVh Y2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIG5vZGUtPmRlZmluZUNsYXVzZSkKLQkJewotCQkJY2hh cgkgICAqbmFtZSA9IHRlLT5yZXNuYW1lOwotCQkJRXhwcgkgICAqZXhwciA9IHRlLT5leHByOwot CQkJRXhwclN0YXRlICAqZXhwczsKLQotCQkJd2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9 Ci0JCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0LAotCQkJCQkJbWFrZVN0 cmluZyhwc3RyZHVwKG5hbWUpKSk7Ci0JCQlleHBzID0gRXhlY0luaXRFeHByKGV4cHIsIChQbGFu U3RhdGUgKikgd2luc3RhdGUpOwotCQkJd2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3QgPQotCQkJ CWxhcHBlbmQod2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3QsIGV4cHMpOwotCQl9CisJCWNoYXIJ ICAgKm5hbWUgPSB0ZS0+cmVzbmFtZTsKKwkJRXhwclN0YXRlICAqZXhwcnN0YXRlOworCisJCXdp bnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QgPQorCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ZGVmaW5l VmFyaWFibGVMaXN0LAorCQkJCQltYWtlU3RyaW5nKHBzdHJkdXAobmFtZSkpKTsKKworCQlleHBy c3RhdGUgPSBFeGVjSW5pdEV4cHIodGUtPmV4cHIsIChQbGFuU3RhdGUgKikgd2luc3RhdGUpOwor CisJCXdpbnN0YXRlLT5kZWZpbmVDbGF1c2VFeHBycyA9CisJCQlsYXBwZW5kKHdpbnN0YXRlLT5k ZWZpbmVDbGF1c2VFeHBycywgZXhwcnN0YXRlKTsKIAl9CiAKIAkvKiBJbml0aWFsaXplIE5GQSBm cmVlIGxpc3RzIGZvciByb3cgcGF0dGVybiBtYXRjaGluZyAqLwpAQCAtNDY2OSw3ICs0NjY4LDcg QEAgbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wg KnZhck1hdGNoZWQpCiAJLyogSW52YWxpZGF0ZSBuYXZfc2xvdCBjYWNoZSBzbyBQUkVWL05FWFQg cmUtZmV0Y2ggZm9yIG5ldyByb3cgKi8KIAl3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CiAK LQlmb3JlYWNoX3B0cihFeHByU3RhdGUsIGV4cHJTdGF0ZSwgd2luc3RhdGUtPmRlZmluZUNsYXVz ZUxpc3QpCisJZm9yZWFjaF9wdHIoRXhwclN0YXRlLCBleHByU3RhdGUsIHdpbnN0YXRlLT5kZWZp bmVDbGF1c2VFeHBycykKIAl7CiAJCURhdHVtCQlyZXN1bHQ7CiAJCWJvb2wJCWlzbnVsbDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCmluZGV4IGYzYzlmM2MwYmQ2Li40NDg2NGIz NjM1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC00ODA3LDIwICs0 ODA3LDE5IEBAIHJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cyhRdWVyeSAqc3VicXVlcnks IFJlbE9wdEluZm8gKnJlbCwKIAkJICovCiAJCWlmIChJc0EodGV4cHIsIFdpbmRvd0Z1bmMpKQog CQl7CisJCQlib29sCQlpc19ycHIgPSBmYWxzZTsKIAkJCVdpbmRvd0Z1bmMgKndmdW5jID0gKFdp bmRvd0Z1bmMgKikgdGV4cHI7Ci0JCQlMaXN0Q2VsbCAgICp3bGM7CiAKLQkJCWZvcmVhY2god2xj LCBzdWJxdWVyeS0+d2luZG93Q2xhdXNlKQorCQkJZm9yZWFjaF9ub2RlKFdpbmRvd0NsYXVzZSwg d2MsIHN1YnF1ZXJ5LT53aW5kb3dDbGF1c2UpCiAJCQl7Ci0JCQkJV2luZG93Q2xhdXNlICp3YyA9 IGxmaXJzdF9ub2RlKFdpbmRvd0NsYXVzZSwgd2xjKTsKLQotCQkJCWlmICh3Yy0+d2lucmVmID09 IHdmdW5jLT53aW5yZWYgJiYKLQkJCQkJd2MtPmRlZmluZUNsYXVzZSAhPSBOSUwpCisJCQkJaWYg KHdjLT53aW5yZWYgPT0gd2Z1bmMtPndpbnJlZiAmJiB3Yy0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkK IAkJCQl7CisJCQkJCWlzX3JwciA9IHRydWU7CiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KLQkJ CWlmICh3bGMgIT0gTlVMTCkKKworCQkJaWYgKGlzX3JwcikKIAkJCQljb250aW51ZTsKIAkJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCA4MjQ3MmMzZmU5Ni4uMzJh NGIxNzJlM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXpl LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpAQCAtMzIzMSwz MCArMzIzMSwxOCBAQCBjb3N0X3dpbmRvd2FnZyhQYXRoICpwYXRoLCBQbGFubmVySW5mbyAqcm9v dCwKIAkgKiBzbyB3ZSdsbCBqdXN0IGRvIHRoaXMgZm9yIG5vdy4KIAkgKgogCSAqIE1vcmVvdmVy LCBpZiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkLCB3ZSBjaGFyZ2UgdGhlIERFRklO RQotCSAqIGV4cHJlc3Npb25zIG9uY2UgcGVyIHR1cGxlIGZvciBlYWNoIHZhcmlhYmxlIHRoYXQg YXBwZWFycyBpbiBQQVRURVJOLgorCSAqIGV4cHJlc3Npb25zIG9uY2UgcGVyIHR1cGxlIGZvciBl YWNoIERFRklORSB2YXJpYWJsZS4KIAkgKi8KIAlpZiAod2luY2xhdXNlLT5ycFBhdHRlcm4pCiAJ ewotCQlMaXN0CSAgICpwYXR0ZXJuX3ZhcnM7CiAJCVF1YWxDb3N0CWRlZmNvc3RzOwogCi0JCXBh dHRlcm5fdmFycyA9IGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKHdpbmNsYXVzZS0+cnBQYXR0ZXJu KTsKLQotCQlmb3JlYWNoX25vZGUoU3RyaW5nLCBwdiwgcGF0dGVybl92YXJzKQorCQlmb3JlYWNo X25vZGUoVGFyZ2V0RW50cnksIGRlZiwgd2luY2xhdXNlLT5kZWZpbmVDbGF1c2UpCiAJCXsKLQkJ CWNoYXIJICAgKnB0bmFtZSA9IHN0clZhbChwdik7Ci0KLQkJCWZvcmVhY2hfbm9kZShUYXJnZXRF bnRyeSwgZGVmLCB3aW5jbGF1c2UtPmRlZmluZUNsYXVzZSkKLQkJCXsKLQkJCQlpZiAoIXN0cmNt cChwdG5hbWUsIGRlZi0+cmVzbmFtZSkpCi0JCQkJewotCQkJCQljb3N0X3F1YWxfZXZhbF9ub2Rl KCZkZWZjb3N0cywgKE5vZGUgKikgZGVmLT5leHByLCByb290KTsKLQkJCQkJc3RhcnR1cF9jb3N0 ICs9IGRlZmNvc3RzLnN0YXJ0dXA7Ci0JCQkJCXRvdGFsX2Nvc3QgKz0gZGVmY29zdHMucGVyX3R1 cGxlICogaW5wdXRfdHVwbGVzOwotCQkJCX0KLQkJCX0KKwkJCWNvc3RfcXVhbF9ldmFsX25vZGUo JmRlZmNvc3RzLCAoTm9kZSAqKSBkZWYtPmV4cHIsIHJvb3QpOworCQkJc3RhcnR1cF9jb3N0ICs9 IGRlZmNvc3RzLnN0YXJ0dXA7CisJCQl0b3RhbF9jb3N0ICs9IGRlZmNvc3RzLnBlcl90dXBsZSAq IGlucHV0X3R1cGxlczsKIAkJfQotCQlsaXN0X2ZyZWVfZGVlcChwYXR0ZXJuX3ZhcnMpOwogCX0K IAogCWZvcmVhY2gobGMsIHdpbmRvd0Z1bmNzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jCmluZGV4IGNjYTQxMjZlNTExLi5kOTZlNzZiMDIyMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjkwLDkgKzI5MCw4IEBAIHN0YXRpYyBNZW1v aXplICptYWtlX21lbW9pemUoUGxhbiAqbGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9ycywKIHN0 YXRpYyBXaW5kb3dBZ2cgKm1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2Ug KndjLAogCQkJCQkJCQkgaW50IHBhcnROdW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4LCBP aWQgKnBhcnRPcGVyYXRvcnMsIE9pZCAqcGFydENvbGxhdGlvbnMsCiAJCQkJCQkJCSBpbnQgb3Jk TnVtQ29scywgQXR0ck51bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywgT2lkICpv cmRDb2xsYXRpb25zLAotCQkJCQkJCQkgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNr aXBUbywKKwkJCQkJCQkJIExpc3QgKnJ1bkNvbmRpdGlvbiwKIAkJCQkJCQkJIFJQUlBhdHRlcm4g KmNvbXBpbGVkUGF0dGVybiwKLQkJCQkJCQkJIExpc3QgKmRlZmluZUNsYXVzZSwKIAkJCQkJCQkJ IEJpdG1hcHNldCAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCwKIAkJCQkJCQkJIFJQUk5hdk9m ZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2luZCwgaW50NjQgbmF2TWF4T2Zmc2V0LAogCQkJCQkJCQkg Ym9vbCBoYXNGaXJzdE5hdiwKQEAgLTI4MjIsNyArMjgyMSw2IEBAIGNyZWF0ZV93aW5kb3dhZ2df cGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCU9pZAkJ ICAgKm9yZENvbGxhdGlvbnM7CiAJTGlzdENlbGwgICAqbGM7CiAJTGlzdAkgICAqZGVmaW5lVmFy aWFibGVMaXN0ID0gTklMOwotCUxpc3QJICAgKmZpbHRlcmVkRGVmaW5lQ2xhdXNlID0gTklMOwog CVJQUlBhdHRlcm4gKmNvbXBpbGVkUGF0dGVybiA9IE5VTEw7CiAJQml0bWFwc2V0ICAqbWF0Y2hT dGFydERlcGVuZGVudCA9IE5VTEw7CiAJUlBSTmF2T2Zmc2V0S2luZCBuYXZNYXhPZmZzZXRLaW5k ID0gUlBSX05BVl9PRkZTRVRfRklYRUQ7CkBAIC0yODg5LDggKzI4ODcsOSBAQCBjcmVhdGVfd2lu ZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkK IAkJICogcmVqZWN0cyBERUZJTkUgdmFyaWFibGVzIG5vdCB1c2VkIGluIFBBVFRFUk4sIHNvIG5v IGZpbHRlcmluZyBpcwogCQkgKiBuZWVkZWQuCiAJCSAqLwotCQlidWlsZERlZmluZVZhcmlhYmxl TGlzdCh3Yy0+ZGVmaW5lQ2xhdXNlLCAmZGVmaW5lVmFyaWFibGVMaXN0KTsKLQkJZmlsdGVyZWRE ZWZpbmVDbGF1c2UgPSB3Yy0+ZGVmaW5lQ2xhdXNlOworCQlmb3JlYWNoX25vZGUoVGFyZ2V0RW50 cnksIHRlLCB3Yy0+ZGVmaW5lQ2xhdXNlKQorCQkJZGVmaW5lVmFyaWFibGVMaXN0ID0gbGFwcGVu ZChkZWZpbmVWYXJpYWJsZUxpc3QsCisJCQkJCQkJCQkJIG1ha2VTdHJpbmcocHN0cmR1cCh0ZS0+ cmVzbmFtZSkpKTsKIAogCQkvKgogCQkgKiBXYWxrIERFRklORSBvbmNlOiBjb2xsZWN0IG5hdiBv ZmZzZXRzIChmb3IgdHVwbGVzdG9yZSB0cmltKSBhbmQgdGhlCkBAIC0yOTIzLDEzICsyOTIyLDEz IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0 aCAqYmVzdF9wYXRoKQogCQkJCQkJICBvcmRPcGVyYXRvcnMsCiAJCQkJCQkgIG9yZENvbGxhdGlv bnMsCiAJCQkJCQkgIGJlc3RfcGF0aC0+cnVuQ29uZGl0aW9uLAotCQkJCQkJICB3Yy0+cnBTa2lw VG8sCiAJCQkJCQkgIGNvbXBpbGVkUGF0dGVybiwKLQkJCQkJCSAgZmlsdGVyZWREZWZpbmVDbGF1 c2UsCiAJCQkJCQkgIG1hdGNoU3RhcnREZXBlbmRlbnQsCi0JCQkJCQkgIG5hdk1heE9mZnNldEtp bmQsIG5hdk1heE9mZnNldCwKKwkJCQkJCSAgbmF2TWF4T2Zmc2V0S2luZCwKKwkJCQkJCSAgbmF2 TWF4T2Zmc2V0LAogCQkJCQkJICBoYXNGaXJzdE5hdiwKLQkJCQkJCSAgbmF2Rmlyc3RPZmZzZXRL aW5kLCBuYXZGaXJzdE9mZnNldCwKKwkJCQkJCSAgbmF2Rmlyc3RPZmZzZXRLaW5kLAorCQkJCQkJ ICBuYXZGaXJzdE9mZnNldCwKIAkJCQkJCSAgYmVzdF9wYXRoLT5xdWFsLAogCQkJCQkJICBiZXN0 X3BhdGgtPnRvcHdpbmRvdywKIAkJCQkJCSAgc3VicGxhbik7CkBAIC03MDAwLDkgKzY5OTksOCBA QCBzdGF0aWMgV2luZG93QWdnICoKIG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dD bGF1c2UgKndjLAogCQkJICAgaW50IHBhcnROdW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4 LCBPaWQgKnBhcnRPcGVyYXRvcnMsIE9pZCAqcGFydENvbGxhdGlvbnMsCiAJCQkgICBpbnQgb3Jk TnVtQ29scywgQXR0ck51bWJlciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywgT2lkICpv cmRDb2xsYXRpb25zLAotCQkJICAgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNraXBU bywKKwkJCSAgIExpc3QgKnJ1bkNvbmRpdGlvbiwKIAkJCSAgIFJQUlBhdHRlcm4gKmNvbXBpbGVk UGF0dGVybiwKLQkJCSAgIExpc3QgKmRlZmluZUNsYXVzZSwKIAkJCSAgIEJpdG1hcHNldCAqZGVm aW5lTWF0Y2hTdGFydERlcGVuZGVudCwKIAkJCSAgIFJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zm c2V0S2luZCwgaW50NjQgbmF2TWF4T2Zmc2V0LAogCQkJICAgYm9vbCBoYXNGaXJzdE5hdiwKQEAg LTcwMzQsMTIgKzcwMzIsMTIgQEAgbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0Ns YXVzZSAqd2MsCiAJbm9kZS0+aW5SYW5nZUFzYyA9IHdjLT5pblJhbmdlQXNjOwogCW5vZGUtPmlu UmFuZ2VOdWxsc0ZpcnN0ID0gd2MtPmluUmFuZ2VOdWxsc0ZpcnN0OwogCW5vZGUtPnRvcFdpbmRv dyA9IHRvcFdpbmRvdzsKLQlub2RlLT5ycFNraXBUbyA9IHJwU2tpcFRvOworCW5vZGUtPnJwU2tp cFRvID0gd2MtPnJwU2tpcFRvOwogCiAJLyogU3RvcmUgY29tcGlsZWQgcGF0dGVybiBmb3IgTkZB IGV4ZWN1dGlvbiAqLwogCW5vZGUtPnJwUGF0dGVybiA9IGNvbXBpbGVkUGF0dGVybjsKIAotCW5v ZGUtPmRlZmluZUNsYXVzZSA9IGRlZmluZUNsYXVzZTsKKwlub2RlLT5kZWZpbmVDbGF1c2UgPSB3 Yy0+ZGVmaW5lQ2xhdXNlOwogCiAJLyogU3RvcmUgcHJlLWNvbXB1dGVkIG1hdGNoX3N0YXJ0IGRl cGVuZGVuY3kgYml0bWFwc2V0ICovCiAJbm9kZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCA9 IGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9ycHIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCmluZGV4 IDUwYmNhNTk0NTFmLi40OGI3NmE4NDJlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAg LTk2LDkgKzk2LDYgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUFic29yYmFiaWxpdHlSZWN1cnNpdmUo UlBSUGF0dGVybiAqcGF0dGVybiwKIAkJCQkJCQkJCQkgIGJvb2wgKmhhc0Fic29yYmFibGUpOwog c3RhdGljIHZvaWQgY29tcHV0ZUFic29yYmFiaWxpdHkoUlBSUGF0dGVybiAqcGF0dGVybik7CiAK LXN0YXRpYyB2b2lkIGNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzUmVjdXJzaXZlKFJQUlBhdHRlcm5O b2RlICpub2RlLAotCQkJCQkJCQkJCQkgTGlzdCAqKnZhck5hbWVzKTsKLQogLyoKICAqIHJwclBh dHRlcm5FcXVhbAogICoJCUNvbXBhcmUgdHdvIFJQUlBhdHRlcm5Ob2RlIHRyZWVzIGZvciBlcXVh bGl0eS4KQEAgLTE4MjQsNTkgKzE4MjEsNiBAQCBjb21wdXRlQWJzb3JiYWJpbGl0eShSUFJQYXR0 ZXJuICpwYXR0ZXJuKQogCXBhdHRlcm4tPmlzQWJzb3JiYWJsZSA9IGhhc0Fic29yYmFibGU7CiB9 CiAKLS8qCi0gKiBjb2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZQotICoJCVJlY3Vyc2l2 ZWx5IGNvbGxlY3QgdmFyaWFibGUgbmFtZXMgZnJvbSBwYXR0ZXJuIEFTVC4KLSAqLwotc3RhdGlj IHZvaWQKLWNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzUmVjdXJzaXZlKFJQUlBhdHRlcm5Ob2RlICpu b2RlLCBMaXN0ICoqdmFyTmFtZXMpCi17Ci0JQXNzZXJ0KG5vZGUgIT0gTlVMTCk7Ci0KLQljaGVj a19zdGFja19kZXB0aCgpOwotCi0Jc3dpdGNoIChub2RlLT5ub2RlVHlwZSkKLQl7Ci0JCWNhc2Ug UlBSX1BBVFRFUk5fVkFSOgotCQkJLyogQWRkIHZhcmlhYmxlIGlmIG5vdCBhbHJlYWR5IGluIGxp c3QgKi8KLQkJCWZvcmVhY2hfbm9kZShTdHJpbmcsIHZhcm5hbWUsICp2YXJOYW1lcykKLQkJCXsK LQkJCQlpZiAoc3RyY21wKHN0clZhbCh2YXJuYW1lKSwgbm9kZS0+dmFyTmFtZSkgPT0gMCkKLQkJ CQkJcmV0dXJuOwkJLyogQWxyZWFkeSBjb2xsZWN0ZWQgKi8KLQkJCX0KLQkJCSp2YXJOYW1lcyA9 IGxhcHBlbmQoKnZhck5hbWVzLCBtYWtlU3RyaW5nKHBzdHJkdXAobm9kZS0+dmFyTmFtZSkpKTsK LQkJCWJyZWFrOwotCi0JCWNhc2UgUlBSX1BBVFRFUk5fU0VROgotCQljYXNlIFJQUl9QQVRURVJO X0FMVDoKLQkJY2FzZSBSUFJfUEFUVEVSTl9HUk9VUDoKLQkJCWZvcmVhY2hfbm9kZShSUFJQYXR0 ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQotCQkJewotCQkJCWNvbGxlY3RQYXR0ZXJu VmFyaWFibGVzUmVjdXJzaXZlKGNoaWxkLCB2YXJOYW1lcyk7Ci0JCQl9Ci0JCQlicmVhazsKLQl9 Ci19Ci0KLS8qCi0gKiBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcwotICoJCUNvbGxlY3QgdW5pcXVl IHZhcmlhYmxlIG5hbWVzIHVzZWQgaW4gUEFUVEVSTiBjbGF1c2UuCi0gKgotICogUmV0dXJucyBh IGxpc3Qgb2YgU3RyaW5nIG5vZGVzIGNvbnRhaW5pbmcgdmFyaWFibGUgbmFtZXMuCi0gKiBVc2Vk IHRvIGZpbHRlciBkZWZpbmVDbGF1c2UgYmVmb3JlIHZhcklkIGFzc2lnbm1lbnQuCi0gKi8KLUxp c3QgKgotY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCi17 Ci0JTGlzdAkgICAqdmFyTmFtZXMgPSBOSUw7Ci0KLQkvKiBDYWxsZXIgZW5zdXJlcyBwYXR0ZXJu IGlzIG5vdCBOVUxMICovCi0JQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCk7Ci0KLQljb2xsZWN0UGF0 dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShwYXR0ZXJuLCAmdmFyTmFtZXMpOwotCXJldHVybiB2YXJO YW1lczsKLX0KLQogLyoKICAqIHJwcl92b2xhdGlsZV9mdW5jX2NoZWNrZXIKICAqCQljaGVja19m dW5jdGlvbnNfaW5fbm9kZSBjYWxsYmFjazogdHJ1ZSBpZiBmdW5jaWQgaXMgVk9MQVRJTEUuCkBA IC0xOTUzLDI3ICsxODk3LDYgQEAgdmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5KExpc3Qg KmRlZmluZUNsYXVzZSkKIAl9CiB9CiAKLS8qCi0gKiBidWlsZERlZmluZVZhcmlhYmxlTGlzdAot ICoJCUJ1aWxkIGRlZmluZVZhcmlhYmxlTGlzdCBmcm9tIGRlZmluZUNsYXVzZS4KLSAqCi0gKiBU aGUgcGFyc2VyIGFscmVhZHkgZW5zdXJlcyB0aGF0IGFsbCBERUZJTkUgdmFyaWFibGVzIGFwcGVh ciBpbiBQQVRURVJOLAotICogc28gbm8gZmlsdGVyaW5nIGlzIG5lZWRlZCBoZXJlLgotICoKLSAq IFNldHMgKmRlZmluZVZhcmlhYmxlTGlzdCB0byBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzIChTdHJp bmcgbm9kZXMpLgotICovCi12b2lkCi1idWlsZERlZmluZVZhcmlhYmxlTGlzdChMaXN0ICpkZWZp bmVDbGF1c2UsIExpc3QgKipkZWZpbmVWYXJpYWJsZUxpc3QpCi17Ci0JKmRlZmluZVZhcmlhYmxl TGlzdCA9IE5JTDsKLQotCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIGRlZmluZUNsYXVz ZSkKLQl7Ci0JCSpkZWZpbmVWYXJpYWJsZUxpc3QgPSBsYXBwZW5kKCpkZWZpbmVWYXJpYWJsZUxp c3QsCi0JCQkJCQkJCQkgIG1ha2VTdHJpbmcocHN0cmR1cCh0ZS0+cmVzbmFtZSkpKTsKLQl9Ci19 Ci0KIC8qCiAgKiBidWlsZFJQUlBhdHRlcm4KICAqCQlDb21waWxlIHBhdHRlcm4gQVNUIHRvIGZs YXQgYnl0ZWNvZGUgYXJyYXkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDViNGFjOGE2YzMzLi41 OWI4NjU2Yzg1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI2NTQsNyArMjY1NCw3IEBAIHR5 cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRlCiAJc3RydWN0IFJQUlBhdHRlcm4gKnJwUGF0dGVy bjsJLyogY29tcGlsZWQgcGF0dGVybiBmb3IgTkZBIGV4ZWN1dGlvbiAqLwogCUxpc3QJICAgKmRl ZmluZVZhcmlhYmxlTGlzdDsgLyogbGlzdCBvZiByb3cgcGF0dGVybiBkZWZpbml0aW9uCiAJCQkJ CQkJCQkgKiB2YXJpYWJsZXMgKGxpc3Qgb2YgU3RyaW5nKSAqLwotCUxpc3QJICAgKmRlZmluZUNs YXVzZUxpc3Q7CS8qIGV4cHJlc3Npb24gZm9yIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24KKwlMaXN0 CSAgICpkZWZpbmVDbGF1c2VFeHByczsJLyogZXhwcmVzc2lvbiBmb3Igcm93IHBhdHRlcm4gZGVm aW5pdGlvbgogCQkJCQkJCQkJICogc2VhcmNoIGNvbmRpdGlvbnMgRXhwclN0YXRlIGxpc3QgKi8K IAlSUFJORkFDb250ZXh0ICpuZmFDb250ZXh0OwkvKiBhY3RpdmUgbWF0Y2hpbmcgY29udGV4dHMg KGhlYWQpICovCiAJUlBSTkZBQ29udGV4dCAqbmZhQ29udGV4dFRhaWw7CS8qIHRhaWwgb2YgYWN0 aXZlIGNvbnRleHRzIChmb3IgcmV2ZXJzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA3YzFiM2Qx YmIwNy4uODU3NmEzYzljNWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC02ODcsNyArNjg3LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgUlBSTmF2RXhwcgogCUV4cHIJICAgKm9mZnNldF9hcmc7CQkvKiBv ZmZzZXQgZXhwcmVzc2lvbiwgb3IgTlVMTCBmb3IgZGVmYXVsdCAqLwogCUV4cHIJICAgKmNvbXBv dW5kX29mZnNldF9hcmc7CS8qIG91dGVyIG9mZnNldCBmb3IgY29tcG91bmQgbmF2LCBvcgogCQkJ CQkJCQkJCSAqIE5VTEwgaWYgc2ltcGxlICovCi0JT2lkCQkJcmVzdWx0dHlwZTsJCS8qIHJlc3Vs dCB0eXBlIChzYW1lIGFzIGFyZydzIHR5cGUpICovCisJLyogcmVzdWx0IHR5cGUgKHNhbWUgYXMg YXJnJ3MgdHlwZSkgKi8KKwlPaWQJCQlyZXN1bHR0eXBlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKIAkvKiBPSUQgb2YgY29sbGF0aW9uIG9mIHJlc3VsdCAqLwogCU9pZAkJCXJl c3VsdGNvbGxpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJLyogdG9rZW4g bG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29w dGltaXplci9ycHIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaAppbmRleCBiNGY4N2Q4 Y2FhNC4uMjM3NjM0NDJiNjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIu aAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKQEAgLTY3LDEwICs2Nyw3IEBACiAj ZGVmaW5lIFJQUkVsZW1Jc0ZpbihlKQkJCSgoZSktPnZhcklkID09IFJQUl9WQVJJRF9GSU4pCiAj ZGVmaW5lIFJQUkVsZW1DYW5Ta2lwKGUpCQkoKGUpLT5taW4gPT0gMCkKIAotZXh0ZXJuIExpc3Qg KmNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKIGV4dGVy biB2b2lkIHZhbGlkYXRlX3Jwcl9kZWZpbmVfdm9sYXRpbGl0eShMaXN0ICpkZWZpbmVDbGF1c2Up OwotZXh0ZXJuIHZvaWQgYnVpbGREZWZpbmVWYXJpYWJsZUxpc3QoTGlzdCAqZGVmaW5lQ2xhdXNl LAotCQkJCQkJCQkJTGlzdCAqKmRlZmluZVZhcmlhYmxlTGlzdCk7CiBleHRlcm4gUlBSUGF0dGVy biAqYnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVW YXJpYWJsZUxpc3QsCiAJCQkJCQkJCSAgIFJQU2tpcFRvIHJwU2tpcFRvLCBpbnQgZnJhbWVPcHRp b25zLAogCQkJCQkJCQkgICBib29sIGhhc01hdGNoU3RhcnREZXBlbmRlbnQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CmluZGV4IDgwYTMyY2NhOWFi Li42NTI5ODk5MjdkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf aW50ZWdyYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVn cmF0aW9uLm91dApAQCAtMjQwLDkgKzI0MCw5IEBAIE9SREVSIEJZIGlkOwogLS0gbXVzdCB0aGVy ZWZvcmUgeWllbGQgdHdvIHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4gIElubGluZSBzcGVjcwog LS0gYXJlIHVzZWQgaGVyZSBiZWNhdXNlIGRlZHVwIG9ubHkgYXBwbGllcyB0byBpbmxpbmUgd2lu ZG93cy4KIC0tIEJhc2VsaW5lOiB0d28gaW5saW5lIFJQUiB3aW5kb3dzIHRoYXQgYXJlIHN0cnVj dHVyYWxseSBpZGVudGljYWwKLS0tIChzYW1lIE9SREVSIEJZLCBmcmFtZSwgUEFUVEVSTiwgYW5k IERFRklORSkgYXJlIGRlZHVwZWQgYnkgdGhlCi0tLSBwYXJzZXIgaW50byBhIHNpbmdsZSBXaW5k b3dBZ2cgbm9kZSwgY29uZmlybWluZyB0aGF0IHBhcnNlci1sZXZlbAotLS0gZGVkdXAgaXMgYWN0 aXZlIGZvciBSUFIgd2luZG93cyB3aG9zZSBERUZJTkUgbWF0Y2hlcy4KKy0tIChzYW1lIFBBUlRJ VElPTiBCWSwgT1JERVIgQlksIGZyYW1lLCBQQVRURVJOLCBhbmQgREVGSU5FKSBhcmUgZGVkdXBl ZCBieSB0aGUKKy0tIHBhcnNlciBpbnRvIGEgc2luZ2xlIFdpbmRvd0FnZyBub2RlLCBjb25maXJt aW5nIHRoYXQgcGFyc2VyLWxldmVsIGRlZHVwIGlzCistLSBhY3RpdmUgZm9yIFJQUiB3aW5kb3dz IHdob3NlIERFRklORSBtYXRjaGVzLgogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUCiAgICAg Y291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKQEAgLTMyNSwxNSArMzI1LDEwIEBAIE9SREVSIEJZ IGlkOwogLS0gQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBwcmV2ZW50aW9uCiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IFZlcmlmeSB0aGF0IHJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cygpIGRvZXMgbm90IGRy b3AgYW4gUlBSCi0tLSB3aW5kb3cgZnVuY3Rpb24gZXZlbiB3aGVuIHRoZSBvdXRlciBxdWVyeSBk b2VzIG5vdCByZWZlcmVuY2UgaXRzCi0tLSByZXN1bHQuICBUaGUgUlBSIFdpbmRvd0FnZyBub2Rl IGlzIHJlc3BvbnNpYmxlIGZvciBwZXJmb3JtaW5nIHBhdHRlcm4KLS0tIG1hdGNoaW5nLCBzbyBy ZW1vdmluZyB0aGUgd2luZG93IGZ1bmN0aW9uIHdvdWxkIHNpbGVudGx5IHNraXAgdGhlCi0tLSBw YXR0ZXJuIG1hdGNoIGV2ZW4gdGhvdWdoIHRoZSBzdXJyb3VuZGluZyBxdWVyeSBzdGlsbCBkZXBl bmRzIG9uCi0tLSBSUFIgc2VtYW50aWNzLgotLS0gVGhlIG91dGVyIHF1ZXJ5IGlnbm9yZXMgdGhl IHBlci1yb3cgd2luZG93IHJlc3VsdCwgeWV0IHBhdHRlcm4KLS0tIG1hdGNoaW5nIG11c3Qgc3Rp bGwgZXhlY3V0ZS4gIFRoZSBwbGFuIG11c3Qgc3RpbGwgY29udGFpbiBhCi0tLSBXaW5kb3dBZ2cg bm9kZSBiZWxvdyB0aGUgb3V0ZXIgQWdncmVnYXRlOyBpZiB0aGUgd2luZG93IHdlcmUKLS0tIHJl bW92ZWQsIG9ubHkgQWdncmVnYXRlICsgU2VxIFNjYW4gd291bGQgYXBwZWFyLgorLS0gd2luZG93 IGZ1bmN0aW9uIHdoZW4gdGhlIG91dGVyIHF1ZXJ5IGRvZXMgbm90IHJlZmVyZW5jZSBpdHMgcmVz dWx0LgorLS0gVGhlIFdpbmRvd0FnZyBub2RlIHBlcmZvcm1zIHRoZSBwYXR0ZXJuIG1hdGNoIGl0 c2VsZjsgd2l0aG91dCBpdCwKKy0tIHRoZSBtYXRjaCB3b3VsZCBiZSBzaWxlbnRseSBza2lwcGVk LiAgVGhlIHBsYW4gbXVzdCBjb250YWluIGEKKy0tIFdpbmRvd0FnZyBub2RlIGJlbmVhdGggdGhl IG91dGVyIEFnZ3JlZ2F0ZS4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBG Uk9NICgKICAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCkBAIC01ODcs MTAgKzU4Miw4IEBAIFdIRVJFIGNudCA+IDA7CiAtLSBFWFBMQUlOIFZFUkJPU0UgaXMgdGhlcmVm b3JlIGV4cGVjdGVkIHRvIHNob3cgYSBjbGVhbiB0YXJnZXRsaXN0IG9uCiAtLSB0aGUgb3V0ZXIg V2luZG93QWdnLCB3aXRoIG5vIERFRklORS1kZXJpdmVkIGV4cHJlc3Npb24gbGVha2luZyBpbi4K IC0tIE5vdGU6IGNvbHVtbnMgcmVmZXJlbmNlZCBieSBERUZJTkUgKGUuZy4sICJ2YWwiKSBtYXkg YXBwZWFyIGFzCi0tLSByZXNqdW5rIGVudHJpZXMgaW4gdXBwZXIgV2luZG93QWdnIHRhcmdldGxp c3RzIC0tIHRoYXQgaXMgYQotLS0gaGFybWxlc3MgYnlwcm9kdWN0IG9mIHRoZSBjb2x1bW4gZ3Vh cmQncyBicm9hZCBzY29wZSBhbmQgZG9lcyBub3QKLS0tIGFmZmVjdCBjbGllbnQgb3V0cHV0LiAg VGhlIGNsYWltIGhlcmUgaXMgbGltaXRlZCB0byB0aGUgZnVsbAotLS0gREVGSU5FIGJvb2xlYW4g ZXhwcmVzc2lvbi4KKy0tIHJlc2p1bmsgZW50cmllcyBpbiB1cHBlciBXaW5kb3dBZ2cgdGFyZ2V0 bGlzdHMgLS0gYnV0IHRoYXQgaXMgaGFybWxlc3MuCistLSBUaGUgY2xhaW0gaGVyZSBpcyBsaW1p dGVkIHRvIHRoZSBmdWxsIERFRklORSBib29sZWFuIGV4cHJlc3Npb24uCiBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCiBTRUxFQ1QKICAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJwcl9j bnQsCkBAIC02MjAsMTAgKzYxMyw2IEBAIFdJTkRPVwogICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiBpZCwgdmFsCiAoMTMgcm93cykKIAotLS0gRXhlY3V0aW5nIHRoZSBzYW1lIHF1ZXJ5IHNo b3dzIHRoZSBjbGllbnQgcmVzdWx0IGlzIGxpbWl0ZWQgdG8KLS0tIHRoZSB0d28gcHJvamVjdGVk IGNvbHVtbnM7ICJpZCIgYW5kICJ2YWwiIHRoYXQgYXBwZWFyZWQgaW4gdGhlCi0tLSB1cHBlciBX aW5kb3dBZ2cgT3V0cHV0IGxpbmUgYXJlIHJlc2p1bmstb25seSBhbmQgZG8gbm90IHJlYWNoCi0t LSB0aGUgY2xpZW50LgogU0VMRUNUCiAgICAgY291bnQoKikgT1ZFUiB3X3JwciBBUyBycHJfY250 LAogICAgIGNvdW50KCopIE9WRVIgd19ub3JtYWwgQVMgbm9ybWFsX2NudApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKaW5kZXggMWQ2MDc1MjY1YmIuLjJiOTkwYjI0NzA0 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKQEAgLTE2Niw5ICsx NjYsOSBAQCBPUkRFUiBCWSBpZDsKIC0tIGFyZSB1c2VkIGhlcmUgYmVjYXVzZSBkZWR1cCBvbmx5 IGFwcGxpZXMgdG8gaW5saW5lIHdpbmRvd3MuCiAKIC0tIEJhc2VsaW5lOiB0d28gaW5saW5lIFJQ UiB3aW5kb3dzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwKLS0tIChzYW1lIE9SREVS IEJZLCBmcmFtZSwgUEFUVEVSTiwgYW5kIERFRklORSkgYXJlIGRlZHVwZWQgYnkgdGhlCi0tLSBw YXJzZXIgaW50byBhIHNpbmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29uZmlybWluZyB0aGF0IHBhcnNl ci1sZXZlbAotLS0gZGVkdXAgaXMgYWN0aXZlIGZvciBSUFIgd2luZG93cyB3aG9zZSBERUZJTkUg bWF0Y2hlcy4KKy0tIChzYW1lIFBBUlRJVElPTiBCWSwgT1JERVIgQlksIGZyYW1lLCBQQVRURVJO LCBhbmQgREVGSU5FKSBhcmUgZGVkdXBlZCBieSB0aGUKKy0tIHBhcnNlciBpbnRvIGEgc2luZ2xl IFdpbmRvd0FnZyBub2RlLCBjb25maXJtaW5nIHRoYXQgcGFyc2VyLWxldmVsIGRlZHVwIGlzCist LSBhY3RpdmUgZm9yIFJQUiB3aW5kb3dzIHdob3NlIERFRklORSBtYXRjaGVzLgogRVhQTEFJTiAo Q09TVFMgT0ZGKQogU0VMRUNUCiAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKQEAgLTIx NCwxNiArMjE0LDEwIEBAIE9SREVSIEJZIGlkOwogLS0gQTUuIFVudXNlZCB3aW5kb3cgcmVtb3Zh bCBwcmV2ZW50aW9uCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tIFZlcmlmeSB0aGF0IHJlbW92ZV91bnVzZWRfc3VicXVl cnlfb3V0cHV0cygpIGRvZXMgbm90IGRyb3AgYW4gUlBSCi0tLSB3aW5kb3cgZnVuY3Rpb24gZXZl biB3aGVuIHRoZSBvdXRlciBxdWVyeSBkb2VzIG5vdCByZWZlcmVuY2UgaXRzCi0tLSByZXN1bHQu ICBUaGUgUlBSIFdpbmRvd0FnZyBub2RlIGlzIHJlc3BvbnNpYmxlIGZvciBwZXJmb3JtaW5nIHBh dHRlcm4KLS0tIG1hdGNoaW5nLCBzbyByZW1vdmluZyB0aGUgd2luZG93IGZ1bmN0aW9uIHdvdWxk IHNpbGVudGx5IHNraXAgdGhlCi0tLSBwYXR0ZXJuIG1hdGNoIGV2ZW4gdGhvdWdoIHRoZSBzdXJy b3VuZGluZyBxdWVyeSBzdGlsbCBkZXBlbmRzIG9uCi0tLSBSUFIgc2VtYW50aWNzLgotCi0tLSBU aGUgb3V0ZXIgcXVlcnkgaWdub3JlcyB0aGUgcGVyLXJvdyB3aW5kb3cgcmVzdWx0LCB5ZXQgcGF0 dGVybgotLS0gbWF0Y2hpbmcgbXVzdCBzdGlsbCBleGVjdXRlLiAgVGhlIHBsYW4gbXVzdCBzdGls bCBjb250YWluIGEKLS0tIFdpbmRvd0FnZyBub2RlIGJlbG93IHRoZSBvdXRlciBBZ2dyZWdhdGU7 IGlmIHRoZSB3aW5kb3cgd2VyZQotLS0gcmVtb3ZlZCwgb25seSBBZ2dyZWdhdGUgKyBTZXEgU2Nh biB3b3VsZCBhcHBlYXIuCistLSB3aW5kb3cgZnVuY3Rpb24gd2hlbiB0aGUgb3V0ZXIgcXVlcnkg ZG9lcyBub3QgcmVmZXJlbmNlIGl0cyByZXN1bHQuCistLSBUaGUgV2luZG93QWdnIG5vZGUgcGVy Zm9ybXMgdGhlIHBhdHRlcm4gbWF0Y2ggaXRzZWxmOyB3aXRob3V0IGl0LAorLS0gdGhlIG1hdGNo IHdvdWxkIGJlIHNpbGVudGx5IHNraXBwZWQuICBUaGUgcGxhbiBtdXN0IGNvbnRhaW4gYQorLS0g V2luZG93QWdnIG5vZGUgYmVuZWF0aCB0aGUgb3V0ZXIgQWdncmVnYXRlLgogRVhQTEFJTiAoQ09T VFMgT0ZGKQogU0VMRUNUIGNvdW50KCopIEZST00gKAogICAgIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcgRlJPTSBycHJfaW50ZWcKQEAgLTM5OSwxMSArMzkzLDggQEAgV0hFUkUgY250ID4gMDsKIC0t IEVYUExBSU4gVkVSQk9TRSBpcyB0aGVyZWZvcmUgZXhwZWN0ZWQgdG8gc2hvdyBhIGNsZWFuIHRh cmdldGxpc3Qgb24KIC0tIHRoZSBvdXRlciBXaW5kb3dBZ2csIHdpdGggbm8gREVGSU5FLWRlcml2 ZWQgZXhwcmVzc2lvbiBsZWFraW5nIGluLgogLS0gTm90ZTogY29sdW1ucyByZWZlcmVuY2VkIGJ5 IERFRklORSAoZS5nLiwgInZhbCIpIG1heSBhcHBlYXIgYXMKLS0tIHJlc2p1bmsgZW50cmllcyBp biB1cHBlciBXaW5kb3dBZ2cgdGFyZ2V0bGlzdHMgLS0gdGhhdCBpcyBhCi0tLSBoYXJtbGVzcyBi eXByb2R1Y3Qgb2YgdGhlIGNvbHVtbiBndWFyZCdzIGJyb2FkIHNjb3BlIGFuZCBkb2VzIG5vdAot LS0gYWZmZWN0IGNsaWVudCBvdXRwdXQuICBUaGUgY2xhaW0gaGVyZSBpcyBsaW1pdGVkIHRvIHRo ZSBmdWxsCi0tLSBERUZJTkUgYm9vbGVhbiBleHByZXNzaW9uLgotCistLSByZXNqdW5rIGVudHJp ZXMgaW4gdXBwZXIgV2luZG93QWdnIHRhcmdldGxpc3RzIC0tIGJ1dCB0aGF0IGlzIGhhcm1sZXNz LgorLS0gVGhlIGNsYWltIGhlcmUgaXMgbGltaXRlZCB0byB0aGUgZnVsbCBERUZJTkUgYm9vbGVh biBleHByZXNzaW9uLgogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQogU0VMRUNUCiAgICAg Y291bnQoKikgT1ZFUiB3X3JwciBBUyBycHJfY250LApAQCAtNDE3LDEwICs0MDgsNiBAQCBXSU5E T1cKICAgICB3X25vcm1hbCBBUyAoT1JERVIgQlkgaWQKICAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKTsKIAotLS0gRXhlY3V0aW5nIHRoZSBz YW1lIHF1ZXJ5IHNob3dzIHRoZSBjbGllbnQgcmVzdWx0IGlzIGxpbWl0ZWQgdG8KLS0tIHRoZSB0 d28gcHJvamVjdGVkIGNvbHVtbnM7ICJpZCIgYW5kICJ2YWwiIHRoYXQgYXBwZWFyZWQgaW4gdGhl Ci0tLSB1cHBlciBXaW5kb3dBZ2cgT3V0cHV0IGxpbmUgYXJlIHJlc2p1bmstb25seSBhbmQgZG8g bm90IHJlYWNoCi0tLSB0aGUgY2xpZW50LgogU0VMRUNUCiAgICAgY291bnQoKikgT1ZFUiB3X3Jw ciBBUyBycHJfY250LAogICAgIGNvdW50KCopIE9WRVIgd19ub3JtYWwgQVMgbm9ybWFsX2NudAot LSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0007-tidy-plumbing-more.txt" Content-Disposition: attachment; filename="nocfbot-0007-tidy-plumbing-more.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jj6 RnJvbSA0Y2Y5MTA4Y2U3Nzk2YTM4MjE4NzNmODM3N2M5NWUzNDc5OTc2MGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDE0OjA1OjI1ICswOTAwClN1YmplY3Q6IFtQQVRDSCAwNy8xM10g RnVydGhlciB0aWR5IHVwIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBsdW1iaW5nCgpNb3JlIGJl aGF2aW9yLW5ldXRyYWwgY2xlYW51cHMgdG8gdGhlIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGNv ZGUsCmNvbnRpbnVpbmcgdGhlIHByZXZpb3VzIHRpZHktdXAgYW5kIHdpdGggbm8gY2hhbmdlIHRv IHBsYW5uZXIgb3IKZXhlY3V0b3Igb3V0cHV0OgoKLSBEcm9wIHRoZSBub3ctdW51c2VkIFdpbmRv d0NsYXVzZSBhcmd1bWVudCBvZiB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoKQogIGFuZCBmbGF0dGVu IHRoZSByZWR1bmRhbnQgbmVzdGVkIGJsb2NrIGluIGl0cyBERUZJTkUtdmFyaWFibGUgbG9vcC4K Ci0gUmVwbGFjZSBtYW51YWwgTGlzdENlbGwgaXRlcmF0aW9uIGFuZCBpbmRleCBib29ra2VlcGlu ZyB3aXRoCiAgZm9yZWFjaF9ub2RlKCkvZm9yZWFjaF9jdXJyZW50X2luZGV4KCkgaW4KICB2YWxp ZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0aWxpdHkoKSBhbmQgbmZhX2V2YWx1YXRlX3JvdygpLCBhbmQg ZHJvcCB0aGUKICByZWR1bmRhbnQgZW5kLW9mLWxpc3QgYnJlYWsgdGVzdHMgaW4gbmZhX2V2YWx1 YXRlX3JvdygpIGFuZAogIG5mYV9yZWV2YWx1YXRlX2RlcGVuZGVudF92YXJzKCkgbm93IHRoYXQg dGhlIGxvb3BzIHdhbGsKICBkZWZpbmVDbGF1c2VFeHBycyBkaXJlY3RseS4KCi0gVGVzdCB3aW5z dGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0IGFnYWluc3QgTklMIGluc3RlYWQgb2YKICBsaXN0X2xl bmd0aCgpID4gMCBpbiBFeGVjSW5pdFdpbmRvd0FnZygpLgoKLSBSZW1vdmUgdGhlIG5vdy11bnVz ZWQgbWFrZWZ1bmNzLmggaW5jbHVkZSBmcm9tIHBsYW4vcnByLmMuCgotIEZpeCB0aGUgc3RhbGUg c3RydWN0IG5hbWUgaW4gdGhlIFJQQ29tbW9uU3ludGF4IGhlYWRlciBjb21tZW50LgotLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyAgICAgICB8ICAzIC0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8ICA5ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcnByLmMgICAgIHwgIDcgKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgICAg ICAgfCA4NCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25z KCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKaW5kZXggZGVmMGI4NDIz YjMuLjA5OWI4MWFlYjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBS LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCkBAIC0xNjE4LDkgKzE2MTgs NiBAQCBuZmFfcmVldmFsdWF0ZV9kZXBlbmRlbnRfdmFycyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKIAkJCXJlc3VsdCA9IEV4ZWNFdmFsRXhwcihleHByU3Rh dGUsIGVjb250ZXh0LCAmaXNudWxsKTsKIAkJCXdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkW3Zhcklk eF0gPSAoIWlzbnVsbCAmJiBEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAJCX0KLQotCQlpZiAodmFy SWR4ICsgMSA+PSBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0KSkKLQkJ CWJyZWFrOwogCX0KIAogCS8qIFJlc3RvcmUgb3JpZ2luYWwgbWF0Y2hfc3RhcnQsIGN1cnJlbnRw b3MsIGFuZCBpbnZhbGlkYXRlIGNhY2hlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKaW5kZXggNWQ0ODMyZDFkYjkuLjgxOWFkODE0YmY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jCkBAIC0zMTAzLDcgKzMxMDMsNyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5k b3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9yZGVyaW5nIChE RUZJTkUgb3JkZXIgZmlyc3QpLCB2YXJJZCA9PSBkZWZpbmVJZHggZm9yIGFsbCBkZWZpbmVkCiAJ ICogdmFyaWFibGVzLCBzbyBubyBtYXBwaW5nIGlzIG5lZWRlZC4KIAkgKi8KLQlpZiAobGlzdF9s ZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCkgPiAwKQorCWlmICh3aW5zdGF0ZS0+ ZGVmaW5lVmFyaWFibGVMaXN0ICE9IE5JTCkKIAkJd2luc3RhdGUtPm5mYVZhck1hdGNoZWQgPSBw YWxsb2MwKHNpemVvZihib29sKSAqCiAJCQkJCQkJCQkJICBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ ZGVmaW5lVmFyaWFibGVMaXN0KSk7CiAJZWxzZQpAQCAtNDY0Miw4ICs0NjQyLDYgQEAgbmZhX2V2 YWx1YXRlX3JvdyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNo ZWQpCiB7CiAJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKIAlF eHByQ29udGV4dCAqZWNvbnRleHQgPSB3aW5zdGF0ZS0+cnByQ29udGV4dDsKLQlpbnQJCQludW1E ZWZpbmVWYXJzID0gbGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCk7Ci0J aW50CQkJdmFySWR4ID0gMDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKIAlpbnQ2NAkJc2F2ZWRf cG9zOwogCkBAIC00NjcwLDYgKzQ2NjgsNyBAQCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVj dCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAqdmFyTWF0Y2hlZCkKIAogCWZvcmVhY2hfcHRyKEV4 cHJTdGF0ZSwgZXhwclN0YXRlLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlRXhwcnMpCiAJeworCQlp bnQJCQl2YXJJZHggPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoZXhwclN0YXRlKTsKIAkJRGF0dW0J CXJlc3VsdDsKIAkJYm9vbAkJaXNudWxsOwogCkBAIC00Njc3LDEwICs0Njc2LDYgQEAgbmZhX2V2 YWx1YXRlX3JvdyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNo ZWQpCiAJCXJlc3VsdCA9IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNudWxs KTsKIAogCQl2YXJNYXRjaGVkW3ZhcklkeF0gPSAoIWlzbnVsbCAmJiBEYXR1bUdldEJvb2wocmVz dWx0KSk7Ci0KLQkJdmFySWR4Kys7Ci0JCWlmICh2YXJJZHggPj0gbnVtRGVmaW5lVmFycykKLQkJ CWJyZWFrOwogCX0KIAogCXdpbnN0YXRlLT5jdXJyZW50cG9zID0gc2F2ZWRfcG9zOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9ycHIuYwppbmRleCA0OGI3NmE4NDJlZC4uNTk3YTk2NmM3YjEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3Jwci5jCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKLSNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJv dC5oIgpAQCAtMTg4NywxMiArMTg4Niw4IEBAIHJlamVjdF92b2xhdGlsZV9pbl9kZWZpbmVfd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiB2b2lkCiB2YWxpZGF0ZV9ycHJfZGVmaW5l X3ZvbGF0aWxpdHkoTGlzdCAqZGVmaW5lQ2xhdXNlKQogewotCUxpc3RDZWxsICAgKmxjOwotCi0J Zm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQorCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUs IGRlZmluZUNsYXVzZSkKIAl7Ci0JCVRhcmdldEVudHJ5ICp0ZSA9IGxmaXJzdF9ub2RlKFRhcmdl dEVudHJ5LCBsYyk7Ci0KIAkJKHZvaWQpIHJlamVjdF92b2xhdGlsZV9pbl9kZWZpbmVfd2Fsa2Vy KChOb2RlICopIHRlLT5leHByLCBOVUxMKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcnByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5k ZXggOGVkMDFiYjhmMjguLjNlNmIyZTU3OWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC01 NCw4ICs1NCw4IEBAIHR5cGVkZWYgc3RydWN0CiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwog c3RhdGljIHZvaWQgdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwKIAkJCQkJCQkJCSAgIExpc3QgKnJwRGVmcywgTGlzdCAq KnZhck5hbWVzKTsKLXN0YXRpYyBMaXN0ICp0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLAotCQkJCQkJCQkgICBXaW5kb3dEZWYgKndpbmRl ZiwgTGlzdCAqKnRhcmdldGxpc3QpOworc3RhdGljIExpc3QgKnRyYW5zZm9ybURlZmluZUNsYXVz ZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0RlZiAqd2luZGVmLAorCQkJCQkJCQkgICBMaXN0 ICoqdGFyZ2V0bGlzdCk7CiBzdGF0aWMgYm9vbCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZv aWQgKmNvbnRleHQpOwogCiAvKgpAQCAtMTc4LDcgKzE3OCw3IEBAIHRyYW5zZm9ybVJQUihQYXJz ZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCXdj LT5pbml0aWFsID0gd2luZGVmLT5ycENvbW1vblN5bnRheC0+aW5pdGlhbDsKIAogCS8qIFRyYW5z Zm9ybSBERUZJTkUgY2xhdXNlIGludG8gbGlzdCBvZiBUYXJnZXRFbnRyeSdzICovCi0Jd2MtPmRl ZmluZUNsYXVzZSA9IHRyYW5zZm9ybURlZmluZUNsYXVzZShwc3RhdGUsIHdjLCB3aW5kZWYsIHRh cmdldGxpc3QpOworCXdjLT5kZWZpbmVDbGF1c2UgPSB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UocHN0 YXRlLCB3aW5kZWYsIHRhcmdldGxpc3QpOwogCiAJLyogU3RvcmUgUEFUVEVSTiBBU1QgZm9yIGRl cGFyc2luZyAqLwogCXdjLT5ycFBhdHRlcm4gPSB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycFBh dHRlcm47CkBAIC0zMTMsNyArMzEzLDcgQEAgdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwKICAqIHBhcnNlX2V4cHIuYyB2 aWEgdGhlIHBfcnByX3BhdHRlcm5fdmFycyBjaGVjay4KICAqLwogc3RhdGljIExpc3QgKgotdHJh bnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3Yywg V2luZG93RGVmICp3aW5kZWYsCit0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkJCQkJICBMaXN0ICoqdGFyZ2V0bGlzdCkKIHsKIAlM aXN0CSAgICpyZXN0YXJnZXRzOwpAQCAtMzQ1LDYgKzM0NSw4IEBAIHRyYW5zZm9ybURlZmluZUNs YXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2lu ZGVmLAogCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHJlc3RhcmdldCwgd2luZGVmLT5ycENvbW1v blN5bnRheC0+cnBEZWZzKQogCXsKIAkJVGFyZ2V0RW50cnkgKnRlRGVmaW5lOworCQlOb2RlCSAg ICpleHByOworCQlMaXN0CSAgICp2YXJzOwogCiAJCW5hbWUgPSByZXN0YXJnZXQtPm5hbWU7CiAK QEAgLTM3NCw1NCArMzc2LDQ4IEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCQkgKiB0aGUgaW5k aXZpZHVhbCBWYXIgbm9kZXMgaXQgcmVmZXJlbmNlcyBhcmUgcHJlc2VudCBpbiB0aGUKIAkJICog dGFyZ2V0bGlzdCwgc28gdGhlIHBsYW5uZXIgY2FuIHByb3BhZ2F0ZSB0aGUgcmVmZXJlbmNlZCBj b2x1bW5zLgogCQkgKi8KLQkJewotCQkJTm9kZQkgICAqZXhwcjsKLQkJCUxpc3QJICAgKnZhcnM7 CisJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgcmVzdGFyZ2V0LT52YWwsCisJCQkJCQkJ IEVYUFJfS0lORF9SUFJfREVGSU5FKTsKIAotCQkJZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRl LCByZXN0YXJnZXQtPnZhbCwKLQkJCQkJCQkJIEVYUFJfS0lORF9SUFJfREVGSU5FKTsKKwkJLyoK KwkJICogUHVsbCBvdXQgVmFyIG5vZGVzIGZyb20gdGhlIHRyYW5zZm9ybWVkIGV4cHJlc3Npb24g YW5kIGVuc3VyZSBlYWNoCisJCSAqIG9uZSBpcyBwcmVzZW50IGluIHRoZSB0YXJnZXRsaXN0LiAg VGhpcyBpcyBuZWVkZWQgc28gdGhlIHBsYW5uZXIKKwkJICogcHJvcGFnYXRlcyB0aGUgcmVmZXJl bmNlZCBjb2x1bW5zIHRocm91Z2ggdGhlIHBsYW4gdHJlZSwgbWFraW5nCisJCSAqIHRoZW0gYXZh aWxhYmxlIHRvIHRoZSBXaW5kb3dBZ2cncyBERUZJTkUgZXZhbHVhdGlvbi4KKwkJICovCisJCXZh cnMgPSBwdWxsX3Zhcl9jbGF1c2UoZXhwciwgMCk7CisJCWZvcmVhY2hfbm9kZShWYXIsIHZhciwg dmFycykKKwkJeworCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAotCQkJLyoKLQkJCSAqIFB1bGwg b3V0IFZhciBub2RlcyBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByZXNzaW9uIGFuZCBlbnN1cmUK LQkJCSAqIGVhY2ggb25lIGlzIHByZXNlbnQgaW4gdGhlIHRhcmdldGxpc3QuICBUaGlzIGlzIG5l ZWRlZCBzbyB0aGUKLQkJCSAqIHBsYW5uZXIgcHJvcGFnYXRlcyB0aGUgcmVmZXJlbmNlZCBjb2x1 bW5zIHRocm91Z2ggdGhlIHBsYW4KLQkJCSAqIHRyZWUsIG1ha2luZyB0aGVtIGF2YWlsYWJsZSB0 byB0aGUgV2luZG93QWdnJ3MgREVGSU5FCi0JCQkgKiBldmFsdWF0aW9uLgotCQkJICovCi0JCQl2 YXJzID0gcHVsbF92YXJfY2xhdXNlKGV4cHIsIDApOwotCQkJZm9yZWFjaF9ub2RlKFZhciwgdmFy LCB2YXJzKQorCQkJZm9yZWFjaF9ub2RlKFRhcmdldEVudHJ5LCB0bGUsICp0YXJnZXRsaXN0KQog CQkJewotCQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7Ci0KLQkJCQlmb3JlYWNoX25vZGUoVGFyZ2V0 RW50cnksIHRsZSwgKnRhcmdldGxpc3QpCisJCQkJaWYgKElzQSh0bGUtPmV4cHIsIFZhcikgJiYK KwkJCQkJKChWYXIgKikgdGxlLT5leHByKS0+dmFybm8gPT0gdmFyLT52YXJubyAmJgorCQkJCQko KFZhciAqKSB0bGUtPmV4cHIpLT52YXJhdHRubyA9PSB2YXItPnZhcmF0dG5vKQogCQkJCXsKLQkJ CQkJaWYgKElzQSh0bGUtPmV4cHIsIFZhcikgJiYKLQkJCQkJCSgoVmFyICopIHRsZS0+ZXhwcikt PnZhcm5vID09IHZhci0+dmFybm8gJiYKLQkJCQkJCSgoVmFyICopIHRsZS0+ZXhwciktPnZhcmF0 dG5vID09IHZhci0+dmFyYXR0bm8pCi0JCQkJCXsKLQkJCQkJCWZvdW5kID0gdHJ1ZTsKLQkJCQkJ CWJyZWFrOwotCQkJCQl9Ci0JCQkJfQotCQkJCWlmICghZm91bmQpCi0JCQkJewotCQkJCQlUYXJn ZXRFbnRyeSAqbmV3dGxlOwotCi0JCQkJCW5ld3RsZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAq KSBjb3B5T2JqZWN0KHZhciksCi0JCQkJCQkJCQkJCSBsaXN0X2xlbmd0aCgqdGFyZ2V0bGlzdCkg KyAxLAotCQkJCQkJCQkJCQkgTlVMTCwKLQkJCQkJCQkJCQkJIHRydWUpOwotCQkJCQkqdGFyZ2V0 bGlzdCA9IGxhcHBlbmQoKnRhcmdldGxpc3QsIG5ld3RsZSk7CisJCQkJCWZvdW5kID0gdHJ1ZTsK KwkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQotCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJaWYgKCFm b3VuZCkKKwkJCXsKKwkJCQlUYXJnZXRFbnRyeSAqbmV3dGxlOwogCi0JCQkvKiBCdWlsZCB0aGUg ZGVmaW5lQ2xhdXNlIGVudHJ5IGRpcmVjdGx5IGZyb20gdGhlIHRyYW5zZm9ybWVkIGV4cHIgKi8K LQkJCXRlRGVmaW5lID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIGV4cHIsCi0JCQkJCQkJCQkg ICBsaXN0X2xlbmd0aChkZWZpbmVDbGF1c2UpICsgMSwKLQkJCQkJCQkJCSAgIHBzdHJkdXAobmFt ZSksCi0JCQkJCQkJCQkgICB0cnVlKTsKKwkJCQluZXd0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgY29weU9iamVjdCh2YXIpLAorCQkJCQkJCQkJCSBsaXN0X2xlbmd0aCgqdGFyZ2V0bGlz dCkgKyAxLAorCQkJCQkJCQkJCSBOVUxMLAorCQkJCQkJCQkJCSB0cnVlKTsKKwkJCQkqdGFyZ2V0 bGlzdCA9IGxhcHBlbmQoKnRhcmdldGxpc3QsIG5ld3RsZSk7CisJCQl9CiAJCX0KKwkJbGlzdF9m cmVlKHZhcnMpOworCisJCS8qIEJ1aWxkIHRoZSBkZWZpbmVDbGF1c2UgZW50cnkgZGlyZWN0bHkg ZnJvbSB0aGUgdHJhbnNmb3JtZWQgZXhwciAqLworCQl0ZURlZmluZSA9IG1ha2VUYXJnZXRFbnRy eSgoRXhwciAqKSBleHByLAorCQkJCQkJCQkgICBsaXN0X2xlbmd0aChkZWZpbmVDbGF1c2UpICsg MSwKKwkJCQkJCQkJICAgcHN0cmR1cChuYW1lKSwKKwkJCQkJCQkJICAgdHJ1ZSk7CiAKIAkJLyog YnVpbGQgdHJhbnNmb3JtZWQgREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJnZXRFbnRyeSkgKi8K IAkJZGVmaW5lQ2xhdXNlID0gbGFwcGVuZChkZWZpbmVDbGF1c2UsIHRlRGVmaW5lKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAppbmRleCBlMzA5ZGZiZGI2Ni4uOTQ3ZTY2ODAyMGUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTY0NCw3ICs2NDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSUFJQYXR0ZXJu Tm9kZQogfSBSUFJQYXR0ZXJuTm9kZTsKIAogLyoKLSAqIFJvd1BhdHRlcm5Db21tb25TeW50YXgg LSByYXcgcmVwcmVzZW50YXRpb24gb2Ygcm93IHBhdHRlcm4gY29tbW9uIHN5bnRheAorICogUlBD b21tb25TeW50YXggLSByYXcgcmVwcmVzZW50YXRpb24gb2Ygcm93IHBhdHRlcm4gY29tbW9uIHN5 bnRheAogICovCiB0eXBlZGVmIHN0cnVjdCBSUENvbW1vblN5bnRheAogewotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0008-refactor-define.txt" Content-Disposition: attachment; filename="nocfbot-0008-refactor-define.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jm7 RnJvbSA3YTY5Y2I4MThlNGQxYzM3OTk4MjY2YThjMTg4M2Q1NDU0YThkOWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDE0OjU1OjUxICswOTAwClN1YmplY3Q6IFtQQVRDSCAwOC8xM10g UmVmYWN0b3IgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlIGluIHJvdyBwYXR0ZXJuCiByZWNvZ25pdGlv bgoKVHdvIHJlbGF0ZWQgY2xlYW51cHMgdG8gREVGSU5FIGNsYXVzZSBwYXJzZSBhbmFseXNpcywg d2l0aCBubyBjaGFuZ2UgdG8KcGxhbm5lciBvciBleGVjdXRvciBvdXRwdXQgYmV5b25kIG9uZSBl cnJvci1jdXJzb3IgcG9zaXRpb246CgotIEhvaXN0IHRoZSAiREVGSU5FIHZhcmlhYmxlIG5vdCB1 c2VkIGluIFBBVFRFUk4iIGNyb3NzLWNoZWNrIG91dCBvZiB0aGUKICByZWN1cnNpdmUgdmFsaWRh dGVSUFJQYXR0ZXJuVmFyQ291bnQoKSBpbnRvIGl0cyBjYWxsZXIuICBUaGUgY2hlY2sgb25seQog IG5lZWRzIHRvIHJ1biBvbmNlLCBzbyB0aGUgcnBEZWZzIGFyZ3VtZW50IGFuZCBpdHMgTlVMTC1z ZW50aW5lbCBnYXRpbmcKICBhcmUgZ29uZSwgYW5kIHRoZSByZWN1cnNpdmUgcm91dGluZSBub3cg b25seSBjb3VudHMgcGF0dGVybiB2YXJpYWJsZXMuCgotIFJlb3JkZXIgcGVyLXZhcmlhYmxlIERF RklORSBwcm9jZXNzaW5nIHRvIHRyYW5zZm9ybUV4cHIgLT4KICBjb2VyY2VfdG9fYm9vbGVhbiAt PiBwdWxsX3Zhcl9jbGF1c2UgYW5kIGRyb3AgdGhlIHNlcGFyYXRlIHNlY29uZAogIGNvZXJjaW9u IHBhc3MsIHNvIHB1bGxfdmFyX2NsYXVzZSBhbHdheXMgb3BlcmF0ZXMgb24gdGhlIGZpbmFsIGNv ZXJjZWQKICBleHByZXNzaW9uIGFuZCBhIHR5cGUgbWlzbWF0Y2ggaXMgcmVwb3J0ZWQgYmVmb3Jl IHRoZSB0YXJnZXRsaXN0IGlzCiAgdG91Y2hlZC4gIFRoZSBkdXBsaWNhdGUtdmFyaWFibGUgY2hl Y2sgbW92ZXMgdG8gaXRzIG93biBsZWFkaW5nIGxvb3AKICBhbmQgbm93IHJlcG9ydHMgYXQgdGhl IGxhdGVyIChkdXBsaWNhdGUpIGRlZmluaXRpb24uCgpBZGQgcmVncmVzc2lvbiBjb3ZlcmFnZSBm b3IgREVGSU5FIGNvZXJjaW9uIGFuZCBWYXIgcHJvcGFnYXRpb246IGEKYm9vbGVhbi1kb21haW4g cHJlZGljYXRlICh0aGUgb25lIGNhc2Ugd2hlcmUgY29lcmNlX3RvX2Jvb2xlYW4gaXMgbm90IGEK bm8tb3ApLCBhIFZhciByZWZlcmVuY2VkIG9ubHkgaW5zaWRlIGEgbmF2aWdhdGlvbiBvcGVyYXRp b24sIGFuZApyZWplY3Rpb24gb2YgYSBub24tYm9vbGVhbiBERUZJTkUgZXhwcmVzc2lvbi4KLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgICAgICAgICB8IDE2MyArKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCB8 ICA3OCArKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCAgICAg IHwgIDU5ICsrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgOTEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmluZGV4IDNlNmIyZTU3OWEzLi4xMTZj ZDIwNmUzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAtNTMsNyArNTMsNyBAQCB0eXBlZGVm IHN0cnVjdAogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIHZvaWQgdmFsaWRh dGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAq bm9kZSwKLQkJCQkJCQkJCSAgIExpc3QgKnJwRGVmcywgTGlzdCAqKnZhck5hbWVzKTsKKwkJCQkJ CQkJCSAgIExpc3QgKip2YXJOYW1lcyk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVmaW5lQ2xh dXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RGVmICp3aW5kZWYsCiAJCQkJCQkJCSAgIExp c3QgKip0YXJnZXRsaXN0KTsKIHN0YXRpYyBib29sIGRlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwg dm9pZCAqY29udGV4dCk7CkBAIC0xOTIsMTUgKzE5MiwxNCBAQCB0cmFuc2Zvcm1SUFIoUGFyc2VT dGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKICAqIFRo cm93cyBhbiBlcnJvciBpZiB0aGUgbnVtYmVyIG9mIHVuaXF1ZSB2YXJpYWJsZXMgd291bGQgcmVx dWlyZSBhIHZhcklkCiAgKiBncmVhdGVyIHRoYW4gUlBSX1ZBUklEX01BWC4KICAqCi0gKiBJZiBy cERlZnMgaXMgbm9uLU5VTEwsIGVhY2ggREVGSU5FIHZhcmlhYmxlIG5hbWUgaXMgYWxzbyB2YWxp ZGF0ZWQgYWdhaW5zdAotICogdmFyTmFtZXM7IGFueSBERUZJTkUgbmFtZSBub3QgcHJlc2VudCBp biBQQVRURVJOIGlzIHJlamVjdGVkIHdpdGggYW4gZXJyb3IuCi0gKiB2YXJOYW1lcyBpdHNlbGYg aXMgbm90IGV4dGVuZGVkIGJ5IHRoaXMgc3RlcCAtLSBpdCBjYXJyaWVzIG9ubHkgUEFUVEVSTgot ICogdmFyaWFibGUgbmFtZXMsIHdoaWNoIGlzIHdoYXQgdHJhbnNmb3JtQ29sdW1uUmVmIGNoZWNr cyB2aWEKLSAqIHBfcnByX3BhdHRlcm5fdmFycyB0byBpZGVudGlmeSBwYXR0ZXJuIHZhcmlhYmxl IHF1YWxpZmllcnMuCisgKiB2YXJOYW1lcyBjb2xsZWN0cyB0aGUgdW5pcXVlIFBBVFRFUk4gdmFy aWFibGUgbmFtZXMsIHdoaWNoIGlzIHdoYXQKKyAqIHRyYW5zZm9ybUNvbHVtblJlZiBjaGVja3Mg dmlhIHBfcnByX3BhdHRlcm5fdmFycyB0byBpZGVudGlmeSBwYXR0ZXJuCisgKiB2YXJpYWJsZSBx dWFsaWZpZXJzLiAgQ3Jvc3MtY2hlY2tpbmcgREVGSU5FIHZhcmlhYmxlIG5hbWVzIGFnYWluc3Qg dGhpcworICogbGlzdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHksIHNpbmNlIGl0IG9u bHkgbmVlZHMgdG8gcnVuIG9uY2UuCiAgKi8KIHN0YXRpYyB2b2lkCiB2YWxpZGF0ZVJQUlBhdHRl cm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAotCQkJ CQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0ICoqdmFyTmFtZXMpCisJCQkJCQkgICBMaXN0ICoqdmFy TmFtZXMpCiB7CiAJLyogUGF0dGVybiBub2RlIG11c3QgZXhpc3QgLSBwYXJzZXIgYWx3YXlzIHBy b3ZpZGVzIG5vbi1OVUxMIHJvb3QgKi8KIAlBc3NlcnQobm9kZSAhPSBOVUxMKTsKQEAgLTI1NSwz OSArMjU0LDEwIEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQkvKiBSZWN1cnNlIGludG8gY2hpbGRyZW4gKi8K IAkJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQog CQkJewotCQkJCXZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KHBzdGF0ZSwgY2hpbGQsIE5VTEws IHZhck5hbWVzKTsKKwkJCQl2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChwc3RhdGUsIGNoaWxk LCB2YXJOYW1lcyk7CiAJCQl9CiAJCQlicmVhazsKIAl9Ci0KLQkvKgotCSAqIEFmdGVyIHRoZSB0 b3AtbGV2ZWwgY2FsbCwgdmFsaWRhdGUgdGhhdCBldmVyeSBERUZJTkUgdmFyaWFibGUgbmFtZSBp cwotCSAqIHByZXNlbnQgaW4gdGhlIFBBVFRFUk4gdmFyaWFibGUgbGlzdDsgcmVqZWN0IG5hbWVz IG5vdCB1c2VkIGluIFBBVFRFUk4uCi0JICogVGhpcyBpcyBvbmx5IGRvbmUgb25jZSBhdCB0aGUg b3V0ZXJtb3N0IHJlY3Vyc2lvbiBsZXZlbCwgZGV0ZWN0ZWQgYnkKLQkgKiBycERlZnMgYmVpbmcg bm9uLU5VTEwgKHJlY3Vyc2l2ZSBjYWxscyBwYXNzIE5VTEwpLgotCSAqLwotCWlmIChycERlZnMp Ci0JewotCQlmb3JlYWNoX25vZGUoUmVzVGFyZ2V0LCBydCwgcnBEZWZzKQotCQl7Ci0JCQlib29s CQlmb3VuZCA9IGZhbHNlOwotCi0JCQlmb3JlYWNoX25vZGUoU3RyaW5nLCB2YXJuYW1lLCAqdmFy TmFtZXMpCi0JCQl7Ci0JCQkJaWYgKHN0cmNtcChzdHJWYWwodmFybmFtZSksIHJ0LT5uYW1lKSA9 PSAwKQotCQkJCXsKLQkJCQkJZm91bmQgPSB0cnVlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9 Ci0JCQlpZiAoIWZvdW5kKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCWVycm1zZygiREVGSU5FIHZhcmlhYmxlIFwiJXNcIiBp cyBub3QgdXNlZCBpbiBQQVRURVJOIiwKLQkJCQkJCQkgICBydC0+bmFtZSksCi0JCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKTsKLQkJfQotCX0KIH0KIAogLyoK QEAgLTI5NiwxNCArMjY2LDE2IEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAgKgogICogRmlyc3Q6CiAgKiAgIDEu IFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNvdW50IGFuZCBjb2xsZWN0cyBSUFIgdmFyaWFi bGUgbmFtZXMKKyAqICAgMi4gUmVqZWN0cyBERUZJTkUgdmFyaWFibGVzIG5vdCB1c2VkIGluIFBB VFRFUk4KKyAqICAgMy4gQ2hlY2tzIGZvciBkdXBsaWNhdGUgdmFyaWFibGUgbmFtZXMgaW4gREVG SU5FIGNsYXVzZQogICoKICAqIFRoZW4gZm9yIGVhY2ggREVGSU5FIHZhcmlhYmxlOgotICogICAy LiBDaGVja3MgZm9yIGR1cGxpY2F0ZSB2YXJpYWJsZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCi0g KiAgIDMuIFRyYW5zZm9ybXMgZXhwcmVzc2lvbiB2aWEgdHJhbnNmb3JtRXhwcigpIGFuZCBlbnN1 cmVzIHJlZmVyZW5jZWQKLSAqICAgICAgVmFyIG5vZGVzIGFyZSBwcmVzZW50IGluIHRoZSBxdWVy eSB0YXJnZXRsaXN0ICh2aWEgcHVsbF92YXJfY2xhdXNlKQotICogICA0LiBDcmVhdGVzIGRlZmlu ZUNsYXVzZSBlbnRyeSB3aXRoIHByb3BlciByZXNuYW1lIChwYXR0ZXJuIHZhcmlhYmxlIG5hbWUp Ci0gKiAgIDUuIENvZXJjZXMgZXhwcmVzc2lvbnMgdG8gYm9vbGVhbiB0eXBlCi0gKiAgIDYuIE1h cmtzIGNvbHVtbiBvcmlnaW5zIGFuZCBhc3NpZ25zIGNvbGxhdGlvbiBpbmZvcm1hdGlvbgorICog ICA0LiBUcmFuc2Zvcm1zIGV4cHJlc3Npb24gdmlhIHRyYW5zZm9ybUV4cHIoKSBhbmQgY29lcmNl cyBpdCB0byBib29sZWFuCisgKiAgIDUuIENyZWF0ZXMgZGVmaW5lQ2xhdXNlIGVudHJ5IHdpdGgg cHJvcGVyIHJlc25hbWUgKHBhdHRlcm4gdmFyaWFibGUgbmFtZSkKKyAqICAgNi4gRW5zdXJlcyBy ZWZlcmVuY2VkIFZhciBub2RlcyBhcmUgcHJlc2VudCBpbiB0aGUgcXVlcnkgdGFyZ2V0bGlzdCAo dmlhCisgKiAgICAgIHB1bGxfdmFyX2NsYXVzZSkKKyAqCisgKiBGaW5hbGx5IG1hcmtzIGNvbHVt biBvcmlnaW5zIGFuZCBhc3NpZ25zIGNvbGxhdGlvbiBpbmZvcm1hdGlvbi4KICAqCiAgKiBOb3Rl OiBWYXJpYWJsZXMgbm90IGluIERFRklORSBhcmUgZXZhbHVhdGVkIGFzIFRSVUUgYnkgdGhlIGV4 ZWN1dG9yLgogICogVmFyaWFibGVzIGluIERFRklORSBidXQgbm90IGluIFBBVFRFUk4gYXJlIHJl amVjdGVkIGFzIGFuIGVycm9yLgpAQCAtMzE2LDkgKzI4OCw3IEBAIHN0YXRpYyBMaXN0ICoKIHRy YW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0RlZiAqd2luZGVm LAogCQkJCQkgIExpc3QgKip0YXJnZXRsaXN0KQogewotCUxpc3QJICAgKnJlc3RhcmdldHM7CiAJ TGlzdAkgICAqZGVmaW5lQ2xhdXNlID0gTklMOwotCWNoYXIJICAgKm5hbWU7CiAJTGlzdAkgICAq cGF0dGVyblZhck5hbWVzID0gTklMOwogCiAJLyoKQEAgLTMyOCw1NiArMjk4LDg2IEBAIHRyYW5z Zm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0RlZiAqd2luZGVmLAog CUFzc2VydCh3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMgIT0gTlVMTCk7CiAKIAkvKgot CSAqIFZhbGlkYXRlIFBBVFRFUk4gdmFyaWFibGUgY291bnQsIHJlamVjdCBERUZJTkUgdmFyaWFi bGVzIG5vdCB1c2VkIGluCi0JICogUEFUVEVSTiwgYW5kIGNvbGxlY3QgUEFUVEVSTiB2YXJpYWJs ZSBuYW1lcyBmb3IgdHJhbnNmb3JtQ29sdW1uUmVmLgorCSAqIFZhbGlkYXRlIFBBVFRFUk4gdmFy aWFibGUgY291bnQgYW5kIGNvbGxlY3QgdGhlIFBBVFRFUk4gdmFyaWFibGUgbmFtZXMKKwkgKiBm b3IgdHJhbnNmb3JtQ29sdW1uUmVmLgogCSAqLwogCXZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50 KHBzdGF0ZSwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBQYXR0ZXJuLAotCQkJCQkJCSAgIHdp bmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcywKIAkJCQkJCQkgICAmcGF0dGVyblZhck5hbWVz KTsKIAlwc3RhdGUtPnBfcnByX3BhdHRlcm5fdmFycyA9IHBhdHRlcm5WYXJOYW1lczsKIAorCS8q CisJICogUmVqZWN0IGFueSBERUZJTkUgdmFyaWFibGUgd2hvc2UgbmFtZSBkb2VzIG5vdCBhcHBl YXIgaW4gUEFUVEVSTi4gIFRoaXMKKwkgKiBjcm9zcy1jaGVjayBvbmx5IG5lZWRzIHRvIHJ1biBv bmNlLCBzbyBpdCBsaXZlcyBoZXJlIGluIHRoZSBjYWxsZXIKKwkgKiByYXRoZXIgdGhhbiBpbiB0 aGUgcmVjdXJzaXZlIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KCkuCisJICovCisJZm9yZWFj aF9ub2RlKFJlc1RhcmdldCwgcnQsIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcykKKwl7 CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJZm9yZWFjaF9ub2RlKFN0cmluZywgdmFybmFt ZSwgcGF0dGVyblZhck5hbWVzKQorCQl7CisJCQlpZiAoc3RyY21wKHN0clZhbCh2YXJuYW1lKSwg cnQtPm5hbWUpID09IDApCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJ fQorCQl9CisJCWlmICghZm91bmQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJERUZJTkUgdmFyaWFibGUgXCIlc1wi IGlzIG5vdCB1c2VkIGluIFBBVFRFUk4iLAorCQkJCQkJICAgcnQtPm5hbWUpLAorCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKTsKKwl9CisKIAkvKgogCSAqIENo ZWNrIGZvciBkdXBsaWNhdGUgcm93IHBhdHRlcm4gZGVmaW5pdGlvbiB2YXJpYWJsZXMuICBUaGUg c3RhbmRhcmQKIAkgKiByZXF1aXJlcyB0aGF0IG5vIHR3byByb3cgcGF0dGVybiBkZWZpbml0aW9u IHZhcmlhYmxlIG5hbWVzIHNoYWxsIGJlCi0JICogZXF1aXZhbGVudC4KKwkgKiBlcXVpdmFsZW50 LiAgUmVwb3J0IHRoZSBlcnJvciBhdCB0aGUgbGF0ZXIgKGR1cGxpY2F0ZSkgZGVmaW5pdGlvbi4K IAkgKi8KLQlyZXN0YXJnZXRzID0gTklMOwogCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHJlc3Rh cmdldCwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzKQogCXsKLQkJVGFyZ2V0RW50cnkg KnRlRGVmaW5lOwotCQlOb2RlCSAgICpleHByOwotCQlMaXN0CSAgICp2YXJzOwotCi0JCW5hbWUg PSByZXN0YXJnZXQtPm5hbWU7Ci0KLQkJZm9yZWFjaF9ub2RlKFJlc1RhcmdldCwgciwgcmVzdGFy Z2V0cykKKwkJZm9yZWFjaF9ub2RlKFJlc1RhcmdldCwgcHJpb3IsIHdpbmRlZi0+cnBDb21tb25T eW50YXgtPnJwRGVmcykKIAkJewotCQkJY2hhcgkgICAqbjsKLQotCQkJbiA9IHItPm5hbWU7Ci0K LQkJCWlmICghc3RyY21wKG4sIG5hbWUpKQorCQkJaWYgKHByaW9yID09IHJlc3RhcmdldCkKKwkJ CQlicmVhazsKKwkJCWlmIChzdHJjbXAocHJpb3ItPm5hbWUsIHJlc3RhcmdldC0+bmFtZSkgPT0g MCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCiAJCQkJCQllcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVzXCIgYXBwZWFycyBtb3JlIHRo YW4gb25jZSIsCi0JCQkJCQkJICAgbmFtZSksCi0JCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgcikpKTsKKwkJCQkJCQkgICByZXN0YXJnZXQtPm5h bWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCQkgICBleHBy TG9jYXRpb24oKE5vZGUgKikgcmVzdGFyZ2V0KSkpOwogCQl9CisJfQogCi0JCXJlc3RhcmdldHMg PSBsYXBwZW5kKHJlc3RhcmdldHMsIHJlc3RhcmdldCk7CisJZm9yZWFjaF9ub2RlKFJlc1Rhcmdl dCwgcmVzdGFyZ2V0LCB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMpCisJeworCQlUYXJn ZXRFbnRyeSAqdGVEZWZpbmU7CisJCU5vZGUJICAgKmV4cHI7CisJCUxpc3QJICAgKnZhcnM7CiAK IAkJLyoKLQkJICogVHJhbnNmb3JtIHRoZSBERUZJTkUgZXhwcmVzc2lvbi4gIFdlIG11c3QgTk9U IGFkZCB0aGUgd2hvbGUKLQkJICogZXhwcmVzc2lvbiB0byB0aGUgcXVlcnkgdGFyZ2V0bGlzdCwg YmVjYXVzZSBpdCBtYXkgY29udGFpbgotCQkgKiBSUFJOYXZFeHByIG5vZGVzIChQUkVWL05FWFQv RklSU1QvTEFTVCkgdGhhdCBjYW4gb25seSBiZSBldmFsdWF0ZWQKLQkJICogaW5zaWRlIHRoZSBv d25pbmcgV2luZG93QWdnLgotCQkgKgotCQkgKiBJbnN0ZWFkLCB3ZSB0cmFuc2Zvcm0gdGhlIGV4 cHJlc3Npb24gZGlyZWN0bHkgYW5kIG9ubHkgZW5zdXJlIHRoYXQKLQkJICogdGhlIGluZGl2aWR1 YWwgVmFyIG5vZGVzIGl0IHJlZmVyZW5jZXMgYXJlIHByZXNlbnQgaW4gdGhlCi0JCSAqIHRhcmdl dGxpc3QsIHNvIHRoZSBwbGFubmVyIGNhbiBwcm9wYWdhdGUgdGhlIHJlZmVyZW5jZWQgY29sdW1u cy4KKwkJICogVHJhbnNmb3JtIHRoZSBERUZJTkUgZXhwcmVzc2lvbiBhbmQgY29lcmNlIGl0IHRv IGJvb2xlYW4uICBXZSBtdXN0CisJCSAqIE5PVCBhZGQgdGhlIHdob2xlIGV4cHJlc3Npb24gdG8g dGhlIHF1ZXJ5IHRhcmdldGxpc3QsIGJlY2F1c2UgaXQKKwkJICogbWF5IGNvbnRhaW4gUlBSTmF2 RXhwciBub2RlcyAoUFJFVi9ORVhUL0ZJUlNUL0xBU1QpIHRoYXQgY2FuIG9ubHkKKwkJICogYmUg ZXZhbHVhdGVkIGluc2lkZSB0aGUgb3duaW5nIFdpbmRvd0FnZy4gIENvZXJjaW5nIGhlcmUsIGJl Zm9yZQorCQkgKiBwdWxsX3Zhcl9jbGF1c2UsIGtlZXBzIHB1bGxfdmFyX2NsYXVzZSBvcGVyYXRp bmcgb24gdGhlIGZpbmFsCisJCSAqIGV4cHJlc3Npb24gZm9ybSBhbmQgc3VyZmFjZXMgYSB0eXBl IG1pc21hdGNoIGJlZm9yZSB0aGUgdGFyZ2V0bGlzdAorCQkgKiBpcyB0b3VjaGVkLgogCQkgKi8K IAkJZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCByZXN0YXJnZXQtPnZhbCwKIAkJCQkJCQkg RVhQUl9LSU5EX1JQUl9ERUZJTkUpOworCQlleHByID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRl LCBleHByLCAiREVGSU5FIik7CisKKwkJLyogQnVpbGQgdGhlIGRlZmluZUNsYXVzZSBlbnRyeSBk aXJlY3RseSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByICovCisJCXRlRGVmaW5lID0gbWFrZVRh cmdldEVudHJ5KChFeHByICopIGV4cHIsCisJCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKGRlZmluZUNs YXVzZSkgKyAxLAorCQkJCQkJCQkgICBwc3RyZHVwKHJlc3RhcmdldC0+bmFtZSksCisJCQkJCQkJ CSAgIHRydWUpOworCisJCS8qIGJ1aWxkIHRyYW5zZm9ybWVkIERFRklORSBjbGF1c2UgKGxpc3Qg b2YgVGFyZ2V0RW50cnkpICovCisJCWRlZmluZUNsYXVzZSA9IGxhcHBlbmQoZGVmaW5lQ2xhdXNl LCB0ZURlZmluZSk7CiAKIAkJLyoKIAkJICogUHVsbCBvdXQgVmFyIG5vZGVzIGZyb20gdGhlIHRy YW5zZm9ybWVkIGV4cHJlc3Npb24gYW5kIGVuc3VyZSBlYWNoCkBAIC00MTIsMjYgKzQxMiw5IEBA IHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0RlZiAqd2lu ZGVmLAogCQkJfQogCQl9CiAJCWxpc3RfZnJlZSh2YXJzKTsKLQotCQkvKiBCdWlsZCB0aGUgZGVm aW5lQ2xhdXNlIGVudHJ5IGRpcmVjdGx5IGZyb20gdGhlIHRyYW5zZm9ybWVkIGV4cHIgKi8KLQkJ dGVEZWZpbmUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgZXhwciwKLQkJCQkJCQkJICAgbGlz dF9sZW5ndGgoZGVmaW5lQ2xhdXNlKSArIDEsCi0JCQkJCQkJCSAgIHBzdHJkdXAobmFtZSksCi0J CQkJCQkJCSAgIHRydWUpOwotCi0JCS8qIGJ1aWxkIHRyYW5zZm9ybWVkIERFRklORSBjbGF1c2Ug KGxpc3Qgb2YgVGFyZ2V0RW50cnkpICovCi0JCWRlZmluZUNsYXVzZSA9IGxhcHBlbmQoZGVmaW5l Q2xhdXNlLCB0ZURlZmluZSk7CiAJfQotCWxpc3RfZnJlZShyZXN0YXJnZXRzKTsKIAlwc3RhdGUt PnBfcnByX3BhdHRlcm5fdmFycyA9IE5JTDsKIAotCS8qCi0JICogTWFrZSBzdXJlIHRoYXQgdGhl IHJvdyBwYXR0ZXJuIGRlZmluaXRpb24gc2VhcmNoIGNvbmRpdGlvbiBpcyBhIGJvb2xlYW4KLQkg KiBleHByZXNzaW9uLgotCSAqLwotCWZvcmVhY2hfcHRyKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5l Q2xhdXNlKQotCQl0ZS0+ZXhwciA9IChFeHByICopIGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwg KE5vZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKLQogCS8qCiAJICogVmFsaWRhdGUgREVGSU5F IGV4cHJlc3Npb25zOiBuZXN0ZWQgUFJFVi9ORVhULCBjb2x1bW4gcmVmZXJlbmNlcywKIAkgKiBj b21wb3VuZCBmbGF0dGVuLCB2b2xhdGlsZSBjYWxsZWVzIC0tIGFsbCBpbiBhIHNpbmdsZSB3YWxr IHBlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRleCBjZjE1OGUxYzA0 My4uODBmYWJkZTUxNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2Jhc2Uub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CkBA IC0yMzYsNyArMjM2LDcgQEAgV0lORE9XIHcgQVMgKAogKTsKIEVSUk9SOiAgREVGSU5FIHZhcmlh YmxlICJhIiBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlCiBMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBp ZCA+IDAsIEEgQVMgaWQgPCAxMAotICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogRFJPUCBUQUJMRSBycHJfZHVwOwogLS0gQm9vbGVhbiBjb2Vy Y2lvbgogQ1JFQVRFIFRBQkxFIHJwcl9ib29sIChpZCBJTlQsIGZsYWcgQk9PTEVBTik7CkBAIC0z MTksNiArMzE5LDgyIEBAIERST1AgQ0FTVCAodHJ1dGh5aW50IEFTIGJvb2xlYW4pOwogRFJPUCBG VU5DVElPTiB0cnV0aHlpbnRfdG9fYm9vbCh0cnV0aHlpbnQpOwogRFJPUCBUWVBFIHRydXRoeWlu dDsKIERST1AgVEFCTEUgcnByX2Jvb2w7CistLSBDb2VyY2lvbiBvdmVyIGEgYm9vbGVhbiBkb21h aW4gaXMgbm90IGEgbm8tb3A7IHRoZSB3cmFwcGVkIFZhciBtdXN0IHN0aWxsCistLSBwcm9wYWdh dGUgd2hlbiByZWZlcmVuY2VkIG9ubHkgaW4gREVGSU5FIChmbGFnIGlzIG5vdCBpbiB0aGUgc2Vs ZWN0IGxpc3QpCitDUkVBVEUgRE9NQUlOIGJvb2xpc2ggQVMgYm9vbGVhbjsKK0NSRUFURSBUQUJM RSBycHJfZG9tYWluIChpZCBpbnQsIGZsYWcgYm9vbGlzaCk7CitJTlNFUlQgSU5UTyBycHJfZG9t YWluIFZBTFVFUyAoMSwgdHJ1ZSksICgyLCBmYWxzZSksICgzLCB0cnVlKTsKK1NFTEVDVCBpZCwg Q09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfZG9tYWluCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBmbGFnCispCitP UkRFUiBCWSBpZDsKKyBpZCB8IGNudCAKKy0tLS0rLS0tLS0KKyAgMSB8ICAgMQorICAyIHwgICAw CisgIDMgfCAgIDEKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2RvbWFpbjsKK0RST1AgRE9N QUlOIGJvb2xpc2g7CistLSBBIFZhciByZWZlcmVuY2VkIG9ubHkgaW5zaWRlIGEgbmF2aWdhdGlv biBvcGVyYXRpb24gbXVzdCBzdGlsbCBwcm9wYWdhdGUKKy0tICh2YWwgYXBwZWFycyBvbmx5IGlu c2lkZSBQUkVWKCksIG5vdCBhcyBhIGJhcmUgb3BlcmFuZCBvciBpbiB0aGUgc2VsZWN0IGxpc3Qp CitDUkVBVEUgVEFCTEUgcnByX25hdiAoaWQgaW50LCB2YWwgaW50KTsKK0lOU0VSVCBJTlRPIHJw cl9uYXYgVkFMVUVTICgxLCAwKSwgKDIsIDEpLCAoMywgMCksICg0LCAyKTsKK1NFTEVDVCBpZCwg Q09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChVUCspCisgICAgREVGSU5FIFVQIEFTIGlkID4gUFJFVih2 YWwpCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGNudCAKKy0tLS0rLS0tLS0KKyAgMSB8ICAgMAor ICAyIHwgICAzCisgIDMgfCAgIDAKKyAgNCB8ICAgMAorKDQgcm93cykKKworRFJPUCBUQUJMRSBy cHJfbmF2OworLS0gQSBub24tYm9vbGVhbiBERUZJTkUgZXhwcmVzc2lvbiBpcyByZWplY3RlZAor Q1JFQVRFIFRBQkxFIHJwcl9ub25jb2VyY2UgKGlkIGludCwgbiBpbnQpOworSU5TRVJUIElOVE8g cnByX25vbmNvZXJjZSBWQUxVRVMgKDEsIDEpOworU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcg QVMgY250CitGUk9NIHJwcl9ub25jb2VyY2UKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIG4KKyk7CitFUlJPUjogIGFyZ3VtZW50 IG9mIERFRklORSBtdXN0IGJlIHR5cGUgYm9vbGVhbiwgbm90IHR5cGUgaW50ZWdlcgorTElORSA3 OiAgICAgREVGSU5FIEEgQVMgbgorICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJM RSBycHJfbm9uY29lcmNlOworLS0gQSBub24tYm9vbGVhbiBsYXRlciBERUZJTkUgaXMgcmVqZWN0 ZWQgYXQgaXRzIG93biBkZWZpbml0aW9uIGV2ZW4gd2hlbiBhbgorLS0gZWFybGllciBERUZJTkUg dmFyaWFibGUgaXMgdmFsaWQKK0NSRUFURSBUQUJMRSBycHJfbm9uY29lcmNlMiAoaWQgaW50LCBu IGludCk7CitJTlNFUlQgSU5UTyBycHJfbm9uY29lcmNlMiBWQUxVRVMgKDEsIDEpOworU0VMRUNU IGlkLCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9ub25jb2VyY2UyCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFT IGlkID4gMCwgQiBBUyBuCispOworRVJST1I6ICBhcmd1bWVudCBvZiBERUZJTkUgbXVzdCBiZSB0 eXBlIGJvb2xlYW4sIG5vdCB0eXBlIGludGVnZXIKK0xJTkUgNzogICAgIERFRklORSBBIEFTIGlk ID4gMCwgQiBBUyBuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJP UCBUQUJMRSBycHJfbm9uY29lcmNlMjsKIC0tIENvbXBsZXggZXhwcmVzc2lvbnMKIENSRUFURSBU QUJMRSBycHJfY29tcGxleCAoaWQgSU5ULCB2YWwxIElOVCwgdmFsMiBJTlQpOwogSU5TRVJUIElO VE8gcnByX2NvbXBsZXggVkFMVUVTICgxLCAxMCwgMjApLCAoMiwgMTUsIDI1KSwgKDMsIDIwLCAz MCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKaW5kZXggZTcxZjBkZDM2ODAuLjIxODQwYWE3 N2JlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0yNjEsNiArMjYxLDY1IEBAIERS T1AgVFlQRSB0cnV0aHlpbnQ7CiAKIERST1AgVEFCTEUgcnByX2Jvb2w7CiAKKy0tIENvZXJjaW9u IG92ZXIgYSBib29sZWFuIGRvbWFpbiBpcyBub3QgYSBuby1vcDsgdGhlIHdyYXBwZWQgVmFyIG11 c3Qgc3RpbGwKKy0tIHByb3BhZ2F0ZSB3aGVuIHJlZmVyZW5jZWQgb25seSBpbiBERUZJTkUgKGZs YWcgaXMgbm90IGluIHRoZSBzZWxlY3QgbGlzdCkKK0NSRUFURSBET01BSU4gYm9vbGlzaCBBUyBi b29sZWFuOworQ1JFQVRFIFRBQkxFIHJwcl9kb21haW4gKGlkIGludCwgZmxhZyBib29saXNoKTsK K0lOU0VSVCBJTlRPIHJwcl9kb21haW4gVkFMVUVTICgxLCB0cnVlKSwgKDIsIGZhbHNlKSwgKDMs IHRydWUpOworU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9kb21h aW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIGZsYWcKKykKK09SREVSIEJZIGlkOworRFJPUCBUQUJMRSBycHJfZG9tYWluOwor RFJPUCBET01BSU4gYm9vbGlzaDsKKworLS0gQSBWYXIgcmVmZXJlbmNlZCBvbmx5IGluc2lkZSBh IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3Qgc3RpbGwgcHJvcGFnYXRlCistLSAodmFsIGFwcGVh cnMgb25seSBpbnNpZGUgUFJFVigpLCBub3QgYXMgYSBiYXJlIG9wZXJhbmQgb3IgaW4gdGhlIHNl bGVjdCBsaXN0KQorQ1JFQVRFIFRBQkxFIHJwcl9uYXYgKGlkIGludCwgdmFsIGludCk7CitJTlNF UlQgSU5UTyBycHJfbmF2IFZBTFVFUyAoMSwgMCksICgyLCAxKSwgKDMsIDApLCAoNCwgMik7CitT RUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVVArKQorICAgIERFRklORSBVUCBBUyBp ZCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7CitEUk9QIFRBQkxFIHJwcl9uYXY7CisKKy0t IEEgbm9uLWJvb2xlYW4gREVGSU5FIGV4cHJlc3Npb24gaXMgcmVqZWN0ZWQKK0NSRUFURSBUQUJM RSBycHJfbm9uY29lcmNlIChpZCBpbnQsIG4gaW50KTsKK0lOU0VSVCBJTlRPIHJwcl9ub25jb2Vy Y2UgVkFMVUVTICgxLCAxKTsKK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJP TSBycHJfbm9uY29lcmNlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBuCispOworRFJPUCBUQUJMRSBycHJfbm9uY29lcmNlOwor CistLSBBIG5vbi1ib29sZWFuIGxhdGVyIERFRklORSBpcyByZWplY3RlZCBhdCBpdHMgb3duIGRl ZmluaXRpb24gZXZlbiB3aGVuIGFuCistLSBlYXJsaWVyIERFRklORSB2YXJpYWJsZSBpcyB2YWxp ZAorQ1JFQVRFIFRBQkxFIHJwcl9ub25jb2VyY2UyIChpZCBpbnQsIG4gaW50KTsKK0lOU0VSVCBJ TlRPIHJwcl9ub25jb2VyY2UyIFZBTFVFUyAoMSwgMSk7CitTRUxFQ1QgaWQsIENPVU5UKCopIE9W RVIgdyBBUyBjbnQKK0ZST00gcnByX25vbmNvZXJjZTIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgaWQgPiAwLCBCIEFTIG4K Kyk7CitEUk9QIFRBQkxFIHJwcl9ub25jb2VyY2UyOworCiAtLSBDb21wbGV4IGV4cHJlc3Npb25z CiBDUkVBVEUgVEFCTEUgcnByX2NvbXBsZXggKGlkIElOVCwgdmFsMSBJTlQsIHZhbDIgSU5UKTsK IElOU0VSVCBJTlRPIHJwcl9jb21wbGV4IFZBTFVFUyAoMSwgMTAsIDIwKSwgKDIsIDE1LCAyNSks ICgzLCAyMCwgMzApOwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0009-define-walker-else.txt" Content-Disposition: attachment; filename="nocfbot-0009-define-walker-else.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jq8 RnJvbSBmM2RkYTQ5ZTVhMjQzNDdmZjIzZGE3MmY1ZmU4MDY0MDI5MWJjMzRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDIwOjQzOjAxICswOTAwClN1YmplY3Q6IFtQQVRDSCAwOS8xM10g UmVwbGFjZSBhIGJhcmUgYmxvY2sgd2l0aCBhbiBlbHNlIGluIHRoZSBSUFIgREVGSU5FCiBjbGF1 c2Ugd2Fsa2VyCgpkZWZpbmVfd2Fsa2VyKCkgZW5kZWQgaXRzIHBoYXNlIGhhbmRsaW5nIHdpdGgg YSBiYXJlIGJyYWNlZCBibG9jayBmb3IKdGhlIERFRklORS1ib2R5IGNhc2UsIGZvbGxvd2luZyB0 d28gaWYgYmxvY2tzIHRoYXQgcmVzcGVjdGl2ZWx5IHJldHVybgphbmQgcmFpc2UgYW4gZXJyb3Iu ICBUdXJuIGl0IGludG8gdGhlIGVsc2UgYnJhbmNoIG9mIGFuIGlmIC8gZWxzZSBpZiAvCmVsc2Ug Y2hhaW4uICBObyBiZWhhdmlvciBjaGFuZ2UuCi0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3Jwci5jIHwgMTUgKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCAxMTZjZDIwNmUz OS4uN2MyMDFkNTUxNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTUxNSw4ICs1MTUsNyBA QCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCQljdHgtPm5hdl9j b3VudCsrOwogCQkJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dh bGtlciwgY3R4KTsKIAkJfQotCi0JCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZf T0ZGU0VUKQorCQllbHNlIGlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VU KQogCQl7CiAJCQkvKgogCQkJICogQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRp bWUgY29uc3RhbnQsIHNvIGl0IGNhbm5vdApAQCAtNTI4LDEzICs1MjcsMTMgQEAgZGVmaW5lX3dh bGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJCQllcnJkZXRhaWwoIkEgbmF2aWdh dGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50LiIpLAogCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAkJfQotCi0JCS8qCi0J CSAqIFBIQVNFX0JPRFk6IHRoaXMgaXMgYW4gb3V0ZXIgbmF2IGF0IHRvcCBsZXZlbC4gIFdhbGsg YXJnIGZpcnN0IHRvCi0JCSAqIGNvbGxlY3QgbmVzdGluZyAvIGNvbHVtbi1yZWYgc3RhdGUsIHRo ZW4gdmFsaWRhdGUgYW5kIChmb3IgY29tcG91bmQKLQkJICogZm9ybXMpIGZsYXR0ZW4sIHRoZW4g d2FsayBvZmZzZXQocykuCi0JCSAqLworCQllbHNlCiAJCXsKKwkJCS8qCisJCQkgKiBQSEFTRV9C T0RZOiB0aGlzIGlzIGFuIG91dGVyIG5hdiBhdCB0b3AgbGV2ZWwuICBXYWxrIGFyZyBmaXJzdAor CQkJICogdG8gY29sbGVjdCBuZXN0aW5nIC8gY29sdW1uLXJlZiBzdGF0ZSwgdGhlbiB2YWxpZGF0 ZSBhbmQgKGZvcgorCQkJICogY29tcG91bmQgZm9ybXMpIGZsYXR0ZW4sIHRoZW4gd2FsayBvZmZz ZXQocykuCisJCQkgKi8KIAkJCURlZmluZVdhbGtDdHggc2F2ZWQgPSAqY3R4OwogCQkJYm9vbAkJ b3V0ZXJfcGh5cyA9IChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8CiAJCQkJCQkJCQkgIG5h di0+a2luZCA9PSBSUFJfTkFWX05FWFQpOwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0010-rename-deparse-vars.txt" Content-Disposition: attachment; filename="nocfbot-0010-rename-deparse-vars.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jt9 RnJvbSAwZTIzYzY3ZjIwZjI2YzdmMGU2OGY4MzBjYTVkOGY4OTA2YTVlNjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDExOjMwOjQwICswOTAwClN1YmplY3Q6IFtQQVRDSCAxMC8xM10g UmVuYW1lIGxvb3AgaW5kZXggdmFyaWFibGVzIGluIHJvdyBwYXR0ZXJuIGRlcGFyc2UKIGhlbHBl cnMKCkdpdmUgdGhlIGluZGV4IHBhcmFtZXRlcnMgYW5kIGxvb3AgdmFyaWFibGVzIGluIHRoZSBS UFIgcGF0dGVybiBkZXBhcnNlCmhlbHBlcnMgbW9yZSBkZXNjcmlwdGl2ZSBuYW1lczogdGhlIGNv bnN0cnVjdC1pbmRleCBwYXJhbWV0ZXIgYmVjb21lcwppZHgsIHRoZSBicmFuY2gtbnVtYmVyIHBh cmFtZXRlciBiZWNvbWVzIGJubywgYW5kIGVhY2ggaGVscGVyJ3Mgc29sZQpsb29wIHZhcmlhYmxl IGJlY29tZXMgaS4gIEFkanVzdCB0aGUgYWNjb21wYW55aW5nIGNvbW1lbnRzIHRvIG1hdGNoLgoK VGhpcyBpcyBhIGNvc21ldGljIGNoYW5nZSB3aXRoIG5vIGVmZmVjdCBvbiB0aGUgZGVwYXJzZWQg b3V0cHV0LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyB8IDY4ICsrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggNjk2YmRiOWM4 YjUuLjQyM2NmMzUyMTI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xMjQsMTEgKzEyNCwx MSBAQCBzdGF0aWMgdm9pZCBhcHBlbmRfcnByX3F1YW50aWZpZXIoU3RyaW5nSW5mbyBidWYsIFJQ UlBhdHRlcm5FbGVtZW50ICplbGVtKTsKIHN0YXRpYyBjaGFyICpkZXBhcnNlX3Jwcl9wYXR0ZXJu KFJQUlBhdHRlcm4gKnBhdHRlcm4pOwogc3RhdGljIGludAlkZXBhcnNlX3Jwcl9zZXEoUlBSUGF0 dGVybiAqcGF0dGVybiwgaW50IHN0YXJ0LCBpbnQgbGltaXQsCiAJCQkJCQkJU3RyaW5nSW5mbyBi dWYpOwotc3RhdGljIGludAlkZXBhcnNlX3Jwcl9ub2RlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGlu dCBpLCBpbnQgbGltaXQsCitzdGF0aWMgaW50CWRlcGFyc2VfcnByX25vZGUoUlBSUGF0dGVybiAq cGF0dGVybiwgaW50IGlkeCwgaW50IGxpbWl0LAogCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CiBz dGF0aWMgaW50CXJwcl9tYXRjaF9lbmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGJlZ2luSWR4 KTsKLXN0YXRpYyBpbnQJcnByX2FsdF9zY29wZV9lbmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50 IGkpOwotc3RhdGljIGludAlycHJfbmV4dF9icmFuY2goUlBSUGF0dGVybiAqcGF0dGVybiwgaW50 IGIsIGludCBhbHRFbmQpOworc3RhdGljIGludAlycHJfYWx0X3Njb3BlX2VuZChSUFJQYXR0ZXJu ICpwYXR0ZXJuLCBpbnQgaWR4KTsKK3N0YXRpYyBpbnQJcnByX25leHRfYnJhbmNoKFJQUlBhdHRl cm4gKnBhdHRlcm4sIGludCBibm8sIGludCBhbHRFbmQpOwogc3RhdGljIHZvaWQgc2hvd19zdG9y YWdlX2luZm8oY2hhciAqbWF4U3RvcmFnZVR5cGUsIGludDY0IG1heFNwYWNlVXNlZCwKIAkJCQkJ CQkgIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd190YWJsZXNhbXBsZShUYWJs ZVNhbXBsZUNsYXVzZSAqdHNjLCBQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKQEAgLTMwMTQsOCArMzAx NCw4IEBAIGRlcGFyc2VfcnByX3NlcShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgc3RhcnQsIGlu dCBsaW1pdCwgU3RyaW5nSW5mbyBidWYpCiB9CiAKIC8qCi0gKiBEZXBhcnNlIHRoZSBzaW5nbGUg Y29uc3RydWN0IHN0YXJ0aW5nIGF0IGluZGV4IGksIGJvdW5kZWQgYnkgdGhlIGluaGVyaXRlZAot ICogbGltaXQuICBSZXR1cm5zIHRoZSBpbmRleCBqdXN0IHBhc3QgdGhlIGNvbnN0cnVjdC4KKyAq IERlcGFyc2UgdGhlIHNpbmdsZSBjb25zdHJ1Y3Qgc3RhcnRpbmcgYXQgaW5kZXggaWR4LCBib3Vu ZGVkIGJ5IHRoZQorICogaW5oZXJpdGVkIGxpbWl0LiAgUmV0dXJucyB0aGUgaW5kZXgganVzdCBw YXN0IHRoZSBjb25zdHJ1Y3QuCiAgKgogICogQSBWQVIgaXMgaXRzIG5hbWUgcGx1cyBxdWFudGlm aWVyLiAgQSBCRUdJTiBvcGVucyBhIGdyb3VwIHNwYW5uaW5nIHRvIGl0cwogICogbWF0Y2hpbmcg RU5EIChycHJfbWF0Y2hfZW5kKTsgd2hlbiB0aGUgZ3JvdXAncyBzb2xlIGNoaWxkIGlzIGFuIEFM VCB0aGF0CkBAIC0zMDI2LDkgKzMwMjYsOSBAQCBkZXBhcnNlX3Jwcl9zZXEoUlBSUGF0dGVybiAq cGF0dGVybiwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZ0luZm8gYnVmKQogICogaGFuZGVk IGRvd24gYnkgcnByX25leHRfYnJhbmNoLgogICovCiBzdGF0aWMgaW50Ci1kZXBhcnNlX3Jwcl9u b2RlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBpLCBpbnQgbGltaXQsIFN0cmluZ0luZm8gYnVm KQorZGVwYXJzZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaWR4LCBpbnQgbGlt aXQsIFN0cmluZ0luZm8gYnVmKQogewotCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRl cm4tPmVsZW1lbnRzW2ldOworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRlcm4tPmVs ZW1lbnRzW2lkeF07CiAKIAlpZiAoUlBSRWxlbUlzVmFyKGVsZW0pKQogCXsKQEAgLTMwMzYsMjcg KzMwMzYsMjcgQEAgZGVwYXJzZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSwg aW50IGxpbWl0LCBTdHJpbmdJbmZvIGJ1ZikKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs CiAJCQkJCQkJICAgcXVvdGVfaWRlbnRpZmllcihwYXR0ZXJuLT52YXJOYW1lc1tlbGVtLT52YXJJ ZF0pKTsKIAkJYXBwZW5kX3Jwcl9xdWFudGlmaWVyKGJ1ZiwgZWxlbSk7Ci0JCXJldHVybiBpICsg MTsKKwkJcmV0dXJuIGlkeCArIDE7CiAJfQogCiAJaWYgKFJQUkVsZW1Jc0JlZ2luKGVsZW0pKQog CXsKLQkJaW50CQkJZW5kID0gcnByX21hdGNoX2VuZChwYXR0ZXJuLCBpKTsKKwkJaW50CQkJZW5k ID0gcnByX21hdGNoX2VuZChwYXR0ZXJuLCBpZHgpOwogCQlib29sCQlsb25lQWx0OwogCi0JCWxv bmVBbHQgPSAoaSArIDEgPCBlbmQgJiYKLQkJCQkgICBSUFJFbGVtSXNBbHQoJnBhdHRlcm4tPmVs ZW1lbnRzW2kgKyAxXSkgJiYKLQkJCQkgICBycHJfYWx0X3Njb3BlX2VuZChwYXR0ZXJuLCBpICsg MSkgPT0gZW5kKTsKKwkJbG9uZUFsdCA9IChpZHggKyAxIDwgZW5kICYmCisJCQkJICAgUlBSRWxl bUlzQWx0KCZwYXR0ZXJuLT5lbGVtZW50c1tpZHggKyAxXSkgJiYKKwkJCQkgICBycHJfYWx0X3Nj b3BlX2VuZChwYXR0ZXJuLCBpZHggKyAxKSA9PSBlbmQpOwogCiAJCWlmIChsb25lQWx0KQogCQl7 CiAJCQkvKiBUaGUgQUxUIGNoaWxkIGFscmVhZHkgcGFyZW50aGVzaXplcyB0aGUgd2hvbGUgZ3Jv dXAgYm9keS4gKi8KLQkJCSh2b2lkKSBkZXBhcnNlX3Jwcl9ub2RlKHBhdHRlcm4sIGkgKyAxLCBl bmQsIGJ1Zik7CisJCQkodm9pZCkgZGVwYXJzZV9ycHJfbm9kZShwYXR0ZXJuLCBpZHggKyAxLCBl bmQsIGJ1Zik7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcoJyk7Ci0JCQkodm9pZCkgZGVwYXJzZV9ycHJfc2VxKHBhdHRlcm4sIGkgKyAxLCBlbmQsIGJ1 Zik7CisJCQkodm9pZCkgZGVwYXJzZV9ycHJfc2VxKHBhdHRlcm4sIGlkeCArIDEsIGVuZCwgYnVm KTsKIAkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIAkJfQogCQlhcHBlbmRfcnBy X3F1YW50aWZpZXIoYnVmLCAmcGF0dGVybi0+ZWxlbWVudHNbZW5kXSk7CkBAIC0zMDY1LDcgKzMw NjUsNyBAQCBkZXBhcnNlX3Jwcl9ub2RlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBpLCBpbnQg bGltaXQsIFN0cmluZ0luZm8gYnVmKQogCiAJQXNzZXJ0KFJQUkVsZW1Jc0FsdChlbGVtKSk7CiAJ ewotCQlpbnQJCQlhbHRFbmQgPSBycHJfYWx0X3Njb3BlX2VuZChwYXR0ZXJuLCBpKTsKKwkJaW50 CQkJYWx0RW5kID0gcnByX2FsdF9zY29wZV9lbmQocGF0dGVybiwgaWR4KTsKIAkJaW50CQkJYjsK IAkJYm9vbAkJZmlyc3QgPSB0cnVlOwogCkBAIC0zMDczLDcgKzMwNzMsNyBAQCBkZXBhcnNlX3Jw cl9ub2RlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBpLCBpbnQgbGltaXQsIFN0cmluZ0luZm8g YnVmKQogCQkJYWx0RW5kID0gbGltaXQ7CiAKIAkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn KCcpOwotCQliID0gaSArIDE7CisJCWIgPSBpZHggKyAxOwogCQl3aGlsZSAoYiA8IGFsdEVuZCkK IAkJewogCQkJaW50CQkJbmIgPSBycHJfbmV4dF9icmFuY2gocGF0dGVybiwgYiwgYWx0RW5kKTsK QEAgLTMwOTcsNDEgKzMwOTcsNDEgQEAgc3RhdGljIGludAogcnByX21hdGNoX2VuZChSUFJQYXR0 ZXJuICpwYXR0ZXJuLCBpbnQgYmVnaW5JZHgpCiB7CiAJUlBSRGVwdGgJZCA9IHBhdHRlcm4tPmVs ZW1lbnRzW2JlZ2luSWR4XS5kZXB0aDsKLQlpbnQJCQlqOworCWludAkJCWk7CiAKLQlmb3IgKGog PSBiZWdpbklkeCArIDE7IGogPCBwYXR0ZXJuLT5udW1FbGVtZW50czsgaisrKQorCWZvciAoaSA9 IGJlZ2luSWR4ICsgMTsgaSA8IHBhdHRlcm4tPm51bUVsZW1lbnRzOyBpKyspCiAJewotCQlSUFJQ YXR0ZXJuRWxlbWVudCAqZSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tqXTsKKwkJUlBSUGF0dGVybkVs ZW1lbnQgKmUgPSAmcGF0dGVybi0+ZWxlbWVudHNbaV07CiAKIAkJaWYgKFJQUkVsZW1Jc0VuZChl KSAmJiBlLT5kZXB0aCA9PSBkKQotCQkJcmV0dXJuIGo7CisJCQlyZXR1cm4gaTsKIAl9CiAJcGdf dW5yZWFjaGFibGUoKTsJCQkvKiBhIEJFR0lOIGFsd2F5cyBoYXMgYSBtYXRjaGluZyBFTkQgKi8K IH0KIAogLyoKLSAqIFNjb3BlIGVuZCBvZiB0aGUgY29uc3RydWN0IGF0IGluZGV4IGk6IHRoZSBm aXJzdCBmb2xsb3dpbmcgZWxlbWVudCB3aG9zZQotICogZGVwdGggaXMgbm8gZ3JlYXRlciB0aGFu IGkncyBvd24uICBGb3IgYW4gQUxUIG1hcmtlciB0aGlzIGlzIHRoZSBpbmRleCBqdXN0Ci0gKiBw YXN0IGl0cyBsYXN0IGJyYW5jaCwgc2luY2UgZGVwdGggc3RheXMgY29uc3RhbnQgYWNyb3NzIGJy YW5jaCBib3VuZGFyaWVzLgotICogRklOIHNpdHMgYXQgZGVwdGggMCwgc28gYSB0b3AtbGV2ZWwg QUxUIHN0b3BzIHRoZXJlLgorICogU2NvcGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3QgYXQgaW5kZXgg aWR4OiB0aGUgZmlyc3QgZm9sbG93aW5nIGVsZW1lbnQgd2hvc2UKKyAqIGRlcHRoIGlzIG5vIGdy ZWF0ZXIgdGhhbiBpZHgncyBvd24uICBGb3IgYW4gQUxUIG1hcmtlciB0aGlzIGlzIHRoZSBpbmRl eAorICoganVzdCBwYXN0IGl0cyBsYXN0IGJyYW5jaCwgc2luY2UgZGVwdGggc3RheXMgY29uc3Rh bnQgYWNyb3NzIGJyYW5jaAorICogYm91bmRhcmllcy4gIEZJTiBzaXRzIGF0IGRlcHRoIDAsIHNv IGEgdG9wLWxldmVsIEFMVCBzdG9wcyB0aGVyZS4KICAqLwogc3RhdGljIGludAotcnByX2FsdF9z Y29wZV9lbmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGkpCitycHJfYWx0X3Njb3BlX2VuZChS UFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaWR4KQogewotCVJQUkRlcHRoCWQgPSBwYXR0ZXJuLT5l bGVtZW50c1tpXS5kZXB0aDsKLQlpbnQJCQlrOworCVJQUkRlcHRoCWQgPSBwYXR0ZXJuLT5lbGVt ZW50c1tpZHhdLmRlcHRoOworCWludAkJCWk7CiAKLQlmb3IgKGsgPSBpICsgMTsgayA8IHBhdHRl cm4tPm51bUVsZW1lbnRzOyBrKyspCisJZm9yIChpID0gaWR4ICsgMTsgaSA8IHBhdHRlcm4tPm51 bUVsZW1lbnRzOyBpKyspCiAJewotCQlpZiAocGF0dGVybi0+ZWxlbWVudHNba10uZGVwdGggPD0g ZCkKLQkJCXJldHVybiBrOworCQlpZiAocGF0dGVybi0+ZWxlbWVudHNbaV0uZGVwdGggPD0gZCkK KwkJCXJldHVybiBpOwogCX0KIAlyZXR1cm4gcGF0dGVybi0+bnVtRWxlbWVudHM7CiB9CiAKIC8q Ci0gKiBCb3VuZGFyeSBvZiB0aGUgYWx0ZXJuYXRpb24gYnJhbmNoIHN0YXJ0aW5nIGF0IGIgKGku ZS4gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0Ci0gKiBicmFuY2gsIG9yIGFsdEVuZCBpZiBiIGlzIHRo ZSBsYXN0IGJyYW5jaCkuCisgKiBCb3VuZGFyeSBvZiB0aGUgYWx0ZXJuYXRpb24gYnJhbmNoIHN0 YXJ0aW5nIGF0IGJubyAoaS5lLiB0aGUgc3RhcnQgb2YgdGhlCisgKiBuZXh0IGJyYW5jaCwgb3Ig YWx0RW5kIGlmIGJubyBpcyB0aGUgbGFzdCBicmFuY2gpLgogICoKICAqIFRoZSBicmFuY2gtc3Rh cnQgZWxlbWVudCdzIGp1bXAgcG9pbnRzIGF0IHRoZSBuZXh0IGJyYW5jaCB3aGVuIHRoaXMgaXMg bm90CiAgKiB0aGUgbGFzdCBicmFuY2guICBqdW1wIGlzIG92ZXJsb2FkZWQgKGEgZ3JvdXAgQkVH SU4gYWxzbyB1c2VzIGl0IGZvciBpdHMKQEAgLTMxNDAsOSArMzE0MCw5IEBAIHJwcl9hbHRfc2Nv cGVfZW5kKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBpKQogICogbmV4dCByZWRpcmVjdGVkIHBh c3QgdGhlIGFsdGVybmF0aW9uLCBzbyBpdCBkb2VzIG5vdCBwb2ludCBhdCBqLgogICovCiBzdGF0 aWMgaW50Ci1ycHJfbmV4dF9icmFuY2goUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGIsIGludCBh bHRFbmQpCitycHJfbmV4dF9icmFuY2goUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGJubywgaW50 IGFsdEVuZCkKIHsKLQlpbnQJCQlqID0gcGF0dGVybi0+ZWxlbWVudHNbYl0uanVtcDsKKwlpbnQJ CQlqID0gcGF0dGVybi0+ZWxlbWVudHNbYm5vXS5qdW1wOwogCiAJaWYgKGogIT0gUlBSX0VMRU1J RFhfSU5WQUxJRCAmJiBqIDwgYWx0RW5kICYmCiAJCXBhdHRlcm4tPmVsZW1lbnRzW2ogLSAxXS5u ZXh0ICE9IGopCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0011-comparison-point-wording.txt" Content-Disposition: attachment; filename="nocfbot-0011-comparison-point-wording.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jw10 RnJvbSAwYmM2MGVmNGRjOWNiYTA0NWY2ZWU4MmQ4Y2ZjYjQ4ZTJmNWNmNzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDEzOjA0OjAwICswOTAwClN1YmplY3Q6IFtQQVRDSCAxMS8xM10g UmVuYW1lIGFic29ycHRpb24gImp1ZGdtZW50IHBvaW50IiB0byAiY29tcGFyaXNvbgogcG9pbnQi IGluIGNvbW1lbnRzCgpUaGUgYWJzb3JwdGlvbiBhbmFseXNpcyBjb21tZW50cyBkZXNjcmliZWQg dGhlIEFCU09SQkFCTEUgZWxlbWVudCBmbGFnCmFzIGEgImp1ZGdtZW50IHBvaW50Ii4gIFVzZSAi Y29tcGFyaXNvbiBwb2ludCIgaW5zdGVhZCwgd2hpY2ggc2F5cyBtb3JlCmRpcmVjdGx5IHdoYXQg aGFwcGVucyB0aGVyZTogd2hlcmUgY29uc2VjdXRpdmUgaXRlcmF0aW9ucyBhcmUgY29tcGFyZWQu ClRoaXMgdG91Y2hlcyBjb21tZW50cyBhbmQgdGhlIGV4ZWN1dG9yIFJFQURNRSBvbmx5LCBhY3Jv c3MgdGhlIHBsYW5uZXIsCmV4ZWN1dG9yLCBhbmQgRVhQTEFJTiBkZXBhcnNlLCBwbHVzIHRoZSBy cHJfYmFzZSB0ZXN0IGNvbW1lbnRzOyB0aGUKImVxdWl2YWxlbmNlIGp1ZGdtZW50IiB3b3JkaW5n IGFuZCBhbGwgaWRlbnRpZmllcnMgYXJlIHVuY2hhbmdlZC4KCk5vIGNoYW5nZSB0byBiZWhhdmlv ciBvciB0byBxdWVyeSBvdXRwdXQuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j ICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwciAgICAgICAg fCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgICAgICAgICB8IDI5ICsr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIu YyAgICAgICB8IDE0ICsrKysrKy0tLS0tLS0KIHNyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAg ICAgICAgICAgIHwgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0 IHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICB8ICA2 ICsrKy0tLQogNyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggNDIzY2YzNTIxMjUuLmIzZmMzMjQ3MThkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0yOTM3LDcgKzI5MzcsNyBAQCBhcHBlbmRfcnByX3F1 YW50aWZpZXIoU3RyaW5nSW5mbyBidWYsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtKQogCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICc/Jyk7CiAJfQogCi0JLyogQXBwZW5kIGFic29ycHRpb24g bWFya2VyczogIiBmb3IganVkZ21lbnQgcG9pbnQsICcgZm9yIGJyYW5jaCBvbmx5ICovCisJLyog QXBwZW5kIGFic29ycHRpb24gbWFya2VyczogIiBmb3IgY29tcGFyaXNvbiBwb2ludCwgJyBmb3Ig YnJhbmNoIG9ubHkgKi8KIAlpZiAoUlBSRWxlbUlzQWJzb3JiYWJsZShlbGVtKSkKIAl7CiAJCUFz c2VydChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORik7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9SRUFETUUucnByIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJw cgppbmRleCA3MTNhZDg0ZTFkOS4uNTBkMWZmODdmN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL1JFQURNRS5ycHIKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJw cgpAQCAtMjg1LDcgKzI4NSw3IEBAIEVsZW1lbnQgZmxhZ3MgKDEgYnl0ZSwgYml0bWFzayk6CiAg ICAgICAgIGFic29ycHRpb24uCiAKICAgMHgwOCAgUlBSX0VMRU1fQUJTT1JCQUJMRSAgICAgICAg IChWQVIsIEVORCkKLSAgICAgICAgQWJzb3JwdGlvbiBqdWRnbWVudCBwb2ludC4gIFdoZXJlIHRv IGNvbXBhcmUgY29uc2VjdXRpdmUKKyAgICAgICAgQWJzb3JwdGlvbiBjb21wYXJpc29uIHBvaW50 LiAgV2hlcmUgdG8gY29tcGFyZSBjb25zZWN1dGl2ZQogICAgICAgICBpdGVyYXRpb25zIGZvciBh YnNvcnB0aW9uLgogICAgICAgICAgIC0gU2ltcGxlIHVuYm91bmRlZCBWQVIgKEErKTogc2V0IG9u IHRoZSBWQVIgaXRzZWxmCiAgICAgICAgICAgLSBVbmJvdW5kZWQgR1JPVVAgKChBIEIpKyk6IHNl dCBvbiB0aGUgRU5EIGVsZW1lbnQgb25seQpAQCAtMTM5Myw3ICsxMzkzLDcgQEAgWElJLTUuIEV4 ZWN1dGlvbiBPcHRpbWl6YXRpb24gU3VtbWFyeQogICAgIGNvdW50cykgY29tYmluYXRpb24gdGhy b3VnaCBtdWx0aXBsZSBwYXRocy4gQWRkaXRpb25hbGx5LCBmb3IKICAgICBncm91cCBhYnNvcnB0 aW9uLCBuZmFfbWF0Y2ggcGVyZm9ybXMgaW5saW5lIGFkdmFuY2UgZnJvbSBib3VuZGVkCiAgICAg VkFScyAoY291bnQgPj0gbWF4KSB3aXRoaW4gdGhlIGFic29yYmFibGUgcmVnaW9uIChBQlNPUkJB QkxFX0JSQU5DSCkKLSAgICB0aHJvdWdoIEVORCBjaGFpbnMgdG8gcmVhY2ggdGhlIGp1ZGdtZW50 IHBvaW50IChBQlNPUkJBQkxFIEVORCkuCisgICAgdGhyb3VnaCBFTkQgY2hhaW5zIHRvIHJlYWNo IHRoZSBjb21wYXJpc29uIHBvaW50IChBQlNPUkJBQkxFIEVORCkuCiAgICAgVGhpcyBwcm9jZXNz IGNhbiBhbHNvIHByb2R1Y2UgZHVwbGljYXRlIHN0YXRlcyByZWFjaGluZyB0aGUgc2FtZSBFTkQu CiAgICAgbmZhX2FkZF9zdGF0ZV91bmlxdWUoKSBibG9ja3MgZHVwbGljYXRlIGFkZGl0aW9uIG9m IGlkZW50aWNhbCBzdGF0ZXMKICAgICBpbiBib3RoIGNhc2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5j CmluZGV4IDA5OWI4MWFlYjgxLi45MGUzYTA2OGYwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpA QCAtNTc4LDcgKzU3OCw3IEBAIG5mYV91cGRhdGVfYWJzb3JwdGlvbl9mbGFncyhSUFJORkFDb250 ZXh0ICpjdHgpCiAJLyoKIAkgKiBJdGVyYXRlIHRocm91Z2ggYWxsIHN0YXRlcyB0byBjaGVjayBh YnNvcnB0aW9uIHN0YXR1cy4gVXNlcwogCSAqIHN0YXRlLT5pc0Fic29yYmFibGUgd2hpY2ggdHJh Y2tzIGlmIHN0YXRlIGlzIGluIGFic29yYmFibGUgcmVnaW9uLiBUaGlzCi0JICogaXMgZGlmZmVy ZW50IGZyb20gUlBSRWxlbUlzQWJzb3JiYWJsZShlbGVtKSB3aGljaCBjaGVja3MganVkZ21lbnQK KwkgKiBpcyBkaWZmZXJlbnQgZnJvbSBSUFJFbGVtSXNBYnNvcmJhYmxlKGVsZW0pIHdoaWNoIGNo ZWNrcyBjb21wYXJpc29uCiAJICogcG9pbnQuCiAJICovCiAJZm9yIChzdGF0ZSA9IGN0eC0+c3Rh dGVzOyBzdGF0ZSAhPSBOVUxMOyBzdGF0ZSA9IHN0YXRlLT5uZXh0KQpAQCAtNjI1LDggKzYyNSw4 IEBAIG5mYV9zdGF0ZXNfY292ZXJlZChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJORkFDb250ZXh0 ICpvbGRlciwgUlBSTkZBQ29udGV4dCAqbmV3CiAJCWRlcHRoID0gZWxlbS0+ZGVwdGg7CiAKIAkJ LyoKLQkJICogT25seSBjb21wYXJlIGF0IGFic29ycHRpb24ganVkZ21lbnQgcG9pbnRzIChSUFJf RUxFTV9BQlNPUkJBQkxFKS4KLQkJICogSnVkZ21lbnQgcG9pbnRzIGFyZSB3aGVyZSBjb3VudC1k b21pbmFuY2UgZ3VhcmFudGVlcyB0aGUgbmV3ZXIKKwkJICogT25seSBjb21wYXJlIGF0IGFic29y cHRpb24gY29tcGFyaXNvbiBwb2ludHMgKFJQUl9FTEVNX0FCU09SQkFCTEUpLgorCQkgKiBDb21w YXJpc29uIHBvaW50cyBhcmUgd2hlcmUgY291bnQtZG9taW5hbmNlIGd1YXJhbnRlZXMgdGhlIG5l d2VyCiAJCSAqIGNvbnRleHQncyBmdXR1cmUgbWF0Y2hlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIG9s ZGVyJ3MuCiAJCSAqLwogCQlpZiAoIVJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkpCkBAIC03ODIs NyArNzgyLDggQEAgbmZhX2V2YWxfdmFyX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg UlBSUGF0dGVybkVsZW1lbnQgKmVsZW0sCiAgKiAgICAgcHJldmlvdXMgYWR2YW5jZSB3aGVuIGNv dW50ID49IG1pbiB3YXMgc2F0aXNmaWVkKQogICoKICAqIEZvciBWQVJzIHRoYXQgcmVhY2hlZCBt YXggY291bnQgZm9sbG93ZWQgYnkgRU5EOgotICogICAtIEFkdmFuY2UgdGhyb3VnaCB0aGUgRU5E LWVsZW1lbnQgY2hhaW4gdG8gdGhlIGFic29ycHRpb24ganVkZ21lbnQgcG9pbnQKKyAqICAgLSBB ZHZhbmNlIHRocm91Z2ggdGhlIEVORC1lbGVtZW50IGNoYWluIHRvIHRoZSBhYnNvcnB0aW9uCisg KiAgICAgY29tcGFyaXNvbiBwb2ludAogICogICAtIE9ubHkgZGV0ZXJtaW5pc3RpYyBleGl0cyAo Y291bnQgPj0gbWF4LCBtYXggIT0gSU5GKSBhcmUgaGFuZGxlZAogICogICAtIENoYWlucyB0aHJv dWdoIEVORCBlbGVtZW50cyB3aGlsZSBjb3VudCA+PSBtYXggKG11c3QtZXhpdCBwYXRoKQogICoK QEAgLTgwMCw3ICs4MDEsNyBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBS UFJORkFDb250ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAJLyoKIAkgKiBFdmFsdWF0ZSBW QVIgZWxlbWVudHMgYWdhaW5zdCBjdXJyZW50IHJvdy4gRm9yIFZBUnMgdGhhdCByZWFjaCBtYXgK IAkgKiBjb3VudCB3aXRoIEVORCBuZXh0LCBhZHZhbmNlIHRocm91Z2ggdGhlIGNoYWluIG9mIEVO RCBlbGVtZW50cyBpbmxpbmUKLQkgKiBzbyBhYnNvcmIgcGhhc2UgY2FuIGNvbXBhcmUgc3RhdGVz IGF0IGp1ZGdtZW50IHBvaW50cy4KKwkgKiBzbyBhYnNvcmIgcGhhc2UgY2FuIGNvbXBhcmUgc3Rh dGVzIGF0IGNvbXBhcmlzb24gcG9pbnRzLgogCSAqLwogCWZvciAoc3RhdGUgPSBjdHgtPnN0YXRl czsgc3RhdGUgIT0gTlVMTDsgc3RhdGUgPSBuZXh0U3RhdGUpCiAJewpAQCAtODMxLDcgKzgzMiw3 IEBAIG5mYV9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0 eCwgYm9vbCAqdmFyTWF0Y2hlZCkKIAogCQkJCS8qCiAJCQkJICogRm9yIFZBUiBhdCBtYXggY291 bnQgd2l0aCBFTkQgbmV4dCwgYWR2YW5jZSB0aHJvdWdoIEVORAotCQkJCSAqIGNoYWluIHRvIHJl YWNoIHRoZSBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50LiAgT25seQorCQkJCSAqIGNoYWluIHRv IHJlYWNoIHRoZSBhYnNvcnB0aW9uIGNvbXBhcmlzb24gcG9pbnQuICBPbmx5CiAJCQkJICogZGV0 ZXJtaW5pc3RpYyBleGl0cyAoY291bnQgPj0gbWF4LCBtYXggZmluaXRlKSBhcmUgaGFuZGxlZDsK IAkJCQkgKiB1bmJvdW5kZWQgVkFScyBzdGF5IGZvciBhZHZhbmNlIHBoYXNlLgogCQkJCSAqCkBA IC04NDEsMTAgKzg0MiwxMCBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBS UFJORkFDb250ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAJCQkJICogdG8gdGhlIG5leHQg b3V0ZXIgRU5ELiAgVGhlIGxvb3AgYmVsb3cgd2Fsa3MgdGhpcyBjaGFpbi4KIAkJCQkgKgogCQkJ CSAqIEFCU09SQkFCTEVfQlJBTkNIIG1hcmtzIGVsZW1lbnRzIGluc2lkZSB0aGUgYWJzb3JiYWJs ZQotCQkJCSAqIHJlZ2lvbjsgQUJTT1JCQUJMRSBtYXJrcyB0aGUgb3V0ZXJtb3N0IGp1ZGdtZW50 IHBvaW50IHdoZXJlCi0JCQkJICogY291bnQtZG9taW5hbmNlIGlzIGV2YWx1YXRlZC4gIFdlIGNo YWluIHRocm91Z2ggQlJBTkNICi0JCQkJICogZWxlbWVudHMgdW50aWwgcmVhY2hpbmcgdGhlIEFC U09SQkFCTEUgcG9pbnQgb3IgYW4gZWxlbWVudAotCQkJCSAqIHRoYXQgY2FuIHN0aWxsIGxvb3Ag KGNvdW50IDwgbWF4KS4KKwkJCQkgKiByZWdpb247IEFCU09SQkFCTEUgbWFya3MgdGhlIG91dGVy bW9zdCBjb21wYXJpc29uIHBvaW50CisJCQkJICogd2hlcmUgY291bnQtZG9taW5hbmNlIGlzIGV2 YWx1YXRlZC4gIFdlIGNoYWluIHRocm91Z2gKKwkJCQkgKiBCUkFOQ0ggZWxlbWVudHMgdW50aWwg cmVhY2hpbmcgdGhlIEFCU09SQkFCTEUgcG9pbnQgb3IgYW4KKwkJCQkgKiBlbGVtZW50IHRoYXQg Y2FuIHN0aWxsIGxvb3AgKGNvdW50IDwgbWF4KS4KIAkJCQkgKi8KIAkJCQlpZiAoUlBSRWxlbUlz QWJzb3JiYWJsZUJyYW5jaChlbGVtKSAmJgogCQkJCQkhUlBSRWxlbUlzQWJzb3JiYWJsZShlbGVt KSAmJgpAQCAtODc2LDcgKzg3Nyw3IEBAIG5mYV9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgYm9vbCAqdmFyTWF0Y2hlZCkKIAogCQkJCQkvKgogCQkJ CQkgKiBDaGFpbiB0aHJvdWdoIEVORCBlbGVtZW50cyB3aXRoaW4gdGhlIGFic29yYmFibGUgcmVn aW9uCi0JCQkJCSAqIChBQlNPUkJBQkxFX0JSQU5DSCkgdW50aWwgcmVhY2hpbmcgdGhlIGp1ZGdt ZW50IHBvaW50CisJCQkJCSAqIChBQlNPUkJBQkxFX0JSQU5DSCkgdW50aWwgcmVhY2hpbmcgdGhl IGNvbXBhcmlzb24gcG9pbnQKIAkJCQkJICogKEFCU09SQkFCTEUpLiAgQ29udGludWUgb25seSBv biBtdXN0LWV4aXQgcGF0aCAoY291bnQKIAkJCQkJICogPj0gbWF4KSB3aXRoIEVORCBuZXh0Lgog CQkJCQkgKi8KQEAgLTg5Miw5ICs4OTMsOSBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAJCQkJCQkvKgog CQkJCQkJICogRXhpdCB0aGlzIGludGVybWVkaWF0ZSBncm91cDogY2xlYXIgaXRzIG93biBjb3Vu dAogCQkJCQkJICogKGNvdW50LWNsZWFyIHBvbGljeSkuICBJdCBzaXRzIGJlbG93IHRoZSBhYnNv cmJhYmxlCi0JCQkJCQkgKiBqdWRnbWVudCBwb2ludCwgc28gaXQgaXMgZXhjbHVkZWQgZnJvbSB0 aGUKLQkJCQkJCSAqIGRvbWluYW5jZSBjb21wYXJpc29uOyB0aGUganVkZ21lbnQgcG9pbnQgd2hl cmUgdGhlCi0JCQkJCQkgKiBjaGFpbiBzdG9wcyBrZWVwcyBpdHMgY291bnQuCisJCQkJCQkgKiBj b21wYXJpc29uIHBvaW50LCBzbyBpdCBpcyBleGNsdWRlZCBmcm9tIHRoZQorCQkJCQkJICogZG9t aW5hbmNlIGNvbXBhcmlzb247IHRoZSBjb21wYXJpc29uIHBvaW50IHdoZXJlCisJCQkJCQkgKiB0 aGUgY2hhaW4gc3RvcHMga2VlcHMgaXRzIGNvdW50LgogCQkJCQkJICovCiAJCQkJCQlzdGF0ZS0+ Y291bnRzW2VuZERlcHRoXSA9IDA7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKaW5kZXggNTk3 YTk2NmM3YjEuLmViYmE4ZTUwYjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwpAQCAtMTks NyArMTksNyBAQAogICogICBjb21wbGV4aXR5IGZyb20gTyhuXjIpIHRvIE8obikgZm9yIHBhdHRl cm5zIGxpa2UgQSsgQi4KICAqCiAgKiAgIFRoZSBhYnNvcnB0aW9uIGFuYWx5c2lzIHVzZXMgdHdv IGVsZW1lbnQgZmxhZ3M6Ci0gKiAgIC0gUlBSX0VMRU1fQUJTT1JCQUJMRTogbWFya3MgV0hFUkUg dG8gY29tcGFyZSAoanVkZ21lbnQgcG9pbnQpCisgKiAgIC0gUlBSX0VMRU1fQUJTT1JCQUJMRTog bWFya3MgV0hFUkUgdG8gY29tcGFyZSAoY29tcGFyaXNvbiBwb2ludCkKICAqICAgLSBSUFJfRUxF TV9BQlNPUkJBQkxFX0JSQU5DSDogbWFya3MgdGhlIGFic29yYmFibGUgcmVnaW9uCiAgKgogICog ICBTZWUgY29tcHV0ZUFic29yYmFiaWxpdHkoKSBhbmQgdGhlIGRldGFpbGVkIGNvbW1lbnRzIGJl Zm9yZQpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgZmluYWxpemVSUFJQYXR0ZXJuKFJQUlBhdHRlcm4g KnJlc3VsdCkKICAqICAgdGhhbiBDdHgyJ3MgbWF0Y2ggKDEgdG8gY3VycmVudCkuIFNvIEN0eDIg Y2FuIGJlIHNhZmVseSBlbGltaW5hdGVkLgogICoKICAqIFR3byBGbGFnczoKLSAqICAgMS4gUlBS X0VMRU1fQUJTT1JCQUJMRSAtICJBYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50IgorICogICAxLiBS UFJfRUxFTV9BQlNPUkJBQkxFIC0gIkFic29ycHRpb24gY29tcGFyaXNvbiBwb2ludCIKICAqICAg ICAgV0hFUkUgY29udGV4dHMgY2FuIGJlIGNvbXBhcmVkIGZvciBhYnNvcnB0aW9uLgogICogICAg ICAtIFNpbXBsZSB1bmJvdW5kZWQgVkFSIChBKyk6IHRoZSBWQVIgZWxlbWVudCBpdHNlbGYKICAq ICAgICAgLSBVbmJvdW5kZWQgR1JPVVAgKChBIEIpKyk6IHRoZSBFTkQgZWxlbWVudCBvbmx5CkBA IC0xNTA2LDIwICsxNTA2LDIwIEBAIGZpbmFsaXplUlBSUGF0dGVybihSUFJQYXR0ZXJuICpyZXN1 bHQpCiAgKiAgICAgICAgICAgICAgICAtPiBCb3RoIGF0IEVORCwgY29tcGFyYWJsZSEgQ3R4MSBh YnNvcmJzIEN0eDIuCiAgKgogICogICBDb250ZXh0cyBzeW5jaHJvbml6ZSBhdCBFTkQgZXZlcnkg Z3JvdXAtbGVuZ3RoIHJvd3MuIFRoZXJlZm9yZToKLSAqICAgLSBBQlNPUkJBQkxFIG1hcmtzIEVO RCBhcyBqdWRnbWVudCBwb2ludCAod2hlcmUgdG8gY29tcGFyZSkKKyAqICAgLSBBQlNPUkJBQkxF IG1hcmtzIEVORCBhcyBjb21wYXJpc29uIHBvaW50ICh3aGVyZSB0byBjb21wYXJlKQogICogICAt IEFCU09SQkFCTEVfQlJBTkNIIGtlZXBzIHN0YXRlLmlzQWJzb3JiYWJsZT10cnVlIHRocm91Z2gg QS0+Qi0+RU5ECiAgKgogICogUGF0dGVybiBFeGFtcGxlczoKICAqCiAgKiAgIFBhdHRlcm46IEEr IEIKLSAqICAgRWxlbWVudCAwIChBKTogQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIICA8 LSBqdWRnbWVudCBwb2ludAorICogICBFbGVtZW50IDAgKEEpOiBBQlNPUkJBQkxFIHwgQUJTT1JC QUJMRV9CUkFOQ0ggIDwtIGNvbXBhcmlzb24gcG9pbnQKICAqICAgRWxlbWVudCAxIChCKTogKG5v bmUpCiAgKiAgIC0+IENvbXBhcmUgYXQgQSBldmVyeSByb3cuIFdoZW4gY29udGV4dHMgbW92ZSB0 byBCLCBhYnNvcnB0aW9uIHN0b3BzLgogICoKICAqICAgUGF0dGVybjogKEEgQikrIEMKICAqICAg RWxlbWVudCAwIChBKTogQUJTT1JCQUJMRV9CUkFOQ0gKICAqICAgRWxlbWVudCAxIChCKTogQUJT T1JCQUJMRV9CUkFOQ0gKLSAqICAgRWxlbWVudCAyIChFTkQpOiBBQlNPUkJBQkxFIHwgQUJTT1JC QUJMRV9CUkFOQ0ggIDwtIGp1ZGdtZW50IHBvaW50CisgKiAgIEVsZW1lbnQgMiAoRU5EKTogQUJT T1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIICA8LSBjb21wYXJpc29uIHBvaW50CiAgKiAgIEVs ZW1lbnQgMyAoQyk6IChub25lKQogICogICAtPiBDb21wYXJlIGF0IEVORCBldmVyeSAyIHJvd3Mu IFdoZW4gY29udGV4dHMgbW92ZSB0byBDLCBhYnNvcnB0aW9uIHN0b3BzLgogICoKQEAgLTE2Mjks NyArMTYyOSw3IEBAIGlzRml4ZWRMZW5ndGhDaGlsZHJlbihSUFJQYXR0ZXJuICpwYXR0ZXJuLCBS UFJFbGVtSWR4IGlkeCwgUlBSRGVwdGggc2NvcGVEZXB0aCkKICAqICAgICAgQWxsIGNoaWxkcmVu IG11c3QgaGF2ZSBtaW4gPT0gbWF4IChyZWN1cnNpdmVseSBmb3IgbmVzdGVkIHN1Ymdyb3Vwcyku CiAgKiAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1bnJvbGxpbmcgdG8gezEsMX0gVkFScywg ZS5nLiwgKEEgQiBCKSsgQy4KICAqICAgICAgQWxsIGVsZW1lbnRzIHdpdGhpbiB0aGUgZ3JvdXAg Z2V0IEFCU09SQkFCTEVfQlJBTkNILgotICogICAgICBPbmx5IHRoZSB1bmJvdW5kZWQgRU5EIGdl dHMgQUJTT1JCQUJMRSAoanVkZ21lbnQgcG9pbnQpLgorICogICAgICBPbmx5IHRoZSB1bmJvdW5k ZWQgRU5EIGdldHMgQUJTT1JCQUJMRSAoY29tcGFyaXNvbiBwb2ludCkuCiAgKiAgICAgIEV4YW1w bGVzOgogICogICAgICAgIChBIEJ7Mn0pKyBDICAgICAgICAgIC0gQnsyfSBoYXMgbWluPT1tYXgs IHN0ZXA9MwogICogICAgICAgIChBIChCIEMpezJ9IEQpKyBFICAgIC0gbmVzdGVkIHsyfSBzdWJn cm91cCwgc3RlcD02CkBAIC0xNzkxLDcgKzE3OTEsNyBAQCBjb21wdXRlQWJzb3JiYWJpbGl0eVJl Y3Vyc2l2ZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IHN0YXJ0SWR4LAogICogZGVj cmVhc2UgcHJvcGVydHkgcmVxdWlyZWQgZm9yIHNhZmUgYWJzb3JwdGlvbi4KICAqCiAgKiBUaGlz IGZ1bmN0aW9uIHNldHMgdHdvIGZsYWdzOgotICogICBSUFJfRUxFTV9BQlNPUkJBQkxFOiBBYnNv cnB0aW9uIGp1ZGdtZW50IHBvaW50CisgKiAgIFJQUl9FTEVNX0FCU09SQkFCTEU6IEFic29ycHRp b24gY29tcGFyaXNvbiBwb2ludAogICogICAgIC0gU2ltcGxlIHVuYm91bmRlZCBWQVI6IHRoZSBW QVIgaXRzZWxmIChlLmcuLCBBIGluIEErKQogICogICAgIC0gVW5ib3VuZGVkIEdST1VQOiB0aGUg RU5EIGVsZW1lbnQgKGUuZy4sIEVORCBpbiAoQSBCKSspCiAgKiAgIFJQUl9FTEVNX0FCU09SQkFC TEVfQlJBTkNIOiBBbGwgZWxlbWVudHMgaW4gYWJzb3JiYWJsZSByZWdpb24KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIu aAppbmRleCAyMzc2MzQ0MmI2NS4uODNkM2NkMjliMDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L29wdGltaXplci9ycHIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKQEAgLTUz LDcgKzUzLDcgQEAKICAqIG9wdGltaXplci9wbGFuL3Jwci5jLgogICovCiAjZGVmaW5lIFJQUl9F TEVNX0FCU09SQkFCTEVfQlJBTkNICTB4MDQJLyogZWxlbWVudCBpbiBhYnNvcmJhYmxlIHJlZ2lv biAqLwotI2RlZmluZSBSUFJfRUxFTV9BQlNPUkJBQkxFCQkJMHgwOAkvKiBhYnNvcnB0aW9uIGp1 ZGdtZW50IHBvaW50ICovCisjZGVmaW5lIFJQUl9FTEVNX0FCU09SQkFCTEUJCQkweDA4CS8qIGFi c29ycHRpb24gY29tcGFyaXNvbiBwb2ludCAqLwogCiAvKiBBY2Nlc3NvciBtYWNyb3MgZm9yIFJQ UlBhdHRlcm5FbGVtZW50ICovCiAjZGVmaW5lIFJQUkVsZW1Jc1JlbHVjdGFudChlKQkJCSgoKGUp LT5mbGFncyAmIFJQUl9FTEVNX1JFTFVDVEFOVCkgIT0gMCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHJfYmFzZS5vdXQKaW5kZXggODBmYWJkZTUxNGMuLmIzODVlOTcyZTdmIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtNTQ3Miw5ICs1NDcyLDkgQEAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORwogLS0gQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVzdHMKIC0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g VGVzdHMgYWJzb3JwdGlvbiBtYXJrZXIgZGlzcGxheSBpbiBFWFBMQUlOIG91dHB1dAotLS0gTWFy a2VyczogJyA9IGJyYW5jaCBlbGVtZW50LCAiID0ganVkZ21lbnQgcG9pbnQKKy0tIE1hcmtlcnM6 ICcgPSBicmFuY2ggZWxlbWVudCwgIiA9IGNvbXBhcmlzb24gcG9pbnQKIC0tIEZpbGVzOiBleHBs YWluLmMgKGFwcGVuZF9ycHJfcXVhbnRpZmllciwgZGVwYXJzZV9ycHJfcGF0dGVybikKLS0tIFNp bXBsZSBWQVI6IEErIC0+IGErIiAoanVkZ21lbnQgcG9pbnQpCistLSBTaW1wbGUgVkFSOiBBKyAt PiBhKyIgKGNvbXBhcmlzb24gcG9pbnQpCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKQEAgLTU0OTAsNyAr NTQ5MCw3IEBAIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf cGxhbgogKDcgcm93cykKIAotLS0gR1JPVVAgdW5ib3VuZGVkOiAoQSBCKSsgLT4gKGEnIGInKSsi IChicmFuY2ggKyBqdWRnbWVudCkKKy0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBi JykrIiAoYnJhbmNoICsgY29tcGFyaXNvbikKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByX2Jhc2Uuc3FsCmluZGV4IDIxODQwYWE3N2JlLi5hZjQ5OGZmZmI2NiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9iYXNlLnNxbApAQCAtMzI1NCwxNiArMzI1NCwxNiBAQCBXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCiAtLSBBYnNvcnB0aW9uIEZsYWcgRGlzcGxheSBUZXN0cwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBUZXN0cyBh YnNvcnB0aW9uIG1hcmtlciBkaXNwbGF5IGluIEVYUExBSU4gb3V0cHV0Ci0tLSBNYXJrZXJzOiAn ID0gYnJhbmNoIGVsZW1lbnQsICIgPSBqdWRnbWVudCBwb2ludAorLS0gTWFya2VyczogJyA9IGJy YW5jaCBlbGVtZW50LCAiID0gY29tcGFyaXNvbiBwb2ludAogLS0gRmlsZXM6IGV4cGxhaW4uYyAo YXBwZW5kX3Jwcl9xdWFudGlmaWVyLCBkZXBhcnNlX3Jwcl9wYXR0ZXJuKQogCi0tLSBTaW1wbGUg VkFSOiBBKyAtPiBhKyIgKGp1ZGdtZW50IHBvaW50KQorLS0gU2ltcGxlIFZBUjogQSsgLT4gYSsi IChjb21wYXJpc29uIHBvaW50KQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyB2YWwg PiAwKTsKIAotLS0gR1JPVVAgdW5ib3VuZGVkOiAoQSBCKSsgLT4gKGEnIGInKSsiIChicmFuY2gg KyBqdWRnbWVudCkKKy0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBiJykrIiAoYnJh bmNoICsgY29tcGFyaXNvbikKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotLSAKMi41MC4xIChBcHBsZSBH aXQtMTU1KQoK --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0013-doc-nav-offset.txt" Content-Disposition: attachment; filename="nocfbot-0013-doc-nav-offset.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11k112 RnJvbSAzY2NjYWQyZWNjMzRiZTZkMGIxZTk2YWZkY2E3NDY4ZTRlOWFiMjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDE0OjE3OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAxMy8xM10g RG9jdW1lbnQgZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcidzIE5VTEwvbmVnYXRpdmUgb2Zmc2V0CiBo YW5kbGluZwoKZXZhbF9uYXZfb2Zmc2V0X2hlbHBlciBwcmUtZXZhbHVhdGVzIGEgbmF2aWdhdGlv biBvZmZzZXQgYXQgZXhlY3V0b3IgaW5pdAp0byBzaXplIHRoZSBmcmFtZSB0cmltLCByZXR1cm5p bmcgMCBmb3IgYSBOVUxMIG9yIG5lZ2F0aXZlIG9mZnNldCByYXRoZXIKdGhhbiByZWplY3Rpbmcg aXQuICBUaGUgY29tbWVudCBkaWQgbm90IHNheSB3aHksIGxlYXZpbmcgdGhlIHB1cnBvc2Ugb2Yg dGhlCmZ1bmN0aW9uIGFuZCBvZiB0aG9zZSBicmFuY2hlcyB1bmNsZWFyLgoKRXhwbGFpbiB0aGF0 IGEgTlVMTCBvciBuZWdhdGl2ZSBvZmZzZXQgaXMgY2F1Z2h0IHBlciByb3cgb24gdGhlIG5hdmln YXRpb24KcGF0aCB0aGF0IGNvbnN1bWVzIGl0LCB3aGljaCBlcnJvcnMgb3V0IGJlZm9yZSBuYXZp Z2F0aW9uIHByb2R1Y2VzIGFueQpyZXN1bHQsIHNvIHRoZSB0cmltIHZhbHVlIGNvbXB1dGVkIGhl cmUgaXMgbmV2ZXIgdXNlZC4gIFRoZSBicmFuY2hlcyBhcmUKcmVhY2hhYmxlIC0tIGEgbmF2aWdh dGlvbiBvZmZzZXQgY2FuIGJlIGEgcnVuLXRpbWUgY29uc3RhbnQgc3VjaCBhcyBhIFBhcmFtCi0t IGFuZCBhcmUgYWxyZWFkeSBjb3ZlcmVkIGJ5IHRoZSBQUkVWKHByaWNlLCAkMSkgdGVzdHMgaW4g cnByLnNxbCwgc28gdGhleQpuZWVkIG5laXRoZXIgYSBuZXcgdGVzdCBub3IgYW4gYXNzZXJ0aW9u LgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEzICsrKysrKysr Ky0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDgxOWFkODE0YmY1Li5lYjFkNjE2 YjQ5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMzk4NSwxMCArMzk4 NSwxNSBAQCBwdXRfbm90bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywg aW50IGFyZ25vLCBib29sIGlzbnVsbCkKIAogLyoKICAqIGV2YWxfbmF2X29mZnNldF9oZWxwZXIK LSAqCQlFdmFsdWF0ZSBhbiBvZmZzZXQgZXhwcmVzc2lvbiBhdCBleGVjdXRvciBpbml0IHRpbWUg Zm9yIHRyaW0KLSAqCQlvcHRpbWl6YXRpb24uICBSZXR1cm5zIHRoZSBvZmZzZXQgdmFsdWUsIG9y IDAgZm9yIE5VTEwvbmVnYXRpdmUKLSAqCQkodGhlc2Ugd2lsbCBjYXVzZSBhIHJ1bnRpbWUgZXJy b3IgZHVyaW5nIGFjdHVhbCBuYXZpZ2F0aW9uLCBzbyB0aGUKLSAqCQl0cmltIHZhbHVlIGlzIGly cmVsZXZhbnQpLgorICoJCVByZS1ldmFsdWF0ZSBhIG5hdmlnYXRpb24gb2Zmc2V0IGV4cHJlc3Np b24gYXQgZXhlY3V0b3IgaW5pdCB0aW1lLCB0bworICoJCWJvdW5kIGhvdyBmYXIgbmF2aWdhdGlv biBjYW4gcmVhY2ggKHdoaWNoIHNpemVzIHRoZSBmcmFtZSB0cmltKS4KKyAqCQlSZXR1cm5zIHRo ZSBvZmZzZXQgdmFsdWUsIG9yIDAgZm9yIGEgTlVMTCBvciBuZWdhdGl2ZSBvZmZzZXQuCisgKgor ICogVGhlIG9mZnNldCBpcyBub3QgdmFsaWRhdGVkIGhlcmUuICBBIE5VTEwgb3IgbmVnYXRpdmUg dmFsdWUgaXMgY2F1Z2h0IGxhdGVyLAorICogcGVyIHJvdywgb24gdGhlIG5hdmlnYXRpb24gcGF0 aCB0aGF0IGNvbnN1bWVzIGl0IChzZWUgRUVPUF9SUFJfTkFWX1NFVCBpbgorICogZXhlY0V4cHJJ bnRlcnAuYyksIHdoaWNoIGVycm9ycyBvdXQgYmVmb3JlIG5hdmlnYXRpb24gcHJvZHVjZXMgYW55 IHJlc3VsdDsKKyAqIHRoZSB0cmltIHNpemluZyBjb21wdXRlZCBmcm9tIHN1Y2ggYW4gb2Zmc2V0 IGlzIHRoZXJlZm9yZSBuZXZlciB1c2VkLCBhbmQgMAorICogaXMgcmV0dXJuZWQgYXMgYSBoYXJt bGVzcyBwbGFjZWhvbGRlci4KICAqLwogc3RhdGljIGludDY0CiBldmFsX25hdl9vZmZzZXRfaGVs cGVyKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwciAqb2Zmc2V0X2V4cHIsCi0tIAoyLjUw LjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000058e00f0654bdc9b8 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0012-comment-doc-clarity.txt" Content-Disposition: attachment; filename="nocfbot-0012-comment-doc-clarity.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqnf11jy11 RnJvbSA5YzdlNWJjOWRkZTFhZGFmY2ZmOTk1MzcwMzQwOTc1NjYxODkwZDNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDEzOjQzOjU4ICswOTAwClN1YmplY3Q6IFtQQVRDSCAxMi8xM10g SW1wcm92ZSBjb21tZW50cywgZG9jdW1lbnRhdGlvbiwgYW5kIG5hbWluZyBmb3Igcm93CiBwYXR0 ZXJuIHJlY29nbml0aW9uCgpBIGJhdGNoIG9mIGNsYXJpdHkgY2xlYW51cHMgZm9yIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uLCBub25lIG9mIHdoaWNoCmNoYW5nZSBiZWhhdmlvciBvciBxdWVyeSBv dXRwdXQ6CgotIENhbGwgdGhlIHBhcnNlci1idWlsdCBQQVRURVJOIHN0cnVjdHVyZSBhICJwYXJz ZSB0cmVlIiByYXRoZXIgdGhhbiBhbgogICJBU1QiLCB3aGljaCBpcyBub3QgUG9zdGdyZVNRTCdz IHVzdWFsIHRlcm0gKHBhcnNlbm9kZXMuaCwgcGFyc2VfcnByLmMsCiAgcGxhbi9ycHIuYywgYW5k IHRoZSBleGVjdXRvciBSRUFETUUpLgotIFRyaW0gdGhlIHRyYW5zZm9ybURlZmluZUNsYXVzZSBo ZWFkZXIgY29tbWVudCwgd2hvc2Ugc3RlcCBsaXN0IG1lcmVseQogIGR1cGxpY2F0ZWQgdGhlIGlu bGluZSBjb21tZW50cy4KLSBEcm9wIGEgZHVwbGljYXRlZCBzdGFuZGFyZC1jaXRhdGlvbiBzZW50 ZW5jZSBmcm9tIHRoZSBjb250YWluX3Jwcl93YWxrZXIKICBoZWFkZXI7IHRyYW5zZm9ybVdpdGhD bGF1c2UgYWxyZWFkeSBjYXJyaWVzIGl0LgotIEZpeCBhIHN0YWxlICJBTFRfU1RBUlQiIHJlZmVy ZW5jZSB0byBuYW1lIHRoZSBBTFQgbWFya2VyLCBhbmQgbm9ybWFsaXplCiAgYW4gIm9yIC0xIiBQ YXJzZUxvYyBjb21tZW50IHRvIHRoZSB1c3VhbCAib3IgLTEgaWYgdW5rbm93biIuCi0gTW92ZSB0 aGUgRU1QVFktYWx0ZXJuYXRpdmUgZXhwbGFuYXRpb24gaW4gcm93X3BhdHRlcm5fcXVhbnRpZmll cl9vcHQKICBpbnRvIHRoZSBhY3Rpb24gYmxvY2ssIGtlZXBpbmcgdGhlIC8qRU1QVFkqLyBtYXJr ZXIuCi0gUmV3b3JkIHRoZSBSdW4gQ29uZGl0aW9uIHB1c2hkb3duIHRlc3QgY29tbWVudCB0byBl eHBsYWluIGluIFNRTCB0ZXJtcwogIHdoeSBjb3VudCgqKSBpcyBERUNSRUFTSU5HIG92ZXIgdGhl IHJlcXVpcmVkIGZyYW1lLgotIFJlbmFtZSBSUFJfQ09VTlRfTUFYIHRvIFJQUl9DT1VOVF9JTkYs IGRlZmluZWQgZnJvbSBSUFJfUVVBTlRJVFlfSU5GLgogIFRoZSBvbGQgIk1BWCIgbmFtZSBzdWdn ZXN0ZWQgYSBjb25maWd1cmFibGUgcmVwZXRpdGlvbiBsaW1pdCAtLSB0aGF0IGlzCiAgZWxlbS0+ bWF4LCBhIGRpZmZlcmVudCB0aGluZyAtLSB3aGljaCBsZWQgdG8gcXVlc3Rpb25zIGFib3V0IGVy cm9yaW5nCiAgd2hlbiBhIGNvdW50IHJlYWNoZXMgaXQuICBUaGUgdmFsdWUgaXMgdGhlIGludDMy IHNhdHVyYXRpb24gY2VpbGluZywgYW5kCiAgYSBzYXR1cmF0ZWQgY291bnQgcmVhZHMgYXMgInVu Ym91bmRlZCIuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwciAgICAgICAgICAg fCA0NCArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jICAgICAgICAgICAgfCAyMyArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3Jwci5jICAgICAgICAgIHwgMjMgKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55ICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9jdGUuYyAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnBy LmMgICAgICAgICAgICB8IDE5ICsrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCAgICAgICAgICAgIHwgMTIgKysrLS0tLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5o ICAgICAgICAgICAgICAgfCAgOSArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf ZXhwbGFpbi5vdXQgfCAxMiArKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFp bi5zcWwgICAgICB8IDEyICsrKystLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMo KyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRS5ycHIgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUucnByCmluZGV4IDUwZDFmZjg3 ZjdlLi45Mjc1ZTI2NWQ0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1F LnJwcgorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUucnByCkBAIC05NiwxNiArOTYs MTYgQEAgQ2hhcHRlciBJSSAgT3ZlcmFsbCBQcm9jZXNzaW5nIFBpcGVsaW5lCiAKIFJQUiBwcm9j ZXNzaW5nIGlzIGRpdmlkZWQgaW50byB0aHJlZSBwaGFzZXM6CiAKLSAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgfCAgMS4g UGFyc2luZyAoUGFyc2VyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK LSAgfCAgICAgU1FMIHRleHQgLT4gUEFUVEVSTiBBU1QgKyBERUZJTkUgZXhwcmVzc2lvbiB0cmVl ICAgICAgIHwKLSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKLSAgfCAgMi4gQ29tcGlsYXRpb24gKE9wdGltaXplci9QbGFubmVy KSAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgfCAgICAgUEFUVEVSTiBBU1QgLT4gb3B0aW1p emF0aW9uIC0+IGZsYXQgTkZBIGVsZW1lbnQgYXJyYXkgIHwKLSAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgfCAgMy4gRXhl Y3V0aW9uIChFeGVjdXRvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAg fCAgICAgUm93LWJ5LXJvdyBtYXRjaGluZyB2aWEgTkZBIHNpbXVsYXRpb24gICAgICAgICAgICAg ICAgIHwKLSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICB8ICAxLiBQYXJzaW5nIChQYXJzZXIpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgICAgIFNRTCB0ZXh0IC0+ IFBBVFRFUk4gcGFyc2UgdHJlZSArIERFRklORSBleHByZXNzaW9uIHRyZWUgIHwKKyAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICB8ICAyLiBDb21waWxhdGlvbiAoT3B0aW1pemVyL1BsYW5uZXIpICAgICAgICAgICAgICAg ICAgICAgICAgICB8CisgIHwgICAgIFBBVFRFUk4gcGFyc2UgdHJlZSAtPiBvcHRpbWl6YXRpb24g LT4gZmxhdCBORkEgZWxlbWVudHMgIHwKKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAzLiBFeGVjdXRpb24gKEV4 ZWN1dG9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgICAgIFJv dy1ieS1yb3cgbWF0Y2hpbmcgdmlhIE5GQSBzaW11bGF0aW9uICAgICAgICAgICAgICAgICAgIHwK KyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwogCiBFYWNoIHBoYXNlIHVzZXMgaW5kZXBlbmRlbnQgZGF0YSBzdHJ1Y3R1cmVz LCBhbmQgdGhlIGludGVyZmFjZXMgYmV0d2VlbgogcGhhc2VzIGFyZSB3ZWxsLWRlZmluZWQ6CkBA IC0xMzcsNyArMTM3LDcgQEAgZm9sbG93aW5nOgogCiAgICgzKSBERUZJTkUgY2xhdXNlIHRyYW5z Zm9ybWF0aW9uICh0cmFuc2Zvcm1EZWZpbmVDbGF1c2UpCiAKLUlJSS0yLiBQQVRURVJOIEFTVCAo QWJzdHJhY3QgU3ludGF4IFRyZWUpCitJSUktMi4gUEFUVEVSTiBwYXJzZSB0cmVlCiAKIFRoZSBw YXJzZXIgdHJhbnNmb3JtcyB0aGUgUEFUVEVSTiBjbGF1c2UgaW50byBhbiBSUFJQYXR0ZXJuTm9k ZSB0cmVlLgogRWFjaCBub2RlIGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHR5cGVzOgpA QCAtMTkyLDE2ICsxOTIsMTYgQEAgSVYtMS4gRW50cnkgUG9pbnQKIAogSVYtMi4gVGhlIDYgUGhh c2VzIG9mIGJ1aWxkUlBSUGF0dGVybigpCiAKLSAgUGhhc2UgMTogQVNUIG9wdGltaXphdGlvbiAo b3B0aW1pemVSUFJQYXR0ZXJuKQorICBQaGFzZSAxOiBwYXJzZSB0cmVlIG9wdGltaXphdGlvbiAo b3B0aW1pemVSUFJQYXR0ZXJuKQogICBQaGFzZSAyOiBTdGF0aXN0aWNzIGNvbGxlY3Rpb24gKHNj YW5SUFJQYXR0ZXJuKQogICBQaGFzZSAzOiBNZW1vcnkgYWxsb2NhdGlvbiAobWFrZVJQUlBhdHRl cm4pCiAgIFBoYXNlIDQ6IE5GQSBlbGVtZW50IGZpbGwgKGZpbGxSUFJQYXR0ZXJuKQogICBQaGFz ZSA1OiBGaW5hbGl6YXRpb24gKGZpbmFsaXplUlBSUGF0dGVybikKICAgUGhhc2UgNjogQWJzb3Ji YWJpbGl0eSBhbmFseXNpcyAoY29tcHV0ZUFic29yYmFiaWxpdHkpCiAKLUlWLTMuIFBoYXNlIDE6 IEFTVCBPcHRpbWl6YXRpb24KK0lWLTMuIFBoYXNlIDE6IFBhcnNlIFRyZWUgT3B0aW1pemF0aW9u CiAKLUFmdGVyIGNvcHlpbmcgdGhlIHBhcnNlci1nZW5lcmF0ZWQgQVNULCB0aGUgZm9sbG93aW5n IG9wdGltaXphdGlvbnMgYXJlCitBZnRlciBjb3B5aW5nIHRoZSBwYXJzZXItZ2VuZXJhdGVkIHBh cnNlIHRyZWUsIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9ucyBhcmUKIGFwcGxpZWQ6CiAKICAg KGEpIFNFUSBmbGF0dGVuaW5nOiBVbndyYXAgbmVzdGVkIFNFUSBub2RlcwpAQCAtMjM2LDcgKzIz Niw3IEBAIGFwcGxpZWQ6CiAKIElWLTQuIFBoYXNlIDQ6IE5GQSBFbGVtZW50IEFycmF5IEdlbmVy YXRpb24KIAotVHJhbnNmb3JtcyB0aGUgb3B0aW1pemVkIEFTVCBpbnRvIGEgZmxhdCBhcnJheSBv ZiBSUFJQYXR0ZXJuRWxlbWVudC4KK1RyYW5zZm9ybXMgdGhlIG9wdGltaXplZCBwYXJzZSB0cmVl IGludG8gYSBmbGF0IGFycmF5IG9mIFJQUlBhdHRlcm5FbGVtZW50LgogVGhpcyBpcyB0aGUgY29y ZSBkYXRhIHN0cnVjdHVyZSB1c2VkIGZvciBORkEgc2ltdWxhdGlvbiBhdCBydW50aW1lLgogCiBS UFJQYXR0ZXJuRWxlbWVudCBzdHJ1Y3QgKDE2IGJ5dGVzKToKQEAgLTI5OCw3ICsyOTgsNyBAQCBF bGVtZW50IGZsYWdzICgxIGJ5dGUsIGJpdG1hc2spOgogCiBFeGFtcGxlOiBQQVRURVJOIChBKyBC IHwgQykKIAotICBBU1Q6IEFMVChTRVEoVkFSKEEsMSxJTkYpLCBWQVIoQiwxLDEpKSwgVkFSKEMs MSwxKSkKKyAgUGFyc2UgdHJlZTogQUxUKFNFUShWQVIoQSwxLElORiksIFZBUihCLDEsMSkpLCBW QVIoQywxLDEpKQogCiAgIENvbXBpbGF0aW9uIHJlc3VsdDoKIApAQCAtMzQ1LDkgKzM0NSw5IEBA IEV4YW1wbGU6IFBBVFRFUk4gKChBIEIpKykKIAogSVYtNGEuIFJlbHVjdGFudCBGbGFnIChSUFJf RUxFTV9SRUxVQ1RBTlQpCiAKLVRoZSByZWx1Y3RhbnQgZmxhZyBpcyBzZXQgZHVyaW5nIFBoYXNl IDQgKGZpbGxSUFJQYXR0ZXJuKSB3aGVuIHRoZSBBU1Qgbm9kZQotaGFzIHJlbHVjdGFudCA9PSB0 cnVlLiBJdCByZXZlcnNlcyB0aGUgcHJpb3JpdHkgb2YgcXVhbnRpZmllciBleHBhbnNpb24gYXQK LXJ1bnRpbWU6CitUaGUgcmVsdWN0YW50IGZsYWcgaXMgc2V0IGR1cmluZyBQaGFzZSA0IChmaWxs UlBSUGF0dGVybikgd2hlbiB0aGUgcGFyc2UKK3RyZWUgbm9kZSBoYXMgcmVsdWN0YW50ID09IHRy dWUuIEl0IHJldmVyc2VzIHRoZSBwcmlvcml0eSBvZiBxdWFudGlmaWVyCitleHBhbnNpb24gYXQg cnVudGltZToKIAogICBHcmVlZHkgKGRlZmF1bHQpOiAgdHJ5IGxvb3AtYmFjayBmaXJzdCwgdGhl biBleGl0ICAocHJlZmVyIGxvbmdlciBtYXRjaCkKICAgUmVsdWN0YW50OiAgICAgICAgIHRyeSBl eGl0IGZpcnN0LCB0aGVuIGxvb3AtYmFjayAgIChwcmVmZXIgc2hvcnRlciBtYXRjaCkKQEAgLTEz NjMsOSArMTM2Myw5IEBAIFhJSS01LiBFeGVjdXRpb24gT3B0aW1pemF0aW9uIFN1bW1hcnkKIAog ICAtLSBDb21waWxlLXRpbWUgLS0KIAotICAoMSkgQVNUIE9wdGltaXphdGlvbiAoSVYtMykKKyAg KDEpIFBhcnNlIFRyZWUgT3B0aW1pemF0aW9uIChJVi0zKQogCi0gICAgU2ltcGxpZmllcyB0aGUg QVNUIGJlZm9yZSBjb252ZXJ0aW5nIHRoZSBwYXR0ZXJuIHRvIGFuIE5GQS4KKyAgICBTaW1wbGlm aWVzIHRoZSBwYXJzZSB0cmVlIGJlZm9yZSBjb252ZXJ0aW5nIHRoZSBwYXR0ZXJuIHRvIGFuIE5G QS4KICAgICBSZWR1Y2VzIHRoZSBudW1iZXIgb2YgTkZBIGVsZW1lbnRzIHRocm91Z2ggY29uc2Vj dXRpdmUgdmFyaWFibGUKICAgICBtZXJnaW5nIChBIEEgLT4gQXsyfSksIFNFUSBmbGF0dGVuaW5n LCBxdWFudGlmaWVyIG11bHRpcGxpY2F0aW9uLAogICAgIGFuZCBvdGhlciB0cmFuc2Zvcm1hdGlv bnMuCkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBBcHBlbmRpeCBBLiBLZXkgRnVuY3Rpb24gSW5kZXgK ICAgdHJhbnNmb3JtUlBSICAgICAgICAgICAgICAgICAgcGFyc2VfcnByLmMgICAgICAgICAgIFBh cnNlciBlbnRyeSBwb2ludAogICB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UgICAgICAgICBwYXJzZV9y cHIuYyAgICAgICAgICAgREVGSU5FIHRyYW5zZm9ybWF0aW9uCiAgIGJ1aWxkUlBSUGF0dGVybiAg ICAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBORkEgY29tcGlsYXRpb24gbWFpbgot ICBvcHRpbWl6ZVJQUlBhdHRlcm4gICAgICAgICAgICBycHIuYyAgICAgICAgICAgICAgICAgQVNU IG9wdGltaXphdGlvbgorICBvcHRpbWl6ZVJQUlBhdHRlcm4gICAgICAgICAgICBycHIuYyAgICAg ICAgICAgICAgICAgcGFyc2UgdHJlZSBvcHRpbWl6YXRpb24KICAgZmlsbFJQUlBhdHRlcm4gICAg ICAgICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIE5GQSBlbGVtZW50IGdlbmVyYXRpb24K ICAgZmluYWxpemVSUFJQYXR0ZXJuICAgICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIEZp bmFsaXphdGlvbgogICBjb21wdXRlQWJzb3JiYWJpbGl0eSAgICAgICAgICBycHIuYyAgICAgICAg ICAgICAgICAgQWJzb3JwdGlvbiBhbmFseXNpcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IDkw ZTNhMDY4ZjA0Li5lNWUzMGQ3OWYwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtODIxLDgg KzgyMSwxMSBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAKIAkJCWlmIChtYXRjaGVkKQogCQkJewotCQkJ CS8qIEluY3JlbWVudCBjb3VudCAqLwotCQkJCWlmIChjb3VudCA8IFJQUl9DT1VOVF9NQVgpCisJ CQkJLyoKKwkJCQkgKiBJbmNyZW1lbnQgY291bnQsIHNhdHVyYXRpbmcgYXQgUlBSX0NPVU5UX0lO RiB0byBhdm9pZCBpbnQzMgorCQkJCSAqIG92ZXJmbG93OyBhIHNhdHVyYXRlZCBjb3VudCB0aGVu IGNvbXBhcmVzIGFzICJ1bmJvdW5kZWQiLgorCQkJCSAqLworCQkJCWlmIChjb3VudCA8IFJQUl9D T1VOVF9JTkYpCiAJCQkJCWNvdW50Kys7CiAKIAkJCQkvKiBNYXggY29uc3RyYWludCBzaG91bGQg bm90IGJlIGV4Y2VlZGVkICovCkBAIC04NTcsNyArODYwLDcgQEAgbmZhX21hdGNoKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQog CQkJCQlpbnQzMgkJZW5kQ291bnQgPSBzdGF0ZS0+Y291bnRzW2VuZERlcHRoXTsKIAogCQkJCQkv KiBJbmNyZW1lbnQgZ3JvdXAgY291bnQgKi8KLQkJCQkJaWYgKGVuZENvdW50IDwgUlBSX0NPVU5U X01BWCkKKwkJCQkJaWYgKGVuZENvdW50IDwgUlBSX0NPVU5UX0lORikKIAkJCQkJCWVuZENvdW50 Kys7CiAJCQkJCUFzc2VydChlbmRFbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fAogCQkJ CQkJICAgZW5kQ291bnQgPD0gZW5kRWxlbS0+bWF4KTsKQEAgLTkwMCw3ICs5MDMsNyBAQCBuZmFf bWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIGJvb2wg KnZhck1hdGNoZWQpCiAJCQkJCQlzdGF0ZS0+Y291bnRzW2VuZERlcHRoXSA9IDA7CiAKIAkJCQkJ CS8qIEluY3JlbWVudCBvdXRlciBncm91cCBjb3VudCAqLwotCQkJCQkJaWYgKG91dGVyQ291bnQg PCBSUFJfQ09VTlRfTUFYKQorCQkJCQkJaWYgKG91dGVyQ291bnQgPCBSUFJfQ09VTlRfSU5GKQog CQkJCQkJCW91dGVyQ291bnQrKzsKIAkJCQkJCUFzc2VydChvdXRlckVuZC0+bWF4ID09IFJQUl9R VUFOVElUWV9JTkYgfHwKIAkJCQkJCQkgICBvdXRlckNvdW50IDw9IG91dGVyRW5kLT5tYXgpOwpA QCAtMTE4MCw3ICsxMTgzLDcgQEAgbmZhX2FkdmFuY2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCiAJCQkvKiBFTkQtPkVORDogaW5jcmVtZW50IG91 dGVyIEVORCdzIGNvdW50ICovCiAJCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJgotCQkJ CWZmU3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCQlm ZlN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9JTkYpCiAJCQkJZmZT dGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKIAkJfQogCkBAIC0xMjM1LDcgKzEyMzgs NyBAQCBuZmFfYWR2YW5jZV9lbmQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsCiAJCQlSUFJFbGVtSXNBYnNvcmJhYmxlQnJhbmNoKG5leHRFbGVtKTsKIAogCQkv KiBFTkQtPkVORDogaW5jcmVtZW50IG91dGVyIEVORCdzIGNvdW50ICovCi0JCWlmIChSUFJFbGVt SXNFbmQobmV4dEVsZW0pICYmIHN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9D T1VOVF9NQVgpCisJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pICYmIHN0YXRlLT5jb3VudHNb bmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9JTkYpCiAJCQlzdGF0ZS0+Y291bnRzW25leHRF bGVtLT5kZXB0aF0rKzsKIAogCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0 ZSwgbmV4dEVsZW0sIGN1cnJlbnRQb3MpOwpAQCAtMTI2Miw3ICsxMjY1LDcgQEAgbmZhX2FkdmFu Y2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQlu ZXh0RWxlbSA9ICZlbGVtZW50c1tleGl0U3RhdGUtPmVsZW1JZHhdOwogCiAJCS8qIEVORC0+RU5E OiBpbmNyZW1lbnQgb3V0ZXIgRU5EJ3MgY291bnQgKi8KLQkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0 RWxlbSkgJiYgZXhpdFN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9N QVgpCisJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pICYmIGV4aXRTdGF0ZS0+Y291bnRzW25l eHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJZXhpdFN0YXRlLT5jb3VudHNbbmV4 dEVsZW0tPmRlcHRoXSsrOwogCiAJCS8qIFByZXBhcmUgbG9vcCBzdGF0ZSAqLwpAQCAtMTM1NSw3 ICsxMzU4LDcgQEAgbmZhX2FkdmFuY2VfdmFyKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBS TkZBQ29udGV4dCAqY3R4LAogCQkJLyogV2hlbiBleGl0aW5nIGRpcmVjdGx5IHRvIGFuIG91dGVy IEVORCwgaW5jcmVtZW50IGl0cyBjb3VudCAqLwogCQkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxl bSkpCiAJCQl7Ci0JCQkJaWYgKGNsb25lU3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwg UlBSX0NPVU5UX01BWCkKKwkJCQlpZiAoY2xvbmVTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0 aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJCQljbG9uZVN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRl cHRoXSsrOwogCQkJfQogCkBAIC0xNDA0LDcgKzE0MDcsNyBAQCBuZmFfYWR2YW5jZV92YXIoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJCQkgKi8KIAkJCWlm IChSUFJFbGVtSXNFbmQobmV4dEVsZW0pKQogCQkJewotCQkJCWlmIChzdGF0ZS0+Y291bnRzW25l eHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfTUFYKQorCQkJCWlmIChzdGF0ZS0+Y291bnRzW25l eHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJCQlzdGF0ZS0+Y291bnRzW25leHRF bGVtLT5kZXB0aF0rKzsKIAkJCX0KIApAQCAtMTQzOCw3ICsxNDQxLDcgQEAgbmZhX2FkdmFuY2Vf dmFyKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQkvKiBT ZWUgY29tbWVudCBhYm92ZTogaW5jcmVtZW50IG91dGVyIEVORCBjb3VudCBmb3IgcXVhbnRpZmll ZCBWQVJzICovCiAJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pKQogCQl7Ci0JCQlpZiAoc3Rh dGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCWlmIChzdGF0 ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJCXN0YXRlLT5j b3VudHNbbmV4dEVsZW0tPmRlcHRoXSsrOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMK aW5kZXggZWJiYThlNTBiMWQuLjYyMjkyNTA4YWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIu YwpAQCAtMywxMyArMywxMyBAQAogICogcnByLmMKICAqCSAgUm93IFBhdHRlcm4gUmVjb2duaXRp b24gcGF0dGVybiBjb21waWxhdGlvbiBmb3IgcGxhbm5lcgogICoKLSAqIFRoaXMgZmlsZSBjb250 YWlucyBmdW5jdGlvbnMgZm9yIG9wdGltaXppbmcgUlBSIHBhdHRlcm4gQVNUIGFuZAorICogVGhp cyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3Igb3B0aW1pemluZyB0aGUgUlBSIHBhdHRlcm4g cGFyc2UgdHJlZSBhbmQKICAqIGNvbXBpbGluZyBpdCB0byBhIGZsYXQgZWxlbWVudCBhcnJheSBm b3IgTkZBIGV4ZWN1dGlvbiBieSBXaW5kb3dBZ2cuCiAgKgogICogS2V5IGNvbXBvbmVudHM6CiAg KiAgIDEuIFBhdHRlcm4gT3B0aW1pemF0aW9uOiBTaW1wbGlmaWVzIHBhdHRlcm5zIGJlZm9yZSBj b21waWxhdGlvbgogICogICAgICAoZS5nLiwgZmxhdHRlbiBuZXN0ZWQgU0VRL0FMVCwgbWVyZ2Ug Y29uc2VjdXRpdmUgdmFycykKLSAqICAgMi4gUGF0dGVybiBDb21waWxhdGlvbjogQ29udmVydHMg QVNUIHRvIGZsYXQgZWxlbWVudCBhcnJheSBmb3IgTkZBCisgKiAgIDIuIFBhdHRlcm4gQ29tcGls YXRpb246IENvbnZlcnRzIHBhcnNlIHRyZWUgdG8gZmxhdCBlbGVtZW50IGFycmF5IGZvciBORkEK ICAqICAgMy4gQWJzb3JwdGlvbiBBbmFseXNpczogQ29tcHV0ZXMgZmxhZ3MgZm9yIE8obl4yKS0+ TyhuKSBvcHRpbWl6YXRpb24KICAqCiAgKiBDb250ZXh0IEFic29ycHRpb24gT3B0aW1pemF0aW9u OgpAQCAtOTk1LDcgKzk5NSw3IEBAIGNvbGxlY3REZWZpbmVWYXJpYWJsZXMoTGlzdCAqZGVmaW5l VmFyaWFibGVMaXN0LCBjaGFyICoqdmFyTmFtZXMpCiAKIC8qCiAgKiBzY2FuUlBSUGF0dGVyblJl Y3Vyc2l2ZQotICoJCVJlY3Vyc2l2ZWx5IHNjYW4gcGF0dGVybiBBU1QgKHBhc3MgMSBpbnRlcm5h bCkuCisgKgkJUmVjdXJzaXZlbHkgc2NhbiBwYXR0ZXJuIHBhcnNlIHRyZWUgKHBhc3MgMSBpbnRl cm5hbCkuCiAgKgogICogQ29sbGVjdHMgdW5pcXVlIHZhcmlhYmxlIG5hbWVzIGFuZCBjb3VudHMg ZWxlbWVudHMgd2hpbGUgdHJhY2tpbmcgZGVwdGguCiAgKiBWYXJpYWJsZXMgZnJvbSBERUZJTkUg Y2xhdXNlIGFyZSBhbHJlYWR5IGluIHZhck5hbWVzOyB0aGlzIGFkZHMgYW55CkBAIC0xMDkyLDcg KzEwOTIsNyBAQCBzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwg Y2hhciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMsCiAKIC8qCiAgKiBzY2FuUlBSUGF0dGVybgot ICoJCVNjYW4gcGF0dGVybiBBU1QgKHBhc3MgMSBlbnRyeSBwb2ludCkuCisgKgkJU2NhbiBwYXR0 ZXJuIHBhcnNlIHRyZWUgKHBhc3MgMSBlbnRyeSBwb2ludCkuCiAgKgogICogQ29sbGVjdHMgdW5p cXVlIHZhcmlhYmxlIG5hbWVzIChhcHBlbmRpbmcgdG8gdGhvc2UgZnJvbSBERUZJTkUgY2xhdXNl KSwKICAqIGNvdW50cyB0b3RhbCBlbGVtZW50cyAoaW5jbHVkaW5nIEZJTiBtYXJrZXIpLCBhbmQg dHJhY2tzIG1heGltdW0gZGVwdGguCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCBmaWxsUlBSUGF0dGVy bkdyb3VwKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsIGludCAqaWR4LCBS UFJEZXB0aCBkZQogICogZmlsbFJQUlBhdHRlcm5BbHQKICAqCQlGaWxsIGFuIEFMVCBwYXR0ZXJu IGFuZCBpdHMgYWx0ZXJuYXRpdmVzLgogICoKLSAqIENyZWF0ZXMgQUxUX1NUQVJUIG1hcmtlciwg ZmlsbHMgZWFjaCBhbHRlcm5hdGl2ZSBhdCBpbmNyZWFzZWQgZGVwdGgsCisgKiBDcmVhdGVzIHRo ZSBBTFQgbWFya2VyLCBmaWxscyBlYWNoIGFsdGVybmF0aXZlIGF0IGluY3JlYXNlZCBkZXB0aCwK ICAqIHNldHMganVtcCBwb2ludGVycyBmb3IgYmFja3RyYWNraW5nLCBhbmQgbmV4dCBwb2ludGVy cyBmb3Igc3VjY2Vzc2Z1bCBwYXRocy4KICAqCiAgKiBSZXR1cm5zIHRydWUgaWYgYW55IGJyYW5j aCBpcyBudWxsYWJsZSAoT1Igc2VtYW50aWNzOiBvbmUgbnVsbGFibGUKQEAgLTEzODMsOSArMTM4 MywxMCBAQCBmaWxsUlBSUGF0dGVybkFsdChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVy biAqcGF0LCBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdAogCiAvKgogICogZmlsbFJQUlBhdHRlcm4K LSAqCQlGaWxsIHBhdHRlcm4gZWxlbWVudHMgYXJyYXkgZnJvbSBBU1QgKHBhc3MgMikuCisgKgkJ RmlsbCBwYXR0ZXJuIGVsZW1lbnRzIGFycmF5IGZyb20gcGFyc2UgdHJlZSAocGFzcyAyKS4KICAq Ci0gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZXMgQVNUIGFuZCBwb3B1bGF0ZXMgcHJlLWFsbG9jYXRl ZCBlbGVtZW50cyBhcnJheS4KKyAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgcGFyc2UgdHJl ZSBhbmQgcG9wdWxhdGVzIHByZS1hbGxvY2F0ZWQgZWxlbWVudHMKKyAqIGFycmF5LgogICogRGlz cGF0Y2hlcyB0byB0eXBlLXNwZWNpZmljIGZpbGwgZnVuY3Rpb25zLgogICoKICAqIFJldHVybnMg dHJ1ZSBpZiB0aGUgcGF0dGVybiBpcyBudWxsYWJsZSAoY2FuIG1hdGNoIHplcm8gcm93cykuCkBA IC0xNzY3LDcgKzE3NjgsNyBAQCBjb21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vyc2l2ZShSUFJQYXR0 ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IHN0YXJ0SWR4LAogCX0KIAllbHNlCiAJewotCQkvKiBT aG91bGQgbmV2ZXIgcmVhY2ggRU5EIC0gc3RydWN0dXJhbCBpbnZhcmlhbnQgb2YgcGF0dGVybiBB U1QgKi8KKwkJLyogU2hvdWxkIG5ldmVyIHJlYWNoIEVORCAtIHN0cnVjdHVyYWwgaW52YXJpYW50 IG9mIHBhdHRlcm4gcGFyc2UgdHJlZSAqLwogCQlBc3NlcnQoIVJQUkVsZW1Jc0VuZChlbGVtKSk7 CiAKIAkJLyogTm9uLUFMVCwgbm9uLUJFR0lOOiBjaGVjayBpZiB1bmJvdW5kZWQgc3RhcnQgKi8K QEAgLTE4OTQsMTMgKzE4OTUsMTMgQEAgdmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5KExp c3QgKmRlZmluZUNsYXVzZSkKIAogLyoKICAqIGJ1aWxkUlBSUGF0dGVybgotICoJCUNvbXBpbGUg cGF0dGVybiBBU1QgdG8gZmxhdCBieXRlY29kZSBhcnJheS4KKyAqCQlDb21waWxlIHBhdHRlcm4g cGFyc2UgdHJlZSB0byBmbGF0IGJ5dGVjb2RlIGFycmF5LgogICoKICAqIENvbXBpbGF0aW9uIHBo YXNlczoKLSAqICAgMS4gT3B0aW1pemUgQVNUIChmbGF0dGVuLCBtZXJnZSwgZGVkdXBsaWNhdGUp CisgKiAgIDEuIE9wdGltaXplIHBhcnNlIHRyZWUgKGZsYXR0ZW4sIG1lcmdlLCBkZWR1cGxpY2F0 ZSkKICAqICAgMi4gU2NhbjogY29sbGVjdCB2YXJpYWJsZXMsIGNvdW50IGVsZW1lbnRzIChwYXNz IDEpCiAgKiAgIDMuIEFsbG9jYXRlIHJlc3VsdCBzdHJ1Y3R1cmUKLSAqICAgNC4gRmlsbCBlbGVt ZW50cyBmcm9tIEFTVCAocGFzcyAyKQorICogICA0LiBGaWxsIGVsZW1lbnRzIGZyb20gcGFyc2Ug dHJlZSAocGFzcyAyKQogICogICA1LiBGaW5hbGl6ZSBwYXR0ZXJuIHN0cnVjdHVyZQogICogICA2 LiBDb21wdXRlIGNvbnRleHQgYWJzb3JwdGlvbiBlbGlnaWJpbGl0eQogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cmlu ZGV4IDRhZTk1MWFhZWJhLi42ZWIwMWVhN2YwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNzczNCw5ICsx NzczNCwxMiBAQCByb3dfcGF0dGVybl9wcmltYXJ5OgogCQk7CiAKIHJvd19wYXR0ZXJuX3F1YW50 aWZpZXJfb3B0OgotCQkJLyogRU1QVFkgLSBubyBxdWFudGlmaWVyIG1lYW5zIGV4YWN0bHkgb25j ZTsgQCQgaXMgdW51c2VkIHNpbmNlCi0JCQkgKiBtaW49bWF4PTEgbmV2ZXIgcHJvZHVjZXMgYW4g ZXJyb3IgKi8KKwkJCS8qRU1QVFkqLwogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogbm8gcXVhbnRp ZmllciBtZWFucyBleGFjdGx5IG9uY2U7IEAkIGlzIHVudXNlZCBzaW5jZQorCQkJCQkgKiBtaW49 bWF4PTEgbmV2ZXIgcHJvZHVjZXMgYW4gZXJyb3IKKwkJCQkJICovCiAJCQkJCSQkID0gKE5vZGUg KikgbWFrZVJQUlF1YW50aWZpZXIoMSwgMSwgZmFsc2UsIEAkKTsKIAkJCQl9CiAJCQl8ICcqJwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2N0ZS5jCmluZGV4IDNlNDkzYmViYTBiLi5jMzVmZWVhZTZmZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jdGUuYwpAQCAtMTMwMyw5ICsxMzAzLDcgQEAgY2hlY2tXZWxsRm9ybWVkU2Vs ZWN0U3RtdChTZWxlY3RTdG10ICpzdG10LCBDdGVTdGF0ZSAqY3N0YXRlKQogLyoKICAqIGNvbnRh aW5fcnByX3dhbGtlcgogICoJICBSZXR1cm5zIHRydWUgaWYgdGhlIHJhdyBwYXJzZSB0cmVlIGNv bnRhaW5zIGFueSA8cm93IHBhdHRlcm4gY29tbW9uCi0gKgkgIHN5bnRheD4gLS0gaS5lLiwgYW55 IFdpbmRvd0RlZiB3aXRoIFBBVFRFUk4vREVGSU5FIGF0dGFjaGVkLiAgVXNlZAotICoJICBieSB0 cmFuc2Zvcm1XaXRoQ2xhdXNlKCkgdG8gZW5mb3JjZSBJU08vSUVDIDkwNzUtMjoyMDE2IDcuMTcg U1IgMylmKQotICoJICBvbiBXSVRIIFJFQ1VSU0lWRSBlbGVtZW50cy4KKyAqCSAgc3ludGF4PiAt LSBpLmUuLCBhbnkgV2luZG93RGVmIHdpdGggUEFUVEVSTi9ERUZJTkUgYXR0YWNoZWQuCiAgKi8K IHN0YXRpYyBib29sCiBjb250YWluX3Jwcl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4 dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCA3YzIwMWQ1NTE2NC4uZWQxMjE5MGNiMDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTgsNyArOCw3IEBACiAgKiAgIC0gVmFsaWRhdGVzIGZy YW1lIG9wdGlvbnMgKG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1csIG5vIEVYQ0xVREUpCiAgKiAg IC0gVmFsaWRhdGVzIFBBVFRFUk4gdmFyaWFibGUgY291bnQgKG1heCBSUFJfVkFSSURfTUFYICsg MSkKICAqICAgLSBUcmFuc2Zvcm1zIERFRklORSBjbGF1c2UKLSAqICAgLSBTdG9yZXMgdGhlIFBB VFRFUk4gQVNUIGFuZCB0aGUgU0tJUCBUTy9JTklUSUFMIGZsYWdzCisgKiAgIC0gU3RvcmVzIHRo ZSBQQVRURVJOIHBhcnNlIHRyZWUgYW5kIHRoZSBTS0lQIFRPL0lOSVRJQUwgZmxhZ3MKICAqCiAg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBi b29sIGRlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAgKiAgIC0gU2V0 IEFGVEVSIE1BVENIIFNLSVAgVE8gZmxhZwogICogICAtIFNldCBTRUVLL0lOSVRJQUwgZmxhZwog ICogICAtIFRyYW5zZm9ybXMgREVGSU5FIGNsYXVzZSBpbnRvIFRhcmdldEVudHJ5IGxpc3QKLSAq ICAgLSBTdG9yZXMgUEFUVEVSTiBBU1QgZm9yIGRlcGFyc2luZyAob3B0aW1pemF0aW9uIGhhcHBl bnMgaW4gcGxhbm5lcikKKyAqICAgLSBTdG9yZXMgUEFUVEVSTiBwYXJzZSB0cmVlIGZvciBkZXBh cnNpbmcgKG9wdGltaXphdGlvbiBoYXBwZW5zIGluIHBsYW5uZXIpCiAgKgogICogUmV0dXJucyBl YXJseSBpZiB3aW5kZWYgaGFzIG5vIHJwQ29tbW9uU3ludGF4IChub24tUlBSIHdpbmRvdykuCiAg Ki8KQEAgLTE4MCw3ICsxODAsNyBAQCB0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBX aW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkvKiBUcmFuc2Zvcm0gREVGSU5F IGNsYXVzZSBpbnRvIGxpc3Qgb2YgVGFyZ2V0RW50cnkncyAqLwogCXdjLT5kZWZpbmVDbGF1c2Ug PSB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UocHN0YXRlLCB3aW5kZWYsIHRhcmdldGxpc3QpOwogCi0J LyogU3RvcmUgUEFUVEVSTiBBU1QgZm9yIGRlcGFyc2luZyAqLworCS8qIFN0b3JlIFBBVFRFUk4g cGFyc2UgdHJlZSBmb3IgZGVwYXJzaW5nICovCiAJd2MtPnJwUGF0dGVybiA9IHdpbmRlZi0+cnBD b21tb25TeW50YXgtPnJwUGF0dGVybjsKIH0KIApAQCAtMjY0LDE5ICsyNjQsNiBAQCB2YWxpZGF0 ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpu b2RlLAogICogdHJhbnNmb3JtRGVmaW5lQ2xhdXNlCiAgKgkJUHJvY2VzcyBERUZJTkUgY2xhdXNl IGFuZCB0cmFuc2Zvcm0gUmVzVGFyZ2V0IGludG8gbGlzdCBvZiBUYXJnZXRFbnRyeS4KICAqCi0g KiBGaXJzdDoKLSAqICAgMS4gVmFsaWRhdGVzIFBBVFRFUk4gdmFyaWFibGUgY291bnQgYW5kIGNv bGxlY3RzIFJQUiB2YXJpYWJsZSBuYW1lcwotICogICAyLiBSZWplY3RzIERFRklORSB2YXJpYWJs ZXMgbm90IHVzZWQgaW4gUEFUVEVSTgotICogICAzLiBDaGVja3MgZm9yIGR1cGxpY2F0ZSB2YXJp YWJsZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCi0gKgotICogVGhlbiBmb3IgZWFjaCBERUZJTkUg dmFyaWFibGU6Ci0gKiAgIDQuIFRyYW5zZm9ybXMgZXhwcmVzc2lvbiB2aWEgdHJhbnNmb3JtRXhw cigpIGFuZCBjb2VyY2VzIGl0IHRvIGJvb2xlYW4KLSAqICAgNS4gQ3JlYXRlcyBkZWZpbmVDbGF1 c2UgZW50cnkgd2l0aCBwcm9wZXIgcmVzbmFtZSAocGF0dGVybiB2YXJpYWJsZSBuYW1lKQotICog ICA2LiBFbnN1cmVzIHJlZmVyZW5jZWQgVmFyIG5vZGVzIGFyZSBwcmVzZW50IGluIHRoZSBxdWVy eSB0YXJnZXRsaXN0ICh2aWEKLSAqICAgICAgcHVsbF92YXJfY2xhdXNlKQotICoKLSAqIEZpbmFs bHkgbWFya3MgY29sdW1uIG9yaWdpbnMgYW5kIGFzc2lnbnMgY29sbGF0aW9uIGluZm9ybWF0aW9u LgotICoKICAqIE5vdGU6IFZhcmlhYmxlcyBub3QgaW4gREVGSU5FIGFyZSBldmFsdWF0ZWQgYXMg VFJVRSBieSB0aGUgZXhlY3V0b3IuCiAgKiBWYXJpYWJsZXMgaW4gREVGSU5FIGJ1dCBub3QgaW4g UEFUVEVSTiBhcmUgcmVqZWN0ZWQgYXMgYW4gZXJyb3IuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CmluZGV4IDk0N2U2NjgwMjBlLi5mMjgyMTViOGU4MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtNjIxLDcgKzYyMSw3IEBAIHR5cGVkZWYgZW51bSBSUFJQYXR0ZXJuTm9kZVR5cGUKIH0gUlBS UGF0dGVybk5vZGVUeXBlOwogCiAvKgotICogUlBSUGF0dGVybk5vZGUgLSBSb3cgUGF0dGVybiBS ZWNvZ25pdGlvbiBwYXR0ZXJuIEFTVCBub2RlCisgKiBSUFJQYXR0ZXJuTm9kZSAtIFJvdyBQYXR0 ZXJuIFJlY29nbml0aW9uIHBhdHRlcm4gcGFyc2UgdHJlZSBub2RlCiAgKi8KIHR5cGVkZWYgc3Ry dWN0IFJQUlBhdHRlcm5Ob2RlCiB7CkBAIC02MzAsNyArNjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UlBSUGF0dGVybk5vZGUKIAlpbnQzMgkJbWluOwkJCS8qIG1pbmltdW0gcmVwZXRpdGlvbnMgKDAg Zm9yICosID8pICovCiAJaW50MzIJCW1heDsJCQkvKiBtYXhpbXVtIHJlcGV0aXRpb25zIChQR19J TlQzMl9NQVggZm9yICosICspICovCiAJYm9vbAkJcmVsdWN0YW50OwkJLyogdHJ1ZSBmb3IgcmVs dWN0YW50IChub24tZ3JlZWR5KSAqLwotCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9j YXRpb24sIG9yIC0xICovCisJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwg b3IgLTEgaWYgdW5rbm93biAqLwogCWNoYXIJICAgKnZhck5hbWU7CQkvKiBWQVI6IHZhcmlhYmxl IG5hbWUgKi8KIAlMaXN0CSAgICpjaGlsZHJlbjsJCS8qIFNFUSwgQUxULCBHUk9VUDogY2hpbGQg bm9kZXMgKi8KIApAQCAtNjUyLDEwICs2NTIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUlBDb21tb25T eW50YXgKIAlSUFNraXBUbwlycFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIEFGVEVSIE1BVENIIFNL SVAgdHlwZSAqLwogCWJvb2wJCWluaXRpYWw7CQkvKiB0cnVlIGlmIDxyb3cgcGF0dGVybiBpbml0 aWFsIG9yIHNlZWs+IGlzCiAJCQkJCQkJCSAqIGluaXRpYWwgKi8KLQlSUFJQYXR0ZXJuTm9kZSAq cnBQYXR0ZXJuOwkvKiBQQVRURVJOIGNsYXVzZSBBU1QgKi8KKwlSUFJQYXR0ZXJuTm9kZSAqcnBQ YXR0ZXJuOwkvKiBQQVRURVJOIHBhcnNlIHRyZWUgKi8KIAlMaXN0CSAgICpycERlZnM7CQkJLyog cm93IHBhdHRlcm4gZGVmaW5pdGlvbnMgY2xhdXNlIChsaXN0IG9mCiAJCQkJCQkJCSAqIFJlc1Rh cmdldCkgKi8KLQlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIFBBVFRFUk4ga2V5d29yZCBsb2NhdGlv biwgb3IgLTEgKi8KKwlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIFBBVFRFUk4ga2V5d29yZCBsb2Nh dGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBSUENvbW1vblN5bnRheDsKIAogLyoKQEAgLTE3 MjcsNyArMTcyNyw3IEBAIHR5cGVkZWYgc3RydWN0IEdyb3VwaW5nU2V0CiAgKiBvcHRpb25zIGFy ZSBuZXZlciBjb3BpZWQsIHBlciBzcGVjLgogICogImRlZmluZUNsYXVzZSIgaXMgUm93IFBhdHRl cm4gUmVjb2duaXRpb24gREVGSU5FIGNsYXVzZSAobGlzdCBvZgogICogVGFyZ2V0RW50cnkpLiBU YXJnZXRFbnRyeS5yZXNuYW1lIHJlcHJlc2VudHMgcm93IHBhdHRlcm4gZGVmaW5pdGlvbgotICog dmFyaWFibGUgbmFtZS4gInJwUGF0dGVybiIgcmVwcmVzZW50cyBQQVRURVJOIGNsYXVzZSBhcyBh biBBU1QgdHJlZQorICogdmFyaWFibGUgbmFtZS4gInJwUGF0dGVybiIgcmVwcmVzZW50cyB0aGUg UEFUVEVSTiBjbGF1c2UgYXMgYSBwYXJzZSB0cmVlCiAgKiAoUlBSUGF0dGVybk5vZGUpLgogICoK ICAqLwpAQCAtMTc2Myw3ICsxNzYzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93Q2xhdXNlCiAJ CQkJCQkJCSAqIGluaXRpYWwgKi8KIAkvKiBSb3cgUGF0dGVybiBERUZJTkUgY2xhdXNlIChsaXN0 IG9mIFRhcmdldEVudHJ5KSAqLwogCUxpc3QJICAgKmRlZmluZUNsYXVzZTsKLQkvKiBSb3cgUGF0 dGVybiBQQVRURVJOIGNsYXVzZSBBU1QgKi8KKwkvKiBSb3cgUGF0dGVybiBQQVRURVJOIHBhcnNl IHRyZWUgKi8KIAlSUFJQYXR0ZXJuTm9kZSAqcnBQYXR0ZXJuOwogfSBXaW5kb3dDbGF1c2U7CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCBiL3NyYy9pbmNsdWRlL29w dGltaXplci9ycHIuaAppbmRleCA4M2QzY2QyOWIwNy4uZjU0NjJhYjJhN2MgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cnByLmgKQEAgLTI3LDggKzI3LDE1IEBACiAgKiBiZWZvcmUgcmVsZWFzZS4KICAqLwogI2RlZmlu ZSBSUFJfVkFSSURfTUFYCQkweEVGCS8qIHBhdHRlcm4gdmFyaWFibGVzIGFyZSAwIHRvIDB4RUYg Ki8KKworLyoKKyAqIFJQUl9DT1VOVF9JTkYgaXMgdGhlIHZhbHVlIGEgcnVudGltZSByZXBldGl0 aW9uIGNvdW50IHNhdHVyYXRlcyBhdCB0byBhdm9pZAorICogaW50MzIgb3ZlcmZsb3cgKHNlZSB0 aGUgY291bnQrKyBndWFyZCBpbiBuZmFfbWF0Y2gpLiAgSXQgaXMgZGVmaW5lZCBhcworICogUlBS X1FVQU5USVRZX0lORiBzbyB0aGF0IGEgc2F0dXJhdGVkIGNvdW50IGNvbXBhcmVzIGFzICJ1bmJv dW5kZWQiLCBqdXN0CisgKiBsaWtlIGFuIHVuYm91bmRlZCBxdWFudGlmaWVyJ3MgbWF4LgorICov CiAjZGVmaW5lIFJQUl9RVUFOVElUWV9JTkYJUEdfSU5UMzJfTUFYCS8qIHVuYm91bmRlZCBxdWFu dGlmaWVyICovCi0jZGVmaW5lIFJQUl9DT1VOVF9NQVgJCVBHX0lOVDMyX01BWAkvKiBtYXggcnVu dGltZSBjb3VudCAoTkZBIHN0YXRlKSAqLworI2RlZmluZSBSUFJfQ09VTlRfSU5GCQlSUFJfUVVB TlRJVFlfSU5GCiAjZGVmaW5lIFJQUl9FTEVNSURYX01BWAkJUEdfSU5UMTZfTUFYCS8qIG1heCBw YXR0ZXJuIGVsZW1lbnRzICovCiAjZGVmaW5lIFJQUl9FTEVNSURYX0lOVkFMSUQJKChSUFJFbGVt SWR4KSAtMSkJLyogaW52YWxpZCBpbmRleCAqLwogI2RlZmluZSBSUFJfREVQVEhfTUFYCQkoUEdf VUlOVDhfTUFYIC0gMSkJLyogbWF4IHBhdHRlcm4gbmVzdGluZyBkZXB0aDoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKaW5kZXggY2M4NmQwYWFlMzAuLjg2NzJiNGMz MDU1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dApAQCAtNTU5 OCwxMyArNTU5OCwxNSBAQCBFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2 X29wdF9taXhlZDsKIC0tIGZpbmRfd2luZG93X3J1bl9jb25kaXRpb25zKCkgcHVzaGVzIFdIRVJF IGZpbHRlcnMgb24gbW9ub3RvbmljIHdpbmRvdwogLS0gZnVuY3Rpb25zIGludG8gV2luZG93QWdn IGFzIFJ1biBDb25kaXRpb25zIGZvciBlYXJseSB0ZXJtaW5hdGlvbi4KIC0tIFdpdGggUlBSJ3Mg cmVxdWlyZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVECi0t LSBGT0xMT1dJTkcpLCB0aGUgbW9ub3RvbmljIGRpcmVjdGlvbiBkZXRlcm1pbmVzIHdoaWNoIG9w ZXJhdG9ycyB0cmlnZ2VyCi0tLSBSdW4gQ29uZGl0aW9uIHB1c2hkb3duOgorLS0gRk9MTE9XSU5H KSwgdGhlIG1vbm90b25pYyBkaXJlY3Rpb24gb2YgdGhlIHdpbmRvdyBmdW5jdGlvbiBkZXRlcm1p bmVzCistLSB3aGljaCBjb21wYXJpc29uIG9wZXJhdG9ycyBhbGxvdyBwdXNoZG93bjoKIC0tICAg SU5DUkVBU0lORyAoPD0pOiByb3dfbnVtYmVyLCByYW5rLCBkZW5zZV9yYW5rLCBwZXJjZW50X3Jh bmssCiAtLSAgICAgICAgICAgICAgICAgICAgY3VtZV9kaXN0LCBudGlsZQotLS0gICBERUNSRUFT SU5HICg+KTogIGNvdW50KCopICh2aWEgaW50OGluYywgRU5EX1VOQk9VTkRFRF9GT0xMT1dJTkcp Ci0tLSBSUFIgd2luZG93IGZ1bmN0aW9uIHJlc3VsdHMgYXJlIG1hdGNoLWRlcGVuZGVudCwgbm90 IG1vbm90b25pYy4KLS0tIFRlc3Qgd2l0aCBjb3VudCgqKSA+IDAgYXMgcmVwcmVzZW50YXRpdmUg Y2FzZS4KKy0tICAgREVDUkVBU0lORyAoPik6ICBjb3VudCgqKS4gIEFzIHRoZSBjdXJyZW50IHJv dyBhZHZhbmNlcywgdGhlIGZyYW1lCistLSAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGVuZHMg YXQgVU5CT1VOREVEIEZPTExPV0lORykgc2hyaW5rcywgc28gdGhlCistLSAgICAgICAgICAgICAg ICAgICAgY291bnQgZGVjcmVhc2VzLgorLS0gUlBSIHdpbmRvdyBmdW5jdGlvbiByZXN1bHRzIGFy ZSBtYXRjaC1kZXBlbmRlbnQsIG5vdCBtb25vdG9uaWMsIHNvIHRoaXMKKy0tIHB1c2hkb3duIGRv ZXMgbm90IGFwcGx5LiAgVGVzdCB3aXRoIGNvdW50KCopID4gMCBhcyBhIHJlcHJlc2VudGF0aXZl IGNhc2UuCiAtLQogLS0gV2l0aG91dCBSUFI6IGNvdW50KCopID4gMCBpcyBwdXNoZWQgZG93biBh cyBSdW4gQ29uZGl0aW9uCiBFWFBMQUlOIChDT1NUUyBPRkYpCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJf ZXhwbGFpbi5zcWwKaW5kZXggMjk3Y2E3OGQ1NGIuLjExNTQwMmUzMDRkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2V4cGxhaW4uc3FsCkBAIC0zMTc0LDEzICszMTc0LDE1IEBAIEVYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXZfb3B0X21peGVkOwogLS0gZmluZF93aW5kb3df cnVuX2NvbmRpdGlvbnMoKSBwdXNoZXMgV0hFUkUgZmlsdGVycyBvbiBtb25vdG9uaWMgd2luZG93 CiAtLSBmdW5jdGlvbnMgaW50byBXaW5kb3dBZ2cgYXMgUnVuIENvbmRpdGlvbnMgZm9yIGVhcmx5 IHRlcm1pbmF0aW9uLgogLS0gV2l0aCBSUFIncyByZXF1aXJlZCBmcmFtZSAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQKLS0tIEZPTExPV0lORyksIHRoZSBtb25vdG9uaWMg ZGlyZWN0aW9uIGRldGVybWluZXMgd2hpY2ggb3BlcmF0b3JzIHRyaWdnZXIKLS0tIFJ1biBDb25k aXRpb24gcHVzaGRvd246CistLSBGT0xMT1dJTkcpLCB0aGUgbW9ub3RvbmljIGRpcmVjdGlvbiBv ZiB0aGUgd2luZG93IGZ1bmN0aW9uIGRldGVybWluZXMKKy0tIHdoaWNoIGNvbXBhcmlzb24gb3Bl cmF0b3JzIGFsbG93IHB1c2hkb3duOgogLS0gICBJTkNSRUFTSU5HICg8PSk6IHJvd19udW1iZXIs IHJhbmssIGRlbnNlX3JhbmssIHBlcmNlbnRfcmFuaywKIC0tICAgICAgICAgICAgICAgICAgICBj dW1lX2Rpc3QsIG50aWxlCi0tLSAgIERFQ1JFQVNJTkcgKD4pOiAgY291bnQoKikgKHZpYSBpbnQ4 aW5jLCBFTkRfVU5CT1VOREVEX0ZPTExPV0lORykKLS0tIFJQUiB3aW5kb3cgZnVuY3Rpb24gcmVz dWx0cyBhcmUgbWF0Y2gtZGVwZW5kZW50LCBub3QgbW9ub3RvbmljLgotLS0gVGVzdCB3aXRoIGNv dW50KCopID4gMCBhcyByZXByZXNlbnRhdGl2ZSBjYXNlLgorLS0gICBERUNSRUFTSU5HICg+KTog IGNvdW50KCopLiAgQXMgdGhlIGN1cnJlbnQgcm93IGFkdmFuY2VzLCB0aGUgZnJhbWUKKy0tICAg ICAgICAgICAgICAgICAgICAod2hpY2ggZW5kcyBhdCBVTkJPVU5ERUQgRk9MTE9XSU5HKSBzaHJp bmtzLCBzbyB0aGUKKy0tICAgICAgICAgICAgICAgICAgICBjb3VudCBkZWNyZWFzZXMuCistLSBS UFIgd2luZG93IGZ1bmN0aW9uIHJlc3VsdHMgYXJlIG1hdGNoLWRlcGVuZGVudCwgbm90IG1vbm90 b25pYywgc28gdGhpcworLS0gcHVzaGRvd24gZG9lcyBub3QgYXBwbHkuICBUZXN0IHdpdGggY291 bnQoKikgPiAwIGFzIGEgcmVwcmVzZW50YXRpdmUgY2FzZS4KIC0tCiAKIC0tIFdpdGhvdXQgUlBS OiBjb3VudCgqKSA+IDAgaXMgcHVzaGVkIGRvd24gYXMgUnVuIENvbmRpdGlvbgotLSAKMi41MC4x IChBcHBsZSBHaXQtMTU1KQoK --00000000000058e00f0654bdc9b8--