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 1wKy3P-001REO-2C for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 12:42:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wKy3O-0043qq-1x for pgsql-hackers@arkaria.postgresql.org; Thu, 07 May 2026 12:42:10 +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 1wKy3N-0043pt-21 for pgsql-hackers@lists.postgresql.org; Thu, 07 May 2026 12:42:10 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wKy3F-00000000dv5-3Dbh for pgsql-hackers@postgresql.org; Thu, 07 May 2026 12:42:08 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-bc1f0f48351so129487766b.1 for ; Thu, 07 May 2026 05:42:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778157721; cv=none; d=google.com; s=arc-20240605; b=B+uvcn/qyVmZnLdx0TPl0zPQGmgvbAoOa20XhRLYRDRBSWP+PyNM2/FspgkVkO6Nnm p7KNrMGwJDrqlaGOqwk99uh5HAAlDgPFXH99VIbWVYKe1XShEBfmGTNfry4PZhXmqFvA 7gO6Go6t72nQBGmp0j6RLQMnBSVU783l97qLP/PZj6a/biXsZdEKk3kdsA5OPAq5FDL6 3sQFsApImYr1n/DU0M6o/syT/X4HXKV1QfHXmwZjEfrr1S2quajDo+Wh1H+SxGlfarhg C2SQCBDuQOZ5vd3aZ/Nsd77/i6IXbkgguQ85xMb+cgONDwCIcfsWNiQ6238eKn2qHi3M H4jA== 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=ygZbxvRNR+quhRMYMj8u5Ro7kCtENPYf8JTZglaX5GE=; fh=P+qZ9P55lKpHO5MHdYj93dhVdT4cHWZB3iZacvUV4oQ=; b=MXjkXRijgEX3VdV1kYXvbVPiwLPnJpThHpjpHp8j0DPrJ6QBSioiOTH00ivHvjwzTP LuzYmLgnq4kOquXRw+E0Lsf++1+scfzn8D7gYVd6/l46oXQ/yYy5A8FMNpMsK9wO9OEd zf+POTLPoBxEx/9oEmqOUeEcADL1Ih79y+jaFcQLnFiPM5jPjbW64aTNOD4HEDrfQ7Sf DFTv7n+SzDyrpzEdzhizdO6wjTWZs9KQ9HWBNWDjp+Oc/6kXtQR27CZx8CesZs7So+N2 xQJFUT6uJOjxEPri4baDMGp5NwgKWNMDOZQc5+HcdkkGzYuM0AdVaypc4pDt5zVqeuSA VlcQ==; 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=1778157721; x=1778762521; 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=ygZbxvRNR+quhRMYMj8u5Ro7kCtENPYf8JTZglaX5GE=; b=BCy34oZTMt+RxZTFVRuTIPb/0lDNDPRAa9b3AI3UA3wEAbNzzqmmTEvAhEr0S2QcBs r4R58QM+JiNiWKTcujwKaudIdcUxjCqZxELvmFMAzxwEcfCcunQsdr6tW7NYKlnOD2N2 733oE2PW5PKmeFj0KhuzqtRfWI+vIUnv8+tYv1J3S6+3KdRqV4IO0mw2GyK3Pt0VcMM9 xCy0fQ2mC8DnEmlkWBRNa1Fs9acC/psUcQVQyWGqLBZXmuh8wwQC0dsVxxjxVKhTd9Sq aoDlQJB9frcATvs5c/i4RNpTh48EgDXsxIVRkk+c74w3SNicrOIBCjNn9M6INZb03vtE Hyow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778157721; x=1778762521; 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=ygZbxvRNR+quhRMYMj8u5Ro7kCtENPYf8JTZglaX5GE=; b=fTL6Gs+rynd/TamANTnMmpEZHk9wBbwacZwJyr0NC2sQN1yANIx1tGVraDL0GkDQsm f2bmM4/QwGIb4DKcQglJesh3UwF84Rx4G7bP33OpTp60TdKM4Pm/P5Oya33PPJJ0HPxg o8fWSIomkL3dDJ3HUYq43jkgCuuJdqRz+KmKtVGz1apS+UTYvG8r6Y2P6H9bJHz4l6JM uNff1y/odSBSGns4Cb5+3Djvy9M6+BtvXR3piOVRWU/AzzaegM7v/WOvYn9ZWho7cKPZ Vuwdh6BeQxR9zWDCMjCHy/U7gDPmoaXHmBu/Ipo8zrjtg4LkWd//mCmcpKy7Z/TyZnk2 xU6A== X-Forwarded-Encrypted: i=1; AFNElJ9e5EMuVdK0Kwj4lPRDoVdJke1dsnSQj/kwqJBPxbeWInw/jXz2oTy4trRKONZGk86GaAlCTceWqJ5U1AQm@postgresql.org X-Gm-Message-State: AOJu0YxsS6z0ipTn9PoRgr2ru4vIwBfhrKCDNQDdxKDXwgRjPEPIMNrD mRaF45uaLdyQCNQq5UNMwjlvH7n9gkXndfWKxY/r0zL2p1HsmwHQZvIP6ipVwPQcLlaxP6757wk rHhIpHl/zoF1DngOlcqdLaHJNCpfPMtw= X-Gm-Gg: AeBDieuXHQZqwfmO9JKOgsWSYlDZEkifb3gt1gsiHFEPvL0Y4d9EV7ydm53tm36BUZW I5k8B3YPCwn/ThFlYVJpnMRce/sVPj6/wi69F8G36zt9eTRZ+FAk41sv8b1L/pYFE9G6SgryIpt 3vdEfyygEA0IdE0ePDdL9XeKnHu0gNn4FYH70mAEvrEI2dKgXPMn1kRM0FjJ5XoJmoabMo5pg4A UVG/mtz3tfEvnkK2mtxBHjUMDShJ8OFY68NXscPw0ZSnaxJPxc8s21jWmHDHIINsP75+WhdGuZ0 1cUPu1FhrLHUAv+TWU9VGVVfE+DkWkwMTanEecAz2dc5+LtwwDc= X-Received: by 2002:a17:906:4787:b0:bba:9cb:e5ed with SMTP id a640c23a62f3a-bc56b627b6bmr473794166b.14.1778157720400; Thu, 07 May 2026 05:42:00 -0700 (PDT) MIME-Version: 1.0 References: <20260505.170845.1271951360939093763.ishii@postgresql.org> <20260505.184228.594389150715346967.ishii@postgresql.org> In-Reply-To: Reply-To: assam258@gmail.com From: Henson Choi Date: Thu, 7 May 2026 21:41:46 +0900 X-Gm-Features: AVHnY4Lv1Uthxli-kygzp42uc4xRDhdGUytg7bL79dUTYZr4fIUz0Oqw3Dcitaw Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii , jian.universality@gmail.com Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, li.evan.chao@gmail.com, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000048337e0651399b49" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000048337e0651399b49 Content-Type: multipart/alternative; boundary="00000000000048337e0651399b47" --00000000000048337e0651399b47 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tatsuo, hi Jian, Attached are 10 incremental patches on top of v47, covering the follow-up plan ([A]..[D]) I sketched on 2026-05-05, Jian's two coding-style items (trailing commas, outer parentheses; gram.y folded into 0007), one comment-only patch (0009), and one trivial cleanup (0010). Packaging into the next version is at your discretion. Patch summary: - 0001 Add DEFINE non-volatile baseline to rpr_integration B9 Adds a STABLE/IMMUTABLE baseline ahead of the volatile case so the rejection in 0002 is visible against a working reference. - 0002 Unify RPR DEFINE walkers and reject volatile callees [A]. Collapses the four DEFINE walkers (parser / planner / executor) into one phase-tagged traversal and, on that base, rejects volatile / NextValueExpr at parse-analysis. STABLE / IMMUTABLE accepted. The offset runtime-constant check is folded in; B9 flips to error-case and its XXX is dropped. - 0003 Cover RPR empty-match path with EXPLAIN tests; fix stale XXX comments [B]. Adds rpr_explain coverage that surfaces "NFA: N matched (len 0/0/0.0)" so the NFA-found-but-empty-frame path is regression-visible; replaces stale rpr_nfa XXXs. - 0004 Reclassify DEFINE qualifier check and reword diagnostic to "expression" [D]. Tri-classifies (pattern var / range var / fall- through) so unknown qualifiers fall through to the standard "column does not exist" diagnostic. Reworded to "expression" since the quoted token may include indirection on composite types (e.g. (A.items).amount). - 0005 Sync stale comments on DEFINE/PATTERN handling validateRPRPatternVarCount() rejects DEFINE names not in PATTERN, but comments / SELECT doc described it as "collection" / "filtered during planning". Wording aligned; XXX note's "column references" bumped to "expressions" to match 0004. Comment + doc only. - 0006 Add trailing commas to RPR enum definitions Per Jian. RPRNavKind, RPRNavOffsetKind, RPRPatternNodeType. - 0007 Remove optional outer parentheses from ereport() calls in RPR files Per Jian + Tatsuo's gram.y patch. 19 sites in parse_rpr.c / optimizer/plan/rpr.c plus the gram.y sites. - 0008 Add high-water mark tracking to NFA visited bitmap reset [C]. Resets only the touched span (O(span_words) instead of O(numElements/64)), at the cost of two int16 comparisons per visit. Semantics unchanged; happy to drop if you prefer the simpler bulk reset. - 0009 Document DEFINE subquery rejection as intentional over-rejection Comment-only. Records that ISO/IEC 9075-2 =C2=A74.18.4 / 6.17.4 (R010 / R020) permits a non-RPR, non-pattern-var- correlated subquery in DEFINE, and that our blanket rejection is deliberate over-rejection. The case distinction (walk subquery Query for nested RPR; match ColumnRef qualifiers against ancestor p_rpr_pattern_vars) is doable with existing infrastructure and left as future work, not blocked on any other feature. - 0010 Remove duplicate #include in nodeWindowAgg.c "common/int.h" was included twice and the first occurrence was misplaced between catalog/* headers. Drops the misplaced first; the second sits at the correct alphabetical position. Still deferred: - B7 Recursive CTE XXX: pending community input on the =C2=A74.18.5 / 6.17.5 interpretation. Please let me know if any of 0001-0010 looks misjudged or if you would prefer a different slicing. Best regards, Henson --00000000000048337e0651399b47 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo, hi Jian,

Attached are 10 incremental pat= ches on top of v47, covering the
follow-up plan ([A]..[D]) I sketched on= 2026-05-05, Jian's two
coding-style items (trailing commas, outer p= arentheses; gram.y
folded into 0007), one comment-only patch (0009), and= one trivial
cleanup (0010).=C2=A0 Packaging into the next version is at= your
discretion.

Patch summary:

=C2=A0 - 0001 Add DEFINE = non-volatile baseline to rpr_integration B9
=C2=A0 =C2=A0 =C2=A0 Adds a = STABLE/IMMUTABLE baseline ahead of the volatile
=C2=A0 =C2=A0 =C2=A0 cas= e so the rejection in 0002 is visible against a working
=C2=A0 =C2=A0 = =C2=A0 reference.

=C2=A0 - 0002 Unify RPR DEFINE walkers and reject = volatile callees
=C2=A0 =C2=A0 =C2=A0 [A].=C2=A0 Collapses the four DEFI= NE walkers (parser / planner
=C2=A0 =C2=A0 =C2=A0 / executor) into one p= hase-tagged traversal and, on that
=C2=A0 =C2=A0 =C2=A0 base, rejects vo= latile / NextValueExpr at parse-analysis.
=C2=A0 =C2=A0 =C2=A0 STABLE / = IMMUTABLE accepted.=C2=A0 The offset runtime-constant
=C2=A0 =C2=A0 =C2= =A0 check is folded in; B9 flips to error-case and its XXX is
=C2=A0 =C2= =A0 =C2=A0 dropped.

=C2=A0 - 0003 Cover RPR empty-match path with EX= PLAIN tests; fix
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0stale XXX comments=C2=A0 =C2=A0 =C2=A0 [B].=C2=A0 Adds rpr_explain coverage that surfaces &q= uot;NFA: N
=C2=A0 =C2=A0 =C2=A0 matched (len 0/0/0.0)" so the NFA-f= ound-but-empty-frame
=C2=A0 =C2=A0 =C2=A0 path is regression-visible; re= places stale rpr_nfa XXXs.

=C2=A0 - 0004 Reclassify DEFINE qualifier= check and reword
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0diagnostic to "= expression"
=C2=A0 =C2=A0 =C2=A0 [D].=C2=A0 Tri-classifies (pattern= var / range var / fall-
=C2=A0 =C2=A0 =C2=A0 through) so unknown qualif= iers fall through to the
=C2=A0 =C2=A0 =C2=A0 standard "column does= not exist" diagnostic.=C2=A0 Reworded to
=C2=A0 =C2=A0 =C2=A0 &quo= t;expression" since the quoted token may include
=C2=A0 =C2=A0 =C2= =A0 indirection on composite types (e.g. (A.items).amount).

=C2=A0 -= 0005 Sync stale comments on DEFINE/PATTERN handling
=C2=A0 =C2=A0 =C2= =A0 validateRPRPatternVarCount() rejects DEFINE names not in
=C2=A0 =C2= =A0 =C2=A0 PATTERN, but comments / SELECT doc described it as
=C2=A0 =C2= =A0 =C2=A0 "collection" / "filtered during planning".= =C2=A0 Wording
=C2=A0 =C2=A0 =C2=A0 aligned; XXX note's "column= references" bumped to
=C2=A0 =C2=A0 =C2=A0 "expressions"= to match 0004.=C2=A0 Comment + doc only.

=C2=A0 - 0006 Add trailing= commas to RPR enum definitions
=C2=A0 =C2=A0 =C2=A0 Per Jian.=C2=A0 RPR= NavKind, RPRNavOffsetKind, RPRPatternNodeType.

=C2=A0 - 0007 Remove = optional outer parentheses from ereport() calls
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0in RPR files
=C2=A0 =C2=A0 =C2=A0 Per Jian + Tatsuo's gram= .y patch. =C2=A019 sites in
=C2=A0 =C2=A0 =C2=A0 parse_rpr.c / optimizer= /plan/rpr.c plus the gram.y sites.

=C2=A0 - 0008 Add high-water mark= tracking to NFA visited bitmap
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0reset<= br>=C2=A0 =C2=A0 =C2=A0 [C].=C2=A0 Resets only the touched span (O(span_wor= ds) instead
=C2=A0 =C2=A0 =C2=A0 of O(numElements/64)), at the cost of t= wo int16 comparisons
=C2=A0 =C2=A0 =C2=A0 per visit.=C2=A0 Semantics unc= hanged; happy to drop if you
=C2=A0 =C2=A0 =C2=A0 prefer the simpler bul= k reset.

=C2=A0 - 0009 Document DEFINE subquery rejection as intenti= onal
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0over-rejection
=C2=A0 =C2=A0 = =C2=A0 Comment-only.=C2=A0 Records that ISO/IEC 9075-2 =C2=A74.18.4 /
= =C2=A0 =C2=A0 =C2=A0 6.17.4 (R010 / R020) permits a non-RPR, non-pattern-va= r-
=C2=A0 =C2=A0 =C2=A0 correlated subquery in DEFINE, and that our blan= ket
=C2=A0 =C2=A0 =C2=A0 rejection is deliberate over-rejection.=C2=A0 T= he case
=C2=A0 =C2=A0 =C2=A0 distinction (walk subquery Query for nested= RPR; match
=C2=A0 =C2=A0 =C2=A0 ColumnRef qualifiers against ancestor p= _rpr_pattern_vars)
=C2=A0 =C2=A0 =C2=A0 is doable with existing infrastr= ucture and left as future
=C2=A0 =C2=A0 =C2=A0 work, not blocked on any = other feature.

=C2=A0 - 0010 Remove duplicate #include in nodeWindow= Agg.c
=C2=A0 =C2=A0 =C2=A0 "common/int.h" was included twice a= nd the first occurrence
=C2=A0 =C2=A0 =C2=A0 was misplaced between catal= og/* headers.=C2=A0 Drops the
=C2=A0 =C2=A0 =C2=A0 misplaced first; the = second sits at the correct
=C2=A0 =C2=A0 =C2=A0 alphabetical position.
Still deferred:
=C2=A0 - B7 Recursive CTE XXX: pending community i= nput on the
=C2=A0 =C2=A0 =C2=A74.18.5 / 6.17.5 interpretation.

P= lease let me know if any of 0001-0010 looks misjudged or if you
would pr= efer a different slicing.

Best regards,
Henson
--00000000000048337e0651399b47-- --00000000000048337e0651399b49 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0001-DEFINE-non-volatile-baseline.txt" Content-Disposition: attachment; filename="nocfbot-0001-DEFINE-non-volatile-baseline.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh5yrx0 RnJvbSBlMjk5MjBiZmMyYzliZWVjNGYwZjg1ZTg1NDdkMjFlMTljYTIzNTI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMTk6MDk6MzQgKzA5MDAKU3ViamVjdDogW1BBVENIIDEvOV0gQWRk IERFRklORSBub24tdm9sYXRpbGUgYmFzZWxpbmUgdG8gcnByX2ludGVncmF0aW9uIEI5Ck1JTUUt VmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpCOSBpbiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfaW50ZWdyYXRpb24uc3FsIHRvZGF5IG9ubHkgZXhlcmNpc2VzIGEKdm9sYXRpbGUgY2FsbGVl IChyYW5kb20oKSkgaW5zaWRlIERFRklORS4gIEFkZCBhIGJhc2VsaW5lIHF1ZXJ5IGluIHRoZQpz YW1lIHNlY3Rpb24gdGhhdCB1c2VzIFNUQUJMRSAodG9fY2hhcikgYW5kIElNTVVUQUJMRSAobGVu Z3RoKSBjYWxsZWVzLAp3aGljaCBtdXN0IHJlbWFpbiBhY2NlcHRlZCB3aGVuIHRoZSB1cGNvbWlu ZyB2b2xhdGlsZS1vbmx5IHByb2hpYml0aW9uCmxhbmRzLiAgVGhpcyBndWFyZHMgYWdhaW5zdCB0 aGUgcHJvaGliaXRpb24gYmVpbmcgYnJvYWRlbmVkIGJ5IGFjY2lkZW50CihlLmcuIGNvbnRhaW5f dm9sYXRpbGVfZnVuY3Rpb25zIOKGkiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKTsgdGhlCnZv bGF0aWxlIGNhc2UgYWxvbmUgd291bGQgbm90IGNhdGNoIG92ZXItcmVqZWN0aW9uLgoKT3JkZXJl ZCBiYXNlbGluZS1maXJzdCB0aGVuIHZvbGF0aWxlLCBtYXRjaGluZyBvdGhlciBCIHNlY3Rpb25z LgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dCB8IDI2 ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlv bi5zcWwgICAgICB8IDEzICsrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dApp bmRleCAwY2M3OWI3NTYwMS4uZWY2YTE1N2Y0NWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKQEAgLTE0MjEsNiArMTQyMSwzMiBAQCBEUk9QIElO REVYIHJwcl9pbnRlZ19pZF9pZHg7CiAtLSBwYXR0ZXJuIG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlz dGljLiAgV2hlbiB0aGUgcHJvaGliaXRpb24gbGFuZHMsCiAtLSB0aGlzIHRlc3QgbXVzdCBiZSBy ZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2UgdGVzdCB0aGF0IGV4cGVjdHMKIC0tIHJhbmRvbSgp IGluIERFRklORSB0byBiZSByZWplY3RlZC4KKy0tIEJhc2VsaW5lOiBTVEFCTEUgKHRvX2NoYXIp IGFuZCBJTU1VVEFCTEUgKGxlbmd0aCkgY2FsbGVlcyBhcmUgYWNjZXB0ZWQuCistLSBUaGlzIGxv Y2tzIHRoZSBib3VuZGFyeSBvZiB0aGUgdm9sYXRpbGUtb25seSBwcm9oaWJpdGlvbi4KK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwg PiBQUkVWKHZhbCkKKyAgICAgICAgICAgICAgICBBTkQgbGVuZ3RoKCd4JykgPSAxCisgICAgICAg ICAgICAgICAgQU5EIHRvX2NoYXIoZGF0ZSAnMjAyNi0wMS0wMScsICdZWVlZJykgPSAnMjAyNicp CitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8 ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAor ICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJv d3MpCisKKy0tIFZvbGF0aWxlIChyYW5kb20pIGlzIHRoZSBwcm9oaWJpdGlvbiB0YXJnZXQ7IHRv ZGF5IHN0aWxsIGFjY2VwdGVkLgogU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBj bnQKIEZST00gcnByX2ludGVnCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCmluZGV4IDZkNDc3MjhlOTExLi5kOTc0ODk3OWQ1 NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCkBAIC04ODQsNiAr ODg0LDE5IEBAIERST1AgSU5ERVggcnByX2ludGVnX2lkX2lkeDsKIC0tIHRoaXMgdGVzdCBtdXN0 IGJlIHJlcGxhY2VkIHdpdGggYW4gZXJyb3ItY2FzZSB0ZXN0IHRoYXQgZXhwZWN0cwogLS0gcmFu ZG9tKCkgaW4gREVGSU5FIHRvIGJlIHJlamVjdGVkLgogCistLSBCYXNlbGluZTogU1RBQkxFICh0 b19jaGFyKSBhbmQgSU1NVVRBQkxFIChsZW5ndGgpIGNhbGxlZXMgYXJlIGFjY2VwdGVkLgorLS0g VGhpcyBsb2NrcyB0aGUgYm91bmRhcnkgb2YgdGhlIHZvbGF0aWxlLW9ubHkgcHJvaGliaXRpb24u CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcK K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIg QVMgdmFsID4gUFJFVih2YWwpCisgICAgICAgICAgICAgICAgQU5EIGxlbmd0aCgneCcpID0gMQor ICAgICAgICAgICAgICAgIEFORCB0b19jaGFyKGRhdGUgJzIwMjYtMDEtMDEnLCAnWVlZWScpID0g JzIwMjYnKQorT1JERVIgQlkgaWQ7CisKKy0tIFZvbGF0aWxlIChyYW5kb20pIGlzIHRoZSBwcm9o aWJpdGlvbiB0YXJnZXQ7IHRvZGF5IHN0aWxsIGFjY2VwdGVkLgogU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdyBBUyBjbnQKIEZST00gcnByX2ludGVnCiBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000048337e0651399b49 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0002-Unify-DEFINE-walkers-reject-volatile.txt" Content-Disposition: attachment; filename="nocfbot-0002-Unify-DEFINE-walkers-reject-volatile.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh60g21 RnJvbSA4ODExZGU0ZmVhODI4YjU0MTVjM2Q4ZmU0MTQ2NjViNmVmY2Q1YjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMjE6Mzc6NTkgKzA5MDAKU3ViamVjdDogW1BBVENIIDIvOV0gVW5p ZnkgUlBSIERFRklORSB3YWxrZXJzIGFuZCByZWplY3Qgdm9sYXRpbGUgY2FsbGVlcwoKUGxhbm5l ci9leGVjdXRvcjogc2hhcmVkIG5hdl90cmF2ZXJzYWxfd2Fsa2VyICsgdmlzaXRfbmF2X3BsYW4g Lwp2aXNpdF9uYXZfZXhlYyByZXBsYWNlIGZvdXIgcHJlLWV4aXN0aW5nIHdhbGtlcnM7IGVhY2gg REVGSU5FCnZhcmlhYmxlIGlzIHdhbGtlZCBvbmNlIHBlciBwaGFzZS4KClBhcnNlcjogc2luZ2xl IGRlZmluZV93YWxrZXIgd2l0aCBwaGFzZSB0YWcgKEJPRFkgLyBOQVZfQVJHIC8KTkFWX09GRlNF VCkgcmVwbGFjZXMgdHdvIHByZS1leGlzdGluZyB3YWxrZXJzIGFuZCBlbmZvcmNlcyBhbGwgcnVs ZXMKaW4gb25lIHRyYXZlcnNhbC4gIFZvbGF0aWxlIGFuZCBOZXh0VmFsdWVFeHByIGFyZSByZWpl Y3RlZCAoUlBSJ3MgTkZBCm1heSByZS1ldmFsdWF0ZSBwcmVkaWNhdGVzIGR1cmluZyBiYWNrdHJh Y2tpbmcsIG1ha2luZyB2b2xhdGlsZQpyZXN1bHRzIG5vbi1kZXRlcm1pbmlzdGljOyBTVEFCTEUg YW5kIElNTVVUQUJMRSBhcmUgYWNjZXB0ZWQpLgoKVGhlIGNvbnN0YW50LW9mZnNldCBydWxlIG5v dyBhbHNvIGNhdGNoZXMgY29sdW1uIHJlZmVyZW5jZXMgaW4gdGhlCmlubmVyIG9mZnNldCBvZiBj b21wb3VuZCBmb3Jtcy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAg ICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAg ICAgICAgICB8IDI4MiArKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Ny ZWF0ZXBsYW4uYyAgICAgICB8IDQzNCArKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3Jwci5jICAgICAgICAgICAgICB8ICAzNCArKwogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3Jwci5jICAgICAgICAgICAgICAgIHwgMzkzICsrKysrKysrKystLS0tLS0KIHNy Yy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAgICAgICAgICAgICAgICAgICB8ICAyMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICAgICAgICAgICAgfCAgNzQgKy0tCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCAgICAgfCAgMTEgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dCB8ICA0MCArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByLnNxbCAgICAgICAgICAgICAgICAgIHwgIDM1ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgICAgICAgICAgfCAgIDcgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgICAgICB8ICAyMyArLQogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgIDEwICstCiAxMyBmaWxlcyBj aGFuZ2VkLCA3NTggaW5zZXJ0aW9ucygrKSwgNjE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYwppbmRleCA5OWRlMzZiNTdmMi4uMWE3NTRiY2RhYzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMKQEAgLTMzMTIsOCArMzMxMiwxMiBAQCBzaG93X3dpbmRvd19kZWYoV2luZG93QWdnU3Rh dGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQkJ CQkJCQllcyk7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9GSVhFRDoK LQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5hdiBNYXJrIExvb2thaGVhZCIsIE5VTEws Ci0JCQkJCQkJCQkJCSAgIGZpcnN0T2Zmc2V0LCBlcyk7CisJCQkJCQlpZiAoZmlyc3RPZmZzZXQg PT0gSU5UNjRfTUFYKQorCQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2th aGVhZCIsICJpbmZpbml0ZSIsCisJCQkJCQkJCQkJCQllcyk7CisJCQkJCQllbHNlCisJCQkJCQkJ RXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2IE1hcmsgTG9va2FoZWFkIiwgTlVMTCwKKwkJCQkJ CQkJCQkJCSAgIGZpcnN0T2Zmc2V0LCBlcyk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoK IAkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgUlBSIG5hdiBvZmZzZXQga2luZDogJWQi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDkzY2I5YmJkZDExLi5hZjIz NTFiY2NiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjQ2LDggKzI0 Niw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5v YmosIGludDY0IHBvcyk7CiBzdGF0aWMgYm9vbCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVj dCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAqdmFyTWF0Y2hlZCk7CiAKIC8qIEZvcndhcmQgZGVj bGFyYXRpb25zIC0gbmF2aWdhdGlvbiBvZmZzZXQgZXZhbHVhdGlvbiAqLwotc3RhdGljIHZvaWQg ZXZhbF9uYXZfbWF4X29mZnNldChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIExpc3QgKmRlZmlu ZUNsYXVzZSk7Ci1zdGF0aWMgdm9pZCBldmFsX25hdl9maXJzdF9vZmZzZXQoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBMaXN0ICpkZWZpbmVDbGF1c2UpOworc3RhdGljIHZvaWQgZXZhbF9kZWZp bmVfb2Zmc2V0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIExpc3QgKmRlZmluZUNsYXVzZSk7 CiAKIC8qCiAgKiBOb3QgbnVsbCBpbmZvIGJpdCBhcnJheSBjb25zaXN0cyBvZiAyLWJpdCBpdGVt cwpAQCAtMjU3OSwxMiArMjU3OCwxMCBAQCBFeGVjV2luZG93QWdnKFBsYW5TdGF0ZSAqcHN0YXRl KQogCQkJewogCQkJCWludDY0CQlmaXJzdHJlYWNoOwogCi0JCQkJaWYgKHdpbnN0YXRlLT5uYXZG aXJzdE9mZnNldCA+IC13aW5zdGF0ZS0+bmZhQ29udGV4dC0+bWF0Y2hTdGFydFJvdykKLQkJCQkJ Zmlyc3RyZWFjaCA9IHdpbnN0YXRlLT5uZmFDb250ZXh0LT5tYXRjaFN0YXJ0Um93Ci0JCQkJCQkr IHdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldDsKLQkJCQllbHNlCi0JCQkJCWZpcnN0cmVhY2ggPSAw OwotCQkJCW5hdm1hcmtwb3MgPSBNaW4obmF2bWFya3BvcywgZmlyc3RyZWFjaCk7CisJCQkJaWYg KCFwZ19hZGRfczY0X292ZXJmbG93KHdpbnN0YXRlLT5uZmFDb250ZXh0LT5tYXRjaFN0YXJ0Um93 LAorCQkJCQkJCQkJCSB3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXQsCisJCQkJCQkJCQkJICZmaXJz dHJlYWNoKSkKKwkJCQkJbmF2bWFya3BvcyA9IE1pbihuYXZtYXJrcG9zLCBNYXgoZmlyc3RyZWFj aCwgMCkpOwogCQkJfQogCiAJCQlpZiAobmF2bWFya3BvcyA+IHdpbnN0YXRlLT5uYXZfd2lub2Jq LT5tYXJrcG9zKQpAQCAtMzAzNywxNyArMzAzNCwxMyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5k b3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXdpbnN0YXRlLT5ycFNr aXBUbyA9IG5vZGUtPnJwU2tpcFRvOwogCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlv biBQQVRURVJOIGNsYXVzZSAoY29tcGlsZWQgTkZBKSAqLwogCXdpbnN0YXRlLT5ycFBhdHRlcm4g PSBub2RlLT5ycFBhdHRlcm47Ci0JLyogU2V0IHVwIG5hdiBvZmZzZXRzIGZvciB0dXBsZXN0b3Jl IHRyaW0gKi8KKwkvKiBTZXQgdXAgbmF2IG9mZnNldHMgZm9yIHR1cGxlc3RvcmUgdHJpbTsgcmVz b2x2ZSBhbnkgTkVFRFNfRVZBTCBraW5kcyAqLwogCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5k ID0gbm9kZS0+bmF2TWF4T2Zmc2V0S2luZDsKIAl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0ID0gbm9k ZS0+bmF2TWF4T2Zmc2V0OwotCWlmICh3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9PSBSUFJf TkFWX09GRlNFVF9ORUVEU19FVkFMKQotCQlldmFsX25hdl9tYXhfb2Zmc2V0KHdpbnN0YXRlLCBu b2RlLT5kZWZpbmVDbGF1c2UpOwogCXdpbnN0YXRlLT5oYXNGaXJzdE5hdiA9IG5vZGUtPmhhc0Zp cnN0TmF2OwogCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldEtpbmQgPSBub2RlLT5uYXZGaXJzdE9m ZnNldEtpbmQ7CiAJd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0ID0gbm9kZS0+bmF2Rmlyc3RPZmZz ZXQ7Ci0JaWYgKHdpbnN0YXRlLT5oYXNGaXJzdE5hdiAmJgotCQl3aW5zdGF0ZS0+bmF2Rmlyc3RP ZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwpCi0JCWV2YWxfbmF2X2ZpcnN0 X29mZnNldCh3aW5zdGF0ZSwgbm9kZS0+ZGVmaW5lQ2xhdXNlKTsKKwlldmFsX2RlZmluZV9vZmZz ZXRzKHdpbnN0YXRlLCBub2RlLT5kZWZpbmVDbGF1c2UpOwogCiAJLyogQ29weSBtYXRjaF9zdGFy dCBkZXBlbmRlbmN5IGJpdG1hcHNldCBmb3IgcGVyLWNvbnRleHQgZXZhbHVhdGlvbiAqLwogCXdp bnN0YXRlLT5kZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50ID0gYm1zX2NvcHkobm9kZS0+ZGVmaW5l TWF0Y2hTdGFydERlcGVuZGVudCk7CkBAIC0zOTk3LDQyICszOTkwLDY0IEBAIGV2YWxfbmF2X29m ZnNldF9oZWxwZXIoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBFeHByICpvZmZzZXRfZXhwciwK IHR5cGVkZWYgc3RydWN0CiB7CiAJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlOwotCWludDY0CQlt YXhPZmZzZXQ7Ci0JYm9vbAkJb3ZlcmZsb3c7CQkvKiB0cnVlIGlmIG92ZXJmbG93IGRldGVjdGVk ICovCi19IEV2YWxOYXZNYXhDb250ZXh0OworCWludDY0CQltYXhPZmZzZXQ7CQkvKiBtYXggYmFj a3dhcmQtcmVhY2ggb2Zmc2V0IGFjcm9zcyBhbGwgbmF2CisJCQkJCQkJCSAqIGV4cHJzICovCisJ Ym9vbAkJbWF4T3ZlcmZsb3c7CS8qIHRydWUgaWYgYmFja3dhcmQtcmVhY2ggb3ZlcmZsb3cgZGV0 ZWN0ZWQgKi8KKwlpbnQ2NAkJbWluRmlyc3RPZmZzZXQ7IC8qIG1pbiBmb3J3YXJkLWZyb20tbWF0 Y2hfc3RhcnQgb2Zmc2V0OyBtYXkgYmUKKwkJCQkJCQkJICogbmVnYXRpdmUgKFBSRVZfRklSU1Q6 IGlubmVyIC0gb3V0ZXIgPCAwKSAqLworfSBFdmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQ7CiAKIC8q Ci0gKiBldmFsX25hdl9tYXhfb2Zmc2V0X3dhbGtlcgotICoJCVdhbGsgZXhwcmVzc2lvbiB0cmVl IGV2YWx1YXRpbmcgYmFja3dhcmQtcmVhY2ggb2Zmc2V0cyBhdCBydW50aW1lLgorICogdmlzaXRf bmF2X2V4ZWMKKyAqCQluYXZfdHJhdmVyc2FsX3dhbGtlciBjYWxsYmFjayAoTmF2VmlzaXRGbikg Zm9yIHRoZSBleGVjdXRvciBzaWRlLgorICoJCUF0IGVhY2ggUlBSTmF2RXhwciwgZXZhbHVhdGVz IHRoZSBuYXYncyBvZmZzZXQgZXhwcmVzc2lvbihzKSBhdAorICoJCXJ1bnRpbWUgdmlhIGV2YWxf bmF2X29mZnNldF9oZWxwZXIgYW5kIGFjY3VtdWxhdGVzOgorICoKKyAqCQkgIC0gbWF4T2Zmc2V0 IChiYWNrd2FyZCByZWFjaCk6IFBSRVYsIExBU1Qtd2l0aC1vZmZzZXQsIGNvbXBvdW5kCisgKgkJ CVBSRVZfTEFTVCAoc2V0cyBtYXhPdmVyZmxvdyBvbiBpbnQ2NCBvdmVyZmxvdyksIGNvbXBvdW5k CisgKgkJCU5FWFRfTEFTVCAoPSBtYXgoaW5uZXIgLSBvdXRlciwgMCkpCisgKgkJICAtIG1pbkZp cnN0T2Zmc2V0IChmb3J3YXJkIHJlYWNoIGZyb20gbWF0Y2hfc3RhcnQpOiBGSVJTVCwKKyAqCQkJ Y29tcG91bmQgUFJFVl9GSVJTVCAoPSBpbm5lciAtIG91dGVyLCBtYXkgYmUgbmVnYXRpdmUpLAor ICoJCQljb21wb3VuZCBORVhUX0ZJUlNUICg9IGlubmVyICsgb3V0ZXIsIGNsYW1wZWQgdG8gSU5U NjRfTUFYIG9uCisgKgkJCW92ZXJmbG93OyBhbHdheXMgPj0gMCBzbyBuZXZlciB1cGRhdGVzIG1p bkZpcnN0T2Zmc2V0IGluIHByYWN0aWNlKQogICoKLSAqIEhhbmRsZXMgc2ltcGxlIFBSRVYsIExB U1Qtd2l0aC1vZmZzZXQsIGFuZCBjb21wb3VuZCBQUkVWX0xBU1QvTkVYVF9MQVNULgorICogQ291 bnRlcnBhcnQgb2YgdmlzaXRfbmF2X3BsYW4gYnV0IHVzaW5nIHJ1bnRpbWUgZXZhbHVhdGlvbiBp bnN0ZWFkIG9mCisgKiBDb25zdCBmb2xkaW5nOyBydW5zIG9ubHkgZm9yIG9mZnNldHMgdGhlIHBs YW5uZXIgbWFya2VkIE5FRURTX0VWQUwuCisgKiBNYXRjaC1zdGFydCBkZXBlbmRlbmN5IGlzIG5v dCByZWNvbXB1dGVkIGhlcmUgLS0gdGhlIHBsYW5uZXIncyBiaXRtYXBzZXQKKyAqIGlzIHJldXNl ZCB2aWEgd2luc3RhdGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQuCiAgKi8KLXN0YXRpYyBi b29sCi1ldmFsX25hdl9tYXhfb2Zmc2V0X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjdHgpCitz dGF0aWMgdm9pZAordmlzaXRfbmF2X2V4ZWMoTmF2VHJhdmVyc2FsICp0LCBSUFJOYXZFeHByICpu YXYpCiB7Ci0JRXZhbE5hdk1heENvbnRleHQgKmNvbnRleHQgPSAoRXZhbE5hdk1heENvbnRleHQg KikgY3R4OwotCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIGZhbHNlOworCUV2YWxEZWZp bmVPZmZzZXRzQ29udGV4dCAqY29udGV4dCA9IChFdmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQgKikg dC0+ZGF0YTsKIAotCS8qIFNob3J0LWNpcmN1aXQgaWYgb3ZlcmZsb3cgYWxyZWFkeSBkZXRlY3Rl ZCAqLwotCWlmIChjb250ZXh0LT5vdmVyZmxvdykKLQkJcmV0dXJuIGZhbHNlOworCS8qCisJICog UGFyc2VyIGd1YXJhbnRlZSAobWlycm9ycyB2aXNpdF9uYXZfcGxhbik6IG5hdidzIGRpcmVjdCBj aGlsZHJlbiBhcmUKKwkgKiBuZXZlciBSUFJOYXZFeHByIC0tIGNvbXBvdW5kIG5lc3RpbmcgaXMg ZmxhdHRlbmVkIGluIHBsYWNlIGFuZCBhbnkKKwkgKiBvdGhlciBuZXN0aW5nIGlzIHJlamVjdGVk LiAgT3V0ZXIta2luZCBkaXNwYXRjaCBpcyBzdWZmaWNpZW50LgorCSAqLworCUFzc2VydChuYXYt PmFyZyA9PSBOVUxMIHx8ICFJc0EobmF2LT5hcmcsIFJQUk5hdkV4cHIpKTsKKwlBc3NlcnQobmF2 LT5vZmZzZXRfYXJnID09IE5VTEwgfHwgIUlzQShuYXYtPm9mZnNldF9hcmcsIFJQUk5hdkV4cHIp KTsKKwlBc3NlcnQobmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnID09IE5VTEwgfHwKKwkJICAgIUlz QShuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIFJQUk5hdkV4cHIpKTsKIAotCWlmIChJc0Eobm9k ZSwgUlBSTmF2RXhwcikpCisJLyogQmFja3dhcmQgcmVhY2g6IFBSRVYsIExBU1Qtd2l0aC1vZmZz ZXQgKi8KKwlpZiAoIWNvbnRleHQtPm1heE92ZXJmbG93KQogCXsKLQkJUlBSTmF2RXhwciAqbmF2 ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKIAkJaW50NjQJCXJlYWNoID0gMDsKKwkJYm9vbAkJZ290 UmVhY2ggPSBmYWxzZTsKIAogCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVikKIAkJewog CQkJcmVhY2ggPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAogCQkJ CQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2FyZywgMSk7CisJCQlnb3RSZWFjaCA9IHRydWU7CiAJCX0K IAkJZWxzZSBpZiAobmF2LT5raW5kID09IFJQUl9OQVZfTEFTVCAmJiBuYXYtPm9mZnNldF9hcmcg IT0gTlVMTCkKIAkJewogCQkJcmVhY2ggPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQt PndpbnN0YXRlLAogCQkJCQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2FyZywgMCk7CisJCQlnb3RSZWFj aCA9IHRydWU7CiAJCX0KIAkJZWxzZSBpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNU IHx8CiAJCQkJIG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfTEFTVCkKQEAgLTQwNDUsMTY4ICs0 MDYwLDEyMyBAQCBldmFsX25hdl9tYXhfb2Zmc2V0X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpj dHgpCiAJCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUKQogCQkJewogCQkJCWlm IChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJnJlYWNoKSkKLQkJCQl7Ci0JCQkJ CWNvbnRleHQtPm92ZXJmbG93ID0gdHJ1ZTsKLQkJCQkJcmV0dXJuIGZhbHNlOwotCQkJCX0KKwkJ CQkJY29udGV4dC0+bWF4T3ZlcmZsb3cgPSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZ290UmVhY2gg PSB0cnVlOwogCQkJfQogCQkJZWxzZQotCQkJCXJlYWNoID0gKGlubmVyID4gb3V0ZXIpID8gaW5u ZXIgLSBvdXRlciA6IDA7CisJCQl7CisJCQkJcmVhY2ggPSBNYXgoaW5uZXIgLSBvdXRlciwgMCk7 CisJCQkJZ290UmVhY2ggPSB0cnVlOworCQkJfQogCQl9CiAKLQkJY29udGV4dC0+bWF4T2Zmc2V0 ID0gTWF4KGNvbnRleHQtPm1heE9mZnNldCwgcmVhY2gpOwotCi0JCXJldHVybiBmYWxzZTsJCQkv KiBkb24ndCB3YWxrIGludG8gY2hpbGRyZW4gKi8KKwkJaWYgKGdvdFJlYWNoKQorCQkJY29udGV4 dC0+bWF4T2Zmc2V0ID0gTWF4KGNvbnRleHQtPm1heE9mZnNldCwgcmVhY2gpOwogCX0KIAotCXJl dHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGV2YWxfbmF2X21heF9vZmZzZXRfd2Fs a2VyLCBjdHgpOwotfQotCi0vKgotICogZXZhbF9uYXZfbWF4X29mZnNldAotICoJCUV2YWx1YXRl IG5vbi1jb25zdGFudCBiYWNrd2FyZC1yZWFjaCBvZmZzZXRzIGF0IGV4ZWN1dG9yIGluaXQgdGlt ZS4KLSAqCi0gKiBDYWxsZWQgd2hlbiB0aGUgcGxhbm5lciBzZXQgbmF2TWF4T2Zmc2V0S2luZCB0 byBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMCi0gKiBiZWNhdXNlIHNvbWUgb2Zmc2V0IGluIFBS RVYsIExBU1Qtd2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfTEFTVC8KLSAqIE5FWFRfTEFT VCBjb250YWlucyBhIHBhcmFtZXRlciBvciBub24tZm9sZGFibGUgZXhwcmVzc2lvbi4KLSAqCi0g KiBPbiBvdmVyZmxvdywgc2V0cyBuYXZNYXhPZmZzZXRLaW5kIHRvIFJQUl9OQVZfT0ZGU0VUX1JF VEFJTl9BTEwgc28gdGhhdAotICogdHVwbGVzdG9yZSB0cmltIGlzIGRpc2FibGVkIGZvciBiYWNr d2FyZCBuYXZpZ2F0aW9uLgotICovCi1zdGF0aWMgdm9pZAotZXZhbF9uYXZfbWF4X29mZnNldChX aW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIExpc3QgKmRlZmluZUNsYXVzZSkKLXsKLQlFdmFsTmF2 TWF4Q29udGV4dCBjdHg7Ci0JTGlzdENlbGwgICAqbGM7Ci0KLQljdHgud2luc3RhdGUgPSB3aW5z dGF0ZTsKLQljdHgubWF4T2Zmc2V0ID0gMDsKLQljdHgub3ZlcmZsb3cgPSBmYWxzZTsKLQotCWZv cmVhY2gobGMsIGRlZmluZUNsYXVzZSkKKwkvKiBGb3J3YXJkIHJlYWNoIGZyb20gbWF0Y2hfc3Rh cnQ6IEZJUlNULCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QgKi8KKwlpZiAobmF2LT5r aW5kID09IFJQUl9OQVZfRklSU1QpCiAJewotCQlUYXJnZXRFbnRyeSAqdGUgPSAoVGFyZ2V0RW50 cnkgKikgbGZpcnN0KGxjKTsKKwkJaW50NjQJCXJlYWNoOwogCi0JCWV2YWxfbmF2X21heF9vZmZz ZXRfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCAmY3R4KTsKLQl9Ci0KLQlpZiAoY3R4Lm92ZXJm bG93KQotCXsKLQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9S RVRBSU5fQUxMOwotCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0ID0gMDsKKwkJcmVhY2ggPSBldmFs X25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAorCQkJCQkJCQkJICAgbmF2LT5v ZmZzZXRfYXJnLCAwKTsKKwkJY29udGV4dC0+bWluRmlyc3RPZmZzZXQgPSBNaW4oY29udGV4dC0+ bWluRmlyc3RPZmZzZXQsIHJlYWNoKTsKIAl9Ci0JZWxzZQorCWVsc2UgaWYgKG5hdi0+a2luZCA9 PSBSUFJfTkFWX1BSRVZfRklSU1QgfHwKKwkJCSBuYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0ZJ UlNUKQogCXsKLQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9G SVhFRDsKLQkJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IGN0eC5tYXhPZmZzZXQ7Ci0JfQotfQor CQlpbnQ2NAkJaW5uZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRl LAorCQkJCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJnLCAwKTsKKwkJaW50NjQJCW91dGVyID0g ZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53aW5zdGF0ZSwKKwkJCQkJCQkJCQkJCSAg IG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSk7CisJCWludDY0CQlyZWFjaDsKIAotdHlwZWRl ZiBzdHJ1Y3QKLXsKLQlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGU7Ci0JaW50NjQJCW1pbk9mZnNl dDsKLQlib29sCQlmb3VuZDsKLX0gRXZhbE5hdkZpcnN0Q29udGV4dDsKLQotLyoKLSAqIGV2YWxf bmF2X2ZpcnN0X29mZnNldF93YWxrZXIKLSAqCQlXYWxrIGV4cHJlc3Npb24gdHJlZSBldmFsdWF0 aW5nIGZvcndhcmQtZnJvbS1tYXRjaF9zdGFydCBvZmZzZXRzLgotICoKLSAqIEhhbmRsZXMgc2lt cGxlIEZJUlNUIGFuZCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QuCi0gKi8KLXN0YXRp YyBib29sCi1ldmFsX25hdl9maXJzdF9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmN0 eCkKLXsKLQlFdmFsTmF2Rmlyc3RDb250ZXh0ICpjb250ZXh0ID0gKEV2YWxOYXZGaXJzdENvbnRl eHQgKikgY3R4OwotCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYg KElzQShub2RlLCBSUFJOYXZFeHByKSkKLQl7Ci0JCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZF eHByICopIG5vZGU7Ci0JCWludDY0CQljb21iaW5lZCA9IElOVDY0X01BWDsKLQotCQlpZiAobmF2 LT5raW5kID09IFJQUl9OQVZfRklSU1QpCisJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVW X0ZJUlNUKQogCQl7Ci0JCQljb250ZXh0LT5mb3VuZCA9IHRydWU7Ci0JCQljb21iaW5lZCA9IGV2 YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3RhdGUsCi0JCQkJCQkJCQkJCSAgbmF2 LT5vZmZzZXRfYXJnLCAwKTsKKwkJCS8qCisJCQkgKiByZWFjaCA9IGlubmVyIC0gb3V0ZXIuICBC b3RoIGFyZSBub24tbmVnYXRpdmUsIHNvIHRoZSByZXN1bHQgPj0KKwkJCSAqIC1JTlQ2NF9NQVgs IHdoaWNoIGNhbm5vdCB1bmRlcmZsb3cgaW50NjQuCisJCQkgKi8KKwkJCXJlYWNoID0gaW5uZXIg LSBvdXRlcjsKIAkJfQotCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNU IHx8Ci0JCQkJIG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfRklSU1QpCisJCWVsc2UKIAkJewot CQkJaW50NjQJCWlubmVyID0gZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53aW5zdGF0 ZSwKLQkJCQkJCQkJCQkJCQkgICBuYXYtPm9mZnNldF9hcmcsIDApOwotCQkJaW50NjQJCW91dGVy ID0gZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53aW5zdGF0ZSwKLQkJCQkJCQkJCQkJ CQkgICBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIDEpOwotCi0JCQljb250ZXh0LT5mb3VuZCA9 IHRydWU7Ci0JCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCkKLQkJCXsKLQkJ CQkvKgotCQkJCSAqIGNvbWJpbmVkID0gaW5uZXIgLSBvdXRlci4gIEJvdGggYXJlIG5vbi1uZWdh dGl2ZSwgc28gdGhlCi0JCQkJICogcmVzdWx0ID49IC1JTlQ2NF9NQVgsIHdoaWNoIGNhbm5vdCB1 bmRlcmZsb3cgaW50NjQuCi0JCQkJICovCi0JCQkJY29tYmluZWQgPSBpbm5lciAtIG91dGVyOwot CQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8qCi0JCQkJICogTkVYVF9GSVJTVDogY29tYmluZWQg PSBpbm5lciArIG91dGVyLiAgVGhpcyBjYW4gb3ZlcmZsb3csCi0JCQkJICogYnV0IHRoZSByZXN1 bHQgaXMgYWx3YXlzID49IDAsIHNvIGl0IG5ldmVyIHVwZGF0ZXMKLQkJCQkgKiBtaW5PZmZzZXQg KHdoaWNoIHRyYWNrcyB0aGUgbWluaW11bSkuICBDbGFtcCB0byBJTlQ2NF9NQVgKLQkJCQkgKiBv biBvdmVyZmxvdy4KLQkJCQkgKi8KLQkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhpbm5lciwg b3V0ZXIsICZjb21iaW5lZCkpCi0JCQkJCWNvbWJpbmVkID0gSU5UNjRfTUFYOwotCQkJfQorCQkJ LyoKKwkJCSAqIE5FWFRfRklSU1Q6IHJlYWNoID0gaW5uZXIgKyBvdXRlci4gIFRoaXMgY2FuIG92 ZXJmbG93LCBidXQgdGhlCisJCQkgKiByZXN1bHQgaXMgYWx3YXlzID49IDAsIHNvIGl0IG5ldmVy IHVwZGF0ZXMgbWluRmlyc3RPZmZzZXQKKwkJCSAqICh3aGljaCB0cmFja3MgdGhlIG1pbmltdW0p LiAgQ2xhbXAgdG8gSU5UNjRfTUFYIG9uIG92ZXJmbG93LgorCQkJICovCisJCQlpZiAocGdfYWRk X3M2NF9vdmVyZmxvdyhpbm5lciwgb3V0ZXIsICZyZWFjaCkpCisJCQkJcmVhY2ggPSBJTlQ2NF9N QVg7CiAJCX0KLQotCQljb250ZXh0LT5taW5PZmZzZXQgPSBNaW4oY29udGV4dC0+bWluT2Zmc2V0 LCBjb21iaW5lZCk7Ci0KLQkJcmV0dXJuIGZhbHNlOworCQljb250ZXh0LT5taW5GaXJzdE9mZnNl dCA9IE1pbihjb250ZXh0LT5taW5GaXJzdE9mZnNldCwgcmVhY2gpOwogCX0KLQotCXJldHVybiBl eHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGV2YWxfbmF2X2ZpcnN0X29mZnNldF93YWxrZXIs IGN0eCk7CiB9CiAKIC8qCi0gKiBldmFsX25hdl9maXJzdF9vZmZzZXQKLSAqCQlFdmFsdWF0ZSBu b24tY29uc3RhbnQgZm9yd2FyZC1mcm9tLW1hdGNoX3N0YXJ0IG9mZnNldHMgYXQgZXhlY3V0b3IK LSAqCQlpbml0IHRpbWUuCisgKiBldmFsX2RlZmluZV9vZmZzZXRzCisgKgkJRXZhbHVhdGUgbm9u LWNvbnN0YW50IG5hdiBvZmZzZXRzIGF0IGV4ZWN1dG9yIGluaXQgdGltZS4KKyAqCisgKiBDYWxs ZWQgd2hlbiB0aGUgcGxhbm5lciBzZXQgbmF2TWF4T2Zmc2V0S2luZCBhbmQvb3IgbmF2Rmlyc3RP ZmZzZXRLaW5kCisgKiB0byBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMIGJlY2F1c2Ugc29tZSBv ZmZzZXQgY29udGFpbnMgYSBwYXJhbWV0ZXIKKyAqIG9yIG5vbi1mb2xkYWJsZSBleHByZXNzaW9u LiAgVXBkYXRlcyBvbmx5IHRoZSBmaWVsZHMgd2hvc2Uga2luZCB3YXMKKyAqIE5FRURTX0VWQUw7 IEZJWEVEIGtpbmRzIGFyZSBsZWZ0IHVuY2hhbmdlZC4KICAqCi0gKiBDYWxsZWQgd2hlbiB0aGUg cGxhbm5lciBzZXQgbmF2Rmlyc3RPZmZzZXRLaW5kIHRvIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VW QUwKLSAqIGJlY2F1c2Ugc29tZSBvZmZzZXQgaW4gRklSU1Qgb3IgY29tcG91bmQgUFJFVl9GSVJT VC9ORVhUX0ZJUlNUIGNvbnRhaW5zCi0gKiBhIHBhcmFtZXRlciBvciBub24tZm9sZGFibGUgZXhw cmVzc2lvbi4KKyAqIE9uIGJhY2t3YXJkLXJlYWNoIG92ZXJmbG93LCBzZXRzIG5hdk1heE9mZnNl dEtpbmQgdG8KKyAqIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9BTEwgc28gdGhhdCB0dXBsZXN0b3Jl IHRyaW0gaXMgZGlzYWJsZWQgZm9yCisgKiBiYWNrd2FyZCBuYXZpZ2F0aW9uLgogICovCiBzdGF0 aWMgdm9pZAotZXZhbF9uYXZfZmlyc3Rfb2Zmc2V0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg TGlzdCAqZGVmaW5lQ2xhdXNlKQorZXZhbF9kZWZpbmVfb2Zmc2V0cyhXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIExpc3QgKmRlZmluZUNsYXVzZSkKIHsKLQlFdmFsTmF2Rmlyc3RDb250ZXh0IGN0 eDsKKwlFdmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQgY3R4OworCU5hdlRyYXZlcnNhbCB0cmF2Owog CUxpc3RDZWxsICAgKmxjOworCWJvb2wJCW5lZWRzTWF4ID0gKHdpbnN0YXRlLT5uYXZNYXhPZmZz ZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwpOworCWJvb2wJCW5lZWRzRmlyc3Qg PSAod2luc3RhdGUtPmhhc0ZpcnN0TmF2ICYmCisJCQkJCQkJICB3aW5zdGF0ZS0+bmF2Rmlyc3RP ZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwpOworCisJaWYgKCFuZWVkc01h eCAmJiAhbmVlZHNGaXJzdCkKKwkJcmV0dXJuOwogCiAJY3R4LndpbnN0YXRlID0gd2luc3RhdGU7 Ci0JY3R4Lm1pbk9mZnNldCA9IElOVDY0X01BWDsKLQljdHguZm91bmQgPSBmYWxzZTsKKwljdHgu bWF4T2Zmc2V0ID0gMDsKKwljdHgubWF4T3ZlcmZsb3cgPSBmYWxzZTsKKwljdHgubWluRmlyc3RP ZmZzZXQgPSBJTlQ2NF9NQVg7CisKKwl0cmF2LnZpc2l0ID0gdmlzaXRfbmF2X2V4ZWM7CisJdHJh di5kYXRhID0gJmN0eDsKIAogCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKIAl7CiAJCVRhcmdl dEVudHJ5ICp0ZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOwogCi0JCWV2YWxfbmF2X2Zp cnN0X29mZnNldF93YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsICZjdHgpOworCQluYXZfdHJhdmVy c2FsX3dhbGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwgJnRyYXYpOwogCX0KIAotCWlmIChjdHguZm91 bmQgJiYgY3R4Lm1pbk9mZnNldCA8IElOVDY0X01BWCkKKwlpZiAobmVlZHNNYXgpCiAJewotCQl3 aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5kID0gUlBSX05BVl9PRkZTRVRfRklYRUQ7Ci0JCXdp bnN0YXRlLT5uYXZGaXJzdE9mZnNldCA9IGN0eC5taW5PZmZzZXQ7CisJCWlmIChjdHgubWF4T3Zl cmZsb3cpCisJCXsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID0gUlBSX05BVl9PRkZT RVRfUkVUQUlOX0FMTDsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSAwOworCQl9CisJCWVs c2UKKwkJeworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9G SVhFRDsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSBjdHgubWF4T2Zmc2V0OworCQl9CiAJ fQotCWVsc2UKKworCWlmIChuZWVkc0ZpcnN0KQogCXsKIAkJd2luc3RhdGUtPm5hdkZpcnN0T2Zm c2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOwotCQl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZz ZXQgPSAwOworCQlpZiAoY3R4Lm1pbkZpcnN0T2Zmc2V0IDwgSU5UNjRfTUFYKQorCQkJd2luc3Rh dGUtPm5hdkZpcnN0T2Zmc2V0ID0gY3R4Lm1pbkZpcnN0T2Zmc2V0OworCQllbHNlCisJCQl3aW5z dGF0ZS0+bmF2Rmlyc3RPZmZzZXQgPSBJTlQ2NF9NQVg7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggNTIyMDVjYzcxNTkuLjVmMTU0YzhmZTEyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0yOTQsNiArMjk0LDkg QEAgc3RhdGljIFdpbmRvd0FnZyAqbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0Ns YXVzZSAqd2MsCiAJCQkJCQkJCSBSUFJQYXR0ZXJuICpjb21waWxlZFBhdHRlcm4sCiAJCQkJCQkJ CSBMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkJCQkJCSBCaXRtYXBzZXQgKmRlZmluZU1hdGNoU3Rh cnREZXBlbmRlbnQsCisJCQkJCQkJCSBSUFJOYXZPZmZzZXRLaW5kIG5hdk1heE9mZnNldEtpbmQs IGludDY0IG5hdk1heE9mZnNldCwKKwkJCQkJCQkJIGJvb2wgaGFzRmlyc3ROYXYsCisJCQkJCQkJ CSBSUFJOYXZPZmZzZXRLaW5kIG5hdkZpcnN0T2Zmc2V0S2luZCwgaW50NjQgbmF2Rmlyc3RPZmZz ZXQsCiAJCQkJCQkJCSBMaXN0ICpxdWFsLCBib29sIHRvcFdpbmRvdywKIAkJCQkJCQkJIFBsYW4g KmxlZnR0cmVlKTsKIHN0YXRpYyBHcm91cCAqbWFrZV9ncm91cChMaXN0ICp0bGlzdCwgTGlzdCAq cXVhbCwgaW50IG51bUdyb3VwQ29scywKQEAgLTI0NjQsMTMgKzI0NjcsMjAgQEAgY3JlYXRlX21p bm1heGFnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNaW5NYXhBZ2dQYXRoICpiZXN0X3BhdGgp CiB9CiAKIC8qCi0gKiBOYXZPZmZzZXRDb250ZXh0IC0gY29udGV4dCBmb3IgY29tcHV0ZV9uYXZf b2Zmc2V0cyB3YWxrZXIuCisgKiBEZWZpbmVNZXRhZGF0YUNvbnRleHQgLSBjb250ZXh0IGZvciBj b21wdXRlX2RlZmluZV9tZXRhZGF0YSB3YWxrZXIuCiAgKgotICogQ29sbGVjdHMgYm90aCBiYWNr d2FyZCByZWFjaCAoUFJFViwgTEFTVC13aXRoLW9mZnNldCwgY29tcG91bmQKLSAqIFBSRVZfTEFT VC9ORVhUX0xBU1QpIGFuZCBmb3J3YXJkLWZyb20tbWF0Y2gtc3RhcnQgcmVhY2ggKEZJUlNULAot ICogY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNUKSBpbiBhIHNpbmdsZSB0cmVlIHdhbGsu CisgKiBDb2xsZWN0cyB0aHJlZSBwaWVjZXMgb2YgbWV0YWRhdGEgZnJvbSB0aGUgREVGSU5FIGNs YXVzZSBpbiBhIHNpbmdsZQorICogdHJlZSB3YWxrIHBlciB2YXJpYWJsZToKKyAqICAgLSBiYWNr d2FyZCByZWFjaCAoUFJFViwgTEFTVC13aXRoLW9mZnNldCwgY29tcG91bmQgUFJFVl9MQVNUL05F WFRfTEFTVCkKKyAqICAgLSBmb3J3YXJkLWZyb20tbWF0Y2gtc3RhcnQgcmVhY2ggKEZJUlNULCBj b21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QpCisgKiAgIC0gcGVyLXZhcmlhYmxlIG1hdGNo X3N0YXJ0IGRlcGVuZGVuY3kgKHZhcmlhYmxlcyBjb250YWluaW5nIEZJUlNULAorICogICAgIExB U1Qtd2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVC9QUkVWX0xB U1QvCisgKiAgICAgTkVYVF9MQVNULXdpdGgtb2Zmc2V0IHJlcXVpcmUgcGVyLWNvbnRleHQgcmUt ZXZhbHVhdGlvbikKKyAqCisgKiBUaGUgZHJpdmVyIHNldHMgY3VyVmFySWR4IHRvIHRoZSBpbmRl eCBvZiB0aGUgdmFyaWFibGUgYmVpbmcgd2Fsa2VkCisgKiBiZWZvcmUgZWFjaCBpbnZvY2F0aW9u OyB0aGUgd2Fsa2VyIHVzZXMgaXQgdG8gcG9wdWxhdGUgbWF0Y2hTdGFydERlcGVuZGVudC4KICAq LwotdHlwZWRlZiBzdHJ1Y3QgTmF2T2Zmc2V0Q29udGV4dAordHlwZWRlZiBzdHJ1Y3QgRGVmaW5l TWV0YWRhdGFDb250ZXh0CiB7CiAJaW50NjQJCW1heE9mZnNldDsJCS8qIG1heCBQUkVWL0xBU1Qg YmFja3dhcmQgb2Zmc2V0ICg+PSAwKSAqLwogCWJvb2wJCW1heE5lZWRzRXZhbDsJLyogbm9uLWNv bnN0YW50IFBSRVYvTEFTVCBvZmZzZXQgZm91bmQgKi8KQEAgLTI0NzksNyArMjQ4OSwxMCBAQCB0 eXBlZGVmIHN0cnVjdCBOYXZPZmZzZXRDb250ZXh0CiAJCQkJCQkJCSAqIFBSRVZfRklSU1QpICov CiAJYm9vbAkJaGFzRmlyc3Q7CQkvKiBhbnkgRklSU1Qgbm9kZSBmb3VuZCAqLwogCWJvb2wJCWZp cnN0TmVlZHNFdmFsOyAvKiBub24tY29uc3RhbnQgRklSU1Qgb2Zmc2V0IGZvdW5kICovCi19IE5h dk9mZnNldENvbnRleHQ7CisJaW50CQkJY3VyVmFySWR4OwkJLyogREVGSU5FIHZhcmlhYmxlIGN1 cnJlbnRseSBiZWluZyB3YWxrZWQgKi8KKwlCaXRtYXBzZXQgICptYXRjaFN0YXJ0RGVwZW5kZW50 OwkvKiB2YXJpYWJsZXMgdGhhdCBkZXBlbmQgb24KKwkJCQkJCQkJCQkgKiBtYXRjaF9zdGFydCAq LworfSBEZWZpbmVNZXRhZGF0YUNvbnRleHQ7CiAKIC8qCiAgKiBIZWxwZXI6IGV4dHJhY3QgY29u c3RhbnQgb2Zmc2V0IGZyb20gYW4gZXhwcmVzc2lvbiwgaGFuZGxpbmcgTlVMTC9uZWdhdGl2ZS4K QEAgLTI1MTQsMTc1ICsyNTI3LDIwNyBAQCBleHRyYWN0X2NvbnN0X29mZnNldChFeHByICpleHBy LCBpbnQ2NCBkZWZhdWx0T2Zmc2V0LCBpbnQ2NCAqcmVzdWx0KQogfQogCiAvKgotICogbmF2X29m ZnNldF93YWxrZXIKLSAqCQlFeHByZXNzaW9uIHRyZWUgd2Fsa2VyIGZvciBjb21wdXRlX25hdl9v ZmZzZXRzLgorICogdmlzaXRfbmF2X3BsYW4KKyAqCQluYXZfdHJhdmVyc2FsX3dhbGtlciBjYWxs YmFjayAoTmF2VmlzaXRGbikgZm9yIHRoZSBwbGFubmVyIHNpZGUuCisgKgkJQXQgZWFjaCBSUFJO YXZFeHByIGluIGEgREVGSU5FIGV4cHJlc3Npb24sIGNvbXB1dGVzOgorICoKKyAqCQkgIDEuIGJh Y2t3YXJkIHJlYWNoIChtYXhPZmZzZXQpIGZvciB0dXBsZXN0b3JlIHRyaW06CisgKgkJCSAtIFBS RVYodiwgTiksIExBU1QodiwgTikgICAgICAgICAgICAgIOKGkiBOIChkZWZhdWx0IDEpCisgKgkJ CSAtIGNvbXBvdW5kIFBSRVZfTEFTVCh2LCBOLCBNKSAgICAgICAgIOKGkiBOICsgTSAob3ZlcmZs b3cg4oaSIG1heE92ZXJmbG93KQorICoJCQkgLSBjb21wb3VuZCBORVhUX0xBU1QodiwgTiwgTSkg ICAgICAgICDihpIgbWF4KE4gLSBNLCAwKQogICoKLSAqIEZvciBlYWNoIFJQUk5hdkV4cHIgZm91 bmQsIGV4dHJhY3QgaXRzIGNvbnN0YW50IG9mZnNldChzKSBhbmQgdXBkYXRlIHRoZQotICogTmF2 T2Zmc2V0Q29udGV4dCB3aXRoIHRoZSBtYXhpbXVtIGJhY2t3YXJkIHJlYWNoIChtYXhPZmZzZXQp IGFuZCBtaW5pbXVtCi0gKiBmb3J3YXJkIHJlYWNoIChmaXJzdE9mZnNldCkuICBIYW5kbGVzIHNp bXBsZSBuYXZpZ2F0aW9uIChQUkVWLCBORVhULAotICogRklSU1QsIExBU1QpIGFuZCBjb21wb3Vu ZCBmb3JtcyAoUFJFVl9GSVJTVCwgTkVYVF9GSVJTVCwgUFJFVl9MQVNULAotICogTkVYVF9MQVNU KSBieSBjb21iaW5pbmcgaW5uZXIgYW5kIG91dGVyIG9mZnNldHMuCisgKgkJICAyLiBmb3J3YXJk IHJlYWNoIChmaXJzdE9mZnNldCkgZm9yIHR1cGxlc3RvcmUgdHJpbToKKyAqCQkJIC0gRklSU1Qo diwgTikgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIE4gKGRlZmF1bHQgMCkKKyAqCQkJIC0g Y29tcG91bmQgUFJFVl9GSVJTVCh2LCBOLCBNKSAgICAgICAg4oaSIE4gLSBNIChtYXkgYmUgbmVn YXRpdmUpCisgKgkJCSAtIGNvbXBvdW5kIE5FWFRfRklSU1QodiwgTiwgTSkgICAgICAgIOKGkiBO ICsgTQogICoKLSAqIE5vbi1jb25zdGFudCBvZmZzZXRzIHNldCBtYXhOZWVkc0V2YWwgb3IgZmly c3ROZWVkc0V2YWwuICBPdmVyZmxvdyBzZXRzCi0gKiBtYXhPdmVyZmxvdyBvciBmaXJzdE92ZXJm bG93IGZvciBSRVRBSU5fQUxMIGZhbGxiYWNrLgorICoJCSAgMy4gcGVyLXZhcmlhYmxlIG1hdGNo X3N0YXJ0IGRlcGVuZGVuY3kgZm9yIGFic29ycHRpb24gc3VwcHJlc3Npb246CisgKgkJCSBvdXRl ciBuYXYga2luZHMgdGhhdCByZWFjaCBtYXRjaF9zdGFydCAoRklSU1QsIExBU1Qtd2l0aC1vZmZz ZXQsCisgKgkJCSBQUkVWX0ZJUlNULCBORVhUX0ZJUlNULCBQUkVWX0xBU1QvTkVYVF9MQVNULXdp dGgtb2Zmc2V0KSBhZGQKKyAqCQkJIGN1clZhcklkeCB0byBtYXRjaFN0YXJ0RGVwZW5kZW50Lgor ICoKKyAqIENvbnN0YW50IG9mZnNldHMgYXJlIGV4dHJhY3RlZCB2aWEgZXh0cmFjdF9jb25zdF9v ZmZzZXQ7IG5vbi1jb25zdGFudAorICogb2Zmc2V0cyBzZXQgbWF4TmVlZHNFdmFsIC8gZmlyc3RO ZWVkc0V2YWwgc28gdGhlIGV4ZWN1dG9yIGNhbiByZXNvbHZlCisgKiB0aGVtIGF0IGluaXQgdGlt ZSAoc2VlIHZpc2l0X25hdl9leGVjKS4gIENsYXNzaWZpY2F0aW9uIHVzZXMgb25seSB0aGUKKyAq IG91dGVyIG5hdiBraW5kOiBwYXJzZXIgbmVzdGluZyByZXN0cmljdGlvbnMgcHJldmVudCBGSVJT VC9MQVNUIGluc2lkZQorICogYSBQUkVWL05FWFQgdmFsdWUgc3ViZXhwcmVzc2lvbi4KICAqLwot c3RhdGljIGJvb2wKLW5hdl9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmN0eCkKK3N0 YXRpYyB2b2lkCit2aXNpdF9uYXZfcGxhbihOYXZUcmF2ZXJzYWwgKnQsIFJQUk5hdkV4cHIgKm5h dikKIHsKLQlOYXZPZmZzZXRDb250ZXh0ICpjb250ZXh0ID0gKE5hdk9mZnNldENvbnRleHQgKikg Y3R4OworCURlZmluZU1ldGFkYXRhQ29udGV4dCAqY29udGV4dCA9IChEZWZpbmVNZXRhZGF0YUNv bnRleHQgKikgdC0+ZGF0YTsKIAotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsK KwkvKgorCSAqIFBhcnNlciBndWFyYW50ZWU6IGJ5IHRoZSB0aW1lIHRoZSBwbGFubmVyIHNlZXMg YSBERUZJTkUgZXhwcmVzc2lvbiwKKwkgKiBjb21wb3VuZCBuZXN0aW5nIGhhcyBiZWVuIGZsYXR0 ZW5lZCBpbnRvIGEgc2luZ2xlIFJQUk5hdkV4cHIgYW5kIGFueQorCSAqIG90aGVyIFJQUk5hdkV4 cHIgbmVzdGluZyBoYXMgYmVlbiByZWplY3RlZC4gIFNvIG5hdidzIGRpcmVjdCBjaGlsZAorCSAq IGZpZWxkcyBhcmUgbm90IHRoZW1zZWx2ZXMgUlBSTmF2RXhwciBub2RlcywgYW5kIG91dGVyLWtp bmQgZGlzcGF0Y2gKKwkgKiBiZWxvdyBpcyBzdWZmaWNpZW50LgorCSAqLworCUFzc2VydChuYXYt PmFyZyA9PSBOVUxMIHx8ICFJc0EobmF2LT5hcmcsIFJQUk5hdkV4cHIpKTsKKwlBc3NlcnQobmF2 LT5vZmZzZXRfYXJnID09IE5VTEwgfHwgIUlzQShuYXYtPm9mZnNldF9hcmcsIFJQUk5hdkV4cHIp KTsKKwlBc3NlcnQobmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnID09IE5VTEwgfHwKKwkJICAgIUlz QShuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIFJQUk5hdkV4cHIpKTsKIAotCWlmIChJc0Eobm9k ZSwgUlBSTmF2RXhwcikpCisJLyoKKwkgKiBTaW1wbGUgUFJFVih2LCBOKSBhbmQgTEFTVCh2LCBO KTogYmFja3dhcmQgcmVhY2ggZnJvbSBjdXJyZW50cG9zLiBMQVNUCisJICogd2l0aG91dCBvZmZz ZXQgPSBjdXJyZW50cG9zLCBubyBiYWNrd2FyZCByZWFjaC4gTkVYVDogZm9yd2FyZCBvbmx5LAor CSAqIGlycmVsZXZhbnQgZm9yIHRyaW0uCisJICovCisJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFW X1BSRVYgfHwKKwkJKG5hdi0+a2luZCA9PSBSUFJfTkFWX0xBU1QgJiYgbmF2LT5vZmZzZXRfYXJn ICE9IE5VTEwpKQogCXsKLQkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsK LQotCQkvKgotCQkgKiBTaW1wbGUgUFJFVih2LCBOKSBhbmQgTEFTVCh2LCBOKTogYmFja3dhcmQg cmVhY2ggZnJvbSBjdXJyZW50cG9zLgotCQkgKiBMQVNUIHdpdGhvdXQgb2Zmc2V0ID0gY3VycmVu dHBvcywgbm8gYmFja3dhcmQgcmVhY2guIE5FWFQ6IGZvcndhcmQKLQkJICogb25seSwgaXJyZWxl dmFudCBmb3IgdHJpbS4KLQkJICovCi0JCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8 Ci0JCQkobmF2LT5raW5kID09IFJQUl9OQVZfTEFTVCAmJiBuYXYtPm9mZnNldF9hcmcgIT0gTlVM TCkpCisJCWlmICghY29udGV4dC0+bWF4TmVlZHNFdmFsKQogCQl7Ci0JCQlpZiAoIWNvbnRleHQt Pm1heE5lZWRzRXZhbCkKLQkJCXsKLQkJCQlpbnQ2NAkJb2Zmc2V0OworCQkJaW50NjQJCW9mZnNl dDsKIAotCQkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPm9mZnNldF9hcmcsIDEsICZv ZmZzZXQpKQotCQkJCQljb250ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zmc2V0 LCBvZmZzZXQpOwotCQkJCWVsc2UKLQkJCQkJY29udGV4dC0+bWF4TmVlZHNFdmFsID0gdHJ1ZTsK LQkJCX0KKwkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPm9mZnNldF9hcmcsIDEsICZv ZmZzZXQpKQorCQkJCWNvbnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0LT5tYXhPZmZzZXQs IG9mZnNldCk7CisJCQllbHNlCisJCQkJY29udGV4dC0+bWF4TmVlZHNFdmFsID0gdHJ1ZTsKIAkJ fQorCX0KIAotCQkvKgotCQkgKiBTaW1wbGUgRklSU1QodiwgTik6IGZvcndhcmQgcmVhY2ggZnJv bSBtYXRjaF9zdGFydC4gU21hbGxlciBOIG1lYW5zCi0JCSAqIG9sZGVyIHJvd3MgbmVlZGVkLgot CQkgKi8KLQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQotCQl7Ci0JCQljb250ZXh0 LT5oYXNGaXJzdCA9IHRydWU7CisJLyoKKwkgKiBTaW1wbGUgRklSU1QodiwgTik6IGZvcndhcmQg cmVhY2ggZnJvbSBtYXRjaF9zdGFydC4gU21hbGxlciBOIG1lYW5zCisJICogb2xkZXIgcm93cyBu ZWVkZWQuCisJICovCisJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQorCXsKKwkJY29u dGV4dC0+aGFzRmlyc3QgPSB0cnVlOwogCi0JCQlpZiAoIWNvbnRleHQtPmZpcnN0TmVlZHNFdmFs KQotCQkJewotCQkJCWludDY0CQlvZmZzZXQ7CisJCWlmICghY29udGV4dC0+Zmlyc3ROZWVkc0V2 YWwpCisJCXsKKwkJCWludDY0CQlvZmZzZXQ7CiAKLQkJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZz ZXQobmF2LT5vZmZzZXRfYXJnLCAwLCAmb2Zmc2V0KSkKLQkJCQkJY29udGV4dC0+Zmlyc3RPZmZz ZXQgPSBNaW4oY29udGV4dC0+Zmlyc3RPZmZzZXQsIG9mZnNldCk7Ci0JCQkJZWxzZQotCQkJCQlj b250ZXh0LT5maXJzdE5lZWRzRXZhbCA9IHRydWU7Ci0JCQl9CisJCQlpZiAoZXh0cmFjdF9jb25z dF9vZmZzZXQobmF2LT5vZmZzZXRfYXJnLCAwLCAmb2Zmc2V0KSkKKwkJCQljb250ZXh0LT5maXJz dE9mZnNldCA9IE1pbihjb250ZXh0LT5maXJzdE9mZnNldCwgb2Zmc2V0KTsKKwkJCWVsc2UKKwkJ CQljb250ZXh0LT5maXJzdE5lZWRzRXZhbCA9IHRydWU7CiAJCX0KKwl9CiAKLQkJLyoKLQkJICog Q29tcG91bmQgUFJFVl9MQVNUIC8gTkVYVF9MQVNUOiBiYXNlID0gY3VycmVudHBvcy4gUFJFVl9M QVNUKHYsIE4sCi0JCSAqIE0pOiB0YXJnZXQgPSBjdXJyZW50cG9zIC0gTiAtIE0gLT4gbG9va2Jh Y2sgPSBOICsgTSBORVhUX0xBU1QodiwgTiwKLQkJICogTSk6IHRhcmdldCA9IGN1cnJlbnRwb3Mg LSBOICsgTSAtPiBsb29rYmFjayA9IG1heChOIC0gTSwgMCkKLQkJICovCi0JCWlmIChuYXYtPmtp bmQgPT0gUlBSX05BVl9QUkVWX0xBU1QgfHwKLQkJCW5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRf TEFTVCkKKwkvKgorCSAqIENvbXBvdW5kIFBSRVZfTEFTVCAvIE5FWFRfTEFTVDogYmFzZSA9IGN1 cnJlbnRwb3MuIFBSRVZfTEFTVCh2LCBOLCBNKToKKwkgKiB0YXJnZXQgPSBjdXJyZW50cG9zIC0g TiAtIE0gLT4gbG9va2JhY2sgPSBOICsgTSBORVhUX0xBU1QodiwgTiwgTSk6CisJICogdGFyZ2V0 ID0gY3VycmVudHBvcyAtIE4gKyBNIC0+IGxvb2tiYWNrID0gbWF4KE4gLSBNLCAwKQorCSAqLwor CWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xBU1QgfHwKKwkJbmF2LT5raW5kID09IFJQ Ul9OQVZfTkVYVF9MQVNUKQorCXsKKwkJaWYgKCFjb250ZXh0LT5tYXhOZWVkc0V2YWwpCiAJCXsK LQkJCWlmICghY29udGV4dC0+bWF4TmVlZHNFdmFsKQotCQkJewotCQkJCWludDY0CQlpbm5lciwK LQkJCQkJCQlvdXRlciwKLQkJCQkJCQljb21iaW5lZDsKKwkJCWludDY0CQlpbm5lcjsKKwkJCWlu dDY0CQlvdXRlcjsKKwkJCWludDY0CQlyZWFjaDsKIAotCQkJCWlmIChleHRyYWN0X2NvbnN0X29m ZnNldChuYXYtPm9mZnNldF9hcmcsIDAsICZpbm5lcikgJiYKLQkJCQkJZXh0cmFjdF9jb25zdF9v ZmZzZXQobmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnLCAxLCAmb3V0ZXIpKQorCQkJaWYgKGV4dHJh Y3RfY29uc3Rfb2Zmc2V0KG5hdi0+b2Zmc2V0X2FyZywgMCwgJmlubmVyKSAmJgorCQkJCWV4dHJh Y3RfY29uc3Rfb2Zmc2V0KG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSwgJm91dGVyKSkKKwkJ CXsKKwkJCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUKQogCQkJCXsKLQkJCQkJ aWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfTEFTVCkKLQkJCQkJewotCQkJCQkJaWYgKHBn X2FkZF9zNjRfb3ZlcmZsb3coaW5uZXIsIG91dGVyLCAmY29tYmluZWQpKQotCQkJCQkJewotCQkJ CQkJCWNvbnRleHQtPm1heE92ZXJmbG93ID0gdHJ1ZTsKLQkJCQkJCQlyZXR1cm4gZmFsc2U7Ci0J CQkJCQl9Ci0JCQkJCX0KKwkJCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3coaW5uZXIsIG91dGVy LCAmcmVhY2gpKQorCQkJCQkJY29udGV4dC0+bWF4T3ZlcmZsb3cgPSB0cnVlOwogCQkJCQllbHNl Ci0JCQkJCQljb21iaW5lZCA9IChpbm5lciA+IG91dGVyKSA/IGlubmVyIC0gb3V0ZXIgOiAwOwot Ci0JCQkJCWNvbnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0LT5tYXhPZmZzZXQsIGNvbWJp bmVkKTsKKwkJCQkJCWNvbnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0LT5tYXhPZmZzZXQs IHJlYWNoKTsKIAkJCQl9CiAJCQkJZWxzZQotCQkJCQljb250ZXh0LT5tYXhOZWVkc0V2YWwgPSB0 cnVlOworCQkJCXsKKwkJCQkJcmVhY2ggPSBNYXgoaW5uZXIgLSBvdXRlciwgMCk7CisJCQkJCWNv bnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0LT5tYXhPZmZzZXQsIHJlYWNoKTsKKwkJCQl9 CiAJCQl9CisJCQllbHNlCisJCQkJY29udGV4dC0+bWF4TmVlZHNFdmFsID0gdHJ1ZTsKIAkJfQor CX0KIAotCQkvKgotCQkgKiBDb21wb3VuZCBQUkVWX0ZJUlNUIC8gTkVYVF9GSVJTVDogYmFzZSA9 IG1hdGNoX3N0YXJ0LiBQUkVWX0ZJUlNUKHYsCi0JCSAqIE4sIE0pOiB0YXJnZXQgPSBtYXRjaF9z dGFydCArIE4gLSBNIE5FWFRfRklSU1QodiwgTiwgTSk6IHRhcmdldCA9Ci0JCSAqIG1hdGNoX3N0 YXJ0ICsgTiArIE0gVGhlIGNvbWJpbmVkIG9mZnNldCAoTisvLU0pIGZyb20gbWF0Y2hfc3RhcnQK LQkJICogY2FuIGJlIG5lZ2F0aXZlLCBtZWFuaW5nIHJvd3MgYmVmb3JlIG1hdGNoX3N0YXJ0IGFy ZSBuZWVkZWQuCi0JCSAqLwotCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCB8 fAotCQkJbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJTVCkKKwkvKgorCSAqIENvbXBvdW5k IFBSRVZfRklSU1QgLyBORVhUX0ZJUlNUOiBiYXNlID0gbWF0Y2hfc3RhcnQuIFBSRVZfRklSU1Qo diwgTiwKKwkgKiBNKTogdGFyZ2V0ID0gbWF0Y2hfc3RhcnQgKyBOIC0gTSBORVhUX0ZJUlNUKHYs IE4sIE0pOiB0YXJnZXQgPQorCSAqIG1hdGNoX3N0YXJ0ICsgTiArIE0gVGhlIGNvbWJpbmVkIG9m ZnNldCAoTisvLU0pIGZyb20gbWF0Y2hfc3RhcnQgY2FuIGJlCisJICogbmVnYXRpdmUsIG1lYW5p bmcgcm93cyBiZWZvcmUgbWF0Y2hfc3RhcnQgYXJlIG5lZWRlZC4KKwkgKi8KKwlpZiAobmF2LT5r aW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCB8fAorCQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhU X0ZJUlNUKQorCXsKKwkJY29udGV4dC0+aGFzRmlyc3QgPSB0cnVlOworCisJCWlmICghY29udGV4 dC0+Zmlyc3ROZWVkc0V2YWwpCiAJCXsKLQkJCWNvbnRleHQtPmhhc0ZpcnN0ID0gdHJ1ZTsKKwkJ CWludDY0CQlpbm5lcjsKKwkJCWludDY0CQlvdXRlcjsKKwkJCWludDY0CQlyZWFjaDsKIAotCQkJ aWYgKCFjb250ZXh0LT5maXJzdE5lZWRzRXZhbCkKKwkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNl dChuYXYtPm9mZnNldF9hcmcsIDAsICZpbm5lcikgJiYKKwkJCQlleHRyYWN0X2NvbnN0X29mZnNl dChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIDEsICZvdXRlcikpCiAJCQl7Ci0JCQkJaW50NjQJ CWlubmVyLAotCQkJCQkJCW91dGVyLAotCQkJCQkJCWNvbWJpbmVkOwotCi0JCQkJaWYgKGV4dHJh Y3RfY29uc3Rfb2Zmc2V0KG5hdi0+b2Zmc2V0X2FyZywgMCwgJmlubmVyKSAmJgotCQkJCQlleHRy YWN0X2NvbnN0X29mZnNldChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIDEsICZvdXRlcikpCisJ CQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfRklSU1QpCiAJCQkJewotCQkJCQlpZiAo bmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCkKLQkJCQkJewotCQkJCQkJLyoKLQkJCQkJ CSAqIGNvbWJpbmVkID0gaW5uZXIgLSBvdXRlci4gIEJvdGggYXJlIG5vbi1uZWdhdGl2ZSwKLQkJ CQkJCSAqIHNvIHRoZSByZXN1bHQgPj0gLUlOVDY0X01BWCwgd2hpY2ggY2Fubm90IHVuZGVyZmxv dwotCQkJCQkJICogaW50NjQuICBObyBvdmVyZmxvdyBjaGVjayBuZWVkZWQuCi0JCQkJCQkgKi8K LQkJCQkJCWNvbWJpbmVkID0gaW5uZXIgLSBvdXRlcjsKLQkJCQkJfQotCQkJCQllbHNlCi0JCQkJ CXsKLQkJCQkJCS8qCi0JCQkJCQkgKiBORVhUX0ZJUlNUOiBjb21iaW5lZCA9IGlubmVyICsgb3V0 ZXIuICBUaGlzIGNhbgotCQkJCQkJICogb3ZlcmZsb3csIGJ1dCB0aGUgcmVzdWx0IGlzIGFsd2F5 cyA+PSAwLCBzbyBpdAotCQkJCQkJICogbmV2ZXIgdXBkYXRlcyBmaXJzdE9mZnNldCAod2hpY2gg dHJhY2tzIHRoZQotCQkJCQkJICogbWluaW11bSkuICBDbGFtcCB0byBJTlQ2NF9NQVggb24gb3Zl cmZsb3cuCi0JCQkJCQkgKi8KLQkJCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyLCBv dXRlciwgJmNvbWJpbmVkKSkKLQkJCQkJCQljb21iaW5lZCA9IElOVDY0X01BWDsKLQkJCQkJfQot Ci0JCQkJCWNvbnRleHQtPmZpcnN0T2Zmc2V0ID0gTWluKGNvbnRleHQtPmZpcnN0T2Zmc2V0LCBj b21iaW5lZCk7CisJCQkJCS8qCisJCQkJCSAqIHJlYWNoID0gaW5uZXIgLSBvdXRlci4gIEJvdGgg YXJlIG5vbi1uZWdhdGl2ZSwgc28gdGhlCisJCQkJCSAqIHJlc3VsdCA+PSAtSU5UNjRfTUFYLCB3 aGljaCBjYW5ub3QgdW5kZXJmbG93IGludDY0LiBObworCQkJCQkgKiBvdmVyZmxvdyBjaGVjayBu ZWVkZWQuCisJCQkJCSAqLworCQkJCQlyZWFjaCA9IGlubmVyIC0gb3V0ZXI7CiAJCQkJfQogCQkJ CWVsc2UKLQkJCQkJY29udGV4dC0+Zmlyc3ROZWVkc0V2YWwgPSB0cnVlOworCQkJCXsKKwkJCQkJ LyoKKwkJCQkJICogTkVYVF9GSVJTVDogcmVhY2ggPSBpbm5lciArIG91dGVyLiAgVGhpcyBjYW4g b3ZlcmZsb3csCisJCQkJCSAqIGJ1dCB0aGUgcmVzdWx0IGlzIGFsd2F5cyA+PSAwLCBzbyBpdCBu ZXZlciB1cGRhdGVzCisJCQkJCSAqIGZpcnN0T2Zmc2V0ICh3aGljaCB0cmFja3MgdGhlIG1pbmlt dW0pLiAgQ2xhbXAgdG8KKwkJCQkJICogSU5UNjRfTUFYIG9uIG92ZXJmbG93LgorCQkJCQkgKi8K KwkJCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3coaW5uZXIsIG91dGVyLCAmcmVhY2gpKQorCQkJ CQkJcmVhY2ggPSBJTlQ2NF9NQVg7CisJCQkJfQorCisJCQkJY29udGV4dC0+Zmlyc3RPZmZzZXQg PSBNaW4oY29udGV4dC0+Zmlyc3RPZmZzZXQsIHJlYWNoKTsKIAkJCX0KKwkJCWVsc2UKKwkJCQlj b250ZXh0LT5maXJzdE5lZWRzRXZhbCA9IHRydWU7CiAJCX0KLQotCQkvKiBEb24ndCB3YWxrIGlu dG8gUlBSTmF2RXhwciBjaGlsZHJlbiAqLwotCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJu IGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgbmF2X29mZnNldF93YWxrZXIsIGN0eCk7CisJ LyogTWF0Y2gtc3RhcnQgZGVwZW5kZW5jeTogY2xhc3NpZnkgdGhlIG91dGVyIG5hdiBraW5kLiAq LworCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCB8fAorCQkobmF2LT5raW5kID09IFJQ Ul9OQVZfTEFTVCAmJiBuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkgfHwKKwkJbmF2LT5raW5kID09 IFJQUl9OQVZfUFJFVl9GSVJTVCB8fAorCQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0ZJUlNU IHx8CisJCSgobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUIHx8CisJCSAgbmF2LT5raW5k ID09IFJQUl9OQVZfTkVYVF9MQVNUKSAmJgorCQkgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpKQor CQljb250ZXh0LT5tYXRjaFN0YXJ0RGVwZW5kZW50ID0KKwkJCWJtc19hZGRfbWVtYmVyKGNvbnRl eHQtPm1hdGNoU3RhcnREZXBlbmRlbnQsCisJCQkJCQkgICBjb250ZXh0LT5jdXJWYXJJZHgpOwog fQogCiAvKgotICogY29tcHV0ZV9uYXZfb2Zmc2V0cwotICoJCUNvbXB1dGUgbmF2aWdhdGlvbiBv ZmZzZXRzIGZvciB0dXBsZXN0b3JlIHRyaW0gaW4gYSBzaW5nbGUgcGFzcy4KKyAqIGNvbXB1dGVf ZGVmaW5lX21ldGFkYXRhCisgKgkJQ29tcHV0ZSBuYXZpZ2F0aW9uIG9mZnNldHMgYW5kIG1hdGNo X3N0YXJ0IGRlcGVuZGVuY3kgZm9yIHRoZQorICoJCURFRklORSBjbGF1c2UgaW4gYSBzaW5nbGUg cGFzcyBwZXIgdmFyaWFibGUuCiAgKgotICogV2Fsa3MgYWxsIERFRklORSBjbGF1c2UgZXhwcmVz c2lvbnMgb25jZSwgY29tcHV0aW5nOgorICogV2Fsa3MgZWFjaCBERUZJTkUgdmFyaWFibGUgZXhw cmVzc2lvbiBvbmNlLCBjb21wdXRpbmc6CiAgKiAgIC0gbWF4T2Zmc2V0OiBtYXggYmFja3dhcmQg cmVhY2ggZnJvbSBQUkVWLCBMQVNULXdpdGgtb2Zmc2V0LAogICogICAgIGNvbXBvdW5kIFBSRVZf TEFTVC9ORVhUX0xBU1QKICAqICAgLSBoYXNGaXJzdC9maXJzdE9mZnNldDogbWluIGZvcndhcmQt ZnJvbS1tYXRjaC1zdGFydCByZWFjaCBmcm9tCiAgKiAgICAgRklSU1QsIGNvbXBvdW5kIFBSRVZf RklSU1QvTkVYVF9GSVJTVAorICogICAtIG1hdGNoU3RhcnREZXBlbmRlbnQ6IGJpdG1hcHNldCBv ZiB2YXJpYWJsZSBpbmRpY2VzIHdob3NlCisgKiAgICAgZXhwcmVzc2lvbnMgY29udGFpbiBuYXZp Z2F0aW9uIHRoYXQgZGVwZW5kcyBvbiBtYXRjaF9zdGFydAorICogICAgIChGSVJTVCwgTEFTVC13 aXRoLW9mZnNldCwgb3IgY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNULworICogICAgIFBS RVZfTEFTVC9ORVhUX0xBU1Qtd2l0aC1vZmZzZXQpLiAgU3VjaCB2YXJpYWJsZXMgcmVxdWlyZQor ICogICAgIHBlci1jb250ZXh0IHJlLWV2YWx1YXRpb24gZHVyaW5nIE5GQSBwcm9jZXNzaW5nLgog ICovCiBzdGF0aWMgdm9pZAotY29tcHV0ZV9uYXZfb2Zmc2V0cyhMaXN0ICpkZWZpbmVDbGF1c2Us Ci0JCQkJCVJQUk5hdk9mZnNldEtpbmQgKm1heEtpbmQsIGludDY0ICptYXhSZXN1bHQsCi0JCQkJ CWJvb2wgKmhhc0ZpcnN0LAotCQkJCQlSUFJOYXZPZmZzZXRLaW5kICpmaXJzdEtpbmQsIGludDY0 ICpmaXJzdFJlc3VsdCkKK2NvbXB1dGVfZGVmaW5lX21ldGFkYXRhKExpc3QgKmRlZmluZUNsYXVz ZSwKKwkJCQkJCVJQUk5hdk9mZnNldEtpbmQgKm1heEtpbmQsIGludDY0ICptYXhSZXN1bHQsCisJ CQkJCQlib29sICpoYXNGaXJzdCwKKwkJCQkJCVJQUk5hdk9mZnNldEtpbmQgKmZpcnN0S2luZCwg aW50NjQgKmZpcnN0UmVzdWx0LAorCQkJCQkJQml0bWFwc2V0ICoqbWF0Y2hTdGFydERlcGVuZGVu dCkKIHsKLQlOYXZPZmZzZXRDb250ZXh0IGN0eDsKKwlEZWZpbmVNZXRhZGF0YUNvbnRleHQgY3R4 OworCU5hdlRyYXZlcnNhbCB0cmF2OwogCUxpc3RDZWxsICAgKmxjOwogCiAJY3R4Lm1heE9mZnNl dCA9IDA7CkBAIC0yNjkxLDE0ICsyNzM2LDIyIEBAIGNvbXB1dGVfbmF2X29mZnNldHMoTGlzdCAq ZGVmaW5lQ2xhdXNlLAogCWN0eC5maXJzdE9mZnNldCA9IElOVDY0X01BWDsJLyogc2VudGluZWw6 IG5vIEZJUlNUIGZvdW5kIHlldCAqLwogCWN0eC5oYXNGaXJzdCA9IGZhbHNlOwogCWN0eC5maXJz dE5lZWRzRXZhbCA9IGZhbHNlOworCWN0eC5jdXJWYXJJZHggPSAwOworCWN0eC5tYXRjaFN0YXJ0 RGVwZW5kZW50ID0gTlVMTDsKKworCXRyYXYudmlzaXQgPSB2aXNpdF9uYXZfcGxhbjsKKwl0cmF2 LmRhdGEgPSAmY3R4OwogCiAJZm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQogCXsKIAkJVGFyZ2V0 RW50cnkgKnRlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CiAKLQkJbmF2X29mZnNldF93 YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsICZjdHgpOworCQluYXZfdHJhdmVyc2FsX3dhbGtlcigo Tm9kZSAqKSB0ZS0+ZXhwciwgJnRyYXYpOworCQljdHguY3VyVmFySWR4Kys7CiAJfQogCisJKm1h dGNoU3RhcnREZXBlbmRlbnQgPSBjdHgubWF0Y2hTdGFydERlcGVuZGVudDsKKwogCS8qIE1heCBi YWNrd2FyZCBvZmZzZXQgKi8KIAlpZiAoY3R4Lm1heE92ZXJmbG93KQogCXsKQEAgLTI3MjUsMTUg KzI3NzgsMTEgQEAgY29tcHV0ZV9uYXZfb2Zmc2V0cyhMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkq Zmlyc3RLaW5kID0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTDsKIAkJCSpmaXJzdFJlc3VsdCA9 IDA7CiAJCX0KLQkJZWxzZSBpZiAoY3R4LmZpcnN0T2Zmc2V0ID09IElOVDY0X01BWCkKLQkJewot CQkJKmZpcnN0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOwotCQkJKmZpcnN0UmVzdWx0ID0g MDsJLyogb25seSBpbXBsaWNpdCBGSVJTVCh2KSAqLwotCQl9CiAJCWVsc2UKIAkJewogCQkJKmZp cnN0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOwotCQkJKmZpcnN0UmVzdWx0ID0gY3R4LmZp cnN0T2Zmc2V0OyAvKiBtYXkgYmUgbmVnYXRpdmUgKi8KKwkJCSpmaXJzdFJlc3VsdCA9IGN0eC5m aXJzdE9mZnNldDsgLyogbWF5IGJlIG5lZ2F0aXZlOyBJTlQ2NF9NQVggaWYKKwkJCQkJCQkJCQkJ ICogb3ZlcmZsb3dlZCAqLwogCQl9CiAJfQogCWVsc2UKQEAgLTI3NDMsODMgKzI3OTIsNiBAQCBj b21wdXRlX25hdl9vZmZzZXRzKExpc3QgKmRlZmluZUNsYXVzZSwKIAl9CiB9CiAKLS8qCi0gKiBo YXNfbWF0Y2hfc3RhcnRfZGVwZW5kZW5jeQotICoJCUNoZWNrIGlmIGFuIGV4cHJlc3Npb24gdHJl ZSBjb250YWlucyBuYXZpZ2F0aW9uIHRoYXQgZGVwZW5kcyBvbgotICoJCW1hdGNoX3N0YXJ0OiBG SVJTVCwgTEFTVC13aXRoLW9mZnNldCwgb3IgY29tcG91bmQgUFJFVl9GSVJTVC8KLSAqCQlORVhU X0ZJUlNUL1BSRVZfTEFTVC9ORVhUX0xBU1Qgd2l0aCBvZmZzZXQuICBTdWNoIGV4cHJlc3Npb25z Ci0gKgkJcmVxdWlyZSBwZXItY29udGV4dCByZS1ldmFsdWF0aW9uIGR1cmluZyBORkEgcHJvY2Vz c2luZy4KLSAqCi0gKiBMQVNUIHdpdGhvdXQgb2Zmc2V0IGFsd2F5cyByZXNvbHZlcyB0byBjdXJy ZW50cG9zIGFuZCBpcwotICogbWF0Y2hfc3RhcnQtaW5kZXBlbmRlbnQuCi0gKi8KLXN0YXRpYyBi b29sCi1oYXNfbWF0Y2hfc3RhcnRfZGVwZW5kZW5jeShOb2RlICpub2RlLCB2b2lkICpjb250ZXh0 KQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmIChJc0Eobm9k ZSwgUlBSTmF2RXhwcikpCi0JewotCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBu b2RlOwotCi0JCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKLQkJCXJldHVybiB0cnVl OwotCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfTEFTVCAmJiBuYXYtPm9mZnNldF9hcmcgIT0g TlVMTCkKLQkJCXJldHVybiB0cnVlOwotCi0JCS8qIENvbXBvdW5kIGtpbmRzIHdpdGggRklSU1Qg YmFzZSBkZXBlbmQgb24gbWF0Y2hfc3RhcnQgKi8KLQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFW X1BSRVZfRklSU1QgfHwKLQkJCW5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfRklSU1QpCi0JCQly ZXR1cm4gdHJ1ZTsKLQotCQkvKgotCQkgKiBQUkVWX0xBU1QvTkVYVF9MQVNUOiBpbm5lciBpcyBM QVNULCB3aGljaCB1c2VzIGN1cnJlbnRwb3MuCi0JCSAqIG1hdGNoX3N0YXJ0LWRlcGVuZGVudCBv bmx5IGlmIGlubmVyIGhhcyBvZmZzZXQgKGNsYW1wZWQgdG8KLQkJICogbWF0Y2hfc3RhcnQpLgot CQkgKi8KLQkJaWYgKChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xBU1QgfHwKLQkJCSBuYXYt PmtpbmQgPT0gUlBSX05BVl9ORVhUX0xBU1QpICYmCi0JCQluYXYtPm9mZnNldF9hcmcgIT0gTlVM TCkKLQkJCXJldHVybiB0cnVlOwotCi0JCS8qIENoZWNrIGNoaWxkcmVuIChhcmcgbWF5IGNvbnRh aW4gZnVydGhlciBuYXYgZXhwcmVzc2lvbnMpICovCi0JCXJldHVybiBoYXNfbWF0Y2hfc3RhcnRf ZGVwZW5kZW5jeSgoTm9kZSAqKSBuYXYtPmFyZywgY29udGV4dCk7Ci0JfQotCi0JcmV0dXJuIGV4 cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgaGFzX21hdGNoX3N0YXJ0X2RlcGVuZGVuY3ksIE5V TEwpOwotfQotCi0vKgotICogY29tcHV0ZV9tYXRjaF9zdGFydF9kZXBlbmRlbnQKLSAqCQlCdWls ZCBhIEJpdG1hcHNldCBvZiBERUZJTkUgdmFyaWFibGUgaW5kaWNlcyB3aG9zZSBleHByZXNzaW9u cwotICoJCWRlcGVuZCBvbiBtYXRjaF9zdGFydCAoY29udGFpbiBGSVJTVCwgTEFTVC13aXRoLW9m ZnNldCwgb3IKLSAqCQljb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QvUFJFVl9MQVNUL05F WFRfTEFTVCB3aXRoIG9mZnNldCkuCi0gKgotICogVmFyaWFibGVzIGluIHRoaXMgc2V0IHJlcXVp cmUgcGVyLWNvbnRleHQgcmUtZXZhbHVhdGlvbiBkdXJpbmcgTkZBCi0gKiBwcm9jZXNzaW5nLCBi ZWNhdXNlIGRpZmZlcmVudCBjb250ZXh0cyBtYXkgaGF2ZSBkaWZmZXJlbnQgbWF0Y2hfc3RhcnQK LSAqIHZhbHVlcy4KLSAqLwotc3RhdGljIEJpdG1hcHNldCAqCi1jb21wdXRlX21hdGNoX3N0YXJ0 X2RlcGVuZGVudChMaXN0ICpkZWZpbmVDbGF1c2UpCi17Ci0JQml0bWFwc2V0ICAqcmVzdWx0ID0g TlVMTDsKLQlMaXN0Q2VsbCAgICpsYzsKLQlpbnQJCQl2YXJJZHggPSAwOwotCi0JZm9yZWFjaChs YywgZGVmaW5lQ2xhdXNlKQotCXsKLQkJVGFyZ2V0RW50cnkgKnRlID0gKFRhcmdldEVudHJ5ICop IGxmaXJzdChsYyk7Ci0KLQkJaWYgKGhhc19tYXRjaF9zdGFydF9kZXBlbmRlbmN5KChOb2RlICop IHRlLT5leHByLCBOVUxMKSkKLQkJCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgdmFy SWR4KTsKLQotCQl2YXJJZHgrKzsKLQl9Ci0KLQlyZXR1cm4gcmVzdWx0OwotfQotCiAvKgogICog Y3JlYXRlX3dpbmRvd2FnZ19wbGFuCiAgKgpAQCAtMjg0OCw2ICsyODIwLDExIEBAIGNyZWF0ZV93 aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRo KQogCUxpc3QJICAgKmZpbHRlcmVkRGVmaW5lQ2xhdXNlID0gTklMOwogCVJQUlBhdHRlcm4gKmNv bXBpbGVkUGF0dGVybiA9IE5VTEw7CiAJQml0bWFwc2V0ICAqbWF0Y2hTdGFydERlcGVuZGVudCA9 IE5VTEw7CisJUlBSTmF2T2Zmc2V0S2luZCBuYXZNYXhPZmZzZXRLaW5kID0gUlBSX05BVl9PRkZT RVRfRklYRUQ7CisJaW50NjQJCW5hdk1heE9mZnNldCA9IDA7CisJYm9vbAkJaGFzRmlyc3ROYXYg PSBmYWxzZTsKKwlSUFJOYXZPZmZzZXRLaW5kIG5hdkZpcnN0T2Zmc2V0S2luZCA9IFJQUl9OQVZf T0ZGU0VUX0ZJWEVEOworCWludDY0CQluYXZGaXJzdE9mZnNldCA9IDA7CiAKIAogCS8qCkBAIC0y OTEwLDggKzI4ODcsMTYgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCWJ1aWxkRGVmaW5lVmFyaWFibGVMaXN0KHdj LT5kZWZpbmVDbGF1c2UsICZkZWZpbmVWYXJpYWJsZUxpc3QpOwogCQlmaWx0ZXJlZERlZmluZUNs YXVzZSA9IHdjLT5kZWZpbmVDbGF1c2U7CiAKLQkJLyogSWRlbnRpZnkgbWF0Y2hfc3RhcnQtZGVw ZW5kZW50IERFRklORSB2YXJpYWJsZXMgKi8KLQkJbWF0Y2hTdGFydERlcGVuZGVudCA9IGNvbXB1 dGVfbWF0Y2hfc3RhcnRfZGVwZW5kZW50KHdjLT5kZWZpbmVDbGF1c2UpOworCQkvKgorCQkgKiBX YWxrIERFRklORSBvbmNlOiBjb2xsZWN0IG5hdiBvZmZzZXRzIChmb3IgdHVwbGVzdG9yZSB0cmlt KSBhbmQgdGhlCisJCSAqIGJpdG1hcHNldCBvZiBtYXRjaF9zdGFydC1kZXBlbmRlbnQgdmFyaWFi bGVzIChmb3IgYWJzb3JwdGlvbgorCQkgKiBzdXBwcmVzc2lvbiBpbiBidWlsZFJQUlBhdHRlcm4p LgorCQkgKi8KKwkJY29tcHV0ZV9kZWZpbmVfbWV0YWRhdGEod2MtPmRlZmluZUNsYXVzZSwKKwkJ CQkJCQkJJm5hdk1heE9mZnNldEtpbmQsICZuYXZNYXhPZmZzZXQsCisJCQkJCQkJCSZoYXNGaXJz dE5hdiwKKwkJCQkJCQkJJm5hdkZpcnN0T2Zmc2V0S2luZCwgJm5hdkZpcnN0T2Zmc2V0LAorCQkJ CQkJCQkmbWF0Y2hTdGFydERlcGVuZGVudCk7CiAKIAkJLyogQ29tcGlsZSBhbmQgb3B0aW1pemUg UlBSIHBhdHRlcm5zICovCiAJCWNvbXBpbGVkUGF0dGVybiA9IGJ1aWxkUlBSUGF0dGVybih3Yy0+ cnBQYXR0ZXJuLApAQCAtMjkzNyw2ICsyOTIyLDkgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBs YW5uZXJJbmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkgIGNvbXBp bGVkUGF0dGVybiwKIAkJCQkJCSAgZmlsdGVyZWREZWZpbmVDbGF1c2UsCiAJCQkJCQkgIG1hdGNo U3RhcnREZXBlbmRlbnQsCisJCQkJCQkgIG5hdk1heE9mZnNldEtpbmQsIG5hdk1heE9mZnNldCwK KwkJCQkJCSAgaGFzRmlyc3ROYXYsCisJCQkJCQkgIG5hdkZpcnN0T2Zmc2V0S2luZCwgbmF2Rmly c3RPZmZzZXQsCiAJCQkJCQkgIGJlc3RfcGF0aC0+cXVhbCwKIAkJCQkJCSAgYmVzdF9wYXRoLT50 b3B3aW5kb3csCiAJCQkJCQkgIHN1YnBsYW4pOwpAQCAtNzAxMSw2ICs2OTk5LDkgQEAgbWFrZV93 aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVzZSAqd2MsCiAJCQkgICBSUFJQYXR0ZXJu ICpjb21waWxlZFBhdHRlcm4sCiAJCQkgICBMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkgICBCaXRt YXBzZXQgKmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQsCisJCQkgICBSUFJOYXZPZmZzZXRLaW5k IG5hdk1heE9mZnNldEtpbmQsIGludDY0IG5hdk1heE9mZnNldCwKKwkJCSAgIGJvb2wgaGFzRmly c3ROYXYsCisJCQkgICBSUFJOYXZPZmZzZXRLaW5kIG5hdkZpcnN0T2Zmc2V0S2luZCwgaW50NjQg bmF2Rmlyc3RPZmZzZXQsCiAJCQkgICBMaXN0ICpxdWFsLCBib29sIHRvcFdpbmRvdywgUGxhbiAq bGVmdHRyZWUpCiB7CiAJV2luZG93QWdnICAqbm9kZSA9IG1ha2VOb2RlKFdpbmRvd0FnZyk7CkBA IC03MDQ4LDExICs3MDM5LDEyIEBAIG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dD bGF1c2UgKndjLAogCS8qIFN0b3JlIHByZS1jb21wdXRlZCBtYXRjaF9zdGFydCBkZXBlbmRlbmN5 IGJpdG1hcHNldCAqLwogCW5vZGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQgPSBkZWZpbmVN YXRjaFN0YXJ0RGVwZW5kZW50OwogCi0JLyogQ29tcHV0ZSBuYXYgb2Zmc2V0cyBmb3IgdHVwbGVz dG9yZSB0cmltIG9wdGltaXphdGlvbiAqLwotCWNvbXB1dGVfbmF2X29mZnNldHMoZGVmaW5lQ2xh dXNlLAotCQkJCQkJJm5vZGUtPm5hdk1heE9mZnNldEtpbmQsICZub2RlLT5uYXZNYXhPZmZzZXQs Ci0JCQkJCQkmbm9kZS0+aGFzRmlyc3ROYXYsCi0JCQkJCQkmbm9kZS0+bmF2Rmlyc3RPZmZzZXRL aW5kLCAmbm9kZS0+bmF2Rmlyc3RPZmZzZXQpOworCS8qIFN0b3JlIHByZS1jb21wdXRlZCBuYXYg b2Zmc2V0cyBmb3IgdHVwbGVzdG9yZSB0cmltIG9wdGltaXphdGlvbiAqLworCW5vZGUtPm5hdk1h eE9mZnNldEtpbmQgPSBuYXZNYXhPZmZzZXRLaW5kOworCW5vZGUtPm5hdk1heE9mZnNldCA9IG5h dk1heE9mZnNldDsKKwlub2RlLT5oYXNGaXJzdE5hdiA9IGhhc0ZpcnN0TmF2OworCW5vZGUtPm5h dkZpcnN0T2Zmc2V0S2luZCA9IG5hdkZpcnN0T2Zmc2V0S2luZDsKKwlub2RlLT5uYXZGaXJzdE9m ZnNldCA9IG5hdkZpcnN0T2Zmc2V0OwogCiAJcGxhbi0+dGFyZ2V0bGlzdCA9IHRsaXN0OwogCXBs YW4tPmxlZnR0cmVlID0gbGVmdHRyZWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9ycHIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCmluZGV4IDI1 NDMxNzBjMzc0Li5hODE3ZWI0YTYzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTQx LDYgKzQxLDcgQEAKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9ycHIuaCIKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBwYXR0ZXJuIGNvbXBhcmlz b24gKi8KQEAgLTE5OTEsMyArMTk5MiwzNiBAQCBidWlsZFJQUlBhdHRlcm4oUlBSUGF0dGVybk5v ZGUgKnBhdHRlcm4sIExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwKIAogCXJldHVybiByZXN1bHQ7 CiB9CisKKy8qCisgKiBuYXZfdHJhdmVyc2FsX3dhbGtlcgorICoJCVNoYXJlZCBleHByZXNzaW9u LXRyZWUgd2Fsa2VyIHRoYXQgbG9jYXRlcyBSUFJOYXZFeHByIG5vZGVzIGluIGEKKyAqCQlERUZJ TkUgZXhwcmVzc2lvbiBhbmQgZGlzcGF0Y2hlcyBlYWNoIG9uZSB0byBhIGNhbGxlci1zdXBwbGll ZAorICoJCXZpc2l0b3IuICBVc2VkIGJ5OgorICoJCSAgLSBwbGFubmVyICh2aXNpdF9uYXZfcGxh biBpbiBjcmVhdGVwbGFuLmMpIHRvIGNvbGxlY3QgdHVwbGVzdG9yZQorICoJCSAgICB0cmltIG9m ZnNldHMgYW5kIHBlci12YXJpYWJsZSBtYXRjaF9zdGFydCBkZXBlbmRlbmN5CisgKgkJICAtIGV4 ZWN1dG9yICh2aXNpdF9uYXZfZXhlYyBpbiBub2RlV2luZG93QWdnLmMpIHRvIGV2YWx1YXRlCisg KgkJICAgIG5vbi1jb25zdGFudCBuYXYgb2Zmc2V0cyBhdCBXaW5kb3dBZ2dTdGF0ZSBpbml0IHRp bWUKKyAqCisgKiBUaGUgZHJpdmVyIHdyYXBzIGEgbW9kZS1zcGVjaWZpYyBjb250ZXh0IGluIGEg TmF2VHJhdmVyc2FsIGFuZCBwYXNzZXMKKyAqIGl0IGFzIGN0eDsgdGhlIHZpc2l0b3IgY2FzdHMg dC0+ZGF0YSB0byBpdHMgb3duIGNvbnRleHQgdHlwZS4gIENoaWxkcmVuCisgKiBvZiBhbiBSUFJO YXZFeHByIGFyZSBub3Qgd2Fsa2VkOiB0aGUgcGFyc2VyJ3MgbmVzdGluZyByZXN0cmljdGlvbnMK KyAqIGVuc3VyZSBvZmZzZXRzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGZ1bGx5IGNhcHR1cmVkIGJ5 IHRoZSBvdXRlciBuYXYKKyAqIGtpbmQsIHNvIHRoZSB2aXNpdG9yIG9ubHkgbmVlZHMgdG8gaW5z cGVjdCB0aGUgUlBSTmF2RXhwciBpdHNlbGYuCisgKi8KK2Jvb2wKK25hdl90cmF2ZXJzYWxfd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmN0eCkKK3sKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1 cm4gZmFsc2U7CisKKwlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQorCXsKKwkJTmF2VHJhdmVy c2FsICp0ID0gKE5hdlRyYXZlcnNhbCAqKSBjdHg7CisKKwkJdC0+dmlzaXQodCwgKFJQUk5hdkV4 cHIgKikgbm9kZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90 cmVlX3dhbGtlcihub2RlLCBuYXZfdHJhdmVyc2FsX3dhbGtlciwgY3R4KTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ycHIuYwppbmRleCBmNTZiN2RiNWJjOC4uMzI3MDFmOWI3NGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcnByLmMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAg LTM1LDE0ICszNiwzMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX3Jwci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKworLyogREVGSU5FIGNsYXVzZSB3YWxrZXIg Y29udGV4dCAtLSBzZWUgZGVmaW5lX3dhbGtlciBmb3IgdXNhZ2UuICovCit0eXBlZGVmIGVudW0K K3sKKwlERUZJTkVfUEhBU0VfQk9EWSwJCQkvKiB0b3AtbGV2ZWwgREVGSU5FIGV4cHJlc3Npb24g Ki8KKwlERUZJTkVfUEhBU0VfTkFWX0FSRywJCS8qIGluc2lkZSBhbiBvdXRlciBuYXYncyBhcmcg c3VidHJlZSAqLworCURFRklORV9QSEFTRV9OQVZfT0ZGU0VULAkvKiBpbnNpZGUgYW4gb3V0ZXIg bmF2J3Mgb2Zmc2V0X2FyZyAvCisJCQkJCQkJCSAqIGNvbXBvdW5kX29mZnNldF9hcmcgKi8KK30g RGVmaW5lUGhhc2U7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJUGFyc2VTdGF0ZSAqcHN0YXRlOwor CURlZmluZVBoYXNlIHBoYXNlOworCWludAkJCW5hdl9jb3VudDsJCS8qIFJQUk5hdkV4cHIgbm9k ZXMgc2VlbiBpbiBjdXJyZW50IG5hdi5hcmcgKi8KKwlib29sCQloYXNfY29sdW1uX3JlZjsgLyog VmFyIHNlZW4gaW4gY3VycmVudCBuYXYgc2NvcGUgKi8KKwlSUFJOYXZLaW5kCWlubmVyX2tpbmQ7 CQkvKiBraW5kIG9mIGZpcnN0IG5lc3RlZCBuYXYgaW4gY3VycmVudCBhcmcgKi8KK30gRGVmaW5l V2Fsa0N0eDsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyB2b2lkIHZhbGlk YXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUg Km5vZGUsCiAJCQkJCQkJCQkgICBMaXN0ICpycERlZnMsIExpc3QgKip2YXJOYW1lcyk7CiBzdGF0 aWMgTGlzdCAqdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93 Q2xhdXNlICp3YywKIAkJCQkJCQkJICAgV2luZG93RGVmICp3aW5kZWYsIExpc3QgKip0YXJnZXRs aXN0KTsKLXN0YXRpYyB2b2lkIGNoZWNrX3Jwcl9uYXZfZXhwcihSUFJOYXZFeHByICpuYXYsIFBh cnNlU3RhdGUgKnBzdGF0ZSk7Ci1zdGF0aWMgYm9vbCBjaGVja19ycHJfbmF2X25lc3Rpbmdfd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOworc3RhdGljIGJvb2wgZGVmaW5lX3dhbGtl cihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIG5hdl92b2xhdGlsZV9m dW5jX2NoZWNrZXIoT2lkIGZ1bmNpZCwgdm9pZCAqY29udGV4dCk7CiAKIC8qCiAgKiB0cmFuc2Zv cm1SUFIKQEAgLTQxMiw5ICs0MzIsMjIgQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAJZm9yZWFj aF9wdHIoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCiAJCXRlLT5leHByID0gKEV4cHIg KikgY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCAoTm9kZSAqKSB0ZS0+ZXhwciwgIkRFRklORSIp OwogCi0JLyogY2hlY2sgZm9yIG5lc3RlZCBQUkVWL05FWFQgYW5kIG1pc3NpbmcgY29sdW1uIHJl ZmVyZW5jZXMgKi8KKwkvKgorCSAqIFZhbGlkYXRlIERFRklORSBleHByZXNzaW9uczogbmVzdGVk IFBSRVYvTkVYVCwgY29sdW1uIHJlZmVyZW5jZXMsCisJICogY29tcG91bmQgZmxhdHRlbiwgdm9s YXRpbGUgY2FsbGVlcyAtLSBhbGwgaW4gYSBzaW5nbGUgd2FsayBwZXIKKwkgKiB2YXJpYWJsZS4K KwkgKi8KIAlmb3JlYWNoX3B0cihUYXJnZXRFbnRyeSwgdGUsIGRlZmluZUNsYXVzZSkKLQkJKHZv aWQpIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsIHBzdGF0 ZSk7CisJeworCQlEZWZpbmVXYWxrQ3R4IGN0eDsKKworCQljdHgucHN0YXRlID0gcHN0YXRlOwor CQljdHgucGhhc2UgPSBERUZJTkVfUEhBU0VfQk9EWTsKKwkJY3R4Lm5hdl9jb3VudCA9IDA7CisJ CWN0eC5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQljdHguaW5uZXJfa2luZCA9IDA7CisJCSh2 b2lkKSBkZWZpbmVfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCAmY3R4KTsKKwl9CiAKIAkvKiBt YXJrIGNvbHVtbiBvcmlnaW5zICovCiAJbWFya1RhcmdldExpc3RPcmlnaW5zKHBzdGF0ZSwgZGVm aW5lQ2xhdXNlKTsKQEAgLTQyNiwxNjkgKzQ1OSwyMzkgQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYs CiB9CiAKIC8qCi0gKiBjaGVja19ycHJfbmF2X2V4cHIKLSAqCQlWYWxpZGF0ZSBhIHNpbmdsZSBS UFJOYXZFeHByIG5vZGUgYnkgd2Fsa2luZyBpdHMgYXJnIGFuZCBvZmZzZXRfYXJnCi0gKgkJc3Vi dHJlZXMgaW4gYSBzaW5nbGUgcGFzcyBlYWNoLiAgQ2hlY2sgZm9yIGlsbGVnYWwgbmVzdGluZywg bWlzc2luZwotICoJCWNvbHVtbiByZWZlcmVuY2VzLCBhbmQgbm9uLWNvbnN0YW50IG9mZnNldCBl eHByZXNzaW9ucy4KKyAqIFNpbmdsZS1wYXNzIERFRklORSBjbGF1c2UgdmFsaWRhdG9yLgogICoK LSAqIE5lc3RpbmcgcnVsZXMgKFNRTCBzdGFuZGFyZCA1LjYuNCk6Ci0gKiAgIC0gUFJFVi9ORVhU IHdyYXBwaW5nIEZJUlNUL0xBU1Q6IGFsbG93ZWQgKGNvbXBvdW5kIG5hdmlnYXRpb24pCi0gKiAg IC0gRklSU1QvTEFTVCB3cmFwcGluZyBQUkVWL05FWFQ6IHByb2hpYml0ZWQKLSAqICAgLSBTYW1l LWNhdGVnb3J5IG5lc3RpbmcgKFBSRVYgaW5zaWRlIFBSRVYsIEZJUlNUIGluc2lkZSBGSVJTVCwg ZXRjLik6Ci0gKiAgICAgcHJvaGliaXRlZAorICogT25lIHdhbGtlciBmdW5jdGlvbiAoZGVmaW5l X3dhbGtlcikgdmlzaXRzIGV2ZXJ5IG5vZGUgaW4gYSBERUZJTkUKKyAqIGV4cHJlc3Npb24gZXhh Y3RseSBvbmNlIGFuZCBlbmZvcmNlcyBldmVyeSBydWxlOgorICogICAtIFZvbGF0aWxlIGNhbGxl ZXMgYW5kIE5leHRWYWx1ZUV4cHIgYXJlIHJlamVjdGVkIGF0IHBhcnNlIHRpbWUKKyAqICAgICAo UlBSJ3MgTkZBIG1heSBldmFsdWF0ZSB0aGUgc2FtZSByb3cncyBwcmVkaWNhdGUgbXVsdGlwbGUg dGltZXMKKyAqICAgICBkdXJpbmcgYmFja3RyYWNraW5nLCBzbyBhIHZvbGF0aWxlIHJlc3VsdCB3 b3VsZCBtYWtlIG1hdGNoaW5nCisgKiAgICAgbm9uLWRldGVybWluaXN0aWMpLgorICogICAtIEZv ciBlYWNoIG91dGVyIFJQUk5hdkV4cHIgKHBlciBTUUwgNS42LjQgbmVzdGluZyBydWxlcyk6Cisg KiAgICAgKiBhcmcgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlCisg KiAgICAgKiBQUkVWL05FWFQgd3JhcHBpbmcgRklSU1QvTEFTVCBmbGF0dGVucyB0byBhIGNvbXBv dW5kIGtpbmQKKyAqICAgICAqIE90aGVyIG5lc3RpbmdzIGFyZSByZWplY3RlZCAoRklSU1QoUFJF VigpKSwgUFJFVihQUkVWKCkpLCAuLi4pCisgKiAgICAgKiBvZmZzZXRfYXJnIC8gY29tcG91bmRf b2Zmc2V0X2FyZyBtdXN0IG5vdCBjb250YWluIGNvbHVtbiByZWZzCisgKgorICogVGhlIHdhbGtl ciB1c2VzIGEgcGhhc2UgdGFnIHRvIGtub3cgd2hpY2ggc3VidHJlZSBpdCBpcyBpbjogREVGSU5F CisgKiBib2R5ICh0b3AtbGV2ZWwpLCBpbnNpZGUgYSBuYXYuYXJnLCBvciBpbnNpZGUgYSBuYXYu b2Zmc2V0X2FyZyAvCisgKiBjb21wb3VuZF9vZmZzZXRfYXJnLiAgV2hlbiBlbnRlcmluZyBhbiBv dXRlciBuYXYgKFBIQVNFX0JPRFkpLCBpdAorICogd2Fsa3MgbmF2LmFyZyBpbiBQSEFTRV9OQVZf QVJHIHRvIGNvbGxlY3QgbmVzdGluZy9jb2x1bW4tcmVmIHN0YXRlLAorICogYXBwbGllcyBjb21w b3VuZCBmbGF0dGVuIG9yIHJhaXNlcyBhIG5lc3RpbmcgZXJyb3IsIHRoZW4gd2Fsa3MgdGhlCisg KiAocG9zdC1mbGF0dGVuKSBvZmZzZXQocykgaW4gUEhBU0VfTkFWX09GRlNFVCB0byBlbmZvcmNl IHRoZQorICogY29uc3RhbnQtb2Zmc2V0IHJ1bGUuICBObyBzdWJ0cmVlIGlzIHdhbGtlZCB0d2lj ZS4KICAqLwotdHlwZWRlZiBzdHJ1Y3QKKworLyoKKyAqIG5hdl92b2xhdGlsZV9mdW5jX2NoZWNr ZXIKKyAqCQljaGVja19mdW5jdGlvbnNfaW5fbm9kZSBjYWxsYmFjazogdHJ1ZSBpZiBmdW5jaWQg aXMgVk9MQVRJTEUuCisgKi8KK3N0YXRpYyBib29sCituYXZfdm9sYXRpbGVfZnVuY19jaGVja2Vy KE9pZCBmdW5jaWQsIHZvaWQgKmNvbnRleHQpCiB7Ci0JaW50CQkJbmF2X2NvdW50OwkJLyogbnVt YmVyIG9mIFJQUk5hdkV4cHIgbm9kZXMgZm91bmQgKi8KLQlib29sCQloYXNfY29sdW1uX3JlZjsg LyogVmFyIGZvdW5kICovCi0JUlBSTmF2S2luZAlpbm5lcl9raW5kOwkJLyoga2luZCBvZiBmaXJz dCAob3V0ZXJtb3N0KSBuZXN0ZWQgUlBSTmF2RXhwciAqLwotfSBOYXZDaGVja1Jlc3VsdDsKKwly ZXR1cm4gKGZ1bmNfdm9sYXRpbGUoZnVuY2lkKSA9PSBQUk9WT0xBVElMRV9WT0xBVElMRSk7Cit9 CiAKKy8qCisgKiBkZWZpbmVfd2Fsa2VyCisgKgkJU2luZ2xlLXBhc3MgREVGSU5FIGNsYXVzZSB2 YWxpZGF0b3IuICBBdCBlYWNoIG5vZGUsIGVuZm9yY2VzOgorICoKKyAqCQkgIFsxXSBubyB2b2xh dGlsZSBjYWxsZWVzIChhbmQgbm8gTmV4dFZhbHVlRXhwcikgLS0gYW55d2hlcmUgaW4KKyAqCQkJ ICB0aGUgdHJlZSwgcmVnYXJkbGVzcyBvZiBwaGFzZQorICoJCSAgWzJdIGZvciBlYWNoIG91dGVy IFJQUk5hdkV4cHIgKFBIQVNFX0JPRFkg4oaSIFBIQVNFX05BVl9BUkcpOgorICoJCQkgIC0gbmF2 LmFyZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKKyAqCQkJICAt IFBSRVYvTkVYVCB3cmFwcGluZyBGSVJTVC9MQVNUIGlzIGZsYXR0ZW5lZCBpbiBwbGFjZQorICoJ CQkJdG8gYSBjb21wb3VuZCBraW5kIChQUkVWX0ZJUlNULCBQUkVWX0xBU1QsIE5FWFRfRklSU1Qs CisgKgkJCQlORVhUX0xBU1QpCisgKgkJCSAgLSBhbnkgb3RoZXIgbmVzdGluZyBpcyByZWplY3Rl ZCAoRklSU1QoUFJFVigpKSwKKyAqCQkJCVBSRVYoUFJFVigpKSwgRklSU1QoRklSU1QoKSksIHRo cmVlLW9yLW1vcmUgZGVlcCkKKyAqCQkgIFszXSBmb3IgZWFjaCBuYXYgb2Zmc2V0IChQSEFTRV9O QVZfT0ZGU0VUKToKKyAqCQkJICAtIG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCAobm8gY29s dW1uIHJlZmVyZW5jZXMpCisgKgorICogVmFyIHNpZ2h0aW5ncyBmZWVkIHRoZSBjb2x1bW4tcmVm IHJ1bGUgZm9yIHRoZSBlbmNsb3NpbmcgbmF2IHNjb3BlOworICogUlBSTmF2RXhwciBzaWdodGlu Z3MgaW5zaWRlIFBIQVNFX05BVl9BUkcgZmVlZCB0aGUgbmVzdGluZyBkZWNpc2lvbi4KKyAqIFNl ZSB0aGUgY29tbWVudCBibG9jayBhYm92ZSBEZWZpbmVQaGFzZSBmb3IgdGhlIG92ZXJhbGwgZGVz aWduIGFuZAorICogaG93IGVhY2ggc3VidHJlZSBpcyB3YWxrZWQgZXhhY3RseSBvbmNlLgorICov CiBzdGF0aWMgYm9vbAotbmF2X2NoZWNrX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0 KQorZGVmaW5lX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogewotCU5hdkNoZWNr UmVzdWx0ICpyZXN1bHQgPSAoTmF2Q2hlY2tSZXN1bHQgKikgY29udGV4dDsKKwlEZWZpbmVXYWxr Q3R4ICpjdHggPSAoRGVmaW5lV2Fsa0N0eCAqKSBjb250ZXh0OwogCiAJaWYgKG5vZGUgPT0gTlVM TCkKIAkJcmV0dXJuIGZhbHNlOwotCWlmIChJc0Eobm9kZSwgUlBSTmF2RXhwcikpCi0JewotCQlp ZiAocmVzdWx0LT5uYXZfY291bnQgPT0gMCkKLQkJCXJlc3VsdC0+aW5uZXJfa2luZCA9ICgoUlBS TmF2RXhwciAqKSBub2RlKS0+a2luZDsKLQkJcmVzdWx0LT5uYXZfY291bnQrKzsKLQl9Ci0JaWYg KElzQShub2RlLCBWYXIpKQotCQlyZXN1bHQtPmhhc19jb2x1bW5fcmVmID0gdHJ1ZTsKLQotCXJl dHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl9jaGVja193YWxrZXIsIGNvbnRl eHQpOwotfQogCi1zdGF0aWMgdm9pZAotY2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4cHIgKm5h diwgUGFyc2VTdGF0ZSAqcHN0YXRlKQotewotCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsKLQlib29s CQlvdXRlcl9pc19waHlzaWNhbCA9IChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8Ci0JCQkJ CQkJCQkgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVCk7CisJLyoKKwkgKiBSZWplY3Qgdm9sYXRp bGUgY2FsbGVlcyBhbmQgc2VxdWVuY2Ugb3BlcmF0aW9ucyBhbnl3aGVyZSBpbiB0aGUgREVGSU5F CisJICogY2xhdXNlOiB0aGV5IGFyZSBub24tZGV0ZXJtaW5pc3RpYyBhY3Jvc3MgdGhlIG11bHRp cGxlIHByZWRpY2F0ZQorCSAqIGV2YWx1YXRpb25zIHRoYXQgTkZBIGJhY2t0cmFja2luZyBhbmQg UFJFVi9ORVhUIG5hdmlnYXRpb24gbWF5IHRyaWdnZXIKKwkgKiBmb3IgYSBzaW5nbGUgcm93Lgor CSAqLworCWlmIChjaGVja19mdW5jdGlvbnNfaW5fbm9kZShub2RlLCBuYXZfdm9sYXRpbGVfZnVu Y19jaGVja2VyLCBOVUxMKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidm9sYXRpbGUgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKG5vZGUpKSkpOworCWlmIChJc0Eobm9kZSwg TmV4dFZhbHVlRXhwcikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coInNlcXVlbmNlIG9wZXJhdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKSk7CiAKLQkvKiBDaGVjayBhcmcg c3VidHJlZTogbmVzdGluZyArIGNvbHVtbiByZWZlcmVuY2UgaW4gb25lIHdhbGsgKi8KLQltZW1z ZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwotCSh2b2lkKSBuYXZfY2hlY2tfd2Fsa2Vy KChOb2RlICopIG5hdi0+YXJnLCAmcmVzdWx0KTsKKwkvKiBWYXIgc2lnaHRpbmcgZmVlZHMgdGhl IGNvbHVtbi1yZWYgcnVsZSBmb3IgdGhlIGVuY2xvc2luZyBuYXYgc2NvcGUuICovCisJaWYgKElz QShub2RlLCBWYXIpICYmCisJCShjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfQVJHIHx8 CisJCSBjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VUKSkKKwkJY3R4LT5oYXNf Y29sdW1uX3JlZiA9IHRydWU7CiAKLQlpZiAocmVzdWx0Lm5hdl9jb3VudCA+IDApCisJaWYgKElz QShub2RlLCBSUFJOYXZFeHByKSkKIAl7Ci0JCWJvb2wJCWlubmVyX2lzX3BoeXNpY2FsID0gKHJl c3VsdC5pbm5lcl9raW5kID09IFJQUl9OQVZfUFJFViB8fAotCQkJCQkJCQkJCSByZXN1bHQuaW5u ZXJfa2luZCA9PSBSUFJfTkFWX05FWFQpOworCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhw ciAqKSBub2RlOwogCi0JCWlmIChvdXRlcl9pc19waHlzaWNhbCAmJiAhaW5uZXJfaXNfcGh5c2lj YWwpCisJCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfQVJHKQogCQl7CiAJCQkv KgotCQkJICogUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1Q6IGNvbXBvdW5kIG5hdmlnYXRp b24gcGVyIFNRTAotCQkJICogc3RhbmRhcmQgNS42LjQuICBGbGF0dGVuIHRoZSBuZXN0ZWQgUlBS TmF2RXhwciBpbnRvIGEgc2luZ2xlCi0JCQkgKiBjb21wb3VuZCBub2RlLiAgVGhlIGlubmVyIFJQ Uk5hdkV4cHIgbXVzdCBiZSB0aGUgZGlyZWN0IGFyZyBvZgotCQkJICogdGhlIG91dGVyOyBleHBy ZXNzaW9ucyBsaWtlIFBSRVYodmFsICsgRklSU1QodikpIGFyZSBub3QgdmFsaWQKLQkJCSAqIGNv bXBvdW5kIG5hdmlnYXRpb24uCisJCQkgKiBOZXN0ZWQgbmF2IGluc2lkZSBhbiBvdXRlciBuYXYu YXJnOiByZWNvcmQgZm9yIHRoZSBvdXRlcidzCisJCQkgKiBjb21wb3VuZCAvIG5lc3RpbmcgZGVj aXNpb24sIHRoZW4ga2VlcCByZWN1cnNpbmcgc28gZGVlcGVyIFZhcnMKKwkJCSAqIGFuZCB2b2xh dGlsZSBjYWxsZWVzIGFyZSBzdGlsbCBvYnNlcnZlZC4KIAkJCSAqLwotCQkJUlBSTmF2RXhwciAq aW5uZXI7Ci0KLQkJCS8qIFJlamVjdCB0cmlwbGUtb3ItZGVlcGVyIG5lc3RpbmcgKGUuZy4gUFJF VihGSVJTVChQUkVWKHgpKSkpICovCi0JCQlpZiAocmVzdWx0Lm5hdl9jb3VudCA+IDEpCi0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJ CQkJCSBlcnJtc2coImNhbm5vdCBuZXN0IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gbW9yZSB0aGFu IHR3byBsZXZlbHMgZGVlcCIpLAotCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwg UFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZv cm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5h di0+bG9jYXRpb24pKSk7Ci0KLQkJCWlmICghSXNBKG5hdi0+YXJnLCBSUFJOYXZFeHByKSkKLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAot CQkJCQkJIGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBiZSBh IGRpcmVjdCBhcmd1bWVudCBvZiB0aGUgb3V0ZXIgbmF2aWdhdGlvbiIpLAotCQkJCQkJIGVycmhp bnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQg TkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7Ci0JCQlpbm5lciA9IChSUFJO YXZFeHByICopIG5hdi0+YXJnOwotCi0JCQkvKiBEZXRlcm1pbmUgY29tcG91bmQga2luZCAqLwot CQkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05B Vl9GSVJTVCkKLQkJCQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfRklSU1Q7Ci0JCQllbHNlIGlm IChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFT VCkKLQkJCQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfTEFTVDsKLQkJCWVsc2UgaWYgKG5hdi0+ a2luZCA9PSBSUFJfTkFWX05FWFQgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKLQkJ CQluYXYtPmtpbmQgPSBSUFJfTkFWX05FWFRfRklSU1Q7Ci0JCQllbHNlIGlmIChuYXYtPmtpbmQg PT0gUlBSX05BVl9ORVhUICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKLQkJCQluYXYt PmtpbmQgPSBSUFJfTkFWX05FWFRfTEFTVDsKLQotCQkJLyogTW92ZSBvdXRlciBvZmZzZXQgdG8g Y29tcG91bmRfb2Zmc2V0X2FyZyAqLwotCQkJbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnID0gbmF2 LT5vZmZzZXRfYXJnOwotCi0JCQkvKiBNb3ZlIGlubmVyIG9mZnNldCBhbmQgYXJnIHVwICovCi0J CQluYXYtPm9mZnNldF9hcmcgPSBpbm5lci0+b2Zmc2V0X2FyZzsKLQkJCW5hdi0+YXJnID0gaW5u ZXItPmFyZzsKLQotCQkJLyogTm8gZnVydGhlciBuZXN0aW5nIGNoZWNrIG5lZWRlZCAtIGFscmVh ZHkgdmFsaWRhdGVkICovCi0JCQlyZXR1cm47Ci0JCX0KLQkJZWxzZSBpZiAoIW91dGVyX2lzX3Bo eXNpY2FsICYmIGlubmVyX2lzX3BoeXNpY2FsKQotCQl7Ci0JCQkvKiBGSVJTVC9MQVNUIHdyYXBw aW5nIFBSRVYvTkVYVDogcHJvaGliaXRlZCBieSBzdGFuZGFyZCAqLwotCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkgZXJybXNnKCJG SVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQiKSwKLQkJCQkJIGVycmhp bnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQg TkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwkJCWlmIChjdHgtPm5hdl9j b3VudCA9PSAwKQorCQkJCWN0eC0+aW5uZXJfa2luZCA9IG5hdi0+a2luZDsKKwkJCWN0eC0+bmF2 X2NvdW50Kys7CisJCQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVf d2Fsa2VyLCBjdHgpOwogCQl9Ci0JCWVsc2UgaWYgKG91dGVyX2lzX3BoeXNpY2FsICYmIGlubmVy X2lzX3BoeXNpY2FsKQorCisJCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZG U0VUKQogCQl7Ci0JCQkvKiBQUkVWL05FWFQgd3JhcHBpbmcgUFJFVi9ORVhUOiBwcm9oaWJpdGVk ICovCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCQkJCSBlcnJtc2coIlBSRVYgYW5kIE5FWFQgY2Fubm90IGNvbnRhaW4gUFJFViBvciBO RVhUIiksCi0JCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwg TkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dl ZC4iKSwKLQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7 CisJCQkvKgorCQkJICogTmF2cyBpbnNpZGUgb2Zmc2V0X2FyZyBhcmUgdW51c3VhbCBidXQgbm90 IGRpcmVjdGx5IGJhbm5lZDsgdGhlCisJCQkgKiBjb25zdGFudC1vZmZzZXQgcnVsZSB3aWxsIGNh dGNoIGFueSBWYXIgb3Igdm9sYXRpbGUgdGhleQorCQkJICogY29udGFpbi4KKwkJCSAqLworCQkJ cmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsK IAkJfQotCQllbHNlCisKKwkJLyoKKwkJICogUEhBU0VfQk9EWTogdGhpcyBpcyBhbiBvdXRlciBu YXYgYXQgdG9wIGxldmVsLiAgV2FsayBhcmcgZmlyc3QgdG8KKwkJICogY29sbGVjdCBuZXN0aW5n IC8gY29sdW1uLXJlZiBzdGF0ZSwgdGhlbiB2YWxpZGF0ZSBhbmQgKGZvciBjb21wb3VuZAorCQkg KiBmb3JtcykgZmxhdHRlbiwgdGhlbiB3YWxrIG9mZnNldChzKS4KKwkJICovCiAJCXsKLQkJCS8q IEZJUlNUL0xBU1Qgd3JhcHBpbmcgRklSU1QvTEFTVDogcHJvaGliaXRlZCAqLwotCQkJZXJlcG9y dChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkgZXJy bXNnKCJGSVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFpbiBGSVJTVCBvciBMQVNUIiksCi0JCQkJ CSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgp KSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7Ci0JCX0KLQl9Ci0J aWYgKCFyZXN1bHQuaGFzX2NvbHVtbl9yZWYpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCSBlcnJtc2coImFyZ3VtZW50IG9mIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29s dW1uIHJlZmVyZW5jZSIpLAotCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBuYXYtPmxv Y2F0aW9uKSkpOworCQkJRGVmaW5lV2Fsa0N0eCBzYXZlZCA9ICpjdHg7CisJCQlib29sCQlvdXRl cl9waHlzID0gKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgfHwKKwkJCQkJCQkJCSAgbmF2LT5r aW5kID09IFJQUl9OQVZfTkVYVCk7CisJCQlib29sCQlmbGF0dGVuZWQgPSBmYWxzZTsKKworCQkJ Y3R4LT5waGFzZSA9IERFRklORV9QSEFTRV9OQVZfQVJHOworCQkJY3R4LT5uYXZfY291bnQgPSAw OworCQkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQkJY3R4LT5pbm5lcl9raW5kID0g MDsKKwkJCSh2b2lkKSBkZWZpbmVfd2Fsa2VyKChOb2RlICopIG5hdi0+YXJnLCBjdHgpOworCisJ CQlpZiAoY3R4LT5uYXZfY291bnQgPiAwKQorCQkJeworCQkJCWJvb2wJCWlubmVyX3BoeXMgPSAo Y3R4LT5pbm5lcl9raW5kID09IFJQUl9OQVZfUFJFViB8fAorCQkJCQkJCQkJCSAgY3R4LT5pbm5l cl9raW5kID09IFJQUl9OQVZfTkVYVCk7CiAKLQkvKiBDaGVjayBvZmZzZXRfYXJnOiBjb2x1bW4g cmVmICsgdm9sYXRpbGUgaW4gb25lIHdhbGsgKi8KLQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5V TEwpCi0JewotCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwotCQkodm9pZCkg bmF2X2NoZWNrX3dhbGtlcigoTm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsICZyZXN1bHQpOwotCi0J CWlmIChyZXN1bHQuaGFzX2NvbHVtbl9yZWYgfHwKLQkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rp b25zKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZykpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIp LAotCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKLQl9 Ci19CisJCQkJaWYgKG91dGVyX3BoeXMgJiYgIWlubmVyX3BoeXMpCisJCQkJeworCQkJCQlSUFJO YXZFeHByICppbm5lcjsKIAotLyoKLSAqIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIKLSAq CQlXYWxrIHRoZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb24gdHJlZSBhbmQgdmFsaWRhdGUgZWFj aCBSUFJOYXZFeHByLgotICovCi1zdGF0aWMgYm9vbAotY2hlY2tfcnByX25hdl9uZXN0aW5nX3dh bGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQotewotCWlmIChub2RlID09IE5VTEwpCi0J CXJldHVybiBmYWxzZTsKLQlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQotCXsKLQkJY2hlY2tf cnByX25hdl9leHByKChSUFJOYXZFeHByICopIG5vZGUsIChQYXJzZVN0YXRlICopIGNvbnRleHQp OwotCQkvKiBkb24ndCByZWN1cnNlIGludG8gYXJnOyBuZXN0aW5nIGFscmVhZHkgY2hlY2tlZCBh Ym92ZSAqLwotCQlyZXR1cm4gZmFsc2U7CisJCQkJCS8qIFJlamVjdCB0cmlwbGUtb3ItZGVlcGVy IG5lc3RpbmcgKi8KKwkJCQkJaWYgKGN0eC0+bmF2X2NvdW50ID4gMSkKKwkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJ IGVycm1zZygiY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3JlIHRoYW4gdHdv IGxldmVscyBkZWVwIiksCisJCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBS RVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3Jt cyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0 ZSwgbmF2LT5sb2NhdGlvbikpKTsKKworCQkJCQlpZiAoIUlzQShuYXYtPmFyZywgUlBSTmF2RXhw cikpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0 aW9uIG11c3QgYmUgYSBkaXJlY3QgYXJndW1lbnQgb2YgdGhlIG91dGVyIG5hdmlnYXRpb24iKSwK KwkJCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhU KEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIp LAorCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9u KSkpOworCisJCQkJCWlubmVyID0gKFJQUk5hdkV4cHIgKikgbmF2LT5hcmc7CisKKwkJCQkJaWYg KG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJT VCkKKwkJCQkJCW5hdi0+a2luZCA9IFJQUl9OQVZfUFJFVl9GSVJTVDsKKwkJCQkJZWxzZSBpZiAo bmF2LT5raW5kID09IFJQUl9OQVZfUFJFViAmJiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0xBU1Qp CisJCQkJCQluYXYtPmtpbmQgPSBSUFJfTkFWX1BSRVZfTEFTVDsKKwkJCQkJZWxzZSBpZiAobmF2 LT5raW5kID09IFJQUl9OQVZfTkVYVCAmJiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQor CQkJCQkJbmF2LT5raW5kID0gUlBSX05BVl9ORVhUX0ZJUlNUOworCQkJCQllbHNlIGlmIChuYXYt PmtpbmQgPT0gUlBSX05BVl9ORVhUICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKKwkJ CQkJCW5hdi0+a2luZCA9IFJQUl9OQVZfTkVYVF9MQVNUOworCisJCQkJCW5hdi0+Y29tcG91bmRf b2Zmc2V0X2FyZyA9IG5hdi0+b2Zmc2V0X2FyZzsKKwkJCQkJbmF2LT5vZmZzZXRfYXJnID0gaW5u ZXItPm9mZnNldF9hcmc7CisJCQkJCW5hdi0+YXJnID0gaW5uZXItPmFyZzsKKwkJCQkJZmxhdHRl bmVkID0gdHJ1ZTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoIW91dGVyX3BoeXMgJiYgaW5uZXJfcGh5 cykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQkJIGVycm1zZygiRklSU1QgYW5kIExBU1QgY2Fubm90IGNvbnRhaW4gUFJF ViBvciBORVhUIiksCisJCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihM QVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFy ZSBhbGxvd2VkLiIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5h di0+bG9jYXRpb24pKSk7CisJCQkJZWxzZSBpZiAob3V0ZXJfcGh5cyAmJiBpbm5lcl9waHlzKQor CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250YWluIFBSRVYgb3Ig TkVYVCIpLAorCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgp KSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxs b3dlZC4iKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxv Y2F0aW9uKSkpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJIGVycm1zZygiRklSU1QgYW5kIExBU1Qg Y2Fubm90IGNvbnRhaW4gRklSU1Qgb3IgTEFTVCIpLAorCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBS RVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgp KSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJfQorCQkJZWxzZSBpZiAoIWN0 eC0+aGFzX2NvbHVtbl9yZWYpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImFyZ3VtZW50IG9mIHJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUg Y29sdW1uIHJlZmVyZW5jZSIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0 ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFdhbGsgb2Zmc2V0IGFy ZyhzKSBpbiBQSEFTRV9OQVZfT0ZGU0VUIHRvIGVuZm9yY2UgdGhlCisJCQkgKiBjb25zdGFudC1v ZmZzZXQgcnVsZS4gIEZvciBjb21wb3VuZCBmb3JtcywgYm90aCB0aGUgaW5uZXIKKwkJCSAqIChw b3N0LWZsYXR0ZW4gbmF2LT5vZmZzZXRfYXJnKSBhbmQgb3V0ZXIgKGNvbXBvdW5kX29mZnNldF9h cmcpCisJCQkgKiBvZmZzZXRzIG11c3QgYmUgY29uc3RhbnRzOyB0aGUgaW5uZXIncyBjb2x1bW4t cmVmIHN0YXR1cyB3YXMKKwkJCSAqIG5vdCBzZXBhcmF0ZWx5IHRyYWNrZWQgZHVyaW5nIHRoZSBQ SEFTRV9OQVZfQVJHIHdhbGsgKHdoaWNoCisJCQkgKiBvbmx5IGNoZWNrcyB0aGF0IG5hdi5hcmcg YXMgYSB3aG9sZSBoYXMgYXQgbGVhc3Qgb25lIFZhciksIHNvCisJCQkgKiBpdCBpcyByZS13YWxr ZWQgaGVyZSB0byBjYXRjaCBjb2x1bW4gcmVmZXJlbmNlcyB0aGUgaW5uZXIKKwkJCSAqIG9mZnNl dCB3b3VsZCBoYXZlIGxlYWtlZC4KKwkJCSAqLworCQkJY3R4LT5waGFzZSA9IERFRklORV9QSEFT RV9OQVZfT0ZGU0VUOworCisJCQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJCQl7CisJ CQkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQkJCSh2b2lkKSBkZWZpbmVfd2Fsa2Vy KChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZywgY3R4KTsKKwkJCQlpZiAoY3R4LT5oYXNfY29sdW1u X3JlZikKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlv biBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG5hdi0+b2Zmc2V0 X2FyZykpKSk7CisJCQl9CisJCQlpZiAoZmxhdHRlbmVkICYmIG5hdi0+Y29tcG91bmRfb2Zmc2V0 X2FyZyAhPSBOVUxMKQorCQkJeworCQkJCWN0eC0+aGFzX2NvbHVtbl9yZWYgPSBmYWxzZTsKKwkJ CQkodm9pZCkgZGVmaW5lX3dhbGtlcigoTm9kZSAqKSBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcs IGN0eCk7CisJCQkJaWYgKGN0eC0+aGFzX2NvbHVtbl9yZWYpCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ CSBlcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGlt ZSBjb25zdGFudCIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIGV4 cHJMb2NhdGlvbigoTm9kZSAqKSBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcpKSkpOworCQkJfQor CisJCQkqY3R4ID0gc2F2ZWQ7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAl9Ci0JcmV0dXJuIGV4 cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgY2hlY2tfcnByX25hdl9uZXN0aW5nX3dhbGtlciwg Y29udGV4dCk7CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVf d2Fsa2VyLCBjdHgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5o IGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCmluZGV4IDBhMTRjZmFkNzliLi42M2M0YjA5 ZGFmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCisrKyBiL3NyYy9p bmNsdWRlL29wdGltaXplci9ycHIuaApAQCAtNjIsNCArNjIsMjYgQEAgZXh0ZXJuIFJQUlBhdHRl cm4gKmJ1aWxkUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybiwgTGlzdCAqZGVmaW5l VmFyaWFibGUKIAkJCQkJCQkJICAgUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMs CiAJCQkJCQkJCSAgIGJvb2wgaGFzTWF0Y2hTdGFydERlcGVuZGVudCk7CiAKKy8qCisgKiBTaGFy ZWQgdHJhdmVyc2FsIHdhbGtlciBmb3IgREVGSU5FIGNsYXVzZSBSUFJOYXZFeHByIGNvbGxlY3Rp b24uCisgKgorICogQm90aCBwbGFubmVyIChuYXYtb2Zmc2V0IC8gbWF0Y2hfc3RhcnQgZGVwZW5k ZW5jeSBhbmFseXNpcykgYW5kIGV4ZWN1dG9yCisgKiAocnVudGltZSBvZmZzZXQgZXZhbHVhdGlv bikgbmVlZCB0byB3YWxrIERFRklORSBleHByZXNzaW9ucyBhbmQgZGlzcGF0Y2gKKyAqIHBlciBS UFJOYXZFeHByLiAgVGhleSBkaWZmZXIgb25seSBpbiB3aGF0IHRoZXkgZG8gYXQgZWFjaCBuYXYg bm9kZSwgc28KKyAqIHRoZSB0cmF2ZXJzYWwgZnJhbWUgaXMgc2hhcmVkIChuYXZfdHJhdmVyc2Fs X3dhbGtlciwgZGVmaW5lZCBpbiBycHIuYykKKyAqIGFuZCB0aGUgcGVyLW5hdiBhY3Rpb24gaXMg c3VwcGxpZWQgYXMgYSBjYWxsYmFjay4gIFRoZSBkcml2ZXIgYWxsb2NhdGVzCisgKiBhIG1vZGUt c3BlY2lmaWMgY29udGV4dCwgcG9pbnRzIE5hdlRyYXZlcnNhbC5kYXRhIGF0IGl0LCBhbmQgY2Fz dHMKKyAqIGluc2lkZSBpdHMgdmlzaXRvci4KKyAqLworc3RydWN0IE5hdlRyYXZlcnNhbDsKK3R5 cGVkZWYgdm9pZCAoKk5hdlZpc2l0Rm4pIChzdHJ1Y3QgTmF2VHJhdmVyc2FsICp0LCBSUFJOYXZF eHByICpuYXYpOworCit0eXBlZGVmIHN0cnVjdCBOYXZUcmF2ZXJzYWwKK3sKKwlOYXZWaXNpdEZu CXZpc2l0OworCXZvaWQJICAgKmRhdGE7CQkJLyogbW9kZS1zcGVjaWZpYyBjb250ZXh0ICovCit9 IE5hdlRyYXZlcnNhbDsKKworZXh0ZXJuIGJvb2wgbmF2X3RyYXZlcnNhbF93YWxrZXIoTm9kZSAq bm9kZSwgdm9pZCAqY3R4KTsKKwogI2VuZGlmCQkJCQkJCS8qIE9QVElNSVpFUl9SUFJfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IDg1Mzg0ZjZiMDk2Li44NzkzZGRhM2NjMyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMTE0NCw3ICsxMTQ0LDMxIEBAIFdJTkRP VyB3IEFTICgKICk7CiBFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qg YmUgYSBydW4tdGltZSBjb25zdGFudAogTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmlj ZSwgcHJpY2UpID4gMAotICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJl ZmVyZW5jZSBpbiBjb21wb3VuZCBpbm5lciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIHByaWNlKSwgMikg PiAwCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEg cnVuLXRpbWUgY29uc3RhbnQKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmlj ZSwgcHJpY2UpLCAyKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5jZSBpbiBjb21wb3Vu ZCBvdXRlciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBE RUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIDEpLCBwcmljZSkgPiAwCispOworRVJST1I6ICBy b3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQK K0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgMSksIHByaWNlKSA+IDAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIE5vbi1j b25zdGFudCBvZmZzZXQ6IHZvbGF0aWxlIGZ1bmN0aW9uIGFzIG9mZnNldAogU0VMRUNUIHByaWNl IEZST00gc3RvY2sKIFdJTkRPVyB3IEFTICgKQEAgLTExNTQsOSArMTE3OCw5IEBAIFdJTkRPVyB3 IEFTICgKICAgICBQQVRURVJOIChBKQogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHJhbmRv bSgpOjppbnQpID4gMAogKTsKLUVSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQg bXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitFUlJPUjogIHZvbGF0aWxlIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQogTElORSA3OiAgICAgREVGSU5FIEEgQVMg UFJFVihwcmljZSwgcmFuZG9tKCk6OmludCkgPiAwCi0gICAgICAgICAgICAgICAgICAgICAgICBe CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBOb24tY29uc3RhbnQg b2Zmc2V0OiBzdWJxdWVyeSBhcyBvZmZzZXQKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCiBXSU5E T1cgdyBBUyAoCkBAIC0xMTgxLDcgKzEyMDUsNyBAQCBXSU5ET1cgdyBBUyAoCiBFUlJPUjogIGNh bm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGSU5FIGV4cHJlc3Npb24KIExJTkUgNzogICAgIERFRklO RSBBIEFTIFBSRVYocHJpY2UgKyAoU0VMRUNUIDEpKSA+IDAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCi0tLSBGaXJzdCBhcmc6IHZvbGF0aWxlIGZ1bmN0aW9uIGlzIGFs bG93ZWQgKGV2YWx1YXRlZCBvbiB0YXJnZXQgcm93KQorLS0gVm9sYXRpbGUgZnVuY3Rpb24gaW5z aWRlIG5hdi5hcmcgaXMgcmVqZWN0ZWQgYXQgcGFyc2UgdGltZQogU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwKICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdwogRlJPTSBzdG9jawpAQCAtMTE5MSwzMCAr MTIxNSwyNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEg QVMgUFJFVihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAogKTsKLSBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAotLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tCi0gY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAotIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAy MDAgfCAgICAgICAgMTMwIHwgICAgIDkKLSBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTEgfCAwNy0wNC0yMDIz IHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkxIHwg MDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBj b21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCi0gY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEy MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTEgfCAwNy0xMC0y MDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnky IHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK LSBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTMw MCB8ICAgICA5Ci0gY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAg MTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCi0gY29tcGFueTIgfCAwNy0w Ni0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBh bnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKLSBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCi0gY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAotIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKLSgyMCByb3dzKQotCitFUlJPUjogIHZv bGF0aWxlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA4 OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5leHR2YWwgaXMgdm9sYXRpbGUg KHBlciBwZ19wcm9jKSwgc28gaXQgaXMgcmVqZWN0ZWQgdmlhIHRoZSBGdW5jRXhwcgorLS0gcGF0 aCB3aXRoIHRoZSAidm9sYXRpbGUgZnVuY3Rpb25zIiBtZXNzYWdlCitDUkVBVEUgU0VRVUVOQ0Ug cnByX3NlcTsKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBwcmljZSA+IG5leHR2YWwoJ3Jwcl9zZXEnKQorKTsKK0VSUk9SOiAgdm9sYXRpbGUgZnVu Y3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJ TkUgQSBBUyBwcmljZSA+IG5leHR2YWwoJ3Jwcl9zZXEnKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitEUk9QIFNFUVVFTkNFIHJwcl9zZXE7CiAtLQogLS0gMi1hcmcgUFJFVi9O RVhUOiBmdW5jdGlvbmFsIHRlc3RzCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9l eHBsYWluLm91dAppbmRleCBkYzM1MjJmOTMwZi4uMGEwNDlkMWJlYmEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC00NzQ0LDkgKzQ3NDQsOCBAQCBXSU5E T1cgdyBBUyAoCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcwogKDUg cm93cykKIAotLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwsIE4pLCBNKTogY29uc3RhbnQgbG9v a2FoZWFkIG92ZXJmbG93IC0+IG5vIHRyaW0gaW1wYWN0Ci0tLSBOICsgTSBvdmVyZmxvd3MgaW50 NjQsIGJ1dCB0YXJnZXQgaXMgZm9yd2FyZCBmcm9tIG1hdGNoX3N0YXJ0IHNvIGl0IG5ldmVyCi0t LSBjb25zdHJhaW5zIHRyaW0uICBMb29rYWhlYWQgcmVtYWlucyBhdCBkZWZhdWx0ICgwKS4KKy0t IENvbXBvdW5kIE5FWFQoRklSU1QodmFsLCBOKSwgTSk6IGNvbnN0YW50IGxvb2thaGVhZCBvdmVy ZmxvdyAtPiBpbmZpbml0ZQorLS0gTiArIE0gb3ZlcmZsb3dzIGludDY0OyBmb3J3YXJkIHJlYWNo IGlzIHVuYm91bmRlZCwgZGlzcGxheWVkIGFzIGluZmluaXRlLgogRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC00NzYwLDcgKzQ3NTksNyBAQCBXSU5ET1cgdyBBUyAoCiAgICBX aW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKICAgIFBhdHRlcm46IGErCiAgICBOYXYgTWFyayBMb29rYmFjazogMAotICAgTmF2IE1h cmsgTG9va2FoZWFkOiAwCisgICBOYXYgTWFyayBMb29rYWhlYWQ6IGluZmluaXRlCiAgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcwogKDYgcm93cykKIApAQCAtNDgwMyw3 ICs0ODAyLDcgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGLCBBTkFMWVpFLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKIAogUkVTRVQgcGxhbl9jYWNoZV9tb2RlOwogREVBTExPQ0FURSB0ZXN0X292ZXJm bG93X2xvb2tiYWNrOwotLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwsICQxKSwgJDIpOiBwYXJh bWV0ZXIgbG9va2FoZWFkIG92ZXJmbG93IC0+IG5vIHRyaW0gaW1wYWN0CistLSBDb21wb3VuZCBO RVhUKEZJUlNUKHZhbCwgJDEpLCAkMik6IHBhcmFtZXRlciBsb29rYWhlYWQgb3ZlcmZsb3cgLT4g aW5maW5pdGUKIFBSRVBBUkUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQoaW50OCwgaW50OCkgQVMK IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikK QEAgLTQ4MjEsNyArNDgyMCw3IEBAIEVYUExBSU4gKENPU1RTIE9GRiwgQU5BTFlaRSwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCiAgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKICAgIFBhdHRlcm46IGErCiAgICBOYXYgTWFy ayBMb29rYmFjazogMAotICAgTmF2IE1hcmsgTG9va2FoZWFkOiAwCisgICBOYXYgTWFyayBMb29r YWhlYWQ6IGluZmluaXRlCiAgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogMTdr QgogICAgTkZBIFN0YXRlczogMSBwZWFrLCAxMSB0b3RhbCwgMCBtZXJnZWQKICAgIE5GQSBDb250 ZXh0czogMiBwZWFrLCAxMSB0b3RhbCwgMTAgcHJ1bmVkCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKaW5kZXggZWY2YTE1N2Y0NWQuLjkwNWJkMzUzOGRl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CkBA IC0xNDA2LDIzICsxNDA2LDEyIEBAIERST1AgSU5ERVggcnByX2ludGVnX2lkX2lkeDsKIC0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0gQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQogLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBS ZWNvcmRzIHRoZSBjdXJyZW50IGJlaGF2aW91cjogREVGSU5FIHRvZGF5IGFjY2VwdHMgdm9sYXRp bGUKLS0tIGZ1bmN0aW9ucyBzdWNoIGFzIHJhbmRvbSgpIGFuZCB0aGUgcXVlcnkgcnVucyB0byBj b21wbGV0aW9uLgotLS0gVG8ga2VlcCB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRldGVybWluaXN0aWMg dGhlIHByZWRpY2F0ZSB1c2VzCi0tLSAicmFuZG9tKCkgPj0gMC4wIiwgd2hpY2ggaXMgc3RydWN0 dXJhbGx5IGVxdWl2YWxlbnQgdG8gVFJVRSBhbmQKLS0tIHRoZXJlZm9yZSBkb2VzIG5vdCBwZXJ0 dXJiIHRoZSBtYXRjaCByZXN1bHQuICBUaGUgaW50ZXJlc3RpbmcKLS0tIHByb3BlcnR5IGlzIHRo YXQgdm9sYXRpbGUgaW52b2NhdGlvbiBkb2VzIG5vdCBjcmFzaCBvciBzaG9ydC0KLS0tIGNpcmN1 aXQgcGF0dGVybiBtYXRjaGluZy4KLS0tCi0tLSBYWFg6IHZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBE RUZJTkUgYXJlIHNsYXRlZCB0byBiZSByZWplY3RlZCBhdAotLS0gcGFyc2UgdGltZS4gIFVuZGVy IFJQUidzIE5GQSBlbmdpbmUgdGhlIHNhbWUgcm93J3MgREVGSU5FCi0tLSBwcmVkaWNhdGUgbWF5 IGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyAoYmFja3RyYWNraW5nLAotLS0gUFJFVi9ORVhU IG5hdmlnYXRpb24pLCBzbyBhIHRydWx5IHZvbGF0aWxlIHJlc3VsdCB3b3VsZCBtYWtlCi0tLSBw YXR0ZXJuIG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgV2hlbiB0aGUgcHJvaGliaXRpb24g bGFuZHMsCi0tLSB0aGlzIHRlc3QgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2Ug dGVzdCB0aGF0IGV4cGVjdHMKLS0tIHJhbmRvbSgpIGluIERFRklORSB0byBiZSByZWplY3RlZC4K Ky0tIFZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUgYXJlIHJlamVjdGVkIGF0IHBhcnNlIHRp bWUuICBVbmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUgcHJl ZGljYXRlIG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tpbmcs IFBSRVYvTkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxkIG1h a2UgcGF0dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0tIElN TVVUQUJMRSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KIC0tIEJhc2VsaW5lOiBTVEFCTEUgKHRvX2No YXIpIGFuZCBJTU1VVEFCTEUgKGxlbmd0aCkgY2FsbGVlcyBhcmUgYWNjZXB0ZWQuCi0tLSBUaGlz IGxvY2tzIHRoZSBib3VuZGFyeSBvZiB0aGUgdm9sYXRpbGUtb25seSBwcm9oaWJpdGlvbi4KIFNF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CiBGUk9NIHJwcl9pbnRlZwogV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkCkBAIC0xNDQ2LDcgKzE0MzUsNyBAQCBPUkRFUiBCWSBpZDsK ICAxMCB8ICA0NSB8ICAgMAogKDEwIHJvd3MpCiAKLS0tIFZvbGF0aWxlIChyYW5kb20pIGlzIHRo ZSBwcm9oaWJpdGlvbiB0YXJnZXQ7IHRvZGF5IHN0aWxsIGFjY2VwdGVkLgorLS0gVm9sYXRpbGUg KHJhbmRvbSkgaXMgcmVqZWN0ZWQuCiBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFT IGNudAogRlJPTSBycHJfaW50ZWcKIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZApAQCAtMTQ1NCwy MCArMTQ0Myw5IEBAIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAogICAgIFBBVFRFUk4gKEEgQisp CiAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCByYW5kb20oKSA+PSAwLjApCiBP UkRFUiBCWSBpZDsKLSBpZCB8IHZhbCB8IGNudCAKLS0tLS0rLS0tLS0rLS0tLS0KLSAgMSB8ICAx MCB8ICAgMgotICAyIHwgIDIwIHwgICAwCi0gIDMgfCAgMTUgfCAgIDIKLSAgNCB8ICAyNSB8ICAg MAotICA1IHwgICA1IHwgICAzCi0gIDYgfCAgMzAgfCAgIDAKLSAgNyB8ICAzNSB8ICAgMAotICA4 IHwgIDIwIHwgICAzCi0gIDkgfCAgNDAgfCAgIDAKLSAxMCB8ICA0NSB8ICAgMAotKDEwIHJvd3Mp Ci0KK0VSUk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUg Y2xhdXNlCitMSU5FIDY6ICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIHJhbmRv bSgpID49IDAuMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLSBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3VicXVlcnkgaW4gV0hFUkUKIC0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggNTU2M2UwNjJjZGUuLmU0NzkwZjc1YjBhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKQEAgLTU0MSw2ICs1NDEsMjYgQEAgV0lORE9XIHcgQVMgKAogICAgIERF RklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKICk7CiAKKy0tIE5vbi1jb25zdGFudCBv ZmZzZXQ6IGNvbHVtbiByZWZlcmVuY2UgaW4gY29tcG91bmQgaW5uZXIgb2Zmc2V0CitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHBy aWNlLCBwcmljZSksIDIpID4gMAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1u IHJlZmVyZW5jZSBpbiBjb21wb3VuZCBvdXRlciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisg ICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIDEpLCBwcmlj ZSkgPiAwCispOworCiAtLSBOb24tY29uc3RhbnQgb2Zmc2V0OiB2b2xhdGlsZSBmdW5jdGlvbiBh cyBvZmZzZXQKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCiBXSU5ET1cgdyBBUyAoCkBAIC01NzEs NyArNTkxLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UgKyAo U0VMRUNUIDEpKSA+IDAKICk7CiAKLS0tIEZpcnN0IGFyZzogdm9sYXRpbGUgZnVuY3Rpb24gaXMg YWxsb3dlZCAoZXZhbHVhdGVkIG9uIHRhcmdldCByb3cpCistLSBWb2xhdGlsZSBmdW5jdGlvbiBp bnNpZGUgbmF2LmFyZyBpcyByZWplY3RlZCBhdCBwYXJzZSB0aW1lCiBTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLAogICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFs dWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CiBGUk9NIHN0b2NrCkBAIC01ODIsNiAr NjAyLDE5IEBAIFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgcmFu ZG9tKCkgKiAwKSA+PSAwCiApOwogCistLSBuZXh0dmFsIGlzIHZvbGF0aWxlIChwZXIgcGdfcHJv YyksIHNvIGl0IGlzIHJlamVjdGVkIHZpYSB0aGUgRnVuY0V4cHIKKy0tIHBhdGggd2l0aCB0aGUg InZvbGF0aWxlIGZ1bmN0aW9ucyIgbWVzc2FnZQorQ1JFQVRFIFNFUVVFTkNFIHJwcl9zZXE7CitT RUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2Ug PiBuZXh0dmFsKCdycHJfc2VxJykKKyk7CitEUk9QIFNFUVVFTkNFIHJwcl9zZXE7CisKIC0tCiAt LSAyLWFyZyBQUkVWL05FWFQ6IGZ1bmN0aW9uYWwgdGVzdHMKIC0tCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfZXhwbGFpbi5zcWwKaW5kZXggYTM3ODllOTI2MzEuLmUxMjNiZTYwYWVhIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCkBAIC0yNjk5LDkgKzI2OTksOCBAQCBXSU5ET1cgdyBB UyAoCiAgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYsIDQ2MTE2ODYwMTg0MjczODc5MDQpLCA0 NjExNjg2MDE4NDI3Mzg3OTA0KSBJUyBOT1QgTlVMTAogKTsKIAotLS0gQ29tcG91bmQgTkVYVChG SVJTVCh2YWwsIE4pLCBNKTogY29uc3RhbnQgbG9va2FoZWFkIG92ZXJmbG93IC0+IG5vIHRyaW0g aW1wYWN0Ci0tLSBOICsgTSBvdmVyZmxvd3MgaW50NjQsIGJ1dCB0YXJnZXQgaXMgZm9yd2FyZCBm cm9tIG1hdGNoX3N0YXJ0IHNvIGl0IG5ldmVyCi0tLSBjb25zdHJhaW5zIHRyaW0uICBMb29rYWhl YWQgcmVtYWlucyBhdCBkZWZhdWx0ICgwKS4KKy0tIENvbXBvdW5kIE5FWFQoRklSU1QodmFsLCBO KSwgTSk6IGNvbnN0YW50IGxvb2thaGVhZCBvdmVyZmxvdyAtPiBpbmZpbml0ZQorLS0gTiArIE0g b3ZlcmZsb3dzIGludDY0OyBmb3J3YXJkIHJlYWNoIGlzIHVuYm91bmRlZCwgZGlzcGxheWVkIGFz IGluZmluaXRlLgogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yNzI4LDcg KzI3MjcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQogUkVTRVQgcGxhbl9jYWNoZV9tb2RlOwogREVBTExPQ0FURSB0ZXN0X292ZXJmbG93 X2xvb2tiYWNrOwogCi0tLSBDb21wb3VuZCBORVhUKEZJUlNUKHZhbCwgJDEpLCAkMik6IHBhcmFt ZXRlciBsb29rYWhlYWQgb3ZlcmZsb3cgLT4gbm8gdHJpbSBpbXBhY3QKKy0tIENvbXBvdW5kIE5F WFQoRklSU1QodmFsLCAkMSksICQyKTogcGFyYW1ldGVyIGxvb2thaGVhZCBvdmVyZmxvdyAtPiBp bmZpbml0ZQogUFJFUEFSRSB0ZXN0X292ZXJmbG93X2xvb2thaGVhZChpbnQ4LCBpbnQ4KSBBUwog U0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKaW5kZXggZDk3NDg5NzlkNTQu LjI5YjJkYjJmN2JiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdy YXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwK QEAgLTg2OCwyNCArODY4LDEzIEBAIERST1AgSU5ERVggcnByX2ludGVnX2lkX2lkeDsKIC0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0gQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQogLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBS ZWNvcmRzIHRoZSBjdXJyZW50IGJlaGF2aW91cjogREVGSU5FIHRvZGF5IGFjY2VwdHMgdm9sYXRp bGUKLS0tIGZ1bmN0aW9ucyBzdWNoIGFzIHJhbmRvbSgpIGFuZCB0aGUgcXVlcnkgcnVucyB0byBj b21wbGV0aW9uLgotLS0gVG8ga2VlcCB0aGUgZXhwZWN0ZWQgb3V0cHV0IGRldGVybWluaXN0aWMg dGhlIHByZWRpY2F0ZSB1c2VzCi0tLSAicmFuZG9tKCkgPj0gMC4wIiwgd2hpY2ggaXMgc3RydWN0 dXJhbGx5IGVxdWl2YWxlbnQgdG8gVFJVRSBhbmQKLS0tIHRoZXJlZm9yZSBkb2VzIG5vdCBwZXJ0 dXJiIHRoZSBtYXRjaCByZXN1bHQuICBUaGUgaW50ZXJlc3RpbmcKLS0tIHByb3BlcnR5IGlzIHRo YXQgdm9sYXRpbGUgaW52b2NhdGlvbiBkb2VzIG5vdCBjcmFzaCBvciBzaG9ydC0KLS0tIGNpcmN1 aXQgcGF0dGVybiBtYXRjaGluZy4KLS0tCi0tLSBYWFg6IHZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBE RUZJTkUgYXJlIHNsYXRlZCB0byBiZSByZWplY3RlZCBhdAotLS0gcGFyc2UgdGltZS4gIFVuZGVy IFJQUidzIE5GQSBlbmdpbmUgdGhlIHNhbWUgcm93J3MgREVGSU5FCi0tLSBwcmVkaWNhdGUgbWF5 IGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyAoYmFja3RyYWNraW5nLAotLS0gUFJFVi9ORVhU IG5hdmlnYXRpb24pLCBzbyBhIHRydWx5IHZvbGF0aWxlIHJlc3VsdCB3b3VsZCBtYWtlCi0tLSBw YXR0ZXJuIG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgV2hlbiB0aGUgcHJvaGliaXRpb24g bGFuZHMsCi0tLSB0aGlzIHRlc3QgbXVzdCBiZSByZXBsYWNlZCB3aXRoIGFuIGVycm9yLWNhc2Ug dGVzdCB0aGF0IGV4cGVjdHMKLS0tIHJhbmRvbSgpIGluIERFRklORSB0byBiZSByZWplY3RlZC4K Ky0tIFZvbGF0aWxlIGZ1bmN0aW9ucyBpbiBERUZJTkUgYXJlIHJlamVjdGVkIGF0IHBhcnNlIHRp bWUuICBVbmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUgcHJl ZGljYXRlIG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tpbmcs IFBSRVYvTkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxkIG1h a2UgcGF0dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0tIElN TVVUQUJMRSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KIAogLS0gQmFzZWxpbmU6IFNUQUJMRSAodG9f Y2hhcikgYW5kIElNTVVUQUJMRSAobGVuZ3RoKSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KLS0tIFRo aXMgbG9ja3MgdGhlIGJvdW5kYXJ5IG9mIHRoZSB2b2xhdGlsZS1vbmx5IHByb2hpYml0aW9uLgog U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKIEZST00gcnByX2ludGVnCiBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKQEAgLTg5Niw3ICs4ODUsNyBAQCBXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKICAgICAgICAgICAgICAgICBBTkQgdG9fY2hhcihkYXRlICcyMDI2LTAxLTAx JywgJ1lZWVknKSA9ICcyMDI2JykKIE9SREVSIEJZIGlkOwogCi0tLSBWb2xhdGlsZSAocmFuZG9t KSBpcyB0aGUgcHJvaGliaXRpb24gdGFyZ2V0OyB0b2RheSBzdGlsbCBhY2NlcHRlZC4KKy0tIFZv bGF0aWxlIChyYW5kb20pIGlzIHJlamVjdGVkLgogU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9W RVIgdyBBUyBjbnQKIEZST00gcnByX2ludGVnCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNGI4MjI1Y2JmM2EuLjg1NTkxM2YwM2I3IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNjYzLDcgKzY2MywxMCBAQCBEZWNvZGluZ1dvcmtl clNoYXJlZAogRGVmRWxlbQogRGVmRWxlbUFjdGlvbgogRGVmYXVsdEFDTEluZm8KK0RlZmluZU1l dGFkYXRhQ29udGV4dAorRGVmaW5lUGhhc2UKIERlZmluZVN0bXQKK0RlZmluZVdhbGtDdHgKIERl Zm5EdW1wZXJQdHIKIERlbGV0ZVN0bXQKIERlcGVuZGVuY2llc1BhcnNlU3RhdGUKQEAgLTc2MSw4 ICs3NjQsNyBAQCBFcnJvckRhdGEKIEVycm9yU2F2ZUNvbnRleHQKIEVzdGltYXRlRFNNRm9yZWln blNjYW5fZnVuY3Rpb24KIEVzdGltYXRpb25JbmZvCi1FdmFsTmF2Rmlyc3RDb250ZXh0Ci1FdmFs TmF2TWF4Q29udGV4dAorRXZhbERlZmluZU9mZnNldHNDb250ZXh0CiBFdmVudFRyaWdnZXJDYWNo ZUVudHJ5CiBFdmVudFRyaWdnZXJDYWNoZUl0ZW0KIEV2ZW50VHJpZ2dlckNhY2hlU3RhdGVUeXBl CkBAIC0xODIyLDggKzE4MjQsOCBAQCBOYW1lZExXTG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1 cGxlc3RvcmVTY2FuCiBOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KLU5h dkNoZWNrUmVzdWx0Ci1OYXZPZmZzZXRDb250ZXh0CitOYXZUcmF2ZXJzYWwKK05hdlZpc2l0Rm4K IE5lc3RMb29wCiBOZXN0TG9vcFBhcmFtCiBOZXN0TG9vcFN0YXRlCi0tIAoyLjUwLjEgKEFwcGxl IEdpdC0xNTUpCgo= --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-Empty-match-EXPLAIN-coverage.txt" Content-Disposition: attachment; filename="nocfbot-0003-Empty-match-EXPLAIN-coverage.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh629h2 RnJvbSAxMzhmMDhhYjliNDQwMDI4OTM2NzhiMmFkMWM5Yjk3MDBkZTVmM2NhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMTQ6Mjk6MTQgKzA5MDAKU3ViamVjdDogW1BBVENIIDMvOV0gQ292 ZXIgUlBSIGVtcHR5LW1hdGNoIHBhdGggd2l0aCBFWFBMQUlOIHRlc3RzOyBmaXggc3RhbGUKIFhY WCBjb21tZW50cwoKVGhlIHRlc3RfNzI4XyogY2FzZXMgaW4gcnByX25mYS5zcWwgY2xhaW1lZCAo dmlhIFhYWCkgdGhhdCB0aGUgdmlzaXRlZApiaXRtYXAgYmxvY2tzIGVtcHR5IGl0ZXJhdGlvbnMu ICBJbiBmYWN0IHRoZSBORkEgZmluZHMgdGhlIGVtcHR5Cm1hdGNoZXM7IHdpbmRvdyBhZ2dyZWdh dGVzIGp1c3QgcmV0dXJuIDAgLyBOVUxMIG92ZXIgdGhlIGxlbmd0aC0wCmZyYW1lLCBpbmRpc3Rp bmd1aXNoYWJsZSBmcm9tICJubyBtYXRjaCIgd2l0aG91dCBNQVRDSF9OVU1CRVIoKS4KClJlcGxh Y2UgdGhlIFhYWCBjb21tZW50cyB3aXRoIHRoZSBhY3R1YWwgYmVoYXZpb3IsIGFuZCBhZGQgcGFp cmVkCkVYUExBSU4gQU5BTFlaRSB0ZXN0cyBpbiBycHJfZXhwbGFpbi5zcWwgdGhhdCBsb2NrIGlu CiJORkE6IDMgbWF0Y2hlZCAobGVuIDAvMC8wLjApIiBhcyBvYnNlcnZhYmxlIHJlZ3Jlc3Npb24g Y292ZXJhZ2UuCi0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQg fCAyMDAgKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfbmZhLm91dCAgICAgfCAgMjkgKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxh aW4uc3FsICAgICAgfCAxMTYgKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnBy X25mYS5zcWwgICAgICAgICAgfCAgMjkgKystLQogNCBmaWxlcyBjaGFuZ2VkLCAzNDAgaW5zZXJ0 aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9l eHBsYWluLm91dAppbmRleCAwYTA0OWQxYmViYS4uYzQ1MTZkM2M3NTYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC0yMTAyLDYgKzIxMDIsMjA2IEBAIFdJ TkRPVyB3IEFTICgKICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChh Y3R1YWwgcm93cz0wLjAwIGxvb3BzPTEpCiAoNSByb3dzKQogCistLSBFbXB0eSBtYXRjaGVzIChs ZW5ndGggMCk6IG1pcnJvciB0aGUgdGVzdF83MjhfKiBjYXNlcyBpbiBycHJfbmZhLnNxbC4KKy0t IFdpbmRvdyBhZ2dyZWdhdGVzIG92ZXIgYSBsZW5ndGgtMCBmcmFtZSByZXR1cm4gMCAvIE5VTEws IHNvIHRoZSBTRUxFQ1QKKy0tIHJlc3VsdCBhbG9uZSBjYW5ub3QgZGlzdGluZ3Vpc2ggIm5vIG1h dGNoIiBmcm9tICJlbXB0eSBtYXRjaCI7IHRoZQorLS0gIk5GQTogTiBtYXRjaGVkIChsZW4gMC8w LzAuMCkiIGxpbmUgaW4gRVhQTEFJTiBpcyB0aGUgb25seSBvYnNlcnZhYmxlCistLSBwcm9vZiB0 aGF0IHRoZSBlbXB0eSBtYXRjaGVzIHdlcmUgZm91bmQuCistLSAoQT8pezAsM306IG1pbj0wLCBB IG5ldmVyIG1hdGNoZXMgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZf ZWRnZV9lbXB0eV9tYXRjaF9taW4wIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MCwzfSkKKyAgICBERUZJTkUgQSBB UyBGQUxTRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYT8pezAsM30pIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezAsM30p CisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiAoYT8pezAsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDIwIHRv dGFsLCA0IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDQgdG90YWwsIDAgcHJ1bmVk CisgICBORkE6IDMgbWF0Y2hlZCAobGVuIDAvMC8wLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxvb3Bz PTEpCisoOSByb3dzKQorCistLSAoQT8pezEsM306IG1pbj0xLCBvbmUgZW1wdHkgaXRlcmF0aW9u IHNhdGlzZmllcyBtaW4gLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZf ZWRnZV9lbXB0eV9tYXRjaF9taW4xIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUgQSBB UyBGQUxTRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMScpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYT8pezEsM30pIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezEsM30p CisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiAoYT8pezEsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDE2IHRv dGFsLCA0IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDQgdG90YWwsIDAgcHJ1bmVk CisgICBORkE6IDMgbWF0Y2hlZCAobGVuIDAvMC8wLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxvb3Bz PTEpCisoOSByb3dzKQorCistLSAoQT8pezIsM306IG1pbj0yIChTUUw6MjAxNiBTVFIwNiA9IFNU UkUgU1RSRSkgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9l bXB0eV9tYXRjaF9taW4yIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxT RQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYT8pezIsM30pIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAg REVGSU5FIEEgQVMgRkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYT8pezIsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDE2IHRvdGFsLCA0 IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDQgdG90YWwsIDAgcHJ1bmVkCisgICBO RkE6IDMgbWF0Y2hlZCAobGVuIDAvMC8wLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCiso OSByb3dzKQorCistLSAoQT8pezIsM30gbWl4ZWQ6IHJvd3MgMS0yIG1hdGNoIEEgKHJlYWwpLCBy b3dzIDMtNCBmYWxsIGJhY2sgdG8gZW1wdHkKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5 X21hdGNoX21peGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA0KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyB2IDw9IDIK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21peGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MiwzfSkgCisoMSByb3cpCisKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBE RUZJTkUgQSBBUyB2IDw9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYT8pezIsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA4IHBlYWssIDI2IHRvdGFsLCA1 IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDUgdG90YWwsIDEgcHJ1bmVkCisgICBO RkE6IDMgbWF0Y2hlZCAobGVuIDAvMi8xLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00LjAwIGxvb3BzPTEpCiso OSByb3dzKQorCistLSAoQT8gQj8pezIsM306IHB1cmUgZW1wdHkgbXVsdGktZWxlbWVudCBib2R5 IC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0 Y2hfbXVsdGkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFLCBC IEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9tdWx0aScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYT8gYj8pezIsM30p IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO ICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UsIEIgQVMgRkFMU0UKKyk7Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9My4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYT8gYj8pezIsM30KKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA2IHBlYWssIDIwIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDQgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDMgbWF0Y2hlZCAobGVuIDAv MC8wLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCiAtLSBTaW5nbGUg cm93CiBDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9zaW5nbGVfcm93IEFTCiBTRUxFQ1QgY291bnQo KikgT1ZFUiB3CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dAppbmRleCBhMTliMjZj M2I5NC4uNGNmZjdjZmJiZDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnByX25mYS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dApA QCAtNDM5NSw5ICs0Mzk1LDkgQEAgV0lORE9XIHcgQVMgKAogKDMgcm93cykKIAogLS0gKEE/KXsw LDN9OiBtaW49MCwgbnVsbGFibGUgaW5uZXIuCi0tLSBBIG5ldmVyIG1hdGNoZXMuIEE/IG1hdGNo ZXMgZW1wdHksIG1pbj0wIHNhdGlzZmllZCBpbW1lZGlhdGVseS4KLS0tIFBlciBzdGFuZGFyZDog ZW1wdHkgbWF0Y2ggZXhwZWN0ZWQgZm9yIGV2ZXJ5IHJvdy4KLS0tIFhYWDogdmlzaXRlZCBiaXRt YXAgYmxvY2tzIGVtcHR5IGl0ZXJhdGlvbiAtPiBubyBtYXRjaCAoc2FtZSBhcyB7MiwzfSkKKy0t IEEgbmV2ZXIgbWF0Y2hlcyBidXQgQT8gbWF0Y2hlcyBlbXB0eSwgc2F0aXNmeWluZyBtaW49MCBp bW1lZGlhdGVseS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlcyAob25lIHBlciBy b3cpOyBmaXJzdF92YWx1ZSAvIGxhc3RfdmFsdWUKKy0tIGFyZSBOVUxMIGJlY2F1c2UgdGhlIHdp bmRvdyBmcmFtZSBmb3IgYW4gZW1wdHkgbWF0Y2ggaGFzIG5vIHJvd3MuCiBXSVRIIHRlc3RfNzI4 X21pbjAgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwogICAgICAgICAoMSwgQVJSQVlb J0InXSksCkBAIC00NDI1LDkgKzQ0MjUsOCBAQCBXSU5ET1cgdyBBUyAoCiAoMyByb3dzKQogCiAt LSAoQT8pezEsM306IG1pbj0xLCBudWxsYWJsZSBpbm5lci4KLS0tIEEgbmV2ZXIgbWF0Y2hlcy4g TmVlZCAxIGVtcHR5IGl0ZXJhdGlvbiB0byBzYXRpc2Z5IG1pbj0xLgotLS0gUGVyIHN0YW5kYXJk OiBlbXB0eSBtYXRjaCBleHBlY3RlZCBmb3IgZXZlcnkgcm93LgotLS0gWFhYOiB2aXNpdGVkIGJp dG1hcCBibG9ja3MgZW1wdHkgaXRlcmF0aW9uIC0+IG5vIG1hdGNoIChzYW1lIGFzIHsyLDN9KQor LS0gQSBuZXZlciBtYXRjaGVzOyBvbmUgZW1wdHkgaXRlcmF0aW9uIHNhdGlzZmllcyBtaW49MS4K Ky0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlczsgZmlyc3QvbGFzdF92YWx1ZSBOVUxM IG92ZXIgZW1wdHkgZnJhbWUuCiBXSVRIIHRlc3RfNzI4X21pbjEgQVMgKAogICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUwogICAgICAgICAoMSwgQVJSQVlbJ0InXSksCkBAIC00NDU0LDExICs0NDUz LDkgQEAgV0lORE9XIHcgQVMgKAogICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAogKDMgcm93cykKIAotLS0gKEE/KXsyLDN9OiBtaW49MiwgbnVsbGFibGUgaW5uZXIuCi0tLSBB IG5ldmVyIG1hdGNoZXMuIE5lZWQgMiBlbXB0eSBpdGVyYXRpb25zIHRvIHNhdGlzZnkgbWluPTIu Ci0tLSBQZXIgc3RhbmRhcmQ6IFNUUjA2PShTVFJFIFNUUkUpIGlzIHZhbGlkIGZvciBtaW49Mi4K LS0tIEV4cGVjdGVkOiBlbXB0eSBtYXRjaCBmb3IgZXZlcnkgcm93Ci0tLSBYWFg6IHZpc2l0ZWQg Yml0bWFwIGJsb2NrcyBzZWNvbmQgZW1wdHkgaXRlcmF0aW9uIC0+IG1hdGNoIGZhaWx1cmUKKy0t IChBPyl7MiwzfTogbWluPTIsIG51bGxhYmxlIGlubmVyLiAgUGVyIFNRTDoyMDE2IFNUUjA2ID0g KFNUUkUgU1RSRSkKKy0tIGlzIHZhbGlkOiB0d28gZW1wdHkgaXRlcmF0aW9ucyBzYXRpc2Z5IG1p bj0yLgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVl IE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4KIFdJVEggdGVzdF83MjhfbWluMiBBUyAoCiAgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCiAgICAgICAgICgxLCBBUlJBWVsnQiddKSwKQEAgLTQ0ODYsOSAr NDQ4Myw4IEBAIFdJTkRPVyB3IEFTICgKICgzIHJvd3MpCiAKIC0tIChBPyl7MiwzfSBtaXhlZDog c29tZSByb3dzIG1hdGNoIEEsIHNvbWUgZG9uJ3QKLS0tIFJvd3MgMS0yOiBBIG1hdGNoZXMsIGdy ZWVkeSB0YWtlcyAyIC0+IG1pbiBzYXRpc2ZpZWQKLS0tIFJvdyAzOiBBIGRvZXNuJ3QgbWF0Y2gs IG5lZWRzIDIgZW1wdHkgaXRlcmF0aW9ucyBmb3IgbWluPTIKLS0tIFhYWDogUm93IDMgZmFpbHMg ZHVlIHRvIHZpc2l0ZWQgYml0bWFwIChzYW1lIGFzIHB1cmUgZW1wdHkgezIsM30pCistLSBSb3dz IDEtMjogQSBtYXRjaGVzLCBncmVlZHkgdGFrZXMgMiAtPiBtaW4gc2F0aXNmaWVkIChyZWFsIG1h dGNoKQorLS0gUm93IDM6IEEgZG9lc24ndCBtYXRjaCwgdHdvIGVtcHR5IGl0ZXJhdGlvbnMgc2F0 aXNmeSBtaW49MiAobGVuZ3RoLTAgbWF0Y2gpCiAtLSBSb3cgNDogQSBtYXRjaGVzIDEgcmVhbCBp dGVyICsgMSBmZiBlbXB0eSBleGl0IC0+IG1hdGNoIDQtNAogV0lUSCB0ZXN0XzcyOF9taW4yX21p eGVkIEFTICgKICAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKQEAgLTQ1NTksOSArNDU1NSw4IEBA IFdJTkRPVyB3IEFTICgKICAgNiB8IHtCfSAgIHwgICAgICAgICAgIDYgfCAgICAgICAgIDYKICg2 IHJvd3MpCiAKLS0tIChBPyBCPyl7MiwzfTogcHVyZSBlbXB0eSBib2R5IChub3RoaW5nIG1hdGNo ZXMpCi0tLSBYWFg6IEFsbCBOVUxMOiBzYW1lIGlzc3VlIGFzIHRlc3RfNzI4X21pbjIgKGVtcHR5 IG1hdGNoIGF0IGNvbnRleHQKLS0tIHN0YXJ0IHlpZWxkcyBVTk1BVENIRUQgdmlhIHN0YXJ0UG9z LTEgaW5pdGlhbCBhZHZhbmNlKQorLS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IGJvZHkgKG5v dGhpbmcgbWF0Y2hlcyBBIG9yIEIpLgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVz OyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4KIFdJVEggdGVzdF83Mjhf bXVsdGlfZW1wdHkgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwogICAgICAgICAoMSwg QVJSQVlbJ0MnXSksCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFp bi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKaW5kZXggZTEyM2Jl NjBhZWEuLmQzMzlhODBhNjczIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJf ZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCkBA IC0xMTc4LDYgKzExNzgsMTIyIEBAIFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyB2ID0g MSwgQiBBUyB2ID0gMgogKTsnKTsKIAorLS0gRW1wdHkgbWF0Y2hlcyAobGVuZ3RoIDApOiBtaXJy b3IgdGhlIHRlc3RfNzI4XyogY2FzZXMgaW4gcnByX25mYS5zcWwuCistLSBXaW5kb3cgYWdncmVn YXRlcyBvdmVyIGEgbGVuZ3RoLTAgZnJhbWUgcmV0dXJuIDAgLyBOVUxMLCBzbyB0aGUgU0VMRUNU CistLSByZXN1bHQgYWxvbmUgY2Fubm90IGRpc3Rpbmd1aXNoICJubyBtYXRjaCIgZnJvbSAiZW1w dHkgbWF0Y2giOyB0aGUKKy0tICJORkE6IE4gbWF0Y2hlZCAobGVuIDAvMC8wLjApIiBsaW5lIGlu IEVYUExBSU4gaXMgdGhlIG9ubHkgb2JzZXJ2YWJsZQorLS0gcHJvb2YgdGhhdCB0aGUgZW1wdHkg bWF0Y2hlcyB3ZXJlIGZvdW5kLgorCistLSAoQT8pezAsM306IG1pbj0wLCBBIG5ldmVyIG1hdGNo ZXMgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9t YXRjaF9taW4wIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKChBPyl7MCwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBPyl7MCwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsnKTsKKworLS0gKEE/KXsx LDN9OiBtaW49MSwgb25lIGVtcHR5IGl0ZXJhdGlvbiBzYXRpc2ZpZXMgbWluIC0+IDMgbGVuZ3Ro LTAgbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMSBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOICgoQT8pezEsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2Vt cHR5X21hdGNoX21pbjEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezEsM30p CisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7Jyk7CisKKy0tIChBPyl7MiwzfTogbWluPTIgKFNR TDoyMDE2IFNUUjA2ID0gU1RSRSBTVFJFKSAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBW SUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAg IERFRklORSBBIEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4yJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZB TFNFCispOycpOworCistLSAoQT8pezIsM30gbWl4ZWQ6IHJvd3MgMS0yIG1hdGNoIEEgKHJlYWwp LCByb3dzIDMtNCBmYWxsIGJhY2sgdG8gZW1wdHkKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2Vt cHR5X21hdGNoX21peGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA0KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyB2IDw9 IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21peGVkJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYgPD0gMgorKTsnKTsKKwor LS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IG11bHRpLWVsZW1lbnQgYm9keSAtPiAzIGxlbmd0 aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX211bHRpIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKChBPyBCPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbXVsdGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UsIEIgQVMgRkFMU0UK Kyk7Jyk7CisKIC0tIFNpbmdsZSByb3cKIENSRUFURSBWSUVXIHJwcl9ldl9lZGdlX3NpbmdsZV9y b3cgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9uZmEuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKaW5k ZXggMWQyN2UwZGMwOWUuLjI5ZWM0YTlkYWNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9ycHJfbmZhLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbApA QCAtMzIzNCw5ICszMjM0LDkgQEAgV0lORE9XIHcgQVMgKAogKTsKIAogLS0gKEE/KXswLDN9OiBt aW49MCwgbnVsbGFibGUgaW5uZXIuCi0tLSBBIG5ldmVyIG1hdGNoZXMuIEE/IG1hdGNoZXMgZW1w dHksIG1pbj0wIHNhdGlzZmllZCBpbW1lZGlhdGVseS4KLS0tIFBlciBzdGFuZGFyZDogZW1wdHkg bWF0Y2ggZXhwZWN0ZWQgZm9yIGV2ZXJ5IHJvdy4KLS0tIFhYWDogdmlzaXRlZCBiaXRtYXAgYmxv Y2tzIGVtcHR5IGl0ZXJhdGlvbiAtPiBubyBtYXRjaCAoc2FtZSBhcyB7MiwzfSkKKy0tIEEgbmV2 ZXIgbWF0Y2hlcyBidXQgQT8gbWF0Y2hlcyBlbXB0eSwgc2F0aXNmeWluZyBtaW49MCBpbW1lZGlh dGVseS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlcyAob25lIHBlciByb3cpOyBm aXJzdF92YWx1ZSAvIGxhc3RfdmFsdWUKKy0tIGFyZSBOVUxMIGJlY2F1c2UgdGhlIHdpbmRvdyBm cmFtZSBmb3IgYW4gZW1wdHkgbWF0Y2ggaGFzIG5vIHJvd3MuCiBXSVRIIHRlc3RfNzI4X21pbjAg QVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwogICAgICAgICAoMSwgQVJSQVlbJ0InXSks CkBAIC0zMjU4LDkgKzMyNTgsOCBAQCBXSU5ET1cgdyBBUyAoCiApOwogCiAtLSAoQT8pezEsM306 IG1pbj0xLCBudWxsYWJsZSBpbm5lci4KLS0tIEEgbmV2ZXIgbWF0Y2hlcy4gTmVlZCAxIGVtcHR5 IGl0ZXJhdGlvbiB0byBzYXRpc2Z5IG1pbj0xLgotLS0gUGVyIHN0YW5kYXJkOiBlbXB0eSBtYXRj aCBleHBlY3RlZCBmb3IgZXZlcnkgcm93LgotLS0gWFhYOiB2aXNpdGVkIGJpdG1hcCBibG9ja3Mg ZW1wdHkgaXRlcmF0aW9uIC0+IG5vIG1hdGNoIChzYW1lIGFzIHsyLDN9KQorLS0gQSBuZXZlciBt YXRjaGVzOyBvbmUgZW1wdHkgaXRlcmF0aW9uIHNhdGlzZmllcyBtaW49MS4KKy0tIE5GQSByZXBv cnRzIDMgbGVuZ3RoLTAgbWF0Y2hlczsgZmlyc3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1wdHkg ZnJhbWUuCiBXSVRIIHRlc3RfNzI4X21pbjEgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UwogICAgICAgICAoMSwgQVJSQVlbJ0InXSksCkBAIC0zMjgxLDExICszMjgwLDkgQEAgV0lORE9X IHcgQVMgKAogICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKICk7CiAKLS0tIChBPyl7Miwz fTogbWluPTIsIG51bGxhYmxlIGlubmVyLgotLS0gQSBuZXZlciBtYXRjaGVzLiBOZWVkIDIgZW1w dHkgaXRlcmF0aW9ucyB0byBzYXRpc2Z5IG1pbj0yLgotLS0gUGVyIHN0YW5kYXJkOiBTVFIwNj0o U1RSRSBTVFJFKSBpcyB2YWxpZCBmb3IgbWluPTIuCi0tLSBFeHBlY3RlZDogZW1wdHkgbWF0Y2gg Zm9yIGV2ZXJ5IHJvdwotLS0gWFhYOiB2aXNpdGVkIGJpdG1hcCBibG9ja3Mgc2Vjb25kIGVtcHR5 IGl0ZXJhdGlvbiAtPiBtYXRjaCBmYWlsdXJlCistLSAoQT8pezIsM306IG1pbj0yLCBudWxsYWJs ZSBpbm5lci4gIFBlciBTUUw6MjAxNiBTVFIwNiA9IChTVFJFIFNUUkUpCistLSBpcyB2YWxpZDog dHdvIGVtcHR5IGl0ZXJhdGlvbnMgc2F0aXNmeSBtaW49Mi4KKy0tIE5GQSByZXBvcnRzIDMgbGVu Z3RoLTAgbWF0Y2hlczsgZmlyc3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1wdHkgZnJhbWUuCiBX SVRIIHRlc3RfNzI4X21pbjIgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwogICAgICAg ICAoMSwgQVJSQVlbJ0InXSksCkBAIC0zMzA3LDkgKzMzMDQsOCBAQCBXSU5ET1cgdyBBUyAoCiAp OwogCiAtLSAoQT8pezIsM30gbWl4ZWQ6IHNvbWUgcm93cyBtYXRjaCBBLCBzb21lIGRvbid0Ci0t LSBSb3dzIDEtMjogQSBtYXRjaGVzLCBncmVlZHkgdGFrZXMgMiAtPiBtaW4gc2F0aXNmaWVkCi0t LSBSb3cgMzogQSBkb2Vzbid0IG1hdGNoLCBuZWVkcyAyIGVtcHR5IGl0ZXJhdGlvbnMgZm9yIG1p bj0yCi0tLSBYWFg6IFJvdyAzIGZhaWxzIGR1ZSB0byB2aXNpdGVkIGJpdG1hcCAoc2FtZSBhcyBw dXJlIGVtcHR5IHsyLDN9KQorLS0gUm93cyAxLTI6IEEgbWF0Y2hlcywgZ3JlZWR5IHRha2VzIDIg LT4gbWluIHNhdGlzZmllZCAocmVhbCBtYXRjaCkKKy0tIFJvdyAzOiBBIGRvZXNuJ3QgbWF0Y2gs IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWluPTIgKGxlbmd0aC0wIG1hdGNoKQogLS0g Um93IDQ6IEEgbWF0Y2hlcyAxIHJlYWwgaXRlciArIDEgZmYgZW1wdHkgZXhpdCAtPiBtYXRjaCA0 LTQKIFdJVEggdGVzdF83MjhfbWluMl9taXhlZCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCkBAIC0zMzY0LDkgKzMzNjAsOCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQogKTsKIAotLS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IGJvZHkgKG5v dGhpbmcgbWF0Y2hlcykKLS0tIFhYWDogQWxsIE5VTEw6IHNhbWUgaXNzdWUgYXMgdGVzdF83Mjhf bWluMiAoZW1wdHkgbWF0Y2ggYXQgY29udGV4dAotLS0gc3RhcnQgeWllbGRzIFVOTUFUQ0hFRCB2 aWEgc3RhcnRQb3MtMSBpbml0aWFsIGFkdmFuY2UpCistLSAoQT8gQj8pezIsM306IHB1cmUgZW1w dHkgYm9keSAobm90aGluZyBtYXRjaGVzIEEgb3IgQikuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0 aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVyIGVtcHR5IGZyYW1lLgogV0lU SCB0ZXN0XzcyOF9tdWx0aV9lbXB0eSBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCiAg ICAgICAgICgxLCBBUlJBWVsnQyddKSwKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000048337e0651399b49 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0004-Reclassify-DEFINE-qualifier-check.txt" Content-Disposition: attachment; filename="nocfbot-0004-Reclassify-DEFINE-qualifier-check.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh63t23 RnJvbSBlODdkZDMxOGRkNGE5ZDUwZWM4NWVmMDJjNjg5ZDNiOTQzZTE3YzQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTE6MzY6NTMgKzA5MDAKU3ViamVjdDogW1BBVENIIDQvOV0gUmVj bGFzc2lmeSBERUZJTkUgcXVhbGlmaWVyIGNoZWNrIGFuZCByZXdvcmQgZGlhZ25vc3RpYwogdG8g ImV4cHJlc3Npb24iCgpTcGxpdCB0aGUgcHJlLWNoZWNrIGludG8gdGhyZWUgYnJhbmNoZXM6IHBh dHRlcm4gdmFyaWFibGUgLT4KRkVBVFVSRV9OT1RfU1VQUE9SVEVELCByYW5nZSB2YXJpYWJsZSAo dmlhIHJlZm5hbWVOYW1lc3BhY2VJdGVtKSAtPgpTWU5UQVhfRVJST1IsIGFueXRoaW5nIGVsc2Ug LT4gZmFsbCB0aHJvdWdoIHRvIG5vcm1hbCByZXNvbHV0aW9uLgpSZXdvcmQgInF1YWxpZmllZCBj b2x1bW4gcmVmZXJlbmNlIiB0byAicXVhbGlmaWVkIGV4cHJlc3Npb24iIHNpbmNlCnRoZSBxdW90 ZWQgdG9rZW4gbWF5IGluY2x1ZGUgYW4gaW5kaXJlY3Rpb24gdGFyZ2V0IG9uIGNvbXBvc2l0ZQp0 eXBlcyAoZS5nLiAoQS5pdGVtcykuYW1vdW50KS4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jICAgICAgICB8IDMxICsrKysrKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnByX2Jhc2Uub3V0IHwgODAgKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCAgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrLS0K IDMgZmlsZXMgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGYxNDUzNDJlMWZiLi45OTk3ZDZiYzRjNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCkBAIC02MjgsMTEgKzYyOCwyNCBAQCB0cmFuc2Zvcm1Db2x1bW5S ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJaWYgKG5vZGUgIT0gTlVM TCkKIAkJcmV0dXJuIG5vZGU7CiAKLQkvKgotCSAqIFF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNl cyBpbiBERUZJTkUgYXJlIG5vdCBzdXBwb3J0ZWQuICBUaGlzIGNvdmVycwotCSAqIGJvdGggRlJP TS1jbGF1c2UgcmFuZ2UgdmFyaWFibGVzIChwcm9oaWJpdGVkIGJ5IMKnNi41KSBhbmQgcGF0dGVy bgotCSAqIHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lcyAoZS5nLiBVUC5wcmljZSksIHdoaWNoIGFy ZSB2YWxpZCBwZXIgwqc0LjE2Ci0JICogYnV0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisJLyotLS0t LS0tLS0tCisJICogUXVhbGlmaWVkIHJlZmVyZW5jZXMgaW4gREVGSU5FIG5lZWQgYSB0cmktY2xh c3NpZmljYXRpb246CisJICoKKwkgKgkgIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVyIChlLmcu IFVQLnByaWNlKTogdmFsaWQgcGVyIMKnNC4xNiBidXQKKwkgKgkgIG5vdCB5ZXQgaW1wbGVtZW50 ZWQgLS0gcmFpc2UgRkVBVFVSRV9OT1RfU1VQUE9SVEVELgorCSAqCisJICoJICBGUk9NLWNsYXVz ZSByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZXI6IHByb2hpYml0ZWQgYnkgwqc2LjUgLS0gcmFpc2UK KwkgKgkgIFNZTlRBWF9FUlJPUi4KKwkgKgorCSAqCSAgYW55IG90aGVyIHF1YWxpZmllciAodHlw bywgdW5kZWZpbmVkIG5hbWUpOiBmYWxsIHRocm91Z2ggYW5kIGxldAorCSAqCSAgbm9ybWFsIGNv bHVtbiByZXNvbHV0aW9uIHByb2R1Y2UgYSBzZW5zaWJsZSBlcnJvci4KKwkgKgorCSAqIFRoZSBx dW90ZWQgdGV4dCByZWZsZWN0cyBvbmx5IHRoZSBDb2x1bW5SZWYgcG9ydGlvbjsgYSB0cmFpbGlu ZyBmaWVsZAorCSAqIHNlbGVjdGlvbiBvbiBhIGNvbXBvc2l0ZSB0eXBlIChlLmcuICIuYW1vdW50 IiBpbiAiKEEuaXRlbXMpLmFtb3VudCIpCisJICogbGl2ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIEFf SW5kaXJlY3Rpb24gbm9kZSBhbmQgaXMgbm90IGluY2x1ZGVkIGhlcmUuCisJICogVGhhdCBjYW4g YmUgcmV2aXNpdGVkIHdoZW4gTUVBU1VSRVMgc3VwcG9ydCBhZGRzIGluZGlyZWN0aW9uLWF3YXJl CisJICogdHJhdmVyc2FsLgorCSAqLS0tLS0tLS0tLQogCSAqLwogCWlmIChwc3RhdGUtPnBfZXhw cl9raW5kID09IEVYUFJfS0lORF9SUFJfREVGSU5FICYmCiAJCWxpc3RfbGVuZ3RoKGNyZWYtPmZp ZWxkcykgIT0gMSkKQEAgLTY1MywxNSArNjY2LDE3IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJz ZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJaWYgKGlzX3BhdHRlcm5fdmFyKQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCQkgZXJybXNnKCJwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4g cmVmZXJlbmNlIFwiJXNcIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UiLAorCQkJ CQkgZXJybXNnKCJwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uIFwiJXNcIiBp cyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UiLAogCQkJCQkJCU5hbWVMaXN0VG9TdHJp bmcoY3JlZi0+ZmllbGRzKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVm LT5sb2NhdGlvbikpKTsKLQkJZWxzZQorCQllbHNlIGlmIChyZWZuYW1lTmFtZXNwYWNlSXRlbShw c3RhdGUsIE5VTEwsIHF1YWxpZmllciwKKwkJCQkJCQkJCSAgY3JlZi0+bG9jYXRpb24sIE5VTEwp ICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCi0JCQkJCSBlcnJtc2coInJhbmdlIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4g cmVmZXJlbmNlIFwiJXNcIiBpcyBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiwKKwkJCQkJ IGVycm1zZygicmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gXCIlc1wiIGlzIG5v dCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiLAogCQkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3Jl Zi0+ZmllbGRzKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2Nh dGlvbikpKTsKKwkJLyogZWxzZTogdW5rbm93biBxdWFsaWZpZXIgLS0gZmFsbCB0aHJvdWdoIHRv IG5vcm1hbCByZXNvbHV0aW9uICovCiAJfQogCiAJLyotLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CmluZGV4IGE2MzIxMWZmMzY0Li44NmFiYjk2YzE3NyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKQEAgLTMwNzQsMTAgKzMwNzQsMTAg QEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFTIEEudmFs ID4gMAogKTsKLUVSUk9SOiAgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVy ZW5jZSAiYS52YWwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZQorRVJST1I6ICBw YXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJhLnZhbCIgaXMgbm90IHN1cHBv cnRlZCBpbiBERUZJTkUgY2xhdXNlCiBMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBBLnZhbCA+IDAK ICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2 YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAiYS52YWwiIGlzIG5vdCBzdXBwb3J0 ZWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVz c2lvbiAiYS52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKIC0tIFBBVFRFUk4tb25seSB2YXJpYWJsZSBx dWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCBldmVuIHdpdGhvdXQgREVGSU5FIGVudHJ5CiBT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CiBGUk9NIHJwcl9lcnIKQEAgLTMwODcsMTAgKzMwODcsMTAg QEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIrKQogICAgIERFRklORSBBIEFTIEIu dmFsID4gMAogKTsKLUVSUk9SOiAgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJl ZmVyZW5jZSAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZQorRVJST1I6 ICBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJiLnZhbCIgaXMgbm90IHN1 cHBvcnRlZCBpbiBERUZJTkUgY2xhdXNlCiBMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBCLnZhbCA+ IDAKICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVy biB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAiYi52YWwiIGlzIG5vdCBzdXBw b3J0ZWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgZXhw cmVzc2lvbiAiYi52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKIC0tIERFRklORS1vbmx5IHZhcmlhYmxl IHF1YWxpZmllZCBuYW1lOiBzdGlsbCBhIHBhdHRlcm4gdmFyaWFibGUsIG5vdCBhIHJhbmdlIHZh cmlhYmxlCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CiBGUk9NIHJwcl9lcnIKQEAgLTMxMDMsNyAr MzEwMyw3IEBAIFdJTkRPVyB3IEFTICgKIEVSUk9SOiAgREVGSU5FIHZhcmlhYmxlICJiIiBpcyBu b3QgdXNlZCBpbiBQQVRURVJOCiBMSU5FIDc6ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IEIudmFsID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0 ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICJi LnZhbCIgaXMgbm90IHN1cHBvcnRlZAorLS0gRXhwZWN0ZWQ6IEVSUk9SOiBwYXR0ZXJuIHZhcmlh YmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJiLnZhbCIgaXMgbm90IHN1cHBvcnRlZAogLS0gRlJP TS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBhbGxvd2VkIChwcm9o aWJpdGVkIGJ5IFNRTCBzdGFuZGFyZCA2LjUpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CiBGUk9N IHJwcl9lcnIKQEAgLTMxMTMsMTAgKzMxMTMsNzYgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRF Uk4gKEErKQogICAgIERFRklORSBBIEFTIHJwcl9lcnIudmFsID4gMAogKTsKLUVSUk9SOiAgcmFu Z2UgdmFyaWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgInJwcl9lcnIudmFsIiBpcyBu b3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitFUlJPUjogIHJhbmdlIHZhcmlhYmxlIHF1YWxp ZmllZCBleHByZXNzaW9uICJycHJfZXJyLnZhbCIgaXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNs YXVzZQogTElORSA3OiAgICAgREVGSU5FIEEgQVMgcnByX2Vyci52YWwgPiAwCiAgICAgICAgICAg ICAgICAgICAgICAgICBeCi0tLSBFeHBlY3RlZDogRVJST1I6IHJhbmdlIHZhcmlhYmxlIHF1YWxp ZmllZCBjb2x1bW4gcmVmZXJlbmNlICJycHJfZXJyLnZhbCIgaXMgbm90IGFsbG93ZWQKKy0tIEV4 cGVjdGVkOiBFUlJPUjogcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gInJwcl9l cnIudmFsIiBpcyBub3QgYWxsb3dlZAorLS0gVW5rbm93biBxdWFsaWZpZXIgKG5laXRoZXIgcGF0 dGVybiB2YXIgbm9yIHJhbmdlIHZhcik6IHRoZSBERUZJTkUgcHJlLWNoZWNrCistLSBtdXN0IGZh bGwgdGhyb3VnaCBzbyB0aGF0IG5vcm1hbCBjb2x1bW4gcmVzb2x1dGlvbiBwcm9kdWNlcyBhIHNl bnNpYmxlIGVycm9yLgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyBub3N1Y2gudmFsID4gMAorKTsKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBm b3IgdGFibGUgIm5vc3VjaCIKK0xJTkUgNzogICAgIERFRklORSBBIEFTIG5vc3VjaC52YWwgPiAw CisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRVJST1I6IG1pc3Npbmcg RlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJub3N1Y2giCistLSBVbnF1YWxpZmllZCBjb21w b3NpdGUgZmllbGQgYWNjZXNzIGluIERFRklORSB3b3Jrczogbm8gcXVhbGlmaWVyIG1lYW5zIG5v CistLSBwYXR0ZXJuL3JhbmdlLXZhciBuYXZpZ2F0aW9uLCBzbyB0aGUgcHJlLWNoZWNrIHNraXBz IGFuZCBub3JtYWwgcmVzb2x1dGlvbgorLS0gaGFuZGxlcyAiKGl0ZW1zKS5hbW91bnQiIHZpYSBB X0luZGlyZWN0aW9uIG9uIHRoZSBjdXJyZW50IHJvdy4KK0NSRUFURSBUWVBFIHJwcl9pdGVtIEFT IChuYW1lIFRFWFQsIGFtb3VudCBJTlQpOworQ1JFQVRFIFRFTVAgVEFCTEUgcnByX2NvbXBvc2l0 ZSAoaWQgaW50LCBpdGVtcyBycHJfaXRlbSk7CitJTlNFUlQgSU5UTyBycHJfY29tcG9zaXRlIFZB TFVFUyAoMSwgUk9XKCdhJyw1KSksICgyLCBST1coJ2InLDE1KSksICgzLCBST1coJ2MnLDI1KSk7 CitTRUxFQ1QgaWQsIChpdGVtcykuYW1vdW50LCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9N IHJwcl9jb21wb3NpdGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAo aXRlbXMpLmFtb3VudCA+IDEwCispOworIGlkIHwgYW1vdW50IHwgY250IAorLS0tLSstLS0tLS0t LSstLS0tLQorICAxIHwgICAgICA1IHwgICAwCisgIDIgfCAgICAgMTUgfCAgIDIKKyAgMyB8ICAg ICAyNSB8ICAgMQorKDMgcm93cykKKworLS0gRXhwZWN0ZWQ6IHJvd3Mgd2hlcmUgKGl0ZW1zKS5h bW91bnQgPiAxMCBmb3JtIG1hdGNoZXM7IGNvdW50cyByZWZsZWN0IGZyYW1lIHNpemUKKy0tIENv bXBvc2l0ZSB0eXBlIGZpZWxkIHNlbGVjdGlvbiAocXVhbGlmaWVkIGZvcm1zKTogdGhlIENvbHVt blJlZiBwb3J0aW9uICgiQS5pdGVtcyIgb3IKKy0tICJycHJfY29tcG9zaXRlLml0ZW1zIikgaXMg d2hhdCBnZXRzIHF1b3RlZDsgdGhlIHRyYWlsaW5nICIuYW1vdW50IiBsaXZlcyBpbgorLS0gdGhl IHN1cnJvdW5kaW5nIEFfSW5kaXJlY3Rpb24gbm9kZSBhbmQgaXMgbm90IHZpc2libGUgdG8gdGhl IHByZS1jaGVjay4KK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2NvbXBvc2l0ZQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgKEEuaXRlbXMpLmFtb3VudCA+IDEwCispOworRVJST1I6ICBwYXR0ZXJuIHZhcmlhYmxl IHF1YWxpZmllZCBleHByZXNzaW9uICJhLml0ZW1zIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklO RSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIChBLml0ZW1zKS5hbW91bnQgPiAxMAor ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2 YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAiYS5pdGVtcyIgaXMgbm90IHN1cHBvcnRlZAor U0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAocnByX2Nv bXBvc2l0ZS5pdGVtcykuYW1vdW50ID4gMTAKKyk7CitFUlJPUjogIHJhbmdlIHZhcmlhYmxlIHF1 YWxpZmllZCBleHByZXNzaW9uICJycHJfY29tcG9zaXRlLml0ZW1zIiBpcyBub3QgYWxsb3dlZCBp biBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyAocnByX2NvbXBvc2l0ZS5p dGVtcykuYW1vdW50ID4gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFeHBlY3Rl ZDogRVJST1I6IHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJycHJfY29tcG9z aXRlLml0ZW1zIiBpcyBub3QgYWxsb3dlZAorRFJPUCBUQUJMRSBycHJfY29tcG9zaXRlOworRFJP UCBUWVBFIHJwcl9pdGVtOwogLS0gU2VtYW50aWMgZXJyb3JzCiAtLSBVbmRlZmluZWQgY29sdW1u IGluIERFRklORQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uu c3FsCmluZGV4IDg2ZWQwNmZlYzY4Li5lOGM3MjcwNjcyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9i YXNlLnNxbApAQCAtMjA5Miw3ICsyMDkyLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEErKQogICAgIERFRklORSBBIEFTIEEudmFsID4gMAogKTsKLS0tIEV4cGVjdGVkOiBFUlJPUjog cGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAiYS52YWwiIGlzIG5v dCBzdXBwb3J0ZWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZp ZWQgZXhwcmVzc2lvbiAiYS52YWwiIGlzIG5vdCBzdXBwb3J0ZWQKIAogLS0gUEFUVEVSTi1vbmx5 IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3Qgc3VwcG9ydGVkIGV2ZW4gd2l0aG91dCBERUZJ TkUgZW50cnkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKQEAgLTIxMDMsNyArMjEwMyw3IEBAIFdJ TkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKykKICAgICBERUZJTkUgQSBBUyBCLnZhbCA+ IDAKICk7Ci0tLSBFeHBlY3RlZDogRVJST1I6IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGNv bHVtbiByZWZlcmVuY2UgImIudmFsIiBpcyBub3Qgc3VwcG9ydGVkCistLSBFeHBlY3RlZDogRVJS T1I6IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIudmFsIiBpcyBub3Qg c3VwcG9ydGVkCiAKIC0tIERFRklORS1vbmx5IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBzdGls bCBhIHBhdHRlcm4gdmFyaWFibGUsIG5vdCBhIHJhbmdlIHZhcmlhYmxlCiBTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CkBAIC0yMTE0LDcgKzIxMTQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVS TiAoQSspCiAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyBCLnZhbCA+IDAKICk7Ci0tLSBF eHBlY3RlZDogRVJST1I6IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVu Y2UgImIudmFsIiBpcyBub3Qgc3VwcG9ydGVkCistLSBFeHBlY3RlZDogRVJST1I6IHBhdHRlcm4g dmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIudmFsIiBpcyBub3Qgc3VwcG9ydGVkCiAK IC0tIEZST00tY2xhdXNlIHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3QgYWxsb3dl ZCAocHJvaGliaXRlZCBieSBTUUwgc3RhbmRhcmQgNi41KQogU0VMRUNUIENPVU5UKCopIE9WRVIg dwpAQCAtMjEyNSw3ICsyMTI1LDYwIEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKykK ICAgICBERUZJTkUgQSBBUyBycHJfZXJyLnZhbCA+IDAKICk7Ci0tLSBFeHBlY3RlZDogRVJST1I6 IHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICJycHJfZXJyLnZhbCIg aXMgbm90IGFsbG93ZWQKKy0tIEV4cGVjdGVkOiBFUlJPUjogcmFuZ2UgdmFyaWFibGUgcXVhbGlm aWVkIGV4cHJlc3Npb24gInJwcl9lcnIudmFsIiBpcyBub3QgYWxsb3dlZAorCistLSBVbmtub3du IHF1YWxpZmllciAobmVpdGhlciBwYXR0ZXJuIHZhciBub3IgcmFuZ2UgdmFyKTogdGhlIERFRklO RSBwcmUtY2hlY2sKKy0tIG11c3QgZmFsbCB0aHJvdWdoIHNvIHRoYXQgbm9ybWFsIGNvbHVtbiBy ZXNvbHV0aW9uIHByb2R1Y2VzIGEgc2Vuc2libGUgZXJyb3IuCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIG5vc3VjaC52YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6 IEVSUk9SOiBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAibm9zdWNoIgorCist LSBVbnF1YWxpZmllZCBjb21wb3NpdGUgZmllbGQgYWNjZXNzIGluIERFRklORSB3b3Jrczogbm8g cXVhbGlmaWVyIG1lYW5zIG5vCistLSBwYXR0ZXJuL3JhbmdlLXZhciBuYXZpZ2F0aW9uLCBzbyB0 aGUgcHJlLWNoZWNrIHNraXBzIGFuZCBub3JtYWwgcmVzb2x1dGlvbgorLS0gaGFuZGxlcyAiKGl0 ZW1zKS5hbW91bnQiIHZpYSBBX0luZGlyZWN0aW9uIG9uIHRoZSBjdXJyZW50IHJvdy4KK0NSRUFU RSBUWVBFIHJwcl9pdGVtIEFTIChuYW1lIFRFWFQsIGFtb3VudCBJTlQpOworQ1JFQVRFIFRFTVAg VEFCTEUgcnByX2NvbXBvc2l0ZSAoaWQgaW50LCBpdGVtcyBycHJfaXRlbSk7CitJTlNFUlQgSU5U TyBycHJfY29tcG9zaXRlIFZBTFVFUyAoMSwgUk9XKCdhJyw1KSksICgyLCBST1coJ2InLDE1KSks ICgzLCBST1coJ2MnLDI1KSk7CitTRUxFQ1QgaWQsIChpdGVtcykuYW1vdW50LCBDT1VOVCgqKSBP VkVSIHcgQVMgY250CitGUk9NIHJwcl9jb21wb3NpdGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyAoaXRlbXMpLmFtb3VudCA+IDEwCispOworLS0gRXhwZWN0ZWQ6IHJv d3Mgd2hlcmUgKGl0ZW1zKS5hbW91bnQgPiAxMCBmb3JtIG1hdGNoZXM7IGNvdW50cyByZWZsZWN0 IGZyYW1lIHNpemUKKworLS0gQ29tcG9zaXRlIHR5cGUgZmllbGQgc2VsZWN0aW9uIChxdWFsaWZp ZWQgZm9ybXMpOiB0aGUgQ29sdW1uUmVmIHBvcnRpb24gKCJBLml0ZW1zIiBvcgorLS0gInJwcl9j b21wb3NpdGUuaXRlbXMiKSBpcyB3aGF0IGdldHMgcXVvdGVkOyB0aGUgdHJhaWxpbmcgIi5hbW91 bnQiIGxpdmVzIGluCistLSB0aGUgc3Vycm91bmRpbmcgQV9JbmRpcmVjdGlvbiBub2RlIGFuZCBp cyBub3QgdmlzaWJsZSB0byB0aGUgcHJlLWNoZWNrLgorU0VMRUNUIENPVU5UKCopIE9WRVIgdwor RlJPTSBycHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAoQS5pdGVtcykuYW1vdW50ID4gMTAKKyk7CistLSBF eHBlY3RlZDogRVJST1I6IHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImEu aXRlbXMiIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2NvbXBvc2l0ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgKHJwcl9jb21wb3NpdGUuaXRlbXMpLmFtb3VudCA+IDEwCispOwor LS0gRXhwZWN0ZWQ6IEVSUk9SOiByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAi cnByX2NvbXBvc2l0ZS5pdGVtcyIgaXMgbm90IGFsbG93ZWQKK0RST1AgVEFCTEUgcnByX2NvbXBv c2l0ZTsKK0RST1AgVFlQRSBycHJfaXRlbTsKIAogLS0gU2VtYW50aWMgZXJyb3JzCiAKLS0gCjIu NTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-Sync-DEFINE-PATTERN-comments.txt" Content-Disposition: attachment; filename="nocfbot-0005-Sync-DEFINE-PATTERN-comments.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh65pf4 RnJvbSAwNmM0OTM2NjhiNjUzMzVjOGNlZThiMmY1ODgzNmQ0NmFkNTcyMTVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTE6NDQ6NDUgKzA5MDAKU3ViamVjdDogW1BBVENIIDUvOV0gU3lu YyBzdGFsZSBjb21tZW50cyBvbiBERUZJTkUvUEFUVEVSTiBoYW5kbGluZwoKdmFsaWRhdGVSUFJQ YXR0ZXJuVmFyQ291bnQoKSB2YWxpZGF0ZXMgREVGSU5FIG5hbWVzIGFnYWluc3QgdGhlClBBVFRF Uk4gbGlzdCBhbmQgcmVqZWN0cyBhbnkgbm90IHVzZWQgaW4gUEFUVEVSTjsgdGhlIHN1cnJvdW5k aW5nCmNvbW1lbnRzIHNhaWQgaXQgImNvbGxlY3RlZCIgdGhlbS4gIEFsaWduIHRoZSBmdW5jdGlv biBoZWFkZXIsCmlubGluZSBibG9jayBjb21tZW50LCBhbmQgdGhlIGNhbGwtc2l0ZSBjb21tZW50 LiAgQWxzbyBmaXggdGhlCm1hdGNoaW5nIFNFTEVDVCBkb2MgKCJmaWx0ZXJlZCBkdXJpbmcgcGxh bm5pbmciIC0+ICJyZWplY3RlZCB3aXRoCmFuIGVycm9yIikgYW5kIHRoZSBYWFggbm90ZSdzIHdv cmRpbmcuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbCAgIHwgIDQgKystLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9zZWxlY3Quc2dtbAppbmRleCA1MjcyZDZjMGJmYS4uZTQ3MDgzMzE0MzkgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9z ZWxlY3Quc2dtbApAQCAtMTE5Miw4ICsxMTkyLDggQEAgREVGSU5FIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5kZWZpbml0aW9uX3ZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBBUwog PC9zeW5vcHNpcz4KIAogICAgIENvbnZlcnNlbHksIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSA8 bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZQotICAgIGJ1dCBub3QgdXNlZCBpbiB0aGUg PGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gY2xhdXNlIGFyZSBmaWx0ZXJlZCBvdXQKLSAgICBk dXJpbmcgcXVlcnkgcGxhbm5pbmcuCisgICAgYnV0IG5vdCB1c2VkIGluIHRoZSA8bGl0ZXJhbD5Q QVRURVJOPC9saXRlcmFsPiBjbGF1c2UgYXJlIHJlamVjdGVkCisgICAgd2l0aCBhbiBlcnJvci4K ICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfcnByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5kZXggMzI3MDFm OWI3NGIuLjllZDEyYzdlYzYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cnByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC0xODMsMTEgKzE4 MywxMSBAQCB0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndj LCBXaW5kb3dEZWYgKndpbmRlZiwKICAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgcGF0dGVy biB0cmVlLCBjb2xsZWN0aW5nIHVuaXF1ZSB2YXJpYWJsZSBuYW1lcy4KICAqIFRocm93cyBhbiBl cnJvciBpZiB0aGUgbnVtYmVyIG9mIHVuaXF1ZSB2YXJpYWJsZXMgZXhjZWVkcyBSUFJfVkFSSURf TUFYLgogICoKLSAqIElmIHJwRGVmcyBpcyBub24tTlVMTCwgREVGSU5FIHZhcmlhYmxlIG5hbWVz IGFyZSBhbHNvIGNvbGxlY3RlZCBpbnRvCi0gKiB2YXJOYW1lcyBzbyB0aGF0IHRyYW5zZm9ybUNv bHVtblJlZiBjYW4gZGlzdGluZ3Vpc2ggcGF0dGVybiB2YXJpYWJsZQotICogcXVhbGlmaWVycyBm cm9tIEZST00tY2xhdXNlIHJhbmdlIHZhcmlhYmxlcy4KLSAqCi0gKiB2YXJOYW1lcyBpcyBib3Ro IGlucHV0IGFuZCBvdXRwdXQ6IGV4aXN0aW5nIG5hbWVzIGFyZSBwcmVzZXJ2ZWQsIG5ldyBvbmVz IGFkZGVkLgorICogSWYgcnBEZWZzIGlzIG5vbi1OVUxMLCBlYWNoIERFRklORSB2YXJpYWJsZSBu YW1lIGlzIGFsc28gdmFsaWRhdGVkIGFnYWluc3QKKyAqIHZhck5hbWVzOyBhbnkgREVGSU5FIG5h bWUgbm90IHByZXNlbnQgaW4gUEFUVEVSTiBpcyByZWplY3RlZCB3aXRoIGFuIGVycm9yLgorICog dmFyTmFtZXMgaXRzZWxmIGlzIG5vdCBleHRlbmRlZCBieSB0aGlzIHN0ZXAgLS0gaXQgY2Fycmll cyBvbmx5IFBBVFRFUk4KKyAqIHZhcmlhYmxlIG5hbWVzLCB3aGljaCBpcyB3aGF0IHRyYW5zZm9y bUNvbHVtblJlZiBjaGVja3MgdmlhCisgKiBwX3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gaWRlbnRpZnkg cGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZXJzLgogICovCiBzdGF0aWMgdm9pZAogdmFsaWRhdGVS UFJQYXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9k ZSwKQEAgLTI0NCwxMCArMjQ0LDEwIEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNl U3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJfQogCiAJLyoKLQkgKiBBZnRl ciB0aGUgdG9wLWxldmVsIGNhbGwsIGFsc28gY29sbGVjdCBERUZJTkUgdmFyaWFibGUgbmFtZXMg dGhhdCBhcmUKLQkgKiBub3QgYWxyZWFkeSBpbiB0aGUgbGlzdC4gIFRoaXMgaXMgb25seSBkb25l IG9uY2UgYXQgdGhlIG91dGVybW9zdAotCSAqIHJlY3Vyc2lvbiBsZXZlbCwgZGV0ZWN0ZWQgYnkg cnBEZWZzIGJlaW5nIG5vbi1OVUxMIChyZWN1cnNpdmUgY2FsbHMKLQkgKiBwYXNzIE5VTEwpLgor CSAqIEFmdGVyIHRoZSB0b3AtbGV2ZWwgY2FsbCwgdmFsaWRhdGUgdGhhdCBldmVyeSBERUZJTkUg dmFyaWFibGUgbmFtZSBpcworCSAqIHByZXNlbnQgaW4gdGhlIFBBVFRFUk4gdmFyaWFibGUgbGlz dDsgcmVqZWN0IG5hbWVzIG5vdCB1c2VkIGluIFBBVFRFUk4uCisJICogVGhpcyBpcyBvbmx5IGRv bmUgb25jZSBhdCB0aGUgb3V0ZXJtb3N0IHJlY3Vyc2lvbiBsZXZlbCwgZGV0ZWN0ZWQgYnkKKwkg KiBycERlZnMgYmVpbmcgbm9uLU5VTEwgKHJlY3Vyc2l2ZSBjYWxscyBwYXNzIE5VTEwpLgogCSAq LwogCWlmIChycERlZnMpCiAJewpAQCAtMjkzLDkgKzI5Myw5IEBAIHZhbGlkYXRlUlBSUGF0dGVy blZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAgKiBO b3RlOiBWYXJpYWJsZXMgbm90IGluIERFRklORSBhcmUgZXZhbHVhdGVkIGFzIFRSVUUgYnkgdGhl IGV4ZWN1dG9yLgogICogVmFyaWFibGVzIGluIERFRklORSBidXQgbm90IGluIFBBVFRFUk4gYXJl IHJlamVjdGVkIGFzIGFuIGVycm9yLgogICoKLSAqIFhYWCBQYXR0ZXJuIHZhcmlhYmxlIHF1YWxp ZmllZCBjb2x1bW4gcmVmZXJlbmNlcyBpbiBERUZJTkUgKGUuZy4KLSAqICJBLnByaWNlIikgYXJl IG5vdCB5ZXQgc3VwcG9ydGVkLiAgQ3VycmVudGx5IHJlamVjdGVkIGJ5Ci0gKiB0cmFuc2Zvcm1D b2x1bW5SZWYgaW4gcGFyc2VfZXhwci5jIHZpYSB0aGUgcF9ycHJfcGF0dGVybl92YXJzIGNoZWNr LgorICogWFhYIFBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb25zIGluIERFRklO RSAoZS5nLiAiQS5wcmljZSIpCisgKiBhcmUgbm90IHlldCBzdXBwb3J0ZWQuICBDdXJyZW50bHkg cmVqZWN0ZWQgYnkgdHJhbnNmb3JtQ29sdW1uUmVmIGluCisgKiBwYXJzZV9leHByLmMgdmlhIHRo ZSBwX3Jwcl9wYXR0ZXJuX3ZhcnMgY2hlY2suCiAgKi8KIHN0YXRpYyBMaXN0ICoKIHRyYW5zZm9y bURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRv d0RlZiAqd2luZGVmLApAQCAtMzE3LDggKzMxNyw4IEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQ YXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAog CUFzc2VydCh3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMgIT0gTlVMTCk7CiAKIAkvKgot CSAqIFZhbGlkYXRlIFBBVFRFUk4gdmFyaWFibGUgY291bnQgYW5kIGNvbGxlY3QgYWxsIFJQUiB2 YXJpYWJsZSBuYW1lcwotCSAqIChQQVRURVJOICsgREVGSU5FKSBmb3IgdXNlIGluIHRyYW5zZm9y bUNvbHVtblJlZi4KKwkgKiBWYWxpZGF0ZSBQQVRURVJOIHZhcmlhYmxlIGNvdW50LCByZWplY3Qg REVGSU5FIHZhcmlhYmxlcyBub3QgdXNlZCBpbgorCSAqIFBBVFRFUk4sIGFuZCBjb2xsZWN0IFBB VFRFUk4gdmFyaWFibGUgbmFtZXMgZm9yIHRyYW5zZm9ybUNvbHVtblJlZi4KIAkgKi8KIAl2YWxp ZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChwc3RhdGUsIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJw UGF0dGVybiwKIAkJCQkJCQkgICB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMsCi0tIAoy LjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Trailing-commas-RPR-enums.txt" Content-Disposition: attachment; filename="nocfbot-0006-Trailing-commas-RPR-enums.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh67hx5 RnJvbSA5YTlkY2QxYjUxODY3MTg1MzMxMDkyYjk0MWM0NjdmOTM1NDk4MzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTc6MjE6NTYgKzA5MDAKU3ViamVjdDogW1BBVENIIDYvOV0gQWRk IHRyYWlsaW5nIGNvbW1hcyB0byBSUFIgZW51bSBkZWZpbml0aW9ucwoKUlBSTmF2S2luZCwgUlBS TmF2T2Zmc2V0S2luZCwgUlBSUGF0dGVybk5vZGVUeXBlIGxhY2tlZCBhIHRyYWlsaW5nCmNvbW1h IG9uIHRoZSBsYXN0IGVudW1lcmF0b3IsIGNvbnRyYXJ5IHRvIHByb2plY3QgY29kaW5nIHN0eWxl LgotLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCB8IDQgKystLQogc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmggIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ1NWRiMmNl YzYxLi5hZGVmYjFkNWJhZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNjA0LDcgKzYwNCw3 IEBAIHR5cGVkZWYgZW51bSBSUFJOYXZPZmZzZXRLaW5kCiAJUlBSX05BVl9PRkZTRVRfRklYRUQs CQkvKiByZXNvbHZlZCBjb25zdGFudDsgdXNlIHRoZSBvZmZzZXQgdmFsdWUgKi8KIAlSUFJfTkFW X09GRlNFVF9ORUVEU19FVkFMLAkvKiBub24tY29uc3RhbnQgb2Zmc2V0OyBldmFsdWF0ZSBhdCBl eGVjdXRvcgogCQkJCQkJCQkgKiBpbml0ICovCi0JUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTAkv KiBjYW5ub3QgZGV0ZXJtaW5lOyByZXRhaW4gYWxsIHJvd3MgKG5vIHRyaW0pICovCisJUlBSX05B Vl9PRkZTRVRfUkVUQUlOX0FMTCwJLyogY2Fubm90IGRldGVybWluZTsgcmV0YWluIGFsbCByb3dz IChubyB0cmltKSAqLwogfSBSUFJOYXZPZmZzZXRLaW5kOwogCiAvKgpAQCAtNjE1LDcgKzYxNSw3 IEBAIHR5cGVkZWYgZW51bSBSUFJQYXR0ZXJuTm9kZVR5cGUKIAlSUFJfUEFUVEVSTl9WQVIsCQkJ LyogdmFyaWFibGUgcmVmZXJlbmNlICovCiAJUlBSX1BBVFRFUk5fU0VRLAkJCS8qIHNlcXVlbmNl IChjb25jYXRlbmF0aW9uKSAqLwogCVJQUl9QQVRURVJOX0FMVCwJCQkvKiBhbHRlcm5hdGlvbiAo fCkgKi8KLQlSUFJfUEFUVEVSTl9HUk9VUAkJCS8qIGdyb3VwIChwYXJlbnRoZXNlcykgKi8KKwlS UFJfUEFUVEVSTl9HUk9VUCwJCQkvKiBncm91cCAocGFyZW50aGVzZXMpICovCiB9IFJQUlBhdHRl cm5Ob2RlVHlwZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggNjU2YzU1MmIwYTguLmQ3 MTM4ZjUxNDFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNjg0LDcgKzY4NCw3IEBAIHR5cGVk ZWYgZW51bSBSUFJOYXZLaW5kCiAJUlBSX05BVl9QUkVWX0ZJUlNULAogCVJQUl9OQVZfUFJFVl9M QVNULAogCVJQUl9OQVZfTkVYVF9GSVJTVCwKLQlSUFJfTkFWX05FWFRfTEFTVAorCVJQUl9OQVZf TkVYVF9MQVNULAogfSBSUFJOYXZLaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBSUFJOYXZFeHByCi0t IAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0007-ereport-outer-parens.txt" Content-Disposition: attachment; filename="nocfbot-0007-ereport-outer-parens.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh69mk6 RnJvbSBlZDQ4MGExNjVmNWQ1NGVkNmEwOTRjOGJiZDc3ZjUyZGM5OTgwZjdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDUgTWF5IDIwMjYgMTc6Mjc6NTEgKzA5MDAKU3ViamVjdDogW1BBVENIIDcvOV0gUmVt b3ZlIG9wdGlvbmFsIG91dGVyIHBhcmVudGhlc2VzIGZyb20gZXJlcG9ydCgpIGNhbGxzIGluCiBS UFIgZmlsZXMKClBlciBwcm9qZWN0IGNvZGluZyBzdHlsZSwgdGhlIG91dGVyIHBhcmVudGhlc2Vz IHdyYXBwaW5nIGVycmNvZGUvCmVycm1zZy9ldGMuIGFyZ3VtZW50cyBpbiBlcmVwb3J0KCkgYXJl IG9wdGlvbmFsIGFuZCBzaG91bGQgYmUgb21pdHRlZC4KQXBwbGllcyB0byBwYXJzZV9ycHIuYywg b3B0aW1pemVyL3BsYW4vcnByLmMsIGFuZCBncmFtLnkuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcnByLmMgfCAgMTYgKystLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgfCAgNzIgKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5j ICAgfCAxNDAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2Vk LCAxMTQgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cnByLmMKaW5kZXggYTgxN2ViNGE2M2YuLmVkOGI2YzM0MTRjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9ycHIuYwpAQCAtMTAyNywxMCArMTAyNywxMCBAQCBzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShS UFJQYXR0ZXJuTm9kZSAqbm9kZSwgY2hhciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMsCiAJLyog Q2hlY2sgcmVjdXJzaW9uIGRlcHRoIGxpbWl0IGJlZm9yZSBvdmVyZmxvdyBvY2N1cnMgKi8KIAlp ZiAoZGVwdGggPj0gUlBSX0RFUFRIX01BWCkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJtc2coInBhdHRlcm4g bmVzdGluZyB0b28gZGVlcCIpLAotCQkJCSBlcnJkZXRhaWwoIlBhdHRlcm4gbmVzdGluZyBkZXB0 aCAlZCBleGNlZWRzIG1heGltdW0gJWQuIiwKLQkJCQkJCSAgIGRlcHRoLCBSUFJfREVQVEhfTUFY IC0gMSkpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCisJ CQkJZXJybXNnKCJwYXR0ZXJuIG5lc3RpbmcgdG9vIGRlZXAiKSwKKwkJCQllcnJkZXRhaWwoIlBh dHRlcm4gbmVzdGluZyBkZXB0aCAlZCBleGNlZWRzIG1heGltdW0gJWQuIiwKKwkJCQkJCSAgZGVw dGgsIFJQUl9ERVBUSF9NQVggLSAxKSk7CiAKIAkvKiBUcmFjayBtYXhpbXVtIGRlcHRoICovCiAJ aWYgKGRlcHRoID4gKm1heERlcHRoKQpAQCAtMTEyMCwxMCArMTEyMCwxMCBAQCBzY2FuUlBSUGF0 dGVybihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY2hhciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMs CiAKIAlpZiAoKm51bUVsZW1lbnRzID4gUlBSX0VMRU1JRFhfTUFYKQogCQllcmVwb3J0KEVSUk9S LAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVy cm1zZygicGF0dGVybiB0b28gY29tcGxleCIpLAotCQkJCSBlcnJkZXRhaWwoIlBhdHRlcm4gaGFz ICVkIGVsZW1lbnRzLCBtYXhpbXVtIGlzICVkLiIsCi0JCQkJCQkgICAqbnVtRWxlbWVudHMsIFJQ Ul9FTEVNSURYX01BWCkpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENF RURFRCksCisJCQkJZXJybXNnKCJwYXR0ZXJuIHRvbyBjb21wbGV4IiksCisJCQkJZXJyZGV0YWls KCJQYXR0ZXJuIGhhcyAlZCBlbGVtZW50cywgbWF4aW11bSBpcyAlZC4iLAorCQkJCQkJICAqbnVt RWxlbWVudHMsIFJQUl9FTEVNSURYX01BWCkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZjNj ZWRmYmJiMTguLmFhNTg3ZTZhY2VkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTE3NjEwLDEwICsxNzYxMCwx MCBAQCBvcHRfcm93X3BhdHRlcm5faW5pdGlhbF9vcl9zZWVrOgogCQkJfCBTRUVLCiAJCQkJewog CQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKLQkJCQkJCQkgZXJybXNnKCJTRUVLIGlzIG5vdCBzdXBwb3J0ZWQiKSwKLQkJ CQkJCQkgZXJyaGludCgiVXNlIElOSVRJQUwgaW5zdGVhZC4iKSwKLQkJCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKEAxKSkpOworCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJCWVycm1zZygiU0VFSyBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCQkJ ZXJyaGludCgiVXNlIElOSVRJQUwgaW5zdGVhZC4iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRp b24oQDEpKTsKIAkJCQl9CiAJCQl8IC8qRU1QVFkqLwkJeyAkJCA9IHRydWU7IH0KIAkJOwpAQCAt MTc3NDAsNDAgKzE3NzQwLDQwIEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCQkJ JCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCBAMSArIDEsIEAxLCB5eXNjYW5u ZXIpOwogCQkJCQllbHNlCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2coInVuc3VwcG9ydGVkIHF1YW50 aWZpZXIgXCIlc1wiIiwgJDEpLAotCQkJCQkJCQkgZXJyaGludCgiVmFsaWQgcXVhbnRpZmllcnMg YXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19IGFuZCB0aGVp ciByZWx1Y3RhbnQgdmVyc2lvbnMuIiksCi0JCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDEp KSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJt c2coInVuc3VwcG9ydGVkIHF1YW50aWZpZXIgXCIlc1wiIiwgJDEpLAorCQkJCQkJCQllcnJoaW50 KCJWYWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwg eyxtfSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4iKSwKKwkJCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKEAxKSk7CiAJCQkJfQogCQkJLyogUkVMVUNUQU5UIHF1YW50aWZpZXJz ICh3aGVuIGxleGVyIHNlcGFyYXRlcyB0b2tlbnMpICovCiAJCQl8ICcqJyBPcAogCQkJCXsKIAkJ CQkJaWYgKHN0cmNtcCgkMiwgIj8iKSAhPSAwKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQkgZXJybXNnKCJpbnZh bGlkIHRva2VuIGFmdGVyIFwiKlwiIHF1YW50aWZpZXIiKSwKLQkJCQkJCQkJIGVycmhpbnQoIkRp ZCB5b3UgbWVhbiBcIio/XCIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAotCQkJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKEAyKSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIFwiKlwiIHF1YW50 aWZpZXIiKSwKKwkJCQkJCQkJZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiKj9cIiBmb3IgcmVsdWN0 YW50IHF1YW50aWZpZXI/IiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOwogCQkJ CQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIElOVF9NQVgsIEAyLCBAMSwgeXlz Y2FubmVyKTsKIAkJCQl9CiAJCQl8ICcrJyBPcAogCQkJCXsKIAkJCQkJaWYgKHN0cmNtcCgkMiwg Ij8iKSAhPSAwKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIFwi K1wiIHF1YW50aWZpZXIiKSwKLQkJCQkJCQkJIGVycmhpbnQoIkRpZCB5b3UgbWVhbiBcIis/XCIg Zm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KEAyKSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJ ZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIFwiK1wiIHF1YW50aWZpZXIiKSwKKwkJCQkJCQkJ ZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiKz9cIiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/Iiks CisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOwogCQkJCQkkJCA9IChOb2RlICopIG1h a2VSUFJRdWFudGlmaWVyKDEsIElOVF9NQVgsIEAyLCBAMSwgeXlzY2FubmVyKTsKIAkJCQl9CiAJ CQl8IE9wIE9wCiAJCQkJewogCQkJCQlpZiAoc3RyY21wKCQxLCAiPyIpICE9IDAgfHwgc3RyY21w KCQyLCAiPyIpICE9IDApCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2coImludmFsaWQgcXVhbnRpZmll ciBjb21iaW5hdGlvbiIpLAotCQkJCQkJCQkgZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiPz9cIiBm b3IgcmVsdWN0YW50IHF1YW50aWZpZXI/IiksCi0JCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o QDEpKSk7CisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQll cnJtc2coImludmFsaWQgcXVhbnRpZmllciBjb21iaW5hdGlvbiIpLAorCQkJCQkJCQllcnJoaW50 KCJEaWQgeW91IG1lYW4gXCI/P1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKKwkJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKEAxKSk7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1 YW50aWZpZXIoMCwgMSwgQDIsIEAxLCB5eXNjYW5uZXIpOwogCQkJCX0KIAkJCS8qIHtufSwge24s fSwgeyxtfSwge24sbX0gcXVhbnRpZmllcnMgKi8KQEAgLTE3ODIzLDEwICsxNzgyMywxMCBAQCBy b3dfcGF0dGVybl9xdWFudGlmaWVyX29wdDoKIAkJCQl7CiAJCQkJCWlmIChzdHJjbXAoJDQsICI/ IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJIGVycm1zZygiaW52YWxpZCB0b2tlbiBhZnRlciByYW5n ZSBxdWFudGlmaWVyIiksCi0JCQkJCQkJCSBlcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQg YWZ0ZXIge259IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKEA0KSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwKKwkJ CQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtufSB0byBtYWtlIGl0 IHJlbHVjdGFudC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEA0KSk7CiAJCQkJCWlm ICgkMiA8PSAwIHx8ICQyID49IElOVF9NQVgpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTE3ODM4LDEwICsxNzgzOCwxMCBA QCByb3dfcGF0dGVybl9xdWFudGlmaWVyX29wdDoKIAkJCQl7CiAJCQkJCWlmIChzdHJjbXAoJDUs ICI/IikgIT0gMCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJIGVycm1zZygiaW52YWxpZCB0b2tlbiBhZnRlciBy YW5nZSBxdWFudGlmaWVyIiksCi0JCQkJCQkJCSBlcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93 ZWQgYWZ0ZXIge24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAotCQkJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKEA1KSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50 aWZpZXIiKSwKKwkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtu LH0gb3IgeyxtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKEA1KSk7CiAJCQkJCWlmICgkMiA8IDAgfHwgJDIgPj0gSU5UX01BWCkKIAkJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAt MTc4NTMsMTAgKzE3ODUzLDEwIEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCXsK IAkJCQkJaWYgKHN0cmNtcCgkNSwgIj8iKSAhPSAwKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQkgZXJybXNnKCJp bnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiKSwKLQkJCQkJCQkJIGVycmhpbnQo Ik9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1 Y3RhbnQuIiksCi0JCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDUpKSk7CisJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgdG9r ZW4gYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIpLAorCQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wi IGlzIGFsbG93ZWQgYWZ0ZXIge24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAor CQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDUpKTsKIAkJCQkJaWYgKCQzIDw9IDAgfHwgJDMg Pj0gSU5UX01BWCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLApAQCAtMTc4NjgsMTAgKzE3ODY4LDEwIEBAIHJvd19wYXR0ZXJuX3F1 YW50aWZpZXJfb3B0OgogCQkJCXsKIAkJCQkJaWYgKHN0cmNtcCgkNiwgIj8iKSAhPSAwKQogCQkJ CQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAotCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHRva2VuIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIi KSwKLQkJCQkJCQkJIGVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bixtfSB0 byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihANikp KTsKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1z ZygiaW52YWxpZCB0b2tlbiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiksCisJCQkJCQkJCWVycmhp bnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRlciB7bixtfSB0byBtYWtlIGl0IHJlbHVjdGFu dC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEA2KSk7CiAJCQkJCWlmICgkMiA8IDAg fHwgJDQgPD0gMCB8fCAkMiA+PSBJTlRfTUFYIHx8ICQ0ID49IElOVF9NQVgpCiAJCQkJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ycHIuYwppbmRleCA5ZWQxMmM3ZWM2MS4uYzlmOWJiM2FkMzEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfcnByLmMKQEAgLTk1LDIwICs5NSwyMCBAQCB0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkvKiBGcmFtZSB0 eXBlIG11c3QgYmUgIlJPVyIgKi8KIAlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9O X0dST1VQUykKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1dJTkRPV0lO R19FUlJPUiksCi0JCQkJIGVycm1zZygiY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gR1JPVVBTIHdp dGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24iKSwKLQkJCQkgZXJyaGludCgiVXNlIFJPV1MgaW5z dGVhZC4iKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKLQkJCQkJCQkJCXdpbmRl Zi0+ZnJhbWVMb2NhdGlvbiA+PSAwID8KLQkJCQkJCQkJCXdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA6 IHdpbmRlZi0+bG9jYXRpb24pKSk7CisJCQkJZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJP UiksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBHUk9VUFMgd2l0aCByb3cg cGF0dGVybiByZWNvZ25pdGlvbiIpLAorCQkJCWVycmhpbnQoIlVzZSBST1dTIGluc3RlYWQuIiks CisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJICAgd2luZGVmLT5mcmFt ZUxvY2F0aW9uID49IDAgPworCQkJCQkJCQkgICB3aW5kZWYtPmZyYW1lTG9jYXRpb24gOiB3aW5k ZWYtPmxvY2F0aW9uKSk7CiAJaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9SQU5H RSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJP UiksCi0JCQkJIGVycm1zZygiY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gUkFOR0Ugd2l0aCByb3cg cGF0dGVybiByZWNvZ25pdGlvbiIpLAotCQkJCSBlcnJoaW50KCJVc2UgUk9XUyBpbnN0ZWFkLiIp LAotCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAotCQkJCQkJCQkJd2luZGVmLT5mcmFt ZUxvY2F0aW9uID49IDAgPwotCQkJCQkJCQkJd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVm LT5sb2NhdGlvbikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9SKSwKKwkJ CQllcnJtc2coImNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIFJBTkdFIHdpdGggcm93IHBhdHRlcm4g cmVjb2duaXRpb24iKSwKKwkJCQllcnJoaW50KCJVc2UgUk9XUyBpbnN0ZWFkLiIpLAorCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVMb2NhdGlv biA+PSAwID8KKwkJCQkJCQkJICAgd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVmLT5sb2Nh dGlvbikpOwogCiAJLyogRnJhbWUgbXVzdCBzdGFydCBhdCBjdXJyZW50IHJvdyAqLwogCWlmICgo d2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX0NVUlJFTlRfUk9XKSA9PSAwKQpA QCAtMTMwLDExICsxMzAsMTEgQEAgdHJhbnNmb3JtUlBSKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2lu ZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAJCQkgICAod2MtPmZyYW1lT3B0aW9u cyAmIEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9GT0xMT1dJTkcpKTsKIAogCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9SKSwKLQkJCQkgZXJybXNn KCJGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XIHdoZW4gdXNpbmcgcm93IHBhdHRlcm4g cmVjb2duaXRpb24iKSwKLQkJCQkgZXJyZGV0YWlsKCJDdXJyZW50IGZyYW1lIHN0YXJ0cyB3aXRo ICVzLiIsIHN0YXJ0Qm91bmQpLAotCQkJCSBlcnJoaW50KCJVc2U6ICVzIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIC4uLiIsIGZyYW1lVHlwZSksCi0JCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIHdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA+PSAwID8gd2luZGVmLT5mcmFtZUxvY2F0aW9uIDog d2luZGVmLT5sb2NhdGlvbikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9S KSwKKwkJCQllcnJtc2coIkZSQU1FIG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1cgd2hlbiB1c2lu ZyByb3cgcGF0dGVybiByZWNvZ25pdGlvbiIpLAorCQkJCWVycmRldGFpbCgiQ3VycmVudCBmcmFt ZSBzdGFydHMgd2l0aCAlcy4iLCBzdGFydEJvdW5kKSwKKwkJCQllcnJoaW50KCJVc2U6ICVzIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIC4uLiIsIGZyYW1lVHlwZSksCisJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgd2luZGVmLT5mcmFtZUxvY2F0aW9uID49IDAgPyB3aW5kZWYtPmZyYW1l TG9jYXRpb24gOiB3aW5kZWYtPmxvY2F0aW9uKSk7CiAJfQogCiAJLyogRVhDTFVERSBvcHRpb25z IGFyZSBub3QgcGVybWl0dGVkICovCkBAIC0xNTYsMTEgKzE1NiwxMSBAQCB0cmFuc2Zvcm1SUFIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwK IAkJCSAgICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRVhDTFVERV9USUVTKSk7CiAK IAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJPUiks Ci0JCQkJIGVycm1zZygiY2Fubm90IHVzZSBFWENMVURFIG9wdGlvbnMgd2l0aCByb3cgcGF0dGVy biByZWNvZ25pdGlvbiIpLAotCQkJCSBlcnJkZXRhaWwoIkZyYW1lIGRlZmluaXRpb24gaW5jbHVk ZXMgJXMuIiwgZXhjbHVkZVR5cGUpLAotCQkJCSBlcnJoaW50KCJSZW1vdmUgdGhlIEVYQ0xVREUg Y2xhdXNlIGZyb20gdGhlIHdpbmRvdyBkZWZpbml0aW9uLiIpLAotCQkJCSBwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCB3aW5kZWYtPmV4Y2x1ZGVMb2NhdGlvbiA+PSAwID8gd2luZGVmLT5leGNs dWRlTG9jYXRpb24gOiB3aW5kZWYtPmxvY2F0aW9uKSkpOworCQkJCWVycmNvZGUoRVJSQ09ERV9X SU5ET1dJTkdfRVJST1IpLAorCQkJCWVycm1zZygiY2Fubm90IHVzZSBFWENMVURFIG9wdGlvbnMg d2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiIpLAorCQkJCWVycmRldGFpbCgiRnJhbWUgZGVm aW5pdGlvbiBpbmNsdWRlcyAlcy4iLCBleGNsdWRlVHlwZSksCisJCQkJZXJyaGludCgiUmVtb3Zl IHRoZSBFWENMVURFIGNsYXVzZSBmcm9tIHRoZSB3aW5kb3cgZGVmaW5pdGlvbi4iKSwKKwkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB3aW5kZWYtPmV4Y2x1ZGVMb2NhdGlvbiA+PSAwID8g d2luZGVmLT5leGNsdWRlTG9jYXRpb24gOiB3aW5kZWYtPmxvY2F0aW9uKSk7CiAJfQogCiAJLyog VHJhbnNmb3JtIEFGVEVSIE1BVENIIFNLSVAgVE8gY2xhdXNlICovCkBAIC0yMjAsMTEgKzIyMCwx MSBAQCB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBh dHRlcm5Ob2RlICpub2RlLAogCQkJCQkvKiBDaGVjayBhZ2FpbnN0IFJQUl9WQVJJRF9NQVggYmVm b3JlIGFkZGluZyAqLwogCQkJCQlpZiAobGlzdF9sZW5ndGgoKnZhck5hbWVzKSA+PSBSUFJfVkFS SURfTUFYKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKLQkJCQkJCQkJIGVycm1zZygidG9vIG1hbnkgcGF0dGVy biB2YXJpYWJsZXMiKSwKLQkJCQkJCQkJIGVycmRldGFpbCgiTWF4aW11bSBpcyAlZC4iLCBSUFJf VkFSSURfTUFYKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0JCQkJCQkJ CQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICopIG5vZGUpKSkpOworCQkJCQkJCQllcnJjb2RlKEVS UkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCisJCQkJCQkJCWVycm1zZygidG9vIG1hbnkg cGF0dGVybiB2YXJpYWJsZXMiKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJNYXhpbXVtIGlzICVkLiIs IFJQUl9WQVJJRF9NQVgpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJ CQkJCQkJCQkJICAgZXhwckxvY2F0aW9uKChOb2RlICopIG5vZGUpKSk7CiAKIAkJCQkJKnZhck5h bWVzID0gbGFwcGVuZCgqdmFyTmFtZXMsIG1ha2VTdHJpbmcocHN0cmR1cChub2RlLT52YXJOYW1l KSkpOwogCQkJCX0KQEAgLTI2NywxMCArMjY3LDEwIEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNv dW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQl9CiAJCQlp ZiAoIWZvdW5kKQogCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCi0JCQkJCQkgZXJybXNnKCJERUZJTkUgdmFyaWFibGUgXCIlc1wiIGlzIG5v dCB1c2VkIGluIFBBVFRFUk4iLAotCQkJCQkJCQlydC0+bmFtZSksCi0JCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgcnQtPmxvY2F0aW9uKSkpOworCQkJCQkJZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVzXCIgaXMg bm90IHVzZWQgaW4gUEFUVEVSTiIsCisJCQkJCQkJICAgcnQtPm5hbWUpLAorCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgcnQtPmxvY2F0aW9uKSk7CiAJCX0KIAl9CiB9CkBAIC0zNDcs MTAgKzM0NywxMCBAQCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBX aW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAogCQkJaWYgKCFzdHJjbXAobiwg bmFtZSkpCiAJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKLQkJCQkJCSBlcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVzXCIgYXBwZWFycyBt b3JlIHRoYW4gb25jZSIsCi0JCQkJCQkJCW5hbWUpLAotCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSByKSkpKTsKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJERUZJTkUgdmFyaWFibGUgXCIlc1wi IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJCSAgIG5hbWUpLAorCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIHIpKSk7CiAJCX0KIAog CQlyZXN0YXJnZXRzID0gbGFwcGVuZChyZXN0YXJnZXRzLCByZXN0YXJnZXQpOwpAQCAtNTI5LDE0 ICs1MjksMTQgQEAgZGVmaW5lX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCSAq LwogCWlmIChjaGVja19mdW5jdGlvbnNfaW5fbm9kZShub2RlLCBuYXZfdm9sYXRpbGVfZnVuY19j aGVja2VyLCBOVUxMKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygidm9sYXRpbGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCi0JCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKG5vZGUpKSkpOworCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygidm9sYXRpbGUgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24obm9kZSkpKTsKIAlpZiAoSXNBKG5vZGUsIE5l eHRWYWx1ZUV4cHIpKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJzZXF1ZW5jZSBvcGVyYXRpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCi0JCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKG5vZGUpKSkpOworCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygic2VxdWVuY2Ugb3BlcmF0aW9u cyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZSIpLAorCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKG5vZGUpKSk7CiAKIAkvKiBWYXIgc2lnaHRp bmcgZmVlZHMgdGhlIGNvbHVtbi1yZWYgcnVsZSBmb3IgdGhlIGVuY2xvc2luZyBuYXYgc2NvcGUu ICovCiAJaWYgKElzQShub2RlLCBWYXIpICYmCkBAIC02MDAsMTcgKzYwMCwxNyBAQCBkZWZpbmVf d2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCQkJCS8qIFJlamVjdCB0cmlwbGUt b3ItZGVlcGVyIG5lc3RpbmcgKi8KIAkJCQkJaWYgKGN0eC0+bmF2X2NvdW50ID4gMSkKIAkJCQkJ CWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK LQkJCQkJCQkJIGVycm1zZygiY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3Jl IHRoYW4gdHdvIGxldmVscyBkZWVwIiksCi0JCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYoRklS U1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21w b3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihj dHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2 aWdhdGlvbiBtb3JlIHRoYW4gdHdvIGxldmVscyBkZWVwIiksCisJCQkJCQkJCWVycmhpbnQoIk9u bHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChM QVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAogCQkJCQlpZiAoIUlzQShu YXYtPmFyZywgUlBSTmF2RXhwcikpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCSBlcnJtc2coInJvdyBwYXR0ZXJu IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgYmUgYSBkaXJlY3QgYXJndW1lbnQgb2YgdGhlIG91 dGVyIG5hdmlnYXRpb24iKSwKLQkJCQkJCQkJIGVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwg UFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZv cm1zIGFyZSBhbGxvd2VkLiIpLAotCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0 YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJCQkJZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBt dXN0IGJlIGEgZGlyZWN0IGFyZ3VtZW50IG9mIHRoZSBvdXRlciBuYXZpZ2F0aW9uIiksCisJCQkJ CQkJCWVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNU KCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAog CQkJCQlpbm5lciA9IChSUFJOYXZFeHByICopIG5hdi0+YXJnOwogCkBAIC02MzAsMjkgKzYzMCwy OSBAQCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCQkJfQogCQkJ CWVsc2UgaWYgKCFvdXRlcl9waHlzICYmIGlubmVyX3BoeXMpCiAJCQkJCWVyZXBvcnQoRVJST1Is Ci0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCSBlcnJtc2co IkZJUlNUIGFuZCBMQVNUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVYVCIpLAotCQkJCQkJCSBl cnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwg YW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCWVycm1zZygiRklSU1QgYW5k IExBU1QgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUIiksCisJCQkJCQkJZXJyaGludCgiT25s eSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExB U1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuIiksCisJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CiAJCQkJZWxzZSBpZiAob3V0ZXJf cGh5cyAmJiBpbm5lcl9waHlzKQogCQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNh bm5vdCBjb250YWluIFBSRVYgb3IgTkVYVCIpLAotCQkJCQkJCSBlcnJoaW50KCJPbmx5IFBSRVYo RklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBj b21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKLQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkJCWVycm1zZygiUFJFViBhbmQgTkVYVCBjYW5ub3QgY29udGFp biBQUkVWIG9yIE5FWFQiKSwKKwkJCQkJCQllcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBS RVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3Jt cyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUs IG5hdi0+bG9jYXRpb24pKTsKIAkJCQllbHNlCiAJCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCSBlcnJtc2coIkZJUlNUIGFu ZCBMQVNUIGNhbm5vdCBjb250YWluIEZJUlNUIG9yIExBU1QiKSwKLQkJCQkJCQkgZXJyaGludCgi T25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhU KExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuIiksCi0JCQkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwkJCQkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQllcnJtc2coIkZJUlNUIGFuZCBMQVNUIGNh bm5vdCBjb250YWluIEZJUlNUIG9yIExBU1QiKSwKKwkJCQkJCQllcnJoaW50KCJPbmx5IFBSRVYo RklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBj b21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o Y3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAkJCX0KIAkJCWVsc2UgaWYgKCFjdHgtPmhh c19jb2x1bW5fcmVmKQogCQkJewogCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkgZXJybXNnKCJhcmd1bWVudCBvZiByb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVt biByZWZlcmVuY2UiKSwKLQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5h di0+bG9jYXRpb24pKSk7CisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCWVycm1zZygiYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24g bXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlIiksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKIAkJCX0KIAogCQkJ LyoKQEAgLTY3Myw5ICs2NzMsOSBAQCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNv bnRleHQpCiAJCQkJKHZvaWQpIGRlZmluZV93YWxrZXIoKE5vZGUgKikgbmF2LT5vZmZzZXRfYXJn LCBjdHgpOwogCQkJCWlmIChjdHgtPmhhc19jb2x1bW5fcmVmKQogCQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJ CQkgZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRp bWUgY29uc3RhbnQiKSwKLQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBl eHByTG9jYXRpb24oKE5vZGUgKikgbmF2LT5vZmZzZXRfYXJnKSkpKTsKKwkJCQkJCQllcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQllcnJtc2coInJvdyBwYXR0 ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIpLAorCQkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICop IG5hdi0+b2Zmc2V0X2FyZykpKTsKIAkJCX0KIAkJCWlmIChmbGF0dGVuZWQgJiYgbmF2LT5jb21w b3VuZF9vZmZzZXRfYXJnICE9IE5VTEwpCiAJCQl7CkBAIC02ODMsOSArNjgzLDkgQEAgZGVmaW5l X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJCSh2b2lkKSBkZWZpbmVfd2Fs a2VyKChOb2RlICopIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgY3R4KTsKIAkJCQlpZiAoY3R4 LT5oYXNfY29sdW1uX3JlZikKIAkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkJIGVycm1zZygicm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCi0JCQkJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICop IG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZykpKSk7CisJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0 aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQiKSwKKwkJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBuYXYtPmNvbXBv dW5kX29mZnNldF9hcmcpKSk7CiAJCQl9CiAKIAkJCSpjdHggPSBzYXZlZDsKLS0gCjIuNTAuMSAo QXBwbGUgR2l0LTE1NSkKCg== --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0008-NFA-visited-high-water-mark.txt" Content-Disposition: attachment; filename="nocfbot-0008-NFA-visited-high-water-mark.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh6bop7 RnJvbSA4NjY2Yzk2NWUzMTUyZjVkNmMzYmI5NDM4ZTViYjMyNTBlNzAwYjUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDQgTWF5IDIwMjYgMjI6MzE6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIDgvOV0gQWRk IGhpZ2gtd2F0ZXIgbWFyayB0cmFja2luZyB0byBORkEgdmlzaXRlZCBiaXRtYXAgcmVzZXQKClRy YWNrIHRoZSBtaW4vbWF4IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBpbiBuZmFfbWFya192aXNp dGVkIHNvIHRoZQpwZXItYWR2YW5jZSByZXNldCBtZW1zZXRzIG9ubHkgdGhlIHRvdWNoZWQgcmFu Z2UsIG5vdCB0aGUgZnVsbApuZmFWaXNpdGVkTldvcmRzIGFycmF5LgoKRWFjaCB2aXNpdGVkIG1h cmsgcGVyZm9ybXMgdHdvIGludDE2IGNvbXBhcmlzb25zLiAgRm9yIHNpbmdsZS13b3JkCmJpdG1h cHMgdGhpcyBvdmVyaGVhZCBpcyBhZGRlZCB3aXRoIG5vIHJlc2V0IHNhdmluZzsgZm9yIGxhcmdl ciBORkFzCnRoZSByZXNldCB3YWxrcyBvbmx5IHRoZSBzbGljZSB0aGUgREZTIGFjdHVhbGx5IHRv dWNoZWQsIHdoaWNoIGlzCndoZXJlIHRoZSB3aW4gY29tZXMgZnJvbS4gIEFwcGxpZWQgdW5jb25k aXRpb25hbGx5IGZvciBzaW1wbGljaXR5LgpTZW1hbnRpY3MgdW5jaGFuZ2VkLgotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyAgICAgICB8IDQxICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8ICAzICsrCiBz cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgfCAgNCArKysKIDMgZmlsZXMgY2hh bmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBS LmMKaW5kZXggMjQyYWU5YzZkY2YuLjFlNjE5NmQ2OTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUlBSLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5j CkBAIC0zOCw2ICszOCwyMSBAQAogI2RlZmluZSBXT1JETlVNKHgpCSgoeCkgLyBCSVRTX1BFUl9C SVRNQVBXT1JEKQogI2RlZmluZSBCSVROVU0oeCkJKCh4KSAlIEJJVFNfUEVSX0JJVE1BUFdPUkQp CiAKKy8qCisgKiBTZXQgdGhlIHZpc2l0ZWQgYml0IGZvciBlbGVtSWR4IGFuZCB1cGRhdGUgdGhl IGhpZ2gtd2F0ZXIgbWFya3MKKyAqIChuZmFWaXNpdGVkTWluL01heFdvcmQpIHNvIHRoYXQgdGhl IG5leHQgcmVzZXQgb25seSBoYXMgdG8gY2xlYXIKKyAqIHRoZSB0b3VjaGVkIHJhbmdlIGluc3Rl YWQgb2YgdGhlIGZ1bGwgbmZhVmlzaXRlZE5Xb3JkcyBhcnJheS4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCituZmFfbWFya192aXNpdGVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50MTYg ZWxlbUlkeCkKK3sKKwlpbnQxNgkJdyA9IFdPUkROVU0oZWxlbUlkeCk7CisKKwl3aW5zdGF0ZS0+ bmZhVmlzaXRlZEVsZW1zW3ddIHw9ICgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0oZWxlbUlkeCkp OworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWluV29yZCA9IE1pbih3aW5zdGF0ZS0+bmZhVmlzaXRl ZE1pbldvcmQsIHcpOworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IE1heCh3aW5zdGF0 ZS0+bmZhVmlzaXRlZE1heFdvcmQsIHcpOworfQorCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAt IE5GQSBzdGF0ZSBtYW5hZ2VtZW50ICovCiBzdGF0aWMgUlBSTkZBU3RhdGUgKm5mYV9zdGF0ZV9h bGxvYyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOwogc3RhdGljIHZvaWQgbmZhX3N0YXRlX2Zy ZWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqc3RhdGUpOwpAQCAtMzIw LDggKzMzNSw3IEBAIG5mYV9hZGRfc3RhdGVfdW5pcXVlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBSUFJORkFTdGF0ZSAqCiAJUlBSTkZBU3RhdGUgKnRhaWwg PSBOVUxMOwogCiAJLyogTWFyayBWQVIgaW4gdmlzaXRlZCBiZWZvcmUgZHVwbGljYXRlIGNoZWNr IHRvIHByZXZlbnQgREZTIGxvb3BzICovCi0Jd2luc3RhdGUtPm5mYVZpc2l0ZWRFbGVtc1tXT1JE TlVNKHN0YXRlLT5lbGVtSWR4KV0gfD0KLQkJKChiaXRtYXB3b3JkKSAxIDw8IEJJVE5VTShzdGF0 ZS0+ZWxlbUlkeCkpOworCW5mYV9tYXJrX3Zpc2l0ZWQod2luc3RhdGUsIHN0YXRlLT5lbGVtSWR4 KTsKIAogCS8qIENoZWNrIGZvciBkdXBsaWNhdGUgYW5kIGZpbmQgdGFpbCAqLwogCWZvciAocyA9 IGN0eC0+c3RhdGVzOyBzICE9IE5VTEw7IHMgPSBzLT5uZXh0KQpAQCAtMTM0MSw4ICsxMzU1LDcg QEAgbmZhX2FkdmFuY2Vfc3RhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsCiAJICogdGhlIHNhbWUgVkFSIGluIGEgbmV3IGl0ZXJhdGlvbi4KIAkgKi8KIAlp ZiAoIVJQUkVsZW1Jc1ZhcihlbGVtKSkKLQkJd2luc3RhdGUtPm5mYVZpc2l0ZWRFbGVtc1tXT1JE TlVNKHN0YXRlLT5lbGVtSWR4KV0gfD0KLQkJCSgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0oc3Rh dGUtPmVsZW1JZHgpKTsKKwkJbmZhX21hcmtfdmlzaXRlZCh3aW5zdGF0ZSwgc3RhdGUtPmVsZW1J ZHgpOwogCiAJc3dpdGNoIChlbGVtLT52YXJJZCkKIAl7CkBAIC0xMzk0LDkgKzE0MDcsMjMgQEAg bmZhX2FkdmFuY2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgs IGludDY0IGN1cnJlbnRQb3MpCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCXNhdmVkTWF0 Y2hlZFN0YXRlID0gY3R4LT5tYXRjaGVkU3RhdGU7CiAKLQkJLyogQ2xlYXIgdmlzaXRlZCBiaXRt YXAgYmVmb3JlIGVhY2ggc3RhdGUncyBERlMgZXhwYW5zaW9uICovCi0JCW1lbXNldCh3aW5zdGF0 ZS0+bmZhVmlzaXRlZEVsZW1zLCAwLAotCQkJICAgc2l6ZW9mKGJpdG1hcHdvcmQpICogd2luc3Rh dGUtPm5mYVZpc2l0ZWROV29yZHMpOworCQkvKgorCQkgKiBDbGVhciB2aXNpdGVkIGJpdG1hcCBi ZWZvcmUgZWFjaCBzdGF0ZSdzIERGUyBleHBhbnNpb24uICBPbmx5IHRoZQorCQkgKiByYW5nZSB0 b3VjaGVkIHNpbmNlIHRoZSBwcmV2aW91cyByZXNldCAodHJhY2tlZCB2aWEgdGhlIGhpZ2gtd2F0 ZXIKKwkJICogbWFya3MgdXBkYXRlZCBpbiBuZmFfbWFya192aXNpdGVkKSBuZWVkcyB0byBiZSBj bGVhcmVkOyBmb3Igc21hbGwKKwkJICogTkZBcyB0aGlzIGlzIHRoZSB3aG9sZSBhcnJheSwgYnV0 IGZvciBsYXJnZSBORkFzIHdob3NlIERGUyBvbmx5CisJCSAqIHJlYWNoZXMgYSBmZXcgZWxlbWVu dHMgcGVyIGFkdmFuY2UgaXQgYXZvaWRzIHdhbGtpbmcgdGhlIGZ1bGwKKwkJICogYml0bWFwLgor CQkgKi8KKwkJaWYgKHdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA+PSB3aW5zdGF0ZS0+bmZh VmlzaXRlZE1pbldvcmQpCisJCXsKKwkJCW1lbXNldCgmd2luc3RhdGUtPm5mYVZpc2l0ZWRFbGVt c1t3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmRdLCAwLAorCQkJCSAgIHNpemVvZihiaXRtYXB3 b3JkKSAqCisJCQkJICAgKHdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCAtCisJCQkJCXdpbnN0 YXRlLT5uZmFWaXNpdGVkTWluV29yZCArIDEpKTsKKwkJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWlu V29yZCA9IElOVDE2X01BWDsKKwkJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IC0xOwor CQl9CiAKIAkJc3RhdGUgPSBzdGF0ZXM7CiAJCXN0YXRlcyA9IHN0YXRlcy0+bmV4dDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCBhZjIzNTFiY2NiOC4uZDgyYWQ4ZDM4OTcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTMwNTQsNiArMzA1NCw5IEBA IEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQkobm9kZS0+cnBQYXR0ZXJuLT5udW1FbGVtZW50cyAtIDEpIC8gQklUU19QRVJf QklUTUFQV09SRCArIDE7CiAJCXdpbnN0YXRlLT5uZmFWaXNpdGVkRWxlbXMgPSBwYWxsb2MwKHNp emVvZihiaXRtYXB3b3JkKSAqCiAJCQkJCQkJCQkJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTldvcmRz KTsKKwkJLyogSGlnaC13YXRlciBtYXJrIHNlbnRpbmVsczogbm8gYml0cyBzZXQgeWV0LiAqLwor CQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmQgPSBJTlQxNl9NQVg7CisJCXdpbnN0YXRlLT5u ZmFWaXNpdGVkTWF4V29yZCA9IC0xOwogCX0KIAogCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNv Z25pdGlvbiBERUZJTkUgY2xhdXNlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDBjYjAxYmFh OTQ5Li4xZmJhMTRiODkyZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI2NzMsNiArMjY3Mywx MCBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCQkJCQkJCQkJICogZGV0ZWN0aW9u ICovCiAJaW50CQkJbmZhVmlzaXRlZE5Xb3JkczsJLyogbnVtYmVyIG9mIGJpdG1hcHdvcmRzIGlu CiAJCQkJCQkJCQkgKiBuZmFWaXNpdGVkRWxlbXMgKi8KKwlpbnQxNgkJbmZhVmlzaXRlZE1pbldv cmQ7CS8qIGxvd2VzdCBiaXRtYXB3b3JkIGluZGV4IHRvdWNoZWQgc2luY2UKKwkJCQkJCQkJCSAq IGxhc3QgcmVzZXQgKElOVDE2X01BWCA9IG5vbmUpICovCisJaW50MTYJCW5mYVZpc2l0ZWRNYXhX b3JkOwkvKiBoaWdoZXN0IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBzaW5jZQorCQkJCQkJCQkJ ICogbGFzdCByZXNldCAoLTEgPSBub25lKSAqLwogCWludDY0CQluZmFMYXN0UHJvY2Vzc2VkUm93 OwkvKiBsYXN0IHJvdyBwcm9jZXNzZWQgYnkgTkZBICgtMSA9CiAJCQkJCQkJCQkJICogbm9uZSkg Ki8KIAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000048337e0651399b49 Content-Type: text/plain; charset="UTF-8"; name="nocfbot-0009-Document-DEFINE-subquery-rejection.txt" Content-Disposition: attachment; filename="nocfbot-0009-Document-DEFINE-subquery-rejection.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh6eij8 RnJvbSBhNTIzOWEzYzBkZDljZjc5NTA2MDM5MzY4YzZiNWJjZmM0YzNhMTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMjE6MDA6NDggKzA5MDAKU3ViamVjdDogW1BBVENIIDkvOV0gRG9j dW1lbnQgREVGSU5FIHN1YnF1ZXJ5IHJlamVjdGlvbiBhcyBpbnRlbnRpb25hbAogb3Zlci1yZWpl Y3Rpb24KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0 PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoZSBTdWJMaW5rIHN3aXRj aCBpbiB0cmFuc2Zvcm1TdWJMaW5rKCkgcmVqZWN0cyBldmVyeSBzdWJxdWVyeSBpbgpFWFBSX0tJ TkRfUlBSX0RFRklORSB3aXRoIG5vIGlubGluZSByYXRpb25hbGUuICBBZGQgYW4gWFhYIGJsb2Nr CnJlY29yZGluZyB0aGF0IFNRTC9SUFIgKElTTy9JRUMgOTA3NS0yIMKnNC4xOC40IC8gNi4xNy40 OyBSMDEwIC8KUjAyMCkgYWN0dWFsbHkgcGVybWl0cyBhIG5lc3RlZCBzdWJxdWVyeSBpbiBERUZJ TkUgcHJvdmlkZWQgaXQKZG9lcyBub3QgaXRzZWxmIHBlcmZvcm0gcm93IHBhdHRlcm4gcmVjb2du aXRpb24gYW5kIGRvZXMgbm90CnJlZmVyZW5jZSBhbiBvdXRlciBwYXR0ZXJuIHZhcmlhYmxlLCBh bmQgdGhhdCB0aGUgYmxhbmtldApyZWplY3Rpb24gaGVyZSBzdWJzdW1lcyBib3RoIHJlc3RyaWN0 aW9ucyBieSBtYWtpbmcgdGhlIHN1YnF1ZXJ5Cml0c2VsZiB1bnJlYWNoYWJsZS4KCkltcGxlbWVu dGluZyB0aGUgY2FzZSBkaXN0aW5jdGlvbiB3b3VsZCBtZWFuIHdhbGtpbmcgdGhlIGFuYWx5emVk CnN1YnF1ZXJ5IFF1ZXJ5IHRyZWUgZm9yIG5lc3RlZCBSUFIgYW5kIHdhbGtpbmcgaXQgZm9yIENv bHVtblJlZgpxdWFsaWZpZXJzIG1hdGNoaW5nIGFueSBhbmNlc3RvcidzIHBfcnByX3BhdHRlcm5f dmFyczsgYm90aCBhcmUKZG9hYmxlIHdpdGggdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIGFu ZCBhcmUgbGVmdCBhcyBmdXR1cmUKd29yaywgbm90IGJsb2NrZWQgb24gYW55IG90aGVyIGZlYXR1 cmUuICBDb21tZW50LW9ubHkgY2hhbmdlLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9l eHByLmMgfCAyMiArKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDk5OTdkNmJjNGM1Li4zOTlj ZjY4YjNlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xOTQ0LDYgKzE5NDQsMjggQEAg dHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJ CWNhc2UgRVhQUl9LSU5EX0ZPUl9QT1JUSU9OOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJx dWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uIik7CiAJCQlicmVhazsKKworCQkJLyot LS0tLS0tLS0tCisJCQkgKiBYWFggU1FML1JQUiAoSVNPL0lFQyA5MDc1LTIgwqc0LjE4LjQgLyA2 LjE3LjQ7IFIwMTAgLyBSMDIwKQorCQkJICogcGVybWl0cyBhIHN1YnF1ZXJ5IG5lc3RlZCBpbiBh IERFRklORSBleHByZXNzaW9uIHByb3ZpZGVkCisJCQkgKiB0aGF0OgorCQkJICogICAoYSkgdGhl IHN1YnF1ZXJ5IGRvZXMgbm90IGl0c2VsZiBwZXJmb3JtIHJvdyBwYXR0ZXJuCisJCQkgKiAgICAg ICByZWNvZ25pdGlvbiwgYW5kCisJCQkgKiAgIChiKSB0aGUgc3VicXVlcnkgZG9lcyBub3QgcmVm ZXJlbmNlIGEgcm93IHBhdHRlcm4gdmFyaWFibGUKKwkJCSAqICAgICAgIG9mIHRoZSBvdXRlciBx dWVyeS4KKwkJCSAqCisJCQkgKiBXZSByZWplY3QgYWxsIHN1YnF1ZXJpZXMgaGVyZSBmb3Igbm93 LiAgSW1wbGVtZW50aW5nIHRoZQorCQkJICogY2FzZSBkaXN0aW5jdGlvbiB3b3VsZCBtZWFuIHdh bGtpbmcgdGhlIGFuYWx5emVkIHN1YnF1ZXJ5CisJCQkgKiBRdWVyeSB0cmVlIGZvciBuZXN0ZWQg UlBSIHdpbmRvdyBjbGF1c2VzIHRvIGVuZm9yY2UgKGEpLAorCQkJICogYW5kIHdhbGtpbmcgaXQg Zm9yIENvbHVtblJlZiBxdWFsaWZpZXJzIG1hdGNoaW5nIGFueQorCQkJICogYW5jZXN0b3IncyBw X3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gZW5mb3JjZSAoYikuICBCb3RoIGNoZWNrcworCQkJICogYXJl IGRvYWJsZSB3aXRoIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSAtLSB0aGV5IGFyZQorCQkJ ICogbGVmdCBhcyBmdXR1cmUgd29yaywgbm90IGJsb2NrZWQgb24gYW55IG90aGVyIGZlYXR1cmUu CisJCQkgKiBVbnRpbCB0aGVuIHRoaXMgYmxhbmtldCByZWplY3Rpb24gaXMgaW50ZW50aW9uYWwK KwkJCSAqIG92ZXItcmVqZWN0aW9uLCBub3QgYSBzdGFuZGFyZCBmaXQ7IGl0IHN1YnN1bWVzIGJv dGggKGEpCisJCQkgKiBhbmQgKGIpIGJ5IG1ha2luZyB0aGUgc3VicXVlcnkgaXRzZWxmIHVucmVh Y2hhYmxlLgorCQkJICotLS0tLS0tLS0tCisJCQkgKi8KIAkJY2FzZSBFWFBSX0tJTkRfUlBSX0RF RklORToKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGSU5FIGV4cHJlc3Np b24iKTsKIAkJCWJyZWFrOwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000048337e0651399b49 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0010-Remove-duplicate-include-nodeWindowAgg.txt" Content-Disposition: attachment; filename="nocfbot-0010-Remove-duplicate-include-nodeWindowAgg.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_movh6h6h9 RnJvbSA0OTcyMmU5ZmQzNzQzMDczM2E4NGMzOWRhNjg4ZmUxYWVkYjQ4YTEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDcgTWF5IDIwMjYgMjE6Mzc6NTEgKzA5MDAKU3ViamVjdDogW1BBVENIIDEwLzEwXSBS ZW1vdmUgZHVwbGljYXRlICNpbmNsdWRlIGluIG5vZGVXaW5kb3dBZ2cuYwoKI2luY2x1ZGUgImNv bW1vbi9pbnQuaCIgd2FzIGluY2x1ZGVkIHR3aWNlOyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQp3YXMg YWxzbyBtaXNwbGFjZWQgYmV0d2VlbiB0d28gY2F0YWxvZy8qIGhlYWRlcnMsIGJyZWFraW5nIHRo ZQphbHBoYWJldGljYWwgZ3JvdXBpbmcgb2Ygc3lzdGVtIGhlYWRlciBpbmNsdWRlcy4gIERyb3Ag dGhlCm1pc3BsYWNlZCBmaXJzdCBvY2N1cnJlbmNlOyB0aGUgc2Vjb25kIHNpdHMgaW4gdGhlIGNv cnJlY3QKYWxwaGFiZXRpY2FsIHBvc2l0aW9uIGJldHdlZW4gY2F0YWxvZy8gYW5kIGV4ZWN1dG9y LyBoZWFkZXJzLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEg LQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggZDgyYWQ4ZDM4OTcuLjJmODc0NDlhMGUwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKLSNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000048337e0651399b49--