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 1wdRzS-0046iC-2S for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jun 2026 12:18:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wdRzR-00FB1o-1C for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jun 2026 12:18:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wc26D-00CQEF-2e for pgsql-hackers@lists.postgresql.org; Tue, 23 Jun 2026 14:27:38 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wc26A-00000001wMx-0XIF for pgsql-hackers@postgresql.org; Tue, 23 Jun 2026 14:27:37 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-69532288224so10953101a12.0 for ; Tue, 23 Jun 2026 07:27:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782224851; cv=none; d=google.com; s=arc-20240605; b=MjsMo/07qFt9o91ohx9MJ4PcNoXLd+ycESvwvMRtEEJCc+74TXCCvXPG3q3TX0IAn9 J1L+9jLKFmUNVELx2KqTiDvk4clYBluULlOJuvVFsQrfNxClYksHBxCDq62AJSIS0D6/ 4YidOtJtoaYGpWLlhLdgRwX+968do/PACWJBIzY7q2PCQR2JiSa6Gx54wDAXh1jHna1+ gsTxrbEcEsZgeBJCNAA25SVSlRbJSfrNuIhTQmIlHJGvV9E6mNViRUWGmC5vdOsXUJnf i2WAHTEZolN19ztb7jeKpkSTFwFRgDviy6mlpOebw/uvbJ+92xFYwsd86IDYTo09LPbT qq0w== 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=8kS0xYEguvPsRXBy6WxWkGDjVphbePZM5rWwi2GpZK4=; fh=+S9tu9gZr/lfsmhY4+6m50ZYEvHxiCA0UleYvwp+dnk=; b=VHTwCMc59HiPqOl71HCEVQS2edd3gszM36RHXJDpOBqLzOIncuzO4NvGHwkqdymwdE FP6J1zxKOwqOGECmy/BhktZjGJhJk0O1xzykRgH79MIhxwiu8Bg1iRkClXauP0exgrd2 PLTbutMG3lJxp8Gpvwke4hT6XidHVkBNhHR3mxLNCwhVJQCp3Nf8q8RTBj9X7xXCnd2u zZz3NzwvbXjhaqVvdgTlNastS2XxpMuK6l89AETRjb9kY80RJ4PJfbgubKuDf1PdaY4b KD9j4f0zKFPlbQRcBSWBCkEhkBE6KR1ySvdH1K5oqEroeuDrgJfjBjy4lv9sl2cbDTN6 p+9A==; 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=1782224851; x=1782829651; 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=8kS0xYEguvPsRXBy6WxWkGDjVphbePZM5rWwi2GpZK4=; b=i1JkG2izlyC1hRqsS208AEiTzJW3C72R8a0Fy2++eywjdEP/03WanbSiOxl3Jyhk6b 3doDlTR6sqQelHIBqTc8aBWnT7oplN3Wq0qys30g3uU94mjs7GWB7zbUYYmemZo2ZLAd OIW89c5/Rx+ymLIPdEM4miz9OESzz2n6K+vb1PI0wKaOcNEy7rsbf3g5OBF0S2WRga3F eIt7nEz6L00ZamJ9cgY+T0vB+qxwNF2nfhoExmU71WK1ft3DyXHjqewy/S5L+/99/PZI uaIr6J/8E2LQ23/hMGQJP2y7C0qsoh7pGNTFUpmRNkD+2ZJVDpuqx+esIPJL4TFqtofU WaUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782224851; x=1782829651; 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=8kS0xYEguvPsRXBy6WxWkGDjVphbePZM5rWwi2GpZK4=; b=r3AL1Z9wPnVZgr/gfgeA0UtujQeZCSm2gq1HuJXy9qgYJEW/AZpr7HTk1atLcaElnR jjaDuuv1to1/0xiJOX0KRtiQY4wIj6a0EIFkZOfiY9/RfRb66J/cq/OHaS9nFbZ5umji C6lPiQ0Pf3vUdDV+Cog+xveSySOqj8ITXacyOvl7LJ5lybyuMrz/GUFODDNlrf3mBFMn 1p1qOunSZxFnovcSwG5ptgHnbHLXQOUTutghD5ORm2Mc4VjhRg3EiejnoUdBU6NwF7uS VNnvmcRoAAs3Q8unGO2TjVRYW+bbZMsBR7SDv2NuJ+4hh+qiNnTSpiyNayrFViTLhPIz SgnQ== X-Gm-Message-State: AOJu0YwHvpphuO4z3UrTpbsIAllyNPMfP2N97xxqNrNj39QellLPmCrx Aoyq1uwa5ls5OTK0+BmqPPEU14PAEC3oJF5vX0dLttbhs5cLOVigK3vTvXW7+1fk8eHain1c9WZ xWcFrRhu1wnJ0s0JdS7e6YSBBwmsYnNe0YSZC X-Gm-Gg: AfdE7cldHSm586FIxcA3M4j8P8yB0XL4whk+9ak7je3+NTk9/c3P81B7a47IXQbbgQd 33FYboYZ2SvV22o30SBraFSwru+8ckvYFsah8WVadOVHJgrP/lwD2vs5hiDhFuWqkcgdjSj6zXX ybdJ229CamejnPDafsBIPutCiEMYYtyX5blqtpU6EOVrzVfUoRK1vjtkIoIILjsRuaExJdbKtT8 3dRzFVCrZYbsp0VAVnEZsCmrVS+jUXY7MF+mvC3BqTSKghN0XEInZ2cYvDyAOSjAOprvlqGzqCv 0pLs3TMXOb9Icze5+T/VXtQciC2rla4vd6xUdjCzcu9HfOLBORZ/ZPjA+cExEI+LZwII5aQs0lW 2kHtprQhCwzM= X-Received: by 2002:a17:907:930e:b0:c0f:d966:5967 with SMTP id a640c23a62f3a-c10808a1213mr189589566b.41.1782224850500; Tue, 23 Jun 2026 07:27:30 -0700 (PDT) MIME-Version: 1.0 References: <20260613.212530.63949290085162247.ishii@postgresql.org> <20260619.203901.1981089207355838490.ishii@postgresql.org> <20260622.215536.1729984032454200237.ishii@postgresql.org> In-Reply-To: <20260622.215536.1729984032454200237.ishii@postgresql.org> Reply-To: assam258@gmail.com From: Henson Choi Date: Tue, 23 Jun 2026 23:27:15 +0900 X-Gm-Features: AVVi8CdLXF6rLK3NGz52MVRapnLYLJZ765ICCLqjtI53ZW_Ure90x45IIUeCCd4 Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii , jian.universality@gmail.com Cc: pgsql-hackers@postgresql.org, zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, li.evan.chao@gmail.com Content-Type: multipart/mixed; boundary="0000000000002081130654ec8f43" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002081130654ec8f43 Content-Type: multipart/alternative; boundary="0000000000002081110654ec8f41" --0000000000002081110654ec8f41 Content-Type: text/plain; charset="UTF-8" Hi hackers, This is v50, folding in the outstanding review. From my side there are no known issues left, so I think it makes a good starting point for the kind of thorough public review the feature should get before commit. On scope: the feature is almost entirely additive. It adds no SQL-visible objects -- no DDL, catalog entries, or built-in functions -- and no on-disk or catalog-format change, so it needs no catversion bump. Row pattern recognition is reached only through the new window-specification grammar and the window-function machinery it extends; code that does not use it follows the same paths as before. The footprint is narrow by design, so the risk to existing behaviour stays low. It is not meant for back-porting, but it is contained enough that a back-port would be feasible -- a measure of how little it disturbs anything else. That said, the feature is not simple inside, and review would pay off most on the parts that took the most care: the NFA matcher (alternation, reluctant quantifiers, nullable / empty-match handling, and the dormant matches in the tuplestore spool); the executor's tuple-slot navigation (the EEOP_RPR_NAV_SET / _RESTORE steps and the slot caching behind PREV / NEXT / FIRST / LAST); and the planner/executor optimizations -- context absorption and the reduced-frame navigation that lets the tuplestore be trimmed early. The surrounding plumbing is, by comparison, mechanical. The feature is unchanged since v49 and is re-attached as v49-0001..0009 so the series applies on master; the work since v49 is the increment v50-0001..0020 on top. A note on the posting itself first: the v49 increment went out as nocfbot-*.txt attachments, which cfbot does not apply, and a later coverage-report attachment (no patches inside) left the entry with nothing applicable -- so cfbot has been building plain master, and its current green is just master's, with no RPR patch applied. v50 goes out as a normal format-patch series so cfbot picks it up and actually exercises RPR. One ASAN task is likely to go red once it does: the libLLVM 19 + ASAN JIT crash (CF 6870) is still unfixed in master, and RPR exercises the JIT paths, so the ASAN build will hit it -- a toolchain/master issue, not RPR. Matheus Alcantara's meson fix (exclude sanitizer flags from JIT bitcode generation) addresses it but is not merged yet; it is not folded into this series. First, two cleanups splitting changes unrelated to RPR out of the feature patch: v50-0001 Remove blank-line changes unrelated to row pattern recognition v50-0002 Remove unnecessary includes from the row pattern recognition patch The fixes (v50-0003..0005, all behavior-changing): v50-0003 Recognize row pattern navigation operations by name in DEFINE v50-0004 Use a dedicated ExprContext for RPR DEFINE clause evaluation v50-0005 Drive RPR row pattern matching once per row Review of v48 (Jian He, and Tatsuo Ishii), v50-0006..0013 -- behavior-neutral except where tagged [behavior change]: v50-0006 Tidy up row pattern recognition plumbing v50-0007 Further tidy up row pattern recognition plumbing v50-0008 Refactor transformDefineClause in row pattern recognition [behavior change] v50-0009 Replace a bare block with an else in the RPR DEFINE clause walker v50-0010 Rename loop index variables in row pattern deparse helpers v50-0011 Rename absorption "judgment point" to "comparison point" in comments v50-0012 Improve comments, documentation, and naming for row pattern recognition v50-0013 Document eval_nav_offset_helper's NULL/negative offset handling New since v49 -- the agreed Jian He follow-ups and the standing quality work (v50-0014..0020): v50-0014 Tidy up the row pattern unbounded-quantifier sentinel v50-0015 Simplify row pattern compilation by passing the WindowClause v50-0016 Reword the row pattern variable-limit error v50-0017 Reformat row pattern regression tests for readability v50-0018 Add row pattern recognition coverage tests and tidy unreachable code v50-0019 Free RPR NFA states with pfree() under USE_VALGRIND v50-0020 Clarify row pattern recognition comments on "step" and no_equal For traceability, where each patch came from: patch proposer proposal -------- ------------- -------------------------------------------------- v50-0001 Henson drop blank-line churn unrelated to RPR v50-0002 Henson drop unnecessary includes v50-0003 Henson nav namespace collision; (f).prev as ordinary function v50-0004 Henson dedicated ExprContext for DEFINE evaluation v50-0005 Henson drive row pattern matching once per row v50-0006 Jian He tidy RPR plumbing v50-0007 Henson further plumbing tidy v50-0008 Jian He refactor transformDefineClause v50-0009 Jian He bare block -> else in the DEFINE walker v50-0010 Tatsuo Ishii rename deparse loop/index variables v50-0011 Jian He "judgment point" -> "comparison point" wording v50-0012 Jian He comment/doc clarity batch + RPR_COUNT_INF rename v50-0013 Jian He document eval_nav_offset NULL/negative offset handling v50-0014 Jian He abstract the quantifier INF bound / sentinel v50-0015 Jian He pass the WindowClause into pattern compilation v50-0016 Jian He fold the maximum into the variable-limit message v50-0017 Henson reformat the regression tests v50-0018 Henson coverage tests + tidy unreachable code v50-0019 Henson free NFA states with pfree() under USE_VALGRIND v50-0020 Jian He clarify the "step" and no_equal comments Disposition of the latest review (Jian He -- the on-list v48 follow-ups and the off-list thread that produced v50-0020): proposal disposition ------------------------------------ ------------------------------------- RPR_QUANTITY_INF sentinel unify accepted -> v50-0014 pass WindowClause; inline accepted -> v50-0015 collectDefineVariables / tryUnwrapSingleChild variable-limit error reword accepted -> v50-0016 (kept errmsg + errdetail, not a single message) define "step"; reword the no_equal accepted -> v50-0020 (off-list) comment "nullable" -> match_empty rejected -- "nullable" is the standard automata term unify DEFINE qualified column-ref rejected -- keep the dedicated wording error messages (the range-variable distinction is needed for the qualifier work) validateRPRPatternVarCount -> deferred -- name to be settled with preprocessRPRPattern the qualifier patch (A B+)+ "variable-length element" rejected -- the original is accurate; -> "quantifier is different" cf. (A{2} B{3})+, which is absorbable (off-list) Quality work (Linux), each sent as its own follow-up on this thread: - Valgrind (leak / use-after-free): no errors across parse, NFA build, pattern scan, EXPLAIN and node serialization; exercises the DEFINE ExprContext fix, whose reproducer is cassert-only. - gcov coverage: modified-line 98.4% (functions 100%); the remaining uncovered lines are idiomatic defensive guards (enum-default branches, pg_unreachable(), the public windowapi.h relpos guards) kept on purpose. Both figures were measured at v50-0019; v50-0020 is comment-only, so they carry over unchanged. Each report goes out as a separate message so the details and attachments stay out of this patch mail. Longer term, and out of scope for this CF entry: - Smaller documentation and error-message follow-ups (glossary, the bounded-quantifier message, README wording). - Short-circuit / tri-state DEFINE evaluation, as a separate series. - SEEK clause support (SQL:2016). - Empty pattern PATTERN () -- correctly rejected today; deferred because its empty-match semantics (SHOW/OMIT EMPTY MATCHES) are tied to the still-out-of-scope MEASURES clause. - Relaxing the DEFINE-subquery over-rejection where the standard permits it. - Prefix-pattern absorption (an optimization; split out as its own series). - R010 (MATCH_RECOGNIZE in the FROM clause) and the shared RPRContext it would back. Please let me know if any of the slicing or grouping looks off. Thanks again to Jian and Tatsuo for the careful review. Best regards, Henson --0000000000002081110654ec8f41 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

This is v50, f= olding in the outstanding review.=C2=A0 From my side there are no
known = issues left, so I think it makes a good starting point for the kind of
t= horough public review the feature should get before commit.

On scope= : the feature is almost entirely additive.=C2=A0 It adds no SQL-visible
= objects -- no DDL, catalog entries, or built-in functions -- and no on-disk=
or catalog-format change, so it needs no catversion bump.=C2=A0 Row pat= tern
recognition is reached only through the new window-specification gr= ammar and
the window-function machinery it extends; code that does not u= se it follows
the same paths as before.=C2=A0 The footprint is narrow by= design, so the risk to
existing behaviour stays low.=C2=A0 It is not me= ant for back-porting, but it is
contained enough that a back-port would = be feasible -- a measure of how
little it disturbs anything else.
That said, the feature is not simple inside, and review would pay off most= on
the parts that took the most care: the NFA matcher (alternation, rel= uctant
quantifiers, nullable / empty-match handling, and the dormant mat= ches in the
tuplestore spool); the executor's tuple-slot navigation = (the EEOP_RPR_NAV_SET
/ _RESTORE steps and the slot caching behind PREV = / NEXT / FIRST / LAST); and
the planner/executor optimizations -- contex= t absorption and the reduced-frame
navigation that lets the tuplestore b= e trimmed early.=C2=A0 The surrounding
plumbing is, by comparison, mecha= nical.

The feature is unchanged since v49 and is re-attached as v49-= 0001..0009 so
the series applies on master; the work since v49 is the in= crement
v50-0001..0020 on top.

A note on the posting itself first= : the v49 increment went out as
nocfbot-*.txt attachments, which cfbot d= oes not apply, and a later
coverage-report attachment (no patches inside= ) left the entry with nothing
applicable -- so cfbot has been building p= lain master, and its current green
is just master's, with no RPR pat= ch applied. =C2=A0v50 goes out as a normal
format-patch series so cfbot = picks it up and actually exercises RPR.

One ASAN task is likely to g= o red once it does: the libLLVM 19 + ASAN JIT
crash (CF 6870) is still u= nfixed in master, and RPR exercises the JIT paths,
so the ASAN build wil= l hit it -- a toolchain/master issue, not RPR.=C2=A0 Matheus
Alcantara&#= 39;s meson fix (exclude sanitizer flags from JIT bitcode generation)
add= resses it but is not merged yet; it is not folded into this series.

= First, two cleanups splitting changes unrelated to RPR out of the featurepatch:

=C2=A0 v50-0001 =C2=A0Remove blank-line changes unrelated t= o row pattern recognition
=C2=A0 v50-0002 =C2=A0Remove unnecessary inclu= des from the row pattern recognition patch

The fixes (v50-0003..0005= , all behavior-changing):

=C2=A0 v50-0003 =C2=A0Recognize row patter= n navigation operations by name in DEFINE
=C2=A0 v50-0004 =C2=A0Use a de= dicated ExprContext for RPR DEFINE clause evaluation
=C2=A0 v50-0005 =C2= =A0Drive RPR row pattern matching once per row

Review of v48 (Jian H= e, and Tatsuo Ishii), v50-0006..0013 -- behavior-neutral
except where ta= gged [behavior change]:

=C2=A0 v50-0006 =C2=A0Tidy up row pattern re= cognition plumbing
=C2=A0 v50-0007 =C2=A0Further tidy up row pattern rec= ognition plumbing
=C2=A0 v50-0008 =C2=A0Refactor transformDefineClause i= n row pattern recognition
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 [beh= avior change]
=C2=A0 v50-0009 =C2=A0Replace a bare block with an else in= the RPR DEFINE clause walker
=C2=A0 v50-0010 =C2=A0Rename loop index va= riables in row pattern deparse helpers
=C2=A0 v50-0011 =C2=A0Rename abso= rption "judgment point" to "comparison point" in commen= ts
=C2=A0 v50-0012 =C2=A0Improve comments, documentation, and naming for= row pattern recognition
=C2=A0 v50-0013 =C2=A0Document eval_nav_offset_= helper's NULL/negative offset handling

New since v49 -- the agre= ed Jian He follow-ups and the standing quality work
(v50-0014..0020):
=C2=A0 v50-0014 =C2=A0Tidy up the row pattern unbounded-quantifier sen= tinel
=C2=A0 v50-0015 =C2=A0Simplify row pattern compilation by passing = the WindowClause
=C2=A0 v50-0016 =C2=A0Reword the row pattern variable-l= imit error
=C2=A0 v50-0017 =C2=A0Reformat row pattern regression tests f= or readability
=C2=A0 v50-0018 =C2=A0Add row pattern recognition coverag= e tests and tidy unreachable code
=C2=A0 v50-0019 =C2=A0Free RPR NFA sta= tes with pfree() under USE_VALGRIND
=C2=A0 v50-0020 =C2=A0Clarify row pa= ttern recognition comments on "step" and no_equal

For trac= eability, where each patch came from:

=C2=A0 patch =C2=A0 =C2=A0 pro= poser =C2=A0 =C2=A0 =C2=A0 proposal
=C2=A0 -------- =C2=A0------------- = =C2=A0--------------------------------------------------
=C2=A0 v50-0001= =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 drop blank-line churn unrelated t= o RPR
=C2=A0 v50-0002 =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 drop unne= cessary includes
=C2=A0 v50-0003 =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2= =A0 nav namespace collision; (f).prev as ordinary function
=C2=A0 v50-00= 04 =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 dedicated ExprContext for DEFIN= E evaluation
=C2=A0 v50-0005 =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 dr= ive row pattern matching once per row
=C2=A0 v50-0006 =C2=A0Jian He =C2= =A0 =C2=A0 =C2=A0 =C2=A0tidy RPR plumbing
=C2=A0 v50-0007 =C2=A0Henson = =C2=A0 =C2=A0 =C2=A0 =C2=A0 further plumbing tidy
=C2=A0 v50-0008 =C2=A0= Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0refactor transformDefineClause
=C2=A0= v50-0009 =C2=A0Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0bare block -> else in= the DEFINE walker
=C2=A0 v50-0010 =C2=A0Tatsuo Ishii =C2=A0 rename depa= rse loop/index variables
=C2=A0 v50-0011 =C2=A0Jian He =C2=A0 =C2=A0 =C2= =A0 =C2=A0"judgment point" -> "comparison point" wor= ding
=C2=A0 v50-0012 =C2=A0Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0comment/do= c clarity batch + RPR_COUNT_INF rename
=C2=A0 v50-0013 =C2=A0Jian He =C2= =A0 =C2=A0 =C2=A0 =C2=A0document eval_nav_offset NULL/negative offset handl= ing
=C2=A0 v50-0014 =C2=A0Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0abstract th= e quantifier INF bound / sentinel
=C2=A0 v50-0015 =C2=A0Jian He =C2=A0 = =C2=A0 =C2=A0 =C2=A0pass the WindowClause into pattern compilation
=C2= =A0 v50-0016 =C2=A0Jian He =C2=A0 =C2=A0 =C2=A0 =C2=A0fold the maximum into= the variable-limit message
=C2=A0 v50-0017 =C2=A0Henson =C2=A0 =C2=A0 = =C2=A0 =C2=A0 reformat the regression tests
=C2=A0 v50-0018 =C2=A0Henson= =C2=A0 =C2=A0 =C2=A0 =C2=A0 coverage tests + tidy unreachable code
=C2= =A0 v50-0019 =C2=A0Henson =C2=A0 =C2=A0 =C2=A0 =C2=A0 free NFA states with = pfree() under USE_VALGRIND
=C2=A0 v50-0020 =C2=A0Jian He =C2=A0 =C2=A0 = =C2=A0 =C2=A0clarify the "step" and no_equal comments

Disp= osition of the latest review (Jian He -- the on-list v48 follow-ups and
= the off-list thread that produced v50-0020):

=C2=A0 proposal =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0disposition
=C2=A0 -----------------------------= ------- =C2=A0-------------------------------------
=C2=A0 RPR_QUANTITY_= INF sentinel unify =C2=A0 =C2=A0 =C2=A0 accepted -> v50-0014
=C2=A0 p= ass WindowClause; inline =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 accepted= -> v50-0015
=C2=A0 =C2=A0collectDefineVariables /
=C2=A0 =C2=A0tr= yUnwrapSingleChild
=C2=A0 variable-limit error reword =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 accepted -> v50-0016 (kept errmsg +
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0errdetail, not a= single message)
=C2=A0 define "step"; reword the no_equal =C2= =A0 =C2=A0accepted -> v50-0020 (off-list)
=C2=A0 =C2=A0comment
=C2= =A0 "nullable" -> match_empty =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 rejected -- "nullable" is the standard
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0automata term=
=C2=A0 unify DEFINE qualified column-ref =C2=A0 =C2=A0 rejected -- keep= the dedicated wording
=C2=A0 =C2=A0error messages =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(the range-va= riable distinction is
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0needed for the qualifier work)
=C2=A0 validateRP= RPatternVarCount -> =C2=A0 =C2=A0 =C2=A0 =C2=A0 deferred -- name to be s= ettled with
=C2=A0 =C2=A0preprocessRPRPattern =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0the qualifier patch
=C2=A0 (A B+)+= "variable-length element" =C2=A0 =C2=A0 rejected -- the original= is accurate;
=C2=A0 =C2=A0-> "quantifier is different" =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cf. (A{2} B{3})+, which is absorbable
=C2= =A0 =C2=A0(off-list)

Quality work (Linux), each sent as its own foll= ow-up on this thread:

=C2=A0 - Valgrind (leak / use-after-free): no = errors across parse, NFA build,
=C2=A0 =C2=A0 pattern scan, EXPLAIN and = node serialization; exercises the DEFINE
=C2=A0 =C2=A0 ExprContext fix, = whose reproducer is cassert-only.
=C2=A0 - gcov coverage: modified-line = 98.4% (functions 100%); the remaining
=C2=A0 =C2=A0 uncovered lines are = idiomatic defensive guards (enum-default branches,
=C2=A0 =C2=A0 pg_unre= achable(), the public windowapi.h relpos guards) kept on purpose.

Bo= th figures were measured at v50-0019; v50-0020 is comment-only, so they
= carry over unchanged.=C2=A0 Each report goes out as a separate message so t= he
details and attachments stay out of this patch mail.

Longer te= rm, and out of scope for this CF entry:

=C2=A0 - Smaller documentati= on and error-message follow-ups (glossary, the
=C2=A0 =C2=A0 bounded-qua= ntifier message, README wording).
=C2=A0 - Short-circuit / tri-state DEF= INE evaluation, as a separate series.
=C2=A0 - SEEK clause support (SQL:= 2016).
=C2=A0 - Empty pattern PATTERN () -- correctly rejected today; de= ferred because
=C2=A0 =C2=A0 its empty-match semantics (SHOW/OMIT EMPTY = MATCHES) are tied to the
=C2=A0 =C2=A0 still-out-of-scope MEASURES claus= e.
=C2=A0 - Relaxing the DEFINE-subquery over-rejection where the standa= rd permits it.
=C2=A0 - Prefix-pattern absorption (an optimization; spli= t out as its own series).
=C2=A0 - R010 (MATCH_RECOGNIZE in the FROM cla= use) and the shared RPRContext it
=C2=A0 =C2=A0 would back.

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

Thanks ag= ain to Jian and Tatsuo for the careful review.

Best regards,
Hens= on

--0000000000002081110654ec8f41-- --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0001-Row-pattern-recognition-patch-for-raw-parser-v49.patch" Content-Disposition: attachment; filename="v49-0001-Row-pattern-recognition-patch-for-raw-parser-v49.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqkyiy0 RnJvbSBmZmZkMWEyZTNhMTJiMDczMmFjN2I5Zjg3MGUyYjk1MDk4YzYyZDI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDEvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIGZvciByYXcgcGFyc2VyIHY0OS4K ClRoZSBzZXJpZXMgb2YgcGF0Y2hlcyBhcmUgdG8gaW1wbGVtZW50IHRoZSByb3cgcGF0dGVybiBy ZWNvZ25pdGlvbgooU1FML1JQUikgZmVhdHVyZS4gQ3VycmVudGx5IHRoZSBpbXBsZW1lbnRhdGlv biBpcyBhIHN1YnNldCBvZiBTUUwvUlBSCihJU08vSUVDIDE5MDc1LTI6MjAxNikuIE5hbWVseSwg aW1wbGVtZW50YXRpb24gb2Ygc29tZSBmZWF0dXJlcyBvZgpSMDIwIChXSU5ET1cgY2xhdXNlKS4g UjAxMCAoTUFUQ0hfUkVDT0dOSVpFKSBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mCnRoZSBwYXRjaGVz LgoKQ3VycmVudGx5IGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIHBh dGNoZXMuCgotIFBBVFRFUk4KLSBQQVRURVJOIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKCssICosID8p CiAgYWx0ZXJuYXRpb24gKHwpLCBncm91cGluZyAoKSAsIHtufSwge24sfSwge24sbX0sIHssbX0K ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgKCo/IGV0Yy4pLAogIEVtcHR5IHBhdHRlcm4gKCJQQVRU RVJOICgpIikgYXJlIG5vdCBwZXJtaXR0ZWQgYnkgdGhlIHN0YW5kYXJkCiAgQW5jaG9ycyAoXiwg JCkgYXJlIG5vdCBwZXJtaXR0ZWQgaW4gUjAyMCBieSB0aGUgc3RhbmRhcmQKLSBERUZJTkUKLSBJ TklUSUFMCi0gQUZURVIgTUFUQ0ggU0tJUCBUTyBQQVNUIExBU1QgUk9XCi0gQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVwotIFJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gKEZJUlNULCBMQVNULCBQ UkVWLCBORVhUIGFuZCB0aGVpciBjb21wb3VuZCBmb3JtcykKCkN1cnJlbnRseSBmb2xsb3dpbmcg ZmVhdHVyZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgcGF0Y2hlcy4KCi0gTUVBU1VSRVMK LSBQYXR0ZXJuIHZhcmlhYmxlIG5hbWUgcXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2UgKGUuZy4g QS5wcmljZSkKLSBTVUJTRVQKLSBTRUVLCi0gQUZURVIgTUFUQ0ggU0tJUCBUTwotIEFGVEVSIE1B VENIIFNLSVAgVE8gRklSU1QKLSBBRlRFUiBNQVRDSCBTS0lQIFRPIExBU1QKLSBQQVRURVJOIHJl Z3VsYXIgZXhwcmVzc2lvbiAgey0gYW5kIC19Ci0gUEVSTVVURQotIENMQVNTSUZJRVIKCkF1dGhv cjogVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4KQXV0aG9yOiBIZW5zb24gQ2hv aSA8YXNzYW0yNThAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVmlrIEZlYXJpbmcgPHZpa0Bwb3N0 Z3Jlc2ZyaWVuZHMub3JnPgpSZXZpZXdlZC1ieTogSmFjb2IgQ2hhbXBpb24gPGpjaGFtcGlvbkB0 aW1lc2NhbGUuY29tPgpSZXZpZXdlZC1ieTogUGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50 cmF1dC5vcmc+ClJldmlld2VkLWJ5OiBOSU5HV0VJIENIRU4gPGNoZW5Ac3Jhb3NzLmNvLmpwPgpS ZXZpZXdlZC1ieTogIkRhdmlkIEcuIEpvaG5zdG9uIiA8ZGF2aWQuZy5qb2huc3RvbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogU3VuZ0p1biBKYW5nIDxzamphbmcxMTIyMzNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog WnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IGpp YW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdtYWlsLmNvbT4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vMjAyMzA2MjUuMjEwNTA5LjEyNzY3MzM0MTE2Nzc1Nzc4NDEudC1pc2hpaSU0 MHNyYW5obS5zcmEuY28uanAKCk1ham9yIGNoYW5nZXMgc2luY2UgdjQ3IGluY2x1ZGU6CgotIERp c2FsbG93IE1vdmUgREVGSU5FIGNsYXVzZSB2b2xhdGlsZSBleHByZXNzaW9uIHByb2hpYml0aW5n IGNoZWNrIGZyb20gcGFyc2UKICBhbmFseXNpcyB0byBwbGFubmVyLgoKLSBSZWplY3QgZW1wdHkg cGF0dGVybiAiUEFUVEVSTiAoKSIgcGVyIHRoZSBzdGFuZGFyZAoKLSBOb3cgdXAgdG8gMjQwIHBh dHRlcm4gdmFyaWFibGVzIGFyZSBhbGxvd2VkIChwcmV2aW91c2x5IDI1MikKCi0gRml4IG11bHRp cGxlIGNvcm5lciBjYXNlIGJ1Z3MKCi0gUHJldmVudCB1bnNhZmUgQVNUIG9wdGltaXphdGlvbgot LS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgfCA2MTQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgfCAgOTEg KysrKysKIHNyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgfCAgIDUgKwogc3JjL2luY2x1 ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDY5NiBpbnNl cnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4u NGFlOTUxYWFlYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjEwLDYgKzIxMCwxMSBAQCBzdGF0aWMgdm9p ZCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3Qs CiBzdGF0aWMgdm9pZCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlz dCwKIAkJCQkJCQkJICAgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqbWFrZVJQUlNlcU9yU2luZ2xlKExpc3Qg KmNoaWxkcmVuLCBpbnQgbG9jYXRpb24pOworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICpzcGxpdFJQ UlRyYWlsaW5nQWx0KFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cik7CitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKm1ha2VSUFJRdWFudGlmaWVyKGludDMyIG1pbiwg aW50MzIgbWF4LCBib29sIHJlbHVjdGFudCwKKwkJCQkJCQkJCQkgaW50IGxvY2F0aW9uKTsKK3N0 YXRpYyBjb25zdCBjaGFyICpycHJfaW52YWxpZF9xdWFudGlmaWVyX3Rva2VuKGNvbnN0IGNoYXIg KnRvayk7CiAKICV9CiAKQEAgLTcxOCw2ICs3MjMsMTUgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAkJCQlsYWJlbF90ZXJtCiAldHlwZSA8c3RyPgkJb3B0X2NvbGlkCiAKKyV0eXBlIDx0YXJn ZXQ+CXJvd19wYXR0ZXJuX2RlZmluaXRpb24KKyV0eXBlIDxub2RlPglvcHRfcm93X3BhdHRlcm5f Y29tbW9uX3N5bnRheAorCQkJCXJvd19wYXR0ZXJuIHJvd19wYXR0ZXJuX2FsdCByb3dfcGF0dGVy bl9zZXEKKwkJCQlyb3dfcGF0dGVybl90ZXJtIHJvd19wYXR0ZXJuX3ByaW1hcnkKKwkJCQlyb3df cGF0dGVybl9xdWFudGlmaWVyX29wdAorJXR5cGUgPGxpc3Q+CXJvd19wYXR0ZXJuX2RlZmluaXRp b25fbGlzdAorJXR5cGUgPGl2YWw+CW9wdF9yb3dfcGF0dGVybl9za2lwX3RvCisldHlwZSA8Ym9v bGVhbj4Jb3B0X3Jvd19wYXR0ZXJuX2luaXRpYWxfb3Jfc2VlaworCiAvKgogICogTm9uLWtleXdv cmQgdG9rZW4gdHlwZXMuICBUaGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4 ZXIuCiAgKiBUaGV5IG11c3QgYmUgbGlzdGVkIGZpcnN0IHNvIHRoYXQgdGhlaXIgbnVtZXJpYyBj b2RlcyBkbyBub3QgZGVwZW5kIG9uCkBAIC03NjAsNyArNzc0LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlDVVJSRU5UX1RJTUUgQ1VSUkVOVF9USU1FU1RBTVAgQ1VSUkVOVF9VU0VSIENV UlNPUiBDWUNMRQogCiAJREFUQV9QIERBVEFCQVNFIERBWV9QIERFQUxMT0NBVEUgREVDIERFQ0lN QUxfUCBERUNMQVJFIERFRkFVTFQgREVGQVVMVFMKLQlERUZFUlJBQkxFIERFRkVSUkVEIERFRklO RVIgREVMRVRFX1AgREVMSU1JVEVSIERFTElNSVRFUlMgREVQRU5EUyBERVBUSCBERVNDIERFU1RJ TkFUSU9OCisJREVGRVJSQUJMRSBERUZFUlJFRCBERUZJTkUgREVGSU5FUiBERUxFVEVfUCBERUxJ TUlURVIgREVMSU1JVEVSUyBERVBFTkRTIERFUFRIIERFU0MgREVTVElOQVRJT04KIAlERVRBQ0gg RElDVElPTkFSWSBESVNBQkxFX1AgRElTQ0FSRCBESVNUSU5DVCBETyBET0NVTUVOVF9QIERPTUFJ Tl9QCiAJRE9VQkxFX1AgRFJPUAogCkBAIC03NzYsNyArNzkwLDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlIQU5ETEVSIEhBVklORyBIRUFERVJfUCBIT0xEIEhPVVJfUAogCiAJSURFTlRJ VFlfUCBJRl9QIElHTk9SRV9QIElMSUtFIElNTUVESUFURSBJTU1VVEFCTEUgSU1QTElDSVRfUCBJ TVBPUlRfUCBJTl9QIElOQ0xVREUKLQlJTkNMVURJTkcgSU5DUkVNRU5UIElOREVOVCBJTkRFWCBJ TkRFWEVTIElOSEVSSVQgSU5IRVJJVFMgSU5JVElBTExZIElOTElORV9QCisJSU5DTFVESU5HIElO Q1JFTUVOVCBJTkRFTlQgSU5ERVggSU5ERVhFUyBJTkhFUklUIElOSEVSSVRTIElOSVRJQUwgSU5J VElBTExZIElOTElORV9QCiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lUSVZFIElOU0VS VCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5UTyBJTlZPS0VS IElTIElTTlVMTCBJU09MQVRJT04KIApAQCAtODAxLDggKzgxNSw4IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIg T1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJB TUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFTU0lORyBQQVNTV09S RCBQQVRICi0JUEVSSU9EIFBMQUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kgUE9SVElPTgorCVBBUkFM TEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElUSU9OUyBQQVNTSU5H IFBBU1NXT1JEIFBBU1QgUEFUSAorCVBBVFRFUk5fUCBQRVJJT0QgUExBQ0lORyBQTEFOIFBMQU5T IFBPTElDWSBQT1JUSU9OCiAJUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQ UkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJP Q0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQUk9QRVJUSUVTIFBST1BFUlRZIFBVQkxJQ0FUSU9O CiAKQEAgLTgxMyw3ICs4MjcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVJFU0VUIFJF U1BFQ1RfUCBSRVNUQVJUIFJFU1RSSUNUIFJFVFVSTiBSRVRVUk5JTkcgUkVUVVJOUyBSRVZPS0Ug UklHSFQgUk9MRSBST0xMQkFDSyBST0xMVVAKIAlST1VUSU5FIFJPVVRJTkVTIFJPVyBST1dTIFJV TEUKIAotCVNBVkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNP TkRfUCBTRUNVUklUWSBTRUxFQ1QKKwlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFND Uk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VFSyBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFV RU5DRVMKIAlTRVJJQUxJWkFCTEUgU0VSVkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRT IFNFVE9GIFNIQVJFIFNIT1cKIAlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9U IFNPTUUgU1BMSVQgU09VUkNFIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKQEAgLTg5Niw4ICs5 MTAsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogcmVmZXJlbmNlIHBvaW50IGZvciBh IHByZWNlZGVuY2UgbGV2ZWwgdGhhdCB3ZSBjYW4gYXNzaWduIHRvIG90aGVyCiAgKiBrZXl3b3Jk cyB0aGF0IGxhY2sgYSBuYXR1cmFsIHByZWNlZGVuY2UgbGV2ZWwuCiAgKgotICogV2UgbmVlZCB0 byBkbyB0aGlzIGZvciBQQVJUSVRJT04sIFJBTkdFLCBST1dTLCBhbmQgR1JPVVBTIHRvIHN1cHBv cnQKLSAqIG9wdF9leGlzdGluZ193aW5kb3dfbmFtZSAoc2VlIGNvbW1lbnQgdGhlcmUpLgorICog V2UgbmVlZCB0byBkbyB0aGlzIGZvciBQQVJUSVRJT04sIFJBTkdFLCBST1dTLCBHUk9VUFMsIEFG VEVSLCBJTklUSUFMLAorICogU0VFSywgUEFUVEVSTl9QIHRvIHN1cHBvcnQgb3B0X2V4aXN0aW5n X3dpbmRvd19uYW1lIChzZWUgY29tbWVudCB0aGVyZSkuCiAgKgogICogVGhlIGZyYW1lX2JvdW5k IHByb2R1Y3Rpb25zIFVOQk9VTkRFRCBQUkVDRURJTkcgYW5kIFVOQk9VTkRFRCBGT0xMT1dJTkcK ICAqIGFyZSBldmVuIG1lc3NpZXI6IHNpbmNlIFVOQk9VTkRFRCBpcyBhbiB1bnJlc2VydmVkIGtl eXdvcmQgKHBlciBzcGVjISksCkBAIC05MzAsNiArOTQ0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICVub25hc3NvYwlVTkJPVU5ERUQgTkVTVEVEIC8qIGlkZWFsbHkgd291bGQgaGF2ZSBz YW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04gUkFO R0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAogCQkJU0VUIEtF WVMgT0JKRUNUX1AgU0NBTEFSIFRPIFVTSU5HIFZBTFVFX1AgV0lUSCBXSVRIT1VUIFBBVEgKKwkJ CUFGVEVSIElOSVRJQUwgU0VFSyBQQVRURVJOX1AKICVsZWZ0CQlPcCBPUEVSQVRPUiBSSUdIVF9B UlJPVyAnfCcJLyogbXVsdGktY2hhcmFjdGVyIG9wcyBhbmQgdXNlci1kZWZpbmVkIG9wZXJhdG9y cyAqLwogJWxlZnQJCScrJyAnLScKICVsZWZ0CQknKicgJy8nICclJwpAQCAtMTczMzUsNiArMTcz NTAsOCBAQCBvdmVyX2NsYXVzZTogT1ZFUiB3aW5kb3dfc3BlY2lmaWNhdGlvbgogCQkJCQluLT5z dGFydE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmxv Y2F0aW9uID0gQDI7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVk ZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IC8qRU1QVFkqLwpAQCAt MTczNDIsNyArMTczNTksOCBAQCBvdmVyX2NsYXVzZTogT1ZFUiB3aW5kb3dfc3BlY2lmaWNhdGlv bgogCQk7CiAKIHdpbmRvd19zcGVjaWZpY2F0aW9uOiAnKCcgb3B0X2V4aXN0aW5nX3dpbmRvd19u YW1lIG9wdF9wYXJ0aXRpb25fY2xhdXNlCi0JCQkJCQlvcHRfc29ydF9jbGF1c2Ugb3B0X2ZyYW1l X2NsYXVzZSAnKScKKwkJCQkJCW9wdF9zb3J0X2NsYXVzZSBvcHRfZnJhbWVfY2xhdXNlCisJCQkJ CQlvcHRfcm93X3BhdHRlcm5fY29tbW9uX3N5bnRheCAnKScKIAkJCQl7CiAJCQkJCVdpbmRvd0Rl ZiAgKm4gPSBtYWtlTm9kZShXaW5kb3dEZWYpOwogCkBAIC0xNzM1NCwyMCArMTczNzIsMjMgQEAg d2luZG93X3NwZWNpZmljYXRpb246ICcoJyBvcHRfZXhpc3Rpbmdfd2luZG93X25hbWUgb3B0X3Bh cnRpdGlvbl9jbGF1c2UKIAkJCQkJbi0+ZnJhbWVPcHRpb25zID0gJDUtPmZyYW1lT3B0aW9uczsK IAkJCQkJbi0+c3RhcnRPZmZzZXQgPSAkNS0+c3RhcnRPZmZzZXQ7CiAJCQkJCW4tPmVuZE9mZnNl dCA9ICQ1LT5lbmRPZmZzZXQ7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAkNS0+ZnJhbWVMb2Nh dGlvbjsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gJDUtPmV4Y2x1ZGVMb2NhdGlvbjsKKwkJ CQkJbi0+cnBDb21tb25TeW50YXggPSAoUlBDb21tb25TeW50YXggKikkNjsKIAkJCQkJbi0+bG9j YXRpb24gPSBAMTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KIAkJOwogCiAvKgotICogSWYgd2Ugc2Vl IFBBUlRJVElPTiwgUkFOR0UsIFJPV1Mgb3IgR1JPVVBTIGFzIHRoZSBmaXJzdCB0b2tlbiBhZnRl ciB0aGUgJygnCi0gKiBvZiBhIHdpbmRvd19zcGVjaWZpY2F0aW9uLCB3ZSB3YW50IHRoZSBhc3N1 bXB0aW9uIHRvIGJlIHRoYXQgdGhlcmUgaXMKLSAqIG5vIGV4aXN0aW5nX3dpbmRvd19uYW1lOyBi dXQgdGhvc2Uga2V5d29yZHMgYXJlIHVucmVzZXJ2ZWQgYW5kIHNvIGNvdWxkCi0gKiBiZSBDb2xJ ZHMuICBXZSBmaXggdGhpcyBieSBtYWtpbmcgdGhlbSBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2Ug YXMgSURFTlQKLSAqIGFuZCBnaXZpbmcgdGhlIGVtcHR5IHByb2R1Y3Rpb24gaGVyZSBhIHNsaWdo dGx5IGhpZ2hlciBwcmVjZWRlbmNlLCBzbwotICogdGhhdCB0aGUgc2hpZnQvcmVkdWNlIGNvbmZs aWN0IGlzIHJlc29sdmVkIGluIGZhdm9yIG9mIHJlZHVjaW5nIHRoZSBydWxlLgotICogVGhlc2Ug a2V5d29yZHMgYXJlIHRodXMgcHJlY2x1ZGVkIGZyb20gYmVpbmcgYW4gZXhpc3Rpbmdfd2luZG93 X25hbWUgYnV0Ci0gKiBhcmUgbm90IHJlc2VydmVkIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KKyAq IElmIHdlIHNlZSBQQVJUSVRJT04sIFJBTkdFLCBST1dTLCBHUk9VUFMsIEFGVEVSLCBJTklUSUFM LCBTRUVLIG9yIFBBVFRFUk5fUAorICogYXMgdGhlIGZpcnN0IHRva2VuIGFmdGVyIHRoZSAnKCcg b2YgYSB3aW5kb3dfc3BlY2lmaWNhdGlvbiwgd2Ugd2FudCB0aGUKKyAqIGFzc3VtcHRpb24gdG8g YmUgdGhhdCB0aGVyZSBpcyBubyBleGlzdGluZ193aW5kb3dfbmFtZTsgYnV0IHRob3NlIGtleXdv cmRzCisgKiBhcmUgdW5yZXNlcnZlZCBhbmQgc28gY291bGQgYmUgQ29sSWRzLiAgV2UgZml4IHRo aXMgYnkgbWFraW5nIHRoZW0gaGF2ZSB0aGUKKyAqIHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVCBh bmQgZ2l2aW5nIHRoZSBlbXB0eSBwcm9kdWN0aW9uIGhlcmUgYSBzbGlnaHRseQorICogaGlnaGVy IHByZWNlZGVuY2UsIHNvIHRoYXQgdGhlIHNoaWZ0L3JlZHVjZSBjb25mbGljdCBpcyByZXNvbHZl ZCBpbiBmYXZvcgorICogb2YgcmVkdWNpbmcgdGhlIHJ1bGUuICBUaGVzZSBrZXl3b3JkcyBhcmUg dGh1cyBwcmVjbHVkZWQgZnJvbSBiZWluZyBhbgorICogZXhpc3Rpbmdfd2luZG93X25hbWUgYnV0 IGFyZSBub3QgcmVzZXJ2ZWQgZm9yIGFueSBvdGhlciBwdXJwb3NlLgogICovCiBvcHRfZXhpc3Rp bmdfd2luZG93X25hbWU6IENvbElkCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IC8qRU1QVFkqLwkJ CQklcHJlYyBPcAkJeyAkJCA9IE5VTEw7IH0KQEAgLTE3Mzg4LDYgKzE3NDA5LDkgQEAgb3B0X2Zy YW1lX2NsYXVzZToKIAogCQkJCQluLT5mcmFtZU9wdGlvbnMgfD0gRlJBTUVPUFRJT05fTk9OREVG QVVMVCB8IEZSQU1FT1BUSU9OX1JBTkdFOwogCQkJCQluLT5mcmFtZU9wdGlvbnMgfD0gJDM7CisJ CQkJCW4tPmZyYW1lTG9jYXRpb24gPSBAMTsKKwkJCQkJLyogLTEgd2hlbiBubyBFWENMVURFIGNs YXVzZSAob3B0X3dpbmRvd19leGNsdXNpb25fY2xhdXNlIHJldHVybnMgMCkgKi8KKwkJCQkJbi0+ ZXhjbHVkZUxvY2F0aW9uID0gKCQzICE9IDApID8gQDMgOiAtMTsKIAkJCQkJJCQgPSBuOwogCQkJ CX0KIAkJCXwgUk9XUyBmcmFtZV9leHRlbnQgb3B0X3dpbmRvd19leGNsdXNpb25fY2xhdXNlCkBA IC0xNzM5Niw2ICsxNzQyMCw5IEBAIG9wdF9mcmFtZV9jbGF1c2U6CiAKIAkJCQkJbi0+ZnJhbWVP cHRpb25zIHw9IEZSQU1FT1BUSU9OX05PTkRFRkFVTFQgfCBGUkFNRU9QVElPTl9ST1dTOwogCQkJ CQluLT5mcmFtZU9wdGlvbnMgfD0gJDM7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSBAMTsKKwkJ CQkJLyogLTEgd2hlbiBubyBFWENMVURFIGNsYXVzZSAob3B0X3dpbmRvd19leGNsdXNpb25fY2xh dXNlIHJldHVybnMgMCkgKi8KKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gKCQzICE9IDApID8g QDMgOiAtMTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KIAkJCXwgR1JPVVBTIGZyYW1lX2V4dGVudCBv cHRfd2luZG93X2V4Y2x1c2lvbl9jbGF1c2UKQEAgLTE3NDA0LDYgKzE3NDMxLDkgQEAgb3B0X2Zy YW1lX2NsYXVzZToKIAogCQkJCQluLT5mcmFtZU9wdGlvbnMgfD0gRlJBTUVPUFRJT05fTk9OREVG QVVMVCB8IEZSQU1FT1BUSU9OX0dST1VQUzsKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9ICQzOwor CQkJCQluLT5mcmFtZUxvY2F0aW9uID0gQDE7CisJCQkJCS8qIC0xIHdoZW4gbm8gRVhDTFVERSBj bGF1c2UgKG9wdF93aW5kb3dfZXhjbHVzaW9uX2NsYXVzZSByZXR1cm5zIDApICovCisJCQkJCW4t PmV4Y2x1ZGVMb2NhdGlvbiA9ICgkMyAhPSAwKSA/IEAzIDogLTE7CiAJCQkJCSQkID0gbjsKIAkJ CQl9CiAJCQl8IC8qRU1QVFkqLwpAQCAtMTc0MTMsNiArMTc0NDMsOCBAQCBvcHRfZnJhbWVfY2xh dXNlOgogCQkJCQluLT5mcmFtZU9wdGlvbnMgPSBGUkFNRU9QVElPTl9ERUZBVUxUUzsKIAkJCQkJ bi0+c3RhcnRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5lbmRPZmZzZXQgPSBOVUxMOworCQkJCQlu LT5mcmFtZUxvY2F0aW9uID0gLTE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9IC0xOwogCQkJ CQkkJCA9IG47CiAJCQkJfQogCQk7CkBAIC0xNzQ4OCw2ICsxNzUyMCw4IEBAIGZyYW1lX2JvdW5k OgogCQkJCQluLT5mcmFtZU9wdGlvbnMgPSBGUkFNRU9QVElPTl9TVEFSVF9VTkJPVU5ERURfUFJF Q0VESU5HOwogCQkJCQluLT5zdGFydE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmVuZE9mZnNldCA9 IE5VTEw7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0 aW9uID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IFVOQk9VTkRFRCBGT0xMT1dJTkcK QEAgLTE3NDk3LDYgKzE3NTMxLDggQEAgZnJhbWVfYm91bmQ6CiAJCQkJCW4tPmZyYW1lT3B0aW9u cyA9IEZSQU1FT1BUSU9OX1NUQVJUX1VOQk9VTkRFRF9GT0xMT1dJTkc7CiAJCQkJCW4tPnN0YXJ0 T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0gTlVMTDsKKwkJCQkJbi0+ZnJhbWVM b2NhdGlvbiA9IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSBu OwogCQkJCX0KIAkJCXwgQ1VSUkVOVF9QIFJPVwpAQCAtMTc1MDYsNiArMTc1NDIsOCBAQCBmcmFt ZV9ib3VuZDoKIAkJCQkJbi0+ZnJhbWVPcHRpb25zID0gRlJBTUVPUFRJT05fU1RBUlRfQ1VSUkVO VF9ST1c7CiAJCQkJCW4tPnN0YXJ0T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0g TlVMTDsKKwkJCQkJbi0+ZnJhbWVMb2NhdGlvbiA9IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRp b24gPSAtMTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KIAkJCXwgYV9leHByIFBSRUNFRElORwpAQCAt MTc1MTUsNiArMTc1NTMsOCBAQCBmcmFtZV9ib3VuZDoKIAkJCQkJbi0+ZnJhbWVPcHRpb25zID0g RlJBTUVPUFRJT05fU1RBUlRfT0ZGU0VUX1BSRUNFRElORzsKIAkJCQkJbi0+c3RhcnRPZmZzZXQg PSAkMTsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0gTlVMTDsKKwkJCQkJbi0+ZnJhbWVMb2NhdGlvbiA9 IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSBuOwogCQkJCX0K IAkJCXwgYV9leHByIEZPTExPV0lORwpAQCAtMTc1MjQsNiArMTc1NjQsOCBAQCBmcmFtZV9ib3Vu ZDoKIAkJCQkJbi0+ZnJhbWVPcHRpb25zID0gRlJBTUVPUFRJT05fU1RBUlRfT0ZGU0VUX0ZPTExP V0lORzsKIAkJCQkJbi0+c3RhcnRPZmZzZXQgPSAkMTsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0gTlVM TDsKKwkJCQkJbi0+ZnJhbWVMb2NhdGlvbiA9IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRpb24g PSAtMTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KIAkJOwpAQCAtMTc1MzYsNiArMTc1NzgsNDE0IEBA IG9wdF93aW5kb3dfZXhjbHVzaW9uX2NsYXVzZToKIAkJCXwgLypFTVBUWSovCQkJCXsgJCQgPSAw OyB9CiAJCTsKIAorb3B0X3Jvd19wYXR0ZXJuX2NvbW1vbl9zeW50YXg6CitvcHRfcm93X3BhdHRl cm5fc2tpcF90byBvcHRfcm93X3BhdHRlcm5faW5pdGlhbF9vcl9zZWVrCisJCQkJUEFUVEVSTl9Q ICcoJyByb3dfcGF0dGVybiAnKScKKwkJCQlERUZJTkUgcm93X3BhdHRlcm5fZGVmaW5pdGlvbl9s aXN0CisJCQl7CisJCQkJUlBDb21tb25TeW50YXggKm4gPSBtYWtlTm9kZShSUENvbW1vblN5bnRh eCk7CisJCQkJbi0+cnBTa2lwVG8gPSAkMTsKKwkJCQluLT5pbml0aWFsID0gJDI7CisJCQkJbi0+ cnBQYXR0ZXJuID0gKFJQUlBhdHRlcm5Ob2RlICopICQ1OworCQkJCW4tPnJwRGVmcyA9ICQ4Owor CQkJCW4tPmxvY2F0aW9uID0gQDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQkJfCAv KkVNUFRZKi8JCXsgJCQgPSBOVUxMOyB9CisJCTsKKworb3B0X3Jvd19wYXR0ZXJuX3NraXBfdG86 CisJCQlBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisJCQkJeworCQkJCQkkJCA9IFNUX05F WFRfUk9XOworCQkJCX0KKwkJCXwgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1RfUCBST1cKKwkJ CQl7CisJCQkJCSQkID0gU1RfUEFTVF9MQVNUX1JPVzsKKwkJCQl9CisJCQl8IC8qRU1QVFkqLwor CQkJCXsKKwkJCQkJJCQgPSBTVF9QQVNUX0xBU1RfUk9XOworCQkJCX0KKwkJOworCitvcHRfcm93 X3BhdHRlcm5faW5pdGlhbF9vcl9zZWVrOgorCQkJSU5JVElBTAkJeyAkJCA9IHRydWU7IH0KKwkJ CXwgU0VFSworCQkJCXsKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQllcnJtc2coIlNFRUsgaXMgbm90IHN1 cHBvcnRlZCIpLAorCQkJCQkJCWVycmhpbnQoIlVzZSBJTklUSUFMIGluc3RlYWQuIiksCisJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKEAxKSk7CisJCQkJfQorCQkJfCAvKkVNUFRZKi8JCXsgJCQg PSB0cnVlOyB9CisJCTsKKworcm93X3BhdHRlcm46CisJCQlyb3dfcGF0dGVybl9hbHQJCQkJCQl7 ICQkID0gJDE7IH0KKwkJOworCityb3dfcGF0dGVybl9hbHQ6CisJCQlyb3dfcGF0dGVybl9zZXEK KwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgc3BsaXRSUFJUcmFpbGluZ0FsdCgoUlBSUGF0dGVy bk5vZGUgKikgJDEsCisJCQkJCQkJCQkJCQkJIHl5c2Nhbm5lcik7CisJCQkJfQorCQkJfCByb3df cGF0dGVybl9hbHQgJ3wnIHJvd19wYXR0ZXJuX3NlcQorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5v ZGUgKm47CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpyaHMgPSBzcGxpdFJQUlRyYWlsaW5nQWx0KChS UFJQYXR0ZXJuTm9kZSAqKSAkMywKKwkJCQkJCQkJCQkJCQkJCSB5eXNjYW5uZXIpOworCisJCQkJ CS8qIElmIGxlZnQgc2lkZSBpcyBhbHJlYWR5IEFMVCwgYXBwZW5kIHRvIGl0ICovCisJCQkJCWlm IChJc0EoJDEsIFJQUlBhdHRlcm5Ob2RlKSAmJgorCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAk MSktPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX0FMVCkKKwkJCQkJeworCQkJCQkJbiA9IChSUFJQ YXR0ZXJuTm9kZSAqKSAkMTsKKwkJCQkJCW4tPmNoaWxkcmVuID0gbGFwcGVuZChuLT5jaGlsZHJl biwgcmhzKTsKKwkJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJ CXsKKwkJCQkJCW4gPSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisJCQkJCQluLT5ub2RlVHlw ZSA9IFJQUl9QQVRURVJOX0FMVDsKKwkJCQkJCW4tPmNoaWxkcmVuID0gbGlzdF9tYWtlMigkMSwg cmhzKTsKKwkJCQkJCW4tPm1pbiA9IDE7CisJCQkJCQluLT5tYXggPSAxOworCQkJCQkJbi0+cmVs dWN0YW50ID0gZmFsc2U7CisJCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJCQl9CisJCQkJfQorCQk7CisKK3Jvd19wYXR0ZXJuX3NlcToKKwkJCXJvd19w YXR0ZXJuX3Rlcm0JCQkJCXsgJCQgPSAkMTsgfQorCQkJfCByb3dfcGF0dGVybl9zZXEgcm93X3Bh dHRlcm5fdGVybQorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKm47CisKKwkJCQkJLyoKKwkJ CQkJICogSWYgbGVmdCBzaWRlIGlzIGFscmVhZHkgU0VRLCBhcHBlbmQgdG8gaXQuICBBIGdsdWVk CisJCQkJCSAqIHF1YW50aWZpZXIncyB0cmFpbGluZ19hbHQgc3RheXMgb24gdGhlIGNoaWxkIHRl cm07CisJCQkJCSAqIHJvd19wYXR0ZXJuX2FsdCBzcGxpdHMgb24gaXQgb25jZSB0aGUgc2VxIGlz IGNvbXBsZXRlLgorCQkJCQkgKi8KKwkJCQkJaWYgKElzQSgkMSwgUlBSUGF0dGVybk5vZGUpICYm CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQxKS0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5f U0VRKQorCQkJCQl7CisJCQkJCQluID0gKFJQUlBhdHRlcm5Ob2RlICopICQxOworCQkJCQkJbi0+ Y2hpbGRyZW4gPSBsYXBwZW5kKG4tPmNoaWxkcmVuLCAkMik7CisJCQkJCQkkJCA9IChOb2RlICop IG47CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQluID0gbWFrZU5vZGUoUlBSUGF0 dGVybk5vZGUpOworCQkJCQkJbi0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9TRVE7CisJCQkJCQlu LT5jaGlsZHJlbiA9IGxpc3RfbWFrZTIoJDEsICQyKTsKKwkJCQkJCW4tPm1pbiA9IDE7CisJCQkJ CQluLT5tYXggPSAxOworCQkJCQkJbi0+cmVsdWN0YW50ID0gZmFsc2U7CisJCQkJCQluLT5sb2Nh dGlvbiA9IEAxOworCQkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCQl9CisJCQkJfQorCQk7CisK K3Jvd19wYXR0ZXJuX3Rlcm06CisJCQlyb3dfcGF0dGVybl9wcmltYXJ5IHJvd19wYXR0ZXJuX3F1 YW50aWZpZXJfb3B0CisJCQkJeworCQkJCQlSUFJQYXR0ZXJuTm9kZSAqbiA9IChSUFJQYXR0ZXJu Tm9kZSAqKSAkMTsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKnEgPSAoUlBSUGF0dGVybk5vZGUgKikg JDI7CisKKwkJCQkJbi0+bWluID0gcS0+bWluOworCQkJCQluLT5tYXggPSBxLT5tYXg7CisJCQkJ CW4tPnJlbHVjdGFudCA9IHEtPnJlbHVjdGFudDsKKwkJCQkJbi0+dHJhaWxpbmdfYWx0ID0gcS0+ dHJhaWxpbmdfYWx0OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKK3Jvd19w YXR0ZXJuX3ByaW1hcnk6CisJCQlDb2xJZAorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKm4g PSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisJCQkJCW4tPm5vZGVUeXBlID0gUlBSX1BBVFRF Uk5fVkFSOworCQkJCQluLT52YXJOYW1lID0gJDE7CisJCQkJCW4tPm1pbiA9IDE7CisJCQkJCW4t Pm1heCA9IDE7CisJCQkJCW4tPnJlbHVjdGFudCA9IGZhbHNlOworCQkJCQluLT5jaGlsZHJlbiA9 IE5JTDsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KKwkJCXwgJygnIHJvd19wYXR0ZXJuICcpJworCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUg KmlubmVyID0gKFJQUlBhdHRlcm5Ob2RlICopICQyOworCQkJCQlSUFJQYXR0ZXJuTm9kZSAqbiA9 IG1ha2VOb2RlKFJQUlBhdHRlcm5Ob2RlKTsKKwkJCQkJbi0+bm9kZVR5cGUgPSBSUFJfUEFUVEVS Tl9HUk9VUDsKKwkJCQkJbi0+Y2hpbGRyZW4gPSBsaXN0X21ha2UxKGlubmVyKTsKKwkJCQkJbi0+ bWluID0gMTsKKwkJCQkJbi0+bWF4ID0gMTsKKwkJCQkJbi0+cmVsdWN0YW50ID0gZmFsc2U7CisJ CQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsK Kworcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CisJCQkvKiBFTVBUWSAtIG5vIHF1YW50aWZp ZXIgbWVhbnMgZXhhY3RseSBvbmNlOyBAJCBpcyB1bnVzZWQgc2luY2UKKwkJCSAqIG1pbj1tYXg9 MSBuZXZlciBwcm9kdWNlcyBhbiBlcnJvciAqLworCQkJCXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBt YWtlUlBSUXVhbnRpZmllcigxLCAxLCBmYWxzZSwgQCQpOworCQkJCX0KKwkJCXwgJyonCisJCQkJ eworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFBHX0lOVDMyX01BWCwg ZmFsc2UsIEAxKTsKKwkJCQl9CisJCQl8ICcrJworCQkJCXsKKwkJCQkJJCQgPSAoTm9kZSAqKSBt YWtlUlBSUXVhbnRpZmllcigxLCBQR19JTlQzMl9NQVgsIGZhbHNlLCBAMSk7CisJCQkJfQorCQkJ fCBPcAorCQkJCXsKKwkJCQkJLyogSGFuZGxlIHNpbmdsZSBPcDogPyBvciByZWx1Y3RhbnQgcXVh bnRpZmllcnMgKj8sICs/LCA/PyAqLworCQkJCQlpZiAoc3RyY21wKCQxLCAiPyIpID09IDApCisJ CQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIDEsIGZhbHNlLCBAMSk7CisJ CQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIio/IikgPT0gMCkKKwkJCQkJCSQkID0gKE5vZGUgKikg bWFrZVJQUlF1YW50aWZpZXIoMCwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCWVsc2Ug aWYgKHN0cmNtcCgkMSwgIis/IikgPT0gMCkKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1 YW50aWZpZXIoMSwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCWVsc2UgaWYgKHN0cmNt cCgkMSwgIj8/IikgPT0gMCkKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIo MCwgMSwgdHJ1ZSwgQDEpOworCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICIqfCIpID09IDApCisJ CQkJCXsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgUEdfSU5UMzJf TUFYLCBmYWxzZSwgQDEpOworCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5n X2FsdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiK3wiKSA9PSAw KQorCQkJCQl7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIFBHX0lO VDMyX01BWCwgZmFsc2UsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFp bGluZ19hbHQgPSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIj98Iikg PT0gMCkKKwkJCQkJeworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAx LCBmYWxzZSwgQDEpOworCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5nX2Fs dCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiKj98IikgPT0gMCkK KwkJCQkJeworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCBQR19JTlQz Ml9NQVgsIHRydWUsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFpbGlu Z19hbHQgPSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIis/fCIpID09 IDApCisJCQkJCXsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMSwgUEdf SU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQkKS0+dHJh aWxpbmdfYWx0ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICI/P3wi KSA9PSAwKQorCQkJCQl7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAs IDEsIHRydWUsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFpbGluZ19h bHQgPSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coInVuc3Vw cG9ydGVkIHF1YW50aWZpZXIgXCIlc1wiIiwgJDEpLAorCQkJCQkJCQllcnJoaW50KCJWYWxpZCBx dWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24s bX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKEAxKSk7CisJCQkJfQorCQkJLyogUkVMVUNUQU5UIHF1YW50aWZpZXJzICh3aGVuIGxl eGVyIHNlcGFyYXRlcyB0b2tlbnMpICovCisJCQl8ICcqJyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0 cmNtcCgkMiwgIj8iKSA9PSAwKQorCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmll cigwLCBQR19JTlQzMl9NQVgsIHRydWUsIEAxKTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQyLCAi P3wiKSA9PSAwKQorCQkJCQl7CisJCQkJCQkvKiAiQSogP3xCIiA9IHJlbHVjdGFudCAiQSo/IiBw bHVzIGFsdGVybmF0aW9uICovCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVy KDAsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAk JCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJ CWVycm1zZygiaW52YWxpZCB0b2tlbiBcIiVzXCIgYWZ0ZXIgXCIqXCIgcXVhbnRpZmllciIsIHJw cl9pbnZhbGlkX3F1YW50aWZpZXJfdG9rZW4oJDIpKSwKKwkJCQkJCQkJZXJyaGludCgiRGlkIHlv dSBtZWFuIFwiKj9cIiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/IiksCisJCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihAMikpOworCQkJCX0KKwkJCXwgJysnIE9wCisJCQkJeworCQkJCQlpZiAo c3RyY21wKCQyLCAiPyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlm aWVyKDEsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQllbHNlIGlmIChzdHJjbXAoJDIs ICI/fCIpID09IDApCisJCQkJCXsKKwkJCQkJCS8qICJBKyA/fEIiID0gcmVsdWN0YW50ICJBKz8i IHBsdXMgYWx0ZXJuYXRpb24gKi8KKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZp ZXIoMSwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICop ICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIFwiJXNcIiBhZnRlciBcIitcIiBxdWFudGlmaWVyIiwg cnByX2ludmFsaWRfcXVhbnRpZmllcl90b2tlbigkMikpLAorCQkJCQkJCQllcnJoaW50KCJEaWQg eW91IG1lYW4gXCIrP1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKKwkJCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJfQorCQkJfCBPcCBPcAorCQkJCXsKKwkJCQkJaWYg KHN0cmNtcCgkMSwgIj8iKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52YWxpZCBxdWFu dGlmaWVyIGNvbWJpbmF0aW9uOiBcIiVzJXNcIiIsICQxLCAkMiksCisJCQkJCQkJCWVycmhpbnQo IkRpZCB5b3UgbWVhbiBcIj8/XCIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAorCQkJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24oQDEpKTsKKwkJCQkJaWYgKHN0cmNtcCgkMiwgIj8iKSA9PSAw KQorCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCB0cnVlLCBAMSk7 CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMiwgIj98IikgPT0gMCkKKwkJCQkJeworCQkJCQkJLyog IkE/ID98QiIgPSByZWx1Y3RhbnQgIkE/PyIgcGx1cyBhbHRlcm5hdGlvbiAqLworCQkJCQkJJCQg PSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCB0cnVlLCBAMSk7CisJCQkJCQkoKFJQ UlBhdHRlcm5Ob2RlICopICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQll bHNlCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHF1YW50aWZpZXIgY29tYmluYXRpb24i KSwKKwkJCQkJCQkJZXJyaGludCgiRGlkIHlvdSBtZWFuIFwiPz9cIiBmb3IgcmVsdWN0YW50IHF1 YW50aWZpZXI/IiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMSkpOworCQkJCX0KKwkJ CS8qIHtufSwge24sfSwgeyxtfSwge24sbX0gcXVhbnRpZmllcnMgKi8KKwkJCXwgJ3snIEljb25z dCAnfScKKwkJCQl7CisJCQkJCWlmICgkMiA8PSAwIHx8ICQyID49IFBHX0lOVDMyX01BWCkKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k ICVkIiwgUEdfSU5UMzJfTUFYIC0gMSksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikp OworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkMiwgZmFsc2UsIEAx KTsKKwkJCQl9CisJCQl8ICd7JyBJY29uc3QgJywnICd9JworCQkJCXsKKwkJCQkJaWYgKCQyIDwg MCB8fCAkMiA+PSBQR19JTlQzMl9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVy IGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBS UXVhbnRpZmllcigkMiwgUEdfSU5UMzJfTUFYLCBmYWxzZSwgQDEpOworCQkJCX0KKwkJCXwgJ3sn ICcsJyBJY29uc3QgJ30nCisJCQkJeworCQkJCQlpZiAoJDMgPD0gMCB8fCAkMyA+PSBQR19JTlQz Ml9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0 d2VlbiAxIGFuZCAlZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24oQDMpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAkMywg ZmFsc2UsIEAxKTsKKwkJCQl9CisJCQl8ICd7JyBJY29uc3QgJywnIEljb25zdCAnfScKKwkJCQl7 CisJCQkJCWlmICgkMiA8IDAgfHwgJDQgPD0gMCB8fCAkMiA+PSBQR19JTlQzMl9NQVggfHwgJDQg Pj0gUEdfSU5UMzJfTUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZHMg bXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIHdpdGggbWF4ID49IDEiLCBQR19JTlQzMl9NQVggLSAx KSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCWlmICgkMiA+ICQ0KQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBtaW5pbXVtIGJvdW5kIG11c3Qgbm90IGV4 Y2VlZCBtYXhpbXVtIiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOworCQkJCQkk JCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkNCwgZmFsc2UsIEAxKTsKKwkJCQl9 CisJCQkvKiBSZWx1Y3RhbnQgdmVyc2lvbnM6IHtufT8sIHtuLH0/LCB7LG19Pywge24sbX0/ICov CisJCQl8ICd7JyBJY29uc3QgJ30nIE9wCisJCQkJeworCQkJCQlpZiAoc3RyY21wKCQ0LCAiPyIp ICE9IDAgJiYgc3RyY21wKCQ0LCAiP3wiKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52 YWxpZCB0b2tlbiBcIiVzXCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIsIHJwcl9pbnZhbGlkX3F1 YW50aWZpZXJfdG9rZW4oJDQpKSwKKwkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxv d2VkIGFmdGVyIHtufSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKKwkJCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKEA0KSk7CisJCQkJCWlmICgkMiA8PSAwIHx8ICQyID49IFBHX0lOVDMyX01BWCkK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEg YW5kICVkIiwgUEdfSU5UMzJfTUFYIC0gMSksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihA MikpOworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkMiwgdHJ1ZSwg QDEpOworCQkJCQlpZiAoc3RyY21wKCQ0LCAiP3wiKSA9PSAwKQorCQkJCQkJKChSUFJQYXR0ZXJu Tm9kZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJfQorCQkJfCAneycgSWNvbnN0 ICcsJyAnfScgT3AKKwkJCQl7CisJCQkJCWlmIChzdHJjbXAoJDUsICI/IikgIT0gMCAmJiBzdHJj bXAoJDUsICI/fCIpICE9IDApCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2VuIFwi JXNcIiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiwgcnByX2ludmFsaWRfcXVhbnRpZmllcl90b2tl bigkNSkpLAorCQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIge24s fSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24oQDUpKTsKKwkJCQkJaWYgKCQyIDwgMCB8fCAkMiA+PSBQR19JTlQzMl9NQVgpCisJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAl ZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigkMiwgUEdfSU5UMzJfTUFYLCB0 cnVlLCBAMSk7CisJCQkJCWlmIChzdHJjbXAoJDUsICI/fCIpID09IDApCisJCQkJCQkoKFJQUlBh dHRlcm5Ob2RlICopICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKKwkJCQl9CisJCQl8ICd7JyAn LCcgSWNvbnN0ICd9JyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgkNSwgIj8iKSAhPSAwICYm IHN0cmNtcCgkNSwgIj98IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgdG9r ZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCBycHJfaW52YWxpZF9xdWFudGlmaWVy X3Rva2VuKCQ1KSksCisJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRl ciB7bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCisJCQkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihANSkpOworCQkJCQlpZiAoJDMgPD0gMCB8fCAkMyA+PSBQR19JTlQzMl9NQVgp CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAx IGFuZCAlZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24o QDMpKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAkMywgdHJ1ZSwg QDEpOworCQkJCQlpZiAoc3RyY21wKCQ1LCAiP3wiKSA9PSAwKQorCQkJCQkJKChSUFJQYXR0ZXJu Tm9kZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJfQorCQkJfCAneycgSWNvbnN0 ICcsJyBJY29uc3QgJ30nIE9wCisJCQkJeworCQkJCQlpZiAoc3RyY21wKCQ2LCAiPyIpICE9IDAg JiYgc3RyY21wKCQ2LCAiP3wiKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52YWxpZCB0 b2tlbiBcIiVzXCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIsIHJwcl9pbnZhbGlkX3F1YW50aWZp ZXJfdG9rZW4oJDYpKSwKKwkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFm dGVyIHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24oQDYpKTsKKwkJCQkJaWYgKCQyIDwgMCB8fCAkNCA8PSAwIHx8ICQyID49IFBHX0lOVDMy X01BWCB8fCAkNCA+PSBQR19JTlQzMl9NQVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlm aWVyIGJvdW5kcyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQgd2l0aCBtYXggPj0gMSIsIFBHX0lO VDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsKKwkJCQkJaWYg KCQyID4gJDQpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIG1pbmltdW0gYm91bmQg bXVzdCBub3QgZXhjZWVkIG1heGltdW0iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAy KSk7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsICQ0LCB0cnVlLCBA MSk7CisJCQkJCWlmIChzdHJjbXAoJDYsICI/fCIpID09IDApCisJCQkJCQkoKFJQUlBhdHRlcm5O b2RlICopICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKKwkJCQl9CisJCTsKKworcm93X3BhdHRl cm5fZGVmaW5pdGlvbl9saXN0OgorCQkJcm93X3BhdHRlcm5fZGVmaW5pdGlvbgkJCQkJCQkJCQl7 ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcm93X3BhdHRlcm5fZGVmaW5pdGlvbl9saXN0 ICcsJyByb3dfcGF0dGVybl9kZWZpbml0aW9uCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJ OworCityb3dfcGF0dGVybl9kZWZpbml0aW9uOgorCQkJQ29sSWQgQVMgYV9leHByCisJCQkJewor CQkJCQkkJCA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisJCQkJCSQkLT5uYW1lID0gJDE7CisJCQkJ CSQkLT5pbmRpcmVjdGlvbiA9IE5JTDsKKwkJCQkJJCQtPnZhbCA9IChOb2RlICopICQzOworCQkJ CQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJCTsKIAogLyoKICAqIFN1cHBvcnRpbmcgbm9u dGVybWluYWxzIGZvciBleHByZXNzaW9ucy4KQEAgLTE4ODg1LDYgKzE5MzM1LDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBERUNMQVJFCiAJCQl8IERFRkFVTFRTCiAJCQl8IERFRkVSUkVE CisJCQl8IERFRklORQogCQkJfCBERUZJTkVSCiAJCQl8IERFTEVURV9QCiAJCQl8IERFTElNSVRF UgpAQCAtMTg5NTMsNiArMTk0MDQsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IElOREVY RVMKIAkJCXwgSU5IRVJJVAogCQkJfCBJTkhFUklUUworCQkJfCBJTklUSUFMCiAJCQl8IElOTElO RV9QCiAJCQl8IElOUFVUX1AKIAkJCXwgSU5TRU5TSVRJVkUKQEAgLTE5MDI5LDcgKzE5NDgxLDkg QEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT05TCiAJCQl8IFBBU1NJTkcKIAkJ CXwgUEFTU1dPUkQKKwkJCXwgUEFTVAogCQkJfCBQQVRICisJCQl8IFBBVFRFUk5fUAogCQkJfCBQ RVJJT0QKIAkJCXwgUExBTgogCQkJfCBQTEFOUwpAQCAtMTkwODgsNiArMTk1NDIsNyBAQCB1bnJl c2VydmVkX2tleXdvcmQ6CiAJCQl8IFNFQVJDSAogCQkJfCBTRUNPTkRfUAogCQkJfCBTRUNVUklU WQorCQkJfCBTRUVLCiAJCQl8IFNFUVVFTkNFCiAJCQl8IFNFUVVFTkNFUwogCQkJfCBTRVJJQUxJ WkFCTEUKQEAgLTE5NDc3LDYgKzE5OTMyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBE RUZBVUxUUwogCQkJfCBERUZFUlJBQkxFCiAJCQl8IERFRkVSUkVECisJCQl8IERFRklORQogCQkJ fCBERUZJTkVSCiAJCQl8IERFTEVURV9QCiAJCQl8IERFTElNSVRFUgpAQCAtMTk1NTksNiArMjAw MTUsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IElOREVYRVMKIAkJCXwgSU5IRVJJVAog CQkJfCBJTkhFUklUUworCQkJfCBJTklUSUFMCiAJCQl8IElOSVRJQUxMWQogCQkJfCBJTkxJTkVf UAogCQkJfCBJTk5FUl9QCkBAIC0xOTY3Myw3ICsyMDEzMCw5IEBAIGJhcmVfbGFiZWxfa2V5d29y ZDoKIAkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBB U1QKIAkJCXwgUEFUSAorCQkJfCBQQVRURVJOX1AKIAkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcK IAkJCXwgUExBTgpAQCAtMTk3MzcsNiArMjAxOTYsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFNDUk9MTAogCQkJfCBTRUFSQ0gKIAkJCXwgU0VDVVJJVFkKKwkJCXwgU0VFSwogCQkJfCBT RUxFQ1QKIAkJCXwgU0VRVUVOQ0UKIAkJCXwgU0VRVUVOQ0VTCkBAIC0yMDkzMSw2ICsyMTM5MSwx MjggQEAgbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpCiAJcmV0dXJuIChOb2RlICopIHM7CiB9CiAKKy8qCisgKiBtYWtlUlBS UXVhbnRpZmllcgorICoJCUNyZWF0ZSBhbiBSUFJQYXR0ZXJuTm9kZSB3aXRoIHNwZWNpZmllZCBx dWFudGlmaWVyIGJvdW5kcy4KKyAqLworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICoKK21ha2VSUFJR dWFudGlmaWVyKGludDMyIG1pbiwgaW50MzIgbWF4LCBib29sIHJlbHVjdGFudCwgaW50IGxvY2F0 aW9uKQoreworCVJQUlBhdHRlcm5Ob2RlICpuID0gbWFrZU5vZGUoUlBSUGF0dGVybk5vZGUpOwor CisJbi0+bWluID0gbWluOworCW4tPm1heCA9IG1heDsKKwluLT5yZWx1Y3RhbnQgPSByZWx1Y3Rh bnQ7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIEJ1 aWxkIGEgU0VRIG5vZGUgZnJvbSBjaGlsZHJlbiwgb3IgcmV0dXJuIHRoZSBsb25lIGNoaWxkIHVu Y2hhbmdlZC4KKyAqLworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICoKK21ha2VSUFJTZXFPclNpbmds ZShMaXN0ICpjaGlsZHJlbiwgaW50IGxvY2F0aW9uKQoreworCVJQUlBhdHRlcm5Ob2RlICpuOwor CisJaWYgKGxpc3RfbGVuZ3RoKGNoaWxkcmVuKSA9PSAxKQorCQlyZXR1cm4gKFJQUlBhdHRlcm5O b2RlICopIGxpbml0aWFsKGNoaWxkcmVuKTsKKworCW4gPSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9k ZSk7CisJbi0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9TRVE7CisJbi0+Y2hpbGRyZW4gPSBjaGls ZHJlbjsKKwluLT5taW4gPSAxOworCW4tPm1heCA9IDE7CisJbi0+cmVsdWN0YW50ID0gZmFsc2U7 CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIEEgZ2x1 ZWQgcXVhbnRpZmllciBzdWNoIGFzICJBKnwiIGxlYXZlcyB0cmFpbGluZ19hbHQgc2V0IG9uIGl0 cyB0ZXJtIHdoaWxlCisgKiB0aGUgZW5jbG9zaW5nIHNlcXVlbmNlIGlzIGJ1aWx0LiAgT25jZSB0 aGUgc2VxdWVuY2UgaXMgY29tcGxldGUsIHNwbGl0IGl0IGF0CisgKiB0aGUgZmxhZ2dlZCB0ZXJt IGludG8gYWx0KGxlZnQsIHJpZ2h0KSwgd2hlcmUgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgdGhlIHdo b2xlCisgKiByZW1haW5pbmcgc2VxdWVuY2UgLS0gdGhpcyBrZWVwcyAifCIgYXMgdGhlIGxvd2Vz dC1wcmVjZWRlbmNlIG9wZXJhdG9yLCBzbworICogIkEqfEIgQyIgcGFyc2VzIGFzICJBKiB8IChC IEMpIiwgaWRlbnRpY2FsIHRvIHRoZSBzcGFjZWQgZm9ybS4gIEEgZmxhZyB3aXRoCisgKiBub3Ro aW5nIHRvIGl0cyByaWdodCBpcyBhIGRhbmdsaW5nICJ8IiBhbmQgaXMgcmVqZWN0ZWQuCisgKi8K K3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitzcGxpdFJQUlRyYWlsaW5nQWx0KFJQUlBhdHRlcm5O b2RlICpub2RlLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KwlpbnQJCQlpID0gMDsKKworCWlmIChub2RlLT5ub2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9TRVEp CisJeworCQlpZiAobm9kZS0+dHJhaWxpbmdfYWx0KQorCQl7CisJCQlub2RlLT50cmFpbGluZ19h bHQgPSBmYWxzZTsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQllcnJtc2coImFsdGVybmF0aW9uIG9wZXJhdG9yIFwifFwiIHJlcXVp cmVzIGEgcGF0dGVybiBvbiBib3RoIHNpZGVzIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihu b2RlLT5sb2NhdGlvbikpOworCQl9CisJCXJldHVybiBub2RlOworCX0KKworCWZvcmVhY2gobGMs IG5vZGUtPmNoaWxkcmVuKQorCXsKKwkJUlBSUGF0dGVybk5vZGUgKmNoaWxkID0gKFJQUlBhdHRl cm5Ob2RlICopIGxmaXJzdChsYyk7CisKKwkJaWYgKGNoaWxkLT50cmFpbGluZ19hbHQpCisJCXsK KwkJCUxpc3QJICAgKmxlZnRoYWxmID0gbGlzdF9jb3B5X2hlYWQobm9kZS0+Y2hpbGRyZW4sIGkg KyAxKTsKKwkJCUxpc3QJICAgKnJpZ2h0aGFsZiA9IGxpc3RfY29weV90YWlsKG5vZGUtPmNoaWxk cmVuLCBpICsgMSk7CisJCQlSUFJQYXR0ZXJuTm9kZSAqYWx0bjsKKwkJCVJQUlBhdHRlcm5Ob2Rl ICpyaWdodG5vZGU7CisKKwkJCWNoaWxkLT50cmFpbGluZ19hbHQgPSBmYWxzZTsKKwkJCWlmIChy aWdodGhhbGYgPT0gTklMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiYWx0ZXJuYXRpb24gb3BlcmF0b3IgXCJ8 XCIgcmVxdWlyZXMgYSBwYXR0ZXJuIG9uIGJvdGggc2lkZXMiKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihub2RlLT5sb2NhdGlvbikpOworCisJCQkvKiB0aGUgcmlnaHQgYnJhbmNoIHN0YXJ0 cyBhdCBpdHMgb3duIGZpcnN0IGVsZW1lbnQsIG5vdCB0aGUgc2VxIHN0YXJ0ICovCisJCQlyaWdo dG5vZGUgPSBzcGxpdFJQUlRyYWlsaW5nQWx0KG1ha2VSUFJTZXFPclNpbmdsZShyaWdodGhhbGYs CisJCQkJCQkJCQkJCQkJCQkgICAoKFJQUlBhdHRlcm5Ob2RlICopIGxpbml0aWFsKHJpZ2h0aGFs ZikpLT5sb2NhdGlvbiksCisJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CisJCQlhbHRuID0gbWFrZU5v ZGUoUlBSUGF0dGVybk5vZGUpOworCQkJYWx0bi0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9BTFQ7 CisJCQlhbHRuLT5jaGlsZHJlbiA9IGxpc3RfbWFrZTIobWFrZVJQUlNlcU9yU2luZ2xlKGxlZnRo YWxmLCBub2RlLT5sb2NhdGlvbiksCisJCQkJCQkJCQkJcmlnaHRub2RlKTsKKwkJCWFsdG4tPm1p biA9IDE7CisJCQlhbHRuLT5tYXggPSAxOworCQkJYWx0bi0+cmVsdWN0YW50ID0gZmFsc2U7CisJ CQlhbHRuLT5sb2NhdGlvbiA9IG5vZGUtPmxvY2F0aW9uOworCQkJcmV0dXJuIGFsdG47CisJCX0K KwkJaSsrOworCX0KKwlyZXR1cm4gbm9kZTsKK30KKworLyoKKyAqIHJwcl9pbnZhbGlkX3F1YW50 aWZpZXJfdG9rZW4KKyAqCQlSZXR1cm4gdGhlIG9mZmVuZGluZyBwYXJ0IG9mIGFuIGludmFsaWQg dG9rZW4gZm9sbG93aW5nIGEgcXVhbnRpZmllci4KKyAqCisgKiBUaGUgbGV4ZXIgZ2x1ZXMgYSBx dWFudGlmaWVyIGFuZCBhIHRyYWlsaW5nIGFsdGVybmF0aW9uIG9wZXJhdG9yIGludG8gYQorICog c2luZ2xlIHRva2VuIChmb3IgZXhhbXBsZSAiKnwiKS4gIFdoZW4gc3VjaCBhIGdsdWVkIHRva2Vu IGFwcGVhcnMgaW4gYW4KKyAqIGludmFsaWQgcG9zaXRpb24sIGRyb3AgdGhlIHRyYWlsaW5nICd8 JzogaXQgaXMgdGhlIGFsdGVybmF0aW9uIG9wZXJhdG9yLAorICogbm90IHBhcnQgb2YgdGhlIG9m ZmVuZGluZyBxdWFudGlmaWVyLCBzbyAiKnwiIHJlcG9ydHMgJyonIGFuZCAiKj98IgorICogcmVw b3J0cyAiKj8iLiAgVG9rZW5zIHdpdGhvdXQgYSB0cmFpbGluZyAnfCcgKHN1Y2ggYXMgIj8/IiBv ciAiPysiKSBhcmUKKyAqIHJlcG9ydGVkIHVuY2hhbmdlZC4KKyAqLworc3RhdGljIGNvbnN0IGNo YXIgKgorcnByX2ludmFsaWRfcXVhbnRpZmllcl90b2tlbihjb25zdCBjaGFyICp0b2spCit7CisJ c2l6ZV90CQlsZW4gPSBzdHJsZW4odG9rKTsKKworCWlmIChsZW4gPiAxICYmIHRva1tsZW4gLSAx XSA9PSAnfCcpCisJCXJldHVybiBwbnN0cmR1cCh0b2ssIGxlbiAtIDEpOworCXJldHVybiB0b2s7 Cit9CisKIC8qIHBhcnNlcl9pbml0KCkKICAqIEluaXRpYWxpemUgdG8gcGFyc2Ugb25lIHF1ZXJ5 IHN0cmluZwogICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNDEzM2M0MDRhNmIuLmUzMDlk ZmJkYjY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC01ODMsNiArNTgzLDgxIEBAIHR5cGVk ZWYgc3RydWN0IFNvcnRCeQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogb3BlcmF0b3IgbG9jYXRp b24sIG9yIC0xIGlmIG5vbmUvdW5rbm93biAqLwogfSBTb3J0Qnk7CiAKKy8qCisgKiBBRlRFUiBN QVRDSCByb3cgcGF0dGVybiBza2lwIHRvIHR5cGVzIGluIHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50 YXgKKyAqLwordHlwZWRlZiBlbnVtIFJQU2tpcFRvCit7CisJU1RfTk9ORSwJCQkJCS8qIG5vIEFG VEVSIE1BVENIIGNsYXVzZTsgZGVmYXVsdCBmb3Igbm9uLVJQUgorCQkJCQkJCQkgKiB3aW5kb3dz ICovCisJU1RfTkVYVF9ST1csCQkJCS8qIFNLSVAgVE8gTkVYVCBST1cgKi8KKwlTVF9QQVNUX0xB U1RfUk9XLAkJCS8qIFNLSVAgVE8gUEFTVCBMQVNUIFJPVyAqLworfSBSUFNraXBUbzsKKworLyoK KyAqIFJQUk5hdk9mZnNldEtpbmQgLSBzdGF0dXMgb2YgbmF2aWdhdGlvbiBvZmZzZXQgZm9yIHR1 cGxlc3RvcmUgdHJpbS4KKyAqCisgKiBUaGUgcGxhbm5lciBjb21wdXRlcyBuYXZNYXhPZmZzZXQv bmF2Rmlyc3RPZmZzZXQgZm9yIHR1cGxlc3RvcmUgbWFyaworICogb3B0aW1pemF0aW9uLiAgVGhp cyBlbnVtIHRyYWNrcyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHJlc29sdmVkIGNvbnN0YW50LAor ICogbmVlZHMgcnVudGltZSBldmFsdWF0aW9uLCBvciBjYW5ub3QgYmUgZGV0ZXJtaW5lZCAocmV0 YWluIGFsbCByb3dzKS4KKyAqLwordHlwZWRlZiBlbnVtIFJQUk5hdk9mZnNldEtpbmQKK3sKKwlS UFJfTkFWX09GRlNFVF9GSVhFRCwJCS8qIHJlc29sdmVkIGNvbnN0YW50OyB1c2UgdGhlIG9mZnNl dCB2YWx1ZSAqLworCVJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwsCS8qIG5vbi1jb25zdGFudCBv ZmZzZXQ7IGV2YWx1YXRlIGF0IGV4ZWN1dG9yCisJCQkJCQkJCSAqIGluaXQgKi8KKwlSUFJfTkFW X09GRlNFVF9SRVRBSU5fQUxMLAkvKiBjYW5ub3QgZGV0ZXJtaW5lOyByZXRhaW4gYWxsIHJvd3Mg KG5vIHRyaW0pICovCit9IFJQUk5hdk9mZnNldEtpbmQ7CisKKy8qCisgKiBSUFJQYXR0ZXJuTm9k ZVR5cGUgLSBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIG5vZGUgdHlwZXMKKyAqLwor dHlwZWRlZiBlbnVtIFJQUlBhdHRlcm5Ob2RlVHlwZQoreworCVJQUl9QQVRURVJOX1ZBUiwJCQkv KiB2YXJpYWJsZSByZWZlcmVuY2UgKi8KKwlSUFJfUEFUVEVSTl9TRVEsCQkJLyogc2VxdWVuY2Ug KGNvbmNhdGVuYXRpb24pICovCisJUlBSX1BBVFRFUk5fQUxULAkJCS8qIGFsdGVybmF0aW9uICh8 KSAqLworCVJQUl9QQVRURVJOX0dST1VQLAkJCS8qIGdyb3VwIChwYXJlbnRoZXNlcykgKi8KK30g UlBSUGF0dGVybk5vZGVUeXBlOworCisvKgorICogUlBSUGF0dGVybk5vZGUgLSBSb3cgUGF0dGVy biBSZWNvZ25pdGlvbiBwYXR0ZXJuIEFTVCBub2RlCisgKi8KK3R5cGVkZWYgc3RydWN0IFJQUlBh dHRlcm5Ob2RlCit7CisJTm9kZVRhZwkJdHlwZTsJCQkvKiBUX1JQUlBhdHRlcm5Ob2RlICovCisJ UlBSUGF0dGVybk5vZGVUeXBlIG5vZGVUeXBlOwkvKiBWQVIsIFNFUSwgQUxULCBHUk9VUCAqLwor CWludDMyCQltaW47CQkJLyogbWluaW11bSByZXBldGl0aW9ucyAoMCBmb3IgKiwgPykgKi8KKwlp bnQzMgkJbWF4OwkJCS8qIG1heGltdW0gcmVwZXRpdGlvbnMgKFBHX0lOVDMyX01BWCBmb3IgKiwg KykgKi8KKwlib29sCQlyZWx1Y3RhbnQ7CQkvKiB0cnVlIGZvciByZWx1Y3RhbnQgKG5vbi1ncmVl ZHkpICovCisJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgKi8K KwljaGFyCSAgICp2YXJOYW1lOwkJLyogVkFSOiB2YXJpYWJsZSBuYW1lICovCisJTGlzdAkgICAq Y2hpbGRyZW47CQkvKiBTRVEsIEFMVCwgR1JPVVA6IGNoaWxkIG5vZGVzICovCisKKwkvKgorCSAq IFRyYW5zaWVudCBwYXJzZSBmbGFnLCBjbGVhcmVkIGJ5IHNwbGl0UlBSVHJhaWxpbmdBbHQgYmVm b3JlIHRoZSB0cmVlIGlzCisJICogZmluYWxpemVkOiBhIGdsdWVkIHF1YW50aWZpZXIgc3VjaCBh cyAiKnwiIGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5CisJICogdGhlIGFsdGVybmF0aW9uIG9w ZXJhdG9yICd8Jy4gIEl0IGlzIGFsd2F5cyBmYWxzZSBpbiBhIGZpbmFsaXplZCB0cmVlLAorCSAq IHNvIGl0IGhhcyBubyBlZmZlY3Qgb24gdGhlIHBnX3N0YXRfc3RhdGVtZW50cyBxdWVyeWlkLgor CSAqLworCWJvb2wJCXRyYWlsaW5nX2FsdDsKK30gUlBSUGF0dGVybk5vZGU7CisKKy8qCisgKiBS b3dQYXR0ZXJuQ29tbW9uU3ludGF4IC0gcmF3IHJlcHJlc2VudGF0aW9uIG9mIHJvdyBwYXR0ZXJu IGNvbW1vbiBzeW50YXgKKyAqLwordHlwZWRlZiBzdHJ1Y3QgUlBDb21tb25TeW50YXgKK3sKKwlO b2RlVGFnCQl0eXBlOworCVJQU2tpcFRvCXJwU2tpcFRvOwkJLyogUm93IFBhdHRlcm4gQUZURVIg TUFUQ0ggU0tJUCB0eXBlICovCisJYm9vbAkJaW5pdGlhbDsJCS8qIHRydWUgaWYgPHJvdyBwYXR0 ZXJuIGluaXRpYWwgb3Igc2Vlaz4gaXMKKwkJCQkJCQkJICogaW5pdGlhbCAqLworCVJQUlBhdHRl cm5Ob2RlICpycFBhdHRlcm47CS8qIFBBVFRFUk4gY2xhdXNlIEFTVCAqLworCUxpc3QJICAgKnJw RGVmczsJCQkvKiByb3cgcGF0dGVybiBkZWZpbml0aW9ucyBjbGF1c2UgKGxpc3Qgb2YKKwkJCQkJ CQkJICogUmVzVGFyZ2V0KSAqLworCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogUEFUVEVSTiBrZXl3 b3JkIGxvY2F0aW9uLCBvciAtMSAqLworfSBSUENvbW1vblN5bnRheDsKKwogLyoKICAqIFdpbmRv d0RlZiAtIHJhdyByZXByZXNlbnRhdGlvbiBvZiBXSU5ET1cgYW5kIE9WRVIgY2xhdXNlcwogICoK QEAgLTU5OCwxMCArNjczLDEzIEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0RlZgogCWNoYXIJICAg KnJlZm5hbWU7CQkvKiByZWZlcmVuY2VkIHdpbmRvdyBuYW1lLCBpZiBhbnkgKi8KIAlMaXN0CSAg ICpwYXJ0aXRpb25DbGF1c2U7CS8qIFBBUlRJVElPTiBCWSBleHByZXNzaW9uIGxpc3QgKi8KIAlM aXN0CSAgICpvcmRlckNsYXVzZTsJLyogT1JERVIgQlkgKGxpc3Qgb2YgU29ydEJ5KSAqLworCVJQ Q29tbW9uU3ludGF4ICpycENvbW1vblN5bnRheDsgLyogcm93IHBhdHRlcm4gY29tbW9uIHN5bnRh eCAqLwogCWludAkJCWZyYW1lT3B0aW9uczsJLyogZnJhbWVfY2xhdXNlIG9wdGlvbnMsIHNlZSBi ZWxvdyAqLwogCU5vZGUJICAgKnN0YXJ0T2Zmc2V0OwkvKiBleHByZXNzaW9uIGZvciBzdGFydGlu ZyBib3VuZCwgaWYgYW55ICovCiAJTm9kZQkgICAqZW5kT2Zmc2V0OwkJLyogZXhwcmVzc2lvbiBm b3IgZW5kaW5nIGJvdW5kLCBpZiBhbnkgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHBhcnNl IGxvY2F0aW9uLCBvciAtMSBpZiBub25lL3Vua25vd24gKi8KKwlQYXJzZUxvYwlmcmFtZUxvY2F0 aW9uOwkvKiBST1dTL1JBTkdFL0dST1VQUyBsb2NhdGlvbiwgb3IgLTEgKi8KKwlQYXJzZUxvYwll eGNsdWRlTG9jYXRpb247CS8qIEVYQ0xVREUgbG9jYXRpb24sIG9yIC0xICovCiB9IFdpbmRvd0Rl ZjsKIAogLyoKQEAgLTE2NDcsNiArMTcyNSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBHcm91cGluZ1Nl dAogICogV2hlbiByZWZuYW1lIGlzbid0IG51bGwsIHRoZSBwYXJ0aXRpb25DbGF1c2UgaXMgYWx3 YXlzIGNvcGllZCBmcm9tIHRoZXJlOwogICogdGhlIG9yZGVyQ2xhdXNlIG1pZ2h0IG9yIG1pZ2h0 IG5vdCBiZSBjb3BpZWQgKHNlZSBjb3BpZWRPcmRlcik7IHRoZSBmcmFtaW5nCiAgKiBvcHRpb25z IGFyZSBuZXZlciBjb3BpZWQsIHBlciBzcGVjLgorICogImRlZmluZUNsYXVzZSIgaXMgUm93IFBh dHRlcm4gUmVjb2duaXRpb24gREVGSU5FIGNsYXVzZSAobGlzdCBvZgorICogVGFyZ2V0RW50cnkp LiBUYXJnZXRFbnRyeS5yZXNuYW1lIHJlcHJlc2VudHMgcm93IHBhdHRlcm4gZGVmaW5pdGlvbgor ICogdmFyaWFibGUgbmFtZS4gInJwUGF0dGVybiIgcmVwcmVzZW50cyBQQVRURVJOIGNsYXVzZSBh cyBhbiBBU1QgdHJlZQorICogKFJQUlBhdHRlcm5Ob2RlKS4KKyAqCiAgKi8KIHR5cGVkZWYgc3Ry dWN0IFdpbmRvd0NsYXVzZQogewpAQCAtMTY3NCw2ICsxNzU3LDE0IEBAIHR5cGVkZWYgc3RydWN0 IFdpbmRvd0NsYXVzZQogCUluZGV4CQl3aW5yZWY7CQkJLyogSUQgcmVmZXJlbmNlZCBieSB3aW5k b3cgZnVuY3Rpb25zICovCiAJLyogZGlkIHdlIGNvcHkgb3JkZXJDbGF1c2UgZnJvbSByZWZuYW1l PyAqLwogCWJvb2wJCWNvcGllZE9yZGVyIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3Jl KTsKKwkvKiBSb3cgUGF0dGVybiBBRlRFUiBNQVRDSCBTS0lQIGNsYXVzZSAqLworCVJQU2tpcFRv CXJwU2tpcFRvOwkJLyogUm93IFBhdHRlcm4gU2tpcCBUbyB0eXBlICovCisJYm9vbAkJaW5pdGlh bDsJCS8qIHRydWUgaWYgPHJvdyBwYXR0ZXJuIGluaXRpYWwgb3Igc2Vlaz4gaXMKKwkJCQkJCQkJ ICogaW5pdGlhbCAqLworCS8qIFJvdyBQYXR0ZXJuIERFRklORSBjbGF1c2UgKGxpc3Qgb2YgVGFy Z2V0RW50cnkpICovCisJTGlzdAkgICAqZGVmaW5lQ2xhdXNlOworCS8qIFJvdyBQYXR0ZXJuIFBB VFRFUk4gY2xhdXNlIEFTVCAqLworCVJQUlBhdHRlcm5Ob2RlICpycFBhdHRlcm47CiB9IFdpbmRv d0NsYXVzZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBi L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1MWVhZDU0ZjAxNS4uMzg5NGZhZDkw MjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTEyOSw2ICsxMjksNyBAQCBQR19LRVlXT1JEKCJkZWZh dWx0IiwgREVGQVVMVCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImRlZmF1bHRzIiwgREVGQVVMVFMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImRlZmVycmFibGUiLCBERUZFUlJBQkxFLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgiZGVmZXJyZWQiLCBERUZFUlJFRCwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZGVmaW5lIiwgREVGSU5FLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkZWZpbmVyIiwgREVGSU5FUiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVsZXRlIiwgREVMRVRF X1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRlbGltaXRl ciIsIERFTElNSVRFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMjIxLDYg KzIyMiw3IEBAIFBHX0tFWVdPUkQoImluZGV4IiwgSU5ERVgsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImluZGV4ZXMiLCBJTkRFWEVTLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmhlcml0IiwgSU5IRVJJVCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5oZXJpdHMiLCBJTkhFUklU UywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiaW5pdGlhbCIs IElOSVRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImlu aXRpYWxseSIsIElOSVRJQUxMWSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImlubGluZSIsIElOTElORV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJpbm5lciIsIElOTkVSX1AsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJB UkVfTEFCRUwpCkBAIC0zNDcsNyArMzQ5LDkgQEAgUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFS VElUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0 aXRpb25zIiwgUEFSVElUSU9OUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFzc2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBhc3QiLCBQQVNULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGF0dGVybiIsIFBBVFRFUk5fUCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGVyaW9kIiwgUEVSSU9ELCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lO RywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW4iLCBQTEFO LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00MTUsNiArNDE5LDcgQEAgUEdf S0VZV09SRCgic2Nyb2xsIiwgU0NST0xMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJzZWFyY2giLCBTRUFSQ0gsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInNlY29uZCIsIFNFQ09ORF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEFTX0xBQkVMKQogUEdfS0VZV09SRCgic2VjdXJpdHkiLCBTRUNVUklUWSwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgic2VlayIsIFNFRUssIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNlbGVjdCIsIFNFTEVDVCwgUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNlcXVlbmNlIiwgU0VRVUVOQ0Us IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNlcXVlbmNlcyIs IFNFUVVFTkNFUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmgKaW5kZXggZjdmNGJhNmMyYTguLmNiOWQwMmMwMGM0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmgKQEAgLTUxLDYgKzUxLDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlF WFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JBTkdFLAkvKiB3aW5kb3cgZnJhbWUgY2xhdXNlIHdpdGgg UkFOR0UgKi8KIAlFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX1JPV1MsCS8qIHdpbmRvdyBmcmFtZSBj bGF1c2Ugd2l0aCBST1dTICovCiAJRVhQUl9LSU5EX1dJTkRPV19GUkFNRV9HUk9VUFMsCS8qIHdp bmRvdyBmcmFtZSBjbGF1c2Ugd2l0aCBHUk9VUFMgKi8KKwlFWFBSX0tJTkRfUlBSX0RFRklORSwJ CS8qIERFRklORSAqLwogCUVYUFJfS0lORF9TRUxFQ1RfVEFSR0VULAkvKiBTRUxFQ1QgdGFyZ2V0 IGxpc3QgaXRlbSAqLwogCUVYUFJfS0lORF9JTlNFUlRfVEFSR0VULAkvKiBJTlNFUlQgdGFyZ2V0 IGxpc3QgaXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBVUERBVEUgYXNzaWdu bWVudCBzb3VyY2UgaXRlbSAqLwpAQCAtMjMwLDYgKzIzMSw3IEBAIHN0cnVjdCBQYXJzZVN0YXRl CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpwX2dyb3VwaW5nX25zaXRlbTsJLyogTlNJdGVtIGZvciBn cm91cGluZywgb3IgTlVMTCAqLwogCUxpc3QJICAgKnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJl c2VudGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNlcyAqLwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tp bmQ7CS8qIHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlJ3JlIHBhcnNpbmcgKi8KKwlMaXN0CSAg ICpwX3Jwcl9wYXR0ZXJuX3ZhcnM7IC8qIFJQUiB2YXJpYWJsZSBuYW1lcyBmb3IgREVGSU5FIGNs YXVzZSAqLwogCWludAkJCXBfbmV4dF9yZXNubzsJLyogbmV4dCB0YXJnZXRsaXN0IHJlc25vIHRv IGFzc2lnbiAqLwogCUxpc3QJICAgKnBfbXVsdGlhc3NpZ25fZXhwcnM7CS8qIGp1bmsgdGxpc3Qg ZW50cmllcyBmb3IgbXVsdGlhc3NpZ24gKi8KIAlMaXN0CSAgICpwX2xvY2tpbmdfY2xhdXNlOwkv KiByYXcgRk9SIFVQREFURS9GT1IgU0hBUkUgaW5mbyAqLwotLSAKMi41MC4xIChBcHBsZSBHaXQt MTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0002-Row-pattern-recognition-patch-parse-analysis.patch" Content-Disposition: attachment; filename="v49-0002-Row-pattern-recognition-patch-parse-analysis.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqql0y71 RnJvbSBkYjE5NWI0NTFlZmQyNDNmZjZjNmVmNjYzMmRjOTgzZjc4ODkxYzI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDIvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChwYXJzZS9hbmFseXNpcykuCgot LS0KIHNyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICB8ICAyNyArKwogc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgIHwgIDM1ICsrCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jICAgICAgfCAgNTEgKysrCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAg fCAgODUgKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL3BhcnNlci9SRUFETUUgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJz ZXIvbWVzb24uYnVpbGQgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5j ICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgfCAgIDggKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYyAgICB8ICA1NiArKysKIHNyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMgICB8IDEwMyArKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYyAgIHwgIDg2ICsrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyAg ICB8IDY4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oICAgICB8ICA1NCArKysKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ycHIu aCAgICB8ICAyMiArCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMjE3IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jw ci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jwci5oCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBmZjIyYTA0YWJlNS4uMTdkNDU5MzBkN2IgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVz L2NvcHlmdW5jcy5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAKIApAQCAtMTY2LDYgKzE2NywzMiBAQCBfY29weUJpdG1h cHNldChjb25zdCBCaXRtYXBzZXQgKmZyb20pCiAJcmV0dXJuIGJtc19jb3B5KGZyb20pOwogfQog CitzdGF0aWMgUlBSUGF0dGVybiAqCitfY29weVJQUlBhdHRlcm4oY29uc3QgUlBSUGF0dGVybiAq ZnJvbSkKK3sKKwlSUFJQYXR0ZXJuICpuZXdub2RlID0gbWFrZU5vZGUoUlBSUGF0dGVybik7CisK KwlDT1BZX1NDQUxBUl9GSUVMRChudW1WYXJzKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChtYXhEZXB0 aCk7CisJQ09QWV9TQ0FMQVJfRklFTEQobnVtRWxlbWVudHMpOworCisJLyogRGVlcCBjb3B5IHRo ZSB2YXJOYW1lcyBhcnJheSAoREVGSU5FIGNsYXVzZSBpcyByZXF1aXJlZCkgKi8KKwlBc3NlcnQo ZnJvbS0+bnVtVmFycyA+IDApOworCW5ld25vZGUtPnZhck5hbWVzID0gcGFsbG9jMF9hcnJheShj aGFyICosIGZyb20tPm51bVZhcnMpOworCWZvciAoaW50IGkgPSAwOyBpIDwgZnJvbS0+bnVtVmFy czsgaSsrKQorCQluZXdub2RlLT52YXJOYW1lc1tpXSA9IHBzdHJkdXAoZnJvbS0+dmFyTmFtZXNb aV0pOworCisJLyogRGVlcCBjb3B5IHRoZSBlbGVtZW50cyBhcnJheSAoYWx3YXlzIGhhcyBhdCBs ZWFzdCBvbmUgZWxlbWVudCArIEZJTikgKi8KKwlBc3NlcnQoZnJvbS0+bnVtRWxlbWVudHMgPj0g Mik7CisJbmV3bm9kZS0+ZWxlbWVudHMgPSBwYWxsb2NfYXJyYXkoUlBSUGF0dGVybkVsZW1lbnQs IGZyb20tPm51bUVsZW1lbnRzKTsKKwltZW1jcHkobmV3bm9kZS0+ZWxlbWVudHMsIGZyb20tPmVs ZW1lbnRzLAorCQkgICBmcm9tLT5udW1FbGVtZW50cyAqIHNpemVvZihSUFJQYXR0ZXJuRWxlbWVu dCkpOworCisJQ09QWV9TQ0FMQVJfRklFTEQoaXNBYnNvcmJhYmxlKTsKKworCXJldHVybiBuZXdu b2RlOworfQorCiAKIC8qCiAgKiBjb3B5T2JqZWN0SW1wbCAtLSBpbXBsZW1lbnRhdGlvbiBvZiBj b3B5T2JqZWN0KCk7IHNlZSBub2Rlcy9ub2Rlcy5oCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXgg M2QxYTFhZGY4NmUuLjMyODE5OTkxOGI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9l cXVhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMCw2 ICsyMCw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgi CiAKIApAQCAtMTQ5LDYgKzE1MCw0MCBAQCBfZXF1YWxCaXRtYXBzZXQoY29uc3QgQml0bWFwc2V0 ICphLCBjb25zdCBCaXRtYXBzZXQgKmIpCiAJcmV0dXJuIGJtc19lcXVhbChhLCBiKTsKIH0KIAor c3RhdGljIGJvb2wKK19lcXVhbFJQUlBhdHRlcm4oY29uc3QgUlBSUGF0dGVybiAqYSwgY29uc3Qg UlBSUGF0dGVybiAqYikKK3sKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChudW1WYXJzKTsKKwlDT01Q QVJFX1NDQUxBUl9GSUVMRChtYXhEZXB0aCk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQobnVtRWxl bWVudHMpOworCisJLyogQ29tcGFyZSB2YXJOYW1lcyBhcnJheSAqLworCWlmIChhLT5udW1WYXJz ID4gMCkKKwl7CisJCWlmIChhLT52YXJOYW1lcyA9PSBOVUxMIHx8IGItPnZhck5hbWVzID09IE5V TEwpCisJCQlyZXR1cm4gZmFsc2U7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgYS0+bnVtVmFyczsg aSsrKQorCQl7CisJCQlpZiAoc3RyY21wKGEtPnZhck5hbWVzW2ldLCBiLT52YXJOYW1lc1tpXSkg IT0gMCkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwkvKiBDb21wYXJlIGVsZW1lbnRz IGFycmF5ICovCisJaWYgKGEtPm51bUVsZW1lbnRzID4gMCkKKwl7CisJCWlmIChhLT5lbGVtZW50 cyA9PSBOVUxMIHx8IGItPmVsZW1lbnRzID09IE5VTEwpCisJCQlyZXR1cm4gZmFsc2U7CisJCWlm IChtZW1jbXAoYS0+ZWxlbWVudHMsIGItPmVsZW1lbnRzLAorCQkJCSAgIGEtPm51bUVsZW1lbnRz ICogc2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSkgIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChpc0Fic29yYmFibGUpOworCisJcmV0dXJuIHRydWU7 Cit9CisKIC8qCiAgKiBMaXN0cyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkKICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1 bmNzLmMKaW5kZXggOTUzYzU3OTdjNWQuLmU2ZWE5Y2UyMmQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK QEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBzZXQuaCIKICNpbmNsdWRl ICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJu b2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogCiAvKiBTdGF0ZSBm bGFnIHRoYXQgZGV0ZXJtaW5lcyBob3cgbm9kZVRvU3RyaW5nSW50ZXJuYWwoKSBzaG91bGQgdHJl YXQgbG9jYXRpb24gZmllbGRzICovCkBAIC03MjcsNiArNzI4LDU2IEBAIF9vdXRBX0NvbnN0KFN0 cmluZ0luZm8gc3RyLCBjb25zdCBBX0NvbnN0ICpub2RlKQogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxE KGxvY2F0aW9uKTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRSUFJQYXR0ZXJuKFN0cmluZ0luZm8g c3RyLCBjb25zdCBSUFJQYXR0ZXJuICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiUlBSUEFU VEVSTiIpOworCisJV1JJVEVfSU5UX0ZJRUxEKG51bVZhcnMpOworCVdSSVRFX0lOVF9GSUVMRCht YXhEZXB0aCk7CisJV1JJVEVfSU5UX0ZJRUxEKG51bUVsZW1lbnRzKTsKKworCS8qIFdyaXRlIHZh ck5hbWVzIGFycmF5IGFzIGxpc3Qgb2Ygc3RyaW5ncyAqLworCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoc3RyLCAiIDp2YXJOYW1lcyIpOworCWlmIChub2RlLT5udW1WYXJzID4gMCAmJiBub2RlLT52 YXJOYW1lcyAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgKCIp OworCQlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPm51bVZhcnM7IGkrKykKKwkJeworCQkJaWYg KGkgPiAwKQorCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgJyAnKTsKKwkJCW91dFRva2Vu KHN0ciwgbm9kZS0+dmFyTmFtZXNbaV0pOworCQl9CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0 ciwgJyknKTsKKwl9CisJZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA8PiIp OworCisJLyogV3JpdGUgZWxlbWVudHMgYXJyYXkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KHN0ciwgIiA6ZWxlbWVudHMiKTsKKwlpZiAobm9kZS0+bnVtRWxlbWVudHMgPiAwICYmIG5vZGUt PmVsZW1lbnRzICE9IE5VTEwpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICcgJyk7 CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbm9kZS0+bnVtRWxlbWVudHM7IGkrKykKKwkJeworCQkJ Y29uc3QgUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmbm9kZS0+ZWxlbWVudHNbaV07CisKKwkJ CWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiKCVkICVkICV1ICVkICVkICVkICVkKSIsCisJCQkJCQkJ IChpbnQpIGVsZW0tPnZhcklkLAorCQkJCQkJCSAoaW50KSBlbGVtLT5kZXB0aCwKKwkJCQkJCQkg KHVuc2lnbmVkKSBlbGVtLT5mbGFncywKKwkJCQkJCQkgKGludCkgZWxlbS0+bWluLAorCQkJCQkJ CSAoaW50KSBlbGVtLT5tYXgsCisJCQkJCQkJIChpbnQpIGVsZW0tPm5leHQsCisJCQkJCQkJIChp bnQpIGVsZW0tPmp1bXApOworCQl9CisJfQorCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsICIgPD4iKTsKKworCVdSSVRFX0JPT0xfRklFTEQoaXNBYnNvcmJhYmxlKTsKK30KKwog CiAvKgogICogb3V0Tm9kZSAtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IGI2YjJjZTZjNzkyLi42 YzM5YzZmZTA2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2JpdG1hcHNldC5oIgorI2luY2x1 ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3JlYWRmdW5jcy5oIgogCiAK QEAgLTU2Nyw2ICs1NjgsOTAgQEAgX3JlYWRFeHRlbnNpYmxlTm9kZSh2b2lkKQogCVJFQURfRE9O RSgpOwogfQogCitzdGF0aWMgUlBSUGF0dGVybiAqCitfcmVhZFJQUlBhdHRlcm4odm9pZCkKK3sK KwlSRUFEX0xPQ0FMUyhSUFJQYXR0ZXJuKTsKKworCVJFQURfSU5UX0ZJRUxEKG51bVZhcnMpOwor CVJFQURfSU5UX0ZJRUxEKG1heERlcHRoKTsKKwlSRUFEX0lOVF9GSUVMRChudW1FbGVtZW50cyk7 CisKKwkvKiBSZWFkIHZhck5hbWVzIGFycmF5ICovCisJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0 aCk7IC8qIHNraXAgOnZhck5hbWVzICovCisJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7IC8q IGdldCAnKCcgb3IgJzw+JyAqLworCWlmIChsb2NhbF9ub2RlLT5udW1WYXJzID4gMCAmJiB0b2tl blswXSA9PSAnKCcpCisJeworCQlsb2NhbF9ub2RlLT52YXJOYW1lcyA9IHBhbGxvY19hcnJheShj aGFyICosIGxvY2FsX25vZGUtPm51bVZhcnMpOworCQlmb3IgKGludCBpID0gMDsgaSA8IGxvY2Fs X25vZGUtPm51bVZhcnM7IGkrKykKKwkJeworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7 CisJCQlsb2NhbF9ub2RlLT52YXJOYW1lc1tpXSA9IGRlYmFja3NsYXNoKHRva2VuLCBsZW5ndGgp OworCQl9CisJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBza2lwICcpJyAqLworCX0K KwllbHNlCisJeworCQlsb2NhbF9ub2RlLT52YXJOYW1lcyA9IE5VTEw7CisJfQorCisJLyogUmVh ZCBlbGVtZW50cyBhcnJheSAqLworCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBza2lw IDplbGVtZW50cyAqLworCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBnZXQgJygnIG9y ICc8PicgKi8KKwlpZiAobG9jYWxfbm9kZS0+bnVtRWxlbWVudHMgPiAwICYmIHRva2VuWzBdID09 ICcoJykKKwl7CisJCWxvY2FsX25vZGUtPmVsZW1lbnRzID0gcGFsbG9jMF9hcnJheShSUFJQYXR0 ZXJuRWxlbWVudCwgbG9jYWxfbm9kZS0+bnVtRWxlbWVudHMpOworCQlmb3IgKGludCBpID0gMDsg aSA8IGxvY2FsX25vZGUtPm51bUVsZW1lbnRzOyBpKyspCisJCXsKKwkJCVJQUlBhdHRlcm5FbGVt ZW50ICplbGVtID0gJmxvY2FsX25vZGUtPmVsZW1lbnRzW2ldOworCQkJaW50CQkJdmFySWQsCisJ CQkJCQlmbGFncywKKwkJCQkJCWRlcHRoLAorCQkJCQkJbWluLAorCQkJCQkJbWF4LAorCQkJCQkJ bmV4dCwKKwkJCQkJCWp1bXA7CisKKwkJCS8qIFBhcnNlICIodmFySWQgZGVwdGggZmxhZ3MgbWlu IG1heCBuZXh0IGp1bXApIiAqLworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCQl2 YXJJZCA9IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCQlk ZXB0aCA9IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCQlm bGFncyA9IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCQlt aW4gPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJbWF4 ID0gYXRvaSh0b2tlbik7CisJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsKKwkJCW5leHQg PSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJanVtcCA9 IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7IC8qIHNraXAgJykn ICovCisKKwkJCWVsZW0tPnZhcklkID0gKFJQUlZhcklkKSB2YXJJZDsKKwkJCWVsZW0tPmZsYWdz ID0gKFJQUkVsZW1GbGFncykgZmxhZ3M7CisJCQllbGVtLT5kZXB0aCA9IChSUFJEZXB0aCkgZGVw dGg7CisJCQllbGVtLT5taW4gPSAoUlBSUXVhbnRpdHkpIG1pbjsKKwkJCWVsZW0tPm1heCA9IChS UFJRdWFudGl0eSkgbWF4OworCQkJZWxlbS0+bmV4dCA9IChSUFJFbGVtSWR4KSBuZXh0OworCQkJ ZWxlbS0+anVtcCA9IChSUFJFbGVtSWR4KSBqdW1wOworCisJCQkvKiBSZWFkIG5leHQgZWxlbWVu dCdzICcoJyBvciBlbmQgKi8KKwkJCWlmIChpIDwgbG9jYWxfbm9kZS0+bnVtRWxlbWVudHMgLSAx KQorCQkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBnZXQgJygnICovCisJCX0KKwl9 CisJZWxzZQorCXsKKwkJbG9jYWxfbm9kZS0+ZWxlbWVudHMgPSBOVUxMOworCX0KKworCVJFQURf Qk9PTF9GSUVMRChpc0Fic29yYmFibGUpOworCisJUkVBRF9ET05FKCk7Cit9CisKIAogLyoKICAq IHBhcnNlTm9kZVN0cmluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCmluZGV4IDhiNWE0YWY2YmYyLi41MWU2YjFh ZGZiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9NYWtlZmlsZQpAQCAtMzAsNiArMzAsNyBAQCBPQkpTID0gXAogCXBhcnNl X29wZXIubyBcCiAJcGFyc2VfcGFyYW0ubyBcCiAJcGFyc2VfcmVsYXRpb24ubyBcCisJcGFyc2Vf cnByLm8gXAogCXBhcnNlX3RhcmdldC5vIFwKIAlwYXJzZV90eXBlLm8gXAogCXBhcnNlX3V0aWxj bWQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvUkVBRE1FIGIvc3JjL2JhY2tl bmQvcGFyc2VyL1JFQURNRQppbmRleCBlMjZlYjQzN2E5Zi4uMjJhNWU5MWM4Y2YgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL1JF QURNRQpAQCAtMjYsNiArMjYsNyBAQCBwYXJzZV9ub2RlLmMJY3JlYXRlIG5vZGVzIGZvciB2YXJp b3VzIHN0cnVjdHVyZXMKIHBhcnNlX29wZXIuYwloYW5kbGUgb3BlcmF0b3JzIGluIGV4cHJlc3Np b25zCiBwYXJzZV9wYXJhbS5jCWhhbmRsZSBQYXJhbXMgKGZvciB0aGUgY2FzZXMgdXNlZCBpbiB0 aGUgY29yZSBiYWNrZW5kKQogcGFyc2VfcmVsYXRpb24uYyBzdXBwb3J0IHJvdXRpbmVzIGZvciB0 YWJsZXMgYW5kIGNvbHVtbiBoYW5kbGluZworcGFyc2VfcnByLmMJaGFuZGxlIFJvdyBQYXR0ZXJu IFJlY29nbml0aW9uCiBwYXJzZV90YXJnZXQuYwloYW5kbGUgdGhlIHJlc3VsdCBsaXN0IG9mIHRo ZSBxdWVyeQogcGFyc2VfdHlwZS5jCXN1cHBvcnQgcm91dGluZXMgZm9yIGRhdGEgdHlwZSBoYW5k bGluZwogcGFyc2VfdXRpbGNtZC5jCXBhcnNlIGFuYWx5c2lzIGZvciB1dGlsaXR5IGNvbW1hbmRz IChkb25lIGF0IGV4ZWN1dGlvbiB0aW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCmluZGV4IDg2YzA5 YjI5ZWMyLi44MmZlODZlMTBkYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29u LmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZApAQCAtMTcsNiArMTcs NyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwYXJzZV9vcGVyLmMnLAogICAncGFy c2VfcGFyYW0uYycsCiAgICdwYXJzZV9yZWxhdGlvbi5jJywKKyAgJ3BhcnNlX3Jwci5jJywKICAg J3BhcnNlX3RhcmdldC5jJywKICAgJ3BhcnNlX3R5cGUuYycsCiAgICdwYXJzZV91dGlsY21kLmMn LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IGFjYjkzMzM5MmRlLi5iMTZlNTRkNmUzMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTk3LDcgKzU5NywxMCBAQCBjaGVja19hZ2dsZXZlbHNf YW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCQllcnIg PSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwcm9wZXJ0eSBkZWZp bml0aW9uIGV4cHJlc3Npb25zIik7CiAJCQllbHNlCiAJCQkJZXJyID0gXygiZ3JvdXBpbmcgb3Bl cmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHJvcGVydHkgZGVmaW5pdGlvbiBleHByZXNzaW9u cyIpOworCQkJYnJlYWs7CiAKKwkJY2FzZSBFWFBSX0tJTkRfUlBSX0RFRklORToKKwkJCWVycmtp bmQgPSB0cnVlOwogCQkJYnJlYWs7CiAKIAkJCS8qCkBAIC0xMDQ1LDYgKzEwNDgsOSBAQCB0cmFu c2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5j LAogCQljYXNlIEVYUFJfS0lORF9GT1JfUE9SVElPTjoKIAkJCWVyciA9IF8oIndpbmRvdyBmdW5j dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CiAJ CQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfUlBSX0RFRklORToKKwkJCWVycmtpbmQgPSB0cnVl OworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRl ZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTExMjUsNyArMTEzMSw4IEBAIHRyYW5z Zm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMs CiAJCQkJZXF1YWwocmVmd2luLT5vcmRlckNsYXVzZSwgd2luZGVmLT5vcmRlckNsYXVzZSkgJiYK IAkJCQlyZWZ3aW4tPmZyYW1lT3B0aW9ucyA9PSB3aW5kZWYtPmZyYW1lT3B0aW9ucyAmJgogCQkJ CWVxdWFsKHJlZndpbi0+c3RhcnRPZmZzZXQsIHdpbmRlZi0+c3RhcnRPZmZzZXQpICYmCi0JCQkJ ZXF1YWwocmVmd2luLT5lbmRPZmZzZXQsIHdpbmRlZi0+ZW5kT2Zmc2V0KSkKKwkJCQllcXVhbChy ZWZ3aW4tPmVuZE9mZnNldCwgd2luZGVmLT5lbmRPZmZzZXQpICYmCisJCQkJZXF1YWwocmVmd2lu LT5ycENvbW1vblN5bnRheCwgd2luZGVmLT5ycENvbW1vblN5bnRheCkpCiAJCQl7CiAJCQkJLyog Zm91bmQgYSBkdXBsaWNhdGUgd2luZG93IHNwZWNpZmljYXRpb24gKi8KIAkJCQl3ZnVuYy0+d2lu cmVmID0gd2lucmVmOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCmluZGV4IDVmZTUyNTdiMDE5 Li41NTBlYTRlYjljMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVz ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAtMzksNiArMzks NyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX29wZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNp bmNsdWRlICJwYXJzZXIvcGFyc2VfcnByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Rhcmdl dC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlci5oIgpAQCAtMTAxLDcgKzEwMiw2IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1GcmFtZU9m ZnNldChQYXJzZVN0YXRlICpwc3RhdGUsIGludCBmcmFtZU9wdGlvbnMsCiAJCQkJCQkJCSAgT2lk IHJhbmdlb3BmYW1pbHksIE9pZCByYW5nZW9wY2ludHlwZSwgT2lkICppblJhbmdlRnVuYywKIAkJ CQkJCQkJICBOb2RlICpjbGF1c2UpOwogCi0KIC8qCiAgKiB0cmFuc2Zvcm1Gcm9tQ2xhdXNlIC0K ICAqCSAgUHJvY2VzcyB0aGUgRlJPTSBjbGF1c2UgYW5kIGFkZCBpdGVtcyB0byB0aGUgcXVlcnkn cyByYW5nZSB0YWJsZSwKQEAgLTMwMzUsNiArMzAzNSw4IEBAIHRyYW5zZm9ybVdpbmRvd0RlZmlu aXRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogQW5kIHByZXBhcmUgdGhlIG5ldyBXaW5k b3dDbGF1c2UuCiAJCSAqLwogCQl3YyA9IG1ha2VOb2RlKFdpbmRvd0NsYXVzZSk7CisJCXdjLT5y cFNraXBUbyA9IFNUX05PTkU7IC8qIFNUX05PTkUgbWFya3MgdGhpcyBhcyBhIG5vbi1SUFIgd2lu ZG93OworCQkJCQkJCQkgKiBvdmVycmlkZGVuIGJ5IHRyYW5zZm9ybVJQUigpIGlmIFJQUiBpcyB1 c2VkICovCiAJCXdjLT5uYW1lID0gd2luZGVmLT5uYW1lOwogCQl3Yy0+cmVmbmFtZSA9IHdpbmRl Zi0+cmVmbmFtZTsKIApAQCAtMzE2Myw2ICszMTY1LDEwIEBAIHRyYW5zZm9ybVdpbmRvd0RlZmlu aXRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJIHJhbmdlb3BmYW1pbHksIHJh bmdlb3BjaW50eXBlLAogCQkJCQkJCQkJCQkgJndjLT5lbmRJblJhbmdlRnVuYywKIAkJCQkJCQkJ CQkJIHdpbmRlZi0+ZW5kT2Zmc2V0KTsKKworCQkvKiBQcm9jZXNzIFJvdyBQYXR0ZXJuIFJlY29n bml0aW9uIHJlbGF0ZWQgY2xhdXNlcyAqLworCQl0cmFuc2Zvcm1SUFIocHN0YXRlLCB3Yywgd2lu ZGVmLCB0YXJnZXRsaXN0KTsKKwogCQl3Yy0+d2lucmVmID0gd2lucmVmOwogCiAJCXJlc3VsdCA9 IGxhcHBlbmQocmVzdWx0LCB3Yyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfY3RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMKaW5kZXggY2NkZTE5OTMx OWEuLjNlNDkzYmViYTBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3Rl LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCkBAIC05Niw2ICs5NiwxNCBA QCBzdGF0aWMgdm9pZCBjaGVja1dlbGxGb3JtZWRSZWN1cnNpb24oQ3RlU3RhdGUgKmNzdGF0ZSk7 CiBzdGF0aWMgYm9vbCBjaGVja1dlbGxGb3JtZWRSZWN1cnNpb25XYWxrZXIoTm9kZSAqbm9kZSwg Q3RlU3RhdGUgKmNzdGF0ZSk7CiBzdGF0aWMgdm9pZCBjaGVja1dlbGxGb3JtZWRTZWxlY3RTdG10 KFNlbGVjdFN0bXQgKnN0bXQsIEN0ZVN0YXRlICpjc3RhdGUpOwogCisvKiBSZWN1cnNpdmUtV0lU SCBSUFIgcmVqZWN0aW9uICovCit0eXBlZGVmIHN0cnVjdAoreworCVBhcnNlTG9jCWxvY2F0aW9u OwkJLyogbG9jYXRpb24gb2YgZmlyc3QgUlBSIHdpbmRvdywgb3IgLTEgKi8KK30gQ29udGFpblJQ UkNvbnRleHQ7CisKK3N0YXRpYyBib29sIGNvbnRhaW5fcnByX3dhbGtlcihOb2RlICpub2RlLCB2 b2lkICpjb250ZXh0KTsKKwogCiAvKgogICogdHJhbnNmb3JtV2l0aENsYXVzZSAtCkBAIC0xNjQs NiArMTcyLDI4IEBAIHRyYW5zZm9ybVdpdGhDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaXRo Q2xhdXNlICp3aXRoQ2xhdXNlKQogCQlDdGVTdGF0ZQljc3RhdGU7CiAJCWludAkJCWk7CiAKKwkJ LyoKKwkJICogUGVyIElTTy9JRUMgOTA3NS0yOjIwMTYgNy4xNyBTeW50YXggUnVsZSAzKWUpZiks IGV2ZXJ5IDx3aXRoIGxpc3QKKwkJICogZWxlbWVudD4gaW4gYSBXSVRIIFJFQ1VSU0lWRSBjbGF1 c2UgaXMgInBvdGVudGlhbGx5IHJlY3Vyc2l2ZSIgYW5kCisJCSAqIHNoYWxsIG5vdCBjb250YWlu IGEgPHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50YXg+LiAgKFBvc3RncmVTUUwgZG9lcworCQkgKiBu b3QgaW1wbGVtZW50IDxyb3cgcGF0dGVybiBtZWFzdXJlcz4sIHNvIG9ubHkgdGhlIGNvbW1vbiBz eW50YXgKKwkJICogbmVlZHMgdG8gYmUgY2hlY2tlZC4pICBJU08vSUVDIDE5MDc1LTUgNi4xNy41 IChSMDIwKSBhbmQgNC4xOC41CisJCSAqIChSMDEwKSByZXN0YXRlIHRoZSBwcm9oaWJpdGlvbiBm b3IgQ1JFQVRFIFJFQ1VSU0lWRSBWSUVXLCB3aGljaCBpcworCQkgKiByZXdyaXR0ZW4gdG8gV0lU SCBSRUNVUlNJVkUgYnkgbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoKSBhbmQgc28KKwkJICogZmxv d3MgdGhyb3VnaCBoZXJlIGFzIHdlbGwuCisJCSAqLworCQlmb3JlYWNoX25vZGUoQ29tbW9uVGFi bGVFeHByLCBjdGUsIHdpdGhDbGF1c2UtPmN0ZXMpCisJCXsKKwkJCUNvbnRhaW5SUFJDb250ZXh0 IGN0eDsKKworCQkJY3R4LmxvY2F0aW9uID0gLTE7CisJCQlpZiAoY29udGFpbl9ycHJfd2Fsa2Vy KGN0ZS0+Y3RlcXVlcnksICZjdHgpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiY2Fubm90IHVzZSByb3cgcGF0 dGVybiByZWNvZ25pdGlvbiBpbiBhIHJlY3Vyc2l2ZSBxdWVyeSIpLAorCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgY3R4LmxvY2F0aW9uKSk7CisJCX0KKwogCQljc3RhdGUucHN0YXRl ID0gcHN0YXRlOwogCQljc3RhdGUubnVtaXRlbXMgPSBsaXN0X2xlbmd0aCh3aXRoQ2xhdXNlLT5j dGVzKTsKIAkJY3N0YXRlLml0ZW1zID0gKEN0ZUl0ZW0gKikgcGFsbG9jMChjc3RhdGUubnVtaXRl bXMgKiBzaXplb2YoQ3RlSXRlbSkpOwpAQCAtMTI2OCwzICsxMjk4LDI5IEBAIGNoZWNrV2VsbEZv cm1lZFNlbGVjdFN0bXQoU2VsZWN0U3RtdCAqc3RtdCwgQ3RlU3RhdGUgKmNzdGF0ZSkKIAkJfQog CX0KIH0KKworCisvKgorICogY29udGFpbl9ycHJfd2Fsa2VyCisgKgkgIFJldHVybnMgdHJ1ZSBp ZiB0aGUgcmF3IHBhcnNlIHRyZWUgY29udGFpbnMgYW55IDxyb3cgcGF0dGVybiBjb21tb24KKyAq CSAgc3ludGF4PiAtLSBpLmUuLCBhbnkgV2luZG93RGVmIHdpdGggUEFUVEVSTi9ERUZJTkUgYXR0 YWNoZWQuICBVc2VkCisgKgkgIGJ5IHRyYW5zZm9ybVdpdGhDbGF1c2UoKSB0byBlbmZvcmNlIElT Ty9JRUMgOTA3NS0yOjIwMTYgNy4xNyBTUiAzKWYpCisgKgkgIG9uIFdJVEggUkVDVVJTSVZFIGVs ZW1lbnRzLgorICovCitzdGF0aWMgYm9vbAorY29udGFpbl9ycHJfd2Fsa2VyKE5vZGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpCit7CisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOwor CWlmIChJc0Eobm9kZSwgV2luZG93RGVmKSkKKwl7CisJCVdpbmRvd0RlZiAgKndkID0gKFdpbmRv d0RlZiAqKSBub2RlOworCisJCWlmICh3ZC0+cnBDb21tb25TeW50YXggIT0gTlVMTCkKKwkJewor CQkJKChDb250YWluUlBSQ29udGV4dCAqKSBjb250ZXh0KS0+bG9jYXRpb24gPSB3ZC0+cnBDb21t b25TeW50YXgtPmxvY2F0aW9uOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisJcmV0dXJuIHJh d19leHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNvbnRhaW5fcnByX3dhbGtlciwgY29udGV4 dCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA5YWRjOWQ0YzBmNi4uNmU1OTkyNjQy YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTc5LDYgKzU3OSw3IEBAIHRyYW5zZm9y bUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBF WFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoK IAkJY2FzZSBFWFBSX0tJTkRfUFJPUEdSQVBIX1BST1BFUlRZOgorCQljYXNlIEVYUFJfS0lORF9S UFJfREVGSU5FOgogCQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAKQEAgLTYyNyw2ICs2MjgsNTcg QEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVm KQogCWlmIChub2RlICE9IE5VTEwpCiAJCXJldHVybiBub2RlOwogCisJLyotLS0tLS0tLS0tCisJ ICogUXVhbGlmaWVkIHJlZmVyZW5jZXMgaW4gREVGSU5FIG5lZWQgYSB0cmktY2xhc3NpZmljYXRp b246CisJICoKKwkgKgkgIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVyIChlLmcuIFVQLnByaWNl KTogdmFsaWQgcGVyCisJICoJICBJU08vSUVDIDE5MDc1LTUgNi4xNSAvIDQuMTYgYnV0IG5vdCB5 ZXQgaW1wbGVtZW50ZWQgLS0KKwkgKgkgIHJhaXNlIEZFQVRVUkVfTk9UX1NVUFBPUlRFRC4KKwkg KgorCSAqCSAgRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVyOiBwcm9oaWJpdGVk IGJ5CisJICoJICBJU08vSUVDIDE5MDc1LTUgNi41IC0tIHJhaXNlIFNZTlRBWF9FUlJPUi4KKwkg KgorCSAqCSAgYW55IG90aGVyIHF1YWxpZmllciAodHlwbywgdW5kZWZpbmVkIG5hbWUpOiBmYWxs IHRocm91Z2ggYW5kIGxldAorCSAqCSAgbm9ybWFsIGNvbHVtbiByZXNvbHV0aW9uIHByb2R1Y2Ug YSBzZW5zaWJsZSBlcnJvci4KKwkgKgorCSAqIFRoZSBxdW90ZWQgdGV4dCByZWZsZWN0cyBvbmx5 IHRoZSBDb2x1bW5SZWYgcG9ydGlvbjsgYSB0cmFpbGluZyBmaWVsZAorCSAqIHNlbGVjdGlvbiBv biBhIGNvbXBvc2l0ZSB0eXBlIChlLmcuICIuYW1vdW50IiBpbiAiKEEuaXRlbXMpLmFtb3VudCIp CisJICogbGl2ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIEFfSW5kaXJlY3Rpb24gbm9kZSBhbmQgaXMg bm90IGluY2x1ZGVkIGhlcmUuCisJICogVGhhdCBjYW4gYmUgcmV2aXNpdGVkIHdoZW4gTUVBU1VS RVMgc3VwcG9ydCBhZGRzIGluZGlyZWN0aW9uLWF3YXJlCisJICogdHJhdmVyc2FsLgorCSAqLS0t LS0tLS0tLQorCSAqLworCWlmIChwc3RhdGUtPnBfZXhwcl9raW5kID09IEVYUFJfS0lORF9SUFJf REVGSU5FICYmCisJCWxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgIT0gMSkKKwl7CisJCWNoYXIJ ICAgKnF1YWxpZmllciA9IHN0clZhbChsaW5pdGlhbChjcmVmLT5maWVsZHMpKTsKKwkJYm9vbAkJ aXNfcGF0dGVybl92YXIgPSBmYWxzZTsKKworCQlmb3JlYWNoX25vZGUoU3RyaW5nLCBwdiwgcHN0 YXRlLT5wX3Jwcl9wYXR0ZXJuX3ZhcnMpCisJCXsKKwkJCWlmIChzdHJjbXAoc3RyVmFsKHB2KSwg cXVhbGlmaWVyKSA9PSAwKQorCQkJeworCQkJCWlzX3BhdHRlcm5fdmFyID0gdHJ1ZTsKKwkJCQli cmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChpc19wYXR0ZXJuX3ZhcikKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQll cnJtc2coInBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gXCIlc1wiIGlzIG5v dCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZSIsCisJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5n KGNyZWYtPmZpZWxkcykpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5s b2NhdGlvbikpOworCQllbHNlIGlmIChyZWZuYW1lTmFtZXNwYWNlSXRlbShwc3RhdGUsIE5VTEws IHF1YWxpZmllciwKKwkJCQkJCQkJCSAgY3JlZi0+bG9jYXRpb24sIE5VTEwpICE9IE5VTEwpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJZXJybXNnKCJyYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiBcIiVzXCIgaXMg bm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZSIsCisJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5n KGNyZWYtPmZpZWxkcykpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5s b2NhdGlvbikpOworCQkvKiBlbHNlOiB1bmtub3duIHF1YWxpZmllciAtLSBmYWxsIHRocm91Z2gg dG8gbm9ybWFsIHJlc29sdXRpb24gKi8KKwl9CisKIAkvKi0tLS0tLS0tLS0KIAkgKiBUaGUgYWxs b3dlZCBzeW50YXhlcyBhcmU6CiAJICoKQEAgLTg5NCw2ICs5NDYsMzAgQEAgdHJhbnNmb3JtQ29s dW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQl9CiAJfQogCisJ LyoKKwkgKiBSZXN0cmljdCBjb2x1bW4gcmVmZXJlbmNlcyBpbiBhIHJvdyBwYXR0ZXJuIERFRklO RSBjbGF1c2UuICBub2RlIGlzIG5vdworCSAqIGEgc3VjY2Vzc2Z1bGx5IHJlc29sdmVkIHJlZmVy ZW5jZSwgc28gcmVqZWN0IHRoZSB0d28gZm9ybXMgUlBSIGRvZXMgbm90CisJICogYWxsb3c6IGEg Y29ycmVsYXRlZCByZWZlcmVuY2UgdG8gYW4gb3V0ZXIgcXVlcnkncyBjb2x1bW4sIGFuZCBhCisJ ICogc2NoZW1hL2NhdGFsb2ctcXVhbGlmaWVkIHJlZmVyZW5jZSAodGhyZWUgb3IgbW9yZSBuYW1l IHBhcnRzKS4gIFNpbXBsZQorCSAqIHR3by1wYXJ0IHF1YWxpZmllcnMgKHBhdHRlcm4gb3IgcmFu Z2UgdmFyaWFibGUpIGFyZSBoYW5kbGVkIGVhcmxpZXIsCisJICogYmVmb3JlIHJlc29sdXRpb24u CisJICovCisJaWYgKHBzdGF0ZS0+cF9leHByX2tpbmQgPT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUp CisJeworCQlpZiAoSXNBKG5vZGUsIFZhcikgJiYgKChWYXIgKikgbm9kZSktPnZhcmxldmVsc3Vw ID4gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCB1c2Ugb3V0ZXIgcXVlcnkgY29sdW1u IGluIERFRklORSBjbGF1c2UiKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3Jl Zi0+bG9jYXRpb24pKTsKKworCQlpZiAobGlzdF9sZW5ndGgoY3JlZi0+ZmllbGRzKSA+PSAzKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCWVycm1zZygicXVhbGlmaWVkIGV4cHJlc3Npb24gXCIlc1wiIGlzIG5vdCBhbGxvd2VkIGlu IERFRklORSBjbGF1c2UiLAorCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMp KSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKTsKKwl9 CisKIAlyZXR1cm4gbm9kZTsKIH0KIApAQCAtMTg5Myw2ICsxOTY5LDMxIEBAIHRyYW5zZm9ybVN1 YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uIik7CiAJCQli cmVhazsKIAorCQkJLyotLS0tLS0tLS0tCisJCQkgKiBYWFggU1FML1JQUiAoSVNPL0lFQyAxOTA3 NS01IDYuMTcuNCAvIDQuMTguNDsgUjAyMCAvIFIwMTApCisJCQkgKiBwZXJtaXRzIGEgc3VicXVl cnkgbmVzdGVkIGluIGEgREVGSU5FIGV4cHJlc3Npb24gcHJvdmlkZWQKKwkJCSAqIHRoYXQ6CisJ CQkgKiAgIChhKSB0aGUgc3VicXVlcnkgZG9lcyBub3QgaXRzZWxmIHBlcmZvcm0gcm93IHBhdHRl cm4KKwkJCSAqICAgICAgIHJlY29nbml0aW9uLCBhbmQKKwkJCSAqICAgKGIpIHRoZSBzdWJxdWVy eSBkb2VzIG5vdCByZWZlcmVuY2UgYSByb3cgcGF0dGVybiB2YXJpYWJsZQorCQkJICogICAgICAg b2YgdGhlIG91dGVyIHF1ZXJ5LgorCQkJICoKKwkJCSAqIFdlIHJlamVjdCBhbGwgc3VicXVlcmll cyBoZXJlIGZvciBub3cuICBJbXBsZW1lbnRpbmcgdGhlCisJCQkgKiBjYXNlIGRpc3RpbmN0aW9u IHdvdWxkIG1lYW4gd2Fsa2luZyB0aGUgYW5hbHl6ZWQgc3VicXVlcnkKKwkJCSAqIFF1ZXJ5IHRy ZWUgZm9yIG5lc3RlZCBSUFIgd2luZG93IGNsYXVzZXMgdG8gZW5mb3JjZSAoYSksCisJCQkgKiBh bmQgd2Fsa2luZyBpdCBmb3IgQ29sdW1uUmVmIHF1YWxpZmllcnMgbWF0Y2hpbmcgYW55CisJCQkg KiBhbmNlc3RvcidzIHBfcnByX3BhdHRlcm5fdmFycyB0byBlbmZvcmNlIChiKS4gIEJvdGggY2hl Y2tzCisJCQkgKiBhcmUgZG9hYmxlIHdpdGggdGhlIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIC0t IHRoZXkgYXJlCisJCQkgKiBsZWZ0IGFzIGZ1dHVyZSB3b3JrLCBub3QgYmxvY2tlZCBvbiBhbnkg b3RoZXIgZmVhdHVyZS4KKwkJCSAqIFVudGlsIHRoZW4gdGhpcyBibGFua2V0IHJlamVjdGlvbiBp cyBpbnRlbnRpb25hbAorCQkJICogb3Zlci1yZWplY3Rpb24sIG5vdCBhIHN0YW5kYXJkIGZpdDsg aXQgc3Vic3VtZXMgYm90aCAoYSkKKwkJCSAqIGFuZCAoYikgYnkgbWFraW5nIHRoZSBzdWJxdWVy eSBpdHNlbGYgdW5yZWFjaGFibGUuCisJCQkgKi0tLS0tLS0tLS0KKwkJCSAqLworCQljYXNlIEVY UFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBE RUZJTkUgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBp bnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKIAkJCSAqIGNv bXBpbGVyIHdpbGwgd2FybiBpZiB3ZSBhZGQgYSBuZXcgUGFyc2VFeHByS2luZCB3aXRob3V0CkBA IC0zMjU1LDYgKzMzNTYsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJL aW5kKQogCQkJcmV0dXJuICJwcm9wZXJ0eSBkZWZpbml0aW9uIGV4cHJlc3Npb24iOwogCQljYXNl IEVYUFJfS0lORF9GT1JfUE9SVElPTjoKIAkJCXJldHVybiAiRk9SIFBPUlRJT04gT0YiOworCQlj YXNlIEVYUFJfS0lORF9SUFJfREVGSU5FOgorCQkJcmV0dXJuICJERUZJTkUiOwogCiAJCQkvKgog CQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRo YXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCA4NjA3NjdhNTJlZS4uMWY2YzhmYTRm YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg InBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogCkBAIC03NTgsOCArNzU5LDg4IEBAIFBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCWlmIChyZXRzZXQpCiAJCWNoZWNr X3NyZl9jYWxsX3BsYWNlbWVudChwc3RhdGUsIGxhc3Rfc3JmLCBsb2NhdGlvbik7CiAKKwkvKgor CSAqIFJQUiBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyAoUFJFVi9ORVhUL0ZJUlNUL0xBU1QpIGFyZSBv bmx5IG1lYW5pbmdmdWwKKwkgKiBpbnNpZGUgYSBXSU5ET1cgREVGSU5FIGNsYXVzZS4KKwkgKgor CSAqIE91dHNpZGUgREVGSU5FLCB0aGVzZSBwb2x5bW9ycGhpYyBwbGFjZWhvbGRlcnMgY2FuIHNo YWRvdyBjb2x1bW4gYWNjZXNzCisJICogdmlhIGZ1bmN0aW9uYWwgbm90YXRpb24gKGUuZy4sIGxh c3QoZikgbWVhbmluZyBmLmxhc3QpLiBGb3IgdGhlIDEtYXJnCisJICogZm9ybSwgdHJ5IGNvbHVt biBwcm9qZWN0aW9uIGZpcnN0OyBpZiB0aGF0IHN1Y2NlZWRzLCB1c2UgaXQgaW5zdGVhZC4KKwkg KiBPdGhlcndpc2UsIHJlcG9ydCBhIGNsZWFyIHBhcnNlciBlcnJvci4KKwkgKi8KKwlpZiAoZmRy ZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgJiYKKwkJcHN0YXRlLT5wX2V4cHJfa2luZCAhPSBF WFBSX0tJTkRfUlBSX0RFRklORSAmJgorCQkoZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UIHx8 IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVCB8fAorCQkgZnVuY2lkID09IEZfUFJFVl9BTllF TEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDggfHwKKwkJIGZ1 bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTEFTVF9BTllFTEVNRU5U IHx8CisJCSBmdW5jaWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZf TEFTVF9BTllFTEVNRU5UX0lOVDgpKQorCXsKKwkJLyogMS1hcmcgZm9ybTogdHJ5IGNvbHVtbiBw cm9qZWN0aW9uIGJlZm9yZSBlcnJvcmluZyBvdXQgKi8KKwkJaWYgKG5hcmdzID09IDEgJiYgIWFn Z19zdGFyICYmICFhZ2dfZGlzdGluY3QgJiYgb3ZlciA9PSBOVUxMICYmCisJCQlsaXN0X2xlbmd0 aChmdW5jbmFtZSkgPT0gMSkKKwkJeworCQkJTm9kZQkgICAqcHJvamVjdGlvbjsKKworCQkJcHJv amVjdGlvbiA9IFBhcnNlQ29tcGxleFByb2plY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkJc3Ry VmFsKGxpbml0aWFsKGZ1bmNuYW1lKSksCisJCQkJCQkJCQkJCQlsaW5pdGlhbChmYXJncyksCisJ CQkJCQkJCQkJCQlsb2NhdGlvbik7CisJCQlpZiAocHJvamVjdGlvbikKKwkJCQlyZXR1cm4gcHJv amVjdGlvbjsKKwkJfQorCisJCS8qIE5vdCBhIGNvbHVtbiBwcm9qZWN0aW9uIC0tIHJlcG9ydCBl cnJvciAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCWVycm1zZygiY2Fubm90IHVzZSAlcyBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZSIs CisJCQkJCSAgIE5hbWVMaXN0VG9TdHJpbmcoZnVuY25hbWUpKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBsb2NhdGlvbikpOworCX0KKwogCS8qIGJ1aWxkIHRoZSBhcHByb3ByaWF0 ZSBvdXRwdXQgc3RydWN0dXJlICovCi0JaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFM IHx8IGZkcmVzdWx0ID09IEZVTkNERVRBSUxfUFJPQ0VEVVJFKQorCWlmIChmZHJlc3VsdCA9PSBG VU5DREVUQUlMX05PUk1BTCAmJgorCQlwc3RhdGUtPnBfZXhwcl9raW5kID09IEVYUFJfS0lORF9S UFJfREVGSU5FICYmCisJCShmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09 IEZfTkVYVF9BTllFTEVNRU5UIHx8CisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5U OCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCB8fAorCQkgZnVuY2lkID09IEZf RklSU1RfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVMRU1FTlQgfHwKKwkJIGZ1 bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVM RU1FTlRfSU5UOCkpCisJeworCQkvKgorCQkgKiBSUFIgbmF2aWdhdGlvbiBmdW5jdGlvbnMgKFBS RVYvTkVYVC9GSVJTVC9MQVNUKSBhcmUgY29tcGlsZWQgaW50bworCQkgKiBFRU9QX1JQUl9OQVZf U0VUIC8gRUVPUF9SUFJfTkFWX1JFU1RPUkUgb3Bjb2RlcyBpbnN0ZWFkIG9mIGEgbm9ybWFsCisJ CSAqIGZ1bmN0aW9uIGNhbGwuICBSZXByZXNlbnQgdGhlbSBhcyBSUFJOYXZFeHByIG5vZGVzIHNv IHRoYXQgbGF0ZXIKKwkJICogc3RhZ2VzIGNhbiBpZGVudGlmeSB0aGVtIHdpdGhvdXQgcmVseWlu ZyBvbiBmdW5jaWQgY29tcGFyaXNvbnMuCisJCSAqLworCQlSUFJOYXZLaW5kCWtpbmQ7CisJCWJv b2wJCWhhc19vZmZzZXQ7CisJCVJQUk5hdkV4cHIgKm5hdmV4cHI7CisKKwkJaWYgKGZ1bmNpZCA9 PSBGX1BSRVZfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCkK KwkJCWtpbmQgPSBSUFJfTkFWX1BSRVY7CisJCWVsc2UgaWYgKGZ1bmNpZCA9PSBGX05FWFRfQU5Z RUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCkKKwkJCWtpbmQgPSBS UFJfTkFWX05FWFQ7CisJCWVsc2UgaWYgKGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlQgfHwg ZnVuY2lkID09IEZfRklSU1RfQU5ZRUxFTUVOVF9JTlQ4KQorCQkJa2luZCA9IFJQUl9OQVZfRklS U1Q7CisJCWVsc2UKKwkJCWtpbmQgPSBSUFJfTkFWX0xBU1Q7CisKKwkJaGFzX29mZnNldCA9IChm dW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fAorCQkJCQkgIGZ1bmNpZCA9PSBGX05F WFRfQU5ZRUxFTUVOVF9JTlQ4IHx8CisJCQkJCSAgZnVuY2lkID09IEZfRklSU1RfQU5ZRUxFTUVO VF9JTlQ4IHx8CisJCQkJCSAgZnVuY2lkID09IEZfTEFTVF9BTllFTEVNRU5UX0lOVDgpOworCisJ CW5hdmV4cHIgPSBtYWtlTm9kZShSUFJOYXZFeHByKTsKKworCQluYXZleHByLT5raW5kID0ga2lu ZDsKKwkJbmF2ZXhwci0+YXJnID0gKEV4cHIgKikgbGluaXRpYWwoZmFyZ3MpOworCQluYXZleHBy LT5vZmZzZXRfYXJnID0gaGFzX29mZnNldCA/IChFeHByICopIGxzZWNvbmQoZmFyZ3MpIDogTlVM TDsKKwkJbmF2ZXhwci0+cmVzdWx0dHlwZSA9IHJldHR5cGU7CisJCS8qIHJlc3VsdGNvbGxpZCB3 aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJbmF2ZXhwci0+bG9jYXRpb24gPSBs b2NhdGlvbjsKKworCQlyZXR2YWwgPSAoTm9kZSAqKSBuYXZleHByOworCX0KKwllbHNlIGlmIChm ZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCB8fCBmZHJlc3VsdCA9PSBGVU5DREVUQUlMX1BS T0NFRFVSRSkKIAl7CiAJCUZ1bmNFeHByICAgKmZ1bmNleHByID0gbWFrZU5vZGUoRnVuY0V4cHIp OwogCkBAIC0yNzkyLDYgKzI4NzMsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJf S0lORF9GT1JfUE9SVElPTjoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7 CisJCWNhc2UgRVhQUl9LSU5EX1JQUl9ERUZJTkU6CisJCQllcnJraW5kID0gdHJ1ZTsKKwkJCWJy ZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBj YXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcnByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlYWVhMmJlNzUwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC0wLDAgKzEsNjgxIEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwYXJzZV9ycHIuYworICoJICBIYW5kbGUgUm93IFBhdHRlcm4g UmVjb2duaXRpb24gY2xhdXNlcyBpbiBwYXJzZXIuCisgKgorICogVGhpcyBmaWxlIHRyYW5zZm9y bXMgUlBSLXJlbGF0ZWQgY2xhdXNlcyBmcm9tIHJhdyBwYXJzZSB0cmVlIHRvIHBsYW5uZXIKKyAq IHN0cnVjdHVyZXMgZHVyaW5nIHF1ZXJ5IGFuYWx5c2lzOgorICogICAtIFZhbGlkYXRlcyBmcmFt ZSBvcHRpb25zIChtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XLCBubyBFWENMVURFKQorICogICAt IFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNvdW50IChtYXggUlBSX1ZBUklEX01BWCArIDEp CisgKiAgIC0gVHJhbnNmb3JtcyBERUZJTkUgY2xhdXNlCisgKiAgIC0gU3RvcmVzIHRoZSBQQVRU RVJOIEFTVCBhbmQgdGhlIFNLSVAgVE8vSU5JVElBTCBmbGFncworICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNs dWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgor I2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf Y29sbGF0ZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCisjaW5jbHVkZSAicGFy c2VyL3BhcnNlX3Jwci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKKworLyog REVGSU5FIGNsYXVzZSB3YWxrZXIgY29udGV4dCAtLSBzZWUgZGVmaW5lX3dhbGtlciBmb3IgdXNh Z2UuICovCit0eXBlZGVmIGVudW0KK3sKKwlERUZJTkVfUEhBU0VfQk9EWSwJCQkvKiB0b3AtbGV2 ZWwgREVGSU5FIGV4cHJlc3Npb24gKi8KKwlERUZJTkVfUEhBU0VfTkFWX0FSRywJCS8qIGluc2lk ZSBhbiBvdXRlciBuYXYncyBhcmcgc3VidHJlZSAqLworCURFRklORV9QSEFTRV9OQVZfT0ZGU0VU LAkvKiBpbnNpZGUgYW4gb3V0ZXIgbmF2J3Mgb2Zmc2V0X2FyZyAvCisJCQkJCQkJCSAqIGNvbXBv dW5kX29mZnNldF9hcmcgKi8KK30gRGVmaW5lUGhhc2U7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJ UGFyc2VTdGF0ZSAqcHN0YXRlOworCURlZmluZVBoYXNlIHBoYXNlOworCWludAkJCW5hdl9jb3Vu dDsJCS8qIFJQUk5hdkV4cHIgbm9kZXMgc2VlbiBpbiBjdXJyZW50IG5hdi5hcmcgKi8KKwlib29s CQloYXNfY29sdW1uX3JlZjsgLyogVmFyIHNlZW4gaW4gY3VycmVudCBuYXYgc2NvcGUgKi8KKwlS UFJOYXZLaW5kCWlubmVyX2tpbmQ7CQkvKiBraW5kIG9mIGZpcnN0IG5lc3RlZCBuYXYgaW4gY3Vy cmVudCBhcmcgKi8KK30gRGVmaW5lV2Fsa0N0eDsKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMg Ki8KK3N0YXRpYyB2b2lkIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBz dGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCisJCQkJCQkJCQkgICBMaXN0ICpycERlZnMsIExp c3QgKip2YXJOYW1lcyk7CitzdGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywKKwkJCQkJCQkJICAgV2luZG93RGVmICp3 aW5kZWYsIExpc3QgKip0YXJnZXRsaXN0KTsKK3N0YXRpYyBib29sIGRlZmluZV93YWxrZXIoTm9k ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CisKKy8qCisgKiB0cmFuc2Zvcm1SUFIKKyAqCQlQcm9j ZXNzIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIHJlbGF0ZWQgY2xhdXNlcy4KKyAqCisgKiBWYWxp ZGF0ZXMgYW5kIHRyYW5zZm9ybXMgUlBSIGNsYXVzZXMgZnJvbSBwYXJzZSB0cmVlIHRvIHBsYW5u ZXIgc3RydWN0dXJlczoKKyAqICAgLSBWYWxpZGF0ZXMgZnJhbWUgb3B0aW9ucyAobXVzdCBzdGFy dCBhdCBDVVJSRU5UIFJPVywgbm8gRVhDTFVERSkKKyAqICAgLSBTZXQgQUZURVIgTUFUQ0ggU0tJ UCBUTyBmbGFnCisgKiAgIC0gU2V0IFNFRUsvSU5JVElBTCBmbGFnCisgKiAgIC0gVHJhbnNmb3Jt cyBERUZJTkUgY2xhdXNlIGludG8gVGFyZ2V0RW50cnkgbGlzdAorICogICAtIFN0b3JlcyBQQVRU RVJOIEFTVCBmb3IgZGVwYXJzaW5nIChvcHRpbWl6YXRpb24gaGFwcGVucyBpbiBwbGFubmVyKQor ICoKKyAqIFJldHVybnMgZWFybHkgaWYgd2luZGVmIGhhcyBubyBycENvbW1vblN5bnRheCAobm9u LVJQUiB3aW5kb3cpLgorICovCit2b2lkCit0cmFuc2Zvcm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKKwkJCSBMaXN0ICoqdGFyZ2V0 bGlzdCkKK3sKKwkvKiBXaW5kb3cgZGVmaW5pdGlvbiBtdXN0IGV4aXN0IHdoZW4gY2FsbGVkICov CisJQXNzZXJ0KHdpbmRlZiAhPSBOVUxMKTsKKworCS8qCisJICogUm93IFBhdHRlcm4gQ29tbW9u IFN5bnRheCBjbGF1c2UgZXhpc3RzPworCSAqLworCWlmICh3aW5kZWYtPnJwQ29tbW9uU3ludGF4 ID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIENoZWNrIEZyYW1lIG9wdGlvbnMgKi8KKworCS8q IEZyYW1lIHR5cGUgbXVzdCBiZSAiUk9XIiAqLworCWlmICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJB TUVPUFRJT05fR1JPVVBTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9X SU5ET1dJTkdfRVJST1IpLAorCQkJCWVycm1zZygiY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gR1JP VVBTIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24iKSwKKwkJCQllcnJoaW50KCJVc2UgUk9X UyBpbnN0ZWFkLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCSAg IHdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA+PSAwID8KKwkJCQkJCQkJICAgd2luZGVmLT5mcmFtZUxv Y2F0aW9uIDogd2luZGVmLT5sb2NhdGlvbikpOworCWlmICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJB TUVPUFRJT05fUkFOR0UpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dJ TkRPV0lOR19FUlJPUiksCisJCQkJZXJybXNnKCJjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBSQU5H RSB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyaGludCgiVXNlIFJPV1Mg aW5zdGVhZC4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkgICB3 aW5kZWYtPmZyYW1lTG9jYXRpb24gPj0gMCA/CisJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVMb2Nh dGlvbiA6IHdpbmRlZi0+bG9jYXRpb24pKTsKKworCS8qIEZyYW1lIG11c3Qgc3RhcnQgYXQgY3Vy cmVudCByb3cgKi8KKwlpZiAoKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9TVEFSVF9D VVJSRU5UX1JPVykgPT0gMCkKKwl7CisJCWNvbnN0IGNoYXIgKmZyYW1lVHlwZSA9ICJST1dTIjsK KwkJY29uc3QgY2hhciAqc3RhcnRCb3VuZCA9ICJ1bmtub3duIjsKKworCQkvKiBEZXRlcm1pbmUg Y3VycmVudCBzdGFydCBib3VuZCAqLworCQlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BU SU9OX1NUQVJUX1VOQk9VTkRFRF9QUkVDRURJTkcpCisJCQlzdGFydEJvdW5kID0gIlVOQk9VTkRF RCBQUkVDRURJTkciOworCQllbHNlIGlmICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05f U1RBUlRfT0ZGU0VUX1BSRUNFRElORykKKwkJCXN0YXJ0Qm91bmQgPSAib2Zmc2V0IFBSRUNFRElO RyI7CisJCWVsc2UgaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9TVEFSVF9PRkZT RVRfRk9MTE9XSU5HKQorCQkJc3RhcnRCb3VuZCA9ICJvZmZzZXQgRk9MTE9XSU5HIjsKKworCQkv KiBBdCBsZWFzdCBvbmUgdmFsaWQgZnJhbWUgc3RhcnQgb3B0aW9uIHNob3VsZCBiZSBzZXQgKi8K KwkJQXNzZXJ0KCh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfVU5CT1VOREVE X1BSRUNFRElORykgfHwKKwkJCSAgICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RB UlRfT0ZGU0VUX1BSRUNFRElORykgfHwKKwkJCSAgICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVP UFRJT05fU1RBUlRfT0ZGU0VUX0ZPTExPV0lORykpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJPUiksCisJCQkJZXJybXNnKCJGUkFNRSBtdXN0 IHN0YXJ0IGF0IENVUlJFTlQgUk9XIHdoZW4gdXNpbmcgcm93IHBhdHRlcm4gcmVjb2duaXRpb24i KSwKKwkJCQllcnJkZXRhaWwoIkN1cnJlbnQgZnJhbWUgc3RhcnRzIHdpdGggJXMuIiwgc3RhcnRC b3VuZCksCisJCQkJZXJyaGludCgiVXNlOiAlcyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAuLi4i LCBmcmFtZVR5cGUpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHdpbmRlZi0+ZnJh bWVMb2NhdGlvbiA+PSAwID8gd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVmLT5sb2NhdGlv bikpOworCX0KKworCS8qIEVYQ0xVREUgb3B0aW9ucyBhcmUgbm90IHBlcm1pdHRlZCAqLworCWlm ICgod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVU0lPTikgIT0gMCkKKwl7CisJ CWNvbnN0IGNoYXIgKmV4Y2x1ZGVUeXBlID0gIkVYQ0xVREUiOworCisJCS8qIERldGVybWluZSB3 aGljaCBFWENMVURFIG9wdGlvbiB3YXMgdXNlZCAqLworCQlpZiAod2MtPmZyYW1lT3B0aW9ucyAm IEZSQU1FT1BUSU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1cpCisJCQlleGNsdWRlVHlwZSA9ICJFWENM VURFIENVUlJFTlQgUk9XIjsKKwkJZWxzZSBpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BU SU9OX0VYQ0xVREVfR1JPVVApCisJCQlleGNsdWRlVHlwZSA9ICJFWENMVURFIEdST1VQIjsKKwkJ ZWxzZSBpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVREVfVElFUykKKwkJ CWV4Y2x1ZGVUeXBlID0gIkVYQ0xVREUgVElFUyI7CisKKwkJLyogQXQgbGVhc3Qgb25lIHZhbGlk IGV4Y2x1ZGUgb3B0aW9uIHNob3VsZCBiZSBzZXQgKi8KKwkJQXNzZXJ0KCh3Yy0+ZnJhbWVPcHRp b25zICYgRlJBTUVPUFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVykgfHwKKwkJCSAgICh3Yy0+ZnJh bWVPcHRpb25zICYgRlJBTUVPUFRJT05fRVhDTFVERV9HUk9VUCkgfHwKKwkJCSAgICh3Yy0+ZnJh bWVPcHRpb25zICYgRlJBTUVPUFRJT05fRVhDTFVERV9USUVTKSk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9SKSwKKwkJCQllcnJtc2coImNh bm5vdCB1c2UgRVhDTFVERSBvcHRpb25zIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24iKSwK KwkJCQllcnJkZXRhaWwoIkZyYW1lIGRlZmluaXRpb24gaW5jbHVkZXMgJXMuIiwgZXhjbHVkZVR5 cGUpLAorCQkJCWVycmhpbnQoIlJlbW92ZSB0aGUgRVhDTFVERSBjbGF1c2UgZnJvbSB0aGUgd2lu ZG93IGRlZmluaXRpb24uIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgd2luZGVm LT5leGNsdWRlTG9jYXRpb24gPj0gMCA/IHdpbmRlZi0+ZXhjbHVkZUxvY2F0aW9uIDogd2luZGVm LT5sb2NhdGlvbikpOworCX0KKworCS8qCisJICogVGhlIHN0YW5kYXJkIGFsbG93cyBvbmx5IFVO Qk9VTkRFRCBGT0xMT1dJTkcgb3IgYSBwb3NpdGl2ZSBvZmZzZXQKKwkgKiBGT0xMT1dJTkcgYXMg dGhlIGZyYW1lIGVuZC4gIFRoZSBlcXVpdmFsZW50IDAgRk9MTE9XSU5HIHNwZWxsaW5nIGlzCisJ ICogY2F1Z2h0IGF0IHJ1bnRpbWUgaW4gY2FsY3VsYXRlX2ZyYW1lX29mZnNldHMoKS4KKwkgKi8K KwlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9DVVJSRU5UX1JPVykKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5HX0VSUk9SKSwKKwkJ CQllcnJtc2coImNhbm5vdCB1c2UgQ1VSUkVOVCBST1cgYXMgZnJhbWUgZW5kIHdpdGggcm93IHBh dHRlcm4gcmVjb2duaXRpb24iKSwKKwkJCQllcnJoaW50KCJVc2UgVU5CT1VOREVEIEZPTExPV0lO RyBvciBhIHBvc2l0aXZlIG9mZnNldCBGT0xMT1dJTkcuIiksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwKKwkJCQkJCQkJICAgd2luZGVmLT5mcmFtZUxvY2F0aW9uID49IDAgPworCQkJ CQkJCQkgICB3aW5kZWYtPmZyYW1lTG9jYXRpb24gOiB3aW5kZWYtPmxvY2F0aW9uKSk7CisKKwkv KiBBc3NpZ24gQUZURVIgTUFUQ0ggU0tJUCBUTyBmbGFnICovCisJd2MtPnJwU2tpcFRvID0gd2lu ZGVmLT5ycENvbW1vblN5bnRheC0+cnBTa2lwVG87CisKKwkvKiBBc3NpZ24gSU5JVElBTCBmbGFn ICovCisJd2MtPmluaXRpYWwgPSB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5pbml0aWFsOworCisJ LyogVHJhbnNmb3JtIERFRklORSBjbGF1c2UgaW50byBsaXN0IG9mIFRhcmdldEVudHJ5J3MgKi8K Kwl3Yy0+ZGVmaW5lQ2xhdXNlID0gdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKHBzdGF0ZSwgd2MsIHdp bmRlZiwgdGFyZ2V0bGlzdCk7CisKKwkvKiBTdG9yZSBQQVRURVJOIEFTVCBmb3IgZGVwYXJzaW5n ICovCisJd2MtPnJwUGF0dGVybiA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwUGF0dGVybjsK K30KKworLyoKKyAqIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50CisgKgkJVmFsaWRhdGUgdGhh dCBQQVRURVJOIHZhcmlhYmxlIGNvdW50IGZpdHMgdGhlIHZhcklkIHJhbmdlLgorICoKKyAqIFJl Y3Vyc2l2ZWx5IHRyYXZlcnNlcyB0aGUgcGF0dGVybiB0cmVlLCBjb2xsZWN0aW5nIHVuaXF1ZSB2 YXJpYWJsZSBuYW1lcy4KKyAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgbnVtYmVyIG9mIHVuaXF1 ZSB2YXJpYWJsZXMgd291bGQgcmVxdWlyZSBhIHZhcklkCisgKiBncmVhdGVyIHRoYW4gUlBSX1ZB UklEX01BWC4KKyAqCisgKiBJZiBycERlZnMgaXMgbm9uLU5VTEwsIGVhY2ggREVGSU5FIHZhcmlh YmxlIG5hbWUgaXMgYWxzbyB2YWxpZGF0ZWQgYWdhaW5zdAorICogdmFyTmFtZXM7IGFueSBERUZJ TkUgbmFtZSBub3QgcHJlc2VudCBpbiBQQVRURVJOIGlzIHJlamVjdGVkIHdpdGggYW4gZXJyb3Iu CisgKiB2YXJOYW1lcyBpdHNlbGYgaXMgbm90IGV4dGVuZGVkIGJ5IHRoaXMgc3RlcCAtLSBpdCBj YXJyaWVzIG9ubHkgUEFUVEVSTgorICogdmFyaWFibGUgbmFtZXMsIHdoaWNoIGlzIHdoYXQgdHJh bnNmb3JtQ29sdW1uUmVmIGNoZWNrcyB2aWEKKyAqIHBfcnByX3BhdHRlcm5fdmFycyB0byBpZGVu dGlmeSBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllcnMuCisgKi8KK3N0YXRpYyB2b2lkCit2YWxp ZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2Rl ICpub2RlLAorCQkJCQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0ICoqdmFyTmFtZXMpCit7CisJLyog UGF0dGVybiBub2RlIG11c3QgZXhpc3QgLSBwYXJzZXIgYWx3YXlzIHByb3ZpZGVzIG5vbi1OVUxM IHJvb3QgKi8KKwlBc3NlcnQobm9kZSAhPSBOVUxMKTsKKworCS8qCisJICogdHJhaWxpbmdfYWx0 IGlzIGEgdHJhbnNpZW50IGdyYW1tYXIgZmxhZzsgc3BsaXRSUFJUcmFpbGluZ0FsdCBtdXN0IGhh dmUKKwkgKiBjbGVhcmVkIGl0IG9uIGV2ZXJ5IG5vZGUgYmVmb3JlIHRoZSBwYXR0ZXJuIHJlYWNo ZXMgcGFyc2UgYW5hbHlzaXMuCisJICovCisJQXNzZXJ0KCFub2RlLT50cmFpbGluZ19hbHQpOwor CisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCXN3aXRjaCAobm9kZS0+bm9kZVR5cGUpCisJewor CQljYXNlIFJQUl9QQVRURVJOX1ZBUjoKKwkJCS8qIEFkZCB2YXJpYWJsZSBuYW1lIGlmIG5vdCBh bHJlYWR5IGluIGxpc3QgKi8KKwkJCXsKKwkJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCQkJ Zm9yZWFjaF9ub2RlKFN0cmluZywgdmFybmFtZSwgKnZhck5hbWVzKQorCQkJCXsKKwkJCQkJaWYg KHN0cmNtcChzdHJWYWwodmFybmFtZSksIG5vZGUtPnZhck5hbWUpID09IDApCisJCQkJCXsKKwkJ CQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJCWlmICgh Zm91bmQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBDaGVjayBhZ2FpbnN0IFJQUl9WQVJJRF9N QVggYmVmb3JlIGFkZGluZy4gIHZhcklkCisJCQkJCSAqIHZhbHVlcyBydW4gMCB0byBSUFJfVkFS SURfTUFYIGluY2x1c2l2ZSwgc28gdGhlIG5leHQKKwkJCQkJICogdmFySWQgdG8gYmUgYXNzaWdu ZWQgKHRoZSBjdXJyZW50IGxpc3QgbGVuZ3RoKSBtdXN0IG5vdAorCQkJCQkgKiBleGNlZWQgaXQu CisJCQkJCSAqLworCQkJCQlpZiAobGlzdF9sZW5ndGgoKnZhck5hbWVzKSA+IFJQUl9WQVJJRF9N QVgpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JB TV9MSU1JVF9FWENFRURFRCksCisJCQkJCQkJCWVycm1zZygidG9vIG1hbnkgcGF0dGVybiB2YXJp YWJsZXMiKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJNYXhpbXVtIGlzICVkLiIsIFJQUl9WQVJJRF9N QVggKyAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCQkJ CSAgIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBub2RlKSkpOworCisJCQkJCSp2YXJOYW1lcyA9IGxh cHBlbmQoKnZhck5hbWVzLCBtYWtlU3RyaW5nKHBzdHJkdXAobm9kZS0+dmFyTmFtZSkpKTsKKwkJ CQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX1NFUToKKwkJY2FzZSBS UFJfUEFUVEVSTl9BTFQ6CisJCWNhc2UgUlBSX1BBVFRFUk5fR1JPVVA6CisJCQkvKiBSZWN1cnNl IGludG8gY2hpbGRyZW4gKi8KKwkJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQs IG5vZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCXZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KHBz dGF0ZSwgY2hpbGQsIE5VTEwsIHZhck5hbWVzKTsKKwkJCX0KKwkJCWJyZWFrOworCX0KKworCS8q CisJICogQWZ0ZXIgdGhlIHRvcC1sZXZlbCBjYWxsLCB2YWxpZGF0ZSB0aGF0IGV2ZXJ5IERFRklO RSB2YXJpYWJsZSBuYW1lIGlzCisJICogcHJlc2VudCBpbiB0aGUgUEFUVEVSTiB2YXJpYWJsZSBs aXN0OyByZWplY3QgbmFtZXMgbm90IHVzZWQgaW4gUEFUVEVSTi4KKwkgKiBUaGlzIGlzIG9ubHkg ZG9uZSBvbmNlIGF0IHRoZSBvdXRlcm1vc3QgcmVjdXJzaW9uIGxldmVsLCBkZXRlY3RlZCBieQor CSAqIHJwRGVmcyBiZWluZyBub24tTlVMTCAocmVjdXJzaXZlIGNhbGxzIHBhc3MgTlVMTCkuCisJ ICovCisJaWYgKHJwRGVmcykKKwl7CisJCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHJ0LCBycERl ZnMpCisJCXsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCWZvcmVhY2hfbm9kZShTdHJp bmcsIHZhcm5hbWUsICp2YXJOYW1lcykKKwkJCXsKKwkJCQlpZiAoc3RyY21wKHN0clZhbCh2YXJu YW1lKSwgcnQtPm5hbWUpID09IDApCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJy ZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmICghZm91bmQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJERUZJTkUg dmFyaWFibGUgXCIlc1wiIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4iLAorCQkJCQkJCSAgIHJ0LT5u YW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJ0LT5sb2NhdGlvbikpOwor CQl9CisJfQorfQorCisvKgorICogdHJhbnNmb3JtRGVmaW5lQ2xhdXNlCisgKgkJUHJvY2VzcyBE RUZJTkUgY2xhdXNlIGFuZCB0cmFuc2Zvcm0gUmVzVGFyZ2V0IGludG8gbGlzdCBvZiBUYXJnZXRF bnRyeS4KKyAqCisgKiBGaXJzdDoKKyAqICAgMS4gVmFsaWRhdGVzIFBBVFRFUk4gdmFyaWFibGUg Y291bnQgYW5kIGNvbGxlY3RzIFJQUiB2YXJpYWJsZSBuYW1lcworICoKKyAqIFRoZW4gZm9yIGVh Y2ggREVGSU5FIHZhcmlhYmxlOgorICogICAyLiBDaGVja3MgZm9yIGR1cGxpY2F0ZSB2YXJpYWJs ZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCisgKiAgIDMuIFRyYW5zZm9ybXMgZXhwcmVzc2lvbiB2 aWEgdHJhbnNmb3JtRXhwcigpIGFuZCBlbnN1cmVzIHJlZmVyZW5jZWQKKyAqICAgICAgVmFyIG5v ZGVzIGFyZSBwcmVzZW50IGluIHRoZSBxdWVyeSB0YXJnZXRsaXN0ICh2aWEgcHVsbF92YXJfY2xh dXNlKQorICogICA0LiBDcmVhdGVzIGRlZmluZUNsYXVzZSBlbnRyeSB3aXRoIHByb3BlciByZXNu YW1lIChwYXR0ZXJuIHZhcmlhYmxlIG5hbWUpCisgKiAgIDUuIENvZXJjZXMgZXhwcmVzc2lvbnMg dG8gYm9vbGVhbiB0eXBlCisgKiAgIDYuIE1hcmtzIGNvbHVtbiBvcmlnaW5zIGFuZCBhc3NpZ25z IGNvbGxhdGlvbiBpbmZvcm1hdGlvbgorICoKKyAqIE5vdGU6IFZhcmlhYmxlcyBub3QgaW4gREVG SU5FIGFyZSBldmFsdWF0ZWQgYXMgVFJVRSBieSB0aGUgZXhlY3V0b3IuCisgKiBWYXJpYWJsZXMg aW4gREVGSU5FIGJ1dCBub3QgaW4gUEFUVEVSTiBhcmUgcmVqZWN0ZWQgYXMgYW4gZXJyb3IuCisg KgorICogWFhYIFBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb25zIGluIERFRklO RSAoZS5nLiAiQS5wcmljZSIpCisgKiBhcmUgbm90IHlldCBzdXBwb3J0ZWQuICBDdXJyZW50bHkg cmVqZWN0ZWQgYnkgdHJhbnNmb3JtQ29sdW1uUmVmIGluCisgKiBwYXJzZV9leHByLmMgdmlhIHRo ZSBwX3Jwcl9wYXR0ZXJuX3ZhcnMgY2hlY2suCisgKi8KK3N0YXRpYyBMaXN0ICoKK3RyYW5zZm9y bURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRv d0RlZiAqd2luZGVmLAorCQkJCQkgIExpc3QgKip0YXJnZXRsaXN0KQoreworCUxpc3QJICAgKnJl c3RhcmdldHM7CisJTGlzdAkgICAqZGVmaW5lQ2xhdXNlID0gTklMOworCWNoYXIJICAgKm5hbWU7 CisJTGlzdAkgICAqcGF0dGVyblZhck5hbWVzID0gTklMOworCisJLyoKKwkgKiBJZiBSb3cgRGVm aW5pdGlvbiBDb21tb24gU3ludGF4IGV4aXN0cywgREVGSU5FIGNsYXVzZSBtdXN0IGV4aXN0LiAo dGhlCisJICogcmF3IHBhcnNlciBzaG91bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgaXQuKQorCSAq LworCUFzc2VydCh3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMgIT0gTlVMTCk7CisKKwkv KgorCSAqIFZhbGlkYXRlIFBBVFRFUk4gdmFyaWFibGUgY291bnQsIHJlamVjdCBERUZJTkUgdmFy aWFibGVzIG5vdCB1c2VkIGluCisJICogUEFUVEVSTiwgYW5kIGNvbGxlY3QgUEFUVEVSTiB2YXJp YWJsZSBuYW1lcyBmb3IgdHJhbnNmb3JtQ29sdW1uUmVmLgorCSAqLworCXZhbGlkYXRlUlBSUGF0 dGVyblZhckNvdW50KHBzdGF0ZSwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBQYXR0ZXJuLAor CQkJCQkJCSAgIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcywKKwkJCQkJCQkgICAmcGF0 dGVyblZhck5hbWVzKTsKKwlwc3RhdGUtPnBfcnByX3BhdHRlcm5fdmFycyA9IHBhdHRlcm5WYXJO YW1lczsKKworCS8qCisJICogQ2hlY2sgZm9yIGR1cGxpY2F0ZSByb3cgcGF0dGVybiBkZWZpbml0 aW9uIHZhcmlhYmxlcy4gIFRoZSBzdGFuZGFyZAorCSAqIHJlcXVpcmVzIHRoYXQgbm8gdHdvIHJv dyBwYXR0ZXJuIGRlZmluaXRpb24gdmFyaWFibGUgbmFtZXMgc2hhbGwgYmUKKwkgKiBlcXVpdmFs ZW50LgorCSAqLworCXJlc3RhcmdldHMgPSBOSUw7CisJZm9yZWFjaF9ub2RlKFJlc1RhcmdldCwg cmVzdGFyZ2V0LCB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMpCisJeworCQlUYXJnZXRF bnRyeSAqdGVEZWZpbmU7CisKKwkJbmFtZSA9IHJlc3RhcmdldC0+bmFtZTsKKworCQlmb3JlYWNo X25vZGUoUmVzVGFyZ2V0LCByLCByZXN0YXJnZXRzKQorCQl7CisJCQljaGFyCSAgICpuOworCisJ CQluID0gci0+bmFtZTsKKworCQkJaWYgKCFzdHJjbXAobiwgbmFtZSkpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNn KCJERUZJTkUgdmFyaWFibGUgXCIlc1wiIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJ CSAgIG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9u KChOb2RlICopIHIpKSk7CisJCX0KKworCQlyZXN0YXJnZXRzID0gbGFwcGVuZChyZXN0YXJnZXRz LCByZXN0YXJnZXQpOworCisJCS8qCisJCSAqIFRyYW5zZm9ybSB0aGUgREVGSU5FIGV4cHJlc3Np b24uICBXZSBtdXN0IE5PVCBhZGQgdGhlIHdob2xlCisJCSAqIGV4cHJlc3Npb24gdG8gdGhlIHF1 ZXJ5IHRhcmdldGxpc3QsIGJlY2F1c2UgaXQgbWF5IGNvbnRhaW4KKwkJICogUlBSTmF2RXhwciBu b2RlcyAoUFJFVi9ORVhUL0ZJUlNUL0xBU1QpIHRoYXQgY2FuIG9ubHkgYmUgZXZhbHVhdGVkCisJ CSAqIGluc2lkZSB0aGUgb3duaW5nIFdpbmRvd0FnZy4KKwkJICoKKwkJICogSW5zdGVhZCwgd2Ug dHJhbnNmb3JtIHRoZSBleHByZXNzaW9uIGRpcmVjdGx5IGFuZCBvbmx5IGVuc3VyZSB0aGF0CisJ CSAqIHRoZSBpbmRpdmlkdWFsIFZhciBub2RlcyBpdCByZWZlcmVuY2VzIGFyZSBwcmVzZW50IGlu IHRoZQorCQkgKiB0YXJnZXRsaXN0LCBzbyB0aGUgcGxhbm5lciBjYW4gcHJvcGFnYXRlIHRoZSBy ZWZlcmVuY2VkIGNvbHVtbnMuCisJCSAqLworCQl7CisJCQlOb2RlCSAgICpleHByOworCQkJTGlz dAkgICAqdmFyczsKKworCQkJZXhwciA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCByZXN0YXJnZXQt PnZhbCwKKwkJCQkJCQkJIEVYUFJfS0lORF9SUFJfREVGSU5FKTsKKworCQkJLyoKKwkJCSAqIFB1 bGwgb3V0IFZhciBub2RlcyBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByZXNzaW9uIGFuZCBlbnN1 cmUKKwkJCSAqIGVhY2ggb25lIGlzIHByZXNlbnQgaW4gdGhlIHRhcmdldGxpc3QuICBUaGlzIGlz IG5lZWRlZCBzbyB0aGUKKwkJCSAqIHBsYW5uZXIgcHJvcGFnYXRlcyB0aGUgcmVmZXJlbmNlZCBj b2x1bW5zIHRocm91Z2ggdGhlIHBsYW4KKwkJCSAqIHRyZWUsIG1ha2luZyB0aGVtIGF2YWlsYWJs ZSB0byB0aGUgV2luZG93QWdnJ3MgREVGSU5FCisJCQkgKiBldmFsdWF0aW9uLgorCQkJICovCisJ CQl2YXJzID0gcHVsbF92YXJfY2xhdXNlKGV4cHIsIDApOworCQkJZm9yZWFjaF9ub2RlKFZhciwg dmFyLCB2YXJzKQorCQkJeworCQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCQlmb3JlYWNo X25vZGUoVGFyZ2V0RW50cnksIHRsZSwgKnRhcmdldGxpc3QpCisJCQkJeworCQkJCQlpZiAoSXNB KHRsZS0+ZXhwciwgVmFyKSAmJgorCQkJCQkJKChWYXIgKikgdGxlLT5leHByKS0+dmFybm8gPT0g dmFyLT52YXJubyAmJgorCQkJCQkJKChWYXIgKikgdGxlLT5leHByKS0+dmFyYXR0bm8gPT0gdmFy LT52YXJhdHRubykKKwkJCQkJeworCQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJ CQkJCX0KKwkJCQl9CisJCQkJaWYgKCFmb3VuZCkKKwkJCQl7CisJCQkJCVRhcmdldEVudHJ5ICpu ZXd0bGU7CisKKwkJCQkJbmV3dGxlID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIGNvcHlPYmpl Y3QodmFyKSwKKwkJCQkJCQkJCQkJIGxpc3RfbGVuZ3RoKCp0YXJnZXRsaXN0KSArIDEsCisJCQkJ CQkJCQkJCSBOVUxMLAorCQkJCQkJCQkJCQkgdHJ1ZSk7CisJCQkJCSp0YXJnZXRsaXN0ID0gbGFw cGVuZCgqdGFyZ2V0bGlzdCwgbmV3dGxlKTsKKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUodmFy cyk7CisKKwkJCS8qIEJ1aWxkIHRoZSBkZWZpbmVDbGF1c2UgZW50cnkgZGlyZWN0bHkgZnJvbSB0 aGUgdHJhbnNmb3JtZWQgZXhwciAqLworCQkJdGVEZWZpbmUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgZXhwciwKKwkJCQkJCQkJCSAgIGxpc3RfbGVuZ3RoKGRlZmluZUNsYXVzZSkgKyAxLAor CQkJCQkJCQkJICAgcHN0cmR1cChuYW1lKSwKKwkJCQkJCQkJCSAgIHRydWUpOworCQl9CisKKwkJ LyogYnVpbGQgdHJhbnNmb3JtZWQgREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJnZXRFbnRyeSkg Ki8KKwkJZGVmaW5lQ2xhdXNlID0gbGFwcGVuZChkZWZpbmVDbGF1c2UsIHRlRGVmaW5lKTsKKwl9 CisJbGlzdF9mcmVlKHJlc3RhcmdldHMpOworCXBzdGF0ZS0+cF9ycHJfcGF0dGVybl92YXJzID0g TklMOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgcm93IHBhdHRlcm4gZGVmaW5pdGlv biBzZWFyY2ggY29uZGl0aW9uIGlzIGEgYm9vbGVhbgorCSAqIGV4cHJlc3Npb24uCisJICovCisJ Zm9yZWFjaF9wdHIoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJCXRlLT5leHByID0g KEV4cHIgKikgY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCAoTm9kZSAqKSB0ZS0+ZXhwciwgIkRF RklORSIpOworCisJLyoKKwkgKiBWYWxpZGF0ZSBERUZJTkUgZXhwcmVzc2lvbnM6IG5lc3RlZCBQ UkVWL05FWFQsIGNvbHVtbiByZWZlcmVuY2VzLAorCSAqIGNvbXBvdW5kIGZsYXR0ZW4sIHZvbGF0 aWxlIGNhbGxlZXMgLS0gYWxsIGluIGEgc2luZ2xlIHdhbGsgcGVyCisJICogdmFyaWFibGUuCisJ ICovCisJZm9yZWFjaF9wdHIoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJeworCQlE ZWZpbmVXYWxrQ3R4IGN0eDsKKworCQljdHgucHN0YXRlID0gcHN0YXRlOworCQljdHgucGhhc2Ug PSBERUZJTkVfUEhBU0VfQk9EWTsKKwkJY3R4Lm5hdl9jb3VudCA9IDA7CisJCWN0eC5oYXNfY29s dW1uX3JlZiA9IGZhbHNlOworCQljdHguaW5uZXJfa2luZCA9IDA7CisJCSh2b2lkKSBkZWZpbmVf d2Fsa2VyKChOb2RlICopIHRlLT5leHByLCAmY3R4KTsKKwl9CisKKwkvKiBtYXJrIGNvbHVtbiBv cmlnaW5zICovCisJbWFya1RhcmdldExpc3RPcmlnaW5zKHBzdGF0ZSwgZGVmaW5lQ2xhdXNlKTsK KworCS8qIG1hcmsgYWxsIG5vZGVzIGluIHRoZSBERUZJTkUgY2xhdXNlIHRyZWUgd2l0aCBjb2xs YXRpb24gaW5mb3JtYXRpb24gKi8KKwlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgKE5v ZGUgKikgZGVmaW5lQ2xhdXNlKTsKKworCXJldHVybiBkZWZpbmVDbGF1c2U7Cit9CisKKy8qCisg KiBTaW5nbGUtcGFzcyBERUZJTkUgY2xhdXNlIHZhbGlkYXRvci4KKyAqCisgKiBPbmUgd2Fsa2Vy IGZ1bmN0aW9uIChkZWZpbmVfd2Fsa2VyKSB2aXNpdHMgZXZlcnkgbm9kZSBpbiBhIERFRklORQor ICogZXhwcmVzc2lvbiBleGFjdGx5IG9uY2UgYW5kIGVuZm9yY2VzIGV2ZXJ5IHJ1bGU6CisgKiAg IC0gRm9yIGVhY2ggb3V0ZXIgUlBSTmF2RXhwciAocGVyIElTTy9JRUMgMTkwNzUtNSA1LjYuNCBu ZXN0aW5nIHJ1bGVzKToKKyAqICAgICAqIGFyZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNv bHVtbiByZWZlcmVuY2UKKyAqICAgICAqIFBSRVYvTkVYVCB3cmFwcGluZyBGSVJTVC9MQVNUIGZs YXR0ZW5zIHRvIGEgY29tcG91bmQga2luZAorICogICAgICogT3RoZXIgbmVzdGluZ3MgYXJlIHJl amVjdGVkIChGSVJTVChQUkVWKCkpLCBQUkVWKFBSRVYoKSksIC4uLikKKyAqICAgICAqIG9mZnNl dF9hcmcgLyBjb21wb3VuZF9vZmZzZXRfYXJnIG11c3Qgbm90IGNvbnRhaW4gY29sdW1uIHJlZnMK KyAqCisgKiBWb2xhdGlsZSBjYWxsZWVzIChhbmQgc2VxdWVuY2Ugb3BlcmF0aW9ucykgYXJlIHJl amVjdGVkIGxhdGVyIGluIHRoZQorICogcGxhbm5lciB2aWEgdmFsaWRhdGVfcnByX2RlZmluZV92 b2xhdGlsaXR5KCk7IHNlZSBvcHRpbWl6ZXIvcGxhbi9ycHIuYy4KKyAqCisgKiBUaGUgd2Fsa2Vy IHVzZXMgYSBwaGFzZSB0YWcgdG8ga25vdyB3aGljaCBzdWJ0cmVlIGl0IGlzIGluOiBERUZJTkUK KyAqIGJvZHkgKHRvcC1sZXZlbCksIGluc2lkZSBhIG5hdi5hcmcsIG9yIGluc2lkZSBhIG5hdi5v ZmZzZXRfYXJnIC8KKyAqIGNvbXBvdW5kX29mZnNldF9hcmcuICBXaGVuIGVudGVyaW5nIGFuIG91 dGVyIG5hdiAoUEhBU0VfQk9EWSksIGl0CisgKiB3YWxrcyBuYXYuYXJnIGluIFBIQVNFX05BVl9B UkcgdG8gY29sbGVjdCBuZXN0aW5nL2NvbHVtbi1yZWYgc3RhdGUsCisgKiBhcHBsaWVzIGNvbXBv dW5kIGZsYXR0ZW4gb3IgcmFpc2VzIGEgbmVzdGluZyBlcnJvciwgdGhlbiB3YWxrcyB0aGUKKyAq IChwb3N0LWZsYXR0ZW4pIG9mZnNldChzKSBpbiBQSEFTRV9OQVZfT0ZGU0VUIHRvIGVuZm9yY2Ug dGhlCisgKiBjb25zdGFudC1vZmZzZXQgcnVsZS4gIE5vIHN1YnRyZWUgaXMgd2Fsa2VkIHR3aWNl LgorICovCisKKy8qCisgKiBkZWZpbmVfd2Fsa2VyCisgKgkJU2luZ2xlLXBhc3MgREVGSU5FIGNs YXVzZSB2YWxpZGF0b3IuICBBdCBlYWNoIG5vZGUsIGVuZm9yY2VzOgorICoKKyAqCQkgIFsxXSBm b3IgZWFjaCBvdXRlciBSUFJOYXZFeHByIChQSEFTRV9CT0RZIC0+IFBIQVNFX05BVl9BUkcpOgor ICoJCQkgIC0gbmF2LmFyZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVu Y2UKKyAqCQkJICAtIFBSRVYvTkVYVCB3cmFwcGluZyBGSVJTVC9MQVNUIGlzIGZsYXR0ZW5lZCBp biBwbGFjZQorICoJCQkJdG8gYSBjb21wb3VuZCBraW5kIChQUkVWX0ZJUlNULCBQUkVWX0xBU1Qs IE5FWFRfRklSU1QsCisgKgkJCQlORVhUX0xBU1QpCisgKgkJCSAgLSBhbnkgb3RoZXIgbmVzdGlu ZyBpcyByZWplY3RlZCAoRklSU1QoUFJFVigpKSwKKyAqCQkJCVBSRVYoUFJFVigpKSwgRklSU1Qo RklSU1QoKSksIHRocmVlLW9yLW1vcmUgZGVlcCkKKyAqCQkgIFsyXSBmb3IgZWFjaCBuYXYgb2Zm c2V0IChQSEFTRV9OQVZfT0ZGU0VUKToKKyAqCQkJICAtIG11c3QgYmUgYSBydW4tdGltZSBjb25z dGFudCAobm8gY29sdW1uIHJlZmVyZW5jZXMpCisgKgorICogVmFyIHNpZ2h0aW5ncyBmZWVkIHRo ZSBjb2x1bW4tcmVmIHJ1bGUgZm9yIHRoZSBlbmNsb3NpbmcgbmF2IHNjb3BlOworICogUlBSTmF2 RXhwciBzaWdodGluZ3MgaW5zaWRlIFBIQVNFX05BVl9BUkcgZmVlZCB0aGUgbmVzdGluZyBkZWNp c2lvbi4KKyAqIFNlZSB0aGUgY29tbWVudCBibG9jayBhYm92ZSBEZWZpbmVQaGFzZSBmb3IgdGhl IG92ZXJhbGwgZGVzaWduIGFuZAorICogaG93IGVhY2ggc3VidHJlZSBpcyB3YWxrZWQgZXhhY3Rs eSBvbmNlLgorICovCitzdGF0aWMgYm9vbAorZGVmaW5lX3dhbGtlcihOb2RlICpub2RlLCB2b2lk ICpjb250ZXh0KQoreworCURlZmluZVdhbGtDdHggKmN0eCA9IChEZWZpbmVXYWxrQ3R4ICopIGNv bnRleHQ7CisKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBWYXIg c2lnaHRpbmcgZmVlZHMgdGhlIGNvbHVtbi1yZWYgcnVsZSBmb3IgdGhlIGVuY2xvc2luZyBuYXYg c2NvcGUuICovCisJaWYgKElzQShub2RlLCBWYXIpICYmCisJCShjdHgtPnBoYXNlID09IERFRklO RV9QSEFTRV9OQVZfQVJHIHx8CisJCSBjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZG U0VUKSkKKwkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IHRydWU7CisKKwlpZiAoSXNBKG5vZGUsIFJQ Uk5hdkV4cHIpKQorCXsKKwkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsK KworCQlpZiAoY3R4LT5waGFzZSA9PSBERUZJTkVfUEhBU0VfTkFWX0FSRykKKwkJeworCQkJLyoK KwkJCSAqIE5lc3RlZCBuYXYgaW5zaWRlIGFuIG91dGVyIG5hdi5hcmc6IHJlY29yZCBmb3IgdGhl IG91dGVyJ3MKKwkJCSAqIGNvbXBvdW5kIC8gbmVzdGluZyBkZWNpc2lvbiwgdGhlbiBrZWVwIHJl Y3Vyc2luZyBzbyBkZWVwZXIgVmFycworCQkJICogYW5kIHZvbGF0aWxlIGNhbGxlZXMgYXJlIHN0 aWxsIG9ic2VydmVkLgorCQkJICovCisJCQlpZiAoY3R4LT5uYXZfY291bnQgPT0gMCkKKwkJCQlj dHgtPmlubmVyX2tpbmQgPSBuYXYtPmtpbmQ7CisJCQljdHgtPm5hdl9jb3VudCsrOworCQkJcmV0 dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsKKwkJ fQorCisJCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VUKQorCQl7CisJ CQkvKgorCQkJICogTmF2cyBpbnNpZGUgb2Zmc2V0X2FyZyBhcmUgdW51c3VhbCBidXQgbm90IGRp cmVjdGx5IGJhbm5lZDsgdGhlCisJCQkgKiBjb25zdGFudC1vZmZzZXQgcnVsZSB3aWxsIGNhdGNo IGFueSBWYXIgb3Igdm9sYXRpbGUgdGhleQorCQkJICogY29udGFpbi4KKwkJCSAqLworCQkJcmV0 dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsKKwkJ fQorCisJCS8qCisJCSAqIFBIQVNFX0JPRFk6IHRoaXMgaXMgYW4gb3V0ZXIgbmF2IGF0IHRvcCBs ZXZlbC4gIFdhbGsgYXJnIGZpcnN0IHRvCisJCSAqIGNvbGxlY3QgbmVzdGluZyAvIGNvbHVtbi1y ZWYgc3RhdGUsIHRoZW4gdmFsaWRhdGUgYW5kIChmb3IgY29tcG91bmQKKwkJICogZm9ybXMpIGZs YXR0ZW4sIHRoZW4gd2FsayBvZmZzZXQocykuCisJCSAqLworCQl7CisJCQlEZWZpbmVXYWxrQ3R4 IHNhdmVkID0gKmN0eDsKKwkJCWJvb2wJCW91dGVyX3BoeXMgPSAobmF2LT5raW5kID09IFJQUl9O QVZfUFJFViB8fAorCQkJCQkJCQkJICBuYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUKTsKKwkJCWJv b2wJCWZsYXR0ZW5lZCA9IGZhbHNlOworCisJCQljdHgtPnBoYXNlID0gREVGSU5FX1BIQVNFX05B Vl9BUkc7CisJCQljdHgtPm5hdl9jb3VudCA9IDA7CisJCQljdHgtPmhhc19jb2x1bW5fcmVmID0g ZmFsc2U7CisJCQljdHgtPmlubmVyX2tpbmQgPSAwOworCQkJKHZvaWQpIGRlZmluZV93YWxrZXIo KE5vZGUgKikgbmF2LT5hcmcsIGN0eCk7CisKKwkJCWlmIChjdHgtPm5hdl9jb3VudCA+IDApCisJ CQl7CisJCQkJYm9vbAkJaW5uZXJfcGh5cyA9IChjdHgtPmlubmVyX2tpbmQgPT0gUlBSX05BVl9Q UkVWIHx8CisJCQkJCQkJCQkJICBjdHgtPmlubmVyX2tpbmQgPT0gUlBSX05BVl9ORVhUKTsKKwor CQkJCWlmIChvdXRlcl9waHlzICYmICFpbm5lcl9waHlzKQorCQkJCXsKKwkJCQkJUlBSTmF2RXhw ciAqaW5uZXI7CisKKwkJCQkJLyogUmVqZWN0IHRyaXBsZS1vci1kZWVwZXIgbmVzdGluZyAqLwor CQkJCQlpZiAoY3R4LT5uYXZfY291bnQgPiAxKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiY2Fubm90 IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3JlIHRoYW4gdHdvIGxldmVscyBkZWVwIiks CisJCQkJCQkJCWVycmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhU KEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIp LAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24p KTsKKworCQkJCQlpZiAoIUlzQShuYXYtPmFyZywgUlBSTmF2RXhwcikpCisJCQkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJ ZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGJlIGEgZGlyZWN0 IGFyZ3VtZW50IG9mIHRoZSBvdXRlciBuYXZpZ2F0aW9uIiksCisJCQkJCQkJCWVycmhpbnQoIk9u bHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChM QVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKKworCQkJCQlpbm5lciA9IChS UFJOYXZFeHByICopIG5hdi0+YXJnOworCisJCQkJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9Q UkVWICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfRklSU1QpCisJCQkJCQluYXYtPmtpbmQgPSBS UFJfTkFWX1BSRVZfRklSU1Q7CisJCQkJCWVsc2UgaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BS RVYgJiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9MQVNUKQorCQkJCQkJbmF2LT5raW5kID0gUlBS X05BVl9QUkVWX0xBU1Q7CisJCQkJCWVsc2UgaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFQg JiYgaW5uZXItPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKKwkJCQkJCW5hdi0+a2luZCA9IFJQUl9O QVZfTkVYVF9GSVJTVDsKKwkJCQkJZWxzZSBpZiAobmF2LT5raW5kID09IFJQUl9OQVZfTkVYVCAm JiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0xBU1QpCisJCQkJCQluYXYtPmtpbmQgPSBSUFJfTkFW X05FWFRfTEFTVDsKKworCQkJCQluYXYtPmNvbXBvdW5kX29mZnNldF9hcmcgPSBuYXYtPm9mZnNl dF9hcmc7CisJCQkJCW5hdi0+b2Zmc2V0X2FyZyA9IGlubmVyLT5vZmZzZXRfYXJnOworCQkJCQlu YXYtPmFyZyA9IGlubmVyLT5hcmc7CisJCQkJCWZsYXR0ZW5lZCA9IHRydWU7CisKKwkJCQkJLyoK KwkJCQkJICogVGhlIGZsYXR0ZW5lZCBhcmd1bWVudCBtdXN0IGluY2x1ZGUgYSBjb2x1bW4gcmVm ZXJlbmNlLAorCQkJCQkgKiBqdXN0IGxpa2UgdGhlIHNpbXBsZS1uYXYgY2FzZSBiZWxvdy4KKwkJ CQkJICovCisJCQkJCWlmICghY3R4LT5oYXNfY29sdW1uX3JlZikKKwkJCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJt c2coImFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5j bHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZSIpLAorCQkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQkJZWxzZSBp ZiAoIW91dGVyX3BoeXMgJiYgaW5uZXJfcGh5cykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQllcnJtc2coIkZJUlNUIGFu ZCBMQVNUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVYVCIpLAorCQkJCQkJCWVycmhpbnQoIk9u bHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChM QVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOworCQkJCWVsc2UgaWYgKG91dGVy X3BoeXMgJiYgaW5uZXJfcGh5cykKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQllcnJtc2coIlBSRVYgYW5kIE5FWFQgY2Fu bm90IGNvbnRhaW4gUFJFViBvciBORVhUIiksCisJCQkJCQkJZXJyaGludCgiT25seSBQUkVWKEZJ UlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29t cG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuIiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN0 eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CisJCQkJZWxzZQorCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCWVycm1zZygi RklSU1QgYW5kIExBU1QgY2Fubm90IGNvbnRhaW4gRklSU1Qgb3IgTEFTVCIpLAorCQkJCQkJCWVy cmhpbnQoIk9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBh bmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOworCQkJfQorCQkJ ZWxzZSBpZiAoIWN0eC0+aGFzX2NvbHVtbl9yZWYpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJhcmd1 bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQg bGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UiKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihj dHgtPnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOworCQkJfQorCisJCQkvKgorCQkJICogV2FsayBv ZmZzZXQgYXJnKHMpIGluIFBIQVNFX05BVl9PRkZTRVQgdG8gZW5mb3JjZSB0aGUKKwkJCSAqIGNv bnN0YW50LW9mZnNldCBydWxlLiAgRm9yIGNvbXBvdW5kIGZvcm1zLCBib3RoIHRoZSBpbm5lcgor CQkJICogKHBvc3QtZmxhdHRlbiBuYXYtPm9mZnNldF9hcmcpIGFuZCBvdXRlciAoY29tcG91bmRf b2Zmc2V0X2FyZykKKwkJCSAqIG9mZnNldHMgbXVzdCBiZSBjb25zdGFudHM7IHRoZSBpbm5lcidz IGNvbHVtbi1yZWYgc3RhdHVzIHdhcworCQkJICogbm90IHNlcGFyYXRlbHkgdHJhY2tlZCBkdXJp bmcgdGhlIFBIQVNFX05BVl9BUkcgd2FsayAod2hpY2gKKwkJCSAqIG9ubHkgY2hlY2tzIHRoYXQg bmF2LmFyZyBhcyBhIHdob2xlIGhhcyBhdCBsZWFzdCBvbmUgVmFyKSwgc28KKwkJCSAqIGl0IGlz IHJlLXdhbGtlZCBoZXJlIHRvIGNhdGNoIGNvbHVtbiByZWZlcmVuY2VzIHRoZSBpbm5lcgorCQkJ ICogb2Zmc2V0IHdvdWxkIGhhdmUgbGVha2VkLgorCQkJICovCisJCQljdHgtPnBoYXNlID0gREVG SU5FX1BIQVNFX05BVl9PRkZTRVQ7CisKKwkJCWlmIChuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkK KwkJCXsKKwkJCQljdHgtPmhhc19jb2x1bW5fcmVmID0gZmFsc2U7CisJCQkJKHZvaWQpIGRlZmlu ZV93YWxrZXIoKE5vZGUgKikgbmF2LT5vZmZzZXRfYXJnLCBjdHgpOworCQkJCWlmIChjdHgtPmhh c19jb2x1bW5fcmVmKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCWVycm1zZygicm93IHBhdHRlcm4gbmF2 aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJCQkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgbmF2LT5v ZmZzZXRfYXJnKSkpOworCQkJfQorCQkJaWYgKGZsYXR0ZW5lZCAmJiBuYXYtPmNvbXBvdW5kX29m ZnNldF9hcmcgIT0gTlVMTCkKKwkJCXsKKwkJCQljdHgtPmhhc19jb2x1bW5fcmVmID0gZmFsc2U7 CisJCQkJKHZvaWQpIGRlZmluZV93YWxrZXIoKE5vZGUgKikgbmF2LT5jb21wb3VuZF9vZmZzZXRf YXJnLCBjdHgpOworCQkJCWlmIChjdHgtPmhhc19jb2x1bW5fcmVmKQorCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQkJCWVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10 aW1lIGNvbnN0YW50IiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBl eHByTG9jYXRpb24oKE5vZGUgKikgbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnKSkpOworCQkJfQor CisJCQkqY3R4ID0gc2F2ZWQ7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4g ZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBkZWZpbmVfd2Fsa2VyLCBjdHgpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaAppbmRleCBiYjA1YWVlYmVlNC4uN2MxYjNkMWJiMDcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oCkBAIC02NDAsNiArNjQwLDYwIEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0Z1bmNS dW5Db25kaXRpb24KIAlFeHByCSAgICphcmc7CiB9IFdpbmRvd0Z1bmNSdW5Db25kaXRpb247CiAK Ky8qCisgKiBSUFJOYXZFeHByCisgKgorICogUmVwcmVzZW50cyBhIFBSRVYvTkVYVC9GSVJTVC9M QVNUIG5hdmlnYXRpb24gY2FsbCBpbiBhbiBSUFIgREVGSU5FIGNsYXVzZS4KKyAqIEF0IGV4cHJl c3Npb24gY29tcGlsZSB0aW1lIHRoaXMgaXMgdHJhbnNsYXRlZCBpbnRvIEVFT1BfUlBSX05BVl9T RVQgLworICogRUVPUF9SUFJfTkFWX1JFU1RPUkUgb3Bjb2RlcyByYXRoZXIgdGhhbiBhIG5vcm1h bCBmdW5jdGlvbiBjYWxsLgorICoKKyAqIFNpbXBsZSBuYXZpZ2F0aW9uIChQUkVWL05FWFQvRklS U1QvTEFTVCk6CisgKiAgIGtpbmQ6ICAgICAgIFJQUl9OQVZfUFJFViwgUlBSX05BVl9ORVhULCBS UFJfTkFWX0ZJUlNULCBvciBSUFJfTkFWX0xBU1QKKyAqICAgYXJnOiAgICAgICAgdGhlIGV4cHJl c3Npb24gdG8gZXZhbHVhdGUgYWdhaW5zdCB0aGUgdGFyZ2V0IHJvdworICogICBvZmZzZXRfYXJn OiBvcHRpb25hbCBleHBsaWNpdCBvZmZzZXQgZXhwcmVzc2lvbiAoMi1hcmcgZm9ybSk7IE5VTEwg Zm9yCisgKiAgICAgICAgICAgICAgIHRoZSAxLWFyZyBmb3JtIChpbXBsaWNpdCBvZmZzZXQ6IDEg Zm9yIFBSRVYvTkVYVCwgMCBmb3IKKyAqICAgICAgICAgICAgICAgRklSU1QvTEFTVCkKKyAqCisg KiBDb21wb3VuZCBuYXZpZ2F0aW9uIChQUkVWL05FWFQgd3JhcHBpbmcgRklSU1QvTEFTVCk6Cisg KiAgIGtpbmQ6ICAgICAgICAgICAgICBSUFJfTkFWX1BSRVZfRklSU1QsIFBSRVZfTEFTVCwgTkVY VF9GSVJTVCwgTkVYVF9MQVNUCisgKiAgIGFyZzogICAgICAgICAgICAgICB0aGUgZXhwcmVzc2lv biB0byBldmFsdWF0ZSBhZ2FpbnN0IHRoZSBmaW5hbCB0YXJnZXQgcm93CisgKiAgIG9mZnNldF9h cmc6ICAgICAgICBpbm5lciBvZmZzZXQgKEZJUlNUL0xBU1QpLCBOVUxMID0gaW1wbGljaXQgZGVm YXVsdAorICogICBjb21wb3VuZF9vZmZzZXRfYXJnOiBvdXRlciBvZmZzZXQgKFBSRVYvTkVYVCks IE5VTEwgPSBpbXBsaWNpdCBkZWZhdWx0CisgKgorICogQ29tcG91bmQgdGFyZ2V0IGNvbXB1dGF0 aW9uOgorICogICBQUkVWX0ZJUlNUOiAobWF0Y2hfc3RhcnQgKyBpbm5lcikgLSBvdXRlcgorICog ICBORVhUX0ZJUlNUOiAobWF0Y2hfc3RhcnQgKyBpbm5lcikgKyBvdXRlcgorICogICBQUkVWX0xB U1Q6ICAoY3VycmVudHBvcyAgLSBpbm5lcikgLSBvdXRlcgorICogICBORVhUX0xBU1Q6ICAoY3Vy cmVudHBvcyAgLSBpbm5lcikgKyBvdXRlcgorICovCit0eXBlZGVmIGVudW0gUlBSTmF2S2luZAor eworCVJQUl9OQVZfUFJFViwKKwlSUFJfTkFWX05FWFQsCisJUlBSX05BVl9GSVJTVCwKKwlSUFJf TkFWX0xBU1QsCisJLyogY29tcG91bmQ6IG91dGVyKGlubmVyKGFyZykpICovCisJUlBSX05BVl9Q UkVWX0ZJUlNULAorCVJQUl9OQVZfUFJFVl9MQVNULAorCVJQUl9OQVZfTkVYVF9GSVJTVCwKKwlS UFJfTkFWX05FWFRfTEFTVCwKK30gUlBSTmF2S2luZDsKKwordHlwZWRlZiBzdHJ1Y3QgUlBSTmF2 RXhwcgoreworCUV4cHIJCXhwcjsKKwlSUFJOYXZLaW5kCWtpbmQ7CQkJLyogbmF2aWdhdGlvbiBr aW5kICovCisJRXhwcgkgICAqYXJnOwkJCS8qIGFyZ3VtZW50IGV4cHJlc3Npb24gKi8KKwlFeHBy CSAgICpvZmZzZXRfYXJnOwkJLyogb2Zmc2V0IGV4cHJlc3Npb24sIG9yIE5VTEwgZm9yIGRlZmF1 bHQgKi8KKwlFeHByCSAgICpjb21wb3VuZF9vZmZzZXRfYXJnOwkvKiBvdXRlciBvZmZzZXQgZm9y IGNvbXBvdW5kIG5hdiwgb3IKKwkJCQkJCQkJCQkgKiBOVUxMIGlmIHNpbXBsZSAqLworCU9pZAkJ CXJlc3VsdHR5cGU7CQkvKiByZXN1bHQgdHlwZSAoc2FtZSBhcyBhcmcncyB0eXBlKSAqLworCS8q IE9JRCBvZiBjb2xsYXRpb24gb2YgcmVzdWx0ICovCisJT2lkCQkJcmVzdWx0Y29sbGlkIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLworCVBhcnNlTG9jCWxvY2F0aW9uOworfSBSUFJOYXZFeHByOworCiAvKgog ICogTWVyZ2VTdXBwb3J0RnVuYwogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ycHIuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ycHIuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2ZhYjZmMjkyYWEKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcnByLmgKQEAgLTAsMCArMSwyMiBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogcGFyc2VfcnByLmgKKyAqCSAgaGFuZGxlIFJvdyBQYXR0ZXJu IFJlY29nbml0aW9uIGluIHBhcnNlcgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jwci5oCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEFSU0VfUlBSX0gKKyNkZWZpbmUgUEFSU0VfUlBS X0gKKworI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCisKK2V4dGVybiB2b2lkIHRyYW5z Zm9ybVJQUihQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsCisJCQkJCQkgV2lu ZG93RGVmICp3aW5kZWYsIExpc3QgKip0YXJnZXRsaXN0KTsKKworI2VuZGlmCQkJCQkJCS8qIFBB UlNFX1JQUl9IICovCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0003-Row-pattern-recognition-patch-rewriter.patch" Content-Disposition: attachment; filename="v49-0003-Row-pattern-recognition-patch-rewriter.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqql3co2 RnJvbSBkNTUwZjIwZTkwZjQxZjVkZjFkZTZiNjVlNjZlOTQ0NDFhOWVhZjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDMvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChyZXdyaXRlcikuCgotLS0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyB8IDI1MyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNTMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwppbmRleCA4OGRlNWMwNDgxYy4uNDE1ZGE2NDE3ZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTQ0Nyw2ICs0NDcsMTAgQEAgc3RhdGljIHZvaWQgZ2V0 X3J1bGVfZ3JvdXBpbmdzZXQoR3JvdXBpbmdTZXQgKmdzZXQsIExpc3QgKnRhcmdldGxpc3QsCiAJ CQkJCQkJCSBib29sIG9taXRfcGFyZW5zLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3Rh dGljIHZvaWQgZ2V0X3J1bGVfb3JkZXJieShMaXN0ICpvcmRlckxpc3QsIExpc3QgKnRhcmdldExp c3QsCiAJCQkJCQkJIGJvb2wgZm9yY2VfY29sbm8sIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7 CitzdGF0aWMgdm9pZCBhcHBlbmRfcGF0dGVybl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBS UFJQYXR0ZXJuTm9kZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBnZXRfcnVsZV9wYXR0ZXJuX25vZGUo UlBSUGF0dGVybk5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CitzdGF0aWMg dm9pZCBnZXRfcnVsZV9wYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpycFBhdHRlcm4sIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgdm9pZCBnZXRfcnVsZV9kZWZpbmUoTGlzdCAqZGVm aW5lQ2xhdXNlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3J1 bGVfd2luZG93Y2xhdXNlKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsK IHN0YXRpYyB2b2lkIGdldF9ydWxlX3dpbmRvd3NwZWMoV2luZG93Q2xhdXNlICp3YywgTGlzdCAq dGFyZ2V0TGlzdCwKIAkJCQkJCQkJZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTcxMDcs NiArNzExMSwxMjYgQEAgZ2V0X3J1bGVfb3JkZXJieShMaXN0ICpvcmRlckxpc3QsIExpc3QgKnRh cmdldExpc3QsCiAJfQogfQogCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGFwcGVuZCBxdWFu dGlmaWVyIHN0cmluZyBmb3IgcGF0dGVybiBub2RlCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRf cGF0dGVybl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSkK K3sKKwlib29sCQloYXNfcXVhbnRpZmllciA9IHRydWU7CisKKwlpZiAobm9kZS0+bWluID09IDEg JiYgbm9kZS0+bWF4ID09IDEpCisJeworCQkvKiB7MSwxfSA9IG5vIHF1YW50aWZpZXIgKi8KKwkJ aGFzX3F1YW50aWZpZXIgPSBmYWxzZTsKKwl9CisJZWxzZSBpZiAobm9kZS0+bWluID09IDAgJiYg bm9kZS0+bWF4ID09IFBHX0lOVDMyX01BWCkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn KicpOworCWVsc2UgaWYgKG5vZGUtPm1pbiA9PSAxICYmIG5vZGUtPm1heCA9PSBQR19JTlQzMl9N QVgpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJysnKTsKKwllbHNlIGlmIChub2RlLT5t aW4gPT0gMCAmJiBub2RlLT5tYXggPT0gMSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn PycpOworCWVsc2UgaWYgKG5vZGUtPm1heCA9PSBQR19JTlQzMl9NQVgpCisJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAieyVkLH0iLCBub2RlLT5taW4pOworCWVsc2UgaWYgKG5vZGUtPm1pbiA9PSBu b2RlLT5tYXgpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAieyVkfSIsIG5vZGUtPm1pbik7CisJ ZWxzZQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInslZCwlZH0iLCBub2RlLT5taW4sIG5vZGUt Pm1heCk7CisKKwlpZiAobm9kZS0+cmVsdWN0YW50KQorCXsKKwkJaWYgKCFoYXNfcXVhbnRpZmll cikKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiezF9Iik7IC8qIG1ha2UgcmVsdWN0 YW50ID8KKwkJCQkJCQkJCQkJCSAqIHVuYW1iaWd1b3VzICovCisJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJz8nKTsKKwl9Cit9CisKKy8qCisgKiBSZWN1cnNpdmUgaGVscGVyIHRvIGRpc3Bs YXkgUlBSUGF0dGVybk5vZGUgdHJlZQorICovCitzdGF0aWMgdm9pZAorZ2V0X3J1bGVfcGF0dGVy bl9ub2RlKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCit7 CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJY29uc3QgY2hhciAqc2VwOworCisJ QXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisKKwlzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKQorCXsKKwkJ Y2FzZSBSUFJfUEFUVEVSTl9WQVI6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVv dGVfaWRlbnRpZmllcihub2RlLT52YXJOYW1lKSk7CisJCQlhcHBlbmRfcGF0dGVybl9xdWFudGlm aWVyKGJ1Ziwgbm9kZSk7CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX1NFUToKKwkJ CXNlcCA9ICIiOworCQkJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+ Y2hpbGRyZW4pCisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHNlcCk7CisJ CQkJZ2V0X3J1bGVfcGF0dGVybl9ub2RlKGNoaWxkLCBjb250ZXh0KTsKKwkJCQlzZXAgPSAiICI7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX0FMVDoKKwkJCXNlcCA9ICIi OworCQkJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4p CisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHNlcCk7CisJCQkJZ2V0X3J1 bGVfcGF0dGVybl9ub2RlKGNoaWxkLCBjb250ZXh0KTsKKwkJCQlzZXAgPSAiIHwgIjsKKwkJCX0K KwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fR1JPVVA6CisJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICcoJyk7CisJCQlzZXAgPSAiIjsKKwkJCWZvcmVhY2hfbm9kZShSUFJQYXR0 ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCBzZXApOworCQkJCWdldF9ydWxlX3BhdHRlcm5fbm9kZShjaGlsZCwgY29u dGV4dCk7CisJCQkJc2VwID0gIiAiOworCQkJfQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnKScpOworCQkJYXBwZW5kX3BhdHRlcm5fcXVhbnRpZmllcihidWYsIG5vZGUpOworCQkJYnJl YWs7CisJfQorfQorCisvKgorICogRGlzcGxheSBhIFBBVFRFUk4gY2xhdXNlLgorICovCitzdGF0 aWMgdm9pZAorZ2V0X3J1bGVfcGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcnBQYXR0ZXJuLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7 CisKKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisJZ2V0X3J1bGVfcGF0dGVybl9u b2RlKHJwUGF0dGVybiwgY29udGV4dCk7CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScp OworfQorCisvKgorICogRGlzcGxheSBhIERFRklORSBjbGF1c2UuCisgKi8KK3N0YXRpYyB2b2lk CitnZXRfcnVsZV9kZWZpbmUoTGlzdCAqZGVmaW5lQ2xhdXNlLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJY29uc3QgY2hhciAq c2VwOworCisJc2VwID0gIiAgIjsKKworCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIGRl ZmluZUNsYXVzZSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyBBUyAiLCBzZXAs IHF1b3RlX2lkZW50aWZpZXIodGUtPnJlc25hbWUpKTsKKwkJZ2V0X3J1bGVfZXhwcigoTm9kZSAq KSB0ZS0+ZXhwciwgY29udGV4dCwgZmFsc2UpOworCQlzZXAgPSAiLFxuICAiOworCX0KK30KKwog LyoKICAqIERpc3BsYXkgYSBXSU5ET1cgY2xhdXNlLgogICoKQEAgLTcxODcsNiArNzMxMSw3IEBA IGdldF9ydWxlX3dpbmRvd3NwZWMoV2luZG93Q2xhdXNlICp3YywgTGlzdCAqdGFyZ2V0TGlzdCwK IAkJZ2V0X3J1bGVfb3JkZXJieSh3Yy0+b3JkZXJDbGF1c2UsIHRhcmdldExpc3QsIGZhbHNlLCBj b250ZXh0KTsKIAkJbmVlZHNwYWNlID0gdHJ1ZTsKIAl9CisKIAkvKiBmcmFtaW5nIGNsYXVzZSBp cyBuZXZlciBpbmhlcml0ZWQsIHNvIHByaW50IHVubGVzcyBpdCdzIGRlZmF1bHQgKi8KIAlpZiAo d2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX05PTkRFRkFVTFQpCiAJewpAQCAtNzE5NSw3 ICs3MzIwLDUxIEBAIGdldF9ydWxlX3dpbmRvd3NwZWMoV2luZG93Q2xhdXNlICp3YywgTGlzdCAq dGFyZ2V0TGlzdCwKIAkJZ2V0X3dpbmRvd19mcmFtZV9vcHRpb25zKHdjLT5mcmFtZU9wdGlvbnMs CiAJCQkJCQkJCSB3Yy0+c3RhcnRPZmZzZXQsIHdjLT5lbmRPZmZzZXQsCiAJCQkJCQkJCSBjb250 ZXh0KTsKKwkJbmVlZHNwYWNlID0gdHJ1ZTsKKwl9CisKKwkvKiBSUFIgKi8KKwlpZiAod2MtPnJw U2tpcFRvID09IFNUX05FWFRfUk9XKQorCXsKKwkJaWYgKG5lZWRzcGFjZSkKKwkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsCisJ CQkJCQkJICAgIlxuICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XICIpOworCQluZWVkc3Bh Y2UgPSB0cnVlOwogCX0KKwllbHNlIGlmICh3Yy0+cnBTa2lwVG8gPT0gU1RfUEFTVF9MQVNUX1JP VykKKwl7CisJCWlmIChuZWVkc3BhY2UpCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcg Jyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJCQkJCSAgICJcbiAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICIpOworCQluZWVkc3BhY2UgPSB0cnVlOworCX0KKwlp ZiAod2MtPmluaXRpYWwpCisJeworCQlpZiAobmVlZHNwYWNlKQorCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlxuICBJTklU SUFMIik7CisJCW5lZWRzcGFjZSA9IHRydWU7CisJfQorCWlmICh3Yy0+cnBQYXR0ZXJuKQorCXsK KwkJaWYgKG5lZWRzcGFjZSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJcbiAgUEFUVEVSTiAiKTsKKwkJZ2V0X3J1bGVf cGF0dGVybih3Yy0+cnBQYXR0ZXJuLCBjb250ZXh0KTsKKwkJbmVlZHNwYWNlID0gdHJ1ZTsKKwl9 CisKKwlpZiAod2MtPmRlZmluZUNsYXVzZSkKKwl7CisJCWlmIChuZWVkc3BhY2UpCisJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LCAiXG4gIERFRklORVxuIik7CisJCWdldF9ydWxlX2RlZmluZSh3Yy0+ZGVmaW5lQ2xhdXNlLCBj b250ZXh0KTsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCX0KKwogCWFwcGVu ZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKIH0KIApAQCAtOTQ0NCw2ICs5NjEzLDcgQEAgaXNT aW1wbGVOb2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVudE5vZGUsIGludCBwcmV0dHlGbGFncykK IAkJY2FzZSBUX0Z1bmNFeHByOgogCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKIAkJY2Fz ZSBUX0pzb25FeHByOgorCQljYXNlIFRfUlBSTmF2RXhwcjoKIAkJCS8qIGZ1bmN0aW9uLWxpa2U6 IG5hbWUoLi4pIG9yIG5hbWVbLi5dICovCiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtOTkzOSw2ICsx MDEwOSw4OSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCwKIAkJCWdldF9mdW5jX2V4cHIoKEZ1bmNFeHByICopIG5vZGUsIGNvbnRleHQsIHNob3dp bXBsaWNpdCk7CiAJCQlicmVhazsKIAorCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJCQlS UFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCWNvbnN0IGNoYXIgKm91 dGVyX2Z1bmMgPSBOVUxMOworCQkJCWNvbnN0IGNoYXIgKmlubmVyX2Z1bmM7CisKKwkJCQlzd2l0 Y2ggKG5hdi0+a2luZCkKKwkJCQl7CisJCQkJCWNhc2UgUlBSX05BVl9QUkVWOgorCQkJCQkJaW5u ZXJfZnVuYyA9ICJQUkVWKCI7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBSUFJfTkFWX05FWFQ6 CisJCQkJCQlpbm5lcl9mdW5jID0gIk5FWFQoIjsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJQ Ul9OQVZfRklSU1Q6CisJCQkJCQlpbm5lcl9mdW5jID0gIkZJUlNUKCI7CisJCQkJCQlicmVhazsK KwkJCQkJY2FzZSBSUFJfTkFWX0xBU1Q6CisJCQkJCQlpbm5lcl9mdW5jID0gIkxBU1QoIjsKKwkJ CQkJCWJyZWFrOworCQkJCQljYXNlIFJQUl9OQVZfUFJFVl9GSVJTVDoKKwkJCQkJCW91dGVyX2Z1 bmMgPSAiUFJFVigiOworCQkJCQkJaW5uZXJfZnVuYyA9ICJGSVJTVCgiOworCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgUlBSX05BVl9QUkVWX0xBU1Q6CisJCQkJCQlvdXRlcl9mdW5jID0gIlBSRVYo IjsKKwkJCQkJCWlubmVyX2Z1bmMgPSAiTEFTVCgiOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2Ug UlBSX05BVl9ORVhUX0ZJUlNUOgorCQkJCQkJb3V0ZXJfZnVuYyA9ICJORVhUKCI7CisJCQkJCQlp bm5lcl9mdW5jID0gIkZJUlNUKCI7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBSUFJfTkFWX05F WFRfTEFTVDoKKwkJCQkJCW91dGVyX2Z1bmMgPSAiTkVYVCgiOworCQkJCQkJaW5uZXJfZnVuYyA9 ICJMQVNUKCI7CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgUlBSIG5hdmlnYXRpb24ga2luZDogJWQiLAorCQkJCQkJCSBuYXYtPmtp bmQpOworCQkJCQkJaW5uZXJfZnVuYyA9IE5VTEw7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K KwkJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWlmIChvdXRlcl9mdW5jICE9IE5VTEwpCisJCQkJ eworCQkJCQkvKgorCQkJCQkgKiBDb21wb3VuZDogUFJFVihGSVJTVChhcmcgWywgaW5uZXJfb2Zm c2V0XSkgWywKKwkJCQkJICogb3V0ZXJfb2Zmc2V0XSkKKwkJCQkJICovCisJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCBvdXRlcl9mdW5jKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsIGlubmVyX2Z1bmMpOworCQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+ YXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJCQlpZiAobmF2LT5vZmZzZXRfYXJnICE9 IE5VTEwpCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsK KwkJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbmF2LT5vZmZzZXRfYXJnLCBjb250ZXh0LAor CQkJCQkJCQkJICBzaG93aW1wbGljaXQpOworCQkJCQl9CisJCQkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJyknKTsKKwkJCQkJaWYgKG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZyAhPSBOVUxM KQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQkJ CQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywKKwkJCQkJ CQkJCSAgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwkJCQkJfQorCQkJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICcpJyk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qIFNpbXBs ZTogRlVOQyhhcmcgWywgb2Zmc2V0XSkgKi8KKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsIGlubmVyX2Z1bmMpOworCQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+YXJnLCBj b250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJCQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwp CisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJ CWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbmF2LT5vZmZzZXRfYXJnLCBjb250ZXh0LAorCQkJCQkJ CQkJICBzaG93aW1wbGljaXQpOworCQkJCQl9CisJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJyknKTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFRfTmFtZWRBcmdFeHBy OgogCQkJewogCQkJCU5hbWVkQXJnRXhwciAqbmEgPSAoTmFtZWRBcmdFeHByICopIG5vZGU7Ci0t IAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0004-Row-pattern-recognition-patch-planner.patch" Content-Disposition: attachment; filename="v49-0004-Row-pattern-recognition-patch-planner.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqql61r3 RnJvbSA5YTI5MTllNDdkOTE2NzM4ODk5YTVmYWFlODA1Mjc3YzJjZmM2ZDk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDQvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChwbGFubmVyKS4KCi0tLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgfCAgIDY4ICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgIHwgICA4NSArCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICB8ICAgMjggKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vTWFrZWZpbGUgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYyAgIHwgIDQxNCArKystCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9tZXNvbi5idWlsZCAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jICAgICAgfCAgIDM1ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyAg ICAgICAgICB8IDIwOTAgKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9zZXRyZWZzLmMgICAgICB8ICAgMjkgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9w cmVwL3ByZXBqb2ludHJlZS5jIHwgICAgNyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMu aCAgICAgICAgICAgICB8ICAxMTAgKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAgICAg ICAgICAgICAgIHwgICA5OSArCiAxMiBmaWxlcyBjaGFuZ2VkLCAyOTYyIGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnBy LmgKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDJhMmUwMGIzNzJlLi42YWIyMjdiMmI2MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTY5LDYgKzY5LDkgQEAgZXhwclR5cGUoY29uc3QgTm9kZSAq ZXhwcikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQl0eXBlID0gKChjb25zdCBNZXJn ZVN1cHBvcnRGdW5jICopIGV4cHIpLT5tc2Z0eXBlOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJO YXZFeHByOgorCQkJdHlwZSA9ICgoY29uc3QgUlBSTmF2RXhwciAqKSBleHByKS0+cmVzdWx0dHlw ZTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJdHlwZSA9ICgoY29u c3QgU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5yZWZyZXN0eXBlOwogCQkJYnJlYWs7CkBAIC0z ODksNiArMzkyLDkgQEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJcmV0dXJuICgo Y29uc3QgQXJyYXlDb2VyY2VFeHByICopIGV4cHIpLT5yZXN1bHR0eXBtb2Q7CiAJCWNhc2UgVF9D b2xsYXRlRXhwcjoKIAkJCXJldHVybiBleHByVHlwbW9kKChOb2RlICopICgoY29uc3QgQ29sbGF0 ZUV4cHIgKikgZXhwciktPmFyZyk7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJLyogcmVzdWx0 IGhhcyB0aGUgc2FtZSB0eXBlL3R5cG1vZCBhcyB0aGUgYXJndW1lbnQgZXhwcmVzc2lvbiAqLwor CQkJcmV0dXJuIGV4cHJUeXBtb2QoKE5vZGUgKikgKChjb25zdCBSUFJOYXZFeHByICopIGV4cHIp LT5hcmcpOwogCQljYXNlIFRfQ2FzZUV4cHI6CiAJCQl7CiAJCQkJLyoKQEAgLTg1Myw2ICs4NTks OSBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9NZXJnZVN1cHBv cnRGdW5jOgogCQkJY29sbCA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bXNm Y29sbGlkOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJY29sbCA9ICgoY29u c3QgUlBSTmF2RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOworCQkJYnJlYWs7CiAJCWNhc2Ug VF9TdWJzY3JpcHRpbmdSZWY6CiAJCQljb2xsID0gKChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKikg ZXhwciktPnJlZmNvbGxpZDsKIAkJCWJyZWFrOwpAQCAtMTE2Miw2ICsxMTcxLDkgQEAgZXhwclNl dENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0aW9uKQogCQljYXNlIFRfTWVyZ2VTdXBw b3J0RnVuYzoKIAkJCSgoTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bXNmY29sbGlkID0gY29s bGF0aW9uOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJKChSUFJOYXZFeHBy ICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBU X1N1YnNjcmlwdGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5yZWZjb2xs aWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTE0MzcsNiArMTQ0OSwxMiBAQCBleHByTG9j YXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQls b2MgPSAoKGNvbnN0IE1lcmdlU3VwcG9ydEZ1bmMgKikgZXhwciktPmxvY2F0aW9uOwogCQkJYnJl YWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJbG9jID0gKChjb25zdCBSUFJOYXZFeHByICop IGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRfUlBSUGF0dGVybk5vZGU6CisJ CQlsb2MgPSAoKGNvbnN0IFJQUlBhdHRlcm5Ob2RlICopIGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJy ZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJLyoganVzdCB1c2UgY29udGFpbmVy IGFyZ3VtZW50J3MgbG9jYXRpb24gKi8KIAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAo KGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqKSBleHByKS0+cmVmZXhwcik7CkBAIC0yMTk5LDYgKzIy MTcsMTggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJl dHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJewor CQkJCVJQUk5hdkV4cHIgKmV4cHIgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCisJCQkJaWYgKFdB TEsoZXhwci0+YXJnKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKGV4cHItPm9mZnNldF9h cmcgJiYgV0FMSyhleHByLT5vZmZzZXRfYXJnKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KGV4cHItPmNvbXBvdW5kX29mZnNldF9hcmcgJiYgV0FMSyhleHByLT5jb21wb3VuZF9vZmZzZXRf YXJnKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNj cmlwdGluZ1JlZjoKIAkJCXsKIAkJCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3Jp cHRpbmdSZWYgKikgbm9kZTsKQEAgLTI0MzIsNiArMjQ2Miw4IEBAIGV4cHJlc3Npb25fdHJlZV93 YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCQlpZiAoV0FMSyh3 Yy0+ZW5kT2Zmc2V0KSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsod2MtPmRlZmlu ZUNsYXVzZSkpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgVF9D VEVDeWNsZUNsYXVzZToKQEAgLTI4MjYsNiArMjg1OCw4IEBAIHF1ZXJ5X3RyZWVfd2Fsa2VyX2lt cGwoUXVlcnkgKnF1ZXJ5LAogCQkJCXJldHVybiB0cnVlOwogCQkJaWYgKFdBTEsod2MtPmVuZE9m ZnNldCkpCiAJCQkJcmV0dXJuIHRydWU7CisJCQlpZiAoV0FMSyh3Yy0+ZGVmaW5lQ2xhdXNlKSkK KwkJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCX0KIApAQCAtMzE0OCw2ICszMTgyLDE4IEBAIGV4cHJl c3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikg bmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJ CQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCVJQUk5hdkV4cHIg Km5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBuYXYsIFJQUk5hdkV4cHIpOworCQkJ CU1VVEFURShuZXdub2RlLT5hcmcsIG5hdi0+YXJnLCBFeHByICopOworCQkJCU1VVEFURShuZXdu b2RlLT5vZmZzZXRfYXJnLCBuYXYtPm9mZnNldF9hcmcsIEV4cHIgKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPmNvbXBvdW5kX29mZnNldF9hcmcsIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgRXhw ciAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlj YXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJewogCQkJCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVm ID0gKFN1YnNjcmlwdGluZ1JlZiAqKSBub2RlOwpAQCAtMzU3MCw2ICszNjE2LDcgQEAgZXhwcmVz c2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJCU1VVEFURShuZXdub2RlLT5v cmRlckNsYXVzZSwgd2MtPm9yZGVyQ2xhdXNlLCBMaXN0ICopOwogCQkJCU1VVEFURShuZXdub2Rl LT5zdGFydE9mZnNldCwgd2MtPnN0YXJ0T2Zmc2V0LCBOb2RlICopOwogCQkJCU1VVEFURShuZXdu b2RlLT5lbmRPZmZzZXQsIHdjLT5lbmRPZmZzZXQsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5ld25v ZGUtPmRlZmluZUNsYXVzZSwgd2MtPmRlZmluZUNsYXVzZSwgTGlzdCAqKTsKIAkJCQlyZXR1cm4g KE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtMzk0Myw2ICszOTkwLDcgQEAg cXVlcnlfdHJlZV9tdXRhdG9yX2ltcGwoUXVlcnkgKnF1ZXJ5LAogCQkJRkxBVENPUFkobmV3bm9k ZSwgd2MsIFdpbmRvd0NsYXVzZSk7CiAJCQlNVVRBVEUobmV3bm9kZS0+c3RhcnRPZmZzZXQsIHdj LT5zdGFydE9mZnNldCwgTm9kZSAqKTsKIAkJCU1VVEFURShuZXdub2RlLT5lbmRPZmZzZXQsIHdj LT5lbmRPZmZzZXQsIE5vZGUgKik7CisJCQlNVVRBVEUobmV3bm9kZS0+ZGVmaW5lQ2xhdXNlLCB3 Yy0+ZGVmaW5lQ2xhdXNlLCBMaXN0ICopOwogCiAJCQlyZXN1bHRsaXN0ID0gbGFwcGVuZChyZXN1 bHRsaXN0LCAoTm9kZSAqKSBuZXdub2RlKTsKIAkJfQpAQCAtNDU5OSw2ICs0NjQ3LDggQEAgcmF3 X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1 ZTsKIAkJCQlpZiAoV0FMSyh3ZC0+ZW5kT2Zmc2V0KSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKFdBTEsod2QtPnJwQ29tbW9uU3ludGF4KSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJ CQlicmVhazsKIAkJY2FzZSBUX1JhbmdlU3Vic2VsZWN0OgpAQCAtNDg1NCw2ICs0OTA0LDI0IEBA IHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJu IHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1JQQ29tbW9uU3ludGF4OgorCQkJewor CQkJCVJQQ29tbW9uU3ludGF4ICpyYyA9IChSUENvbW1vblN5bnRheCAqKSBub2RlOworCisJCQkJ aWYgKFdBTEsocmMtPnJwUGF0dGVybikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxL KHJjLT5ycERlZnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfUlBSUGF0dGVybk5vZGU6CisJCQl7CisJCQkJUlBSUGF0dGVybk5vZGUgKnJwID0gKFJQUlBh dHRlcm5Ob2RlICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhycC0+Y2hpbGRyZW4pKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCBjMTM0NTk0YTIxYS4uZjNj OWYzYzBiZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtMjQ2Myw2 ICsyNDYzLDE3IEBAIGZpbmRfd2luZG93X3J1bl9jb25kaXRpb25zKFF1ZXJ5ICpzdWJxdWVyeSwg QXR0ck51bWJlciBhdHRubywKIAl3Y2xhdXNlID0gKFdpbmRvd0NsYXVzZSAqKSBsaXN0X250aChz dWJxdWVyeS0+d2luZG93Q2xhdXNlLAogCQkJCQkJCQkJCXdmdW5jLT53aW5yZWYgLSAxKTsKIAor CS8qCisJICogSWYgYSBERUZJTkUgY2xhdXNlIGV4aXN0cywgd2UgY2Fubm90IHB1c2ggZG93biBh IHJ1biBjb25kaXRpb24uIEluIHRoZQorCSAqIGNhc2UsIGEgd2luZG93IHBhcnRpdGlvbiAob3Ig ZnJhbWUpIGlzIGRpdmlkZWQgaW50byBtdWx0aXBsZSByZWR1Y2VkCisJICogZnJhbWVzIGFuZCBl YWNoIGZyYW1lIHNob3VsZCBiZSBldmFsdWF0ZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFydGl0aW9u CisJICogKG9yIGZ1bGwgZnJhbWUgZW5kKS4gVGhpcyBtZWFucyB3ZSBjYW5ub3QgYXBwbHkgdGhl IHJ1biBjb25kaXRpb24KKwkgKiBvcHRpbWl6YXRpb24gYmVjYXVzZSBpdCBzdG9wcyBldmFsdWF0 aW9uIHdpbmRvdyBmdW5jdGlvbnMgaW4gY2VydGFpbgorCSAqIGNhc2VzLgorCSAqLworCWlmICh3 Y2xhdXNlLT5kZWZpbmVDbGF1c2UgIT0gTklMKQorCQlyZXR1cm4gZmFsc2U7CisKIAlyZXEudHlw ZSA9IFRfU3VwcG9ydFJlcXVlc3RXRnVuY01vbm90b25pYzsKIAlyZXEud2luZG93X2Z1bmMgPSB3 ZnVuYzsKIAlyZXEud2luZG93X2NsYXVzZSA9IHdjbGF1c2U7CkBAIC00NzM5LDYgKzQ3NTAsODAg QEAgcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKFF1ZXJ5ICpzdWJxdWVyeSwgUmVsT3B0 SW5mbyAqcmVsLAogCQlpZiAoY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnModGV4cHIpKQogCQkJ Y29udGludWU7CiAKKwkJLyoKKwkJICogSWYgYW55IFJQUiAoUm93IFBhdHRlcm4gUmVjb2duaXRp b24pIHdpbmRvdyBjbGF1c2UgcmVmZXJlbmNlcyB0aGlzCisJCSAqIGNvbHVtbiBpbiBpdHMgREVG SU5FIGNsYXVzZSwgZG9uJ3QgcmVtb3ZlIGl0LiAgVGhlIERFRklORQorCQkgKiBleHByZXNzaW9u IG5lZWRzIHRoZXNlIGNvbHVtbnMgaW4gdGhlIHR1cGxlc3RvcmUgc2xvdCBmb3IgcGF0dGVybgor CQkgKiBtYXRjaGluZyBldmFsdWF0aW9uLCBldmVuIGlmIHRoZSBvdXRlciBxdWVyeSBkb2Vzbid0 IHJlZmVyZW5jZQorCQkgKiB0aGVtLgorCQkgKi8KKwkJaWYgKElzQSh0ZXhwciwgVmFyKSkKKwkJ eworCQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSB0ZXhwcjsKKwkJCWJvb2wJCW5lZWRlZF9ieV9k ZWZpbmUgPSBmYWxzZTsKKworCQkJZm9yZWFjaF9ub2RlKFdpbmRvd0NsYXVzZSwgd2MsIHN1YnF1 ZXJ5LT53aW5kb3dDbGF1c2UpCisJCQl7CisJCQkJaWYgKHdjLT5kZWZpbmVDbGF1c2UgIT0gTklM KQorCQkJCXsKKwkJCQkJTGlzdAkgICAqdmFycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSB3 Yy0+ZGVmaW5lQ2xhdXNlLCAwKTsKKworCQkJCQlmb3JlYWNoX25vZGUoVmFyLCBkdmFyLCB2YXJz KQorCQkJCQl7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBNYXRjaCB2YXJubyBhcyB3ZWxsIGFzIHZh cmF0dG5vOiBhIFZhciBwdWxsZWQgZnJvbQorCQkJCQkJICogYSBERUZJTkUgY2xhdXNlIGNhbiBz aGFyZSBhbiBhdHRyaWJ1dGUgbnVtYmVyIHdpdGgKKwkJCQkJCSAqIGFuIHVucmVsYXRlZCBvdXRw dXQgY29sdW1uIG9mIGEgZGlmZmVyZW50IHJlbGF0aW9uLAorCQkJCQkJICogd2hpY2ggd291bGQg b3RoZXJ3aXNlIGJlIG92ZXItcmV0YWluZWQuICBDaGVja2luZworCQkJCQkJICogdmFybGV2ZWxz dXAgaXMganVzdCBwYXJhbm9pYSwgc2luY2Ugb3V0ZXIKKwkJCQkJCSAqIHJlZmVyZW5jZXMgaW4g REVGSU5FIGFyZSByZWplY3RlZCBkdXJpbmcgcGFyc2UKKwkJCQkJCSAqIGFuYWx5c2lzLgorCQkJ CQkJICovCisJCQkJCQlpZiAoZHZhci0+dmFybm8gPT0gdmFyLT52YXJubyAmJgorCQkJCQkJCWR2 YXItPnZhcmF0dG5vID09IHZhci0+dmFyYXR0bm8gJiYKKwkJCQkJCQlkdmFyLT52YXJsZXZlbHN1 cCA9PSB2YXItPnZhcmxldmVsc3VwKQorCQkJCQkJeworCQkJCQkJCW5lZWRlZF9ieV9kZWZpbmUg PSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWxpc3RfZnJlZSh2 YXJzKTsKKwkJCQkJaWYgKG5lZWRlZF9ieV9kZWZpbmUpCisJCQkJCQlicmVhazsKKwkJCQl9CisJ CQl9CisJCQlpZiAobmVlZGVkX2J5X2RlZmluZSkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCS8q CisJCSAqIElmIGl0J3MgYSB3aW5kb3cgZnVuY3Rpb24gcmVmZXJlbmNpbmcgYSB3aW5kb3cgY2xh dXNlIHdpdGggUlBSLAorCQkgKiBkb24ndCByZW1vdmUgaXQuICBFdmVuIHdoZW4gdGhlIHdpbmRv dyBmdW5jdGlvbiByZXN1bHQgaXMgdW51c2VkIGJ5CisJCSAqIHRoZSBvdXRlciBxdWVyeSwgdGhl IFJQUiBwYXR0ZXJuIG1hdGNoaW5nIChmcmFtZSByZWR1Y3Rpb24gdmlhCisJCSAqIERFRklORS9Q QVRURVJOKSBtdXN0IHN0aWxsIGV4ZWN1dGUuICBSZXBsYWNpbmcgdGhpcyB3aXRoIE5VTEwgd291 bGQKKwkJICogbGVhdmUgbm8gYWN0aXZlIHdpbmRvdyBmdW5jdGlvbnMgZm9yIHRoZSBXaW5kb3dD bGF1c2UsIGNhdXNpbmcgdGhlCisJCSAqIHBsYW5uZXIgdG8gb21pdCB0aGUgV2luZG93QWdnIG5v ZGUgZW50aXJlbHkuCisJCSAqLworCQlpZiAoSXNBKHRleHByLCBXaW5kb3dGdW5jKSkKKwkJewor CQkJV2luZG93RnVuYyAqd2Z1bmMgPSAoV2luZG93RnVuYyAqKSB0ZXhwcjsKKwkJCUxpc3RDZWxs ICAgKndsYzsKKworCQkJZm9yZWFjaCh3bGMsIHN1YnF1ZXJ5LT53aW5kb3dDbGF1c2UpCisJCQl7 CisJCQkJV2luZG93Q2xhdXNlICp3YyA9IGxmaXJzdF9ub2RlKFdpbmRvd0NsYXVzZSwgd2xjKTsK KworCQkJCWlmICh3Yy0+d2lucmVmID09IHdmdW5jLT53aW5yZWYgJiYKKwkJCQkJd2MtPmRlZmlu ZUNsYXVzZSAhPSBOSUwpCisJCQkJeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpZiAo d2xjICE9IE5VTEwpCisJCQkJY29udGludWU7CisJCX0KKwogCQkvKgogCQkgKiBPSywgd2UgZG9u J3QgbmVlZCBpdC4gIFJlcGxhY2UgdGhlIGV4cHJlc3Npb24gd2l0aCBhIE5VTEwgY29uc3RhbnQu CiAJCSAqIFByZXNlcnZlIHRoZSBleHBvc2VkIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24sIGluIGNh c2Ugc29tZXRoaW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0 c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCAxYzU3 NWU1NmZmNi4uODI0NzJjM2ZlOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUu YwpAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYWNlaG9sZGVyLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVz dHJpY3RpbmZvLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9zZWxmdW5jcy5oIgpAQCAtMzIyOCw3ICszMjI5LDM0IEBAIGNvc3Rfd2luZG93YWdnKFBh dGggKnBhdGgsIFBsYW5uZXJJbmZvICpyb290LAogCSAqIG1hbnkgcm93cyB0aGUgd2luZG93IGZ1 bmN0aW9uIHdpbGwgZmV0Y2gsIGl0J3MgaGFyZCB0byBkbyBiZXR0ZXIuICBJbgogCSAqIGFueSBj YXNlLCBpdCdzIGEgZ29vZCBlc3RpbWF0ZSBmb3IgYWxsIHRoZSBidWlsdC1pbiB3aW5kb3cgZnVu Y3Rpb25zLAogCSAqIHNvIHdlJ2xsIGp1c3QgZG8gdGhpcyBmb3Igbm93LgorCSAqCisJICogTW9y ZW92ZXIsIGlmIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQsIHdlIGNoYXJnZSB0aGUg REVGSU5FCisJICogZXhwcmVzc2lvbnMgb25jZSBwZXIgdHVwbGUgZm9yIGVhY2ggdmFyaWFibGUg dGhhdCBhcHBlYXJzIGluIFBBVFRFUk4uCiAJICovCisJaWYgKHdpbmNsYXVzZS0+cnBQYXR0ZXJu KQorCXsKKwkJTGlzdAkgICAqcGF0dGVybl92YXJzOworCQlRdWFsQ29zdAlkZWZjb3N0czsKKwor CQlwYXR0ZXJuX3ZhcnMgPSBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyh3aW5jbGF1c2UtPnJwUGF0 dGVybik7CisKKwkJZm9yZWFjaF9ub2RlKFN0cmluZywgcHYsIHBhdHRlcm5fdmFycykKKwkJewor CQkJY2hhcgkgICAqcHRuYW1lID0gc3RyVmFsKHB2KTsKKworCQkJZm9yZWFjaF9ub2RlKFRhcmdl dEVudHJ5LCBkZWYsIHdpbmNsYXVzZS0+ZGVmaW5lQ2xhdXNlKQorCQkJeworCQkJCWlmICghc3Ry Y21wKHB0bmFtZSwgZGVmLT5yZXNuYW1lKSkKKwkJCQl7CisJCQkJCWNvc3RfcXVhbF9ldmFsX25v ZGUoJmRlZmNvc3RzLCAoTm9kZSAqKSBkZWYtPmV4cHIsIHJvb3QpOworCQkJCQlzdGFydHVwX2Nv c3QgKz0gZGVmY29zdHMuc3RhcnR1cDsKKwkJCQkJdG90YWxfY29zdCArPSBkZWZjb3N0cy5wZXJf dHVwbGUgKiBpbnB1dF90dXBsZXM7CisJCQkJfQorCQkJfQorCQl9CisJCWxpc3RfZnJlZV9kZWVw KHBhdHRlcm5fdmFycyk7CisJfQorCiAJZm9yZWFjaChsYywgd2luZG93RnVuY3MpCiAJewogCQlX aW5kb3dGdW5jICp3ZnVuYyA9IGxmaXJzdF9ub2RlKFdpbmRvd0Z1bmMsIGxjKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vTWFrZWZpbGUKaW5kZXggODBlZjE2MmU0ODQuLjdlMDE2Nzc4OWQ4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9NYWtlZmlsZQpAQCAtMTksNiArMTksNyBAQCBPQkpTID0gXAog CXBsYW5hZ2cubyBcCiAJcGxhbm1haW4ubyBcCiAJcGxhbm5lci5vIFwKKwlycHIubyBcCiAJc2V0 cmVmcy5vIFwKIAlzdWJzZWxlY3QubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVw bGFuLmMKaW5kZXggZGU2YTE4M2RhNzkuLmNjYTQxMjZlNTExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0xNiw2ICsxNiw3IEBACiAgKi8KICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImFjY2Vzcy9z eXNhdHRyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2NsYXNzLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3ByZXAu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL3N1YnNlbGVjdC5oIgorI2luY2x1ZGUgIm9wdGltaXplci9ycHIuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvdGxpc3QuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgpAQCAtMjg4LDcgKzI5MCwxNCBAQCBzdGF0aWMgTWVt b2l6ZSAqbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBPaWQgKmhhc2hvcGVyYXRvcnMsCiBz dGF0aWMgV2luZG93QWdnICptYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xhdXNl ICp3YywKIAkJCQkJCQkJIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElkeCwg T2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAogCQkJCQkJCQkgaW50IG9y ZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9pZCAq b3JkQ29sbGF0aW9ucywKLQkJCQkJCQkJIExpc3QgKnJ1bkNvbmRpdGlvbiwgTGlzdCAqcXVhbCwg Ym9vbCB0b3BXaW5kb3csCisJCQkJCQkJCSBMaXN0ICpydW5Db25kaXRpb24sIFJQU2tpcFRvIHJw U2tpcFRvLAorCQkJCQkJCQkgUlBSUGF0dGVybiAqY29tcGlsZWRQYXR0ZXJuLAorCQkJCQkJCQkg TGlzdCAqZGVmaW5lQ2xhdXNlLAorCQkJCQkJCQkgQml0bWFwc2V0ICpkZWZpbmVNYXRjaFN0YXJ0 RGVwZW5kZW50LAorCQkJCQkJCQkgUlBSTmF2T2Zmc2V0S2luZCBuYXZNYXhPZmZzZXRLaW5kLCBp bnQ2NCBuYXZNYXhPZmZzZXQsCisJCQkJCQkJCSBib29sIGhhc0ZpcnN0TmF2LAorCQkJCQkJCQkg UlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQsIGludDY0IG5hdkZpcnN0T2Zmc2V0 LAorCQkJCQkJCQkgTGlzdCAqcXVhbCwgYm9vbCB0b3BXaW5kb3csCiAJCQkJCQkJCSBQbGFuICps ZWZ0dHJlZSk7CiBzdGF0aWMgR3JvdXAgKm1ha2VfZ3JvdXAoTGlzdCAqdGxpc3QsIExpc3QgKnF1 YWwsIGludCBudW1Hcm91cENvbHMsCiAJCQkJCQkgQXR0ck51bWJlciAqZ3JwQ29sSWR4LCBPaWQg KmdycE9wZXJhdG9ycywgT2lkICpncnBDb2xsYXRpb25zLApAQCAtMjQ1Nyw2ICsyNDY2LDMzNyBA QCBjcmVhdGVfbWlubWF4YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1pbk1heEFnZ1BhdGgg KmJlc3RfcGF0aCkKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIERlZmluZU1ldGFkYXRhQ29u dGV4dCAtIGNvbnRleHQgZm9yIGNvbXB1dGVfZGVmaW5lX21ldGFkYXRhIHdhbGtlci4KKyAqCisg KiBDb2xsZWN0cyB0aHJlZSBwaWVjZXMgb2YgbWV0YWRhdGEgZnJvbSB0aGUgREVGSU5FIGNsYXVz ZSBpbiBhIHNpbmdsZQorICogdHJlZSB3YWxrIHBlciB2YXJpYWJsZToKKyAqICAgLSBiYWNrd2Fy ZCByZWFjaCAoUFJFViwgTEFTVC13aXRoLW9mZnNldCwgY29tcG91bmQgUFJFVl9MQVNUL05FWFRf TEFTVCkKKyAqICAgLSBmb3J3YXJkLWZyb20tbWF0Y2gtc3RhcnQgcmVhY2ggKEZJUlNULCBjb21w b3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QpCisgKiAgIC0gcGVyLXZhcmlhYmxlIG1hdGNoX3N0 YXJ0IGRlcGVuZGVuY3kgKHZhcmlhYmxlcyBjb250YWluaW5nIEZJUlNULAorICogICAgIExBU1Qt d2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVC9QUkVWX0xBU1Qv CisgKiAgICAgTkVYVF9MQVNULXdpdGgtb2Zmc2V0IHJlcXVpcmUgcGVyLWNvbnRleHQgcmUtZXZh bHVhdGlvbikKKyAqCisgKiBUaGUgZHJpdmVyIHNldHMgY3VyVmFySWR4IHRvIHRoZSBpbmRleCBv ZiB0aGUgdmFyaWFibGUgYmVpbmcgd2Fsa2VkCisgKiBiZWZvcmUgZWFjaCBpbnZvY2F0aW9uOyB0 aGUgd2Fsa2VyIHVzZXMgaXQgdG8gcG9wdWxhdGUgbWF0Y2hTdGFydERlcGVuZGVudC4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgRGVmaW5lTWV0YWRhdGFDb250ZXh0Cit7CisJaW50NjQJCW1heE9mZnNl dDsJCS8qIG1heCBQUkVWL0xBU1QgYmFja3dhcmQgb2Zmc2V0ICg+PSAwKSAqLworCWJvb2wJCW1h eE5lZWRzRXZhbDsJLyogbm9uLWNvbnN0YW50IFBSRVYvTEFTVCBvZmZzZXQgZm91bmQgKi8KKwli b29sCQltYXhPdmVyZmxvdzsJLyogY29uc3RhbnQgb2Zmc2V0IG92ZXJmbG93IGRldGVjdGVkICov CisJaW50NjQJCWZpcnN0T2Zmc2V0OwkvKiBtaW4gRklSU1Qgb2Zmc2V0IChtYXkgYmUgbmVnYXRp dmUgZm9yCisJCQkJCQkJCSAqIFBSRVZfRklSU1QpICovCisJYm9vbAkJaGFzRmlyc3Q7CQkvKiBh bnkgRklSU1Qgbm9kZSBmb3VuZCAqLworCWJvb2wJCWZpcnN0TmVlZHNFdmFsOyAvKiBub24tY29u c3RhbnQgRklSU1Qgb2Zmc2V0IGZvdW5kICovCisJaW50CQkJY3VyVmFySWR4OwkJLyogREVGSU5F IHZhcmlhYmxlIGN1cnJlbnRseSBiZWluZyB3YWxrZWQgKi8KKwlCaXRtYXBzZXQgICptYXRjaFN0 YXJ0RGVwZW5kZW50OwkvKiB2YXJpYWJsZXMgdGhhdCBkZXBlbmQgb24KKwkJCQkJCQkJCQkgKiBt YXRjaF9zdGFydCAqLworfSBEZWZpbmVNZXRhZGF0YUNvbnRleHQ7CisKKy8qCisgKiBIZWxwZXI6 IGV4dHJhY3QgY29uc3RhbnQgb2Zmc2V0IGZyb20gYW4gZXhwcmVzc2lvbiwgaGFuZGxpbmcgTlVM TC9uZWdhdGl2ZS4KKyAqIElmIGV4cHIgaXMgTlVMTCwgcmV0dXJucyBkZWZhdWx0T2Zmc2V0Lgor ICogUmV0dXJucyB0cnVlIGlmIGNvbnN0YW50LCBmYWxzZSBpZiBub24tY29uc3RhbnQgKFBhcmFt LCBjYXN0LCBldGMuKS4KKyAqLworc3RhdGljIGJvb2wKK2V4dHJhY3RfY29uc3Rfb2Zmc2V0KEV4 cHIgKmV4cHIsIGludDY0IGRlZmF1bHRPZmZzZXQsIGludDY0ICpyZXN1bHQpCit7CisJaWYgKGV4 cHIgPT0gTlVMTCkKKwl7CisJCSpyZXN1bHQgPSBkZWZhdWx0T2Zmc2V0OworCQlyZXR1cm4gdHJ1 ZTsKKwl9CisKKwlpZiAoSXNBKGV4cHIsIENvbnN0KSkKKwl7CisJCUNvbnN0CSAgICpjID0gKENv bnN0ICopIGV4cHI7CisKKwkJaWYgKGMtPmNvbnN0aXNudWxsKQorCQkJKnJlc3VsdCA9IDA7CQkv KiBydW50aW1lIGVycm9yOyBzYWZlIHBsYWNlaG9sZGVyICovCisJCWVsc2UKKwkJeworCQkJKnJl c3VsdCA9IERhdHVtR2V0SW50NjQoYy0+Y29uc3R2YWx1ZSk7CisJCQlpZiAoKnJlc3VsdCA8IDAp CisJCQkJKnJlc3VsdCA9IDA7CS8qIHJ1bnRpbWUgZXJyb3I7IHNhZmUgcGxhY2Vob2xkZXIgKi8K KwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7CQkJCS8qIG5vbi1jb25z dGFudCAqLworfQorCisvKgorICogdmlzaXRfbmF2X3BsYW4KKyAqCQluYXZfdHJhdmVyc2FsX3dh bGtlciBjYWxsYmFjayAoTmF2VmlzaXRGbikgZm9yIHRoZSBwbGFubmVyIHNpZGUuCisgKgkJQXQg ZWFjaCBSUFJOYXZFeHByIGluIGEgREVGSU5FIGV4cHJlc3Npb24sIGNvbXB1dGVzOgorICoKKyAq CQkgIDEuIGJhY2t3YXJkIHJlYWNoIChtYXhPZmZzZXQpIGZvciB0dXBsZXN0b3JlIHRyaW06Cisg KgkJCSAtIFBSRVYodiwgTiksIExBU1QodiwgTikgICAgICAgICAgICAgIC0+IE4gKGRlZmF1bHQg MSkKKyAqCQkJIC0gY29tcG91bmQgUFJFVl9MQVNUKHYsIE4sIE0pICAgICAgICAgLT4gTiArIE0g KG92ZXJmbG93IC0+IG1heE92ZXJmbG93KQorICoJCQkgLSBjb21wb3VuZCBORVhUX0xBU1Qodiwg TiwgTSkgICAgICAgICAtPiBtYXgoTiAtIE0sIDApCisgKgorICoJCSAgMi4gZm9yd2FyZCByZWFj aCAoZmlyc3RPZmZzZXQpIGZvciB0dXBsZXN0b3JlIHRyaW06CisgKgkJCSAtIEZJUlNUKHYsIE4p ICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE4gKGRlZmF1bHQgMCkKKyAqCQkJIC0gY29tcG91 bmQgUFJFVl9GSVJTVCh2LCBOLCBNKSAgICAgICAgLT4gTiAtIE0gKG1heSBiZSBuZWdhdGl2ZSkK KyAqCQkJIC0gY29tcG91bmQgTkVYVF9GSVJTVCh2LCBOLCBNKSAgICAgICAgLT4gTiArIE0KKyAq CisgKgkJICAzLiBwZXItdmFyaWFibGUgbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeSBmb3IgYWJzb3Jw dGlvbiBzdXBwcmVzc2lvbjoKKyAqCQkJIG91dGVyIG5hdiBraW5kcyB0aGF0IHJlYWNoIG1hdGNo X3N0YXJ0IChGSVJTVCwgTEFTVC13aXRoLW9mZnNldCwKKyAqCQkJIFBSRVZfRklSU1QsIE5FWFRf RklSU1QsIFBSRVZfTEFTVC9ORVhUX0xBU1Qtd2l0aC1vZmZzZXQpIGFkZAorICoJCQkgY3VyVmFy SWR4IHRvIG1hdGNoU3RhcnREZXBlbmRlbnQuCisgKgorICogQ29uc3RhbnQgb2Zmc2V0cyBhcmUg ZXh0cmFjdGVkIHZpYSBleHRyYWN0X2NvbnN0X29mZnNldDsgbm9uLWNvbnN0YW50CisgKiBvZmZz ZXRzIHNldCBtYXhOZWVkc0V2YWwgLyBmaXJzdE5lZWRzRXZhbCBzbyB0aGUgZXhlY3V0b3IgY2Fu IHJlc29sdmUKKyAqIHRoZW0gYXQgaW5pdCB0aW1lIChzZWUgdmlzaXRfbmF2X2V4ZWMpLiAgQ2xh c3NpZmljYXRpb24gdXNlcyBvbmx5IHRoZQorICogb3V0ZXIgbmF2IGtpbmQ6IHBhcnNlciBuZXN0 aW5nIHJlc3RyaWN0aW9ucyBwcmV2ZW50IEZJUlNUL0xBU1QgaW5zaWRlCisgKiBhIFBSRVYvTkVY VCB2YWx1ZSBzdWJleHByZXNzaW9uLgorICovCitzdGF0aWMgdm9pZAordmlzaXRfbmF2X3BsYW4o TmF2VHJhdmVyc2FsICp0LCBSUFJOYXZFeHByICpuYXYpCit7CisJRGVmaW5lTWV0YWRhdGFDb250 ZXh0ICpjb250ZXh0ID0gKERlZmluZU1ldGFkYXRhQ29udGV4dCAqKSB0LT5kYXRhOworCisJLyoK KwkgKiBQYXJzZXIgZ3VhcmFudGVlOiBieSB0aGUgdGltZSB0aGUgcGxhbm5lciBzZWVzIGEgREVG SU5FIGV4cHJlc3Npb24sCisJICogY29tcG91bmQgbmVzdGluZyBoYXMgYmVlbiBmbGF0dGVuZWQg aW50byBhIHNpbmdsZSBSUFJOYXZFeHByIGFuZCBhbnkKKwkgKiBvdGhlciBSUFJOYXZFeHByIG5l c3RpbmcgaGFzIGJlZW4gcmVqZWN0ZWQuICBTbyBuYXYncyBkaXJlY3QgY2hpbGQKKwkgKiBmaWVs ZHMgYXJlIG5vdCB0aGVtc2VsdmVzIFJQUk5hdkV4cHIgbm9kZXMsIGFuZCBvdXRlci1raW5kIGRp c3BhdGNoCisJICogYmVsb3cgaXMgc3VmZmljaWVudC4KKwkgKi8KKwlBc3NlcnQobmF2LT5hcmcg PT0gTlVMTCB8fCAhSXNBKG5hdi0+YXJnLCBSUFJOYXZFeHByKSk7CisJQXNzZXJ0KG5hdi0+b2Zm c2V0X2FyZyA9PSBOVUxMIHx8ICFJc0EobmF2LT5vZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CisJ QXNzZXJ0KG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZyA9PSBOVUxMIHx8CisJCSAgICFJc0EobmF2 LT5jb21wb3VuZF9vZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CisKKwkvKgorCSAqIFNpbXBsZSBQ UkVWKHYsIE4pIGFuZCBMQVNUKHYsIE4pOiBiYWNrd2FyZCByZWFjaCBmcm9tIGN1cnJlbnRwb3Mu IExBU1QKKwkgKiB3aXRob3V0IG9mZnNldCA9IGN1cnJlbnRwb3MsIG5vIGJhY2t3YXJkIHJlYWNo LiBORVhUOiBmb3J3YXJkIG9ubHksCisJICogaXJyZWxldmFudCBmb3IgdHJpbS4KKwkgKi8KKwlp ZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFViB8fAorCQkobmF2LT5raW5kID09IFJQUl9OQVZf TEFTVCAmJiBuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkpCisJeworCQlpZiAoIWNvbnRleHQtPm1h eE5lZWRzRXZhbCkKKwkJeworCQkJaW50NjQJCW9mZnNldDsKKworCQkJLyoKKwkJCSAqIGRlZmF1 bHQgMSBpcyBmb3IgUFJFVjsgdGhlIGd1YXJkZWQgTEFTVCBzdWItY2FzZSBuZXZlciB1c2VzIGl0 LgorCQkJICovCisJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5vZmZzZXRfYXJnLCAx LCAmb2Zmc2V0KSkKKwkJCQljb250ZXh0LT5tYXhPZmZzZXQgPSBNYXgoY29udGV4dC0+bWF4T2Zm c2V0LCBvZmZzZXQpOworCQkJZWxzZQorCQkJCWNvbnRleHQtPm1heE5lZWRzRXZhbCA9IHRydWU7 CisJCX0KKwl9CisKKwkvKgorCSAqIFNpbXBsZSBGSVJTVCh2LCBOKTogZm9yd2FyZCByZWFjaCBm cm9tIG1hdGNoX3N0YXJ0LiBTbWFsbGVyIE4gbWVhbnMKKwkgKiBvbGRlciByb3dzIG5lZWRlZC4K KwkgKi8KKwlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfRklSU1QpCisJeworCQljb250ZXh0LT5o YXNGaXJzdCA9IHRydWU7CisKKwkJaWYgKCFjb250ZXh0LT5maXJzdE5lZWRzRXZhbCkKKwkJewor CQkJaW50NjQJCW9mZnNldDsKKworCQkJaWYgKGV4dHJhY3RfY29uc3Rfb2Zmc2V0KG5hdi0+b2Zm c2V0X2FyZywgMCwgJm9mZnNldCkpCisJCQkJY29udGV4dC0+Zmlyc3RPZmZzZXQgPSBNaW4oY29u dGV4dC0+Zmlyc3RPZmZzZXQsIG9mZnNldCk7CisJCQllbHNlCisJCQkJY29udGV4dC0+Zmlyc3RO ZWVkc0V2YWwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBDb21wb3VuZCBQUkVWX0xBU1Qg LyBORVhUX0xBU1Q6IGJhc2UgPSBjdXJyZW50cG9zLiBQUkVWX0xBU1QodiwgTiwgTSk6CisJICog dGFyZ2V0ID0gY3VycmVudHBvcyAtIE4gLSBNIC0+IGxvb2tiYWNrID0gTiArIE0gTkVYVF9MQVNU KHYsIE4sIE0pOgorCSAqIHRhcmdldCA9IGN1cnJlbnRwb3MgLSBOICsgTSAtPiBsb29rYmFjayA9 IG1heChOIC0gTSwgMCkKKwkgKi8KKwlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNU IHx8CisJCW5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfTEFTVCkKKwl7CisJCWlmICghY29udGV4 dC0+bWF4TmVlZHNFdmFsKQorCQl7CisJCQlpbnQ2NAkJaW5uZXI7CisJCQlpbnQ2NAkJb3V0ZXI7 CisJCQlpbnQ2NAkJcmVhY2g7CisKKwkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPm9m ZnNldF9hcmcsIDAsICZpbm5lcikgJiYKKwkJCQlleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPmNv bXBvdW5kX29mZnNldF9hcmcsIDEsICZvdXRlcikpCisJCQl7CisJCQkJaWYgKG5hdi0+a2luZCA9 PSBSUFJfTkFWX1BSRVZfTEFTVCkKKwkJCQl7CisJCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93 KGlubmVyLCBvdXRlciwgJnJlYWNoKSkKKwkJCQkJCWNvbnRleHQtPm1heE92ZXJmbG93ID0gdHJ1 ZTsKKwkJCQkJZWxzZQorCQkJCQkJY29udGV4dC0+bWF4T2Zmc2V0ID0gTWF4KGNvbnRleHQtPm1h eE9mZnNldCwgcmVhY2gpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlyZWFjaCA9IE1h eChpbm5lciAtIG91dGVyLCAwKTsKKwkJCQkJY29udGV4dC0+bWF4T2Zmc2V0ID0gTWF4KGNvbnRl eHQtPm1heE9mZnNldCwgcmVhY2gpOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCQljb250ZXh0 LT5tYXhOZWVkc0V2YWwgPSB0cnVlOworCQl9CisJfQorCisJLyoKKwkgKiBDb21wb3VuZCBQUkVW X0ZJUlNUIC8gTkVYVF9GSVJTVDogYmFzZSA9IG1hdGNoX3N0YXJ0LiBQUkVWX0ZJUlNUKHYsIE4s CisJICogTSk6IHRhcmdldCA9IG1hdGNoX3N0YXJ0ICsgTiAtIE0gTkVYVF9GSVJTVCh2LCBOLCBN KTogdGFyZ2V0ID0KKwkgKiBtYXRjaF9zdGFydCArIE4gKyBNIFRoZSBjb21iaW5lZCBvZmZzZXQg KE4rLy1NKSBmcm9tIG1hdGNoX3N0YXJ0IGNhbiBiZQorCSAqIG5lZ2F0aXZlLCBtZWFuaW5nIHJv d3MgYmVmb3JlIG1hdGNoX3N0YXJ0IGFyZSBuZWVkZWQuCisJICovCisJaWYgKG5hdi0+a2luZCA9 PSBSUFJfTkFWX1BSRVZfRklSU1QgfHwKKwkJbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJT VCkKKwl7CisJCWNvbnRleHQtPmhhc0ZpcnN0ID0gdHJ1ZTsKKworCQlpZiAoIWNvbnRleHQtPmZp cnN0TmVlZHNFdmFsKQorCQl7CisJCQlpbnQ2NAkJaW5uZXI7CisJCQlpbnQ2NAkJb3V0ZXI7CisJ CQlpbnQ2NAkJcmVhY2g7CisKKwkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPm9mZnNl dF9hcmcsIDAsICZpbm5lcikgJiYKKwkJCQlleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPmNvbXBv dW5kX29mZnNldF9hcmcsIDEsICZvdXRlcikpCisJCQl7CisJCQkJaWYgKG5hdi0+a2luZCA9PSBS UFJfTkFWX1BSRVZfRklSU1QpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiByZWFjaCA9IGlubmVy IC0gb3V0ZXIuICBCb3RoIGFyZSBub24tbmVnYXRpdmUsIHNvIHRoZQorCQkJCQkgKiByZXN1bHQg Pj0gLVBHX0lOVDY0X01BWCwgd2hpY2ggY2Fubm90IHVuZGVyZmxvdyBpbnQ2NC4KKwkJCQkJICog Tm8gb3ZlcmZsb3cgY2hlY2sgbmVlZGVkLgorCQkJCQkgKi8KKwkJCQkJcmVhY2ggPSBpbm5lciAt IG91dGVyOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBORVhUX0ZJ UlNUOiByZWFjaCA9IGlubmVyICsgb3V0ZXIuICBUaGlzIGNhbiBvdmVyZmxvdywKKwkJCQkJICog YnV0IHRoZSByZXN1bHQgaXMgYWx3YXlzID49IDAsIHNvIGl0IG5ldmVyIHVwZGF0ZXMKKwkJCQkJ ICogZmlyc3RPZmZzZXQgKHdoaWNoIHRyYWNrcyB0aGUgbWluaW11bSkuICBDbGFtcCB0bworCQkJ CQkgKiBQR19JTlQ2NF9NQVggb24gb3ZlcmZsb3cuCisJCQkJCSAqLworCQkJCQlpZiAocGdfYWRk X3M2NF9vdmVyZmxvdyhpbm5lciwgb3V0ZXIsICZyZWFjaCkpCisJCQkJCQlyZWFjaCA9IFBHX0lO VDY0X01BWDsKKwkJCQl9CisKKwkJCQljb250ZXh0LT5maXJzdE9mZnNldCA9IE1pbihjb250ZXh0 LT5maXJzdE9mZnNldCwgcmVhY2gpOworCQkJfQorCQkJZWxzZQorCQkJCWNvbnRleHQtPmZpcnN0 TmVlZHNFdmFsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogTWF0Y2gtc3RhcnQgZGVwZW5k ZW5jeTogY2xhc3NpZnkgdGhlIG91dGVyIG5hdiBraW5kLiAgQSBjb25zdGFudAorCSAqIExBU1Qo eCwgMCkgaXMgY29uc2VydmF0aXZlbHkgaW5jbHVkZWQgKG9mZnNldF9hcmcgaXMgYSBub24tTlVM TCBDb25zdCksCisJICogY2F1c2luZyBhIGhhcm1sZXNzIGV4dHJhIHJlLWV2YWx1YXRpb247IHNp bmNlIExBU1QoeCwgMCkgaXMgdGhlIGN1cnJlbnQKKwkgKiByb3csIGl0cyByZXN1bHQgaXMgaW5k ZXBlbmRlbnQgb2YgdGhlIG1hdGNoIHN0YXJ0LgorCSAqLworCWlmIChuYXYtPmtpbmQgPT0gUlBS X05BVl9GSVJTVCB8fAorCQkobmF2LT5raW5kID09IFJQUl9OQVZfTEFTVCAmJiBuYXYtPm9mZnNl dF9hcmcgIT0gTlVMTCkgfHwKKwkJbmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCB8fAor CQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0ZJUlNUIHx8CisJCSgobmF2LT5raW5kID09IFJQ Ul9OQVZfUFJFVl9MQVNUIHx8CisJCSAgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9MQVNUKSAm JgorCQkgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpKQorCQljb250ZXh0LT5tYXRjaFN0YXJ0RGVw ZW5kZW50ID0KKwkJCWJtc19hZGRfbWVtYmVyKGNvbnRleHQtPm1hdGNoU3RhcnREZXBlbmRlbnQs CisJCQkJCQkgICBjb250ZXh0LT5jdXJWYXJJZHgpOworfQorCisvKgorICogY29tcHV0ZV9kZWZp bmVfbWV0YWRhdGEKKyAqCQlDb21wdXRlIG5hdmlnYXRpb24gb2Zmc2V0cyBhbmQgbWF0Y2hfc3Rh cnQgZGVwZW5kZW5jeSBmb3IgdGhlCisgKgkJREVGSU5FIGNsYXVzZSBpbiBhIHNpbmdsZSBwYXNz IHBlciB2YXJpYWJsZS4KKyAqCisgKiBXYWxrcyBlYWNoIERFRklORSB2YXJpYWJsZSBleHByZXNz aW9uIG9uY2UsIGNvbXB1dGluZzoKKyAqICAgLSBtYXhPZmZzZXQ6IG1heCBiYWNrd2FyZCByZWFj aCBmcm9tIFBSRVYsIExBU1Qtd2l0aC1vZmZzZXQsCisgKiAgICAgY29tcG91bmQgUFJFVl9MQVNU L05FWFRfTEFTVAorICogICAtIGhhc0ZpcnN0L2ZpcnN0T2Zmc2V0OiBtaW4gZm9yd2FyZC1mcm9t LW1hdGNoLXN0YXJ0IHJlYWNoIGZyb20KKyAqICAgICBGSVJTVCwgY29tcG91bmQgUFJFVl9GSVJT VC9ORVhUX0ZJUlNUCisgKiAgIC0gbWF0Y2hTdGFydERlcGVuZGVudDogYml0bWFwc2V0IG9mIHZh cmlhYmxlIGluZGljZXMgd2hvc2UKKyAqICAgICBleHByZXNzaW9ucyBjb250YWluIG5hdmlnYXRp b24gdGhhdCBkZXBlbmRzIG9uIG1hdGNoX3N0YXJ0CisgKiAgICAgKEZJUlNULCBMQVNULXdpdGgt b2Zmc2V0LCBvciBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QvCisgKiAgICAgUFJFVl9M QVNUL05FWFRfTEFTVC13aXRoLW9mZnNldCkuICBTdWNoIHZhcmlhYmxlcyByZXF1aXJlCisgKiAg ICAgcGVyLWNvbnRleHQgcmUtZXZhbHVhdGlvbiBkdXJpbmcgTkZBIHByb2Nlc3NpbmcuCisgKi8K K3N0YXRpYyB2b2lkCitjb21wdXRlX2RlZmluZV9tZXRhZGF0YShMaXN0ICpkZWZpbmVDbGF1c2Us CisJCQkJCQlSUFJOYXZPZmZzZXRLaW5kICptYXhLaW5kLCBpbnQ2NCAqbWF4UmVzdWx0LAorCQkJ CQkJYm9vbCAqaGFzRmlyc3QsCisJCQkJCQlSUFJOYXZPZmZzZXRLaW5kICpmaXJzdEtpbmQsIGlu dDY0ICpmaXJzdFJlc3VsdCwKKwkJCQkJCUJpdG1hcHNldCAqKm1hdGNoU3RhcnREZXBlbmRlbnQp Cit7CisJRGVmaW5lTWV0YWRhdGFDb250ZXh0IGN0eDsKKwlOYXZUcmF2ZXJzYWwgdHJhdjsKKwor CWN0eC5tYXhPZmZzZXQgPSAwOworCWN0eC5tYXhOZWVkc0V2YWwgPSBmYWxzZTsKKwljdHgubWF4 T3ZlcmZsb3cgPSBmYWxzZTsKKwljdHguZmlyc3RPZmZzZXQgPSBQR19JTlQ2NF9NQVg7IC8qIHNl bnRpbmVsOiBubyBGSVJTVCBmb3VuZCB5ZXQgKi8KKwljdHguaGFzRmlyc3QgPSBmYWxzZTsKKwlj dHguZmlyc3ROZWVkc0V2YWwgPSBmYWxzZTsKKwljdHguY3VyVmFySWR4ID0gMDsKKwljdHgubWF0 Y2hTdGFydERlcGVuZGVudCA9IE5VTEw7CisKKwl0cmF2LnZpc2l0ID0gdmlzaXRfbmF2X3BsYW47 CisJdHJhdi5kYXRhID0gJmN0eDsKKworCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIGRl ZmluZUNsYXVzZSkKKwl7CisJCW5hdl90cmF2ZXJzYWxfd2Fsa2VyKChOb2RlICopIHRlLT5leHBy LCAmdHJhdik7CisJCWN0eC5jdXJWYXJJZHgrKzsKKwl9CisKKwkqbWF0Y2hTdGFydERlcGVuZGVu dCA9IGN0eC5tYXRjaFN0YXJ0RGVwZW5kZW50OworCisJLyogTWF4IGJhY2t3YXJkIG9mZnNldCAq LworCWlmIChjdHgubWF4T3ZlcmZsb3cpCisJeworCQkqbWF4S2luZCA9IFJQUl9OQVZfT0ZGU0VU X1JFVEFJTl9BTEw7CisJCSptYXhSZXN1bHQgPSAwOworCX0KKwllbHNlIGlmIChjdHgubWF4TmVl ZHNFdmFsKQorCXsKKwkJKm1heEtpbmQgPSBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMOworCQkq bWF4UmVzdWx0ID0gMDsKKwl9CisJZWxzZQorCXsKKwkJKm1heEtpbmQgPSBSUFJfTkFWX09GRlNF VF9GSVhFRDsKKwkJKm1heFJlc3VsdCA9IGN0eC5tYXhPZmZzZXQ7CisJfQorCisJLyogRmlyc3Qg b2Zmc2V0IChjYW4gYmUgbmVnYXRpdmUgZm9yIGNvbXBvdW5kIFBSRVZfRklSU1QpICovCisJKmhh c0ZpcnN0ID0gY3R4Lmhhc0ZpcnN0OworCWlmIChjdHguaGFzRmlyc3QpCisJeworCQlpZiAoY3R4 LmZpcnN0TmVlZHNFdmFsKQorCQl7CisJCQkqZmlyc3RLaW5kID0gUlBSX05BVl9PRkZTRVRfTkVF RFNfRVZBTDsKKwkJCSpmaXJzdFJlc3VsdCA9IDA7CisJCX0KKwkJZWxzZQorCQl7CisJCQkqZmly c3RLaW5kID0gUlBSX05BVl9PRkZTRVRfRklYRUQ7CisJCQkqZmlyc3RSZXN1bHQgPSBjdHguZmly c3RPZmZzZXQ7IC8qIG1heSBiZSBuZWdhdGl2ZTsgUEdfSU5UNjRfTUFYCisJCQkJCQkJCQkJCSAq IGlmIG92ZXJmbG93ZWQgKi8KKwkJfQorCX0KKwllbHNlCisJeworCQkqZmlyc3RLaW5kID0gUlBS X05BVl9PRkZTRVRfRklYRUQ7CisJCSpmaXJzdFJlc3VsdCA9IDA7CisJfQorfQorCiAvKgogICog Y3JlYXRlX3dpbmRvd2FnZ19wbGFuCiAgKgpAQCAtMjQ4MSw2ICsyODIxLDE2IEBAIGNyZWF0ZV93 aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRo KQogCU9pZAkJICAgKm9yZE9wZXJhdG9yczsKIAlPaWQJCSAgICpvcmRDb2xsYXRpb25zOwogCUxp c3RDZWxsICAgKmxjOworCUxpc3QJICAgKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsKKwlMaXN0 CSAgICpmaWx0ZXJlZERlZmluZUNsYXVzZSA9IE5JTDsKKwlSUFJQYXR0ZXJuICpjb21waWxlZFBh dHRlcm4gPSBOVUxMOworCUJpdG1hcHNldCAgKm1hdGNoU3RhcnREZXBlbmRlbnQgPSBOVUxMOwor CVJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVE OworCWludDY0CQluYXZNYXhPZmZzZXQgPSAwOworCWJvb2wJCWhhc0ZpcnN0TmF2ID0gZmFsc2U7 CisJUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9G SVhFRDsKKwlpbnQ2NAkJbmF2Rmlyc3RPZmZzZXQgPSAwOworCiAKIAkvKgogCSAqIENob2ljZSBv ZiB0bGlzdCBoZXJlIGlzIG1vdGl2YXRlZCBieSB0aGUgZmFjdCB0aGF0IFdpbmRvd0FnZyB3aWxs IGJlCkBAIC0yNTMxLDYgKzI4ODEsMzYgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJ bmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCW9yZE51bUNvbHMrKzsKIAl9 CiAKKwkvKiBCdWlsZCBSUFIgcGF0dGVybiBhbmQgZGVmaW5lVmFyaWFibGVMaXN0ICovCisJaWYg KHdjLT5ycFBhdHRlcm4pCisJeworCQkvKgorCQkgKiBCdWlsZCBkZWZpbmVWYXJpYWJsZUxpc3Qg ZnJvbSBkZWZpbmVDbGF1c2UuICBUaGUgcGFyc2VyIGFscmVhZHkKKwkJICogcmVqZWN0cyBERUZJ TkUgdmFyaWFibGVzIG5vdCB1c2VkIGluIFBBVFRFUk4sIHNvIG5vIGZpbHRlcmluZyBpcworCQkg KiBuZWVkZWQuCisJCSAqLworCQlidWlsZERlZmluZVZhcmlhYmxlTGlzdCh3Yy0+ZGVmaW5lQ2xh dXNlLCAmZGVmaW5lVmFyaWFibGVMaXN0KTsKKwkJZmlsdGVyZWREZWZpbmVDbGF1c2UgPSB3Yy0+ ZGVmaW5lQ2xhdXNlOworCisJCS8qCisJCSAqIFdhbGsgREVGSU5FIG9uY2U6IGNvbGxlY3QgbmF2 IG9mZnNldHMgKGZvciB0dXBsZXN0b3JlIHRyaW0pIGFuZCB0aGUKKwkJICogYml0bWFwc2V0IG9m IG1hdGNoX3N0YXJ0LWRlcGVuZGVudCB2YXJpYWJsZXMgKGZvciBhYnNvcnB0aW9uCisJCSAqIHN1 cHByZXNzaW9uIGluIGJ1aWxkUlBSUGF0dGVybikuCisJCSAqLworCQljb21wdXRlX2RlZmluZV9t ZXRhZGF0YSh3Yy0+ZGVmaW5lQ2xhdXNlLAorCQkJCQkJCQkmbmF2TWF4T2Zmc2V0S2luZCwgJm5h dk1heE9mZnNldCwKKwkJCQkJCQkJJmhhc0ZpcnN0TmF2LAorCQkJCQkJCQkmbmF2Rmlyc3RPZmZz ZXRLaW5kLCAmbmF2Rmlyc3RPZmZzZXQsCisJCQkJCQkJCSZtYXRjaFN0YXJ0RGVwZW5kZW50KTsK KworCQkvKiBDb21waWxlIGFuZCBvcHRpbWl6ZSBSUFIgcGF0dGVybnMgKi8KKwkJY29tcGlsZWRQ YXR0ZXJuID0gYnVpbGRSUFJQYXR0ZXJuKHdjLT5ycFBhdHRlcm4sCisJCQkJCQkJCQkJICBkZWZp bmVWYXJpYWJsZUxpc3QsCisJCQkJCQkJCQkJICB3Yy0+cnBTa2lwVG8sCisJCQkJCQkJCQkJICB3 Yy0+ZnJhbWVPcHRpb25zLAorCQkJCQkJCQkJCSAgIWJtc19pc19lbXB0eShtYXRjaFN0YXJ0RGVw ZW5kZW50KSk7CisJfQorCiAJLyogQW5kIGZpbmFsbHkgd2UgY2FuIG1ha2UgdGhlIFdpbmRvd0Fn ZyBub2RlICovCiAJcGxhbiA9IG1ha2Vfd2luZG93YWdnKHRsaXN0LAogCQkJCQkJICB3YywKQEAg LTI1NDMsNiArMjkyMywxMyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCSAgb3JkT3BlcmF0b3JzLAogCQkJ CQkJICBvcmRDb2xsYXRpb25zLAogCQkJCQkJICBiZXN0X3BhdGgtPnJ1bkNvbmRpdGlvbiwKKwkJ CQkJCSAgd2MtPnJwU2tpcFRvLAorCQkJCQkJICBjb21waWxlZFBhdHRlcm4sCisJCQkJCQkgIGZp bHRlcmVkRGVmaW5lQ2xhdXNlLAorCQkJCQkJICBtYXRjaFN0YXJ0RGVwZW5kZW50LAorCQkJCQkJ ICBuYXZNYXhPZmZzZXRLaW5kLCBuYXZNYXhPZmZzZXQsCisJCQkJCQkgIGhhc0ZpcnN0TmF2LAor CQkJCQkJICBuYXZGaXJzdE9mZnNldEtpbmQsIG5hdkZpcnN0T2Zmc2V0LAogCQkJCQkJICBiZXN0 X3BhdGgtPnF1YWwsCiAJCQkJCQkgIGJlc3RfcGF0aC0+dG9wd2luZG93LAogCQkJCQkJICBzdWJw bGFuKTsKQEAgLTY2MTMsNyArNzAwMCwxNCBAQCBzdGF0aWMgV2luZG93QWdnICoKIG1ha2Vfd2lu ZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJICAgaW50IHBhcnROdW1D b2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsIE9pZCAqcGFy dENvbGxhdGlvbnMsCiAJCQkgICBpbnQgb3JkTnVtQ29scywgQXR0ck51bWJlciAqb3JkQ29sSWR4 LCBPaWQgKm9yZE9wZXJhdG9ycywgT2lkICpvcmRDb2xsYXRpb25zLAotCQkJICAgTGlzdCAqcnVu Q29uZGl0aW9uLCBMaXN0ICpxdWFsLCBib29sIHRvcFdpbmRvdywgUGxhbiAqbGVmdHRyZWUpCisJ CQkgICBMaXN0ICpydW5Db25kaXRpb24sIFJQU2tpcFRvIHJwU2tpcFRvLAorCQkJICAgUlBSUGF0 dGVybiAqY29tcGlsZWRQYXR0ZXJuLAorCQkJICAgTGlzdCAqZGVmaW5lQ2xhdXNlLAorCQkJICAg Qml0bWFwc2V0ICpkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50LAorCQkJICAgUlBSTmF2T2Zmc2V0 S2luZCBuYXZNYXhPZmZzZXRLaW5kLCBpbnQ2NCBuYXZNYXhPZmZzZXQsCisJCQkgICBib29sIGhh c0ZpcnN0TmF2LAorCQkJICAgUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQsIGlu dDY0IG5hdkZpcnN0T2Zmc2V0LAorCQkJICAgTGlzdCAqcXVhbCwgYm9vbCB0b3BXaW5kb3csIFBs YW4gKmxlZnR0cmVlKQogewogCVdpbmRvd0FnZyAgKm5vZGUgPSBtYWtlTm9kZShXaW5kb3dBZ2cp OwogCVBsYW4JICAgKnBsYW4gPSAmbm9kZS0+cGxhbjsKQEAgLTY2NDAsNiArNzAzNCwyMiBAQCBt YWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xhdXNlICp3YywKIAlub2RlLT5pblJh bmdlQXNjID0gd2MtPmluUmFuZ2VBc2M7CiAJbm9kZS0+aW5SYW5nZU51bGxzRmlyc3QgPSB3Yy0+ aW5SYW5nZU51bGxzRmlyc3Q7CiAJbm9kZS0+dG9wV2luZG93ID0gdG9wV2luZG93OworCW5vZGUt PnJwU2tpcFRvID0gcnBTa2lwVG87CisKKwkvKiBTdG9yZSBjb21waWxlZCBwYXR0ZXJuIGZvciBO RkEgZXhlY3V0aW9uICovCisJbm9kZS0+cnBQYXR0ZXJuID0gY29tcGlsZWRQYXR0ZXJuOworCisJ bm9kZS0+ZGVmaW5lQ2xhdXNlID0gZGVmaW5lQ2xhdXNlOworCisJLyogU3RvcmUgcHJlLWNvbXB1 dGVkIG1hdGNoX3N0YXJ0IGRlcGVuZGVuY3kgYml0bWFwc2V0ICovCisJbm9kZS0+ZGVmaW5lTWF0 Y2hTdGFydERlcGVuZGVudCA9IGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQ7CisKKwkvKiBTdG9y ZSBwcmUtY29tcHV0ZWQgbmF2IG9mZnNldHMgZm9yIHR1cGxlc3RvcmUgdHJpbSBvcHRpbWl6YXRp b24gKi8KKwlub2RlLT5uYXZNYXhPZmZzZXRLaW5kID0gbmF2TWF4T2Zmc2V0S2luZDsKKwlub2Rl LT5uYXZNYXhPZmZzZXQgPSBuYXZNYXhPZmZzZXQ7CisJbm9kZS0+aGFzRmlyc3ROYXYgPSBoYXNG aXJzdE5hdjsKKwlub2RlLT5uYXZGaXJzdE9mZnNldEtpbmQgPSBuYXZGaXJzdE9mZnNldEtpbmQ7 CisJbm9kZS0+bmF2Rmlyc3RPZmZzZXQgPSBuYXZGaXJzdE9mZnNldDsKIAogCXBsYW4tPnRhcmdl dGxpc3QgPSB0bGlzdDsKIAlwbGFuLT5sZWZ0dHJlZSA9IGxlZnR0cmVlOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9tZXNvbi5idWlsZAppbmRleCBjNTY1YjJhZGJjYy4uNWIyMzgxY2Q3NzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL21lc29uLmJ1aWxkCkBAIC03LDYgKzcsNyBAQCBiYWNr ZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwbGFuYWdnLmMnLAogICAncGxhbm1haW4uYycsCiAg ICdwbGFubmVyLmMnLAorICAncnByLmMnLAogICAnc2V0cmVmcy5jJywKICAgJ3N1YnNlbGVjdC5j JywKICkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBmNDY4OWU3YzlmOC4u ZDIwMDE1Y2Q4NjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTQ5LDYg KzQ5LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm1haW4uaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvcGxhbm5lci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCisjaW5jbHVkZSAi b3B0aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9zdWJzZWxlY3QuaCIKICNpbmNs dWRlICJvcHRpbWl6ZXIvdGxpc3QuaCIKICNpbmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgpAQCAt MTA0OCwxMSArMTA0OSwyNiBAQCBzdWJxdWVyeV9wbGFubmVyKFBsYW5uZXJHbG9iYWwgKmdsb2Is IFF1ZXJ5ICpwYXJzZSwgY2hhciAqcGxhbl9uYW1lLAogCXsKIAkJV2luZG93Q2xhdXNlICp3YyA9 IGxmaXJzdF9ub2RlKFdpbmRvd0NsYXVzZSwgbCk7CiAKKwkJLyoKKwkJICogUmVqZWN0IHZvbGF0 aWxlIGZ1bmN0aW9ucyAoYW5kIHNlcXVlbmNlIG9wZXJhdGlvbnMpIGluIGFuIFJQUgorCQkgKiBE RUZJTkUgY2xhdXNlLiAgVGhpcyBpcyBkb25lIGhlcmUsIG5vdCBkdXJpbmcgcGFyc2UgYW5hbHlz aXMsIHRvCisJCSAqIGZvbGxvdyB0aGUgY29udmVudGlvbiBvZiBub3QgY2hlY2tpbmcgZXhwcmVz c2lvbiB2b2xhdGlsaXR5IHdoaWxlCisJCSAqIHBhcnNpbmc7IGRlYnVnX3F1ZXJ5X3N0cmluZyBz dGlsbCBsZXRzIHVzIHJlcG9ydCB0aGUgb2ZmZW5kaW5nCisJCSAqIGxvY2F0aW9uLiAgRXZlcnkg d2luZG93IGNsYXVzZSBpcyB2aXNpdGVkLCBpbmNsdWRpbmcgb25lcyBub3QgdXNlZAorCQkgKiBi eSBhbnkgT1ZFUiwgc28gdGhlIGNoZWNrIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgd2luZG93IHN1 cnZpdmluZworCQkgKiBzZWxlY3RfYWN0aXZlX3dpbmRvd3MoKS4KKwkJICovCisJCWlmICh3Yy0+ cnBQYXR0ZXJuICYmIHdjLT5kZWZpbmVDbGF1c2UpCisJCQl2YWxpZGF0ZV9ycHJfZGVmaW5lX3Zv bGF0aWxpdHkod2MtPmRlZmluZUNsYXVzZSk7CisKIAkJLyogcGFydGl0aW9uQ2xhdXNlL29yZGVy Q2xhdXNlIGFyZSBzb3J0L2dyb3VwIGV4cHJlc3Npb25zICovCiAJCXdjLT5zdGFydE9mZnNldCA9 IHByZXByb2Nlc3NfZXhwcmVzc2lvbihyb290LCB3Yy0+c3RhcnRPZmZzZXQsCiAJCQkJCQkJCQkJ CQlFWFBSS0lORF9MSU1JVCk7CiAJCXdjLT5lbmRPZmZzZXQgPSBwcmVwcm9jZXNzX2V4cHJlc3Np b24ocm9vdCwgd2MtPmVuZE9mZnNldCwKIAkJCQkJCQkJCQkJICBFWFBSS0lORF9MSU1JVCk7CisJ CXdjLT5kZWZpbmVDbGF1c2UgPSAoTGlzdCAqKSBwcmVwcm9jZXNzX2V4cHJlc3Npb24ocm9vdCwK KwkJCQkJCQkJCQkJCQkJICAoTm9kZSAqKSB3Yy0+ZGVmaW5lQ2xhdXNlLAorCQkJCQkJCQkJCQkJ CQkgIEVYUFJLSU5EX1RBUkdFVCk7CiAJfQogCiAJcGFyc2UtPmxpbWl0T2Zmc2V0ID0gcHJlcHJv Y2Vzc19leHByZXNzaW9uKHJvb3QsIHBhcnNlLT5saW1pdE9mZnNldCwKQEAgLTYxNjYsNiArNjE4 MiwxNCBAQCBvcHRpbWl6ZV93aW5kb3dfY2xhdXNlcyhQbGFubmVySW5mbyAqcm9vdCwgV2luZG93 RnVuY0xpc3RzICp3Zmxpc3RzKQogCQlpZiAod2ZsaXN0cy0+d2luZG93RnVuY3Nbd2MtPndpbnJl Zl0gPT0gTklMKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogSWYgYSBERUZJTkUgY2xhdXNl IGV4aXN0cywgZG8gbm90IGxldCBzdXBwb3J0IGZ1bmN0aW9ucyByZXBsYWNlIHRoZQorCQkgKiBm cmFtZSB3aXRoIGEgbm9uLVJQUi1jb21wYXRpYmxlIG9uZS4gIFJQUiB3aW5kb3dzIHJlcXVpcmUg Uk9XUworCQkgKiBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAuLi4KKwkJICovCisJCWlmICh3Yy0+ ZGVmaW5lQ2xhdXNlICE9IE5JTCkKKwkJCWNvbnRpbnVlOworCiAJCWZvcmVhY2gobGMyLCB3Zmxp c3RzLT53aW5kb3dGdW5jc1t3Yy0+d2lucmVmXSkKIAkJewogCQkJU3VwcG9ydFJlcXVlc3RPcHRp bWl6ZVdpbmRvd0NsYXVzZSByZXE7CkBAIC02MjQzLDEzICs2MjY3LDIwIEBAIG9wdGltaXplX3dp bmRvd19jbGF1c2VzKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dGdW5jTGlzdHMgKndmbGlzdHMp CiAKIAkJCQkvKgogCQkJCSAqIFBlcmZvcm0gdGhlIHNhbWUgZHVwbGljYXRlIGNoZWNrIHRoYXQg aXMgZG9uZSBpbgotCQkJCSAqIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsLgorCQkJCSAqIHRyYW5z Zm9ybVdpbmRvd0Z1bmNDYWxsLiB3YyBpcyBuZXZlciBhbiBSUFIgY2xhdXNlIGhlcmUKKwkJCQkg KiAodGhvc2UgYXJlIHNraXBwZWQgYWJvdmUpLCBhbmQgYW4gUlBSIGV4aXN0aW5nX3djIGRpZmZl cnMKKwkJCQkgKiBpbiBpdHMgZnJhbWUgb3B0aW9ucyBhbnl3YXksIHNvIHRoZSBSUFItcmVsYXRl ZCBjb21wYXJpc29ucworCQkJCSAqIGFyZSBhIGRlZmVuc2l2ZSBiYWNrc3RvcCBmb3IgcGFyaXR5 LgogCQkJCSAqLwogCQkJCWlmIChlcXVhbCh3Yy0+cGFydGl0aW9uQ2xhdXNlLCBleGlzdGluZ193 Yy0+cGFydGl0aW9uQ2xhdXNlKSAmJgogCQkJCQllcXVhbCh3Yy0+b3JkZXJDbGF1c2UsIGV4aXN0 aW5nX3djLT5vcmRlckNsYXVzZSkgJiYKIAkJCQkJd2MtPmZyYW1lT3B0aW9ucyA9PSBleGlzdGlu Z193Yy0+ZnJhbWVPcHRpb25zICYmCiAJCQkJCWVxdWFsKHdjLT5zdGFydE9mZnNldCwgZXhpc3Rp bmdfd2MtPnN0YXJ0T2Zmc2V0KSAmJgotCQkJCQllcXVhbCh3Yy0+ZW5kT2Zmc2V0LCBleGlzdGlu Z193Yy0+ZW5kT2Zmc2V0KSkKKwkJCQkJZXF1YWwod2MtPmVuZE9mZnNldCwgZXhpc3Rpbmdfd2Mt PmVuZE9mZnNldCkgJiYKKwkJCQkJd2MtPnJwU2tpcFRvID09IGV4aXN0aW5nX3djLT5ycFNraXBU byAmJgorCQkJCQl3Yy0+aW5pdGlhbCA9PSBleGlzdGluZ193Yy0+aW5pdGlhbCAmJgorCQkJCQll cXVhbCh3Yy0+ZGVmaW5lQ2xhdXNlLCBleGlzdGluZ193Yy0+ZGVmaW5lQ2xhdXNlKSAmJgorCQkJ CQllcXVhbCh3Yy0+cnBQYXR0ZXJuLCBleGlzdGluZ193Yy0+cnBQYXR0ZXJuKSkKIAkJCQl7CiAJ CQkJCUxpc3RDZWxsICAgKmxjNDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTc1Nzc3YThmZmMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwpAQCAtMCwwICsxLDIwOTAgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHJwci5jCisgKgkgIFJvdyBQYXR0ZXJuIFJlY29n bml0aW9uIHBhdHRlcm4gY29tcGlsYXRpb24gZm9yIHBsYW5uZXIKKyAqCisgKiBUaGlzIGZpbGUg Y29udGFpbnMgZnVuY3Rpb25zIGZvciBvcHRpbWl6aW5nIFJQUiBwYXR0ZXJuIEFTVCBhbmQKKyAq IGNvbXBpbGluZyBpdCB0byBhIGZsYXQgZWxlbWVudCBhcnJheSBmb3IgTkZBIGV4ZWN1dGlvbiBi eSBXaW5kb3dBZ2cuCisgKgorICogS2V5IGNvbXBvbmVudHM6CisgKiAgIDEuIFBhdHRlcm4gT3B0 aW1pemF0aW9uOiBTaW1wbGlmaWVzIHBhdHRlcm5zIGJlZm9yZSBjb21waWxhdGlvbgorICogICAg ICAoZS5nLiwgZmxhdHRlbiBuZXN0ZWQgU0VRL0FMVCwgbWVyZ2UgY29uc2VjdXRpdmUgdmFycykK KyAqICAgMi4gUGF0dGVybiBDb21waWxhdGlvbjogQ29udmVydHMgQVNUIHRvIGZsYXQgZWxlbWVu dCBhcnJheSBmb3IgTkZBCisgKiAgIDMuIEFic29ycHRpb24gQW5hbHlzaXM6IENvbXB1dGVzIGZs YWdzIGZvciBPKG5eMiktPk8obikgb3B0aW1pemF0aW9uCisgKgorICogQ29udGV4dCBBYnNvcnB0 aW9uIE9wdGltaXphdGlvbjoKKyAqICAgV2hlbiBhIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBncmVl ZHkgdW5ib3VuZGVkIGVsZW1lbnQgKGUuZy4sIEErIG9yIChBIEIpKyksCisgKiAgIG5ld2VyIGNv bnRleHRzIGNhbm5vdCBwcm9kdWNlIGxvbmdlciBtYXRjaGVzIHRoYW4gb2xkZXIgY29udGV4dHMu CisgKiAgIEJ5IGFic29yYmluZyAoZWxpbWluYXRpbmcpIHJlZHVuZGFudCBuZXdlciBjb250ZXh0 cywgd2UgcmVkdWNlCisgKiAgIGNvbXBsZXhpdHkgZnJvbSBPKG5eMikgdG8gTyhuKSBmb3IgcGF0 dGVybnMgbGlrZSBBKyBCLgorICoKKyAqICAgVGhlIGFic29ycHRpb24gYW5hbHlzaXMgdXNlcyB0 d28gZWxlbWVudCBmbGFnczoKKyAqICAgLSBSUFJfRUxFTV9BQlNPUkJBQkxFOiBtYXJrcyBXSEVS RSB0byBjb21wYXJlIChqdWRnbWVudCBwb2ludCkKKyAqICAgLSBSUFJfRUxFTV9BQlNPUkJBQkxF X0JSQU5DSDogbWFya3MgdGhlIGFic29yYmFibGUgcmVnaW9uCisgKgorICogICBTZWUgY29tcHV0 ZUFic29yYmFiaWxpdHkoKSBhbmQgdGhlIGRldGFpbGVkIGNvbW1lbnRzIGJlZm9yZQorICogICBp c1VuYm91bmRlZFN0YXJ0KCkgZm9yIHRoZSBmdWxsIGRlc2lnbiBleHBsYW5hdGlvbi4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkgIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDxsaW1pdHMu aD4KKworI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgi CisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5o IgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KK3N0YXRpYyBib29sIHJwclBhdHRlcm5F cXVhbChSUFJQYXR0ZXJuTm9kZSAqYSwgUlBSUGF0dGVybk5vZGUgKmIpOworc3RhdGljIGJvb2wg cnByUGF0dGVybkNoaWxkcmVuRXF1YWwoTGlzdCAqYSwgTGlzdCAqYik7CisKK3N0YXRpYyBSUFJQ YXR0ZXJuTm9kZSAqdHJ5VW53cmFwU2luZ2xlQ2hpbGQoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4p OworCitzdGF0aWMgTGlzdCAqZmxhdHRlblNlcUNoaWxkcmVuKExpc3QgKmNoaWxkcmVuKTsKK3N0 YXRpYyBMaXN0ICptZXJnZUNvbnNlY3V0aXZlVmFycyhMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMg TGlzdCAqbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyhMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMgTGlz dCAqbWVyZ2VDb25zZWN1dGl2ZUFsdHMoTGlzdCAqY2hpbGRyZW4pOworc3RhdGljIExpc3QgKm1l cmdlR3JvdXBQcmVmaXhTdWZmaXgoTGlzdCAqY2hpbGRyZW4pOworc3RhdGljIFJQUlBhdHRlcm5O b2RlICpvcHRpbWl6ZVNlcVBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOworCitzdGF0 aWMgTGlzdCAqZmxhdHRlbkFsdENoaWxkcmVuKExpc3QgKmNoaWxkcmVuKTsKK3N0YXRpYyBMaXN0 ICpyZW1vdmVEdXBsaWNhdGVBbHRlcm5hdGl2ZXMoTGlzdCAqY2hpbGRyZW4pOworc3RhdGljIFJQ UlBhdHRlcm5Ob2RlICpvcHRpbWl6ZUFsdFBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4p OworCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKnRyeU11bHRpcGx5UXVhbnRpZmllcnMoUlBSUGF0 dGVybk5vZGUgKnBhdHRlcm4pOworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICp0cnlVbndyYXBHcm91 cChSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKm9wdGlt aXplR3JvdXBQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKKworc3RhdGljIFJQUlBh dHRlcm5Ob2RlICpvcHRpbWl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOwor CitzdGF0aWMgaW50CWNvbGxlY3REZWZpbmVWYXJpYWJsZXMoTGlzdCAqZGVmaW5lVmFyaWFibGVM aXN0LCBjaGFyICoqdmFyTmFtZXMpOworc3RhdGljIHZvaWQgc2NhblJQUlBhdHRlcm5SZWN1cnNp dmUoUlBSUGF0dGVybk5vZGUgKm5vZGUsIGNoYXIgKip2YXJOYW1lcywKKwkJCQkJCQkJCWludCAq bnVtVmFycywgaW50ICpudW1FbGVtZW50cywKKwkJCQkJCQkJCVJQUkRlcHRoIGRlcHRoLCBSUFJE ZXB0aCAqbWF4RGVwdGgpOworc3RhdGljIHZvaWQgc2NhblJQUlBhdHRlcm4oUlBSUGF0dGVybk5v ZGUgKm5vZGUsIGNoYXIgKip2YXJOYW1lcywgaW50ICpudW1WYXJzLAorCQkJCQkJICAgaW50ICpu dW1FbGVtZW50cywgUlBSRGVwdGggKm1heERlcHRoKTsKK3N0YXRpYyBSUFJQYXR0ZXJuICptYWtl UlBSUGF0dGVybihpbnQgbnVtVmFycywgaW50IG51bUVsZW1lbnRzLAorCQkJCQkJCQkgIFJQUkRl cHRoIG1heERlcHRoLCBjaGFyICoqdmFyTmFtZXNTdGFjayk7CitzdGF0aWMgUlBSVmFySWQgZ2V0 VmFySWRGcm9tUGF0dGVybihSUFJQYXR0ZXJuICpwYXQsIGNvbnN0IGNoYXIgKnZhck5hbWUpOwor c3RhdGljIGJvb2wgZmlsbFJQUlBhdHRlcm5WYXIoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBh dHRlcm4gKnBhdCwKKwkJCQkJCQkgIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCk7CitzdGF0aWMg Ym9vbCBmaWxsUlBSUGF0dGVybkdyb3VwKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJu ICpwYXQsCisJCQkJCQkJCWludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCk7CitzdGF0aWMgYm9vbCBm aWxsUlBSUGF0dGVybkFsdChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LAor CQkJCQkJCSAgaW50ICppZHgsIFJQUkRlcHRoIGRlcHRoKTsKK3N0YXRpYyBib29sIGZpbGxSUFJQ YXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsCisJCQkJCQkgICBp bnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpOworc3RhdGljIHZvaWQgZmluYWxpemVSUFJQYXR0ZXJu KFJQUlBhdHRlcm4gKnJlc3VsdCk7CisKK3N0YXRpYyBib29sIGlzRml4ZWRMZW5ndGhDaGlsZHJl bihSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IGlkeCwKKwkJCQkJCQkJICBSUFJEZXB0 aCBzY29wZURlcHRoKTsKK3N0YXRpYyBib29sIGlzVW5ib3VuZGVkU3RhcnQoUlBSUGF0dGVybiAq cGF0dGVybiwgUlBSRWxlbUlkeCBpZHgpOworc3RhdGljIHZvaWQgY29tcHV0ZUFic29yYmFiaWxp dHlSZWN1cnNpdmUoUlBSUGF0dGVybiAqcGF0dGVybiwKKwkJCQkJCQkJCQkgIFJQUkVsZW1JZHgg c3RhcnRJZHgsCisJCQkJCQkJCQkJICBib29sICpoYXNBYnNvcmJhYmxlKTsKK3N0YXRpYyB2b2lk IGNvbXB1dGVBYnNvcmJhYmlsaXR5KFJQUlBhdHRlcm4gKnBhdHRlcm4pOworCitzdGF0aWMgdm9p ZCBjb2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwK KwkJCQkJCQkJCQkJIExpc3QgKip2YXJOYW1lcyk7CisKKy8qCisgKiBycHJQYXR0ZXJuRXF1YWwK KyAqCQlDb21wYXJlIHR3byBSUFJQYXR0ZXJuTm9kZSB0cmVlcyBmb3IgZXF1YWxpdHkuCisgKgor ICogUmV0dXJucyB0cnVlIGlmIHRoZSB0cmVlcyBhcmUgc3RydWN0dXJhbGx5IGlkZW50aWNhbC4K KyAqLworc3RhdGljIGJvb2wKK3JwclBhdHRlcm5FcXVhbChSUFJQYXR0ZXJuTm9kZSAqYSwgUlBS UGF0dGVybk5vZGUgKmIpCit7CisJLyogUGF0dGVybiBub2RlcyBpbiBjaGlsZHJlbiBsaXN0cyBt dXN0IG5ldmVyIGJlIE5VTEwgKi8KKwlBc3NlcnQoYSAhPSBOVUxMICYmIGIgIT0gTlVMTCk7CisK KwkvKiBNdXN0IGhhdmUgc2FtZSBub2RlIHR5cGUgYW5kIHF1YW50aWZpZXJzICovCisJaWYgKGEt Pm5vZGVUeXBlICE9IGItPm5vZGVUeXBlKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKGEtPm1pbiAh PSBiLT5taW4gfHwgYS0+bWF4ICE9IGItPm1heCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChhLT5y ZWx1Y3RhbnQgIT0gYi0+cmVsdWN0YW50KQorCQlyZXR1cm4gZmFsc2U7CisKKwlzd2l0Y2ggKGEt Pm5vZGVUeXBlKQorCXsKKwkJY2FzZSBSUFJfUEFUVEVSTl9WQVI6CisJCQlyZXR1cm4gc3RyY21w KGEtPnZhck5hbWUsIGItPnZhck5hbWUpID09IDA7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9TRVE6 CisJCWNhc2UgUlBSX1BBVFRFUk5fQUxUOgorCQljYXNlIFJQUl9QQVRURVJOX0dST1VQOgorCQkJ cmV0dXJuIHJwclBhdHRlcm5DaGlsZHJlbkVxdWFsKGEtPmNoaWxkcmVuLCBiLT5jaGlsZHJlbik7 CisJfQorCisJcGdfdW5yZWFjaGFibGUoKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBy cHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbAorICoJCUNvbXBhcmUgY2hpbGRyZW4gbGlzdHMgb2YgdHdv IHBhdHRlcm4gbm9kZXMgZm9yIGVxdWFsaXR5LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg Y2hpbGRyZW4gbGlzdHMgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwuCisgKi8KK3N0YXRpYyBi b29sCitycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChMaXN0ICphLCBMaXN0ICpiKQoreworCUxpc3RD ZWxsICAgKmxjYSwKKwkJCSAgICpsY2I7CisKKwlpZiAobGlzdF9sZW5ndGgoYSkgIT0gbGlzdF9s ZW5ndGgoYikpCisJCXJldHVybiBmYWxzZTsKKworCWZvcmJvdGgobGNhLCBhLCBsY2IsIGIpCisJ eworCQlpZiAoIXJwclBhdHRlcm5FcXVhbCgoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0KGxjYSks CisJCQkJCQkJIChSUFJQYXR0ZXJuTm9kZSAqKSBsZmlyc3QobGNiKSkpCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiB0cnlVbndyYXBTaW5nbGVDaGls ZAorICoJCVRyeSB0byB1bndyYXAgcGF0dGVybiBub2RlIHdpdGggc2luZ2xlIGNoaWxkLgorICoK KyAqIEV4YW1wbGVzIChpbnRlcm5hbCBub2RlIHJlcHJlc2VudGF0aW9uKToKKyAqICAgU0VRW0Fd IC0+IEEgICAgKHNpbmdsZS1lbGVtZW50IHNlcXVlbmNlIGJlY29tZXMgdGhlIGVsZW1lbnQpCisg KiAgIEFMVFtBXSAtPiBBICAgIChzaW5nbGUtYWx0ZXJuYXRpdmUgYmVjb21lcyB0aGUgYWx0ZXJu YXRpdmUpCisgKgorICogSWYgcGF0dGVybiBoYXMgZXhhY3RseSBvbmUgY2hpbGQsIHJldHVybiB0 aGUgY2hpbGQgZGlyZWN0bHkuCisgKiBPdGhlcndpc2UgcmV0dXJucyB0aGUgcGF0dGVybiB1bmNo YW5nZWQuCisgKiBVc2VkIGJ5IGJvdGggU0VRIGFuZCBBTFQgb3B0aW1pemF0aW9uLgorICovCitz dGF0aWMgUlBSUGF0dGVybk5vZGUgKgordHJ5VW53cmFwU2luZ2xlQ2hpbGQoUlBSUGF0dGVybk5v ZGUgKnBhdHRlcm4pCit7CisJaWYgKGxpc3RfbGVuZ3RoKHBhdHRlcm4tPmNoaWxkcmVuKSA9PSAx KQorCQlyZXR1cm4gKFJQUlBhdHRlcm5Ob2RlICopIGxpbml0aWFsKHBhdHRlcm4tPmNoaWxkcmVu KTsKKworCXJldHVybiBwYXR0ZXJuOworfQorCisvKgorICogZmxhdHRlblNlcUNoaWxkcmVuCisg KgkJUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gYW5kIGZsYXR0ZW4gbmVzdGVkIFNFUS4K KyAqCisgKiBFeGFtcGxlOgorICogICBTRVEoQSwgU0VRKEIsIEMpKSAtPiBTRVEoQSwgQiwgQykK KyAqCisgKiBSZXR1cm5zIGEgbmV3IGxpc3Qgd2l0aCBvcHRpbWl6ZWQgY2hpbGRyZW4sIHdpdGgg bmVzdGVkIFNFUSBjaGlsZHJlbgorICogZmxhdHRlbmVkIGludG8gdGhlIHBhcmVudCBsaXN0Lgor ICovCitzdGF0aWMgTGlzdCAqCitmbGF0dGVuU2VxQ2hpbGRyZW4oTGlzdCAqY2hpbGRyZW4pCit7 CisJTGlzdAkgICAqbmV3Q2hpbGRyZW4gPSBOSUw7CisKKwlmb3JlYWNoX25vZGUoUlBSUGF0dGVy bk5vZGUsIGNoaWxkLCBjaGlsZHJlbikKKwl7CisJCVJQUlBhdHRlcm5Ob2RlICpvcHQgPSBvcHRp bWl6ZVJQUlBhdHRlcm4oY2hpbGQpOworCisJCS8qIEdST1VQezEsMX0gc2hvdWxkIGhhdmUgYmVl biB1bndyYXBwZWQgYnkgb3B0aW1pemVHcm91cFBhdHRlcm4gKi8KKwkJQXNzZXJ0KCEob3B0LT5u b2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9HUk9VUCAmJgorCQkJCSBvcHQtPm1pbiA9PSAxICYmIG9w dC0+bWF4ID09IDEgJiYgb3B0LT5yZWx1Y3RhbnQgPT0gZmFsc2UpKTsKKworCQlpZiAob3B0LT5u b2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9TRVEpCisJCXsKKwkJCW5ld0NoaWxkcmVuID0gbGlzdF9j b25jYXQobmV3Q2hpbGRyZW4sCisJCQkJCQkJCQkgIGxpc3RfY29weShvcHQtPmNoaWxkcmVuKSk7 CisJCX0KKwkJZWxzZQorCQl7CisJCQluZXdDaGlsZHJlbiA9IGxhcHBlbmQobmV3Q2hpbGRyZW4s IG9wdCk7CisJCX0KKwl9CisKKwlyZXR1cm4gbmV3Q2hpbGRyZW47Cit9CisKKy8qCisgKiBtZXJn ZUNvbnNlY3V0aXZlVmFycworICoJCU1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBWQVIgbm9k ZXMuCisgKgorICogRXhhbXBsZXM6CisgKiAgIEF7bTEsTTF9IEF7bTIsTTJ9IC0+IEF7bTErbTIs IE0xK00yfSB3aGVyZSBJTkYgKyB4ID0gSU5GLgorICoKKyAqIE9ubHkgbWVyZ2VzIG5vbi1yZWx1 Y3RhbnQgVkFSIG5vZGVzIHdpdGggdGhlIHNhbWUgdmFyaWFibGUgbmFtZS4KKyAqLworc3RhdGlj IExpc3QgKgorbWVyZ2VDb25zZWN1dGl2ZVZhcnMoTGlzdCAqY2hpbGRyZW4pCit7CisJTGlzdAkg ICAqbWVyZ2VkQ2hpbGRyZW4gPSBOSUw7CisJUlBSUGF0dGVybk5vZGUgKnByZXYgPSBOVUxMOwor CisJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgY2hpbGRyZW4pCisJeworCQlp ZiAoY2hpbGQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1ZBUiAmJiBjaGlsZC0+cmVsdWN0YW50 ID09IGZhbHNlKQorCQl7CisJCQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQkgKiBDYW4g bWVyZ2UgY29uc2VjdXRpdmUgVkFSIG5vZGVzIGlmOgorCQkJICogMS4gU2FtZSB2YXJpYWJsZSBu YW1lCisJCQkgKiAyLiBObyBtaW4gb3ZlcmZsb3c6IHByZXYtPm1pbiArIGNoaWxkLT5taW4gPCBJ TkYKKwkJCSAqIDMuIE5vIG1heCBvdmVyZmxvdzogcHJldi0+bWF4ICsgY2hpbGQtPm1heCA8IElO RiAob3IgZWl0aGVyIGlzIElORikKKwkJCSAqCisJCQkgKiBTdHJpY3QgPDogYSBzdW0gZXF1YWwg dG8gSU5GIHdvdWxkIGFsaWFzIHRoZSB1bmJvdW5kZWQgc2VudGluZWwKKwkJCSAqIChtaW4gbXVz dCBzdGF5IGZpbml0ZTsgYSBmaW5pdGUgbWF4IG11c3Qgbm90IGJlY29tZSBJTkYpLgorCQkJICov CisJCQlpZiAocHJldiAhPSBOVUxMICYmCisJCQkJc3RyY21wKHByZXYtPnZhck5hbWUsIGNoaWxk LT52YXJOYW1lKSA9PSAwICYmCisJCQkJcHJldi0+bWluIDwgUlBSX1FVQU5USVRZX0lORiAtIGNo aWxkLT5taW4gJiYKKwkJCQkocHJldi0+bWF4IDwgUlBSX1FVQU5USVRZX0lORiAtIGNoaWxkLT5t YXggfHwKKwkJCQkgcHJldi0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJCQkgY2hpbGQt Pm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE1lcmdlOiBh Y2N1bXVsYXRlIG1pbi9tYXggaW50byBwcmV2LiBwcmV2IGlzIGd1YXJhbnRlZWQgdG8KKwkJCQkg KiBiZSBhIG5vbi1yZWx1Y3RhbnQgVkFSIGJ5IHRoZSBvdXRlciBjb25kaXRpb24uCisJCQkJICov CisJCQkJQXNzZXJ0KHByZXYtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1ZBUiAmJiBwcmV2LT5y ZWx1Y3RhbnQgPT0gZmFsc2UpOworCisJCQkJcHJldi0+bWluICs9IGNoaWxkLT5taW47CisKKwkJ CQlpZiAocHJldi0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJCQkJY2hpbGQtPm1heCA9 PSBSUFJfUVVBTlRJVFlfSU5GKQorCQkJCQlwcmV2LT5tYXggPSBSUFJfUVVBTlRJVFlfSU5GOwor CQkJCWVsc2UKKwkJCQkJcHJldi0+bWF4ICs9IGNoaWxkLT5tYXg7CisJCQl9CisJCQllbHNlCisJ CQl7CisJCQkJLyogRmx1c2ggcHJldmlvdXMgYW5kIHN0YXJ0IG5ldyAqLworCQkJCWlmIChwcmV2 ICE9IE5VTEwpCisJCQkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwg cHJldik7CisJCQkJcHJldiA9IGNoaWxkOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyog Tm9uLW1lcmdlYWJsZSAtIGZsdXNoIHByZXZpb3VzICovCisJCQlpZiAocHJldiAhPSBOVUxMKQor CQkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQlt ZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIGNoaWxkKTsKKwkJCXByZXYg PSBOVUxMOworCQl9CisJfQorCisJLyogRmx1c2ggcmVtYWluaW5nICovCisJaWYgKHByZXYgIT0g TlVMTCkKKwkJbWVyZ2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsK KworCXJldHVybiBtZXJnZWRDaGlsZHJlbjsKK30KKworLyoKKyAqIG1lcmdlQ29uc2VjdXRpdmVH cm91cHMKKyAqCQlNZXJnZSBjb25zZWN1dGl2ZSBpZGVudGljYWwgR1JPVVAgbm9kZXMuCisgKgor ICogRXhhbXBsZToKKyAqICAgKEEgQikrIChBIEIpKyAtPiAoQSBCKXsyLH0KKyAqCisgKiBPbmx5 IG1lcmdlcyBub24tcmVsdWN0YW50IEdST1VQIG5vZGVzIHdpdGggaWRlbnRpY2FsIGNoaWxkcmVu LgorICovCitzdGF0aWMgTGlzdCAqCittZXJnZUNvbnNlY3V0aXZlR3JvdXBzKExpc3QgKmNoaWxk cmVuKQoreworCUxpc3QJICAgKm1lcmdlZENoaWxkcmVuID0gTklMOworCVJQUlBhdHRlcm5Ob2Rl ICpwcmV2ID0gTlVMTDsKKworCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIGNo aWxkcmVuKQorCXsKKwkJaWYgKGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9HUk9VUCAm JiBjaGlsZC0+cmVsdWN0YW50ID09IGZhbHNlKQorCQl7CisJCQkvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisJCQkgKiBDYW4gbWVyZ2UgY29uc2VjdXRpdmUgR1JPVVAgbm9kZXMgaWY6CisJCQkg KiAxLiBJZGVudGljYWwgY2hpbGRyZW4KKwkJCSAqIDIuIE5vIG1pbiBvdmVyZmxvdzogcHJldi0+ bWluICsgY2hpbGQtPm1pbiA8IElORgorCQkJICogMy4gTm8gbWF4IG92ZXJmbG93OiBwcmV2LT5t YXggKyBjaGlsZC0+bWF4IDwgSU5GIChvciBlaXRoZXIgaXMgSU5GKQorCQkJICoKKwkJCSAqIFN0 cmljdCA8OiBhIHN1bSBlcXVhbCB0byBJTkYgd291bGQgYWxpYXMgdGhlIHVuYm91bmRlZCBzZW50 aW5lbAorCQkJICogKG1pbiBtdXN0IHN0YXkgZmluaXRlOyBhIGZpbml0ZSBtYXggbXVzdCBub3Qg YmVjb21lIElORikuCisJCQkgKi8KKwkJCWlmIChwcmV2ICE9IE5VTEwgJiYKKwkJCQlycHJQYXR0 ZXJuQ2hpbGRyZW5FcXVhbChwcmV2LT5jaGlsZHJlbiwgY2hpbGQtPmNoaWxkcmVuKSAmJgorCQkJ CXByZXYtPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgLSBjaGlsZC0+bWluICYmCisJCQkJKHByZXYt Pm1heCA8IFJQUl9RVUFOVElUWV9JTkYgLSBjaGlsZC0+bWF4IHx8CisJCQkJIHByZXYtPm1heCA9 PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJIGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lO RikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBNZXJnZTogYWNjdW11bGF0ZSBtaW4vbWF4IGludG8g cHJldi4gcHJldiBpcyBndWFyYW50ZWVkIHRvCisJCQkJICogYmUgYSBub24tcmVsdWN0YW50IEdS T1VQIGJ5IHRoZSBvdXRlciBjb25kaXRpb24uCisJCQkJICovCisJCQkJQXNzZXJ0KHByZXYtPm5v ZGVUeXBlID09IFJQUl9QQVRURVJOX0dST1VQICYmIHByZXYtPnJlbHVjdGFudCA9PSBmYWxzZSk7 CisKKwkJCQlwcmV2LT5taW4gKz0gY2hpbGQtPm1pbjsKKworCQkJCWlmIChwcmV2LT5tYXggPT0g UlBSX1FVQU5USVRZX0lORiB8fAorCQkJCQljaGlsZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYp CisJCQkJCXByZXYtPm1heCA9IFJQUl9RVUFOVElUWV9JTkY7CisJCQkJZWxzZQorCQkJCQlwcmV2 LT5tYXggKz0gY2hpbGQtPm1heDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBGbHVzaCBw cmV2aW91cyBhbmQgc3RhcnQgbmV3ICovCisJCQkJaWYgKHByZXYgIT0gTlVMTCkKKwkJCQkJbWVy Z2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKwkJCQlwcmV2ID0g Y2hpbGQ7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBOb24tbWVyZ2VhYmxlIC0gZmx1 c2ggcHJldmlvdXMgKi8KKwkJCWlmIChwcmV2ICE9IE5VTEwpCisJCQkJbWVyZ2VkQ2hpbGRyZW4g PSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKwkJCW1lcmdlZENoaWxkcmVuID0gbGFw cGVuZChtZXJnZWRDaGlsZHJlbiwgY2hpbGQpOworCQkJcHJldiA9IE5VTEw7CisJCX0KKwl9CisK KwkvKiBGbHVzaCByZW1haW5pbmcgKi8KKwlpZiAocHJldiAhPSBOVUxMKQorCQltZXJnZWRDaGls ZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIHByZXYpOworCisJcmV0dXJuIG1lcmdlZENo aWxkcmVuOworfQorCisvKgorICogbWVyZ2VDb25zZWN1dGl2ZUFsdHMKKyAqCQlNZXJnZSBjb25z ZWN1dGl2ZSBpZGVudGljYWwgQUxUIG5vZGVzIGludG8gYSBHUk9VUC4KKyAqCisgKiBFeGFtcGxl OgorICogICAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAtPiAoQSB8IEIpezN9CisgKgorICogQWZ0 ZXIgR1JPVVB7MSwxfSB1bndyYXAsIGJhcmUgYWx0ZXJuYXRpb25zIGxpa2UgKEEgfCBCKSBiZWNv bWUgQUxUIG5vZGVzCisgKiBpbiB0aGUgU0VRLiAgVGhpcyBzdGVwIGRldGVjdHMgY29uc2VjdXRp dmUgaWRlbnRpY2FsIEFMVCBub2RlcyBhbmQgd3JhcHMKKyAqIHRoZW0gaW4gYSBHUk9VUCB3aXRo IHRoZSBhcHByb3ByaWF0ZSBxdWFudGlmaWVyLgorICovCitzdGF0aWMgTGlzdCAqCittZXJnZUNv bnNlY3V0aXZlQWx0cyhMaXN0ICpjaGlsZHJlbikKK3sKKwlMaXN0CSAgICptZXJnZWRDaGlsZHJl biA9IE5JTDsKKwlSUFJQYXR0ZXJuTm9kZSAqcHJldiA9IE5VTEw7CisJaW50CQkJY291bnQgPSAw OworCisJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgY2hpbGRyZW4pCisJewor CQlpZiAoY2hpbGQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX0FMVCAmJiBjaGlsZC0+cmVsdWN0 YW50ID09IGZhbHNlKQorCQl7CisJCQlpZiAocHJldiAhPSBOVUxMICYmCisJCQkJcnByUGF0dGVy bkNoaWxkcmVuRXF1YWwocHJldi0+Y2hpbGRyZW4sIGNoaWxkLT5jaGlsZHJlbikpCisJCQl7CisJ CQkJLyogU2FtZSBBTFQgYXMgcHJldiAtIGFjY3VtdWxhdGUgKi8KKwkJCQljb3VudCsrOworCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCS8qIERpZmZlcmVudCBBTFQgb3IgZmlyc3QgQUxUIC0gZmx1 c2ggcHJldmlvdXMgKi8KKwkJCQlpZiAocHJldiAhPSBOVUxMKQorCQkJCXsKKwkJCQkJaWYgKGNv dW50ID4gMSkKKwkJCQkJeworCQkJCQkJLyogV3JhcCBpbiBHUk9VUHtjb3VudCxjb3VudH0oQUxU KSAqLworCQkJCQkJUlBSUGF0dGVybk5vZGUgKmdyb3VwID0gbWFrZU5vZGUoUlBSUGF0dGVybk5v ZGUpOworCisJCQkJCQlncm91cC0+bm9kZVR5cGUgPSBSUFJfUEFUVEVSTl9HUk9VUDsKKwkJCQkJ CWdyb3VwLT5taW4gPSBjb3VudDsKKwkJCQkJCWdyb3VwLT5tYXggPSBjb3VudDsKKwkJCQkJCWdy b3VwLT5yZWx1Y3RhbnQgPSBmYWxzZTsKKwkJCQkJCWdyb3VwLT5sb2NhdGlvbiA9IC0xOworCQkJ CQkJZ3JvdXAtPmNoaWxkcmVuID0gbGlzdF9tYWtlMShwcmV2KTsKKwkJCQkJCW1lcmdlZENoaWxk cmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgZ3JvdXApOworCQkJCQl9CisJCQkJCWVsc2UK KwkJCQkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJ CQkJfQorCQkJCXByZXYgPSBjaGlsZDsKKwkJCQljb3VudCA9IDE7CisJCQl9CisJCX0KKwkJZWxz ZQorCQl7CisJCQkvKiBOb24tQUxUIC0gZmx1c2ggcHJldmlvdXMgKi8KKwkJCWlmIChwcmV2ICE9 IE5VTEwpCisJCQl7CisJCQkJaWYgKGNvdW50ID4gMSkKKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5O b2RlICpncm91cCA9IG1ha2VOb2RlKFJQUlBhdHRlcm5Ob2RlKTsKKworCQkJCQlncm91cC0+bm9k ZVR5cGUgPSBSUFJfUEFUVEVSTl9HUk9VUDsKKwkJCQkJZ3JvdXAtPm1pbiA9IGNvdW50OworCQkJ CQlncm91cC0+bWF4ID0gY291bnQ7CisJCQkJCWdyb3VwLT5yZWx1Y3RhbnQgPSBmYWxzZTsKKwkJ CQkJZ3JvdXAtPmxvY2F0aW9uID0gLTE7CisJCQkJCWdyb3VwLT5jaGlsZHJlbiA9IGxpc3RfbWFr ZTEocHJldik7CisJCQkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwg Z3JvdXApOworCQkJCX0KKwkJCQllbHNlCisJCQkJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZCht ZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQl9CisJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQo bWVyZ2VkQ2hpbGRyZW4sIGNoaWxkKTsKKwkJCXByZXYgPSBOVUxMOworCQkJY291bnQgPSAwOwor CQl9CisJfQorCisJLyogRmx1c2ggcmVtYWluaW5nICovCisJaWYgKHByZXYgIT0gTlVMTCkKKwl7 CisJCWlmIChjb3VudCA+IDEpCisJCXsKKwkJCVJQUlBhdHRlcm5Ob2RlICpncm91cCA9IG1ha2VO b2RlKFJQUlBhdHRlcm5Ob2RlKTsKKworCQkJZ3JvdXAtPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5f R1JPVVA7CisJCQlncm91cC0+bWluID0gY291bnQ7CisJCQlncm91cC0+bWF4ID0gY291bnQ7CisJ CQlncm91cC0+cmVsdWN0YW50ID0gZmFsc2U7CisJCQlncm91cC0+bG9jYXRpb24gPSAtMTsKKwkJ CWdyb3VwLT5jaGlsZHJlbiA9IGxpc3RfbWFrZTEocHJldik7CisJCQltZXJnZWRDaGlsZHJlbiA9 IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIGdyb3VwKTsKKwkJfQorCQllbHNlCisJCQltZXJnZWRD aGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIHByZXYpOworCX0KKworCXJldHVybiBt ZXJnZWRDaGlsZHJlbjsKK30KKworLyoKKyAqIG1lcmdlR3JvdXBQcmVmaXhTdWZmaXgKKyAqCQlN ZXJnZSBzZXF1ZW5jZSBwcmVmaXgvc3VmZml4IGludG8gR1JPVVAgd2l0aCBtYXRjaGluZyBjaGls ZHJlbi4KKyAqCisgKiBXaGVuIGEgR1JPVVAncyBjaGlsZHJlbiBhcHBlYXIgYXMgYSBwcmVmaXgg YmVmb3JlIGFuZC9vciBzdWZmaXggYWZ0ZXIKKyAqIHRoZSBHUk9VUCBpbiBhIFNFUSwgbWVyZ2Ug dGhlbSBieSBpbmNyZW1lbnRpbmcgdGhlIEdST1VQJ3MgcXVhbnRpZmllci4KKyAqIFRoaXMgcnVu cyBpdGVyYXRpdmVseTogQSBCIEEgQiAoQSBCKSsgQSBCIC0+IChBIEIpezQsfS4KKyAqCisgKiBB bGdvcml0aG06CisgKiAgIEZvciBlYWNoIEdST1VQIGVuY291bnRlcmVkIGluIHRoZSBzZXF1ZW5j ZToKKyAqICAgMS4gUFJFRklYIHBoYXNlOiBjb21wYXJlIHRoZSBsYXN0IE4gZWxlbWVudHMgYWxy ZWFkeSBpbiB0aGUgcmVzdWx0CisgKiAgICAgIGxpc3QgYWdhaW5zdCB0aGUgR1JPVVAncyBjaGls ZHJlbi4gIE9uIG1hdGNoLCByZW1vdmUgdGhlbSBmcm9tCisgKiAgICAgIHJlc3VsdCBhbmQgaW5j cmVtZW50IHRoZSBHUk9VUCdzIG1pbi9tYXguICBSZXBlYXQgdW50aWwgbm8gbWF0Y2guCisgKiAg IDIuIFNVRkZJWCBwaGFzZTogY29tcGFyZSB0aGUgbmV4dCBOIGVsZW1lbnRzIGluIHRoZSBpbnB1 dCBhZ2FpbnN0CisgKiAgICAgIHRoZSBHUk9VUCdzIGNoaWxkcmVuLiAgT24gbWF0Y2gsIHNraXAg dGhlbSAodmlhIHNraXBVbnRpbCkgYW5kCisgKiAgICAgIGluY3JlbWVudCBtaW4vbWF4LiAgUmVw ZWF0IHVudGlsIG5vIG1hdGNoLgorICoKKyAqIEV4YW1wbGVzOgorICogICBBIEIgKEEgQikrIC0+ IChBIEIpezIsfQorICogICAoQSBCKSsgQSBCIC0+IChBIEIpezIsfQorICogICBBIEIgKEEgQikr IEEgQiAtPiAoQSBCKXszLH0KKyAqLworc3RhdGljIExpc3QgKgorbWVyZ2VHcm91cFByZWZpeFN1 ZmZpeChMaXN0ICpjaGlsZHJlbikKK3sKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJaW50CQkJ bnVtQ2hpbGRyZW4gPSBsaXN0X2xlbmd0aChjaGlsZHJlbik7CisJaW50CQkJaTsKKwlpbnQJCQlz a2lwVW50aWwgPSAtMTsgLyogc2tpcCBzdWZmaXggZWxlbWVudHMgYWxyZWFkeSBtZXJnZWQgKi8K KworCWZvciAoaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgaSsrKQorCXsKKwkJUlBSUGF0dGVybk5v ZGUgKmNoaWxkID0gKFJQUlBhdHRlcm5Ob2RlICopIGxpc3RfbnRoKGNoaWxkcmVuLCBpKTsKKwor CQkvKgorCQkgKiBUaGUgc3VmZml4IG1lcmdlIGxvZ2ljIGJlbG93IGFkanVzdHMgaSB0byBza2lw IG1lcmdlZCBlbGVtZW50cywKKwkJICogZW5zdXJpbmcgd2UgbmV2ZXIgcmV2aXNpdCB0aGVtLiBW ZXJpZnkgdGhpcyBpbnZhcmlhbnQuCisJCSAqLworCQlBc3NlcnQoaSA+PSBza2lwVW50aWwpOwor CisJCS8qCisJCSAqIElmIHRoaXMgaXMgYSBHUk9VUCwgc2VlIGlmIHByZWNlZGluZy9mb2xsb3dp bmcgZWxlbWVudHMgbWF0Y2ggaXRzCisJCSAqIGNoaWxkcmVuLiBHUk9VUCdzIGNvbnRlbnQgbWF5 IGJlIHdyYXBwZWQgaW4gYSBTRVEgLSB1bndyYXAgZm9yCisJCSAqIGNvbXBhcmlzb24uCisJCSAq LworCQlpZiAoY2hpbGQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX0dST1VQICYmIGNoaWxkLT5y ZWx1Y3RhbnQgPT0gZmFsc2UpCisJCXsKKwkJCUxpc3QJICAgKmdyb3VwQ29udGVudCA9IGNoaWxk LT5jaGlsZHJlbjsKKwkJCWludAkJCWdyb3VwQ2hpbGRDb3VudDsKKwkJCWludAkJCXByZWZpeExl biA9IGxpc3RfbGVuZ3RoKHJlc3VsdCk7CisJCQlMaXN0CSAgICp0cmltbWVkOworCisJCQkvKgor CQkJICogSWYgR1JPVVAgaGFzIHNpbmdsZSBTRVEgY2hpbGQsIGNvbXBhcmUgd2l0aCBTRVEncyBj aGlsZHJlbi4KKwkJCSAqIGUuZy4sIChBIEIpKyBpbnRlcm5hbGx5IGNvbnRhaW5zIHNlcXVlbmNl IEEgQjsgY29tcGFyZSBhZ2FpbnN0CisJCQkgKiB0aGF0LgorCQkJICovCisJCQlpZiAobGlzdF9s ZW5ndGgoZ3JvdXBDb250ZW50KSA9PSAxKQorCQkJeworCQkJCVJQUlBhdHRlcm5Ob2RlICppbm5l ciA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChncm91cENvbnRlbnQpOworCisJCQkJaWYg KGlubmVyLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9TRVEpCisJCQkJCWdyb3VwQ29udGVudCA9 IGlubmVyLT5jaGlsZHJlbjsKKwkJCX0KKworCQkJZ3JvdXBDaGlsZENvdW50ID0gbGlzdF9sZW5n dGgoZ3JvdXBDb250ZW50KTsKKworCQkJLyoKKwkJCSAqIFBSRUZJWCBNRVJHRTogQ2hlY2sgaWYg cHJlY2VkaW5nIGVsZW1lbnRzIG1hdGNoLiBLZWVwIG1lcmdpbmcKKwkJCSAqIGFzIGxvbmcgYXMg d2UgaGF2ZSBtYXRjaGluZyBwcmVmaXhlcy4KKwkJCSAqLworCQkJd2hpbGUgKHByZWZpeExlbiA+ PSBncm91cENoaWxkQ291bnQgJiYgZ3JvdXBDaGlsZENvdW50ID4gMCkKKwkJCXsKKwkJCQlMaXN0 CSAgICpwcmVmaXhFbGVtZW50cyA9IE5JTDsKKwkJCQlpbnQJCQlqOworCisJCQkJLyogRXh0cmFj dCBsYXN0IGdyb3VwQ2hpbGRDb3VudCBlbGVtZW50cyBmcm9tIHByZWZpeCAqLworCQkJCWZvciAo aiA9IHByZWZpeExlbiAtIGdyb3VwQ2hpbGRDb3VudDsgaiA8IHByZWZpeExlbjsgaisrKQorCQkJ CXsKKwkJCQkJcHJlZml4RWxlbWVudHMgPSBsYXBwZW5kKHByZWZpeEVsZW1lbnRzLAorCQkJCQkJ CQkJCQkgbGlzdF9udGgocmVzdWx0LCBqKSk7CisJCQkJfQorCisJCQkJLyogQ29tcGFyZSB3aXRo IEdST1VQJ3MgKHBvc3NpYmx5IHVud3JhcHBlZCkgY2hpbGRyZW4gKi8KKwkJCQlpZiAocnByUGF0 dGVybkNoaWxkcmVuRXF1YWwocHJlZml4RWxlbWVudHMsIGdyb3VwQ29udGVudCkgJiYKKwkJCQkJ Y2hpbGQtPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgLSAxICYmCisJCQkJCShjaGlsZC0+bWF4ID09 IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJCQkJIGNoaWxkLT5tYXggPCBSUFJfUVVBTlRJVFlfSU5G IC0gMSkpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBNYXRjaCEgTWVyZ2UgYnkgaW5jcmVtZW50 aW5nIEdST1VQJ3MgcXVhbnRpZmllci4gUmVtb3ZlCisJCQkJCSAqIHRoZSBwcmVmaXggZWxlbWVu dHMgZnJvbSBvdXRwdXQuCisJCQkJCSAqLworCQkJCQljaGlsZC0+bWluICs9IDE7CisJCQkJCWlm IChjaGlsZC0+bWF4ICE9IFJQUl9RVUFOVElUWV9JTkYpCisJCQkJCQljaGlsZC0+bWF4ICs9IDE7 CisKKwkJCQkJLyogUmVidWlsZCByZXN1bHQgd2l0aG91dCBtYXRjaGVkIHByZWZpeCAqLworCQkJ CQl0cmltbWVkID0gTklMOworCQkJCQlmb3IgKGogPSAwOyBqIDwgcHJlZml4TGVuIC0gZ3JvdXBD aGlsZENvdW50OyBqKyspCisJCQkJCXsKKwkJCQkJCXRyaW1tZWQgPSBsYXBwZW5kKHRyaW1tZWQs CisJCQkJCQkJCQkJICBsaXN0X250aChyZXN1bHQsIGopKTsKKwkJCQkJfQorCQkJCQlyZXN1bHQg PSB0cmltbWVkOworCQkJCQlwcmVmaXhMZW4gPSBsaXN0X2xlbmd0aChyZXN1bHQpOworCQkJCX0K KwkJCQllbHNlCisJCQkJeworCQkJCQlsaXN0X2ZyZWUocHJlZml4RWxlbWVudHMpOworCQkJCQli cmVhazsKKwkJCQl9CisKKwkJCQlsaXN0X2ZyZWUocHJlZml4RWxlbWVudHMpOworCQkJfQorCisJ CQkvKgorCQkJICogU1VGRklYIE1FUkdFOiBDaGVjayBpZiBmb2xsb3dpbmcgZWxlbWVudHMgbWF0 Y2guIEtlZXAgbWVyZ2luZworCQkJICogYXMgbG9uZyBhcyB3ZSBoYXZlIG1hdGNoaW5nIHN1ZmZp eGVzLgorCQkJICovCisJCQl3aGlsZSAoaSArIGdyb3VwQ2hpbGRDb3VudCA8IG51bUNoaWxkcmVu ICYmIGdyb3VwQ2hpbGRDb3VudCA+IDApCisJCQl7CisJCQkJTGlzdAkgICAqc3VmZml4RWxlbWVu dHMgPSBOSUw7CisJCQkJaW50CQkJajsKKwkJCQlpbnQJCQlzdWZmaXhTdGFydCA9IGkgKyAxOwor CisJCQkJLyogc3VmZml4U3RhcnQgYWx3YXlzID49IHNraXBVbnRpbCBhZnRlciBpIGFkanVzdG1l bnQgKi8KKwkJCQlBc3NlcnQoc2tpcFVudGlsIDw9IHN1ZmZpeFN0YXJ0KTsKKworCQkJCS8qIEV4 dHJhY3QgbmV4dCBncm91cENoaWxkQ291bnQgZWxlbWVudHMgYXMgc3VmZml4ICovCisJCQkJZm9y IChqID0gMDsgaiA8IGdyb3VwQ2hpbGRDb3VudDsgaisrKQorCQkJCXsKKwkJCQkJaW50CQkJaWR4 ID0gc3VmZml4U3RhcnQgKyBqOworCisJCQkJCS8qIHdoaWxlIGNvbmRpdGlvbiBndWFyYW50ZWVz IGlkeCA8IG51bUNoaWxkcmVuICovCisJCQkJCUFzc2VydChpZHggPCBudW1DaGlsZHJlbik7CisJ CQkJCXN1ZmZpeEVsZW1lbnRzID0gbGFwcGVuZChzdWZmaXhFbGVtZW50cywKKwkJCQkJCQkJCQkJ IGxpc3RfbnRoKGNoaWxkcmVuLCBpZHgpKTsKKwkJCQl9CisKKwkJCQkvKiBDb21wYXJlIHdpdGgg R1JPVVAncyBjaGlsZHJlbiAqLworCQkJCWlmIChsaXN0X2xlbmd0aChzdWZmaXhFbGVtZW50cykg PT0gZ3JvdXBDaGlsZENvdW50ICYmCisJCQkJCXJwclBhdHRlcm5DaGlsZHJlbkVxdWFsKHN1ZmZp eEVsZW1lbnRzLCBncm91cENvbnRlbnQpICYmCisJCQkJCWNoaWxkLT5taW4gPCBSUFJfUVVBTlRJ VFlfSU5GIC0gMSAmJgorCQkJCQkoY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJ CQkJCSBjaGlsZC0+bWF4IDwgUlBSX1FVQU5USVRZX0lORiAtIDEpKQorCQkJCXsKKwkJCQkJLyoK KwkJCQkJICogTWF0Y2ghIE1lcmdlIHN1ZmZpeCBieSBpbmNyZW1lbnRpbmcgcXVhbnRpZmllciBh bmQKKwkJCQkJICogc2tpcHBpbmcuCisJCQkJCSAqLworCQkJCQljaGlsZC0+bWluICs9IDE7CisJ CQkJCWlmIChjaGlsZC0+bWF4ICE9IFJQUl9RVUFOVElUWV9JTkYpCisJCQkJCQljaGlsZC0+bWF4 ICs9IDE7CisJCQkJCXNraXBVbnRpbCA9IHN1ZmZpeFN0YXJ0ICsgZ3JvdXBDaGlsZENvdW50Owor CisJCQkJCS8qCisJCQkJCSAqIFVwZGF0ZSBpIHRvIGNvbnRpbnVlIHN1ZmZpeCBjaGVjayBhZnRl ciBtZXJnZWQgZWxlbWVudHMKKwkJCQkJICovCisJCQkJCWkgPSBza2lwVW50aWwgLSAxOworCQkJ CX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlsaXN0X2ZyZWUoc3VmZml4RWxlbWVudHMpOworCQkJ CQlicmVhazsKKwkJCQl9CisKKwkJCQlsaXN0X2ZyZWUoc3VmZml4RWxlbWVudHMpOworCQkJfQor CQl9CisKKwkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIGNoaWxkKTsKKwl9CisKKwlyZXR1cm4g cmVzdWx0OworfQorCisvKgorICogb3B0aW1pemVTZXFQYXR0ZXJuCisgKgkJT3B0aW1pemUgU0VR IHBhdHRlcm4gbm9kZS4KKyAqCisgKiBPcHRpbWl6YXRpb25zOgorICogICAxLiBGbGF0dGVuIG5l c3RlZCBTRVEgYW5kIEdST1VQezEsMX0KKyAqICAgMi4gTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRp Y2FsIFZBUiBub2RlcworICogICAzLiBNZXJnZSBjb25zZWN1dGl2ZSBpZGVudGljYWwgR1JPVVAg bm9kZXMKKyAqICAgNC4gTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2FsIEFMVCBub2RlcyBpbnRv IEdST1VQCisgKiAgIDUuIE1lcmdlIHByZWZpeC9zdWZmaXggaW50byBHUk9VUCB3aXRoIG1hdGNo aW5nIGNoaWxkcmVuCisgKiAgIDYuIFVud3JhcCBzaW5nbGUtaXRlbSBTRVEKKyAqLworc3RhdGlj IFJQUlBhdHRlcm5Ob2RlICoKK29wdGltaXplU2VxUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0 dGVybikKK3sKKwkvKiBSZWN1cnNpdmVseSBvcHRpbWl6ZSBjaGlsZHJlbiBhbmQgZmxhdHRlbiBu ZXN0ZWQgU0VRL0dST1VQezEsMX0gKi8KKwlwYXR0ZXJuLT5jaGlsZHJlbiA9IGZsYXR0ZW5TZXFD aGlsZHJlbihwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkvKiBNZXJnZSBjb25zZWN1dGl2ZSBpZGVu dGljYWwgVkFSIG5vZGVzICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNlY3V0aXZl VmFycyhwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkvKiBNZXJnZSBjb25zZWN1dGl2ZSBpZGVudGlj YWwgR1JPVVAgbm9kZXMgKi8KKwlwYXR0ZXJuLT5jaGlsZHJlbiA9IG1lcmdlQ29uc2VjdXRpdmVH cm91cHMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRp Y2FsIEFMVCBub2RlcyBpbnRvIEdST1VQICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNv bnNlY3V0aXZlQWx0cyhwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkvKiBNZXJnZSBwcmVmaXgvc3Vm Zml4IGludG8gR1JPVVAgd2l0aCBtYXRjaGluZyBjaGlsZHJlbiAqLworCXBhdHRlcm4tPmNoaWxk cmVuID0gbWVyZ2VHcm91cFByZWZpeFN1ZmZpeChwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkvKiBV bndyYXAgc2luZ2xlLWl0ZW0gU0VRICovCisJcmV0dXJuIHRyeVVud3JhcFNpbmdsZUNoaWxkKHBh dHRlcm4pOworfQorCisvKgorICogZmxhdHRlbkFsdENoaWxkcmVuCisgKgkJUmVjdXJzaXZlbHkg b3B0aW1pemUgY2hpbGRyZW4gYW5kIGZsYXR0ZW4gbmVzdGVkIEFMVCBub2Rlcy4KKyAqCisgKiBF eGFtcGxlOgorICogICAoQSB8IChCIHwgQykpIC0+IChBIHwgQiB8IEMpCisgKgorICogUmV0dXJu cyBhIG5ldyBsaXN0IHdpdGggb3B0aW1pemVkIGNoaWxkcmVuLCB3aXRoIG5lc3RlZCBBTFQgY2hp bGRyZW4KKyAqIGZsYXR0ZW5lZCBpbnRvIHRoZSBwYXJlbnQgbGlzdC4KKyAqLworc3RhdGljIExp c3QgKgorZmxhdHRlbkFsdENoaWxkcmVuKExpc3QgKmNoaWxkcmVuKQoreworCUxpc3QJICAgKm5l d0NoaWxkcmVuID0gTklMOworCisJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwg Y2hpbGRyZW4pCisJeworCQlSUFJQYXR0ZXJuTm9kZSAqb3B0ID0gb3B0aW1pemVSUFJQYXR0ZXJu KGNoaWxkKTsKKworCQlpZiAob3B0LT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9BTFQpCisJCQlu ZXdDaGlsZHJlbiA9IGxpc3RfY29uY2F0KG5ld0NoaWxkcmVuLCBsaXN0X2NvcHkob3B0LT5jaGls ZHJlbikpOworCQllbHNlCisJCQluZXdDaGlsZHJlbiA9IGxhcHBlbmQobmV3Q2hpbGRyZW4sIG9w dCk7CisJfQorCisJcmV0dXJuIG5ld0NoaWxkcmVuOworfQorCisvKgorICogcmVtb3ZlRHVwbGlj YXRlQWx0ZXJuYXRpdmVzCisgKgkJUmVtb3ZlIGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMgZnJvbSBh IGxpc3QuCisgKgorICogRXhhbXBsZXM6CisgKiAgIChBIHwgQiB8IEEpIC0+IChBIHwgQikKKyAq ICAgKFggfCBZIHwgWCB8IFogfCBZKSAtPiAoWCB8IFkgfCBaKQorICoKKyAqIFJldHVybnMgYSBu ZXcgbGlzdCB3aXRoIG9ubHkgdW5pcXVlIGNoaWxkcmVuIChmaXJzdCBvY2N1cnJlbmNlIGtlcHQp LgorICovCitzdGF0aWMgTGlzdCAqCityZW1vdmVEdXBsaWNhdGVBbHRlcm5hdGl2ZXMoTGlzdCAq Y2hpbGRyZW4pCit7CisJTGlzdAkgICAqdW5pcXVlQ2hpbGRyZW4gPSBOSUw7CisKKwlmb3JlYWNo X25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBjaGlsZHJlbikKKwl7CisJCWJvb2wJCWlzRHVw bGljYXRlID0gZmFsc2U7CisKKwkJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCB1Y2hpbGQs IHVuaXF1ZUNoaWxkcmVuKQorCQl7CisJCQlpZiAocnByUGF0dGVybkVxdWFsKHVjaGlsZCwgY2hp bGQpKQorCQkJeworCQkJCWlzRHVwbGljYXRlID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJ fQorCisJCWlmICghaXNEdXBsaWNhdGUpCisJCQl1bmlxdWVDaGlsZHJlbiA9IGxhcHBlbmQodW5p cXVlQ2hpbGRyZW4sIGNoaWxkKTsKKwl9CisKKwlyZXR1cm4gdW5pcXVlQ2hpbGRyZW47Cit9CisK Ky8qCisgKiBvcHRpbWl6ZUFsdFBhdHRlcm4KKyAqCQlPcHRpbWl6ZSBBTFQgcGF0dGVybiBub2Rl LgorICoKKyAqIE9wdGltaXphdGlvbnM6CisgKiAgIDEuIEZsYXR0ZW4gbmVzdGVkIEFMVAorICog ICAyLiBSZW1vdmUgZHVwbGljYXRlIGFsdGVybmF0aXZlcworICogICAzLiBVbndyYXAgc2luZ2xl LWl0ZW0gQUxUCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6ZUFsdFBhdHRl cm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJLyogUmVjdXJzaXZlbHkgb3B0aW1pemUg Y2hpbGRyZW4gYW5kIGZsYXR0ZW4gbmVzdGVkIEFMVCAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0g ZmxhdHRlbkFsdENoaWxkcmVuKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCS8qIFJlbW92ZSBkdXBs aWNhdGUgYWx0ZXJuYXRpdmVzICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSByZW1vdmVEdXBsaWNh dGVBbHRlcm5hdGl2ZXMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogVW53cmFwIHNpbmdsZS1p dGVtIEFMVCAqLworCXJldHVybiB0cnlVbndyYXBTaW5nbGVDaGlsZChwYXR0ZXJuKTsKK30KKwor LyoKKyAqIHRyeU11bHRpcGx5UXVhbnRpZmllcnMKKyAqCQlUcnkgdG8gZmxhdHRlbiAoY2hpbGR7 cCxxfSl7bSxufSBpbnRvIGNoaWxke3AqbSwgcSpufS4KKyAqCisgKiBCZWxvdywgcCxxIGFyZSB0 aGUgY2hpbGQncyB7bWluLG1heH0gYW5kIG0sbiB0aGUgb3V0ZXIge21pbixtYXh9LgorICoKKyAq IEZsYXR0ZW5pbmcgaXMgdmFsaWQgb25seSB3aGVuIHRoZSByZXBldGl0aW9uIGNvdW50cyB0aGUg bmVzdGVkIHF1YW50aWZpZXJzCisgKiBjYW4gcHJvZHVjZSBmb3JtIGV4YWN0bHkgdGhlIGNvbnRp Z3VvdXMgaW50ZXJ2YWwgW3AqbSwgcSpuXS4gIEZvciBhbiBvdXRlcgorICogaXRlcmF0aW9uIGNv dW50IHQgKG0gPD0gdCA8PSBuKSB0aGUgY2hpbGQgY29udHJpYnV0ZXMgYW55IGNvdW50IGluCisg KiBbdCpwLCB0KnFdLCBhbmQgdCA9IDAgY29udHJpYnV0ZXMgezB9LiAgVGhlIHVuaW9uIG9mIHRo b3NlIGludGVydmFscyBpcworICogY29udGlndW91cywgaGVuY2UgZmxhdHRlbmFibGUsIHdoZW46 CisgKgorICogICAtIG0gPT0gbjogYSBzaW5nbGUgb3V0ZXIgY291bnQsIHNvIHRoZSByZXN1bHQg aXMganVzdCBbbSpwLCBtKnFdOyBvcgorICogICAtIHAgPT0gMDogZXZlcnkgaW50ZXJ2YWwgc3Rh cnRzIGF0IDAsIHNvIHRoZXkgYWxsIG92ZXJsYXA7IG9yCisgKiAgIC0gY29uc2VjdXRpdmUgaW50 ZXJ2YWxzIHRvdWNoIGFuZCB0aGUgemVybyBjYXNlIChpZiBhbnkpIGNvbm5lY3RzOgorICogICAg ICAgcCA8PSBNYXgobSwxKSoocS1wKSArIDEgICAodG91Y2g7IHRyaXZpYWxseSB0cnVlIGlmIHEg aXMgdW5ib3VuZGVkKQorICogICAgICAgYW5kIChtID49IDEgb3IgcCA8PSAxKSAgICAod2hlbiBt ID09IDAsIHswfSBtdXN0IHJlYWNoIFtwLHFdKQorICoKKyAqIE90aGVyd2lzZSBnYXBzIGFwcGVh ciBhbmQgdGhlIHBhdHRlcm4gaXMgbGVmdCB1bmZsYXR0ZW5lZDogKEF7Mn0pezIsM30KKyAqIHlp ZWxkcyB7NCw2fSAobm90IDQuLjYpLCBhbmQgKEF7Mix9KSogeWllbGRzIHswfSBVTklPTiBbMixJ TkYpIChub3QKKyAqIFswLElORiksIHNvIEEqIHdvdWxkIHdyb25nbHkgYWRtaXQgYSBzaW5nbGUg QSkuCisgKgorICogUmV0dXJucyB0aGUgY2hpbGQgbm9kZSB3aXRoIG11bHRpcGxpZWQgcXVhbnRp ZmllcnMgaWYgc3VjY2Vzc2Z1bCwKKyAqIG90aGVyd2lzZSByZXR1cm5zIHRoZSBvcmlnaW5hbCBw YXR0ZXJuIHVuY2hhbmdlZC4KKyAqLworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICoKK3RyeU11bHRp cGx5UXVhbnRpZmllcnMoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJUlBSUGF0dGVybk5v ZGUgKmNoaWxkOworCWJvb2wJCXNhZmU7CisJaW50NjQJCW5ld19taW5fNjQ7CisJaW50NjQJCW5l d19tYXhfNjQ7CisKKwkvKiBQYXJzZXIgYWx3YXlzIGNyZWF0ZXMgR1JPVVAgd2l0aCBleGFjdGx5 IG9uZSBjaGlsZCAqLworCUFzc2VydChsaXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJlbikgPT0g MSk7CisKKwlpZiAocGF0dGVybi0+cmVsdWN0YW50KQorCQlyZXR1cm4gcGF0dGVybjsKKworCWNo aWxkID0gKFJQUlBhdHRlcm5Ob2RlICopIGxpbml0aWFsKHBhdHRlcm4tPmNoaWxkcmVuKTsKKwor CWlmICgoY2hpbGQtPm5vZGVUeXBlICE9IFJQUl9QQVRURVJOX1ZBUiAmJgorCQkgY2hpbGQtPm5v ZGVUeXBlICE9IFJQUl9QQVRURVJOX0dST1VQKSB8fAorCQljaGlsZC0+cmVsdWN0YW50KQorCQly ZXR1cm4gcGF0dGVybjsKKworCS8qCisJICogRGVjaWRlIHdoZXRoZXIgdGhlIGFjaGlldmFibGUg Y291bnRzIGZvcm0gb25lIGNvbnRpZ3VvdXMgaW50ZXJ2YWwuICBUaGUKKwkgKiBjaGlsZCBxdWFu dGlmaWVyIGlzIHtjaGlsZC0+bWluLCBjaGlsZC0+bWF4fSBhbmQgdGhlIG91dGVyIG9uZSBpcwor CSAqIHtwYXR0ZXJuLT5taW4sIHBhdHRlcm4tPm1heH07IGVpdGhlciBtYXggbWF5IGJlIFJQUl9R VUFOVElUWV9JTkYuCisJICovCisJaWYgKHBhdHRlcm4tPm1pbiA9PSBwYXR0ZXJuLT5tYXggfHwg Y2hpbGQtPm1pbiA9PSAwKQorCQlzYWZlID0gdHJ1ZTsKKwllbHNlCisJeworCQlib29sCQl0b3Vj aDsKKwkJYm9vbAkJemVyb19vazsKKworCQkvKgorCQkgKiBDb25zZWN1dGl2ZSBpbnRlcnZhbHMg W3QqbWluLCB0Km1heF0gYW5kIFsodCsxKSptaW4sICh0KzEpKm1heF0KKwkJICogdG91Y2ggd2hl biAodCsxKSptaW4gPD0gdCptYXggKyAxLCBpLmUuIG1pbiA8PSB0KihtYXgtbWluKSArIDEuCisJ CSAqIFRoaXMgaXMgdGlnaHRlc3QgYXQgdGhlIHNtYWxsZXN0IHQgaW4gcGxheSwgTWF4KHBhdHRl cm4tPm1pbiwgMSkuCisJCSAqIEFuIHVuYm91bmRlZCBjaGlsZC0+bWF4IG1ha2VzIGV2ZXJ5IGlu dGVydmFsIHJlYWNoIElORiwgc28gdGhleQorCQkgKiBhbHdheXMgdG91Y2guCisJCSAqLworCQlp ZiAoY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCQkJdG91Y2ggPSB0cnVlOworCQll bHNlCisJCQl0b3VjaCA9ICgoaW50NjQpIGNoaWxkLT5taW4gPD0KKwkJCQkJIChpbnQ2NCkgTWF4 KHBhdHRlcm4tPm1pbiwgMSkgKiAoY2hpbGQtPm1heCAtIGNoaWxkLT5taW4pICsgMSk7CisKKwkJ LyoKKwkJICogQSBza2lwcGFibGUgb3V0ZXIgKG1pbiAwKSBhbHNvIG5lZWRzIHswfSBhZGphY2Vu dCB0byB0aGUgY2hpbGQKKwkJICogcmFuZ2UuCisJCSAqLworCQl6ZXJvX29rID0gKHBhdHRlcm4t Pm1pbiA+PSAxIHx8IGNoaWxkLT5taW4gPD0gMSk7CisKKwkJc2FmZSA9IHRvdWNoICYmIHplcm9f b2s7CisJfQorCisJaWYgKCFzYWZlKQorCQlyZXR1cm4gcGF0dGVybjsKKworCS8qIEZsYXR0ZW4g dGhlIGNoaWxkIHF1YW50aWZpZXIsIGd1YXJkaW5nIGFnYWluc3Qgb3ZlcmZsb3cuICovCisJbmV3 X21pbl82NCA9IChpbnQ2NCkgcGF0dGVybi0+bWluICogY2hpbGQtPm1pbjsKKwlpZiAobmV3X21p bl82NCA+PSBSUFJfUVVBTlRJVFlfSU5GKQorCQlyZXR1cm4gcGF0dGVybjsJCQkvKiBvdmVyZmxv dywgc2tpcCBvcHRpbWl6YXRpb24gKi8KKworCWlmIChwYXR0ZXJuLT5tYXggPT0gUlBSX1FVQU5U SVRZX0lORiB8fCBjaGlsZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpCisJCW5ld19tYXhfNjQg PSBSUFJfUVVBTlRJVFlfSU5GOworCWVsc2UKKwl7CisJCW5ld19tYXhfNjQgPSAoaW50NjQpIHBh dHRlcm4tPm1heCAqIGNoaWxkLT5tYXg7CisJCWlmIChuZXdfbWF4XzY0ID49IFJQUl9RVUFOVElU WV9JTkYpCisJCQlyZXR1cm4gcGF0dGVybjsKKwl9CisKKwljaGlsZC0+bWluID0gKGludCkgbmV3 X21pbl82NDsKKwljaGlsZC0+bWF4ID0gKGludCkgbmV3X21heF82NDsKKwlyZXR1cm4gY2hpbGQ7 Cit9CisKKy8qCisgKiB0cnlVbndyYXBHcm91cAorICoJCVRyeSB0byB1bndyYXAgR1JPVVB7MSwx fSBub2RlLgorICoKKyAqIEV4YW1wbGVzOgorICogICAoQSl7MSwxfSAgIC0+IEEKKyAqICAgKEEg Qil7MSwxfSAtPiBTRVEoQSwgQikgICh1bndyYXBzIHRoZSBpbm5lciBTRVEpCisgKiAgIChBKT8g ICAgICAgLT4gQT8gICAgICAgICAocHJvcGFnYXRlIHF1YW50aWZpZXIgdG8gc2luZ2xlIFZBUiBj aGlsZCkKKyAqICAgKEEpKz8gICAgICAtPiBBKz8gICAgICAgIChwcm9wYWdhdGUgcXVhbnRpZmll ciBpbmNsdWRpbmcgcmVsdWN0YW50KQorICoKKyAqIElmIEdST1VQIGhhcyBtaW49MSwgbWF4PTEs IHJldHVybiB0aGUgY2hpbGQgZGlyZWN0bHkgKHJlbHVjdGFudCBvbgorICogezEsMX0gaXMgbWVh bmluZ2xlc3MpLiAgSWYgR1JPVVAgaGFzIGEgc2luZ2xlIFZBUiBjaGlsZCB3aXRoIGRlZmF1bHQK KyAqIHF1YW50aWZpZXIgezEsMX0sIHByb3BhZ2F0ZSB0aGUgR1JPVVAncyBxdWFudGlmaWVyIHRv IHRoZSBjaGlsZCBhbmQKKyAqIHVud3JhcC4gIE90aGVyd2lzZSByZXR1cm5zIHRoZSBwYXR0ZXJu IHVuY2hhbmdlZC4KKyAqCisgKiBOb3RlOiBQYXJzZXIgYWx3YXlzIGNyZWF0ZXMgR1JPVVAgd2l0 aCBleGFjdGx5IG9uZSBjaGlsZCB2aWEgbGlzdF9tYWtlMSgpLgorICovCitzdGF0aWMgUlBSUGF0 dGVybk5vZGUgKgordHJ5VW53cmFwR3JvdXAoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJ UlBSUGF0dGVybk5vZGUgKmNoaWxkOworCisJLyogUGFyc2VyIGFsd2F5cyBjcmVhdGVzIEdST1VQ IHdpdGggc2luZ2xlIGNoaWxkICovCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdHRlcm4tPmNoaWxk cmVuKSA9PSAxKTsKKworCWNoaWxkID0gKFJQUlBhdHRlcm5Ob2RlICopIGxpbml0aWFsKHBhdHRl cm4tPmNoaWxkcmVuKTsKKworCS8qIEdST1VQezEsMX06IHVud3JhcCBkaXJlY3RseSAocmVsdWN0 YW50IG9uIHsxLDF9IGlzIG1lYW5pbmdsZXNzKSAqLworCWlmIChwYXR0ZXJuLT5taW4gPT0gMSAm JiBwYXR0ZXJuLT5tYXggPT0gMSkKKwkJcmV0dXJuIGNoaWxkOworCisJLyoKKwkgKiBTaW5nbGUg VkFSIGNoaWxkIHdpdGggZGVmYXVsdCB7MSwxfTogcHJvcGFnYXRlIEdST1VQJ3MgcXVhbnRpZmll ciB0bworCSAqIHRoZSBjaGlsZCBhbmQgdW53cmFwLiAgRS5nLiwgKEEpPz8gLT4gQT8/LCAoQSkr PyAtPiBBKz8KKwkgKi8KKwlpZiAoY2hpbGQtPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1ZBUiAm JgorCQljaGlsZC0+bWluID09IDEgJiYgY2hpbGQtPm1heCA9PSAxICYmIGNoaWxkLT5yZWx1Y3Rh bnQgPT0gZmFsc2UpCisJeworCQljaGlsZC0+bWluID0gcGF0dGVybi0+bWluOworCQljaGlsZC0+ bWF4ID0gcGF0dGVybi0+bWF4OworCQljaGlsZC0+cmVsdWN0YW50ID0gcGF0dGVybi0+cmVsdWN0 YW50OworCQlyZXR1cm4gY2hpbGQ7CisJfQorCisJcmV0dXJuIHBhdHRlcm47Cit9CisKKy8qCisg KiBvcHRpbWl6ZUdyb3VwUGF0dGVybgorICoJCU9wdGltaXplIEdST1VQIHBhdHRlcm4gbm9kZS4K KyAqCisgKiBPcHRpbWl6YXRpb25zOgorICogICAxLiBRdWFudGlmaWVyIG11bHRpcGxpY2F0aW9u OiAoQXttfSl7bn0gLT4gQXttKm59CisgKiAgIDIuIFVud3JhcCBHUk9VUHsxLDF9CisgKi8KK3N0 YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6ZUdyb3VwUGF0dGVybihSUFJQYXR0ZXJuTm9k ZSAqcGF0dGVybikKK3sKKwlMaXN0CSAgICpuZXdDaGlsZHJlbjsKKwlSUFJQYXR0ZXJuTm9kZSAq cmVzdWx0OworCisJLyogUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gKi8KKwluZXdDaGls ZHJlbiA9IE5JTDsKKwlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBwYXR0ZXJu LT5jaGlsZHJlbikKKwl7CisJCW5ld0NoaWxkcmVuID0gbGFwcGVuZChuZXdDaGlsZHJlbiwgb3B0 aW1pemVSUFJQYXR0ZXJuKGNoaWxkKSk7CisJfQorCXBhdHRlcm4tPmNoaWxkcmVuID0gbmV3Q2hp bGRyZW47CisKKwkvKiBUcnkgcXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbiAqLworCXJlc3VsdCA9 IHRyeU11bHRpcGx5UXVhbnRpZmllcnMocGF0dGVybik7CisJaWYgKHJlc3VsdCAhPSBwYXR0ZXJu KQorCQlyZXR1cm4gcmVzdWx0OworCisJLyogVHJ5IHVud3JhcHBpbmcgR1JPVVB7MSwxfSAqLwor CXJldHVybiB0cnlVbndyYXBHcm91cChwYXR0ZXJuKTsKK30KKworLyoKKyAqIG9wdGltaXplUlBS UGF0dGVybgorICoJCU9wdGltaXplIFJQUlBhdHRlcm5Ob2RlIHRyZWUgKGRpc3BhdGNoZXIpLgor ICoKKyAqIERpc3BhdGNoZXMgdG8gdHlwZS1zcGVjaWZpYyBvcHRpbWl6YXRpb24gZnVuY3Rpb25z LgorICogUmV0dXJucyB0aGUgb3B0aW1pemVkIHBhdHRlcm4gKG1heSBiZSBhIGRpZmZlcmVudCBu b2RlKS4KKyAqLworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICoKK29wdGltaXplUlBSUGF0dGVybihS UFJQYXR0ZXJuTm9kZSAqcGF0dGVybikKK3sKKwkvKiBQYXR0ZXJuIG5vZGVzIGZyb20gcGFyc2Vy IGFyZSBuZXZlciBOVUxMICovCisJQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCk7CisKKwljaGVja19z dGFja19kZXB0aCgpOworCisJc3dpdGNoIChwYXR0ZXJuLT5ub2RlVHlwZSkKKwl7CisJCWNhc2Ug UlBSX1BBVFRFUk5fVkFSOgorCQkJcmV0dXJuIHBhdHRlcm47CisJCWNhc2UgUlBSX1BBVFRFUk5f U0VROgorCQkJcmV0dXJuIG9wdGltaXplU2VxUGF0dGVybihwYXR0ZXJuKTsKKwkJY2FzZSBSUFJf UEFUVEVSTl9BTFQ6CisJCQlyZXR1cm4gb3B0aW1pemVBbHRQYXR0ZXJuKHBhdHRlcm4pOworCQlj YXNlIFJQUl9QQVRURVJOX0dST1VQOgorCQkJcmV0dXJuIG9wdGltaXplR3JvdXBQYXR0ZXJuKHBh dHRlcm4pOworCX0KKworCXBnX3VucmVhY2hhYmxlKCk7CisJcmV0dXJuIHBhdHRlcm47Cit9CisK Ky8qCisgKiBjb2xsZWN0RGVmaW5lVmFyaWFibGVzCisgKgkJQ29sbGVjdCB2YXJpYWJsZSBuYW1l cyBmcm9tIERFRklORSBjbGF1c2UuCisgKgorICogUG9wdWxhdGVzIHZhck5hbWVzIGFycmF5IHdp dGggdmFyaWFibGUgbmFtZXMgaW4gREVGSU5FIG9yZGVyLgorICogVGhpcyBlbnN1cmVzIHZhcklk ID09IGRlZmluZUlkeCwgZWxpbWluYXRpbmcgcnVudGltZSBtYXBwaW5nLgorICogUmV0dXJucyB0 aGUgbnVtYmVyIG9mIHZhcmlhYmxlcyBjb2xsZWN0ZWQuCisgKi8KK3N0YXRpYyBpbnQKK2NvbGxl Y3REZWZpbmVWYXJpYWJsZXMoTGlzdCAqZGVmaW5lVmFyaWFibGVMaXN0LCBjaGFyICoqdmFyTmFt ZXMpCit7CisJaW50CQkJbnVtVmFycyA9IDA7CisKKwlmb3JlYWNoX25vZGUoU3RyaW5nLCB2YXJu YW1lLCBkZWZpbmVWYXJpYWJsZUxpc3QpCisJeworCQkvKiBQYXJzZXIgYWxyZWFkeSBjaGVja2Vk IHRoaXMgbGltaXQgaW4gdHJhbnNmb3JtRGVmaW5lQ2xhdXNlICovCisJCUFzc2VydChudW1WYXJz IDw9IFJQUl9WQVJJRF9NQVgpOworCisJCXZhck5hbWVzW251bVZhcnMrK10gPSBzdHJWYWwodmFy bmFtZSk7CisJfQorCisJcmV0dXJuIG51bVZhcnM7Cit9CisKKy8qCisgKiBzY2FuUlBSUGF0dGVy blJlY3Vyc2l2ZQorICoJCVJlY3Vyc2l2ZWx5IHNjYW4gcGF0dGVybiBBU1QgKHBhc3MgMSBpbnRl cm5hbCkuCisgKgorICogQ29sbGVjdHMgdW5pcXVlIHZhcmlhYmxlIG5hbWVzIGFuZCBjb3VudHMg ZWxlbWVudHMgd2hpbGUgdHJhY2tpbmcgZGVwdGguCisgKiBWYXJpYWJsZXMgZnJvbSBERUZJTkUg Y2xhdXNlIGFyZSBhbHJlYWR5IGluIHZhck5hbWVzOyB0aGlzIGFkZHMgYW55CisgKiBhZGRpdGlv bmFsIHZhcmlhYmxlcyBmb3VuZCBpbiB0aGUgcGF0dGVybi4KKyAqLworc3RhdGljIHZvaWQKK3Nj YW5SUFJQYXR0ZXJuUmVjdXJzaXZlKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFt ZXMsIGludCAqbnVtVmFycywKKwkJCQkJCWludCAqbnVtRWxlbWVudHMsIFJQUkRlcHRoIGRlcHRo LCBSUFJEZXB0aCAqbWF4RGVwdGgpCit7CisJaW50CQkJaTsKKworCS8qIFBhdHRlcm4gbm9kZXMg ZnJvbSBwYXJzZXIgYXJlIG5ldmVyIE5VTEwgKi8KKwlBc3NlcnQobm9kZSAhPSBOVUxMKTsKKwor CWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwkvKiBDaGVjayByZWN1cnNpb24gZGVwdGggbGltaXQg YmVmb3JlIG92ZXJmbG93IG9jY3VycyAqLworCWlmIChkZXB0aCA+PSBSUFJfREVQVEhfTUFYKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VF REVEKSwKKwkJCQllcnJtc2coInBhdHRlcm4gbmVzdGluZyB0b28gZGVlcCIpLAorCQkJCWVycmRl dGFpbCgiUGF0dGVybiBuZXN0aW5nIGRlcHRoICVkIGV4Y2VlZHMgbWF4aW11bSAlZC4iLAorCQkJ CQkJICBkZXB0aCwgUlBSX0RFUFRIX01BWCAtIDEpKTsKKworCS8qIFRyYWNrIG1heGltdW0gZGVw dGggKi8KKwkqbWF4RGVwdGggPSBNYXgoKm1heERlcHRoLCBkZXB0aCk7CisKKwlzd2l0Y2ggKG5v ZGUtPm5vZGVUeXBlKQorCXsKKwkJY2FzZSBSUFJfUEFUVEVSTl9WQVI6CisJCQkvKiBDb3VudCBl bGVtZW50ICovCisJCQkoKm51bUVsZW1lbnRzKSsrOworCisJCQkvKiBDb2xsZWN0IHZhcmlhYmxl IG5hbWUgaWYgbm90IGFscmVhZHkgcHJlc2VudCAqLworCQkJZm9yIChpID0gMDsgaSA8ICpudW1W YXJzOyBpKyspCisJCQl7CisJCQkJaWYgKHN0cmNtcCh2YXJOYW1lc1tpXSwgbm9kZS0+dmFyTmFt ZSkgPT0gMCkKKwkJCQkJcmV0dXJuOwkJLyogQWxyZWFkeSBoYXZlIHRoaXMgdmFyaWFibGUgKi8K KwkJCX0KKworCQkJLyoKKwkJCSAqIFZhcmlhYmxlIG5vdCBpbiBERUZJTkUgY2xhdXNlIC0gdGhp cyBpcyB2YWxpZCBwZXIgSVNPL0lFQworCQkJICogMTkwNzUtNSBGZWF0dXJlIFIwMjAuICBTdWNo IHZhcmlhYmxlcyBhcmUgaW1wbGljaXRseSBUUlVFLiBBZGQKKwkJCSAqIHRvIHZhck5hbWVzIHNv IHRoZXkgZ2V0IGEgdmFySWQgPj0gZGVmaW5lVmFyaWFibGVMaXN0IGxlbmd0aCwKKwkJCSAqIHdo aWNoIGV4ZWN1dG9yIHRyZWF0cyBhcyBUUlVFLgorCQkJICovCisJCQlBc3NlcnQoKm51bVZhcnMg PD0gUlBSX1ZBUklEX01BWCk7CisJCQl2YXJOYW1lc1soKm51bVZhcnMpKytdID0gbm9kZS0+dmFy TmFtZTsKKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgorCQkJLyogU2VxdWVu Y2U6IGp1c3QgcmVjdXJzZSBpbnRvIGNoaWxkcmVuICovCisJCQlmb3JlYWNoX25vZGUoUlBSUGF0 dGVybk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQlzY2FuUlBSUGF0dGVy blJlY3Vyc2l2ZShjaGlsZCwgdmFyTmFtZXMsCisJCQkJCQkJCQkJbnVtVmFycywgbnVtRWxlbWVu dHMsIGRlcHRoLCBtYXhEZXB0aCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRU RVJOX0dST1VQOgorCisJCQkvKgorCQkJICogQWRkIEJFR0lOIGVsZW1lbnQgaWYgZ3JvdXAgaGFz IG5vbi10cml2aWFsIHF1YW50aWZpZXIgKG5vdAorCQkJICogezEsMX0pCisJCQkgKi8KKwkJCWlm IChub2RlLT5taW4gIT0gMSB8fCBub2RlLT5tYXggIT0gMSkKKwkJCQkoKm51bUVsZW1lbnRzKSsr OworCisJCQkvKiBSZWN1cnNlIGludG8gY2hpbGRyZW4gYXQgaW5jcmVhc2VkIGRlcHRoICovCisJ CQlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJlbikKKwkJ CXsKKwkJCQlzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShjaGlsZCwgdmFyTmFtZXMsCisJCQkJCQkJ CQkJbnVtVmFycywgbnVtRWxlbWVudHMsIGRlcHRoICsgMSwgbWF4RGVwdGgpOworCQkJfQorCisJ CQkvKiBBZGQgRU5EIGVsZW1lbnQgaWYgZ3JvdXAgaGFzIG5vbi10cml2aWFsIHF1YW50aWZpZXIg KG5vdCB7MSwxfSkgKi8KKwkJCWlmIChub2RlLT5taW4gIT0gMSB8fCBub2RlLT5tYXggIT0gMSkK KwkJCQkoKm51bUVsZW1lbnRzKSsrOworCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9B TFQ6CisJCQkvKiBDb3VudCBBTFQgc3RhcnQgZWxlbWVudCAqLworCQkJKCpudW1FbGVtZW50cykr KzsKKworCQkJLyogUmVjdXJzZSBpbnRvIGNoaWxkcmVuIGF0IGluY3JlYXNlZCBkZXB0aCAqLwor CQkJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCisJ CQl7CisJCQkJc2NhblJQUlBhdHRlcm5SZWN1cnNpdmUoY2hpbGQsIHZhck5hbWVzLAorCQkJCQkJ CQkJCW51bVZhcnMsIG51bUVsZW1lbnRzLCBkZXB0aCArIDEsIG1heERlcHRoKTsKKwkJCX0KKwkJ CWJyZWFrOworCX0KK30KKworLyoKKyAqIHNjYW5SUFJQYXR0ZXJuCisgKgkJU2NhbiBwYXR0ZXJu IEFTVCAocGFzcyAxIGVudHJ5IHBvaW50KS4KKyAqCisgKiBDb2xsZWN0cyB1bmlxdWUgdmFyaWFi bGUgbmFtZXMgKGFwcGVuZGluZyB0byB0aG9zZSBmcm9tIERFRklORSBjbGF1c2UpLAorICogY291 bnRzIHRvdGFsIGVsZW1lbnRzIChpbmNsdWRpbmcgRklOIG1hcmtlciksIGFuZCB0cmFja3MgbWF4 aW11bSBkZXB0aC4KKyAqIFJlcG9ydHMgZXJyb3IgaWYgZWxlbWVudCBjb3VudCBleGNlZWRzIFJQ Ul9FTEVNSURYX01BWC4KKyAqLworc3RhdGljIHZvaWQKK3NjYW5SUFJQYXR0ZXJuKFJQUlBhdHRl cm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGludCAqbnVtVmFycywKKwkJCSAgIGludCAq bnVtRWxlbWVudHMsIFJQUkRlcHRoICptYXhEZXB0aCkKK3sKKwkqbnVtRWxlbWVudHMgPSAwOwor CSptYXhEZXB0aCA9IDA7CisKKwlzY2FuUlBSUGF0dGVyblJlY3Vyc2l2ZShub2RlLCB2YXJOYW1l cywgbnVtVmFycywgbnVtRWxlbWVudHMsIDAsIG1heERlcHRoKTsKKworCSgqbnVtRWxlbWVudHMp Kys7CQkJLyogKzEgZm9yIEZJTiBtYXJrZXIgKi8KKworCWlmICgqbnVtRWxlbWVudHMgPiBSUFJf RUxFTUlEWF9NQVgpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1BST0dS QU1fTElNSVRfRVhDRUVERUQpLAorCQkJCWVycm1zZygicGF0dGVybiB0b28gY29tcGxleCIpLAor CQkJCWVycmRldGFpbCgiUGF0dGVybiBoYXMgJWQgZWxlbWVudHMsIG1heGltdW0gaXMgJWQuIiwK KwkJCQkJCSAgKm51bUVsZW1lbnRzLCBSUFJfRUxFTUlEWF9NQVgpKTsKK30KKworLyoKKyAqIG1h a2VSUFJQYXR0ZXJuCisgKgkJQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgUlBSUGF0dGVybiBzdHJ1 Y3R1cmUuCisgKgorICogQ3JlYXRlcyB0aGUgcGF0dGVybiBzdHJ1Y3R1cmUsIGNvcGllcyB2YXJp YWJsZSBuYW1lcywgYW5kIGFsbG9jYXRlcworICogdGhlIGVsZW1lbnRzIGFycmF5LiBUaGUgZWxl bWVudHMgYXJyYXkgaXMgemVyby1pbml0aWFsaXplZC4KKyAqLworc3RhdGljIFJQUlBhdHRlcm4g KgorbWFrZVJQUlBhdHRlcm4oaW50IG51bVZhcnMsIGludCBudW1FbGVtZW50cywgUlBSRGVwdGgg bWF4RGVwdGgsCisJCQkgICBjaGFyICoqdmFyTmFtZXNTdGFjaykKK3sKKwlSUFJQYXR0ZXJuICpy ZXN1bHQ7CisJaW50CQkJaTsKKworCXJlc3VsdCA9IG1ha2VOb2RlKFJQUlBhdHRlcm4pOworCXJl c3VsdC0+bnVtVmFycyA9IG51bVZhcnM7CisKKwkvKiBkZXB0aCA8IFJQUl9ERVBUSF9NQVgsIHNv IG1heERlcHRoKzEgbmV2ZXIgYWxpYXNlcyBSUFJfREVQVEhfTk9ORS4gKi8KKwlBc3NlcnQobWF4 RGVwdGggPCBSUFJfREVQVEhfTUFYKTsKKwlyZXN1bHQtPm1heERlcHRoID0gbWF4RGVwdGggKyAx OwkvKiArMTogZGVwdGggaXMgMC1iYXNlZCAqLworCXJlc3VsdC0+bnVtRWxlbWVudHMgPSBudW1F bGVtZW50czsKKworCS8qIENvcHkgdmFyTmFtZXMgKHBhdHRlcm4gbXVzdCBoYXZlIGF0IGxlYXN0 IG9uZSB2YXJpYWJsZSkgKi8KKwlBc3NlcnQobnVtVmFycyA+IDApOworCXJlc3VsdC0+dmFyTmFt ZXMgPSBwYWxsb2MobnVtVmFycyAqIHNpemVvZihjaGFyICopKTsKKwlmb3IgKGkgPSAwOyBpIDwg bnVtVmFyczsgaSsrKQorCQlyZXN1bHQtPnZhck5hbWVzW2ldID0gcHN0cmR1cCh2YXJOYW1lc1N0 YWNrW2ldKTsKKworCS8qIEFsbG9jYXRlIGVsZW1lbnRzIGFycmF5ICh6ZXJvLWluaXQgZm9yIHJl c2VydmVkIGZpZWxkcykgKi8KKwlBc3NlcnQobnVtRWxlbWVudHMgPj0gMik7CisJcmVzdWx0LT5l bGVtZW50cyA9IHBhbGxvYzAobnVtRWxlbWVudHMgKiBzaXplb2YoUlBSUGF0dGVybkVsZW1lbnQp KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBnZXRWYXJJZEZyb21QYXR0ZXJuCisg KgkJR2V0IHZhcmlhYmxlIElEIGZvciBhIHZhcmlhYmxlIG5hbWUgZnJvbSBSUFJQYXR0ZXJuLgor ICoKKyAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSB2YXJpYWJsZSBpbiB0aGUgdmFyTmFtZXMg YXJyYXkuCisgKi8KK3N0YXRpYyBSUFJWYXJJZAorZ2V0VmFySWRGcm9tUGF0dGVybihSUFJQYXR0 ZXJuICpwYXQsIGNvbnN0IGNoYXIgKnZhck5hbWUpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBw YXQtPm51bVZhcnM7IGkrKykKKwl7CisJCWlmIChzdHJjbXAocGF0LT52YXJOYW1lc1tpXSwgdmFy TmFtZSkgPT0gMCkKKwkJCXJldHVybiAoUlBSVmFySWQpIGk7CisJfQorCisJLyogU2hvdWxkIG5v dCBoYXBwZW4gLSB2YXJpYWJsZSBzaG91bGQgYWxyZWFkeSBiZSBjb2xsZWN0ZWQgKi8KKwllbG9n KEVSUk9SLCAicGF0dGVybiB2YXJpYWJsZSBcIiVzXCIgbm90IGZvdW5kIiwgdmFyTmFtZSk7CisJ cGdfdW5yZWFjaGFibGUoKTsKK30KKworLyoKKyAqIGZpbGxSUFJQYXR0ZXJuVmFyCisgKgkJRmls bCBhIFZBUiBwYXR0ZXJuIGVsZW1lbnQuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgVkFS IGlzIG51bGxhYmxlIChjYW4gbWF0Y2ggemVybyByb3dzKS4KKyAqLworc3RhdGljIGJvb2wKK2Zp bGxSUFJQYXR0ZXJuVmFyKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsIGlu dCAqaWR4LCBSUFJEZXB0aCBkZXB0aCkKK3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZw YXQtPmVsZW1lbnRzWyppZHhdOworCisJbWVtc2V0KGVsZW0sIDAsIHNpemVvZihSUFJQYXR0ZXJu RWxlbWVudCkpOworCWVsZW0tPnZhcklkID0gZ2V0VmFySWRGcm9tUGF0dGVybihwYXQsIG5vZGUt PnZhck5hbWUpOworCWVsZW0tPmRlcHRoID0gZGVwdGg7CisJZWxlbS0+bWluID0gbm9kZS0+bWlu OworCWVsZW0tPm1heCA9IChub2RlLT5tYXggPT0gUEdfSU5UMzJfTUFYKSA/IFJQUl9RVUFOVElU WV9JTkYgOiBub2RlLT5tYXg7CisJQXNzZXJ0KGVsZW0tPm1pbiA+PSAwICYmIGVsZW0tPm1pbiA8 IFJQUl9RVUFOVElUWV9JTkYgJiYKKwkJICAgZWxlbS0+bWF4ID49IDEgJiYKKwkJICAgKGVsZW0t Pm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8IGVsZW0tPm1pbiA8PSBlbGVtLT5tYXgpKTsKKwll bGVtLT5uZXh0ID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKKwllbGVtLT5qdW1wID0gUlBSX0VMRU1J RFhfSU5WQUxJRDsKKwlpZiAobm9kZS0+cmVsdWN0YW50KQorCQllbGVtLT5mbGFncyB8PSBSUFJf RUxFTV9SRUxVQ1RBTlQ7CisJKCppZHgpKys7CisKKwlyZXR1cm4gKG5vZGUtPm1pbiA9PSAwKTsK K30KKworLyoKKyAqIGZpbGxSUFJQYXR0ZXJuR3JvdXAKKyAqCQlGaWxsIGEgR1JPVVAgcGF0dGVy biBhbmQgaXRzIGNoaWxkcmVuLgorICoKKyAqIENyZWF0ZXMgZWxlbWVudHMgZm9yIGdyb3VwIGNv bnRlbnQgYXQgaW5jcmVhc2VkIGRlcHRoLCBwbHVzIEJFR0lOL0VORAorICogbWFya2VyIHBhaXIg aWYgdGhlIGdyb3VwIGhhcyBhIG5vbi10cml2aWFsIHF1YW50aWZpZXIgKG5vdCB7MSwxfSkuCisg KgorICogRWxlbWVudCBsYXlvdXQgZm9yIChBIEIpezIsM306CisgKgorICogICBbQkVHSU5dICBb QV0gIFtCXSAgW0VORF0gIFtuZXh0IGVsZW1lbnQuLi5dCisgKiAgICAgfCAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgXgorICogICAgIHwgICAgICAgICAgICAgICAgICArLS0ganVtcCAtLSsg KGxvb3AgYmFjayB0byBmaXJzdCBjaGlsZCkKKyAqICAgICArLS0tLSBqdW1wIC0tLS0tLS0tLS0t LS0tLS0tLS0rIChza2lwIHRvIGFmdGVyIEVORCkKKyAqCisgKiBCRUdJTi5qdW1wIHBvaW50cyBw YXN0IEVORCAoc2tpcCBwYXRoIHdoZW4gY291bnQgPj0gbWF4IG9yIG1pbiA9PSAwKS4KKyAqIEVO RC5qdW1wIHBvaW50cyB0byB0aGUgZmlyc3QgY2hpbGQgKGxvb3AtYmFjayBwYXRoKS4KKyAqIEJF R0lOLm5leHQgYW5kIEVORC5uZXh0IGFyZSBzZXQgbGF0ZXIgYnkgZmluYWxpemVSUFJQYXR0ZXJu KCkuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgZ3JvdXAgaXMgbnVsbGFibGUuICBBIGdy b3VwIGlzIG51bGxhYmxlIHdoZW4gaXRzCisgKiBtaW4gaXMgMCAoY2FuIGJlIHNraXBwZWQgZW50 aXJlbHkpIG9yIGl0cyBib2R5IGlzIG51bGxhYmxlIChldmVyeSBwYXRoCisgKiB0aHJvdWdoIHRo ZSBib2R5IGNhbiBtYXRjaCB6ZXJvIHJvd3MpLgorICovCitzdGF0aWMgYm9vbAorZmlsbFJQUlBh dHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LCBpbnQgKmlk eCwgUlBSRGVwdGggZGVwdGgpCit7CisJaW50CQkJZ3JvdXBTdGFydElkeCA9ICppZHg7CisJaW50 CQkJYmVnaW5JZHggPSAtMTsKKwlib29sCQlib2R5TnVsbGFibGUgPSB0cnVlOworCisJLyogQWRk IEJFR0lOIG1hcmtlciBpZiBncm91cCBoYXMgbm9uLXRyaXZpYWwgcXVhbnRpZmllciAobm90IHsx LDF9KSAqLworCWlmIChub2RlLT5taW4gIT0gMSB8fCBub2RlLT5tYXggIT0gMSkKKwl7CisJCVJQ UlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdC0+ZWxlbWVudHNbKmlkeF07CisKKwkJYmVnaW5J ZHggPSAqaWR4OworCQltZW1zZXQoZWxlbSwgMCwgc2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSk7 CisJCWVsZW0tPnZhcklkID0gUlBSX1ZBUklEX0JFR0lOOworCQllbGVtLT5kZXB0aCA9IGRlcHRo OworCQllbGVtLT5taW4gPSBub2RlLT5taW47CisJCWVsZW0tPm1heCA9IChub2RlLT5tYXggPT0g UEdfSU5UMzJfTUFYKSA/IFJQUl9RVUFOVElUWV9JTkYgOiBub2RlLT5tYXg7CisJCUFzc2VydChl bGVtLT5taW4gPj0gMCAmJiBlbGVtLT5taW4gPCBSUFJfUVVBTlRJVFlfSU5GICYmCisJCQkgICBl bGVtLT5tYXggPj0gMSAmJgorCQkJICAgKGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8 IGVsZW0tPm1pbiA8PSBlbGVtLT5tYXgpKTsKKwkJZWxlbS0+bmV4dCA9IFJQUl9FTEVNSURYX0lO VkFMSUQ7CS8qIHNldCBieSBmaW5hbGl6ZSAqLworCQllbGVtLT5qdW1wID0gUlBSX0VMRU1JRFhf SU5WQUxJRDsJLyogc2V0IGFmdGVyIEVORCAqLworCQlpZiAobm9kZS0+cmVsdWN0YW50KQorCQkJ ZWxlbS0+ZmxhZ3MgfD0gUlBSX0VMRU1fUkVMVUNUQU5UOworCQkoKmlkeCkrKzsKKwkJZ3JvdXBT dGFydElkeCA9ICppZHg7CS8qIGNoaWxkcmVuIHN0YXJ0IGFmdGVyIEJFR0lOICovCisJfQorCisJ Zm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCisJewor CQlpZiAoIWZpbGxSUFJQYXR0ZXJuKGNoaWxkLCBwYXQsIGlkeCwgZGVwdGggKyAxKSkKKwkJCWJv ZHlOdWxsYWJsZSA9IGZhbHNlOworCX0KKworCS8qIEFkZCBncm91cCBlbmQgbWFya2VyIGlmIGdy b3VwIGhhcyBub24tdHJpdmlhbCBxdWFudGlmaWVyIChub3QgezEsMX0pICovCisJaWYgKG5vZGUt Pm1pbiAhPSAxIHx8IG5vZGUtPm1heCAhPSAxKQorCXsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmJl Z2luRWxlbSA9ICZwYXQtPmVsZW1lbnRzW2JlZ2luSWR4XTsKKwkJUlBSUGF0dGVybkVsZW1lbnQg KmVuZEVsZW0gPSAmcGF0LT5lbGVtZW50c1sqaWR4XTsKKworCQltZW1zZXQoZW5kRWxlbSwgMCwg c2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSk7CisJCWVuZEVsZW0tPnZhcklkID0gUlBSX1ZBUklE X0VORDsKKwkJZW5kRWxlbS0+ZGVwdGggPSBkZXB0aDsKKwkJZW5kRWxlbS0+bWluID0gbm9kZS0+ bWluOworCQllbmRFbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IFBHX0lOVDMyX01BWCkgPyBSUFJf UVVBTlRJVFlfSU5GIDogbm9kZS0+bWF4OworCQlBc3NlcnQoZW5kRWxlbS0+bWluID49IDAgJiYg ZW5kRWxlbS0+bWluIDwgUlBSX1FVQU5USVRZX0lORiAmJgorCQkJICAgZW5kRWxlbS0+bWF4ID49 IDEgJiYKKwkJCSAgIChlbmRFbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBlbmRFbGVt LT5taW4gPD0gZW5kRWxlbS0+bWF4KSk7CisJCWVuZEVsZW0tPm5leHQgPSBSUFJfRUxFTUlEWF9J TlZBTElEOworCQllbmRFbGVtLT5qdW1wID0gZ3JvdXBTdGFydElkeDsJLyogbG9vcCB0byBmaXJz dCBjaGlsZCAqLworCQlpZiAobm9kZS0+cmVsdWN0YW50KQorCQkJZW5kRWxlbS0+ZmxhZ3MgfD0g UlBSX0VMRU1fUkVMVUNUQU5UOworCisJCS8qCisJCSAqIElmIHRoZSBncm91cCBib2R5IGlzIG51 bGxhYmxlIChhbGwgcGF0aHMgY2FuIG1hdGNoIGVtcHR5KSwgbWFyayB0aGUKKwkJICogRU5EIGVs ZW1lbnQgc28gdGhhdCBuZmFfYWR2YW5jZV9lbmQgY2FuIGZhc3QtZm9yd2FyZCB0aGUgaXRlcmF0 aW9uCisJCSAqIGNvdW50IHRvIG1pbiB3aGVuIHJlYWNoZWQgdmlhIGVtcHR5LW1hdGNoIHNraXAg cGF0aHMuCisJCSAqLworCQlpZiAoYm9keU51bGxhYmxlKQorCQkJZW5kRWxlbS0+ZmxhZ3MgfD0g UlBSX0VMRU1fRU1QVFlfTE9PUDsKKworCQkoKmlkeCkrKzsKKworCQkvKiBTZXQgQkVHSU4gc2tp cCBwb2ludGVyIChuZXh0IGlzIHNldCBieSBmaW5hbGl6ZSkgKi8KKwkJYmVnaW5FbGVtLT5qdW1w ID0gKmlkeDsgLyogc2tpcDogZ28gdG8gYWZ0ZXIgRU5EICovCisJfQorCisJcmV0dXJuIChub2Rl LT5taW4gPT0gMCB8fCBib2R5TnVsbGFibGUpOworfQorCisvKgorICogZmlsbFJQUlBhdHRlcm5B bHQKKyAqCQlGaWxsIGFuIEFMVCBwYXR0ZXJuIGFuZCBpdHMgYWx0ZXJuYXRpdmVzLgorICoKKyAq IENyZWF0ZXMgQUxUX1NUQVJUIG1hcmtlciwgZmlsbHMgZWFjaCBhbHRlcm5hdGl2ZSBhdCBpbmNy ZWFzZWQgZGVwdGgsCisgKiBzZXRzIGp1bXAgcG9pbnRlcnMgZm9yIGJhY2t0cmFja2luZywgYW5k IG5leHQgcG9pbnRlcnMgZm9yIHN1Y2Nlc3NmdWwgcGF0aHMuCisgKgorICogUmV0dXJucyB0cnVl IGlmIGFueSBicmFuY2ggaXMgbnVsbGFibGUgKE9SIHNlbWFudGljczogb25lIG51bGxhYmxlCisg KiBicmFuY2ggc3VmZmljZXMgZm9yIHRoZSBhbHRlcm5hdGlvbiB0byBwcm9kdWNlIGFuIGVtcHR5 IG1hdGNoKS4KKyAqLworc3RhdGljIGJvb2wKK2ZpbGxSUFJQYXR0ZXJuQWx0KFJQUlBhdHRlcm5O b2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0Q2VsbCAgICpsYzI7CisJUlBSUGF0dGVybkVsZW1lbnQg KmVsZW07CisJTGlzdAkgICAqYWx0QnJhbmNoU3RhcnRzID0gTklMOworCUxpc3QJICAgKmFsdEVu ZFBvc2l0aW9ucyA9IE5JTDsKKwlpbnQJCQlhZnRlckFsdElkeDsKKwlib29sCQlhbnlOdWxsYWJs ZSA9IGZhbHNlOworCisJLyogQWRkIGFsdGVybmF0aW9uIHN0YXJ0IG1hcmtlciAqLworCWVsZW0g PSAmcGF0LT5lbGVtZW50c1sqaWR4XTsKKwltZW1zZXQoZWxlbSwgMCwgc2l6ZW9mKFJQUlBhdHRl cm5FbGVtZW50KSk7CisJZWxlbS0+dmFySWQgPSBSUFJfVkFSSURfQUxUOworCWVsZW0tPmRlcHRo ID0gZGVwdGg7CisJZWxlbS0+bWluID0gMTsKKwllbGVtLT5tYXggPSAxOworCWVsZW0tPm5leHQg PSBSUFJfRUxFTUlEWF9JTlZBTElEOworCWVsZW0tPmp1bXAgPSBSUFJfRUxFTUlEWF9JTlZBTElE OworCSgqaWR4KSsrOworCisJLyogRmlsbCBlYWNoIGFsdGVybmF0aXZlICovCisJZm9yZWFjaF9u b2RlKFJQUlBhdHRlcm5Ob2RlLCBhbHQsIG5vZGUtPmNoaWxkcmVuKQorCXsKKwkJaW50CQkJYnJh bmNoU3RhcnQgPSAqaWR4OworCisJCWFsdEJyYW5jaFN0YXJ0cyA9IGxhcHBlbmRfaW50KGFsdEJy YW5jaFN0YXJ0cywgYnJhbmNoU3RhcnQpOworCQlpZiAoZmlsbFJQUlBhdHRlcm4oYWx0LCBwYXQs IGlkeCwgZGVwdGggKyAxKSkKKwkJCWFueU51bGxhYmxlID0gdHJ1ZTsKKwkJYWx0RW5kUG9zaXRp b25zID0gbGFwcGVuZF9pbnQoYWx0RW5kUG9zaXRpb25zLCAqaWR4IC0gMSk7CisJfQorCisJLyog U2V0IGp1bXAgb24gZmlyc3QgZWxlbWVudCBvZiBlYWNoIGFsdGVybmF0aXZlIHRvIG5leHQgYWx0 ZXJuYXRpdmUgKi8KKwlmb3JlYWNoKGxjLCBhbHRCcmFuY2hTdGFydHMpCisJeworCQlpbnQJCQlm aXJzdEVsZW1JZHggPSBsZmlyc3RfaW50KGxjKTsKKworCQlpZiAobG5leHQoYWx0QnJhbmNoU3Rh cnRzLCBsYykgIT0gTlVMTCkKKwkJCXBhdC0+ZWxlbWVudHNbZmlyc3RFbGVtSWR4XS5qdW1wID0g bGZpcnN0X2ludChsbmV4dChhbHRCcmFuY2hTdGFydHMsIGxjKSk7CisJfQorCisJLyogU2V0IG5l eHQgb24gbGFzdCBlbGVtZW50IG9mIGVhY2ggYWx0ZXJuYXRpdmUgdG8gYWZ0ZXIgdGhlIGFsdGVy bmF0aW9uICovCisJYWZ0ZXJBbHRJZHggPSAqaWR4OworCisJZm9yYm90aChsYywgYWx0RW5kUG9z aXRpb25zLCBsYzIsIGFsdEJyYW5jaFN0YXJ0cykKKwl7CisJCWludAkJCWVuZFBvcyA9IGxmaXJz dF9pbnQobGMpOworCQlpbnQJCQlicmFuY2hTdGFydCA9IGxmaXJzdF9pbnQobGMyKTsKKworCQlp ZiAocGF0LT5lbGVtZW50c1tlbmRQb3NdLm5leHQgIT0gUlBSX0VMRU1JRFhfSU5WQUxJRCkKKwkJ eworCQkJLyoKKwkJCSAqIEFuIGlubmVyIEFMVCBhbHJlYWR5IHNldCBuZXh0IG9uIHRoaXMgZWxl bWVudC4gIFJlZGlyZWN0IGFsbAorCQkJICogZWxlbWVudHMgaW4gdGhpcyBicmFuY2ggdGhhdCBz aGFyZSB0aGUgc2FtZSB0YXJnZXQgdG8gcG9pbnQgdG8KKwkJCSAqIGFmdGVyIHRoaXMgQUxUIGlu c3RlYWQuCisJCQkgKi8KKwkJCWludAkJCW9sZFRhcmdldCA9IHBhdC0+ZWxlbWVudHNbZW5kUG9z XS5uZXh0OworCQkJaW50CQkJajsKKworCQkJZm9yIChqID0gYnJhbmNoU3RhcnQ7IGogPD0gZW5k UG9zOyBqKyspCisJCQl7CisJCQkJaWYgKHBhdC0+ZWxlbWVudHNbal0ubmV4dCA9PSBvbGRUYXJn ZXQpCisJCQkJCXBhdC0+ZWxlbWVudHNbal0ubmV4dCA9IGFmdGVyQWx0SWR4OworCQkJfQorCQl9 CisJCWVsc2UKKwkJeworCQkJcGF0LT5lbGVtZW50c1tlbmRQb3NdLm5leHQgPSBhZnRlckFsdElk eDsKKwkJfQorCX0KKworCWxpc3RfZnJlZShhbHRCcmFuY2hTdGFydHMpOworCWxpc3RfZnJlZShh bHRFbmRQb3NpdGlvbnMpOworCisJcmV0dXJuIGFueU51bGxhYmxlOworfQorCisvKgorICogZmls bFJQUlBhdHRlcm4KKyAqCQlGaWxsIHBhdHRlcm4gZWxlbWVudHMgYXJyYXkgZnJvbSBBU1QgKHBh c3MgMikuCisgKgorICogUmVjdXJzaXZlbHkgdHJhdmVyc2VzIEFTVCBhbmQgcG9wdWxhdGVzIHBy ZS1hbGxvY2F0ZWQgZWxlbWVudHMgYXJyYXkuCisgKiBEaXNwYXRjaGVzIHRvIHR5cGUtc3BlY2lm aWMgZmlsbCBmdW5jdGlvbnMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXR0ZXJuIGlz IG51bGxhYmxlIChjYW4gbWF0Y2ggemVybyByb3dzKS4KKyAqIEZvciBTRVEgbm9kZXMsIGFsbCBj aGlsZHJlbiBtdXN0IGJlIG51bGxhYmxlIChBTkQpLgorICovCitzdGF0aWMgYm9vbAorZmlsbFJQ UlBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBhdHRlcm4gKnBhdCwgaW50ICppZHgs IFJQUkRlcHRoIGRlcHRoKQoreworCWJvb2wJCWFsbE51bGxhYmxlID0gdHJ1ZTsKKworCS8qIFBh dHRlcm4gbm9kZXMgZnJvbSBwYXJzZXIgYXJlIG5ldmVyIE5VTEwgKi8KKwlBc3NlcnQobm9kZSAh PSBOVUxMKTsKKworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlzd2l0Y2ggKG5vZGUtPm5vZGVU eXBlKQorCXsKKwkJY2FzZSBSUFJfUEFUVEVSTl9TRVE6CisJCQlmb3JlYWNoX25vZGUoUlBSUGF0 dGVybk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQlpZiAoIWZpbGxSUFJQ YXR0ZXJuKGNoaWxkLCBwYXQsIGlkeCwgZGVwdGgpKQorCQkJCQlhbGxOdWxsYWJsZSA9IGZhbHNl OworCQkJfQorCQkJcmV0dXJuIGFsbE51bGxhYmxlOworCisJCWNhc2UgUlBSX1BBVFRFUk5fVkFS OgorCQkJcmV0dXJuIGZpbGxSUFJQYXR0ZXJuVmFyKG5vZGUsIHBhdCwgaWR4LCBkZXB0aCk7CisK KwkJY2FzZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCXJldHVybiBmaWxsUlBSUGF0dGVybkdyb3Vw KG5vZGUsIHBhdCwgaWR4LCBkZXB0aCk7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9BTFQ6CisJCQly ZXR1cm4gZmlsbFJQUlBhdHRlcm5BbHQobm9kZSwgcGF0LCBpZHgsIGRlcHRoKTsKKwl9CisKKwlw Z191bnJlYWNoYWJsZSgpOworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGZpbmFsaXplUlBS UGF0dGVybgorICoJCUZpbmFsaXplIHBhdHRlcm4gc3RydWN0dXJlIGFmdGVyIGZpbGxpbmcgZWxl bWVudHMuCisgKgorICogVGhpcyBwZXJmb3JtczoKKyAqICAgMS4gSW5pdGlhbGl6ZSBhYnNvcnB0 aW9uIGZsYWcgdG8gZmFsc2UKKyAqICAgMi4gU2V0IHVwIG5leHQgcG9pbnRlcnMgZm9yIHNlcXVl bnRpYWwgZmxvdworICogICAzLiBBZGQgRklOIG1hcmtlciBhdCB0aGUgZW5kCisgKi8KK3N0YXRp YyB2b2lkCitmaW5hbGl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVybiAqcmVzdWx0KQoreworCWludAkJ CWZpbklkeCA9IHJlc3VsdC0+bnVtRWxlbWVudHMgLSAxOworCWludAkJCWk7CisJUlBSUGF0dGVy bkVsZW1lbnQgKmZpbkVsZW07CisKKwkvKiBJbml0aWFsaXplIGFic29ycHRpb24gZmxhZyAqLwor CXJlc3VsdC0+aXNBYnNvcmJhYmxlID0gZmFsc2U7CisKKwkvKiBTZXQgdXAgbmV4dCBwb2ludGVy cyBmb3IgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIG9uZSAqLworCWZvciAoaSA9IDA7IGkgPCBm aW5JZHg7IGkrKykKKwl7CisJCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnJlc3VsdC0+ZWxl bWVudHNbaV07CisKKwkJaWYgKGVsZW0tPm5leHQgPT0gUlBSX0VMRU1JRFhfSU5WQUxJRCkKKwkJ CWVsZW0tPm5leHQgPSAoaSA8IGZpbklkeCAtIDEpID8gaSArIDEgOiBmaW5JZHg7CisKKwkJLyog VmVyaWZ5IHF1YW50aWZpZXIgcmFuZ2UgaXMgdmFsaWQgKi8KKwkJQXNzZXJ0KGVsZW0tPm1pbiA+ PSAwICYmIGVsZW0tPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgJiYKKwkJCSAgIGVsZW0tPm1heCA+ PSAxICYmCisJCQkgICAoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwgZWxlbS0+bWlu IDw9IGVsZW0tPm1heCkpOworCX0KKworCS8qIEFkZCBGSU4gbWFya2VyIGF0IHRoZSBlbmQgKi8K KwlmaW5FbGVtID0gJnJlc3VsdC0+ZWxlbWVudHNbZmluSWR4XTsKKwltZW1zZXQoZmluRWxlbSwg MCwgc2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSk7CisJZmluRWxlbS0+dmFySWQgPSBSUFJfVkFS SURfRklOOworCWZpbkVsZW0tPmRlcHRoID0gMDsKKwlmaW5FbGVtLT5taW4gPSAxOworCWZpbkVs ZW0tPm1heCA9IDE7CisJZmluRWxlbS0+bmV4dCA9IFJQUl9FTEVNSURYX0lOVkFMSUQ7CisJZmlu RWxlbS0+anVtcCA9IFJQUl9FTEVNSURYX0lOVkFMSUQ7Cit9CisKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICogQ09OVEVYVCBBQlNPUlBUSU9OOiBUV08tRkxBRyBERVNJR04KKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIENvbnRleHQgYWJzb3JwdGlvbiBlbGltaW5hdGVzIHJlZHVuZGFudCBtYXRj aCBzZWFyY2hlcyBieSBhYnNvcmJpbmcgbmV3ZXIKKyAqIGNvbnRleHRzIHRoYXQgY2Fubm90IHBy b2R1Y2UgbG9uZ2VyIG1hdGNoZXMgdGhhbiBvbGRlciBjb250ZXh0cy4gVGhpcworICogYWNoaWV2 ZXMgTyhuXjIpIC0+IE8obikgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZm9yIHBhdHRlcm5zIGxp a2UgQSsgQi4KKyAqCisgKiBDb3JlIEluc2lnaHQ6CisgKiAgIEZvciBwYXR0ZXJuIEErIEIsIGlm IEN0eDEgc3RhcnRzIGF0IHJvdyAwIGFuZCBDdHgyIHN0YXJ0cyBhdCByb3cgMSwKKyAqICAgYm90 aCBtYXRjaGluZyBBIGNvbnRpbnVvdXNseSwgQ3R4MSB3aWxsIGFsd2F5cyBoYXZlIG1vcmUgQSBt YXRjaGVzLgorICogICBXaGVuIEIgZmluYWxseSBhcHBlYXJzLCBDdHgxJ3MgbWF0Y2ggKDAgdG8g Y3VycmVudCkgaXMgYWx3YXlzIGxvbmdlcgorICogICB0aGFuIEN0eDIncyBtYXRjaCAoMSB0byBj dXJyZW50KS4gU28gQ3R4MiBjYW4gYmUgc2FmZWx5IGVsaW1pbmF0ZWQuCisgKgorICogVHdvIEZs YWdzOgorICogICAxLiBSUFJfRUxFTV9BQlNPUkJBQkxFIC0gIkFic29ycHRpb24ganVkZ21lbnQg cG9pbnQiCisgKiAgICAgIFdIRVJFIGNvbnRleHRzIGNhbiBiZSBjb21wYXJlZCBmb3IgYWJzb3Jw dGlvbi4KKyAqICAgICAgLSBTaW1wbGUgdW5ib3VuZGVkIFZBUiAoQSspOiB0aGUgVkFSIGVsZW1l bnQgaXRzZWxmCisgKiAgICAgIC0gVW5ib3VuZGVkIEdST1VQICgoQSBCKSspOiB0aGUgRU5EIGVs ZW1lbnQgb25seQorICoKKyAqICAgMi4gUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0ggLSAiQWJz b3JiYWJsZSByZWdpb24gbWFya2VyIgorICogICAgICBBTEwgZWxlbWVudHMgd2l0aGluIHRoZSBh YnNvcmJhYmxlIHJlZ2lvbi4KKyAqICAgICAgLSBVc2VkIGZvciB0cmFja2luZyBzdGF0ZS5pc0Fi c29yYmFibGUgYXQgcnVudGltZQorICogICAgICAtIFN0YXRlcyBsZWF2aW5nIHRoaXMgcmVnaW9u IGJlY29tZSBub24tYWJzb3JiYWJsZSBwZXJtYW5lbnRseQorICoKKyAqIFdoeSBUd28gRmxhZ3M/ CisgKiAgIEZvciBwYXR0ZXJuICIoQSBCKSsiLCBjb250ZXh0cyBhdCBkaWZmZXJlbnQgcG9zaXRp b25zIChvbmUgYXQgQSwKKyAqICAgYW5vdGhlciBhdCBCKSBjYW5ub3QgYmUgY29tcGFyZWQgLSB0 aGV5IG11c3Qgc3luY2hyb25pemUgYXQgRU5ELgorICoKKyAqICAgRXhhbXBsZTogIihBIEIpKyIg d2l0aCBpbnB1dCBBIEIgQSBCIEEgQi4uLgorICogICAgIFJvdyAwIChBKTogQ3R4MSBzdGFydHMs IG1hdGNoZXMgQQorICogICAgIFJvdyAxIChCKTogQ3R4MSBtYXRjaGVzIEIgLT4gRU5EIChjb3Vu dD0xKQorICogICAgIFJvdyAyIChBKTogQ3R4MSBsb29wcyB0byBBLCBDdHgyIHN0YXJ0cyBhdCBB CisgKiAgICAgUm93IDMgKEIpOiBDdHgxIGF0IEVORCAoY291bnQ9MiksIEN0eDIgYXQgRU5EIChj b3VudD0xKQorICogICAgICAgICAgICAgICAgLT4gQm90aCBhdCBFTkQsIGNvbXBhcmFibGUhIEN0 eDEgYWJzb3JicyBDdHgyLgorICoKKyAqICAgQ29udGV4dHMgc3luY2hyb25pemUgYXQgRU5EIGV2 ZXJ5IGdyb3VwLWxlbmd0aCByb3dzLiBUaGVyZWZvcmU6CisgKiAgIC0gQUJTT1JCQUJMRSBtYXJr cyBFTkQgYXMganVkZ21lbnQgcG9pbnQgKHdoZXJlIHRvIGNvbXBhcmUpCisgKiAgIC0gQUJTT1JC QUJMRV9CUkFOQ0gga2VlcHMgc3RhdGUuaXNBYnNvcmJhYmxlPXRydWUgdGhyb3VnaCBBLT5CLT5F TkQKKyAqCisgKiBQYXR0ZXJuIEV4YW1wbGVzOgorICoKKyAqICAgUGF0dGVybjogQSsgQgorICog ICBFbGVtZW50IDAgKEEpOiBBQlNPUkJBQkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0ggIDwtIGp1ZGdt ZW50IHBvaW50CisgKiAgIEVsZW1lbnQgMSAoQik6IChub25lKQorICogICAtPiBDb21wYXJlIGF0 IEEgZXZlcnkgcm93LiBXaGVuIGNvbnRleHRzIG1vdmUgdG8gQiwgYWJzb3JwdGlvbiBzdG9wcy4K KyAqCisgKiAgIFBhdHRlcm46IChBIEIpKyBDCisgKiAgIEVsZW1lbnQgMCAoQSk6IEFCU09SQkFC TEVfQlJBTkNICisgKiAgIEVsZW1lbnQgMSAoQik6IEFCU09SQkFCTEVfQlJBTkNICisgKiAgIEVs ZW1lbnQgMiAoRU5EKTogQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIICA8LSBqdWRnbWVu dCBwb2ludAorICogICBFbGVtZW50IDMgKEMpOiAobm9uZSkKKyAqICAgLT4gQ29tcGFyZSBhdCBF TkQgZXZlcnkgMiByb3dzLiBXaGVuIGNvbnRleHRzIG1vdmUgdG8gQywgYWJzb3JwdGlvbiBzdG9w cy4KKyAqCisgKiAgIFBhdHRlcm46IChBKyBCKykrIEMKKyAqICAgRWxlbWVudCAwIChBKTogQUJT T1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIICA8LSBvbmx5IGZpcnN0IEErIGZsYWdnZWQKKyAq ICAgRWxlbWVudCAxIChCKTogKG5vbmUpCisgKiAgIEVsZW1lbnQgMiAoRU5EKTogKG5vbmUpCisg KiAgIEVsZW1lbnQgMyAoQyk6IChub25lKQorICogICAtPiBPbmx5IGZpcnN0IHVuYm91bmRlZCBw b3J0aW9uIChBKykgZ2V0cyBmbGFncy4gQWJzb3JwdGlvbiBoYXBwZW5zCisgKiAgICAgIGF0IEEg ZHVyaW5nIGZpcnN0IGl0ZXJhdGlvbi4gQWZ0ZXIgbW92aW5nIHRvIEIrLCBhYnNvcnB0aW9uIHN0 b3BzLgorICoKKyAqIEZpcnN0IFVuYm91bmRlZCBQb3J0aW9uIFN0cmF0ZWd5OgorICogICBUaGUg YWxnb3JpdGhtIG9ubHkgZmxhZ3MgdGhlIEZJUlNUIHVuYm91bmRlZCBwb3J0aW9uIHN0YXJ0aW5n IGZyb20KKyAqICAgZWxlbWVudCAwLiBUaGlzIGlzIHN1ZmZpY2llbnQgYmVjYXVzZToKKyAqICAg LSBBYnNvcnB0aW9uIGluIGZpcnN0IHBvcnRpb24gYWxyZWFkeSBhY2hpZXZlcyBPKG4pIGNvbXBs ZXhpdHkKKyAqICAgLSBMYXRlciBwb3J0aW9ucyBoYXZlIGRpZmZlcmVudCBzeW5jaHJvbml6YXRp b24gY2hhcmFjdGVyaXN0aWNzCisgKiAgIC0gTmVzdGVkIHVuYm91bmRlZCBwYXR0ZXJucyBhcmUg dG9vIGNvbXBsZXggZm9yIHNpbXBsZSBhYnNvcnB0aW9uCisgKiAgIC0gQ29tcGxleCBwYXR0ZXJu cyAobmVzdGVkIGdyb3VwcywgZXRjLikgbmF0dXJhbGx5IGRpZSBmcm9tIG1pc21hdGNoCisgKgor ICogUnVudGltZSBVc2FnZSAoaW4gbm9kZVdpbmRvd0FnZy5jKToKKyAqICAgLSBzdGF0ZS5pc0Fi c29yYmFibGUgPSAocHJldmlvdXMgJiYgZWxlbS5BQlNPUkJBQkxFX0JSQU5DSCkKKyAqICAgLSBN b25vdG9uaWM6IG9uY2UgZmFsc2UsIHN0YXlzIGZhbHNlIChjYW5ub3QgcmUtZW50ZXIgcmVnaW9u KQorICogICAtIGNvbnRleHQuaGFzQWJzb3JiYWJsZVN0YXRlOiBjYW4gYWJzb3JiIG90aGVycyAo Pj0xIGFic29yYmFibGUgc3RhdGUpCisgKiAgIC0gY29udGV4dC5hbGxTdGF0ZXNBYnNvcmJhYmxl OiBjYW4gYmUgYWJzb3JiZWQgKEFMTCBzdGF0ZXMgYWJzb3JiYWJsZSkKKyAqICAgLSBBYnNvcnB0 aW9uIGNoZWNrOiBpZiBDdHgxLmhhc0Fic29yYmFibGUgJiYgQ3R4Mi5hbGxBYnNvcmJhYmxlLAor ICogICAgIGNvbXBhcmUgY291bnRzIGF0IHNhbWUgZWxlbUlkeCwgYWJzb3JiIGlmIEN0eDEuY291 bnQgPj0gQ3R4Mi5jb3VudAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBp c0ZpeGVkTGVuZ3RoQ2hpbGRyZW4KKyAqCQlDaGVjayBpZiBhbGwgY2hpbGRyZW4gYXQgc2NvcGVE ZXB0aCBoYXZlIGZpeGVkLWxlbmd0aCBxdWFudGlmaWVycworICoJCShtaW4gPT0gbWF4KSwgcmVj dXJzaXZlbHkgZm9yIG5lc3RlZCBzdWJncm91cHMuCisgKgorICogQSBmaXhlZC1sZW5ndGggZ3Jv dXAgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIGVhY2ggY2hpbGQKKyAq IHRvIHsxLDF9IGNvcGllcywgd2hpY2ggaXMgdGhlIGV4aXN0aW5nIENhc2UgMiBhbHJlYWR5IHBy b3ZlbiBjb3JyZWN0CisgKiBmb3IgYWJzb3JwdGlvbi4gIFRoaXMgY2hlY2sgcmVjb2duaXplcyBm aXhlZC1sZW5ndGggZ3JvdXBzIGF0IGNvbXBpbGUKKyAqIHRpbWUgd2l0aG91dCBhY3R1YWxseSB1 bnJvbGxpbmcgdGhlbS4KKyAqCisgKiBUcmF2ZXJzZXMgdGhlIGZsYXQgZWxlbWVudCBhcnJheSBz dGFydGluZyBhdCBpZHguICBGb3IgVkFSIGVsZW1lbnRzLAorICogY2hlY2tzIG1pbiA9PSBtYXgu ICBGb3IgQkVHSU4gZWxlbWVudHMgKG5lc3RlZCBzdWJncm91cHMpLCByZWN1cnNlcworICogaW50 byB0aGUgc3ViZ3JvdXAgYW5kIGFsc28gY2hlY2tzIHRoZSBzdWJncm91cCdzIEVORCBxdWFudGlm aWVyLgorICogQUxUIGVsZW1lbnRzIGFyZSByZWplY3RlZCAoYWx0ZXJuYXRpb24gaW5zaWRlIGFi c29yYmFibGUgZ3JvdXAgaXMKKyAqIG5vdCBzdXBwb3J0ZWQpLgorICoKKyAqIFJldHVybnMgdHJ1 ZSBpZiBhbGwgY2hpbGRyZW4gYXJlIGZpeGVkLWxlbmd0aCwgc3RvcHBpbmcgYXQgdGhlIEVORAor ICogZWxlbWVudCBhdCBzY29wZURlcHRoIC0gMS4KKyAqLworc3RhdGljIGJvb2wKK2lzRml4ZWRM ZW5ndGhDaGlsZHJlbihSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IGlkeCwgUlBSRGVw dGggc2NvcGVEZXB0aCkKK3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZSA9ICZwYXR0ZXJuLT5lbGVt ZW50c1tpZHhdOworCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCXdoaWxlIChlLT5kZXB0aCA9 PSBzY29wZURlcHRoKQorCXsKKwkJaWYgKFJQUkVsZW1Jc1ZhcihlKSkKKwkJeworCQkJaWYgKGUt Pm1pbiAhPSBlLT5tYXgpCisJCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVsc2UgaWYgKFJQUkVs ZW1Jc0JlZ2luKGUpKQorCQl7CisJCQlSUFJFbGVtSWR4CWNoaWxkSWR4ID0gZS0+bmV4dDsKKwor CQkJLyogUmVjdXJzZSBpbnRvIHN1Ymdyb3VwIGNoaWxkcmVuIGF0IHNjb3BlRGVwdGggKyAxICov CisJCQlpZiAoIWlzRml4ZWRMZW5ndGhDaGlsZHJlbihwYXR0ZXJuLCBjaGlsZElkeCwgc2NvcGVE ZXB0aCArIDEpKQorCQkJCXJldHVybiBmYWxzZTsKKworCQkJLyogQWR2YW5jZSBwYXN0IHRoZSBz dWJncm91cCB0byBpdHMgRU5EIGVsZW1lbnQgKi8KKwkJCWUgPSAmcGF0dGVybi0+ZWxlbWVudHNb ZS0+bmV4dF07CisJCQl3aGlsZSAoZS0+ZGVwdGggPiBzY29wZURlcHRoKQorCQkJCWUgPSAmcGF0 dGVybi0+ZWxlbWVudHNbZS0+bmV4dF07CisKKwkJCS8qIGUgaXMgbm93IHRoZSBFTkQgYXQgc2Nv cGVEZXB0aDsgY2hlY2sgaXRzIHF1YW50aWZpZXIgKi8KKwkJCUFzc2VydChSUFJFbGVtSXNFbmQo ZSkgJiYgZS0+ZGVwdGggPT0gc2NvcGVEZXB0aCk7CisJCQlpZiAoZS0+bWluICE9IGUtPm1heCkK KwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBBTFQgaW5zaWRlIGdy b3VwOiBub3Qgc3VwcG9ydGVkIGZvciBhYnNvcnB0aW9uICovCisJCQlyZXR1cm4gZmFsc2U7CisJ CX0KKworCQlBc3NlcnQoZS0+bmV4dCAhPSBSUFJfRUxFTUlEWF9JTlZBTElEKTsKKwkJZSA9ICZw YXR0ZXJuLT5lbGVtZW50c1tlLT5uZXh0XTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIGlzVW5ib3VuZGVkU3RhcnQKKyAqCQlDaGVjayBpZiB0aGUgZWxlbWVudCBhdCBpZHggc3Rh cnRzIGFuIHVuYm91bmRlZCBncmVlZHkgc2VxdWVuY2UuCisgKgorICogRm9yIGNvbnRleHQgYWJz b3JwdGlvbiB0byB3b3JrLCB0aGUgc2VxdWVuY2Ugc3RhcnRpbmcgYXQgaWR4IG11c3QgYmU6Cisg KiAgIC0gVW5ib3VuZGVkIChtYXggPSBpbmZpbml0eSkKKyAqICAgLSBHcmVlZHkgKG5vdCByZWx1 Y3RhbnQpCisgKiAgIC0gQXQgdGhlIHN0YXJ0IG9mIGN1cnJlbnQgc2NvcGUKKyAqCisgKiBUd28g Y2FzZXMgYXJlIGhhbmRsZWQ6CisgKiAgIDEuIFNpbXBsZSBWQVI6IEErIEIgQyAtIEEgaGFzIG1h eD1JTkYsIGdldHMgYm90aCBmbGFncworICogICAyLiBVbmJvdW5kZWQgR1JPVVAgd2l0aCBmaXhl ZC1sZW5ndGggY2hpbGRyZW46IChBIEJ7Mn0pKyBDCisgKiAgICAgIEFsbCBjaGlsZHJlbiBtdXN0 IGhhdmUgbWluID09IG1heCAocmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBzdWJncm91cHMpLgorICog ICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIHsxLDF9IFZBUnMsIGUuZy4s IChBIEIgQikrIEMuCisgKiAgICAgIEFsbCBlbGVtZW50cyB3aXRoaW4gdGhlIGdyb3VwIGdldCBB QlNPUkJBQkxFX0JSQU5DSC4KKyAqICAgICAgT25seSB0aGUgdW5ib3VuZGVkIEVORCBnZXRzIEFC U09SQkFCTEUgKGp1ZGdtZW50IHBvaW50KS4KKyAqICAgICAgRXhhbXBsZXM6CisgKiAgICAgICAg KEEgQnsyfSkrIEMgICAgICAgICAgLSBCezJ9IGhhcyBtaW49PW1heCwgc3RlcD0zCisgKiAgICAg ICAgKEEgKEIgQyl7Mn0gRCkrIEUgICAgLSBuZXN0ZWQgezJ9IHN1Ymdyb3VwLCBzdGVwPTYKKyAq ICAgICAgICAoKEEgKEIgQyl7Mn0pezJ9KSsgICAtIGRvdWJseSBuZXN0ZWQgezJ9LCBzdGVwPTEw CisgKiAgICAgICAgKEEgKChCIEN7M30pezJ9IEQpezJ9IEUpKyBGICAtIGRlZXAgbmVzdGluZywg c3RlcD0yMAorICoKKyAqIFJldHVybnMgZmFsc2UgZm9yIHBhdHRlcm5zIHdoZXJlIGFic29ycHRp b24gY2Fubm90IHdvcms6CisgKiAgIC0gQSBCKyAodW5ib3VuZGVkIG5vdCBhdCBzdGFydCkKKyAq ICAgLSBBKz8gQiAocmVsdWN0YW50IHF1YW50aWZpZXIpCisgKiAgIC0gKEEgfCBCKSsgKEFMVCBp bnNpZGUgZ3JvdXApCisgKiAgIC0gKEEgQispKyAodmFyaWFibGUtbGVuZ3RoIGVsZW1lbnQgaW5z aWRlIGdyb3VwKQorICogICAtIChBIEJ7Miw1fSkrIChtaW4gIT0gbWF4IGluc2lkZSBncm91cCkK KyAqLworc3RhdGljIGJvb2wKK2lzVW5ib3VuZGVkU3RhcnQoUlBSUGF0dGVybiAqcGF0dGVybiwg UlBSRWxlbUlkeCBpZHgpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0dGVybi0+ ZWxlbWVudHNbaWR4XTsKKwlSUFJEZXB0aAlzdGFydERlcHRoID0gZWxlbS0+ZGVwdGg7CisJUlBS UGF0dGVybkVsZW1lbnQgKmU7CisKKwkvKiBDYXNlIDE6IFNpbXBsZSB1bmJvdW5kZWQgVkFSIGF0 IHN0YXJ0IChncmVlZHkgb25seSkgKi8KKwlpZiAoUlBSRWxlbUlzVmFyKGVsZW0pICYmIGVsZW0t Pm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GICYmCisJCSFSUFJFbGVtSXNSZWx1Y3RhbnQoZWxlbSkp CisJeworCQkvKiBTZXQgYm90aCBmbGFncyBvbiBmaXJzdCBlbGVtZW50ICovCisJCWVsZW0tPmZs YWdzIHw9IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIIHwgUlBSX0VMRU1fQUJTT1JCQUJMRTsK KwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBDYXNlIDI6IFVuYm91bmRlZCBHUk9VUCB3 aXRoIGZpeGVkLWxlbmd0aCBjaGlsZHJlbi4gIEVhY2ggY2hpbGQgbXVzdAorCSAqIGhhdmUgbWlu ID09IG1heCAocmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBzdWJncm91cHMpLCBlbnN1cmluZyBhIGZp eGVkCisJICogc3RlcCBzaXplIHBlciBpdGVyYXRpb24gc28gdGhhdCBjb3VudC1kb21pbmFuY2Ug aG9sZHMuCisJICovCisJaWYgKCFpc0ZpeGVkTGVuZ3RoQ2hpbGRyZW4ocGF0dGVybiwgaWR4LCBz dGFydERlcHRoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogRmluZCB0aGUgRU5EIGVsZW1lbnQg YXQgc3RhcnREZXB0aCAtIDEgKi8KKwllID0gJnBhdHRlcm4tPmVsZW1lbnRzW2lkeF07CisJd2hp bGUgKGUtPmRlcHRoID49IHN0YXJ0RGVwdGgpCisJCWUgPSAmcGF0dGVybi0+ZWxlbWVudHNbZS0+ bmV4dF07CisKKwkvKiBFTkQgbXVzdCBiZSB1bmJvdW5kZWQgZ3JlZWR5ICovCisJaWYgKGUtPmRl cHRoID09IHN0YXJ0RGVwdGggLSAxICYmCisJCVJQUkVsZW1Jc0VuZChlKSAmJiBlLT5tYXggPT0g UlBSX1FVQU5USVRZX0lORiAmJgorCQkhUlBSRWxlbUlzUmVsdWN0YW50KGUpKQorCXsKKwkJQXNz ZXJ0KGUtPmp1bXAgPT0gaWR4KTsgLyogRU5EIHBvaW50cyBiYWNrIHRvIGZpcnN0IGNoaWxkICov CisKKwkJLyogU2V0IEFCU09SQkFCTEVfQlJBTkNIIG9uIGFsbCBjaGlsZHJlbiwgQUJTT1JCQUJM RSBvbiBFTkQgb25seSAqLworCQlmb3IgKGUgPSBlbGVtOyAhUlBSRWxlbUlzRW5kKGUpIHx8IGUt PmRlcHRoID49IHN0YXJ0RGVwdGg7CisJCQkgZSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tlLT5uZXh0 XSkKKwkJCWUtPmZsYWdzIHw9IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIOworCQllLT5mbGFn cyB8PSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSCB8IFJQUl9FTEVNX0FCU09SQkFCTEU7CisJ CXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNvbXB1dGVB YnNvcmJhYmlsaXR5UmVjdXJzaXZlCisgKgkJUmVjdXJzaXZlbHkgY2hlY2sgYWJzb3JiYWJpbGl0 eSBzdGFydGluZyBmcm9tIGdpdmVuIGluZGV4LgorICoKKyAqIElmIHRoZSBlbGVtZW50IGF0IHN0 YXJ0SWR4IGlzIEFMVCwgcmVjdXJzaXZlbHkgY2hlY2tzIGVhY2ggYnJhbmNoIGluZGVwZW5kZW50 bHkuCisgKiBFYWNoIGJyYW5jaCBnZXRzIGl0cyBvd24gYWJzb3JiYWJpbGl0eSBzdGF0dXMsIGFu ZCBpZiBhbnkgYnJhbmNoIGlzIGFic29yYmFibGUsCisgKiB0aGUgQUxUIGVsZW1lbnQgaXRzZWxm IGlzIG1hcmtlZCB3aXRoIFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNILgorICoKKyAqIElmIEJF R0lOLCBza2lwcyB0byBmaXJzdCBjaGlsZC4KKyAqCisgKiBPdGhlcndpc2UgKFZBUiksIGNoZWNr cyBpZiB0aGUgZWxlbWVudCBzdGFydHMgYW4gdW5ib3VuZGVkIHNlcXVlbmNlIHZpYQorICogaXNV bmJvdW5kZWRTdGFydC4KKyAqLworc3RhdGljIHZvaWQKK2NvbXB1dGVBYnNvcmJhYmlsaXR5UmVj dXJzaXZlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIFJQUkVsZW1JZHggc3RhcnRJZHgsCisJCQkJCQkJ ICBib29sICpoYXNBYnNvcmJhYmxlKQoreworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBh dHRlcm4tPmVsZW1lbnRzW3N0YXJ0SWR4XTsKKworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlp ZiAoUlBSRWxlbUlzQWx0KGVsZW0pKQorCXsKKwkJLyogQUxUOiByZWN1cnNpdmVseSBjaGVjayBl YWNoIGJyYW5jaCAqLworCQlSUFJFbGVtSWR4CWJyYW5jaElkeCA9IGVsZW0tPm5leHQ7CisJCVJQ UlBhdHRlcm5FbGVtZW50ICpicmFuY2hGaXJzdDsKKwkJYm9vbAkJYnJhbmNoQWJzb3JiYWJsZTsK KworCQl3aGlsZSAoYnJhbmNoSWR4ICE9IFJQUl9FTEVNSURYX0lOVkFMSUQpCisJCXsKKwkJCWJy YW5jaEFic29yYmFibGUgPSBmYWxzZTsKKworCQkJQXNzZXJ0KGJyYW5jaElkeCA8IHBhdHRlcm4t Pm51bUVsZW1lbnRzKTsKKwkJCWJyYW5jaEZpcnN0ID0gJnBhdHRlcm4tPmVsZW1lbnRzW2JyYW5j aElkeF07CisKKwkJCS8qIFN0b3AgaWYgZWxlbWVudCBpcyBvdXRzaWRlIEFMVCBzY29wZSAobm90 IGEgYnJhbmNoKSAqLworCQkJaWYgKGJyYW5jaEZpcnN0LT5kZXB0aCA8PSBlbGVtLT5kZXB0aCkK KwkJCQlicmVhazsKKworCQkJLyogUmVjdXJzaXZlbHkgY2hlY2sgdGhpcyBicmFuY2ggKi8KKwkJ CWNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZlKHBhdHRlcm4sIGJyYW5jaElkeCwgJmJyYW5j aEFic29yYmFibGUpOworCQkJaWYgKGJyYW5jaEFic29yYmFibGUpCisJCQl7CisJCQkJKmhhc0Fi c29yYmFibGUgPSB0cnVlOworCQkJfQorCisJCQlicmFuY2hJZHggPSBicmFuY2hGaXJzdC0+anVt cDsKKwkJfQorCisJCS8qIE1hcmsgQUxUIGVsZW1lbnQgaWYgYW55IGJyYW5jaCBpcyBhYnNvcmJh YmxlICovCisJCWlmICgqaGFzQWJzb3JiYWJsZSkKKwkJCWVsZW0tPmZsYWdzIHw9IFJQUl9FTEVN X0FCU09SQkFCTEVfQlJBTkNIOworCX0KKwllbHNlIGlmIChSUFJFbGVtSXNCZWdpbihlbGVtKSkK Kwl7CisJCS8qCisJCSAqIEJFR0lOOiBmaXJzdCB0cnkgdG8gdHJlYXQgdGhpcyBCRUdJTidzIGNo aWxkcmVuIGFzIGFuIHVuYm91bmRlZAorCQkgKiBncm91cCBkaXJlY3RseSAoaGFuZGxlcyBuZXN0 ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwcyBsaWtlICgoQXsyfQorCQkgKiBCezN9KXsyfSkrKS4gIElm IHRoYXQgZmFpbHMsIHNraXAgdG8gZmlyc3QgY2hpbGQgYW5kIHJlY3Vyc2UgYXMKKwkJICogYmVm b3JlLgorCQkgKi8KKwkJaWYgKGlzVW5ib3VuZGVkU3RhcnQocGF0dGVybiwgZWxlbS0+bmV4dCkp CisJCXsKKwkJCSpoYXNBYnNvcmJhYmxlID0gdHJ1ZTsKKwkJCWVsZW0tPmZsYWdzIHw9IFJQUl9F TEVNX0FCU09SQkFCTEVfQlJBTkNIOworCQl9CisJCWVsc2UKKwkJeworCQkJY29tcHV0ZUFic29y YmFiaWxpdHlSZWN1cnNpdmUocGF0dGVybiwgZWxlbS0+bmV4dCwgaGFzQWJzb3JiYWJsZSk7CisK KwkJCS8qIE1hcmsgQkVHSU4gZWxlbWVudCBpZiBjb250ZW50cyBhcmUgYWJzb3JiYWJsZSAqLwor CQkJaWYgKCpoYXNBYnNvcmJhYmxlKQorCQkJCWVsZW0tPmZsYWdzIHw9IFJQUl9FTEVNX0FCU09S QkFCTEVfQlJBTkNIOworCQl9CisJfQorCWVsc2UKKwl7CisJCS8qIFNob3VsZCBuZXZlciByZWFj aCBFTkQgLSBzdHJ1Y3R1cmFsIGludmFyaWFudCBvZiBwYXR0ZXJuIEFTVCAqLworCQlBc3NlcnQo IVJQUkVsZW1Jc0VuZChlbGVtKSk7CisKKwkJLyogTm9uLUFMVCwgbm9uLUJFR0lOOiBjaGVjayBp ZiB1bmJvdW5kZWQgc3RhcnQgKi8KKwkJaWYgKGlzVW5ib3VuZGVkU3RhcnQocGF0dGVybiwgc3Rh cnRJZHgpKQorCQl7CisJCQkqaGFzQWJzb3JiYWJsZSA9IHRydWU7CisJCX0KKwl9Cit9CisKKy8q CisgKiBjb21wdXRlQWJzb3JiYWJpbGl0eQorICoJCURldGVybWluZSBpZiBwYXR0ZXJuIHN1cHBv cnRzIGNvbnRleHQgYWJzb3JwdGlvbiBvcHRpbWl6YXRpb24uCisgKgorICogQ29udGV4dCBhYnNv cnB0aW9uIGVsaW1pbmF0ZXMgcmVkdW5kYW50IG1hdGNoIHNlYXJjaGVzIGJ5IGFic29yYmluZwor ICogbmV3ZXIgY29udGV4dHMgdGhhdCBjYW5ub3QgcHJvZHVjZSBsb25nZXIgbWF0Y2hlcyB0aGFu IG9sZGVyIGNvbnRleHRzLgorICogVGhpcyBhY2hpZXZlcyBPKG5eMikgLT4gTyhuKSBwZXJmb3Jt YW5jZSBpbXByb3ZlbWVudC4KKyAqCisgKiBPbmx5IGdyZWVkeSB1bmJvdW5kZWQgcXVhbnRpZmll cnMgYXQgcGF0dGVybiBzdGFydCBjYW4gYmUgYWJzb3JiYWJsZS4KKyAqIFJlbHVjdGFudCBxdWFu dGlmaWVycyBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGRvbid0IG1haW50YWluIG1vbm90b25p YworICogZGVjcmVhc2UgcHJvcGVydHkgcmVxdWlyZWQgZm9yIHNhZmUgYWJzb3JwdGlvbi4KKyAq CisgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdHdvIGZsYWdzOgorICogICBSUFJfRUxFTV9BQlNPUkJB QkxFOiBBYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50CisgKiAgICAgLSBTaW1wbGUgdW5ib3VuZGVk IFZBUjogdGhlIFZBUiBpdHNlbGYgKGUuZy4sIEEgaW4gQSspCisgKiAgICAgLSBVbmJvdW5kZWQg R1JPVVA6IHRoZSBFTkQgZWxlbWVudCAoZS5nLiwgRU5EIGluIChBIEIpKykKKyAqICAgUlBSX0VM RU1fQUJTT1JCQUJMRV9CUkFOQ0g6IEFsbCBlbGVtZW50cyBpbiBhYnNvcmJhYmxlIHJlZ2lvbgor ICogICAgIC0gQWxsIGVsZW1lbnRzIHdpdGhpbiB0aGUgc2FtZSBzY29wZSBhcyB1bmJvdW5kZWQg c3RhcnQKKyAqCisgKiBFeGFtcGxlczoKKyAqICAgQSsgQiBDICAgICAgICAgLSBhYnNvcmJhYmxl IChBIGdldHMgYm90aCBmbGFncykKKyAqICAgKEEgQikrIEMgICAgICAgLSBhYnNvcmJhYmxlIChB LEIsRU5EIGdldCBCUkFOQ0gsIEVORCBnZXRzIEFCU09SQkFCTEUpCisgKiAgIEEgQisgICAgICAg ICAgIC0gTk9UIGFic29yYmFibGUgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpCisgKiAgIEErPyBC IEMgICAgICAgIC0gTk9UIGFic29yYmFibGUgKHJlbHVjdGFudCBxdWFudGlmaWVyKQorICogICAo QSsgQispKyAgICAgICAtIG9ubHkgZmlyc3QgQSsgb24gZmlyc3QgaXRlcmF0aW9uIChuZXN0ZWQg dW5ib3VuZGVkIG5vdCBzdXBwb3J0ZWQpCisgKiAgIEErIHwgQisgICAgICAgIC0gYm90aCBicmFu Y2hlcyBhYnNvcmJhYmxlIGluZGVwZW5kZW50bHkKKyAqICAgQSsgfCBDIEQgICAgICAgLSBvbmx5 IEErIGJyYW5jaCBhYnNvcmJhYmxlIChDIEQgYnJhbmNoIG5vdCBhYnNvcmJhYmxlKQorICogICAo KEErIEIpIHwgQykgRCAtIG5lc3RlZCBBTFQ6IEErIGJyYW5jaCBpcyBhYnNvcmJhYmxlCisgKi8K K3N0YXRpYyB2b2lkCitjb21wdXRlQWJzb3JiYWJpbGl0eShSUFJQYXR0ZXJuICpwYXR0ZXJuKQor eworCWJvb2wJCWhhc0Fic29yYmFibGUgPSBmYWxzZTsKKworCS8qIFBhcnNlciBhbHdheXMgcHJv ZHVjZXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQgKyBGSU4gKi8KKwlBc3NlcnQocGF0dGVybi0+bnVt RWxlbWVudHMgPj0gMik7CisKKwkvKiBTdGFydCByZWN1cnNpb24gZnJvbSBmaXJzdCBlbGVtZW50 ICovCisJY29tcHV0ZUFic29yYmFiaWxpdHlSZWN1cnNpdmUocGF0dGVybiwgMCwgJmhhc0Fic29y YmFibGUpOworCXBhdHRlcm4tPmlzQWJzb3JiYWJsZSA9IGhhc0Fic29yYmFibGU7Cit9CisKKy8q CisgKiBjb2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZQorICoJCVJlY3Vyc2l2ZWx5IGNv bGxlY3QgdmFyaWFibGUgbmFtZXMgZnJvbSBwYXR0ZXJuIEFTVC4KKyAqLworc3RhdGljIHZvaWQK K2NvbGxlY3RQYXR0ZXJuVmFyaWFibGVzUmVjdXJzaXZlKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBM aXN0ICoqdmFyTmFtZXMpCit7CisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisKKwljaGVja19zdGFj a19kZXB0aCgpOworCisJc3dpdGNoIChub2RlLT5ub2RlVHlwZSkKKwl7CisJCWNhc2UgUlBSX1BB VFRFUk5fVkFSOgorCQkJLyogQWRkIHZhcmlhYmxlIGlmIG5vdCBhbHJlYWR5IGluIGxpc3QgKi8K KwkJCWZvcmVhY2hfbm9kZShTdHJpbmcsIHZhcm5hbWUsICp2YXJOYW1lcykKKwkJCXsKKwkJCQlp ZiAoc3RyY21wKHN0clZhbCh2YXJuYW1lKSwgbm9kZS0+dmFyTmFtZSkgPT0gMCkKKwkJCQkJcmV0 dXJuOwkJLyogQWxyZWFkeSBjb2xsZWN0ZWQgKi8KKwkJCX0KKwkJCSp2YXJOYW1lcyA9IGxhcHBl bmQoKnZhck5hbWVzLCBtYWtlU3RyaW5nKHBzdHJkdXAobm9kZS0+dmFyTmFtZSkpKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgorCQljYXNlIFJQUl9QQVRURVJOX0FMVDoK KwkJY2FzZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9k ZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQorCQkJeworCQkJCWNvbGxlY3RQYXR0ZXJuVmFyaWFi bGVzUmVjdXJzaXZlKGNoaWxkLCB2YXJOYW1lcyk7CisJCQl9CisJCQlicmVhazsKKwl9Cit9CisK Ky8qCisgKiBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcworICoJCUNvbGxlY3QgdW5pcXVlIHZhcmlh YmxlIG5hbWVzIHVzZWQgaW4gUEFUVEVSTiBjbGF1c2UuCisgKgorICogUmV0dXJucyBhIGxpc3Qg b2YgU3RyaW5nIG5vZGVzIGNvbnRhaW5pbmcgdmFyaWFibGUgbmFtZXMuCisgKiBVc2VkIHRvIGZp bHRlciBkZWZpbmVDbGF1c2UgYmVmb3JlIHZhcklkIGFzc2lnbm1lbnQuCisgKi8KK0xpc3QgKgor Y29sbGVjdFBhdHRlcm5WYXJpYWJsZXMoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJTGlz dAkgICAqdmFyTmFtZXMgPSBOSUw7CisKKwkvKiBDYWxsZXIgZW5zdXJlcyBwYXR0ZXJuIGlzIG5v dCBOVUxMICovCisJQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCk7CisKKwljb2xsZWN0UGF0dGVyblZh cmlhYmxlc1JlY3Vyc2l2ZShwYXR0ZXJuLCAmdmFyTmFtZXMpOworCXJldHVybiB2YXJOYW1lczsK K30KKworLyoKKyAqIHJwcl92b2xhdGlsZV9mdW5jX2NoZWNrZXIKKyAqCQljaGVja19mdW5jdGlv bnNfaW5fbm9kZSBjYWxsYmFjazogdHJ1ZSBpZiBmdW5jaWQgaXMgVk9MQVRJTEUuCisgKi8KK3N0 YXRpYyBib29sCitycHJfdm9sYXRpbGVfZnVuY19jaGVja2VyKE9pZCBmdW5jaWQsIHZvaWQgKmNv bnRleHQpCit7CisJcmV0dXJuIChmdW5jX3ZvbGF0aWxlKGZ1bmNpZCkgPT0gUFJPVk9MQVRJTEVf Vk9MQVRJTEUpOworfQorCisvKgorICogcnByX2RlZmluZV9lcnJwb3NpdGlvbgorICoJCUVycm9y IGN1cnNvciBwb3NpdGlvbiBmb3IgYSBERUZJTkUgc3ViZXhwcmVzc2lvbi4KKyAqCisgKiBUaGUg cGxhbm5lciBoYXMgbm8gUGFyc2VTdGF0ZSwgYnV0IHRoZSBvcmlnaW5hbCBxdWVyeSB0ZXh0IGlz IGF2YWlsYWJsZSBpbgorICogZGVidWdfcXVlcnlfc3RyaW5nLCBzbyB3ZSBjYW4gc3RpbGwgcG9p bnQgYXQgdGhlIG9mZmVuZGluZyBsb2NhdGlvbiBleGFjdGx5CisgKiBhcyBwYXJzZXJfZXJycG9z aXRpb24oKSB3b3VsZC4KKyAqLworc3RhdGljIGludAorcnByX2RlZmluZV9lcnJwb3NpdGlvbihp bnQgbG9jYXRpb24pCit7CisJaWYgKGxvY2F0aW9uIDwgMCB8fCBkZWJ1Z19xdWVyeV9zdHJpbmcg PT0gTlVMTCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIGVycnBvc2l0aW9uKHBnX21ic3RybGVuX3dp dGhfbGVuKGRlYnVnX3F1ZXJ5X3N0cmluZywgbG9jYXRpb24pICsgMSk7Cit9CisKKy8qCisgKiBy ZWplY3Rfdm9sYXRpbGVfaW5fZGVmaW5lX3dhbGtlcgorICoJCVJlamVjdCB2b2xhdGlsZSBjYWxs ZWVzIGFuZCBzZXF1ZW5jZSBvcGVyYXRpb25zIGFueXdoZXJlIGluIGEgREVGSU5FCisgKgkJZXhw cmVzc2lvbjogdGhleSBhcmUgbm9uLWRldGVybWluaXN0aWMgYWNyb3NzIHRoZSBtdWx0aXBsZSBw cmVkaWNhdGUKKyAqCQlldmFsdWF0aW9ucyB0aGF0IE5GQSBiYWNrdHJhY2tpbmcgYW5kIFBSRVYv TkVYVCBuYXZpZ2F0aW9uIG1heSB0cmlnZ2VyCisgKgkJZm9yIGEgc2luZ2xlIHJvdy4KKyAqCisg KiBOZXh0VmFsdWVFeHByIGlzIGNoZWNrZWQgc2VwYXJhdGVseSBiZWNhdXNlIGl0IGlzIG5vdCBh IGZ1bmN0aW9uIGNhbGwgYW5kCisgKiBzbyBpcyBub3QgY2F1Z2h0IGJ5IGNoZWNrX2Z1bmN0aW9u c19pbl9ub2RlKCkuCisgKi8KK3N0YXRpYyBib29sCityZWplY3Rfdm9sYXRpbGVfaW5fZGVmaW5l X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKwlpZiAoY2hlY2tfZnVuY3Rpb25zX2luX25vZGUobm9kZSwgcnBy X3ZvbGF0aWxlX2Z1bmNfY2hlY2tlciwgTlVMTCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJ2b2xhdGls ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiKSwKKwkJCQlycHJf ZGVmaW5lX2VycnBvc2l0aW9uKGV4cHJMb2NhdGlvbihub2RlKSkpOworCWlmIChJc0Eobm9kZSwg TmV4dFZhbHVlRXhwcikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJzZXF1ZW5jZSBvcGVyYXRpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJcnByX2RlZmluZV9lcnJwb3Np dGlvbihleHByTG9jYXRpb24obm9kZSkpKTsKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtl cihub2RlLCByZWplY3Rfdm9sYXRpbGVfaW5fZGVmaW5lX3dhbGtlciwgY29udGV4dCk7Cit9CisK Ky8qCisgKiB2YWxpZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0aWxpdHkKKyAqCQlSZWplY3Qgdm9sYXRp bGUgZnVuY3Rpb25zIC8gc2VxdWVuY2Ugb3BlcmF0aW9ucyBpbiBhIERFRklORSBjbGF1c2UuCisg KgorICogQ2FsbGVkIGZyb20gdGhlIHBsYW5uZXIgKHN1YnF1ZXJ5X3BsYW5uZXIpIGZvciBldmVy eSBSUFIgV2luZG93Q2xhdXNlLAorICogaW5jbHVkaW5nIHdpbmRvd3Mgbm90IHJlZmVyZW5jZWQg YnkgYW55IE9WRVIgY2xhdXNlLCBzbyB0aGUgY2hlY2sgaXMgYXBwbGllZAorICogcmVnYXJkbGVz cyBvZiB3aGV0aGVyIHRoZSB3aW5kb3cgc3Vydml2ZXMgdG8gZXhlY3V0aW9uIC0tIG1hdGNoaW5n IHRoZQorICogY292ZXJhZ2Ugb2YgdGhlIGZvcm1lciBwYXJzZS10aW1lIGNoZWNrLgorICovCit2 b2lkCit2YWxpZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0aWxpdHkoTGlzdCAqZGVmaW5lQ2xhdXNlKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQorCXsKKwkJ VGFyZ2V0RW50cnkgKnRlID0gbGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKTsKKworCQkodm9p ZCkgcmVqZWN0X3ZvbGF0aWxlX2luX2RlZmluZV93YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsIE5V TEwpOworCX0KK30KKworLyoKKyAqIGJ1aWxkRGVmaW5lVmFyaWFibGVMaXN0CisgKgkJQnVpbGQg ZGVmaW5lVmFyaWFibGVMaXN0IGZyb20gZGVmaW5lQ2xhdXNlLgorICoKKyAqIFRoZSBwYXJzZXIg YWxyZWFkeSBlbnN1cmVzIHRoYXQgYWxsIERFRklORSB2YXJpYWJsZXMgYXBwZWFyIGluIFBBVFRF Uk4sCisgKiBzbyBubyBmaWx0ZXJpbmcgaXMgbmVlZGVkIGhlcmUuCisgKgorICogU2V0cyAqZGVm aW5lVmFyaWFibGVMaXN0IHRvIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMgKFN0cmluZyBub2Rlcyku CisgKi8KK3ZvaWQKK2J1aWxkRGVmaW5lVmFyaWFibGVMaXN0KExpc3QgKmRlZmluZUNsYXVzZSwg TGlzdCAqKmRlZmluZVZhcmlhYmxlTGlzdCkKK3sKKwkqZGVmaW5lVmFyaWFibGVMaXN0ID0gTklM OworCisJZm9yZWFjaF9ub2RlKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5lQ2xhdXNlKQorCXsKKwkJ KmRlZmluZVZhcmlhYmxlTGlzdCA9IGxhcHBlbmQoKmRlZmluZVZhcmlhYmxlTGlzdCwKKwkJCQkJ CQkJCSAgbWFrZVN0cmluZyhwc3RyZHVwKHRlLT5yZXNuYW1lKSkpOworCX0KK30KKworLyoKKyAq IGJ1aWxkUlBSUGF0dGVybgorICoJCUNvbXBpbGUgcGF0dGVybiBBU1QgdG8gZmxhdCBieXRlY29k ZSBhcnJheS4KKyAqCisgKiBDb21waWxhdGlvbiBwaGFzZXM6CisgKiAgIDEuIE9wdGltaXplIEFT VCAoZmxhdHRlbiwgbWVyZ2UsIGRlZHVwbGljYXRlKQorICogICAyLiBTY2FuOiBjb2xsZWN0IHZh cmlhYmxlcywgY291bnQgZWxlbWVudHMgKHBhc3MgMSkKKyAqICAgMy4gQWxsb2NhdGUgcmVzdWx0 IHN0cnVjdHVyZQorICogICA0LiBGaWxsIGVsZW1lbnRzIGZyb20gQVNUIChwYXNzIDIpCisgKiAg IDUuIEZpbmFsaXplIHBhdHRlcm4gc3RydWN0dXJlCisgKiAgIDYuIENvbXB1dGUgY29udGV4dCBh YnNvcnB0aW9uIGVsaWdpYmlsaXR5CisgKgorICogQ2FsbGVkIGZyb20gY3JlYXRlcGxhbi5jIGR1 cmluZyBwbGFuIGNyZWF0aW9uLgorICovCitSUFJQYXR0ZXJuICoKK2J1aWxkUlBSUGF0dGVybihS UFJQYXR0ZXJuTm9kZSAqcGF0dGVybiwgTGlzdCAqZGVmaW5lVmFyaWFibGVMaXN0LAorCQkJCVJQ U2tpcFRvIHJwU2tpcFRvLCBpbnQgZnJhbWVPcHRpb25zLAorCQkJCWJvb2wgaGFzTWF0Y2hTdGFy dERlcGVuZGVudCkKK3sKKwlSUFJQYXR0ZXJuICpyZXN1bHQ7CisJUlBSUGF0dGVybk5vZGUgKm9w dGltaXplZDsKKwljaGFyCSAgICp2YXJOYW1lc1N0YWNrW1JQUl9WQVJJRF9NQVggKyAxXTsKKwlp bnQJCQludW1WYXJzOworCWludAkJCW51bUVsZW1lbnRzOworCVJQUkRlcHRoCW1heERlcHRoOwor CWludAkJCWlkeDsKKworCS8qIENhbGxlciBtdXN0IGNoZWNrIGZvciBOVUxMIHBhdHRlcm4gYmVm b3JlIGNhbGxpbmcgKi8KKwlBc3NlcnQocGF0dGVybiAhPSBOVUxMKTsKKwkvKiBSUFIgaXMgUk9X Uy1vbmx5OiB0cmFuc2Zvcm1SUFIoKSByZWplY3RzIFJBTkdFL0dST1VQUyB1cCBmcm9udCAqLwor CUFzc2VydChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9ST1dTKTsKKworCS8qIE9wdGltaXpl IHRoZSBwYXR0ZXJuIHRyZWUgKi8KKwlvcHRpbWl6ZWQgPSBvcHRpbWl6ZVJQUlBhdHRlcm4oY29w eU9iamVjdChwYXR0ZXJuKSk7CisKKwkvKiBDb2xsZWN0IHZhcmlhYmxlIG5hbWVzIGZyb20gREVG SU5FIGNsYXVzZSAqLworCW51bVZhcnMgPSBjb2xsZWN0RGVmaW5lVmFyaWFibGVzKGRlZmluZVZh cmlhYmxlTGlzdCwgdmFyTmFtZXNTdGFjayk7CisKKwkvKiBTY2FuIHBhdHRlcm46IGNvbGxlY3Qg dmFyaWFibGVzLCBjb3VudCBlbGVtZW50cywgdmFsaWRhdGUgbGltaXRzICovCisJc2NhblJQUlBh dHRlcm4ob3B0aW1pemVkLCB2YXJOYW1lc1N0YWNrLCAmbnVtVmFycywgJm51bUVsZW1lbnRzLCAm bWF4RGVwdGgpOworCisJLyogQWxsb2NhdGUgcmVzdWx0IHN0cnVjdHVyZSAqLworCXJlc3VsdCA9 IG1ha2VSUFJQYXR0ZXJuKG51bVZhcnMsIG51bUVsZW1lbnRzLCBtYXhEZXB0aCwgdmFyTmFtZXNT dGFjayk7CisKKwkvKiBGaWxsIGVsZW1lbnRzIChwYXNzIDIpICovCisJaWR4ID0gMDsKKwlmaWxs UlBSUGF0dGVybihvcHRpbWl6ZWQsIHJlc3VsdCwgJmlkeCwgMCk7CisKKwkvKiBGaW5hbGl6ZTog c2V0IHVwIG5leHQgcG9pbnRlcnMsIGZsYWdzLCBhbmQgYWRkIEZJTiBtYXJrZXIgKi8KKwlmaW5h bGl6ZVJQUlBhdHRlcm4ocmVzdWx0KTsKKworCS8qCisJICogQ29tcHV0ZSBjb250ZXh0IGFic29y cHRpb24gZWxpZ2liaWxpdHkuIEFic29ycHRpb24gcmVxdWlyZXMgYm90aAorCSAqIHN0cnVjdHVy YWwgYWJzb3JiYWJpbGl0eSBhbmQgcnVudGltZSBjb25kaXRpb25zLiBDaGVjayBydW50aW1lCisJ ICogY29uZGl0aW9ucyBmaXJzdCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBwYXR0ZXJuIGFuYWx5c2lz LgorCSAqCisJICogUnVudGltZSBjb25kaXRpb25zIGZvciBhYnNvcnB0aW9uOgorCSAqCisJICog MS4gU0tJUCBUTyBQQVNUIExBU1QgUk9XIHJlcXVpcmVkIChub3QgU0tJUCBUTyBORVhUIFJPVyk6 IFdpdGggTkVYVAorCSAqIFJPVywgYWZ0ZXIgZWFjaCBtYXRjaCB0aGUgc2VhcmNoIHJlc3VtZXMg ZnJvbSB0aGUgbmV4dCByb3csIHNvIGNvbnRleHRzCisJICogYXJlIGltbWVkaWF0ZWx5IGRpc2Nh cmRlZC4gTm8gcmVkdW5kYW50IGNvbnRleHRzIGFjY3VtdWxhdGUsIG1ha2luZworCSAqIGFic29y cHRpb24gdW5uZWNlc3NhcnkuCisJICoKKwkgKiAyLiBVbmJvdW5kZWQgZnJhbWUgZW5kIHJlcXVp cmVkIChub3QgUk9XUyB3aXRoIGJvdW5kZWQgZW5kKTogV2l0aCBhCisJICogYm91bmRlZCBmcmFt ZSAoZS5nLiwgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxMCBGT0xMT1dJTkcpLAorCSAq IG1hdGNoZXMgbWF5IGJlIHRydW5jYXRlZCBhdCBmcmFtZSBib3VuZGFyaWVzLiBUaGlzIGNoYW5n ZXMgdGhlCisJICogYWJzb3JwdGlvbiBzZW1hbnRpY3MgLSBvbGRlciBjb250ZXh0cyBkb24ndCBu ZWNlc3NhcmlseSBwcm9kdWNlIGxvbmdlcgorCSAqIG1hdGNoZXMgd2hlbiBmcmFtZSBsaW1pdHMg YXBwbHkgZGlmZmVyZW50bHkgdG8gZWFjaCBjb250ZXh0LgorCSAqLworCWlmIChycFNraXBUbyA9 PSBTVF9QQVNUX0xBU1RfUk9XICYmCisJCShmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FTkRf VU5CT1VOREVEX0ZPTExPV0lORykgJiYKKwkJIWhhc01hdGNoU3RhcnREZXBlbmRlbnQpCisJewor CQkvKiBSdW50aW1lIGNvbmRpdGlvbnMgbWV0IC0gY2hlY2sgc3RydWN0dXJhbCBhYnNvcmJhYmls aXR5ICovCisJCWNvbXB1dGVBYnNvcmJhYmlsaXR5KHJlc3VsdCk7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIG5hdl90cmF2ZXJzYWxfd2Fsa2VyCisgKgkJU2hhcmVkIGV4cHJl c3Npb24tdHJlZSB3YWxrZXIgdGhhdCBsb2NhdGVzIFJQUk5hdkV4cHIgbm9kZXMgaW4gYQorICoJ CURFRklORSBleHByZXNzaW9uIGFuZCBkaXNwYXRjaGVzIGVhY2ggb25lIHRvIGEgY2FsbGVyLXN1 cHBsaWVkCisgKgkJdmlzaXRvci4gIFVzZWQgYnk6CisgKgkJICAtIHBsYW5uZXIgKHZpc2l0X25h dl9wbGFuIGluIGNyZWF0ZXBsYW4uYykgdG8gY29sbGVjdCB0dXBsZXN0b3JlCisgKgkJICAgIHRy aW0gb2Zmc2V0cyBhbmQgcGVyLXZhcmlhYmxlIG1hdGNoX3N0YXJ0IGRlcGVuZGVuY3kKKyAqCQkg IC0gZXhlY3V0b3IgKHZpc2l0X25hdl9leGVjIGluIG5vZGVXaW5kb3dBZ2cuYykgdG8gZXZhbHVh dGUKKyAqCQkgICAgbm9uLWNvbnN0YW50IG5hdiBvZmZzZXRzIGF0IFdpbmRvd0FnZ1N0YXRlIGlu aXQgdGltZQorICoKKyAqIFRoZSBkcml2ZXIgd3JhcHMgYSBtb2RlLXNwZWNpZmljIGNvbnRleHQg aW4gYSBOYXZUcmF2ZXJzYWwgYW5kIHBhc3NlcworICogaXQgYXMgY3R4OyB0aGUgdmlzaXRvciBj YXN0cyB0LT5kYXRhIHRvIGl0cyBvd24gY29udGV4dCB0eXBlLiAgQ2hpbGRyZW4KKyAqIG9mIGFu IFJQUk5hdkV4cHIgYXJlIG5vdCB3YWxrZWQ6IHRoZSBwYXJzZXIncyBuZXN0aW5nIHJlc3RyaWN0 aW9ucworICogZW5zdXJlIG9mZnNldHMgYW5kIGRlcGVuZGVuY2llcyBhcmUgZnVsbHkgY2FwdHVy ZWQgYnkgdGhlIG91dGVyIG5hdgorICoga2luZCwgc28gdGhlIHZpc2l0b3Igb25seSBuZWVkcyB0 byBpbnNwZWN0IHRoZSBSUFJOYXZFeHByIGl0c2VsZi4KKyAqLworYm9vbAorbmF2X3RyYXZlcnNh bF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY3R4KQoreworCWlmIChub2RlID09IE5VTEwpCisJ CXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgUlBSTmF2RXhwcikpCisJeworCQlOYXZU cmF2ZXJzYWwgKnQgPSAoTmF2VHJhdmVyc2FsICopIGN0eDsKKworCQl0LT52aXNpdCh0LCAoUlBS TmF2RXhwciAqKSBub2RlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiBleHByZXNz aW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl90cmF2ZXJzYWxfd2Fsa2VyLCBjdHgpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IGZmMGU4NzVmMmEyLi44MTNhMzI2YmQ3 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMjE0LDcgKzIxNCw2IEBA IHN0YXRpYyBMaXN0ICpzZXRfd2luZG93YWdnX3J1bmNvbmRpdGlvbl9yZWZlcmVuY2VzKFBsYW5u ZXJJbmZvICpyb290LAogc3RhdGljIHZvaWQgcmVjb3JkX2VsaWRlZF9ub2RlKFBsYW5uZXJHbG9i YWwgKmdsb2IsIGludCBwbGFuX25vZGVfaWQsCiAJCQkJCQkJICAgTm9kZVRhZyBlbGlkZWRfdHlw ZSwgQml0bWFwc2V0ICpyZWxpZHMpOwogCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAq CQlTVUJQTEFOIFJFRkVSRU5DRVMKQEAgLTI2MzMsNiArMjYzMiwzNCBAQCBzZXRfdXBwZXJfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KQogCQkJ CQkgICBOUk1fRVFVQUwsCiAJCQkJCSAgIE5VTV9FWEVDX1FVQUwocGxhbikpOwogCisJLyoKKwkg KiBSZXBsYWNlIGFuIGV4cHJlc3Npb24gdHJlZSBpbiBlYWNoIERFRklORSBjbGF1c2Ugc28gdGhh dCBhbGwgVmFyCisJICogbm9kZXMncyB2YXJubyByZWZlcnMgdG8gT1VURVJfVkFSLgorCSAqLwor CWlmIChJc0EocGxhbiwgV2luZG93QWdnKSkKKwl7CisJCVdpbmRvd0FnZyAgKndwbGFuID0gKFdp bmRvd0FnZyAqKSBwbGFuOworCisJCWlmICh3cGxhbi0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkKKwkJ eworCQkJZm9yZWFjaChsLCB3cGxhbi0+ZGVmaW5lQ2xhdXNlKQorCQkJeworCQkJCVRhcmdldEVu dHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGwpOworCisJCQkJdGxlID0gZmxhdENv cHlUYXJnZXRFbnRyeSh0bGUpOworCQkJCXRsZS0+ZXhwciA9IChFeHByICopCisJCQkJCWZpeF91 cHBlcl9leHByKHJvb3QsCisJCQkJCQkJCSAgIChOb2RlICopIHRsZS0+ZXhwciwKKwkJCQkJCQkJ ICAgc3VicGxhbl9pdGxpc3QsCisJCQkJCQkJCSAgIE9VVEVSX1ZBUiwKKwkJCQkJCQkJICAgcnRv ZmZzZXQsCisJCQkJCQkJCSAgIE5STV9FUVVBTCwKKwkJCQkJCQkJICAgTlVNX0VYRUNfUVVBTChw bGFuKSk7CisJCQkJbGZpcnN0KGwpID0gdGxlOworCQkJfQorCQl9CisJfQorCiAJcGZyZWUoc3Vi cGxhbl9pdGxpc3QpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJl cC9wcmVwam9pbnRyZWUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBqb2ludHJl ZS5jCmluZGV4IDQ0MjRmZGJlOTA2Li43NGRjNDg2YjFmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3ByZXAvcHJlcGpvaW50cmVlLmMKQEAgLTI1OTMsNiArMjU5MywxMyBAQCBwZXJmb3JtX3B1 bGx1cF9yZXBsYWNlX3ZhcnMoUGxhbm5lckluZm8gKnJvb3QsCiAJcGFyc2UtPnJldHVybmluZ0xp c3QgPSAoTGlzdCAqKQogCQlwdWxsdXBfcmVwbGFjZV92YXJzKChOb2RlICopIHBhcnNlLT5yZXR1 cm5pbmdMaXN0LCBydmNvbnRleHQpOwogCisJZm9yZWFjaF9ub2RlKFdpbmRvd0NsYXVzZSwgd2Ms IHBhcnNlLT53aW5kb3dDbGF1c2UpCisJeworCQlpZiAod2MtPmRlZmluZUNsYXVzZSAhPSBOSUwp CisJCQl3Yy0+ZGVmaW5lQ2xhdXNlID0gKExpc3QgKikKKwkJCQlwdWxsdXBfcmVwbGFjZV92YXJz KChOb2RlICopIHdjLT5kZWZpbmVDbGF1c2UsIHJ2Y29udGV4dCk7CisJfQorCiAJaWYgKHBhcnNl LT5vbkNvbmZsaWN0KQogCXsKIAkJcGFyc2UtPm9uQ29uZmxpY3QtPm9uQ29uZmxpY3RTZXQgPSAo TGlzdCAqKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAxNGExZGZlZDJiOS4uZDQ1ZDkzZDc5YTIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAibm9k ZXMvbG9ja29wdGlvbnMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVk ZSAibm9kZXMvcHJpbW5vZGVzLmgiCiAKIApAQCAtMTI0NCw2ICsxMjQ1LDc3IEBAIHR5cGVkZWYg c3RydWN0IEFnZwogCUxpc3QJICAgKmNoYWluOwogfSBBZ2c7CiAKKy8qIC0tLS0tLS0tLS0tLS0t LS0KKyAqCQlSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBjb21waWxlZCBwYXR0ZXJuIHR5cGVzCisg KiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogVHlwZSBkZWZpbml0aW9ucyBmb3IgUlBSIHBh dHRlcm4gZWxlbWVudHMgKi8KK3R5cGVkZWYgdWludDggUlBSVmFySWQ7CQkJLyogcGF0dGVybiB2 YXJpYWJsZSBJRCAqLwordHlwZWRlZiB1aW50OCBSUFJFbGVtRmxhZ3M7CQkvKiBlbGVtZW50IGZs YWdzICovCit0eXBlZGVmIHVpbnQ4IFJQUkRlcHRoOwkJCS8qIGdyb3VwIG5lc3RpbmcgZGVwdGgg Ki8KK3R5cGVkZWYgaW50MzIgUlBSUXVhbnRpdHk7CQkvKiBxdWFudGlmaWVyIG1pbi9tYXggKi8K K3R5cGVkZWYgaW50MTYgUlBSRWxlbUlkeDsJCS8qIGVsZW1lbnQgYXJyYXkgaW5kZXggKi8KKwor LyoKKyAqIFJQUlBhdHRlcm5FbGVtZW50IC0gZmxhdCBlbGVtZW50IGZvciBORkEgcGF0dGVybiBt YXRjaGluZyAoMTYgYnl0ZXMpCisgKgorICogTGF5b3V0IG9wdGltaXplZCBmb3IgYWxpZ25tZW50 IChubyBwYWRkaW5nIGhvbGVzKToKKyAqICAgdmFySWQoMSkgKyBkZXB0aCgxKSArIGZsYWdzKDEp ICsgcmVzZXJ2ZWQoMSkgKyBtaW4oNCkgKyBtYXgoNCkgKyBuZXh0KDIpICsganVtcCgyKQorICov Cit0eXBlZGVmIHN0cnVjdCBSUFJQYXR0ZXJuRWxlbWVudAoreworCVJQUlZhcklkCXZhcklkOwkJ CS8qIHZhcmlhYmxlIElELCBvciBzcGVjaWFsIHZhbHVlIGZvciBjb250cm9sICovCisJUlBSRGVw dGgJZGVwdGg7CQkJLyogZ3JvdXAgbmVzdGluZyBkZXB0aCAqLworCVJQUkVsZW1GbGFncyBmbGFn czsJCQkvKiBmbGFncyAocmVsdWN0YW50LCBldGMuKSAqLworCXVpbnQ4CQlyZXNlcnZlZDsJCS8q IHJlc2VydmVkIHBhZGRpbmcgYnl0ZSAqLworCVJQUlF1YW50aXR5IG1pbjsJCQkvKiBxdWFudGlm aWVyIG1pbmltdW0gKi8KKwlSUFJRdWFudGl0eSBtYXg7CQkJLyogcXVhbnRpZmllciBtYXhpbXVt ICovCisJUlBSRWxlbUlkeAluZXh0OwkJCS8qIG5leHQgZWxlbWVudCBpbmRleCAqLworCVJQUkVs ZW1JZHgJanVtcDsJCQkvKiBqdW1wIHRhcmdldCAoZm9yIEFMVC9HUk9VUCkgKi8KK30gUlBSUGF0 dGVybkVsZW1lbnQ7CisKKy8qCisgKiBSUFJQYXR0ZXJuIC0gY29tcGlsZWQgcGF0dGVybiBmb3Ig TkZBIGV4ZWN1dGlvbgorICoKKyAqIFJlcXVpcmVzIGN1c3RvbSBjb3B5L291dC9yZWFkIGZ1bmN0 aW9ucyBkdWUgdG8gZWxlbWVudHMgYXJyYXkuCisgKi8KK3R5cGVkZWYgc3RydWN0IFJQUlBhdHRl cm4KK3sKKwlwZ19ub2RlX2F0dHIoY3VzdG9tX2NvcHlfZXF1YWwsIGN1c3RvbV9yZWFkX3dyaXRl KQorCisJTm9kZVRhZwkJdHlwZTsJCQkvKiBUX1JQUlBhdHRlcm4gKi8KKwlpbnQJCQludW1WYXJz OwkJLyogbnVtYmVyIG9mIHBhdHRlcm4gdmFyaWFibGVzICovCisJY2hhcgkgICoqdmFyTmFtZXM7 CQkvKiBhcnJheSBvZiB2YXJpYWJsZSBuYW1lcyAoREVGSU5FIG9yZGVyCisJCQkJCQkJCSAqIGZp cnN0KSAqLworCVJQUkRlcHRoCW1heERlcHRoOwkJLyogbWF4aW11bSBncm91cCBuZXN0aW5nIGRl cHRoICovCisJaW50CQkJbnVtRWxlbWVudHM7CS8qIG51bWJlciBvZiBlbGVtZW50cyAqLworCVJQ UlBhdHRlcm5FbGVtZW50ICplbGVtZW50czsJLyogYXJyYXkgb2YgcGF0dGVybiBlbGVtZW50cyAq LworCisJLyotLS0tLS0tLS0tLS0tLS0tCisJICogQ29udGV4dCBhYnNvcnB0aW9uIG9wdGltaXph dGlvbi4KKwkgKgorCSAqIEFic29ycHRpb24gaXMgb25seSBzYWZlIHdoZW4gbGF0ZXIgbWF0Y2hl cyBhcmUgZ3VhcmFudGVlZCB0byBiZQorCSAqIHN1ZmZpeGVzIG9mIGVhcmxpZXIgbWF0Y2hlcywg d2hpY2ggcmVxdWlyZXMgdGhlIHBhdHRlcm4gdG8gc3RhcnQgd2l0aAorCSAqIGFuIHVuYm91bmRl ZCBncmVlZHkgZWxlbWVudC4gIFBoYXNlLTEgbm9ybWFsaXphdGlvbiAoY29uc2VjdXRpdmUKKwkg KiB2YXJpYWJsZSAvIGdyb3VwIC8gQUxUIG1lcmdpbmcgYW5kIHByZWZpeC9zdWZmaXggbWVyZ2lu ZykgcmV3cml0ZXMgdGhlCisJICogcGF0dGVybiB0b3dhcmQgdGhhdCBmb3JtIGZpcnN0IC0tIHNv IGUuZy4gQSBCIChBIEIpKyBpcyBtZXJnZWQgdG8KKwkgKiAoQSBCKXsyLH0gYW5kIHRoZW4ganVk Z2VkIGFic29yYmFibGUuCisJICoKKwkgKiBjb21wdXRlQWJzb3JiYWJpbGl0eSgpIG1hcmtzIHRo ZSBhYnNvcmJhYmxlIGNhc2VzIChzZWUgaXNVbmJvdW5kZWRTdGFydCk6CisJICogICAtIHNpbXBs ZSB1bmJvdW5kZWQgVkFSIGF0IHRoZSBzdGFydDogICAgICAgICAgICAgICAgICAgIEErIEIgQwor CSAqICAgLSB1bmJvdW5kZWQgR1JPVVAgd2l0aCBmaXhlZC1sZW5ndGggY2hpbGRyZW46ICAgICAg ICAgICAoQSBCKSssIChBIEJ7Mn0pKworCSAqICAgLSB0b3AtbGV2ZWwgQUxUIHdpdGggaW5kZXBl bmRlbnRseSBhYnNvcmJhYmxlIGJyYW5jaGVzOiBBKyB8IEIrCisJICogICAgIChoYW5kbGVkIGlu IGNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZlKQorCSAqCisJICogTm90IGFic29yYmFibGU6 IGFuIHVuYm91bmRlZCBlbGVtZW50IG5vdCBhdCB0aGUgc3RhcnQgKEEgQispLCBhCisJICogcmVs dWN0YW50IHF1YW50aWZpZXIgKEErPyksIG9yIGFuIEFMVCBpbnNpZGUgYSBncm91cCAoKEF8Qikr KSAtLSB0aGVyZQorCSAqIGRpZmZlcmVudCBzdGFydCBwb3NpdGlvbnMgeWllbGQgZGlmZmVyZW50 IG1hdGNoIGNvbnRlbnRzLCBzbyBsYXRlcgorCSAqIG1hdGNoZXMgYXJlIG5vdCBzdWZmaXhlcyBv ZiBlYXJsaWVyIG9uZXMuCisJICovCisJYm9vbAkJaXNBYnNvcmJhYmxlOwkvKiB0cnVlIGlmIHBh dHRlcm4gc3VwcG9ydHMgY29udGV4dCBhYnNvcnB0aW9uICovCit9IFJQUlBhdHRlcm47CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0KICAqCQl3aW5kb3cgYWdncmVnYXRlIG5vZGUKICAqIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTEzMTQsNiArMTM4Niw0NCBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2cK IAkvKiBudWxscyBzb3J0IGZpcnN0IGZvciBpbl9yYW5nZSB0ZXN0cz8gKi8KIAlib29sCQlpblJh bmdlTnVsbHNGaXJzdDsKIAorCS8qIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIEFGVEVSIE1BVENI IFNLSVAgY2xhdXNlICovCisJUlBTa2lwVG8JcnBTa2lwVG87CQkvKiBSb3cgUGF0dGVybiBTa2lw IFRvIHR5cGUgKi8KKworCS8qIENvbXBpbGVkIFJvdyBQYXR0ZXJuIGZvciBORkEgZXhlY3V0aW9u ICovCisJc3RydWN0IFJQUlBhdHRlcm4gKnJwUGF0dGVybjsKKworCS8qIFJvdyBQYXR0ZXJuIERF RklORSBjbGF1c2UgKGxpc3Qgb2YgVGFyZ2V0RW50cnkpICovCisJTGlzdAkgICAqZGVmaW5lQ2xh dXNlOworCisJLyoKKwkgKiBCaXRtYXBzZXQgb2YgREVGSU5FIHZhcmlhYmxlIGluZGljZXMgd2hv c2UgZXhwcmVzc2lvbnMgZGVwZW5kIG9uCisJICogbWF0Y2hfc3RhcnQgKGNvbnRhaW4gRklSU1Qs IExBU1Qtd2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kCisJICogUFJFVl9GSVJTVC9ORVhUX0ZJUlNU L1BSRVZfTEFTVC9ORVhUX0xBU1Qgd2l0aCBvZmZzZXQpLiAgVmFyaWFibGVzIGluCisJICogdGhp cyBzZXQgcmVxdWlyZSBwZXItY29udGV4dCByZS1ldmFsdWF0aW9uIGR1cmluZyBORkEgcHJvY2Vz c2luZy4KKwkgKi8KKwlCaXRtYXBzZXQgICpkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50OworCisJ LyoKKwkgKiBOYXZpZ2F0aW9uIG9mZnNldCBzdGF0dXMgYW5kIHZhbHVlcyBmb3IgdHVwbGVzdG9y ZSBtYXJrIG9wdGltaXphdGlvbi4KKwkgKiBTZWUgUlBSTmF2T2Zmc2V0S2luZCBpbiBub2Rlcy9w YXJzZW5vZGVzLmguCisJICoKKwkgKiBuYXZNYXhPZmZzZXQ6IG1heGltdW0gYmFja3dhcmQgcmVh Y2ggZnJvbSBjdXJyZW50cG9zIChjb250cmlidXRlZCBieQorCSAqIFBSRVYsIExBU1Qtd2l0aC1v ZmZzZXQsIGNvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1QpLiAgT25seSB2YWxpZCB3aGVuCisJ ICogbmF2TWF4T2Zmc2V0S2luZCA9PSBSUFJfTkFWX09GRlNFVF9GSVhFRC4KKwkgKgorCSAqIG5h dkZpcnN0T2Zmc2V0OiBtaW5pbXVtIGZvcndhcmQgb2Zmc2V0IGZyb20gbWF0Y2hfc3RhcnQgKGNv bnRyaWJ1dGVkIGJ5CisJICogRklSU1QsIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVCku ICBDYW4gYmUgbmVnYXRpdmUgZm9yIGNvbXBvdW5kCisJICogUFJFVl9GSVJTVC4gIE9ubHkgdmFs aWQgd2hlbiBuYXZGaXJzdE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfRklYRUQKKwkgKiBh bmQgaGFzRmlyc3ROYXYgPT0gdHJ1ZS4KKwkgKi8KKwlSUFJOYXZPZmZzZXRLaW5kIG5hdk1heE9m ZnNldEtpbmQ7CisJaW50NjQJCW5hdk1heE9mZnNldDsKKworCS8qIHRydWUgaWYgRklSU1QtYmFz ZWQgbmF2aWdhdGlvbiAoRklSU1QsIFBSRVZfRklSU1QsIE5FWFRfRklSU1QpIGlzIHVzZWQgKi8K Kwlib29sCQloYXNGaXJzdE5hdjsKKwlSUFJOYXZPZmZzZXRLaW5kIG5hdkZpcnN0T2Zmc2V0S2lu ZDsKKwlpbnQ2NAkJbmF2Rmlyc3RPZmZzZXQ7CisKIAkvKgogCSAqIGZhbHNlIGZvciBhbGwgYXBh cnQgZnJvbSB0aGUgV2luZG93QWdnIHRoYXQncyBjbG9zZXN0IHRvIHRoZSByb290IG9mCiAJICog dGhlIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCBiL3NyYy9p bmNsdWRlL29wdGltaXplci9ycHIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uODAyZDJmMWRkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcnByLmgKQEAgLTAsMCArMSw5OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcnBy LmgKKyAqCSAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gcGF0dGVybiBjb21waWxhdGlvbiBmb3Ig cGxhbm5lcgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBPUFRJTUlaRVJfUlBSX0gKKyNkZWZpbmUgT1BUSU1JWkVSX1JQUl9ICisKKyNpbmNsdWRl ICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCisKKy8q IExpbWl0cyBhbmQgc3BlY2lhbCB2YWx1ZXMgKi8KKy8qCisgKiBNYXhpbXVtIHBhdHRlcm4gdmFy aWFibGUgSUQuICBQYXR0ZXJuIHZhcmlhYmxlcyBvY2N1cHkgdmFySWQgMCB0bworICogUlBSX1ZB UklEX01BWCBpbmNsdXNpdmUgKDI0MCBkaXN0aW5jdCB2YXJpYWJsZXMpOyBhbnkgdmFySWQgd2l0 aCB0aGUgaGlnaAorICogbmliYmxlIHNldCAoMHhGMCB0byAweEZGKSBpcyByZXNlcnZlZCBmb3Ig Y29udHJvbCBlbGVtZW50cy4gIFJlc2VydmluZyB0aGUKKyAqIHdob2xlIGhpZ2ggbmliYmxlLCBy YXRoZXIgdGhhbiBqdXN0IHRoZSB2YWx1ZXMgY3VycmVudGx5IGluIHVzZSwgbGVhdmVzCisgKiBy b29tIGZvciBmdXR1cmUgY29udHJvbCBlbGVtZW50czsgdGhpcyByYW5nZSBjYW4gb25seSBiZSBu YXJyb3dlZCBzYWZlbHkKKyAqIGJlZm9yZSByZWxlYXNlLgorICovCisjZGVmaW5lIFJQUl9WQVJJ RF9NQVgJCTB4RUYJLyogcGF0dGVybiB2YXJpYWJsZXMgYXJlIDAgdG8gMHhFRiAqLworI2RlZmlu ZSBSUFJfUVVBTlRJVFlfSU5GCVBHX0lOVDMyX01BWAkvKiB1bmJvdW5kZWQgcXVhbnRpZmllciAq LworI2RlZmluZSBSUFJfQ09VTlRfTUFYCQlQR19JTlQzMl9NQVgJLyogbWF4IHJ1bnRpbWUgY291 bnQgKE5GQSBzdGF0ZSkgKi8KKyNkZWZpbmUgUlBSX0VMRU1JRFhfTUFYCQlQR19JTlQxNl9NQVgJ LyogbWF4IHBhdHRlcm4gZWxlbWVudHMgKi8KKyNkZWZpbmUgUlBSX0VMRU1JRFhfSU5WQUxJRAko KFJQUkVsZW1JZHgpIC0xKQkvKiBpbnZhbGlkIGluZGV4ICovCisjZGVmaW5lIFJQUl9ERVBUSF9N QVgJCShQR19VSU5UOF9NQVggLSAxKQkvKiBtYXggcGF0dGVybiBuZXN0aW5nIGRlcHRoOgorCQkJ CQkJCQkJCQkJICogMjU0ICovCisjZGVmaW5lIFJQUl9ERVBUSF9OT05FCQlQR19VSU5UOF9NQVgJ Lyogbm8gZW5jbG9zaW5nIGdyb3VwICh0b3AtbGV2ZWwpICovCisKKy8qIFJlc2VydmVkIGNvbnRy b2wtZWxlbWVudCB2YXJJZHMgKGhpZ2ggbmliYmxlIDB4RjsgMHhGMC0weEZCIHNwYXJlKSAqLwor I2RlZmluZSBSUFJfVkFSSURfQkVHSU4JCSgoUlBSVmFySWQpIDB4RkMpCS8qIGdyb3VwIGJlZ2lu ICovCisjZGVmaW5lIFJQUl9WQVJJRF9FTkQJCSgoUlBSVmFySWQpIDB4RkQpCS8qIGdyb3VwIGVu ZCAqLworI2RlZmluZSBSUFJfVkFSSURfQUxUCQkoKFJQUlZhcklkKSAweEZFKQkvKiBhbHRlcm5h dGlvbiBzdGFydCAqLworI2RlZmluZSBSUFJfVkFSSURfRklOCQkoKFJQUlZhcklkKSAweEZGKQkv KiBwYXR0ZXJuIGZpbmlzaCAqLworCisvKiBFbGVtZW50IGZsYWdzICovCisjZGVmaW5lIFJQUl9F TEVNX1JFTFVDVEFOVAkJCTB4MDEJLyogcmVsdWN0YW50IChub24tZ3JlZWR5KQorCQkJCQkJCQkJ CQkgKiBxdWFudGlmaWVyICovCisjZGVmaW5lIFJQUl9FTEVNX0VNUFRZX0xPT1AJCQkweDAyCS8q IEVORDogZ3JvdXAgYm9keSBjYW4gcHJvZHVjZQorCQkJCQkJCQkJCQkgKiBlbXB0eSBtYXRjaCAq LworLyoKKyAqIFRoZSB0d28gYWJzb3JwdGlvbiBmbGFncyBiZWxvdyBhcmUgZXhwbGFpbmVkIGlu IFJFQURNRS5ycHIgSVYtNQorICogKCJBYnNvcmJhYmlsaXR5IEFuYWx5c2lzIiksIHdpdGggd29y a2VkIGV4YW1wbGVzIGluIEFwcGVuZGl4IEM7IHRoZQorICogYW5hbHlzaXMgdGhhdCBzZXRzIHRo ZW0gaXMgY29tcHV0ZUFic29yYmFiaWxpdHkoKSBpbgorICogb3B0aW1pemVyL3BsYW4vcnByLmMu CisgKi8KKyNkZWZpbmUgUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0gJMHgwNAkvKiBlbGVtZW50 IGluIGFic29yYmFibGUgcmVnaW9uICovCisjZGVmaW5lIFJQUl9FTEVNX0FCU09SQkFCTEUJCQkw eDA4CS8qIGFic29ycHRpb24ganVkZ21lbnQgcG9pbnQgKi8KKworLyogQWNjZXNzb3IgbWFjcm9z IGZvciBSUFJQYXR0ZXJuRWxlbWVudCAqLworI2RlZmluZSBSUFJFbGVtSXNSZWx1Y3RhbnQoZSkJ CQkoKChlKS0+ZmxhZ3MgJiBSUFJfRUxFTV9SRUxVQ1RBTlQpICE9IDApCisjZGVmaW5lIFJQUkVs ZW1DYW5FbXB0eUxvb3AoZSkJCQkoKChlKS0+ZmxhZ3MgJiBSUFJfRUxFTV9FTVBUWV9MT09QKSAh PSAwKQorI2RlZmluZSBSUFJFbGVtSXNBYnNvcmJhYmxlQnJhbmNoKGUpCSgoKGUpLT5mbGFncyAm IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIKSAhPSAwKQorI2RlZmluZSBSUFJFbGVtSXNBYnNv cmJhYmxlKGUpCQkJKCgoZSktPmZsYWdzICYgUlBSX0VMRU1fQUJTT1JCQUJMRSkgIT0gMCkKKyNk ZWZpbmUgUlBSRWxlbUlzVmFyKGUpCQkJKChlKS0+dmFySWQgPD0gUlBSX1ZBUklEX01BWCkKKyNk ZWZpbmUgUlBSRWxlbUlzQmVnaW4oZSkJCSgoZSktPnZhcklkID09IFJQUl9WQVJJRF9CRUdJTikK KyNkZWZpbmUgUlBSRWxlbUlzRW5kKGUpCQkJKChlKS0+dmFySWQgPT0gUlBSX1ZBUklEX0VORCkK KyNkZWZpbmUgUlBSRWxlbUlzQWx0KGUpCQkJKChlKS0+dmFySWQgPT0gUlBSX1ZBUklEX0FMVCkK KyNkZWZpbmUgUlBSRWxlbUlzRmluKGUpCQkJKChlKS0+dmFySWQgPT0gUlBSX1ZBUklEX0ZJTikK KyNkZWZpbmUgUlBSRWxlbUNhblNraXAoZSkJCSgoZSktPm1pbiA9PSAwKQorCitleHRlcm4gTGlz dCAqY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOworZXh0 ZXJuIHZvaWQgdmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5KExpc3QgKmRlZmluZUNsYXVz ZSk7CitleHRlcm4gdm9pZCBidWlsZERlZmluZVZhcmlhYmxlTGlzdChMaXN0ICpkZWZpbmVDbGF1 c2UsCisJCQkJCQkJCQlMaXN0ICoqZGVmaW5lVmFyaWFibGVMaXN0KTsKK2V4dGVybiBSUFJQYXR0 ZXJuICpidWlsZFJQUlBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4sIExpc3QgKmRlZmlu ZVZhcmlhYmxlTGlzdCwKKwkJCQkJCQkJICAgUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9w dGlvbnMsCisJCQkJCQkJCSAgIGJvb2wgaGFzTWF0Y2hTdGFydERlcGVuZGVudCk7CisKKy8qCisg KiBTaGFyZWQgdHJhdmVyc2FsIHdhbGtlciBmb3IgREVGSU5FIGNsYXVzZSBSUFJOYXZFeHByIGNv bGxlY3Rpb24uCisgKgorICogQm90aCBwbGFubmVyIChuYXYtb2Zmc2V0IC8gbWF0Y2hfc3RhcnQg ZGVwZW5kZW5jeSBhbmFseXNpcykgYW5kIGV4ZWN1dG9yCisgKiAocnVudGltZSBvZmZzZXQgZXZh bHVhdGlvbikgbmVlZCB0byB3YWxrIERFRklORSBleHByZXNzaW9ucyBhbmQgZGlzcGF0Y2gKKyAq IHBlciBSUFJOYXZFeHByLiAgVGhleSBkaWZmZXIgb25seSBpbiB3aGF0IHRoZXkgZG8gYXQgZWFj aCBuYXYgbm9kZSwgc28KKyAqIHRoZSB0cmF2ZXJzYWwgZnJhbWUgaXMgc2hhcmVkIChuYXZfdHJh dmVyc2FsX3dhbGtlciwgZGVmaW5lZCBpbiBycHIuYykKKyAqIGFuZCB0aGUgcGVyLW5hdiBhY3Rp b24gaXMgc3VwcGxpZWQgYXMgYSBjYWxsYmFjay4gIFRoZSBkcml2ZXIgYWxsb2NhdGVzCisgKiBh IG1vZGUtc3BlY2lmaWMgY29udGV4dCwgcG9pbnRzIE5hdlRyYXZlcnNhbC5kYXRhIGF0IGl0LCBh bmQgY2FzdHMKKyAqIGluc2lkZSBpdHMgdmlzaXRvci4KKyAqLworc3RydWN0IE5hdlRyYXZlcnNh bDsKK3R5cGVkZWYgdm9pZCAoKk5hdlZpc2l0Rm4pIChzdHJ1Y3QgTmF2VHJhdmVyc2FsICp0LCBS UFJOYXZFeHByICpuYXYpOworCit0eXBlZGVmIHN0cnVjdCBOYXZUcmF2ZXJzYWwKK3sKKwlOYXZW aXNpdEZuCXZpc2l0OworCXZvaWQJICAgKmRhdGE7CQkJLyogbW9kZS1zcGVjaWZpYyBjb250ZXh0 ICovCit9IE5hdlRyYXZlcnNhbDsKKworZXh0ZXJuIGJvb2wgbmF2X3RyYXZlcnNhbF93YWxrZXIo Tm9kZSAqbm9kZSwgdm9pZCAqY3R4KTsKKworI2VuZGlmCQkJCQkJCS8qIE9QVElNSVpFUl9SUFJf SCAqLwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0005-Row-pattern-recognition-patch-executor-and-comma.patch" Content-Disposition: attachment; filename="v49-0005-Row-pattern-recognition-patch-executor-and-comma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqql8t64 RnJvbSBkOWZjOTAyN2FkZGE2ZTg3NmU1OTU0OTgzODkzY2IwNWRkYWJiODRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDUvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChleGVjdXRvciBhbmQKIGNvbW1h bmRzKS4KCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICB8ICA0ODQg KysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSAgICAgICAgIHwgICAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgIHwgICA5MiArKwogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyB8ICAyNjcgKysrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JQUi5jICAgICAgICB8IDE5NzkgKysrKysrKysrKysrKysrKysrKysrKysrKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgICAgICB8ICAgIDEgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICB8IDE0OTAgKysrKysrKysrKysrKysrKy0tLQog c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICB8ICAgNzggKy0KIHNyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgfCAgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC93aW5kb3dmdW5jcy5jICAgfCAgMTE5ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0ICAgICAgIHwgICAyNCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAg ICAgIHwgICAyMCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUlBSLmggICAgICAgIHwgICA0 MCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmggIHwgICAgMyArCiBzcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgIHwgIDEzMiArKwogMTUgZmlsZXMgY2hh bmdlZCwgNDUxMyBpbnNlcnRpb25zKCspLCAyMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4 IDExMmMxN2IwZDY0Li43MGZkN2YzODZhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJv cHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgpA QCAtMTE5LDYgKzEyMCwxNSBAQCBzdGF0aWMgdm9pZCBzaG93X3dpbmRvd19kZWYoV2luZG93QWdn U3RhdGUgKnBsYW5zdGF0ZSwKIHN0YXRpYyB2b2lkIHNob3dfd2luZG93X2tleXMoU3RyaW5nSW5m byBidWYsIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCSBpbnQgbmtleXMsIEF0dHJOdW1i ZXIgKmtleWNvbHMsCiAJCQkJCQkJIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcyk7 CitzdGF0aWMgdm9pZCBhcHBlbmRfcnByX3F1YW50aWZpZXIoU3RyaW5nSW5mbyBidWYsIFJQUlBh dHRlcm5FbGVtZW50ICplbGVtKTsKK3N0YXRpYyBjaGFyICpkZXBhcnNlX3Jwcl9wYXR0ZXJuKFJQ UlBhdHRlcm4gKnBhdHRlcm4pOworc3RhdGljIGludAlkZXBhcnNlX3Jwcl9zZXEoUlBSUGF0dGVy biAqcGF0dGVybiwgaW50IHN0YXJ0LCBpbnQgbGltaXQsCisJCQkJCQkJU3RyaW5nSW5mbyBidWYp Oworc3RhdGljIGludAlkZXBhcnNlX3Jwcl9ub2RlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBp LCBpbnQgbGltaXQsCisJCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKK3N0YXRpYyBpbnQJcnByX21h dGNoX2VuZChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgYmVnaW5JZHgpOworc3RhdGljIGludAly cHJfYWx0X3Njb3BlX2VuZChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSk7CitzdGF0aWMgaW50 CXJwcl9uZXh0X2JyYW5jaChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgYiwgaW50IGFsdEVuZCk7 CiBzdGF0aWMgdm9pZCBzaG93X3N0b3JhZ2VfaW5mbyhjaGFyICptYXhTdG9yYWdlVHlwZSwgaW50 NjQgbWF4U3BhY2VVc2VkLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9p ZCBzaG93X3RhYmxlc2FtcGxlKFRhYmxlU2FtcGxlQ2xhdXNlICp0c2MsIFBsYW5TdGF0ZSAqcGxh bnN0YXRlLApAQCAtMTI5LDYgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIHNob3dfaW5jcmVtZW50YWxf c29ydF9pbmZvKEluY3JlbWVudGFsU29ydFN0YXRlICppbmNyc29ydHN0YXRlLAogc3RhdGljIHZv aWQgc2hvd19oYXNoX2luZm8oSGFzaFN0YXRlICpoYXNoc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMp Owogc3RhdGljIHZvaWQgc2hvd19tYXRlcmlhbF9pbmZvKE1hdGVyaWFsU3RhdGUgKm1zdGF0ZSwg RXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X3dpbmRvd2FnZ19pbmZvKFdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7CitzdGF0aWMgdm9pZCBzaG93 X3Jwcl9uZmFfc3RhdHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVz KTsKIHN0YXRpYyB2b2lkIHNob3dfY3Rlc2Nhbl9pbmZvKEN0ZVNjYW5TdGF0ZSAqY3Rlc2NhbnN0 YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfdGFibGVfZnVuY19zY2Fu X2luZm8oVGFibGVGdW5jU2NhblN0YXRlICp0c2NhbnN0YXRlLAogCQkJCQkJCQkJICBFeHBsYWlu U3RhdGUgKmVzKTsKQEAgLTI4OTgsNiArMjkwOSwyNDcgQEAgc2hvd19zb3J0b3JkZXJfb3B0aW9u cyhTdHJpbmdJbmZvIGJ1ZiwgTm9kZSAqc29ydGV4cHIsCiAJfQogfQogCisvKgorICogQXBwZW5k IHF1YW50aWZpZXIgc3VmZml4IGZvciBhIHBhdHRlcm4gZWxlbWVudC4KKyAqLworc3RhdGljIHZv aWQKK2FwcGVuZF9ycHJfcXVhbnRpZmllcihTdHJpbmdJbmZvIGJ1ZiwgUlBSUGF0dGVybkVsZW1l bnQgKmVsZW0pCit7CisJLyogQXBwZW5kIHF1YW50aWZpZXIgaWYgbm90IHsxLDF9ICovCisJaWYg KGVsZW0tPm1pbiA9PSAwICYmIGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICcqJyk7CisJZWxzZSBpZiAoZWxlbS0+bWluID09IDEgJiYg ZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJysnKTsKKwllbHNlIGlmIChlbGVtLT5taW4gPT0gMCAmJiBlbGVtLT5tYXggPT0gMSkKKwkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnPycpOworCWVsc2UgaWYgKGVsZW0tPm1heCA9PSBS UFJfUVVBTlRJVFlfSU5GKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInslZCx9IiwgZWxlbS0+ bWluKTsKKwllbHNlIGlmIChlbGVtLT5taW4gPT0gZWxlbS0+bWF4ICYmIGVsZW0tPm1pbiAhPSAx KQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInslZH0iLCBlbGVtLT5taW4pOworCWVsc2UgaWYg KGVsZW0tPm1pbiAhPSAxIHx8IGVsZW0tPm1heCAhPSAxKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgInslZCwlZH0iLCBlbGVtLT5taW4sIGVsZW0tPm1heCk7CisKKwlpZiAoUlBSRWxlbUlzUmVs dWN0YW50KGVsZW0pKQorCXsKKwkJaWYgKGVsZW0tPm1pbiA9PSAxICYmIGVsZW0tPm1heCA9PSAx KQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJ7MX0iKTsgLyogbWFrZSByZWx1Y3Rh bnQgPworCQkJCQkJCQkJCQkJICogdW5hbWJpZ3VvdXMgKi8KKwkJYXBwZW5kU3RyaW5nSW5mb0No YXIoYnVmLCAnPycpOworCX0KKworCS8qIEFwcGVuZCBhYnNvcnB0aW9uIG1hcmtlcnM6ICIgZm9y IGp1ZGdtZW50IHBvaW50LCAnIGZvciBicmFuY2ggb25seSAqLworCWlmIChSUFJFbGVtSXNBYnNv cmJhYmxlKGVsZW0pKQorCXsKKwkJQXNzZXJ0KGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5G KTsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnIicpOworCX0KKwllbHNlIGlmIChSUFJF bGVtSXNBYnNvcmJhYmxlQnJhbmNoKGVsZW0pKQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICdcJycpOworfQorCisvKgorICogRGVwYXJzZSBhIGNvbXBpbGVkIFJQUlBhdHRlcm4gKGJ5dGVj b2RlKSBiYWNrIHRvIGEgcGF0dGVybiBzdHJpbmcuCisgKgorICogVGhlIGZsYXQgUlBSUGF0dGVy bkVsZW1lbnRbXSBhcnJheSBpcyB3YWxrZWQgYnkgcmVjdXJzaXZlIGRlc2NlbnQuICBFYWNoCisg KiBjb25zdHJ1Y3QgaXMgZGVwYXJzZWQgd2l0aGluIGFuIGluaGVyaXRlZCBbc3RhcnQsIGxpbWl0 KSB3aW5kb3c6IHRoZSBwYXJlbnQKKyAqIHBhc3NlcyB0aGUgYm91bmRhcnkgZG93biwgc28gZWFj aCBjb25zdHJ1Y3QncyBleHRlbnQgaXMgZml4ZWQgYnkgaXRzIGNhbGxlci4KKyAqIFRocmVlIHNp Z25hbHMgZHJpdmUgdGhlIHdhbGs6CisgKgorICogICAtIHNjb3BlIGVuZHMgKHdoZXJlIGFuIEFM VCBvciBHUk9VUCBib2R5IGZpbmlzaGVzKSBjb21lIGZyb20gZGVwdGgsIHZpYQorICogICAgIHJw cl9hbHRfc2NvcGVfZW5kKCkgYW5kIHJwcl9tYXRjaF9lbmQoKS4KKyAqICAgLSBicmFuY2ggYm91 bmRhcmllcyAod2hlcmUgYSAifCIgZ29lcykgY29tZSBmcm9tIGEgYnJhbmNoLXN0YXJ0IGp1bXAs CisgKiAgICAgY29uZmlybWVkIGJ5IHRoZSByZWxhdGl2ZSB0ZXN0IGVsZW1bai0xXS5uZXh0ICE9 IGosIHZpYQorICogICAgIHJwcl9uZXh0X2JyYW5jaCgpLgorICogICAtIHBhcmVudGhlc2VzIGNv bWUgZnJvbSBzdHJ1Y3R1cmUgKGEgQkVHSU4gZ3JvdXAsIGFuIEFMVCkgcGx1cyBhIG9uZS1zdGVw CisgKiAgICAgbG9va2FoZWFkIGZvciBhIGdyb3VwIHRoYXQgd3JhcHMgYSBsb25lIEFMVC4KKyAq CisgKiBkZXB0aCBhbmQgdGhlIHJlbGF0aXZlIG5leHQgdGVzdCBhcmUgc3RhYmxlIGFjcm9zcyB0 aGUgbmV4dC9qdW1wIHZhbHVlcyB0aGUKKyAqIGNvbXBpbGVyIGFzc2lnbnMgdG8gYnJhbmNoIHRh aWxzIGFuZCBuZXN0ZWQgYWx0ZXJuYXRpb25zLCB3aGljaCBpcyB3aGF0IG1ha2VzCisgKiB0aGVt IHN1aXRhYmxlIHRvIGFuY2hvciBzY29wZSBhbmQgYnJhbmNoIGJvdW5kYXJpZXMuCisgKgorICog RVhQTEFJTiBwYXJlbnRoZXNpemVzIGV2ZXJ5IEFMVCBvbiBpdHMgb3duLCBzbyBhIHRvcC1sZXZl bCAiQSB8IEIiIGRlcGFyc2VzCisgKiBhcyAiKGEgfCBiKSIuICBUaGlzIHNlbGYtY29uc2lzdGVu dCBFWFBMQUlOIGZvcm0gaXMgdGhlIGNvcnJlY3RuZXNzIG9yYWNsZQorICogaGVyZTsgcGdfZ2V0 X3ZpZXdkZWYgZGlmZmVycywgYXMgaXRzIHBhcmVucyBjb21lIG9ubHkgZnJvbSBhbiBlbmNsb3Np bmcKKyAqIEdST1VQLiAgQWJzb3JwdGlvbiBtYXJrZXJzICgnICIpIGFyZSBvcnRob2dvbmFsIGFu ZCBoYW5kbGVkIGJ5CisgKiBhcHBlbmRfcnByX3F1YW50aWZpZXIoKS4KKyAqCisgKiBUd28gY29t cGlsZXIgaW52YXJpYW50cyBob2xkIHRocm91Z2hvdXQ6IHsxLDF9IGdyb3VwcyBhcmUgdW53cmFw cGVkIGJlZm9yZQorICogYnl0ZWNvZGUgZ2VuZXJhdGlvbiAoc28gZXZlcnkgQkVHSU4vRU5EIGdy b3VwIGNhcnJpZXMgYSBub24tdHJpdmlhbAorICogcXVhbnRpZmllciwgYW5kIGEgbG9uZSBBTFQg aW5zaWRlIGEgZ3JvdXAgYWx3YXlzIHNwYW5zIHRvIHRoZSBncm91cCdzIEVORCksCisgKiBhbmQg YSBncm91cCdzIHF1YW50aWZpZXIgaXMgcmVhZCBmcm9tIGl0cyBFTkQgZWxlbWVudCAodGhlIEJF R0lOIGNvcHkgaXMKKyAqIGlnbm9yZWQpLgorICovCitzdGF0aWMgY2hhciAqCitkZXBhcnNlX3Jw cl9wYXR0ZXJuKFJQUlBhdHRlcm4gKnBhdHRlcm4pCit7CisJU3RyaW5nSW5mb0RhdGEgYnVmOwor CisJQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCAmJiBwYXR0ZXJuLT5udW1FbGVtZW50cyA+PSAyKTsK KworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCWRlcGFyc2VfcnByX3NlcShwYXR0ZXJuLCAwLCBw YXR0ZXJuLT5udW1FbGVtZW50cywgJmJ1Zik7CisJcmV0dXJuIGJ1Zi5kYXRhOworfQorCisvKgor ICogRGVwYXJzZSBhIHJ1biBvZiBzaWJsaW5nIGVsZW1lbnRzIGluIFtzdGFydCwgbGltaXQpLCBz ZXBhcmF0ZWQgYnkgc3BhY2VzLgorICoKKyAqIFN0b3BzIGF0IGxpbWl0IG9yIGF0IHRoZSBGSU4g dGVybWluYXRvciAodG9wLWxldmVsIGNhbGwgcGFzc2VzIGxpbWl0ID0KKyAqIG51bUVsZW1lbnRz LCB3aGVyZSB0aGUgbGFzdCBlbGVtZW50IGlzIEZJTikuICBSZXR1cm5zIHRoZSBpbmRleCByZWFj aGVkLgorICovCitzdGF0aWMgaW50CitkZXBhcnNlX3Jwcl9zZXEoUlBSUGF0dGVybiAqcGF0dGVy biwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZ0luZm8gYnVmKQoreworCWludAkJCWkgPSBz dGFydDsKKwlib29sCQlmaXJzdCA9IHRydWU7CisKKwl3aGlsZSAoaSA8IGxpbWl0ICYmICFSUFJF bGVtSXNGaW4oJnBhdHRlcm4tPmVsZW1lbnRzW2ldKSkKKwl7CisJCWlmICghZmlyc3QpCisJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWZpcnN0ID0gZmFsc2U7CisJCWkgPSBk ZXBhcnNlX3Jwcl9ub2RlKHBhdHRlcm4sIGksIGxpbWl0LCBidWYpOworCX0KKwlyZXR1cm4gaTsK K30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNpbmdsZSBjb25zdHJ1Y3Qgc3RhcnRpbmcgYXQgaW5k ZXggaSwgYm91bmRlZCBieSB0aGUgaW5oZXJpdGVkCisgKiBsaW1pdC4gIFJldHVybnMgdGhlIGlu ZGV4IGp1c3QgcGFzdCB0aGUgY29uc3RydWN0LgorICoKKyAqIEEgVkFSIGlzIGl0cyBuYW1lIHBs dXMgcXVhbnRpZmllci4gIEEgQkVHSU4gb3BlbnMgYSBncm91cCBzcGFubmluZyB0byBpdHMKKyAq IG1hdGNoaW5nIEVORCAocnByX21hdGNoX2VuZCk7IHdoZW4gdGhlIGdyb3VwJ3Mgc29sZSBjaGls ZCBpcyBhbiBBTFQgdGhhdAorICogcnVucyB0byB0aGUgRU5ELCB0aGUgQUxUIHN1cHBsaWVzIHRo ZSBwYXJlbnRoZXNlcyBhbmQgdGhlIGdyb3VwIG9ubHkgYWRkcworICogdGhlIHF1YW50aWZpZXIs IG90aGVyd2lzZSB0aGUgZ3JvdXAgYm9keSBpcyB3cmFwcGVkIGluIGl0cyBvd24gIiggKSIuICBB bgorICogQUxUIHJ1bnMgdG8gaXRzIGRlcHRoLWRldGVybWluZWQgc2NvcGUgZW5kIChjYXBwZWQg YnkgdGhlIGluaGVyaXRlZCBsaW1pdCkKKyAqIGFuZCBlbWl0cyAiKCBiMSB8IGIyIHwgLi4uICki LCBlYWNoIGJyYW5jaCBkZXBhcnNlZCB3aXRoaW4gdGhlIGJvdW5kYXJ5CisgKiBoYW5kZWQgZG93 biBieSBycHJfbmV4dF9icmFuY2guCisgKi8KK3N0YXRpYyBpbnQKK2RlcGFyc2VfcnByX25vZGUo UlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGksIGludCBsaW1pdCwgU3RyaW5nSW5mbyBidWYpCit7 CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0dGVybi0+ZWxlbWVudHNbaV07CisKKwlp ZiAoUlBSRWxlbUlzVmFyKGVsZW0pKQorCXsKKwkJQXNzZXJ0KGVsZW0tPnZhcklkIDwgcGF0dGVy bi0+bnVtVmFycyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJCQkJCSAgIHF1 b3RlX2lkZW50aWZpZXIocGF0dGVybi0+dmFyTmFtZXNbZWxlbS0+dmFySWRdKSk7CisJCWFwcGVu ZF9ycHJfcXVhbnRpZmllcihidWYsIGVsZW0pOworCQlyZXR1cm4gaSArIDE7CisJfQorCisJaWYg KFJQUkVsZW1Jc0JlZ2luKGVsZW0pKQorCXsKKwkJaW50CQkJZW5kID0gcnByX21hdGNoX2VuZChw YXR0ZXJuLCBpKTsKKwkJYm9vbAkJbG9uZUFsdDsKKworCQlsb25lQWx0ID0gKGkgKyAxIDwgZW5k ICYmCisJCQkJICAgUlBSRWxlbUlzQWx0KCZwYXR0ZXJuLT5lbGVtZW50c1tpICsgMV0pICYmCisJ CQkJICAgcnByX2FsdF9zY29wZV9lbmQocGF0dGVybiwgaSArIDEpID09IGVuZCk7CisKKwkJaWYg KGxvbmVBbHQpCisJCXsKKwkJCS8qIFRoZSBBTFQgY2hpbGQgYWxyZWFkeSBwYXJlbnRoZXNpemVz IHRoZSB3aG9sZSBncm91cCBib2R5LiAqLworCQkJKHZvaWQpIGRlcGFyc2VfcnByX25vZGUocGF0 dGVybiwgaSArIDEsIGVuZCwgYnVmKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKGJ1ZiwgJygnKTsKKwkJCSh2b2lkKSBkZXBhcnNlX3Jwcl9zZXEocGF0dGVybiwg aSArIDEsIGVuZCwgYnVmKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJ fQorCQlhcHBlbmRfcnByX3F1YW50aWZpZXIoYnVmLCAmcGF0dGVybi0+ZWxlbWVudHNbZW5kXSk7 CisJCXJldHVybiBlbmQgKyAxOworCX0KKworCUFzc2VydChSUFJFbGVtSXNBbHQoZWxlbSkpOwor CXsKKwkJaW50CQkJYWx0RW5kID0gcnByX2FsdF9zY29wZV9lbmQocGF0dGVybiwgaSk7CisJCWlu dAkJCWI7CisJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCQlpZiAoYWx0RW5kID4gbGltaXQpCisJ CQlhbHRFbmQgPSBsaW1pdDsKKworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisJ CWIgPSBpICsgMTsKKwkJd2hpbGUgKGIgPCBhbHRFbmQpCisJCXsKKwkJCWludAkJCW5iID0gcnBy X25leHRfYnJhbmNoKHBhdHRlcm4sIGIsIGFsdEVuZCk7CisKKwkJCWlmICghZmlyc3QpCisJCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgfCAiKTsKKwkJCWZpcnN0ID0gZmFsc2U7CisJ CQkodm9pZCkgZGVwYXJzZV9ycHJfc2VxKHBhdHRlcm4sIGIsIG5iLCBidWYpOworCQkJYiA9IG5i OworCQl9CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJcmV0dXJuIGFsdEVu ZDsKKwl9Cit9CisKKy8qCisgKiBGaW5kIHRoZSBFTkQgdGhhdCBjbG9zZXMgdGhlIGdyb3VwIG9w ZW5lZCBieSB0aGUgQkVHSU4gYXQgYmVnaW5JZHg6IHRoZQorICogZmlyc3QgRU5EIGF0IHRoZSBz YW1lIGRlcHRoIHNjYW5uaW5nIGZvcndhcmQuCisgKi8KK3N0YXRpYyBpbnQKK3Jwcl9tYXRjaF9l bmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGJlZ2luSWR4KQoreworCVJQUkRlcHRoCWQgPSBw YXR0ZXJuLT5lbGVtZW50c1tiZWdpbklkeF0uZGVwdGg7CisJaW50CQkJajsKKworCWZvciAoaiA9 IGJlZ2luSWR4ICsgMTsgaiA8IHBhdHRlcm4tPm51bUVsZW1lbnRzOyBqKyspCisJeworCQlSUFJQ YXR0ZXJuRWxlbWVudCAqZSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tqXTsKKworCQlpZiAoUlBSRWxl bUlzRW5kKGUpICYmIGUtPmRlcHRoID09IGQpCisJCQlyZXR1cm4gajsKKwl9CisJcGdfdW5yZWFj aGFibGUoKTsJCQkvKiBhIEJFR0lOIGFsd2F5cyBoYXMgYSBtYXRjaGluZyBFTkQgKi8KK30KKwor LyoKKyAqIFNjb3BlIGVuZCBvZiB0aGUgY29uc3RydWN0IGF0IGluZGV4IGk6IHRoZSBmaXJzdCBm b2xsb3dpbmcgZWxlbWVudCB3aG9zZQorICogZGVwdGggaXMgbm8gZ3JlYXRlciB0aGFuIGkncyBv d24uICBGb3IgYW4gQUxUIG1hcmtlciB0aGlzIGlzIHRoZSBpbmRleCBqdXN0CisgKiBwYXN0IGl0 cyBsYXN0IGJyYW5jaCwgc2luY2UgZGVwdGggc3RheXMgY29uc3RhbnQgYWNyb3NzIGJyYW5jaCBi b3VuZGFyaWVzLgorICogRklOIHNpdHMgYXQgZGVwdGggMCwgc28gYSB0b3AtbGV2ZWwgQUxUIHN0 b3BzIHRoZXJlLgorICovCitzdGF0aWMgaW50CitycHJfYWx0X3Njb3BlX2VuZChSUFJQYXR0ZXJu ICpwYXR0ZXJuLCBpbnQgaSkKK3sKKwlSUFJEZXB0aAlkID0gcGF0dGVybi0+ZWxlbWVudHNbaV0u ZGVwdGg7CisJaW50CQkJazsKKworCWZvciAoayA9IGkgKyAxOyBrIDwgcGF0dGVybi0+bnVtRWxl bWVudHM7IGsrKykKKwl7CisJCWlmIChwYXR0ZXJuLT5lbGVtZW50c1trXS5kZXB0aCA8PSBkKQor CQkJcmV0dXJuIGs7CisJfQorCXJldHVybiBwYXR0ZXJuLT5udW1FbGVtZW50czsKK30KKworLyoK KyAqIEJvdW5kYXJ5IG9mIHRoZSBhbHRlcm5hdGlvbiBicmFuY2ggc3RhcnRpbmcgYXQgYiAoaS5l LiB0aGUgc3RhcnQgb2YgdGhlIG5leHQKKyAqIGJyYW5jaCwgb3IgYWx0RW5kIGlmIGIgaXMgdGhl IGxhc3QgYnJhbmNoKS4KKyAqCisgKiBUaGUgYnJhbmNoLXN0YXJ0IGVsZW1lbnQncyBqdW1wIHBv aW50cyBhdCB0aGUgbmV4dCBicmFuY2ggd2hlbiB0aGlzIGlzIG5vdAorICogdGhlIGxhc3QgYnJh bmNoLiAganVtcCBpcyBvdmVybG9hZGVkIChhIGdyb3VwIEJFR0lOIGFsc28gdXNlcyBpdCBmb3Ig aXRzCisgKiBza2lwIHBhdGgpLCBzbyBjb25maXJtIGEgcmVhbCBicmFuY2ggYm91bmRhcnkgd2l0 aCB0aGUgcmVsYXRpdmUgdGVzdAorICogZWxlbVtqLTFdLm5leHQgIT0gajogYXQgYSB0cnVlIGJv dW5kYXJ5IHRoZSBwcmVjZWRpbmcgYnJhbmNoJ3MgdGFpbCBoYXMgaXRzCisgKiBuZXh0IHJlZGly ZWN0ZWQgcGFzdCB0aGUgYWx0ZXJuYXRpb24sIHNvIGl0IGRvZXMgbm90IHBvaW50IGF0IGouCisg Ki8KK3N0YXRpYyBpbnQKK3Jwcl9uZXh0X2JyYW5jaChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQg YiwgaW50IGFsdEVuZCkKK3sKKwlpbnQJCQlqID0gcGF0dGVybi0+ZWxlbWVudHNbYl0uanVtcDsK KworCWlmIChqICE9IFJQUl9FTEVNSURYX0lOVkFMSUQgJiYgaiA8IGFsdEVuZCAmJgorCQlwYXR0 ZXJuLT5lbGVtZW50c1tqIC0gMV0ubmV4dCAhPSBqKQorCQlyZXR1cm4gajsKKwlyZXR1cm4gYWx0 RW5kOworfQorCiAvKgogICogU2hvdyB0aGUgd2luZG93IGRlZmluaXRpb24gZm9yIGEgV2luZG93 QWdnIG5vZGUuCiAgKi8KQEAgLTI5NTYsNiArMzIwOCw4MyBAQCBzaG93X3dpbmRvd19kZWYoV2lu ZG93QWdnU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVz KQogCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZ3YnVmLCAnKScpOwogCUV4cGxhaW5Qcm9wZXJ0eVRl eHQoIldpbmRvdyIsIHdidWYuZGF0YSwgZXMpOwogCXBmcmVlKHdidWYuZGF0YSk7CisKKwkvKiBT aG93IFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIHBhdHRlcm4gaWYgcHJlc2VudCAqLworCWlmICh3 YWdnLT5ycFBhdHRlcm4gIT0gTlVMTCkKKwl7CisJCWNoYXIJICAgKnBhdHRlcm5TdHIgPSBkZXBh cnNlX3Jwcl9wYXR0ZXJuKHdhZ2ctPnJwUGF0dGVybik7CisKKwkJaWYgKHBhdHRlcm5TdHIgIT0g TlVMTCkKKwkJeworCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiUGF0dGVybiIsIHBhdHRlcm5TdHIs IGVzKTsKKwkJCXBmcmVlKHBhdHRlcm5TdHIpOworCQl9CisKKwkJLyoKKwkJICogU2hvdyBuYXZp Z2F0aW9uIG9mZnNldHMgZm9yIHR1cGxlc3RvcmUgdHJpbS4gIEZvciBFWFBMQUlOIEFOQUxZWkUs CisJCSAqIHVzZSB0aGUgZXhlY3V0b3ItcmVzb2x2ZWQgdmFsdWVzICh3aGljaCBtYXkgZGlmZmVy IGZyb20gdGhlIHBsYW4KKwkJICogd2hlbiBORUVEU19FVkFMIHdhcyByZXNvbHZlZCB0byBGSVhF RCBvciBSRVRBSU5fQUxMIGF0IGluaXQpLgorCQkgKi8KKwkJeworCQkJUlBSTmF2T2Zmc2V0S2lu ZCBtYXhLaW5kID0gd2FnZy0+bmF2TWF4T2Zmc2V0S2luZDsKKwkJCWludDY0CQltYXhPZmZzZXQg PSB3YWdnLT5uYXZNYXhPZmZzZXQ7CisJCQlSUFJOYXZPZmZzZXRLaW5kIGZpcnN0S2luZCA9IHdh Z2ctPm5hdkZpcnN0T2Zmc2V0S2luZDsKKwkJCWludDY0CQlmaXJzdE9mZnNldCA9IHdhZ2ctPm5h dkZpcnN0T2Zmc2V0OworCisJCQlpZiAoZXMtPmFuYWx5emUpCisJCQl7CisJCQkJbWF4S2luZCA9 IHBsYW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZDsKKwkJCQltYXhPZmZzZXQgPSBwbGFuc3RhdGUt Pm5hdk1heE9mZnNldDsKKwkJCQlmaXJzdEtpbmQgPSBwbGFuc3RhdGUtPm5hdkZpcnN0T2Zmc2V0 S2luZDsKKwkJCQlmaXJzdE9mZnNldCA9IHBsYW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXQ7CisJCQl9 CisKKwkJCXN3aXRjaCAobWF4S2luZCkKKwkJCXsKKwkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX05F RURTX0VWQUw6CisJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2tiYWNrIiwg InJ1bnRpbWUiLCBlcyk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfUkVU QUlOX0FMTDoKKwkJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiTmF2IE1hcmsgTG9va2JhY2siLCAi cmV0YWluIGFsbCIsIGVzKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9G SVhFRDoKKwkJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2IE1hcmsgTG9va2JhY2siLCBO VUxMLAorCQkJCQkJCQkJCSAgIG1heE9mZnNldCwgZXMpOworCQkJCQlicmVhazsKKwkJCQlkZWZh dWx0OgorCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFJQUiBuYXYgb2Zmc2V0IGtpbmQ6 ICVkIiwKKwkJCQkJCSBtYXhLaW5kKTsKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICh3YWdn LT5oYXNGaXJzdE5hdikKKwkJCXsKKwkJCQlzd2l0Y2ggKGZpcnN0S2luZCkKKwkJCQl7CisJCQkJ CWNhc2UgUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTDoKKwkJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRl eHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJydW50aW1lIiwKKwkJCQkJCQkJCQkJZXMpOworCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTDoKKwkJCQkJCUV4 cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJyZXRhaW4gYWxsIiwKKwkJ CQkJCQkJCQkJZXMpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfRklY RUQ6CisJCQkJCQlpZiAoZmlyc3RPZmZzZXQgPT0gUEdfSU5UNjRfTUFYKQorCQkJCQkJCUV4cGxh aW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJpbmZpbml0ZSIsCisJCQkJCQkJ CQkJCQllcyk7CisJCQkJCQllbHNlCisJCQkJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTmF2 IE1hcmsgTG9va2FoZWFkIiwgTlVMTCwKKwkJCQkJCQkJCQkJCSAgIGZpcnN0T2Zmc2V0LCBlcyk7 CisJCQkJCQlicmVhazsKKwkJCQkJZGVmYXVsdDoKKwkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgUlBSIG5hdiBvZmZzZXQga2luZDogJWQiLAorCQkJCQkJCSBmaXJzdEtpbmQpOworCQkJ CQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJfQogfQogCiAvKgpAQCAtMzUwOCw2ICszODM3 LDcgQEAgc2hvd193aW5kb3dhZ2dfaW5mbyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIEV4cGxh aW5TdGF0ZSAqZXMpCiB7CiAJY2hhcgkgICAqbWF4U3RvcmFnZVR5cGU7CiAJaW50NjQJCW1heFNw YWNlVXNlZDsKKwlXaW5kb3dBZ2cgICp3YWdnID0gKFdpbmRvd0FnZyAqKSB3aW5zdGF0ZS0+c3Mu cHMucGxhbjsKIAogCVR1cGxlc3RvcmVzdGF0ZSAqdHVwc3RvcmUgPSB3aW5zdGF0ZS0+YnVmZmVy OwogCkBAIC0zNTIwLDYgKzM4NTAsMTYwIEBAIHNob3dfd2luZG93YWdnX2luZm8oV2luZG93QWdn U3RhdGUgKndpbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQogCiAJdHVwbGVzdG9yZV9nZXRfc3Rh dHModHVwc3RvcmUsICZtYXhTdG9yYWdlVHlwZSwgJm1heFNwYWNlVXNlZCk7CiAJc2hvd19zdG9y YWdlX2luZm8obWF4U3RvcmFnZVR5cGUsIG1heFNwYWNlVXNlZCwgZXMpOworCisJLyogU2hvdyBO RkEgc3RhdGlzdGljcyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gKi8KKwlpZiAod2FnZy0+ cnBQYXR0ZXJuICE9IE5VTEwpCisJCXNob3dfcnByX25mYV9zdGF0cyh3aW5zdGF0ZSwgZXMpOwor fQorCisvKgorICogU2hvdyBORkEgc3RhdGlzdGljcyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRp b24gb24gV2luZG93QWdnIG5vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitzaG93X3Jwcl9uZmFfc3Rh dHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQoreworCWlmIChl cy0+Zm9ybWF0ICE9IEVYUExBSU5fRk9STUFUX1RFWFQpCisJeworCQkvKiBTdGF0ZSBhbmQgY29u dGV4dCBjb3VudGVycyAqLworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgU3RhdGVzIFBl YWsiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhU3RhdGVzTWF4LCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0 eUludGVnZXIoIk5GQSBTdGF0ZXMgVG90YWwiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhU3RhdGVzVG90 YWxDcmVhdGVkLCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBTdGF0ZXMgTWVy Z2VkIiwgTlVMTCwgd2luc3RhdGUtPm5mYVN0YXRlc01lcmdlZCwgZXMpOworCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJORkEgQ29udGV4dHMgUGVhayIsIE5VTEwsIHdpbnN0YXRlLT5uZmFDb250 ZXh0c01heCwgZXMpOworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgQ29udGV4dHMgVG90 YWwiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhQ29udGV4dHNUb3RhbENyZWF0ZWQsIGVzKTsKKwkJRXhw bGFpblByb3BlcnR5SW50ZWdlcigiTkZBIENvbnRleHRzIEFic29yYmVkIiwgTlVMTCwgd2luc3Rh dGUtPm5mYUNvbnRleHRzQWJzb3JiZWQsIGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi TkZBIENvbnRleHRzIFNraXBwZWQiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVk LCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBDb250ZXh0cyBQcnVuZWQiLCBO VUxMLCB3aW5zdGF0ZS0+bmZhQ29udGV4dHNQcnVuZWQsIGVzKTsKKworCQkvKiBNYXRjaC9taXNt YXRjaCBjb3VudHMgYW5kIGxlbmd0aCBzdGF0aXN0aWNzICovCisJCUV4cGxhaW5Qcm9wZXJ0eUlu dGVnZXIoIk5GQSBNYXRjaGVkIiwgTlVMTCwgd2luc3RhdGUtPm5mYU1hdGNoZXNTdWNjZWVkZWQs IGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIE1pc21hdGNoZWQiLCBOVUxMLCB3 aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCwgZXMpOworCQlpZiAod2luc3RhdGUtPm5mYU1hdGNo ZXNTdWNjZWVkZWQgPiAwKQorCQl7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWF0 Y2ggTGVuZ3RoIE1pbiIsIE5VTEwsIHdpbnN0YXRlLT5uZmFNYXRjaExlbi5taW4sIGVzKTsKKwkJ CUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBNYXRjaCBMZW5ndGggTWF4IiwgTlVMTCwgd2lu c3RhdGUtPm5mYU1hdGNoTGVuLm1heCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIk5G QSBNYXRjaCBMZW5ndGggQXZnIiwgTlVMTCwKKwkJCQkJCQkJIChkb3VibGUpIHdpbnN0YXRlLT5u ZmFNYXRjaExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFNYXRjaGVzU3VjY2VlZGVkLCAxLAorCQkJ CQkJCQkgZXMpOworCQl9CisJCWlmICh3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCA+IDApCisJ CXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBNaXNtYXRjaCBMZW5ndGggTWluIiwg TlVMTCwgd2luc3RhdGUtPm5mYUZhaWxMZW4ubWluLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlJ bnRlZ2VyKCJORkEgTWlzbWF0Y2ggTGVuZ3RoIE1heCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFGYWls TGVuLm1heCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIk5GQSBNaXNtYXRjaCBMZW5n dGggQXZnIiwgTlVMTCwKKwkJCQkJCQkJIChkb3VibGUpIHdpbnN0YXRlLT5uZmFGYWlsTGVuLnRv dGFsIC8gd2luc3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQsIDEsCisJCQkJCQkJCSBlcyk7CisJCX0K KworCQkvKiBBYnNvcmJlZC9za2lwcGVkIGNvbnRleHQgbGVuZ3RoIHN0YXRpc3RpY3MgKi8KKwkJ aWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0c0Fic29yYmVkID4gMCkKKwkJeworCQkJRXhwbGFpblBy b3BlcnR5SW50ZWdlcigiTkZBIEFic29yYmVkIExlbmd0aCBNaW4iLCBOVUxMLCB3aW5zdGF0ZS0+ bmZhQWJzb3JiZWRMZW4ubWluLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEg QWJzb3JiZWQgTGVuZ3RoIE1heCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFBYnNvcmJlZExlbi5tYXgs IGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJORkEgQWJzb3JiZWQgTGVuZ3RoIEF2ZyIs IE5VTEwsCisJCQkJCQkJCSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhQWJzb3JiZWRMZW4udG90YWwg LyB3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCwgMSwKKwkJCQkJCQkJIGVzKTsKKwkJfQor CQlpZiAod2luc3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCA+IDApCisJCXsKKwkJCUV4cGxhaW5Q cm9wZXJ0eUludGVnZXIoIk5GQSBTa2lwcGVkIExlbmd0aCBNaW4iLCBOVUxMLCB3aW5zdGF0ZS0+ bmZhU2tpcHBlZExlbi5taW4sIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBT a2lwcGVkIExlbmd0aCBNYXgiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhU2tpcHBlZExlbi5tYXgsIGVz KTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJORkEgU2tpcHBlZCBMZW5ndGggQXZnIiwgTlVM TCwKKwkJCQkJCQkJIChkb3VibGUpIHdpbnN0YXRlLT5uZmFTa2lwcGVkTGVuLnRvdGFsIC8gd2lu c3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCwgMSwKKwkJCQkJCQkJIGVzKTsKKwkJfQorCX0KKwll bHNlCisJeworCQkvKiBTdGF0ZSBhbmQgY29udGV4dCBjb3VudGVycyAqLworCQlFeHBsYWluSW5k ZW50VGV4dChlcyk7CisJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwKKwkJCQkJCSAiTkZBIFN0 YXRlczogIiBJTlQ2NF9GT1JNQVQgIiBwZWFrLCAiIElOVDY0X0ZPUk1BVCAiIHRvdGFsLCAiIElO VDY0X0ZPUk1BVCAiIG1lcmdlZFxuIiwKKwkJCQkJCSB3aW5zdGF0ZS0+bmZhU3RhdGVzTWF4LAor CQkJCQkJIHdpbnN0YXRlLT5uZmFTdGF0ZXNUb3RhbENyZWF0ZWQsCisJCQkJCQkgd2luc3RhdGUt Pm5mYVN0YXRlc01lcmdlZCk7CisJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJYXBwZW5kU3Ry aW5nSW5mbyhlcy0+c3RyLAorCQkJCQkJICJORkEgQ29udGV4dHM6ICIgSU5UNjRfRk9STUFUICIg cGVhaywgIiBJTlQ2NF9GT1JNQVQgIiB0b3RhbCwgIiBJTlQ2NF9GT1JNQVQgIiBwcnVuZWRcbiIs CisJCQkJCQkgd2luc3RhdGUtPm5mYUNvbnRleHRzTWF4LAorCQkJCQkJIHdpbnN0YXRlLT5uZmFD b250ZXh0c1RvdGFsQ3JlYXRlZCwKKwkJCQkJCSB3aW5zdGF0ZS0+bmZhQ29udGV4dHNQcnVuZWQp OworCisJCS8qIE1hdGNoL21pc21hdGNoIGNvdW50cyB3aXRoIGxlbmd0aCBtaW4vbWF4L2F2ZyAq LworCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMt PnN0ciwgIk5GQTogIik7CisJCWlmICh3aW5zdGF0ZS0+bmZhTWF0Y2hlc1N1Y2NlZWRlZCA+IDAp CisJCXsKKwkJCWRvdWJsZQkJYXZnTGVuID0gKGRvdWJsZSkgd2luc3RhdGUtPm5mYU1hdGNoTGVu LnRvdGFsIC8gd2luc3RhdGUtPm5mYU1hdGNoZXNTdWNjZWVkZWQ7CisKKwkJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwKKwkJCQkJCQkgSU5UNjRfRk9STUFUICIgbWF0Y2hlZCAobGVuICIgSU5U NjRfRk9STUFUICIvIiBJTlQ2NF9GT1JNQVQgIi8lLjFmKSIsCisJCQkJCQkJIHdpbnN0YXRlLT5u ZmFNYXRjaGVzU3VjY2VlZGVkLAorCQkJCQkJCSB3aW5zdGF0ZS0+bmZhTWF0Y2hMZW4ubWluLAor CQkJCQkJCSB3aW5zdGF0ZS0+bmZhTWF0Y2hMZW4ubWF4LAorCQkJCQkJCSBhdmdMZW4pOworCQl9 CisJCWVsc2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiMCBtYXRj aGVkIik7CisJCX0KKwkJaWYgKHdpbnN0YXRlLT5uZmFNYXRjaGVzRmFpbGVkID4gMCkKKwkJewor CQkJZG91YmxlCQlhdmdGYWlsID0gKGRvdWJsZSkgd2luc3RhdGUtPm5mYUZhaWxMZW4udG90YWwg LyB3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZDsKKworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+ c3RyLAorCQkJCQkJCSAiLCAiIElOVDY0X0ZPUk1BVCAiIG1pc21hdGNoZWQgKGxlbiAiIElOVDY0 X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIvJS4xZikiLAorCQkJCQkJCSB3aW5zdGF0ZS0+bmZh TWF0Y2hlc0ZhaWxlZCwKKwkJCQkJCQkgd2luc3RhdGUtPm5mYUZhaWxMZW4ubWluLAorCQkJCQkJ CSB3aW5zdGF0ZS0+bmZhRmFpbExlbi5tYXgsCisJCQkJCQkJIGF2Z0ZhaWwpOworCQl9CisJCWVs c2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiLCAwIG1pc21hdGNo ZWQiKTsKKwkJfQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihlcy0+c3RyLCAnXG4nKTsKKworCQkv KiBBYnNvcmJlZC9za2lwcGVkIGNvbnRleHQgbGVuZ3RoIHN0YXRpc3RpY3MgKi8KKwkJaWYgKHdp bnN0YXRlLT5uZmFDb250ZXh0c0Fic29yYmVkID4gMCB8fCB3aW5zdGF0ZS0+bmZhQ29udGV4dHNT a2lwcGVkID4gMCkKKwkJeworCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiTkZBOiAiKTsKKworCQkJaWYgKHdpbnN0YXRlLT5uZmFD b250ZXh0c0Fic29yYmVkID4gMCkKKwkJCXsKKwkJCQlkb3VibGUJCWF2Z0Fic29yYmVkID0gKGRv dWJsZSkgd2luc3RhdGUtPm5mYUFic29yYmVkTGVuLnRvdGFsIC8gd2luc3RhdGUtPm5mYUNvbnRl eHRzQWJzb3JiZWQ7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCisJCQkJCQkJCSBJ TlQ2NF9GT1JNQVQgIiBhYnNvcmJlZCAobGVuICIgSU5UNjRfRk9STUFUICIvIiBJTlQ2NF9GT1JN QVQgIi8lLjFmKSIsCisJCQkJCQkJCSB3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCwKKwkJ CQkJCQkJIHdpbnN0YXRlLT5uZmFBYnNvcmJlZExlbi5taW4sCisJCQkJCQkJCSB3aW5zdGF0ZS0+ bmZhQWJzb3JiZWRMZW4ubWF4LAorCQkJCQkJCQkgYXZnQWJzb3JiZWQpOworCQkJfQorCQkJZWxz ZQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIjAgYWJzb3JiZWQi KTsKKwkJCX0KKworCQkJaWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQgPiAwKQorCQkJ eworCQkJCWRvdWJsZQkJYXZnU2tpcHBlZCA9IChkb3VibGUpIHdpbnN0YXRlLT5uZmFTa2lwcGVk TGVuLnRvdGFsIC8gd2luc3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZDsKKworCQkJCWFwcGVuZFN0 cmluZ0luZm8oZXMtPnN0ciwKKwkJCQkJCQkJICIsICIgSU5UNjRfRk9STUFUICIgc2tpcHBlZCAo bGVuICIgSU5UNjRfRk9STUFUICIvIiBJTlQ2NF9GT1JNQVQgIi8lLjFmKSIsCisJCQkJCQkJCSB3 aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVkLAorCQkJCQkJCQkgd2luc3RhdGUtPm5mYVNraXBw ZWRMZW4ubWluLAorCQkJCQkJCQkgd2luc3RhdGUtPm5mYVNraXBwZWRMZW4ubWF4LAorCQkJCQkJ CQkgYXZnU2tpcHBlZCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhlcy0+c3RyLCAiLCAwIHNraXBwZWQiKTsKKwkJCX0KKworCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisJCX0KKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2Vm aWxlCmluZGV4IDExMTE4ZDBjZTAyLi4yYjI1NzQyNzc5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUK QEAgLTI1LDYgKzI1LDcgQEAgT0JKUyA9IFwKIAlleGVjUGFyYWxsZWwubyBcCiAJZXhlY1BhcnRp dGlvbi5vIFwKIAlleGVjUHJvY25vZGUubyBcCisJZXhlY1JQUi5vIFwKIAlleGVjUmVwbGljYXRp b24ubyBcCiAJZXhlY1NSRi5vIFwKIAlleGVjU2Nhbi5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IGNmZWE3ZTE2MGMyLi4zMDM2NzgyNTAzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CkBAIC0xMTg5LDYgKzExODksOTggQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJT dGF0ZSAqc3RhdGUsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJ CQl7CisJCQkJLyoKKwkJCQkgKiBSUFIgbmF2aWdhdGlvbiBmdW5jdGlvbnMgKFBSRVYvTkVYVC9G SVJTVC9MQVNUKSBhcmUKKwkJCQkgKiBjb21waWxlZCBpbnRvIEVFT1BfUlBSX05BVl9TRVQgLyBF RU9QX1JQUl9OQVZfUkVTVE9SRQorCQkJCSAqIG9wY29kZXMgaW5zdGVhZCBvZiBhIG5vcm1hbCBm dW5jdGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUKKwkJCQkgKiBzd2FwcyBlY3h0X291dGVydHVw bGUgdG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudAorCQkJCSAqIGV4cHJlc3Npb24gaXMg Y29tcGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQKKwkJCQkgKiBzbG90KSwg YW5kIHRoZSBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc2xvdC4KKwkJCQkg KgorCQkJCSAqIERlZmF1bHQgb2Zmc2V0IHdoZW4gb2Zmc2V0X2FyZyBpcyBOVUxMOiBQUkVWL05F WFQ6IDEKKwkJCQkgKiAocGh5c2ljYWwgb2Zmc2V0IGZyb20gY3VycmVudHBvcykgRklSU1QvTEFT VDogMCAobG9naWNhbAorCQkJCSAqIG9mZnNldCBmcm9tIG1hdGNoIGJvdW5kYXJ5KQorCQkJCSAq LworCQkJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CisJCQkJV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlOworCisJCQkJQXNzZXJ0KHN0YXRlLT5wYXJlbnQgJiYgSXNBKHN0 YXRlLT5wYXJlbnQsIFdpbmRvd0FnZ1N0YXRlKSk7CisJCQkJd2luc3RhdGUgPSAoV2luZG93QWdn U3RhdGUgKikgc3RhdGUtPnBhcmVudDsKKworCQkJCS8qIEVtaXQgU0VUIG9wY29kZTogc3dhcCBz bG90IHRvIHRhcmdldCByb3cgKi8KKwkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfUlBSX05BVl9T RVQ7CisJCQkJc2NyYXRjaC5kLnJwcl9uYXYud2luc3RhdGUgPSB3aW5zdGF0ZTsKKwkJCQlzY3Jh dGNoLmQucnByX25hdi5raW5kID0gbmF2LT5raW5kOworCisJCQkJaWYgKG5hdi0+a2luZCA+PSBS UFJfTkFWX1BSRVZfRklSU1QpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBDb21wb3VuZCBuYXZp Z2F0aW9uOiBhbGxvY2F0ZSBhcnJheSBvZiAyIGZvciBpbm5lciBbMF0KKwkJCQkJICogYW5kIG91 dGVyIFsxXSBvZmZzZXRzLgorCQkJCQkgKi8KKwkJCQkJRGF0dW0JICAgKm9mZnNldF92YWx1ZXMg PSBwYWxsb2NfYXJyYXkoRGF0dW0sIDIpOworCQkJCQlib29sCSAgICpvZmZzZXRfaXNudWxscyA9 IHBhbGxvY19hcnJheShib29sLCAyKTsKKworCQkJCQkvKiBJbm5lciBvZmZzZXQgKGRlZmF1bHQg MCBmb3IgRklSU1QvTEFTVCkgKi8KKwkJCQkJaWYgKG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKQor CQkJCQkJRXhlY0luaXRFeHByUmVjKG5hdi0+b2Zmc2V0X2FyZywgc3RhdGUsCisJCQkJCQkJCQkJ Jm9mZnNldF92YWx1ZXNbMF0sICZvZmZzZXRfaXNudWxsc1swXSk7CisJCQkJCWVsc2UKKwkJCQkJ eworCQkJCQkJb2Zmc2V0X3ZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0oMCk7CisJCQkJCQlvZmZz ZXRfaXNudWxsc1swXSA9IGZhbHNlOworCQkJCQl9CisKKwkJCQkJLyogT3V0ZXIgb2Zmc2V0IChk ZWZhdWx0IDEgZm9yIFBSRVYvTkVYVCkgKi8KKwkJCQkJaWYgKG5hdi0+Y29tcG91bmRfb2Zmc2V0 X2FyZyAhPSBOVUxMKQorCQkJCQkJRXhlY0luaXRFeHByUmVjKG5hdi0+Y29tcG91bmRfb2Zmc2V0 X2FyZywgc3RhdGUsCisJCQkJCQkJCQkJJm9mZnNldF92YWx1ZXNbMV0sICZvZmZzZXRfaXNudWxs c1sxXSk7CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJb2Zmc2V0X3ZhbHVlc1sxXSA9IEludDY0 R2V0RGF0dW0oMSk7CisJCQkJCQlvZmZzZXRfaXNudWxsc1sxXSA9IGZhbHNlOworCQkJCQl9CisK KwkJCQkJc2NyYXRjaC5kLnJwcl9uYXYub2Zmc2V0X3ZhbHVlID0gb2Zmc2V0X3ZhbHVlczsKKwkJ CQkJc2NyYXRjaC5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCA9IG9mZnNldF9pc251bGxzOworCQkJ CX0KKwkJCQllbHNlIGlmIChuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8q IFNpbXBsZSBuYXZpZ2F0aW9uIHdpdGggZXhwbGljaXQgb2Zmc2V0ICovCisJCQkJCURhdHVtCSAg ICpvZmZzZXRfdmFsdWUgPSBwYWxsb2Nfb2JqZWN0KERhdHVtKTsKKwkJCQkJYm9vbAkgICAqb2Zm c2V0X2lzbnVsbCA9IHBhbGxvY19vYmplY3QoYm9vbCk7CisKKwkJCQkJRXhlY0luaXRFeHByUmVj KG5hdi0+b2Zmc2V0X2FyZywgc3RhdGUsCisJCQkJCQkJCQlvZmZzZXRfdmFsdWUsIG9mZnNldF9p c251bGwpOworCQkJCQlzY3JhdGNoLmQucnByX25hdi5vZmZzZXRfdmFsdWUgPSBvZmZzZXRfdmFs dWU7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBvZmZzZXRfaXNudWxs OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBTaW1wbGUgbmF2aWdhdGlvbiB3aXRo IGRlZmF1bHQgb2Zmc2V0ICovCisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9 IE5VTEw7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBOVUxMOworCQkJ CX0KKworCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCQkJCS8qIENv bXBpbGUgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb24gbm9ybWFsbHkgKi8KKwkJCQlFeGVjSW5pdEV4 cHJSZWMobmF2LT5hcmcsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkJCS8qIEVtaXQgUkVT VE9SRSBvcGNvZGU6IHJlc3RvcmUgb3JpZ2luYWwgc2xvdCAqLworCQkJCXNjcmF0Y2gub3Bjb2Rl ID0gRUVPUF9SUFJfTkFWX1JFU1RPUkU7CisJCQkJc2NyYXRjaC5yZXN2YWx1ZSA9IHJlc3Y7CisJ CQkJc2NyYXRjaC5yZXNudWxsID0gcmVzbnVsbDsKKwkJCQlzY3JhdGNoLmQucnByX25hdi53aW5z dGF0ZSA9IHdpbnN0YXRlOworCQkJCWdldF90eXBsZW5ieXZhbChuYXYtPnJlc3VsdHR5cGUsCisJ CQkJCQkJCSZzY3JhdGNoLmQucnByX25hdi5yZXN1bHR0eXBsZW4sCisJCQkJCQkJCSZzY3JhdGNo LmQucnByX25hdi5yZXN1bHR0eXBieXZhbCk7CisJCQkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwg JnNjcmF0Y2gpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgVF9GdW5jRXhwcjoKIAkJCXsK IAkJCQlGdW5jRXhwciAgICpmdW5jID0gKEZ1bmNFeHByICopIG5vZGU7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCAwNjM0YWY5NjRhOS4uODA1Yzg1ODNmYjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTcsMTEgKzU3LDEzIEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKKyNpbmNs dWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1 YnBsYW4uaCIKKyNpbmNsdWRlICJleGVjdXRvci9ub2RlV2luZG93QWdnLmgiCiAjaW5jbHVkZSAi ZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nu b2Rlcy5oIgpAQCAtNTg2LDYgKzU4OCw4IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkmJkNBU0VfRUVPUF9X SU5ET1dfRlVOQywKIAkJJiZDQVNFX0VFT1BfTUVSR0VfU1VQUE9SVF9GVU5DLAogCQkmJkNBU0Vf RUVPUF9TVUJQTEFOLAorCQkmJkNBU0VfRUVPUF9SUFJfTkFWX1NFVCwKKwkJJiZDQVNFX0VFT1Bf UlBSX05BVl9SRVNUT1JFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0RFU0VSSUFMSVpFLAog CQkmJkNBU0VfRUVPUF9BR0dfREVTRVJJQUxJWkUsCiAJCSYmQ0FTRV9FRU9QX0FHR19TVFJJQ1Rf SU5QVVRfQ0hFQ0tfQVJHUywKQEAgLTIwMTMsNiArMjAxNywyNCBAQCBFeGVjSW50ZXJwRXhwcihF eHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJ CUVFT19ORVhUKCk7CiAJCX0KIAorCQkvKiBSUFIgbmF2aWdhdGlvbjogc3dhcCBzbG90IHRvIHRh cmdldCByb3cgKi8KKwkJRUVPX0NBU0UoRUVPUF9SUFJfTkFWX1NFVCkKKwkJeworCQkJRXhlY0V2 YWxSUFJOYXZTZXQoc3RhdGUsIG9wLCBlY29udGV4dCk7CisJCQlvdXRlcnNsb3QgPSBlY29udGV4 dC0+ZWN4dF9vdXRlcnR1cGxlOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKKwkJLyogUlBSIG5h dmlnYXRpb246IHJlc3RvcmUgc2xvdCB0byBvcmlnaW5hbCByb3cgKi8KKwkJRUVPX0NBU0UoRUVP UF9SUFJfTkFWX1JFU1RPUkUpCisJCXsKKwkJCUV4ZWNFdmFsUlBSTmF2UmVzdG9yZShzdGF0ZSwg b3AsIGVjb250ZXh0KTsKKwkJCW91dGVyc2xvdCA9IGVjb250ZXh0LT5lY3h0X291dGVydHVwbGU7 CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQkvKiBldmFsdWF0ZSBhIHN0cmljdCBhZ2dyZWdh dGUgZGVzZXJpYWxpemF0aW9uIGZ1bmN0aW9uICovCiAJCUVFT19DQVNFKEVFT1BfQUdHX1NUUklD VF9ERVNFUklBTElaRSkKIAkJewpAQCAtNTk4OCwzICs2MDEwLDI0OCBAQCBFeGVjQWdnUGxhaW5U cmFuc0J5UmVmKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywK IAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIH0KKworLyoKKyAqIEV4dHJh Y3QgY29tcG91bmQgKG91dGVyKSBvZmZzZXQgZnJvbSBzdGVwIGRhdGEuCisgKiBGb3IgY29tcG91 bmQgbmF2LCBvZmZzZXRfdmFsdWUgaXMgYW4gYXJyYXk6IFswXT1pbm5lciwgWzFdPW91dGVyLgor ICogUmV0dXJucyB0aGUgb3V0ZXIgb2Zmc2V0OyBlcnJvcnMgb24gTlVMTCBvciBuZWdhdGl2ZS4K KyAqIERlZmF1bHQgaXMgMSAobGlrZSBQUkVWL05FWFQgaW1wbGljaXQgb2Zmc2V0KS4KKyAqLwor c3RhdGljIGludDY0CitycHJfbmF2X2dldF9jb21wb3VuZF9vZmZzZXQoRXhwckV2YWxTdGVwICpv cCkKK3sKKwlpbnQ2NAkJdmFsOworCisJQXNzZXJ0KG9wLT5kLnJwcl9uYXYub2Zmc2V0X3ZhbHVl ICE9IE5VTEwpOworCisJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbFsxXSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCks CisJCQkJZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBu dWxsIikpOworCisJdmFsID0gRGF0dW1HZXRJbnQ2NChvcC0+ZC5ycHJfbmF2Lm9mZnNldF92YWx1 ZVsxXSk7CisKKwlpZiAodmFsIDwgMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygicm93IHBhdHRlcm4g bmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSk7CisKKwlyZXR1cm4gdmFs OworfQorCisvKgorICogRXZhbHVhdGUgUlBSIG5hdmlnYXRpb24gKFBSRVYvTkVYVC9GSVJTVC9M QVNUKTogc3dhcCBzbG90IHRvIHRhcmdldCByb3cuCisgKgorICogU2F2ZXMgdGhlIGN1cnJlbnQg b3V0ZXJ0dXBsZSBpbnRvIHdpbnN0YXRlIGZvciBsYXRlciByZXN0b3JlLCBjb21wdXRlcworICog dGhlIHRhcmdldCByb3cgcG9zaXRpb24sIGZldGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2xvdCBm cm9tIHRoZQorICogdHVwbGVzdG9yZSwgYW5kIHJlcGxhY2VzIGVjb250ZXh0LT5lY3h0X291dGVy dHVwbGUgd2l0aCBpdC4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBib3RoIGZyb20gdGhlIGludGVy cHJldGVyIGlubGluZSBoYW5kbGVyIGFuZCBmcm9tCisgKiBKSVQtY29tcGlsZWQgZXhwcmVzc2lv bnMgdmlhIGJ1aWxkX0V2YWxYRnVuYy4KKyAqLwordm9pZAorRXhlY0V2YWxSUFJOYXZTZXQoRXhw clN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQor eworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IG9wLT5kLnJwcl9uYXYud2luc3RhdGU7CisJ aW50NjQJCW9mZnNldDsKKwlpbnQ2NAkJdGFyZ2V0X3BvczsKKwlUdXBsZVRhYmxlU2xvdCAqdGFy Z2V0X3Nsb3Q7CisKKwkvKiBTYXZlIGN1cnJlbnQgc2xvdCBmb3IgbGF0ZXIgcmVzdG9yZSAqLwor CXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0dXBsZSA9IGVjb250ZXh0LT5lY3h0X291dGVydHVw bGU7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgaW5uZXIgb2Zmc2V0LiAgTlVMTCBvciBuZWdh dGl2ZSBvZmZzZXRzIGFyZSBlcnJvcnMgcGVyCisJICogdGhlIFNRTCBzdGFuZGFyZC4KKwkgKgor CSAqIERlZmF1bHQgb2Zmc2V0IHdoZW4gb2Zmc2V0X2FyZyBpcyBOVUxMOiBQUkVWL05FWFQ6IDEg KHN0YW5kYXJkIDUuNi4yKQorCSAqIEZJUlNUL0xBU1QgYW5kIGNvbXBvdW5kOiAwIGZvciBpbm5l ciwgMSBmb3Igb3V0ZXIKKwkgKi8KKwlpZiAob3AtPmQucnByX25hdi5vZmZzZXRfdmFsdWUgIT0g TlVMTCkKKwl7CisJCWlmICgqb3AtPmQucnByX25hdi5vZmZzZXRfaXNudWxsKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAor CQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG51 bGwiKSk7CisKKwkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCgqb3AtPmQucnByX25hdi5vZmZzZXRf dmFsdWUpOworCisJCWlmIChvZmZzZXQgPCAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJyb3cg cGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZSIpKTsKKwl9CisJ ZWxzZQorCXsKKwkJLyogRGVmYXVsdCBvZmZzZXQ6IDEgZm9yIHNpbXBsZSBQUkVWL05FWFQsIDAg b3RoZXJ3aXNlICovCisJCWlmIChvcC0+ZC5ycHJfbmF2LmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8 CisJCQlvcC0+ZC5ycHJfbmF2LmtpbmQgPT0gUlBSX05BVl9ORVhUKQorCQkJb2Zmc2V0ID0gMTsK KwkJZWxzZQorCQkJb2Zmc2V0ID0gMDsKKwl9CisKKwkvKgorCSAqIENhbGN1bGF0ZSB0YXJnZXQg cG9zaXRpb24gYmFzZWQgb24gbmF2aWdhdGlvbiBkaXJlY3Rpb24uICBPbiBvdmVyZmxvdywKKwkg KiB1c2UgLTEgc28gdGhhdCBFeGVjUlBSTmF2R2V0U2xvdCB0cmVhdHMgaXQgYXMgb3V0IG9mIHJh bmdlLgorCSAqLworCXN3aXRjaCAob3AtPmQucnByX25hdi5raW5kKQorCXsKKwkJY2FzZSBSUFJf TkFWX1BSRVY6CisJCQlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBv cywgb2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJYnJlYWs7 CisJCWNhc2UgUlBSX05BVl9ORVhUOgorCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3Rh dGUtPmN1cnJlbnRwb3MsIG9mZnNldCwgJnRhcmdldF9wb3MpKQorCQkJCXRhcmdldF9wb3MgPSAt MTsKKwkJCWJyZWFrOworCQljYXNlIFJQUl9OQVZfRklSU1Q6CisJCQkvKiBGSVJTVDogb2Zmc2V0 IGZyb20gbWF0Y2hfc3RhcnQsIGNsYW1wZWQgdG8gY3VycmVudHBvcyAqLworCQkJaWYgKHBnX2Fk ZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCwgb2Zmc2V0LCAmdGFyZ2V0 X3BvcykpCisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJZWxzZSBpZiAodGFyZ2V0X3BvcyA+IHdp bnN0YXRlLT5jdXJyZW50cG9zKQorCQkJCXRhcmdldF9wb3MgPSAtMTsJLyogYmV5b25kIGN1cnJl bnQgbWF0Y2ggcmFuZ2UgKi8KKwkJCWJyZWFrOworCQljYXNlIFJQUl9OQVZfTEFTVDoKKwkJCS8q IExBU1Q6IG9mZnNldCBiYWNrd2FyZCBmcm9tIGN1cnJlbnRwb3MsIGNsYW1wZWQgdG8gbWF0Y2hf c3RhcnQgKi8KKwkJCWlmIChwZ19zdWJfczY0X292ZXJmbG93KHdpbnN0YXRlLT5jdXJyZW50cG9z LCBvZmZzZXQsICZ0YXJnZXRfcG9zKSkKKwkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQllbHNlIGlm ICh0YXJnZXRfcG9zIDwgd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCkKKwkJCQl0YXJnZXRfcG9z ID0gLTE7CS8qIGJlZm9yZSBtYXRjaF9zdGFydCAqLworCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJf TkFWX1BSRVZfRklSU1Q6CisJCWNhc2UgUlBSX05BVl9ORVhUX0ZJUlNUOgorCQkJeworCQkJCWlu dDY0CQljb21wb3VuZF9vZmZzZXQ7CisJCQkJaW50NjQJCWlubmVyX3BvczsKKworCQkJCS8qIElu bmVyOiBtYXRjaF9zdGFydCArIG9mZnNldCAqLworCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93 KHdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQsIG9mZnNldCwgJmlubmVyX3BvcykpCisJCQkJewor CQkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlpZiAoaW5uZXJf cG9zID4gd2luc3RhdGUtPmN1cnJlbnRwb3MgfHwgaW5uZXJfcG9zIDwgMCkKKwkJCQl7CisJCQkJ CXRhcmdldF9wb3MgPSAtMTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJLyogT3V0ZXIgb2Zm c2V0ICovCisJCQkJY29tcG91bmRfb2Zmc2V0ID0gcnByX25hdl9nZXRfY29tcG91bmRfb2Zmc2V0 KG9wKTsKKworCQkJCS8qIEFwcGx5IG91dGVyOiBQUkVWIHN1YnRyYWN0cywgTkVYVCBhZGRzICov CisJCQkJaWYgKG9wLT5kLnJwcl9uYXYua2luZCA9PSBSUFJfTkFWX1BSRVZfRklSU1QpCisJCQkJ eworCQkJCQlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyhpbm5lcl9wb3MsIGNvbXBvdW5kX29mZnNl dCwgJnRhcmdldF9wb3MpKQorCQkJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJCX0KKwkJCQllbHNl CisJCQkJeworCQkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhpbm5lcl9wb3MsIGNvbXBvdW5k X29mZnNldCwgJnRhcmdldF9wb3MpKQorCQkJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJCX0KKwkJ CX0KKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX05BVl9QUkVWX0xBU1Q6CisJCWNhc2UgUlBSX05B Vl9ORVhUX0xBU1Q6CisJCQl7CisJCQkJaW50NjQJCWNvbXBvdW5kX29mZnNldDsKKwkJCQlpbnQ2 NAkJaW5uZXJfcG9zOworCisJCQkJLyogSW5uZXI6IGN1cnJlbnRwb3MgLSBvZmZzZXQgKi8KKwkJ CQlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LCAm aW5uZXJfcG9zKSkKKwkJCQl7CisJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCQkJCWlmIChpbm5lcl9wb3MgPCB3aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0KQorCQkJ CXsKKwkJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQkvKiBP dXRlciBvZmZzZXQgKi8KKwkJCQljb21wb3VuZF9vZmZzZXQgPSBycHJfbmF2X2dldF9jb21wb3Vu ZF9vZmZzZXQob3ApOworCisJCQkJLyogQXBwbHkgb3V0ZXI6IFBSRVYgc3VidHJhY3RzLCBORVhU IGFkZHMgKi8KKwkJCQlpZiAob3AtPmQucnByX25hdi5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNU KQorCQkJCXsKKwkJCQkJaWYgKHBnX3N1Yl9zNjRfb3ZlcmZsb3coaW5uZXJfcG9zLCBjb21wb3Vu ZF9vZmZzZXQsICZ0YXJnZXRfcG9zKSkKKwkJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3coaW5uZXJfcG9zLCBj b21wb3VuZF9vZmZzZXQsICZ0YXJnZXRfcG9zKSkKKwkJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJ CQl9CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgUlBSIG5hdmlnYXRpb24ga2luZDogJWQiLAorCQkJCSBvcC0+ZC5ycHJfbmF2LmtpbmQp OworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBTbG90IHN3YXAgZWxpc2lvbjogaWYgdGFyZ2V0 X3BvcyBpcyB0aGUgY3VycmVudCByb3csIHNraXAgdGhlCisJICogdHVwbGVzdG9yZSBmZXRjaCBh bmQgc2xvdCBzd2FwIGVudGlyZWx5LiAgVGhpcyBiZW5lZml0cyBMQVNUKGV4cHIpLAorCSAqIFBS RVYoZXhwciwgMCksIE5FWFQoZXhwciwgMCksIGFuZCBzaW1pbGFyIGNhc2VzLgorCSAqCisJICog V2UgbXVzdCBzdGlsbCBzZXQgbmF2X3NhdmVkX291dGVydHVwbGUgKGRvbmUgYWJvdmUpIHNvIHRo YXQKKwkgKiBFRU9QX1JQUl9OQVZfUkVTVE9SRSBpcyBhIGhhcm1sZXNzIG5vLW9wLgorCSAqLwor CWlmICh0YXJnZXRfcG9zID09IHdpbnN0YXRlLT5jdXJyZW50cG9zKQorCQlyZXR1cm47CisKKwkv KiBGZXRjaCB0YXJnZXQgcm93IHNsb3QgKHJldHVybnMgbmF2X251bGxfc2xvdCBpZiBvdXQgb2Yg cmFuZ2UpICovCisJdGFyZ2V0X3Nsb3QgPSBFeGVjUlBSTmF2R2V0U2xvdCh3aW5zdGF0ZSwgdGFy Z2V0X3Bvcyk7CisKKwkvKgorCSAqIFVwZGF0ZSBlY29udGV4dCB0byBwb2ludCB0byB0aGUgdGFy Z2V0IHNsb3QuICBBbHNvIGRlY29tcHJlc3MgdGhlIG5ldworCSAqIHNsb3QncyBhdHRyaWJ1dGVz IHNpbmNlIEZFVENIU09NRSBhbHJlYWR5IHJhbiBmb3IgdGhlIG9yaWdpbmFsIHNsb3QuCisJICog VGhlIGNhbGxlciAoaW50ZXJwcmV0ZXIgb3IgSklUKSBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRp bmcgYW55IGxvY2FsCisJICogc2xvdCBjYWNoZSAoZS5nLiBvdXRlcnNsb3QpIGZyb20gZWNvbnRl eHQgYWZ0ZXIgd2UgcmV0dXJuLgorCSAqLworCXNsb3RfZ2V0YWxsYXR0cnModGFyZ2V0X3Nsb3Qp OworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSB0YXJnZXRfc2xvdDsKK30KKworLyoKKyAq IEV2YWx1YXRlIFJQUiBuYXZpZ2F0aW9uOiByZXN0b3JlIHNsb3QgdG8gb3JpZ2luYWwgcm93Lgor ICoKKyAqIFJlc3RvcmVzIGVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgZnJvbSB0aGUgc2F2ZWQg c2xvdCBpbiB3aW5zdGF0ZS4KKyAqIFdoZW4gc2xvdCBzd2FwIHdhcyBlbGlkZWQgKHRhcmdldCA9 PSBjdXJyZW50cG9zKSwgdGhpcyBpcyBhIGhhcm1sZXNzCisgKiBuby1vcCBzaW5jZSBzYXZlZCBh bmQgY3VycmVudCBzbG90cyBhcmUgaWRlbnRpY2FsLgorICogVGhlIGNhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgdXBkYXRpbmcgYW55IGxvY2FsIHNsb3QgY2FjaGUuCisgKgorICogRm9yIHBhc3Mt YnktcmVmZXJlbmNlIHJlc3VsdCB0eXBlcywgdGhlIHJlc3VsdCBkYXR1bSBwb2ludHMgaW50bwor ICogbmF2X3Nsb3QncyB0dXBsZSBtZW1vcnkuICBJZiBhIHN1YnNlcXVlbnQgbmF2aWdhdGlvbiBp biB0aGUgc2FtZQorICogZXhwcmVzc2lvbiByZS1mZXRjaGVzIG5hdl9zbG90IGZvciBhIGRpZmZl cmVudCBwb3NpdGlvbiwgdGhlIG9sZAorICogdHVwbGUgaXMgZnJlZWQsIGxlYXZpbmcgYSBkYW5n bGluZyBwb2ludGVyLiAgV2UgcHJldmVudCB0aGlzIGJ5CisgKiBjb3B5aW5nIHBhc3MtYnktcmVm IHJlc3VsdHMgaW50byBwZXItdHVwbGUgbWVtb3J5LCB3aGljaCBzdXJ2aXZlcworICogdW50aWwg dGhlIG5leHQgUmVzZXRFeHByQ29udGV4dC4KKyAqLwordm9pZAorRXhlY0V2YWxSUFJOYXZSZXN0 b3JlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCSAgRXhwckNvbnRl eHQgKmVjb250ZXh0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IG9wLT5kLnJwcl9u YXYud2luc3RhdGU7CisKKwllY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlID0gd2luc3RhdGUtPm5h dl9zYXZlZF9vdXRlcnR1cGxlOworCisJLyogU3RhYmlsaXplIHBhc3MtYnktcmVmIHJlc3VsdCBh Z2FpbnN0IG5hdl9zbG90IHJlLWZldGNoICovCisJaWYgKCFvcC0+ZC5ycHJfbmF2LnJlc3VsdHR5 cGJ5dmFsICYmCisJCSEqb3AtPnJlc251bGwpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZENvbnRl eHQ7CisKKwkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlY29udGV4dC0+ZWN4 dF9wZXJfdHVwbGVfbWVtb3J5KTsKKwkJKm9wLT5yZXN2YWx1ZSA9IGRhdHVtQ29weSgqb3AtPnJl c3ZhbHVlLAorCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkgIG9wLT5kLnJwcl9uYXYucmVzdWx0 dHlwbGVuKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOworCX0KK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSUFIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YjMyNmE1OGJiZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UlBSLmMKQEAgLTAsMCArMSwxOTc5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBleGVj UlBSLmMKKyAqCSAgTkZBLWJhc2VkIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIGVuZ2luZSBmb3Ig d2luZG93IGZ1bmN0aW9ucy4KKyAqCisgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgTkZBIGV4 ZWN1dGlvbiBlbmdpbmUgZm9yIHRoZSBST1dTIEJFVFdFRU4KKyAqIFBBVFRFUk4gY2xhdXNlIChT UUwgU3RhbmRhcmQgRmVhdHVyZSBSMDIwOiBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBpbgorICog V2luZG93IEZ1bmN0aW9ucykuCisgKgorICogVGhlIGVuZ2luZSBleGVjdXRlcyB0aGUgY29tcGls ZWQgUlBSUGF0dGVybiBzdHJ1Y3R1cmUgZGlyZWN0bHksIGF2b2lkaW5nCisgKiByZWdleCBjb21w aWxhdGlvbiBvdmVyaGVhZC4gIEl0IGlzIGNhbGxlZCBieSBub2RlV2luZG93QWdnLmMgYW5kIGV4 cG9zZXMKKyAqIHRoZSBpbnRlcmZhY2UgZGVjbGFyZWQgaW4gZXhlY3V0b3IvZXhlY1JQUi5oLgor ICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklD QVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiY29tbW9u L2ludC5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNSUFIuaCIKKyNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm9wdGltaXpl ci9ycHIuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICogRm9yIHRoZSBk ZXNpZ24gYW5kIGV4ZWN1dGlvbiBtb2RlbCBvZiB0aGUgTkZBIGVuZ2luZSBpbXBsZW1lbnRlZAor ICogaW4gdGhpcyBmaWxlLCBzZWUgc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwci4KKyAq LworCisvKiBCaXRtYXAgbWFjcm9zIGZvciBORkEgY3ljbGUgZGV0ZWN0aW9uIChjZi4gYml0bWFw c2V0LmMsIHRpZGJpdG1hcC5jKSAqLworI2RlZmluZSBXT1JETlVNKHgpCSgoeCkgLyBCSVRTX1BF Ul9CSVRNQVBXT1JEKQorI2RlZmluZSBCSVROVU0oeCkJKCh4KSAlIEJJVFNfUEVSX0JJVE1BUFdP UkQpCisKKy8qCisgKiBTZXQgdGhlIHZpc2l0ZWQgYml0IGZvciBlbGVtSWR4IGFuZCB1cGRhdGUg dGhlIGhpZ2gtd2F0ZXIgbWFya3MKKyAqIChuZmFWaXNpdGVkTWluL01heFdvcmQpIHNvIHRoYXQg dGhlIG5leHQgcmVzZXQgb25seSBoYXMgdG8gY2xlYXIKKyAqIHRoZSB0b3VjaGVkIHJhbmdlIGlu c3RlYWQgb2YgdGhlIGZ1bGwgbmZhVmlzaXRlZEVsZW1zIGJpdG1hcC4KKyAqLworc3RhdGljIGlu bGluZSB2b2lkCituZmFfbWFya192aXNpdGVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50 MTYgZWxlbUlkeCkKK3sKKwlpbnQxNgkJdyA9IFdPUkROVU0oZWxlbUlkeCk7CisKKwl3aW5zdGF0 ZS0+bmZhVmlzaXRlZEVsZW1zW3ddIHw9ICgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0oZWxlbUlk eCkpOworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWluV29yZCA9IE1pbih3aW5zdGF0ZS0+bmZhVmlz aXRlZE1pbldvcmQsIHcpOworCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IE1heCh3aW5z dGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQsIHcpOworfQorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9u cyAqLworc3RhdGljIFJQUk5GQVN0YXRlICpuZmFfc3RhdGVfbWFrZShXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUpOworc3RhdGljIHZvaWQgbmZhX3N0YXRlX2ZyZWUoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFTdGF0ZSAqc3RhdGUpOworc3RhdGljIHZvaWQgbmZhX3N0YXRlX2ZyZWVf bGlzdChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpsaXN0KTsKK3N0YXRp YyBSUFJORkFTdGF0ZSAqbmZhX3N0YXRlX2Nsb25lKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg aW50MTYgZWxlbUlkeCwKKwkJCQkJCQkJCWludDMyICpjb3VudHMsIGJvb2wgc291cmNlQWJzb3Ji YWJsZSk7CitzdGF0aWMgYm9vbCBuZmFfc3RhdGVzX2VxdWFsKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgUlBSTkZBU3RhdGUgKnMxLAorCQkJCQkJCSBSUFJORkFTdGF0ZSAqczIpOworc3RhdGlj IHZvaWQgbmZhX2FkZF9zdGF0ZV91bmlxdWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJO RkFDb250ZXh0ICpjdHgsCisJCQkJCQkJCSBSUFJORkFTdGF0ZSAqc3RhdGUpOworc3RhdGljIHZv aWQgbmZhX2FkZF9tYXRjaGVkX3N0YXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LAorCQkJCQkJCQkgIFJQUk5GQVN0YXRlICpzdGF0ZSwgaW50NjQgbWF0Y2hF bmRSb3cpOworCitzdGF0aWMgUlBSTkZBQ29udGV4dCAqbmZhX2NvbnRleHRfbWFrZShXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUpOworc3RhdGljIHZvaWQgbmZhX3VubGlua19jb250ZXh0KFdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4KTsKKworc3RhdGljIHZvaWQg bmZhX3VwZGF0ZV9sZW5ndGhfc3RhdHMoaW50NjQgY291bnQsIE5GQUxlbmd0aFN0YXRzICpzdGF0 cywgaW50NjQgbmV3TGVuKTsKK3N0YXRpYyB2b2lkIG5mYV9yZWNvcmRfY29udGV4dF9za2lwcGVk KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgc2tpcHBlZExlbik7CitzdGF0aWMgdm9p ZCBuZmFfcmVjb3JkX2NvbnRleHRfYWJzb3JiZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBp bnQ2NCBhYnNvcmJlZExlbik7CisKK3N0YXRpYyB2b2lkIG5mYV91cGRhdGVfYWJzb3JwdGlvbl9m bGFncyhSUFJORkFDb250ZXh0ICpjdHgpOworc3RhdGljIGJvb2wgbmZhX3N0YXRlc19jb3ZlcmVk KFJQUlBhdHRlcm4gKnBhdHRlcm4sIFJQUk5GQUNvbnRleHQgKm9sZGVyLAorCQkJCQkJCSAgIFJQ Uk5GQUNvbnRleHQgKm5ld2VyKTsKK3N0YXRpYyB2b2lkIG5mYV90cnlfYWJzb3JiX2NvbnRleHQo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgpOworc3RhdGljIHZv aWQgbmZhX2Fic29yYl9jb250ZXh0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOworCitzdGF0 aWMgYm9vbCBuZmFfZXZhbF92YXJfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAorCQkJ CQkJCSAgIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLCBib29sICp2YXJNYXRjaGVkKTsKK3N0YXRp YyB2b2lkIG5mYV9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQg KmN0eCwKKwkJCQkJICBib29sICp2YXJNYXRjaGVkKTsKK3N0YXRpYyB2b2lkIG5mYV9yb3V0ZV90 b19lbGVtKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJ CQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqbmV4dEVsZW0sCisJ CQkJCQkJICBpbnQ2NCBjdXJyZW50UG9zKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX2FsdChX aW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJCQlSUFJO RkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCQkJCWludDY0IGN1 cnJlbnRQb3MpOworc3RhdGljIHZvaWQgbmZhX2FkdmFuY2VfYmVnaW4oV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJICBSUFJORkFTdGF0ZSAqc3Rh dGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCQkJCSAgaW50NjQgY3VycmVudFBvcyk7 CitzdGF0aWMgdm9pZCBuZmFfYWR2YW5jZV9lbmQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBS UFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJu RWxlbWVudCAqZWxlbSwKKwkJCQkJCQlpbnQ2NCBjdXJyZW50UG9zKTsKK3N0YXRpYyB2b2lkIG5m YV9hZHZhbmNlX3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0 eCwKKwkJCQkJCQlSUFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAor CQkJCQkJCWludDY0IGN1cnJlbnRQb3MpOworc3RhdGljIHZvaWQgbmZhX2FkdmFuY2Vfc3RhdGUo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJICBS UFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IGN1cnJlbnRQb3MpOworc3RhdGljIHZvaWQgbmZhX2Fk dmFuY2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJ CQlpbnQ2NCBjdXJyZW50UG9zKTsKKworc3RhdGljIHZvaWQgbmZhX3JlZXZhbHVhdGVfZGVwZW5k ZW50X3ZhcnMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAorCQkJCQkJCQkJCSAgUlBSTkZBQ29u dGV4dCAqY3R4LAorCQkJCQkJCQkJCSAgaW50NjQgY3VycmVudFBvcyk7CisKKy8qCisgKiBORkEt YmFzZWQgcGF0dGVybiBtYXRjaGluZyBpbXBsZW1lbnRhdGlvbgorICoKKyAqIFRoZXNlIGZ1bmN0 aW9ucyBpbXBsZW1lbnQgZGlyZWN0IE5GQSBleGVjdXRpb24gdXNpbmcgdGhlIGNvbXBpbGVkCisg KiBSUFJQYXR0ZXJuIHN0cnVjdHVyZSwgYXZvaWRpbmcgcmVnZXggY29tcGlsYXRpb24gb3Zlcmhl YWQuCisgKgorICogRXhlY3V0aW9uIEZsb3c6IG1hdGNoIC0+IGFic29yYiAtPiBhZHZhbmNlCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIE5GQSBl eGVjdXRpb24gZm9sbG93cyBhIHRocmVlLXBoYXNlIGN5Y2xlIGZvciBlYWNoIHJvdzoKKyAqCisg KiAxLiBNQVRDSCAoY29udmVyZ2VuY2UpOiBFdmFsdWF0ZSBhbGwgd2FpdGluZyBzdGF0ZXMgYWdh aW5zdCBjdXJyZW50IHJvdy4KKyAqICAgIFN0YXRlcyBvbiBWQVIgZWxlbWVudHMgYXJlIGNoZWNr ZWQgYWdhaW5zdCB0aGVpciBkZWZpbmluZyBjb25kaXRpb25zLgorICogICAgRmFpbGVkIG1hdGNo ZXMgYXJlIHJlbW92ZWQsIHN1Y2Nlc3NmdWwgb25lcyBtYXkgdHJhbnNpdGlvbiBmb3J3YXJkLgor ICogICAgVGhpcyBpcyBhICJjb252ZXJnZW5jZSIgcGhhc2UgLSB0aGUgbnVtYmVyIG9mIHN0YXRl cyB0ZW5kcyB0byBkZWNyZWFzZS4KKyAqCisgKiAyLiBBQlNPUkI6IEFmdGVyIG1hdGNoaW5nLCBj aGVjayBpZiBhbnkgY29udGV4dCBjYW4gYWJzb3JiIGFub3RoZXIuCisgKiAgICBDb250ZXh0IGFi c29ycHRpb24gaXMgYW4gb3B0aW1pemF0aW9uIHRoYXQgbWVyZ2VzIGVxdWl2YWxlbnQgY29udGV4 dHMuCisgKiAgICBBIGNvbnRleHQgY2FuIG9ubHkgYmUgYWJzb3JiZWQgaWYgQUxMIGl0cyBzdGF0 ZXMgYXJlIGFic29yYmFibGUuCisgKgorICogMy4gQURWQU5DRSAoZGl2ZXJnZW5jZSk6IEV4cGFu ZCBzdGF0ZXMgdGhyb3VnaCBlcHNpbG9uIHRyYW5zaXRpb25zLgorICogICAgU3RhdGVzIGFkdmFu Y2UgdGhyb3VnaCBBTFQgKGFsdGVybmF0aW9uKSwgRU5EIChncm91cCBlbmQpLCBhbmQKKyAqICAg IG9wdGlvbmFsIGVsZW1lbnRzIHVudGlsIHJlYWNoaW5nIFZBUiBvciBGSU4gZWxlbWVudHMgd2hl cmUgdGhleSB3YWl0LgorICogICAgVGhpcyBpcyBhICJkaXZlcmdlbmNlIiBwaGFzZSAtIEFMVCBj cmVhdGVzIG11bHRpcGxlIGJyYW5jaCBzdGF0ZXMuCisgKgorICogS2V5IERlc2lnbiBEZWNpc2lv bnM6CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIC0gVkFSLT5FTkQgdHJhbnNpdGlvbiBp biBtYXRjaCBwaGFzZTogV2hlbiBhIHNpbXBsZSBWQVIgKG1heD0xKSBtYXRjaGVzCisgKiAgIGFu ZCB0aGUgbmV4dCBlbGVtZW50IGlzIEVORCwgd2UgdHJhbnNpdGlvbiBpbW1lZGlhdGVseSBpbiB0 aGUgbWF0Y2gKKyAqICAgcGhhc2UgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgYWR2YW5jZS4gVGhp cyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QKKyAqICAgYWJzb3JwdGlvbjogc3RhdGVzIG11c3Qg YmUgYXQgRU5EIHRvIGJlIG1hcmtlZCBhYnNvcmJhYmxlIGJlZm9yZSB0aGUKKyAqICAgYWJzb3Jw dGlvbiBjaGVjayBvY2N1cnMuCisgKgorICogLSBPcHRpb25hbCBWQVIgc2tpcCBwYXRoczogV2hl biBhZHZhbmNlIGxhbmRzIG9uIGEgVkFSIHdpdGggbWluPTAsCisgKiAgIHdlIGNyZWF0ZSBib3Ro IGEgd2FpdGluZyBzdGF0ZSBBTkQgYSBza2lwIHN0YXRlIChsaWtlIEFMVCBicmFuY2hlcykuCisg KiAgIFRoaXMgZW5zdXJlcyBwYXR0ZXJucyBsaWtlICJBIEI/IEMiIHdvcmsgY29ycmVjdGx5IC0g d2UgbmVlZCBhIHN0YXRlCisgKiAgIHdhaXRpbmcgZm9yIEIgQU5EIGEgc3RhdGUgdGhhdCBoYXMg YWxyZWFkeSBza2lwcGVkIHRvIEMuCisgKgorICogLSBFTkQtPkVORCBjb3VudCBpbmNyZW1lbnQ6 IFdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIG9uZSBFTkQgdG8gYW5vdGhlcgorICogICBFTkQgd2l0 aGluIGFkdmFuY2UsIHdlIG11c3QgaW5jcmVtZW50IHRoZSBvdXRlciBFTkQncyBjb3VudC4gVGhp cworICogICBoYW5kbGVzIG5lc3RlZCBncm91cHMgbGlrZSAiKChBfEIpKykrIiBjb3JyZWN0bHkg LSBleGl0aW5nIHRoZSBpbm5lcgorICogICBncm91cCBjb3VudHMgYXMgb25lIGl0ZXJhdGlvbiBv ZiB0aGUgb3V0ZXIgZ3JvdXAuCisgKgorICogLSBFbXB0eSBtYXRjaCBoYW5kbGluZzogVGhlIGlu aXRpYWwgYWR2YW5jZSB1c2VzIGN1cnJlbnRQb3MgPQorICogICBzdGFydFBvcyAtIDEgKGJlZm9y ZSBhbnkgcm93IGlzIGNvbnN1bWVkKS4gSWYgRklOIGlzIHJlYWNoZWQgdmlhCisgKiAgIGVwc2ls b24gdHJhbnNpdGlvbnMgYWxvbmUsIG1hdGNoRW5kUm93ID0gc3RhcnRQb3MgLSAxIDwgbWF0Y2hT dGFydFJvdy4KKyAqICAgSWYgbWF0Y2hlZFN0YXRlIGlzIHNldCAoRklOIHdhcyByZWFjaGVkKSwg dGhpcyBpcyBhbiBlbXB0eSBtYXRjaAorICogICAoUkZfRU1QVFlfTUFUQ0gpOyBvdGhlcndpc2Ug aXQgaXMgdW5tYXRjaGVkIChSRl9VTk1BVENIRUQpLgorICogICBGb3IgcmVsdWN0YW50IG1pbj0w IHBhdHRlcm5zIChBKj8sIEE/PyksIHRoZSBza2lwIHBhdGggcmVhY2hlcworICogICBGSU4gZmly c3QgYW5kIGVhcmx5IHRlcm1pbmF0aW9uIHBydW5lcyBlbnRlciBwYXRocywgeWllbGRpbmcgYW4K KyAqICAgaW1tZWRpYXRlIGVtcHR5IG1hdGNoIHJlc3VsdC4gRm9yIGdyZWVkeSBwYXR0ZXJucyAo QSopLCB0aGUgZW50ZXIKKyAqICAgcGF0aCBhZGRzIFZBUiBzdGF0ZXMgZmlyc3QsIHRoZW4gdGhl IHNraXAgRklOIGlzIHJlY29yZGVkIGJ1dCBWQVIKKyAqICAgc3RhdGVzIHN1cnZpdmUgZm9yIGxh dGVyIG1hdGNoaW5nLgorICoKKyAqIENvbnRleHQgQWJzb3JwdGlvbiBSdW50aW1lOgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBBYnNvcnB0aW9uIHVzZXMgZmxhZ3MgY29tcHV0 ZWQgYXQgcGxhbm5pbmcgdGltZSAoaW4gcnByLmMpIGFuZCB0d28KKyAqIGNvbnRleHQtbGV2ZWwg ZmxhZ3MgbWFpbnRhaW5lZCBhdCBydW50aW1lOgorICoKKyAqIFN0YXRlLWxldmVsOgorICogICBz dGF0ZS5pc0Fic29yYmFibGU6IHRydWUgaWYgc3RhdGUgaXMgaW4gdGhlIGFic29yYmFibGUgcmVn aW9uLgorICogICAgIC0gU2V0IGF0IGNyZWF0aW9uOiBlbGVtLT5mbGFncyAmIFJQUl9FTEVNX0FC U09SQkFCTEVfQlJBTkNICisgKiAgICAgLSBBdCB0cmFuc2l0aW9uOiBwcmV2QWJzb3JiYWJsZSAm JiAobmV3RWxlbS0+ZmxhZ3MgJiBBQlNPUkJBQkxFX0JSQU5DSCkKKyAqICAgICAtIE1vbm90b25p Yzogb25jZSBmYWxzZSwgc3RheXMgZmFsc2UgZm9yZXZlcgorICoKKyAqIENvbnRleHQtbGV2ZWw6 CisgKiAgIGN0eC5oYXNBYnNvcmJhYmxlU3RhdGU6IGNhbiB0aGlzIGNvbnRleHQgYWJzb3JiIG90 aGVycz8KKyAqICAgICAtIFRydWUgaWYgYXQgbGVhc3Qgb25lIHN0YXRlIGhhcyBpc0Fic29yYmFi bGU9dHJ1ZQorICogICAgIC0gTW9ub3RvbmljOiB0cnVlLT5mYWxzZSBvbmx5IChvcHRpbWl6YXRp b246IHNraXAgcmVjYWxjIHdoZW4gZmFsc2UpCisgKgorICogICBjdHguYWxsU3RhdGVzQWJzb3Ji YWJsZTogY2FuIHRoaXMgY29udGV4dCBiZSBhYnNvcmJlZD8KKyAqICAgICAtIFRydWUgaWYgQUxM IHN0YXRlcyBoYXZlIGlzQWJzb3JiYWJsZT10cnVlCisgKiAgICAgLSBEeW5hbWljOiBjYW4gY2hh bmdlIGZhbHNlLT50cnVlICh3aGVuIG5vbi1hYnNvcmJhYmxlIHN0YXRlcyBkaWUpCisgKgorICog QWJzb3JwdGlvbiBBbGdvcml0aG06CisgKiAgIEZvciBlYWNoIHBhaXIgKG9sZGVyIEN0eDEsIG5l d2VyIEN0eDIpOgorICogICAxLiBQcmUtY2hlY2s6IEN0eDEuaGFzQWJzb3JiYWJsZVN0YXRlICYm IEN0eDIuYWxsU3RhdGVzQWJzb3JiYWJsZQorICogICAgICAtPiBJZiBmYWxzZSwgc2tpcCAoZmFz dCBmaWx0ZXIpCisgKiAgIDIuIENvdmVyYWdlIGNoZWNrOiBGb3IgZWFjaCBDdHgyIHN0YXRlIHdp dGggaXNBYnNvcmJhYmxlPXRydWUsCisgKiAgICAgIGZpbmQgQ3R4MSBzdGF0ZSB3aXRoIHNhbWUg ZWxlbUlkeCBhbmQgY291bnQgPj0gQ3R4Mi5jb3VudAorICogICAzLiBJZiBhbGwgQ3R4MiBhYnNv cmJhYmxlIHN0YXRlcyBhcmUgY292ZXJlZCwgYWJzb3JiIEN0eDIKKyAqCisgKiBFeGFtcGxlOiBQ YXR0ZXJuIEErIEIKKyAqICAgUm93IDE6IEN0eDEgYXQgQSAoY291bnQ9MSkKKyAqICAgUm93IDI6 IEN0eDEgYXQgQSAoY291bnQ9MiksIEN0eDIgYXQgQSAoY291bnQ9MSkKKyAqICAgLT4gQm90aCBh dCBzYW1lIGVsZW1JZHggKEEpLCBDdHgxLmNvdW50ID49IEN0eDIuY291bnQKKyAqICAgLT4gQ3R4 MiBhYnNvcmJlZAorICoKKyAqIFRoZSBhc3ltbWV0cmljIGRlc2lnbiAoQ3R4MSBuZWVkcyBoYXNB YnNvcmJhYmxlLCBDdHgyIG5lZWRzIGFsbEFic29yYmFibGUpCisgKiBhbGxvd3MgYWJzb3JwdGlv biBldmVuIHdoZW4gQ3R4MSBoYXMgZXh0cmEgbm9uLWFic29yYmFibGUgc3RhdGVzLgorICovCisK Ky8qCisgKiBuZmFfc3RhdGVfbWFrZQorICoKKyAqIEFsbG9jYXRlIGFuIE5GQSBzdGF0ZSwgcmV1 c2luZyBmcm9tIGZyZWVMaXN0IGlmIGF2YWlsYWJsZS4KKyAqIGZyZWVMaXN0IGlzIHN0b3JlZCBp biBXaW5kb3dBZ2dTdGF0ZSBmb3IgcmV1c2UgYWNyb3NzIG1hdGNoIGF0dGVtcHRzLgorICogVXNl cyBmbGV4aWJsZSBhcnJheSBtZW1iZXIgZm9yIGNvdW50c1tdLgorICovCitzdGF0aWMgUlBSTkZB U3RhdGUgKgorbmZhX3N0YXRlX21ha2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQoreworCVJQ Uk5GQVN0YXRlICpzdGF0ZTsKKworCS8qIFRyeSB0byByZXVzZSBmcm9tIGZyZWUgbGlzdCBmaXJz dCAqLworCWlmICh3aW5zdGF0ZS0+bmZhU3RhdGVGcmVlICE9IE5VTEwpCisJeworCQlzdGF0ZSA9 IHdpbnN0YXRlLT5uZmFTdGF0ZUZyZWU7CisJCXdpbnN0YXRlLT5uZmFTdGF0ZUZyZWUgPSBzdGF0 ZS0+bmV4dDsKKwl9CisJZWxzZQorCXsKKwkJLyogQWxsb2NhdGUgaW4gcGFydGl0aW9uIGNvbnRl eHQgZm9yIHByb3BlciBsaWZldGltZSAqLworCQlzdGF0ZSA9IE1lbW9yeUNvbnRleHRBbGxvYyh3 aW5zdGF0ZS0+cGFydGNvbnRleHQsIHdpbnN0YXRlLT5uZmFTdGF0ZVNpemUpOworCX0KKworCS8q IEluaXRpYWxpemUgZW50aXJlIHN0YXRlIHRvIHplcm8gKi8KKwltZW1zZXQoc3RhdGUsIDAsIHdp bnN0YXRlLT5uZmFTdGF0ZVNpemUpOworCisJLyogVXBkYXRlIHN0YXRpc3RpY3MgKi8KKwl3aW5z dGF0ZS0+bmZhU3RhdGVzQWN0aXZlKys7CisJd2luc3RhdGUtPm5mYVN0YXRlc1RvdGFsQ3JlYXRl ZCsrOworCXdpbnN0YXRlLT5uZmFTdGF0ZXNNYXggPSBNYXgod2luc3RhdGUtPm5mYVN0YXRlc01h eCwKKwkJCQkJCQkJIHdpbnN0YXRlLT5uZmFTdGF0ZXNBY3RpdmUpOworCisJcmV0dXJuIHN0YXRl OworfQorCisvKgorICogbmZhX3N0YXRlX2ZyZWUKKyAqCisgKiBSZXR1cm4gYSBzdGF0ZSB0byB0 aGUgZnJlZSBsaXN0IGZvciBsYXRlciByZXVzZS4KKyAqLworc3RhdGljIHZvaWQKK25mYV9zdGF0 ZV9mcmVlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBU3RhdGUgKnN0YXRlKQorewor CXdpbnN0YXRlLT5uZmFTdGF0ZXNBY3RpdmUtLTsKKwlzdGF0ZS0+bmV4dCA9IHdpbnN0YXRlLT5u ZmFTdGF0ZUZyZWU7CisJd2luc3RhdGUtPm5mYVN0YXRlRnJlZSA9IHN0YXRlOworfQorCisvKgor ICogbmZhX3N0YXRlX2ZyZWVfbGlzdAorICoKKyAqIFJldHVybiBhbGwgc3RhdGVzIGluIGEgbGlz dCB0byB0aGUgZnJlZSBsaXN0LgorICovCitzdGF0aWMgdm9pZAorbmZhX3N0YXRlX2ZyZWVfbGlz dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpsaXN0KQoreworCVJQUk5G QVN0YXRlICpuZXh0OworCisJZm9yICg7IGxpc3QgIT0gTlVMTDsgbGlzdCA9IG5leHQpCisJewor CQluZXh0ID0gbGlzdC0+bmV4dDsKKwkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIGxpc3QpOwor CX0KK30KKworLyoKKyAqIG5mYV9zdGF0ZV9jbG9uZQorICoKKyAqIENsb25lIGEgc3RhdGUgZnJv bSB0aGUgZ2l2ZW4gZWxlbUlkeCBhbmQgY291bnRzLgorICogaXNBYnNvcmJhYmxlIGlzIGNvbXB1 dGVkIGltbWVkaWF0ZWx5OiBpbmhlcml0ZWQgQU5EIG5ldyBlbGVtZW50J3MgZmxhZy4KKyAqIE1v bm90b25pYyBwcm9wZXJ0eTogb25jZSBmYWxzZSwgc3RheXMgZmFsc2UgdGhyb3VnaCBhbGwgdHJh bnNpdGlvbnMuCisgKgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBsaW5raW5nIHRoZSBy ZXR1cm5lZCBzdGF0ZS4KKyAqLworc3RhdGljIFJQUk5GQVN0YXRlICoKK25mYV9zdGF0ZV9jbG9u ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDE2IGVsZW1JZHgsCisJCQkJaW50MzIgKmNv dW50cywgYm9vbCBzb3VyY2VBYnNvcmJhYmxlKQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3 aW5zdGF0ZS0+cnBQYXR0ZXJuOworCWludAkJCW1heERlcHRoID0gcGF0dGVybi0+bWF4RGVwdGg7 CisJUlBSTkZBU3RhdGUgKnN0YXRlID0gbmZhX3N0YXRlX21ha2Uod2luc3RhdGUpOworCVJQUlBh dHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRlcm4tPmVsZW1lbnRzW2VsZW1JZHhdOworCisJc3Rh dGUtPmVsZW1JZHggPSBlbGVtSWR4OworCS8qIEV2ZXJ5IHJlYWNoYWJsZSBjYWxsZXIgcGFzc2Vz IGEgbGl2ZSBzdGF0ZSdzIGNvdW50czsgbWF4RGVwdGggPj0gMS4gKi8KKwlBc3NlcnQoY291bnRz ICE9IE5VTEwgJiYgbWF4RGVwdGggPiAwKTsKKwltZW1jcHkoc3RhdGUtPmNvdW50cywgY291bnRz LCBzaXplb2YoaW50MzIpICogbWF4RGVwdGgpOworCisJLyoKKwkgKiBDb21wdXRlIGlzQWJzb3Ji YWJsZSBpbW1lZGlhdGVseSBhdCB0cmFuc2l0aW9uIHRpbWUuIGlzQWJzb3JiYWJsZSA9CisJICog c291cmNlQWJzb3JiYWJsZSAmJiAoZWxlbS0+ZmxhZ3MgJiBBQlNPUkJBQkxFX0JSQU5DSCkgTW9u b3RvbmljOiBvbmNlCisJICogZmFsc2UsIHN0YXlzIGZhbHNlIChjYW4ndCByZS1lbnRlciBhYnNv cmJhYmxlIHJlZ2lvbikuCisJICovCisJc3RhdGUtPmlzQWJzb3JiYWJsZSA9IHNvdXJjZUFic29y YmFibGUgJiYgUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlbGVtKTsKKworCXJldHVybiBzdGF0 ZTsKK30KKworLyoKKyAqIG5mYV9zdGF0ZXNfZXF1YWwKKyAqCisgKiBDaGVjayBpZiB0d28gc3Rh dGVzIGFyZSBlcXVpdmFsZW50IChzYW1lIGVsZW1JZHggYW5kIGNvdW50cykuCisgKi8KK3N0YXRp YyBib29sCituZmFfc3RhdGVzX2VxdWFsKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB U3RhdGUgKnMxLCBSUFJORkFTdGF0ZSAqczIpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdp bnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW07CisJaW50CQkJY29t cGFyZURlcHRoOworCisJaWYgKHMxLT5lbGVtSWR4ICE9IHMyLT5lbGVtSWR4KQorCQlyZXR1cm4g ZmFsc2U7CisKKwkvKgorCSAqIENvbXBhcmUgY291bnRzIHVwIHRvIGN1cnJlbnQgZWxlbWVudCdz IGRlcHRoLiAgVHdvIHN0YXRlcyBzaGFyaW5nCisJICogZWxlbUlkeCBhcmUgZXF1aXZhbGVudCBp ZmYgZXZlcnkgZW5jbG9zaW5nLW9yLWN1cnJlbnQgZGVwdGggY291bnQKKwkgKiBtYXRjaGVzLgor CSAqCisJICogVGhlICsxIGlzIHRoZSBzbG90IGFyaXRobWV0aWM6IGNvbXBhcmluZyB0aHJvdWdo IGRlcHRoIE4gcmVxdWlyZXMKKwkgKiBjb3VudHNbMC4uTl0sIGkuZS4sIE4rMSBlbnRyaWVzLiAg RGVlcGVyIHNsb3RzIChjb3VudHNbZF0gd2l0aCBkID4KKwkgKiBlbGVtLT5kZXB0aCkgYXJlIGV4 Y2x1ZGVkIGJlY2F1c2UgdGhleSBob2xkIHNjcmF0Y2ggc3RhdGUgZnJvbSBpbm5lcgorCSAqIGdy b3Vwcy4gIFBlciB0aGUgY291bnQtY2xlYXIgcG9saWN5IHN1Y2ggYSBzbG90IGlzIHplcm9lZCB3 aGVuIGl0cworCSAqIG93bmluZyBlbGVtZW50IGV4aXRzIChzZWUgbmZhX2FkdmFuY2VfdmFyIGFu ZCB0aGUgaW5saW5lIGZhc3QgcGF0aCBpbgorCSAqIG5mYV9tYXRjaCksIHNvIGl0IG11c3Qgbm90 IHBhcnRpY2lwYXRlIGluIGVxdWl2YWxlbmNlIGp1ZGdtZW50LgorCSAqLworCWVsZW0gPSAmcGF0 dGVybi0+ZWxlbWVudHNbczEtPmVsZW1JZHhdOworCWNvbXBhcmVEZXB0aCA9IGVsZW0tPmRlcHRo ICsgMTsKKworCWlmIChtZW1jbXAoczEtPmNvdW50cywgczItPmNvdW50cywgc2l6ZW9mKGludDMy KSAqIGNvbXBhcmVEZXB0aCkgIT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7 Cit9CisKKy8qCisgKiBuZmFfYWRkX3N0YXRlX3VuaXF1ZQorICoKKyAqIEFkZCB0aGUgc3RhdGUg dG8gdGhlIGVuZCBvZiB0aGUgY3R4LT5zdGF0ZXMgbGlua2VkIGxpc3QsIGJ1dCBvbmx5IGlmIGEK KyAqIGR1cGxpY2F0ZSBzdGF0ZSBpcyBub3QgYWxyZWFkeSBwcmVzZW50LgorICogRWFybGllciBz dGF0ZXMgaGF2ZSBiZXR0ZXIgbGV4aWNhbCBvcmRlciAoREZTIHRyYXZlcnNhbCBvcmRlciksIHNv IGV4aXN0aW5nCisgKiB3aW5zOyB0aGUgbmV3IHN0YXRlIGlzIGZyZWVkIHdoZW4gYSBkdXBsaWNh dGUgaXMgZm91bmQuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfYWRkX3N0YXRlX3VuaXF1ZShXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgUlBSTkZBU3RhdGUgKnN0 YXRlKQoreworCVJQUk5GQVN0YXRlICpzOworCVJQUk5GQVN0YXRlICp0YWlsID0gTlVMTDsKKwor CS8qCisJICogTWFyayBWQVIgaW4gdmlzaXRlZCBiZWZvcmUgZHVwbGljYXRlIGNoZWNrIHRvIHBy ZXZlbnQgREZTIGxvb3BzLiBUaGlzCisJICogaXMgdGhlIGRlZmVycmVkIGhhbGYgb2YgdGhlIGFz eW1tZXRyaWMgdmlzaXRlZC1tYXJraW5nIHNjaGVtZTsgc2VlCisJICogbmZhX2FkdmFuY2Vfc3Rh dGUgZm9yIHRoZSBub24tVkFSIChFTkQvQUxUL0JFR0lOL0ZJTikgaGFsZiBhbmQgdGhlCisJICog cmF0aW9uYWxlIGZvciB0aGUgYXN5bW1ldHJ5LgorCSAqLworCW5mYV9tYXJrX3Zpc2l0ZWQod2lu c3RhdGUsIHN0YXRlLT5lbGVtSWR4KTsKKworCS8qIENoZWNrIGZvciBkdXBsaWNhdGUgYW5kIGZp bmQgdGFpbCAqLworCWZvciAocyA9IGN0eC0+c3RhdGVzOyBzICE9IE5VTEw7IHMgPSBzLT5uZXh0 KQorCXsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQlpZiAobmZhX3N0YXRlc19lcXVh bCh3aW5zdGF0ZSwgcywgc3RhdGUpKQorCQl7CisJCQkvKgorCQkJICogRHVwbGljYXRlIGZvdW5k IC0gZXhpc3RpbmcgaGFzIGJldHRlciBsZXhpY2FsIG9yZGVyLCBkaXNjYXJkCisJCQkgKiBuZXcK KwkJCSAqLworCQkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKKwkJCXdpbnN0YXRl LT5uZmFTdGF0ZXNNZXJnZWQrKzsKKwkJCXJldHVybjsKKwkJfQorCQl0YWlsID0gczsKKwl9CisK KwkvKiBObyBkdXBsaWNhdGUsIGFkZCBhdCBlbmQgKi8KKwlzdGF0ZS0+bmV4dCA9IE5VTEw7CisJ aWYgKHRhaWwgPT0gTlVMTCkKKwkJY3R4LT5zdGF0ZXMgPSBzdGF0ZTsKKwllbHNlCisJCXRhaWwt Pm5leHQgPSBzdGF0ZTsKK30KKworLyoKKyAqIG5mYV9hZGRfbWF0Y2hlZF9zdGF0ZQorICoKKyAq IFJlY29yZCBhIHN0YXRlIHRoYXQgcmVhY2hlZCBGSU4sIHJlcGxhY2luZyBhbnkgcHJldmlvdXMg bWF0Y2guCisgKgorICogRm9yIFNLSVAgUEFTVCBMQVNUIFJPVywgYWxzbyBwcnVuZSBzdWJzZXF1 ZW50IGNvbnRleHRzIHdob3NlIHN0YXJ0IHJvdworICogZmFsbHMgd2l0aGluIHRoZSBtYXRjaCBy YW5nZSwgYXMgdGhleSBjYW5ub3QgcHJvZHVjZSBvdXRwdXQgcm93cy4KKyAqLworc3RhdGljIHZv aWQKK25mYV9hZGRfbWF0Y2hlZF9zdGF0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5G QUNvbnRleHQgKmN0eCwKKwkJCQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IG1hdGNoRW5k Um93KQoreworCWlmIChjdHgtPm1hdGNoZWRTdGF0ZSAhPSBOVUxMKQorCQluZmFfc3RhdGVfZnJl ZSh3aW5zdGF0ZSwgY3R4LT5tYXRjaGVkU3RhdGUpOworCisJY3R4LT5tYXRjaGVkU3RhdGUgPSBz dGF0ZTsKKwlzdGF0ZS0+bmV4dCA9IE5VTEw7CisJY3R4LT5tYXRjaEVuZFJvdyA9IG1hdGNoRW5k Um93OworCisJLyogUHJ1bmUgY29udGV4dHMgdGhhdCBzdGFydGVkIHdpdGhpbiB0aGlzIG1hdGNo J3MgcmFuZ2UgKi8KKwlpZiAod2luc3RhdGUtPnJwU2tpcFRvID09IFNUX1BBU1RfTEFTVF9ST1cp CisJeworCQlpbnQ2NAkJc2tpcHBlZExlbjsKKworCQl3aGlsZSAoY3R4LT5uZXh0ICE9IE5VTEwg JiYKKwkJCSAgIGN0eC0+bmV4dC0+bWF0Y2hTdGFydFJvdyA8PSBtYXRjaEVuZFJvdykKKwkJewor CQkJUlBSTkZBQ29udGV4dCAqbmV4dEN0eCA9IGN0eC0+bmV4dDsKKworCQkJQXNzZXJ0KG5leHRD dHgtPmxhc3RQcm9jZXNzZWRSb3cgPj0gbmV4dEN0eC0+bWF0Y2hTdGFydFJvdyk7CisJCQlza2lw cGVkTGVuID0gbmV4dEN0eC0+bGFzdFByb2Nlc3NlZFJvdyAtIG5leHRDdHgtPm1hdGNoU3RhcnRS b3cgKyAxOworCQkJbmZhX3JlY29yZF9jb250ZXh0X3NraXBwZWQod2luc3RhdGUsIHNraXBwZWRM ZW4pOworCisJCQlFeGVjUlBSRnJlZUNvbnRleHQod2luc3RhdGUsIG5leHRDdHgpOworCQl9CisJ fQorfQorCisvKgorICogbmZhX2NvbnRleHRfbWFrZQorICoKKyAqIEFsbG9jYXRlIGFuIE5GQSBj b250ZXh0LCByZXVzaW5nIGZyb20gZnJlZSBsaXN0IGlmIGF2YWlsYWJsZS4KKyAqLworc3RhdGlj IFJQUk5GQUNvbnRleHQgKgorbmZhX2NvbnRleHRfbWFrZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUpCit7CisJUlBSTkZBQ29udGV4dCAqY3R4OworCisJaWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0 RnJlZSAhPSBOVUxMKQorCXsKKwkJY3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHRGcmVlOworCQl3 aW5zdGF0ZS0+bmZhQ29udGV4dEZyZWUgPSBjdHgtPm5leHQ7CisJfQorCWVsc2UKKwl7CisJCS8q IEFsbG9jYXRlIGluIHBhcnRpdGlvbiBjb250ZXh0IGZvciBwcm9wZXIgbGlmZXRpbWUgKi8KKwkJ Y3R4ID0gTWVtb3J5Q29udGV4dEFsbG9jKHdpbnN0YXRlLT5wYXJ0Y29udGV4dCwgc2l6ZW9mKFJQ Uk5GQUNvbnRleHQpKTsKKwl9CisKKwljdHgtPm5leHQgPSBOVUxMOworCWN0eC0+cHJldiA9IE5V TEw7CisJY3R4LT5zdGF0ZXMgPSBOVUxMOworCWN0eC0+bWF0Y2hTdGFydFJvdyA9IC0xOworCWN0 eC0+bWF0Y2hFbmRSb3cgPSAtMTsKKwljdHgtPmxhc3RQcm9jZXNzZWRSb3cgPSAtMTsKKwljdHgt Pm1hdGNoZWRTdGF0ZSA9IE5VTEw7CisKKwkvKiBJbml0aWFsaXplIHR3by1mbGFnIGFic29ycHRp b24gZGVzaWduIGJhc2VkIG9uIHBhdHRlcm4gKi8KKwljdHgtPmhhc0Fic29yYmFibGVTdGF0ZSA9 IHdpbnN0YXRlLT5ycFBhdHRlcm4tPmlzQWJzb3JiYWJsZTsKKwljdHgtPmFsbFN0YXRlc0Fic29y YmFibGUgPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuLT5pc0Fic29yYmFibGU7CisKKwkvKiBVcGRhdGUg c3RhdGlzdGljcyAqLworCXdpbnN0YXRlLT5uZmFDb250ZXh0c0FjdGl2ZSsrOworCXdpbnN0YXRl LT5uZmFDb250ZXh0c1RvdGFsQ3JlYXRlZCsrOworCXdpbnN0YXRlLT5uZmFDb250ZXh0c01heCA9 IE1heCh3aW5zdGF0ZS0+bmZhQ29udGV4dHNNYXgsCisJCQkJCQkJCSAgIHdpbnN0YXRlLT5uZmFD b250ZXh0c0FjdGl2ZSk7CisKKwlyZXR1cm4gY3R4OworfQorCisvKgorICogbmZhX3VubGlua19j b250ZXh0CisgKgorICogUmVtb3ZlIGEgY29udGV4dCBmcm9tIHRoZSBkb3VibHktbGlua2VkIGFj dGl2ZSBjb250ZXh0IGxpc3QuCisgKiBVcGRhdGVzIGhlYWQgKG5mYUNvbnRleHQpIGFuZCB0YWls IChuZmFDb250ZXh0VGFpbCkgYXMgbmVlZGVkLgorICovCitzdGF0aWMgdm9pZAorbmZhX3VubGlu a19jb250ZXh0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4KQor eworCWlmIChjdHgtPnByZXYgIT0gTlVMTCkKKwkJY3R4LT5wcmV2LT5uZXh0ID0gY3R4LT5uZXh0 OworCWVsc2UKKwkJd2luc3RhdGUtPm5mYUNvbnRleHQgPSBjdHgtPm5leHQ7CS8qIHdhcyBoZWFk ICovCisKKwlpZiAoY3R4LT5uZXh0ICE9IE5VTEwpCisJCWN0eC0+bmV4dC0+cHJldiA9IGN0eC0+ cHJldjsKKwllbHNlCisJCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCA9IGN0eC0+cHJldjsJLyog d2FzIHRhaWwgKi8KKworCWN0eC0+bmV4dCA9IE5VTEw7CisJY3R4LT5wcmV2ID0gTlVMTDsKK30K KworLyoKKyAqIG5mYV91cGRhdGVfbGVuZ3RoX3N0YXRzCisgKgorICogSGVscGVyIGZ1bmN0aW9u IHRvIHVwZGF0ZSBtaW4vbWF4L3RvdGFsIGxlbmd0aCBzdGF0aXN0aWNzLgorICogQ2FsbGVkIHdo ZW4gdHJhY2tpbmcgbWF0Y2gvbWlzbWF0Y2gvYWJzb3JiZWQvc2tpcHBlZCBsZW5ndGhzLgorICov CitzdGF0aWMgdm9pZAorbmZhX3VwZGF0ZV9sZW5ndGhfc3RhdHMoaW50NjQgY291bnQsIE5GQUxl bmd0aFN0YXRzICpzdGF0cywgaW50NjQgbmV3TGVuKQoreworCWlmIChjb3VudCA9PSAxKQorCXsK KwkJc3RhdHMtPm1pbiA9IG5ld0xlbjsKKwkJc3RhdHMtPm1heCA9IG5ld0xlbjsKKwl9CisJZWxz ZQorCXsKKwkJc3RhdHMtPm1pbiA9IE1pbihzdGF0cy0+bWluLCBuZXdMZW4pOworCQlzdGF0cy0+ bWF4ID0gTWF4KHN0YXRzLT5tYXgsIG5ld0xlbik7CisJfQorCXN0YXRzLT50b3RhbCArPSBuZXdM ZW47Cit9CisKKy8qCisgKiBuZmFfcmVjb3JkX2NvbnRleHRfc2tpcHBlZAorICoKKyAqIFJlY29y ZCBhIHNraXBwZWQgY29udGV4dCBpbiBzdGF0aXN0aWNzLgorICovCitzdGF0aWMgdm9pZAorbmZh X3JlY29yZF9jb250ZXh0X3NraXBwZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBz a2lwcGVkTGVuKQoreworCXdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQrKzsKKwluZmFfdXBk YXRlX2xlbmd0aF9zdGF0cyh3aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVkLAorCQkJCQkJCSZ3 aW5zdGF0ZS0+bmZhU2tpcHBlZExlbiwKKwkJCQkJCQlza2lwcGVkTGVuKTsKK30KKworLyoKKyAq IG5mYV9yZWNvcmRfY29udGV4dF9hYnNvcmJlZAorICoKKyAqIFJlY29yZCBhbiBhYnNvcmJlZCBj b250ZXh0IGluIHN0YXRpc3RpY3MuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfcmVjb3JkX2NvbnRl eHRfYWJzb3JiZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBhYnNvcmJlZExlbikK K3sKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCsrOworCW5mYV91cGRhdGVfbGVuZ3Ro X3N0YXRzKHdpbnN0YXRlLT5uZmFDb250ZXh0c0Fic29yYmVkLAorCQkJCQkJCSZ3aW5zdGF0ZS0+ bmZhQWJzb3JiZWRMZW4sCisJCQkJCQkJYWJzb3JiZWRMZW4pOworfQorCisvKgorICogbmZhX3Vw ZGF0ZV9hYnNvcnB0aW9uX2ZsYWdzCisgKgorICogVXBkYXRlIGNvbnRleHQncyBhYnNvcnB0aW9u IGZsYWdzIGFmdGVyIHN0YXRlIGNoYW5nZXMuCisgKgorICogVHdvIGZsYWdzIGNvbnRyb2wgYWJz b3JwdGlvbiBiZWhhdmlvcjoKKyAqICAgaGFzQWJzb3JiYWJsZVN0YXRlOiB0cnVlIGlmIGNvbnRl eHQgaGFzIGF0IGxlYXN0IG9uZSBhYnNvcmJhYmxlIHN0YXRlLgorICogICAgIFRoaXMgZmxhZyBp cyBtb25vdG9uaWMgKHRydWUgLT4gZmFsc2Ugb25seSkuIE9uY2UgYWxsIGFic29yYmFibGUgc3Rh dGVzCisgKiAgICAgZGllLCBubyBuZXcgYWJzb3JiYWJsZSBzdGF0ZXMgY2FuIGJlIGNyZWF0ZWQg dGhyb3VnaCB0cmFuc2l0aW9ucy4KKyAqICAgYWxsU3RhdGVzQWJzb3JiYWJsZTogdHJ1ZSBpZiBB TEwgc3RhdGVzIGluIGNvbnRleHQgYXJlIGFic29yYmFibGUuCisgKiAgICAgVGhpcyBmbGFnIGlz IGR5bmFtaWMgYW5kIGNhbiBjaGFuZ2UgZmFsc2UgLT4gdHJ1ZSB3aGVuIG5vbi1hYnNvcmJhYmxl CisgKiAgICAgc3RhdGVzIGRpZSBvZmYuCisgKgorICogT3B0aW1pemF0aW9uOiBPbmNlIGhhc0Fi c29yYmFibGVTdGF0ZSBiZWNvbWVzIGZhbHNlLCBib3RoIGZsYWdzIHJlbWFpbiBmYWxzZQorICog cGVybWFuZW50bHksIHNvIHdlIHNraXAgcmVjYWxjdWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQK K25mYV91cGRhdGVfYWJzb3JwdGlvbl9mbGFncyhSUFJORkFDb250ZXh0ICpjdHgpCit7CisJUlBS TkZBU3RhdGUgKnN0YXRlOworCWJvb2wJCWhhc0Fic29yYmFibGUgPSBmYWxzZTsKKwlib29sCQlh bGxBYnNvcmJhYmxlID0gdHJ1ZTsKKworCS8qCisJICogT3B0aW1pemF0aW9uOiBPbmNlIGhhc0Fi c29yYmFibGVTdGF0ZSBiZWNvbWVzIGZhbHNlLCBpdCBzdGF5cyBmYWxzZS4gTm8KKwkgKiBuZWVk IHRvIHJlY2FsY3VsYXRlIC0gYm90aCBmbGFncyByZW1haW4gZmFsc2UgcGVybWFuZW50bHkuCisJ ICovCisJaWYgKCFjdHgtPmhhc0Fic29yYmFibGVTdGF0ZSkKKwl7CisJCWN0eC0+YWxsU3RhdGVz QWJzb3JiYWJsZSA9IGZhbHNlOworCQlyZXR1cm47CisJfQorCisJLyogTm8gc3RhdGVzIG1lYW5z IG5vIGFic29yYmFibGUgc3RhdGVzICovCisJaWYgKGN0eC0+c3RhdGVzID09IE5VTEwpCisJewor CQljdHgtPmhhc0Fic29yYmFibGVTdGF0ZSA9IGZhbHNlOworCQljdHgtPmFsbFN0YXRlc0Fic29y YmFibGUgPSBmYWxzZTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogSXRlcmF0ZSB0aHJvdWdo IGFsbCBzdGF0ZXMgdG8gY2hlY2sgYWJzb3JwdGlvbiBzdGF0dXMuIFVzZXMKKwkgKiBzdGF0ZS0+ aXNBYnNvcmJhYmxlIHdoaWNoIHRyYWNrcyBpZiBzdGF0ZSBpcyBpbiBhYnNvcmJhYmxlIHJlZ2lv bi4gVGhpcworCSAqIGlzIGRpZmZlcmVudCBmcm9tIFJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkg d2hpY2ggY2hlY2tzIGp1ZGdtZW50CisJICogcG9pbnQuCisJICovCisJZm9yIChzdGF0ZSA9IGN0 eC0+c3RhdGVzOyBzdGF0ZSAhPSBOVUxMOyBzdGF0ZSA9IHN0YXRlLT5uZXh0KQorCXsKKwkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQlpZiAoc3RhdGUtPmlzQWJzb3JiYWJsZSkKKwkJCWhh c0Fic29yYmFibGUgPSB0cnVlOworCQllbHNlCisJCQlhbGxBYnNvcmJhYmxlID0gZmFsc2U7CisJ fQorCisJY3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUgPSBoYXNBYnNvcmJhYmxlOworCWN0eC0+YWxs U3RhdGVzQWJzb3JiYWJsZSA9IGFsbEFic29yYmFibGU7Cit9CisKKy8qCisgKiBuZmFfc3RhdGVz X2NvdmVyZWQKKyAqCisgKiBDaGVjayBpZiBhbGwgc3RhdGVzIGluIG5ld2VyIGNvbnRleHQgYXJl ICJjb3ZlcmVkIiBieSBvbGRlciBjb250ZXh0LgorICoKKyAqIEEgbmV3ZXIgc3RhdGUgaXMgY292 ZXJlZCB3aGVuIG9sZGVyIGNvbnRleHQgaGFzIGFuIGFic29yYmFibGUgc3RhdGUgYXQgdGhlCisg KiBzYW1lIHBhdHRlcm4gZWxlbWVudCAoZWxlbUlkeCkgd2l0aCBjb3VudCA+PSBuZXdlcidzIGNv dW50IGF0IHRoYXQgZGVwdGguCisgKiBUaGUgY292ZXJpbmcgc3RhdGUgbXVzdCBiZSBhYnNvcmJh YmxlIGJlY2F1c2Ugb25seSBhYnNvcmJhYmxlIHN0YXRlcyBjYW4KKyAqIGd1YXJhbnRlZSB0byBw cm9kdWNlIHN1cGVyc2V0IG1hdGNoZXMuCisgKgorICogSWYgYWxsIG5ld2VyIHN0YXRlcyBhcmUg Y292ZXJlZCwgbmV3ZXIgY29udGV4dCdzIGV2ZW50dWFsIG1hdGNoZXMgd2lsbCBiZQorICogYSBz dWJzZXQgb2Ygb2xkZXIgY29udGV4dCdzIG1hdGNoZXMsIG1ha2luZyBuZXdlciByZWR1bmRhbnQu CisgKi8KK3N0YXRpYyBib29sCituZmFfc3RhdGVzX2NvdmVyZWQoUlBSUGF0dGVybiAqcGF0dGVy biwgUlBSTkZBQ29udGV4dCAqb2xkZXIsIFJQUk5GQUNvbnRleHQgKm5ld2VyKQoreworCVJQUk5G QVN0YXRlICpuZXdlclN0YXRlOworCisJZm9yIChuZXdlclN0YXRlID0gbmV3ZXItPnN0YXRlczsg bmV3ZXJTdGF0ZSAhPSBOVUxMOyBuZXdlclN0YXRlID0gbmV3ZXJTdGF0ZS0+bmV4dCkKKwl7CisJ CVJQUk5GQVN0YXRlICpvbGRlclN0YXRlOworCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbTsKKwkJ aW50CQkJZGVwdGg7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJLyogQWxsIHN0YXRlcyBh cmUgYWJzb3JiYWJsZSAoY2FsbGVyIGNoZWNrcyBhbGxTdGF0ZXNBYnNvcmJhYmxlKSAqLworCQll bGVtID0gJnBhdHRlcm4tPmVsZW1lbnRzW25ld2VyU3RhdGUtPmVsZW1JZHhdOworCQlkZXB0aCA9 IGVsZW0tPmRlcHRoOworCisJCS8qCisJCSAqIE9ubHkgY29tcGFyZSBhdCBhYnNvcnB0aW9uIGp1 ZGdtZW50IHBvaW50cyAoUlBSX0VMRU1fQUJTT1JCQUJMRSkuCisJCSAqIEp1ZGdtZW50IHBvaW50 cyBhcmUgd2hlcmUgY291bnQtZG9taW5hbmNlIGd1YXJhbnRlZXMgdGhlIG5ld2VyCisJCSAqIGNv bnRleHQncyBmdXR1cmUgbWF0Y2hlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIG9sZGVyJ3MuCisJCSAq LworCQlpZiAoIVJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkpCisJCQlyZXR1cm4gZmFsc2U7CisK KwkJZm9yIChvbGRlclN0YXRlID0gb2xkZXItPnN0YXRlczsgb2xkZXJTdGF0ZSAhPSBOVUxMOyBv bGRlclN0YXRlID0gb2xkZXJTdGF0ZS0+bmV4dCkKKwkJeworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKworCQkJLyogQ292ZXJpbmcgc3RhdGUgbXVzdCBhbHNvIGJlIGFic29yYmFibGUgKi8K KwkJCWlmIChvbGRlclN0YXRlLT5pc0Fic29yYmFibGUgJiYKKwkJCQlvbGRlclN0YXRlLT5lbGVt SWR4ID09IG5ld2VyU3RhdGUtPmVsZW1JZHggJiYKKwkJCQlvbGRlclN0YXRlLT5jb3VudHNbZGVw dGhdID49IG5ld2VyU3RhdGUtPmNvdW50c1tkZXB0aF0pCisJCQl7CisJCQkJZm91bmQgPSB0cnVl OworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKCFmb3VuZCkKKwkJCXJldHVybiBmYWxz ZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIG5mYV90cnlfYWJzb3JiX2NvbnRl eHQKKyAqCisgKiBUcnkgdG8gYWJzb3JiIGN0eCAobmV3ZXIpIGludG8gYW4gb2xkZXIgaW4tcHJv Z3Jlc3MgY29udGV4dC4KKyAqIFJldHVybnMgdHJ1ZSBpZiBjdHggd2FzIGFic29yYmVkIGFuZCBm cmVlZC4KKyAqCisgKiBBYnNvcnB0aW9uIHJlcXVpcmVzIHRocmVlIGNvbmRpdGlvbnM6CisgKiAg IDEuIGN0eCBtdXN0IGhhdmUgYWxsIHN0YXRlcyBhYnNvcmJhYmxlIChhbGxTdGF0ZXNBYnNvcmJh YmxlKS4KKyAqICAgICAgSWYgY3R4IGhhcyBhbnkgbm9uLWFic29yYmFibGUgc3RhdGUsIGl0IG1h eSBwcm9kdWNlIHVuaXF1ZSBtYXRjaGVzLgorICogICAyLiBvbGRlciBtdXN0IGhhdmUgYXQgbGVh c3Qgb25lIGFic29yYmFibGUgc3RhdGUgKGhhc0Fic29yYmFibGVTdGF0ZSkuCisgKiAgICAgIFdp dGhvdXQgYWJzb3JiYWJsZSBzdGF0ZXMsIG9sZGVyIGNhbm5vdCBjb3ZlciBuZXdlcidzIHN0YXRl cy4KKyAqICAgMy4gQWxsIGN0eCBzdGF0ZXMgbXVzdCBiZSBjb3ZlcmVkIGJ5IG9sZGVyJ3MgYWJz b3JiYWJsZSBzdGF0ZXMuCisgKiAgICAgIFRoaXMgZW5zdXJlcyBvbGRlciB3aWxsIHByb2R1Y2Ug YWxsIG1hdGNoZXMgdGhhdCBjdHggd291bGQgcHJvZHVjZS4KKyAqCisgKiBDb250ZXh0IGxpc3Qg aXMgb3JkZXJlZCBieSBjcmVhdGlvbiB0aW1lIChvbGRlc3QgZmlyc3QgdmlhIHByZXYgY2hhaW4p LgorICogRWFjaCByb3cgY3JlYXRlcyBhdCBtb3N0IG9uZSBjb250ZXh0LCBzbyBlYXJsaWVyIGNv bnRleHRzIGhhdmUgc21hbGxlcgorICogbWF0Y2hTdGFydFJvdyB2YWx1ZXMuCisgKi8KK3N0YXRp YyB2b2lkCituZmFfdHJ5X2Fic29yYl9jb250ZXh0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg UlBSTkZBQ29udGV4dCAqY3R4KQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+ cnBQYXR0ZXJuOworCVJQUk5GQUNvbnRleHQgKm9sZGVyOworCisJLyogRWFybHkgZXhpdDogY3R4 IG11c3QgaGF2ZSBhbGwgc3RhdGVzIGFic29yYmFibGUgKi8KKwlpZiAoIWN0eC0+YWxsU3RhdGVz QWJzb3JiYWJsZSkKKwkJcmV0dXJuOworCisJZm9yIChvbGRlciA9IGN0eC0+cHJldjsgb2xkZXIg IT0gTlVMTDsgb2xkZXIgPSBvbGRlci0+cHJldikKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJLyoKKwkJICogQnkgaW52YXJpYW50OiBjdHgtPnByZXYgY2hhaW4gaXMgaW4gY3Jl YXRpb24gb3JkZXIgKG9sZGVzdCBmaXJzdCksCisJCSAqIGFuZCBlYWNoIHJvdyBjcmVhdGVzIGF0 IG1vc3Qgb25lIGNvbnRleHQuIFNvIGFsbCBjb250ZXh0cyBpbiB0aGlzCisJCSAqIGNoYWluIGhh dmUgbWF0Y2hTdGFydFJvdyA8IGN0eC0+bWF0Y2hTdGFydFJvdy4KKwkJICovCisKKwkJLyogT2xk ZXIgbXVzdCBhbHNvIGJlIGluLXByb2dyZXNzICovCisJCWlmIChvbGRlci0+c3RhdGVzID09IE5V TEwpCisJCQljb250aW51ZTsKKworCQkvKiBPbGRlciBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFi c29yYmFibGUgc3RhdGUgKi8KKwkJaWYgKCFvbGRlci0+aGFzQWJzb3JiYWJsZVN0YXRlKQorCQkJ Y29udGludWU7CisKKwkJLyogQ2hlY2sgaWYgYWxsIG5ld2VyIHN0YXRlcyBhcmUgY292ZXJlZCBi eSBvbGRlciAqLworCQlpZiAobmZhX3N0YXRlc19jb3ZlcmVkKHBhdHRlcm4sIG9sZGVyLCBjdHgp KQorCQl7CisJCQlpbnQ2NAkJYWJzb3JiZWRMZW4gPSBjdHgtPmxhc3RQcm9jZXNzZWRSb3cgLSBj dHgtPm1hdGNoU3RhcnRSb3cgKyAxOworCisJCQlFeGVjUlBSRnJlZUNvbnRleHQod2luc3RhdGUs IGN0eCk7CisJCQluZmFfcmVjb3JkX2NvbnRleHRfYWJzb3JiZWQod2luc3RhdGUsIGFic29yYmVk TGVuKTsKKwkJCXJldHVybjsKKwkJfQorCX0KK30KKworLyoKKyAqIG5mYV9hYnNvcmJfY29udGV4 dHMKKyAqCisgKiBBYnNvcmIgcmVkdW5kYW50IGNvbnRleHRzIHRvIHJlZHVjZSBtZW1vcnkgdXNh Z2UgYW5kIGNvbXB1dGF0aW9uLgorICoKKyAqIEZvciBwYXR0ZXJucyBsaWtlIEErLCBuZXdlciBj b250ZXh0cyBzdGFydGluZyBsYXRlciB3aWxsIHByb2R1Y2Ugc3Vic2V0CisgKiBtYXRjaGVzIG9m IG9sZGVyIGNvbnRleHRzIHdpdGggaGlnaGVyIGNvdW50cy4gQnkgYWJzb3JiaW5nIHRoZXNlIHJl ZHVuZGFudAorICogY29udGV4dHMgZWFybHksIHdlIGF2b2lkIGR1cGxpY2F0ZSB3b3JrLgorICoK KyAqIEl0ZXJhdGVzIGZyb20gdGFpbCAobmV3ZXN0KSB0b3dhcmQgaGVhZCAob2xkZXN0KSB2aWEg cHJldiBjaGFpbi4KKyAqIE9ubHkgaW4tcHJvZ3Jlc3MgY29udGV4dHMgKHN0YXRlcyAhPSBOVUxM KSBhcmUgY2FuZGlkYXRlcyBmb3IgYWJzb3JwdGlvbjsKKyAqIGNvbXBsZXRlZCBjb250ZXh0cyBy ZXByZXNlbnQgdmFsaWQgbWF0Y2ggcmVzdWx0cy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hYnNv cmJfY29udGV4dHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQoreworCVJQUk5GQUNvbnRleHQg KmN0eDsKKwlSUFJORkFDb250ZXh0ICpuZXh0Q3R4OworCisJZm9yIChjdHggPSB3aW5zdGF0ZS0+ bmZhQ29udGV4dFRhaWw7IGN0eCAhPSBOVUxMOyBjdHggPSBuZXh0Q3R4KQorCXsKKwkJbmV4dEN0 eCA9IGN0eC0+cHJldjsKKworCQkvKgorCQkgKiBPbmx5IGFic29yYiBpbi1wcm9ncmVzcyBjb250 ZXh0czsgY29tcGxldGVkIGNvbnRleHRzIGFyZSB2YWxpZAorCQkgKiByZXN1bHRzCisJCSAqLwor CQlpZiAoY3R4LT5zdGF0ZXMgIT0gTlVMTCkKKwkJCW5mYV90cnlfYWJzb3JiX2NvbnRleHQod2lu c3RhdGUsIGN0eCk7CisJfQorfQorCisvKgorICogbmZhX2V2YWxfdmFyX21hdGNoCisgKgorICog RXZhbHVhdGUgaWYgYSBWQVIgZWxlbWVudCBtYXRjaGVzIHRoZSBjdXJyZW50IHJvdy4KKyAqCisg KiB2YXJNYXRjaGVkIGlzIGEgcHJlLWV2YWx1YXRlZCBib29sZWFuIGFycmF5IGluZGV4ZWQgYnkg dmFySWQsIGNvbXB1dGVkCisgKiBvbmNlIHBlciByb3cgYnkgZXZhbHVhdGluZyBhbGwgREVGSU5F IGV4cHJlc3Npb25zLiAgTlVMTCBtZWFucyBubyBERUZJTkUKKyAqIGNsYXVzZXMgZXhpc3QgKG9u bHkgcG9zc2libGUgZHVyaW5nIGVhcmx5IGRldmVsb3BtZW50L3Rlc3RpbmcpLgorICoKKyAqIFBl ciBJU08vSUVDIDE5MDc1LTUgRmVhdHVyZSBSMDIwLCBwYXR0ZXJuIHZhcmlhYmxlcyBub3QgbGlz dGVkIGluIERFRklORQorICogYXJlIGltcGxpY2l0bHkgVFJVRSAtLSB0aGV5IG1hdGNoIGV2ZXJ5 IHJvdy4gIFRoaXMgaXMgY2hlY2tlZCB2aWEKKyAqIHZhcklkID49IGxpc3RfbGVuZ3RoLgorICov CitzdGF0aWMgYm9vbAorbmZhX2V2YWxfdmFyX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0sCisJCQkJICAgYm9vbCAqdmFyTWF0Y2hlZCkKK3sK KwkvKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgVkFSIGVsZW1lbnRz ICovCisJQXNzZXJ0KFJQUkVsZW1Jc1ZhcihlbGVtKSk7CisKKwlpZiAodmFyTWF0Y2hlZCA9PSBO VUxMKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKGVsZW0tPnZhcklkID49IGxpc3RfbGVuZ3RoKHdp bnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QpKQorCQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gdmFy TWF0Y2hlZFtlbGVtLT52YXJJZF07Cit9CisKKy8qCisgKiBuZmFfbWF0Y2gKKyAqCisgKiBNYXRj aCBwaGFzZSAoY29udmVyZ2VuY2UpOiBldmFsdWF0ZSBWQVIgZWxlbWVudHMgYWdhaW5zdCBjdXJy ZW50IHJvdy4KKyAqIE9ubHkgdXBkYXRlcyBjb3VudHMgYW5kIHJlbW92ZXMgZGVhZCBzdGF0ZXMu IE1pbmltYWwgdHJhbnNpdGlvbnMuCisgKgorICogRm9yIFZBUiBlbGVtZW50czoKKyAqICAgLSBt YXRjaGVkOiBjb3VudCsrLCBrZWVwIHN0YXRlICh1bmxlc3MgY291bnQgPiBtYXgpCisgKiAgIC0g bm90IG1hdGNoZWQ6IHJlbW92ZSBzdGF0ZSAoZXhpdCBhbHRlcm5hdGl2ZXMgYWxyZWFkeSBleGlz dCBmcm9tCisgKiAgICAgcHJldmlvdXMgYWR2YW5jZSB3aGVuIGNvdW50ID49IG1pbiB3YXMgc2F0 aXNmaWVkKQorICoKKyAqIEZvciBWQVJzIHRoYXQgcmVhY2hlZCBtYXggY291bnQgZm9sbG93ZWQg YnkgRU5EOgorICogICAtIEFkdmFuY2UgdGhyb3VnaCB0aGUgRU5ELWVsZW1lbnQgY2hhaW4gdG8g dGhlIGFic29ycHRpb24ganVkZ21lbnQgcG9pbnQKKyAqICAgLSBPbmx5IGRldGVybWluaXN0aWMg ZXhpdHMgKGNvdW50ID49IG1heCwgbWF4ICE9IElORikgYXJlIGhhbmRsZWQKKyAqICAgLSBDaGFp bnMgdGhyb3VnaCBFTkQgZWxlbWVudHMgd2hpbGUgY291bnQgPj0gbWF4IChtdXN0LWV4aXQgcGF0 aCkKKyAqCisgKiBOb24tVkFSIGVsZW1lbnRzIChBTFQsIEVORCwgRklOKSBhcmUga2VwdCBhcy1p cyBmb3IgYWR2YW5jZSBwaGFzZS4KKyAqLworc3RhdGljIHZvaWQKK25mYV9tYXRjaChXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgYm9vbCAqdmFyTWF0Y2hlZCkK K3sKKwlSUFJQYXR0ZXJuICpwYXR0ZXJuID0gd2luc3RhdGUtPnJwUGF0dGVybjsKKwlSUFJQYXR0 ZXJuRWxlbWVudCAqZWxlbWVudHMgPSBwYXR0ZXJuLT5lbGVtZW50czsKKwlSUFJORkFTdGF0ZSAq KnByZXZQdHIgPSAmY3R4LT5zdGF0ZXM7CisJUlBSTkZBU3RhdGUgKnN0YXRlOworCVJQUk5GQVN0 YXRlICpuZXh0U3RhdGU7CisKKwkvKgorCSAqIEV2YWx1YXRlIFZBUiBlbGVtZW50cyBhZ2FpbnN0 IGN1cnJlbnQgcm93LiBGb3IgVkFScyB0aGF0IHJlYWNoIG1heAorCSAqIGNvdW50IHdpdGggRU5E IG5leHQsIGFkdmFuY2UgdGhyb3VnaCB0aGUgY2hhaW4gb2YgRU5EIGVsZW1lbnRzIGlubGluZQor CSAqIHNvIGFic29yYiBwaGFzZSBjYW4gY29tcGFyZSBzdGF0ZXMgYXQganVkZ21lbnQgcG9pbnRz LgorCSAqLworCWZvciAoc3RhdGUgPSBjdHgtPnN0YXRlczsgc3RhdGUgIT0gTlVMTDsgc3RhdGUg PSBuZXh0U3RhdGUpCisJeworCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZlbGVtZW50c1tz dGF0ZS0+ZWxlbUlkeF07CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQluZXh0U3Rh dGUgPSBzdGF0ZS0+bmV4dDsKKworCQlpZiAoUlBSRWxlbUlzVmFyKGVsZW0pKQorCQl7CisJCQli b29sCQltYXRjaGVkOworCQkJaW50CQkJZGVwdGggPSBlbGVtLT5kZXB0aDsKKwkJCWludDMyCQlj b3VudCA9IHN0YXRlLT5jb3VudHNbZGVwdGhdOworCisJCQltYXRjaGVkID0gbmZhX2V2YWxfdmFy X21hdGNoKHdpbnN0YXRlLCBlbGVtLCB2YXJNYXRjaGVkKTsKKworCQkJaWYgKG1hdGNoZWQpCisJ CQl7CisJCQkJLyogSW5jcmVtZW50IGNvdW50ICovCisJCQkJaWYgKGNvdW50IDwgUlBSX0NPVU5U X01BWCkKKwkJCQkJY291bnQrKzsKKworCQkJCS8qIE1heCBjb25zdHJhaW50IHNob3VsZCBub3Qg YmUgZXhjZWVkZWQgKi8KKwkJCQlBc3NlcnQoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYg fHwgY291bnQgPD0gZWxlbS0+bWF4KTsKKworCQkJCXN0YXRlLT5jb3VudHNbZGVwdGhdID0gY291 bnQ7CisKKwkJCQkvKgorCQkJCSAqIEZvciBWQVIgYXQgbWF4IGNvdW50IHdpdGggRU5EIG5leHQs IGFkdmFuY2UgdGhyb3VnaCBFTkQKKwkJCQkgKiBjaGFpbiB0byByZWFjaCB0aGUgYWJzb3JwdGlv biBqdWRnbWVudCBwb2ludC4gIE9ubHkKKwkJCQkgKiBkZXRlcm1pbmlzdGljIGV4aXRzIChjb3Vu dCA+PSBtYXgsIG1heCBmaW5pdGUpIGFyZSBoYW5kbGVkOworCQkJCSAqIHVuYm91bmRlZCBWQVJz IHN0YXkgZm9yIGFkdmFuY2UgcGhhc2UuCisJCQkJICoKKwkJCQkgKiBJbiBuZXN0ZWQgcGF0dGVy bnMgbGlrZSAoKEEgQil7Mn0pezN9LCBhIFZBUiByZWFjaGluZyBpdHMKKwkJCQkgKiBtYXggdHJp Z2dlcnMgYW4gZXhpdCBjYXNjYWRlOiBpbm5lciBFTkQgaW5jcmVtZW50cyBpbm5lcgorCQkJCSAq IGdyb3VwIGNvdW50LCB3aGljaCBtYXkgaXRzZWxmIHJlYWNoIG1heCwgcmVxdWlyaW5nIGFuIGV4 aXQKKwkJCQkgKiB0byB0aGUgbmV4dCBvdXRlciBFTkQuICBUaGUgbG9vcCBiZWxvdyB3YWxrcyB0 aGlzIGNoYWluLgorCQkJCSAqCisJCQkJICogQUJTT1JCQUJMRV9CUkFOQ0ggbWFya3MgZWxlbWVu dHMgaW5zaWRlIHRoZSBhYnNvcmJhYmxlCisJCQkJICogcmVnaW9uOyBBQlNPUkJBQkxFIG1hcmtz IHRoZSBvdXRlcm1vc3QganVkZ21lbnQgcG9pbnQgd2hlcmUKKwkJCQkgKiBjb3VudC1kb21pbmFu Y2UgaXMgZXZhbHVhdGVkLiAgV2UgY2hhaW4gdGhyb3VnaCBCUkFOQ0gKKwkJCQkgKiBlbGVtZW50 cyB1bnRpbCByZWFjaGluZyB0aGUgQUJTT1JCQUJMRSBwb2ludCBvciBhbiBlbGVtZW50CisJCQkJ ICogdGhhdCBjYW4gc3RpbGwgbG9vcCAoY291bnQgPCBtYXgpLgorCQkJCSAqLworCQkJCWlmIChS UFJFbGVtSXNBYnNvcmJhYmxlQnJhbmNoKGVsZW0pICYmCisJCQkJCSFSUFJFbGVtSXNBYnNvcmJh YmxlKGVsZW0pICYmCisJCQkJCWNvdW50ID49IGVsZW0tPm1heCAmJgorCQkJCQlSUFJFbGVtSXNF bmQoJmVsZW1lbnRzW2VsZW0tPm5leHRdKSkKKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5FbGVtZW50 ICplbmRFbGVtID0gJmVsZW1lbnRzW2VsZW0tPm5leHRdOworCQkJCQlpbnQJCQllbmREZXB0aCA9 IGVuZEVsZW0tPmRlcHRoOworCQkJCQlpbnQzMgkJZW5kQ291bnQgPSBzdGF0ZS0+Y291bnRzW2Vu ZERlcHRoXTsKKworCQkJCQkvKiBJbmNyZW1lbnQgZ3JvdXAgY291bnQgKi8KKwkJCQkJaWYgKGVu ZENvdW50IDwgUlBSX0NPVU5UX01BWCkKKwkJCQkJCWVuZENvdW50Kys7CisJCQkJCUFzc2VydChl bmRFbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fAorCQkJCQkJICAgZW5kQ291bnQgPD0g ZW5kRWxlbS0+bWF4KTsKKworCQkJCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CisJCQkJ CXN0YXRlLT5jb3VudHNbZW5kRGVwdGhdID0gZW5kQ291bnQ7CisKKwkJCQkJLyoKKwkJCQkJICog TGVhZiBWQVIgZXhpdGVkIChyZWFjaGVkIG1heCk6IGNsZWFyIGl0cyBvd24gY291bnQgc28KKwkJ CQkJICogdGhlIG5leHQgb2NjdXBhbnQgZW50ZXJzIHdpdGggemVybywgYXMgbmZhX2FkdmFuY2Vf dmFyCisJCQkJCSAqIGRvZXMgb24gZXhpdCAodGhpcyBpbmxpbmUgcGF0aCByZXBsYWNlcyB0aGF0 IGV4aXQpLgorCQkJCQkgKiBkZXB0aCA+IGVuZERlcHRoLCBzbyB0aGlzIGxlYXZlcyB0aGUgZ3Jv dXAgY291bnQganVzdAorCQkJCQkgKiB3cml0dGVuIGludGFjdC4KKwkJCQkJICovCisJCQkJCUFz c2VydChlbmREZXB0aCA8IGRlcHRoKTsKKwkJCQkJc3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOwor CisJCQkJCS8qCisJCQkJCSAqIENoYWluIHRocm91Z2ggRU5EIGVsZW1lbnRzIHdpdGhpbiB0aGUg YWJzb3JiYWJsZSByZWdpb24KKwkJCQkJICogKEFCU09SQkFCTEVfQlJBTkNIKSB1bnRpbCByZWFj aGluZyB0aGUganVkZ21lbnQgcG9pbnQKKwkJCQkJICogKEFCU09SQkFCTEUpLiAgQ29udGludWUg b25seSBvbiBtdXN0LWV4aXQgcGF0aCAoY291bnQKKwkJCQkJICogPj0gbWF4KSB3aXRoIEVORCBu ZXh0LgorCQkJCQkgKi8KKwkJCQkJd2hpbGUgKFJQUkVsZW1Jc0Fic29yYmFibGVCcmFuY2goZW5k RWxlbSkgJiYKKwkJCQkJCSAgICFSUFJFbGVtSXNBYnNvcmJhYmxlKGVuZEVsZW0pICYmCisJCQkJ CQkgICBlbmRDb3VudCA+PSBlbmRFbGVtLT5tYXggJiYKKwkJCQkJCSAgIFJQUkVsZW1Jc0VuZCgm ZWxlbWVudHNbZW5kRWxlbS0+bmV4dF0pKQorCQkJCQl7CisJCQkJCQlSUFJQYXR0ZXJuRWxlbWVu dCAqb3V0ZXJFbmQgPSAmZWxlbWVudHNbZW5kRWxlbS0+bmV4dF07CisJCQkJCQlpbnQJCQlvdXRl ckRlcHRoID0gb3V0ZXJFbmQtPmRlcHRoOworCQkJCQkJaW50MzIJCW91dGVyQ291bnQgPSBzdGF0 ZS0+Y291bnRzW291dGVyRGVwdGhdOworCisJCQkJCQkvKgorCQkJCQkJICogRXhpdCB0aGlzIGlu dGVybWVkaWF0ZSBncm91cDogY2xlYXIgaXRzIG93biBjb3VudAorCQkJCQkJICogKGNvdW50LWNs ZWFyIHBvbGljeSkuICBJdCBzaXRzIGJlbG93IHRoZSBhYnNvcmJhYmxlCisJCQkJCQkgKiBqdWRn bWVudCBwb2ludCwgc28gaXQgaXMgZXhjbHVkZWQgZnJvbSB0aGUKKwkJCQkJCSAqIGRvbWluYW5j ZSBjb21wYXJpc29uOyB0aGUganVkZ21lbnQgcG9pbnQgd2hlcmUgdGhlCisJCQkJCQkgKiBjaGFp biBzdG9wcyBrZWVwcyBpdHMgY291bnQuCisJCQkJCQkgKi8KKwkJCQkJCXN0YXRlLT5jb3VudHNb ZW5kRGVwdGhdID0gMDsKKworCQkJCQkJLyogSW5jcmVtZW50IG91dGVyIGdyb3VwIGNvdW50ICov CisJCQkJCQlpZiAob3V0ZXJDb3VudCA8IFJQUl9DT1VOVF9NQVgpCisJCQkJCQkJb3V0ZXJDb3Vu dCsrOworCQkJCQkJQXNzZXJ0KG91dGVyRW5kLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fAor CQkJCQkJCSAgIG91dGVyQ291bnQgPD0gb3V0ZXJFbmQtPm1heCk7CisKKwkJCQkJCXN0YXRlLT5l bGVtSWR4ID0gZW5kRWxlbS0+bmV4dDsKKwkJCQkJCXN0YXRlLT5jb3VudHNbb3V0ZXJEZXB0aF0g PSBvdXRlckNvdW50OworCisJCQkJCQkvKiBBZHZhbmNlIHRvIG5leHQgRU5EIGluIGNoYWluICov CisJCQkJCQllbmRFbGVtID0gb3V0ZXJFbmQ7CisJCQkJCQllbmREZXB0aCA9IG91dGVyRGVwdGg7 CisJCQkJCQllbmRDb3VudCA9IG91dGVyQ291bnQ7CisJCQkJCX0KKwkJCQl9CisJCQkJLyogZWxz ZTogc3RheSBhdCBWQVIgZm9yIGFkdmFuY2UgcGhhc2UgKi8KKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQkvKgorCQkJCSAqIE5vdCBtYXRjaGVkIC0gcmVtb3ZlIHN0YXRlLiBFeGl0IGFsdGVybmF0 aXZlcyB3ZXJlIGFscmVhZHkKKwkJCQkgKiBjcmVhdGVkIGJ5IGFkdmFuY2UgcGhhc2Ugd2hlbiBj b3VudCA+PSBtaW4gd2FzIHNhdGlzZmllZC4KKwkJCQkgKi8KKwkJCQkqcHJldlB0ciA9IG5leHRT dGF0ZTsKKwkJCQluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworCQkJCWNvbnRpbnVl OworCQkJfQorCQl9CisJCS8qIE5vbi1WQVIgZWxlbWVudHM6IGtlZXAgYXMtaXMgZm9yIGFkdmFu Y2UgcGhhc2UgKi8KKworCQlwcmV2UHRyID0gJnN0YXRlLT5uZXh0OworCX0KK30KKworLyoKKyAq IG5mYV9yb3V0ZV90b19lbGVtCisgKgorICogUm91dGUgc3RhdGUgdG8gbmV4dCBlbGVtZW50LiBJ ZiBWQVIsIGFkZCB0byBjdHgtPnN0YXRlcyBhbmQgcHJvY2VzcworICogc2tpcCBwYXRoIGlmIG9w dGlvbmFsLiBPdGhlcndpc2UsIGNvbnRpbnVlIGVwc2lsb24gZXhwYW5zaW9uIHZpYSByZWN1cnNp b24uCisgKi8KK3N0YXRpYyB2b2lkCituZmFfcm91dGVfdG9fZWxlbShXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkgIFJQUk5GQVN0YXRlICpzdGF0ZSwg UlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtLAorCQkJCSAgaW50NjQgY3VycmVudFBvcykKK3sK KwlpZiAoUlBSRWxlbUlzVmFyKG5leHRFbGVtKSkKKwl7CisJCVJQUk5GQVN0YXRlICpza2lwU3Rh dGUgPSBOVUxMOworCisJCS8qCisJCSAqIEVudHJ5LXNpZGUgY2hlY2sgb2YgdGhlIGNvdW50LWNs ZWFyIHBvbGljeTogYSBWQVIgaXMgYWx3YXlzIHJvdXRlZAorCQkgKiB0byB3aXRoIGEgY2xlYW4g c2xvdC4gIEVhY2ggZWxlbWVudCB6ZXJvZXMgaXRzIG93biBjb3VudCBvbiBleGl0LAorCQkgKiBz byBhIG5vbnplcm8gY291bnQgaGVyZSB3b3VsZCBiZSBhIGxlYWsgZnJvbSBhbiBlYXJsaWVyIGVs ZW1lbnQKKwkJICogKHNlZSBuZmFfYWR2YW5jZV92YXIgLyBuZmFfYWR2YW5jZV9lbmQgZXhpdCBo YW5kbGluZyBhbmQgdGhlIGlubGluZQorCQkgKiBmYXN0IHBhdGggaW4gbmZhX21hdGNoKS4KKwkJ ICovCisJCUFzc2VydChzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPT0gMCk7CisKKwkJ LyogQ3JlYXRlIHNraXAgc3RhdGUgYmVmb3JlIGFkZF91bmlxdWUsIHdoaWNoIG1heSBmcmVlIHN0 YXRlICovCisJCWlmIChSUFJFbGVtQ2FuU2tpcChuZXh0RWxlbSkpCisJCQlza2lwU3RhdGUgPSBu ZmFfc3RhdGVfY2xvbmUod2luc3RhdGUsIG5leHRFbGVtLT5uZXh0LAorCQkJCQkJCQkJCXN0YXRl LT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOworCisJCWlmIChza2lwU3RhdGUgIT0gTlVM TCAmJiBSUFJFbGVtSXNSZWx1Y3RhbnQobmV4dEVsZW0pKQorCQl7CisJCQlSUFJORkFTdGF0ZSAq c2F2ZWRNYXRjaCA9IGN0eC0+bWF0Y2hlZFN0YXRlOworCisJCQkvKgorCQkJICogUmVsdWN0YW50 IG9wdGlvbmFsIFZBUjogcHJlZmVyIHNraXBwaW5nLiAgRXhwbG9yZSB0aGUgc2tpcCBwYXRoCisJ CQkgKiBmaXJzdCBzbyBpdCBvdXRyYW5rcyB0aGUgZW50ZXIgKG1hdGNoKSBwYXRoOyBpZiBpdCBy ZWFjaGVzIEZJTgorCQkJICogdGhlIHNob3J0ZXN0IG1hdGNoIGlzIGZvdW5kIGFuZCB0aGUgZW50 ZXIgc3RhdGUgaXMgZHJvcHBlZC4KKwkJCSAqIFRoaXMgbWlycm9ycyB0aGUgcmVsdWN0YW50IGJy YW5jaCBvZiBuZmFfYWR2YW5jZV9iZWdpbiB1c2VkIGJ5CisJCQkgKiB0aGUgbGVhZGluZy1wb3Np dGlvbiBhbmQgb3B0aW9uYWwtZ3JvdXAgcGF0aHMuCisJCQkgKi8KKwkJCW5mYV9hZHZhbmNlX3N0 YXRlKHdpbnN0YXRlLCBjdHgsIHNraXBTdGF0ZSwgY3VycmVudFBvcyk7CisKKwkJCWlmIChjdHgt Pm1hdGNoZWRTdGF0ZSAhPSBzYXZlZE1hdGNoKQorCQkJeworCQkJCW5mYV9zdGF0ZV9mcmVlKHdp bnN0YXRlLCBzdGF0ZSk7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQluZmFfYWRkX3N0YXRlX3Vu aXF1ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBHcmVl ZHkgKG9yIG5vbi1za2lwcGFibGUpOiBlbnRlciBmaXJzdCwgdGhlbiBza2lwICovCisJCQluZmFf YWRkX3N0YXRlX3VuaXF1ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSk7CisKKwkJCWlmIChza2lwU3Rh dGUgIT0gTlVMTCkKKwkJCQluZmFfYWR2YW5jZV9zdGF0ZSh3aW5zdGF0ZSwgY3R4LCBza2lwU3Rh dGUsIGN1cnJlbnRQb3MpOworCQl9CisJfQorCWVsc2UKKwl7CisJCW5mYV9hZHZhbmNlX3N0YXRl KHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBjdXJyZW50UG9zKTsKKwl9Cit9CisKKy8qCisgKiBuZmFf YWR2YW5jZV9hbHQKKyAqCisgKiBIYW5kbGUgQUxUIGVsZW1lbnQ6IGV4cGFuZCBhbGwgYnJhbmNo ZXMgaW4gbGV4aWNhbCBvcmRlciB2aWEgREZTLgorICovCitzdGF0aWMgdm9pZAorbmZhX2FkdmFu Y2VfYWx0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJ CVJQUk5GQVN0YXRlICpzdGF0ZSwgUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0sCisJCQkJaW50NjQg Y3VycmVudFBvcykKK3sKKwlSUFJQYXR0ZXJuICpwYXR0ZXJuID0gd2luc3RhdGUtPnJwUGF0dGVy bjsKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbWVudHMgPSBwYXR0ZXJuLT5lbGVtZW50czsKKwlS UFJFbGVtSWR4CWFsdElkeCA9IGVsZW0tPm5leHQ7CisKKwl3aGlsZSAoYWx0SWR4ID49IDApCisJ eworCQlSUFJQYXR0ZXJuRWxlbWVudCAqYWx0RWxlbTsKKwkJUlBSTkZBU3RhdGUgKm5ld1N0YXRl OworCisJCS8qIEJyYW5jaCBqdW1wL25leHQgbGlua3MgYXJlIGFsd2F5cyAtMSBvciBhIHZhbGlk IGluZGV4ICovCisJCUFzc2VydChhbHRJZHggPCBwYXR0ZXJuLT5udW1FbGVtZW50cyk7CisJCWFs dEVsZW0gPSAmZWxlbWVudHNbYWx0SWR4XTsKKworCQkvKgorCQkgKiBTdG9wIGlmIGVsZW1lbnQg aXMgb3V0c2lkZSBBTFQgc2NvcGUgKG5vdCBhIGJyYW5jaCkuICBUaGUgY2hlY2sKKwkJICogZmly ZXMgd2hlbiB0aGUgbGFzdCBicmFuY2ggaXMgYSBxdWFudGlmaWVkIGdyb3VwIHdob3NlIEJFR0lO Lmp1bXAKKwkJICogKHNldCBieSBmaWxsUlBSUGF0dGVybkdyb3VwKSBpcyBwcmVzZXJ2ZWQgLS0g bm90IG92ZXJyaWRkZW4gYnkKKwkJICogZmlsbFJQUlBhdHRlcm5BbHQsIHdoaWNoIG9ubHkgbGlu a3Mgbm9uLWxhc3QgYnJhbmNoIGhlYWRzIC0tIGFuZAorCQkgKiBsZWFkcyB0byBhIHBvc3QtQUxU IGVsZW1lbnQuICBPdGhlciBicmFuY2ggc2hhcGVzIHRlcm1pbmF0ZSB0aGUKKwkJICogd2FsayBl YXJsaWVyIHZpYSBhbHRJZHggPSBSUFJfRUxFTUlEWF9JTlZBTElELiAgVXNlIDw9LCBub3QgPDog dGhlCisJCSAqIHBvc3QtQUxUIGVsZW1lbnQgbWF5IHNpdCBhdCB0aGUgc2FtZSBkZXB0aCBhcyB0 aGUgQUxUIHdoZW4gdGhlIEFMVAorCQkgKiBoYXMgYSBzaWJsaW5nIGF0IHRoYXQgbGV2ZWwuCisJ CSAqLworCQlpZiAoYWx0RWxlbS0+ZGVwdGggPD0gZWxlbS0+ZGVwdGgpCisJCQlicmVhazsKKwor CQkvKiBDcmVhdGUgaW5kZXBlbmRlbnQgc3RhdGUgZm9yIGVhY2ggYnJhbmNoICovCisJCW5ld1N0 YXRlID0gbmZhX3N0YXRlX2Nsb25lKHdpbnN0YXRlLCBhbHRJZHgsCisJCQkJCQkJCSAgIHN0YXRl LT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOworCisJCS8qIFJlY3Vyc2l2ZWx5IHByb2Nl c3MgdGhpcyBicmFuY2ggYmVmb3JlIG5leHQgKi8KKwkJbmZhX2FkdmFuY2Vfc3RhdGUod2luc3Rh dGUsIGN0eCwgbmV3U3RhdGUsIGN1cnJlbnRQb3MpOworCQlhbHRJZHggPSBhbHRFbGVtLT5qdW1w OworCX0KKworCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBzdGF0ZSk7Cit9CisKKy8qCisgKiBu ZmFfYWR2YW5jZV9iZWdpbgorICoKKyAqIEhhbmRsZSBCRUdJTiBlbGVtZW50OiBncm91cCBlbnRy eSBsb2dpYy4KKyAqIEJFR0lOIGlzIG9ubHkgdmlzaXRlZCBhdCBpbml0aWFsIGdyb3VwIGVudHJ5 OyBsb29wLWJhY2sgZnJvbSBFTkQgZ29lcworICogZGlyZWN0bHkgdG8gZmlyc3QgY2hpbGQsIGJ5 cGFzc2luZyBCRUdJTi4gIFBlciB0aGUgY291bnQtY2xlYXIgcG9saWN5IHRoZQorICogZ3JvdXAn cyBvd24gY291bnQgc2xvdCBpcyB0aGVyZWZvcmUgYWxyZWFkeSB6ZXJvIG9uIGVudHJ5IChhc3Nl cnRlZCBiZWxvdykuCisgKiBJZiBtaW49MCwgY3JlYXRlcyBhIHNraXAgcGF0aCBwYXN0IHRoZSBn cm91cC4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZhbmNlX2JlZ2luKFdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRl LCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkgIGludDY0IGN1cnJlbnRQb3MpCit7CisJ UlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVybkVs ZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVudHM7CisJUlBSTkZBU3RhdGUgKnNraXBT dGF0ZSA9IE5VTEw7CisKKwkvKgorCSAqIEVudHJ5LXNpZGUgY2hlY2sgb2YgdGhlIGNvdW50LWNs ZWFyIHBvbGljeTogdGhlIGdyb3VwJ3Mgb3duIGNvdW50IHNsb3QKKwkgKiBpcyBhbHJlYWR5IHpl cm8gaGVyZS4gIEJFR0lOIGlzIG9ubHkgdmlzaXRlZCBhdCBpbml0aWFsIGdyb3VwIGVudHJ5LAor CSAqIGFuZCB0aGUgcHJldmlvdXMgb2NjdXBhbnQgb2YgdGhpcyBkZXB0aCBzbG90IGNsZWFyZWQg aXQgb24gZXhpdC4KKwkgKi8KKwlBc3NlcnQoc3RhdGUtPmNvdW50c1tlbGVtLT5kZXB0aF0gPT0g MCk7CisKKwkvKiBPcHRpb25hbCBncm91cDogY3JlYXRlIHNraXAgcGF0aCAoYnV0IGRvbid0IHJv dXRlIHlldCkgKi8KKwlpZiAoZWxlbS0+bWluID09IDApCisJeworCQlza2lwU3RhdGUgPSBuZmFf c3RhdGVfY2xvbmUod2luc3RhdGUsIGVsZW0tPmp1bXAsCisJCQkJCQkJCQlzdGF0ZS0+Y291bnRz LCBzdGF0ZS0+aXNBYnNvcmJhYmxlKTsKKwl9CisKKwlpZiAoc2tpcFN0YXRlICE9IE5VTEwgJiYg UlBSRWxlbUlzUmVsdWN0YW50KGVsZW0pKQorCXsKKwkJUlBSTkZBU3RhdGUgKnNhdmVkTWF0Y2gg PSBjdHgtPm1hdGNoZWRTdGF0ZTsKKworCQkvKiBSZWx1Y3RhbnQ6IHNraXAgZmlyc3QgKHByZWZl ciBmZXdlciBpdGVyYXRpb25zKSwgZW50ZXIgc2Vjb25kICovCisJCW5mYV9yb3V0ZV90b19lbGVt KHdpbnN0YXRlLCBjdHgsIHNraXBTdGF0ZSwKKwkJCQkJCSAgJmVsZW1lbnRzW2VsZW0tPmp1bXBd LCBjdXJyZW50UG9zKTsKKworCQkvKgorCQkgKiBJZiBza2lwIHBhdGggcmVhY2hlZCBGSU4sIHNo b3J0ZXN0IG1hdGNoIGlzIGZvdW5kLiBTa2lwIGdyb3VwIGVudHJ5CisJCSAqIHRvIHByZXZlbnQg bG9uZ2VyIG1hdGNoZXMuCisJCSAqLworCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gc2F2ZWRN YXRjaCkKKwkJeworCQkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKKwkJCXJldHVy bjsKKwkJfQorCisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKKwkJbmZhX3JvdXRlX3Rv X2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsCisJCQkJCQkgICZlbGVtZW50c1tzdGF0ZS0+ZWxl bUlkeF0sIGN1cnJlbnRQb3MpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBHcmVlZHktb3It bm9uLW51bGxhYmxlOiByb3V0ZSB0byB0aGUgZmlyc3QgY2hpbGQuICBGb3Igb3B0aW9uYWwKKwkJ ICogZ3JvdXBzIChza2lwU3RhdGUgIT0gTlVMTCwgZ3JlZWR5IG1pbj0wKSBhZGRpdGlvbmFsbHkg Y3JlYXRlIHRoZQorCQkgKiBza2lwIHBhdGg7IGZvciBub24tbnVsbGFibGUgZ3JvdXBzIChza2lw U3RhdGUgPT0gTlVMTCwgbWluPjApIHRoZQorCQkgKiBza2lwLXBhdGggYWN0aW9uIGlzIHN1cHBy ZXNzZWQgYnkgdGhlIGd1YXJkIGJlbG93LgorCQkgKi8KKwkJc3RhdGUtPmVsZW1JZHggPSBlbGVt LT5uZXh0OworCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwKKwkJCQkJ CSAgJmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XSwgY3VycmVudFBvcyk7CisKKwkJaWYgKHNraXBT dGF0ZSAhPSBOVUxMKQorCQl7CisJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBz a2lwU3RhdGUsCisJCQkJCQkJICAmZWxlbWVudHNbZWxlbS0+anVtcF0sIGN1cnJlbnRQb3MpOwor CQl9CisJfQorfQorCisvKgorICogbmZhX2FkdmFuY2VfZW5kCisgKgorICogSGFuZGxlIEVORCBl bGVtZW50OiBncm91cCByZXBldGl0aW9uIGxvZ2ljLgorICogRGVjaWRlcyB3aGV0aGVyIHRvIGxv b3AgYmFjayBvciBleGl0IGJhc2VkIG9uIGNvdW50IHZzIG1pbi9tYXguCisgKi8KK3N0YXRpYyB2 b2lkCituZmFfYWR2YW5jZV9lbmQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsCisJCQkJUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxl bSwKKwkJCQlpbnQ2NCBjdXJyZW50UG9zKQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5z dGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtZW50cyA9IHBhdHRlcm4t PmVsZW1lbnRzOworCWludAkJCWRlcHRoID0gZWxlbS0+ZGVwdGg7CisJaW50MzIJCWNvdW50ID0g c3RhdGUtPmNvdW50c1tkZXB0aF07CisKKwlpZiAoY291bnQgPCBlbGVtLT5taW4pCisJeworCQlS UFJQYXR0ZXJuRWxlbWVudCAqanVtcEVsZW07CisJCVJQUk5GQVN0YXRlICpmZlN0YXRlID0gTlVM TDsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtID0gTlVMTDsKKworCQkvKi0tLS0tLS0t LS0KKwkJICogVHdvIHBhdGhzIGFyZSBleHBsb3JlZCB3aGVuIHRoZSBncm91cCBib2R5IGlzIG51 bGxhYmxlCisJCSAqIChSUFJfRUxFTV9FTVBUWV9MT09QKToKKwkJICoKKwkJICogMS4gTG9vcC1i YWNrIHBhdGg6IGF0dGVtcHQgcmVhbCBtYXRjaGVzIGluIHRoZSBuZXh0IGl0ZXJhdGlvbgorCQkg KiAgICAoc3RhdGUsIG1vZGlmaWVkIGJlbG93KS4KKwkJICoKKwkJICogMi4gRmFzdC1mb3J3YXJk IHBhdGg6IHNraXAgZGlyZWN0bHkgdG8gYWZ0ZXIgdGhlIGdyb3VwLCB0cmVhdGluZworCQkgKiAg ICBhbGwgcmVtYWluaW5nIHJlcXVpcmVkIGl0ZXJhdGlvbnMgYXMgZW1wdHkgbWF0Y2hlcyAoZmZT dGF0ZSkuCisJCSAqICAgIFJvdXRlIHRvIGVsZW0tPm5leHQgKG5vdCBuZmFfYWR2YW5jZV9lbmQp IHRvIGF2b2lkIGNyZWF0aW5nCisJCSAqICAgIGNvbXBldGluZyBncmVlZHkvcmVsdWN0YW50IGxv b3Agc3RhdGVzLgorCQkgKgorCQkgKiBHcmVlZHkgcHJlZmVycyB0aGUgbG9vcC1iYWNrIGZpcnN0 IChtb3JlIGl0ZXJhdGlvbnMpOyByZWx1Y3RhbnQKKwkJICogcHJlZmVycyB0aGUgZmFzdC1mb3J3 YXJkIChleGl0KSBmaXJzdCBhbmQsIGlmIGl0IHJlYWNoZXMgRklOLCBkcm9wcworCQkgKiB0aGUg bG9vcC1iYWNrIHNvIGEgbG9uZ2VyIG1hdGNoIGNhbm5vdCByZXBsYWNlIHRoZSBzaG9ydGVzdCBv bmUgLS0KKwkJICogbWlycm9yaW5nIHRoZSBtaW48PWNvdW50PG1heCBicmFuY2ggYmVsb3cuICBU aGUgZmZTdGF0ZSBzbmFwc2hvdCBpcworCQkgKiB0YWtlbiBCRUZPUkUgbW9kaWZ5aW5nIHN0YXRl LCBzaW5jZSBib3RoIHBhdGhzIGRpdmVyZ2UgZnJvbSBoZXJlLgorCQkgKi0tLS0tLS0tLS0KKwkJ ICovCisJCWlmIChSUFJFbGVtQ2FuRW1wdHlMb29wKGVsZW0pKQorCQl7CisJCQlmZlN0YXRlID0g bmZhX3N0YXRlX2Nsb25lKHdpbnN0YXRlLCBzdGF0ZS0+ZWxlbUlkeCwKKwkJCQkJCQkJCSAgc3Rh dGUtPmNvdW50cywgc3RhdGUtPmlzQWJzb3JiYWJsZSk7CisKKwkJCS8qIEV4aXQgdGhlIGdyb3Vw OiBjbGVhciBpdHMgb3duIGNvdW50IChjb3VudC1jbGVhciBwb2xpY3kpICovCisJCQlmZlN0YXRl LT5jb3VudHNbZGVwdGhdID0gMDsKKwkJCWZmU3RhdGUtPmVsZW1JZHggPSBlbGVtLT5uZXh0Owor CQkJbmV4dEVsZW0gPSAmZWxlbWVudHNbZmZTdGF0ZS0+ZWxlbUlkeF07CisKKwkJCS8qCisJCQkg KiBVbmxpa2UgdGhlIG11c3QtZXhpdCBwYXRoLCBubyBpc0Fic29yYmFibGUgdXBkYXRlIGlzIG5l ZWRlZDoKKwkJCSAqIHRoZSBmYXN0LWZvcndhcmQgcGF0aCBydW5zIG9ubHkgZm9yIEVNUFRZX0xP T1AgKG51bGxhYmxlKQorCQkJICogZ3JvdXBzLCB3aGljaCBhcmUgbmV2ZXIgaW5zaWRlIGFuIGFi c29yYmFibGUgcmVnaW9uLCBzbworCQkJICogaXNBYnNvcmJhYmxlIGlzIGFscmVhZHkgZmFsc2Ug aGVyZS4KKwkJCSAqLworCisJCQkvKiBFTkQtPkVORDogaW5jcmVtZW50IG91dGVyIEVORCdzIGNv dW50ICovCisJCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJgorCQkJCWZmU3RhdGUtPmNv dW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCQlmZlN0YXRlLT5jb3Vu dHNbbmV4dEVsZW0tPmRlcHRoXSsrOworCQl9CisKKwkJLyogUHJlcGFyZSB0aGUgbG9vcC1iYWNr IHN0YXRlICovCisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+anVtcDsKKwkJanVtcEVsZW0gPSAm ZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCWlmIChmZlN0YXRlICE9IE5VTEwgJiYgUlBS RWxlbUlzUmVsdWN0YW50KGVsZW0pKQorCQl7CisJCQlSUFJORkFTdGF0ZSAqc2F2ZWRNYXRjaCA9 IGN0eC0+bWF0Y2hlZFN0YXRlOworCisJCQkvKiBSZWx1Y3RhbnQ6IHRha2UgdGhlIGZhc3QtZm9y d2FyZCAoZXhpdCkgZmlyc3QgKi8KKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgs IGZmU3RhdGUsIG5leHRFbGVtLAorCQkJCQkJCSAgY3VycmVudFBvcyk7CisKKwkJCS8qCisJCQkg KiBJZiB0aGUgZXhpdCByZWFjaGVkIEZJTiwgdGhlIHNob3J0ZXN0IG1hdGNoIGlzIGZvdW5kLiAg U2tpcCB0aGUKKwkJCSAqIGxvb3AtYmFjayB0byBwcmV2ZW50IGxvbmdlciBtYXRjaGVzIGZyb20g cmVwbGFjaW5nIGl0LgorCQkJICovCisJCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gc2F2ZWRN YXRjaCkKKwkJCXsKKwkJCQluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworCQkJCXJl dHVybjsKKwkJCX0KKworCQkJLyogTG9vcC1iYWNrIHNlY29uZCAqLworCQkJbmZhX3JvdXRlX3Rv X2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIGp1bXBFbGVtLAorCQkJCQkJCSAgY3VycmVudFBv cyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBHcmVlZHkgKG9yIG5vbi1udWxsYWJsZSk6IGxv b3AtYmFjayBmaXJzdCwgZmFzdC1mb3J3YXJkIHNlY29uZCAqLworCQkJbmZhX3JvdXRlX3RvX2Vs ZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIGp1bXBFbGVtLAorCQkJCQkJCSAgY3VycmVudFBvcyk7 CisJCQlpZiAoZmZTdGF0ZSAhPSBOVUxMKQorCQkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRl LCBjdHgsIGZmU3RhdGUsIG5leHRFbGVtLAorCQkJCQkJCQkgIGN1cnJlbnRQb3MpOworCQl9CisJ fQorCWVsc2UgaWYgKGVsZW0tPm1heCAhPSBSUFJfUVVBTlRJVFlfSU5GICYmIGNvdW50ID49IGVs ZW0tPm1heCkKKwl7CisJCS8qIE11c3QgZXhpdDogcmVhY2hlZCBtYXggaXRlcmF0aW9ucy4gKi8K KwkJUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtOworCisJCS8qIEV4aXQ6IGNsZWFyIHRoZSBn cm91cCdzIG93biBjb3VudCAoY291bnQtY2xlYXIgcG9saWN5KSAqLworCQlzdGF0ZS0+Y291bnRz W2RlcHRoXSA9IDA7CisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKKwkJbmV4dEVsZW0g PSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCS8qIFVwZGF0ZSBpc0Fic29yYmFibGUg Zm9yIHRhcmdldCBlbGVtZW50IChtb25vdG9uaWMpICovCisJCXN0YXRlLT5pc0Fic29yYmFibGUg PSBzdGF0ZS0+aXNBYnNvcmJhYmxlICYmCisJCQlSUFJFbGVtSXNBYnNvcmJhYmxlQnJhbmNoKG5l eHRFbGVtKTsKKworCQkvKiBFTkQtPkVORDogaW5jcmVtZW50IG91dGVyIEVORCdzIGNvdW50ICov CisJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pICYmIHN0YXRlLT5jb3VudHNbbmV4dEVsZW0t PmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQlzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0 aF0rKzsKKworCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwgbmV4dEVs ZW0sIGN1cnJlbnRQb3MpOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBCZXR3ZWVuIG1pbiBh bmQgbWF4ICh3aXRoIGF0IGxlYXN0IG9uZSBpdGVyYXRpb24pIC0gY2FuIGV4aXQgb3IKKwkJICog bG9vcC4gR3JlZWR5OiBsb29wIGZpcnN0IChwcmVmZXIgbW9yZSBpdGVyYXRpb25zKS4gUmVsdWN0 YW50OiBleGl0CisJCSAqIGZpcnN0IChwcmVmZXIgZmV3ZXIgaXRlcmF0aW9ucykuCisJCSAqLwor CQlSUFJORkFTdGF0ZSAqZXhpdFN0YXRlOworCQlSUFJQYXR0ZXJuRWxlbWVudCAqanVtcEVsZW07 CisJCVJQUlBhdHRlcm5FbGVtZW50ICpuZXh0RWxlbTsKKworCQkvKgorCQkgKiBDcmVhdGUgZXhp dCBzdGF0ZSBmaXJzdCAobmVlZCBvcmlnaW5hbCBjb3VudHMgYmVmb3JlIG1vZGlmeWluZworCQkg KiBzdGF0ZSkKKwkJICovCisJCWV4aXRTdGF0ZSA9IG5mYV9zdGF0ZV9jbG9uZSh3aW5zdGF0ZSwg ZWxlbS0+bmV4dCwKKwkJCQkJCQkJCXN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUp OworCQkvKiBFeGl0IGJyYW5jaDogY2xlYXIgdGhlIGdyb3VwJ3Mgb3duIGNvdW50IChjb3VudC1j bGVhciBwb2xpY3kpICovCisJCWV4aXRTdGF0ZS0+Y291bnRzW2RlcHRoXSA9IDA7CisJCW5leHRF bGVtID0gJmVsZW1lbnRzW2V4aXRTdGF0ZS0+ZWxlbUlkeF07CisKKwkJLyogRU5ELT5FTkQ6IGlu Y3JlbWVudCBvdXRlciBFTkQncyBjb3VudCAqLworCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVt KSAmJiBleGl0U3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkK KwkJCWV4aXRTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKKworCQkvKiBQcmVwYXJl IGxvb3Agc3RhdGUgKi8KKwkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5qdW1wOworCQlqdW1wRWxl bSA9ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlkeF07CisKKwkJaWYgKFJQUkVsZW1Jc1JlbHVjdGFu dChlbGVtKSkKKwkJeworCQkJUlBSTkZBU3RhdGUgKnNhdmVkTWF0Y2ggPSBjdHgtPm1hdGNoZWRT dGF0ZTsKKworCQkJLyogRXhpdCBmaXJzdCAocHJlZmVycmVkIGZvciByZWx1Y3RhbnQpICovCisJ CQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBleGl0U3RhdGUsIG5leHRFbGVtLAor CQkJCQkJCSAgY3VycmVudFBvcyk7CisKKwkJCS8qCisJCQkgKiBJZiBleGl0IHBhdGggcmVhY2hl ZCBGSU4sIHNob3J0ZXN0IG1hdGNoIGlzIGZvdW5kLiBTa2lwIGxvb3AgdG8KKwkJCSAqIHByZXZl bnQgbG9uZ2VyIG1hdGNoZXMgZnJvbSByZXBsYWNpbmcgaXQuCisJCQkgKi8KKwkJCWlmIChjdHgt Pm1hdGNoZWRTdGF0ZSAhPSBzYXZlZE1hdGNoKQorCQkJeworCQkJCW5mYV9zdGF0ZV9mcmVlKHdp bnN0YXRlLCBzdGF0ZSk7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQkvKiBMb29wIHNlY29uZCAq LworCQkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIGp1bXBFbGVtLAor CQkJCQkJCSAgY3VycmVudFBvcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBMb29wIGZpcnN0 IChwcmVmZXJyZWQgZm9yIGdyZWVkeSkgKi8KKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRl LCBjdHgsIHN0YXRlLCBqdW1wRWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3MpOworCQkJLyogRXhp dCBzZWNvbmQgKi8KKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIGV4aXRTdGF0 ZSwgbmV4dEVsZW0sCisJCQkJCQkJICBjdXJyZW50UG9zKTsKKwkJfQorCX0KK30KKworLyoKKyAq IG5mYV9hZHZhbmNlX3ZhcgorICoKKyAqIEhhbmRsZSBWQVIgZWxlbWVudDogbG9vcC9leGl0IHRy YW5zaXRpb25zLgorICogQWZ0ZXIgbWF0Y2ggcGhhc2UsIGFsbCBWQVIgc3RhdGVzIGhhdmUgbWF0 Y2hlZCAtIGRlY2lkZSBuZXh0IGFjdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZhbmNl X3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQlS UFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCWludDY0IGN1 cnJlbnRQb3MpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47 CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVudHM7CisJaW50 CQkJZGVwdGggPSBlbGVtLT5kZXB0aDsKKwlpbnQzMgkJY291bnQgPSBzdGF0ZS0+Y291bnRzW2Rl cHRoXTsKKwlib29sCQljYW5Mb29wID0gKGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8 IGNvdW50IDwgZWxlbS0+bWF4KTsKKwlib29sCQljYW5FeGl0ID0gKGNvdW50ID49IGVsZW0tPm1p bik7CisKKwkvKiBtaW4gPD0gbWF4LCBzbyAhY2FuRXhpdCAoY291bnQgPCBtaW4pIGltcGxpZXMg Y2FuTG9vcCAoY291bnQgPCBtYXgpICovCisJQXNzZXJ0KGNhbkxvb3AgfHwgY2FuRXhpdCk7CisK KwkvKiBlbGVtLT5uZXh0IG11c3QgYmUgYSB2YWxpZCBpbmRleCBmb3IgYW55IHJlYWNoYWJsZSBW QVIgKi8KKwlBc3NlcnQoZWxlbS0+bmV4dCA+PSAwICYmIGVsZW0tPm5leHQgPCBwYXR0ZXJuLT5u dW1FbGVtZW50cyk7CisKKwlpZiAoY2FuTG9vcCAmJiBjYW5FeGl0KQorCXsKKwkJLyoKKwkJICog Qm90aCBsb29wIGFuZCBleGl0IHBvc3NpYmxlLiBHcmVlZHk6IGxvb3AgZmlyc3QgKHByZWZlciBs b25nZXIKKwkJICogbWF0Y2gpLiBSZWx1Y3RhbnQ6IGV4aXQgZmlyc3QgKHByZWZlciBzaG9ydGVy IG1hdGNoKS4KKwkJICovCisJCVJQUk5GQVN0YXRlICpjbG9uZVN0YXRlOworCQlSUFJQYXR0ZXJu RWxlbWVudCAqbmV4dEVsZW07CisJCWJvb2wJCXJlbHVjdGFudCA9IFJQUkVsZW1Jc1JlbHVjdGFu dChlbGVtKTsKKworCQkvKgorCQkgKiBDbG9uZSBzdGF0ZSBmb3IgdGhlIGZpcnN0LXByaW9yaXR5 IHBhdGguIEZvciBncmVlZHksIGNsb25lIGlzIHRoZQorCQkgKiBsb29wIHN0YXRlOyBmb3IgcmVs dWN0YW50LCBjbG9uZSBpcyB0aGUgZXhpdCBzdGF0ZS4KKwkJICovCisJCWlmIChyZWx1Y3RhbnQp CisJCXsKKwkJCVJQUk5GQVN0YXRlICpzYXZlZE1hdGNoID0gY3R4LT5tYXRjaGVkU3RhdGU7CisK KwkJCS8qIENsb25lIGZvciBleGl0LCBvcmlnaW5hbCBzdGF5cyBmb3IgbG9vcCAqLworCQkJY2xv bmVTdGF0ZSA9IG5mYV9zdGF0ZV9jbG9uZSh3aW5zdGF0ZSwgZWxlbS0+bmV4dCwKKwkJCQkJCQkJ CQkgc3RhdGUtPmNvdW50cywgc3RhdGUtPmlzQWJzb3JiYWJsZSk7CisJCQkvKiBFeGl0OiBjbGVh ciB0aGUgVkFSJ3Mgb3duIGNvdW50IChjb3VudC1jbGVhciBwb2xpY3kpICovCisJCQljbG9uZVN0 YXRlLT5jb3VudHNbZGVwdGhdID0gMDsKKwkJCW5leHRFbGVtID0gJmVsZW1lbnRzW2Nsb25lU3Rh dGUtPmVsZW1JZHhdOworCisJCQkvKiBXaGVuIGV4aXRpbmcgZGlyZWN0bHkgdG8gYW4gb3V0ZXIg RU5ELCBpbmNyZW1lbnQgaXRzIGNvdW50ICovCisJCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVt KSkKKwkJCXsKKwkJCQlpZiAoY2xvbmVTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBS UFJfQ09VTlRfTUFYKQorCQkJCQljbG9uZVN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSsr OworCQkJfQorCisJCQkvKiBFeGl0IGZpcnN0IChwcmVmZXJyZWQgZm9yIHJlbHVjdGFudCkgKi8K KwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIGNsb25lU3RhdGUsIG5leHRFbGVt LAorCQkJCQkJCSAgY3VycmVudFBvcyk7CisKKwkJCS8qCisJCQkgKiBJZiBleGl0IHBhdGggcmVh Y2hlZCBGSU4sIHRoZSBzaG9ydGVzdCBtYXRjaCBpcyBmb3VuZC4gU2tpcAorCQkJICogbG9vcCBz dGF0ZSB0byBwcmV2ZW50IGxvbmdlciBtYXRjaGVzIGZyb20gcmVwbGFjaW5nIGl0LgorCQkJICov CisJCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gc2F2ZWRNYXRjaCkKKwkJCXsKKwkJCQluZmFf c3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJLyog TG9vcCBzZWNvbmQgKi8KKwkJCW5mYV9hZGRfc3RhdGVfdW5pcXVlKHdpbnN0YXRlLCBjdHgsIHN0 YXRlKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIENsb25lIGZvciBsb29wLCBvcmlnaW5hbCB1 c2VkIGZvciBleGl0ICovCisJCQljbG9uZVN0YXRlID0gbmZhX3N0YXRlX2Nsb25lKHdpbnN0YXRl LCBzdGF0ZS0+ZWxlbUlkeCwKKwkJCQkJCQkJCQkgc3RhdGUtPmNvdW50cywgc3RhdGUtPmlzQWJz b3JiYWJsZSk7CisKKwkJCS8qIExvb3AgZmlyc3QgKHByZWZlcnJlZCBmb3IgZ3JlZWR5KSAqLwor CQkJbmZhX2FkZF9zdGF0ZV91bmlxdWUod2luc3RhdGUsIGN0eCwgY2xvbmVTdGF0ZSk7CisKKwkJ CS8qIEV4aXQgc2Vjb25kOiBjbGVhciB0aGUgVkFSJ3Mgb3duIGNvdW50IChjb3VudC1jbGVhciBw b2xpY3kpICovCisJCQlzdGF0ZS0+Y291bnRzW2RlcHRoXSA9IDA7CisJCQlzdGF0ZS0+ZWxlbUlk eCA9IGVsZW0tPm5leHQ7CisJCQluZXh0RWxlbSA9ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlkeF07 CisKKwkJCS8qCisJCQkgKiBVcGRhdGUgaXNBYnNvcmJhYmxlIGZvciB0YXJnZXQgZWxlbWVudCAo bW9ub3RvbmljOiBBTkQKKwkJCSAqIHByZXNlcnZlcyBmYWxzZSkKKwkJCSAqLworCQkJc3RhdGUt PmlzQWJzb3JiYWJsZSA9IHN0YXRlLT5pc0Fic29yYmFibGUgJiYKKwkJCQlSUFJFbGVtSXNBYnNv cmJhYmxlQnJhbmNoKG5leHRFbGVtKTsKKworCQkJLyoKKwkJCSAqIFdoZW4gZXhpdGluZyBkaXJl Y3RseSB0byBhbiBvdXRlciBFTkQsIGluY3JlbWVudCBpdHMgaXRlcmF0aW9uCisJCQkgKiBjb3Vu dC4gIFNpbXBsZSBWQVJzIChtaW49bWF4PTEpIGhhbmRsZSB0aGlzIHZpYSBpbmxpbmUgYWR2YW5j ZQorCQkJICogaW4gbmZhX21hdGNoLCBidXQgcXVhbnRpZmllZCBWQVJzIGJ5cGFzcyB0aGF0IHBh dGguCisJCQkgKi8KKwkJCWlmIChSUFJFbGVtSXNFbmQobmV4dEVsZW0pKQorCQkJeworCQkJCWlm IChzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfTUFYKQorCQkJCQlz dGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKKwkJCX0KKworCQkJbmZhX3JvdXRlX3Rv X2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIG5leHRFbGVtLAorCQkJCQkJCSAgY3VycmVudFBv cyk7CisJCX0KKwl9CisJZWxzZSBpZiAoY2FuTG9vcCkKKwl7CisJCS8qIExvb3Agb25seToga2Vl cCBzdGF0ZSBhcy1pcyAqLworCQluZmFfYWRkX3N0YXRlX3VuaXF1ZSh3aW5zdGF0ZSwgY3R4LCBz dGF0ZSk7CisJfQorCWVsc2UKKwl7CisJCS8qIEV4aXQgb25seTogYWR2YW5jZSB0byBuZXh0IGVs ZW1lbnQgKGNhbkV4aXQgbmVjZXNzYXJpbHkgdHJ1ZSkgKi8KKwkJUlBSUGF0dGVybkVsZW1lbnQg Km5leHRFbGVtOworCisJCUFzc2VydChjYW5FeGl0KTsKKwkJLyogRXhpdDogY2xlYXIgdGhlIFZB UidzIG93biBjb3VudCAoY291bnQtY2xlYXIgcG9saWN5KSAqLworCQlzdGF0ZS0+Y291bnRzW2Rl cHRoXSA9IDA7CisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKKwkJbmV4dEVsZW0gPSAm ZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCS8qCisJCSAqIFVwZGF0ZSBpc0Fic29yYmFi bGUgZm9yIHRhcmdldCBlbGVtZW50IChtb25vdG9uaWM6IEFORCBwcmVzZXJ2ZXMKKwkJICogZmFs c2UpCisJCSAqLworCQlzdGF0ZS0+aXNBYnNvcmJhYmxlID0gc3RhdGUtPmlzQWJzb3JiYWJsZSAm JgorCQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0RWxlbSk7CisKKwkJLyogU2VlIGNv bW1lbnQgYWJvdmU6IGluY3JlbWVudCBvdXRlciBFTkQgY291bnQgZm9yIHF1YW50aWZpZWQgVkFS cyAqLworCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSkKKwkJeworCQkJaWYgKHN0YXRlLT5j b3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQkJc3RhdGUtPmNvdW50 c1tuZXh0RWxlbS0+ZGVwdGhdKys7CisJCX0KKworCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0 ZSwgY3R4LCBzdGF0ZSwgbmV4dEVsZW0sIGN1cnJlbnRQb3MpOworCX0KK30KKworLyoKKyAqIG5m YV9hZHZhbmNlX3N0YXRlCisgKgorICogUmVjdXJzaXZlbHkgcHJvY2VzcyBhIHNpbmdsZSBzdGF0 ZSB0aHJvdWdoIGVwc2lsb24gdHJhbnNpdGlvbnMuCisgKiBERlMgdHJhdmVyc2FsIGVuc3VyZXMg c3RhdGVzIGFyZSBhZGRlZCB0byBjdHgtPnN0YXRlcyBpbiBsZXhpY2FsIG9yZGVyLgorICovCitz dGF0aWMgdm9pZAorbmZhX2FkdmFuY2Vfc3RhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBS UFJORkFDb250ZXh0ICpjdHgsCisJCQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IGN1cnJl bnRQb3MpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJ UlBSUGF0dGVybkVsZW1lbnQgKmVsZW07CisKKwlBc3NlcnQoc3RhdGUtPmVsZW1JZHggPj0gMCAm JiBzdGF0ZS0+ZWxlbUlkeCA8IHBhdHRlcm4tPm51bUVsZW1lbnRzKTsKKworCS8qIFByb3RlY3Qg YWdhaW5zdCBzdGFjayBvdmVyZmxvdyBmb3IgZGVlcGx5IGNvbXBsZXggcGF0dGVybnMgKi8KKwlj aGVja19zdGFja19kZXB0aCgpOworCisJLyogQ3ljbGUgZGV0ZWN0aW9uOiBpZiB0aGlzIGVsZW1J ZHggd2FzIGFscmVhZHkgdmlzaXRlZCBpbiB0aGlzIERGUywgYmFpbCAqLworCWlmICh3aW5zdGF0 ZS0+bmZhVmlzaXRlZEVsZW1zW1dPUkROVU0oc3RhdGUtPmVsZW1JZHgpXSAmCisJCSgoYml0bWFw d29yZCkgMSA8PCBCSVROVU0oc3RhdGUtPmVsZW1JZHgpKSkKKwl7CisJCW5mYV9zdGF0ZV9mcmVl KHdpbnN0YXRlLCBzdGF0ZSk7CisJCXJldHVybjsKKwl9CisKKwllbGVtID0gJnBhdHRlcm4tPmVs ZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCS8qCisJICogTWFyayBlcHNpbG9uIGVsZW1lbnRz IChFTkQsIEFMVCwgQkVHSU4sIEZJTikgaW4gdmlzaXRlZCB0byBwcmV2ZW50CisJICogaW5maW5p dGUgZXBzaWxvbiBjeWNsZXMuICBWQVIgZWxlbWVudHMgYXJlIG1hcmtlZCBsYXRlciB3aGVuIGFk ZGVkIHRvCisJICogdGhlIHN0YXRlIGxpc3QgKG5mYV9hZGRfc3RhdGVfdW5pcXVlKSwgYWxsb3dp bmcgbGVnaXRpbWF0ZSBsb29wLWJhY2sgdG8KKwkgKiB0aGUgc2FtZSBWQVIgaW4gYSBuZXcgaXRl cmF0aW9uLgorCSAqLworCWlmICghUlBSRWxlbUlzVmFyKGVsZW0pKQorCQluZmFfbWFya192aXNp dGVkKHdpbnN0YXRlLCBzdGF0ZS0+ZWxlbUlkeCk7CisKKwlzd2l0Y2ggKGVsZW0tPnZhcklkKQor CXsKKwkJY2FzZSBSUFJfVkFSSURfRklOOgorCQkJLyogRklOOiByZWNvcmQgbWF0Y2ggKi8KKwkJ CW5mYV9hZGRfbWF0Y2hlZF9zdGF0ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwgY3VycmVudFBvcyk7 CisJCQlicmVhazsKKworCQljYXNlIFJQUl9WQVJJRF9BTFQ6CisJCQluZmFfYWR2YW5jZV9hbHQo d2luc3RhdGUsIGN0eCwgc3RhdGUsIGVsZW0sIGN1cnJlbnRQb3MpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBSUFJfVkFSSURfQkVHSU46CisJCQluZmFfYWR2YW5jZV9iZWdpbih3aW5zdGF0ZSwgY3R4 LCBzdGF0ZSwgZWxlbSwgY3VycmVudFBvcyk7CisJCQlicmVhazsKKworCQljYXNlIFJQUl9WQVJJ RF9FTkQ6CisJCQluZmFfYWR2YW5jZV9lbmQod2luc3RhdGUsIGN0eCwgc3RhdGUsIGVsZW0sIGN1 cnJlbnRQb3MpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCS8qIFZBUiBlbGVtZW50ICov CisJCQluZmFfYWR2YW5jZV92YXIod2luc3RhdGUsIGN0eCwgc3RhdGUsIGVsZW0sIGN1cnJlbnRQ b3MpOworCQkJYnJlYWs7CisJfQorfQorCisvKgorICogbmZhX2FkdmFuY2UKKyAqCisgKiBBZHZh bmNlIHBoYXNlIChkaXZlcmdlbmNlKTogdHJhbnNpdGlvbiBmcm9tIGFsbCBzdXJ2aXZpbmcgc3Rh dGVzLgorICogQ2FsbGVkIGFmdGVyIG1hdGNoIHBoYXNlIHdpdGggbWF0Y2hlZCBWQVIgc3RhdGVz LCBvciBhdCBjb250ZXh0IGNyZWF0aW9uCisgKiBmb3IgaW5pdGlhbCBlcHNpbG9uIGV4cGFuc2lv biAod2l0aCBjdXJyZW50UG9zID0gc3RhcnRQb3MgLSAxKS4KKyAqCisgKiBQcm9jZXNzZXMgc3Rh dGVzIGluIG9yZGVyLCB1c2luZyByZWN1cnNpdmUgREZTIHRvIG1haW50YWluIGxleGljYWwgb3Jk ZXIuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfYWR2YW5jZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgaW50NjQgY3VycmVudFBvcykKK3sKKwlSUFJORkFTdGF0 ZSAqc3RhdGVzID0gY3R4LT5zdGF0ZXM7CisJUlBSTkZBU3RhdGUgKnN0YXRlOworCVJQUk5GQVN0 YXRlICpzYXZlZE1hdGNoZWRTdGF0ZTsKKworCWN0eC0+c3RhdGVzID0gTlVMTDsJCQkvKiBXaWxs IHJlYnVpbGQgKi8KKworCS8qIFByb2Nlc3MgZWFjaCBzdGF0ZSBpbiBsZXhpY2FsIG9yZGVyIChE RlMgb3JkZXIgZnJvbSBwcmV2aW91cyBhZHZhbmNlKSAqLworCXdoaWxlIChzdGF0ZXMgIT0gTlVM TCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCXNhdmVkTWF0Y2hlZFN0YXRlID0g Y3R4LT5tYXRjaGVkU3RhdGU7CisKKwkJLyoKKwkJICogQ2xlYXIgdmlzaXRlZCBiaXRtYXAgYmVm b3JlIGVhY2ggc3RhdGUncyBERlMgZXhwYW5zaW9uLiAgT25seSB0aGUKKwkJICogcmFuZ2UgdG91 Y2hlZCBzaW5jZSB0aGUgcHJldmlvdXMgcmVzZXQgKHRyYWNrZWQgdmlhIHRoZSBoaWdoLXdhdGVy CisJCSAqIG1hcmtzIHVwZGF0ZWQgaW4gbmZhX21hcmtfdmlzaXRlZCkgbmVlZHMgdG8gYmUgY2xl YXJlZDsgZm9yIHNtYWxsCisJCSAqIE5GQXMgdGhpcyBpcyB0aGUgd2hvbGUgYXJyYXksIGJ1dCBm b3IgbGFyZ2UgTkZBcyB3aG9zZSBERlMgb25seQorCQkgKiByZWFjaGVzIGEgZmV3IGVsZW1lbnRz IHBlciBhZHZhbmNlIGl0IGF2b2lkcyB3YWxraW5nIHRoZSBmdWxsCisJCSAqIGJpdG1hcC4KKwkJ ICovCisJCWlmICh3aW5zdGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQgPj0gd2luc3RhdGUtPm5mYVZp c2l0ZWRNaW5Xb3JkKQorCQl7CisJCQltZW1zZXQoJndpbnN0YXRlLT5uZmFWaXNpdGVkRWxlbXNb d2luc3RhdGUtPm5mYVZpc2l0ZWRNaW5Xb3JkXSwgMCwKKwkJCQkgICBzaXplb2YoYml0bWFwd29y ZCkgKgorCQkJCSAgICh3aW5zdGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQgLQorCQkJCQl3aW5zdGF0 ZS0+bmZhVmlzaXRlZE1pbldvcmQgKyAxKSk7CisJCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldv cmQgPSBQR19JTlQxNl9NQVg7CisJCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQgPSAtMTsK KwkJfQorCisJCXN0YXRlID0gc3RhdGVzOworCQlzdGF0ZXMgPSBzdGF0ZXMtPm5leHQ7CisKKwkJ LyoKKwkJICogQm91bmRhcnkgY29udHJhY3Q6IHN0YXRlLT5uZXh0IGlzIHJlc2V0IHRvIE5VTEwg aGVyZSwgYmVmb3JlCisJCSAqIGNyb3NzaW5nIGludG8gbmZhX2FkdmFuY2Vfc3RhdGUncyBlcHNp bG9uLWV4cGFuc2lvbiBERlMuICBUaGUgaW5uZXIKKwkJICogYnJhbmNoZXMgKG5mYV9hZHZhbmNl X3ZhciwgbmZhX2FkdmFuY2VfYmVnaW4vZW5kL2FsdCkgdHJlYXQKKwkJICogc3RhdGUtPm5leHQg YXMgYWxyZWFkeS1OVUxMIGFuZCBkb24ndCByZXNldCBpdCB0aGVtc2VsdmVzOyB0aGUKKwkJICog b3RoZXIgbGlua2luZyBzaXRlIGlzIG5mYV9hZGRfc3RhdGVfdW5pcXVlLCB3aGljaCBzZXRzIGl0 IHdoZW4KKwkJICogYXBwZW5kaW5nIHRvIGN0eC0+c3RhdGVzLgorCQkgKi8KKwkJc3RhdGUtPm5l eHQgPSBOVUxMOworCisJCW5mYV9hZHZhbmNlX3N0YXRlKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBj dXJyZW50UG9zKTsKKworCQkvKgorCQkgKiBFYXJseSB0ZXJtaW5hdGlvbjogaWYgYSBGSU4gd2Fz IG5ld2x5IHJlYWNoZWQgaW4gdGhpcyBhZHZhbmNlLAorCQkgKiByZW1haW5pbmcgb2xkIHN0YXRl cyBoYXZlIHdvcnNlIGxleGljYWwgb3JkZXIgYW5kIGNhbiBiZSBwcnVuZWQuCisJCSAqIE9ubHkg Y2hlY2sgZm9yIG5ldyBGSU4gYXJyaXZhbHMgKG5vdCBvbmVzIGZyb20gcHJldmlvdXMgcm93cyku CisJCSAqLworCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gc2F2ZWRNYXRjaGVkU3RhdGUgJiYg c3RhdGVzICE9IE5VTEwpCisJCXsKKwkJCW5mYV9zdGF0ZV9mcmVlX2xpc3Qod2luc3RhdGUsIHN0 YXRlcyk7CisJCQlicmVhazsKKwkJfQorCX0KK30KKworLyoKKyAqIG5mYV9yZWV2YWx1YXRlX2Rl cGVuZGVudF92YXJzCisgKgkJUmUtZXZhbHVhdGUgbWF0Y2hfc3RhcnQtZGVwZW5kZW50IERFRklO RSB2YXJpYWJsZXMgZm9yIGEgc3BlY2lmaWMKKyAqCQljb250ZXh0IHdob3NlIG1hdGNoU3RhcnRS b3cgZGlmZmVycyBmcm9tIHRoZSBzaGFyZWQgZXZhbHVhdGlvbidzCisgKgkJbmF2X21hdGNoX3N0 YXJ0LgorICoKKyAqIE9ubHkgdmFyaWFibGVzIGluIGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQg YXJlIHJlLWV2YWx1YXRlZC4gIFRoZQorICogY3VycmVudCByb3cncyBzbG90IChlY3h0X291dGVy dHVwbGUpIG11c3QgYWxyZWFkeSBiZSBzZXQgdXAgYnkKKyAqIG5mYV9ldmFsdWF0ZV9yb3coKS4K KyAqLworc3RhdGljIHZvaWQKK25mYV9yZWV2YWx1YXRlX2RlcGVuZGVudF92YXJzKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgaW50NjQgY3Vy cmVudFBvcykKK3sKKwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSB3aW5zdGF0ZS0+c3MucHMucHNf RXhwckNvbnRleHQ7CisJaW50NjQJCXNhdmVkX21hdGNoX3N0YXJ0ID0gd2luc3RhdGUtPm5hdl9t YXRjaF9zdGFydDsKKwlpbnQ2NAkJc2F2ZWRfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7CisK KwkvKiBUZW1wb3JhcmlseSBzZXQgbmF2X21hdGNoX3N0YXJ0IGFuZCBjdXJyZW50cG9zIGZvciBG SVJTVC9MQVNUICovCisJd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCA9IGN0eC0+bWF0Y2hTdGFy dFJvdzsKKwl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IGN1cnJlbnRQb3M7CisKKwkvKiBJbnZhbGlk YXRlIG5hdl9zbG90IGNhY2hlIHNpbmNlIG1hdGNoX3N0YXJ0IGNoYW5nZWQgKi8KKwl3aW5zdGF0 ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CisKKwlmb3JlYWNoX3B0cihFeHByU3RhdGUsIGV4cHJTdGF0 ZSwgd2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3QpCisJeworCQlpbnQJCQl2YXJJZHggPSBmb3Jl YWNoX2N1cnJlbnRfaW5kZXgoZXhwclN0YXRlKTsKKworCQlpZiAoYm1zX2lzX21lbWJlcih2YXJJ ZHgsIHdpbnN0YXRlLT5kZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50KSkKKwkJeworCQkJRGF0dW0J CXJlc3VsdDsKKwkJCWJvb2wJCWlzbnVsbDsKKworCQkJcmVzdWx0ID0gRXhlY0V2YWxFeHByKGV4 cHJTdGF0ZSwgZWNvbnRleHQsICZpc251bGwpOworCQkJd2luc3RhdGUtPm5mYVZhck1hdGNoZWRb dmFySWR4XSA9ICghaXNudWxsICYmIERhdHVtR2V0Qm9vbChyZXN1bHQpKTsKKwkJfQorCisJCWlm ICh2YXJJZHggKyAxID49IGxpc3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3Qp KQorCQkJYnJlYWs7CisJfQorCisJLyogUmVzdG9yZSBvcmlnaW5hbCBtYXRjaF9zdGFydCwgY3Vy cmVudHBvcywgYW5kIGludmFsaWRhdGUgY2FjaGUgKi8KKwl3aW5zdGF0ZS0+bmF2X21hdGNoX3N0 YXJ0ID0gc2F2ZWRfbWF0Y2hfc3RhcnQ7CisJd2luc3RhdGUtPmN1cnJlbnRwb3MgPSBzYXZlZF9w b3M7CisJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOworfQorCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogQVBJIGV4cG9zZWQgdG8gbm9kZVdpbmRvd0FnZy5jCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK Ky8qCisgKiBFeGVjUlBSU3RhcnRDb250ZXh0CisgKgorICogU3RhcnQgYSBuZXcgbWF0Y2ggY29u dGV4dCBhdCBnaXZlbiBwb3NpdGlvbi4KKyAqIEluaXRpYWxpemVzIGNvbnRleHQsIHN0YXRlIGFi c29ycHRpb24gZmxhZ3MsIGFuZCBwZXJmb3JtcyBpbml0aWFsIGFkdmFuY2UKKyAqIHRvIGV4cGFu ZCBlcHNpbG9uIHRyYW5zaXRpb25zIChBTFQgYnJhbmNoZXMsIG9wdGlvbmFsIGVsZW1lbnRzKS4K KyAqIEFkZHMgY29udGV4dCB0byB0aGUgdGFpbCBvZiB3aW5zdGF0ZS0+bmZhQ29udGV4dCBsaXN0 LgorICovCitSUFJORkFDb250ZXh0ICoKK0V4ZWNSUFJTdGFydENvbnRleHQoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBzdGFydFBvcykKK3sKKwlSUFJORkFDb250ZXh0ICpjdHg7CisJ UlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVybkVs ZW1lbnQgKmVsZW07CisKKwljdHggPSBuZmFfY29udGV4dF9tYWtlKHdpbnN0YXRlKTsKKwljdHgt Pm1hdGNoU3RhcnRSb3cgPSBzdGFydFBvczsKKwljdHgtPnN0YXRlcyA9IG5mYV9zdGF0ZV9tYWtl KHdpbnN0YXRlKTsgLyogaW5pdGlhbCBzdGF0ZSBhdCBlbGVtIDAgKi8KKworCWVsZW0gPSAmcGF0 dGVybi0+ZWxlbWVudHNbMF07CisKKwlpZiAoUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlbGVt KSkKKwl7CisJCWN0eC0+c3RhdGVzLT5pc0Fic29yYmFibGUgPSB0cnVlOworCX0KKwllbHNlCisJ eworCQljdHgtPmhhc0Fic29yYmFibGVTdGF0ZSA9IGZhbHNlOworCQljdHgtPmFsbFN0YXRlc0Fi c29yYmFibGUgPSBmYWxzZTsKKwkJY3R4LT5zdGF0ZXMtPmlzQWJzb3JiYWJsZSA9IGZhbHNlOwor CX0KKworCS8qIEFkZCB0byB0YWlsIG9mIGFjdGl2ZSBjb250ZXh0IGxpc3QgKGRvdWJseS1saW5r ZWQsIG9sZGVzdC1maXJzdCkgKi8KKwljdHgtPnByZXYgPSB3aW5zdGF0ZS0+bmZhQ29udGV4dFRh aWw7CisJY3R4LT5uZXh0ID0gTlVMTDsKKwlpZiAod2luc3RhdGUtPm5mYUNvbnRleHRUYWlsICE9 IE5VTEwpCisJCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbC0+bmV4dCA9IGN0eDsKKwllbHNlCisJ CXdpbnN0YXRlLT5uZmFDb250ZXh0ID0gY3R4OyAvKiBmaXJzdCBjb250ZXh0IGJlY29tZXMgaGVh ZCAqLworCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCA9IGN0eDsKKworCS8qCisJICogSW5pdGlh bCBhZHZhbmNlIChkaXZlcmdlbmNlKTogZXhwYW5kIEFMVCBicmFuY2hlcyBhbmQgY3JlYXRlIGV4 aXQKKwkgKiBzdGF0ZXMgZm9yIFZBUiBlbGVtZW50cyB3aXRoIG1pbj0wLiBUaGlzIHByZXBhcmVz IHRoZSBjb250ZXh0IGZvciB0aGUKKwkgKiBmaXJzdCByb3cncyBtYXRjaCBwaGFzZS4KKwkgKgor CSAqIFVzZSBzdGFydFBvcyAtIDEgYXMgY3VycmVudFBvcyBzaW5jZSBubyByb3cgaGFzIGJlZW4g Y29uc3VtZWQgeWV0LiBJZgorCSAqIEZJTiBpcyByZWFjaGVkIHZpYSBlcHNpbG9uIHRyYW5zaXRp b25zLCBtYXRjaEVuZFJvdyA9IHN0YXJ0UG9zIC0gMQorCSAqIHdoaWNoIGlzIGxlc3MgdGhhbiBt YXRjaFN0YXJ0Um93LCByZXN1bHRpbmcgaW4gVU5NQVRDSEVEIHRyZWF0bWVudC4KKwkgKi8KKwlu ZmFfYWR2YW5jZSh3aW5zdGF0ZSwgY3R4LCBzdGFydFBvcyAtIDEpOworCisJcmV0dXJuIGN0eDsK K30KKworLyoKKyAqIEV4ZWNSUFJHZXRIZWFkQ29udGV4dAorICoKKyAqIFJldHVybiB0aGUgaGVh ZCBjb250ZXh0IGlmIGl0cyBzdGFydCBwb3NpdGlvbiBtYXRjaGVzIHBvcy4KKyAqIFJldHVybnMg TlVMTCBpZiBubyBjb250ZXh0IGV4aXN0cyBvciBoZWFkIGRvZXNuJ3QgbWF0Y2ggcG9zLgorICov CitSUFJORkFDb250ZXh0ICoKK0V4ZWNSUFJHZXRIZWFkQ29udGV4dChXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIGludDY0IHBvcykKK3sKKwlSUFJORkFDb250ZXh0ICpjdHggPSB3aW5zdGF0ZS0+ bmZhQ29udGV4dDsKKworCS8qCisJICogQ29udGV4dHMgYXJlIHNvcnRlZCBieSBtYXRjaFN0YXJ0 Um93IGFzY2VuZGluZy4gIElmIHRoZSBoZWFkIGNvbnRleHQKKwkgKiBkb2Vzbid0IG1hdGNoIHBv cywgbm8gY29udGV4dCBleGlzdHMgZm9yIHRoaXMgcG9zaXRpb24uCisJICovCisJaWYgKGN0eCA9 PSBOVUxMIHx8IGN0eC0+bWF0Y2hTdGFydFJvdyAhPSBwb3MpCisJCXJldHVybiBOVUxMOworCisJ cmV0dXJuIGN0eDsKK30KKworLyoKKyAqIEV4ZWNSUFJGcmVlQ29udGV4dAorICoKKyAqIFVubGlu ayBjb250ZXh0IGZyb20gYWN0aXZlIGxpc3QgYW5kIHJldHVybiBpdCB0byBmcmVlIGxpc3QuCisg KiBBbHNvIGZyZWVzIGFueSBzdGF0ZXMgaW4gdGhlIGNvbnRleHQuCisgKi8KK3ZvaWQKK0V4ZWNS UFJGcmVlQ29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0 eCkKK3sKKwkvKiBVbmxpbmsgZnJvbSBhY3RpdmUgbGlzdCBmaXJzdCAqLworCW5mYV91bmxpbmtf Y29udGV4dCh3aW5zdGF0ZSwgY3R4KTsKKworCS8qIFVwZGF0ZSBzdGF0aXN0aWNzICovCisJd2lu c3RhdGUtPm5mYUNvbnRleHRzQWN0aXZlLS07CisKKwlpZiAoY3R4LT5zdGF0ZXMgIT0gTlVMTCkK KwkJbmZhX3N0YXRlX2ZyZWVfbGlzdCh3aW5zdGF0ZSwgY3R4LT5zdGF0ZXMpOworCWlmIChjdHgt Pm1hdGNoZWRTdGF0ZSAhPSBOVUxMKQorCQluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgY3R4LT5t YXRjaGVkU3RhdGUpOworCisJY3R4LT5zdGF0ZXMgPSBOVUxMOworCWN0eC0+bWF0Y2hlZFN0YXRl ID0gTlVMTDsKKwljdHgtPm5leHQgPSB3aW5zdGF0ZS0+bmZhQ29udGV4dEZyZWU7CisJd2luc3Rh dGUtPm5mYUNvbnRleHRGcmVlID0gY3R4OworfQorCisvKgorICogRXhlY1JQUlJlY29yZENvbnRl eHRTdWNjZXNzCisgKgorICogUmVjb3JkIGEgc3VjY2Vzc2Z1bCBjb250ZXh0IGluIHN0YXRpc3Rp Y3MuCisgKi8KK3ZvaWQKK0V4ZWNSUFJSZWNvcmRDb250ZXh0U3VjY2VzcyhXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUsIGludDY0IG1hdGNoTGVuKQoreworCXdpbnN0YXRlLT5uZmFNYXRjaGVzU3Vj Y2VlZGVkKys7CisJbmZhX3VwZGF0ZV9sZW5ndGhfc3RhdHMod2luc3RhdGUtPm5mYU1hdGNoZXNT dWNjZWVkZWQsCisJCQkJCQkJJndpbnN0YXRlLT5uZmFNYXRjaExlbiwKKwkJCQkJCQltYXRjaExl bik7Cit9CisKKy8qCisgKiBFeGVjUlBSUmVjb3JkQ29udGV4dEZhaWx1cmUKKyAqCisgKiBSZWNv cmQgYSBmYWlsZWQgY29udGV4dCBpbiBzdGF0aXN0aWNzLgorICogSWYgZmFpbGVkTGVuID09IDEs IGNvdW50IGFzIHBydW5lZCAoZmFpbGVkIG9uIGZpcnN0IHJvdykuCisgKiBJZiBmYWlsZWRMZW4g PiAxLCBjb3VudCBhcyBtaXNtYXRjaGVkIGFuZCB1cGRhdGUgbGVuZ3RoIHN0YXRzLgorICovCit2 b2lkCitFeGVjUlBSUmVjb3JkQ29udGV4dEZhaWx1cmUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBpbnQ2NCBmYWlsZWRMZW4pCit7CisJaWYgKGZhaWxlZExlbiA9PSAxKQorCXsKKwkJd2luc3Rh dGUtPm5mYUNvbnRleHRzUHJ1bmVkKys7CisJfQorCWVsc2UKKwl7CisJCXdpbnN0YXRlLT5uZmFN YXRjaGVzRmFpbGVkKys7CisJCW5mYV91cGRhdGVfbGVuZ3RoX3N0YXRzKHdpbnN0YXRlLT5uZmFN YXRjaGVzRmFpbGVkLAorCQkJCQkJCQkmd2luc3RhdGUtPm5mYUZhaWxMZW4sCisJCQkJCQkJCWZh aWxlZExlbik7CisJfQorfQorCisvKgorICogRXhlY1JQUlByb2Nlc3NSb3cKKyAqCisgKiBQcm9j ZXNzIGFsbCBjb250ZXh0cyBmb3Igb25lIHJvdzoKKyAqICAgMS4gTWF0Y2ggYWxsIGNvbnRleHRz IChjb252ZXJnZW5jZSkgLSBldmFsdWF0ZSBWQVJzLCBwcnVuZSBkZWFkIHN0YXRlcworICogICAy LiBBYnNvcmIgcmVkdW5kYW50IGNvbnRleHRzIC0gaWRlYWwgdGltaW5nIGFmdGVyIGNvbnZlcmdl bmNlCisgKiAgIDMuIEFkdmFuY2UgYWxsIGNvbnRleHRzIChkaXZlcmdlbmNlKSAtIGNyZWF0ZSBu ZXcgc3RhdGVzIGZvciBuZXh0IHJvdworICovCit2b2lkCitFeGVjUlBSUHJvY2Vzc1JvdyhXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IGN1cnJlbnRQb3MsCisJCQkJICBib29sIGhhc0xp bWl0ZWRGcmFtZSwgaW50NjQgZnJhbWVPZmZzZXQpCit7CisJUlBSTkZBQ29udGV4dCAqY3R4Owor CWJvb2wJICAgKnZhck1hdGNoZWQgPSB3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZDsKKwlib29sCQlo YXNEZXBlbmRlbnQgPSAhYm1zX2lzX2VtcHR5KHdpbnN0YXRlLT5kZWZpbmVNYXRjaFN0YXJ0RGVw ZW5kZW50KTsKKworCS8qIEFsbG93IHF1ZXJ5IGNhbmNlbGxhdGlvbiBvbmNlIHBlciByb3cgZm9y IHNpbXBsZS9sb3ctc3RhdGUgcGF0dGVybnMgKi8KKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CisJLyoKKwkgKiBQaGFzZSAxOiBNYXRjaCBhbGwgY29udGV4dHMgKGNvbnZlcmdlbmNlKS4gIEV2 YWx1YXRlIFZBUiBlbGVtZW50cywKKwkgKiB1cGRhdGUgY291bnRzLCByZW1vdmUgZGVhZCBzdGF0 ZXMuCisJICovCisJZm9yIChjdHggPSB3aW5zdGF0ZS0+bmZhQ29udGV4dDsgY3R4ICE9IE5VTEw7 IGN0eCA9IGN0eC0+bmV4dCkKKwl7CisJCWlmIChjdHgtPnN0YXRlcyA9PSBOVUxMKQorCQkJY29u dGludWU7CisKKwkJLyogQ2hlY2sgZnJhbWUgYm91bmRhcnkgLSBmaW5hbGl6ZSB0aGUgY29udGV4 dCB3aGVuIGl0IGlzIHJlYWNoZWQgKi8KKwkJaWYgKGhhc0xpbWl0ZWRGcmFtZSkKKwkJeworCQkJ aW50NjQJCWN0eEZyYW1lRW5kOworCisJCQkvKgorCQkJICogQ2xhbXAgdG8gUEdfSU5UNjRfTUFY IG9uIG92ZXJmbG93LiAgZnJhbWVPZmZzZXQgY2FuIGJlIGFzIGxhcmdlCisJCQkgKiBhcyBQR19J TlQ2NF9NQVggKGUuZy4gIlJPV1MgPGh1Z2U+IEZPTExPV0lORyIpLCBzbyBhZGQgdGhlCisJCQkg KiBvZmZzZXQgYW5kIHRoZSB0cmFpbGluZyArMSBpbiB0d28gc2VwYXJhdGVseSBjaGVja2VkIHN0 ZXBzIHRvCisJCQkgKiBhdm9pZCBzaWduZWQtaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgImZyYW1l T2Zmc2V0ICsgMSIKKwkJCSAqIHN1YmV4cHJlc3Npb24uCisJCQkgKi8KKwkJCWlmIChwZ19hZGRf czY0X292ZXJmbG93KGN0eC0+bWF0Y2hTdGFydFJvdywgZnJhbWVPZmZzZXQsCisJCQkJCQkJCQkm Y3R4RnJhbWVFbmQpIHx8CisJCQkJcGdfYWRkX3M2NF9vdmVyZmxvdyhjdHhGcmFtZUVuZCwgMSwg JmN0eEZyYW1lRW5kKSkKKwkJCQljdHhGcmFtZUVuZCA9IFBHX0lOVDY0X01BWDsKKworCQkJLyoK KwkJCSAqIGN1cnJlbnRQb3MgYWR2YW5jZXMgYnkgZXhhY3RseSBvbmUgcGVyIGNhbGwsIGFuZCBh IGZpbmFsaXplZAorCQkJICogY29udGV4dCBpcyBza2lwcGVkIGJ5IHRoZSBzdGF0ZXMgPT0gTlVM TCBndWFyZCBhYm92ZSwgc28gaXQgY2FuCisJCQkgKiBvbmx5IGV2ZXIgcmVhY2ggY3R4RnJhbWVF bmQsIG5ldmVyIG92ZXJzaG9vdCBpdC4gIFRoZSBBc3NlcnQKKwkJCSAqIHR1cm5zIGEgZnV0dXJl IGNoYW5nZSB0aGF0IGJyb2tlIHRoYXQgaW52YXJpYW50IGludG8gYW4KKwkJCSAqIGltbWVkaWF0 ZSBmYWlsdXJlIHJhdGhlciB0aGFuIGEgc2lsZW50IHNsaXAgcGFzdCB0aGUgYm91bmRhcnkuCisJ CQkgKi8KKwkJCUFzc2VydChjdXJyZW50UG9zIDw9IGN0eEZyYW1lRW5kKTsKKworCQkJaWYgKGN1 cnJlbnRQb3MgPT0gY3R4RnJhbWVFbmQpCisJCQl7CisJCQkJLyogRnJhbWUgYm91bmRhcnkgcmVh Y2hlZDogZm9yY2UgbWlzbWF0Y2ggKi8KKwkJCQluZmFfbWF0Y2god2luc3RhdGUsIGN0eCwgTlVM TCk7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGlzIGNvbnRl eHQgaGFzIGEgZGlmZmVyZW50IG1hdGNoU3RhcnRSb3cgdGhhbiB0aGUgb25lIHVzZWQgaW4KKwkJ ICogdGhlIHNoYXJlZCBldmFsdWF0aW9uLCByZS1ldmFsdWF0ZSBtYXRjaF9zdGFydC1kZXBlbmRl bnQgdmFyaWFibGVzCisJCSAqIHdpdGggdGhpcyBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdy4KKwkJ ICovCisJCWlmIChoYXNEZXBlbmRlbnQgJiYgY3R4LT5tYXRjaFN0YXJ0Um93ICE9IHdpbnN0YXRl LT5uYXZfbWF0Y2hfc3RhcnQpCisJCQluZmFfcmVldmFsdWF0ZV9kZXBlbmRlbnRfdmFycyh3aW5z dGF0ZSwgY3R4LCBjdXJyZW50UG9zKTsKKwkJbmZhX21hdGNoKHdpbnN0YXRlLCBjdHgsIHZhck1h dGNoZWQpOworCQljdHgtPmxhc3RQcm9jZXNzZWRSb3cgPSBjdXJyZW50UG9zOworCX0KKworCS8q CisJICogUGhhc2UgMjogQWJzb3JiIHJlZHVuZGFudCBjb250ZXh0cy4gIEFmdGVyIG1hdGNoIHBo YXNlLCBzdGF0ZXMgaGF2ZQorCSAqIGNvbnZlcmdlZCAtIGlkZWFsIGZvciBhYnNvcnB0aW9uLiAg Rmlyc3QgdXBkYXRlIGFic29ycHRpb24gZmxhZ3MgdGhhdAorCSAqIG1heSBoYXZlIGNoYW5nZWQg ZHVlIHRvIHN0YXRlIHJlbW92YWwuCisJICovCisJaWYgKHdpbnN0YXRlLT5ycFBhdHRlcm4tPmlz QWJzb3JiYWJsZSkKKwl7CisJCWZvciAoY3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAh PSBOVUxMOyBjdHggPSBjdHgtPm5leHQpCisJCQluZmFfdXBkYXRlX2Fic29ycHRpb25fZmxhZ3Mo Y3R4KTsKKworCQluZmFfYWJzb3JiX2NvbnRleHRzKHdpbnN0YXRlKTsKKwl9CisKKwkvKgorCSAq IFBoYXNlIDM6IEFkdmFuY2UgYWxsIGNvbnRleHRzIChkaXZlcmdlbmNlKS4gIENyZWF0ZSBuZXcg c3RhdGVzCisJICogKGxvb3AvZXhpdCkgZnJvbSBzdXJ2aXZpbmcgbWF0Y2hlZCBzdGF0ZXMuCisJ ICovCisJZm9yIChjdHggPSB3aW5zdGF0ZS0+bmZhQ29udGV4dDsgY3R4ICE9IE5VTEw7IGN0eCA9 IGN0eC0+bmV4dCkKKwl7CisJCWlmIChjdHgtPnN0YXRlcyA9PSBOVUxMKQorCQkJY29udGludWU7 CisKKwkJLyoKKwkJICogUGhhc2UgMSBhbHJlYWR5IGhhbmRsZWQgZnJhbWUgYm91bmRhcnkgZXhj ZWVkZWQgY29udGV4dHMgYnkgZm9yY2luZworCQkgKiBtaXNtYXRjaCAobmZhX21hdGNoIHdpdGgg TlVMTCksIHdoaWNoIHJlbW92ZXMgYWxsIHN0YXRlcyAoYWxsCisJCSAqIHN0YXRlcyBhcmUgYXQg VkFSIHBvc2l0aW9ucyBhZnRlciBhZHZhbmNlKS4gU28gYW55IHN1cnZpdmluZworCQkgKiBjb250 ZXh0IGhlcmUgbXVzdCBiZSB3aXRoaW4gaXRzIGZyYW1lIGJvdW5kYXJ5LgorCQkgKgorCQkgKiBD b21wdXRlIHRoZSAoY2xhbXBlZCkgZnJhbWUgZW5kIHRoZSBzYW1lIHdheSBhcyBQaGFzZSAxLCB1 c2luZyB0d28KKwkJICogc2VwYXJhdGVseSBjaGVja2VkIGFkZHMgc28gdGhhdCAiZnJhbWVPZmZz ZXQgKyAxIiBjYW5ub3Qgb3ZlcmZsb3cKKwkJICogd2hlbiBmcmFtZU9mZnNldCBpcyBuZWFyIFBH X0lOVDY0X01BWC4KKwkJICovCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCQlpZiAoaGFz TGltaXRlZEZyYW1lKQorCQl7CisJCQlpbnQ2NAkJY3R4RnJhbWVFbmQ7CisKKwkJCWlmIChwZ19h ZGRfczY0X292ZXJmbG93KGN0eC0+bWF0Y2hTdGFydFJvdywgZnJhbWVPZmZzZXQsCisJCQkJCQkJ CQkmY3R4RnJhbWVFbmQpIHx8CisJCQkJcGdfYWRkX3M2NF9vdmVyZmxvdyhjdHhGcmFtZUVuZCwg MSwgJmN0eEZyYW1lRW5kKSkKKwkJCQljdHhGcmFtZUVuZCA9IFBHX0lOVDY0X01BWDsKKwkJCUFz c2VydChjdXJyZW50UG9zIDwgY3R4RnJhbWVFbmQpOworCQl9CisjZW5kaWYKKworCQluZmFfYWR2 YW5jZSh3aW5zdGF0ZSwgY3R4LCBjdXJyZW50UG9zKTsKKwl9Cit9CisKKy8qCisgKiBFeGVjUlBS Q2xlYW51cERlYWRDb250ZXh0cworICoKKyAqIFJlbW92ZSBjb250ZXh0cyB0aGF0IGhhdmUgZmFp bGVkIChubyBhY3RpdmUgc3RhdGVzIGFuZCBubyBtYXRjaCkuCisgKiBUaGVzZSBhcmUgY29udGV4 dHMgdGhhdCBmYWlsZWQgZHVyaW5nIG5vcm1hbCBwcm9jZXNzaW5nIGFuZCBzaG91bGQgYmUKKyAq IGNvdW50ZWQgYXMgcHJ1bmVkIChpZiBsZW5ndGggMSkgb3IgbWlzbWF0Y2hlZCAoaWYgbGVuZ3Ro ID4gMSkuCisgKi8KK3ZvaWQKK0V4ZWNSUFJDbGVhbnVwRGVhZENvbnRleHRzKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqZXhjbHVkZUN0eCkKK3sKKwlSUFJORkFDb250 ZXh0ICpjdHg7CisJUlBSTkZBQ29udGV4dCAqbmV4dDsKKworCWZvciAoY3R4ID0gd2luc3RhdGUt Pm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxMOyBjdHggPSBuZXh0KQorCXsKKwkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKKworCQluZXh0ID0gY3R4LT5uZXh0OworCisJCS8qIFNraXAgdGhlIHRhcmdl dCBjb250ZXh0IGFuZCBjb250ZXh0cyBzdGlsbCBwcm9jZXNzaW5nICovCisJCWlmIChjdHggPT0g ZXhjbHVkZUN0eCB8fCBjdHgtPnN0YXRlcyAhPSBOVUxMKQorCQkJY29udGludWU7CisKKwkJLyog U2tpcCBzdWNjZXNzZnVsbHkgbWF0Y2hlZCBjb250ZXh0cyAod2lsbCBiZSBoYW5kbGVkIGJ5IFNL SVAgbG9naWMpICovCisJCWlmIChjdHgtPm1hdGNoRW5kUm93ID49IGN0eC0+bWF0Y2hTdGFydFJv dykKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEZhaWxlZCBjb250ZXh0OiBhbHdheXMgcmVt b3ZlZCBiZWxvdy4gIE9ubHkgcmVjb3JkIHRoZSBmYWlsdXJlCisJCSAqIHN0YXRpc3RpYyBpZiBp dCBhY3R1YWxseSBwcm9jZXNzZWQgaXRzIHN0YXJ0IHJvdzsgY29udGV4dHMgY3JlYXRlZAorCQkg KiBmb3IgYmV5b25kLXBhcnRpdGlvbiByb3dzIGFyZSByZW1vdmVkIHdpdGhvdXQgYmVpbmcgY291 bnRlZC4KKwkJICovCisJCWlmIChjdHgtPmxhc3RQcm9jZXNzZWRSb3cgPj0gY3R4LT5tYXRjaFN0 YXJ0Um93KQorCQl7CisJCQlpbnQ2NAkJZmFpbGVkTGVuID0gY3R4LT5sYXN0UHJvY2Vzc2VkUm93 IC0gY3R4LT5tYXRjaFN0YXJ0Um93ICsgMTsKKworCQkJRXhlY1JQUlJlY29yZENvbnRleHRGYWls dXJlKHdpbnN0YXRlLCBmYWlsZWRMZW4pOworCQl9CisKKwkJRXhlY1JQUkZyZWVDb250ZXh0KHdp bnN0YXRlLCBjdHgpOworCX0KK30KKworLyoKKyAqIEV4ZWNSUFJGaW5hbGl6ZUFsbENvbnRleHRz CisgKgorICogUGFydGl0aW9uLWVuZCBjbGFzc2lmaWNhdGlvbiBwb2xpY3k6IGtpbGwgYW55IFZB UiBzdGF0ZXMgc3RpbGwgcHVyc3VpbmcKKyAqIHdoZW4gcm93cyBydW4gb3V0LCBzbyBjbGVhbnVw IHNlZXMgYSB1bmlmb3JtIGN0eC0+c3RhdGVzID09IE5VTEwgYWNyb3NzCisgKiBldmVyeSBjb250 ZXh0LiAgQnkgdGhlIHRpbWUgdGhpcyBydW5zLCBhbGwgZ2VudWluZSBGSU4gcmVhY2hlcyBoYXZl CisgKiBhbHJlYWR5IGJlZW4gcmVjb3JkZWQgaW4tZmxpZ2h0OyB0aHJlZSBzaGFwZXMgc3Vydml2 ZSBoZXJlOgorICoKKyAqICAgLSBQdXJlIHB1cnN1aXQgKG1hdGNoZWRTdGF0ZSA9PSBOVUxMKTog VkFSIHN0YXRlcyB3YWl0aW5nIGZvciBpbnB1dAorICogICAgIHRoYXQgbmV2ZXIgYXJyaXZlcyAo ZS5nLiwgQSsgQiBtaWQtcGF0dGVybiBhdCBwYXJ0aXRpb24gZW5kKS4KKyAqICAgLSBFbXB0eS1t YXRjaCBjYW5kaWRhdGUgKyBwdXJzdWl0IChtYXRjaGVkU3RhdGUgIT0gTlVMTCwKKyAqICAgICBt YXRjaEVuZFJvdyA8IG1hdGNoU3RhcnRSb3cpOiBpbml0aWFsLWFkdmFuY2UgRklOLXZpYS1za2lw IHJlY29yZGVkCisgKiAgICAgYW4gZW1wdHkgbWF0Y2ggd2hpbGUgVkFSIHN0YXRlcyBhcmUgc3Rp bGwgY2hhc2luZyBhIGxvbmdlciBvbmUKKyAqICAgICAoZS5nLiwgZ3JlZWR5IEEqKS4KKyAqICAg LSBSZWFsIG1hdGNoICsgcHVyc3VpdCAobWF0Y2hlZFN0YXRlICE9IE5VTEwsCisgKiAgICAgbWF0 Y2hFbmRSb3cgPj0gbWF0Y2hTdGFydFJvdyk6IGEgbWF0Y2ggaGFzIGJlZW4gcmVjb3JkZWQgYW5k IFZBUgorICogICAgIHN0YXRlcyBhcmUgc3RpbGwgbG9vcGluZyBmb3IgYSBsb25nZXIgb25lLgor ICoKKyAqIEtpbGxpbmcgdGhlIFZBUiByZWNsYXNzaWZpZXMgdGhlIGZpcnN0IHR3byBhcyBmYWls dXJlcyBpbiBjbGVhbnVwCisgKiAob3RoZXJ3aXNlIHRoZXkgbGluZ2VyIHdpdGhvdXQgY29udHJp YnV0aW5nIHRvIHN0YXRzKS4gIFRoZSB0aGlyZCBpcworICogc3RhdC1uZXV0cmFsIC0tIGNsZWFu dXAgc2tpcHMgaXQgZWl0aGVyIHdheSAtLSBidXQgZ29lcyB0aHJvdWdoIHRoZQorICogc2FtZSB1 bmlmb3JtIHBhdGggc28gcGFydGl0aW9uLWVuZCBjbGFzc2lmaWNhdGlvbiBzdGF5cyBjZW50cmFs aXplZC4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbjogbmZhX21hdGNoIHdpdGggTlVMTCBmb3JjZXMg VkFSIG1pc21hdGNoOyBuZmFfYWR2YW5jZQorICogdGhlbiBkcmFpbnMgYW55IHJlbWFpbmluZyBl cHNpbG9uIHRyYW5zaXRpb25zLgorICovCit2b2lkCitFeGVjUlBSRmluYWxpemVBbGxDb250ZXh0 cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IGxhc3RQb3MpCit7CisJUlBSTkZBQ29u dGV4dCAqY3R4OworCisJZm9yIChjdHggPSB3aW5zdGF0ZS0+bmZhQ29udGV4dDsgY3R4ICE9IE5V TEw7IGN0eCA9IGN0eC0+bmV4dCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJ aWYgKGN0eC0+c3RhdGVzICE9IE5VTEwpCisJCXsKKwkJCW5mYV9tYXRjaCh3aW5zdGF0ZSwgY3R4 LCBOVUxMKTsKKwkJCW5mYV9hZHZhbmNlKHdpbnN0YXRlLCBjdHgsIGxhc3RQb3MpOworCQl9CisJ fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAppbmRleCBkYzQ1YmUwYjJjZS4uMGZmNGE1YjFk ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCkBAIC0xMyw2ICsxMyw3IEBAIGJhY2tlbmRf c291cmNlcyArPSBmaWxlcygKICAgJ2V4ZWNQYXJhbGxlbC5jJywKICAgJ2V4ZWNQYXJ0aXRpb24u YycsCiAgICdleGVjUHJvY25vZGUuYycsCisgICdleGVjUlBSLmMnLAogICAnZXhlY1JlcGxpY2F0 aW9uLmMnLAogICAnZXhlY1NSRi5jJywKICAgJ2V4ZWNTY2FuLmMnLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jCmluZGV4IGYxYzUyNGQwMGRmLi5jYjZhNDg0YjdkZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMzksMTIgKzM5LDE1IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1JQUi5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlV2luZG93 QWdnLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNz LmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Ns YXVzZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfY29lcmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCkBAIC0xNzQsNiAr MTc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93U3RhdGVQZXJBZ2dEYXRhCiAJYm9vbAkJcmVz dGFydDsJCS8qIG5lZWQgdG8gcmVzdGFydCB0aGlzIGFnZyBpbiB0aGlzIGN5Y2xlPyAqLwogfSBX aW5kb3dTdGF0ZVBlckFnZ0RhdGE7CiAKKwogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV93aW5kb3dh Z2dyZWdhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAogCQkJCQkJCQkJICAgV2luZG93U3Rh dGVQZXJGdW5jIHBlcmZ1bmNzdGF0ZSwKIAkJCQkJCQkJCSAgIFdpbmRvd1N0YXRlUGVyQWdnIHBl cmFnZ3N0YXRlKTsKQEAgLTIxMCw2ICsyMTQsOSBAQCBzdGF0aWMgRGF0dW0gR2V0QWdnSW5pdFZh bChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lkIHRyYW5zdHlwZSk7CiAKIHN0YXRpYyBib29sIGFyZV9w ZWVycyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90MSwKIAkJ CQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdDIpOworc3RhdGljIGludAlXaW5HZXRTbG90SW5GcmFt ZShXaW5kb3dPYmplY3Qgd2lub2JqLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKKwkJCQkJCQkgIGlu dCByZWxwb3MsIGludCBzZWVrdHlwZSwgYm9vbCBzZXRfbWFyaywKKwkJCQkJCQkgIGJvb2wgKmlz bnVsbCwgYm9vbCAqaXNvdXQpOwogc3RhdGljIGJvb2wgd2luZG93X2dldHR1cGxlc2xvdChXaW5k b3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsCiAJCQkJCQkJCVR1cGxlVGFibGVTbG90ICpzbG90 KTsKIApAQCAtMjI4LDYgKzIzNSwxOCBAQCBzdGF0aWMgdWludDggZ2V0X25vdG51bGxfaW5mbyhX aW5kb3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSAgaW50NjQgcG9zLCBpbnQgYXJnbm8pOwogc3Rh dGljIHZvaWQgcHV0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSBp bnQ2NCBwb3MsIGludCBhcmdubywgYm9vbCBpc251bGwpOworc3RhdGljIGJvb2wgcnByX2lzX2Rl ZmluZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKK3N0YXRpYyBpbnQ2NCByb3dfaXNfaW5f cmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpOworCitzdGF0aWMg dm9pZCBjbGVhcl9yZWR1Y2VkX2ZyYW1lKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7CitzdGF0 aWMgaW50CWdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IGludDY0IHBvcyk7CitzdGF0aWMgdm9pZCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmpl Y3Qgd2lub2JqLCBpbnQ2NCBwb3MpOworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAtIE5GQSBy b3cgZXZhbHVhdGlvbiAqLworc3RhdGljIGJvb2wgbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dPYmpl Y3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpOworCisvKiBGb3J3YXJkIGRl Y2xhcmF0aW9ucyAtIG5hdmlnYXRpb24gb2Zmc2V0IGV2YWx1YXRpb24gKi8KK3N0YXRpYyB2b2lk IGV2YWxfZGVmaW5lX29mZnNldHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBMaXN0ICpkZWZp bmVDbGF1c2UpOwogCiAvKgogICogTm90IG51bGwgaW5mbyBiaXQgYXJyYXkgY29uc2lzdHMgb2Yg Mi1iaXQgaXRlbXMKQEAgLTgyMSw2ICs4NDAsOSBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0ZXMoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCSAqCSAgIHRyYW5zaXRpb24gZnVuY3Rpb24sIG9yCiAJ ICoJIC0gd2UgaGF2ZSBhbiBFWENMVVNJT04gY2xhdXNlLCBvcgogCSAqCSAtIGlmIHRoZSBuZXcg ZnJhbWUgZG9lc24ndCBvdmVybGFwIHRoZSBvbGQgb25lCisJICogICAtIGlmIFJQUiAoUm93IFBh dHRlcm4gUmVjb2duaXRpb24pIGlzIGVuYWJsZWQsIGJlY2F1c2UgdGhlIHJlZHVjZWQKKwkgKiAg ICAgZnJhbWUgZGVwZW5kcyBvbiBwYXR0ZXJuIG1hdGNoaW5nIHJlc3VsdHMgd2hpY2ggY2FuIGRp ZmZlciBlbnRpcmVseQorCSAqICAgICBmcm9tIHJvdyB0byByb3csIG1ha2luZyBpbnZlcnNlIHRy YW5zaXRpb24gb3B0aW1pemF0aW9uIGluYXBwbGljYWJsZQogCSAqCiAJICogTm90ZSB0aGF0IHdl IGRvbid0IHN0cmljdGx5IG5lZWQgdG8gcmVzdGFydCBpbiB0aGUgbGFzdCBjYXNlLCBidXQgaWYK IAkgKiB3ZSdyZSBnb2luZyB0byByZW1vdmUgYWxsIHJvd3MgZnJvbSB0aGUgYWdncmVnYXRpb24g YW55d2F5LCBhIHJlc3RhcnQKQEAgLTgzNSw3ICs4NTcsOCBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0 ZXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQkJKHdpbnN0YXRlLT5hZ2dyZWdhdGVkYmFz ZSAhPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zICYmCiAJCQkgIU9pZElzVmFsaWQocGVyYWdnc3Rh dGUtPmludnRyYW5zZm5fb2lkKSkgfHwKIAkJCSh3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zICYgRlJB TUVPUFRJT05fRVhDTFVTSU9OKSB8fAotCQkJd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvIDw9IHdp bnN0YXRlLT5mcmFtZWhlYWRwb3MpCisJCQl3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8gPD0gd2lu c3RhdGUtPmZyYW1laGVhZHBvcyB8fAorCQkJcnByX2lzX2RlZmluZWQod2luc3RhdGUpKQogCQl7 CiAJCQlwZXJhZ2dzdGF0ZS0+cmVzdGFydCA9IHRydWU7CiAJCQludW1hZ2dzX3Jlc3RhcnQrKzsK QEAgLTk2NCw2ICs5ODcsMTQgQEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVzKFdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZSkKIAl7CiAJCXdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0byA9IHdpbnN0YXRlLT5m cmFtZWhlYWRwb3M7CiAJCUV4ZWNDbGVhclR1cGxlKGFnZ19yb3dfc2xvdCk7CisKKwkJLyoKKwkJ ICogSWYgUlBSIGlzIGRlZmluZWQsIHdlIGRvIG5vdCB1c2UgYWdncmVnYXRlZHVwdG9fbm9ucmVz dGFydGVkLiAgVG8KKwkJICogYXZvaWQgYXNzZXJ0aW9uIGZhaWx1cmUgYmVsb3csIHdlIHJlc2V0 IGFnZ3JlZ2F0ZWR1cHRvX25vbnJlc3RhcnRlZAorCQkgKiB0byBmcmFtZWhlYWRwb3MuCisJCSAq LworCQlpZiAocnByX2lzX2RlZmluZWQod2luc3RhdGUpKQorCQkJYWdncmVnYXRlZHVwdG9fbm9u cmVzdGFydGVkID0gd2luc3RhdGUtPmZyYW1laGVhZHBvczsKIAl9CiAKIAkvKgpAQCAtOTc1LDcg KzEwMDYsNyBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0ZXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl KQogCSAqLwogCWZvciAoOzspCiAJewotCQlpbnQJCQlyZXQ7CisJCWludDY0CQlyZXQ7CiAKIAkJ LyogRmV0Y2ggbmV4dCByb3cgaWYgd2UgZGlkbid0IGFscmVhZHkgKi8KIAkJaWYgKFR1cElzTnVs bChhZ2dfcm93X3Nsb3QpKQpAQCAtOTkzLDkgKzEwMjQsNDAgQEAgZXZhbF93aW5kb3dhZ2dyZWdh dGVzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkJCQkJCQkgIGFnZ19yb3dfc2xvdCwgZmFs c2UpOwogCQlpZiAocmV0IDwgMCkKIAkJCWJyZWFrOworCiAJCWlmIChyZXQgPT0gMCkKIAkJCWdv dG8gbmV4dF90dXBsZTsKIAorCQlpZiAocnByX2lzX2RlZmluZWQod2luc3RhdGUpKQorCQl7CisJ CQkvKgorCQkJICogSWYgY3VycmVudHBvcyBpcyBhbHJlYWR5IGRlY2lkZWQgYnV0IGFnZ3JlZ2F0 ZWR1cHRvIGlzIG5vdCB5ZXQKKwkJCSAqIGRldGVybWluZWQsIHdlJ3ZlIHBhc3NlZCB0aGUgbGFz dCByZWR1Y2VkIGZyYW1lLgorCQkJICovCisJCQlpZiAoZ2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVz KHdpbnN0YXRlLCB3aW5zdGF0ZS0+Y3VycmVudHBvcykKKwkJCQkhPSBSRl9OT1RfREVURVJNSU5F RCAmJgorCQkJCWdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyh3aW5zdGF0ZSwgd2luc3RhdGUtPmFn Z3JlZ2F0ZWR1cHRvKQorCQkJCT09IFJGX05PVF9ERVRFUk1JTkVEKQorCQkJCWJyZWFrOworCisJ CQkvKgorCQkJICogQ2FsY3VsYXRlIHRoZSByZWR1Y2VkIGZyYW1lIGZvciBhZ2dyZWdhdGVkdXB0 by4KKwkJCSAqLworCQkJcmV0ID0gcm93X2lzX2luX3JlZHVjZWRfZnJhbWUod2luc3RhdGUtPmFn Z193aW5vYmosCisJCQkJCQkJCQkJICB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8pOworCQkJaWYg KHJldCA9PSAtMSkJCS8qIHVubWF0Y2hlZCByb3cgKi8KKwkJCQlicmVhazsKKworCQkJLyoKKwkJ CSAqIENoZWNrIGlmIGN1cnJlbnQgcm93IGlzIGluc2lkZSBhIG1hdGNoIGJ1dCBub3QgdGhlIGhl YWQKKwkJCSAqIChza2lwcGVkKSwgYW5kIGl0J3MgdGhlIGJhc2Ugcm93IGZvciBhZ2dyZWdhdGlv bi4KKwkJCSAqLworCQkJaWYgKGdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyh3aW5zdGF0ZSwKKwkJ CQkJCQkJCQkgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvKSA9PSBSRl9TS0lQUEVEICYmCisJCQkJ d2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvID09IHdpbnN0YXRlLT5hZ2dyZWdhdGVkYmFzZSkKKwkJ CQlicmVhazsKKwkJfQorCiAJCS8qIFNldCB0dXBsZSBjb250ZXh0IGZvciBldmFsdWF0aW9uIG9m IGFnZ3JlZ2F0ZSBhcmd1bWVudHMgKi8KIAkJd2luc3RhdGUtPnRtcGNvbnRleHQtPmVjeHRfb3V0 ZXJ0dXBsZSA9IGFnZ19yb3dfc2xvdDsKIApAQCAtMTAyNCw2ICsxMDg2LDcgQEAgbmV4dF90dXBs ZToKIAkJRXhlY0NsZWFyVHVwbGUoYWdnX3Jvd19zbG90KTsKIAl9CiAKKwogCS8qIFRoZSBmcmFt ZSdzIGVuZCBpcyBub3Qgc3VwcG9zZWQgdG8gbW92ZSBiYWNrd2FyZHMsIGV2ZXIgKi8KIAlBc3Nl cnQoYWdncmVnYXRlZHVwdG9fbm9ucmVzdGFydGVkIDw9IHdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0 byk7CiAKQEAgLTExOTEsNiArMTI1NCwyOCBAQCBwcmVwYXJlX3R1cGxlc3RvcmUoV2luZG93QWdn U3RhdGUgKndpbnN0YXRlKQogCQl9CiAJfQogCisJLyogQ3JlYXRlIHJlYWQvbWFyayBwb2ludGVy cyBmb3IgUlBSIG5hdmlnYXRpb24gaWYgbmVlZGVkICovCisJaWYgKHdpbnN0YXRlLT5uYXZfd2lu b2JqKQorCXsKKwkJLyoKKwkJICogQWxsb2NhdGUgbWFyayBhbmQgcmVhZCBwb2ludGVycyBmb3Ig UlBSIG5hdmlnYXRpb24uCisJCSAqCisJCSAqIElmIG5hdk1heE9mZnNldEtpbmQgPT0gUlBSX05B Vl9PRkZTRVRfRklYRUQsIHdlIGFkdmFuY2UgdGhlIG1hcmsKKwkJICogYmFzZWQgb24gKGN1cnJl bnRwb3MgLSBuYXZNYXhPZmZzZXQpIGFuZCBvcHRpb25hbGx5CisJCSAqIChuZmFDb250ZXh0LT5t YXRjaFN0YXJ0Um93ICsgbmF2Rmlyc3RPZmZzZXQpLCBhbGxvd2luZworCQkgKiB0dXBsZXN0b3Jl X3RyaW0oKSB0byBmcmVlIHJvd3MgdGhhdCBhcmUgbm8gbG9uZ2VyIHJlYWNoYWJsZS4KKwkJICoK KwkJICogUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCBpcyByZXNvbHZlZCBhdCBleGVjdXRvciBp bml0OyBieSB0aGlzCisJCSAqIHBvaW50IGl0IGlzIGVpdGhlciBGSVhFRCBvciBSRVRBSU5fQUxM LgorCQkgKi8KKwkJd2luc3RhdGUtPm5hdl93aW5vYmotPm1hcmtwdHIgPQorCQkJdHVwbGVzdG9y ZV9hbGxvY19yZWFkX3BvaW50ZXIod2luc3RhdGUtPmJ1ZmZlciwgMCk7CisJCXdpbnN0YXRlLT5u YXZfd2lub2JqLT5yZWFkcHRyID0KKwkJCXR1cGxlc3RvcmVfYWxsb2NfcmVhZF9wb2ludGVyKHdp bnN0YXRlLT5idWZmZXIsCisJCQkJCQkJCQkJICBFWEVDX0ZMQUdfQkFDS1dBUkQpOworCQl3aW5z dGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcyA9IDA7CisJfQorCiAJLyoKIAkgKiBJZiB3ZSBhcmUg aW4gUkFOR0Ugb3IgR1JPVVBTIG1vZGUsIHRoZW4gZGV0ZXJtaW5pbmcgZnJhbWUgYm91bmRhcmll cwogCSAqIHJlcXVpcmVzIHBoeXNpY2FsIGFjY2VzcyB0byB0aGUgZnJhbWUgZW5kcG9pbnQgcm93 cywgZXhjZXB0IGluIGNlcnRhaW4KQEAgLTEyNDcsNiArMTMzMiw4IEBAIGJlZ2luX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJd2luc3RhdGUtPmZyYW1laGVhZF92YWxpZCA9 IGZhbHNlOwogCXdpbnN0YXRlLT5mcmFtZXRhaWxfdmFsaWQgPSBmYWxzZTsKIAl3aW5zdGF0ZS0+ Z3JvdXB0YWlsX3ZhbGlkID0gZmFsc2U7CisJaWYgKHJwcl9pc19kZWZpbmVkKHdpbnN0YXRlKSkK KwkJY2xlYXJfcmVkdWNlZF9mcmFtZSh3aW5zdGF0ZSk7CiAJd2luc3RhdGUtPnNwb29sZWRfcm93 cyA9IDA7CiAJd2luc3RhdGUtPmN1cnJlbnRwb3MgPSAwOwogCXdpbnN0YXRlLT5mcmFtZWhlYWRw b3MgPSAwOwpAQCAtMTMwMCw2ICsxMzg3LDEzIEBAIGJlZ2luX3BhcnRpdGlvbihXaW5kb3dBZ2dT dGF0ZSAqd2luc3RhdGUpCiAJCXdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0byA9IDA7CiAJfQogCisJ LyogcmVzZXQgbWFyayBhbmQgc2VlayBwb3NpdGlvbnMgZm9yIFJQUiBuYXZpZ2F0aW9uICovCisJ aWYgKHdpbnN0YXRlLT5uYXZfd2lub2JqKQorCXsKKwkJd2luc3RhdGUtPm5hdl93aW5vYmotPm1h cmtwb3MgPSAtMTsKKwkJd2luc3RhdGUtPm5hdl93aW5vYmotPnNlZWtwb3MgPSAtMTsKKwl9CisK IAkvKiByZXNldCBtYXJrIGFuZCBzZWVrIHBvc2l0aW9ucyBmb3IgZWFjaCByZWFsIHdpbmRvdyBm dW5jdGlvbiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtZnVuY3M7IGkrKykKIAl7CkBAIC0x NDY4LDYgKzE1NjIsMjEgQEAgcmVsZWFzZV9wYXJ0aXRpb24oV2luZG93QWdnU3RhdGUgKndpbnN0 YXRlKQogCQl0dXBsZXN0b3JlX2NsZWFyKHdpbnN0YXRlLT5idWZmZXIpOwogCXdpbnN0YXRlLT5w YXJ0aXRpb25fc3Bvb2xlZCA9IGZhbHNlOwogCXdpbnN0YXRlLT5uZXh0X3BhcnRpdGlvbiA9IHRy dWU7CisKKwkvKiBSZXNldCBSUFIgbWF0Y2ggcmVzdWx0cyAqLworCWNsZWFyX3JlZHVjZWRfZnJh bWUod2luc3RhdGUpOworCisJLyogUmVzZXQgTkZBIHN0YXRlIGZvciBuZXcgcGFydGl0aW9uICov CisJd2luc3RhdGUtPm5mYUNvbnRleHQgPSBOVUxMOworCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFp bCA9IE5VTEw7CisJd2luc3RhdGUtPm5mYUNvbnRleHRGcmVlID0gTlVMTDsKKwl3aW5zdGF0ZS0+ bmZhU3RhdGVGcmVlID0gTlVMTDsKKwl3aW5zdGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdyA9IC0x OworCXdpbnN0YXRlLT5uZmFTdGF0ZXNBY3RpdmUgPSAwOworCXdpbnN0YXRlLT5uZmFDb250ZXh0 c0FjdGl2ZSA9IDA7CisKKwkvKiBJbnZhbGlkYXRlIHRoZSBuYXYgc2xvdCBwb3NpdGlvbiBjYWNo ZSBmb3IgdGhlIG5ldyBwYXJ0aXRpb24uICovCisJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0x OwogfQogCiAvKgpAQCAtMjI2Myw2ICsyMzcyLDE2IEBAIGNhbGN1bGF0ZV9mcmFtZV9vZmZzZXRz KFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUFJFQ0VESU5HX09SX0ZPTExPV0lOR19TSVpFKSwKIAkJCQkJCSBlcnJt c2coImZyYW1lIGVuZGluZyBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSkpOworCisJCQkv KgorCQkJICogUm93IHBhdHRlcm4gcmVjb2duaXRpb24gZm9yYmlkcyBhIHplcm8tbGVuZ3RoIGZy YW1lIGVuZDsKKwkJCSAqIGNoZWNrZWQgaGVyZSBzbyBhIG5vbi1jb25zdGFudCBvZmZzZXQgKGUu Zy4gYSBiaW5kIHBhcmFtZXRlcikKKwkJCSAqIGlzIGNhdWdodCwgbm90IGp1c3QgYSBsaXRlcmFs IDAuCisJCQkgKi8KKwkJCWlmICh3aW5zdGF0ZS0+cnBQYXR0ZXJuICE9IE5VTEwgJiYgb2Zmc2V0 ID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9XSU5ET1dJ TkdfRVJST1IpLAorCQkJCQkJZXJybXNnKCJmcmFtZSBlbmRpbmcgb2Zmc2V0IG11c3QgYmUgcG9z aXRpdmUgd2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiIpKTsKIAkJfQogCX0KIAl3aW5zdGF0 ZS0+YWxsX2ZpcnN0ID0gZmFsc2U7CkBAIC0yMzk2LDYgKzI1MTUsMTYgQEAgRXhlY1dpbmRvd0Fn ZyhQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJLyogZG9uJ3QgZXZhbHVhdGUgdGhlIHdpbmRvdyBmdW5j dGlvbnMgd2hlbiB3ZSdyZSBpbiBwYXNzLXRocm91Z2ggbW9kZSAqLwogCQlpZiAod2luc3RhdGUt PnN0YXR1cyA9PSBXSU5ET1dBR0dfUlVOKQogCQl7CisJCQkvKgorCQkJICogSWYgUlBSIGlzIGRl ZmluZWQgYW5kIHNraXAgbW9kZSBpcyBuZXh0IHJvdywgY2xlYXIgdGhlIGN1cnJlbnQKKwkJCSAq IG1hdGNoIHNvIHRoZSBuZXh0IHJvdyB0cmlnZ2VycyByZS1ldmFsdWF0aW9uLgorCQkJICovCisJ CQlpZiAocnByX2lzX2RlZmluZWQod2luc3RhdGUpKQorCQkJeworCQkJCWlmICh3aW5zdGF0ZS0+ cnBTa2lwVG8gPT0gU1RfTkVYVF9ST1cpCisJCQkJCWNsZWFyX3JlZHVjZWRfZnJhbWUod2luc3Rh dGUpOworCQkJfQorCiAJCQkvKgogCQkJICogRXZhbHVhdGUgdHJ1ZSB3aW5kb3cgZnVuY3Rpb25z CiAJCQkgKi8KQEAgLTI0MzUsNiArMjU2NCw0MyBAQCBFeGVjV2luZG93QWdnKFBsYW5TdGF0ZSAq cHN0YXRlKQogCQlpZiAod2luc3RhdGUtPmdyb3VwdGFpbF9wdHIgPj0gMCkKIAkJCXVwZGF0ZV9n cm91cHRhaWxwb3Mod2luc3RhdGUpOwogCisJCS8qCisJCSAqIEFkdmFuY2UgUlBSIG5hdmlnYXRp b24gbWFyayBwb2ludGVyIGlmIHBvc3NpYmxlLCBzbyB0aGF0CisJCSAqIHR1cGxlc3RvcmVfdHJp bSgpIGNhbiBmcmVlIHJvd3Mgbm8gbG9uZ2VyIHJlYWNoYWJsZSBieSBuYXZpZ2F0aW9uLgorCQkg Ki8KKwkJaWYgKHdpbnN0YXRlLT5uYXZfd2lub2JqICYmCisJCQl3aW5zdGF0ZS0+cnBQYXR0ZXJu ICE9IE5VTEwgJiYKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZG U0VUX0ZJWEVEKQorCQl7CisJCQlpbnQ2NAkJbmF2bWFya3BvczsKKworCQkJLyogQmFja3dhcmQg cmVhY2ggZnJvbSBQUkVWL0xBU1QvY29tcG91bmQgUFJFVl9MQVNUL05FWFRfTEFTVCAqLworCQkJ aWYgKHdpbnN0YXRlLT5jdXJyZW50cG9zID4gd2luc3RhdGUtPm5hdk1heE9mZnNldCkKKwkJCQlu YXZtYXJrcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3MgLSB3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0 OworCQkJZWxzZQorCQkJCW5hdm1hcmtwb3MgPSAwOworCisJCQkvKgorCQkJICogSWYgRklSU1Qg aXMgdXNlZCwgYWxzbyBjb25zaWRlciBtYXRjaF9zdGFydCArIG5hdkZpcnN0T2Zmc2V0LgorCQkJ ICogVGhlIG9sZGVzdCBhY3RpdmUgY29udGV4dCAobmZhQ29udGV4dCkgaGFzIHRoZSBzbWFsbGVz dAorCQkJICogbWF0Y2hTdGFydFJvdy4KKwkJCSAqLworCQkJaWYgKHdpbnN0YXRlLT5oYXNGaXJz dE5hdiAmJgorCQkJCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZT RVRfRklYRUQgJiYKKwkJCQl3aW5zdGF0ZS0+bmZhQ29udGV4dCAhPSBOVUxMKQorCQkJeworCQkJ CWludDY0CQlmaXJzdHJlYWNoOworCisJCQkJaWYgKCFwZ19hZGRfczY0X292ZXJmbG93KHdpbnN0 YXRlLT5uZmFDb250ZXh0LT5tYXRjaFN0YXJ0Um93LAorCQkJCQkJCQkJCSB3aW5zdGF0ZS0+bmF2 Rmlyc3RPZmZzZXQsCisJCQkJCQkJCQkJICZmaXJzdHJlYWNoKSkKKwkJCQkJbmF2bWFya3BvcyA9 IE1pbihuYXZtYXJrcG9zLCBNYXgoZmlyc3RyZWFjaCwgMCkpOworCQkJfQorCisJCQlpZiAobmF2 bWFya3BvcyA+IHdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcG9zKQorCQkJCVdpblNldE1hcmtQ b3NpdGlvbih3aW5zdGF0ZS0+bmF2X3dpbm9iaiwgbmF2bWFya3Bvcyk7CisJCX0KKwogCQkvKgog CQkgKiBUcnVuY2F0ZSBhbnkgbm8tbG9uZ2VyLW5lZWRlZCByb3dzIGZyb20gdGhlIHR1cGxlc3Rv cmUuCiAJCSAqLwpAQCAtMjY2MCw2ICsyODI2LDIwIEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRv d0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJd2luc3RhdGUtPnRlbXBf c2xvdF8yID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAogCQkJCQkJ CQkJCQkJICAgJlRUU09wc01pbmltYWxUdXBsZSk7CiAKKwlpZiAobm9kZS0+cnBQYXR0ZXJuICE9 IE5VTEwpCisJeworCQl3aW5zdGF0ZS0+bmF2X3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90 KGVzdGF0ZSwgc2NhbkRlc2MsCisJCQkJCQkJCQkJCQkJJlRUU09wc01pbmltYWxUdXBsZSk7CisJ CXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsKKworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xv dCA9IEV4ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKKwkJCQkJCQkJCQkJ CQkJICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCA9IEV4 ZWNTdG9yZUFsbE51bGxUdXBsZSh3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCk7CisKKwkJd2luc3Rh dGUtPm5hdl9zYXZlZF9vdXRlcnR1cGxlID0gTlVMTDsKKwkJd2luc3RhdGUtPm5hdl9tYXRjaF9z dGFydCA9IDA7CisJfQorCiAJLyoKIAkgKiBjcmVhdGUgZnJhbWUgaGVhZCBhbmQgdGFpbCBzbG90 cyBvbmx5IGlmIG5lZWRlZCAobXVzdCBjcmVhdGUgc2xvdHMgaW4KIAkgKiBleGFjdGx5IHRoZSBz YW1lIGNhc2VzIHRoYXQgdXBkYXRlX2ZyYW1laGVhZHBvcyBhbmQgdXBkYXRlX2ZyYW1ldGFpbHBv cwpAQCAtMjgyOCw2ICszMDA4LDIzIEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXdpbnN0YXRlLT5hZ2dfd2lub2JqID0g YWdnX3dpbm9iajsKIAl9CiAKKwkvKgorCSAqIFNldCB1cCBXaW5kb3dPYmplY3QgZm9yIFJQUiBu YXZpZ2F0aW9uIG9wY29kZXMuICBUaGlzIGlzIHNlcGFyYXRlIGZyb20KKwkgKiBhZ2dfd2lub2Jq IGJlY2F1c2UgaXQgbmVlZHMgaXRzIG93biByZWFkIHBvaW50ZXIgdG8gYXZvaWQgaW50ZXJmZXJp bmcKKwkgKiB3aXRoIGFnZ3JlZ2F0ZSBwcm9jZXNzaW5nLgorCSAqLworCWlmIChub2RlLT5ycFBh dHRlcm4gIT0gTlVMTCkKKwl7CisJCVdpbmRvd09iamVjdCBuYXZfd2lub2JqID0gbWFrZU5vZGUo V2luZG93T2JqZWN0RGF0YSk7CisKKwkJbmF2X3dpbm9iai0+d2luc3RhdGUgPSB3aW5zdGF0ZTsK KwkJbmF2X3dpbm9iai0+YXJnc3RhdGVzID0gTklMOworCQluYXZfd2lub2JqLT5sb2NhbG1lbSA9 IE5VTEw7CisJCW5hdl93aW5vYmotPm1hcmtwdHIgPSAtMTsKKwkJbmF2X3dpbm9iai0+cmVhZHB0 ciA9IC0xOworCQl3aW5zdGF0ZS0+bmF2X3dpbm9iaiA9IG5hdl93aW5vYmo7CisJfQorCiAJLyog U2V0IHRoZSBzdGF0dXMgdG8gcnVubmluZyAqLwogCXdpbnN0YXRlLT5zdGF0dXMgPSBXSU5ET1dB R0dfUlVOOwogCkBAIC0yODQ2LDYgKzMwNDMsODEgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93 QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl3aW5zdGF0ZS0+aW5SYW5n ZUFzYyA9IG5vZGUtPmluUmFuZ2VBc2M7CiAJd2luc3RhdGUtPmluUmFuZ2VOdWxsc0ZpcnN0ID0g bm9kZS0+aW5SYW5nZU51bGxzRmlyc3Q7CiAKKwkvKiBTZXQgdXAgU0tJUCBUTyB0eXBlICovCisJ d2luc3RhdGUtPnJwU2tpcFRvID0gbm9kZS0+cnBTa2lwVG87CisJLyogU2V0IHVwIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIFBBVFRFUk4gY2xhdXNlIChjb21waWxlZCBORkEpICovCisJd2luc3Rh dGUtPnJwUGF0dGVybiA9IG5vZGUtPnJwUGF0dGVybjsKKwkvKiBTZXQgdXAgbmF2IG9mZnNldHMg Zm9yIHR1cGxlc3RvcmUgdHJpbTsgcmVzb2x2ZSBhbnkgTkVFRFNfRVZBTCBraW5kcyAqLworCXdp bnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID0gbm9kZS0+bmF2TWF4T2Zmc2V0S2luZDsKKwl3aW5z dGF0ZS0+bmF2TWF4T2Zmc2V0ID0gbm9kZS0+bmF2TWF4T2Zmc2V0OworCXdpbnN0YXRlLT5oYXNG aXJzdE5hdiA9IG5vZGUtPmhhc0ZpcnN0TmF2OworCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldEtp bmQgPSBub2RlLT5uYXZGaXJzdE9mZnNldEtpbmQ7CisJd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0 ID0gbm9kZS0+bmF2Rmlyc3RPZmZzZXQ7CisJZXZhbF9kZWZpbmVfb2Zmc2V0cyh3aW5zdGF0ZSwg bm9kZS0+ZGVmaW5lQ2xhdXNlKTsKKworCS8qIENvcHkgbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeSBi aXRtYXBzZXQgZm9yIHBlci1jb250ZXh0IGV2YWx1YXRpb24gKi8KKwl3aW5zdGF0ZS0+ZGVmaW5l TWF0Y2hTdGFydERlcGVuZGVudCA9IGJtc19jb3B5KG5vZGUtPmRlZmluZU1hdGNoU3RhcnREZXBl bmRlbnQpOworCisJLyogQ2FsY3VsYXRlIE5GQSBzdGF0ZSBzaXplIGFuZCBhbGxvY2F0ZSBjeWNs ZSBkZXRlY3Rpb24gYml0bWFwICovCisJaWYgKG5vZGUtPnJwUGF0dGVybiAhPSBOVUxMKQorCXsK KwkJaW50CQkJbmZhVmlzaXRlZE5Xb3JkczsKKworCQl3aW5zdGF0ZS0+bmZhU3RhdGVTaXplID0g b2Zmc2V0b2YoUlBSTkZBU3RhdGUsIGNvdW50cykgKworCQkJc2l6ZW9mKGludDMyKSAqIG5vZGUt PnJwUGF0dGVybi0+bWF4RGVwdGg7CisJCW5mYVZpc2l0ZWROV29yZHMgPQorCQkJKG5vZGUtPnJw UGF0dGVybi0+bnVtRWxlbWVudHMgLSAxKSAvIEJJVFNfUEVSX0JJVE1BUFdPUkQgKyAxOworCQl3 aW5zdGF0ZS0+bmZhVmlzaXRlZEVsZW1zID0gcGFsbG9jMChzaXplb2YoYml0bWFwd29yZCkgKgor CQkJCQkJCQkJCQluZmFWaXNpdGVkTldvcmRzKTsKKwkJLyogSGlnaC13YXRlciBtYXJrIHNlbnRp bmVsczogbm8gYml0cyBzZXQgeWV0LiAqLworCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmQg PSBQR19JTlQxNl9NQVg7CisJCXdpbnN0YXRlLT5uZmFWaXNpdGVkTWF4V29yZCA9IC0xOworCX0K KworCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBERUZJTkUgY2xhdXNlICovCisJ d2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsKKwl3aW5zdGF0ZS0+ZGVmaW5lQ2xh dXNlTGlzdCA9IE5JTDsKKwlpZiAobm9kZS0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkKKwl7CisJCS8q CisJCSAqIENvbXBpbGUgREVGSU5FIGNsYXVzZSBleHByZXNzaW9ucy4gIFBSRVYvTkVYVCBuYXZp Z2F0aW9uIGlzIGhhbmRsZWQKKwkJICogYnkgRUVPUF9SUFJfTkFWX1NFVC9SRVNUT1JFIG9wY29k ZXMgZW1pdHRlZCBkdXJpbmcgRXhlY0luaXRFeHByLCBzbworCQkgKiBubyB2YXJubyByZXdyaXRp bmcgaXMgbmVlZGVkIGhlcmUuCisJCSAqLworCQlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRl LCBub2RlLT5kZWZpbmVDbGF1c2UpCisJCXsKKwkJCWNoYXIJICAgKm5hbWUgPSB0ZS0+cmVzbmFt ZTsKKwkJCUV4cHIJICAgKmV4cHIgPSB0ZS0+ZXhwcjsKKwkJCUV4cHJTdGF0ZSAgKmV4cHM7CisK KwkJCXdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QgPQorCQkJCWxhcHBlbmQod2luc3RhdGUt PmRlZmluZVZhcmlhYmxlTGlzdCwKKwkJCQkJCW1ha2VTdHJpbmcocHN0cmR1cChuYW1lKSkpOwor CQkJZXhwcyA9IEV4ZWNJbml0RXhwcihleHByLCAoUGxhblN0YXRlICopIHdpbnN0YXRlKTsKKwkJ CXdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0ID0KKwkJCQlsYXBwZW5kKHdpbnN0YXRlLT5kZWZp bmVDbGF1c2VMaXN0LCBleHBzKTsKKwkJfQorCX0KKworCS8qIEluaXRpYWxpemUgTkZBIGZyZWUg bGlzdHMgZm9yIHJvdyBwYXR0ZXJuIG1hdGNoaW5nICovCisJd2luc3RhdGUtPm5mYUNvbnRleHQg PSBOVUxMOworCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCA9IE5VTEw7CisJd2luc3RhdGUtPm5m YUNvbnRleHRGcmVlID0gTlVMTDsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVGcmVlID0gTlVMTDsKKwl3 aW5zdGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdyA9IC0xOworCXdpbnN0YXRlLT5uZmFTdGF0ZXNB Y3RpdmUgPSAwOworCXdpbnN0YXRlLT5uZmFDb250ZXh0c0FjdGl2ZSA9IDA7CisKKwkvKgorCSAq IEFsbG9jYXRlIHZhck1hdGNoZWQgYXJyYXkgZm9yIE5GQSBldmFsdWF0aW9uLiBXaXRoIHRoZSBu ZXcgdmFyTmFtZXMKKwkgKiBvcmRlcmluZyAoREVGSU5FIG9yZGVyIGZpcnN0KSwgdmFySWQgPT0g ZGVmaW5lSWR4IGZvciBhbGwgZGVmaW5lZAorCSAqIHZhcmlhYmxlcywgc28gbm8gbWFwcGluZyBp cyBuZWVkZWQuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJs ZUxpc3QpID4gMCkKKwkJd2luc3RhdGUtPm5mYVZhck1hdGNoZWQgPSBwYWxsb2MwKHNpemVvZihi b29sKSAqCisJCQkJCQkJCQkJICBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVM aXN0KSk7CisJZWxzZQorCQl3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZCA9IE5VTEw7CiAJd2luc3Rh dGUtPmFsbF9maXJzdCA9IHRydWU7CiAJd2luc3RhdGUtPnBhcnRpdGlvbl9zcG9vbGVkID0gZmFs c2U7CiAJd2luc3RhdGUtPm1vcmVfcGFydGl0aW9ucyA9IGZhbHNlOwpAQCAtMjg1NCw2ICszMTI2 LDQyIEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJcmV0dXJuIHdpbnN0YXRlOwogfQogCisvKgorICogRXhlY1JQUk5hdkdl dFNsb3QKKyAqCisgKiBGZXRjaCB0dXBsZSBhdCBnaXZlbiBwb3NpdGlvbiBmb3IgUlBSIG5hdmln YXRpb24gb3Bjb2Rlcy4KKyAqIFJldHVybnMgbmF2X3Nsb3Qgd2l0aCB0aGUgdHVwbGUgbG9hZGVk LCBvciBuYXZfbnVsbF9zbG90IGlmIG91dCBvZiByYW5nZS4KKyAqLworVHVwbGVUYWJsZVNsb3Qg KgorRXhlY1JQUk5hdkdldFNsb3QoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBwb3Mp Cit7CisJV2luZG93T2JqZWN0IHdpbm9iaiA9IHdpbnN0YXRlLT5uYXZfd2lub2JqOworCVR1cGxl VGFibGVTbG90ICpzbG90ID0gd2luc3RhdGUtPm5hdl9zbG90OworCisJaWYgKHBvcyA8IDApCisJ CXJldHVybiB3aW5zdGF0ZS0+bmF2X251bGxfc2xvdDsKKworCS8qCisJICogSWYgbmF2X3Nsb3Qg YWxyZWFkeSBob2xkcyB0aGlzIHBvc2l0aW9uLCByZXR1cm4gaXQgd2l0aG91dCByZS1mZXRjaGlu Zy4KKwkgKiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gbXVsdGlwbGUgUFJFVi9ORVhUIGNhbGxzIGlu IHRoZSBzYW1lIGV4cHJlc3Npb24KKwkgKiBuYXZpZ2F0ZSB0byB0aGUgc2FtZSByb3csIGJlY2F1 c2UgcmUtZmV0Y2hpbmcgd291bGQgZnJlZSB0aGUgc2xvdCdzCisJICogdHVwbGUgbWVtb3J5IGFu ZCBpbnZhbGlkYXRlIGFueSBwYXNzLWJ5LXJlZiBEYXR1bSBwb2ludGVycyBmcm9tIGVhcmxpZXIK KwkgKiBuYXZpZ2F0aW9uIHJlc3VsdHMuCisJICovCisJaWYgKHdpbnN0YXRlLT5uYXZfc2xvdF9w b3MgPT0gcG9zKQorCQlyZXR1cm4gc2xvdDsKKworCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3 aW5vYmosIHBvcywgc2xvdCkpCisJeworCQl3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CisJ CXJldHVybiB3aW5zdGF0ZS0+bmF2X251bGxfc2xvdDsKKwl9CisKKwl3aW5zdGF0ZS0+bmF2X3Ns b3RfcG9zID0gcG9zOworCXJldHVybiBzbG90OworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0t CiAgKiBFeGVjRW5kV2luZG93QWdnCiAgKiAtLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjkxMSw2ICsz MjE5LDggQEAgRXhlY1JlU2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAlFeGVj Q2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRl bXBfc2xvdF8xKTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMik7CisJaWYgKG5v ZGUtPm5hdl9zbG90KQorCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5uYXZfc2xvdCk7CiAJaWYgKG5v ZGUtPmZyYW1laGVhZF9zbG90KQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5mcmFtZWhlYWRfc2xv dCk7CiAJaWYgKG5vZGUtPmZyYW1ldGFpbF9zbG90KQpAQCAtMzI3MSw3ICszNTgxLDggQEAgd2lu ZG93X2dldHR1cGxlc2xvdChXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIFR1cGxlVGFi bGVTbG90ICpzbG90KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAocG9zIDwgd2lub2JqLT5tYXJr cG9zKQotCQllbG9nKEVSUk9SLCAiY2Fubm90IGZldGNoIHJvdyBiZWZvcmUgV2luZG93T2JqZWN0 J3MgbWFyayBwb3NpdGlvbiIpOworCQllbG9nKEVSUk9SLCAiY2Fubm90IGZldGNoIHJvdzogIiBJ TlQ2NF9GT1JNQVQgIiBiZWZvcmUgV2luZG93T2JqZWN0J3MgbWFyayBwb3NpdGlvbjogIiBJTlQ2 NF9GT1JNQVQsCisJCQkgcG9zLCB3aW5vYmotPm1hcmtwb3MpOwogCiAJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyh3aW5zdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQtPmVjeHRf cGVyX3F1ZXJ5X21lbW9yeSk7CiAKQEAgLTMzODksNiArMzcwMCw3IEBAIGlnbm9yZW51bGxzX2dl dGZ1bmNhcmdpbmZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBhcmdubywKIAlpbnQJCQlu b3RudWxsX29mZnNldDsKIAlpbnQJCQlub3RudWxsX3JlbHBvczsKIAlpbnQJCQlmb3J3YXJkOwor CWludDY0CQludW1fcmVkdWNlZF9mcmFtZTsKIAogCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlk KHdpbm9iaikpOwogCXdpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKQEAgLTM0MTcsNiArMzcy OSwxMyBAQCBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2Jq LCBpbnQgYXJnbm8sCiAJCQkvKiByZWplY3RpbmcgcmVscG9zID4gMCBpcyBlYXN5IGFuZCBzaW1w bGlmaWVzIGNvZGUgYmVsb3cgKi8KIAkJCWlmIChyZWxwb3MgPiAwKQogCQkJCWdvdG8gb3V0X29m X2ZyYW1lOworCisJCQkvKgorCQkJICogUlBSIGNhcmVzIGFib3V0IGZyYW1lIGhlYWQgcG9zLiBO ZWVkIHRvIGNhbGwKKwkJCSAqIHVwZGF0ZV9mcmFtZWhlYWRwb3MKKwkJCSAqLworCQkJdXBkYXRl X2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7CisKIAkJCXVwZGF0ZV9mcmFtZXRhaWxwb3Mod2luc3Rh dGUpOwogCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MgLSAxOwogCQkJbWFya19w b3MgPSAwOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwpAQCAtMzQzMiw2ICszNzUxLDM1IEBA IGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBh cmdubywKIAkgKiBHZXQgdGhlIG5leHQgbm9ubnVsbCB2YWx1ZSBpbiB0aGUgZnJhbWUsIG1vdmlu ZyBmb3J3YXJkIG9yIGJhY2t3YXJkCiAJICogdW50aWwgd2UgZmluZCBhIHZhbHVlIG9yIHJlYWNo IHRoZSBmcmFtZSdzIGVuZC4KIAkgKi8KKworCS8qCisJICogQ2hlY2sgd2hldGhlciBjdXJyZW50 IHJvdyBpcyBpbiByZWR1Y2VkIGZyYW1lLgorCSAqLworCW51bV9yZWR1Y2VkX2ZyYW1lID0gcm93 X2lzX2luX3JlZHVjZWRfZnJhbWUod2lub2JqLCB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKTsKKwlp ZiAobnVtX3JlZHVjZWRfZnJhbWUgPCAwKQkvKiB1bm1hdGNoZWQgb3Igc2tpcHBlZCByb3cgKi8K KwkJZ290byBvdXRfb2ZfZnJhbWU7CisJZWxzZSBpZiAobnVtX3JlZHVjZWRfZnJhbWUgPiAwKSAv KiB0aGUgZmlyc3Qgcm93IG9mIHRoZSByZWR1Y2VkIGZyYW1lICovCisJeworCQkvKgorCQkgKiBF YXJseSBjaGVjayBpZiByb3cgY291bGQgYmUgb3V0IG9mIHJlZHVjZWQgZnJhbWUuICBXaGVuIFJQ UiBpcworCQkgKiBlbmFibGVkLCBFWENMVURFIGNsYXVzZSBjYW5ub3QgYmUgc3BlY2lmaWVkIGFu ZCB0aGUgZnJhbWUgaXMgYWx3YXlzCisJCSAqIGNvbnRpZ3VvdXMuICBTbyB3ZSBjYW4gc2FmZWx5 IHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVja3MuIE5vdGUsCisJCSAqIGhvd2V2ZXIsIGl0IGlz IHBvc3NpYmxlIHRoYXQgYSByb3cgaXMgb3V0IG9mIHJlZHVjZWQgZnJhbWUgaWYKKwkJICogdGhl cmUncyBhIE5VTEwgaW4gdGhlIG1pZGRsZS4gU28gd2UgbmVlZCB0byBjaGVjayBpdCBpbiB0aGUK KwkJICogZm9sbG93aW5nIGRvIGxvb3AuCisJCSAqLworCQlpZiAoc2Vla3R5cGUgPT0gV0lORE9X X1NFRUtfSEVBRCAmJiByZWxwb3MgPj0gbnVtX3JlZHVjZWRfZnJhbWUpCisJCQlnb3RvIG91dF9v Zl9mcmFtZTsKKwkJaWYgKHNlZWt0eXBlID09IFdJTkRPV19TRUVLX1RBSUwpCisJCXsKKwkJCWlm IChub3RudWxsX3JlbHBvcyA+PSBudW1fcmVkdWNlZF9mcmFtZSkKKwkJCQlnb3RvIG91dF9vZl9m cmFtZTsKKworCQkJLyogbm90IG91dCBvZiByZWR1Y2VkIGZyYW1lLiBTZXQgYWJzcG9zIGFzIGEg c3RhcnRpbmcgcG9pbnQgKi8KKwkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zICsg bnVtX3JlZHVjZWRfZnJhbWUgLSAxOworCQl9CisJfQorCiAJZG8KIAl7CiAJCWludAkJCWluZnJh bWU7CkBAIC0zNDkzLDYgKzM4NDEsMTYgQEAgaWdub3JlbnVsbHNfZ2V0ZnVuY2FyZ2luZnJhbWUo V2luZG93T2JqZWN0IHdpbm9iaiwgaW50IGFyZ25vLAogCQl9CiBhZHZhbmNlOgogCQlhYnNfcG9z ICs9IGZvcndhcmQ7CisJCWlmIChycHJfaXNfZGVmaW5lZCh3aW5zdGF0ZSkpCisJCXsKKwkJCS8q CisJCQkgKiBDaGVjayB3aGV0aGVyIHdlIGFyZSBzdGlsbCBpbiB0aGUgcmVkdWNlZCBmcmFtZS4g IChhbHNvIGNoZWNrCisJCQkgKiBpZiB3ZSBzdWNjZWVkZWQgaW4gZ2V0dGluZyB0aGUgdGFyZ2V0 IHJvdykuCisJCQkgKi8KKwkJCW51bV9yZWR1Y2VkX2ZyYW1lLS07CisJCQlpZiAobnVtX3JlZHVj ZWRfZnJhbWUgPD0gMCAmJiBub3RudWxsX29mZnNldCA8PSBub3RudWxsX3JlbHBvcykKKwkJCQln b3RvIG91dF9vZl9mcmFtZTsKKwkJfQogCX0gd2hpbGUgKG5vdG51bGxfb2Zmc2V0IDw9IG5vdG51 bGxfcmVscG9zKTsKIAogCWlmIChzZXRfbWFyaykKQEAgLTM2MzUsODcgKzM5OTMsOTQwIEBAIHB1 dF9ub3RudWxsX2luZm8oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBpbnQgYXJnbm8s IGJvb2wgaXNudWxsKQogCW1icFticG9zXSA9IG1iOwogfQogCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAq IEFQSSBleHBvc2VkIHRvIHdpbmRvdyBmdW5jdGlvbnMKLSAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisg KiBldmFsX25hdl9vZmZzZXRfaGVscGVyCisgKgkJRXZhbHVhdGUgYW4gb2Zmc2V0IGV4cHJlc3Np b24gYXQgZXhlY3V0b3IgaW5pdCB0aW1lIGZvciB0cmltCisgKgkJb3B0aW1pemF0aW9uLiAgUmV0 dXJucyB0aGUgb2Zmc2V0IHZhbHVlLCBvciAwIGZvciBOVUxML25lZ2F0aXZlCisgKgkJKHRoZXNl IHdpbGwgY2F1c2UgYSBydW50aW1lIGVycm9yIGR1cmluZyBhY3R1YWwgbmF2aWdhdGlvbiwgc28g dGhlCisgKgkJdHJpbSB2YWx1ZSBpcyBpcnJlbGV2YW50KS4KKyAqLworc3RhdGljIGludDY0Citl dmFsX25hdl9vZmZzZXRfaGVscGVyKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwciAqb2Zm c2V0X2V4cHIsCisJCQkJCSAgIGludDY0IGRlZmF1bHRPZmZzZXQpCit7CisJRXhwckNvbnRleHQg KmVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCUV4cHJTdGF0ZSAg KmVzdGF0ZTsKKwlEYXR1bQkJdmFsOworCWJvb2wJCWlzbnVsbDsKKwlpbnQ2NAkJb2Zmc2V0Owor CisJaWYgKG9mZnNldF9leHByID09IE5VTEwpCisJCXJldHVybiBkZWZhdWx0T2Zmc2V0OworCisJ ZXN0YXRlID0gRXhlY0luaXRFeHByKG9mZnNldF9leHByLCAoUGxhblN0YXRlICopIHdpbnN0YXRl KTsKKwl2YWwgPSBFeGVjRXZhbEV4cHJTd2l0Y2hDb250ZXh0KGVzdGF0ZSwgZWNvbnRleHQsICZp c251bGwpOwogCisJaWYgKGlzbnVsbCkKKwkJcmV0dXJuIDA7CisKKwlvZmZzZXQgPSBEYXR1bUdl dEludDY0KHZhbCk7CisJaWYgKG9mZnNldCA8IDApCisJCXJldHVybiAwOworCisJcmV0dXJuIG9m ZnNldDsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGU7 CisJaW50NjQJCW1heE9mZnNldDsJCS8qIG1heCBiYWNrd2FyZC1yZWFjaCBvZmZzZXQgYWNyb3Nz IGFsbCBuYXYKKwkJCQkJCQkJICogZXhwcnMgKi8KKwlib29sCQltYXhPdmVyZmxvdzsJLyogdHJ1 ZSBpZiBiYWNrd2FyZC1yZWFjaCBvdmVyZmxvdyBkZXRlY3RlZCAqLworCWludDY0CQltaW5GaXJz dE9mZnNldDsgLyogbWluIGZvcndhcmQtZnJvbS1tYXRjaF9zdGFydCBvZmZzZXQ7IG1heSBiZQor CQkJCQkJCQkgKiBuZWdhdGl2ZSAoUFJFVl9GSVJTVDogaW5uZXIgLSBvdXRlciA8IDApICovCit9 IEV2YWxEZWZpbmVPZmZzZXRzQ29udGV4dDsKIAogLyoKLSAqIFdpbkNoZWNrQW5kSW5pdGlhbGl6 ZU51bGxUcmVhdG1lbnQKLSAqCQlDaGVjayBudWxsIHRyZWF0bWVudCBjbGF1c2UgYW5kIHNldHMg aWdub3JlX251bGxzCisgKiB2aXNpdF9uYXZfZXhlYworICoJCW5hdl90cmF2ZXJzYWxfd2Fsa2Vy IGNhbGxiYWNrIChOYXZWaXNpdEZuKSBmb3IgdGhlIGV4ZWN1dG9yIHNpZGUuCisgKgkJQXQgZWFj aCBSUFJOYXZFeHByLCBldmFsdWF0ZXMgdGhlIG5hdidzIG9mZnNldCBleHByZXNzaW9uKHMpIGF0 CisgKgkJcnVudGltZSB2aWEgZXZhbF9uYXZfb2Zmc2V0X2hlbHBlciBhbmQgYWNjdW11bGF0ZXM6 CiAgKgotICogV2luZG93IGZ1bmN0aW9ucyBzaG91bGQgY2FsbCB0aGlzIHRvIGNoZWNrIGlmIHRo ZXkgYXJlIGJlaW5nIGNhbGxlZCB3aXRoCi0gKiBhIG51bGwgdHJlYXRtZW50IGNsYXVzZSB3aGVu IHRoZXkgZG9uJ3QgYWxsb3cgaXQsIG9yIHRvIHNldCBpZ25vcmVfbnVsbHMuCisgKgkJICAtIG1h eE9mZnNldCAoYmFja3dhcmQgcmVhY2gpOiBQUkVWLCBMQVNULXdpdGgtb2Zmc2V0LCBjb21wb3Vu ZAorICoJCQlQUkVWX0xBU1QgKHNldHMgbWF4T3ZlcmZsb3cgb24gaW50NjQgb3ZlcmZsb3cpLCBj b21wb3VuZAorICoJCQlORVhUX0xBU1QgKD0gbWF4KGlubmVyIC0gb3V0ZXIsIDApKQorICoJCSAg LSBtaW5GaXJzdE9mZnNldCAoZm9yd2FyZCByZWFjaCBmcm9tIG1hdGNoX3N0YXJ0KTogRklSU1Qs CisgKgkJCWNvbXBvdW5kIFBSRVZfRklSU1QgKD0gaW5uZXIgLSBvdXRlciwgbWF5IGJlIG5lZ2F0 aXZlKSwKKyAqCQkJY29tcG91bmQgTkVYVF9GSVJTVCAoPSBpbm5lciArIG91dGVyLCBjbGFtcGVk IHRvIFBHX0lOVDY0X01BWCBvbgorICoJCQlvdmVyZmxvdzsgYWx3YXlzID49IDAgc28gbmV2ZXIg dXBkYXRlcyBtaW5GaXJzdE9mZnNldCBpbiBwcmFjdGljZSkKKyAqCisgKiBDb3VudGVycGFydCBv ZiB2aXNpdF9uYXZfcGxhbiBidXQgdXNpbmcgcnVudGltZSBldmFsdWF0aW9uIGluc3RlYWQgb2YK KyAqIENvbnN0IGZvbGRpbmc7IHJ1bnMgb25seSBmb3Igb2Zmc2V0cyB0aGUgcGxhbm5lciBtYXJr ZWQgTkVFRFNfRVZBTC4KKyAqIE1hdGNoLXN0YXJ0IGRlcGVuZGVuY3kgaXMgbm90IHJlY29tcHV0 ZWQgaGVyZSAtLSB0aGUgcGxhbm5lcidzIGJpdG1hcHNldAorICogaXMgcmV1c2VkIHZpYSB3aW5z dGF0ZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudC4KICAqLwotdm9pZAotV2luQ2hlY2tBbmRJ bml0aWFsaXplTnVsbFRyZWF0bWVudChXaW5kb3dPYmplY3Qgd2lub2JqLAotCQkJCQkJCQkgICBi b29sIGFsbG93TnVsbFRyZWF0bWVudCwKLQkJCQkJCQkJICAgRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8pCitzdGF0aWMgdm9pZAordmlzaXRfbmF2X2V4ZWMoTmF2VHJhdmVyc2FsICp0LCBSUFJOYXZF eHByICpuYXYpCiB7Ci0JQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2JqKSk7Ci0JaWYg KHdpbm9iai0+aWdub3JlX251bGxzICE9IE5PX05VTExUUkVBVE1FTlQgJiYgIWFsbG93TnVsbFRy ZWF0bWVudCkKKwlFdmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQgKmNvbnRleHQgPSAoRXZhbERlZmlu ZU9mZnNldHNDb250ZXh0ICopIHQtPmRhdGE7CisKKwkvKgorCSAqIFBhcnNlciBndWFyYW50ZWUg KG1pcnJvcnMgdmlzaXRfbmF2X3BsYW4pOiBuYXYncyBkaXJlY3QgY2hpbGRyZW4gYXJlCisJICog bmV2ZXIgUlBSTmF2RXhwciAtLSBjb21wb3VuZCBuZXN0aW5nIGlzIGZsYXR0ZW5lZCBpbiBwbGFj ZSBhbmQgYW55CisJICogb3RoZXIgbmVzdGluZyBpcyByZWplY3RlZC4gIE91dGVyLWtpbmQgZGlz cGF0Y2ggaXMgc3VmZmljaWVudC4KKwkgKi8KKwlBc3NlcnQobmF2LT5hcmcgPT0gTlVMTCB8fCAh SXNBKG5hdi0+YXJnLCBSUFJOYXZFeHByKSk7CisJQXNzZXJ0KG5hdi0+b2Zmc2V0X2FyZyA9PSBO VUxMIHx8ICFJc0EobmF2LT5vZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CisJQXNzZXJ0KG5hdi0+ Y29tcG91bmRfb2Zmc2V0X2FyZyA9PSBOVUxMIHx8CisJCSAgICFJc0EobmF2LT5jb21wb3VuZF9v ZmZzZXRfYXJnLCBSUFJOYXZFeHByKSk7CisKKwkvKiBCYWNrd2FyZCByZWFjaDogUFJFViwgTEFT VC13aXRoLW9mZnNldCAqLworCWlmICghY29udGV4dC0+bWF4T3ZlcmZsb3cpCiAJewotCQljb25z dCBjaGFyICpmdW5jbmFtZSA9IGdldF9mdW5jX25hbWUoZmNpbmZvLT5mbGluZm8tPmZuX29pZCk7 CisJCWludDY0CQlyZWFjaCA9IDA7CisJCWJvb2wJCWdvdFJlYWNoID0gZmFsc2U7CiAKLQkJaWYg KCFmdW5jbmFtZSkKLQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZ2V0IGZ1bmN0aW9uIG5hbWUi KTsKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJIGVycm1zZygiZnVuY3Rpb24gJXMgZG9lcyBub3QgYWxsb3cgUkVTUEVD VC9JR05PUkUgTlVMTFMiLAotCQkJCQkJZnVuY25hbWUpKSk7CisJCWlmIChuYXYtPmtpbmQgPT0g UlBSX05BVl9QUkVWKQorCQl7CisJCQlyZWFjaCA9IGV2YWxfbmF2X29mZnNldF9oZWxwZXIoY29u dGV4dC0+d2luc3RhdGUsCisJCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJnLCAxKTsKKwkJCWdv dFJlYWNoID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9MQVNU ICYmIG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKQorCQl7CisJCQlyZWFjaCA9IGV2YWxfbmF2X29m ZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3RhdGUsCisJCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRf YXJnLCAwKTsKKwkJCWdvdFJlYWNoID0gdHJ1ZTsKKwkJfQorCQllbHNlIGlmIChuYXYtPmtpbmQg PT0gUlBSX05BVl9QUkVWX0xBU1QgfHwKKwkJCQkgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9M QVNUKQorCQl7CisJCQlpbnQ2NAkJaW5uZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRl eHQtPndpbnN0YXRlLAorCQkJCQkJCQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2FyZywgMCk7CisJCQlp bnQ2NAkJb3V0ZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAor CQkJCQkJCQkJCQkJCSAgIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSk7CisKKwkJCWlmIChu YXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0xBU1QpCisJCQl7CisJCQkJaWYgKHBnX2FkZF9zNjRf b3ZlcmZsb3coaW5uZXIsIG91dGVyLCAmcmVhY2gpKQorCQkJCQljb250ZXh0LT5tYXhPdmVyZmxv dyA9IHRydWU7CisJCQkJZWxzZQorCQkJCQlnb3RSZWFjaCA9IHRydWU7CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJcmVhY2ggPSBNYXgoaW5uZXIgLSBvdXRlciwgMCk7CisJCQkJZ290UmVhY2gg PSB0cnVlOworCQkJfQorCQl9CisKKwkJaWYgKGdvdFJlYWNoKQorCQkJY29udGV4dC0+bWF4T2Zm c2V0ID0gTWF4KGNvbnRleHQtPm1heE9mZnNldCwgcmVhY2gpOworCX0KKworCS8qIEZvcndhcmQg cmVhY2ggZnJvbSBtYXRjaF9zdGFydDogRklSU1QsIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9G SVJTVCAqLworCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCkKKwl7CisJCWludDY0CQly ZWFjaDsKKworCQlyZWFjaCA9IGV2YWxfbmF2X29mZnNldF9oZWxwZXIoY29udGV4dC0+d2luc3Rh dGUsCisJCQkJCQkJCQkgICBuYXYtPm9mZnNldF9hcmcsIDApOworCQljb250ZXh0LT5taW5GaXJz dE9mZnNldCA9IE1pbihjb250ZXh0LT5taW5GaXJzdE9mZnNldCwgcmVhY2gpOworCX0KKwllbHNl IGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNUIHx8CisJCQkgbmF2LT5raW5kID09 IFJQUl9OQVZfTkVYVF9GSVJTVCkKKwl7CisJCWludDY0CQlpbm5lciA9IGV2YWxfbmF2X29mZnNl dF9oZWxwZXIoY29udGV4dC0+d2luc3RhdGUsCisJCQkJCQkJCQkJCQkgICBuYXYtPm9mZnNldF9h cmcsIDApOworCQlpbnQ2NAkJb3V0ZXIgPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQt PndpbnN0YXRlLAorCQkJCQkJCQkJCQkJICAgbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnLCAxKTsK KwkJaW50NjQJCXJlYWNoOworCisJCWlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNU KQorCQl7CisJCQkvKgorCQkJICogcmVhY2ggPSBpbm5lciAtIG91dGVyLiAgQm90aCBhcmUgbm9u LW5lZ2F0aXZlLCBzbyB0aGUgcmVzdWx0ID49CisJCQkgKiAtUEdfSU5UNjRfTUFYLCB3aGljaCBj YW5ub3QgdW5kZXJmbG93IGludDY0LgorCQkJICovCisJCQlyZWFjaCA9IGlubmVyIC0gb3V0ZXI7 CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogTkVYVF9GSVJTVDogcmVhY2ggPSBpbm5l ciArIG91dGVyLiAgVGhpcyBjYW4gb3ZlcmZsb3csIGJ1dCB0aGUKKwkJCSAqIHJlc3VsdCBpcyBh bHdheXMgPj0gMCwgc28gaXQgbmV2ZXIgdXBkYXRlcyBtaW5GaXJzdE9mZnNldAorCQkJICogKHdo aWNoIHRyYWNrcyB0aGUgbWluaW11bSkuICBDbGFtcCB0byBQR19JTlQ2NF9NQVggb24gb3ZlcmZs b3cuCisJCQkgKi8KKwkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyLCBvdXRlciwgJnJl YWNoKSkKKwkJCQlyZWFjaCA9IFBHX0lOVDY0X01BWDsKKwkJfQorCQljb250ZXh0LT5taW5GaXJz dE9mZnNldCA9IE1pbihjb250ZXh0LT5taW5GaXJzdE9mZnNldCwgcmVhY2gpOwogCX0KLQllbHNl IGlmICh3aW5vYmotPmlnbm9yZV9udWxscyA9PSBQQVJTRVJfSUdOT1JFX05VTExTKQotCQl3aW5v YmotPmlnbm9yZV9udWxscyA9IElHTk9SRV9OVUxMUzsKIH0KIAogLyoKLSAqIFdpbkdldFBhcnRp dGlvbkxvY2FsTWVtb3J5Ci0gKgkJR2V0IHdvcmtpbmcgbWVtb3J5IHRoYXQgbGl2ZXMgdGlsbCBl bmQgb2YgcGFydGl0aW9uIHByb2Nlc3NpbmcKKyAqIGV2YWxfZGVmaW5lX29mZnNldHMKKyAqCQlF dmFsdWF0ZSBub24tY29uc3RhbnQgbmF2IG9mZnNldHMgYXQgZXhlY3V0b3IgaW5pdCB0aW1lLgog ICoKLSAqIE9uIGZpcnN0IGNhbGwgd2l0aGluIGEgZ2l2ZW4gcGFydGl0aW9uLCB0aGlzIGFsbG9j YXRlcyBhbmQgemVyb2VzIHRoZQotICogcmVxdWVzdGVkIGFtb3VudCBvZiBzcGFjZS4gIFN1YnNl cXVlbnQgY2FsbHMganVzdCByZXR1cm4gdGhlIHNhbWUgY2h1bmsuCisgKiBDYWxsZWQgd2hlbiB0 aGUgcGxhbm5lciBzZXQgbmF2TWF4T2Zmc2V0S2luZCBhbmQvb3IgbmF2Rmlyc3RPZmZzZXRLaW5k CisgKiB0byBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMIGJlY2F1c2Ugc29tZSBvZmZzZXQgY29u dGFpbnMgYSBwYXJhbWV0ZXIKKyAqIG9yIG5vbi1mb2xkYWJsZSBleHByZXNzaW9uLiAgVXBkYXRl cyBvbmx5IHRoZSBmaWVsZHMgd2hvc2Uga2luZCB3YXMKKyAqIE5FRURTX0VWQUw7IEZJWEVEIGtp bmRzIGFyZSBsZWZ0IHVuY2hhbmdlZC4KICAqCi0gKiBNZW1vcnkgb2J0YWluZWQgdGhpcyB3YXkg aXMgbm9ybWFsbHkgdXNlZCB0byBob2xkIHN0YXRlIHRoYXQgc2hvdWxkIGJlCi0gKiBhdXRvbWF0 aWNhbGx5IHJlc2V0IGZvciBlYWNoIG5ldyBwYXJ0aXRpb24uICBJZiBhIHdpbmRvdyBmdW5jdGlv biB3YW50cwotICogdG8gaG9sZCBzdGF0ZSBhY3Jvc3MgdGhlIHdob2xlIHF1ZXJ5LCBmY2luZm8t PmZuX2V4dHJhIGNhbiBiZSB1c2VkIGluIHRoZQotICogdXN1YWwgd2F5IGZvciB0aGF0LgorICog T24gYmFja3dhcmQtcmVhY2ggb3ZlcmZsb3csIHNldHMgbmF2TWF4T2Zmc2V0S2luZCB0bworICog UlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTCBzbyB0aGF0IHR1cGxlc3RvcmUgdHJpbSBpcyBkaXNh YmxlZCBmb3IKKyAqIGJhY2t3YXJkIG5hdmlnYXRpb24uCiAgKi8KLXZvaWQgKgotV2luR2V0UGFy dGl0aW9uTG9jYWxNZW1vcnkoV2luZG93T2JqZWN0IHdpbm9iaiwgU2l6ZSBzeikKK3N0YXRpYyB2 b2lkCitldmFsX2RlZmluZV9vZmZzZXRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAq ZGVmaW5lQ2xhdXNlKQogewotCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOwot CWlmICh3aW5vYmotPmxvY2FsbWVtID09IE5VTEwpCi0JCXdpbm9iai0+bG9jYWxtZW0gPQotCQkJ TWVtb3J5Q29udGV4dEFsbG9jWmVybyh3aW5vYmotPndpbnN0YXRlLT5wYXJ0Y29udGV4dCwgc3op OwotCXJldHVybiB3aW5vYmotPmxvY2FsbWVtOworCUV2YWxEZWZpbmVPZmZzZXRzQ29udGV4dCBj dHg7CisJTmF2VHJhdmVyc2FsIHRyYXY7CisJYm9vbAkJbmVlZHNNYXggPSAod2luc3RhdGUtPm5h dk1heE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCk7CisJYm9vbAkJbmVl ZHNGaXJzdCA9ICh3aW5zdGF0ZS0+aGFzRmlyc3ROYXYgJiYKKwkJCQkJCQkgIHdpbnN0YXRlLT5u YXZGaXJzdE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCk7CisKKwlpZiAo IW5lZWRzTWF4ICYmICFuZWVkc0ZpcnN0KQorCQlyZXR1cm47CisKKwljdHgud2luc3RhdGUgPSB3 aW5zdGF0ZTsKKwljdHgubWF4T2Zmc2V0ID0gMDsKKwljdHgubWF4T3ZlcmZsb3cgPSBmYWxzZTsK KwljdHgubWluRmlyc3RPZmZzZXQgPSBQR19JTlQ2NF9NQVg7CisKKwl0cmF2LnZpc2l0ID0gdmlz aXRfbmF2X2V4ZWM7CisJdHJhdi5kYXRhID0gJmN0eDsKKworCWZvcmVhY2hfbm9kZShUYXJnZXRF bnRyeSwgdGUsIGRlZmluZUNsYXVzZSkKKwl7CisJCW5hdl90cmF2ZXJzYWxfd2Fsa2VyKChOb2Rl ICopIHRlLT5leHByLCAmdHJhdik7CisJfQorCisJaWYgKG5lZWRzTWF4KQorCXsKKwkJaWYgKGN0 eC5tYXhPdmVyZmxvdykKKwkJeworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJf TkFWX09GRlNFVF9SRVRBSU5fQUxMOworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IDA7CisJ CX0KKwkJZWxzZQorCQl7CisJCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9IFJQUl9OQVZf T0ZGU0VUX0ZJWEVEOworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IGN0eC5tYXhPZmZzZXQ7 CisJCX0KKwl9CisKKwlpZiAobmVlZHNGaXJzdCkKKwl7CisJCXdpbnN0YXRlLT5uYXZGaXJzdE9m ZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9GSVhFRDsKKwkJaWYgKGN0eC5taW5GaXJzdE9mZnNl dCA8IFBHX0lOVDY0X01BWCkKKwkJCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldCA9IGN0eC5taW5G aXJzdE9mZnNldDsKKwkJZWxzZQorCQkJd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0ID0gUEdfSU5U NjRfTUFYOworCX0KIH0KIAogLyoKLSAqIFdpbkdldEN1cnJlbnRQb3NpdGlvbgotICoJCVJldHVy biB0aGUgY3VycmVudCByb3cncyBwb3NpdGlvbiAoY291bnRpbmcgZnJvbSAwKSB3aXRoaW4gdGhl IGN1cnJlbnQKLSAqCQlwYXJ0aXRpb24uCisgKiBycHJfaXNfZGVmaW5lZAorICogUmV0dXJuIHRy dWUgaWYgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgZGVmaW5lZC4KICAqLwotaW50NjQKLVdp bkdldEN1cnJlbnRQb3NpdGlvbihXaW5kb3dPYmplY3Qgd2lub2JqKQorc3RhdGljIGJvb2wKK3Jw cl9pc19kZWZpbmVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIHsKLQlBc3NlcnQoV2luZG93 T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKLQlyZXR1cm4gd2lub2JqLT53aW5zdGF0ZS0+Y3VycmVu dHBvczsKKwlyZXR1cm4gd2luc3RhdGUtPnJwUGF0dGVybiAhPSBOVUxMOwogfQogCiAvKgotICog V2luR2V0UGFydGl0aW9uUm93Q291bnQKLSAqCQlSZXR1cm4gdG90YWwgbnVtYmVyIG9mIHJvd3Mg Y29udGFpbmVkIGluIHRoZSBjdXJyZW50IHBhcnRpdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t CisgKiByb3dfaXNfaW5fcmVkdWNlZF9mcmFtZQorICogRGV0ZXJtaW5lIHdoZXRoZXIgYSByb3cg aXMgaW4gdGhlIGN1cnJlbnQgcm93J3MgcmVkdWNlZCB3aW5kb3cgZnJhbWUKKyAqIGFjY29yZGlu ZyB0byByb3cgcGF0dGVybiBtYXRjaGluZwogICoKLSAqIE5vdGU6IHRoaXMgaXMgYSByZWxhdGl2 ZWx5IGV4cGVuc2l2ZSBvcGVyYXRpb24gYmVjYXVzZSBpdCBmb3JjZXMgdGhlCi0gKiB3aG9sZSBw YXJ0aXRpb24gdG8gYmUgInNwb29sZWQiIGludG8gdGhlIHR1cGxlc3RvcmUgYXQgb25jZS4gIE9u Y2UKLSAqIGV4ZWN1dGVkLCBob3dldmVyLCBhZGRpdGlvbmFsIGNhbGxzIHdpdGhpbiB0aGUgc2Ft ZSBwYXJ0aXRpb24gYXJlIGNoZWFwLgorICogVGhlIHJvdyBtdXN0IGhhdmUgYWxyZWFkeSBiZWVu IGRldGVybWluZWQgdG8gYmUgaW4gYSBmdWxsIHdpbmRvdyBmcmFtZQorICogYW5kIGZldGNoZWQg aW50byB0aGUgc2xvdC4KKyAqCisgKiBSZXR1cm5zOgorICogPSAwLCBSUFIgaXMgbm90IGRlZmlu ZWQuCisgKiA+MCwgaWYgdGhlIHJvdyBpcyB0aGUgZmlyc3QgaW4gdGhlIHJlZHVjZWQgZnJhbWUu IFJldHVybiB0aGUgbnVtYmVyIG9mIHJvd3MKKyAqIGluIHRoZSByZWR1Y2VkIGZyYW1lLgorICog LTEsIGlmIHRoZSByb3cgaXMgYW4gdW5tYXRjaGVkIHJvdworICogLTIsIGlmIHRoZSByb3cgaXMg aW4gdGhlIHJlZHVjZWQgZnJhbWUgYnV0IG5lZWRlZCB0byBiZSBza2lwcGVkIGJlY2F1c2Ugb2YK KyAqIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICogLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwotaW50NjQKLVdpbkdldFBhcnRpdGlvblJvd0NvdW50KFdpbmRvd09iamVjdCB3aW5vYmop CitzdGF0aWMgaW50NjQKK3Jvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5v YmosIGludDY0IHBvcykKIHsKLQlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsK LQlzcG9vbF90dXBsZXMod2lub2JqLT53aW5zdGF0ZSwgLTEpOwotCXJldHVybiB3aW5vYmotPndp bnN0YXRlLT5zcG9vbGVkX3Jvd3M7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lub2Jq LT53aW5zdGF0ZTsKKwlpbnQJCQlzdGF0ZTsKKwlpbnQ2NAkJcnRuOworCisJaWYgKCFycHJfaXNf ZGVmaW5lZCh3aW5zdGF0ZSkpCisJeworCQkvKgorCQkgKiBSUFIgaXMgbm90IGRlZmluZWQuIEFz c3VtZSB0aGF0IHdlIGFyZSBhbHdheXMgaW4gdGhlIHJlZHVjZWQgd2luZG93CisJCSAqIGZyYW1l LgorCQkgKi8KKwkJcnRuID0gMDsKKwkJcmV0dXJuIHJ0bjsKKwl9CisKKwlzdGF0ZSA9IGdldF9y ZWR1Y2VkX2ZyYW1lX3N0YXR1cyh3aW5zdGF0ZSwgcG9zKTsKKworCWlmIChzdGF0ZSA9PSBSRl9O T1RfREVURVJNSU5FRCkKKwl7CisJCXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUpOworCQl1 cGRhdGVfcmVkdWNlZF9mcmFtZSh3aW5vYmosIHBvcyk7CisJfQorCisJc3RhdGUgPSBnZXRfcmVk dWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsIHBvcyk7CisKKwlzd2l0Y2ggKHN0YXRlKQorCXsK KwkJY2FzZSBSRl9GUkFNRV9IRUFEOgorCQkJcnRuID0gd2luc3RhdGUtPnJwcl9tYXRjaF9sZW5n dGg7CisJCQlicmVhazsKKworCQljYXNlIFJGX1NLSVBQRUQ6CisJCQlydG4gPSAtMjsKKwkJCWJy ZWFrOworCisJCWNhc2UgUkZfVU5NQVRDSEVEOgorCQljYXNlIFJGX0VNUFRZX01BVENIOgorCQkJ cnRuID0gLTE7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBzdGF0ZTogJWQgYXQ6ICIgSU5UNjRfRk9STUFULAorCQkJCSBzdGF0ZSwgcG9zKTsK KwkJCWJyZWFrOworCX0KKworCXJldHVybiBydG47Cit9CisKKy8qCisgKiBjbGVhcl9yZWR1Y2Vk X2ZyYW1lCisgKiBDbGVhciByZWR1Y2VkIGZyYW1lIHN0YXR1cworICovCitzdGF0aWMgdm9pZAor Y2xlYXJfcmVkdWNlZF9mcmFtZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCit7CisJd2luc3Rh dGUtPnJwcl9tYXRjaF92YWxpZCA9IGZhbHNlOworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hl ZCA9IGZhbHNlOworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfc3RhcnQgPSAtMTsKKwl3aW5zdGF0ZS0+ cnByX21hdGNoX2xlbmd0aCA9IDA7Cit9CisKKy8qCisgKiBnZXRfcmVkdWNlZF9mcmFtZV9zdGF0 dXMKKyAqCQlMb29rIHVwIGEgcG9zaXRpb24gYWdhaW5zdCB0aGUgY3VycmVudCBtYXRjaC4KKyAq CisgKiBSZXR1cm5zIG9uZSBvZiB0aGUgUkZfKiBjb25zdGFudHM6CisgKiAgIFJGX05PVF9ERVRF Uk1JTkVEICBwb3MgaGFzIG5vdCBiZWVuIHByb2Nlc3NlZCB5ZXQKKyAqICAgUkZfRlJBTUVfSEVB RCAgICAgIHBvcyBpcyB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgbWF0Y2gKKyAqICAgUkZfU0tJ UFBFRCAgICAgICAgIHBvcyBpcyBpbnNpZGUgdGhlIGN1cnJlbnQgbWF0Y2ggYnV0IG5vdCB0aGUg c3RhcnQKKyAqICAgUkZfVU5NQVRDSEVEICAgICAgIHBvcyBpcyBwcm9jZXNzZWQgYnV0IG5vdCBw YXJ0IG9mIGFueSBtYXRjaAorICogICBSRl9FTVBUWV9NQVRDSCAgICAgcG9zIGlzIHRoZSBzdGFy dCBvZiBhbiBlbXB0eSAoemVyby1sZW5ndGgpIG1hdGNoCisgKgorICogdXBkYXRlX3JlZHVjZWRf ZnJhbWUoKSByZWNvcmRzIHRoZSBjdXJyZW50IG1hdGNoIGFzIGV4YWN0bHkgb25lIG9mIHRocmVl CisgKiAocnByX21hdGNoX21hdGNoZWQsIHJwcl9tYXRjaF9sZW5ndGgpIHNoYXBlczogKGZhbHNl LCAxKSBmb3IgdW5tYXRjaGVkLAorICogKHRydWUsIDApIGZvciBhbiBlbXB0eSBtYXRjaCwgYW5k ICh0cnVlLCA+PSAxKSBmb3IgYSByZWFsIG1hdGNoLiAgVGhlCisgKiB0ZXN0cyBiZWxvdyBmb3Jt IGEgY2FzY2FkZSB3aXRoIGVhcmx5IHJldHVybnM6IGVhY2ggaXMgYSBtaW5pbWFsIGNoZWNrCisg KiB0aGF0IHJlbGllcyBvbiB0aGUgbmVnYXRpb25zIHRoZSBwcmVjZWRpbmcgcmV0dXJucyBoYXZl IGFscmVhZHkKKyAqIGVzdGFibGlzaGVkLCBzbyB0aGVpciBvcmRlciBpcyBzaWduaWZpY2FudC4g IFRoZSAiYnkgaGVyZSIgbm90ZXMgc3BlbGwKKyAqIG91dCB0aGUgcnVubmluZyBpbnZhcmlhbnQ7 IHJlb3JkZXJpbmcgYSB0ZXN0IHdvdWxkIG1pc2NsYXNzaWZ5IG9uZSBvZgorICogdGhlIHRocmVl IHNoYXBlcy4KKyAqLworc3RhdGljIGludAorZ2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVzKFdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKQoreworCWludDY0CQlzdGFydCA9IHdpbnN0 YXRlLT5ycHJfbWF0Y2hfc3RhcnQ7CisJaW50NjQJCWxlbmd0aCA9IHdpbnN0YXRlLT5ycHJfbWF0 Y2hfbGVuZ3RoOworCisJaWYgKCF3aW5zdGF0ZS0+cnByX21hdGNoX3ZhbGlkKQorCQlyZXR1cm4g UkZfTk9UX0RFVEVSTUlORUQ7CisKKwkvKgorCSAqIEJ5IGhlcmUgdGhlIHJlY29yZCBpcyB2YWxp ZCBhbmQgaG9sZHMgb25lIG9mIHRoZSB0aHJlZSBzaGFwZXMgYWJvdmUuCisJICoKKwkgKiBUaGUg ZW1wdHkgbWF0Y2ggKHRydWUsIDApIG11c3QgYmUgY2xhc3NpZmllZCBmaXJzdDogaXQgaGFzIGxl bmd0aCAwLCBzbworCSAqIHRoZSByYW5nZSB0ZXN0IGJlbG93IHdvdWxkIGNvbXB1dGUgc3RhcnQg KyBsZW5ndGggPT0gc3RhcnQgYW5kIHJlamVjdAorCSAqIGl0cyBvd24gc3RhcnQgcG9zaXRpb24g YXMgb3V0IG9mIHJhbmdlLgorCSAqLworCWlmIChwb3MgPT0gc3RhcnQgJiYgd2luc3RhdGUtPnJw cl9tYXRjaF9tYXRjaGVkICYmIGxlbmd0aCA9PSAwKQorCQlyZXR1cm4gUkZfRU1QVFlfTUFUQ0g7 CisKKwkvKgorCSAqIEJ5IGhlcmUgbGVuZ3RoID49IDEgLS0gdGhlIG9ubHkgemVyby1sZW5ndGgg cmVjb3JkLCB0aGUgZW1wdHkgbWF0Y2gsCisJICogaGFzIGJlZW4gaGFuZGxlZCAtLSBzbyBbc3Rh cnQsIHN0YXJ0ICsgbGVuZ3RoKSBpcyBhIHdlbGwtZm9ybWVkIHJhbmdlLgorCSAqLworCWlmIChw b3MgPCBzdGFydCB8fCBwb3MgPj0gc3RhcnQgKyBsZW5ndGgpCisJCXJldHVybiBSRl9OT1RfREVU RVJNSU5FRDsKKworCS8qCisJICogQnkgaGVyZSBwb3MgbGllcyB3aXRoaW4gW3N0YXJ0LCBzdGFy dCArIGxlbmd0aCkuICBBbiB1bm1hdGNoZWQgcmVjb3JkCisJICogaXMgKGZhbHNlLCAxKSwgc28g dGhpcyByZXR1cm5zIGZvciBpdHMgc2luZ2xlIGluLXJhbmdlIHBvc2l0aW9uLgorCSAqLworCWlm ICghd2luc3RhdGUtPnJwcl9tYXRjaF9tYXRjaGVkKQorCQlyZXR1cm4gUkZfVU5NQVRDSEVEOwor CisJLyogQnkgaGVyZSB0aGUgbWF0Y2ggaXMgcmVhbCAodHJ1ZSwgPj0gMSkgYW5kIHBvcyBpcyBv bmUgb2YgaXRzIHJvd3MuICovCisJaWYgKHBvcyA9PSBzdGFydCkKKwkJcmV0dXJuIFJGX0ZSQU1F X0hFQUQ7CisKKwlyZXR1cm4gUkZfU0tJUFBFRDsKK30KKworLyoKKyAqIHVwZGF0ZV9yZWR1Y2Vk X2ZyYW1lCisgKgkJVXBkYXRlIHJlZHVjZWQgZnJhbWUgaW5mbyB1c2luZyBtdWx0aS1jb250ZXh0 IE5GQSBwYXR0ZXJuIG1hdGNoaW5nLgorICoKKyAqIE1haW50YWlucyBtdWx0aXBsZSBORkEgY29u dGV4dHMgc2ltdWx0YW5lb3VzbHksIG9uZSBmb3IgZWFjaCBwb3RlbnRpYWwKKyAqIG1hdGNoIHN0 YXJ0IHBvc2l0aW9uLiBUaGlzIGFsbG93cyBzaGFyaW5nIHJvdyBldmFsdWF0aW9ucyBhY3Jvc3Mg Y29udGV4dHMsCisgKiBhdm9pZGluZyByZWR1bmRhbnQgREVGSU5FIGNsYXVzZSBldmFsdWF0aW9u cyB3aGVuIHJld2luZGluZyBmb3IgU0tJUCBUTworICogTkVYVCBST1cgbW9kZS4KKyAqCisgKiBL ZXkgb3B0aW1pemF0aW9uczoKKyAqIC0gUm93IGV2YWx1YXRpb25zIChleHBlbnNpdmUgREVGSU5F IGNsYXVzZXMpIGhhcHBlbiBvbmx5IG9uY2UgcGVyIHJvdworICogLSBBbGwgYWN0aXZlIGNvbnRl eHRzIHNoYXJlIHRoZSBzYW1lIGV2YWx1YXRpb24gcmVzdWx0cworICogLSBDb250ZXh0cyBwZXJz aXN0IGFjcm9zcyBjYWxscywgZW5hYmxpbmcgTyhuKSBERUZJTkUgZXZhbHVhdGlvbnMKKyAqLwor c3RhdGljIHZvaWQKK3VwZGF0ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGlu dDY0IHBvcykKK3sKKwlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUgPSB3aW5vYmotPndpbnN0YXRl OworCVJQUk5GQUNvbnRleHQgKnRhcmdldEN0eDsKKwlpbnQ2NAkJY3VycmVudFBvczsKKwlpbnQ2 NAkJc3RhcnRQb3M7CisJaW50CQkJZnJhbWVPcHRpb25zID0gd2luc3RhdGUtPmZyYW1lT3B0aW9u czsKKwlib29sCQloYXNMaW1pdGVkRnJhbWU7CisJaW50NjQJCWZyYW1lT2Zmc2V0ID0gMDsKKwlp bnQ2NAkJbWF0Y2hMZW47CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGhhdmUgYSBsaW1pdGVkIGZy YW1lIChST1dTIC4uLiBOIEZPTExPV0lORykuIEVhY2ggY29udGV4dAorCSAqIG5lZWRzIGl0cyBv d24gZnJhbWUgZW5kIGJhc2VkIG9uIG1hdGNoU3RhcnRSb3cgKyBvZmZzZXQuCisJICovCisJaGFz TGltaXRlZEZyYW1lID0gKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JPV1MpICYmCisJCSEo ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX1VOQk9VTkRFRF9GT0xMT1dJTkcpOworCWlm IChoYXNMaW1pdGVkRnJhbWUpCisJCWZyYW1lT2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCh3aW5zdGF0 ZS0+ZW5kT2Zmc2V0VmFsdWUpOworCisJLyoKKwkgKiBDYXNlIDE6IHBvcyBpcyBiZWZvcmUgYW55 IGV4aXN0aW5nIGNvbnRleHQncyBzdGFydCBwb3NpdGlvbi4gVGhpcyBtZWFucworCSAqIHRoZSBw b3NpdGlvbiB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGRldGVybWluZWQgdW5tYXRjaGVkLiBI ZWFkIGlzCisJICogdGhlIG9sZGVzdCBjb250ZXh0IChsb3dlc3QgbWF0Y2hTdGFydFJvdykgc2lu Y2UgY29udGV4dHMgYXJlIGFkZGVkIGF0CisJICogdGFpbCB3aXRoIGluY3JlYXNpbmcgcG9zaXRp b25zLgorCSAqLworCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4dCAhPSBOVUxMICYmCisJCXBvcyA8 IHdpbnN0YXRlLT5uZmFDb250ZXh0LT5tYXRjaFN0YXJ0Um93KQorCXsKKwkJLyogYWxyZWFkeSBw cm9jZXNzZWQsIHVubWF0Y2hlZCAqLworCQl3aW5zdGF0ZS0+cnByX21hdGNoX3ZhbGlkID0gdHJ1 ZTsKKwkJd2luc3RhdGUtPnJwcl9tYXRjaF9tYXRjaGVkID0gZmFsc2U7CisJCXdpbnN0YXRlLT5y cHJfbWF0Y2hfc3RhcnQgPSBwb3M7CisJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbGVuZ3RoID0gMTsK KwkJcmV0dXJuOworCX0KKworCS8qCisJICogQ2FzZSAyOiBGaW5kIGV4aXN0aW5nIGNvbnRleHQg Zm9yIHRoaXMgcG9zLCBvciBjcmVhdGUgbmV3IG9uZS4KKwkgKi8KKwl0YXJnZXRDdHggPSBFeGVj UlBSR2V0SGVhZENvbnRleHQod2luc3RhdGUsIHBvcyk7CisJaWYgKHRhcmdldEN0eCA9PSBOVUxM KQorCXsKKwkJLyoKKwkJICogTm8gY29udGV4dCBleGlzdHMuIElmIHBvcyBpcyBhbHJlYWR5IHBy b2Nlc3NlZCwgaXQgbWVhbnMgdGhpcyByb3cKKwkJICogd2FzIGFscmVhZHkgZGV0ZXJtaW5lZCB0 byBiZSB1bm1hdGNoZWQgb3Igc2tpcHBlZCAtIG5vIG5lZWQgdG8KKwkJICogcmVwcm9jZXNzLgor CQkgKi8KKwkJaWYgKHBvcyA8PSB3aW5zdGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdykKKwkJewor CQkJLyogYWxyZWFkeSBwcm9jZXNzZWQsIHVubWF0Y2hlZCAqLworCQkJd2luc3RhdGUtPnJwcl9t YXRjaF92YWxpZCA9IHRydWU7CisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX21hdGNoZWQgPSBmYWxz ZTsKKwkJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfc3RhcnQgPSBwb3M7CisJCQl3aW5zdGF0ZS0+cnBy X21hdGNoX2xlbmd0aCA9IDE7CisJCQlyZXR1cm47CisJCX0KKwkJLyogTm90IHlldCBwcm9jZXNz ZWQgLSBjcmVhdGUgbmV3IGNvbnRleHQgYW5kIHN0YXJ0IGZyZXNoICovCisJCXRhcmdldEN0eCA9 IEV4ZWNSUFJTdGFydENvbnRleHQod2luc3RhdGUsIHBvcyk7CisJfQorCWVsc2UgaWYgKHRhcmdl dEN0eC0+c3RhdGVzID09IE5VTEwpCisJeworCQkvKgorCQkgKiBUaGUgaGVhZCBjb250ZXh0IGFs cmVhZHkgY29tcGxldGVkIGluIGFuIGVhcmxpZXIgY2FsbC4gIFJlYWNoYWJsZQorCQkgKiB1bmRl ciBTS0lQIFRPIE5FWFQgUk9XLCB3aGVyZSBvdmVybGFwcGluZyBjb250ZXh0cyBsZXQgb25lIHJl YWNoCisJCSAqIEZJTiAtLSByZWNvcmRpbmcgaXRzIHJlc3VsdCAtLSBiZWZvcmUgdGhlIGNhbGwg Zm9yIGl0cyBvd24gc3RhcnQKKwkJICogcm93IGFycml2ZXMuICBSZWdpc3RlciB0aGF0IHJlc3Vs dC4KKwkJICovCisJCWdvdG8gcmVnaXN0ZXJfcmVzdWx0OworCX0KKworCS8qCisJICogRGV0ZXJt aW5lIHdoZXJlIHRvIHN0YXJ0IHByb2Nlc3NpbmcuIFVzdWFsbHkgbmZhTGFzdFByb2Nlc3NlZFJv dysxID49CisJICogcG9zIHNpbmNlIGNvbnRleHRzIGFyZSBjcmVhdGVkIGF0IGN1cnJlbnRQb3Mr MSBkdXJpbmcgcHJvY2Vzc2luZy4KKwkgKiBIb3dldmVyLCBwb3MgY2FuIGV4Y2VlZCB0aGlzIHdo ZW4gcm93cyBhcmUgc2tpcHBlZCAoZS5nLiwgdW5tYXRjaGVkCisJICogcm93cyBkb24ndCB1cGRh dGUgbmZhTGFzdFByb2Nlc3NlZFJvdykuCisJICovCisJc3RhcnRQb3MgPSBNYXgocG9zLCB3aW5z dGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdyArIDEpOworCisJLyoKKwkgKiBQcm9jZXNzIHJvd3Mg dW50aWwgdGFyZ2V0IGNvbnRleHQgY29tcGxldGVzIG9yIHdlIGhpdCBib3VuZGFyaWVzLiBFYWNo CisJICogcm93IGV2YWx1YXRpb24gaXMgc2hhcmVkIGFjcm9zcyBhbGwgYWN0aXZlIGNvbnRleHRz LgorCSAqLworCWZvciAoY3VycmVudFBvcyA9IHN0YXJ0UG9zOyB0YXJnZXRDdHgtPnN0YXRlcyAh PSBOVUxMOyBjdXJyZW50UG9zKyspCisJeworCQlib29sCQlyb3dFeGlzdHM7CisKKwkJLyoKKwkJ ICogRXZhbHVhdGUgdmFyaWFibGVzIGZvciB0aGlzIHJvdyAtIGRvbmUgb25seSBvbmNlLCBzaGFy ZWQgYnkgYWxsCisJCSAqIGNvbnRleHRzLgorCQkgKgorCQkgKiBTZXQgbmF2X21hdGNoX3N0YXJ0 IHRvIHRoZSBoZWFkIGNvbnRleHQncyBtYXRjaFN0YXJ0Um93IGZvcgorCQkgKiBGSVJTVC9MQVNU IG5hdmlnYXRpb24uICBNYXRjaF9zdGFydC1kZXBlbmRlbnQgdmFyaWFibGVzIChGSVJTVCwKKwkJ ICogTEFTVC13aXRoLW9mZnNldCkgYXJlIHJlLWV2YWx1YXRlZCBwZXItY29udGV4dCBpbiBFeGVj UlBSUHJvY2Vzc1JvdworCQkgKiB3aGVuIG1hdGNoU3RhcnRSb3cgZGlmZmVycy4KKwkJICovCisJ CXdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQgPSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3c7CisJ CXJvd0V4aXN0cyA9IG5mYV9ldmFsdWF0ZV9yb3cod2lub2JqLCBjdXJyZW50UG9zLCB3aW5zdGF0 ZS0+bmZhVmFyTWF0Y2hlZCk7CisKKwkJLyogTm8gbW9yZSByb3dzIGluIHBhcnRpdGlvbj8gRmlu YWxpemUgYWxsIGNvbnRleHRzICovCisJCWlmICghcm93RXhpc3RzKQorCQl7CisJCQlFeGVjUlBS RmluYWxpemVBbGxDb250ZXh0cyh3aW5zdGF0ZSwgY3VycmVudFBvcyAtIDEpOworCQkJLyogQ2xl YW4gdXAgZGVhZCBjb250ZXh0cyBmcm9tIGZpbmFsaXphdGlvbiAqLworCQkJRXhlY1JQUkNsZWFu dXBEZWFkQ29udGV4dHMod2luc3RhdGUsIHRhcmdldEN0eCk7CisJCQlicmVhazsKKwkJfQorCisJ CS8qIFVwZGF0ZSBsYXN0IHByb2Nlc3NlZCByb3cgKi8KKwkJd2luc3RhdGUtPm5mYUxhc3RQcm9j ZXNzZWRSb3cgPSBjdXJyZW50UG9zOworCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KwkJICogUHJvY2VzcyBhbGwgY29udGV4dHMgZm9yIHRoaXMgcm93OgorCQkgKiAgIDEuIE1hdGNo IGFsbCAoY29udmVyZ2VuY2UpCisJCSAqICAgMi4gQWJzb3JiIHJlZHVuZGFudAorCQkgKiAgIDMu IEFkdmFuY2UgYWxsIChkaXZlcmdlbmNlKQorCQkgKi8KKwkJRXhlY1JQUlByb2Nlc3NSb3cod2lu c3RhdGUsIGN1cnJlbnRQb3MsIGhhc0xpbWl0ZWRGcmFtZSwgZnJhbWVPZmZzZXQpOworCisJCS8q CisJCSAqIENyZWF0ZSBhIG5ldyBjb250ZXh0IGZvciB0aGUgbmV4dCBwb3RlbnRpYWwgc3RhcnQg cG9zaXRpb24uIFRoaXMKKwkJICogZW5hYmxlcyBvdmVybGFwcGluZyBtYXRjaCBkZXRlY3Rpb24g Zm9yIFNLSVAgVE8gTkVYVCBST1cuCisJCSAqLworCQlFeGVjUlBSU3RhcnRDb250ZXh0KHdpbnN0 YXRlLCBjdXJyZW50UG9zICsgMSk7CisKKwkJLyoKKwkJICogQ2xlYW4gdXAgZGVhZCBjb250ZXh0 cyAoZmFpbGVkIHdpdGggbm8gYWN0aXZlIHN0YXRlcyBhbmQgbm8gbWF0Y2gpLgorCQkgKiBUaGlz IHJlbW92ZXMgY29udGV4dHMgdGhhdCBmYWlsZWQgZHVyaW5nIHByb2Nlc3NpbmcgYW5kIGNvdW50 cyB0aGVtCisJCSAqIGFwcHJvcHJpYXRlbHkgYXMgcHJ1bmVkIG9yIG1pc21hdGNoZWQuCisJCSAq LworCQlFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cyh3aW5zdGF0ZSwgdGFyZ2V0Q3R4KTsKKwl9 CisKK3JlZ2lzdGVyX3Jlc3VsdDoKKwlBc3NlcnQocG9zID09IHRhcmdldEN0eC0+bWF0Y2hTdGFy dFJvdyk7CisKKwkvKgorCSAqIFJlY29yZCBtYXRjaCByZXN1bHQuCisJICovCisJd2luc3RhdGUt PnJwcl9tYXRjaF92YWxpZCA9IHRydWU7CisJd2luc3RhdGUtPnJwcl9tYXRjaF9zdGFydCA9IHRh cmdldEN0eC0+bWF0Y2hTdGFydFJvdzsKKworCWlmICh0YXJnZXRDdHgtPm1hdGNoRW5kUm93IDwg dGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93KQorCXsKKwkJbWF0Y2hMZW4gPSB0YXJnZXRDdHgtPmxh c3RQcm9jZXNzZWRSb3cgLSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3cgKyAxOworCisJCWlmICh0 YXJnZXRDdHgtPm1hdGNoZWRTdGF0ZSAhPSBOVUxMKQorCQl7CisJCQkvKiBFbXB0eSBtYXRjaDog RklOIHJlYWNoZWQgYnV0IDAgcm93cyBjb25zdW1lZCAqLworCQkJd2luc3RhdGUtPnJwcl9tYXRj aF9tYXRjaGVkID0gdHJ1ZTsKKwkJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbGVuZ3RoID0gMDsKKwkJ CUV4ZWNSUFJSZWNvcmRDb250ZXh0U3VjY2Vzcyh3aW5zdGF0ZSwgMCk7CisJCX0KKwkJZWxzZQor CQl7CisJCQkvKiBObyBtYXRjaCAqLworCQkJd2luc3RhdGUtPnJwcl9tYXRjaF9tYXRjaGVkID0g ZmFsc2U7CisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IDE7CisJCQlFeGVjUlBSUmVj b3JkQ29udGV4dEZhaWx1cmUod2luc3RhdGUsIG1hdGNoTGVuKTsKKwkJfQorCQlFeGVjUlBSRnJl ZUNvbnRleHQod2luc3RhdGUsIHRhcmdldEN0eCk7CisJCXJldHVybjsKKwl9CisKKwkvKiBNYXRj aCBzdWNjZWVkZWQgKi8KKwltYXRjaExlbiA9IHRhcmdldEN0eC0+bWF0Y2hFbmRSb3cgLSB0YXJn ZXRDdHgtPm1hdGNoU3RhcnRSb3cgKyAxOworCisJd2luc3RhdGUtPnJwcl9tYXRjaF9tYXRjaGVk ID0gdHJ1ZTsKKwl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IG1hdGNoTGVuOworCUV4ZWNS UFJSZWNvcmRDb250ZXh0U3VjY2Vzcyh3aW5zdGF0ZSwgbWF0Y2hMZW4pOworCisJLyogUmVtb3Zl IHRoZSBtYXRjaGVkIGNvbnRleHQgKi8KKwlFeGVjUlBSRnJlZUNvbnRleHQod2luc3RhdGUsIHRh cmdldEN0eCk7Cit9CisKKy8qCisgKiBuZmFfZXZhbHVhdGVfcm93CisgKgorICogRXZhbHVhdGUg YWxsIERFRklORSB2YXJpYWJsZXMgZm9yIGN1cnJlbnQgcm93LgorICogUmV0dXJucyB0cnVlIGlm IHRoZSByb3cgZXhpc3RzLCBmYWxzZSBpZiBvdXQgb2YgcGFydGl0aW9uLgorICogSWYgcm93IGV4 aXN0cywgZmlsbHMgdmFyTWF0Y2hlZCBhcnJheS4KKyAqIHZhck1hdGNoZWRbaV0gPSB0cnVlIGlm IHZhcmlhYmxlIGkgbWF0Y2hlZCBhdCBjdXJyZW50IHJvdy4KKyAqCisgKiBVc2VzIDEtc2xvdCBt b2RlbDogb25seSBlY3h0X291dGVydHVwbGUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IHJvdy4KKyAq IFBSRVYvTkVYVC9GSVJTVC9MQVNUIG5hdmlnYXRpb24gaXMgaGFuZGxlZCBieSBFRU9QX1JQUl9O QVZfU0VUL1JFU1RPUkUKKyAqIG9wY29kZXMgZHVyaW5nIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwg d2hpY2ggdGVtcG9yYXJpbHkgc3dhcCB0aGUgc2xvdC4KKyAqLworc3RhdGljIGJvb2wKK25mYV9l dmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJNYXRj aGVkKQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7CisJ RXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0Owor CWludAkJCW51bURlZmluZVZhcnMgPSBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFi bGVMaXN0KTsKKwlpbnQJCQl2YXJJZHggPSAwOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCWlu dDY0CQlzYXZlZF9wb3M7CisKKwkvKiBGZXRjaCBjdXJyZW50IHJvdyBpbnRvIHRlbXBfc2xvdF8x ICovCisJc2xvdCA9IHdpbnN0YXRlLT50ZW1wX3Nsb3RfMTsKKwlpZiAoIXdpbmRvd19nZXR0dXBs ZXNsb3Qod2lub2JqLCBwb3MsIHNsb3QpKQorCQlyZXR1cm4gZmFsc2U7CQkJLyogTm8gcm93IGV4 aXN0cyAqLworCisJLyogU2V0IHVwIDEtc2xvdCBjb250ZXh0OiBvbmx5IGVjeHRfb3V0ZXJ0dXBs ZSAqLworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSBzbG90OworCisJLyoKKwkgKiBTYXZl IGFuZCBzZXQgY3VycmVudHBvcyBzbyB0aGF0IEVFT1BfUlBSX05BVl9TRVQgb3Bjb2RlcyBjYW4g Y2FsY3VsYXRlCisJICogdGFyZ2V0IHBvc2l0aW9ucyAoY3VycmVudHBvcyArLy0gb2Zmc2V0KS4K KwkgKi8KKwlzYXZlZF9wb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvczsKKwl3aW5zdGF0ZS0+Y3Vy cmVudHBvcyA9IHBvczsKKworCS8qIEludmFsaWRhdGUgbmF2X3Nsb3QgY2FjaGUgc28gUFJFVi9O RVhUIHJlLWZldGNoIGZvciBuZXcgcm93ICovCisJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0x OworCisJZm9yZWFjaF9wdHIoRXhwclN0YXRlLCBleHByU3RhdGUsIHdpbnN0YXRlLT5kZWZpbmVD bGF1c2VMaXN0KQorCXsKKwkJRGF0dW0JCXJlc3VsdDsKKwkJYm9vbAkJaXNudWxsOworCisJCS8q IEV2YWx1YXRlIERFRklORSBleHByZXNzaW9uICovCisJCXJlc3VsdCA9IEV4ZWNFdmFsRXhwcihl eHByU3RhdGUsIGVjb250ZXh0LCAmaXNudWxsKTsKKworCQl2YXJNYXRjaGVkW3ZhcklkeF0gPSAo IWlzbnVsbCAmJiBEYXR1bUdldEJvb2wocmVzdWx0KSk7CisKKwkJdmFySWR4Kys7CisJCWlmICh2 YXJJZHggPj0gbnVtRGVmaW5lVmFycykKKwkJCWJyZWFrOworCX0KKworCXdpbnN0YXRlLT5jdXJy ZW50cG9zID0gc2F2ZWRfcG9zOworCisJcmV0dXJuIHRydWU7CQkJCS8qIFJvdyBleGlzdHMgKi8K K30KKworLyoKKyAqIFdpbkdldFNsb3RJbkZyYW1lCisgKiBzbG90OiBUdXBsZVRhYmxlU2xvdCB0 byBzdG9yZSB0aGUgcmVzdWx0CisgKiByZWxwb3M6IHNpZ25lZCByb3djb3VudCBvZmZzZXQgZnJv bSB0aGUgc2VlayBwb3NpdGlvbgorICogc2Vla3R5cGU6IFdJTkRPV19TRUVLX0hFQUQgb3IgV0lO RE9XX1NFRUtfVEFJTAorICogc2V0X21hcms6IElmIHRoZSByb3cgaXMgZm91bmQvaW4gZnJhbWUg YW5kIHNldF9tYXJrIGlzIHRydWUsIHRoZSBtYXJrIGlzCisgKgkJbW92ZWQgdG8gdGhlIHJvdyBh cyBhIHNpZGUtZWZmZWN0LgorICogaXNudWxsOiBvdXRwdXQgYXJndW1lbnQsIHJlY2VpdmVzIGlz bnVsbCBzdGF0dXMgb2YgcmVzdWx0CisgKiBpc291dDogb3V0cHV0IGFyZ3VtZW50LCBzZXQgdG8g aW5kaWNhdGUgd2hldGhlciB0YXJnZXQgcm93IHBvc2l0aW9uCisgKgkJaXMgb3V0IG9mIGZyYW1l IChjYW4gcGFzcyBOVUxMIGlmIGNhbGxlciBkb2Vzbid0IGNhcmUgYWJvdXQgdGhpcykKKyAqCisg KiBSZXR1cm5zIDAgaWYgd2Ugc3VjY2Vzc2Z1bGx5IGdvdCB0aGUgc2xvdCwgb3Igbm9uemVybyBp ZiBvdXQgb2YgZnJhbWUuCisgKiAoaXNvdXQgaXMgYWxzbyBzZXQgaW4gdGhlIGxhdHRlciBjYXNl LikKKyAqLworc3RhdGljIGludAorV2luR2V0U2xvdEluRnJhbWUoV2luZG93T2JqZWN0IHdpbm9i aiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCQkJICBpbnQgcmVscG9zLCBpbnQgc2Vla3R5cGUs IGJvb2wgc2V0X21hcmssCisJCQkJICBib29sICppc251bGwsIGJvb2wgKmlzb3V0KQoreworCVdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwlpbnQ2NAkJYWJzX3BvczsKKwlpbnQ2NAkJbWFya19w b3M7CisJaW50NjQJCW51bV9yZWR1Y2VkX2ZyYW1lOworCisJQXNzZXJ0KFdpbmRvd09iamVjdElz VmFsaWQod2lub2JqKSk7CisJd2luc3RhdGUgPSB3aW5vYmotPndpbnN0YXRlOworCisJc3dpdGNo IChzZWVrdHlwZSkKKwl7CisJCWNhc2UgV0lORE9XX1NFRUtfQ1VSUkVOVDoKKwkJCWVsb2coRVJS T1IsICJXSU5ET1dfU0VFS19DVVJSRU5UIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdpbkdldEZ1bmNB cmdJbkZyYW1lIik7CisJCQlhYnNfcG9zID0gbWFya19wb3MgPSAwOyAvKiBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCisJCQlicmVhazsKKwkJY2FzZSBXSU5ET1dfU0VFS19IRUFEOgorCQkJLyogcmVq ZWN0aW5nIHJlbHBvcyA8IDAgaXMgZWFzeSBhbmQgc2ltcGxpZmllcyBjb2RlIGJlbG93ICovCisJ CQlpZiAocmVscG9zIDwgMCkKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCXVwZGF0ZV9mcmFt ZWhlYWRwb3Mod2luc3RhdGUpOworCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3Mg KyByZWxwb3M7CisJCQltYXJrX3BvcyA9IGFic19wb3M7CisKKwkJCS8qCisJCQkgKiBBY2NvdW50 IGZvciBleGNsdXNpb24gb3B0aW9uIGlmIG9uZSBpcyBhY3RpdmUsIGJ1dCBhZHZhbmNlIG9ubHkK KwkJCSAqIGFic19wb3Mgbm90IG1hcmtfcG9zLiAgVGhpcyBwcmV2ZW50cyBjaGFuZ2VzIG9mIHRo ZSBjdXJyZW50CisJCQkgKiByb3cncyBwZWVyIGdyb3VwIGZyb20gcmVzdWx0aW5nIGluIHRyeWlu ZyB0byBmZXRjaCBhIHJvdyBiZWZvcmUKKwkJCSAqIHNvbWUgcHJldmlvdXMgbWFyayBwb3NpdGlv bi4KKwkJCSAqCisJCQkgKiBOb3RlIHRoYXQgaW4gc29tZSBjb3JuZXIgY2FzZXMgc3VjaCBhcyBj dXJyZW50IHJvdyBiZWluZworCQkJICogb3V0c2lkZSBmcmFtZSwgdGhlc2UgY2FsY3VsYXRpb25z IGFyZSB0aGVvcmV0aWNhbGx5IHRvbyBzaW1wbGUsCisJCQkgKiBidXQgaXQgZG9lc24ndCBtYXR0 ZXIgYmVjYXVzZSB3ZSdsbCBlbmQgdXAgZGVjaWRpbmcgdGhlIHJvdyBpcworCQkJICogb3V0IG9m IGZyYW1lLiAgV2UgZG8gbm90IGF0dGVtcHQgdG8gYXZvaWQgZmV0Y2hpbmcgcm93cyBwYXN0CisJ CQkgKiBlbmQgb2YgZnJhbWU7IHRoYXQgd291bGQgaGFwcGVuIGluIHNvbWUgY2FzZXMgYW55d2F5 LgorCQkJICovCisJCQlzd2l0Y2ggKHdpbnN0YXRlLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElP Tl9FWENMVVNJT04pCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQkvKiBubyBhZGp1c3RtZW50IG5l ZWRlZCAqLworCQkJCQlicmVhazsKKwkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfQ1VSUkVO VF9ST1c6CisJCQkJCWlmIChhYnNfcG9zID49IHdpbnN0YXRlLT5jdXJyZW50cG9zICYmCisJCQkJ CQl3aW5zdGF0ZS0+Y3VycmVudHBvcyA+PSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKQorCQkJCQkJ YWJzX3BvcysrOworCQkJCQlicmVhazsKKwkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfR1JP VVA6CisJCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3RhdGUpOworCQkJCQlpZiAoYWJzX3Bv cyA+PSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zICYmCisJCQkJCQl3aW5zdGF0ZS0+Z3JvdXB0YWls cG9zID4gd2luc3RhdGUtPmZyYW1laGVhZHBvcykKKwkJCQkJeworCQkJCQkJaW50NjQJCW92ZXJs YXBzdGFydCA9IE1heCh3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zLAorCQkJCQkJCQkJCQkJCSAgIHdp bnN0YXRlLT5mcmFtZWhlYWRwb3MpOworCisJCQkJCQlhYnNfcG9zICs9IHdpbnN0YXRlLT5ncm91 cHRhaWxwb3MgLSBvdmVybGFwc3RhcnQ7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBG UkFNRU9QVElPTl9FWENMVURFX1RJRVM6CisJCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3Rh dGUpOworCQkJCQlpZiAoYWJzX3BvcyA+PSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zICYmCisJCQkJ CQl3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zID4gd2luc3RhdGUtPmZyYW1laGVhZHBvcykKKwkJCQkJ eworCQkJCQkJaW50NjQJCW92ZXJsYXBzdGFydCA9IE1heCh3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9z LAorCQkJCQkJCQkJCQkJCSAgIHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpOworCisJCQkJCQlpZiAo YWJzX3BvcyA9PSBvdmVybGFwc3RhcnQpCisJCQkJCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5jdXJy ZW50cG9zOworCQkJCQkJZWxzZQorCQkJCQkJCWFic19wb3MgKz0gd2luc3RhdGUtPmdyb3VwdGFp bHBvcyAtIG92ZXJsYXBzdGFydCAtIDE7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVs dDoKKwkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBmcmFtZSBvcHRpb24gc3RhdGU6IDB4 JXgiLAorCQkJCQkJIHdpbnN0YXRlLT5mcmFtZU9wdGlvbnMpOworCQkJCQlicmVhazsKKwkJCX0K KwkJCW51bV9yZWR1Y2VkX2ZyYW1lID0gcm93X2lzX2luX3JlZHVjZWRfZnJhbWUod2lub2JqLAor CQkJCQkJCQkJCQkJCQl3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKTsKKwkJCWlmIChudW1fcmVkdWNl ZF9mcmFtZSA8IDApCisJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQllbHNlIGlmIChudW1fcmVk dWNlZF9mcmFtZSA+IDApCisJCQkJaWYgKHJlbHBvcyA+PSBudW1fcmVkdWNlZF9mcmFtZSkKKwkJ CQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQlicmVhazsKKwkJY2FzZSBXSU5ET1dfU0VFS19UQUlM OgorCQkJLyogcmVqZWN0aW5nIHJlbHBvcyA+IDAgaXMgZWFzeSBhbmQgc2ltcGxpZmllcyBjb2Rl IGJlbG93ICovCisJCQlpZiAocmVscG9zID4gMCkKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwor CQkJLyoKKwkJCSAqIFJQUiBjYXJlcyBhYm91dCBmcmFtZSBoZWFkIHBvcy4gTmVlZCB0byBjYWxs CisJCQkgKiB1cGRhdGVfZnJhbWVoZWFkcG9zCisJCQkgKi8KKwkJCXVwZGF0ZV9mcmFtZWhlYWRw b3Mod2luc3RhdGUpOworCisJCQl1cGRhdGVfZnJhbWV0YWlscG9zKHdpbnN0YXRlKTsKKwkJCWFi c19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zIC0gMSArIHJlbHBvczsKKworCQkJLyoKKwkJ CSAqIEFjY291bnQgZm9yIGV4Y2x1c2lvbiBvcHRpb24gaWYgb25lIGlzIGFjdGl2ZS4gIElmIHRo ZXJlIGlzIG5vCisJCQkgKiBleGNsdXNpb24sIHdlIGNhbiBzYWZlbHkgc2V0IHRoZSBtYXJrIGF0 IHRoZSBhY2Nlc3NlZCByb3cuICBCdXQKKwkJCSAqIGlmIHRoZXJlIGlzLCB3ZSBjYW4gb25seSBt YXJrIHRoZSBmcmFtZSBzdGFydCwgYmVjYXVzZSB3ZSBjYW4ndAorCQkJICogYmUgc3VyZSBob3cg ZmFyIGJhY2sgaW4gdGhlIGZyYW1lIHRoZSBleGNsdXNpb24gbWlnaHQgY2F1c2UgdXMKKwkJCSAq IHRvIGZldGNoIGluIGZ1dHVyZS4gIEZ1cnRoZXJtb3JlLCB3ZSBoYXZlIHRvIGFjdHVhbGx5IGNo ZWNrCisJCQkgKiBhZ2FpbnN0IGZyYW1laGVhZHBvcyBoZXJlLCBzaW5jZSBpdCdzIHVuc2FmZSB0 byB0cnkgdG8gZmV0Y2ggYQorCQkJICogcm93IGJlZm9yZSBmcmFtZSBzdGFydCBpZiB0aGUgbWFy ayBtaWdodCBiZSB0aGVyZSBhbHJlYWR5LgorCQkJICovCisJCQlzd2l0Y2ggKHdpbnN0YXRlLT5m cmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVVNJT04pCisJCQl7CisJCQkJY2FzZSAwOgor CQkJCQkvKiBubyBhZGp1c3RtZW50IG5lZWRlZCAqLworCQkJCQltYXJrX3BvcyA9IGFic19wb3M7 CisJCQkJCWJyZWFrOworCQkJCWNhc2UgRlJBTUVPUFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVzoK KwkJCQkJaWYgKGFic19wb3MgPD0gd2luc3RhdGUtPmN1cnJlbnRwb3MgJiYKKwkJCQkJCXdpbnN0 YXRlLT5jdXJyZW50cG9zIDwgd2luc3RhdGUtPmZyYW1ldGFpbHBvcykKKwkJCQkJCWFic19wb3Mt LTsKKwkJCQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7CisJCQkJCWlmIChhYnNfcG9z IDwgd2luc3RhdGUtPmZyYW1laGVhZHBvcykKKwkJCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCQkJ CQltYXJrX3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3M7CisJCQkJCWJyZWFrOworCQkJCWNh c2UgRlJBTUVPUFRJT05fRVhDTFVERV9HUk9VUDoKKwkJCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3 aW5zdGF0ZSk7CisJCQkJCWlmIChhYnNfcG9zIDwgd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAmJgor CQkJCQkJd2luc3RhdGUtPmdyb3VwaGVhZHBvcyA8IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpCisJ CQkJCXsKKwkJCQkJCWludDY0CQlvdmVybGFwZW5kID0gTWluKHdpbnN0YXRlLT5ncm91cHRhaWxw b3MsCisJCQkJCQkJCQkJCQkJIHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpOworCisJCQkJCQlhYnNf cG9zIC09IG92ZXJsYXBlbmQgLSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zOworCQkJCQl9CisJCQkJ CXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUpOworCQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0 YXRlLT5mcmFtZWhlYWRwb3MpCisJCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCQkJbWFya19w b3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOworCQkJCQlicmVhazsKKwkJCQljYXNlIEZSQU1F T1BUSU9OX0VYQ0xVREVfVElFUzoKKwkJCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3aW5zdGF0ZSk7 CisJCQkJCWlmIChhYnNfcG9zIDwgd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAmJgorCQkJCQkJd2lu c3RhdGUtPmdyb3VwaGVhZHBvcyA8IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpCisJCQkJCXsKKwkJ CQkJCWludDY0CQlvdmVybGFwZW5kID0gTWluKHdpbnN0YXRlLT5ncm91cHRhaWxwb3MsCisJCQkJ CQkJCQkJCQkJIHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpOworCisJCQkJCQlpZiAoYWJzX3BvcyA9 PSBvdmVybGFwZW5kIC0gMSkKKwkJCQkJCQlhYnNfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7 CisJCQkJCQllbHNlCisJCQkJCQkJYWJzX3BvcyAtPSBvdmVybGFwZW5kIC0gMSAtIHdpbnN0YXRl LT5ncm91cGhlYWRwb3M7CisJCQkJCX0KKwkJCQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0 ZSk7CisJCQkJCWlmIChhYnNfcG9zIDwgd2luc3RhdGUtPmZyYW1laGVhZHBvcykKKwkJCQkJCWdv dG8gb3V0X29mX2ZyYW1lOworCQkJCQltYXJrX3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3M7 CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgZnJhbWUgb3B0aW9uIHN0YXRlOiAweCV4IiwKKwkJCQkJCSB3aW5zdGF0ZS0+ZnJhbWVPcHRp b25zKTsKKwkJCQkJbWFya19wb3MgPSAwOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCQkJ CWJyZWFrOworCQkJfQorCisJCQludW1fcmVkdWNlZF9mcmFtZSA9IHJvd19pc19pbl9yZWR1Y2Vk X2ZyYW1lKHdpbm9iaiwKKwkJCQkJCQkJCQkJCQkJd2luc3RhdGUtPmZyYW1laGVhZHBvcyk7CisJ CQlpZiAobnVtX3JlZHVjZWRfZnJhbWUgPCAwKQorCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCQkJ ZWxzZSBpZiAobnVtX3JlZHVjZWRfZnJhbWUgPiAwKQorCQkJeworCQkJCWlmICgtcmVscG9zID49 IG51bV9yZWR1Y2VkX2ZyYW1lKQorCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCQlhYnNfcG9z ID0gd2luc3RhdGUtPmZyYW1laGVhZHBvcyArIHJlbHBvcyArCisJCQkJCW51bV9yZWR1Y2VkX2Zy YW1lIC0gMTsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCB3aW5kb3cgc2VlayB0eXBlOiAlZCIsIHNlZWt0eXBlKTsKKwkJCWFic19wb3Mg PSBtYXJrX3BvcyA9IDA7IC8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWJyZWFrOworCX0K KworCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIGFic19wb3MsIHNsb3QpKQorCQln b3RvIG91dF9vZl9mcmFtZTsKKworCS8qIFRoZSBjb2RlIGFib3ZlIGRvZXMgbm90IGRldGVjdCBh bGwgb3V0LW9mLWZyYW1lIGNhc2VzLCBzbyBjaGVjayAqLworCWlmIChyb3dfaXNfaW5fZnJhbWUo d2lub2JqLCBhYnNfcG9zLCBzbG90LCBmYWxzZSkgPD0gMCkKKwkJZ290byBvdXRfb2ZfZnJhbWU7 CisKKwlpZiAoaXNvdXQpCisJCSppc291dCA9IGZhbHNlOworCWlmIChzZXRfbWFyaykKKwl7CisJ CS8qCisJCSAqIElmIFJQUiBpcyBlbmFibGVkIGFuZCBzZWVrIHR5cGUgaXMgV0lORE9XX1NFRUtf VEFJTCwgd2Ugc2V0IHRoZQorCQkgKiBtYXJrIHBvc2l0aW9uIHVuY29uZGl0aW9uYWxseSB0byBm cmFtZWhlYWRwb3MuIEluIHRoaXMgY2FzZSB0aGUKKwkJICogZnJhbWUgYWx3YXlzIHN0YXJ0cyBh dCBDVVJSRU5UX1JPVyBhbmQgbmV2ZXIgZ29lcyBiYWNrLCB0aHVzCisJCSAqIHNldHRpbmcgdGhl IG1hcmsgYXQgdGhlIHBvc2l0aW9uIGlzIHNhZmUuCisJCSAqLworCQlpZiAod2luc3RhdGUtPnJw UGF0dGVybiAhPSBOVUxMICYmIHNlZWt0eXBlID09IFdJTkRPV19TRUVLX1RBSUwpCisJCQltYXJr X3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3M7CisJCVdpblNldE1hcmtQb3NpdGlvbih3aW5v YmosIG1hcmtfcG9zKTsKKwl9CisJcmV0dXJuIDA7CisKK291dF9vZl9mcmFtZToKKwlpZiAoaXNv dXQpCisJCSppc291dCA9IHRydWU7CisJKmlzbnVsbCA9IHRydWU7CisJcmV0dXJuIC0xOworfQor CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICogQVBJIGV4cG9zZWQgdG8gd2luZG93IGZ1bmN0aW9ucwor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisKKy8qCisgKiBXaW5DaGVja0FuZEluaXRpYWxpemVOdWxsVHJl YXRtZW50CisgKgkJQ2hlY2sgbnVsbCB0cmVhdG1lbnQgY2xhdXNlIGFuZCBzZXRzIGlnbm9yZV9u dWxscworICoKKyAqIFdpbmRvdyBmdW5jdGlvbnMgc2hvdWxkIGNhbGwgdGhpcyB0byBjaGVjayBp ZiB0aGV5IGFyZSBiZWluZyBjYWxsZWQgd2l0aAorICogYSBudWxsIHRyZWF0bWVudCBjbGF1c2Ug d2hlbiB0aGV5IGRvbid0IGFsbG93IGl0LCBvciB0byBzZXQgaWdub3JlX251bGxzLgorICovCit2 b2lkCitXaW5DaGVja0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KFdpbmRvd09iamVjdCB3aW5v YmosCisJCQkJCQkJCSAgIGJvb2wgYWxsb3dOdWxsVHJlYXRtZW50LAorCQkJCQkJCQkgICBGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbykKK3sKKwlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3aW5v YmopKTsKKwlpZiAod2lub2JqLT5pZ25vcmVfbnVsbHMgIT0gTk9fTlVMTFRSRUFUTUVOVCAmJiAh YWxsb3dOdWxsVHJlYXRtZW50KQorCXsKKwkJY29uc3QgY2hhciAqZnVuY25hbWUgPSBnZXRfZnVu Y19uYW1lKGZjaW5mby0+ZmxpbmZvLT5mbl9vaWQpOworCisJCWlmICghZnVuY25hbWUpCisJCQll bG9nKEVSUk9SLCAiY291bGQgbm90IGdldCBmdW5jdGlvbiBuYW1lIik7CisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBl cnJtc2coImZ1bmN0aW9uICVzIGRvZXMgbm90IGFsbG93IFJFU1BFQ1QvSUdOT1JFIE5VTExTIiwK KwkJCQkJCWZ1bmNuYW1lKSkpOworCX0KKwllbHNlIGlmICh3aW5vYmotPmlnbm9yZV9udWxscyA9 PSBQQVJTRVJfSUdOT1JFX05VTExTKQorCQl3aW5vYmotPmlnbm9yZV9udWxscyA9IElHTk9SRV9O VUxMUzsKK30KKworLyoKKyAqIFdpbkdldFBhcnRpdGlvbkxvY2FsTWVtb3J5CisgKgkJR2V0IHdv cmtpbmcgbWVtb3J5IHRoYXQgbGl2ZXMgdGlsbCBlbmQgb2YgcGFydGl0aW9uIHByb2Nlc3NpbmcK KyAqCisgKiBPbiBmaXJzdCBjYWxsIHdpdGhpbiBhIGdpdmVuIHBhcnRpdGlvbiwgdGhpcyBhbGxv Y2F0ZXMgYW5kIHplcm9lcyB0aGUKKyAqIHJlcXVlc3RlZCBhbW91bnQgb2Ygc3BhY2UuICBTdWJz ZXF1ZW50IGNhbGxzIGp1c3QgcmV0dXJuIHRoZSBzYW1lIGNodW5rLgorICoKKyAqIE1lbW9yeSBv YnRhaW5lZCB0aGlzIHdheSBpcyBub3JtYWxseSB1c2VkIHRvIGhvbGQgc3RhdGUgdGhhdCBzaG91 bGQgYmUKKyAqIGF1dG9tYXRpY2FsbHkgcmVzZXQgZm9yIGVhY2ggbmV3IHBhcnRpdGlvbi4gIElm IGEgd2luZG93IGZ1bmN0aW9uIHdhbnRzCisgKiB0byBob2xkIHN0YXRlIGFjcm9zcyB0aGUgd2hv bGUgcXVlcnksIGZjaW5mby0+Zm5fZXh0cmEgY2FuIGJlIHVzZWQgaW4gdGhlCisgKiB1c3VhbCB3 YXkgZm9yIHRoYXQuCisgKi8KK3ZvaWQgKgorV2luR2V0UGFydGl0aW9uTG9jYWxNZW1vcnkoV2lu ZG93T2JqZWN0IHdpbm9iaiwgU2l6ZSBzeikKK3sKKwlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxp ZCh3aW5vYmopKTsKKwlpZiAod2lub2JqLT5sb2NhbG1lbSA9PSBOVUxMKQorCQl3aW5vYmotPmxv Y2FsbWVtID0KKwkJCU1lbW9yeUNvbnRleHRBbGxvY1plcm8od2lub2JqLT53aW5zdGF0ZS0+cGFy dGNvbnRleHQsIHN6KTsKKwlyZXR1cm4gd2lub2JqLT5sb2NhbG1lbTsKK30KKworLyoKKyAqIFdp bkdldEN1cnJlbnRQb3NpdGlvbgorICoJCVJldHVybiB0aGUgY3VycmVudCByb3cncyBwb3NpdGlv biAoY291bnRpbmcgZnJvbSAwKSB3aXRoaW4gdGhlIGN1cnJlbnQKKyAqCQlwYXJ0aXRpb24uCisg Ki8KK2ludDY0CitXaW5HZXRDdXJyZW50UG9zaXRpb24oV2luZG93T2JqZWN0IHdpbm9iaikKK3sK KwlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKKwlyZXR1cm4gd2lub2JqLT53 aW5zdGF0ZS0+Y3VycmVudHBvczsKK30KKworLyoKKyAqIFdpbkdldFBhcnRpdGlvblJvd0NvdW50 CisgKgkJUmV0dXJuIHRvdGFsIG51bWJlciBvZiByb3dzIGNvbnRhaW5lZCBpbiB0aGUgY3VycmVu dCBwYXJ0aXRpb24uCisgKgorICogTm90ZTogdGhpcyBpcyBhIHJlbGF0aXZlbHkgZXhwZW5zaXZl IG9wZXJhdGlvbiBiZWNhdXNlIGl0IGZvcmNlcyB0aGUKKyAqIHdob2xlIHBhcnRpdGlvbiB0byBi ZSAic3Bvb2xlZCIgaW50byB0aGUgdHVwbGVzdG9yZSBhdCBvbmNlLiAgT25jZQorICogZXhlY3V0 ZWQsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgY2FsbHMgd2l0aGluIHRoZSBzYW1lIHBhcnRpdGlvbiBh cmUgY2hlYXAuCisgKi8KK2ludDY0CitXaW5HZXRQYXJ0aXRpb25Sb3dDb3VudChXaW5kb3dPYmpl Y3Qgd2lub2JqKQoreworCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOworCXNw b29sX3R1cGxlcyh3aW5vYmotPndpbnN0YXRlLCAtMSk7CisJcmV0dXJuIHdpbm9iai0+d2luc3Rh dGUtPnNwb29sZWRfcm93czsKIH0KIAogLyoKQEAgLTQwMDEsOCArNTIxMiw2IEBAIFdpbkdldEZ1 bmNBcmdJbkZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludCBhcmdubywKIAlXaW5kb3dBZ2dT dGF0ZSAqd2luc3RhdGU7CiAJRXhwckNvbnRleHQgKmVjb250ZXh0OwogCVR1cGxlVGFibGVTbG90 ICpzbG90OwotCWludDY0CQlhYnNfcG9zOwotCWludDY0CQltYXJrX3BvczsKIAogCUFzc2VydChX aW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOwogCXdpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0 ZTsKQEAgLTQwMTMsMTY2ICs1MjIyLDE1IEBAIFdpbkdldEZ1bmNBcmdJbkZyYW1lKFdpbmRvd09i amVjdCB3aW5vYmosIGludCBhcmdubywKIAkJcmV0dXJuIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdp bmZyYW1lKHdpbm9iaiwgYXJnbm8sIHJlbHBvcywgc2Vla3R5cGUsCiAJCQkJCQkJCQkJCSBzZXRf bWFyaywgaXNudWxsLCBpc291dCk7CiAKLQlzd2l0Y2ggKHNlZWt0eXBlKQorCWlmIChXaW5HZXRT bG90SW5GcmFtZSh3aW5vYmosIHNsb3QsCisJCQkJCQkgIHJlbHBvcywgc2Vla3R5cGUsIHNldF9t YXJrLAorCQkJCQkJICBpc251bGwsIGlzb3V0KSA9PSAwKQogCXsKLQkJY2FzZSBXSU5ET1dfU0VF S19DVVJSRU5UOgotCQkJZWxvZyhFUlJPUiwgIldJTkRPV19TRUVLX0NVUlJFTlQgaXMgbm90IHN1 cHBvcnRlZCBmb3IgV2luR2V0RnVuY0FyZ0luRnJhbWUiKTsKLQkJCWFic19wb3MgPSBtYXJrX3Bv cyA9IDA7IC8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCWJyZWFrOwotCQljYXNlIFdJTkRP V19TRUVLX0hFQUQ6Ci0JCQkvKiByZWplY3RpbmcgcmVscG9zIDwgMCBpcyBlYXN5IGFuZCBzaW1w bGlmaWVzIGNvZGUgYmVsb3cgKi8KLQkJCWlmIChyZWxwb3MgPCAwKQotCQkJCWdvdG8gb3V0X29m X2ZyYW1lOwotCQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7Ci0JCQlhYnNfcG9zID0g d2luc3RhdGUtPmZyYW1laGVhZHBvcyArIHJlbHBvczsKLQkJCW1hcmtfcG9zID0gYWJzX3BvczsK LQotCQkJLyoKLQkJCSAqIEFjY291bnQgZm9yIGV4Y2x1c2lvbiBvcHRpb24gaWYgb25lIGlzIGFj dGl2ZSwgYnV0IGFkdmFuY2Ugb25seQotCQkJICogYWJzX3BvcyBub3QgbWFya19wb3MuICBUaGlz IHByZXZlbnRzIGNoYW5nZXMgb2YgdGhlIGN1cnJlbnQKLQkJCSAqIHJvdydzIHBlZXIgZ3JvdXAg ZnJvbSByZXN1bHRpbmcgaW4gdHJ5aW5nIHRvIGZldGNoIGEgcm93IGJlZm9yZQotCQkJICogc29t ZSBwcmV2aW91cyBtYXJrIHBvc2l0aW9uLgotCQkJICoKLQkJCSAqIE5vdGUgdGhhdCBpbiBzb21l IGNvcm5lciBjYXNlcyBzdWNoIGFzIGN1cnJlbnQgcm93IGJlaW5nCi0JCQkgKiBvdXRzaWRlIGZy YW1lLCB0aGVzZSBjYWxjdWxhdGlvbnMgYXJlIHRoZW9yZXRpY2FsbHkgdG9vIHNpbXBsZSwKLQkJ CSAqIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIHdlJ2xsIGVuZCB1cCBkZWNpZGluZyB0 aGUgcm93IGlzCi0JCQkgKiBvdXQgb2YgZnJhbWUuICBXZSBkbyBub3QgYXR0ZW1wdCB0byBhdm9p ZCBmZXRjaGluZyByb3dzIHBhc3QKLQkJCSAqIGVuZCBvZiBmcmFtZTsgdGhhdCB3b3VsZCBoYXBw ZW4gaW4gc29tZSBjYXNlcyBhbnl3YXkuCi0JCQkgKi8KLQkJCXN3aXRjaCAod2luc3RhdGUtPmZy YW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVU0lPTikKLQkJCXsKLQkJCQljYXNlIDA6Ci0J CQkJCS8qIG5vIGFkanVzdG1lbnQgbmVlZGVkICovCi0JCQkJCWJyZWFrOwotCQkJCWNhc2UgRlJB TUVPUFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVzoKLQkJCQkJaWYgKGFic19wb3MgPj0gd2luc3Rh dGUtPmN1cnJlbnRwb3MgJiYKLQkJCQkJCXdpbnN0YXRlLT5jdXJyZW50cG9zID49IHdpbnN0YXRl LT5mcmFtZWhlYWRwb3MpCi0JCQkJCQlhYnNfcG9zKys7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2Ug RlJBTUVPUFRJT05fRVhDTFVERV9HUk9VUDoKLQkJCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3aW5z dGF0ZSk7Ci0JCQkJCWlmIChhYnNfcG9zID49IHdpbnN0YXRlLT5ncm91cGhlYWRwb3MgJiYKLQkJ CQkJCXdpbnN0YXRlLT5ncm91cHRhaWxwb3MgPiB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKQotCQkJ CQl7Ci0JCQkJCQlpbnQ2NAkJb3ZlcmxhcHN0YXJ0ID0gTWF4KHdpbnN0YXRlLT5ncm91cGhlYWRw b3MsCi0JCQkJCQkJCQkJCQkJICAgd2luc3RhdGUtPmZyYW1laGVhZHBvcyk7Ci0KLQkJCQkJCWFi c19wb3MgKz0gd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAtIG92ZXJsYXBzdGFydDsKLQkJCQkJfQot CQkJCQlicmVhazsKLQkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfVElFUzoKLQkJCQkJdXBk YXRlX2dyb3VwdGFpbHBvcyh3aW5zdGF0ZSk7Ci0JCQkJCWlmIChhYnNfcG9zID49IHdpbnN0YXRl LT5ncm91cGhlYWRwb3MgJiYKLQkJCQkJCXdpbnN0YXRlLT5ncm91cHRhaWxwb3MgPiB3aW5zdGF0 ZS0+ZnJhbWVoZWFkcG9zKQotCQkJCQl7Ci0JCQkJCQlpbnQ2NAkJb3ZlcmxhcHN0YXJ0ID0gTWF4 KHdpbnN0YXRlLT5ncm91cGhlYWRwb3MsCi0JCQkJCQkJCQkJCQkJICAgd2luc3RhdGUtPmZyYW1l aGVhZHBvcyk7Ci0KLQkJCQkJCWlmIChhYnNfcG9zID09IG92ZXJsYXBzdGFydCkKLQkJCQkJCQlh YnNfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7Ci0JCQkJCQllbHNlCi0JCQkJCQkJYWJzX3Bv cyArPSB3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zIC0gb3ZlcmxhcHN0YXJ0IC0gMTsKLQkJCQkJfQot CQkJCQlicmVhazsKLQkJCQlkZWZhdWx0OgotCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IGZyYW1lIG9wdGlvbiBzdGF0ZTogMHgleCIsCi0JCQkJCQkgd2luc3RhdGUtPmZyYW1lT3B0aW9u cyk7Ci0JCQkJCWJyZWFrOwotCQkJfQotCQkJYnJlYWs7Ci0JCWNhc2UgV0lORE9XX1NFRUtfVEFJ TDoKLQkJCS8qIHJlamVjdGluZyByZWxwb3MgPiAwIGlzIGVhc3kgYW5kIHNpbXBsaWZpZXMgY29k ZSBiZWxvdyAqLwotCQkJaWYgKHJlbHBvcyA+IDApCi0JCQkJZ290byBvdXRfb2ZfZnJhbWU7Ci0J CQl1cGRhdGVfZnJhbWV0YWlscG9zKHdpbnN0YXRlKTsKLQkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ ZnJhbWV0YWlscG9zIC0gMSArIHJlbHBvczsKLQotCQkJLyoKLQkJCSAqIEFjY291bnQgZm9yIGV4 Y2x1c2lvbiBvcHRpb24gaWYgb25lIGlzIGFjdGl2ZS4gIElmIHRoZXJlIGlzIG5vCi0JCQkgKiBl eGNsdXNpb24sIHdlIGNhbiBzYWZlbHkgc2V0IHRoZSBtYXJrIGF0IHRoZSBhY2Nlc3NlZCByb3cu ICBCdXQKLQkJCSAqIGlmIHRoZXJlIGlzLCB3ZSBjYW4gb25seSBtYXJrIHRoZSBmcmFtZSBzdGFy dCwgYmVjYXVzZSB3ZSBjYW4ndAotCQkJICogYmUgc3VyZSBob3cgZmFyIGJhY2sgaW4gdGhlIGZy YW1lIHRoZSBleGNsdXNpb24gbWlnaHQgY2F1c2UgdXMKLQkJCSAqIHRvIGZldGNoIGluIGZ1dHVy ZS4gIEZ1cnRoZXJtb3JlLCB3ZSBoYXZlIHRvIGFjdHVhbGx5IGNoZWNrCi0JCQkgKiBhZ2FpbnN0 IGZyYW1laGVhZHBvcyBoZXJlLCBzaW5jZSBpdCdzIHVuc2FmZSB0byB0cnkgdG8gZmV0Y2ggYQot CQkJICogcm93IGJlZm9yZSBmcmFtZSBzdGFydCBpZiB0aGUgbWFyayBtaWdodCBiZSB0aGVyZSBh bHJlYWR5LgotCQkJICovCi0JCQlzd2l0Y2ggKHdpbnN0YXRlLT5mcmFtZU9wdGlvbnMgJiBGUkFN RU9QVElPTl9FWENMVVNJT04pCi0JCQl7Ci0JCQkJY2FzZSAwOgotCQkJCQkvKiBubyBhZGp1c3Rt ZW50IG5lZWRlZCAqLwotCQkJCQltYXJrX3BvcyA9IGFic19wb3M7Ci0JCQkJCWJyZWFrOwotCQkJ CWNhc2UgRlJBTUVPUFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVzoKLQkJCQkJaWYgKGFic19wb3Mg PD0gd2luc3RhdGUtPmN1cnJlbnRwb3MgJiYKLQkJCQkJCXdpbnN0YXRlLT5jdXJyZW50cG9zIDwg d2luc3RhdGUtPmZyYW1ldGFpbHBvcykKLQkJCQkJCWFic19wb3MtLTsKLQkJCQkJdXBkYXRlX2Zy YW1laGVhZHBvcyh3aW5zdGF0ZSk7Ci0JCQkJCWlmIChhYnNfcG9zIDwgd2luc3RhdGUtPmZyYW1l aGVhZHBvcykKLQkJCQkJCWdvdG8gb3V0X29mX2ZyYW1lOwotCQkJCQltYXJrX3BvcyA9IHdpbnN0 YXRlLT5mcmFtZWhlYWRwb3M7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgRlJBTUVPUFRJT05fRVhD TFVERV9HUk9VUDoKLQkJCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3aW5zdGF0ZSk7Ci0JCQkJCWlm IChhYnNfcG9zIDwgd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAmJgotCQkJCQkJd2luc3RhdGUtPmdy b3VwaGVhZHBvcyA8IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpCi0JCQkJCXsKLQkJCQkJCWludDY0 CQlvdmVybGFwZW5kID0gTWluKHdpbnN0YXRlLT5ncm91cHRhaWxwb3MsCi0JCQkJCQkJCQkJCQkJ IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpOwotCi0JCQkJCQlhYnNfcG9zIC09IG92ZXJsYXBlbmQg LSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zOwotCQkJCQl9Ci0JCQkJCXVwZGF0ZV9mcmFtZWhlYWRw b3Mod2luc3RhdGUpOwotCQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3Mp Ci0JCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKLQkJCQkJbWFya19wb3MgPSB3aW5zdGF0ZS0+ZnJh bWVoZWFkcG9zOwotCQkJCQlicmVhazsKLQkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfVElF UzoKLQkJCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3aW5zdGF0ZSk7Ci0JCQkJCWlmIChhYnNfcG9z IDwgd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAmJgotCQkJCQkJd2luc3RhdGUtPmdyb3VwaGVhZHBv cyA8IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpCi0JCQkJCXsKLQkJCQkJCWludDY0CQlvdmVybGFw ZW5kID0gTWluKHdpbnN0YXRlLT5ncm91cHRhaWxwb3MsCi0JCQkJCQkJCQkJCQkJIHdpbnN0YXRl LT5mcmFtZXRhaWxwb3MpOwotCi0JCQkJCQlpZiAoYWJzX3BvcyA9PSBvdmVybGFwZW5kIC0gMSkK LQkJCQkJCQlhYnNfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7Ci0JCQkJCQllbHNlCi0JCQkJ CQkJYWJzX3BvcyAtPSBvdmVybGFwZW5kIC0gMSAtIHdpbnN0YXRlLT5ncm91cGhlYWRwb3M7Ci0J CQkJCX0KLQkJCQkJdXBkYXRlX2ZyYW1laGVhZHBvcyh3aW5zdGF0ZSk7Ci0JCQkJCWlmIChhYnNf cG9zIDwgd2luc3RhdGUtPmZyYW1laGVhZHBvcykKLQkJCQkJCWdvdG8gb3V0X29mX2ZyYW1lOwot CQkJCQltYXJrX3BvcyA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3M7Ci0JCQkJCWJyZWFrOwotCQkJ CWRlZmF1bHQ6Ci0JCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgZnJhbWUgb3B0aW9uIHN0 YXRlOiAweCV4IiwKLQkJCQkJCSB3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zKTsKLQkJCQkJbWFya19w b3MgPSAwOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQkJCWJyZWFrOwotCQkJfQotCQkJ YnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIHdpbmRvdyBz ZWVrIHR5cGU6ICVkIiwgc2Vla3R5cGUpOwotCQkJYWJzX3BvcyA9IG1hcmtfcG9zID0gMDsgLyog a2VlcCBjb21waWxlciBxdWlldCAqLwotCQkJYnJlYWs7CisJCWVjb250ZXh0LT5lY3h0X291dGVy dHVwbGUgPSBzbG90OworCQlyZXR1cm4gRXhlY0V2YWxFeHByKChFeHByU3RhdGUgKikgbGlzdF9u dGgod2lub2JqLT5hcmdzdGF0ZXMsIGFyZ25vKSwKKwkJCQkJCQllY29udGV4dCwgaXNudWxsKTsK IAl9CiAKLQlpZiAoIXdpbmRvd19nZXR0dXBsZXNsb3Qod2lub2JqLCBhYnNfcG9zLCBzbG90KSkK LQkJZ290byBvdXRfb2ZfZnJhbWU7Ci0KLQkvKiBUaGUgY29kZSBhYm92ZSBkb2VzIG5vdCBkZXRl Y3QgYWxsIG91dC1vZi1mcmFtZSBjYXNlcywgc28gY2hlY2sgKi8KLQlpZiAocm93X2lzX2luX2Zy YW1lKHdpbm9iaiwgYWJzX3Bvcywgc2xvdCwgZmFsc2UpIDw9IDApCi0JCWdvdG8gb3V0X29mX2Zy YW1lOwotCi0JaWYgKGlzb3V0KQotCQkqaXNvdXQgPSBmYWxzZTsKLQlpZiAoc2V0X21hcmspCi0J CVdpblNldE1hcmtQb3NpdGlvbih3aW5vYmosIG1hcmtfcG9zKTsKLQllY29udGV4dC0+ZWN4dF9v dXRlcnR1cGxlID0gc2xvdDsKLQlyZXR1cm4gRXhlY0V2YWxFeHByKChFeHByU3RhdGUgKikgbGlz dF9udGgod2lub2JqLT5hcmdzdGF0ZXMsIGFyZ25vKSwKLQkJCQkJCWVjb250ZXh0LCBpc251bGwp OwotCi1vdXRfb2ZfZnJhbWU6CiAJaWYgKGlzb3V0KQogCQkqaXNvdXQgPSB0cnVlOwogCSppc251 bGwgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHBy LmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCAwZTE2MGI4NTAy Yy4uZTQyYzVkNjViYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRf ZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0xMjks NiArMTI5LDkgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAlMTFZNVmFs dWVSZWYgdl9hZ2d2YWx1ZXM7CiAJTExWTVZhbHVlUmVmIHZfYWdnbnVsbHM7CiAKKwkvKiBSUFIg bmF2aWdhdGlvbjogd2hlbiB0cnVlLCBFRU9QX09VVEVSX1ZBUiByZWxvYWRzIGZyb20gZWNvbnRl eHQgKi8KKwlib29sCQloYXNfcnByX25hdjsKKwogCWluc3RyX3RpbWUJc3RhcnR0aW1lOwogCWlu c3RyX3RpbWUJZGVmb3JtX3N0YXJ0dGltZTsKIAlpbnN0cl90aW1lCWVuZHRpbWU7CkBAIC0yOTgs NiArMzAxLDM2IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJCQkJ CSAgIEZJRUxETk9fRVhQUkNPTlRFWFRfQUdHTlVMTFMsCiAJCQkJCQkJCSAgICJ2LmVjb250ZXh0 LmFnZ251bGxzIik7CiAKKwkvKgorCSAqIFJQUiBuYXZpZ2F0aW9uIG9wY29kZXMgKFBSRVYvTkVY VCkgc3dhcCBlY3h0X291dGVydHVwbGUgdG8gYSBkaWZmZXJlbnQKKwkgKiByb3cgbWlkLWV4cHJl c3Npb24uICBUaGUgSklUIGNvZGUgbG9hZHMgdl9vdXRlcnZhbHVlcyBhbmQgdl9vdXRlcm51bGxz CisJICogb25jZSBpbiB0aGUgZW50cnkgYmxvY2sgYW5kIHJldXNlcyB0aGVtIGZvciBhbGwgRUVP UF9PVVRFUl9WQVIgc3RlcHMuCisJICogQWZ0ZXIgYSBzbG90IHN3YXAsIHRoZXNlIGNhY2hlZCBw b2ludGVycyBiZWNvbWUgc3RhbGUgYmVjYXVzZSB0aGUgbmV3CisJICogc2xvdCBoYXMgaXRzIG93 biB0dHNfdmFsdWVzL3R0c19pc251bGwgYXJyYXlzLgorCSAqCisJICogV2hlbiBSUFIgbmF2aWdh dGlvbiBvcGNvZGVzIGFyZSBwcmVzZW50LCBFRU9QX09VVEVSX1ZBUiByZWxvYWRzIHRoZQorCSAq IHNsb3QgcG9pbnRlciBmcm9tIGVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgb24gZXZlcnkgYWNj ZXNzIGluc3RlYWQgb2YKKwkgKiB1c2luZyB0aGUgY2FjaGVkIGVudHJ5LWJsb2NrIHZhbHVlcy4g IFRoaXMgYXZvaWRzIHRoZSBTU0EvUEhJCisJICogY29tcGxleGl0eSB3aGlsZSBrZWVwaW5nIHRo ZSByZXN0IG9mIHRoZSBleHByZXNzaW9uIEpJVC1jb21waWxlZC4KKwkgKiBFeHByZXNzaW9ucyB3 aXRob3V0IFJQUiBuYXZpZ2F0aW9uIHVzZSB0aGUgY2FjaGVkIHZhbHVlcyBhcyBiZWZvcmUuCisJ ICovCisJaGFzX3Jwcl9uYXYgPSBmYWxzZTsKKwlpZiAocGFyZW50ICYmIElzQShwYXJlbnQsIFdp bmRvd0FnZ1N0YXRlKSAmJgorCQkoKFdpbmRvd0FnZyAqKSBwYXJlbnQtPnBsYW4pLT5ycFBhdHRl cm4gIT0gTlVMTCkKKwl7CisJCWZvciAoaW50IG9wbm8gPSAwOyBvcG5vIDwgc3RhdGUtPnN0ZXBz X2xlbjsgb3BubysrKQorCQl7CisJCQlFeHByRXZhbE9wCW9wY29kZSA9IEV4ZWNFdmFsU3RlcE9w KHN0YXRlLCAmc3RhdGUtPnN0ZXBzW29wbm9dKTsKKworCQkJaWYgKG9wY29kZSA9PSBFRU9QX1JQ Ul9OQVZfU0VUIHx8CisJCQkJb3Bjb2RlID09IEVFT1BfUlBSX05BVl9SRVNUT1JFKQorCQkJewor CQkJCWhhc19ycHJfbmF2ID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwogCS8q IGFsbG9jYXRlIGJsb2NrcyBmb3IgZWFjaCBvcCB1cGZyb250LCBzbyB3ZSBjYW4gZG8ganVtcHMg ZWFzaWx5ICovCiAJb3BibG9ja3MgPSBwYWxsb2NfYXJyYXkoTExWTUJhc2ljQmxvY2tSZWYsIHN0 YXRlLT5zdGVwc19sZW4pOwogCWZvciAoaW50IG9wbm8gPSAwOyBvcG5vIDwgc3RhdGUtPnN0ZXBz X2xlbjsgb3BubysrKQpAQCAtNDYwLDggKzQ5MywzNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHBy U3RhdGUgKnN0YXRlKQogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKG9wY29kZSA9PSBFRU9QX09VVEVS X1ZBUikKIAkJCQkJewotCQkJCQkJdl92YWx1ZXMgPSB2X291dGVydmFsdWVzOwotCQkJCQkJdl9u dWxscyA9IHZfb3V0ZXJudWxsczsKKwkJCQkJCWlmIChoYXNfcnByX25hdikKKwkJCQkJCXsKKwkJ CQkJCQkvKgorCQkJCQkJCSAqIFJQUiBuYXZpZ2F0aW9uIHN3YXBzIGVjeHRfb3V0ZXJ0dXBsZQor CQkJCQkJCSAqIG1pZC1leHByZXNzaW9uLiAgUmVsb2FkIHNsb3QgcG9pbnRlciBmcm9tCisJCQkJ CQkJICogZWNvbnRleHQgb24gZXZlcnkgYWNjZXNzIHNvIHdlIHJlYWQgZnJvbSB0aGUKKwkJCQkJ CQkgKiBjdXJyZW50IChwb3NzaWJseSBzd2FwcGVkKSBzbG90LgorCQkJCQkJCSAqLworCQkJCQkJ CUxMVk1WYWx1ZVJlZiB2X3RtcHNsb3Q7CisKKwkJCQkJCQl2X3RtcHNsb3QgPSBsX2xvYWRfc3Ry dWN0X2dlcChiLAorCQkJCQkJCQkJCQkJCQkgIFN0cnVjdEV4cHJDb250ZXh0LAorCQkJCQkJCQkJ CQkJCQkgIHZfZWNvbnRleHQsCisJCQkJCQkJCQkJCQkJCSAgRklFTEROT19FWFBSQ09OVEVYVF9P VVRFUlRVUExFLAorCQkJCQkJCQkJCQkJCQkgICJ2X291dGVyc2xvdF9yZWxvYWQiKTsKKwkJCQkJ CQl2X3ZhbHVlcyA9IGxfbG9hZF9zdHJ1Y3RfZ2VwKGIsCisJCQkJCQkJCQkJCQkJCSBTdHJ1Y3RU dXBsZVRhYmxlU2xvdCwKKwkJCQkJCQkJCQkJCQkJIHZfdG1wc2xvdCwKKwkJCQkJCQkJCQkJCQkJ IEZJRUxETk9fVFVQTEVUQUJMRVNMT1RfVkFMVUVTLAorCQkJCQkJCQkJCQkJCQkgInZfb3V0ZXJ2 YWx1ZXNfcmVsb2FkIik7CisJCQkJCQkJdl9udWxscyA9IGxfbG9hZF9zdHJ1Y3RfZ2VwKGIsCisJ CQkJCQkJCQkJCQkJCVN0cnVjdFR1cGxlVGFibGVTbG90LAorCQkJCQkJCQkJCQkJCQl2X3RtcHNs b3QsCisJCQkJCQkJCQkJCQkJCUZJRUxETk9fVFVQTEVUQUJMRVNMT1RfSVNOVUxMLAorCQkJCQkJ CQkJCQkJCQkidl9vdXRlcm51bGxzX3JlbG9hZCIpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJ CQkJeworCQkJCQkJCXZfdmFsdWVzID0gdl9vdXRlcnZhbHVlczsKKwkJCQkJCQl2X251bGxzID0g dl9vdXRlcm51bGxzOworCQkJCQkJfQogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKG9wY29kZSA9PSBF RU9QX1NDQU5fVkFSKQogCQkJCQl7CkBAIC0yNDM0LDYgKzI0OTYsMTggQEAgbGx2bV9jb21waWxl X2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5v ICsgMV0pOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfUlBSX05BVl9TRVQ6CisJCQkJYnVp bGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsUlBSTmF2U2V0IiwKKwkJCQkJCQkJdl9zdGF0 ZSwgb3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAx XSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVPUF9SUFJfTkFWX1JFU1RPUkU6CisJCQkJYnVp bGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNFdmFsUlBSTmF2UmVzdG9yZSIsCisJCQkJCQkJCXZf c3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5v ICsgMV0pOworCQkJCWJyZWFrOworCiAJCQljYXNlIEVFT1BfQUdHX1NUUklDVF9ERVNFUklBTEla RToKIAkJCWNhc2UgRUVPUF9BR0dfREVTRVJJQUxJWkU6CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF90eXBlcy5jCmluZGV4IGM4YTFmODQxMjkzLi5lNzhiMzFkNzc1ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTY4LDYgKzE2OCw4IEBAIHZvaWQJICAgKnJl ZmVyZW5jZWRfZnVuY3Rpb25zW10gPQogCUV4ZWNFdmFsU2NhbGFyQXJyYXlPcCwKIAlFeGVjRXZh bEhhc2hlZFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxTdWJQbGFuLAorCUV4ZWNFdmFsUlBSTmF2 U2V0LAorCUV4ZWNFdmFsUlBSTmF2UmVzdG9yZSwKIAlFeGVjRXZhbFN5c1ZhciwKIAlFeGVjRXZh bFdob2xlUm93VmFyLAogCUV4ZWNFdmFsWG1sRXhwciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1 bmNzLmMKaW5kZXggNzhiN2YwNWFiYTIuLjM4NjlmNmM4OTk0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv d2luZG93ZnVuY3MuYwpAQCAtNDEsNyArNDEsNiBAQCBzdGF0aWMgYm9vbCByYW5rX3VwKFdpbmRv d09iamVjdCB3aW5vYmopOwogc3RhdGljIERhdHVtIGxlYWRsYWdfY29tbW9uKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLAogCQkJCQkJCWJvb2wgZm9yd2FyZCwgYm9vbCB3aXRob2Zmc2V0LCBib29s IHdpdGhkZWZhdWx0KTsKIAotCiAvKgogICogdXRpbGl0eSByb3V0aW5lIGZvciAqX3JhbmsgZnVu Y3Rpb25zLgogICovCkBAIC03MjQsMyArNzIzLDEyMSBAQCB3aW5kb3dfbnRoX3ZhbHVlKFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKIH0KKworLyoKKyAqIHBy ZXYKKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIFBSRVYgbmF2aWdhdGlvbiBvcGVy YXRvci4KKyAqCisgKiBUaGUgcGFyc2VyIHRyYW5zZm9ybXMgcHJldigpIGNhbGxzIGluc2lkZSBE RUZJTkUgaW50byBSUFJOYXZFeHByIG5vZGVzLAorICogc28gdGhpcyBmdW5jdGlvbiBpcyBuZXZl ciByZWFjaGVkIGR1cmluZyBub3JtYWwgUlBSIGV4ZWN1dGlvbi4gIEl0IGV4aXN0cworICogb25s eSBzbyB0aGF0IHRoZSBwYXJzZXIgY2FuIHJlc29sdmUgdGhlIGZ1bmN0aW9uIG5hbWUgZnJvbSBw Z19wcm9jLgorICogQ2FsbHMgb3V0c2lkZSBERUZJTkUgYXJlIHJlamVjdGVkIGJ5IHBhcnNlX2Z1 bmMuYyAoRVhQUl9LSU5EX1JQUl9ERUZJTkUKKyAqIGNoZWNrKS4gIFRoZSBlcnJvciBiZWxvdyBp cyBhIGRlZmVuc2l2ZSBtZWFzdXJlIGluIGNhc2UgdGhhdCBjaGVjayBpcworICogYnlwYXNzZWQg KGUuZy4sIGRpcmVjdCBDLWxldmVsIGZ1bmN0aW9uIGludm9jYXRpb24pLgorICovCitEYXR1bQor d2luZG93X3ByZXYoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQllcnJtc2coImNhbm5vdCB1 c2UgUFJFVigpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikpOworCVBHX1JFVFVSTl9OVUxMKCk7 CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIG5leHQKKyAqIENhdGFsb2cgcGxhY2Vo b2xkZXIgZm9yIFJQUidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRvci4KKyAqIFNlZSB3aW5kb3df cHJldigpIGZvciBkZXRhaWxzLgorICovCitEYXR1bQord2luZG93X25leHQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQllcnJtc2coImNhbm5vdCB1c2UgTkVYVCgpIG91dHNpZGUgYSBERUZJ TkUgY2xhdXNlIikpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30K KworLyoKKyAqIHByZXYodmFsdWUsIG9mZnNldCkKKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9y IFJQUidzIFBSRVYgbmF2aWdhdGlvbiBvcGVyYXRvciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5k b3dfcHJldigpIGZvciBkZXRhaWxzLgorICovCitEYXR1bQord2luZG93X3ByZXZfb2Zmc2V0KFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgdXNlIFBSRVYoKSBvdXRz aWRlIGEgREVGSU5FIGNsYXVzZSIpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFj aGVkICovCit9CisKKy8qCisgKiBuZXh0KHZhbHVlLCBvZmZzZXQpCisgKiBDYXRhbG9nIHBsYWNl aG9sZGVyIGZvciBSUFIncyBORVhUIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0aCBvZmZzZXQuCisg KiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19uZXh0 X29mZnNldChQR19GVU5DVElPTl9BUkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQllcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygiY2Fubm90IHVzZSBO RVhUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7CisJUEdfUkVUVVJOX05VTEwoKTsJCQkv KiBub3QgcmVhY2hlZCAqLworfQorCisvKgorICogZmlyc3QKKyAqIENhdGFsb2cgcGxhY2Vob2xk ZXIgZm9yIFJQUidzIEZJUlNUIG5hdmlnYXRpb24gb3BlcmF0b3IuCisgKiBTZWUgd2luZG93X3By ZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19maXJzdChQR19GVU5DVElPTl9B UkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCWVycm1zZygiY2Fubm90IHVzZSBGSVJTVCgpIG91dHNpZGUgYSBERUZJ TkUgY2xhdXNlIikpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30K KworLyoKKyAqIGxhc3QKKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIExBU1QgbmF2 aWdhdGlvbiBvcGVyYXRvci4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgorICov CitEYXR1bQord2luZG93X2xhc3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwllcmVwb3J0KEVSUk9S LAorCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQllcnJtc2co ImNhbm5vdCB1c2UgTEFTVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikpOworCVBHX1JFVFVS Tl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIGZpcnN0KHZhbHVlLCBv ZmZzZXQpCisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBGSVJTVCBuYXZpZ2F0aW9u IG9wZXJhdG9yIHdpdGggb2Zmc2V0LgorICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMu CisgKi8KK0RhdHVtCit3aW5kb3dfZmlyc3Rfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJ ZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJZXJybXNnKCJjYW5ub3QgdXNlIEZJUlNUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2Ui KSk7CisJUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLworfQorCisvKgorICog bGFzdCh2YWx1ZSwgb2Zmc2V0KQorICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgTEFT VCBuYXZpZ2F0aW9uIG9wZXJhdG9yIHdpdGggb2Zmc2V0LgorICogU2VlIHdpbmRvd19wcmV2KCkg Zm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3aW5kb3dfbGFzdF9vZmZzZXQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQllcnJtc2coImNhbm5vdCB1c2UgTEFTVCgpIG91dHNpZGUgYSBERUZJ TkUgY2xhdXNlIikpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGJlMTU3YTVmYmU5Li5iM2FhNDJmYzY2ZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDk2Nyw2ICsxMDk2NywzMCBAQAogeyBvaWQgPT4g JzMxMTQnLCBkZXNjciA9PiAnZmV0Y2ggdGhlIE50aCByb3cgdmFsdWUnLAogICBwcm9uYW1lID0+ ICdudGhfdmFsdWUnLCBwcm9raW5kID0+ICd3JywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcs CiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGludDQnLCBwcm9zcmMgPT4gJ3dpbmRvd19u dGhfdmFsdWUnIH0sCit7IG9pZCA9PiAnODEyNicsIGRlc2NyID0+ICdmZXRjaCB0aGUgcHJlY2Vk aW5nIHJvdyB2YWx1ZScsCisgIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xhdGlsZSA9PiAncycs IHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVu dCcsIHByb3NyYyA9PiAnd2luZG93X3ByZXYnIH0sCit7IG9pZCA9PiAnODEyOCcsIGRlc2NyID0+ ICdmZXRjaCB0aGUgTnRoIHByZWNlZGluZyByb3cgdmFsdWUnLAorICBwcm9uYW1lID0+ICdwcmV2 JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4g J2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3Jj ID0+ICd3aW5kb3dfcHJldl9vZmZzZXQnIH0sCit7IG9pZCA9PiAnODEyNycsIGRlc2NyID0+ICdm ZXRjaCB0aGUgZm9sbG93aW5nIHJvdyB2YWx1ZScsCisgIHByb25hbWUgPT4gJ25leHQnLCBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBl cyA9PiAnYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X25leHQnIH0sCit7IG9pZCA9PiAn ODEyOScsIGRlc2NyID0+ICdmZXRjaCB0aGUgTnRoIGZvbGxvd2luZyByb3cgdmFsdWUnLAorICBw cm9uYW1lID0+ICduZXh0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZics IHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVu dCBpbnQ4JywgcHJvc3JjID0+ICd3aW5kb3dfbmV4dF9vZmZzZXQnIH0sCit7IG9pZCA9PiAnODEz MCcsIGRlc2NyID0+ICdmZXRjaCB0aGUgZmlyc3Qgcm93IHZhbHVlIHdpdGhpbiBtYXRjaCcsCisg IHByb25hbWUgPT4gJ2ZpcnN0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdh bnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ3dp bmRvd19maXJzdCcgfSwKK3sgb2lkID0+ICc4MTMyJywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBOdGgg cm93IHZhbHVlIHdpdGhpbiBtYXRjaCcsCisgIHByb25hbWUgPT4gJ2ZpcnN0JywgcHJvdm9sYXRp bGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQn LAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3JjID0+ICd3aW5kb3df Zmlyc3Rfb2Zmc2V0JyB9LAoreyBvaWQgPT4gJzgxMzEnLCBkZXNjciA9PiAnZmV0Y2ggdGhlIGxh c3Qgcm93IHZhbHVlIHdpdGhpbiBtYXRjaCcsCisgIHByb25hbWUgPT4gJ2xhc3QnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9 PiAnYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X2xhc3QnIH0sCit7IG9pZCA9PiAnODEz MycsIGRlc2NyID0+ICdmZXRjaCB0aGUgTnRoLWZyb20tbGFzdCByb3cgdmFsdWUgd2l0aGluIG1h dGNoJywKKyAgcHJvbmFtZSA9PiAnbGFzdCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJp Y3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4g J2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9PiAnd2luZG93X2xhc3Rfb2Zmc2V0JyB9LAogCiAj IGZ1bmN0aW9ucyBmb3IgcmFuZ2UgdHlwZXMKIHsgb2lkID0+ICczODMyJywgZGVzY3IgPT4gJ0kv TycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBjNjFiM2Q2MjRkNS4uZGI2NmViZTMxM2Mg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjc0LDYgKzI3NCwxMCBAQCB0eXBlZGVmIGVu dW0gRXhwckV2YWxPcAogCUVFT1BfTUVSR0VfU1VQUE9SVF9GVU5DLAogCUVFT1BfU1VCUExBTiwK IAorCS8qIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gKFJQUiBQUkVWL05FWFQpICovCisJRUVPUF9S UFJfTkFWX1NFVCwKKwlFRU9QX1JQUl9OQVZfUkVTVE9SRSwKKwogCS8qIGFnZ3JlZ2F0aW9uIHJl bGF0ZWQgbm9kZXMgKi8KIAlFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJRUVPUF9BR0df REVTRVJJQUxJWkUsCkBAIC02OTUsNiArNjk5LDE4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFs U3RlcAogCQkJU3ViUGxhblN0YXRlICpzc3RhdGU7CiAJCX0JCQlzdWJwbGFuOwogCisJCS8qIGZv ciBFRU9QX1JQUl9OQVZfU0VUIC8gRUVPUF9SUFJfTkFWX1JFU1RPUkUgKi8KKwkJc3RydWN0CisJ CXsKKwkJCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwkJCVJQUk5hdktpbmQJa2luZDsJLyog bmF2aWdhdGlvbiBraW5kIChzaW1wbGUgb3IgY29tcG91bmQpICovCisJCQlEYXR1bQkgICAqb2Zm c2V0X3ZhbHVlOwkvKiBvZmZzZXQgdmFsdWUocyksIG9yIE5VTEwgKi8KKwkJCWJvb2wJICAgKm9m ZnNldF9pc251bGw7CS8qIG9mZnNldCBudWxsIGZsYWcocykgKi8KKwkJCS8qIEZvciBjb21wb3Vu ZCBuYXY6IG9mZnNldF92YWx1ZVswXSA9IGlubmVyLCBbMV0gPSBvdXRlciAqLworCQkJaW50MTYJ CXJlc3VsdHR5cGxlbjsJLyogUkVTVE9SRTogcmVzdWx0IHR5cGUgbGVuZ3RoICovCisJCQlib29s CQlyZXN1bHR0eXBieXZhbDsgLyogUkVTVE9SRTogcmVzdWx0IHBhc3MtYnktdmFsdWU/ICovCisJ CX0JCQlycHJfbmF2OworCiAJCS8qIGZvciBFRU9QX0FHR18qREVTRVJJQUxJWkUgKi8KIAkJc3Ry dWN0CiAJCXsKQEAgLTkwMiw2ICs5MTgsMTAgQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxNZXJnZVN1 cHBvcnRGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCQkg RXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsU3ViUGxhbihFeHBy U3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCUV4cHJDb250ZXh0ICplY29u dGV4dCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbFJQUk5hdlNldChFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJCSAgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVy biB2b2lkIEV4ZWNFdmFsUlBSTmF2UmVzdG9yZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLAorCQkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBF eGVjRXZhbFdob2xlUm93VmFyKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJ CQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN5c1Zh cihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YjJiMGZlYmI3NgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaApAQCAtMCwwICsx LDQwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBleGVjUlBSLmgKKyAqCSAgcHJvdG90 eXBlcyBmb3IgZXhlY1JQUi5jIChORkEtYmFzZWQgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gZW5n aW5lKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpZm5kZWYgRVhFQ1JQUl9ICisjZGVmaW5lIEVYRUNSUFJfSAorCisjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCisjaW5jbHVkZSAid2luZG93YXBpLmgiCisKKy8qIE5GQSBjb250ZXh0IG1h bmFnZW1lbnQgKi8KK2V4dGVybiBSUFJORkFDb250ZXh0ICpFeGVjUlBSU3RhcnRDb250ZXh0KFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKKwkJCQkJCQkJCQkgIGludDY0IHN0YXJ0UG9zKTsKK2V4 dGVybiBSUFJORkFDb250ZXh0ICpFeGVjUlBSR2V0SGVhZENvbnRleHQoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLAorCQkJCQkJCQkJCQlpbnQ2NCBwb3MpOworZXh0ZXJuIHZvaWQgRXhlY1JQUkZy ZWVDb250ZXh0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4KTsK KworLyogTkZBIHByb2Nlc3NpbmcgKi8KK2V4dGVybiB2b2lkIEV4ZWNSUFJQcm9jZXNzUm93KFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgY3VycmVudFBvcywKKwkJCQkJCQkgIGJvb2wg aGFzTGltaXRlZEZyYW1lLCBpbnQ2NCBmcmFtZU9mZnNldCk7CitleHRlcm4gdm9pZCBFeGVjUlBS Q2xlYW51cERlYWRDb250ZXh0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsCisJCQkJCQkJCQkg ICBSUFJORkFDb250ZXh0ICpleGNsdWRlQ3R4KTsKK2V4dGVybiB2b2lkIEV4ZWNSUFJGaW5hbGl6 ZUFsbENvbnRleHRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgbGFzdFBvcyk7CisK Ky8qIE5GQSBzdGF0aXN0aWNzICovCitleHRlcm4gdm9pZCBFeGVjUlBSUmVjb3JkQ29udGV4dFN1 Y2Nlc3MoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAorCQkJCQkJCQkJCWludDY0IG1hdGNoTGVu KTsKK2V4dGVybiB2b2lkIEV4ZWNSUFJSZWNvcmRDb250ZXh0RmFpbHVyZShXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUsCisJCQkJCQkJCQkJaW50NjQgZmFpbGVkTGVuKTsKKworI2VuZGlmCQkJCQkJ CS8qIEVYRUNSUFJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oCmluZGV4IGFk YTRhMWM0NThjLi5mNmY2NjQ1MTMxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu aApAQCAtMjAsNCArMjAsNyBAQCBleHRlcm4gV2luZG93QWdnU3RhdGUgKkV4ZWNJbml0V2luZG93 QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZgogZXh0ZXJuIHZvaWQg RXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVj UmVTY2FuV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKTsKIAorLyogUlBSIG5hdmlnYXRp b24gc3VwcG9ydCBmb3IgZXhwcmVzc2lvbiBldmFsdWF0aW9uIG9wY29kZXMgKi8KK2V4dGVybiBU dXBsZVRhYmxlU2xvdCAqRXhlY1JQUk5hdkdldFNsb3QoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBpbnQ2NCBwb3MpOworCiAjZW5kaWYJCQkJCQkJLyogTk9ERVdJTkRPV0FHR19IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDUzYzEzODMxMGRiLi43OTJhYTNmMGQwNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIK ICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAi dXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKICNp bmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIK IApAQCAtMjUyNSw2ICsyNTI4LDcxIEBAIHR5cGVkZWYgZW51bSBXaW5kb3dBZ2dTdGF0dXMKIAkJ CQkJCQkJCSAqIHR1cGxlcyBkdXJpbmcgc3Bvb2wgKi8KIH0gV2luZG93QWdnU3RhdHVzOwogCisv KiBSUFIgcmVkdWNlZCBmcmFtZSBzdGF0ZXMgcmV0dXJuZWQgYnkgZ2V0X3JlZHVjZWRfZnJhbWVf c3RhdHVzKCkgKi8KKyNkZWZpbmUgUkZfTk9UX0RFVEVSTUlORUQJMAkvKiBub3QgeWV0IHByb2Nl c3NlZCAqLworI2RlZmluZSBSRl9GUkFNRV9IRUFECQkxCS8qIHN0YXJ0IHJvdyBvZiBhIG1hdGNo ICovCisjZGVmaW5lIFJGX1NLSVBQRUQJCQkyCS8qIGludGVyaW9yIHJvdyBvZiBhIG1hdGNoICov CisjZGVmaW5lIFJGX1VOTUFUQ0hFRAkJMwkvKiBubyBtYXRjaCBhdCB0aGlzIHJvdyAqLworI2Rl ZmluZSBSRl9FTVBUWV9NQVRDSAkJNAkvKiBlbXB0eSBtYXRjaCAoMCByb3dzKTsgdHJlYXRlZCBh cyB1bm1hdGNoZWQgKi8KKworLyoKKyAqIFJQUk5GQVN0YXRlIC0gc2luZ2xlIE5GQSBzdGF0ZSBm b3IgcGF0dGVybiBtYXRjaGluZworICoKKyAqIGNvdW50c1tdIHRyYWNrcyByZXBldGl0aW9uIGNv dW50cyBhdCBlYWNoIG5lc3RpbmcgZGVwdGguCisgKgorICogaXNBYnNvcmJhYmxlIHRyYWNrcyBp ZiBzdGF0ZSBpcyBpbiBhYnNvcmJhYmxlIHJlZ2lvbiAoQUJTT1JCQUJMRV9CUkFOQ0gpLgorICog TW9ub3RvbmljIHByb3BlcnR5OiBvbmNlIGZhbHNlLCBzdGF5cyBmYWxzZSAoY2FuJ3QgcmUtZW50 ZXIgcmVnaW9uKS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUlBSTkZBU3RhdGUKK3sKKwlzdHJ1Y3Qg UlBSTkZBU3RhdGUgKm5leHQ7CS8qIG5leHQgc3RhdGUgaW4gbGlua2VkIGxpc3QgKi8KKwlpbnQx NgkJZWxlbUlkeDsJCS8qIGN1cnJlbnQgcGF0dGVybiBlbGVtZW50IGluZGV4ICovCisJYm9vbAkJ aXNBYnNvcmJhYmxlOwkvKiB0cnVlIGlmIHN0YXRlIGlzIGluIGFic29yYmFibGUgcmVnaW9uICov CisJaW50MzIJCWNvdW50c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwkvKiByZXBldGl0aW9uIGNv dW50cyBieSBkZXB0aCAqLworfSBSUFJORkFTdGF0ZTsKKworLyoKKyAqIFJQUk5GQUNvbnRleHQg LSBjb250ZXh0IGZvciBORkEgcGF0dGVybiBtYXRjaGluZyBleGVjdXRpb24KKyAqCisgKiBUd28t ZmxhZyBhYnNvcnB0aW9uIGRlc2lnbjoKKyAqICAgaGFzQWJzb3JiYWJsZVN0YXRlOiBjYW4gdGhp cyBjb250ZXh0IGFic29yYiBvdGhlcnM/ICg+PTEgYWJzb3JiYWJsZSBzdGF0ZSkKKyAqICAgICAt IE1vbm90b25pYzogdHJ1ZS0+ZmFsc2Ugb25seSwgY2Fubm90IHJlY292ZXIgb25jZSBmYWxzZQor ICogICAgIC0gVXNlZCB0byBza2lwIGFic29ycHRpb24gYXR0ZW1wdHMgb25jZSBhbGwgYWJzb3Ji YWJsZSBzdGF0ZXMgYXJlIGdvbmUKKyAqICAgYWxsU3RhdGVzQWJzb3JiYWJsZTogY2FuIHRoaXMg Y29udGV4dCBiZSBhYnNvcmJlZD8gKEFMTCBzdGF0ZXMgYWJzb3JiYWJsZSkKKyAqICAgICAtIER5 bmFtaWM6IGNhbiBjaGFuZ2UgZmFsc2UtPnRydWUgKHdoZW4gbm9uLWFic29yYmFibGUgc3RhdGVz IGRpZSkKKyAqICAgICAtIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29udGV4dCBpcyBlbGln aWJsZSBmb3IgYWJzb3JwdGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBSUFJORkFDb250ZXh0Cit7 CisJc3RydWN0IFJQUk5GQUNvbnRleHQgKm5leHQ7IC8qIG5leHQgY29udGV4dCBpbiBsaW5rZWQg bGlzdCAqLworCXN0cnVjdCBSUFJORkFDb250ZXh0ICpwcmV2OyAvKiBwcmV2aW91cyBjb250ZXh0 IChmb3IgcmV2ZXJzZSB0cmF2ZXJzYWwpICovCisJUlBSTkZBU3RhdGUgKnN0YXRlczsJCS8qIGFj dGl2ZSBzdGF0ZXMgKGxpbmtlZCBsaXN0KSAqLworCisJaW50NjQJCW1hdGNoU3RhcnRSb3c7CS8q IHJvdyB3aGVyZSBtYXRjaCBzdGFydGVkICovCisJaW50NjQJCW1hdGNoRW5kUm93OwkvKiByb3cg d2hlcmUgbWF0Y2ggZW5kZWQgKC0xID0gbm8gbWF0Y2gpICovCisJaW50NjQJCWxhc3RQcm9jZXNz ZWRSb3c7CS8qIGxhc3Qgcm93IHByb2Nlc3NlZCAoZm9yIGZhaWwgZGVwdGgpICovCisJUlBSTkZB U3RhdGUgKm1hdGNoZWRTdGF0ZTsJLyogRklOIHN0YXRlIGZvciBncmVlZHkgZmFsbGJhY2sgKGNs b25lZCkgKi8KKworCS8qIFR3by1mbGFnIGFic29ycHRpb24gb3B0aW1pemF0aW9uICovCisJYm9v bAkJaGFzQWJzb3JiYWJsZVN0YXRlOyAvKiBjYW4gYWJzb3JiIG90aGVycyAoPj0xIGFic29yYmFi bGUKKwkJCQkJCQkJCSAqIHN0YXRlKSAqLworCWJvb2wJCWFsbFN0YXRlc0Fic29yYmFibGU7CS8q IGNhbiBiZSBhYnNvcmJlZCAoQUxMIHN0YXRlcworCQkJCQkJCQkJCSAqIGFic29yYmFibGUpICov Cit9IFJQUk5GQUNvbnRleHQ7CisKKy8qCisgKiBORkFMZW5ndGhTdGF0cworICoKKyAqIFN0YXRp c3RpY3MgZm9yIGxlbmd0aCBtZWFzdXJlbWVudHMgKG1pbi9tYXgvdG90YWwpIHVzZWQgZm9yIGNv bXB1dGluZworICogYXZlcmFnZSBsZW5ndGhzIGluIEVYUExBSU4gQU5BTFlaRSBvdXRwdXQuCisg Ki8KK3R5cGVkZWYgc3RydWN0IE5GQUxlbmd0aFN0YXRzCit7CisJaW50NjQJCW1pbjsJCQkvKiBt aW5pbXVtIGxlbmd0aCAqLworCWludDY0CQltYXg7CQkJLyogbWF4aW11bSBsZW5ndGggKi8KKwlp bnQ2NAkJdG90YWw7CQkJLyogdG90YWwgbGVuZ3RoIChmb3IgY29tcHV0aW5nIGF2ZXJhZ2UpICov Cit9IE5GQUxlbmd0aFN0YXRzOworCiB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogewog CVNjYW5TdGF0ZQlzczsJCQkJLyogaXRzIGZpcnN0IGZpZWxkIGlzIE5vZGVUYWcgKi8KQEAgLTI1 ODQsNiArMjY1Miw1MSBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCWludDY0CQln cm91cGhlYWRwb3M7CS8qIGN1cnJlbnQgcm93J3MgcGVlciBncm91cCBoZWFkIHBvc2l0aW9uICov CiAJaW50NjQJCWdyb3VwdGFpbHBvczsJLyogIiAiICIgIiB0YWlsIHBvc2l0aW9uIChncm91cCBl bmQrMSkgKi8KIAorCS8qIHRoZXNlIGZpZWxkcyBhcmUgdXNlZCBpbiBSb3cgcGF0dGVybiByZWNv Z25pdGlvbjogKi8KKwlSUFNraXBUbwlycFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIFNraXAgVG8g dHlwZSAqLworCXN0cnVjdCBSUFJQYXR0ZXJuICpycFBhdHRlcm47CS8qIGNvbXBpbGVkIHBhdHRl cm4gZm9yIE5GQSBleGVjdXRpb24gKi8KKwlMaXN0CSAgICpkZWZpbmVWYXJpYWJsZUxpc3Q7IC8q IGxpc3Qgb2Ygcm93IHBhdHRlcm4gZGVmaW5pdGlvbgorCQkJCQkJCQkJICogdmFyaWFibGVzIChs aXN0IG9mIFN0cmluZykgKi8KKwlMaXN0CSAgICpkZWZpbmVDbGF1c2VMaXN0OwkvKiBleHByZXNz aW9uIGZvciByb3cgcGF0dGVybiBkZWZpbml0aW9uCisJCQkJCQkJCQkgKiBzZWFyY2ggY29uZGl0 aW9ucyBFeHByU3RhdGUgbGlzdCAqLworCVJQUk5GQUNvbnRleHQgKm5mYUNvbnRleHQ7CS8qIGFj dGl2ZSBtYXRjaGluZyBjb250ZXh0cyAoaGVhZCkgKi8KKwlSUFJORkFDb250ZXh0ICpuZmFDb250 ZXh0VGFpbDsJLyogdGFpbCBvZiBhY3RpdmUgY29udGV4dHMgKGZvciByZXZlcnNlCisJCQkJCQkJ CQkgKiB0cmF2ZXJzYWwpICovCisJUlBSTkZBQ29udGV4dCAqbmZhQ29udGV4dEZyZWU7CS8qIHJl Y3ljbGVkIE5GQSBjb250ZXh0IG5vZGVzICovCisJUlBSTkZBU3RhdGUgKm5mYVN0YXRlRnJlZTsJ LyogcmVjeWNsZWQgTkZBIHN0YXRlIG5vZGVzICovCisJU2l6ZQkJbmZhU3RhdGVTaXplOwkvKiBw cmUtY2FsY3VsYXRlZCBSUFJORkFTdGF0ZSBzaXplICovCisJYm9vbAkgICAqbmZhVmFyTWF0Y2hl ZDsJLyogcGVyLXJvdyBjYWNoZTogdmFyTWF0Y2hlZFt2YXJJZF0gZm9yIHZhcklkCisJCQkJCQkJ CSAqIDwgbnVtRGVmaW5lcyAqLworCUJpdG1hcHNldCAgKmRlZmluZU1hdGNoU3RhcnREZXBlbmRl bnQ7CS8qIERFRklORSB2YXJzIG5lZWRpbmcgcGVyLWNvbnRleHQKKwkJCQkJCQkJCQkJICogZXZh bHVhdGlvbgorCQkJCQkJCQkJCQkgKiAobWF0Y2hfc3RhcnQtZGVwZW5kZW50KSAqLworCWJpdG1h cHdvcmQgKm5mYVZpc2l0ZWRFbGVtczsJLyogZWxlbUlkeCB2aXNpdGVkIGJpdG1hcCBmb3IgY3lj bGUKKwkJCQkJCQkJCSAqIGRldGVjdGlvbiAqLworCWludDE2CQluZmFWaXNpdGVkTWluV29yZDsJ LyogbG93ZXN0IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBzaW5jZQorCQkJCQkJCQkJICogbGFz dCByZXNldCAoUEdfSU5UMTZfTUFYID0gbm9uZSkgKi8KKwlpbnQxNgkJbmZhVmlzaXRlZE1heFdv cmQ7CS8qIGhpZ2hlc3QgYml0bWFwd29yZCBpbmRleCB0b3VjaGVkIHNpbmNlCisJCQkJCQkJCQkg KiBsYXN0IHJlc2V0ICgtMSA9IG5vbmUpICovCisJaW50NjQJCW5mYUxhc3RQcm9jZXNzZWRSb3c7 CS8qIGxhc3Qgcm93IHByb2Nlc3NlZCBieSBORkEgKC0xID0KKwkJCQkJCQkJCQkgKiBub25lKSAq LworCisJLyogTkZBIHN0YXRpc3RpY3MgZm9yIEVYUExBSU4gQU5BTFlaRSAqLworCWludDY0CQlu ZmFTdGF0ZXNBY3RpdmU7CS8qIGN1cnJlbnQgYWN0aXZlIHN0YXRlcyAoaW50ZXJuYWwpICovCisJ aW50NjQJCW5mYVN0YXRlc01heDsJLyogcGVhayBhY3RpdmUgc3RhdGVzICovCisJaW50NjQJCW5m YVN0YXRlc1RvdGFsQ3JlYXRlZDsJLyogdG90YWwgc3RhdGVzIGFsbG9jYXRlZCAqLworCWludDY0 CQluZmFTdGF0ZXNNZXJnZWQ7CS8qIHN0YXRlcyBtZXJnZWQgKGRlZHVwbGljYXRlZCkgKi8KKwlp bnQ2NAkJbmZhQ29udGV4dHNBY3RpdmU7CS8qIGN1cnJlbnQgYWN0aXZlIGNvbnRleHRzIChpbnRl cm5hbCkgKi8KKwlpbnQ2NAkJbmZhQ29udGV4dHNNYXg7IC8qIHBlYWsgYWN0aXZlIGNvbnRleHRz ICovCisJaW50NjQJCW5mYUNvbnRleHRzVG90YWxDcmVhdGVkOwkvKiB0b3RhbCBjb250ZXh0cyBh bGxvY2F0ZWQgKi8KKwlpbnQ2NAkJbmZhQ29udGV4dHNBYnNvcmJlZDsJLyogY29udGV4dHMgYWJz b3JiZWQgKG9wdGltaXphdGlvbikgKi8KKwlpbnQ2NAkJbmZhQ29udGV4dHNTa2lwcGVkOyAvKiBj b250ZXh0cyBza2lwcGVkIChTS0lQIFBBU1QgTEFTVCBST1cpICovCisJaW50NjQJCW5mYUNvbnRl eHRzUHJ1bmVkOwkvKiBjb250ZXh0cyBwcnVuZWQgb24gZmlyc3Qgcm93ICovCisJaW50NjQJCW5m YU1hdGNoZXNTdWNjZWVkZWQ7CS8qIHN1Y2Nlc3NmdWwgcGF0dGVybiBtYXRjaGVzICovCisJaW50 NjQJCW5mYU1hdGNoZXNGYWlsZWQ7CS8qIGZhaWxlZCBwYXR0ZXJuIG1hdGNoZXMgKi8KKwlORkFM ZW5ndGhTdGF0cyBuZmFNYXRjaExlbjsgLyogc3VjY2Vzc2Z1bCBtYXRjaCBsZW5ndGggc3RhdHMg Ki8KKwlORkFMZW5ndGhTdGF0cyBuZmFGYWlsTGVuOwkvKiBtaXNtYXRjaCBsZW5ndGggc3RhdHMg Ki8KKwlORkFMZW5ndGhTdGF0cyBuZmFBYnNvcmJlZExlbjsJLyogYWJzb3JiZWQgY29udGV4dCBs ZW5ndGggc3RhdHMgKi8KKwlORkFMZW5ndGhTdGF0cyBuZmFTa2lwcGVkTGVuOwkvKiBza2lwcGVk IGNvbnRleHQgbGVuZ3RoIHN0YXRzICovCisKIAlNZW1vcnlDb250ZXh0IHBhcnRjb250ZXh0Owkv KiBjb250ZXh0IGZvciBwYXJ0aXRpb24tbGlmZXNwYW4gZGF0YSAqLwogCU1lbW9yeUNvbnRleHQg YWdnY29udGV4dDsJLyogc2hhcmVkIGNvbnRleHQgZm9yIGFnZ3JlZ2F0ZSB3b3JraW5nIGRhdGEg Ki8KIAlNZW1vcnlDb250ZXh0IGN1cmFnZ2NvbnRleHQ7CS8qIGN1cnJlbnQgYWdncmVnYXRlJ3Mg d29ya2luZyBkYXRhICovCkBAIC0yNjExLDYgKzI3MjQsMjUgQEAgdHlwZWRlZiBzdHJ1Y3QgV2lu ZG93QWdnU3RhdGUKIAlUdXBsZVRhYmxlU2xvdCAqYWdnX3Jvd19zbG90OwogCVR1cGxlVGFibGVT bG90ICp0ZW1wX3Nsb3RfMTsKIAlUdXBsZVRhYmxlU2xvdCAqdGVtcF9zbG90XzI7CisKKwkvKiBS UFIgbmF2aWdhdGlvbiAqLworCVJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2luZDsJLyog c3RhdHVzIG9mIG5hdk1heE9mZnNldCAqLworCWludDY0CQluYXZNYXhPZmZzZXQ7CS8qIG1heCBi YWNrd2FyZCBuYXYgb2Zmc2V0ICh3aGVuIEZJWEVEKSAqLworCWJvb2wJCWhhc0ZpcnN0TmF2Owkv KiBGSVJTVCgpIHByZXNlbnQgaW4gREVGSU5FICovCisJUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJz dE9mZnNldEtpbmQ7CS8qIHN0YXR1cyBvZiBuYXZGaXJzdE9mZnNldCAqLworCWludDY0CQluYXZG aXJzdE9mZnNldDsgLyogbWluIEZJUlNUKCkgb2Zmc2V0ICh3aGVuIEZJWEVEKSAqLworCXN0cnVj dCBXaW5kb3dPYmplY3REYXRhICpuYXZfd2lub2JqOwkvKiB3aW5vYmogZm9yIFJQUiBuYXYgZmV0 Y2ggKi8KKwlpbnQ2NAkJbmF2X3Nsb3RfcG9zOwkvKiBwb3NpdGlvbiBjYWNoZWQgaW4gbmF2X3Ns b3QsIG9yIC0xICovCisJVHVwbGVUYWJsZVNsb3QgKm5hdl9zbG90OwkvKiBzbG90IGZvciBQUkVW L05FWFQvRklSU1QvTEFTVCB0YXJnZXQgcm93ICovCisJVHVwbGVUYWJsZVNsb3QgKm5hdl9zYXZl ZF9vdXRlcnR1cGxlOwkvKiBzYXZlZCBzbG90IGR1cmluZyBuYXYgc3dhcCAqLworCVR1cGxlVGFi bGVTbG90ICpuYXZfbnVsbF9zbG90OwkvKiBhbGwgTlVMTCBzbG90ICovCisJaW50NjQJCW5hdl9t YXRjaF9zdGFydDsJLyogbWF0Y2hfc3RhcnQgZm9yIEZJUlNUL0xBU1QgbmF2ICovCisKKwkvKiBS UFIgY3VycmVudCBtYXRjaCByZXN1bHQgKi8KKwlib29sCQlycHJfbWF0Y2hfdmFsaWQ7CS8qIHRy dWUgaWYgYSBtYXRjaCByZXN1bHQgaXMgc2V0ICovCisJYm9vbAkJcnByX21hdGNoX21hdGNoZWQ7 CS8qIHRydWUgaWYgdGhlIHJlc3VsdCB3YXMgYSBtYXRjaCAqLworCWludDY0CQlycHJfbWF0Y2hf c3RhcnQ7CS8qIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBtYXRjaCByZXN1bHQgKi8KKwlpbnQ2NAkJ cnByX21hdGNoX2xlbmd0aDsJLyogbnVtYmVyIG9mIHJvd3MgbWF0Y2hlZCAoMCA9IGVtcHR5KSAq LwogfSBXaW5kb3dBZ2dTdGF0ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi41MC4xIChB cHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0006-Row-pattern-recognition-patch-docs.patch" Content-Disposition: attachment; filename="v49-0006-Row-pattern-recognition-patch-docs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlba35 RnJvbSBmZTY3NTQ0NThkNWNjODk3OGFmNDhiZDkwMjFjZDFmN2I3ZTcxNWVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDYvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoIChkb2NzKS4KCi0tLQogZG9jL3Ny Yy9zZ21sL2FkdmFuY2VkLnNnbWwgICAgICAgICB8ICAxMzIgKystCiBkb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLXdpbmRvdy5zZ21sIHwgIDEyMSArKwogZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbCAg ICAgICAgICB8ICAgNDQgKwogZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbCAgICAgICB8ICAg OTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIgICAgfCAxNjcyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjA1MyBpbnNlcnRpb25zKCsp LCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRS5ycHIKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYWR2YW5jZWQuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9hZHZhbmNlZC5zZ21sCmluZGV4IDMyODZjMmNmMGIyLi5iZGM1NTJhZDc1ZiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2FkdmFuY2VkLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2FkdmFuY2VkLnNnbWwKQEAgLTU1MiwxMyArNTUyLDEzNyBAQCBXSEVSRSBwb3MgJmx0OyAzOwog ICAgIHR3byByb3dzIGZvciBlYWNoIGRlcGFydG1lbnQpLgogICAgPC9wYXJhPgogCisgICA8cGFy YT4KKyAgICBSb3cgUGF0dGVybiBDb21tb24gU3ludGF4IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0g Um93IFBhdHRlcm4gUmVjb2duaXRpb24KKyAgICBpbiBhIHF1ZXJ5LiBUaGUgUm93IFBhdHRlcm4g Q29tbW9uIFN5bnRheCBpbmNsdWRlcyB0d28gc3ViCisgICAgY2xhdXNlczogPGxpdGVyYWw+REVG SU5FPC9saXRlcmFsPgorICAgIGFuZCA8bGl0ZXJhbD5QQVRURVJOPC9saXRlcmFsPi4gPGxpdGVy YWw+REVGSU5FPC9saXRlcmFsPiBkZWZpbmVzCisgICAgcm93IHBhdHRlcm4gdmFyaWFibGVzIGFs b25nIHdpdGggYW4gZXhwcmVzc2lvbi4gVGhlIGV4cHJlc3Npb24gbXVzdCBiZSBhCisgICAgbG9n aWNhbCBleHByZXNzaW9uLCB3aGljaCBtZWFucyBpdCBtdXN0CisgICAgcmV0dXJuIDxsaXRlcmFs PlRSVUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GQUxTRTwvbGl0ZXJhbD4KKyAgICBvciA8bGl0ZXJh bD5OVUxMPC9saXRlcmFsPi4gVGhlIGV4cHJlc3Npb24gbWF5IGNvbXByaXNlIGNvbHVtbiByZWZl cmVuY2VzCisgICAgYW5kIGZ1bmN0aW9ucy4gV2luZG93IGZ1bmN0aW9ucywgYWdncmVnYXRlIGZ1 bmN0aW9ucyBhbmQgc3VicXVlcmllcyBhcmUKKyAgICBub3QgYWxsb3dlZC4gQW4gZXhhbXBsZSBv ZiA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGlzIGFzIGZvbGxvd3MuCisKKzxwcm9ncmFtbGlz dGluZz4KK0RFRklORQorIExPV1BSSUNFIEFTIHByaWNlICZsdDs9IDEwMCwKKyBVUCBBUyBwcmlj ZSAmZ3Q7IFBSRVYocHJpY2UpLAorIERPV04gQVMgcHJpY2UgJmx0OyBQUkVWKHByaWNlKQorPC9w cm9ncmFtbGlzdGluZz4KKworICAgIE5vdGUgdGhhdCA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+ IHJldHVybnMgdGhlIDxsaXRlcmFsPnByaWNlPC9saXRlcmFsPgorICAgIGNvbHVtbiBpbiB0aGUg cHJldmlvdXMgcm93IGlmIGl0J3MgY2FsbGVkIGluIGEgY29udGV4dCBvZiByb3cgcGF0dGVybgor ICAgIHJlY29nbml0aW9uLiBUaHVzIGluIHRoZSBzZWNvbmQgbGluZSB0aGUgcm93IHBhdHRlcm4g dmFyaWFibGUgIlVQIgorICAgIGlzIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+IHdoZW4gdGhlIHBy aWNlIGNvbHVtbiBpbiB0aGUgY3VycmVudCByb3cgaXMKKyAgICBncmVhdGVyIHRoYW4gdGhlIHBy aWNlIGNvbHVtbiBpbiB0aGUgcHJldmlvdXMgcm93LiBMaWtld2lzZSwgIkRPV04iCisgICAgaXMg PGxpdGVyYWw+VFJVRTwvbGl0ZXJhbD4gd2hlbiB0aGUKKyAgICA8bGl0ZXJhbD5wcmljZTwvbGl0 ZXJhbD4gY29sdW1uIGluIHRoZSBjdXJyZW50IHJvdyBpcyBsb3dlciB0aGFuCisgICAgdGhlIDxs aXRlcmFsPnByaWNlPC9saXRlcmFsPiBjb2x1bW4gaW4gdGhlIHByZXZpb3VzIHJvdy4KKyAgIDwv cGFyYT4KKyAgIDxwYXJhPgorICAgIE9uY2UgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBleGlz dHMsIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGNhbiBiZQorICAgIHVzZWQuIDxsaXRlcmFs PlBBVFRFUk48L2xpdGVyYWw+IGRlZmluZXMgYSBzZXF1ZW5jZSBvZiByb3dzIHRoYXQgc2F0aXNm aWVzCisgICAgY29uZGl0aW9ucyBkZWZpbmVkIGluIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVy YWw+IGNsYXVzZS4gIEZvciBleGFtcGxlCisgICAgdGhlIGZvbGxvd2luZyA8bGl0ZXJhbD5QQVRU RVJOPC9saXRlcmFsPiBkZWZpbmVzIGEgc2VxdWVuY2Ugb2Ygcm93cyBzdGFydGluZworICAgIHdp dGggYSByb3cgc2F0aXNmeWluZyAiTE9XUFJJQ0UiLCB0aGVuIG9uZSBvciBtb3JlIHJvd3Mgc2F0 aXNmeWluZworICAgICJVUCIgYW5kIGZpbmFsbHkgb25lIG9yIG1vcmUgcm93cyBzYXRpc2Z5aW5n ICJET1dOIi4gUGF0dGVybiB2YXJpYWJsZXMgY2FuCisgICAgYmUgZm9sbG93ZWQgYnkgcXVhbnRp ZmllcnM6ICIrIiBtZWFucyBvbmUgb3IgbW9yZSBtYXRjaGVzLCAiKiIgbWVhbnMgemVybworICAg IG9yIG1vcmUgbWF0Y2hlcywgIj8iIG1lYW5zIHplcm8gb3Igb25lIG1hdGNoLCAie259IiAobiAm Z3Q7IDApIG1lYW5zIGV4YWN0bHkKKyAgICBuIG1hdGNoZXMsICJ7bix9IiAobiAmZ3Q7PSAwKSBt ZWFucyBhdCBsZWFzdCBuIG1hdGNoZXMsICJ7LG19IiAobSAmZ3Q7IDApIG1lYW5zCisgICAgYXQg bW9zdCBtIG1hdGNoZXMsIGFuZCAie24sbX0iICgwICZsdDs9IG4gJmx0Oz0gbSwgMCAmbHQ7IG0p IG1lYW5zIGJldHdlZW4gbiBhbmQgbQorICAgIG1hdGNoZXMuICBQYXR0ZXJucyBjYW4gYmUgZ3Jv dXBlZCB1c2luZyBwYXJlbnRoZXNlcyBhbmQgY29tYmluZWQgdXNpbmcKKyAgICBhbHRlcm5hdGlv biAodGhlIHZlcnRpY2FsIGJhciAifCIgZm9yIE9SKS4gRm9yIGV4YW1wbGUsICIoVVAgRE9XTikr IgorICAgIG1hdGNoZXMgb25lIG9yIG1vcmUgcmVwZXRpdGlvbnMgb2YgVVAgZm9sbG93ZWQgYnkg RE9XTi4gIElmIGEgc2VxdWVuY2Ugb2YKKyAgICByb3dzIHdoaWNoIHNhdGlzZmllcyB0aGUgUEFU VEVSTiBpcyBmb3VuZCwgaW4gdGhlIHN0YXJ0aW5nIHJvdyBhbGwgY29sdW1ucworICAgIG9yIGZ1 bmN0aW9ucyBhcmUgc2hvd24gaW4gdGhlIHRhcmdldCBsaXN0LiBOb3RlIHRoYXQgYWdncmVnYXRp b25zIG9ubHkKKyAgICBsb29rIGludG8gdGhlIG1hdGNoZWQgcm93cywgcmF0aGVyIHRoYW4gdGhl IHdob2xlIGZyYW1lLiBPbiB0aGUgc2Vjb25kIG9yCisgICAgc3Vic2VxdWVudCByb3dzIGFsbCB3 aW5kb3cgZnVuY3Rpb25zIGFyZSBzaG93biBhcyBOVUxMLiBBZ2dyZWdhdGVzIG9uCisgICAgbm9u LXN0YXJ0aW5nIHJvd3MgcmV0dXJuIHRoZWlyIGluaXRpYWwgdmFsdWU6IGZvciBleGFtcGxlLAor ICAgIDxmdW5jdGlvbj5jb3VudCgpPC9mdW5jdGlvbj4gcmV0dXJucyAwIGFuZCA8ZnVuY3Rpb24+ c3VtKCk8L2Z1bmN0aW9uPgorICAgIHJldHVybnMgTlVMTC4gRm9yIHJvd3MgdGhhdCBkbyBub3Qg bWF0Y2ggdGhlIFBBVFRFUk4sIHdpbmRvdyBmdW5jdGlvbnMKKyAgICBhcmUgbGlrZXdpc2Ugc2hv d24gYXMgTlVMTCBhbmQgYWdncmVnYXRlcyByZXR1cm4gdGhlaXIgaW5pdGlhbCB2YWx1ZS4KKyAg ICBFeGFtcGxlIG9mIGEgPGxpdGVyYWw+U0VMRUNUPC9saXRlcmFsPiB1c2luZworICAgIHRoZSA8 bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5QQVRURVJOPC9saXRlcmFsPiBj bGF1c2UgaXMgYXMKKyAgICBmb2xsb3dzLgorCis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLAorIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbWF4KHBy aWNlKSBPVkVSIHcsCisgY291bnQocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKExPV1BSSUNFIFVQKyBET1dOKykK KyBERUZJTkUKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgJmx0Oz0gMTAwLAorICBVUCBBUyBwcmljZSAm Z3Q7IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlICZsdDsgUFJFVihwcmljZSkKKyk7Cis8 L3Byb2dyYW1saXN0aW5nPgorPHNjcmVlbj4KKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmlj ZSB8IGZpcnN0X3ZhbHVlIHwgbWF4IHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMjAyMy0wNy0w MSB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAyMDAgfCAgICAgNAorIGNvbXBhbnkxIHwgMjAyMy0w Ny0wMiB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMjAy My0wNy0wMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MjAyMy0wNy0wNCB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMjAyMy0wNy0wNSB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAorIGNvbXBh bnkxIHwgMjAyMy0wNy0wNiB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAxMzAgfCAgICAgNAorIGNv bXBhbnkxIHwgMjAyMy0wNy0wNyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMjAyMy0wNy0wOCB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMjAyMy0wNy0wOSB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMjAyMy0wNy0xMCB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg fCAgICAgMAorKDEwIHJvd3MpCis8L3NjcmVlbj4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+Cisg ICAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gaW50ZXJuYWxseSB1c2VzIGEgbm9uZGV0ZXJtaW5p c3RpYyBmaW5pdGUKKyAgICBhdXRvbWF0b24gKE5GQSkgdG8gbWF0Y2ggcGF0dGVybnMuIEZvciBw YXR0ZXJucyB3aXRoIHVuYm91bmRlZAorICAgIHF1YW50aWZpZXJzIChlLmcuLCA8bGl0ZXJhbD5B KzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+KEEgQikrPC9saXRlcmFsPiksCisgICAgdGhlIE5GQSBt YXkgbmVlZCB0byB0cmFjayBtYW55IGFjdGl2ZSBtYXRjaGluZyBjb250ZXh0cyBzaW11bHRhbmVv dXNseSwKKyAgICB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIE8objxzdXBlcnNjcmlw dD4yPC9zdXBlcnNjcmlwdD4pCisgICAgY29tcGxleGl0eSBhcyB0aGUgbnVtYmVyIG9mIHJvd3Mg aW5jcmVhc2VzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBCZWZvcmUgZXhlY3V0aW9u LCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGF1dG9tYXRpY2FsbHkKKyAg ICBvcHRpbWl6ZXMgcGF0dGVybnMgdG8gc2ltcGxpZnkgdGhlaXIgc3RydWN0dXJlLiBUaGlzIGlu Y2x1ZGVzIGZsYXR0ZW5pbmcKKyAgICBuZXN0ZWQgc2VxdWVuY2VzIGFuZCBhbHRlcm5hdGlvbnMs IG1lcmdpbmcgY29uc2VjdXRpdmUgaWRlbnRpY2FsIHZhcmlhYmxlcworICAgIChlLmcuLCA8bGl0 ZXJhbD5BezIsM30gQXsxLDJ9PC9saXRlcmFsPiBiZWNvbWVzIDxsaXRlcmFsPkF7Myw1fTwvbGl0 ZXJhbD4pLAorICAgIHJlbW92aW5nIGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMKKyAgICAoZS5nLiwg PGxpdGVyYWw+KEEgfCBCIHwgQSk8L2xpdGVyYWw+IGJlY29tZXMgPGxpdGVyYWw+KEEgfCBCKTwv bGl0ZXJhbD4pLAorICAgIGFuZCBzaW1wbGlmeWluZyBuZXN0ZWQgcXVhbnRpZmllcnMKKyAgICAo ZS5nLiwgPGxpdGVyYWw+KEEqKSo8L2xpdGVyYWw+IGJlY29tZXMgPGxpdGVyYWw+QSo8L2xpdGVy YWw+KS4KKyAgICBUaGVzZSBvcHRpbWl6YXRpb25zIHJlZHVjZSBwYXR0ZXJuIGNvbXBsZXhpdHkg YW5kIGFsc28gZGVjcmVhc2UKKyAgICBuZXN0aW5nIGRlcHRoLCBtYWtpbmcgdGhlIDI1My1sZXZl bCBkZXB0aCBsaW1pdCByYXJlbHkgZW5jb3VudGVyZWQuCisgICAgVGhleSBhcmUgYXBwbGllZCB0 cmFuc3BhcmVudGx5IGFuZCBjYW4gYmUgb2JzZXJ2ZWQKKyAgICBpbiA8Y29tbWFuZD5FWFBMQUlO PC9jb21tYW5kPiBvdXRwdXQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRvIG1pdGln YXRlIHRoZSBPKG48c3VwZXJzY3JpcHQ+Mjwvc3VwZXJzY3JpcHQ+KSBjb21wbGV4aXR5IGRlc2Ny aWJlZAorICAgIGFib3ZlLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGFs c28gZW1wbG95cworICAgIGEgY29udGV4dCBhYnNvcnB0aW9uIG9wdGltaXphdGlvbi4gV2hlbiBh IHBhdHRlcm4gc3RhcnRzIHdpdGggYSBncmVlZHkKKyAgICB1bmJvdW5kZWQgZWxlbWVudCwgbmV3 ZXIgbWF0Y2hpbmcgY29udGV4dHMgY2Fubm90IHByb2R1Y2UgbG9uZ2VyIG1hdGNoZXMKKyAgICB0 aGFuIG9sZGVyIGNvbnRleHRzLiBCeSBkZXRlY3RpbmcgYW5kIGVsaW1pbmF0aW5nIHRoZXNlIHJl ZHVuZGFudAorICAgIGNvbnRleHRzLCB0aGUgbWF0Y2hpbmcgY29tcGxleGl0eSBpcyByZWR1Y2Vk IGZyb20KKyAgICBPKG48c3VwZXJzY3JpcHQ+Mjwvc3VwZXJzY3JpcHQ+KSB0byBPKG4pIGZvciBt YW55IGNvbW1vbiBwYXR0ZXJucy4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgV2hlbiBh IHF1ZXJ5IGludm9sdmVzIG11bHRpcGxlIHdpbmRvdyBmdW5jdGlvbnMsIGl0IGlzIHBvc3NpYmxl IHRvIHdyaXRlCiAgICAgb3V0IGVhY2ggb25lIHdpdGggYSBzZXBhcmF0ZSA8bGl0ZXJhbD5PVkVS PC9saXRlcmFsPiBjbGF1c2UsIGJ1dCB0aGlzIGlzCi0gICAgZHVwbGljYXRpdmUgYW5kIGVycm9y LXByb25lIGlmIHRoZSBzYW1lIHdpbmRvd2luZyBiZWhhdmlvciBpcyB3YW50ZWQKLSAgICBmb3Ig c2V2ZXJhbCBmdW5jdGlvbnMuICBJbnN0ZWFkLCBlYWNoIHdpbmRvd2luZyBiZWhhdmlvciBjYW4g YmUgbmFtZWQKLSAgICBpbiBhIDxsaXRlcmFsPldJTkRPVzwvbGl0ZXJhbD4gY2xhdXNlIGFuZCB0 aGVuIHJlZmVyZW5jZWQgaW4gPGxpdGVyYWw+T1ZFUjwvbGl0ZXJhbD4uCi0gICAgRm9yIGV4YW1w bGU6CisgICAgZHVwbGljYXRpdmUgYW5kIGVycm9yLXByb25lIGlmIHRoZSBzYW1lIHdpbmRvd2lu ZyBiZWhhdmlvciBpcyB3YW50ZWQgZm9yCisgICAgc2V2ZXJhbCBmdW5jdGlvbnMuICBJbnN0ZWFk LCBlYWNoIHdpbmRvd2luZyBiZWhhdmlvciBjYW4gYmUgbmFtZWQgaW4KKyAgICBhIDxsaXRlcmFs PldJTkRPVzwvbGl0ZXJhbD4gY2xhdXNlIGFuZCB0aGVuIHJlZmVyZW5jZWQKKyAgICBpbiA8bGl0 ZXJhbD5PVkVSPC9saXRlcmFsPi4gIEZvciBleGFtcGxlOgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBT RUxFQ1Qgc3VtKHNhbGFyeSkgT1ZFUiB3LCBhdmcoc2FsYXJ5KSBPVkVSIHcKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9m dW5jLXdpbmRvdy5zZ21sCmluZGV4IGJiNDEzODdmODczLi5hYjQ2OWI1NmZkNyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv ZnVuYy9mdW5jLXdpbmRvdy5zZ21sCkBAIC0yNzgsNiArMjc4LDEyNyBAQCBJR05PUkUgTlVMTFMK ICAgIDxmdW5jdGlvbj5udGhfdmFsdWU8L2Z1bmN0aW9uPi4KICAgPC9wYXJhPgogCisgIDxwYXJh PgorICAgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gbmF2aWdhdGlvbiBmdW5jdGlvbnMgYXJlIGxp c3RlZCBpbgorICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXJwci1uYXZpZ2F0aW9uLXRhYmxl Ii8+LiAgVGhlc2UgZnVuY3Rpb25zCisgICBjYW4gYmUgdXNlZCB0byBkZXNjcmliZSB0aGUgREVG SU5FIGNsYXVzZSBvZiBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbi4KKyAgPC9wYXJhPgorCisgICA8 dGFibGUgaWQ9ImZ1bmN0aW9ucy1ycHItbmF2aWdhdGlvbi10YWJsZSI+CisgICAgPHRpdGxlPlJv dyBQYXR0ZXJuIE5hdmlnYXRpb24gRnVuY3Rpb25zPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9 IjEiPgorICAgICA8dGhlYWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5j X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIEZ1bmN0 aW9uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgor ICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgIDwvdGhlYWQ+CisKKyAg ICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgICAgPHByaW1hcnk+cHJldjwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+Cisg ICAgICAgIDxmdW5jdGlvbj5wcmV2PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJh bWV0ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+IFssIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJh bWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4gXSApCisgICAgICAgIDxyZXR1cm52YWx1ZT5hbnll bGVtZW50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFJldHVybnMgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiBldmFsdWF0ZWQgYXQgdGhl IHJvdyB0aGF0IGlzCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IHJvd3Mg YmVmb3JlIHRoZSBjdXJyZW50IHJvdyB3aXRoaW4KKyAgICAgICAgdGhlIHBhcnRpdGlvbjsKKyAg ICAgICAgcmV0dXJucyBOVUxMIGlmIHRoZSB0YXJnZXQgcm93IGlzIG91dHNpZGUgdGhlIHBhcnRp dGlvbi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gZGVmYXVsdHMgdG8g MSBpZiBvbWl0dGVkLgorICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBtdXN0 IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXI7CisgICAgICAgIGFuIG9mZnNldCBvZiAwIHJlZmVy cyB0byB0aGUgY3VycmVudCByb3cgaXRzZWxmLgorICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwv cGFyYW1ldGVyPiBtdXN0IG5vdCBiZSBOVUxMLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIGlu IGEgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBjbGF1c2UuCisgICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVu Y190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5k ZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+bmV4dDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRl eHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5uZXh0PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZh bHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+IFssIDxwYXJhbWV0ZXI+b2Zm c2V0PC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4gXSApCisgICAgICAgIDxyZXR1cm52 YWx1ZT5hbnllbGVtZW50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIFJldHVybnMgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiBldmFsdWF0 ZWQgYXQgdGhlIHJvdyB0aGF0IGlzCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0 ZXI+IHJvd3MgYWZ0ZXIgdGhlIGN1cnJlbnQgcm93IHdpdGhpbgorICAgICAgICB0aGUgcGFydGl0 aW9uOworICAgICAgICByZXR1cm5zIE5VTEwgaWYgdGhlIHRhcmdldCByb3cgaXMgb3V0c2lkZSB0 aGUgcGFydGl0aW9uLgorICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZh dWx0cyB0byAxIGlmIG9taXR0ZWQuCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0 ZXI+IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlcjsKKyAgICAgICAgYW4gb2Zmc2V0IG9m IDAgcmVmZXJzIHRvIHRoZSBjdXJyZW50IHJvdyBpdHNlbGYuCisgICAgICAgIDxwYXJhbWV0ZXI+ b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3Qgbm90IGJlIE5VTEwuCisgICAgICAgIENhbiBvbmx5IGJl IHVzZWQgaW4gYSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBy b2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5maXJzdDwvcHJpbWFyeT4KKyAgICAg ICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5maXJzdDwvZnVuY3Rpb24+ICggPHBh cmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFy YW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQorICAgICAg ICA8cmV0dXJudmFsdWU+YW55ZWxlbWVudDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1cm5zIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRl cj4gZXZhbHVhdGVkIGF0IHRoZSByb3cgdGhhdCBpcworICAgICAgICA8cGFyYW1ldGVyPm9mZnNl dDwvcGFyYW1ldGVyPiByb3dzIGFmdGVyIHRoZSBtYXRjaCBzdGFydCByb3c7CisgICAgICAgIHJl dHVybnMgTlVMTCBpZiB0aGUgdGFyZ2V0IHJvdyBpcyBiZXlvbmQgdGhlIGN1cnJlbnQgcm93Lgor ICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZhdWx0cyB0byAwIGlmIG9t aXR0ZWQsIHJlZmVycmluZyB0byB0aGUKKyAgICAgICAgbWF0Y2ggc3RhcnQgcm93IGl0c2VsZi4K KyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG5vbi1uZWdh dGl2ZSBpbnRlZ2VyLgorICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBtdXN0 IG5vdCBiZSBOVUxMLgorICAgICAgICBDYW4gb25seSBiZSB1c2VkIGluIGEgPGxpdGVyYWw+REVG SU5FPC9saXRlcmFsPiBjbGF1c2UuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAg ICAgPHByaW1hcnk+bGFzdDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAg IDxmdW5jdGlvbj5sYXN0PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+ IDx0eXBlPmFueWVsZW1lbnQ8L3R5cGU+IFssIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+ IDx0eXBlPmJpZ2ludDwvdHlwZT4gXSApCisgICAgICAgIDxyZXR1cm52YWx1ZT5hbnllbGVtZW50 PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJl dHVybnMgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiBldmFsdWF0ZWQgYXQgdGhlIHJvdyB0 aGF0IGlzCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IHJvd3MgYmVmb3Jl IHRoZSBjdXJyZW50IHJvdyB3aXRoaW4KKyAgICAgICAgdGhlIG1hdGNoOworICAgICAgICByZXR1 cm5zIE5VTEwgaWYgdGhlIHRhcmdldCByb3cgaXMgYmVmb3JlIHRoZSBtYXRjaCBzdGFydCByb3cu CisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IGRlZmF1bHRzIHRvIDAgaWYg b21pdHRlZCwgcmVmZXJyaW5nIHRvIHRoZQorICAgICAgICBjdXJyZW50IHJvdyBpdHNlbGYuCisg ICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3QgYmUgYSBub24tbmVnYXRp dmUgaW50ZWdlci4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBu b3QgYmUgTlVMTC4KKyAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBpbiBhIDxsaXRlcmFsPkRFRklO RTwvbGl0ZXJhbD4gY2xhdXNlLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+ CisKKyAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CisKKyAgIDxwYXJh PgorICAgIDxmdW5jdGlvbj5QUkVWPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5ORVhUPC9mdW5j dGlvbj4gbWF5IHdyYXAKKyAgICA8ZnVuY3Rpb24+RklSU1Q8L2Z1bmN0aW9uPiBvciA8ZnVuY3Rp b24+TEFTVDwvZnVuY3Rpb24+IGZvciBjb21wb3VuZAorICAgIG5hdmlnYXRpb24uIEZvciBleGFt cGxlLAorICAgIDxsaXRlcmFsPlBSRVYoRklSU1QodmFsLCAyKSwgMyk8L2xpdGVyYWw+IGZldGNo ZXMgdGhlIHZhbHVlIGF0CisgICAgMyByb3dzIGJlZm9yZSB0aGUgcm93IHRoYXQgaXMgMiByb3dz IGFmdGVyIHRoZSBtYXRjaCBzdGFydC4KKyAgICBUaGUgcmV2ZXJzZSBuZXN0aW5nICg8ZnVuY3Rp b24+RklSU1Q8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+TEFTVDwvZnVuY3Rpb24+CisgICAgd3JhcHBp bmcgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+TkVYVDwvZnVuY3Rpb24+KSBp cyBub3QKKyAgICBwZXJtaXR0ZWQuIFNhbWUtY2F0ZWdvcnkgbmVzdGluZyAoZS5nLiwKKyAgICA8 ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+IGluc2lkZSA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+ KSBpcyBhbHNvCisgICAgcHJvaGliaXRlZC4KKyAgIDwvcGFyYT4KKwogICA8bm90ZT4KICAgIDxw YXJhPgogICAgIFRoZSBTUUwgc3RhbmRhcmQgZGVmaW5lcyBhIDxsaXRlcmFsPkZST00gRklSU1Q8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkZST00gTEFTVDwvbGl0ZXJhbD4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCmluZGV4 IDYwNGU4NTc4YThkLi4wMWE4M2FiMTA1ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BlcmZv cm0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sCkBAIC03MDEsNiArNzAxLDUw IEBAIEZST00gdGVuazEgdDEgV0hFUkUgdDEudGVuID0gKFNFTEVDVCAocmFuZG9tKCkgKiAxMCk6 OmludGVnZXIpOwogICAgIGhhcHBlbiB3aXRob3V0IHRoZSBzdWItPGxpdGVyYWw+U0VMRUNUPC9s aXRlcmFsPiBjb25zdHJ1Y3QuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIFdoZW4gZXhh bWluaW5nIHF1ZXJ5IHBsYW5zIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiB3aXRoCisgICAg PGNvbW1hbmQ+RVhQTEFJTjwvY29tbWFuZD4sIHRoZSBwYXR0ZXJuIG91dHB1dCBtYXkgaW5jbHVk ZSBzcGVjaWFsCisgICAgbWFya2VycyB0aGF0IGluZGljYXRlIG9wdGltaXphdGlvbiBvcHBvcnR1 bml0aWVzLiBBIGRvdWJsZSBxdW90ZQorICAgIDxsaXRlcmFsPiI8L2xpdGVyYWw+IG1hcmtzIHdo ZXJlIHBhdHRlcm4gYWJzb3JwdGlvbiBjYW4gb2NjdXIsCisgICAgYW5kIGEgc2luZ2xlIHF1b3Rl IDxsaXRlcmFsPic8L2xpdGVyYWw+IG1hcmtzIGFic29yYmFibGUgZWxlbWVudHMKKyAgICB3aXRo aW4gYSBicmFuY2guIEZvciBleGFtcGxlLCB1c2luZyB0aGUgPHN0cnVjdG5hbWU+c3RvY2s8L3N0 cnVjdG5hbWU+CisgICAgdGFibGUgZnJvbSA8eHJlZiBsaW5rZW5kPSJ0dXRvcmlhbC13aW5kb3ci Lz4sIGEgcXVlcnkgdGhhdCBsb29rcyBmb3IKKyAgICByZXBlYXRlZCB1cC10aGVuLWRvd24gbW92 ZW1lbnRzIHJlcG9ydHMgaXRzIHBhdHRlcm4gYXMKKyAgICA8bGl0ZXJhbD4odXAnIGRvd24nKSsi PC9saXRlcmFsPjoKKworPHNjcmVlbj4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIE9SREVSIEJZIHRkYXRlCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4g KChVUCBET1dOKSspCisgICAgREVGSU5FIFVQIEFTIHByaWNlICZndDsgUFJFVihwcmljZSksCisg ICAgICAgICAgIERPV04gQVMgcHJpY2UgJmx0OyBQUkVWKHByaWNlKQorKTsKKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4KKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0mendzcDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKHVwJyBkb3duJykrIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0mZ3Q7ICBTb3J0 CisgICAgICAgICBTb3J0IEtleTogY29tcGFueSwgdGRhdGUKKyAgICAgICAgIC0mZ3Q7ICBTZXEg U2NhbiBvbiBzdG9jaworPC9zY3JlZW4+CisKKyAgICBIZXJlIHRoZSBzaW5nbGUgcXVvdGVzIG1h cmsgPGxpdGVyYWw+dXA8L2xpdGVyYWw+IGFuZAorICAgIDxsaXRlcmFsPmRvd248L2xpdGVyYWw+ IGFzIGFic29yYmFibGUgd2l0aGluIHRoZSBncm91cCwgd2hpbGUgdGhlCisgICAgdHJhaWxpbmcg ZG91YmxlIHF1b3RlIG1hcmtzIHRoZSByZXBlYXRlZCBncm91cCBpdHNlbGYgYXMgYWJzb3JiYWJs ZS4KKyAgICBUaGVzZSBtYXJrZXJzIGFyZSBwcmltYXJpbHkgdXNlZnVsIGZvciB1bmRlcnN0YW5k aW5nIGludGVybmFsCisgICAgb3B0aW1pemF0aW9uIGJlaGF2aW9yLgorICAgPC9wYXJhPgorCiAg IDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJ1c2luZy1leHBsYWluLWFuYWx5emUiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvc2Vs ZWN0LnNnbWwKaW5kZXggMDliNmNlODA5YmIuLmJlNWVkODE0ODUzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNn bWwKQEAgLTEwMjIsOCArMTAyMiw4IEBAIFdJTkRPVyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+d2luZG93X25hbWU8L3JlcGxhY2VhYmxlPiBBUyAoIDxyZXBsYWNlYWJsCiAgICAgVGhl IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcmFtZV9jbGF1c2U8L3JlcGxhY2VhYmxl PiBjYW4gYmUgb25lIG9mCiAKIDxzeW5vcHNpcz4KLXsgUkFOR0UgfCBST1dTIHwgR1JPVVBTIH0g PHJlcGxhY2VhYmxlPmZyYW1lX3N0YXJ0PC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+ZnJh bWVfZXhjbHVzaW9uPC9yZXBsYWNlYWJsZT4gXQoteyBSQU5HRSB8IFJPV1MgfCBHUk9VUFMgfSBC RVRXRUVOIDxyZXBsYWNlYWJsZT5mcmFtZV9zdGFydDwvcmVwbGFjZWFibGU+IEFORCA8cmVwbGFj ZWFibGU+ZnJhbWVfZW5kPC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+ZnJhbWVfZXhjbHVz aW9uPC9yZXBsYWNlYWJsZT4gXQoreyBSQU5HRSB8IFJPV1MgfCBHUk9VUFMgfSA8cmVwbGFjZWFi bGU+ZnJhbWVfc3RhcnQ8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJsZT5mcmFtZV9leGNsdXNp b248L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlPnJvd19wYXR0ZXJuX2NvbW1vbl9zeW50 YXg8L3JlcGxhY2VhYmxlPiBdCit7IFJBTkdFIHwgUk9XUyB8IEdST1VQUyB9IEJFVFdFRU4gPHJl cGxhY2VhYmxlPmZyYW1lX3N0YXJ0PC9yZXBsYWNlYWJsZT4gQU5EIDxyZXBsYWNlYWJsZT5mcmFt ZV9lbmQ8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJsZT5mcmFtZV9leGNsdXNpb248L3JlcGxh Y2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlPnJvd19wYXR0ZXJuX2NvbW1vbl9zeW50YXg8L3JlcGxh Y2VhYmxlPiBdCiA8L3N5bm9wc2lzPgogCiAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPmZyYW1lX3N0 YXJ0PC9yZXBsYWNlYWJsZT4KQEAgLTExMzAsOSArMTEzMCw5NCBAQCBFWENMVURFIE5PIE9USEVS UwogICAgIGEgZ2l2ZW4gcGVlciBncm91cCB3aWxsIGJlIGluIHRoZSBmcmFtZSBvciBleGNsdWRl ZCBmcm9tIGl0LgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBUaGUKKyAgICBvcHRpb25h bCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm93X3BhdHRlcm5fY29tbW9uX3N5bnRh eDwvcmVwbGFjZWFibGU+CisgICAgZGVmaW5lcyB0aGUgPGZpcnN0dGVybT5Sb3cgUGF0dGVybiBS ZWNvZ25pdGlvbiBjb25kaXRpb248L2ZpcnN0dGVybT4gZm9yCisgICAgdGhpcworICAgIHdpbmRv dy4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvd19wYXR0ZXJuX2NvbW1vbl9zeW50 YXg8L3JlcGxhY2VhYmxlPgorICAgIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgc3ViY2xhdXNlcy4K KworPHN5bm9wc2lzPgorWyB7IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyB8IEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cgfSBdCitbIElOSVRJQUwgfCBTRUVLIF0KK1BBVFRFUk4g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybl92YXJpYWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+cXVhbnRpZmllcjwvcmVwbGFjZWFibGU+IF0gWyAu Li4gXSApCitERUZJTkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlZmluaXRpb25f dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorPC9zeW5vcHNpcz4KKyAgICA8 bGl0ZXJhbD5BRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1c8L2xpdGVyYWw+IG9yIDxsaXRl cmFsPkFGVEVSIE1BVENICisgICAgU0tJUCBUTyBORVhUIFJPVzwvbGl0ZXJhbD4gY29udHJvbHMg aG93IHRvIHByb2NlZWQgdG8gdGhlIG5leHQgcm93IHBvc2l0aW9uCisgICAgYWZ0ZXIgYSBtYXRj aCBpcyBmb3VuZC4gV2l0aCA8bGl0ZXJhbD5BRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVAorICAg IFJPVzwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0KSB0aGUgbmV4dCByb3cgcG9zaXRpb24gaXMgbmV4 dCB0byB0aGUgbGFzdCByb3cgb2YKKyAgICB0aGUgcHJldmlvdXMgbWF0Y2guIE9uIHRoZSBvdGhl ciBoYW5kLCB3aXRoIDxsaXRlcmFsPkFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVAorICAgIFJPVzwv bGl0ZXJhbD4gdGhlIG5leHQgcm93IHBvc2l0aW9uIGlzIG5leHQgdG8gdGhlIGZpcnN0IHJvdyBv ZiB0aGUgcHJldmlvdXMKKyAgICBtYXRjaC4gPGxpdGVyYWw+SU5JVElBTDwvbGl0ZXJhbD4gb3Ig PGxpdGVyYWw+U0VFSzwvbGl0ZXJhbD4gc3BlY2lmaWVzIGZyb20KKyAgICB3aGljaCByb3cgaW4g dGhlIGZyYW1lIHBhdHRlcm4gbWF0Y2hpbmcgYmVnaW5zLgorICAgIElmIDxsaXRlcmFsPklOSVRJ QUw8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlIG1hdGNoIG11c3Qgc3RhcnQKKyAgICBmcm9t IHRoZSBmaXJzdCByb3cgaW4gdGhlIGZyYW1lLiBJZiA8bGl0ZXJhbD5TRUVLPC9saXRlcmFsPiBp cyBzcGVjaWZpZWQsCisgICAgdGhlIHNldCBvZiBtYXRjaGluZyByb3dzIGRvZXMgbm90IG5lY2Vz c2FyaWx5IHN0YXJ0IGZyb20gdGhlIGZpcnN0IHJvdy4gVGhlCisgICAgZGVmYXVsdCBpcyA8bGl0 ZXJhbD5JTklUSUFMPC9saXRlcmFsPi4gQ3VycmVudGx5CisgICAgb25seSA8bGl0ZXJhbD5JTklU SUFMPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQuIDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4KKyAg ICBkZWZpbmVzIGRlZmluaXRpb24gdmFyaWFibGVzIGFsb25nIHdpdGggYSBib29sZWFuCisgICAg ZXhwcmVzc2lvbi4gPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gZGVmaW5lcyBhIHNlcXVlbmNl IG9mIHJvd3MgdGhhdAorICAgIHNhdGlzZmllcyBjZXJ0YWluIGNvbmRpdGlvbnMgdXNpbmcgdmFy aWFibGVzIGRlZmluZWQKKyAgICBpbiB0aGUgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBjbGF1 c2UgKGFuIGVtcHR5IDxsaXRlcmFsPlBBVFRFUk4oKTwvbGl0ZXJhbD4KKyAgICBpcyBub3Qgc3Vw cG9ydGVkKS4gRWFjaCBwYXR0ZXJuIHZhcmlhYmxlIGNhbiBiZSBmb2xsb3dlZCBieSBhIHF1YW50 aWZpZXIKKyAgICB0byBzcGVjaWZ5IGhvdyBtYW55IHRpbWVzIGl0IHNob3VsZCBtYXRjaDoKKyAg ICA8bGl0ZXJhbD4qPC9saXRlcmFsPiAoemVybyBvciBtb3JlKSwKKyAgICA8bGl0ZXJhbD4rPC9s aXRlcmFsPiAob25lIG9yIG1vcmUpLAorICAgIDxsaXRlcmFsPj88L2xpdGVyYWw+ICh6ZXJvIG9y IG9uZSksCisgICAgPGxpdGVyYWw+ezwvbGl0ZXJhbD48cmVwbGFjZWFibGU+bjwvcmVwbGFjZWFi bGU+PGxpdGVyYWw+fTwvbGl0ZXJhbD4gKGV4YWN0bHkgPHJlcGxhY2VhYmxlPm48L3JlcGxhY2Vh YmxlPiB0aW1lcywgbiAmZ3Q7IDApLAorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2Vh YmxlPm48L3JlcGxhY2VhYmxlPjxsaXRlcmFsPix9PC9saXRlcmFsPiAoYXQgbGVhc3QgPHJlcGxh Y2VhYmxlPm48L3JlcGxhY2VhYmxlPiB0aW1lcywgbiAmZ3Q7PSAwKSwKKyAgICA8bGl0ZXJhbD57 LDwvbGl0ZXJhbD48cmVwbGFjZWFibGU+bTwvcmVwbGFjZWFibGU+PGxpdGVyYWw+fTwvbGl0ZXJh bD4gKGF0IG1vc3QgPHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPiB0aW1lcywgbSAmZ3Q7IDAp LCBvcgorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxl PjxsaXRlcmFsPiw8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPjxsaXRlcmFs Pn08L2xpdGVyYWw+CisgICAgKGJldHdlZW4gPHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxlPiBh bmQgPHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPiB0aW1lcywgMCAmbHQ7PSBuICZsdDs9IG0s IDAgJmx0OyBtKS4KKyAgICBSZWx1Y3RhbnQgcXVhbnRpZmllcnMgKGUuZy4sIDxsaXRlcmFsPio/ PC9saXRlcmFsPiwgPGxpdGVyYWw+Kz88L2xpdGVyYWw+LAorICAgIDxsaXRlcmFsPj8/PC9saXRl cmFsPiwgPGxpdGVyYWw+ezwvbGl0ZXJhbD48cmVwbGFjZWFibGU+bjwvcmVwbGFjZWFibGU+PGxp dGVyYWw+LDwvbGl0ZXJhbD48cmVwbGFjZWFibGU+bTwvcmVwbGFjZWFibGU+PGxpdGVyYWw+fT88 L2xpdGVyYWw+KQorICAgIGFyZSBzdXBwb3J0ZWQuCisgICAgVGhlIGV4Y2x1c2lvbiAoPGxpdGVy YWw+ey08L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD4tfTwvbGl0ZXJhbD4pCisgICAgaXMgbm90IHN1 cHBvcnRlZC4KKyAgICBQYXR0ZXJucyBjYW4gYmUgZ3JvdXBlZCB1c2luZyBwYXJlbnRoZXNlcywg YW5kIGFsdGVybmF0aW9uIChPUikgY2FuIGJlCisgICAgZXhwcmVzc2VkIHVzaW5nIHRoZSB2ZXJ0 aWNhbCBiYXIgPGxpdGVyYWw+fDwvbGl0ZXJhbD4uCisgICAgRm9yIGV4YW1wbGUsIDxsaXRlcmFs PihBIEIpKzwvbGl0ZXJhbD4gbWF0Y2hlcyBvbmUgb3IgbW9yZSByZXBldGl0aW9ucworICAgIG9m IHRoZSBzZXF1ZW5jZSBBIGZvbGxvd2VkIGJ5IEIsIGFuZCA8bGl0ZXJhbD5BIHwgQjwvbGl0ZXJh bD4gbWF0Y2hlcworICAgIGVpdGhlciBBIG9yIEIuCisgICAgSWYgYSBwYXR0ZXJuIHZhcmlhYmxl IGlzIG5vdCBkZWZpbmVkIGluCisgICAgdGhlIDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4gY2xh dXNlLCBpdCBpcyBub3QgYXV0b21hdGljYWxseSBhZGRlZAorICAgIHRvIHRoZSA8bGl0ZXJhbD5E RUZJTkU8L2xpdGVyYWw+IGNsYXVzZS4gSW5zdGVhZCwgdGhlIGV4ZWN1dG9yIGV2YWx1YXRlcwor ICAgIHRoZSB2YXJpYWJsZSBhcyA8bGl0ZXJhbD5UUlVFPC9saXRlcmFsPiBhdCBleGVjdXRpb24g dGltZSwgYmVoYXZpbmcgYXMgaWYKKyAgICB0aGUgZm9sbG93aW5nIGRlZmluaXRpb24gZXhpc3Rl ZC4KKworPHN5bm9wc2lzPgorPGxpdGVyYWw+dmFyaWFibGVfbmFtZTwvbGl0ZXJhbD4gQVMgVFJV RQorPC9zeW5vcHNpcz4KKworICAgIENvbnZlcnNlbHksIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRo ZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVzZQorICAgIGJ1dCBub3QgdXNlZCBpbiB0 aGUgPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gY2xhdXNlIGFyZSByZWplY3RlZAorICAgIHdp dGggYW4gZXJyb3IuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE5vdGUgdGhhdCB0aGUg bWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIHBhdHRlcm4gdmFyaWFibGVzCisgICAgdXNlZCBpbiB0 aGUgPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gY2xhdXNlIGlzIDI0MC4KKyAgICBJZiB0aGlz IGxpbWl0IGlzIGV4Y2VlZGVkLCBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KKyAgICBBZGRpdGlv bmFsbHksIHRoZSBtYXhpbXVtIG5lc3RpbmcgZGVwdGggb2YgcGF0dGVybiBncm91cHMKKyAgICAo cGFyZW50aGVzZXMpIGlzIDI1MyBsZXZlbHMuCisgICAgSG93ZXZlciwgcGF0dGVybiBvcHRpbWl6 YXRpb25zIHN1Y2ggYXMgZmxhdHRlbmluZyBuZXN0ZWQgc2VxdWVuY2VzCisgICAgYW5kIHNpbXBs aWZ5aW5nIG5lc3RlZCBxdWFudGlmaWVycyBtYXkgcmVkdWNlIHRoZSBlZmZlY3RpdmUgZGVwdGgs CisgICAgc28gdGhpcyBsaW1pdCBpcyByYXJlbHkgcmVhY2hlZCBpbiBwcmFjdGljZS4KKyAgIDwv cGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIFNRTCBzdGFuZGFyZCBkZWZpbmVzIG1vcmUgc3Vi Y2xhdXNlczogPGxpdGVyYWw+TUVBU1VSRVM8L2xpdGVyYWw+CisgICAgYW5kIDxsaXRlcmFsPlNV QlNFVDwvbGl0ZXJhbD4uIFRoZXkgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkCisgICAgaW4g PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi4gQWxzbyBpbiB0aGUgc3RhbmRh cmQgdGhlcmUgYXJlCisgICAgbW9yZSB2YXJpYXRpb25zIGluIDxsaXRlcmFsPkFGVEVSIE1BVENI PC9saXRlcmFsPiBjbGF1c2UuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRoZSBwdXJw b3NlIG9mIGEgPGxpdGVyYWw+V0lORE9XPC9saXRlcmFsPiBjbGF1c2UgaXMgdG8gc3BlY2lmeSB0 aGUKLSAgICBiZWhhdmlvciBvZiA8Zmlyc3R0ZXJtPndpbmRvdyBmdW5jdGlvbnM8L2ZpcnN0dGVy bT4gYXBwZWFyaW5nIGluIHRoZSBxdWVyeSdzCisgICAgYmVoYXZpb3Igb2YgPGZpcnN0dGVybT53 aW5kb3cgZnVuY3Rpb25zPC9maXJzdHRlcm0+IGFwcGVhcmluZyBpbiB0aGUKKyAgICBxdWVyeSdz CiAgICAgPGxpbmsgbGlua2VuZD0ic3FsLXNlbGVjdC1saXN0Ij48Y29tbWFuZD5TRUxFQ1Q8L2Nv bW1hbmQ+IGxpc3Q8L2xpbms+IG9yCiAgICAgPGxpbmsgbGlua2VuZD0ic3FsLW9yZGVyYnkiPjxs aXRlcmFsPk9SREVSIEJZPC9saXRlcmFsPjwvbGluaz4gY2xhdXNlLgogICAgIFRoZXNlIGZ1bmN0 aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwciBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjAwYWY4NjY4MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvUkVBRE1FLnJwcgpAQCAtMCwwICsxLDE2NzIgQEAKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyAgUG9zdGdyZVNRTCBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbjogRmxhdC1BcnJheSBTdHJlYW0g TkZBIEd1aWRlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgVGhpcyBSRUFETUUncyB0YXJnZXQg YXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aXRoIGEgYmFzaWMKKyAgdW5kZXJzdGFuZGluZyBvZiB0 aGUgUG9zdGdyZVNRTCBleGVjdXRvciBhbmQgcGxhbm5lciBhcmNoaXRlY3R1cmUuCisgIEFsc28g aXQgd291bGQgYmUgYmV0dGVyIGZvciB0aGVtIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljYXRp b24gb2YKKyAgdGhlIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGluIHRoZSBTUUwgc3RhbmRhcmQg WzFdWzJdLiBJZiB5b3UgZG8KKyAgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBTUUwgc3RhbmRhcmQs IE9yYWNsZSdzIG1hbnVhbCBvciBUcmlubydzCisgIG1hbnVhbCBjYW4gYmUgYWx0ZXJuYXRpdmVz IGZvciB0aGVtLgorCisgIFRoaXMgUkVBRE1FJ3Mgc2NvcGUgaXMgdGhlIGVudGlyZSBwcm9jZXNz IGZyb20gUEFUVEVSTi9ERUZJTkUgY2xhdXNlCisgIHBhcnNpbmcgdG8gTkZBIHJ1bnRpbWUgZXhl Y3V0aW9uLgorCisgIFJlbGF0ZWQgY29kZToKKyAgICAtIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYyAgICAgICAgICAocGFyc2VyIHBoYXNlKQorICAgIC0gc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcnByLmMgICAgICAgIChvcHRpbWl6ZXIgcGhhc2UpCisgICAgLSBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgKGV4ZWN1dG9yIHBoYXNlLCB3aW5kb3cgYWdn KQorICAgIC0gc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jICAgICAgICAgIChleGVjdXRv ciBwaGFzZSwgTkZBIGVuZ2luZSkKKyAgICAtIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIu aCAgICAgICAgICAoTkZBIHB1YmxpYyBBUEkpCisgICAgLSBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFu bm9kZXMuaCAgICAgICAgICAgKHBsYW4gbm9kZSBkZWZpbml0aW9ucykKKyAgICAtIHNyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAoZXhlY3V0aW9uIHN0YXRlIGRlZmluaXRp b25zKQorICAgIC0gc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oICAgICAgICAgICAgICh0eXBl cyBhbmQgY29uc3RhbnRzKQorICAgIC0gc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRl cGxhbi5jIChuYXYgb2Zmc2V0IGNvbXB1dGF0aW9uKQorCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K1doYXQgaXMgYSBGbGF0LUFycmF5IFN0cmVhbSBORkE/CisKKyAgVGhlIE5GQSAoTm9uZGV0ZXJt aW5pc3RpYyBGaW5pdGUgQXV0b21hdG9uKSBpbiB0aGlzIGltcGxlbWVudGF0aW9uCisgIGlzIG5v dCBhIHRyYWRpdGlvbmFsIHN0YXRlLXRyYW5zaXRpb24gZ3JhcGggYnV0IGEgZmxhdCBhcnJheSBv ZgorICBmaXhlZC1zaXplIDE2LWJ5dGUgZWxlbWVudHMuIEF0IHJ1bnRpbWUsIGl0IHByb2Nlc3Nl cyB0aGUgcm93IHN0cmVhbQorICBpbiBhIGZvcndhcmQtb25seSBtYW5uZXIsIGV4cGFuZGluZyBl cHNpbG9uIHRyYW5zaXRpb25zIGVhZ2VybHkKKyAgd2l0aG91dCBiYWNrdHJhY2tpbmcuCisKKyAg LSBGbGF0LUFycmF5OiBQYXR0ZXJuIGNvbXBpbGVkIGludG8gYSBmbGF0IGFycmF5LAorICAgICAg ICAgICAgICAgIG5vdCBhIGdyYXBoIChDaGFwdGVyIElWKQorICAtIFN0cmVhbTogICAgIFJvd3Mg Y29uc3VtZWQgc2VxdWVudGlhbGx5IGluIG9uZSBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAg bmV2ZXIgcmV2aXNpdGVkIChDaGFwdGVyIFhJSSkKKyAgLSBORkE6ICAgICAgICBOb25kZXRlcm1p bmlzdGljIGV4ZWN1dGlvbiB3aGVyZSBtdWx0aXBsZSBzdGF0ZXMKKyAgICAgICAgICAgICAgICBj b2V4aXN0IHdpdGhpbiBhIHNpbmdsZSBjb250ZXh0IChDaGFwdGVyIFZJKQorCitDaGFwdGVyIEkg IFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIE92ZXJ2aWV3Cis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K05vcm1hdGl2ZSByZWZlcmVuY2U6IElTTy9JRUMgMTkwNzUtNSAoU1FMIFRlY2huaWNhbCBSZXBv cnQsIFBhcnQgNTogUm93CitwYXR0ZXJuIHJlY29nbml0aW9uIGluIFNRTCkuICBTdWJjbGF1c2Ug bnVtYmVycyBjaXRlZCB0aHJvdWdob3V0IHRoaXMgY29kZQorYmFzZSByZWZlciB0byB0aGF0IGRv Y3VtZW50LiAgV2hlcmUgQ2hhcHRlcnMgNCAoRlJPTSBjbGF1c2UpIGFuZCA2IChXSU5ET1cKK2Ns YXVzZSkgZGVzY3JpYmUgcGFyYWxsZWwgbWF0ZXJpYWwsIHRoaXMgaW1wbGVtZW50YXRpb24gY2l0 ZXMgdGhlIENoYXB0ZXIgNgorc3ViY2xhdXNlIGZpcnN0IGJlY2F1c2UgaXQgdGFyZ2V0cyBGZWF0 dXJlIFIwMjAuCisKK1JvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChoZXJlYWZ0ZXIgUlBSKSBpcyBh IGZlYXR1cmUgaW50cm9kdWNlZCBpbiBTUUw6MjAxNgordGhhdCBtYXRjaGVzIHJlZ2V4LWJhc2Vk IHBhdHRlcm5zIGFnYWluc3Qgb3JkZXJlZCByb3cgc2V0cy4KKworVGhlIFNRTCBzdGFuZGFyZCBk ZWZpbmVzIHR3byBmb3JtczoKKworICBGZWF0dXJlIFIwMTA6IE1BVENIX1JFQ09HTklaRSAoRlJP TSBjbGF1c2UpCisgICAgLSBEZWRpY2F0ZWQgdGFibGUgb3BlcmF0b3IKKyAgICAtIFByb3ZpZGVz IGRlZGljYXRlZCBmdW5jdGlvbnMgc3VjaCBhcyBNQVRDSF9OVU1CRVIoKSwgQ0xBU1NJRklFUigp CisgICAgLSBTdXBwb3J0cyBPTkUgUk9XIFBFUiBNQVRDSCAvIEFMTCBST1dTIFBFUiBNQVRDSAor CisgIEZlYXR1cmUgUjAyMDogUlBSIGluIGEgd2luZG93IChXSU5ET1cgY2xhdXNlKQorICAgIC0g SW50ZWdyYXRlZCBpbnRvIHRoZSBleGlzdGluZyB3aW5kb3cgZnVuY3Rpb24gZnJhbWV3b3JrCisg ICAgLSBTdXBwb3J0cyBBTEwgUk9XUyBQRVIgTUFUQ0ggb25seQorICAgIC0gTm8gTUFUQ0hfTlVN QkVSKCkKKworVGhpcyBpbXBsZW1lbnRhdGlvbiB0YXJnZXRzIEZlYXR1cmUgUjAyMC4KKworVGhl IGJhc2ljIHN5bnRheCBpcyBhcyBmb2xsb3dzOgorCisgIFNFTEVDVCAuLi4KKyAgT1ZFUiAoCisg ICAgUEFSVElUSU9OIEJZIC4uLgorICAgIE9SREVSIEJZIC4uLgorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFtJTklUSUFMIHwgU0VFS10g ICAtLSBTRUVLIGlzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGJ1dCBub3QgaW1wbGVtZW50ZWQK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XIHwgU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoIDxyZWdleD4gKQorICAgIERFRklORSA8dmFyaWFibGU+IEFTIDxjb25kaXRp b24+LCAuLi4KKyAgKQorCitUaGUgUEFUVEVSTiBjbGF1c2UgaXMgYSByZWd1bGFyIGV4cHJlc3Np b24gb3ZlciByb3cgcGF0dGVybiB2YXJpYWJsZXMuCitUaGUgREVGSU5FIGNsYXVzZSBzcGVjaWZp ZXMgYm9vbGVhbiBjb25kaXRpb25zIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgZWFjaAordmFyaWFi bGUgZXZhbHVhdGVzIHRvIHRydWUgZm9yIHRoZSBjdXJyZW50IHJvdy4KKworRXhhbXBsZToKKwor ICBQQVRURVJOIChBKyBCKQorICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICAg ICAgICAgQiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCisKK1RoaXMgcGF0dGVybiBtYXRjaGVzICJh IHNwYW4gd2hlcmUgcHJpY2VzIHJpc2UgY29uc2VjdXRpdmVseSB0aGVuIGRyb3AuIgorCitDaGFw dGVyIElJICBPdmVyYWxsIFByb2Nlc3NpbmcgUGlwZWxpbmUKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworUlBSIHByb2Nlc3NpbmcgaXMgZGl2aWRlZCBpbnRvIHRocmVlIHBoYXNlczoKKworICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KworICB8ICAxLiBQYXJzaW5nIChQYXJzZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAorICB8ICAgICBTUUwgdGV4dCAtPiBQQVRURVJOIEFTVCArIERFRklORSBleHBy ZXNzaW9uIHRyZWUgICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAyLiBDb21waWxhdGlvbiAoT3B0aW1p emVyL1BsYW5uZXIpICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICBQQVRURVJOIEFT VCAtPiBvcHRpbWl6YXRpb24gLT4gZmxhdCBORkEgZWxlbWVudCBhcnJheSAgfAorICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICB8ICAzLiBFeGVjdXRpb24gKEV4ZWN1dG9yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorICB8ICAgICBSb3ctYnktcm93IG1hdGNoaW5nIHZpYSBORkEgc2ltdWxhdGlvbiAg ICAgICAgICAgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCitFYWNoIHBoYXNlIHVzZXMgaW5kZXBlbmRlbnQg ZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGludGVyZmFjZXMgYmV0d2VlbgorcGhhc2VzIGFyZSB3 ZWxsLWRlZmluZWQ6CisKKyAgUGFyc2VyIC0+IFBsYW5uZXI6ICAgIFdpbmRvd0NsYXVzZS5ycFBh dHRlcm4gKFJQUlBhdHRlcm5Ob2RlIHRyZWUpCisgICAgICAgICAgICAgICAgICAgICAgICBXaW5k b3dDbGF1c2UuZGVmaW5lQ2xhdXNlIChUYXJnZXRFbnRyeSBsaXN0KQorCisgIFBsYW5uZXIgLT4g RXhlY3V0b3I6ICBXaW5kb3dBZ2cucnBQYXR0ZXJuIChSUFJQYXR0ZXJuIHN0cnVjdCkKKyAgICAg ICAgICAgICAgICAgICAgICAgIFdpbmRvd0FnZy5kZWZpbmVDbGF1c2UgKFRhcmdldEVudHJ5IGxp c3QpCisKK0NoYXB0ZXIgSUlJICBQYXJzaW5nIFBoYXNlCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0lJSS0xLiBFbnRyeSBQb2ludAorCisgIHRyYW5zZm9ybVdpbmRvd0RlZmluaXRpb25zKCkgKHBh cnNlX2NsYXVzZS5jKQorICAgICstLSB0cmFuc2Zvcm1SUFIoKSAocGFyc2VfcnByLmMpCisKK3Ry YW5zZm9ybVJQUigpIGlzIGludm9rZWQgd2hlbiBSUENvbW1vblN5bnRheCBpcyBwcmVzZW50IGFu ZCBwZXJmb3JtcyB0aGUKK2ZvbGxvd2luZzoKKworICAoMSkgRnJhbWUgb3B0aW9uIHZhbGlkYXRp b24KKyAgICAgIC0gT25seSBST1dTIGlzIGFsbG93ZWQgKFJBTkdFLCBHUk9VUFMgYXJlIG5vdCkK KyAgICAgIC0gVGhlIHN0YXJ0IGJvdW5kYXJ5IG11c3QgYmUgQ1VSUkVOVCBST1cKKyAgICAgIC0g RVhDTFVERSBvcHRpb24gaXMgbm90IGFsbG93ZWQKKworICAoMikgVHJhbnNjcmlwdGlvbiB0byBX aW5kb3dDbGF1c2UKKyAgICAgIC0gQ29waWVzIHJwUGF0dGVybiwgcnBTa2lwVG8sIGluaXRpYWwg ZmllbGRzCisKKyAgKDMpIERFRklORSBjbGF1c2UgdHJhbnNmb3JtYXRpb24gKHRyYW5zZm9ybURl ZmluZUNsYXVzZSkKKworSUlJLTIuIFBBVFRFUk4gQVNUIChBYnN0cmFjdCBTeW50YXggVHJlZSkK KworVGhlIHBhcnNlciB0cmFuc2Zvcm1zIHRoZSBQQVRURVJOIGNsYXVzZSBpbnRvIGFuIFJQUlBh dHRlcm5Ob2RlIHRyZWUuCitFYWNoIG5vZGUgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvdXIg dHlwZXM6CisKKyAgUlBSX1BBVFRFUk5fVkFSICAgIFZhcmlhYmxlIHJlZmVyZW5jZS4gTmFtZSBz dG9yZWQgaW4gdmFyTmFtZSBmaWVsZC4KKyAgUlBSX1BBVFRFUk5fU0VRICAgIENvbmNhdGVuYXRp b24uIENoaWxkcmVuIG5vZGUgbGlzdCBpbiBjaGlsZHJlbi4KKyAgUlBSX1BBVFRFUk5fQUxUICAg IEFsdGVybmF0aW9uIChvcikuIEJyYW5jaCBub2RlIGxpc3QgaW4gY2hpbGRyZW4uCisgIFJQUl9Q QVRURVJOX0dST1VQICBHcm91cCAocGFyZW50aGVzZXMpLiBCb2R5IG5vZGUgbGlzdCBpbiBjaGls ZHJlbi4KKworQWxsIG5vZGVzIGhhdmUgbWluL21heCBmaWVsZHMgdG8gZXhwcmVzcyBxdWFudGlm aWVyczoKKworICBBICAgICAgIC0+IFZBUihBLCBtaW49MSwgbWF4PTEpCisgIEErICAgICAgLT4g VkFSKEEsIG1pbj0xLCBtYXg9SU5GKQorICBBKiAgICAgIC0+IFZBUihBLCBtaW49MCwgbWF4PUlO RikKKyAgQT8gICAgICAtPiBWQVIoQSwgbWluPTAsIG1heD0xKQorICBBezMsNX0gIC0+IFZBUihB LCBtaW49MywgbWF4PTUpCisKK0lmIHRoZSByZWx1Y3RhbnQgZmllbGQgaXMgdHJ1ZSwgdGhlIHF1 YW50aWZpZXIgaXMgcmVsdWN0YW50IChub24tZ3JlZWR5KS4KKworRXhhbXBsZTogUEFUVEVSTiAo KEErIEIpIHwgQyopCisKKyAgQUxUCisgICstLSBTRVEKKyAgfCAgICstLSBWQVIoQSwgMSwgSU5G KQorICB8ICAgKy0tIFZBUihCLCAxLCAxKQorICArLS0gVkFSKEMsIDAsIElORikKKworSUlJLTMu IERFRklORSBDbGF1c2UgVHJhbnNmb3JtYXRpb24KKwordHJhbnNmb3JtRGVmaW5lQ2xhdXNlKCkg cHJvY2Vzc2VzIGVhY2ggREVGSU5FIHZhcmlhYmxlIGFzIGZvbGxvd3M6CisKKyAgKDEpIENoZWNr cyBmb3IgZHVwbGljYXRlIHZhcmlhYmxlIG5hbWVzCisgICgyKSBUcmFuc2Zvcm1zIHRoZSBleHBy ZXNzaW9uIHZpYSB0cmFuc2Zvcm1FeHByKCkKKyAgKDMpIEV4dHJhY3RzIFZhciBub2RlcyB2aWEg cHVsbF92YXJfY2xhdXNlKCkgYW5kIGVuc3VyZXMgZWFjaCBpcworICAgICAgcHJlc2VudCBpbiB0 aGUgcXVlcnkgdGFyZ2V0bGlzdCwgc28gdGhlIHBsYW5uZXIgcHJvcGFnYXRlcyB0aGUKKyAgICAg IHJlZmVyZW5jZWQgY29sdW1ucyB0aHJvdWdoIHRoZSBwbGFuIHRyZWUKKyAgKDQpIFdyYXBzIGlu IGEgVGFyZ2V0RW50cnkgd2l0aCB0aGUgdmFyaWFibGUgbmFtZSBzZXQgaW4gcmVzbmFtZQorCitB ZnRlciBhbGwgdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQ6CisgICg1KSBDb2VyY2VzIGVhY2ggZXhw cmVzc2lvbiB0byBCb29sZWFuIHR5cGUgKGNvZXJjZV90b19ib29sZWFuKQorCitWYXJpYWJsZXMg dGhhdCBhcmUgdXNlZCBpbiBQQVRURVJOIGJ1dCBub3QgZGVmaW5lZCBpbiBERUZJTkUgYXJlIGlt cGxpY2l0bHkKK2V2YWx1YXRlZCBhcyBUUlVFIChtYXRjaGluZyBhbGwgcm93cykuCisKK0NoYXB0 ZXIgSVYgIENvbXBpbGF0aW9uIFBoYXNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0lWLTEuIEVu dHJ5IFBvaW50CisKKyAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKCkgKGNyZWF0ZXBsYW4uYykKKyAg ICArLS0gYnVpbGREZWZpbmVWYXJpYWJsZUxpc3QoKSAgICBCdWlsZCB2YXJpYWJsZSBuYW1lIGxp c3QgZnJvbSBERUZJTkUKKyAgICArLS0gYnVpbGRSUFJQYXR0ZXJuKCkgICAgICAgICAgIE5GQSBj b21waWxhdGlvbiAoNiBwaGFzZXMpCisKK0lWLTIuIFRoZSA2IFBoYXNlcyBvZiBidWlsZFJQUlBh dHRlcm4oKQorCisgIFBoYXNlIDE6IEFTVCBvcHRpbWl6YXRpb24gKG9wdGltaXplUlBSUGF0dGVy bikKKyAgUGhhc2UgMjogU3RhdGlzdGljcyBjb2xsZWN0aW9uIChzY2FuUlBSUGF0dGVybikKKyAg UGhhc2UgMzogTWVtb3J5IGFsbG9jYXRpb24gKG1ha2VSUFJQYXR0ZXJuKQorICBQaGFzZSA0OiBO RkEgZWxlbWVudCBmaWxsIChmaWxsUlBSUGF0dGVybikKKyAgUGhhc2UgNTogRmluYWxpemF0aW9u IChmaW5hbGl6ZVJQUlBhdHRlcm4pCisgIFBoYXNlIDY6IEFic29yYmFiaWxpdHkgYW5hbHlzaXMg KGNvbXB1dGVBYnNvcmJhYmlsaXR5KQorCitJVi0zLiBQaGFzZSAxOiBBU1QgT3B0aW1pemF0aW9u CisKK0FmdGVyIGNvcHlpbmcgdGhlIHBhcnNlci1nZW5lcmF0ZWQgQVNULCB0aGUgZm9sbG93aW5n IG9wdGltaXphdGlvbnMgYXJlCithcHBsaWVkOgorCisgIChhKSBTRVEgZmxhdHRlbmluZzogVW53 cmFwIG5lc3RlZCBTRVEgbm9kZXMKKyAgICAgIFNFUShBLCBTRVEoQiwgQykpIC0+IFNFUShBLCBC LCBDKQorCisgIChiKSBDb25zZWN1dGl2ZSB2YXJpYWJsZSBtZXJnaW5nOiBNZXJnZSBjb25zZWN1 dGl2ZSBvY2N1cnJlbmNlcyBvZiB0aGUKKyAgICAgIHNhbWUgdmFyaWFibGUgaW50byBhIHNpbmds ZSBxdWFudGlmaWVyCisgICAgICBBIEEgLT4gQXsyfQorICAgICAgQXsyLDN9IEF7MSwyfSAtPiBB ezMsNX0KKworICAoYykgQ29uc2VjdXRpdmUgZ3JvdXAgbWVyZ2luZzogTWVyZ2UgcmVwZWF0ZWQg aWRlbnRpY2FsIGdyb3VwcworICAgICAgKEEgQikrIChBIEIpKyAtPiAoQSBCKXsyLElORn0KKwor ICAoZCkgQ29uc2VjdXRpdmUgQUxUIG1lcmdpbmc6IE1lcmdlIHJlcGVhdGVkIGlkZW50aWNhbCBB TFQgbm9kZXMKKyAgICAgIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIC0+IChBIHwgQil7M30KKwor ICAoZSkgUHJlZml4L3N1ZmZpeCBtZXJnaW5nOiBNZXJnZSBpZGVudGljYWwgc2VxdWVuY2VzIGJl Zm9yZS9hZnRlcgorICAgICAgYSBncm91cAorICAgICAgQSBCIChBIEIpKyAtPiAoQSBCKXsyLElO Rn0KKworICAoZikgQUxUIGZsYXR0ZW5pbmcgYW5kIGRlZHVwbGljYXRpb24KKyAgICAgIChBIHwg KEIgfCBDKSkgLT4gKEEgfCBCIHwgQykKKyAgICAgIChBIHwgQiB8IEEpIC0+IChBIHwgQikKKwor ICAoZykgUXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbjogQ29sbGFwc2UgbmVzdGVkIHF1YW50aWZp ZXJzIHdoZW4gc2FmZQorICAgICAgKEErKSsgLT4gQSsKKyAgICAgIChBezIsM30pezV9IC0+IEF7 MTAsMTV9CisgICAgICAoQXsyLH0pKiBzdGF5cyBhcy1pcyAoY291bnQgMSB1bnJlYWNoYWJsZTsg QSogd291bGQgYmUgd3JvbmcpCisKKyAgKGgpIFNpbmdsZS1jaGlsZCB1bndyYXAKKyAgICAgIFNF UShBKSAtPiBBLCAgKEEpezEsMX0gLT4gQQorCitJVi00LiBQaGFzZSA0OiBORkEgRWxlbWVudCBB cnJheSBHZW5lcmF0aW9uCisKK1RyYW5zZm9ybXMgdGhlIG9wdGltaXplZCBBU1QgaW50byBhIGZs YXQgYXJyYXkgb2YgUlBSUGF0dGVybkVsZW1lbnQuCitUaGlzIGlzIHRoZSBjb3JlIGRhdGEgc3Ry dWN0dXJlIHVzZWQgZm9yIE5GQSBzaW11bGF0aW9uIGF0IHJ1bnRpbWUuCisKK1JQUlBhdHRlcm5F bGVtZW50IHN0cnVjdCAoMTYgYnl0ZXMpOgorCisgIEZpZWxkICAgICAgU2l6ZSAgICAgRGVzY3Jp cHRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIHZhcklkICAgICAgMUIgICAgICBWYXJpYWJsZSBJRCAoMC0weEVGKSBvciBj b250cm9sIGNvZGUgKDB4RkMtMHhGRikKKyAgZGVwdGggICAgICAxQiAgICAgIEdyb3VwIG5lc3Rp bmcgZGVwdGgKKyAgZmxhZ3MgICAgICAxQiAgICAgIEJpdCBmbGFncyAoc2VlIGJlbG93KQorICBy ZXNlcnZlZCAgIDFCICAgICAgUGFkZGluZworICBtaW4gICAgICAgIDRCICAgICAgUXVhbnRpZmll ciBsb3dlciBib3VuZAorICBtYXggICAgICAgIDRCICAgICAgUXVhbnRpZmllciB1cHBlciBib3Vu ZAorICBuZXh0ICAgICAgIDJCICAgICAgTmV4dCBlbGVtZW50IGluZGV4IChzZXF1ZW50aWFsIGZs b3cpCisgIGp1bXAgICAgICAgMkIgICAgICBCcmFuY2ggdGFyZ2V0IGluZGV4IChmb3IgQUxUL0dS T1VQKQorCitQYXR0ZXJuIHZhcmlhYmxlcyBvY2N1cHkgdmFySWQgMCB0byBSUFJfVkFSSURfTUFY ICgweEVGKSBpbmNsdXNpdmUsCitnaXZpbmcgMjQwIGRpc3RpbmN0IHZhcmlhYmxlcy4gIEFueSB2 YXJJZCB3aXRoIHRoZSBoaWdoIG5pYmJsZSBzZXQKKygweEYwLTB4RkYpIGlzIHJlc2VydmVkIGZv ciBjb250cm9sIGVsZW1lbnRzOyAweEYwLTB4RkIgYXJlIGN1cnJlbnRseQorc3BhcmUuCisKK0Nv bnRyb2wgY29kZXM6CisKKyAgUlBSX1ZBUklEX0JFR0lOICgweEZDKSAgR3JvdXAgc3RhcnQgbWFy a2VyCisgIFJQUl9WQVJJRF9FTkQgICAoMHhGRCkgIEdyb3VwIGVuZCBtYXJrZXIKKyAgUlBSX1ZB UklEX0FMVCAgICgweEZFKSAgQWx0ZXJuYXRpb24gc3RhcnQgbWFya2VyCisgIFJQUl9WQVJJRF9G SU4gICAoMHhGRikgIFBhdHRlcm4gY29tcGxldGlvbiBtYXJrZXIKKworRWxlbWVudCBmbGFncyAo MSBieXRlLCBiaXRtYXNrKToKKworICAweDAxICBSUFJfRUxFTV9SRUxVQ1RBTlQgICAgICAgICAg KFZBUiwgQkVHSU4sIEVORCkKKyAgICAgICAgTm9uLWdyZWVkeSBxdWFudGlmaWVyLiAgUHJlZmVy cyBzaG9ydGVyIG1hdGNoOiB0cnkgZXhpdC1sb29wCisgICAgICAgIGZpcnN0LCB0aGVuIHJlcGVh dC4gIFNldCBvbiBWQVIgZm9yIHNpbXBsZSAoQSs/KSwKKyAgICAgICAgb24gQkVHSU4rRU5EIGZv ciBncm91cCAoKC4uLikrPykuCisKKyAgMHgwMiAgUlBSX0VMRU1fRU1QVFlfTE9PUCAgICAgICAg IChFTkQpCisgICAgICAgIEdyb3VwIGJvZHkgY2FuIHByb2R1Y2UgZW1wdHkgbWF0Y2ggKGFsbCBj aGlsZHJlbiBudWxsYWJsZSkuCisgICAgICAgIENyZWF0ZXMgYSBmYXN0LWZvcndhcmQgZXhpdCBj bG9uZSBhbG9uZ3NpZGUgdGhlIG5vcm1hbAorICAgICAgICBsb29wLWJhY2sgc28gY3ljbGUgZGV0 ZWN0aW9uIGRvZXNuJ3Qga2lsbCBsZWdpdGltYXRlCisgICAgICAgIG1hdGNoZXMuIChJVi00YikK KworICAweDA0ICBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSCAgKFZBUiwgQkVHSU4sIEVORCwg QUxUKQorICAgICAgICBFbGVtZW50IGxpZXMgd2l0aGluIGFuIGFic29yYmFibGUgcmVnaW9uLiAg VXNlZCBhdCBydW50aW1lIHRvCisgICAgICAgIHRyYWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgTkZB IHN0YXRlIGlzIGluIGFuIGFic29yYmFibGUKKyAgICAgICAgY29udGV4dC4gU2VlICJJVi01LiBB YnNvcmJhYmlsaXR5IEFuYWx5c2lzIiBhbmQKKyAgICAgICAgIlZJSUktMi4gU29sdXRpb246IENv bnRleHQgQWJzb3JwdGlvbiIgZm9yIG1vcmUgZGV0YWlscyBhYm91dAorICAgICAgICBhYnNvcnB0 aW9uLgorCisgIDB4MDggIFJQUl9FTEVNX0FCU09SQkFCTEUgICAgICAgICAoVkFSLCBFTkQpCisg ICAgICAgIEFic29ycHRpb24ganVkZ21lbnQgcG9pbnQuICBXaGVyZSB0byBjb21wYXJlIGNvbnNl Y3V0aXZlCisgICAgICAgIGl0ZXJhdGlvbnMgZm9yIGFic29ycHRpb24uCisgICAgICAgICAgLSBT aW1wbGUgdW5ib3VuZGVkIFZBUiAoQSspOiBzZXQgb24gdGhlIFZBUiBpdHNlbGYKKyAgICAgICAg ICAtIFVuYm91bmRlZCBHUk9VUCAoKEEgQikrKTogc2V0IG9uIHRoZSBFTkQgZWxlbWVudCBvbmx5 CisKKyAgQWNjZXNzb3IgbWFjcm9zOgorICAgIFJQUkVsZW1Jc1JlbHVjdGFudChlKSAgICAgICAg KGUpLT5mbGFncyAmIDB4MDEKKyAgICBSUFJFbGVtQ2FuRW1wdHlMb29wKGUpICAgICAgIChlKS0+ ZmxhZ3MgJiAweDAyCisgICAgUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlKSAoZSktPmZsYWdz ICYgMHgwNAorICAgIFJQUkVsZW1Jc0Fic29yYmFibGUoZSkgICAgICAgKGUpLT5mbGFncyAmIDB4 MDgKKworRXhhbXBsZTogUEFUVEVSTiAoQSsgQiB8IEMpCisKKyAgQVNUOiBBTFQoU0VRKFZBUihB LDEsSU5GKSwgVkFSKEIsMSwxKSksIFZBUihDLDEsMSkpCisKKyAgQ29tcGlsYXRpb24gcmVzdWx0 OgorCisgIGlkeCAgdmFySWQgIGRlcHRoICBtaW4gIG1heCAgbmV4dCAganVtcCAgRGVzY3JpcHRp b24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAwICAgQUxUICAgIDAgICAgICAxICAgIDEgICAgMSAgICAgLTEgICAgQWx0 ZXJuYXRpb24gc3RhcnQKKyAgIDEgICBBKDApICAgMSAgICAgIDEgICAgSU5GICAyICAgICAzICAg ICBCcmFuY2ggMTogQSsKKyAgIDIgICBCKDEpICAgMSAgICAgIDEgICAgMSAgICA0ICAgICAtMSAg ICBCcmFuY2ggMTogQiAtPiBGSU4KKyAgIDMgICBDKDIpICAgMSAgICAgIDEgICAgMSAgICA0ICAg ICAtMSAgICBCcmFuY2ggMjogQyAtPiBGSU4KKyAgIDQgICBGSU4gICAgMCAgICAgIDEgICAgMSAg ICAtMSAgICAtMSAgICBQYXR0ZXJuIGNvbXBsZXRpb24KKworICAtIGlkeCAwOiBBTFQgbWFya2Vy LiBuZXh0KD0xKSBpcyB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IGJyYW5jaAorICAtIGlkeCAxOiBW YXJpYWJsZSBBLiBuZXh0KD0yKSBpcyBCLCBqdW1wKD0zKSBpcyB0aGUgc3RhcnQgb2YgdGhlIHNl Y29uZAorICAgICAgICAgICBicmFuY2gKKyAgLSBpZHggMjogVmFyaWFibGUgQi4gbmV4dCg9NCkg aXMgRklOCisgIC0gaWR4IDM6IFZhcmlhYmxlIEMuIG5leHQoPTQpIGlzIEZJTgorICAtIGlkeCA0 OiBGSU4gbWFya2VyLiBNYXRjaCBjb21wbGV0aW9uIHNpZ25hbAorCitSb2xlcyBvZiBuZXh0IGFu ZCBqdW1wOgorCisgIC0gbmV4dDogVGhlIG5leHQgZWxlbWVudCB0byBtb3ZlIHRvICJhZnRlciBj b25zdW1pbmciIHRoZSBjdXJyZW50IGVsZW1lbnQuCisgICAgICAgICAgRm9yIFZBUiwgdGhlIG5l eHQgcG9zaXRpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsIG1hdGNoLgorICAgICAgICAgIEZvciBCRUdJ Ti9FTkQsIHRoZSBuZXh0IHBvc2l0aW9uIGluc2lkZS9vdXRzaWRlIHRoZSBncm91cC4KKworICAt IGp1bXA6IFRoZSBlbGVtZW50IHRvICJza2lwIHRvLiIKKyAgICAgICAgICBJbiBBTFQsIGEganVt cCBmcm9tIG9uZSBicmFuY2ggdG8gdGhlIG5leHQgYnJhbmNoLgorICAgICAgICAgIEluIEJFR0lO LCBhIHNraXAgcGF0aCB0byBFTkQrMSAoZm9yIGdyb3VwcyB3aXRoIG1pbj0wKS4KKyAgICAgICAg ICBJbiBFTkQsIGEgbG9vcC1iYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgZ3JvdXAgYm9keS4KKwor RXhhbXBsZTogUEFUVEVSTiAoKEEgQikrKQorCisgIGlkeCAgdmFySWQgICAgZGVwdGggIG1pbiAg bWF4ICBuZXh0ICBqdW1wICBEZXNjcmlwdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMCAgIEJFR0lOICAgIDAg ICAgICAxICAgIElORiAgMSAgICAgNCAgICAgR3JvdXAgc3RhcnQKKyAgIDEgICBBKDApICAgICAx ICAgICAgMSAgICAxICAgIDIgICAgIC0xICAgIEEKKyAgIDIgICBCKDEpICAgICAxICAgICAgMSAg ICAxICAgIDMgICAgIC0xICAgIEIKKyAgIDMgICBFTkQgICAgICAwICAgICAgMSAgICBJTkYgIDQg ICAgIDEgICAgIEdyb3VwIGVuZAorICAgNCAgIEZJTiAgICAgIDAgICAgICAxICAgIDEgICAgLTEg ICAgLTEgICAgUGF0dGVybiBjb21wbGV0aW9uCisKKyAgLSBpZHggMDogQkVHSU4uIG5leHQoPTEp IGVudGVycyB0aGUgZ3JvdXAgYm9keS4KKyAgICAgICAgICAganVtcCg9NCkgc2tpcHMgdG8gYWZ0 ZXIgRU5EID0gRklOICh1c2VkIHdoZW4gbWluPTApLgorICAtIGlkeCAzOiBFTkQuIG5leHQoPTQp IGV4aXRzIHRoZSBncm91cC4KKyAgICAgICAgICAganVtcCg9MSkgbG9vcHMgYmFjayB0byB0aGUg c3RhcnQgb2YgdGhlIGdyb3VwIGJvZHkuCisKK0lWLTRhLiBSZWx1Y3RhbnQgRmxhZyAoUlBSX0VM RU1fUkVMVUNUQU5UKQorCitUaGUgcmVsdWN0YW50IGZsYWcgaXMgc2V0IGR1cmluZyBQaGFzZSA0 IChmaWxsUlBSUGF0dGVybikgd2hlbiB0aGUgQVNUIG5vZGUKK2hhcyByZWx1Y3RhbnQgPT0gdHJ1 ZS4gSXQgcmV2ZXJzZXMgdGhlIHByaW9yaXR5IG9mIHF1YW50aWZpZXIgZXhwYW5zaW9uIGF0City dW50aW1lOgorCisgIEdyZWVkeSAoZGVmYXVsdCk6ICB0cnkgbG9vcC1iYWNrIGZpcnN0LCB0aGVu IGV4aXQgIChwcmVmZXIgbG9uZ2VyIG1hdGNoKQorICBSZWx1Y3RhbnQ6ICAgICAgICAgdHJ5IGV4 aXQgZmlyc3QsIHRoZW4gbG9vcC1iYWNrICAgKHByZWZlciBzaG9ydGVyIG1hdGNoKQorCitUaGUg ZmxhZyBpcyBzZXQgb24gYWxsIGVsZW1lbnRzIHRoYXQgY2FycnkgdGhlIHF1YW50aWZpZXI6CisK KyAgU2ltcGxlIFZBUiAoQSs/KTogICAgIFJQUl9FTEVNX1JFTFVDVEFOVCBvbiB0aGUgVkFSIGVs ZW1lbnQKKyAgR3JvdXAgKCguLi4pKz8pOiAgICAgIFJQUl9FTEVNX1JFTFVDVEFOVCBvbiBCRUdJ TiBhbmQgRU5EIGVsZW1lbnRzCisKK0F0IHJ1bnRpbWUgKG5mYV9hZHZhbmNlKSwgdGhlIGZsYWcg Y29udHJvbHMgRGVwdGgtRmlyc3QgU2VhcmNoCisoREZTKSBleHBsb3JhdGlvbiBvcmRlcjoKKwor ICBWQVIgd2l0aCBxdWFudGlmaWVyOgorICAgIEdyZWVkeTogICAgcHJpbWFyeSBwYXRoID0gbmV4 dCAoY29udGludWUpLCBjbG9uZSA9IGp1bXAgKHNraXApCisgICAgUmVsdWN0YW50OiBwcmltYXJ5 IHBhdGggPSBqdW1wIChza2lwKSwgY2xvbmUgPSBuZXh0IChjb250aW51ZSkKKworICBFTkQgZWxl bWVudDoKKyAgICBHcmVlZHk6ICAgIHByaW1hcnkgcGF0aCA9IGp1bXAgKGxvb3AtYmFjayksIGNs b25lID0gbmV4dCAoZXhpdCkKKyAgICBSZWx1Y3RhbnQ6IHByaW1hcnkgcGF0aCA9IG5leHQgKGV4 aXQpLCBjbG9uZSA9IGp1bXAgKGxvb3AtYmFjaykKKworICBCRUdJTiB3aXRoIG1pbj0wOgorICAg IEdyZWVkeTogICAgcHJpbWFyeSBwYXRoID0gbmV4dCAoZW50ZXIgZ3JvdXApLCBjbG9uZSA9IGp1 bXAgKHNraXApCisgICAgUmVsdWN0YW50OiBwcmltYXJ5IHBhdGggPSBqdW1wIChza2lwKSwgY2xv bmUgPSBuZXh0IChlbnRlciBncm91cCkKKworVGhlIGFic29ycHRpb24gb3B0aW1pemF0aW9uIHJl cXVpcmVzIGdyZWVkeSBxdWFudGlmaWVycy4gUmVsdWN0YW50CitxdWFudGlmaWVycyBhcmUgZXhj bHVkZWQgZnJvbSBhYnNvcmJhYmlsaXR5IGFuYWx5c2lzIChzZWUgSVYtNSkuCisKK0lWLTRiLiBF bXB0eSBMb29wIEZsYWcgKFJQUl9FTEVNX0VNUFRZX0xPT1ApCisKK1RoZSBlbXB0eS1sb29wIGZs YWcgaXMgc2V0IGR1cmluZyBQaGFzZSA0IChmaWxsUlBSUGF0dGVybkdyb3VwKSBvbiB0aGUgRU5E CitlbGVtZW50IHdoZW4gdGhlIGdyb3VwIGJvZHkgaXMgbnVsbGFibGUgLS0gaS5lLiwgZXZlcnkg cGF0aCB0aHJvdWdoIHRoZQorYm9keSBjYW4gbWF0Y2ggemVybyByb3dzIChhbGwgY2hpbGRyZW4g YXJlIG51bGxhYmxlKS4KKworRXhhbXBsZSBwYXR0ZXJucyB0aGF0IHRyaWdnZXIgdGhpcyBmbGFn OgorCisgIChBPykqICAgIEEgaXMgbnVsbGFibGUgKG1pbj0wKSwgc28gZ3JvdXAgYm9keSBpcyBu dWxsYWJsZSAtPiBFTkQgZ2V0cyBmbGFnCisgIChBPyBCPykrIEJvdGggY2hpbGRyZW4gbnVsbGFi bGUgLT4gYm9keSBudWxsYWJsZSAtPiBFTkQgZ2V0cyBmbGFnCisgIChBIHwgQiopIEIqIGlzIG51 bGxhYmxlLCBtYWtpbmcgdGhlIEFMVCBudWxsYWJsZSAtPiBFTkQgZ2V0cyBmbGFnCisKK1RoZSBm bGFnIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGVtcHR5IG1hdGNoIGN5Y2xlIGRldGVj dGlvbgorKGVsZW1JZHggdmlzaXRlZCBiaXRtYXApLiBXaXRob3V0IHRoaXMgZmxhZywgY3ljbGUg ZGV0ZWN0aW9uIGFsb25lIHdvdWxkCitjYXVzZSBsZWdpdGltYXRlIG1hdGNoZXMgdG8gZmFpbC4K KworUHJvYmxlbSBleGFtcGxlOiAoQSopezIsM30KKyAgLSBJdGVyYXRpb24gMTogQSogY29uc3Vt ZXMgYWxsIGF2YWlsYWJsZSByb3dzIC0+IGNvdW50PTEsIEVORCByZWFjaGVkCisgIC0gTG9vcC1i YWNrIGZvciBpdGVyYXRpb24gMjogQSogbWF0Y2hlcyB6ZXJvIHJvd3MgLT4gRU5EIHJlYWNoZWQg YWdhaW4KKyAgLSBDeWNsZSBkZXRlY3Rpb24gc2VlcyB0aGUgc2FtZSBlbGVtSWR4IG9uIHRoZSBz YW1lIHJvdyAtPiBzdGF0ZSBraWxsZWQKKyAgLSBjb3VudCBuZXZlciByZWFjaGVzIG1pbigyKSAt PiBtYXRjaCBmYWlscyAoaW5jb3JyZWN0KQorCitXaXRoIHRoZSBSUFJfRUxFTV9FTVBUWV9MT09Q IGZsYWcsIG5mYV9hZHZhbmNlX2VuZCBjcmVhdGVzIHR3byBwYXRoczoKK3RoZSBub3JtYWwgbG9v cC1iYWNrICh3aGljaCBjeWNsZSBkZXRlY3Rpb24gd2lsbCBldmVudHVhbGx5IGtpbGwpIGFuZAor YSBmYXN0LWZvcndhcmQgZXhpdCBjbG9uZSB0aGF0IGJ5cGFzc2VzIHRoZSBsb29wIGVudGlyZWx5 LgorKFNlZSBJWC00KGMpIGZvciBkZXRhaWxlZCBydW50aW1lIGJlaGF2aW9yLikKKworSVYtNS4g QWJzb3JiYWJpbGl0eSBBbmFseXNpcyAoUlBSX0VMRU1fQUJTT1JCQUJMRSkKKworQ29udGV4dCBh YnNvcnB0aW9uIGlzIGFuIG9wdGltaXphdGlvbiB0ZWNobmlxdWUgdGhhdCByZWR1Y2VzIE8obl4y KSB0byBPKG4pLgorKFJ1bnRpbWUgYmVoYXZpb3IgaXMgZGVzY3JpYmVkIGluIENoYXB0ZXIgVklJ SS4pCisKK1RoaXMgcGhhc2UgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXR0ZXJuIGhhcyBhIHN0 cnVjdHVyZSBzdWl0YWJsZSBmb3IgdGhlCithYnNvcnB0aW9uIG9wdGltaXphdGlvbiBhbmQgc2V0 cyBmbGFncyBvbiB0aGUgcmVsZXZhbnQgZWxlbWVudHM6CisKKyAgUlBSX0VMRU1fQUJTT1JCQUJM RSAgICAgICAgIEFic29ycHRpb24gY29tcGFyaXNvbiBwb2ludAorICBSUFJfRUxFTV9BQlNPUkJB QkxFX0JSQU5DSCAgRWxlbWVudCB3aXRoaW4gYW4gYWJzb3JiYWJsZSByZWdpb24KKworRWxpZ2li aWxpdHkgY29uZGl0aW9uczoKKworICAoMSkgU0tJUCBQQVNUIExBU1QgUk9XIChub3QgTkVYVCBS T1cpCisgICgyKSBGcmFtZSBlbmQgaXMgVU5CT1VOREVEIEZPTExPV0lORworCitTdHJ1Y3R1cmFs IGNvbmRpdGlvbnMgKGlzVW5ib3VuZGVkU3RhcnQgKyBjb21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vy c2l2ZSk6CisKKyAgQ2FzZSAxOiBTaW1wbGUgVkFSKyAoZS5nLiwgQSspCisgICAgICAgICAgLT4g QUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIIHNldCBvbiB0aGUgVkFSCisgIENhc2UgMjog R1JPVVArIHdpdGggZml4ZWQtbGVuZ3RoIGNoaWxkcmVuIChtaW4gPT0gbWF4LCByZWN1cnNpdmVs eSkKKyAgICAgICAgICBlLmcuLCAoQSBCKSssIChBIEJ7Mn0pKywgKChBIChCIEMpezJ9KXsyfSkr CisgICAgICAgICAgLT4gQUJTT1JCQUJMRV9CUkFOQ0ggb24gYWxsIGVsZW1lbnRzIHdpdGhpbiB0 aGUgZ3JvdXAsCisgICAgICAgICAgICAgQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIIG9u IEVORAorCisgICAgICAgICAgV2h5IHRoaXMgaXMgc2FmZTogd2hlbiBldmVyeSBjaGlsZCBoYXMg bWluID09IG1heCwgdGhlIGdyb3VwCisgICAgICAgICAgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxl bnQgdG8gdW5yb2xsaW5nIGl0cyBib2R5IGludG8gezEsMX0KKyAgICAgICAgICBlbGVtZW50cy4g IEUuZy4sIChBIEJ7Mn0pKyBiZWhhdmVzIGxpa2UgKEEgQiBCKSsuICBFYWNoCisgICAgICAgICAg aXRlcmF0aW9uIGNvbnN1bWVzIGEgZml4ZWQgbnVtYmVyIG9mIHJvd3MsIHNvIGFuIGVhcmxpZXIK KyAgICAgICAgICBjb250ZXh0J3MgY291bnQgYWx3YXlzIGRvbWluYXRlcyBhIGxhdGVyIG9uZSdz IChtb25vdG9uaWNpdHkpLgorCisgIENhc2UgMzogR1JPVVArIHdob3NlIGJvZHkgc3RhcnRzIHdp dGggVkFSKyAoZS5nLiwgKEErIEIpKykKKyAgICAgICAgICAtPiBSZWN1cnNlcyBmcm9tIEJFR0lO IGludG8gdGhlIGJvZHksIGFwcGx5aW5nIENhc2UgMS4KKyAgICAgICAgICAgIEFCU09SQkFCTEUg fCBBQlNPUkJBQkxFX0JSQU5DSCBzZXQgb24gQS4KKyAgICAgICAgICAgIEIgYW5kIEVORCBnZXQg bm8gZmxhZ3MgLT4gYWJzb3JwdGlvbiBzdG9wcyBvbmNlIHBhc3QgQS4KKworQWJzb3JiYWJpbGl0 eSBpcyBkZXRlcm1pbmVkIHBlci1lbGVtZW50LCBub3QgcGVyLXBhdHRlcm4uCitBYnNvcnB0aW9u IGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIG9ubHkgd2hlbiBhIHN0YXRlIHJlc2lkZXMgYXQgYW4K K2VsZW1lbnQgd2l0aCB0aGUgUlBSX0VMRU1fQUJTT1JCQUJMRSBmbGFnLiBPbmNlIGEgc3RhdGUg bGVhdmVzIHRoZQorZmxhZ2dlZCByZWdpb24sIGFic29ycHRpb24gaXMgcGVybWFuZW50bHkgZGlz YWJsZWQgZm9yIHRoYXQgc3RhdGUuCisKK1Rocm91Z2ggdGhpcyBtZWNoYW5pc20sIHRoZSBydW50 aW1lIGd1YXJhbnRlZXMgbW9ub3RvbmljaXR5OgorImEgY29udGV4dCB0aGF0IHN0YXJ0ZWQgZWFy bGllciBhbHdheXMgc3Vic3VtZXMgYSBjb250ZXh0IHRoYXQKK3N0YXJ0ZWQgbGF0ZXIuIgorCitD aGFwdGVyIFYgIE5GQSBSdW50aW1lIERhdGEgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCitWLTEuIFJQUk5GQVN0YXRlIC0tIE5GQSBTdGF0ZQorCitBIHNpbmdsZSBORkEgc3RhdGUg cmVwcmVzZW50cyAiaG93IGZhciB0aGUgcGF0dGVybiBoYXMgcHJvZ3Jlc3NlZC4iCisKKyAgRmll bGQgICAgICAgICBEZXNjcmlwdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBlbGVtSWR4ICAgICAgIEluZGV4IG9mIHRo ZSBjdXJyZW50IHBhdHRlcm4gZWxlbWVudAorICBjb3VudHNbXSAgICAgIFJlcGV0aXRpb24gY291 bnQgcGVyIGdyb3VwIGRlcHRoCisgIGlzQWJzb3JiYWJsZSAgV2hldGhlciB0aGUgc3RhdGUgaXMg aW4gYW4gYWJzb3JiYWJsZSByZWdpb24KKyAgbmV4dCAgICAgICAgICBOZXh0IHN0YXRlIGluIHRo ZSBsaW5rZWQgbGlzdAorCitUaGUgc2l6ZSBvZiB0aGUgY291bnRzIGFycmF5IGlzIHJwUGF0dGVy bi0+bWF4RGVwdGggKD0gbWF4aW11bSBncm91cAorbmVzdGluZyBkZXB0aCArIDEpLCBhbGxvY2F0 ZWQgYXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgYXQgdGhlIGVuZCBvZgordGhlIHN0cnVjdC4K KworRXhhbXBsZTogSW4gUEFUVEVSTiAoKEEgQikrIEMpLCBhIHN0YXRlIHdhaXRpbmcgZm9yIEIg aW4gdGhlIDNyZCBpdGVyYXRpb24KKworICBFbGVtZW50IGFycmF5OiBbMDpCRUdJTihkMCkgMTpB KGQxKSAyOkIoZDEpIDM6RU5EKGQwKSA0OkMoZDApIDU6RklOXQorCisgIGVsZW1JZHggPSAyIChC LCBkZXB0aCAxKQorICBjb3VudHNbMF0gPSAyIChkZXB0aCAwOiBkZXB0aCBvZiBFTkQuIEdyb3Vw IGNvbXBsZXRlZCAyIGl0ZXJhdGlvbnMpCisgIGNvdW50c1sxXSA9IDEgKGRlcHRoIDE6IGRlcHRo IG9mIEIuIEEgbWF0Y2hlZCBpbiBjdXJyZW50IGl0ZXJhdGlvbikKKworICBDb3VudHMgYXJlIGlu ZGV4ZWQgYnkgZGVwdGgsIG5vdCBieSBlbGVtSWR4LgorICBjb3VudHNbMF0gaXMgaW5jcmVtZW50 ZWQgd2hlbiBwYXNzaW5nIHRocm91Z2ggRU5EKGRlcHRoIDApLAorICBhbmQgdGhlIGdyb3VwIHJl cGV0aXRpb24gY291bnQgaXMgcHJlc2VydmVkIGV2ZW4gd2hlbgorICB0aGUgc3RhdGUgaXMgYXQg QihkZXB0aCAxKS4KKworRGVmaW5pdGlvbiBvZiB0d28gc3RhdGVzIGJlaW5nICJlcXVhbCI6CisK KyAgVHdvIHN0YXRlcyBhcmUgZXF1YWwgaWYgdGhleSBoYXZlIHRoZSBzYW1lIGVsZW1JZHggYW5k IHRoZSBzYW1lIGNvdW50cworICB1cCB0byB0aGUgZGVwdGggb2YgdGhhdCBlbGVtZW50LgorICBu ZmFfc3RhdGVzX2VxdWFsKCkgY29tcGFyZXMgY291bnRzWzAuLmVsZW0tPmRlcHRoXSB1c2luZyBt ZW1jbXAuCisgIE9ubHkgY291bnRzIGF0IG9yIGJlbG93IHRoZSBkZXB0aCBvZiB0aGUgY3VycmVu dCBlbGVtZW50IGFyZSBtZWFuaW5nZnVsLgorCitWLTIuIFJQUk5GQUNvbnRleHQgLS0gTWF0Y2hp bmcgQ29udGV4dAorCitBIHNpbmdsZSBjb250ZXh0IHJlcHJlc2VudHMgImEgbWF0Y2hpbmcgYXR0 ZW1wdCBzdGFydGVkIGZyb20gYSBzcGVjaWZpYworc3RhcnQgcm93LiIKKworICBGaWVsZCAgICAg ICAgICAgICAgICAgRGVzY3JpcHRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHN0YXRlcyAgICAgICAg ICAgICAgICBMaW5rZWQgbGlzdCBvZiBhY3RpdmUgTkZBIHN0YXRlcworICBtYXRjaFN0YXJ0Um93 ICAgICAgICAgUm93IG51bWJlciB3aGVyZSBtYXRjaGluZyBzdGFydGVkCisgIG1hdGNoRW5kUm93 ICAgICAgICAgICBSb3cgbnVtYmVyIHdoZXJlIG1hdGNoaW5nIGNvbXBsZXRlZAorICAgICAgICAg ICAgICAgICAgICAgICAgKC0xIGlmIGluY29tcGxldGUpCisgIGxhc3RQcm9jZXNzZWRSb3cgICAg ICBMYXN0IHJvdyBwcm9jZXNzZWQKKyAgbWF0Y2hlZFN0YXRlICAgICAgICAgIFN0YXRlIHRoYXQg cmVhY2hlZCBGSU4gKGZvciBncmVlZHkgZmFsbGJhY2spCisgIGhhc0Fic29yYmFibGVTdGF0ZSAg ICBXaGV0aGVyIHRoaXMgY29udGV4dCBjYW4gYWJzb3JiIG90aGVyIGNvbnRleHRzCisgIGFsbFN0 YXRlc0Fic29yYmFibGUgICBXaGV0aGVyIHRoaXMgY29udGV4dCBjYW4gYmUgYWJzb3JiZWQKKyAg bmV4dCwgcHJldiAgICAgICAgICAgIERvdWJseS1saW5rZWQgbGlzdAorCitTaW5jZSB0aGUgTkZB IGlzIG5vbmRldGVybWluaXN0aWMsIG11bHRpcGxlIHN0YXRlcyBjYW4gY29leGlzdAorc2ltdWx0 YW5lb3VzbHkgd2l0aGluIGEgc2luZ2xlIGNvbnRleHQuCisKK0V4YW1wbGU6IEluIFBBVFRFUk4g KEEgfCBCKSBDLCBpZiB0aGUgZmlyc3Qgcm93IG1hdGNoZXMgYm90aCBBIGFuZCBCLAordHdvIHN0 YXRlcyBjb2V4aXN0IHdpdGhpbiB0aGUgY29udGV4dDoKKworICBTdGF0ZSAxOiBlbGVtSWR4PTMg KHdhaXRpbmcgZm9yIEMsIHZpYSBicmFuY2ggQSkKKyAgU3RhdGUgMjogZWxlbUlkeD0zICh3YWl0 aW5nIGZvciBDLCB2aWEgYnJhbmNoIEIpCisKK0luIHRoaXMgY2FzZSwgc2luY2UgdGhlIChlbGVt SWR4LCBjb3VudHMpIG9mIHRoZSB0d28gc3RhdGVzIGFyZSBlcXVhbCwKK25mYV9hZGRfc3RhdGVf dW5pcXVlKCkgcmV0YWlucyBvbmx5IFN0YXRlIDEgKGJyYW5jaCBBKSwgd2hpY2ggd2FzCithZGRl ZCBmaXJzdC4KK0JlY2F1c2UgREZTIHByb2Nlc3NlcyB0aGUgZmlyc3QgYnJhbmNoIG9mIEFMVCBm aXJzdCwgdGhlIHN0YXRlIHZpYSBBCitpcyByZWdpc3RlcmVkIGZpcnN0LCBhbmQgdGhlIHN0YXRl IHZpYSBCIGlzIGRpc2NhcmRlZCBhcyBhIGR1cGxpY2F0ZS4KK1RoaXMgaXMgdGhlIHByZWZlcm1l bnQgZ3VhcmFudGVlLgorCitWLTMuIFJQUiBGaWVsZHMgb2YgV2luZG93QWdnU3RhdGUKKworICBu ZmFDb250ZXh0IC8gbmZhQ29udGV4dFRhaWwgICBEb3VibHktbGlua2VkIGxpc3Qgb2YgYWN0aXZl IGNvbnRleHRzCisgIG5mYUNvbnRleHRGcmVlICAgICAgICAgICAgICAgIFJldXNlIHBvb2wgZm9y IGNvbnRleHRzCisgIG5mYVN0YXRlRnJlZSAgICAgICAgICAgICAgICAgIFJldXNlIHBvb2wgZm9y IHN0YXRlcworICBuZmFWYXJNYXRjaGVkICAgICAgICAgICAgICAgICBQZXItcm93IGNhY2hlOiB2 YXJNYXRjaGVkW3ZhcklkXQorICBuZmFWaXNpdGVkRWxlbXMgICAgICAgICAgICAgICBCaXRtYXAg Zm9yIGN5Y2xlIGRldGVjdGlvbgorICBuZmFWaXNpdGVkTWluV29yZCAgICAgICAgICAgICBMb3dl c3QgYml0bWFwd29yZCBpbmRleCB0b3VjaGVkIHNpbmNlIGxhc3QgcmVzZXQKKyAgbmZhVmlzaXRl ZE1heFdvcmQgICAgICAgICAgICAgSGlnaGVzdCBiaXRtYXB3b3JkIGluZGV4IHRvdWNoZWQgc2lu Y2UgbGFzdCByZXNldAorICBuZmFTdGF0ZVNpemUgICAgICAgICAgICAgICAgICBQcmVjb21wdXRl ZCBzaXplIG9mIFJQUk5GQVN0YXRlCisgIGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQgICAgIERF RklORSB2YXJzIG5lZWRpbmcgcGVyLWNvbnRleHQgZXZhbHVhdGlvbiAobWF0Y2hfc3RhcnRfZGVw ZW5kZW50KQorICBuZmFMYXN0UHJvY2Vzc2VkUm93ICAgICAgICAgICBMYXN0IHJvdyBwcm9jZXNz ZWQgYnkgTkZBICgtMSA9IG5vbmUpCisKKyAgRVhQTEFJTiBBTkFMWVpFIGluc3RydW1lbnRhdGlv biBjb3VudGVycyBhcmUgb21pdHRlZCBoZXJlOyBzZWUKKyAgZXhlY25vZGVzLmggZm9yIHRoZSBm dWxsIGxpc3QuCisKK01lbW9yeSBtYW5hZ2VtZW50OgorCisgIFN0YXRlcyBhbmQgY29udGV4dHMg YXJlIG1hbmFnZWQgdGhyb3VnaCB0aGVpciBvd24gZnJlZSBsaXN0cy4KKyAgSW5zdGVhZCBvZiBw YWxsb2MsIHRoZXkgYXJlIG9idGFpbmVkIGZyb20gdGhlIHJldXNlIHBvb2wsIGFuZAorICByZXR1 cm5lZCB0byB0aGUgcG9vbCB1cG9uIGRlYWxsb2NhdGlvbi4KKyAgVGhpcyByZWR1Y2VzIHRoZSBv dmVyaGVhZCBvZiBmcmVxdWVudCBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbi4KKworQ2hhcHRlciBW SSAgTkZBIEV4ZWN1dGlvbjogMy1QaGFzZSBNb2RlbAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitW SS0xLiBFbnRyeSBQb2ludCBhbmQgT3ZlcmFsbCBGbG93CisKK1doZW4gdGhlIHdpbmRvdyBmdW5j dGlvbiBwcm9jZXNzZXMgZWFjaCByb3csIHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKCkKK2lzIGNh bGxlZC4gVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcm93IGJl bG9uZ3MgdG8KK2EgbWF0Y2hlZCBmcmFtZSwgYW5kIGlmIG5lY2Vzc2FyeSwgY2FsbHMgdXBkYXRl X3JlZHVjZWRfZnJhbWUoKSB0bworZHJpdmUgdGhlIE5GQS4KKworRmxvdyBvZiB1cGRhdGVfcmVk dWNlZF9mcmFtZSgpOgorCisgICgxKSBGaW5kIG9yIGNyZWF0ZSBhIGNvbnRleHQgZm9yIHRoZSB0 YXJnZXQgcm93CisgICgyKSBFbnRlciB0aGUgcm93IHByb2Nlc3NpbmcgbG9vcAorICAoMykgQWZ0 ZXIgdGhlIGxvb3AgZW5kcywgcmVjb3JkIHRoZSBtYXRjaCByZXN1bHQKKworUHNldWRvY29kZSBv ZiB0aGUgcm93IHByb2Nlc3NpbmcgbG9vcDoKKworICB0YXJnZXRDdHggPSBFeGVjUlBSR2V0SGVh ZENvbnRleHQocG9zKQorICBpZiB0YXJnZXRDdHggPT0gTlVMTDoKKyAgICAgIHRhcmdldEN0eCA9 IEV4ZWNSUFJTdGFydENvbnRleHQocG9zKQorCisgIGZvciBjdXJyZW50UG9zID0gc3RhcnRQb3M7 IHRhcmdldEN0eC0+c3RhdGVzICE9IE5VTEw7IGN1cnJlbnRQb3MrKzoKKyAgICAgIGlmIG5vdCBu ZmFfZXZhbHVhdGVfcm93KGN1cnJlbnRQb3MpOiAgLS0gcm93IGRvZXMgbm90IGV4aXN0CisgICAg ICAgICAgRXhlY1JQUkZpbmFsaXplQWxsQ29udGV4dHMoKSAgICAgIC0tIGZpbmFsaXplIGFsbCBj b250ZXh0cworICAgICAgICAgIEV4ZWNSUFJDbGVhbnVwRGVhZENvbnRleHRzKCkgICAgICAtLSBj bGVhbiB1cCBhZnRlciBmaW5hbGl6YXRpb24KKyAgICAgICAgICBicmVhaworCisgICAgICBFeGVj UlBSUHJvY2Vzc1JvdyhjdXJyZW50UG9zKSAgICAgICAgIC0tIDMtcGhhc2UgcHJvY2Vzc2luZwor ICAgICAgRXhlY1JQUlN0YXJ0Q29udGV4dChjdXJyZW50UG9zICsgMSkgICAtLSBwcmUtY3JlYXRl IG5leHQgc3RhcnQgcG9pbnQKKyAgICAgIEV4ZWNSUFJDbGVhbnVwRGVhZENvbnRleHRzKCkgICAg ICAgICAgLS0gcmVtb3ZlIGRlYWQgY29udGV4dHMKKworS2V5IHBvaW50OiBQcm9jZXNzaW5nIGEg c2luZ2xlIHJvdyBtYXkgcmVxdWlyZSBwcm9jZXNzaW5nIG11bHRpcGxlIHJvd3MKK2FoZWFkLiBE dWUgdG8gdGhlIG5hdHVyZSBvZiB3aW5kb3cgZnVuY3Rpb25zLCBkZXRlcm1pbmluZyB0aGUgZnJh bWUgZm9yCityb3cgTiByZXF1aXJlcyBsb29raW5nIGF0IHJvd3MgYmV5b25kIE4uCisKK1ZJLTIu IENvbnRleHQgQ3JlYXRpb246IEV4ZWNSUFJTdGFydENvbnRleHQoKQorCitDcmVhdGVzIGEgbmV3 IGNvbnRleHQgYW5kIHBlcmZvcm1zIHRoZSBpbml0aWFsIGFkdmFuY2UuCisKKyAgKDEpIEFsbG9j YXRlIGNvbnRleHQgdmlhIG5mYV9jb250ZXh0X21ha2UoKQorICAoMikgU2V0IG1hdGNoU3RhcnRS b3cgPSBwb3MKKyAgKDMpIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBlbGVtSWR4PTAgKGZpcnN0IHBh dHRlcm4gZWxlbWVudCksCisgICAgICBjb3VudHM9YWxsIHplcm8KKyAgKDQpIENhbGwgbmZhX2Fk dmFuY2UoKSB3aXRoIGN1cnJlbnRQb3MgPSBwb3MgLSAxIChubyByb3cgY29uc3VtZWQKKyAgICAg IHlldCkKKworVGhlIGluaXRpYWwgYWR2YW5jZSBleHBhbmRzIGVwc2lsb24gdHJhbnNpdGlvbnMg YXQgdGhlIGJlZ2lubmluZyBvZgordGhlIHBhdHRlcm4uIEZvciBleGFtcGxlLCB0aGUgaW5pdGlh bCBhZHZhbmNlIGZvciBQQVRURVJOICgoQSB8IEIpIEMpOgorCisgIFN0YXJ0OiBlbGVtSWR4PTAg KEFMVCkKKyAgICAtPiBFeHBhbmQgQUxUIGJyYW5jaGVzCisgICAgICAtPiBlbGVtSWR4PTEgKEEp IC0tIFZBUiwgc28gYWRkIHN0YXRlOyBzdG9wIGhlcmUKKyAgICAgIC0+IGVsZW1JZHg9MiAoQikg LS0gVkFSLCBzbyBhZGQgc3RhdGU7IHN0b3AgaGVyZQorCisgIFJlc3VsdDogVHdvIHN0YXRlcyBp biB0aGUgY29udGV4dCB7d2FpdGluZyBmb3IgQSwgd2FpdGluZyBmb3IgQn0KKworRHVyaW5nIHRo ZSBpbml0aWFsIGFkdmFuY2UsIHJlYWNoaW5nIEZJTiBpcyBub3QgcmVjb3JkZWQgYXMgYSBtYXRj aC4KK1RoaXMgaXMgdG8gcHJldmVudCBlbXB0eSBtYXRjaGVzLgorCitWSS0zLiBSb3cgRXZhbHVh dGlvbjogbmZhX2V2YWx1YXRlX3JvdygpCisKK0V2YWx1YXRlcyBhbGwgdmFyaWFibGUgY29uZGl0 aW9ucyBpbiB0aGUgREVGSU5FIGNsYXVzZSBhdCBvbmNlIGZvcgordGhlIGN1cnJlbnQgcm93Lgor CisgIGZvciBlYWNoIGRlZmluZUNsYXVzZVtpXToKKyAgICAgIHJlc3VsdCA9IEV4ZWNFdmFsRXhw cihkZWZpbmVDbGF1c2VbaV0pCisgICAgICB2YXJNYXRjaGVkW2ldID0gKG5vdCBudWxsIGFuZCB0 cnVlKQorCitUbyBzdXBwb3J0IHJvdyBuYXZpZ2F0aW9uIG9wZXJhdG9ycyAoUFJFViwgTkVYVCwg RklSU1QsIExBU1QpLAorYSAxLXNsb3QgbW9kZWwgaXMgdXNlZDogb25seSBlY3h0X291dGVydHVw bGUgaXMgc2V0IHRvIHRoZSBjdXJyZW50Cityb3cuICBOYXZpZ2F0aW9uIGlzIGhhbmRsZWQgYnkg RUVPUF9SUFJfTkFWX1NFVC9SRVNUT1JFIG9wY29kZXMKK2VtaXR0ZWQgZHVyaW5nIERFRklORSBl eHByZXNzaW9uIGNvbXBpbGF0aW9uOgorCisgIE5BVl9TRVQ6ICAgICBzYXZlIGVjeHRfb3V0ZXJ0 dXBsZSwgc3dhcCBpbiB0YXJnZXQgcm93IHZpYSBuYXZfc2xvdAorICAoZXZhbHVhdGUpOiAgYXJn dW1lbnQgZXhwcmVzc2lvbiByZWFkcyBmcm9tIHN3YXBwZWQgc2xvdAorICBOQVZfUkVTVE9SRTog cmVzdG9yZSBvcmlnaW5hbCBlY3h0X291dGVydHVwbGUKKworQ29tcG91bmQgbmF2aWdhdGlvbiAo UFJFVihGSVJTVCgpKSwgTkVYVChGSVJTVCgpKSwgUFJFVihMQVNUKCkpLAorTkVYVChMQVNUKCkp KSBpcyBmbGF0dGVuZWQgYnkgdGhlIHBhcnNlciBpbnRvIGEgc2luZ2xlIFJQUk5hdkV4cHIKK3dp dGggYSBjb21wb3VuZCBraW5kIChSUFJfTkFWX1BSRVZfRklSU1QsIGV0Yy4pLiAgVGhlIGV4ZWN1 dG9yCitjb21wdXRlcyB0aGUgdGFyZ2V0IHBvc2l0aW9uIGluIHR3byBzdGVwczogZmlyc3QgdGhl IGlubmVyIHJlZmVyZW5jZQorcG9pbnQgKG1hdGNoX3N0YXJ0ICsgTiBvciBjdXJyZW50cG9zIC0g Tikgd2l0aCBtYXRjaC1yYW5nZSB2YWxpZGF0aW9uLAordGhlbiB0aGUgb3V0ZXIgYWRqdXN0bWVu dCAoKy8tIE0pIHdpdGggcGFydGl0aW9uLXJhbmdlIHZhbGlkYXRpb24uCitJZiBlaXRoZXIgc3Rl cCBpcyBvdXQgb2YgcmFuZ2UsIHRoZSByZXN1bHQgaXMgTlVMTC4KKworbmF2X3Nsb3QgY2FjaGVz IHRoZSBsYXN0IGZldGNoZWQgcG9zaXRpb24gKG5hdl9zbG90X3BvcykgdG8gYXZvaWQKK3JlZHVu ZGFudCB0dXBsZXN0b3JlIGxvb2t1cHMgd2hlbiBtdWx0aXBsZSBuYXZpZ2F0aW9uIGNhbGxzIHRh cmdldAordGhlIHNhbWUgcm93LgorCitUaGUgdmFyTWF0Y2hlZCBhcnJheSBpcyByZWZlcmVuY2Vk IGxhdGVyIGluIFBoYXNlIDEgKE1hdGNoKS4KKworVkktNC4gUGVyLUNvbnRleHQgUmUtZXZhbHVh dGlvbiAobWF0Y2hfc3RhcnRfZGVwZW5kZW50IHZhcmlhYmxlcykKKworREVGSU5FIHZhcmlhYmxl cyB0aGF0IGRlcGVuZCBvbiBtYXRjaF9zdGFydCAodGhvc2UgY29udGFpbmluZyBGSVJTVCwKK0xB U1Qtd2l0aC1vZmZzZXQsIG9yIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVC9QUkVWX0xB U1QvTkVYVF9MQVNUKQorYXJlIGlkZW50aWZpZWQgYXQgcGxhbiB0aW1lIHZpYSBkZWZpbmVNYXRj aFN0YXJ0RGVwZW5kZW50LiAgVGhlIHNoYXJlZAorZXZhbHVhdGlvbiBpbiBuZmFfZXZhbHVhdGVf cm93KCkgdXNlcyB0aGUgaGVhZCBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdworZm9yIEZJUlNUL0xB U1QgYmFzZSBwb3NpdGlvbi4KKworV2hlbiBwcm9jZXNzaW5nIGEgY29udGV4dCB3aG9zZSBtYXRj aFN0YXJ0Um93IGRpZmZlcnMgZnJvbSB0aGUgc2hhcmVkCit2YWx1ZSwgbmZhX3JlZXZhbHVhdGVf ZGVwZW5kZW50X3ZhcnMoKSB0ZW1wb3JhcmlseSBzZXRzIG5hdl9tYXRjaF9zdGFydAordG8gdGhh dCBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdyBhbmQgcmUtZXZhbHVhdGVzIG9ubHkgdGhlIGRlcGVu ZGVudAordmFyaWFibGVzLiAgVGhlIG9yaWdpbmFsIG5hdl9tYXRjaF9zdGFydCBhbmQgY3VycmVu dHBvcyBhcmUgc2F2ZWQgYW5kCityZXN0b3JlZCBhZnRlciByZS1ldmFsdWF0aW9uLgorCitTdW1t YXJ5IG9mIGV2YWx1YXRpb24gc3RyYXRlZ3kgYnkgbmF2aWdhdGlvbiBjb250ZW50OgorCisgIE5h dmlnYXRpb24gY29udGVudCAgICAgICAgICAgICAgIGV2YWx1YXRpb24KKyAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBObyBuYXZpZ2F0 aW9uICAgICAgICAgICAgICAgICAgICBzaGFyZWQgKG9uY2UgcGVyIHJvdykKKyAgUFJFVi9ORVhU IG9ubHkgICAgICAgICAgICAgICAgICAgc2hhcmVkIChvbmNlIHBlciByb3cpCisgIExBU1QgKG5v IG9mZnNldCkgICAgICAgICAgICAgICAgIHNoYXJlZCAob25jZSBwZXIgcm93KQorICBMQVNUICh3 aXRoIG9mZnNldCkgICAgICAgICAgICAgICBwZXItY29udGV4dAorICBGSVJTVCAoYW55KSAgICAg ICAgICAgICAgICAgICAgICBwZXItY29udGV4dAorICBDb21wb3VuZCAoaW5uZXIgRklSU1QpICAg ICAgICAgICBwZXItY29udGV4dAorICBDb21wb3VuZCAoaW5uZXIgTEFTVCwgbm8gb2ZmLikgICBz aGFyZWQgKG9uY2UgcGVyIHJvdykKKyAgQ29tcG91bmQgKGlubmVyIExBU1QsIHcvb2ZmLikgICAg cGVyLWNvbnRleHQKKworVkktNS4gVHVwbGVzdG9yZSBNYXJrIGFuZCBUcmltIChub2RlV2luZG93 QWdnLmMpCisKK05hdmlnYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgYWNjZXNzIHRvIHBhc3Qgcm93 cyB2aWEgdGhlIHR1cGxlc3RvcmUuCitUbyBhbGxvdyB0dXBsZXN0b3JlX3RyaW0oKSB0byBmcmVl IHJvd3MgdGhhdCBhcmUgbm8gbG9uZ2VyIHJlYWNoYWJsZSwKK3RoZSBwbGFubmVyIGNvbXB1dGVz IHR3byBvZmZzZXRzIChzZWUgY29tcHV0ZV9kZWZpbmVfbWV0YWRhdGEpOgorCisgIG5hdk1heE9m ZnNldCAoTmF2IE1hcmsgTG9va2JhY2spOgorICAgIE1heGltdW0gYmFja3dhcmQgcmVhY2ggZnJv bSBjdXJyZW50cG9zLiAgQ29udHJpYnV0ZWQgYnkgUFJFViwKKyAgICBMQVNULXdpdGgtb2Zmc2V0 LCBhbmQgY29tcG91bmQgUFJFVl9MQVNUL05FWFRfTEFTVC4KKyAgICBNYXJrIHBvc2l0aW9uOiBj dXJyZW50cG9zIC0gbmF2TWF4T2Zmc2V0LgorCisgIG5hdkZpcnN0T2Zmc2V0IChOYXYgTWFyayBM b29rYWhlYWQpOgorICAgIE1pbmltdW0gZm9yd2FyZCBvZmZzZXQgZnJvbSBtYXRjaF9zdGFydC4g IENvbnRyaWJ1dGVkIGJ5IEZJUlNUCisgICAgYW5kIGNvbXBvdW5kIFBSRVZfRklSU1QvTkVYVF9G SVJTVC4gIENhbiBiZSBuZWdhdGl2ZSB3aGVuCisgICAgY29tcG91bmQgUFJFVl9GSVJTVCBsb29r cyBiZWZvcmUgbWF0Y2hfc3RhcnQuCisgICAgTWFyayBwb3NpdGlvbjogb2xkZXN0X2NvbnRleHQt Pm1hdGNoU3RhcnRSb3cgKyBuYXZGaXJzdE9mZnNldC4KKworVGhlIGFjdHVhbCBtYXJrIGlzIHNl dCB0bzogbWluKGxvb2tiYWNrX21hcmssIGxvb2thaGVhZF9tYXJrKS4KK1RoaXMgZW5zdXJlcyBh bGwgcm93cyByZWFjaGFibGUgYnkgYW55IG5hdmlnYXRpb24gZnVuY3Rpb24gYXJlIHJldGFpbmVk LgorCitXaGVuIG9mZnNldHMgY29udGFpbiBub24tY29uc3RhbnQgZXhwcmVzc2lvbnMgKFBhcmFt KSwgdGhlIHBsYW5uZXIgc2V0cworbmF2TWF4T2Zmc2V0S2luZC9uYXZGaXJzdE9mZnNldEtpbmQg dG8gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCBhbmQgdGhlCitleGVjdXRvciBldmFsdWF0ZXMg dGhlbSBhdCBpbml0IHRpbWUuICBPbiBvdmVyZmxvdywgdGhlIGtpbmQgaXMgc2V0IHRvCitSUFJf TkFWX09GRlNFVF9SRVRBSU5fQUxMLCBkaXNhYmxpbmcgdHJpbSBmb3IgdGhhdCBkaW1lbnNpb24u CisKK1ZJLTYuIEV4ZWNSUFJQcm9jZXNzUm93KCk6IDMtUGhhc2UgUHJvY2Vzc2luZworCitORkEg cHJvY2Vzc2luZyBmb3IgYSBzaW5nbGUgcm93IGlzIGRpdmlkZWQgaW50byB0aHJlZSBwaGFzZXM6 CisKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICB8 ICBQaGFzZSAxOiBNQVRDSCAoY29udmVyZ2VuY2UpICAgICAgICAgICAgICB8CisgIHwgIENvbXBh cmUgdGhlIGN1cnJlbnQgcm93IGFnYWluc3QgZWFjaCBWQVIgIHwKKyAgfCAgc3RhdGUuIFJlbW92 ZSBzdGF0ZXMgdGhhdCBmYWlsIHRvIG1hdGNoLiAgfAorICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgIFBoYXNlIDI6IEFCU09SQiAoYWJzb3JwdGlv bikgICAgICAgICAgICAgIHwKKyAgfCAgTWVyZ2UgZHVwbGljYXRlIGNvbnRleHRzIHRvIHByZXZl bnQgICAgICAgfAorICB8ICBzdGF0ZSBleHBsb3Npb24uICAgICAgICAgICAgICAgICAgICAgICAg ICB8CisgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg fCAgUGhhc2UgMzogQURWQU5DRSAoZXhwYW5zaW9uKSAgICAgICAgICAgICAgfAorICB8ICBFeHBh bmQgZXBzaWxvbiB0cmFuc2l0aW9ucyB0byBwcmVwYXJlICAgICB8CisgIHwgIGZvciB0aGUgbmV4 dCByb3cuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCitUaGlzIG9yZGVyaW5nIGlzIGltcG9ydGFudDoK KworICAtIE1hdGNoIGV4ZWN1dGVzIGZpcnN0IHRvICJjb25zdW1lIHRoZSBjdXJyZW50IHJvdy4i CisgIC0gQWJzb3JiIGV4ZWN1dGVzIGltbWVkaWF0ZWx5IGFmdGVyIE1hdGNoLCB3aGVuIHN0YXRl cyBoYXZlIGJlZW4gdXBkYXRlZC4KKyAgLSBBZHZhbmNlIGV4ZWN1dGVzIGxhc3QgdG8gcHJlcGFy ZSAic3RhdGVzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IHJvdy4iCisKK0NoYXB0ZXIgVklJICBQaGFz ZSAxOiBNYXRjaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCituZmFfbWF0Y2goKSBpdGVyYXRlcyB0 aHJvdWdoIGVhY2ggc3RhdGUgaW4gdGhlIGNvbnRleHQ6CisKKyAgKDEpIENoZWNrIHdoZXRoZXIg dGhlIHN0YXRlJ3MgZWxlbUlkeCBpcyBhIFZBUiBlbGVtZW50CisgICgyKSBDb21wYXJlIGFnYWlu c3QgdGhlIGN1cnJlbnQgcm93IHVzaW5nIG5mYV9ldmFsX3Zhcl9tYXRjaCgpCisgICgzKSBNYXRj aCBzdWNjZXNzOiBpbmNyZW1lbnQgcmVwZXRpdGlvbiBjb3VudCwgcmV0YWluIHN0YXRlCisgICg0 KSBNYXRjaCBmYWlsdXJlOiByZW1vdmUgc3RhdGUKKworTWF0Y2ggZGV0ZXJtaW5hdGlvbiAobmZh X2V2YWxfdmFyX21hdGNoKToKKworICBJZiB2YXJJZCBpcyB3aXRoaW4gdGhlIHJhbmdlIG9mIGRl ZmluZVZhcmlhYmxlTGlzdDoKKyAgICAgIFVzZSB0aGUgdmFsdWUgb2YgdmFyTWF0Y2hlZFt2YXJJ ZF0KKworICBJZiB2YXJJZCBleGNlZWRzIHRoZSByYW5nZSAodmFyaWFibGUgbm90IGRlZmluZWQg aW4gREVGSU5FKToKKyAgICAgIFVuY29uZGl0aW9uYWxseSB0cnVlIChtYXRjaGVzIGFsbCByb3dz KQorCitJbW1lZGlhdGUgYWR2YW5jZSBmb3Igc2ltcGxlIFZBUnM6CisKKyAgRm9yIGEgVkFSIHdp dGggbWluPTEsIG1heD0xIHdoZXJlIHRoZSBuZXh0IGVsZW1lbnQgaXMgRU5ELAorICB0aGUgTWF0 Y2ggcGhhc2UgcHJvY2Vzc2VzIHRocm91Z2ggRU5EIGltbWVkaWF0ZWx5LgorICBUaGlzIGlzIG5l Y2Vzc2FyeSBmb3IgYWNjdXJhdGUgc3RhdGUgY29tcGFyaXNvbiBpbiBQaGFzZSAyIChBYnNvcmIp LgorCisgIEV4YW1wbGU6IEluIFBBVFRFUk4gKChBIEIpKyksIHdoZW4gQSBtYXRjaGVzLCBpdCBp bW1lZGlhdGVseSBhZHZhbmNlcworICB0byBCLCBhbmQgd2hlbiBCIG1hdGNoZXMsIGl0IGltbWVk aWF0ZWx5IGFkdmFuY2VzIHRocm91Z2ggRU5EIHRvCisgIGNvbXBsZXRlIHRoZSBncm91cCBjb3Vu dC4gVGhpcyBlbmFibGVzIGFic29ycHRpb24gY29tcGFyaXNvbiB3aXRoCisgIG90aGVyIGNvbnRl eHRzLgorCitDaGFwdGVyIFZJSUkgIFBoYXNlIDI6IEFic29yYiAoQ29udGV4dCBBYnNvcnB0aW9u KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCitBYnNvcnB0aW9uIGlzIHRoZSBydW50aW1lIG9wdGlt aXphdGlvbiB0aGF0IGNvbGxhcHNlcyBjb250ZXh0cyB3aGljaAoraGF2ZSBjb252ZXJnZWQgb24g aWRlbnRpY2FsIGZ1dHVyZSBiZWhhdmlvci4gIFR3byBjb250ZXh0cyBhcmUKK3RyZWF0ZWQgYXMg ZXF1aXZhbGVudCB3aGVuIG9uZSdzIGJvb2trZWVwaW5nIChlbGVtSWR4IGFuZCBwZXItZGVwdGgK K2l0ZXJhdGlvbiBjb3VudHMpIGlzIGRvbWluYXRlZCBieSBhbm90aGVyJ3M7IHRoZSB5b3VuZ2Vy IG9uZSBpcyB0aGVuCitkaXNjYXJkZWQuICBUaGUgb3B0aW1pemF0aW9uIGlzIHNhZmUgYmVjYXVz ZSBwYXR0ZXJuIG1hdGNoaW5nIGlzCittb25vdG9uaWMgLS0gYW4gZWFybGllciBjb250ZXh0J3Mg cmVhY2hhYmxlIG1hdGNoZXMgYWx3YXlzIGNvbnRhaW4gYQorbGF0ZXIgY29udGV4dCdzLiAgVGhp cyBpcyB3aGF0IHJlZHVjZXMgdGhlIG5haXZlIE8oTl4yKSBzdGF0ZSBjb3VudAordG8gTyhOKS4K KworVklJSS0xLiBQcm9ibGVtCisKK0luIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhIG5l dyBjb250ZXh0IGlzIHN0YXJ0ZWQgZm9yIGVhY2ggcm93Citwcm9jZXNzZWQuCitBcHBseWluZyBQ QVRURVJOIChBKykgdG8gMTAgcm93cyBwcm9kdWNlcyAxMCBjb250ZXh0cywKK2VhY2ggb2Ygd2hp Y2ggdHJhY2tzIHN0YXRlIGluZGVwZW5kZW50bHkuCisKK0lmIHRoZXJlIGFyZSBOIHJvd3MsIHRo ZSB0b3RhbCBudW1iZXIgb2Ygc3RhdGVzIGJlY29tZXMgTyhOXjIpOgorCisgIENvbnRleHQgMSAo c3RhcnRlZCBhdCByb3cgMSk6IGNhbiBtYXRjaCBBIHVwIHRvIE4gdGltZXMKKyAgQ29udGV4dCAy IChzdGFydGVkIGF0IHJvdyAyKTogY2FuIG1hdGNoIEEgdXAgdG8gTi0xIHRpbWVzCisgIC4uLgor ICBDb250ZXh0IE4gKHN0YXJ0ZWQgYXQgcm93IE4pOiBjYW4gbWF0Y2ggQSAxIHRpbWUKKworVklJ SS0yLiBTb2x1dGlvbjogQ29udGV4dCBBYnNvcnB0aW9uCisKK0tleSBvYnNlcnZhdGlvbjogYSBj b250ZXh0IHN0YXJ0ZWQgZWFybGllciBjb250YWlucworYWxsIG1hdGNoZXMgb2YgYSBsYXRlci1z dGFydGVkIGNvbnRleHQgKG1vbm90b25pY2l0eSBwcmluY2lwbGUpLgorCitJZiBDb250ZXh0IDEg c3RhcnRlZCBhdCByb3cgMSBhbmQgbWF0Y2hlZCBBIDUgdGltZXMsCit0aGUgc3RhdGUgd2hlcmUg Q29udGV4dCAyIChzdGFydGVkIGF0IHJvdyAyKSBtYXRjaGVkIEEgNCB0aW1lcworaXMgYWxyZWFk eSBjb250YWluZWQgd2l0aGluIENvbnRleHQgMS4KKworVGhlcmVmb3JlIENvbnRleHQgMiBjYW4g YmUgImFic29yYmVkIiBpbnRvIENvbnRleHQgMS4KKworV29ya2VkIGV4YW1wbGUgZm9yIFBBVFRF Uk4gKEErKSBvdmVyIDMgcm93cyAoZWFjaCBtYXRjaGVzIEEpOgorCisgIEFmdGVyIHJvdyAxOgor ICAgIEN0eF8xIChzdGFydGVkIHJvdyAxKTogc3RhdGUgYXQgQSB3aXRoIGNvdW50c1swXSA9IDEK KworICBBZnRlciByb3cgMjoKKyAgICBDdHhfMTogc3RhdGUgYXQgQSB3aXRoIGNvdW50c1swXSA9 IDIKKyAgICBDdHhfMiAoc3RhcnRlZCByb3cgMik6IHN0YXRlIGF0IEEgd2l0aCBjb3VudHNbMF0g PSAxCisgICAgLT4gU2FtZSBlbGVtSWR4OyBDdHhfMS5jb3VudCAoMikgZG9taW5hdGVzIEN0eF8y LmNvdW50ICgxKS4KKyAgICAtPiBDdHhfMiBhYnNvcmJlZC4KKworICBBZnRlciByb3cgMzoKKyAg ICBDdHhfMTogc3RhdGUgYXQgQSB3aXRoIGNvdW50c1swXSA9IDMKKyAgICBDdHhfMyAoc3RhcnRl ZCByb3cgMyk6IHN0YXRlIGF0IEEgd2l0aCBjb3VudHNbMF0gPSAxCisgICAgLT4gQ3R4XzEuY291 bnQgKDMpIGRvbWluYXRlcyBDdHhfMy5jb3VudCAoMSkuCisgICAgLT4gQ3R4XzMgYWJzb3JiZWQu CisKK1RvdGFsIGFjdGl2ZSBjb250ZXh0cyBzdGF5cyBhdCBPKDEpIGluc3RlYWQgb2YgZ3Jvd2lu ZyB3aXRoIE4uCisKK1ZJSUktMy4gQWJzb3JwdGlvbiBDb25kaXRpb25zCisKK1BsYW5uZXItdGlt ZSBwcmVyZXF1aXNpdGVzIChhbGwgbXVzdCBob2xkIGZvciBhYnNvcnB0aW9uIHRvIGJlIGVuYWJs ZWQpOgorCisgIChhKSBTS0lQIFBBU1QgTEFTVCBST1cuICBTS0lQIFRPIE5FWFQgUk9XIGNyZWF0 ZXMgb3ZlcmxhcHBpbmcKKyAgICAgIGNvbnRleHRzIHRoYXQgY2Fubm90IGJlIHNhZmVseSBhYnNv cmJlZC4KKyAgKGIpIFVuYm91bmRlZCBmcmFtZSAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQKKyAgICAgIEZPTExPV0lORykuICBMaW1pdGVkIGZyYW1lcyBhcHBseSBkaWZm ZXJlbnRseSB0byBlYWNoIGNvbnRleHQsCisgICAgICBicmVha2luZyB0aGUgbW9ub3RvbmljaXR5 IHByaW5jaXBsZS4KKyAgKGMpIE5vIG1hdGNoX3N0YXJ0X2RlcGVuZGVudCBuYXZpZ2F0aW9uIGlu IERFRklORS4KKworICAgICAgTWVjaGFuaXNtOiBlYWNoIGNvbnRleHQgaGFzIGEgZGlmZmVyZW50 IG1hdGNoU3RhcnRSb3csIHNvIEZJUlNUCisgICAgICByZXNvbHZlcyB0byBhIGRpZmZlcmVudCBy b3cgZm9yIGVhY2ggY29udGV4dCBhdCB0aGUgc2FtZQorICAgICAgY3VycmVudHBvcy4gIEFuIGVh cmxpZXIgY29udGV4dCdzIERFRklORSByZXN1bHQgbm8gbG9uZ2VyCisgICAgICBzdWJzdW1lcyBh IGxhdGVyIG9uZSdzLCBtYWtpbmcgY291bnQtZG9taW5hbmNlIGNvbXBhcmlzb24KKyAgICAgIGlu dmFsaWQuICBSYXRoZXIgdGhhbiBjb21wYXJpbmcgbWF0Y2hTdGFydFJvdyBhdCBydW50aW1lCisg ICAgICAod2hpY2ggd291bGQgY29tcGxpY2F0ZSB0aGUgYWJzb3JiIHBhdGgpLCBhbnkgbWF0Y2hf c3RhcnQKKyAgICAgIGRlcGVuZGVuY3kgZGlzYWJsZXMgYWJzb3JwdGlvbiBlbnRpcmVseS4KKwor ICAgICAgTmF2aWdhdGlvbiBjb250ZW50ICAgICAgICAgICAgICBtYXRjaF9zdGFydCBkZXAuICBh YnNvcnB0aW9uCisgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIE5vIG5hdmlnYXRpb24gICAgICAgICAgICAgICAg ICAgbm9uZSAgICAgICAgICAgICAgc2FmZQorICAgICAgUFJFVi9ORVhUIG9ubHkgICAgICAgICAg ICAgICAgICBub25lICAgICAgICAgICAgICBzYWZlCisgICAgICBMQVNUIChubyBvZmZzZXQpICAg ICAgICAgICAgICAgIG5vbmUgICAgICAgICAgICAgIHNhZmUKKyAgICAgIExBU1QgKHdpdGggb2Zm c2V0KSAgICAgICAgICAgICAgYm91bmRhcnkgY2hlY2sgICAgdW5zYWZlCisgICAgICBGSVJTVCAo YW55KSAgICAgICAgICAgICAgICAgICAgIGRpcmVjdCAgICAgICAgICAgIHVuc2FmZQorICAgICAg Q29tcG91bmQgKGlubmVyIEZJUlNUKSAgICAgICAgICBkaXJlY3QgICAgICAgICAgICB1bnNhZmUK KyAgICAgIENvbXBvdW5kIChpbm5lciBMQVNULCBubyBvZmYuKSAgbm9uZSAgICAgICAgICAgICAg c2FmZQorICAgICAgQ29tcG91bmQgKGlubmVyIExBU1QsIHcvb2ZmLikgICBib3VuZGFyeSBjaGVj ayAgICB1bnNhZmUKKworICBUaGUgIm1hdGNoX3N0YXJ0IGRlcC4iIGNvbHVtbiBjbGFzc2lmaWVz IGhvdyB0aGUgbmF2aWdhdGlvbiB0aWVzIGEKKyAgREVGSU5FIHJlc3VsdCB0byB0aGUgY29udGV4 dCdzIG1hdGNoU3RhcnRSb3c6CisKKyAgICBub25lICAgICAgICAgICAgSW5kZXBlbmRlbnQgb2Yg bWF0Y2hTdGFydFJvdy4gIFRoZSByZXN1bHQgZGVwZW5kcworICAgICAgICAgICAgICAgICAgICBv bmx5IG9uIGN1cnJlbnRwb3MgKG9yIGEgZml4ZWQgb2Zmc2V0IGZyb20gaXQpLCBzbworICAgICAg ICAgICAgICAgICAgICBldmVyeSBjb250ZXh0IGV2YWx1YXRlcyBpdCBpZGVudGljYWxseS4KKyAg ICBkaXJlY3QgICAgICAgICAgQ29tcHV0ZWQgZnJvbSBtYXRjaFN0YXJ0Um93IGl0c2VsZiAtLSBG SVJTVCBjb3VudHMKKyAgICAgICAgICAgICAgICAgICAgZm9yd2FyZCBmcm9tIG1hdGNoIHN0YXJ0 IC0tIHNvIHRoZSByZXNvbHZlZCByb3csCisgICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIHRo ZSByZXN1bHQsIGRpZmZlcnMgcGVyIGNvbnRleHQuCisgICAgYm91bmRhcnkgY2hlY2sgIFRoZSBy ZXNvbHZlZCByb3cgaXMgY3VycmVudHBvcy1yZWxhdGl2ZSAoTEFTVCB3aXRoCisgICAgICAgICAg ICAgICAgICAgIGEgYmFja3dhcmQgb2Zmc2V0LCBvciBhIGNvbXBvdW5kIHdob3NlIGlubmVyIExB U1QKKyAgICAgICAgICAgICAgICAgICAgY2FycmllcyBhbiBvZmZzZXQpLCBidXQgaXRzIGluLXJh bmdlIHRlc3QgaXMgdGFrZW4KKyAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCB0aGUgbWF0Y2gg cmFuZ2UgW21hdGNoU3RhcnRSb3csIGN1cnJlbnRwb3NdLgorICAgICAgICAgICAgICAgICAgICBU aGUgcmFuZ2UgYm91bmQgZGlmZmVycyBwZXIgY29udGV4dCwgc28gdGhlIHJlc3VsdAorICAgICAg ICAgICAgICAgICAgICBjYW4gdG9vLgorCisgIE9ubHkgIm5vbmUiIGlzIHNhZmUgZm9yIGFic29y cHRpb247ICJkaXJlY3QiIGFuZCAiYm91bmRhcnkgY2hlY2siCisgIGJvdGggbWFrZSBhbiBlYXJs aWVyIGNvbnRleHQncyByZXN1bHQgc3RvcCBzdWJzdW1pbmcgYSBsYXRlciBvbmUncworICAoc2Vl IChjKSBhYm92ZSkuCisKK1J1bnRpbWUgY29uZGl0aW9ucyAoZXZhbHVhdGVkIHBlciBjb250ZXh0 IHBhaXIpOgorCisgICgxKSBUaGUgcGF0dGVybiBpcyBtYXJrZWQgYXMgaXNBYnNvcmJhYmxlIChz ZWUgSVYtNSkKKyAgKDIpIGFsbFN0YXRlc0Fic29yYmFibGUgb2YgdGhlIHRhcmdldCBjb250ZXh0 IGlzIHRydWUKKyAgKDMpIEFuIGVhcmxpZXIgY29udGV4dCAiY292ZXJzIiBhbGwgc3RhdGVzIG9m IHRoZSB0YXJnZXQKKworQ292ZXIgY29uZGl0aW9uIChuZmFfc3RhdGVzX2NvdmVyZWQpIC0tICJj b3VudC1kb21pbmFuY2UiOgorCisgIEEgc3RhdGUgd2l0aCB0aGUgc2FtZSBlbGVtSWR4IGV4aXN0 cyBpbiB0aGUgZWFybGllciBjb250ZXh0LAorICBhbmQgdGhlIGNvdW50IGF0IHRoYXQgZGVwdGgg aXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIC0tIHRoZW4gaXQgaXMKKyAgY292ZXJlZC4gIFRoZSBl YXJsaWVyIGNvbnRleHQncyBwZXItZGVwdGggaXRlcmF0aW9uIGNvdW50IHRodXMKKyAgZG9taW5h dGVzIHRoZSBsYXRlciBvbmUnczsgdGhpcyBpcyB0aGUgY291bnQtZG9taW5hbmNlIGNvbXBhcmlz b24KKyAgcmVmZXJlbmNlZCBpbiBWSUlJLTMoYykuCisKK1ZJSUktNC4gRHVhbC1GbGFnIERlc2ln bgorCitUd28gYm9vbGVhbiBmbGFncyBtYWtlIHRoZSBhYnNvcnB0aW9uIGRlY2lzaW9uIGVmZmlj aWVudDoKKworICBoYXNBYnNvcmJhYmxlU3RhdGUgKG1vbm90b25pYzogb25seSB0cnVlLT5mYWxz ZSB0cmFuc2l0aW9uIHBvc3NpYmxlKQorICAgICJEb2VzIHRoaXMgY29udGV4dCBoYXZlIHRoZSBh YmlsaXR5IHRvIGFic29yYiBvdGhlciBjb250ZXh0cz8iCisgICAgdHJ1ZSBpZiBhdCBsZWFzdCBv bmUgYWJzb3JiYWJsZSBzdGF0ZSBleGlzdHMuCisgICAgVHJhbnNpdGlvbnMgdG8gZmFsc2Ugd2hl biBzdGF0ZXMgYXJlIHJlbW92ZWQgbGVhdmluZyBubyBhYnNvcmJhYmxlCisgICAgc3RhdGVzLgor ICAgIE9uY2UgZmFsc2UsIGl0IG5ldmVyIGJlY29tZXMgdHJ1ZSBhZ2Fpbi4KKworICBhbGxTdGF0 ZXNBYnNvcmJhYmxlIChkeW5hbWljOiBjYW4gZmx1Y3R1YXRlKQorICAgICJDYW4gdGhpcyBjb250 ZXh0IGJlIGFic29yYmVkPyIKKyAgICB0cnVlIGlmIGFsbCBzdGF0ZXMgYXJlIGluIGFuIGFic29y YmFibGUgcmVnaW9uLgorICAgIEJlY29tZXMgZmFsc2Ugd2hlbiBhIG5vbi1hYnNvcmJhYmxlIHN0 YXRlIGlzIGFkZGVkOyByZXZlcnRzIHRvIHRydWUKKyAgICB3aGVuIGl0IGlzIHJlbW92ZWQuCisK K1ZJSUktNS4gQWJzb3JwdGlvbiBPcmRlcgorCituZmFfYWJzb3JiX2NvbnRleHRzKCkgdHJhdmVy c2VzIGZyb20gdGFpbCAobmV3ZXN0KSB0byBoZWFkIChvbGRlc3QpLgorCisgIGZvciBjdHggPSB0 YWlsIHRvIGhlYWQ6CisgICAgICBpZiBjdHguYWxsU3RhdGVzQWJzb3JiYWJsZToKKyAgICAgICAg ICBmb3Igb2xkZXIgPSBjdHgucHJldiB0byBoZWFkOgorICAgICAgICAgICAgICBpZiBvbGRlci5o YXNBYnNvcmJhYmxlU3RhdGU6CisgICAgICAgICAgICAgICAgICBpZiBuZmFfc3RhdGVzX2NvdmVy ZWQob2xkZXIsIGN0eCk6CisgICAgICAgICAgICAgICAgICAgICAgZnJlZShjdHgpICAtLSBhYnNv cmJlZAorICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKK1NpbmNlIGluc3BlY3Rpb24gc3Rh cnRzIGZyb20gdGhlIG5ld2VzdCBjb250ZXh0LCB0aGUgbW9zdCByZWNlbnRseSBzdGFydGVkCiso PSBoYXZpbmcgdGhlIHNob3J0ZXN0IG1hdGNoKSBjb250ZXh0IGlzIGFic29yYmVkIGZpcnN0Lgor CitDaGFwdGVyIElYICBQaGFzZSAzOiBBZHZhbmNlIChFcHNpbG9uIFRyYW5zaXRpb24gRXhwYW5z aW9uKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJWC0xLiBPdmVydmlldworCituZmFfYWR2YW5j ZSgpIGV4cGFuZHMgZXBzaWxvbiB0cmFuc2l0aW9ucyBmcm9tIGVhY2ggc3RhdGUgYWZ0ZXIgTWF0 Y2gsCitnZW5lcmF0aW5nICJuZXcgc3RhdGVzIHdhaXRpbmcgZm9yIHRoZSBuZXh0IHJvdy4iCisK K0FuIGVwc2lsb24gdHJhbnNpdGlvbiBpcyBhIHRyYW5zaXRpb24gdGhhdCBtb3ZlcyB3aXRob3V0 IGNvbnN1bWluZyBhIHJvdzoKKworICAtIEFMVDogYnJhbmNoIHRvIGVhY2ggYWx0ZXJuYXRpdmUK KyAgLSBCRUdJTjogZW50ZXIgZ3JvdXAgKG9yIHNraXAgaWYgbWluPTApCisgIC0gRU5EOiBsb29w LWJhY2sgd2l0aGluIGdyb3VwIChvciBleGl0IHdoZW4gY29uZGl0aW9uIGlzIG1ldCkKKyAgLSBG SU46IHJlY29yZCBtYXRjaCBjb21wbGV0aW9uCisgIC0gVkFSIGxvb3AvZXhpdDogcmVwZWF0L2V4 aXQgYWNjb3JkaW5nIHRvIHRoZSBxdWFudGlmaWVyCisKK0V4cGFuc2lvbiBzdG9wcyB1cG9uIHJl YWNoaW5nIGEgVkFSIGVsZW1lbnQsIGFuZCB0aGUgc3RhdGUgaXMgYWRkZWQuCitUaGlzIGlzIGJl Y2F1c2UgVkFSIGlzIHRoZSBlbGVtZW50IHRoYXQgIndpbGwgY29uc3VtZSB0aGUgbmV4dCByb3cu IgorCitJWC0yLiBQcm9jZXNzaW5nIE9yZGVyOiBERlMgYW5kIFByZWZlcm1lbnQKKworYWR2YW5j ZSBwcm9jZXNzZXMgc3RhdGVzIGluIGxleGljb2dyYXBoaWMgb3JkZXIsCitwZXJmb3JtaW5nIERl cHRoLUZpcnN0IFNlYXJjaCAoREZTKSBvbiBlYWNoIHN0YXRlLgorCitUaGlzIERGUyBvcmRlciBp cyB3aGF0IGd1YXJhbnRlZXMgdGhlIFNRTCBzdGFuZGFyZCdzICJwcmVmZXJtZW50IjoKKworICBU aGUgYnJhbmNoIHRoYXQgYXBwZWFycyBmaXJzdCBpbiB0aGUgUEFUVEVSTiB0ZXh0IHRha2VzIHBy ZWNlZGVuY2UuCisKK0V4YW1wbGU6IFBBVFRFUk4gKEEgfCBCKSBDCisKKyAgVGhlIGZpcnN0IGJy YW5jaCBBIG9mIHRoZSBBTFQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBzZWNvbmQgYnJhbmNo IEIuCisgIFdoZW4gYm90aCBBIGFuZCBCIGNhbiBtYXRjaCwgdGhlIG1hdGNoIHZpYSBBIGlzIHNl bGVjdGVkLgorCituZmFfYWRkX3N0YXRlX3VuaXF1ZSgpIHByZXZlbnRzIGR1cGxpY2F0ZSBhZGRp dGlvbiBvZiB0aGUgc2FtZSBzdGF0ZSwKK3NvIHRoZSBzdGF0ZSBhZGRlZCBmaXJzdCAoPSBmcm9t IHRoZSBwcmVmZXJyZWQgYnJhbmNoKSBpcyByZXRhaW5lZC4KKworSVgtMy4gUm91dGluZyBGdW5j dGlvbjogbmZhX3JvdXRlX3RvX2VsZW0oKQorCitBbGwgaW50ZXItZWxlbWVudCB0cmFuc2l0aW9u cyBpbiB0aGUgYWR2YW5jZSBwaGFzZSBnbyB0aHJvdWdoCituZmFfcm91dGVfdG9fZWxlbSgpLgor VGhpcyBmdW5jdGlvbiBicmFuY2hlcyBpdHMgYmVoYXZpb3IgYmFzZWQgb24gdGhlIHR5cGUgb2Yg dGhlIG5leHQgZWxlbWVudDoKKworICBJZiB0aGUgbmV4dCBlbGVtZW50IGlzIFZBUjoKKyAgICAo MSkgQWRkIHRoZSBzdGF0ZSB0byB0aGUgY29udGV4dCAobmZhX2FkZF9zdGF0ZV91bmlxdWUpCisg ICAgKDIpIElmIHRoZSBWQVIgaGFzIG1pbj0wLCBhbHNvIGFkZCBhIHNraXAgcGF0aCAocmVjdXJz ZSB2aWEgbmV4dCkKKyAgICAtPiBFeHBhbnNpb24gc3RvcHMgaGVyZSAoVkFSIGlzIHRoZSBlbGVt ZW50IHRoYXQgIndpbGwgY29uc3VtZSB0aGUgbmV4dAorICAgICAgIHJvdyIpCisKKyAgSWYgdGhl IG5leHQgZWxlbWVudCBpcyBub24tVkFSIChBTFQsIEJFR0lOLCBFTkQsIEZJTik6CisgICAgLT4g UmVjdXJzaXZlbHkgY2FsbCBuZmFfYWR2YW5jZV9zdGF0ZSgpIHRvIGNvbnRpbnVlIGV4cGFuc2lv bgorCitXaXRoIHRoaXMgc3RydWN0dXJlLCBhZHZhbmNlIHJlY3Vyc2l2ZWx5IGZvbGxvd3MgZXBz aWxvbiB0cmFuc2l0aW9ucwordW50aWwgcmVhY2hpbmcgYSBWQVIsIGNvbnNpc3RlbnRseSBzdG9w cGluZyBvbmx5IGF0IFZBUiBlbGVtZW50cy4KKworSVgtNC4gUGVyLUVsZW1lbnQgYWR2YW5jZSBC ZWhhdmlvcgorCisoYSkgQUxUIChuZmFfYWR2YW5jZV9hbHQpCisKKyAgVXBvbiBlbmNvdW50ZXJp bmcgYW4gQUxUIGVsZW1lbnQsIGFsbCBicmFuY2hlcyBhcmUgZXhwYW5kZWQgaW4gb3JkZXIuCisg IFRoZSBmaXJzdCBlbGVtZW50IG9mIGVhY2ggYnJhbmNoIGlzIGNvbm5lY3RlZCB2aWEgYSBqdW1w IHBvaW50ZXIuCisKKyAgaWR4PTAgKEFMVCkgLT4gYnJhbmNoIDEgc3RhcnQgKG5leHQpIC0+IGJy YW5jaCAyIHN0YXJ0IChqdW1wKSAtPiAuLi4KKworICBuZmFfYWR2YW5jZV9zdGF0ZSgpIGlzIHJl Y3Vyc2l2ZWx5IGNhbGxlZCBmb3IgZWFjaCBicmFuY2guCisKKyhiKSBCRUdJTiAobmZhX2FkdmFu Y2VfYmVnaW4pCisKKyAgSGFuZGxlcyBncm91cCBlbnRyeS4KKyAganVtcCBwb2ludHMgdG8gdGhl IGVsZW1lbnQgYWZ0ZXIgRU5EICg9IGZpcnN0IGVsZW1lbnQgb3V0c2lkZSB0aGUgZ3JvdXApLgor CisgIEdyZWVkeSAoZGVmYXVsdCk6CisgICAgKDEpIEVudGVyIHRoZSBncm91cCBib2R5IChtb3Zl IHZpYSBuZXh0LCByZXNldCB0aGUgY291bnQgYXQgdGhhdCBkZXB0aCkKKyAgICAoMikgSWYgbWlu PTAsIGFsc28gYWRkIGEgZ3JvdXAgc2tpcCBwYXRoIChtb3ZlIHZpYSBqdW1wKQorCisgIFJlbHVj dGFudDoKKyAgICBPcmRlciByZXZlcnNlZCAtLSBza2lwIHBhdGggZmlyc3QsIGdyb3VwIGVudHJ5 IHNlY29uZC4KKyAgICBJZiB0aGUgc2tpcCBwYXRoIHJlYWNoZXMgRklOLCB0aGUgZ3JvdXAgZW50 cnkgcGF0aCBpcyBub3QgZ2VuZXJhdGVkCisgICAgKHNob3J0ZXN0IG1hdGNoIHByZWZlcnJlZCku CisKKyhjKSBFTkQgKG5mYV9hZHZhbmNlX2VuZCkKKworICBIYW5kbGVzIGdyb3VwIHRlcm1pbmF0 aW9uLiBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoZSByZXBldGl0aW9uIGxvZ2ljLgorCisgIExldCBj b3VudCBiZSB0aGUgY291bnQgYXQgdGhlIGN1cnJlbnQgZGVwdGg6CisKKyAgY291bnQgPCBtaW46 CisgICAgTG9vcC1iYWNrIChtb3ZlIHZpYSBqdW1wLCByZXBlYXQgdGhlIGdyb3VwIGJvZHkpCisK KyAgICBJZiB0aGUgUlBSX0VMRU1fRU1QVFlfTE9PUCBmbGFnIGlzIHNldDoKKyAgICAgIEluIGFk ZGl0aW9uIHRvIGxvb3AtYmFjaywgYWxzbyBhZGQgYSBmYXN0LWZvcndhcmQgZXhpdCBwYXRoLgor ICAgICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBib2R5IG1heSBwcm9kdWNlIGFuIGVtcHR5IG1hdGNo LCBjYXVzaW5nIGNvdW50CisgICAgICB0byBuZXZlciByZWFjaCBtaW4uIGZhc3QtZm9yd2FyZCBy ZXNldHMgY291bnRzW2RlcHRoXSB0byAwCisgICAgICBhbmQgZXhpdHMgdmlhIG5leHQgKHRyZWF0 aW5nIHRoZSByZW1haW5pbmcgcmVxdWlyZWQgaXRlcmF0aW9ucworICAgICAgYXMgZW1wdHkgbWF0 Y2hlcykuCisKKyAgbWluIDw9IGNvdW50IDwgbWF4OgorICAgIEdyZWVkeTogbG9vcC1iYWNrIGZp cnN0LCBleGl0IHNlY29uZAorICAgIFJlbHVjdGFudDogZXhpdCBmaXJzdCwgbG9vcC1iYWNrIHNl Y29uZAorICAgICAgICAgICAgICAgSWYgdGhlIGV4aXQgcGF0aCByZWFjaGVzIEZJTiwgbG9vcC1i YWNrIGlzIG9taXR0ZWQuCisKKyAgY291bnQgPj0gbWF4OgorICAgIFVuY29uZGl0aW9uYWwgZXhp dCAobW92ZSB2aWEgbmV4dCkKKworICBPbiBleGl0OiByZXNldCBjb3VudHNbZGVwdGhdID0gMCwg YW5kIGlmIHRoZSBuZXh0IGVsZW1lbnQgaXMgYW4gb3V0ZXIgRU5ELAorICBpbmNyZW1lbnQgdGhl IGNvdW50IGF0IHRoZSBvdXRlciBkZXB0aC4KKworKGQpIFZBUiAobmZhX2FkdmFuY2VfdmFyKQor CisgIEhhbmRsZXMgcmVwZWF0L2V4aXQgZm9yIGEgVkFSIGVsZW1lbnQgd2l0aCBhIHF1YW50aWZp ZXIuCisKKyAgTGV0IGNvdW50IGJlIHRoZSBjb3VudCBhdCB0aGUgY3VycmVudCBkZXB0aDoKKwor ICBjb3VudCA8IG1pbjoKKyAgICBVbmNvbmRpdGlvbmFsIGxvb3AgKHN0YXkgYXQgdGhlIHNhbWUg ZWxlbUlkeCwgd2FpdCBmb3IgdGhlIG5leHQgcm93KQorCisgIG1pbiA8PSBjb3VudCA8IG1heDoK KyAgICBHcmVlZHk6IGxvb3AgZmlyc3QsIGV4aXQgKG5leHQpIHNlY29uZAorICAgIFJlbHVjdGFu dDogZXhpdCBmaXJzdCwgbG9vcCBzZWNvbmQKKyAgICAgICAgICAgICAgIElmIHRoZSBleGl0IHBh dGggcmVhY2hlcyBGSU4sIGxvb3AgaXMgb21pdHRlZC4KKworICBjb3VudCA+PSBtYXg6CisgICAg VW5jb25kaXRpb25hbCBleGl0IChtb3ZlIHZpYSBuZXh0KQorCisgIE9uIGV4aXQ6IHJlc2V0IGNv dW50c1tkZXB0aF0gPSAwLgorCisoZSkgRklOCisKKyAgTWF0Y2ggc3VjY2Vzcy4gVGhlIGN1cnJl bnQgc3RhdGUgaXMgbW92ZWQgdG8gbWF0Y2hlZFN0YXRlIGZvciByZWNvcmRpbmcsCisgIGFuZCBt YXRjaEVuZFJvdyBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgcm93LgorCisgIFVwb24gcmVhY2hpbmcg RklOLCBhbGwgcmVtYWluaW5nIHVucHJvY2Vzc2VkIHN0YXRlcyBhcmUgcmVtb3ZlZAorICAoZWFy bHkgdGVybWluYXRpb24pLiBCeSBERlMgb3JkZXIsIHRoZSBwYXRoIHRoYXQgcmVhY2hlZCBGSU4g Zmlyc3QKKyAgaGFzIHRoZSBoaWdoZXN0IHByZWZlcm1lbnQsIHNvIHRoZSByZXN0IGFyZSBpbmZl cmlvciBwYXRocy4KKyAgVGhpcyBpcyB0aGUgY29yZSBtZWNoYW5pc20gdGhhdCBndWFyYW50ZWVz IHByZWZlcm1lbnQuCisKKyAgSW4gU0tJUCBQQVNUIExBU1QgUk9XIG1vZGUsIHVwb24gcmVhY2hp bmcgRklOLCBzdWJzZXF1ZW50IGNvbnRleHRzCisgIHRoYXQgc3RhcnRlZCB3aXRoaW4gdGhlIG1h dGNoIHJhbmdlIGFyZSBpbW1lZGlhdGVseSBwcnVuZWQuCisKK0lYLTUuIFN0YXRlIERlZHVwbGlj YXRpb246IG5mYV9hZGRfc3RhdGVfdW5pcXVlKCkKKworV2hlbiBhZGRpbmcgYSBuZXcgc3RhdGUg dG8gYSBjb250ZXh0LCBpdCBpcyBjb21wYXJlZCBhZ2FpbnN0IGV4aXN0aW5nCitzdGF0ZXM7Citp ZiBhbiBpZGVudGljYWwgc3RhdGUgYWxyZWFkeSBleGlzdHMsIGl0IGlzIG5vdCBhZGRlZC4KKwor Q29tcGFyaXNvbiBjcml0ZXJpYTogZWxlbUlkeCArIGNvdW50c1swLi5lbGVtLT5kZXB0aF0gKHNl ZSBWLTEpCisKK1RoaXMgZGVkdXBsaWNhdGlvbiBpcyB0aGUgY29yZSBtZWNoYW5pc20gdGhhdCBz dXBwcmVzc2VzIE5GQSBzdGF0ZQorZXhwbG9zaW9uLgorQmVjYXVzZSBERlMgb3JkZXIgY2F1c2Vz IHByZWZlcnJlZC1icmFuY2ggc3RhdGVzIHRvIGJlIGFkZGVkIGZpcnN0LAoraWRlbnRpY2FsIHN0 YXRlcyBmcm9tIGxvd2VyLXByaW9yaXR5IGJyYW5jaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGRpc2Nh cmRlZC4KKworSVgtNi4gQ3ljbGUgRGV0ZWN0aW9uOiBuZmFWaXNpdGVkRWxlbXMKKworV2hlbiBh IGdyb3VwIGJvZHkgY2FuIHByb2R1Y2UgYW4gZW1wdHkgbWF0Y2gsCitsb29waW5nIGJhY2sgZnJv bSBFTkQgbWF5IGNhdXNlIGFuIGluZmluaXRlIGxvb3AuCisKK0V4YW1wbGU6IFBBVFRFUk4gKChB PykqKQorCisgIEE/IGhhcyBtaW49MCwgc28gaXQgY2FuIHBhc3MgdGhyb3VnaCB3aXRob3V0IG1h dGNoaW5nLgorICBJZiB0aGUgb3V0ZXIgZ3JvdXAgcmVwZWF0czogQkVHSU4gLT4gQT8gc2tpcCAt PiBFTkQgLT4gQkVHSU4gLT4gLi4uCisKK1RvIHByZXZlbnQgdGhpczoKKworICAoMSkgQXQgY29t cGlsZSB0aW1lOiBzZXQgdGhlIFJQUl9FTEVNX0VNUFRZX0xPT1AgZmxhZyBvbiB0aGUgRU5ECisg ICAgICBvZiBncm91cHMgd2hvc2UgYm9keSBpcyBudWxsYWJsZS4KKyAgICAgIFRoZSBydW50aW1l IGVmZmVjdCBvZiB0aGlzIGZsYWcgaXMgZGVzY3JpYmVkIGluIElYLTQoYyk6CisgICAgICB3aGVu IGNvdW50IDwgbWluLCBhIGZhc3QtZm9yd2FyZCBleGl0IHBhdGggaXMgYWRkZWQsCisgICAgICBy ZXNvbHZpbmcgdGhlIGRlYWRsb2NrIHdoZXJlIGNvdW50IGNhbm5vdCBpbmNyZWFzZSBkdWUgdG8g ZW1wdHkKKyAgICAgIG1hdGNoZXMuCisKKyAgKDIpIEF0IHJ1bnRpbWU6IGluaXRpYWxpemUgdGhl IG5mYVZpc2l0ZWRFbGVtcyBiaXRtYXAgaW1tZWRpYXRlbHkgYmVmb3JlCisgICAgICBERlMgZXhw YW5zaW9uIG9mIGVhY2ggc3RhdGUgd2l0aGluIGFkdmFuY2UgKG9uY2UgcGVyIHN0YXRlKS4KKyAg ICAgIER1cmluZyBERlMsIGVwc2lsb24gZWxlbWVudHMgKEVORCwgQUxULCBCRUdJTikgYXJlIG1h cmtlZCBpbiB0aGUKKyAgICAgIGJpdG1hcCBhdCBuZmFfYWR2YW5jZV9zdGF0ZSBlbnRyeS4gIFZB UiBlbGVtZW50cyBhcmUgbWFya2VkIGxhdGVyCisgICAgICB3aGVuIGFkZGVkIHRvIHRoZSBzdGF0 ZSBsaXN0IChuZmFfYWRkX3N0YXRlX3VuaXF1ZSksIHNvIHRoYXQKKyAgICAgIGxlZ2l0aW1hdGUg bG9vcC1iYWNrIHRvIHRoZSBzYW1lIFZBUiBpbiBhIG5ldyBncm91cCBpdGVyYXRpb24KKyAgICAg IChlLmcuLCBFTkQgLT4gQUxUIC0+IHNhbWUgVkFSKSBpcyBub3QgYmxvY2tlZC4KKyAgICAgIElm IGEgcHJldmlvdXNseSB2aXNpdGVkIGVsZW1JZHggaXMgcmV2aXNpdGVkLCB0aGF0IHBhdGggaXMg dGVybWluYXRlZC4KKworICBOb3RlOiB0aGUgYml0bWFwIHRyYWNrcyBvbmx5IGVsZW1JZHggYW5k IGRvZXMgbm90IGNvbnNpZGVyIGNvdW50cy4KKyAgVGhlcmVmb3JlLCBsZWdpdGltYXRlIHJldmlz aXRzIHRvIHRoZSBzYW1lIGVsZW1JZHggYnV0IHdpdGggZGlmZmVyZW50CisgIGNvdW50cyBtYXkg YWxzbyBiZSBibG9ja2VkLiAgVGhpcyBvbmx5IG9jY3VycyB3aGVuIHRoZSBncm91cCBib2R5IGlz CisgIG51bGxhYmxlIChhbGwgcGF0aHMgY2FuIG1hdGNoIGVtcHR5KSwgY2F1c2luZyBFTkQgLT4g bG9vcC1iYWNrIC0+CisgIHNraXAgLT4gRU5EIHdpdGhpbiBhIHNpbmdsZSBERlMuICBJbiBzdWNo IGNhc2VzIHRoZSBFTkQgZWxlbWVudCBoYXMKKyAgdGhlIFJQUl9FTEVNX0VNUFRZX0xPT1AgZmxh Zywgc28gdGhlIGZhc3QtZm9yd2FyZCBleGl0IChJWC00KGMpKQorICBwcm92aWRlcyBhbiBhbHRl cm5hdGl2ZSBwYXRoIHRoYXQgYnlwYXNzZXMgdGhlIGN5Y2xlLgorCitDaGFwdGVyIFggIE1hdGNo IFJlc3VsdCBQcm9jZXNzaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1gtMS4gTWF0Y2ggUmVz dWx0CisKK1JQUiB0cmFja3MgdGhlIGN1cnJlbnQgbWF0Y2ggcmVzdWx0IGFzIGEgc2luZ2xlIGVu dHJ5IGluIFdpbmRvd0FnZ1N0YXRlCit3aXRoIGZvdXIgZmllbGRzOiBycHJfbWF0Y2hfdmFsaWQs IHJwcl9tYXRjaF9tYXRjaGVkLCBycHJfbWF0Y2hfc3RhcnQsCithbmQgcnByX21hdGNoX2xlbmd0 aC4gIFdoZW4gcnByX21hdGNoX3ZhbGlkIGlzIHRydWUsIHRoZSBlbnRyeSBkZXNjcmliZXMKK3Ro ZSBtYXRjaCByZXN1bHQgZm9yIHRoZSBwb3NpdGlvbiBhdCBycHJfbWF0Y2hfc3RhcnQ6IHJwcl9t YXRjaF9tYXRjaGVkCitpbmRpY2F0ZXMgc3VjY2VzcyBvciBmYWlsdXJlLCBhbmQgcnByX21hdGNo X2xlbmd0aCBnaXZlcyB0aGUgbnVtYmVyIG9mCityb3dzIGNvbnN1bWVkLiAgQSBtYXRjaCB3aXRo IHJwcl9tYXRjaF9sZW5ndGggMCByZXByZXNlbnRzIGFuIGVtcHR5IG1hdGNoCisocGF0dGVybiBt YXRjaGVkIGJ1dCBjb25zdW1lZCBubyByb3dzKS4gIFdoZW4gcnByX21hdGNoX3ZhbGlkIGlzIGZh bHNlLAordGhlIHBvc2l0aW9uIGhhcyBub3QgYmVlbiBldmFsdWF0ZWQgeWV0IChSRl9OT1RfREVU RVJNSU5FRCkuCisKK0Egcm93J3Mgc3RhdHVzIGFnYWluc3QgdGhlIGN1cnJlbnQgbWF0Y2ggcmVz dWx0IGNhbiBiZSBvYnRhaW5lZCBieQorY2FsbGluZyBnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMo KS4KKworWC0yLiBBRlRFUiBNQVRDSCBTS0lQCisKK0RldGVybWluZXMgdGhlIHN0YXJ0aW5nIHBv aW50IGZvciB0aGUgbmV4dCBtYXRjaCBhdHRlbXB0IGFmdGVyIGEgc3VjY2Vzc2Z1bAorbWF0Y2g6 CisKKyAgU0tJUCBUTyBORVhUIFJPVzoKKyAgICBOZXcgbWF0Y2ggYXR0ZW1wdCBiZWdpbnMgZnJv bSB0aGUgcm93IGFmdGVyIHRoZSBtYXRjaCBzdGFydCByb3cuCisgICAgT3ZlcmxhcHBpbmcgbWF0 Y2hlcyBhcmUgcG9zc2libGUuCisKKyAgU0tJUCBQQVNUIExBU1QgUk9XOgorICAgIE5ldyBtYXRj aCBhdHRlbXB0IGJlZ2lucyBmcm9tIHRoZSByb3cgYWZ0ZXIgdGhlIG1hdGNoIGVuZCByb3cuCisg ICAgT25seSBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBhcmUgcG9zc2libGUuCisKK1gtMy4gSU5J VElBTCB2cyBTRUVLCisKKyAgU3RhbmRhcmQgZGVmaW5pdGlvbiAoSVNPL0lFQyAxOTA3NS01IDYu MTIpOgorICBJTklUSUFMOiAiaXMgdXNlZCB0byBsb29rIGZvciBhIG1hdGNoIHdob3NlIGZpcnN0 IHJvdyBpcyBSLiIKKyAgU0VFSzogICAgImlzIHVzZWQgdG8gcGVybWl0IGEgc2VhcmNoIGZvciB0 aGUgZmlyc3QgbWF0Y2ggYW55d2hlcmUKKyAgICAgICAgICAgZnJvbSBSIHRocm91Z2ggdGhlIGVu ZCBvZiB0aGUgZnVsbCB3aW5kb3cgZnJhbWUuIgorICBJbiBlaXRoZXIgY2FzZSwgaWYgdGhlcmUg aXMgbm8gbWF0Y2gsIHRoZSByZWR1Y2VkIHdpbmRvdyBmcmFtZSBpcyBlbXB0eS4KKyAgVGhlIGRl ZmF1bHQgaXMgSU5JVElBTC4KKworICBDdXJyZW50IGltcGxlbWVudGF0aW9uOgorICBTRUVLIGlz IG5vdCBzdXBwb3J0ZWQgKHRoZSBwYXJzZXIgcmFpc2VzIGFuIGVycm9yKS4KKyAgT25seSBJTklU SUFMIGlzIHN1cHBvcnRlZCwgc2VhcmNoaW5nIG9ubHkgZm9yIG1hdGNoZXMgc3RhcnRpbmcgYXQg ZWFjaAorICByb3cgcG9zaXRpb24gcG9zLgorCitYLTQuIEJvdW5kZWQgRnJhbWUgSGFuZGxpbmcK KworICBXaXRoIFJQUiwgdGhlIGZyYW1lIG1vZGUgaXMgYWx3YXlzIFJPV1MgYW5kIHRoZSBmcmFt ZSBzdGFydCBtdXN0IGJlCisgIENVUlJFTlQgUk9XLiBUaGUgZnJhbWUgZW5kIG11c3QgYmUgVU5C T1VOREVEIEZPTExPV0lORyBvciBhIHBvc2l0aXZlCisgIG9mZnNldCAobiA+PSAxKSBGT0xMT1dJ Tkc7IGEgQ1VSUkVOVCBST1cgZW5kIG9yIGEgemVybyBvZmZzZXQgaXMKKyAgcmVqZWN0ZWQsIHNp bmNlIGl0IHdvdWxkIHJlZHVjZSB0aGUgZnJhbWUgdG8gdGhlIHNpbmdsZSBjdXJyZW50IHJvdy4K KworICBXaGVuIHRoZSBmcmFtZSBpcyBib3VuZGVkIChlLmcuLCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDUKKyAgRk9MTE9XSU5HKSwgRXhlY1JQUlByb2Nlc3NSb3cgcmVjZWl2ZXMgaGFz TGltaXRlZEZyYW1lPXRydWUgYW5kCisgIGZyYW1lT2Zmc2V0IGluZGljYXRpbmcgdGhlIHVwcGVy IGJvdW5kLiAgQmVmb3JlIHRoZSBtYXRjaCBwaGFzZSwKKyAgYW55IGNvbnRleHQgd2hvc2UgbWF0 Y2ggaGFzIGV4Y2VlZGVkIHRoZSBmcmFtZSBib3VuZGFyeQorICAoY3VycmVudFBvcyA+PSBtYXRj aFN0YXJ0Um93ICsgZnJhbWVPZmZzZXQgKyAxKSBpcyBmaW5hbGl6ZWQgZWFybHkKKyAgYnkgZm9y Y2luZyBhIG1pc21hdGNoLiAgVGhpcyBwcmV2ZW50cyBtYXRjaGVzIGZyb20gZXh0ZW5kaW5nIGJl eW9uZAorICB0aGUgd2luZG93IGZyYW1lLiAgVGhlIHN1bSBpcyBjbGFtcGVkIHRvIFBHX0lOVDY0 X01BWCBvbiBvdmVyZmxvdy4KKworICBOb3RlIHRoYXQgYm91bmRlZCBmcmFtZXMgYWxzbyBkaXNh YmxlIGNvbnRleHQgYWJzb3JwdGlvbiBhdCB0aGUKKyAgcGxhbm5lciBsZXZlbCAoc2VlIFZJSUkt MyhiKSksIHNpbmNlIHRoZSBmcmFtZSBib3VuZGFyeSBicmVha3MgdGhlCisgIG1vbm90b25pY2l0 eSBhc3N1bXB0aW9uIHJlcXVpcmVkIGZvciBjb3JyZWN0IGFic29ycHRpb24uCisKK0NoYXB0ZXIg WEkgIFdvcmtlZCBFeGFtcGxlOiBGdWxsIEV4ZWN1dGlvbiBUcmFjZQorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCitYSS0xLiBRdWVyeQorCisgIFNFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisg ICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIHN0YXJ0X3ByaWNlLAorICAgICAg ICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZQorICBGUk9NIHN0b2NrCisg IFdJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIE9SREVSIEJZIHRk YXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICAgICAgICAgICBCIEFTIHBy aWNlIDwgUFJFVihwcmljZSkKKyAgKTsKKworWEktMi4gRGF0YQorCisgIFJvdyMgICAgdGRhdGUg ICAgICAgcHJpY2UKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMCAgICAgICAyMDI0 LTAxLTAxICAxMDAKKyAgMSAgICAgICAyMDI0LTAxLTAyICAxMTAKKyAgMiAgICAgICAyMDI0LTAx LTAzICAxMjAKKyAgMyAgICAgICAyMDI0LTAxLTA0ICAxMTUKKyAgNCAgICAgICAyMDI0LTAxLTA1 ICAxMzAKKworWEktMy4gQ29tcGlsYXRpb24gUmVzdWx0CisKKyAgUEFUVEVSTiAoQSsgQikgLT4g dW5jaGFuZ2VkIGFmdGVyIG9wdGltaXphdGlvbgorCisgIGlkeCAgdmFySWQgIGRlcHRoICBtaW4g IG1heCAgbmV4dCAganVtcAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgMCAgIEEoMCkgICAwICAgICAgMSAgICBJTkYgIDEgICAgIC0xICAgICBBKworICAg MSAgIEIoMSkgICAwICAgICAgMSAgICAxICAgIDIgICAgIC0xICAgICBCCisgICAyICAgRklOICAg IDAgICAgICAxICAgIDEgICAgLTEgICAgLTEKKworICBERUZJTkU6IEEgLT4gInByaWNlID4gUFJF VihwcmljZSkiLCBCIC0+ICJwcmljZSA8IFBSRVYocHJpY2UpIgorICBpc0Fic29yYmFibGUgPSB0 cnVlIChBKyBpcyBhIHNpbXBsZSB1bmJvdW5kZWQgVkFSKQorCitYSS00LiBFeGVjdXRpb24gVHJh Y2UKKworLS0tIFJvdyAwIChwcmljZT0xMDApIC0tLQorCisgIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1l KDApIGNhbGxlZC4KKworICBDb250ZXh0IEMwIGNyZWF0ZWQgKG1hdGNoU3RhcnRSb3c9MCkuCisg IEluaXRpYWwgYWR2YW5jZTogZWxlbUlkeD0wKEEpIC0+IFZBUiwgc28gc3RhdGUgaXMgYWRkZWQu CisgIEMwLnN0YXRlcyA9IFt7ZWxlbUlkeD0wLCBjb3VudHM9WzBdfV0KKworICBuZmFfZXZhbHVh dGVfcm93KDApOgorICAgIEE6IHByaWNlKDEwMCkgPiBQUkVWKHByaWNlKSAtPiBubyBQUkVWIC0+ IGZhbHNlCisgICAgQjogcHJpY2UoMTAwKSA8IFBSRVYocHJpY2UpIC0+IG5vIFBSRVYgLT4gZmFs c2UKKyAgICB2YXJNYXRjaGVkID0gW2ZhbHNlLCBmYWxzZV0KKworICBFeGVjUlBSUHJvY2Vzc1Jv dygwKToKKyAgICBQaGFzZSAxIChNYXRjaCk6IEEoMCkgc3RhdGUgdnMgdmFyTWF0Y2hlZFswXT1m YWxzZSAtPiBzdGF0ZSByZW1vdmVkCisgICAgQzAuc3RhdGVzID0gW10gKGVtcHR5KQorCisgICAg UGhhc2UgMiAoQWJzb3JiKTogc2tpcHBlZCAobm8gc3RhdGVzKQorICAgIFBoYXNlIDMgKEFkdmFu Y2UpOiBza2lwcGVkIChubyBzdGF0ZXMpCisKKyAgQzAuc3RhdGVzIGlzIGVtcHR5LCBzbyB0aGUg bG9vcCB0ZXJtaW5hdGVzLgorICBtYXRjaEVuZFJvdyA8IG1hdGNoU3RhcnRSb3cgLT4gdW5tYXRj aGVkLgorCistLS0gUm93IDEgKHByaWNlPTExMCkgLS0tCisKKyAgdXBkYXRlX3JlZHVjZWRfZnJh bWUoMSkgY2FsbGVkLgorCisgIENvbnRleHQgQzEgY3JlYXRlZCAobWF0Y2hTdGFydFJvdz0xKS4K KyAgSW5pdGlhbCBhZHZhbmNlOiBDMS5zdGF0ZXMgPSBbe2VsZW1JZHg9MCwgY291bnRzPVswXX1d CisKKyAgbmZhX2V2YWx1YXRlX3JvdygxKToKKyAgICBBOiAxMTAgPiBQUkVWKDEwMCkgLT4gdHJ1 ZQorICAgIEI6IDExMCA8IFBSRVYoMTAwKSAtPiBmYWxzZQorICAgIHZhck1hdGNoZWQgPSBbdHJ1 ZSwgZmFsc2VdCisKKyAgRXhlY1JQUlByb2Nlc3NSb3coMSk6CisgICAgUGhhc2UgMSAoTWF0Y2gp OiBBKDApIG1hdGNoIHN1Y2NlZWRzIC0+IGNvdW50c1swXSsrIC0+IGNvdW50cz1bMV0KKyAgICBD MS5zdGF0ZXMgPSBbe2VsZW1JZHg9MCwgY291bnRzPVsxXX1dCisKKyAgICBQaGFzZSAzIChBZHZh bmNlKToKKyAgICAgIFN0YXRlIHtlbGVtSWR4PTAsIGNvdW50cz1bMV19OiBBKyAobWluPTEsIGNv dW50PTEsIG1heD1JTkYpCisgICAgICAgIGNvdW50ID49IG1pbiwgc286CisgICAgICAgIEdyZWVk eSAtPiBsb29wIGZpcnN0OiBrZWVwIHtlbGVtSWR4PTAsIGNvdW50cz1bMV19CisgICAgICAgICAg ICAgICAgICBleGl0OiByZXNldCBjb3VudHNbMF09MCwgbmV4dCg9MSkgLT4ge2VsZW1JZHg9MSwK KyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cz1bMF19CisgICAgQzEuc3RhdGVzID0gW3tl bGVtSWR4PTAsIGNvdW50cz1bMV19LCB7ZWxlbUlkeD0xLCBjb3VudHM9WzBdfV0KKworLS0tIFJv dyAyIChwcmljZT0xMjApIC0tLQorCisgIENvbnRleHQgQzIgY3JlYXRlZCAobWF0Y2hTdGFydFJv dz0yKS4KKyAgSW5pdGlhbCBhZHZhbmNlOiBDMi5zdGF0ZXMgPSBbe2VsZW1JZHg9MCwgY291bnRz PVswXX1dCisKKyAgbmZhX2V2YWx1YXRlX3JvdygyKToKKyAgICBBOiAxMjAgPiBQUkVWKDExMCkg LT4gdHJ1ZQorICAgIEI6IDEyMCA8IFBSRVYoMTEwKSAtPiBmYWxzZQorICAgIHZhck1hdGNoZWQg PSBbdHJ1ZSwgZmFsc2VdCisKKyAgQzEgRXhlY1JQUlByb2Nlc3NSb3coMik6CisgICAgUGhhc2Ug MSAoTWF0Y2gpOgorICAgICAge2VsZW1JZHg9MCwgY291bnRzPVsxXX06IEEgbWF0Y2hlcyAtPiBj b3VudHM9WzJdCisgICAgICB7ZWxlbUlkeD0xLCBjb3VudHM9WzBdfTogQiBkb2VzIG5vdCBtYXRj aCAtPiByZW1vdmVkCisgICAgQzEuc3RhdGVzID0gW3tlbGVtSWR4PTAsIGNvdW50cz1bMl19XQor CisgIEMyIEV4ZWNSUFJQcm9jZXNzUm93KDIpOgorICAgIFBoYXNlIDEgKE1hdGNoKToKKyAgICAg IHtlbGVtSWR4PTAsIGNvdW50cz1bMF19OiBBIG1hdGNoZXMgLT4gY291bnRzPVsxXQorICAgIEMy LnN0YXRlcyA9IFt7ZWxlbUlkeD0wLCBjb3VudHM9WzFdfV0KKworICAgIFBoYXNlIDIgKEFic29y Yik6CisgICAgICBEb2VzIEMxIChzdGFydGVkIGVhcmxpZXIpIGNvdmVyIEMyPworICAgICAgICBD MToge2VsZW1JZHg9MCwgY291bnRzPVsyXX0sIEMyOiB7ZWxlbUlkeD0wLCBjb3VudHM9WzFdfQor ICAgICAgICBTYW1lIGVsZW1JZHgsIEMxLmNvdW50cyA+PSBDMi5jb3VudHMgLT4gY292ZXJlZAor ICAgICAgQzIgYWJzb3JiZWQuIC0+IHJlbW92ZWQuCisKKyAgICBQaGFzZSAzIChBZHZhbmNlKToK KyAgICAgIHtlbGVtSWR4PTAsIGNvdW50cz1bMl19OiBHcmVlZHkgLT4gbG9vcCArIGV4aXQKKyAg ICAgICAgTG9vcDoge2VsZW1JZHg9MCwgY291bnRzPVsyXX0KKyAgICAgICAgRXhpdDogcmVzZXQg Y291bnRzWzBdPTAsIG5leHQoPTEpIC0+IHtlbGVtSWR4PTEsIGNvdW50cz1bMF19CisgICAgQzEu c3RhdGVzID0gW3tlbGVtSWR4PTAsIGNvdW50cz1bMl19LCB7ZWxlbUlkeD0xLCBjb3VudHM9WzBd fV0KKworICBDb250ZXh0IEMzIGNyZWF0ZWQgKG1hdGNoU3RhcnRSb3c9MykuCisKKy0tLSBSb3cg MyAocHJpY2U9MTE1KSAtLS0KKworICBuZmFfZXZhbHVhdGVfcm93KDMpOgorICAgIEE6IDExNSA+ IFBSRVYoMTIwKSAtPiBmYWxzZQorICAgIEI6IDExNSA8IFBSRVYoMTIwKSAtPiB0cnVlCisgICAg dmFyTWF0Y2hlZCA9IFtmYWxzZSwgdHJ1ZV0KKworICBFeGVjUlBSUHJvY2Vzc1JvdygzKToKKyAg ICBQaGFzZSAxIChNYXRjaCk6CisgICAgICB7ZWxlbUlkeD0wLCBjb3VudHM9WzJdfTogQSBkb2Vz IG5vdCBtYXRjaCAtPiByZW1vdmVkCisgICAgICB7ZWxlbUlkeD0xLCBjb3VudHM9WzBdfTogQiBt YXRjaGVzIC0+IGNvdW50cz1bMV0KKyAgICBDMS5zdGF0ZXMgPSBbe2VsZW1JZHg9MSwgY291bnRz PVsxXX1dCisKKyAgICBQaGFzZSAzIChBZHZhbmNlKToKKyAgICAgIHtlbGVtSWR4PTEsIGNvdW50 cz1bMV19OiBCIChtaW49MSwgbWF4PTEpCisgICAgICAgIGNvdW50KDEpID49IG1heCgxKSAtPiB1 bmNvbmRpdGlvbmFsIGV4aXQKKyAgICAgICAgUmVzZXQgY291bnRzWzBdPTAsIG5leHQgPSAyIChG SU4pCisgICAgICBGSU4gcmVhY2hlZCAtPiBtYXRjaEVuZFJvdyA9IDMsIG1hdGNoZWRTdGF0ZSBy ZWNvcmRlZC4KKyAgICAgIEVhcmx5IHRlcm1pbmF0aW9uOiBubyByZW1haW5pbmcgc3RhdGVzLCBz byBjb21wbGV0ZWQgaW1tZWRpYXRlbHkuCisgICAgQzEuc3RhdGVzID0gW10gKGVtcHR5IGFmdGVy IHJlYWNoaW5nIEZJTikKKworICBDMS5zdGF0ZXMgaXMgZW1wdHkgYW5kIG1hdGNoRW5kUm93PTMg Pj0gbWF0Y2hTdGFydFJvdz0xIC0+IG1hdGNoIHN1Y2NlZWRzLgorCisgIHJwcl9tYXRjaF9zdGFy dCA9IDEsIHJwcl9tYXRjaF9sZW5ndGggPSAzCisKKy0tLSBSb3cgNCAocHJpY2U9MTMwKSAtLS0K KworICB1cGRhdGVfcmVkdWNlZF9mcmFtZSg0KSBjYWxsZWQuCisgIEMzIHdhcyBhbHJlYWR5IGNy ZWF0ZWQgYnV0IG1hdGNoU3RhcnRSb3c9Mywgc28gaXQgaXMgbm90IGFwcGxpY2FibGUuCisgIE5l dyBjb250ZXh0IEM0IGNyZWF0ZWQgKG1hdGNoU3RhcnRSb3c9NCkuCisKKyAgbmZhX2V2YWx1YXRl X3Jvdyg0KToKKyAgICBBOiAxMzAgPiBQUkVWKDExNSkgLT4gdHJ1ZQorICAgIEI6IDEzMCA8IFBS RVYoMTE1KSAtPiBmYWxzZQorCisgIC4uLiBObyBzdWJzZXF1ZW50IHJvd3MsIHNvIEV4ZWNSUFJG aW5hbGl6ZUFsbENvbnRleHRzKCkgaXMgY2FsbGVkLgorICBNYXRjaCBpbmNvbXBsZXRlIC0+IHVu bWF0Y2hlZC4KKworWEktNS4gRmluYWwgUmVzdWx0CisKKyAgUm93IDA6IHVubWF0Y2hlZCAgICAg LT4gcmVkdWNlZCBmcmFtZSBlbXB0eSAod2luZG93IGZ1bmNzIE5VTEwsIGNvdW50KCkgMCkKKyAg Um93IDE6IG1hdGNoIGhlYWQgICAgLT4gZnJhbWUgPSByb3dzIDEgdGhyb3VnaCAzCisgIFJvdyAy OiBpbnNpZGUgbWF0Y2ggIC0+IHNraXBwZWQKKyAgUm93IDM6IGluc2lkZSBtYXRjaCAgLT4gc2tp cHBlZAorICBSb3cgNDogdW5tYXRjaGVkICAgICAtPiByZWR1Y2VkIGZyYW1lIGVtcHR5ICh3aW5k b3cgZnVuY3MgTlVMTCwgY291bnQoKSAwKQorCitDaGFwdGVyIFhJSSAgU3VtbWFyeSBvZiBLZXkg RGVzaWduIERlY2lzaW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitYSUktMS4gRmxhdCBBcnJh eSB2cyBUcmVlLUJhc2VkIE5GQQorCisgIFRoZSBjb21waWxlZCBwYXR0ZXJuIGlzIHN0b3JlZCBh cyBhIGZsYXQgYXJyYXkgb2YgZml4ZWQtc2l6ZSAxNi1ieXRlCisgIFJQUlBhdHRlcm5FbGVtZW50 IHN0cnVjdHMgcmF0aGVyIHRoYW4gYXMgYSB0cmVlLgorCisgIFRoZSBhcnJheSBpcyBjb250aWd1 b3VzIGFuZCBjYWNoZS1mcmllbmRseSwgZWxlbWVudHMgcmVmZXJlbmNlIGVhY2gKKyAgb3RoZXIg YnkgMi1ieXRlIGluZGV4IGluc3RlYWQgb2YgYnkgcG9pbnRlciwgYW5kIHRoZSB3aG9sZSBzdHJ1 Y3R1cmUKKyAgY2FuIGJlIHNlcmlhbGl6ZWQgd2l0aCBtZW1jcHkgd2hlbiBwYXNzZWQgdG8gcGxh biBub2Rlcy4KKworWElJLTIuIEZvcndhcmQtb25seSBFeGVjdXRpb24gdnMgQmFja3RyYWNraW5n CisKKyAgVGhlIE5GQSBpcyBzaW11bGF0ZWQgZm9yd2FyZC1vbmx5LCB0cmFja2luZyBhIHNldCBv ZiBsaXZlIHN0YXRlcywKKyAgcmF0aGVyIHRoYW4gYnkgYmFja3RyYWNraW5nLgorCisgIEJhY2t0 cmFja2luZyB3b3VsZCB0YWtlIGV4cG9uZW50aWFsIHRpbWUgaW4gdGhlIHdvcnN0IGNhc2UsIHdo ZXJlYXMKKyAgZm9yd2FyZC1vbmx5IE5GQSBzaW11bGF0aW9uIGlzIHBvbHlub21pYWwuICBGb3J3 YXJkLW9ubHkgYWxzbyBmaXRzIHRoZQorICB3aW5kb3cgcGlwZWxpbmUsIHdoaWNoIGRlbGl2ZXJz IHNvcnRlZCByb3dzIHNlcXVlbnRpYWxseTogaXQgbmVlZHMgbm8KKyAgcmUtZmV0Y2hpbmcgb2Yg ZWFybGllciByb3dzLCBhbmQgZWFjaCByb3cncyBERUZJTkUgY29uZGl0aW9ucyAoU1FMCisgIGV4 cHJlc3Npb25zIHN1Y2ggYXMgUFJFViBvciBydW5uaW5nIGFnZ3JlZ2F0ZXMsIHdpdGggaGlnaCBy ZS1ldmFsdWF0aW9uCisgIGNvc3QpIGFyZSBldmFsdWF0ZWQgb25seSBvbmNlLiAgREZTIG9yZGVy IHlpZWxkcyBwcmVmZXJtZW50IG5hdHVyYWxseSwKKyAgd2l0aCBncmVlZHkgb3IgcmVsdWN0YW50 IGJlaGF2aW9yIHBlciBxdWFudGlmaWVyIG9idGFpbmVkIGJ5IHJldmVyc2luZworICB0aGF0IG9y ZGVyLgorCitYSUktMy4gUGVyLUNvbnRleHQgTWFuYWdlbWVudAorCisgIEEgc2VwYXJhdGUgbWF0 Y2ggY29udGV4dCBpcyBtYWludGFpbmVkIGZvciBlYWNoIHN0YXJ0IHJvdy4KKworICBUaGlzIHN1 cHBvcnRzIG92ZXJsYXBwaW5nIG1hdGNoZXMgdW5kZXIgU0tJUCBUTyBORVhUIFJPVywgZGV0ZXJt aW5lcworICBlYWNoIHJvdydzIGZyYW1lIGluZGVwZW5kZW50bHksIGFuZCBsZXRzIHRoZSBhYnNv cnB0aW9uIG9wdGltaXphdGlvbgorICBlbGltaW5hdGUgcmVkdW5kYW50IGNvbnRleHRzIGluIE8o bikuCisKK1hJSS00LiBNZW1vcnkgUG9vbCBNYW5hZ2VtZW50CisKKyAgTkZBIHN0YXRlcyBhcmUg bWFuYWdlZCB0aHJvdWdoIGEgY3VzdG9tIGZyZWUgbGlzdCwgYW5kIGJvdGggUlBSTkZBU3RhdGUK KyAgYW5kIFJQUk5GQUNvbnRleHQgYXJlIGFsbG9jYXRlZCBpbiBhIHBhcnRpdGlvbi1saWZlc3Bh biBtZW1vcnkgY29udGV4dAorICB0aGF0IGlzIGZyZWVkIGluIHJlbGVhc2VfcGFydGl0aW9uLgor CisgIE5GQSBzdGF0ZXMgYXJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBpbiBsYXJnZSBudW1iZXJz IHBlciByb3csIHNvIHRoZQorICBmcmVlIGxpc3QgYXZvaWRzIHBhbGxvYy9wZnJlZSBvdmVyaGVh ZC4gIFRoZWlyIHNpemUgdmFyaWVzICh0aGUKKyAgY291bnRzW10gYXJyYXkpLCBidXQgbWF4RGVw dGggaXMgZml4ZWQgd2l0aGluIGEgc2luZ2xlIHF1ZXJ5LCBzbyBhbGwKKyAgc3RhdGVzIGhhdmUg dGhlIHNhbWUgc2l6ZS4KKworWElJLTUuIEV4ZWN1dGlvbiBPcHRpbWl6YXRpb24gU3VtbWFyeQor CisgIFRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9ucyBtYWtlIHRoZSBORkEgc2ltdWxhdGlvbiBw cmFjdGljYWwuCisKKyAgLS0gQ29tcGlsZS10aW1lIC0tCisKKyAgKDEpIEFTVCBPcHRpbWl6YXRp b24gKElWLTMpCisKKyAgICBTaW1wbGlmaWVzIHRoZSBBU1QgYmVmb3JlIGNvbnZlcnRpbmcgdGhl IHBhdHRlcm4gdG8gYW4gTkZBLgorICAgIFJlZHVjZXMgdGhlIG51bWJlciBvZiBORkEgZWxlbWVu dHMgdGhyb3VnaCBjb25zZWN1dGl2ZSB2YXJpYWJsZQorICAgIG1lcmdpbmcgKEEgQSAtPiBBezJ9 KSwgU0VRIGZsYXR0ZW5pbmcsIHF1YW50aWZpZXIgbXVsdGlwbGljYXRpb24sCisgICAgYW5kIG90 aGVyIHRyYW5zZm9ybWF0aW9ucy4KKworICAgIFNpZ25pZmljYW5jZTogUmVkdWNpbmcgdGhlIGVs ZW1lbnQgY291bnQgZGlyZWN0bHkgc2hyaW5rcyB0aGUgc3RhdGUKKyAgICBzcGFjZSwgZGVjcmVh c2luZyB0aGUgY29zdCBvZiBhbGwgc3Vic2VxdWVudCBydW50aW1lIHBoYXNlcyAobWF0Y2gsCisg ICAgYWJzb3JiLCBhZHZhbmNlKS4KKworICAtLSBSdW50aW1lOiBhZHZhbmNlIHBoYXNlIC0tCisK KyAgKDIpIEdyb3VwIFNraXAgKElYLTQoYikpCisKKyAgICBBdCB0aGUgQkVHSU4gb2YgYSBncm91 cCB3aXRoIG1pbj0wLCB1c2VzIGp1bXAgdG8gc2tpcCB0aGUgZW50aXJlCisgICAgZ3JvdXAuIE1v dmVzIGRpcmVjdGx5IHRvIHRoZSBmaXJzdCBlbGVtZW50IG91dHNpZGUgdGhlIGdyb3VwIHdpdGhv dXQKKyAgICBleHBsb3JpbmcgdGhlIGdyb3VwIGJvZHkuIEdyZWVkeSBlbnRlcnMgdGhlbiBza2lw czsgUmVsdWN0YW50IHNraXBzCisgICAgdGhlbiBlbnRlcnMuCisKKyAgICBTaWduaWZpY2FuY2U6 IEZvciBvcHRpb25hbCBncm91cHMgKG1pbj0wKSwgaW1tZWRpYXRlbHkgZ2VuZXJhdGVzCisgICAg YSBza2lwIHBhdGggd2l0aG91dCBleHBsb3JpbmcgdGhlIGJvZHksIGF2b2lkaW5nIHVubmVjZXNz YXJ5IERGUworICAgIGV4cGFuc2lvbi4KKworICAoMykgU3RhdGUgRGVkdXBsaWNhdGlvbiAoSVgt NSkKKworICAgIER1cmluZyBhZHZhbmNlLCBERlMgbWF5IGdlbmVyYXRlIHN0YXRlcyB3aXRoIHRo ZSBzYW1lIChlbGVtSWR4LAorICAgIGNvdW50cykgY29tYmluYXRpb24gdGhyb3VnaCBtdWx0aXBs ZSBwYXRocy4gQWRkaXRpb25hbGx5LCBmb3IKKyAgICBncm91cCBhYnNvcnB0aW9uLCBuZmFfbWF0 Y2ggcGVyZm9ybXMgaW5saW5lIGFkdmFuY2UgZnJvbSBib3VuZGVkCisgICAgVkFScyAoY291bnQg Pj0gbWF4KSB3aXRoaW4gdGhlIGFic29yYmFibGUgcmVnaW9uIChBQlNPUkJBQkxFX0JSQU5DSCkK KyAgICB0aHJvdWdoIEVORCBjaGFpbnMgdG8gcmVhY2ggdGhlIGp1ZGdtZW50IHBvaW50IChBQlNP UkJBQkxFIEVORCkuCisgICAgVGhpcyBwcm9jZXNzIGNhbiBhbHNvIHByb2R1Y2UgZHVwbGljYXRl IHN0YXRlcyByZWFjaGluZyB0aGUgc2FtZSBFTkQuCisgICAgbmZhX2FkZF9zdGF0ZV91bmlxdWUo KSBibG9ja3MgZHVwbGljYXRlIGFkZGl0aW9uIG9mIGlkZW50aWNhbCBzdGF0ZXMKKyAgICBpbiBi b3RoIGNhc2VzLgorCisgICAgU2lnbmlmaWNhbmNlOiBQcmV2ZW50cyBleHBvbmVudGlhbCBncm93 dGggb2YgdGhlIHN0YXRlIGNvdW50IGluCisgICAgQUxUIGJyYW5jaGVzIGFuZCBxdWFudGlmaWVy IGV4cGFuc2lvbi4gU2luY2UgREZTIG9yZGVyIGNhdXNlcyB0aGUKKyAgICBwcmVmZXJyZWQgYnJh bmNoJ3Mgc3RhdGUgdG8gYmUgcmVnaXN0ZXJlZCBmaXJzdCwgaWRlbnRpY2FsIHN0YXRlcworICAg IGZyb20gbG93ZXItcHJpb3JpdHkgYnJhbmNoZXMgYXJlIGF1dG9tYXRpY2FsbHkgZGlzY2FyZGVk LCB0aGVyZWJ5CisgICAgYWxzbyBndWFyYW50ZWVpbmcgcHJlZmVybWVudC4KKworICAoNCkgQ3lj bGUgRGV0ZWN0aW9uIGFuZCBGYXN0LUZvcndhcmQgKElYLTYsIElYLTQoYykpCisKKyAgICBXaGVu IGEgbnVsbGFibGUgZ3JvdXAgYm9keSAoZS5nLiwgQT8pIHJlcGVhdHMgZW1wdHkgbWF0Y2hlcywK KyAgICB0aGUgRU5EIC0+IEJFR0lOIGxvb3AtYmFjayBjYW4gY29udGludWUgaW5kZWZpbml0ZWx5 LgorCisgICAgVHdvIG1lY2hhbmlzbXMgcmVzb2x2ZSB0aGlzOgorICAgIC0gQSB2aXNpdGVkIGJp dG1hcCAobmZhVmlzaXRlZEVsZW1zKSBibG9ja3MgcmV2aXNpdGF0aW9uIG9mIHRoZQorICAgICAg c2FtZSBlbGVtZW50LCBwcmV2ZW50aW5nIGluZmluaXRlIGxvb3BzIChzYWZldHkpCisgICAgLSBB dCBhbiBFTkQgd2l0aCB0aGUgUlBSX0VMRU1fRU1QVFlfTE9PUCBmbGFnIHNldCwgd2hlbgorICAg ICAgY291bnQgPCBtaW4sIHRoZSByZW1haW5pbmcgcmVxdWlyZWQgaXRlcmF0aW9ucyBhcmUgdHJl YXRlZCBhcworICAgICAgZW1wdHkgbWF0Y2hlcyBhbmQgYSBmYXN0LWZvcndhcmQgZXhpdCBwYXRo IG91dCBvZiB0aGUgZ3JvdXAgaXMKKyAgICAgIGFkZGVkIChjb3JyZWN0bmVzcykKKworICAgIFNp Z25pZmljYW5jZTogQ3ljbGUgZGV0ZWN0aW9uIGd1YXJhbnRlZXMgdGVybWluYXRpb24sIGFuZAor ICAgIGZhc3QtZm9yd2FyZCBndWFyYW50ZWVzIHRoYXQgdGhlIG1pbiBjb25kaXRpb24gaXMgc2F0 aXNmaWVkLgorICAgIFdpdGhvdXQgdGhlc2UsIHBhdHRlcm5zIGNvbnRhaW5pbmcgbnVsbGFibGUg Z3JvdXBzIHdvdWxkIGZhbGwKKyAgICBpbnRvIGluZmluaXRlIGxvb3BzIG9yIGZhaWwgdG8gbWF0 Y2guCisKKyAgKDUpIE1hdGNoIFBydW5pbmcgKElYLTQoZSkpCisKKyAgICBXaGVuIGEgc3RhdGUg cmVhY2hlcyBGSU4gZHVyaW5nIGFkdmFuY2UsIGFsbCByZW1haW5pbmcgdW5wcm9jZXNzZWQKKyAg ICBzdGF0ZXMgb2YgdGhhdCBjb250ZXh0IGFyZSByZW1vdmVkLiBCZWNhdXNlIG9mIERGUyBvcmRl ciwgdGhlIHBhdGgKKyAgICB0aGF0IHJlYWNoZXMgRklOIGZpcnN0IGhhcyB0aGUgaGlnaGVzdCBw cmVmZXJtZW50LCBzbyB0aGUgcmVtYWluaW5nCisgICAgcGF0aHMgYXJlIGluZmVyaW9yLgorCisg ICAgU2lnbmlmaWNhbmNlOiBPbmNlIHRoZSBiZXN0IG1hdGNoIGlzIGRldGVybWluZWQsIGV4cGxv cmF0aW9uIG9mCisgICAgaW5mZXJpb3IgcGF0aHMgaXMgaW1tZWRpYXRlbHkgdGVybWluYXRlZC4g VGhpcyBtZWNoYW5pc20gYWNoaWV2ZXMKKyAgICBib3RoIHByZWZlcm1lbnQgZ3VhcmFudGVlcyBh bmQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgorCisgIC0tIFJ1bnRpbWU6IGludGVyLWNvbnRl eHQgLS0KKworICAoNikgRWFybHkgVGVybWluYXRpb24gKFNLSVAgUEFTVCBMQVNUIFJPVykKKwor ICAgIEluIFNLSVAgUEFTVCBMQVNUIFJPVyBtb2RlLCB3aGVuIGEgbWF0Y2ggaXMgZm91bmQsIHN1 YnNlcXVlbnQKKyAgICBjb250ZXh0cyB3aG9zZSBzdGFydCByb3dzIGZhbGwgd2l0aGluIHRoZSBt YXRjaCByYW5nZSBhcmUgcHJ1bmVkCisgICAgaW1tZWRpYXRlbHkgd2l0aG91dCBmdXJ0aGVyIHBy b2Nlc3NpbmcuCisgICAgSW4gU0tJUCBUTyBORVhUIFJPVyBtb2RlLCBvdmVybGFwcGluZyBjb250 ZXh0cyBhcmUgcHJlc2VydmVkCisgICAgYmVjYXVzZSBlYWNoIHJvdyByZXF1aXJlcyBpdHMgb3du IGluZGVwZW5kZW50IG1hdGNoLgorCisgICAgU2lnbmlmaWNhbmNlOiBQcnVuZXMgc3Vic2VxdWVu dCBjb250ZXh0cyB3aG9zZSBzdGFydCByb3dzIG92ZXJsYXAKKyAgICB3aXRoIGEgcHJpb3IgbWF0 Y2ggcmFuZ2UsIGF2b2lkaW5nIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcuCisKKyAgKDcpIENvbnRl eHQgQWJzb3JwdGlvbiAoQ2hhcHRlciBWSUlJKQorCisgICAgSWYgYW4gaW5kZXBlbmRlbnQgY29u dGV4dCBpcyBjcmVhdGVkIGZvciBlYWNoIHJvdywgTyhuXjIpIHN0YXRlcworICAgIGFjY3VtdWxh dGUuIEJ5IGV4cGxvaXRpbmcgdGhlIG1vbm90b25pY2l0eSB0aGF0IGFuIGVhcmxpZXItc3RhcnRl ZAorICAgIGNvbnRleHQgc3Vic3VtZXMgdGhlIHN0YXRlcyBvZiBhIGxhdGVyLXN0YXJ0ZWQgY29u dGV4dCwgcmVkdW5kYW50CisgICAgY29udGV4dHMgYXJlIGVsaW1pbmF0ZWQgZWFybHkuCisKKyAg ICBBYnNvcmJhYmlsaXR5IGlzIGRldGVybWluZWQgcGVyLWVsZW1lbnQ7IGNvbXBhcmlzb24gaXMg cGVyZm9ybWVkCisgICAgb25seSBhdCBlbGVtZW50cyB3aXRoIHRoZSBSUFJfRUxFTV9BQlNPUkJB QkxFIGZsYWcgKHNlZSBJVi01KS4KKworICAgIFNpZ25pZmljYW5jZTogS2VlcHMgdGhlIG51bWJl ciBvZiBhY3RpdmUgY29udGV4dHMgYXQgYSBjb25zdGFudAorICAgIGxldmVsLCBhY2hpZXZpbmcg TyhuXjIpIC0+IE8obikgdGltZSBjb21wbGV4aXR5LiBXaXRob3V0IHRoaXMsCisgICAgcGVyZm9y bWFuY2UgZGVncmFkZXMgc2hhcnBseSBvbiBsb25nIHBhcnRpdGlvbnMuCisKK0FwcGVuZGl4IEEu IEtleSBGdW5jdGlvbiBJbmRleAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIEZ1bmN0aW9uICAg ICAgICAgICAgICAgICAgICAgIEZpbGUgICAgICAgICAgICAgICAgICBSb2xlCisgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIHRyYW5zZm9ybVJQUiAgICAgICAgICAgICAgICAgIHBhcnNlX3Jwci5jICAg ICAgICAgICBQYXJzZXIgZW50cnkgcG9pbnQKKyAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlICAgICAg ICAgcGFyc2VfcnByLmMgICAgICAgICAgIERFRklORSB0cmFuc2Zvcm1hdGlvbgorICBjb2xsZWN0 UGF0dGVyblZhcmlhYmxlcyAgICAgICBycHIuYyAgICAgICAgICAgICAgICAgVmFyaWFibGUgY29s bGVjdGlvbgorICBidWlsZERlZmluZVZhcmlhYmxlTGlzdCAgICAgICBycHIuYyAgICAgICAgICAg ICAgICAgREVGSU5FIHZhcmlhYmxlIGxpc3QKKyAgYnVpbGRSUFJQYXR0ZXJuICAgICAgICAgICAg ICAgcnByLmMgICAgICAgICAgICAgICAgIE5GQSBjb21waWxhdGlvbiBtYWluCisgIG9wdGltaXpl UlBSUGF0dGVybiAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBBU1Qgb3B0aW1pemF0 aW9uCisgIGZpbGxSUFJQYXR0ZXJuICAgICAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAg ICBORkEgZWxlbWVudCBnZW5lcmF0aW9uCisgIGZpbmFsaXplUlBSUGF0dGVybiAgICAgICAgICAg IHJwci5jICAgICAgICAgICAgICAgICBGaW5hbGl6YXRpb24KKyAgY29tcHV0ZUFic29yYmFiaWxp dHkgICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIEFic29ycHRpb24gYW5hbHlzaXMKKyAg dXBkYXRlX3JlZHVjZWRfZnJhbWUgICAgICAgICAgbm9kZVdpbmRvd0FnZy5jICAgICAgIEV4ZWN1 dGlvbiBtYWluIGxvb3AKKyAgbmZhX2V2YWx1YXRlX3JvdyAgICAgICAgICAgICAgbm9kZVdpbmRv d0FnZy5jICAgICAgIERFRklORSBldmFsdWF0aW9uCisgIEV4ZWNSUFJTdGFydENvbnRleHQgICAg ICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBDb250ZXh0IGNyZWF0aW9uCisgIEV4ZWNSUFJQ cm9jZXNzUm93ICAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICAzLXBoYXNlIHByb2Nl c3NpbmcKKyAgbmZhX21hdGNoICAgICAgICAgICAgICAgICAgICAgZXhlY1JQUi5jICAgICAgICAg ICAgIFBoYXNlIDEKKyAgbmZhX2Fic29yYl9jb250ZXh0cyAgICAgICAgICAgZXhlY1JQUi5jICAg ICAgICAgICAgIFBoYXNlIDIKKyAgbmZhX2FkdmFuY2UgICAgICAgICAgICAgICAgICAgZXhlY1JQ Ui5jICAgICAgICAgICAgIFBoYXNlIDMKKyAgbmZhX2FkdmFuY2Vfc3RhdGUgICAgICAgICAgICAg ZXhlY1JQUi5jICAgICAgICAgICAgIFBlci1zdGF0ZSBicmFuY2hpbmcKKyAgbmZhX3JvdXRlX3Rv X2VsZW0gICAgICAgICAgICAgZXhlY1JQUi5jICAgICAgICAgICAgIEVsZW1lbnQgcm91dGluZwor ICBuZmFfYWR2YW5jZV9hbHQgICAgICAgICAgICAgICBleGVjUlBSLmMgICAgICAgICAgICAgQUxU IGhhbmRsaW5nCisgIG5mYV9hZHZhbmNlX2JlZ2luICAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAg ICAgICAgICBCRUdJTiBoYW5kbGluZworICBuZmFfYWR2YW5jZV9lbmQgICAgICAgICAgICAgICBl eGVjUlBSLmMgICAgICAgICAgICAgRU5EIGhhbmRsaW5nCisgIG5mYV9hZHZhbmNlX3ZhciAgICAg ICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBWQVIgaGFuZGxpbmcKKyAgbmZhX2FkZF9z dGF0ZV91bmlxdWUgICAgICAgICAgZXhlY1JQUi5jICAgICAgICAgICAgIERlZHVwbGljYXRpb24K KyAgbmZhX3N0YXRlc19jb3ZlcmVkICAgICAgICAgICAgZXhlY1JQUi5jICAgICAgICAgICAgIEFi c29ycHRpb24gY2hlY2sKKyAgbmZhX3JlZXZhbHVhdGVfZGVwZW5kZW50X3ZhcnMgZXhlY1JQUi5j ICAgICAgICAgICAgIFBlci1jb250ZXh0IHJlLWV2YWwKKyAgRXhlY1JQUkdldEhlYWRDb250ZXh0 ICAgICAgICAgZXhlY1JQUi5jICAgICAgICAgICAgIENvbnRleHQgbG9va3VwCisgIEV4ZWNSUFJG cmVlQ29udGV4dCAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBDb250ZXh0IGRlYWxs b2NhdGlvbgorICBFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cyAgICBleGVjUlBSLmMgICAgICAg ICAgICAgRGVhZCBjb250ZXh0IGNsZWFudXAKKyAgRXhlY1JQUkZpbmFsaXplQWxsQ29udGV4dHMg ICAgZXhlY1JQUi5jICAgICAgICAgICAgIFBhcnRpdGlvbi1lbmQgZmluYWxpemUKKyAgRXhlY1JQ UlJlY29yZENvbnRleHRTdWNjZXNzICAgZXhlY1JQUi5jICAgICAgICAgICAgIFN0YXRzOiBtYXRj aCBzdWNjZXNzCisgIEV4ZWNSUFJSZWNvcmRDb250ZXh0RmFpbHVyZSAgIGV4ZWNSUFIuYyAgICAg ICAgICAgICBTdGF0czogbWF0Y2ggZmFpbHVyZQorICBjb21wdXRlX2RlZmluZV9tZXRhZGF0YSAg ICAgICBjcmVhdGVwbGFuLmMgICAgICAgICAgVHJpbSBvZmZzZXQgY29tcHV0YXRpb24KKworQXBw ZW5kaXggQi4gRGF0YSBTdHJ1Y3R1cmUgUmVsYXRpb25zaGlwIERpYWdyYW0KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworICBQYXJzZXIgTGF5ZXIKKyAgLS0tLS0tLS0KKyAgUlBDb21tb25TeW50YXgK KyAgICB8LS0tIHJwU2tpcFRvOiBSUFNraXBUbworICAgIHwtLS0gaW5pdGlhbDogYm9vbAorICAg ICstLS0gcnBQYXR0ZXJuOiBSUFJQYXR0ZXJuTm9kZSogKHRyZWUpCisgICAgICAgICB8LS0tIG5v ZGVUeXBlOiBWQVIgfCBTRVEgfCBBTFQgfCBHUk9VUAorICAgICAgICAgfC0tLSBtaW4sIG1heDog cXVhbnRpZmllcgorICAgICAgICAgfC0tLSB2YXJOYW1lOiB2YXJpYWJsZSBuYW1lIChWQVIgb25s eSkKKyAgICAgICAgICstLS0gY2hpbGRyZW46IExpc3QqIChTRVEvQUxUL0dST1VQIG9ubHkpCisK KyAgUGxhbm5lciBMYXllcgorICAtLS0tLS0tLS0tCisgIFdpbmRvd0FnZyAocGxhbiBub2RlKQor ICAgIHwtLS0gcnBTa2lwVG86IFJQU2tpcFRvCisgICAgfC0tLSBkZWZpbmVDbGF1c2U6IExpc3Q8 VGFyZ2V0RW50cnk+CisgICAgKy0tLSBycFBhdHRlcm46IFJQUlBhdHRlcm4qCisgICAgICAgICB8 LS0tIG51bVZhcnM6IGludAorICAgICAgICAgfC0tLSB2YXJOYW1lczogY2hhcioqCisgICAgICAg ICB8LS0tIG1heERlcHRoOiBSUFJEZXB0aAorICAgICAgICAgfC0tLSBpc0Fic29yYmFibGU6IGJv b2wKKyAgICAgICAgIHwtLS0gbnVtRWxlbWVudHM6IGludAorICAgICAgICAgKy0tLSBlbGVtZW50 czogUlBSUGF0dGVybkVsZW1lbnRbXSAgKGZsYXQgYXJyYXkpCisgICAgICAgICAgICAgIHwtLS0g dmFySWQgICAgICAoMUIpCisgICAgICAgICAgICAgIHwtLS0gZGVwdGggICAgICAoMUIpCisgICAg ICAgICAgICAgIHwtLS0gZmxhZ3MgICAgICAoMUIpCisgICAgICAgICAgICAgIHwtLS0gcmVzZXJ2 ZWQgICAoMUIpCisgICAgICAgICAgICAgIHwtLS0gbWluLCBtYXggICAoNEIgKyA0QikKKyAgICAg ICAgICAgICAgKy0tLSBuZXh0LCBqdW1wICgyQiArIDJCKQorCisgIEV4ZWN1dG9yIExheWVyCisg IC0tLS0tLS0tLS0KKyAgV2luZG93QWdnU3RhdGUKKyAgICB8LS0tIHJwU2tpcFRvOiBSUFNraXBU byAoQUZURVIgTUFUQ0ggU0tJUCBtb2RlKQorICAgIHwtLS0gcnBQYXR0ZXJuOiBSUFJQYXR0ZXJu KiAoY29waWVkIGZyb20gcGxhbikKKyAgICB8LS0tIGRlZmluZVZhcmlhYmxlTGlzdDogTGlzdDxT dHJpbmc+ICh2YXJpYWJsZSBuYW1lcywgREVGSU5FIG9yZGVyKQorICAgIHwtLS0gZGVmaW5lQ2xh dXNlTGlzdDogTGlzdDxFeHByU3RhdGU+CisgICAgfC0tLSBuZmFWYXJNYXRjaGVkOiBib29sW10g KHBlci1yb3cgY2FjaGUpCisgICAgfC0tLSBkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50OiBCaXRt YXBzZXQqIChtYXRjaF9zdGFydF9kZXBlbmRlbnQKKyAgICB8ICAgICAgICBERUZJTkUgdmFyczsg c2VlIFZJLTQpCisgICAgfC0tLSBuZmFWaXNpdGVkRWxlbXM6IGJpdG1hcHdvcmQqIChjeWNsZSBk ZXRlY3Rpb24pCisgICAgfC0tLSBuZmFWaXNpdGVkTWluV29yZCAvIG5mYVZpc2l0ZWRNYXhXb3Jk OiBpbnQxNgorICAgIHwgICAgICAgICh0b3VjaGVkLXdvcmQgcmFuZ2UgZm9yIGZhc3QgcmVzZXQp CisgICAgfC0tLSBuZmFMYXN0UHJvY2Vzc2VkUm93OiBpbnQ2NCAoLTEgPSBub25lKQorICAgIHwt LS0gbmZhU3RhdGVTaXplOiBTaXplIChwcmUtY2FsY3VsYXRlZCBSUFJORkFTdGF0ZSBhbGxvY2F0 aW9uIHNpemUpCisgICAgfC0tLSBuZmFDb250ZXh0IDwtPiBuZmFDb250ZXh0VGFpbCAoZG91Ymx5 LWxpbmtlZCBsaXN0KQorICAgIHwgICArLS0tIFJQUk5GQUNvbnRleHQKKyAgICB8ICAgICAgIHwt LS0gc3RhdGVzOiBSUFJORkFTdGF0ZSogKGxpbmtlZCBsaXN0KQorICAgIHwgICAgICAgfCAgIHwt LS0gZWxlbUlkeAorICAgIHwgICAgICAgfCAgIHwtLS0gY291bnRzW10KKyAgICB8ICAgICAgIHwg ICArLS0tIGlzQWJzb3JiYWJsZQorICAgIHwgICAgICAgfC0tLSBtYXRjaFN0YXJ0Um93LCBtYXRj aEVuZFJvdworICAgIHwgICAgICAgfC0tLSBsYXN0UHJvY2Vzc2VkUm93CisgICAgfCAgICAgICB8 LS0tIG1hdGNoZWRTdGF0ZSAoY2xvbmVkIG9uIEZJTiBhcnJpdmFsKQorICAgIHwgICAgICAgfC0t LSBoYXNBYnNvcmJhYmxlU3RhdGUKKyAgICB8ICAgICAgICstLS0gYWxsU3RhdGVzQWJzb3JiYWJs ZQorICAgIHwtLS0gbmZhQ29udGV4dEZyZWUgKHJlY3ljbGluZyBwb29sKQorICAgICstLS0gbmZh U3RhdGVGcmVlIChyZWN5Y2xpbmcgcG9vbCkKKworQXBwZW5kaXggQy4gTkZBIEVsZW1lbnQgQXJy YXkgRXhhbXBsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQy0xLiBQQVRURVJOIChBIEIgQykK KworICBpZHggIHZhcklkICBkZXB0aCAgbWluICBtYXggIG5leHQgIGp1bXAKKyAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAwICAgQSAgICAgIDAgICAgICAx ICAgIDEgICAgMSAgICAgLTEKKyAgIDEgICBCICAgICAgMCAgICAgIDEgICAgMSAgICAyICAgICAt MQorICAgMiAgIEMgICAgICAwICAgICAgMSAgICAxICAgIDMgICAgIC0xCisgICAzICAgRklOICAg IDAgICAgICAxICAgIDEgICAgLTEgICAgLTEKKworQy0yLiBQQVRURVJOIChBKyBCKikKKworICBp ZHggIHZhcklkICBkZXB0aCAgbWluICBtYXggIG5leHQgIGp1bXAgIGZsYWdzCisgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgMCAgIEEgICAgICAwICAgICAgMSAgICBJTkYgIDEgICAgIC0xICAgIEFCU09S QkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSAorICAgMSAgIEIgICAgICAwICAgICAgMCAgICBJTkYg IDIgICAgIC0xCisgICAyICAgRklOICAgIDAgICAgICAxICAgIDEgICAgLTEgICAgLTEKKworICBP bmx5IEErIGlzIHRoZSBhYnNvcnB0aW9uIHBvaW50IChDYXNlIDEpLiBPbmNlIHBhc3QgQSwKKyAg YWJzb3JwdGlvbiBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBmb3IgdGhhdCBzdGF0ZS4KKworQy0z LiBQQVRURVJOIChBIHwgQiB8IEMpCisKKyAgaWR4ICB2YXJJZCAgZGVwdGggIG1pbiAgbWF4ICBu ZXh0ICBqdW1wCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IDAgICBBTFQgICAgMCAgICAgIDEgICAgMSAgICAxICAgICAtMSAgICBhbHRlcm5hdGlvbiBzdGFy dAorICAgMSAgIEEgICAgICAxICAgICAgMSAgICAxICAgIDQgICAgIDIgICAgIGJyYW5jaCAxIC0+ IEZJTiwganVtcCAtPiBicmFuY2ggMgorICAgMiAgIEIgICAgICAxICAgICAgMSAgICAxICAgIDQg ICAgIDMgICAgIGJyYW5jaCAyIC0+IEZJTiwganVtcCAtPiBicmFuY2ggMworICAgMyAgIEMgICAg ICAxICAgICAgMSAgICAxICAgIDQgICAgIC0xICAgIGJyYW5jaCAzIC0+IEZJTgorICAgNCAgIEZJ TiAgICAwICAgICAgMSAgICAxICAgIC0xICAgIC0xCisKK0MtNC4gUEFUVEVSTiAoKEEgQikrIEMp CisKKyAgaWR4ICB2YXJJZCAgICBkZXB0aCAgbWluICBtYXggIG5leHQgIGp1bXAgIGZsYWdzCisg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAwICAgQkVHSU4gICAgMCAgICAgIDEgICAgSU5GICAxICAg ICA0ICAgICBBQlNPUkJBQkxFX0JSQU5DSAorICAgMSAgIEEgICAgICAgIDEgICAgICAxICAgIDEg ICAgMiAgICAgLTEgICAgQUJTT1JCQUJMRV9CUkFOQ0gKKyAgIDIgICBCICAgICAgICAxICAgICAg MSAgICAxICAgIDMgICAgIC0xICAgIEFCU09SQkFCTEVfQlJBTkNICisgICAzICAgRU5EICAgICAg MCAgICAgIDEgICAgSU5GICA0ICAgICAxICAgICBBQlNPUkJBQkxFIHwgQUJTT1JCQUJMRV9CUkFO Q0gKKyAgIDQgICBDICAgICAgICAwICAgICAgMSAgICAxICAgIDUgICAgIC0xCisgICA1ICAgRklO ICAgICAgMCAgICAgIDEgICAgMSAgICAtMSAgICAtMQorCisgIENhc2UgMjogR1JPVVArIHdpdGgg ezEsMX0gYm9keSBWQVJzLiBBLCBCIGFyZSBicmFuY2hlczsKKyAgRU5EIGlzIHRoZSBhYnNvcnB0 aW9uIHBvaW50LiBDb21wYXJlIHdpdGggQy02IChDYXNlIDMpLgorCitDLTUuIFBBVFRFUk4gKChB IHwgQikrPyBDKQorCisgIGlkeCAgdmFySWQgICAgZGVwdGggIG1pbiAgbWF4ICAgbmV4dCAganVt cCAgZmxhZ3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMCAgIEJFR0lOICAgIDAgICAgICAxICAgIElORiAg IDEgICAgIDUgICAgIFJFTFVDVEFOVCwgZ3JvdXAgc3RhcnQKKyAgIDEgICBBTFQgICAgICAxICAg ICAgMSAgICAxICAgICAyICAgICAtMSAgICBhbHRlcm5hdGlvbiBzdGFydAorICAgMiAgIEEgICAg ICAgIDIgICAgICAxICAgIDEgICAgIDQgICAgIDMgICAgIGJyYW5jaCAxCisgICAzICAgQiAgICAg ICAgMiAgICAgIDEgICAgMSAgICAgNCAgICAgLTEgICAgYnJhbmNoIDIKKyAgIDQgICBFTkQgICAg ICAwICAgICAgMSAgICBJTkYgICA1ICAgICAxICAgICBSRUxVQ1RBTlQsIGdyb3VwIGVuZAorICAg NSAgIEMgICAgICAgIDAgICAgICAxICAgIDEgICAgIDYgICAgIC0xCisgICA2ICAgRklOICAgICAg MCAgICAgIDEgICAgMSAgICAgLTEgICAgLTEKKworQy02LiBQQVRURVJOICgoQSsgQikrIEMpICAt LSBBYnNvcmJhYmlsaXR5IGZsYWcgZXhhbXBsZQorCisgIGlkeCAgdmFySWQgICAgZGVwdGggIG1p biAgbWF4ICAgbmV4dCAganVtcCAgZmxhZ3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAwICAg QkVHSU4gICAgMCAgICAgIDEgICAgSU5GICAgMSAgICAgNCAgICAgQUJTT1JCQUJMRV9CUkFOQ0gs IGdyb3VwIHN0YXJ0CisgICAxICAgQSAgICAgICAgMSAgICAgIDEgICAgSU5GICAgMiAgICAgLTEg ICAgQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNICisgICAyICAgQiAgICAgICAgMSAgICAg IDEgICAgMSAgICAgMyAgICAgLTEKKyAgIDMgICBFTkQgICAgICAwICAgICAgMSAgICBJTkYgICA0 ICAgICAxICAgICBncm91cCBlbmQKKyAgIDQgICBDICAgICAgICAwICAgICAgMSAgICAxICAgICA1 ICAgICAtMQorICAgNSAgIEZJTiAgICAgIDAgICAgICAxICAgIDEgICAgIC0xICAgIC0xCisKKyAg UmVjdXJzZXMgZnJvbSBCRUdJTiBpbnRvIHRoZSBib2R5IC0+IEEgbWF0Y2hlcyBDYXNlIDEgKHNp bXBsZSBWQVIrKS4KKyAgQSBnZXRzIEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCwgQkVH SU4gZ2V0cyBBQlNPUkJBQkxFX0JSQU5DSC4KKyAgQiBhbmQgRU5EIGdldCBubyBmbGFncyAtPiBh YnNvcnB0aW9uIHN0b3BzIG9uY2UgdGhlIHN0YXRlIGFkdmFuY2VzIHRvIEIuCisgIChTZWUgSVYt NSBDYXNlIDMpCisKK0MtNy4gUEFUVEVSTiAoKEErIEIgfCBDKikrIEQpICAtLSBQZXItYnJhbmNo IGFic29ycHRpb24gaW4gQUxUCisKKyAgaWR4ICB2YXJJZCAgICBkZXB0aCAgbWluICBtYXggICBu ZXh0ICBqdW1wICBmbGFncworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDAgICBCRUdJTiAgICAw ICAgICAgMSAgICBJTkYgICAxICAgICA2ICAgICBBQlNPUkJBQkxFX0JSQU5DSAorICAgMSAgIEFM VCAgICAgIDEgICAgICAxICAgIDEgICAgIDIgICAgIC0xICAgIEFCU09SQkFCTEVfQlJBTkNICisg ICAyICAgQSAgICAgICAgMiAgICAgIDEgICAgSU5GICAgMyAgICAgNCAgICAgQUJTT1JCQUJMRSB8 IEFCU09SQkFCTEVfQlJBTkNICisgICAzICAgQiAgICAgICAgMiAgICAgIDEgICAgMSAgICAgNSAg ICAgLTEKKyAgIDQgICBDICAgICAgICAyICAgICAgMCAgICBJTkYgICA1ICAgICAtMSAgICBBQlNP UkJBQkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0gKKyAgIDUgICBFTkQgICAgICAwICAgICAgMSAgICBJ TkYgICA2ICAgICAxICAgICBFTVBUWV9MT09QCisgICA2ICAgRCAgICAgICAgMCAgICAgIDEgICAg MSAgICAgNyAgICAgLTEKKyAgIDcgICBGSU4gICAgICAwICAgICAgMSAgICAxICAgICAtMSAgICAt MQorCisgIEFMVCBicmFuY2hlcyBhcmUgY2hlY2tlZCBpbmRlcGVuZGVudGx5IGZvciBhYnNvcmJh YmlsaXR5LgorICBCcmFuY2ggMTogQSsgbWF0Y2hlcyBDYXNlIDEgLT4gQSBnZXRzIEFCU09SQkFC TEUuIEIgaGFzIG5vIGZsYWcuCisgIEJyYW5jaCAyOiBDKiBtYXRjaGVzIENhc2UgMSAtPiBDIGdl dHMgQUJTT1JCQUJMRS4KKyAgQm90aCBBIGFuZCBDIGdldCBBQlNPUkJBQkxFX0JSQU5DSCBhcyBw YXJ0IG9mIHRoZWlyIHJlc3BlY3RpdmUgYnJhbmNoCisgIHBhdGhzLgorICBFTkQgaGFzIEVNUFRZ X0xPT1A6IGJyYW5jaCAyIChDKikgaXMgbnVsbGFibGUsIG1ha2luZyB0aGUgZ3JvdXAgYm9keQor ICBudWxsYWJsZS4KKyAgQkVHSU4gYW5kIEFMVCBnZXQgQUJTT1JCQUJMRV9CUkFOQ0ggKG9uIHRo ZSBwYXRoIHRvIGFic29yYmFibGUgZWxlbWVudHMpLgorCisKK1JlZmVyZW5jZXM6CisKK1sxXSBJ U08vSUVDIDE5MDc1LTUgSW5mb3JtYXRpb24gdGVjaG5vbG9neSAtIEd1aWRhbmNlIGZvciB0aGUg dXNlIG9mCisgICAgZGF0YWJhc2UgbGFuZ3VhZ2UgU1FMIC0gUGFydCA1OiBSb3cgcGF0dGVybiBy ZWNvZ25pdGlvbgorCitbMl0gSVNPL0lFQyA5MDc1LTIgSW5mb3JtYXRpb24gdGVjaG5vbG9neSAt IERhdGFiYXNlIGxhbmd1YWdlcyAtIFNRTCAtCisgICAgUGFydCAyOiBGb3VuZGF0aW9uIChTUUwv Rm91bmRhdGlvbikKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBFbmQgb2YgZG9jdW1lbnQKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0007-Row-pattern-recognition-patch-tests-SQL-data.patch" Content-Disposition: attachment; filename="v49-0007-Row-pattern-recognition-patch-tests-SQL-data.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqle8z6 RnJvbSBiZDkxODA2ZTI1YTRhYjljNTFjNzA3ZmJlYjVjMGQyMTNiMDY0YzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDcvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoICh0ZXN0czogU1FMLCBkYXRhKS4K Ci0tLQogc3JjL3Rlc3QvcmVncmVzcy9kYXRhL3N0b2NrLmRhdGEgICAgICAgICB8IDE2MzIgKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgfCAgICA1ICsK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgICAgICAgICAgICAgfCAyMTIxICsrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICAgIHwgNDQwMyArKysr KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwg ICAgIHwgMzQ0NCArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2lu dGVncmF0aW9uLnNxbCB8ICA5NTAgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEu c3FsICAgICAgICAgfCAzNjMzICsrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAx NjE4OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9k YXRhL3N0b2NrLmRhdGEKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHIuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uu c3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4u c3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0 aW9uLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEu c3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9kYXRhL3N0b2NrLmRhdGEgYi9zcmMv dGVzdC9yZWdyZXNzL2RhdGEvc3RvY2suZGF0YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNjQ1YmI2NDNkZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2RhdGEvc3RvY2suZGF0YQpAQCAtMCwwICsxLDE2MzIgQEAKKzEJMQkzNjQuNzUwCTE1ODAw CTAuMDAwCTAuMDAwCTAuMDAwCisxCTIJMzY4LjI1MAkyMTIwMAkwLjAwMAkwLjAwMAkwLjAwMAor MQkzCTM2OC41MDAJMjQ0MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEJNAkzNjguNzUwCTIyOTAwCTAu MDAwCTAuMDAwCTAuMDAwCisxCTUJMzY5LjUwMAkzNTQwMAkwLjAwMAkwLjAwMAkwLjAwMAorMQk2 CTM2OS4wMDAJMjkzMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEJNwkzNjcuNzUwCTE5MDAwCTAuMDAw CTAuMDAwCTAuMDAwCisxCTgJMzc0LjEyNQkzNzIwMAkwLjAwMAkwLjAwMAkwLjAwMAorMgk5CTM0 My4yNTAJNTY4MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzIJMTAJMzM4LjUwMAk0NTIwMAkwLjAwMAkw LjAwMAkwLjAwMAorMgkxMQkzMzguNzUwCTQwOTAwCTAuMDAwCTAuMDAwCTAuMDAwCisyCTEyCTM0 NC43NTAJMzUyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzIJMTMJMzQ5Ljc1MAkyODUwMAkwLjAwMAkw LjAwMAkwLjAwMAorMgkxNAkzNDYuMDAwCTI1NjAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTE1CTM0 OS4wMDAJMjQ5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzMJMTYJMzQ5LjI1MAkyMDcwMAkwLjAwMAkw LjAwMAkwLjAwMAorMwkxNwkzNDkuNzUwCTIyMjAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTE4CTM1 MS4yNTAJMTk2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzMJMTkJMzUyLjAwMAkzMjUwMAkwLjAwMAkw LjAwMAkwLjAwMAorMwkyMAkzNDkuNTAwCTMyMjAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTIxCTM0 NC41MDAJMTg2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzMJMjIJMzQ1LjAwMAk2MTIwMAkwLjAwMAkw LjAwMAkwLjAwMAorNAkyMwkyMzguMjUwCTM3MTAwCTAuMDAwCTAuMDAwCTAuMDAwCis0CTI0CTIz MC42MjUJNjE1MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzQJMjUJMjIzLjAwMAkxNjE3MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzQJMjYJMjI5Ljg3NQk1NTMwMAkwLjAwMAkwLjAwMAkwLjAwMAorNAkyNwky MzUuMjUwCTM4NTAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTI4CTMxMC4wMDAJMzYwMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJMjkJMzExLjc1MAkyNjgwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzMAkz MTIuNzUwCTMxOTAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTMxCTMxNC43NTAJMjExMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJMzIJMzE1LjUwMAkyNzQwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzMwkz MTYuNTAwCTQwNzAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTM0CTMyMS43NTAJNTM1MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJMzUJMzI2LjAwMAk0ODcwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzNgkz MjIuNTAwCTQ2MDAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTM3CTMxNy41MDAJMzU2MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJMzgJMzI1LjUwMAkzNDAwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzOQkz MjcuMjUwCTMwNzAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTQwCTMyNy43NTAJMzY3MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJNDEJMzI4LjYyNQkyMzIwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQk0Mgkz MzAuNTAwCTI5NzAwCTAuMDAwCTAuMDAwCTAuMDAwCis1CTQzCTMzNi41MDAJMzkyMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzUJNDQJMzQwLjc1MAkzNDQwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQk0NQkz MzguNTAwCTMyMjAwCTAuMDAwCTAuMDAwCTAuMDAwCis2CTQ2CTM1My4wMDAJMjc4MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzYJNDcJMzUyLjAwMAk1NTYwMAkwLjAwMAkwLjAwMAkwLjAwMAorNgk0OAkz NTUuMDAwCTMxMzAwCTAuMDAwCTAuMDAwCTAuMDAwCis2CTQ5CTM1Ni4wMDAJMjY5MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzYJNTAJMzU4LjAwMAkxODkwMAkwLjAwMAkwLjAwMAkwLjAwMAorNgk1MQkz NjEuMjUwCTI2NDAwCTAuMDAwCTAuMDAwCTAuMDAwCis3CTUyCTMxMS43NTAJMjUxMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzcJNTMJMzE0LjAwMAkzNzkwMAkwLjAwMAkwLjAwMAkwLjAwMAorNwk1NAkz MTcuMDAwCTM0MDAwCTAuMDAwCTAuMDAwCTAuMDAwCis3CTU1CTMxNy43NTAJMjM3MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzcJNTYJMzE5LjAwMAkyMzQwMAkwLjAwMAkwLjAwMAkwLjAwMAorNwk1Nwkz MTYuNTAwCTI0MjAwCTAuMDAwCTAuMDAwCTAuMDAwCis4CTU4CTMxNi4wMDAJMzcyMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzgJNTkJMzE1LjAwMAkzMTUwMAkwLjAwMAkwLjAwMAkwLjAwMAorOAk2MAkz MDIuMDAwCTEyNDcwMAkwLjAwMAkwLjAwMAkwLjAwMAorOAk2MQkzMDAuMDAwCTE5NjEwMAkwLjAw MAkwLjAwMAkwLjAwMAorOAk2MgkyOTguMDAwCTcwMDAwCTAuMDAwCTAuMDAwCTAuMDAwCis4CTYz CTI5NC41MDAJODgyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzgJNjQJMjk2LjUwMAk1MzgwMAkwLjAw MAkwLjAwMAkwLjAwMAorOAk2NQkyOTkuMDAwCTQ3OTAwCTAuMDAwCTAuMDAwCTAuMDAwCis4CTY2 CTMwMS43NTAJMzMzMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzgJNjcJMjk5LjUwMAkzMTgwMAkwLjAw MAkwLjAwMAkwLjAwMAorOQk2OAkyOTkuNTAwCTc2NzAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTY5 CTI5Ni43NTAJNDE5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzkJNzAJMjkxLjI1MAk0NjcwMAkwLjAw MAkwLjAwMAkwLjAwMAorOQk3MQkyOTMuNzUwCTMxMTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTcy CTI5MC4wMDAJNDg5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzkJNzMJMjg3LjAwMAk1NjMwMAkwLjAw MAkwLjAwMAkwLjAwMAorOQk3NAkyODcuMDAwCTQwNzAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTc1 CTI4NS41MDAJMjc5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzkJNzYJMjg0LjAwMAkyNzQwMAkwLjAw MAkwLjAwMAkwLjAwMAorOQk3NwkyODYuMDAwCTIzNTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTc4 CTI5MS4yNTAJMzgwMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzkJNzkJMjk2Ljc1MAk0MjkwMAkwLjAw MAkwLjAwMAkwLjAwMAorOQk4MAkyOTUuMDAwCTE5NTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTgx CTMxNC4wMDAJMTAyOTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTgyCTMxNS43NTAJODQxMDAJMC4w MDAJMC4wMDAJMC4wMDAKKzEwCTgzCTMwMi4wMDAJNDQ2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEw CTg0CTMwMS4wMDAJNDUwMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTg1CTI5NC43NTAJMjc5MDAJ MC4wMDAJMC4wMDAJMC4wMDAKKzEwCTg2CTI5My41MDAJMTc2MDAJMC4wMDAJMC4wMDAJMC4wMDAK KzEwCTg3CTI5MS43NTAJMjE2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTg4CTI5MC41MDAJMzAz MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTg5CTI5MS43NTAJMjI3MDAJMC4wMDAJMC4wMDAJMC4w MDAKKzEwCTkwCTI5OC43NTAJMTYyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTkxCTMwMi4yNTAJ NDkxMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTkyCTMwNS41MDAJMzU1MDAJMC4wMDAJMC4wMDAJ MC4wMDAKKzEwCTkzCTMwOS43NTAJNjMyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEwCTk0CTMwOS41 MDAJNDMyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzExCTk1CTM4My43NTAJMTkzMDAJMC4wMDAJMC4w MDAJMC4wMDAKKzExCTk2CTM4OS41MDAJMjg5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzExCTk3CTM5 NC41MDAJNDE3MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzExCTk4CTM5Ni4yNTAJMjgyMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzExCTk5CTQwMS4wMDAJNTUwMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzExCTEw MAk0MDIuMDAwCTQxMTAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMQkxMDEJNDAzLjAwMAkzODUwMAkw LjAwMAkwLjAwMAkwLjAwMAorMTEJMTAyCTQwNC4wMDAJMzMxMDAJMC4wMDAJMC4wMDAJMC4wMDAK KzExCTEwMwk0MDQuMDAwCTMzODAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMgkxMDQJMzg4LjAwMAky NTgwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTA1CTM4OC41MDAJNDQ5MDAJMC4wMDAJMC4wMDAJ MC4wMDAKKzEyCTEwNgkzOTAuMDAwCTM4NDAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMgkxMDcJMzkw Ljc1MAkyMzIwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTA4CTM5Ni41MDAJMjUxMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzEyCTEwOQkzOTguNzUwCTM4MDAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMgkx MTAJMzk4LjAwMAkzMzYwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTExCTM5NC41MDAJNTQwMDAJ MC4wMDAJMC4wMDAJMC4wMDAKKzEyCTExMgkzOTcuMDAwCTIwOTAwCTAuMDAwCTAuMDAwCTAuMDAw CisxMwkxMTMJMzk4LjEyNQkyODUwMAkwLjAwMAkzOTYuMDAwCTQwMS4wMDAKKzEzCTExNAkzOTQu NTAwCTM5OTAwCTAuMDAwCTM5Mi41MDAJMzk3LjUwMAorMTMJMTE1CTM5MC4wMDAJMzc2MDAJMC4w MDAJMzkwLjAwMAkzOTMuNzUwCisxMwkxMTYJMzg5LjUwMAkzMTAwMAkwLjAwMAkzODYuMDAwCTM5 Mi43NTAKKzEzCTExNwkzODUuNTAwCTI1ODAwCTAuMDAwCTM4NS41MDAJMzg5Ljc1MAorMTMJMTE4 CTM5MC41MDAJMTgwMDAJMC4wMDAJMzg1LjAwMAkzOTAuNTAwCisxMwkxMTkJMzkxLjc1MAkxNDYw MAkwLjAwMAkzOTEuNTAwCTM5NS41MDAKKzEzCTEyMAkzOTkuMDAwCTI3ODAwCTAuMDAwCTM5Mi4y NTAJMzk5LjAwMAorMTMJMTIxCTQwMi4wMDAJNDY1MDAJMC4wMDAJMzk5LjAwMAk0MDMuMDAwCisx MwkxMjIJNDA5LjAwMAkzNjMwMAkwLjAwMAk0MDQuNTAwCTQwOS41MDAKKzEzCTEyMwk0MDkuMjUw CTU0NTAwCTAuMDAwCTQwOS4yNTAJNDEzLjc1MAorMTMJMTI0CTQxMS43NTAJNDYyMDAJMC4wMDAJ NDA2LjAwMAk0MTIuNTAwCisxMwkxMjUJNDE4Ljc1MAk2MDIwMAkwLjAwMAk0MTIuNzUwCTQxOS41 MDAKKzEzCTEyNgk0MTguNzUwCTMyNzAwCTAuMDAwCTQxNi4wMDAJNDIwLjAwMAorMTQJMTI3CTQx MS41MDAJMjQ4MDAJMC4wMDAJNDExLjI1MAk0MTUuNTAwCisxNAkxMjgJNDE1LjI1MAk1MzAwMAkw LjAwMAk0MTIuMDAwCTQyMy4wMDAKKzE0CTEyOQk0MjAuMDAwCTQ5NzAwCTAuMDAwCTQxNy4yNTAJ NDI1LjAwMAorMTQJMTMwCTQyMy4yNTAJNjg3MDAJMC4wMDAJNDIyLjc1MAk0MjkuMDAwCisxNAkx MzEJNDIyLjUwMAk0NTQwMAkwLjAwMAk0MjAuNzUwCTQyNC43NTAKKzE0CTEzMgk0MjQuMDAwCTIw OTAwCTAuMDAwCTQyMC43NTAJNDI0LjI1MAorMTQJMTMzCTQyOC44NzUJMzc2MDAJMC4wMDAJNDI3 LjAwMAk0MzAuMDAwCisxNAkxMzQJNDM5LjAwMAk1OTgwMAkwLjAwMAk0MjcuMjUwCTQzOS4wMDAK KzE1CTEzNQk0NDguNzUwCTI5MzAwCTAuMDAwCTQ0NC43NTAJNDQ5LjUwMAorMTUJMTM2CTQ0NC4w MDAJMjc0MDAJMC4wMDAJNDQ0LjAwMAk0NDkuNzUwCisxNQkxMzcJNDQzLjUwMAkzMDkwMAkwLjAw MAk0NDAuNTAwCTQ0OC41MDAKKzE1CTEzOAk0MzcuODc1CTI2NTAwCTAuMDAwCTQzNy41MDAJNDQy Ljg3NQorMTUJMTM5CTQzNy43NTAJMjkwMDAJMC4wMDAJNDMzLjUwMAk0NDAuMDAwCisxNQkxNDAJ NDMwLjUwMAkyNzUwMAkwLjAwMAk0MzAuMjUwCTQ0MS4yNTAKKzE1CTE0MQk0MjUuNTAwCTUyMzAw CTAuMDAwCTQyNC4yNTAJNDI4Ljg4MAorMTUJMTQyCTQyOC4wMDAJNTk5MDAJMC4wMDAJNDE5LjUw MAk0MjkuMDAwCisxNQkxNDMJNDMyLjUwMAkzNDYwMAkwLjAwMAk0MjcuMjUwCTQzNS4wMDAKKzE1 CTE0NAk0MzcuNTAwCTMzMTAwCTAuMDAwCTQzMi4wMDAJNDM4LjUwMAorMTUJMTQ1CTQzNC41MDAJ MjQzMDAJMC4wMDAJNDM0LjAwMAk0MzcuNzUwCisxNQkxNDYJNDMxLjUwMAkyODUwMAkwLjAwMAk0 MzAuNTAwCTQzNy41MDAKKzE1CTE0Nwk0MjguMDAwCTE1NTAwCTAuMDAwCTQyNy4wMDAJNDMyLjc1 MAorMTUJMTQ4CTQyNC4yNTAJNDQ5MDAJMC4wMDAJNDI0LjAwMAk0MjguNzUwCisxNQkxNDkJNDIz LjAwMAkzNDAwMAkwLjAwMAk0MjAuMDAwCTQyNi41MDAKKzE1CTE1MAk0MjIuODc1CTM3ODAwCTAu MDAwCTQyMC4wMDAJNDI0LjAwMAorMTUJMTUxCTQyMy41MDAJMjQwMDAJMC4wMDAJNDIzLjI1MAk0 MjguMDAwCisxNQkxNTIJNDI5LjUwMAkyMzIwMAkwLjAwMAk0MjAuNTAwCTQyOS41MDAKKzE1CTE1 Mwk0MzQuMjUwCTMxODAwCTAuMDAwCTQyOS43NTAJNDM1LjAwMAorMTUJMTU0CTQzMC4yNTAJMzY1 MDAJMC4wMDAJNDI2LjUwMAk0MzYuMjUwCisxNgkxNTUJMzA5Ljc1MAk0MTQwMAkwLjAwMAkzMDcu MTI1CTMxMC43NTAKKzE2CTE1NgkzMTcuMDAwCTQ0NTAwCTAuMDAwCTMwOS43NTAJMzE3LjAwMAor MTYJMTU3CTMxNS4wMDAJMzk5MDAJMC4wMDAJMzEzLjEyNQkzMTkuNzUwCisxNgkxNTgJMzIyLjAw MAk0MDYwMAkwLjAwMAkzMTguNTAwCTMyMi41MDAKKzE2CTE1OQkzMjQuMjUwCTM1MzAwCTAuMDAw CTMyMS4wMDAJMzI1LjI1MAorMTYJMTYwCTMyMy4wMDAJMzIzMDAJMC4wMDAJMzIyLjUwMAkzMjcu MDAwCisxNgkxNjEJMzI5LjI1MAk0NzcwMAkwLjAwMAkzMjMuMjUwCTMzMC4wMDAKKzE2CTE2Mgkz MjkuNTAwCTU2NzAwCTAuMDAwCTMyOC41MDAJMzMzLjUwMAorMTYJMTYzCTMyMS4wMDAJNDU0MDAJ MC4wMDAJMzIwLjAwMAkzMjguNTAwCisxNwkxNjQJMjk4LjAwMAkzMTkwMAkwLjAwMAkyOTAuNTAw CTI5OC4wMDAKKzE3CTE2NQkyNzIuMDAwCTE2NTAwMAkwLjAwMAkyNzAuNzUwCTI4NS4xMjUKKzE3 CTE2NgkyNTkuNTAwCTI5MDQwMAkwLjAwMAkyNTIuNzUwCTI2MS4wMDAKKzE3CTE2NwkyNzAuNzUw CTEzNjAwMAkwLjAwMAkyNjYuMDAwCTI3MC43NTAKKzE3CTE2OAkyNjguNzUwCTk2NjAwCTAuMDAw CTI2Ni4wMDAJMjcxLjc1MAorMTcJMTY5CTI2MC4wMDAJOTkxMDAJMC4wMDAJMjU4LjAwMAkyNjQu NTAwCisxNwkxNzAJMjUxLjUwMAkxMDA5MDAJMC4wMDAJMjUwLjUwMAkyNjAuNzUwCisxNwkxNzEJ MjU5LjUwMAk3ODEwMAkwLjAwMAkyNTMuMDAwCTI2MS4wMDAKKzE3CTE3MgkyNjAuNTAwCTY0NjAw CTAuMDAwCTI2MC41MDAJMjY3LjUwMAorMTcJMTczCTI2MC4wMDAJNTE0MDAJMC4wMDAJMjU5LjAw MAkyNjQuNTAwCisxNwkxNzQJMjU4LjAwMAk0MDgwMAkwLjAwMAkyNTcuMDAwCTI2MS4wMDAKKzE3 CTE3NQkyNTcuNzUwCTM5NDAwCTAuMDAwCTI1NS4wMDAJMjU3Ljc1MAorMTcJMTc2CTI1NS41MDAJ NDc1MDAJMC4wMDAJMjUzLjUwMAkyNTcuNTAwCisxNwkxNzcJMjQ4LjUwMAkxNDc0MDAJMC4wMDAJ MjQ3LjI1MAkyNTQuMDAwCisxNwkxNzgJMjUxLjUwMAkxMDcxMDAJMC4wMDAJMjQ1LjAwMAkyNTEu NTAwCisxNwkxNzkJMjU5LjUwMAk3MDEwMAkwLjAwMAkyNTIuNTAwCTI2Mi4wMDAKKzE3CTE4MAky NjEuNzUwCTQ5ODAwCTAuMDAwCTI1NS4wMDAJMjYzLjUwMAorMTcJMTgxCTI3NC4wMDAJMTQ2NzAw CTAuMDAwCTI3MC41MDAJMjg0LjUwMAorMTcJMTgyCTI4MS4wMDAJODI4MDAJMC4wMDAJMjc3LjUw MAkyODMuNzUwCisxNwkxODMJMjgyLjAwMAk1MjAwMAkwLjAwMAkyODEuMDAwCTI4NC41MDAKKzE3 CTE4NAkyNzkuMjUwCTM5NjAwCTAuMDAwCTI3OC4wMDAJMjgwLjI1MAorMTgJMTg1CTI0OC4wMDAJ MzgwMDAJMC4wMDAJMjQ3Ljc1MAkyNTAuMDAwCisxOAkxODYJMjQ2LjUwMAkyNTEwMAkwLjAwMAky NDQuMDAwCTI0OC4yNTAKKzE4CTE4NwkyNDcuMDAwCTI3MTAwCTAuMDAwCTI0NS4wMDAJMjQ4Ljc1 MAorMTgJMTg4CTI0NC4zNzUJMzA1MDAJMC4wMDAJMjQ0LjAwMAkyNDguMDAwCisxOAkxODkJMjQz LjI1MAkzMTYwMAkwLjAwMAkyNDAuNTAwCTI0NC4yNTAKKzE4CTE5MAkyNDYuMjUwCTM0OTAwCTAu MDAwCTI0NS4yNTAJMjQ4LjUwMAorMTgJMTkxCTI0NS4yNTAJMzUzMDAJMC4wMDAJMjQ1LjEzMAky NDkuNzUwCisxOAkxOTIJMjQxLjI1MAkzMDcwMAkwLjAwMAkyNDAuMjUwCTI0NC41MDAKKzE5CTE5 MwkyNDAuNTAwCTM0ODAwCTAuMDAwCTIzNy41MDAJMjQzLjI1MAorMTkJMTk0CTI0Ni41MDAJNDM2 MDAJMC4wMDAJMjM2LjUwMAkyNDYuNTAwCisxOQkxOTUJMjQ5LjUwMAk2ODMwMAkwLjAwMAkyNDYu NTAwCTI1MS41MDAKKzE5CTE5NgkyNTAuMDAwCTM1MTAwCTAuMDAwCTI0OS4xMjUJMjU0LjAwMAor MTkJMTk3CTI0OC43NTAJNTY0MDAJMC4wMDAJMjQ3LjAwMAkyNTEuNTAwCisxOQkxOTgJMjQ5LjI1 MAkzMjEwMAkwLjAwMAkyNDYuNzUwCTI1MC41MDAKKzE5CTE5OQkyNDcuNTAwCTI5MzAwCTAuMDAw CTI0Ny4zNzUJMjUwLjc1MAorMTkJMjAwCTI0NS43NTAJMjAwMDAJMC4wMDAJMjQ1LjI1MAkyNDcu NTAwCisxOQkyMDEJMjQ2LjI1MAkyMjUwMAkwLjAwMAkyNDUuMTI1CTI0Ni43NTAKKzE5CTIwMgky NDMuMDAwCTM4ODAwCTAuMDAwCTI0Mi41MDAJMjQ3Ljc1MAorMjAJMjAzCTE4Mi4yNTAJODQzMDAJ MC4wMDAJMTc2LjUwMAkxODMuNTAwCisyMAkyMDQJMTc5LjAwMAk2MzMwMAkwLjAwMAkxNzkuMDAw CTE4NS41MDAKKzIwCTIwNQkxNzMuMDAwCTU5MjAwCTAuMDAwCTE3MS43NTAJMTc4LjUwMAorMjAJ MjA2CTE3MS41MDAJNjk2MDAJMC4wMDAJMTcwLjI1MAkxNzUuMjUwCisyMAkyMDcJMTY1LjEyNQk3 MDUwMAkwLjAwMAkxNjUuMTI1CTE3Mi4yNTAKKzIwCTIwOAkxNTYuNTAwCTExMzIwMAkwLjAwMAkx NTUuMjUwCTE2NS4wMDAKKzIwCTIwOQkxNTIuMDAwCTEzMTAwMAkwLjAwMAkxNTAuNTAwCTE1Ny4y NTAKKzIwCTIxMAkxNTkuNjI1CTEwOTEwMAkwLjAwMAkxNTAuNTAwCTE1OS43NTAKKzIwCTIxMQkx NjEuODgwCTg3ODAwCTAuMDAwCTE2MS43NTAJMTY4LjUwMAorMjAJMjEyCTE2Ni41MDAJNzU4MDAJ MC4wMDAJMTU4LjAwMAkxNjYuNTAwCisyMAkyMTMJMTcwLjUwMAk5NTkwMAkwLjAwMAkxNjkuMjUw CTE3My43NTAKKzIwCTIxNAkxNzEuNTAwCTgwNjAwCTAuMDAwCTE2Ni41MDAJMTczLjUwMAorMjAJ MjE1CTE2OS4yNTAJNTk1MDAJMC4wMDAJMTY4LjI1MAkxNzUuMDAwCisyMAkyMTYJMTY2Ljc1MAk0 NzAwMAkwLjAwMAkxNjQuNzUwCTE2OC4wMDAKKzIwCTIxNwkxNjUuMDAwCTU5NzAwCTAuMDAwCTE2 NS4wMDAJMTcxLjAwMAorMjAJMjE4CTE2NC4wMDAJMjU4MDAJMC4wMDAJMTYwLjI1MAkxNjQuMDAw CisyMAkyMTkJMTYwLjg3NQk1MTkwMAkwLjAwMAkxNjAuMDAwCTE2Ni43NTAKKzIwCTIyMAkxNTku MDAwCTg0MTAwCTAuMDAwCTE1My41MDAJMTU5LjUwMAorMjAJMjIxCTE2MC4yNTAJMTI1ODAwCTAu MDAwCTE1NC4yNTAJMTYxLjc1MAorMjAJMjIyCTE1OS41MDAJNjM5MDAJMC4wMDAJMTU4LjUwMAkx NjMuNTAwCisyMAkyMjMJMTU3Ljc1MAk1NjEwMAkwLjAwMAkxNTUuNjI1CTE2MC41MDAKKzIwCTIy NAkxNTYuMjUwCTc0MjAwCTAuMDAwCTE1NC4yNTAJMTU5LjUwMAorMjAJMjI1CTE2NC4xMjUJNjA5 MDAJMC4wMDAJMTU5LjI1MAkxNjQuNzUwCisyMAkyMjYJMTYyLjAwMAk4NzAwMAkwLjAwMAkxNjAu NzUwCTE2NC41MDAKKzIxCTIyNwkxNjIuMjUwCTUxODAwCTAuMDAwCTE2MS43NTAJMTY2LjAwMAor MjEJMjI4CTE2NC4yNTAJNjUzMDAJMC4wMDAJMTYwLjEzMAkxNjQuMjUwCisyMQkyMjkJMTY4LjAw MAk0ODkwMAkwLjAwMAkxNjYuMDAwCTE2OC44NzUKKzIxCTIzMAkxNjguODc1CTQ1MTAwCTAuMDAw CTE2OC4yNTAJMTcxLjM3NQorMjEJMjMxCTE2Ny41MDAJNzgwMDAJMC4wMDAJMTY2Ljc1MAkxNzEu MjUwCisyMQkyMzIJMTY2LjYyNQk1MzAwMAkwLjAwMAkxNjUuNTAwCTE3MC4yNTAKKzIxCTIzMwkx NjUuNzUwCTQ5MDAwCTAuMDAwCTE2My41MDAJMTY2LjUwMAorMjEJMjM0CTE2My4yNTAJNTg3MDAJ MC4wMDAJMTYzLjI1MAkxNjcuMTI1CisyMQkyMzUJMTY4LjUwMAk1NjcwMAkwLjAwMAkxNjIuNjMw CTE2OC41MDAKKzIyCTIzNgkyMTIuMDAwCTg5MjAwCTAuMDAwCTIxMi4wMDAJMjE3Ljc1MAorMjIJ MjM3CTIwNy41MDAJMTE3NzAwCTAuMDAwCTIwNi4wMDAJMjA5Ljc1MAorMjIJMjM4CTIxMi4wMDAJ OTUxMDAJMC4wMDAJMjA3LjUwMAkyMTIuNTAwCisyMgkyMzkJMjEyLjI1MAk3NDAwMAkwLjAwMAky MTEuNTAwCTIxNC4wMDAKKzIyCTI0MAkyMTUuNTAwCTY4NDAwCTAuMDAwCTIxMS44ODAJMjE1Ljc1 MAorMjIJMjQxCTIyMC4wMDAJNzkyMDAJMC4wMDAJMjE2LjAwMAkyMjAuMDAwCisyMwkyNDIJMjIy LjUwMAk0NTcwMAkwLjAwMAkyMjIuMjUwCTIyNC42MzAKKzIzCTI0MwkyMjMuMjUwCTQzMDAwCTAu MDAwCTIyMS41MDAJMjIzLjUwMAorMjMJMjQ0CTIyNC4yNTAJNDc3MDAJMC4wMDAJMjIzLjUwMAky MjUuMjUwCisyMwkyNDUJMjI2LjUwMAk0MzgwMAkwLjAwMAkyMjMuMzgwCTIyNi41MDAKKzIzCTI0 NgkyMzAuMDAwCTg4ODAwCTAuMDAwCTIyNi4yNTAJMjMwLjAwMAorMjMJMjQ3CTIyOS4zODAJMTE4 MDAwCTAuMDAwCTIyOS4wMDAJMjMwLjg4MAorMjMJMjQ4CTIyOC41MDAJMTI3MTAwCTAuMDAwCTIy OC4zNzUJMjMxLjAwMAorMjMJMjQ5CTIzMC4zODAJMTM2NDAwCTAuMDAwCTIyOC41MDAJMjMwLjc1 MAorMjQJMjUwCTI0OS44ODAJOTc1MDAJMC4wMDAJMjQ5LjYzMAkyNTUuMDAwCisyNAkyNTEJMjUx LjAwMAk5MDQwMAkwLjAwMAkyNDguMTMwCTI1Mi4yNTAKKzI0CTI1MgkyNTYuNTAwCTkwNDAwCTAu MDAwCTI1MS4wMDAJMjU3LjAwMAorMjQJMjUzCTI1Ny43NTAJMTExMDAwCTAuMDAwCTI1Ny42MjUJ MjU5Ljc1MAorMjQJMjU0CTI1OS4yNTAJODcyMDAJMC4wMDAJMjU2LjAwMAkyNTkuMjUwCisyNAky NTUJMjYxLjAwMAkxMTExMDAJMC4wMDAJMjU4LjI1MAkyNjEuMjUwCisyNAkyNTYJMjYzLjc1MAk3 NTkwMAkwLjAwMAkyNjEuMjUwCTI2NC41MDAKKzI0CTI1NwkyNTguMDAwCTEyMTEwMAkwLjAwMAky NTcuNzUwCTI2My4yNTAKKzI0CTI1OAkyNTQuMDAwCTEyNTUwMAkwLjAwMAkyNTQuMDAwCTI1Ny4y NTAKKzI0CTI1OQkyNTMuNTAwCTc4NDAwCTAuMDAwCTI1Mi43NTAJMjU3Ljc1MAorMjQJMjYwCTI1 OC4wMDAJNzQ3MDAJMC4wMDAJMjUzLjAwMAkyNTguMDAwCisyNQkyNjEJMjc5Ljc1MAk2MjcwMAkw LjAwMAkyNzcuMTMwCTI4MC4wMDAKKzI1CTI2MgkyNzcuNjI1CTg1NTAwCTAuMDAwCTI3Ni43NTAJ MjgwLjM3NQorMjUJMjYzCTI3Ni42MzAJOTk4MDAJMC4wMDAJMjc2LjYzMAkyODAuMzgwCisyNQky NjQJMjc2LjI1MAkxMTM2MDAJMC4wMDAJMjc2LjAwMAkyNzkuNTAwCisyNQkyNjUJMjc0LjI1MAkx ODcxMDAJMC4wMDAJMjcyLjc1MAkyNzYuMzgwCisyNQkyNjYJMjcyLjAwMAkxMDUzMDAJMC4wMDAJ MjcyLjAwMAkyNzUuNTAwCisyNQkyNjcJMjcwLjUwMAkxMTEwMDAJMC4wMDAJMjY4LjAwMAkyNzIu NzUwCisyNQkyNjgJMjcxLjAwMAk2NjAwMAkwLjAwMAkyNzAuNTAwCTI3Mi41MDAKKzI1CTI2OQky NzIuNTAwCTQzMDAwCTAuMDAwCTI3MC4yNTAJMjcyLjUwMAorMjUJMjcwCTI3My4wMDAJNTYyMDAJ MC4wMDAJMjcyLjAwMAkyNzMuODgwCisyNQkyNzEJMjc1LjUwMAk1NTIwMAkwLjAwMAkyNzMuNzUw CTI3NS41MDAKKzI1CTI3MgkyNzIuMjUwCTczNDAwCTAuMDAwCTI3Mi4wMDAJMjc1LjUwMAorMjYJ MjczCTI2Mi4yNTAJODkwMDAJMC4wMDAJMjYyLjAwMAkyNjcuNzUwCisyNgkyNzQJMjU5LjUwMAkx NDYxMDAJMC4wMDAJMjU3LjUwMAkyNjEuNzUwCisyNgkyNzUJMjYwLjI1MAk5MDMwMAkwLjAwMAky NTcuNTAwCTI2MC42MjUKKzI2CTI3NgkyNjEuMDAwCTc0MTAwCTAuMDAwCTI1OC44ODAJMjYxLjg4 MAorMjYJMjc3CTI2NC41MDAJNDQ0MDAJMC4wMDAJMjYwLjI1MAkyNjQuODgwCisyNgkyNzgJMjYy LjAwMAk3ODkwMAkwLjAwMAkyNjEuMjUwCTI2NC41MDAKKzI3CTI3OQkyNzIuNTAwCTEzMjAwMAkw LjAwMAkyNzAuMTMwCTI3Mi41MDAKKzI3CTI4MAkyNzIuMDAwCTc5ODAwCTAuMDAwCTI3MS4zNzUJ MjcyLjYyNQorMjcJMjgxCTI3MS4xMzAJNzU2MDAJMC4wMDAJMjcwLjc1MAkyNzIuODgwCisyNwky ODIJMjcwLjAwMAkxMTM4MDAJMC4wMDAJMjY5Ljg4MAkyNzEuNTAwCisyNwkyODMJMjY0LjAwMAkx Nzk1MDAJMC4wMDAJMjYzLjUwMAkyNzAuNTAwCisyNwkyODQJMjU4LjAwMAkyMTUzMDAJMC4wMDAJ MjU3LjUwMAkyNjMuMjUwCisyNwkyODUJMjU4LjI1MAkxNTQyMDAJMC4wMDAJMjU2LjUwMAkyNTku NjI1CisyNwkyODYJMjU5LjUwMAk5NTYwMAkwLjAwMAkyNTcuNTAwCTI2MC41MDAKKzI3CTI4Nwky NjEuMjUwCTk2NTAwCTAuMDAwCTI1OS4yNTAJMjYyLjAwMAorMjcJMjg4CTI1OS43NTAJMTE5MDAw CTAuMDAwCTI1OS4yNTAJMjYxLjYyNQorMjcJMjg5CTI1OC43NTAJODE1MDAJMC4wMDAJMjU3LjEz MAkyNTkuNzUwCisyOAkyOTAJMjU3LjM4MAk1MzcwMAkwLjAwMAkyNTcuMjUwCTI1OS4yNTAKKzI4 CTI5MQkyNTYuMDAwCTUyMjAwCTAuMDAwCTI1NS4zNzUJMjU3LjUwMAorMjgJMjkyCTI1Ny43NTAJ NzYyMDAJMC4wMDAJMjU1LjYzMAkyNTguNjMwCisyOAkyOTMJMjU4Ljc1MAk5MzQwMAkwLjAwMAky NTcuMzgwCTI1OS41MDAKKzI4CTI5NAkyNTguNzUwCTk5MDAwCTAuMDAwCTI1OC41MDAJMjU5LjYz MAorMjgJMjk1CTI1Ny4yNTAJMTIzMTAwCTAuMDAwCTI1NS43NTAJMjU3LjUwMAorMjgJMjk2CTI2 MC41MDAJMTg4MzAwCTAuMDAwCTI1Ny4wMDAJMjYxLjAwMAorMjgJMjk3CTI2MC4yNTAJMTAzMzAw CTAuMDAwCTI1OS4wMDAJMjYxLjI1MAorMjkJMjk4CTI2NC4yNTAJMTEwMTAwCTAuMDAwCTI2MS42 MzAJMjY0LjM4MAorMjkJMjk5CTI2Ni4wMDAJOTgxMDAJMC4wMDAJMjY0LjI1MAkyNjYuNzUwCisy OQkzMDAJMjY3LjUwMAkxNDYxMDAJMC4wMDAJMjY2LjYyNQkyNjguMDAwCisyOQkzMDEJMjcwLjI1 MAkxOTk0MDAJMC4wMDAJMjY3LjUwMAkyNzAuMjUwCisyOQkzMDIJMjcwLjI1MAk4OTgwMAkwLjAw MAkyNjkuMDAwCTI3MC42MjUKKzI5CTMwMwkyNzEuMDAwCTc4NjAwCTAuMDAwCTI2OS4yNTAJMjcx LjI1MAorMjkJMzA0CTI3Mi43NTAJMTA3NjAwCTAuMDAwCTI2OS44ODAJMjczLjUwMAorMjkJMzA1 CTI3My41MDAJMTE5MjAwCTAuMDAwCTI3Mi43NTAJMjc1LjI1MAorMjkJMzA2CTI3My41MDAJMAkw LjAwMAkwLjAwMAkwLjAwMAorMzAJMzA3CTIzNi4yNTAJMTQ2MTAwCTAuMDAwCTIzNi4yNTAJMjQy LjAwMAorMzAJMzA4CTIzOS41MDAJMzU4MTAwCTAuMDAwCTIzNS41MDAJMjM5LjUwMAorMzAJMzA5 CTI0My41MDAJMjQxNTAwCTAuMDAwCTI0MC41MDAJMjQ0LjAwMAorMzAJMzEwCTI1MS4xMjUJMzA0 ODAwCTAuMDAwCTI0OC4zNzUJMjUzLjYyNQorMzAJMzExCTI1MS4yNTAJMjMxMDAwCTAuMDAwCTI0 OC44NzUJMjUzLjAwMAorMzAJMzEyCTI1My4wMDAJMTUyODAwCTAuMDAwCTI0OS42MjUJMjU0LjAw MAorMzAJMzEzCTI1My41MDAJMTc1MTAwCTAuMDAwCTI1Mi41MDAJMjU3Ljg4MAorMzAJMzE0CTI1 NC4wMDAJMTQxODAwCTAuMDAwCTI1Mi4xMjUJMjU1LjUwMAorMzAJMzE1CTI1OC4wMDAJMTEwMDAw CTAuMDAwCTI1My4wMDAJMjU4LjI1MAorMzAJMzE2CTI2MS43NTAJMzc0MjAwCTAuMDAwCTI2MS4y NTAJMjY0LjAwMAorMzAJMzE3CTI2Mi4zODAJMjc1MTAwCTAuMDAwCTI2MS4zODAJMjY1LjAwMAor MzAJMzE4CTI2MS41MDAJMTY5NzAwCTAuMDAwCTI1OS44NzUJMjYxLjc1MAorMzEJMzE5CTI2Mi41 MDAJODcxMDAJMC4wMDAJMjYyLjI1MAkyNjYuNTAwCiszMQkzMjAJMjU4LjI1MAk5MTEwMAkwLjAw MAkyNTcuNzUwCTI2Mi41MDAKKzMxCTMyMQkyNjAuODgwCTEwNTYwMAkwLjAwMAkyNTguMjUwCTI2 Mi4wMDAKKzMxCTMyMgkyNjEuNzUwCTg1MDAwCTAuMDAwCTI1OC41MDAJMjYxLjg4MAorMzEJMzIz CTI1OS42MzAJNjg0MDAJMC4wMDAJMjU5LjAwMAkyNjIuMjUwCiszMQkzMjQJMjU3LjI1MAk0NTUw MAkwLjAwMAkyNTcuMjUwCTI2MC4yNTAKKzMxCTMyNQkyNTYuNzUwCTM5OTAwCTAuMDAwCTI1NS4w MDAJMjU3LjUwMAorMzEJMzI2CTI1OC4wMDAJMTAyNDAwCTAuMDAwCTI1NS4yNTAJMjU5LjUwMAor MzIJMzI3CTI2OC4xMjUJMTgwNzAwCTAuMDAwCTI2Ny43NTAJMjcyLjAwMAorMzIJMzI4CTI3MC4y NTAJODA5MDAJMC4wMDAJMjY3LjAwMAkyNzAuMjUwCiszMgkzMjkJMjcxLjAwMAkxMDcyMDAJMC4w MDAJMjY3Ljc1MAkyNzEuMDAwCiszMgkzMzAJMjczLjAwMAkxNDk0MDAJMC4wMDAJMjY5LjI1MAky NzMuMDAwCiszMgkzMzEJMjczLjUwMAkyNjI5MDAJMC4wMDAJMjczLjAwMAkyNzYuNzUwCiszMgkz MzIJMjc2LjI1MAkxNTAzMDAJMC4wMDAJMjczLjAwMAkyNzYuMjUwCiszMgkzMzMJMjc4LjYzMAkx NzI4MDAJMC4wMDAJMjc1LjUwMAkyNzkuNTAwCiszMgkzMzQJMjgxLjAwMAkxMzI3MDAJMC4wMDAJ Mjc4Ljc1MAkyODEuNTAwCiszMgkzMzUJMjc5LjEyNQkxNzg0MDAJMC4wMDAJMjc5LjAwMAkyODEu NzUwCiszMwkzMzYJMzExLjAwMAk5NjkwMAkwLjAwMAkzMDguMTMwCTMxMS4wMDAKKzMzCTMzNwkz MDguMjUwCTg1MDAwCTAuMDAwCTMwNy42MjUJMzExLjAwMAorMzMJMzM4CTMwNS43NTAJMTE5MjAw CTAuMDAwCTMwNC41MDAJMzA2LjYyNQorMzMJMzM5CTMwMy41MDAJMTMzMjAwCTAuMDAwCTMwMy4w MDAJMzA2LjUwMAorMzMJMzQwCTI5OC41MDAJMTY4NDAwCTAuMDAwCTI5Ny4xMzAJMjk5Ljc1MAor MzMJMzQxCTI5OS42MzAJNzc5MDAJMC4wMDAJMjk5LjEzMAkzMDAuNjMwCiszMwkzNDIJMzAxLjc1 MAk5MTEwMAkwLjAwMAkzMDAuMTMwCTMwMS44ODAKKzMzCTM0MwkzMDYuNjMwCTc4NzAwCTAuMDAw CTI5OS43NTAJMzA3LjAwMAorMzMJMzQ0CTMwOC4xMjUJMTMyNjAwCTAuMDAwCTMwNi43NTAJMzEw LjAwMAorMzMJMzQ1CTMwNS41MDAJODI0MDAJMC4wMDAJMzA0LjAwMAkzMDguMjUwCiszNAkzNDYJ MzA4Ljg3NQk4MDYwMAkwLjAwMAkzMDguMjUwCTMxMi44NzUKKzM0CTM0NwkzMDYuNzUwCTEyNDAw MAkwLjAwMAkzMDYuMjUwCTMwOS4yNTAKKzM0CTM0OAkzMTAuMDAwCTEyMzMwMAkwLjAwMAkzMDcu MDAwCTMxMC4yNTAKKzM0CTM0OQkzMTAuMjUwCTEwMjYwMAkwLjAwMAkzMDkuNzUwCTMxMi44NzUK KzM0CTM1MAkzMTIuMDAwCTgwNDAwCTAuMDAwCTMwOS44ODAJMzEyLjI1MAorMzQJMzUxCTMwOC44 ODAJMTE1OTAwCTAuMDAwCTMwOC41MDAJMzEyLjAwMAorMzQJMzUyCTMxMC41MDAJOTgzMDAJMC4w MDAJMzA3LjUwMAkzMTAuNTAwCiszNAkzNTMJMzE0LjI1MAkxMTY5MDAJMC4wMDAJMzA5Ljc1MAkz MTQuMjUwCiszNAkzNTQJMzE1LjYyNQkxMTg2MDAJMC4wMDAJMzE0LjI1MAkzMTcuNTAwCiszNAkz NTUJMzE4LjAwMAk5ODcwMAkwLjAwMAkzMTUuMDAwCTMxOC41MDAKKzM0CTM1NgkzMTkuNzUwCTE0 OTAwMAkwLjAwMAkzMTguMDAwCTMyMS41MDAKKzM0CTM1NwkzMTEuMjUwCTEyMTkwMAkwLjAwMAkz MTEuMDAwCTMxNy41MDAKKzM0CTM1OAkzMDkuMDAwCTg0NDAwCTAuMDAwCTMwOC4xMzAJMzA5Ljg4 MAorMzQJMzU5CTMxMi4wMDAJMTI2NTAwCTAuMDAwCTMwOC42MjUJMzEyLjI1MAorMzUJMzYwCTc4 LjAwMAk1MTIxMDAJMC4wMDAJNzcuNTAwCTc4LjUwMAorMzUJMzYxCTc1LjM3NQk2MDc3MDAJMC4w MDAJNzUuMjUwCTc4LjAwMAorMzUJMzYyCTc0LjYyNQk2MjgzMDAJMC4wMDAJNzMuNzUwCTc1LjI1 MAorMzUJMzYzCTc0LjI1MAk1MTczMDAJMC4wMDAJNzMuODc1CTc1LjAwMAorMzUJMzY0CTcyLjc1 MAkzNTgzMDAJMC4wMDAJNzIuNjI1CTc0LjAwMAorMzUJMzY1CTcyLjYzMAkzOTQ2MDAJMC4wMDAJ NzIuMjUwCTczLjUwMAorMzUJMzY2CTczLjAwMAk1OTkyMDAJMC4wMDAJNzIuMTMwCTczLjc1MAor MzUJMzY3CTczLjUwMAk0NTAyMDAJMC4wMDAJNzIuODc1CTc0LjUwMAorMzUJMzY4CTc0LjEzMAkz MDQ0MDAJMC4wMDAJNzMuODgwCTc0LjI1MAorMzUJMzY5CTczLjg3NQkyODkyMDAJMC4wMDAJNzMu Mzc1CTc0LjUwMAorMzYJMzcwCTcyLjI1MAk0OTgzMDAJMC4wMDAJNjkuODc1CTcyLjM3NQorMzYJ MzcxCTcxLjYzMAk0NzY4MDAJMC4wMDAJNzEuMDAwCTcyLjUwMAorMzYJMzcyCTcxLjI1MAkyODI2 MDAJMC4wMDAJNzEuMDAwCTcxLjg4MAorMzYJMzczCTcxLjYzMAkzNTAzMDAJMC4wMDAJNzAuODgw CTcxLjg4MAorMzYJMzc0CTcwLjg4MAkyNjE1MDAJMC4wMDAJNzAuNTAwCTcxLjYzMAorMzYJMzc1 CTcwLjUwMAk1MzE3MDAJMC4wMDAJNzAuMzgwCTcxLjEzMAorMzYJMzc2CTY5LjYyNQkzOTE5MDAJ MC4wMDAJNjkuNTAwCTcwLjc1MAorMzYJMzc3CTY5LjYyNQkzMzcwMDAJMC4wMDAJNjkuMTI1CTcw LjUwMAorMzYJMzc4CTcwLjAwMAkzMzg5MDAJMC4wMDAJNjkuNTAwCTcwLjYyNQorMzYJMzc5CTcw LjAwMAkzOTM0MDAJMC4wMDAJNjkuNjI1CTcwLjEyNQorMzYJMzgwCTY5LjYzMAkyOTMyMDAJMC4w MDAJNjkuNjMwCTcwLjI1MAorMzYJMzgxCTY5LjUwMAkyMDUzMDAJMC4wMDAJNjkuNTAwCTcwLjAw MAorMzYJMzgyCTcwLjAwMAkyNjgzMDAJMC4wMDAJNjkuNzUwCTcwLjAwMAorMzYJMzgzCTY4LjYz MAkzODE1MDAJMC4wMDAJNjguNTAwCTY5Ljg4MAorMzYJMzg0CTY4LjI1MAk2OTMyMDAJMC4wMDAJ NjcuMjUwCTY4LjUwMAorMzYJMzg1CTY3LjYzMAkzMTYxMDAJMC4wMDAJNjcuNTAwCTY4LjI1MAor MzYJMzg2CTY3Ljc1MAk0MDY2MDAJMC4wMDAJNjcuMzgwCTY4LjAwMAorMzYJMzg3CTY3LjUwMAkz MDU4MDAJMC4wMDAJNjcuMzc1CTY3Ljg3NQorMzYJMzg4CTY2LjUwMAk0NjY1MDAJMC4wMDAJNjYu MTI1CTY3Ljc1MAorMzYJMzg5CTY2LjI1MAk2NTI4MDAJMC4wMDAJNjUuNzUwCTY2LjYyNQorMzYJ MzkwCTY2Ljc1MAkzOTkzMDAJMC4wMDAJNjYuMTI1CTY2Ljg3NQorMzYJMzkxCTY3Ljg4MAk1MDIx MDAJMC4wMDAJNjYuNTAwCTY4LjM4MAorMzYJMzkyCTY4LjUwMAk1Mzg5MDAJMC4wMDAJNjguMzgw CTY5LjI1MAorMzYJMzkzCTY3Ljg4MAk0MDc3MDAJMC4wMDAJNjcuNzUwCTY4LjUwMAorMzYJMzk0 CTY3Ljc1MAkzOTY1MDAJMC4wMDAJNjcuNzUwCTY4LjYzMAorMzYJMzk1CTcxLjI1MAk0Mzk5MDAJ MC4wMDAJNjcuNjI1CTcxLjM3NQorMzYJMzk2CTcwLjAwMAk2MjYxMDAJMC4wMDAJNjkuMzgwCTcx LjAwMAorMzcJMzk3CTY1LjAwMAkyMDg5MDAJMC4wMDAJNjQuNTAwCTY1LjEyNQorMzcJMzk4CTY1 LjM4MAkyOTE4MDAJMC4wMDAJNjQuODgwCTY1LjM4MAorMzcJMzk5CTY1Ljc1MAkzNzc2MDAJMC4w MDAJNjUuNTAwCTY2LjM4MAorMzcJNDAwCTY3LjI1MAkyODM1MDAJMC4wMDAJNjUuMzgwCTY3LjI1 MAorMzcJNDAxCTY2LjYzMAk1ODI0MDAJMC4wMDAJNjYuMzgwCTY3LjYzMAorMzcJNDAyCTY2LjM3 NQkyNTcyMDAJMC4wMDAJNjYuMTI1CTY2LjYyNQorMzcJNDAzCTY1LjYyNQkzOTM5MDAJMC4wMDAJ NjUuNjI1CTY2Ljc1MAorMzcJNDA0CTY1LjI1MAkyOTU1MDAJMC4wMDAJNjUuMTMwCTY1Ljc1MAor MzcJNDA1CTY1LjAwMAkzMjk3MDAJMC4wMDAJNjQuNjMwCTY1LjI1MAorMzcJNDA2CTY2LjAwMAk0 MTI0MDAJMC4wMDAJNjQuODgwCTY2LjEzMAorMzgJNDA3CTY0Ljg3NQkxNzYzMDAJMC4wMDAJNjQu MDAwCTY0Ljg3NQorMzgJNDA4CTY0Ljg3NQkxNjMzMDAJMC4wMDAJNjQuMzc1CTY1LjEyNQorMzgJ NDA5CTY0Ljc1MAkyNTM4MDAJMC4wMDAJNjQuMjUwCTY1LjAwMAorMzgJNDEwCTY0LjI1MAkyNzky MDAJMC4wMDAJNjQuMDAwCTY0LjYzMAorMzgJNDExCTY0LjM4MAkzMDg2MDAJMC4wMDAJNjQuMDAw CTY0LjYzMAorMzgJNDEyCTYyLjUwMAk0MTIwMDAJMC4wMDAJNjIuNTAwCTY0LjUwMAorMzgJNDEz CTYzLjUwMAk2MTAzMDAJMC4wMDAJNjEuMjUwCTYzLjUwMAorMzgJNDE0CTYzLjM4MAk0NzI4MDAJ MC4wMDAJNjMuMDAwCTYzLjc1MAorMzkJNDE1CTU0LjYyNQk1MTI5MDAJMC4wMDAJNTMuMzc1CTU0 Ljc1MAorMzkJNDE2CTU0LjI1MAk1MDQ5MDAJMC4wMDAJNTQuMDAwCTU1LjI1MAorMzkJNDE3CTUz LjUwMAk2NTE3MDAJMC4wMDAJNTMuNTAwCTU1LjAwMAorMzkJNDE4CTUzLjAwMAkzMzQxMDAJMC4w MDAJNTIuNzUwCTUzLjc1MAorMzkJNDE5CTUyLjAwMAk1Nzk5MDAJMC4wMDAJNTEuODc1CTUzLjUw MAorMzkJNDIwCTUxLjEyNQk2NzIzMDAJMC4wMDAJNTEuMDAwCTUyLjg3NQorMzkJNDIxCTUxLjI1 MAk0NTEwMDAJMC4wMDAJNTAuMzgwCTUxLjYzMAorMzkJNDIyCTUxLjI1MAk0MTE5MDAJMC4wMDAJ NTAuODc1CTUxLjc1MAorMzkJNDIzCTUxLjI1MAk2NjM4MDAJMC4wMDAJNTAuNTAwCTUxLjYyNQor MzkJNDI0CTUzLjg3NQk4MjE4MDAJMC4wMDAJNTIuMDAwCTU0LjUwMAorMzkJNDI1CTUzLjUwMAk3 NjE0MDAJMC4wMDAJNTMuMjUwCTU0LjM3NQorNDAJNDI2CTY2LjAwMAk0MzcyMDAJMC4wMDAJNjQu MjUwCTY2LjAwMAorNDAJNDI3CTY1LjEzMAk1NTMwMDAJMC4wMDAJNjQuNzUwCTY2LjEzMAorNDAJ NDI4CTY0Ljg4MAk0NDkwMDAJMC4wMDAJNjQuMzgwCTY1LjM4MAorNDAJNDI5CTY0Ljc1MAkzOTc0 MDAJMC4wMDAJNjQuMjUwCTY1LjAwMAorNDAJNDMwCTY0LjM4MAkzNzU4MDAJMC4wMDAJNjMuODgw CTY0LjYzMAorNDAJNDMxCTY1LjAwMAkyNzA4MDAJMC4wMDAJNjQuMDAwCTY1LjI1MAorNDAJNDMy CTY1LjEyNQk0MTA2MDAJMC4wMDAJNjQuMzc1CTY1LjUwMAorNDAJNDMzCTY1LjUwMAk1NTU3MDAJ MC4wMDAJNjUuMTMwCTY2LjAwMAorNDAJNDM0CTY1LjI1MAk2NDQxMDAJMC4wMDAJNjQuMzgwCTY1 LjM4MAorNDEJNDM1CTU2Ljc1MAk0OTI1MDAJMC4wMDAJNTYuMjUwCTU2Ljg4MAorNDEJNDM2CTU2 LjYzMAk2MTYyMDAJMC4wMDAJNTUuNzUwCTU2LjYzMAorNDEJNDM3CTU2LjM4MAkzNDgwMDAJMC4w MDAJNTYuMTMwCTU2LjYzMAorNDEJNDM4CTU1LjYyNQk0NjE4MDAJMC4wMDAJNTUuNTAwCTU2LjM3 NQorNDEJNDM5CTU1LjUwMAk0Mzg0MDAJMC4wMDAJNTUuMjUwCTU1Ljg3NQorNDEJNDQwCTU2LjEz MAk1MTQ5MDAJMC4wMDAJNTUuMTMwCTU2LjM4MAorNDEJNDQxCTU3Ljg4MAk2NzM5MDAJMC4wMDAJ NTUuODgwCTU4LjEzMAorNDEJNDQyCTU4LjAwMAk3MDAyMDAJMC4wMDAJNTcuMjUwCTU4LjUwMAor NDEJNDQzCTU4Ljc1MAk3OTY5MDAJMC4wMDAJNTcuODgwCTU5LjEzMAorNDEJNDQ0CTYwLjI1MAkx MDg5MjAwCTAuMDAwCTU5Ljc1MAk2MC43NTAKKzQxCTQ0NQk1OS44ODAJNzQ3NjAwCTAuMDAwCTU5 Ljg4MAk2MC41MDAKKzQyCTQ0Ngk1NS44NzUJMzg3MzAwCTAuMDAwCTU1LjAwMAk1Ni43NTAKKzQy CTQ0Nwk1NS41MDAJMzk2NjAwCTAuMDAwCTU1LjUwMAk1Ni41MDAKKzQyCTQ0OAk1NC44ODAJMzcy NTAwCTAuMDAwCTU0LjUwMAk1NS4zODAKKzQyCTQ0OQk1NC4xMzAJNTUxNjAwCTAuMDAwCTUzLjUw MAk1NS4xMzAKKzQyCTQ1MAk1NC4wMDAJMzQ2MTAwCTAuMDAwCTUzLjg3NQk1NC41MDAKKzQyCTQ1 MQk1NC4zNzUJNDI3MzAwCTAuMDAwCTU0LjEyNQk1NS4wMDAKKzQyCTQ1Mgk1NC41MDAJMzg5ODAw CTAuMDAwCTUzLjM4MAk1NC42MzAKKzQyCTQ1Mwk1NC42MjUJNDk3NjAwCTAuMDAwCTU0LjI1MAk1 NS4yNTAKKzQyCTQ1NAk1My42MjUJNTI0MjAwCTAuMDAwCTUzLjI1MAk1NC4yNTAKKzQzCTQ1NQk2 NC42MjUJMTA1ODgwMAkwLjAwMAk2My4zNzUJNjQuNjI1Cis0Mwk0NTYJNjQuNTAwCTY4OTQwMAkw LjAwMAk2NC4yNTAJNjQuODgwCis0Mwk0NTcJNjMuNzUwCTExNDA2MDAJMC4wMDAJNjMuNjI1CTY1 LjEyNQorNDMJNDU4CTYzLjI1MAk4OTI4MDAJMC4wMDAJNjMuMDAwCTYzLjg4MAorNDMJNDU5CTYz Ljg3NQk1MTIyMDAJMC4wMDAJNjMuMjUwCTYzLjg3NQorNDMJNDYwCTY0LjM3NQk2NDU4MDAJMC4w MDAJNjQuMDAwCTY0Ljc1MAorNDMJNDYxCTY1Ljc1MAkxMjE0MTAwCTAuMDAwCTY0LjUwMAk2NS43 NTAKKzQzCTQ2Mgk2Ni4wMDAJOTExNzAwCTAuMDAwCTY1LjAwMAk2Ni4xMzAKKzQzCTQ2Mwk2NS4x MjUJNjg1NjAwCTAuMDAwCTY0LjYyNQk2NS43NTAKKzQzCTQ2NAk2NC44ODAJNzE3MjAwCTAuMDAw CTY0LjUwMAk2NS4yNTAKKzQzCTQ2NQk2NC4xMjUJNDkxNjAwCTAuMDAwCTY0LjEyNQk2NC42MjUK KzQzCTQ2Ngk2NC4yNTAJNzU5MjAwCTAuMDAwCTY0LjAwMAk2NC43NTAKKzQzCTQ2Nwk2NC41MDAJ Mzg0NjAwCTAuMDAwCTY0LjAwMAk2NC43NTAKKzQzCTQ2OAk2NC43NTAJNDk3NTAwCTAuMDAwCTY0 LjUwMAk2NS4yNTAKKzQzCTQ2OQk2NS4xMjUJODU1NjAwCTAuMDAwCTY0Ljc1MAk2NS4yNTAKKzQz CTQ3MAk2NC44NzUJNzc3MjAwCTAuMDAwCTY0Ljc1MAk2NS4xMjUKKzQzCTQ3MQk2NC43NTAJNDg3 OTAwCTAuMDAwCTY0Ljc1MAk2NS4xMzAKKzQzCTQ3Mgk2My44NzUJNTY5ODAwCTAuMDAwCTYzLjg3 NQk2NC44NzUKKzQzCTQ3Mwk2NC4zODAJMzcyNDAwCTAuMDAwCTY0LjAwMAk2NC43NTAKKzQ0CTQ3 NAk2MC4wMDAJMjkwMTAwCTAuMDAwCTYwLjAwMAk2MC42MzAKKzQ0CTQ3NQk2MC4zODAJMzU4ODAw CTAuMDAwCTU5LjM4MAk2MC43NTAKKzQ0CTQ3Ngk2MS4wMDAJNjM4MzAwCTAuMDAwCTYwLjM4MAk2 MS4yNTAKKzQ0CTQ3Nwk2MS41MDAJOTYzOTAwCTAuMDAwCTU5Ljc1MAk2MS42MzAKKzQ0CTQ3OAk2 Mi41MDAJMTI0NzEwMAkwLjAwMAk2MS4zODAJNjIuNTAwCis0NAk0NzkJNjMuNTAwCTk4NTEwMAkw LjAwMAk2Mi44ODAJNjMuNjMwCis0NAk0ODAJNjQuNTAwCTE1NTYzMDAJMC4wMDAJNjMuMTI1CTY1 LjAwMAorNDQJNDgxCTY2Ljg3NQkxNjg4MTAwCTAuMDAwCTY0Ljc1MAk2Ni44NzUKKzQ0CTQ4Mgk2 Ni43NTAJMTU3ODcwMAkwLjAwMAk2Ni4zNzUJNjcuNTAwCis0NQk0ODMJNzYuNzUwCTEzMjE3MDAJ MC4wMDAJNzQuNzUwCTc2Ljc1MAorNDUJNDg0CTc1LjUwMAkxNjA0MTAwCTAuMDAwCTc1LjUwMAk3 Ny42MzAKKzQ1CTQ4NQk3Ni4zODAJMTI1NDAwMAkwLjAwMAk3NS4yNTAJNzYuNjMwCis0NQk0ODYJ NzYuMDAwCTg4NzEwMAkwLjAwMAk3NS42MzAJNzYuNTAwCis0NQk0ODcJNzYuNjMwCTQ5MDUwMAkw LjAwMAk3NS43NTAJNzcuMDAwCis0NQk0ODgJNzYuMjUwCTg2ODMwMAkwLjAwMAk3Ni4yNTAJNzcu MjUwCis0NQk0ODkJNzQuNzUwCTgzMTAwMAkwLjAwMAk3NC41MDAJNzYuMzc1Cis0NQk0OTAJNzMu Mzc1CTk5NzkwMAkwLjAwMAk3My4yNTAJNzQuODc1Cis0NQk0OTEJNzQuMTMwCTc0NzUwMAkwLjAw MAk3My4zODAJNzQuNjMwCis0NQk0OTIJNzQuNTAwCTYxNDkwMAkwLjAwMAk3My4yNTAJNzQuNjMw Cis0NQk0OTMJNzUuMTMwCTc1MjMwMAkwLjAwMAk3NC42MzAJNzYuMTMwCis0NQk0OTQJNzkuMDAw CTEzNDYxMDAJMC4wMDAJNzUuMzc1CTc5LjAwMAorNDUJNDk1CTgwLjM4MAkyMjA3NjAwCTAuMDAw CTc4LjM4MAk4MC4zODAKKzQ1CTQ5Ngk4MS4xMzAJMTM0MjUwMAkwLjAwMAk3OS4yNTAJODEuMTMw Cis0NQk0OTcJODMuNTAwCTE0MzkzMDAJMC4wMDAJODEuMzgwCTg0LjUwMAorNDUJNDk4CTgyLjc1 MAkxNTAwNDAwCTAuMDAwCTgyLjM3NQk4NC4zNzUKKzQ2CTQ5OQk5Ni4xMzAJNzI1NDAwCTAuMDAw CTk1Ljc1MAk5OC4wMDAKKzQ2CTUwMAk5Ni4yNTAJMzczNzAwCTAuMDAwCTk2LjEyNQk5Ny4xMjUK KzQ2CTUwMQk5My4wMDAJNzYwNjAwCTAuMDAwCTkyLjUwMAk5Ny4wMDAKKzQ2CTUwMgk5NS42MjUJ OTE1MTAwCTAuMDAwCTkyLjM3NQk5NS42MjUKKzQ2CTUwMwk5Ni4wMDAJOTUwOTAwCTAuMDAwCTk1 LjAwMAk5Ni43NTAKKzQ2CTUwNAk5Ny42MjUJMTAyNDIwMAkwLjAwMAk5NS41MDAJOTguNTAwCis0 Ngk1MDUJOTYuNjMwCTEwNjA2MDAJMC4wMDAJOTYuNTAwCTk4LjM4MAorNDYJNTA2CTk4LjAwMAkx MTE0MjAwCTAuMDAwCTk2LjAwMAk5OS4yNTAKKzQ2CTUwNwk5OC4wMDAJODUwOTAwCTAuMDAwCTk3 LjAwMAk5OC4zODAKKzQ3CTUwOAkxMDIuMDAwCTcxMTgwMAkwLjAwMAkxMDEuODgwCTEwMy4yNTAK KzQ3CTUwOQkxMDIuNjI1CTg1ODAwMAkwLjAwMAkxMDEuMjUwCTEwMi44NzUKKzQ3CTUxMAkxMDMu MjUwCTYwNzEwMAkwLjAwMAkxMDIuMDAwCTEwMy4zNzUKKzQ3CTUxMQkxMDMuODc1CTg5NDIwMAkw LjAwMAkxMDIuNjI1CTEwNC4wMDAKKzQ3CTUxMgkxMDYuNjI1CTE2NTEyMDAJMC4wMDAJMTA0LjYy NQkxMDYuNzUwCis0Nwk1MTMJMTA3LjAwMAkxMDQ5MDAwCTAuMDAwCTEwNi4wMDAJMTA3LjM4MAor NDcJNTE0CTEwOC43NTAJOTc4ODAwCTAuMDAwCTEwNy4zNzUJMTA5LjAwMAorNDcJNTE1CTEwOS41 MDAJMTAwNzUwMAkwLjAwMAkxMDcuMjUwCTExMC4wMDAKKzQ3CTUxNgkxMTAuMTI1CTc5NDEwMAkw LjAwMAkxMDkuNjI1CTExMC41MDAKKzQ3CTUxNwkxMTIuNjMwCTEwMjA0MDAJMC4wMDAJMTEwLjAw MAkxMTIuNjMwCis0Nwk1MTgJMTExLjUwMAk5Mjk0MDAJMC4wMDAJMTExLjAwMAkxMTIuMTMwCis0 OAk1MTkJMTE2LjUwMAk0MjQ3MDAJMC4wMDAJMTE1LjYyNQkxMTYuNjI1Cis0OAk1MjAJMTE1LjI1 MAk2Njg5MDAJMC4wMDAJMTE0LjAwMAkxMTUuMjUwCis0OAk1MjEJMTE0LjAwMAk3MjIwMDAJMC4w MDAJMTEzLjEyNQkxMTUuMDAwCis0OAk1MjIJMTExLjc1MAk4MDIzMDAJMC4wMDAJMTEwLjc1MAkx MTQuNzUwCis0OAk1MjMJMTExLjI1MAk2NzM1MDAJMC4wMDAJMTEwLjUwMAkxMTIuNTAwCis0OAk1 MjQJMTEwLjc1MAk1Mzg5MDAJMC4wMDAJMTEwLjI1MAkxMTEuNzUwCis0OAk1MjUJMTEyLjUwMAk4 MTMwMDAJMC4wMDAJMTA5Ljc1MAkxMTIuODc1Cis0OAk1MjYJMTE0LjYzMAk2NjU0MDAJMC4wMDAJ MTEzLjAwMAkxMTUuMDAwCis0OAk1MjcJMTE1LjYzMAk4NDM2MDAJMC4wMDAJMTEzLjM4MAkxMTUu NjMwCis0OAk1MjgJMTE0LjM4MAk2NDc4MDAJMC4wMDAJMTE0LjI1MAkxMTUuODgwCis0OAk1MjkJ MTEzLjAwMAk0MDQ0MDAJMC4wMDAJMTEyLjg3NQkxMTUuMDAwCis0OAk1MzAJMTExLjI1MAk3MzQ4 MDAJMC4wMDAJMTEwLjI1MAkxMTIuODgwCis0OAk1MzEJMTExLjg3NQk4OTAzMDAJMC4wMDAJMTEw LjI1MAkxMTEuODc1Cis0OAk1MzIJMTEzLjUwMAk4MDMwMDAJMC4wMDAJMTExLjI1MAkxMTMuODc1 Cis0OAk1MzMJMTE0LjAwMAk2NjIxMDAJMC4wMDAJMTEzLjAwMAkxMTQuODgwCis0OAk1MzQJMTE1 Ljc1MAk1NzM5MDAJMC4wMDAJMTEzLjYzMAkxMTYuMTMwCis0OAk1MzUJMTEzLjEzMAk3OTE0MDAJ MC4wMDAJMTEzLjAwMAkxMTYuMjUwCis0OAk1MzYJMTEzLjM3NQk4MzE3MDAJMC4wMDAJMTEyLjYy NQkxMTQuNzUwCis0OAk1MzcJMTEzLjc1MAk2NzIzMDAJMC4wMDAJMTEzLjEzMAkxMTQuNTAwCis0 OAk1MzgJMTE0LjI1MAk0MTk2MDAJMC4wMDAJMTEzLjYzMAkxMTQuNjMwCis0OAk1MzkJMTE3LjI1 MAk3Mzc4MDAJMC4wMDAJMTE0LjEyNQkxMTcuMjUwCis0OAk1NDAJMTE4LjAwMAk5NzE1MDAJMC4w MDAJMTE3LjAwMAkxMTkuNzUwCis0OAk1NDEJMTIxLjAwMAkxMTcwMzAwCTAuMDAwCTExOC4xMzAJ MTIxLjAwMAorNDgJNTQyCTEyMS43NTAJMTIzMzQwMAkwLjAwMAkxMjEuNTAwCTEyMi44NzUKKzQ4 CTU0MwkxMjEuMTMwCTYyNTUwMAkwLjAwMAkxMjAuMjUwCTEyMi4yNTAKKzQ5CTU0NAkxMjAuODc1 CTU0MjkwMAkwLjAwMAkxMjAuMjUwCTEyMi43NTAKKzQ5CTU0NQkxMTguMDAwCTg2NTMwMAkwLjAw MAkxMTcuNzUwCTEyMS4zODAKKzQ5CTU0NgkxMjAuMDAwCTY2OTgwMAkwLjAwMAkxMTcuODgwCTEy MC44ODAKKzQ5CTU0NwkxMjAuMjUwCTU1NjIwMAkwLjAwMAkxMTkuNzUwCTEyMS4wMDAKKzQ5CTU0 OAkxMjEuMDAwCTM3MzEwMAkwLjAwMAkxMjAuMzc1CTEyMS4yNTAKKzQ5CTU0OQkxMTkuMjUwCTk0 MzMwMAkwLjAwMAkxMTguNjI1CTExOS42MjUKKzUwCTU1MAkxMjIuODgwCTgxNDMwMAkwLjAwMAkx MjEuNjMwCTEyMy41MDAKKzUwCTU1MQkxMjEuNzUwCTY5MTEwMAkwLjAwMAkxMjEuNTAwCTEyMy4y NTAKKzUwCTU1MgkxMjMuMTI1CTgxOTcwMAkwLjAwMAkxMjEuNTAwCTEyNC4yNTAKKzUwCTU1Mwkx MjMuNzUwCTkxMTUwMAkwLjAwMAkxMjIuNjI1CTEyNC44NzUKKzUwCTU1NAkxMjMuODc1CTk0MjMw MAkwLjAwMAkxMjMuMTI1CTEyNC41MDAKKzUwCTU1NQkxMjMuMDAwCTEwNzA5MDAJMC4wMDAJMTIy Ljg3NQkxMjQuMTI1Cis1MAk1NTYJMTI0LjYyNQkxMDk5MzAwCTAuMDAwCTEyMi43NTAJMTI0Ljc1 MAorNTAJNTU3CTEyNi42MjUJMTExMTkwMAkwLjAwMAkxMjQuMjUwCTEyNi42MjUKKzUwCTU1OAkx MjguNjI1CTIwOTc1MDAJMC4wMDAJMTI2LjAwMAkxMjkuNTAwCis1MAk1NTkJMTI3Ljg3NQkxMjcx NTAwCTAuMDAwCTEyNi41MDAJMTI4LjM3NQorNTEJNTYwCTEyOS44NzUJMTE5MDIwMAkwLjAwMAkx MjguODc1CTEzMC4xMjUKKzUxCTU2MQkxMzEuMTMwCTEzOTEyMDAJMC4wMDAJMTI5LjEzMAkxMzEu MjUwCis1MQk1NjIJMTMyLjEzMAkxMTA0NjAwCTAuMDAwCTEzMS4wMDAJMTMyLjI1MAorNTEJNTYz CTEzMi4yNTAJODAzMzAwCTAuMDAwCTEzMS43NTAJMTMyLjUwMAorNTEJNTY0CTEzNC4yNTAJNjU4 NDAwCTAuMDAwCTEzMS41MDAJMTM0LjI1MAorNTEJNTY1CTEzMy4wMDAJNjg3MTAwCTAuMDAwCTEz Mi43NTAJMTM0LjAwMAorNTIJNTY2CTEyNi43NTAJMTQxMzIwMAkwLjAwMAkxMjUuMDAwCTEyNy4y NTAKKzUyCTU2NwkxMjYuNTAwCTk0NjQwMAkwLjAwMAkxMjUuNTAwCTEyNy4wMDAKKzUyCTU2OAkx MjMuODgwCTkyMjYwMAkwLjAwMAkxMjMuNTAwCTEyNi41MDAKKzUyCTU2OQkxMjIuMjUwCTE0NzQ1 MDAJMC4wMDAJMTIxLjc1MAkxMjMuMjUwCis1Mgk1NzAJMTIyLjEyNQk4MDM2MDAJMC4wMDAJMTIy LjAwMAkxMjMuMzc1Cis1Mgk1NzEJMTIyLjI1MAk2NTA5MDAJMC4wMDAJMTIxLjg4MAkxMjIuODgw Cis1Mgk1NzIJMTIzLjYyNQk4NTg5MDAJMC4wMDAJMTIyLjM3NQkxMjMuNjI1Cis1Mgk1NzMJMTI1 LjI1MAkxMTY1ODAwCTAuMDAwCTEyNC4wMDAJMTI1Ljc1MAorNTIJNTc0CTEyNi44NzUJNzg0ODAw CTAuMDAwCTEyNS4xMjUJMTI3LjI1MAorNTIJNTc1CTEyNy41MDAJMTAzMDYwMAkwLjAwMAkxMjcu MDAwCTEyOC4yNTAKKzUyCTU3NgkxMjQuNTAwCTEzNTQzMDAJMC4wMDAJMTI0LjAwMAkxMjcuNjMw Cis1Mwk1NzcJMTExLjI1MAkxMDQzMjAwCTAuMDAwCTEwOS4yNTAJMTExLjUwMAorNTMJNTc4CTEx Mi44ODAJMTQ1ODkwMAkwLjAwMAkxMTAuNzUwCTExMy41MDAKKzUzCTU3OQkxMTAuMDAwCTEyNDEz MDAJMC4wMDAJMTA5Ljg3NQkxMTIuNTAwCis1Mwk1ODAJMTEwLjI1MAkxMTE3MDAwCTAuMDAwCTEw OS4zNzUJMTExLjc1MAorNTMJNTgxCTExMS41MDAJODEyOTAwCTAuMDAwCTEwOS43NTAJMTExLjYy NQorNTMJNTgyCTExMi4wMDAJMTAwNTAwMAkwLjAwMAkxMTEuNjI1CTExMi44NzUKKzUzCTU4Mwkx MTEuMDAwCTc3OTQwMAkwLjAwMAkxMTAuMzc1CTExMS41MDAKKzUzCTU4NAkxMDkuMjUwCTg2ODUw MAkwLjAwMAkxMDkuMTI1CTExMS42MjUKKzU0CTU4NQkxMDguMDAwCTcyOTYwMAkwLjAwMAkxMDcu Mzc1CTEwOC42MjUKKzU0CTU4NgkxMTAuMjUwCTE0NTU5MDAJMC4wMDAJMTA4LjUwMAkxMTAuNTAw Cis1NAk1ODcJMTEwLjYyNQkxNDMyMzAwCTAuMDAwCTExMC4zNzUJMTEyLjAwMAorNTQJNTg4CTEx MS4wMDAJOTkwNzAwCTAuMDAwCTExMC4zNzUJMTExLjUwMAorNTQJNTg5CTExMi4wMDAJOTU0NzAw CTAuMDAwCTExMS4xMjUJMTEyLjUwMAorNTQJNTkwCTExMy43NTAJMjExMDUwMAkwLjAwMAkxMTIu NzUwCTExNC4yNTAKKzU0CTU5MQkxMTQuMDAwCTgxNzYwMAkwLjAwMAkxMTIuNTAwCTExNC4wMDAK KzU0CTU5MgkxMTQuNzUwCTEyNDEwMDAJMC4wMDAJMTEzLjUwMAkxMTUuMzgwCis1NAk1OTMJMTE0 LjAwMAk5MTQ5MDAJMC4wMDAJMTE0LjAwMAkxMTUuNTAwCis1NAk1OTQJMTEyLjc1MAk4ODE0MDAJ MC4wMDAJMTEyLjM3NQkxMTQuMDAwCis1NAk1OTUJMTEyLjI1MAk4MzY3MDAJMC4wMDAJMTExLjUw MAkxMTMuMDAwCis1NAk1OTYJMTEyLjI1MAk2OTQyMDAJMC4wMDAJMTExLjc1MAkxMTMuMjUwCis1 NQk1OTcJMTEyLjc1MAk3NzA1MDAJMC4wMDAJMTEwLjYzMAkxMTIuODgwCis1NQk1OTgJMTEyLjI1 MAk5MzE1MDAJMC4wMDAJMTEyLjAwMAkxMTMuNTAwCis1NQk1OTkJMTExLjEyNQk3MjA3MDAJMC4w MDAJMTEwLjUwMAkxMTIuMjUwCis1NQk2MDAJMTEwLjc1MAkxMDI4NzAwCTAuMDAwCTExMC4xMjUJ MTExLjEyNQorNTUJNjAxCTEwOS44ODAJODM2NDAwCTAuMDAwCTEwOS42MzAJMTExLjM4MAorNTUJ NjAyCTExMC43NTAJMTEwNDQwMAkwLjAwMAkxMDkuNTAwCTExMS42MjUKKzU1CTYwMwkxMTEuODc1 CTg5OTQwMAkwLjAwMAkxMTAuNjI1CTExMi4yNTAKKzU1CTYwNAkxMTMuMjUwCTEwOTAwMDAJMC4w MDAJMTExLjg3NQkxMTMuNTAwCis1NQk2MDUJMTEzLjM4MAkxMDIyOTAwCTAuMDAwCTExMi42MzAJ MTE0LjI1MAorNTUJNjA2CTExMy43NTAJMTEyMjUwMAkwLjAwMAkxMTIuNzUwCTExNC42MzAKKzU1 CTYwNwkxMTYuNTAwCTE0NjM1MDAJMC4wMDAJMTE0LjAwMAkxMTYuNTAwCis1NQk2MDgJMTE2LjI1 MAkxMzM3OTAwCTAuMDAwCTExNi4wMDAJMTE3LjI1MAorNTYJNjA5CTEwNy4yNTAJNzA0NzAwCTAu MDAwCTEwNS4zNzUJMTA3LjUwMAorNTYJNjEwCTEwNy4xMjUJODAyNDAwCTAuMDAwCTEwNi4yNTAJ MTA3LjM3NQorNTYJNjExCTEwNS4yNTAJODk3NTAwCTAuMDAwCTEwNS4yNTAJMTA3LjEzMAorNTYJ NjEyCTEwNC4zNzUJMTA3NjkwMAkwLjAwMAkxMDQuMTI1CTEwNS42MjUKKzU2CTYxMwkxMDUuMjUw CTg1NjEwMAkwLjAwMAkxMDQuMDAwCTEwNS43NTAKKzU2CTYxNAkxMDcuMjUwCTkyNTcwMAkwLjAw MAkxMDQuNTAwCTEwNy4yNTAKKzU2CTYxNQkxMDguMTMwCTEwNDcxMDAJMC4wMDAJMTA2Ljc1MAkx MDguMzgwCis1Ngk2MTYJMTA3LjUwMAk2MjUxMDAJMC4wMDAJMTA3LjEyNQkxMDguMTI1Cis1Ngk2 MTcJMTA3LjAwMAk4OTU5MDAJMC4wMDAJMTA2LjI1MAkxMDcuMzc1Cis1Ngk2MTgJMTA2LjUwMAk4 MTAwMDAJMC4wMDAJMTA1LjUwMAkxMDcuMjUwCis1Ngk2MTkJMTA2LjEyNQk5MzExMDAJMC4wMDAJ MTA1LjEyNQkxMDYuMzc1Cis1Ngk2MjAJMTA1LjM4MAk3MTAyMDAJMC4wMDAJMTA1LjEzMAkxMDcu MDAwCis1Ngk2MjEJMTA3LjEyNQkxNTkxODAwCTAuMDAwCTEwNC41MDAJMTA3Ljc1MAorNTYJNjIy CTEwOC4yNTAJMTAwMjcwMAkwLjAwMAkxMDYuNzUwCTEwOC43NTAKKzU2CTYyMwkxMDkuMDAwCTEw NTkzMDAJMC4wMDAJMTA3Ljg3NQkxMDkuNjI1Cis1Ngk2MjQJMTA4LjM4MAk2MTA0MDAJMC4wMDAJ MTA4LjI1MAkxMDkuMzgwCis1Nwk2MjUJMTI0LjYyNQk5Mjk1MDAJMC4wMDAJMTI0LjYyNQkxMjYu MTI1Cis1Nwk2MjYJMTI1Ljc1MAkxMjAwMTAwCTAuMDAwCTEyNS4yNTAJMTI2Ljg3NQorNTcJNjI3 CTEyNS44ODAJNzYzMjAwCTAuMDAwCTEyNS43NTAJMTI2LjUwMAorNTcJNjI4CTEyNi43NTAJNTg5 NzAwCTAuMDAwCTEyMy43NTAJMTI2Ljg3NQorNTcJNjI5CTEyNy41MDAJMTI3MDYwMAkwLjAwMAkx MjYuNTAwCTEyNy43NTAKKzU3CTYzMAkxMjUuNzUwCTE2Njg0MDAJMC4wMDAJMTI1LjM3NQkxMjcu MTI1Cis1Nwk2MzEJMTI0Ljg4MAkxMDU2NzAwCTAuMDAwCTEyNC4yNTAJMTI1Ljc1MAorNTcJNjMy CTEyMy4yNTAJOTQ0MzAwCTAuMDAwCTEyMy4yNTAJMTI1LjUwMAorNTcJNjMzCTEyNC4wMDAJNzgy NzAwCTAuMDAwCTEyMi43NTAJMTI0LjAwMAorNTgJNjM0CTEyNC4yNTAJNzU0MjAwCTAuMDAwCTEy My4yNTAJMTI0LjUwMAorNTgJNjM1CTEyMy43NTAJNDE4MzAwCTAuMDAwCTEyMy42MjUJMTI0LjI1 MAorNTgJNjM2CTEyMy4xMjUJNTA1MjAwCTAuMDAwCTEyMi43NTAJMTI0LjI1MAorNTgJNjM3CTEy My41MDAJNTczNjAwCTAuMDAwCTEyMi43NTAJMTI0LjAwMAorNTgJNjM4CTEyMy4xMjUJNjg1MDAw CTAuMDAwCTEyMi44NzUJMTIzLjg3NQorNTgJNjM5CTEyMS4wMDAJODcyNTAwCTAuMDAwCTEyMC43 NTAJMTIyLjYzMAorNTgJNjQwCTEyMC4wMDAJMTM4ODEwMAkwLjAwMAkxMTkuODc1CTEyMi4yNTAK KzU4CTY0MQkxMTkuNzUwCTEwMDcwMDAJMC4wMDAJMTE5LjAwMAkxMjAuMzc1Cis1OQk2NDIJMTIz LjYyNQkxMDY5NjAwCTAuMDAwCTEyMy4yNTAJMTI0LjYyNQorNTkJNjQzCTEyNC4xMzAJMTE2MzMw MAkwLjAwMAkxMjMuNjMwCTEyNS4wMDAKKzU5CTY0NAkxMjguMjUwCTIxMzg4MDAJMC4wMDAJMTI0 LjYzMAkxMjguNTAwCis1OQk2NDUJMTI5LjYzMAkyNTM5MDAwCTAuMDAwCTEyOS4xMzAJMTMwLjYz MAorNTkJNjQ2CTEzMi41MDAJMjI3MDIwMAkwLjAwMAkxMjkuMzc1CTEzMi42MjUKKzU5CTY0Nwkx MzMuMTMwCTE4MjUyMDAJMC4wMDAJMTMyLjM4MAkxMzQuNTAwCis1OQk2NDgJMTMzLjI1MAkxMjEy MzAwCTAuMDAwCTEzMi42MjUJMTM0LjEyNQorNTkJNjQ5CTEzNC42MjUJMTkzNjUwMAkwLjAwMAkx MzMuMjUwCTEzNS4yNTAKKzU5CTY1MAkxMzcuMDAwCTExMjg3MDAJMC4wMDAJMTMzLjc1MAkxMzcu MDAwCis1OQk2NTEJMTM2LjYzMAkxNTYzNjAwCTAuMDAwCTEzNi4xMzAJMTM3LjYzMAorNjAJNjUy CTEzMC41MDAJMTAzNzIwMAkwLjAwMAkxMjguMjUwCTEzMS4xMjUKKzYwCTY1MwkxMjkuMzc1CTEx MTg4MDAJMC4wMDAJMTI5LjAwMAkxMzAuNjI1Cis2MAk2NTQJMTI4Ljc1MAkxNTUyMjAwCTAuMDAw CTEyOC4xMjUJMTMwLjAwMAorNjAJNjU1CTEyNy43NTAJMTE5NzgwMAkwLjAwMAkxMjcuNzUwCTEy OC43NTAKKzYwCTY1NgkxMjQuNTAwCTIwNTc5MDAJMC4wMDAJMTI0LjUwMAkxMjguMDAwCis2MAk2 NTcJMTI1LjM3NQkxNDA0NDAwCTAuMDAwCTEyNC4xMjUJMTI1LjYyNQorNjAJNjU4CTEyNi4zODAJ MTA5ODQwMAkwLjAwMAkxMjUuNTAwCTEyNi42MzAKKzYwCTY1OQkxMjYuNjI1CTk5MzQwMAkwLjAw MAkxMjYuMzc1CTEyNy42MjUKKzYwCTY2MAkxMjguMTI1CTg0MDgwMAkwLjAwMAkxMjYuODc1CTEy OC4yNTAKKzYwCTY2MQkxMjcuNzUwCTk0OTAwMAkwLjAwMAkxMjcuNTAwCTEyOS41MDAKKzYxCTY2 MgkxMjYuNTAwCTEyODAzMDAJMC4wMDAJMTI1LjUwMAkxMjYuNzUwCis2MQk2NjMJMTI1LjYzMAkx MTM1MDAwCTAuMDAwCTEyNS4xMzAJMTI2Ljg4MAorNjEJNjY0CTEyNS4zNzUJMTI1ODgwMAkwLjAw MAkxMjQuNzUwCTEyNi4zNzUKKzYxCTY2NQkxMjUuMDAwCTc3MDUwMAkwLjAwMAkxMjQuNjMwCTEy NS42MzAKKzYxCTY2NgkxMjQuNzUwCTU3OTQwMAkwLjAwMAkxMjQuNzUwCTEyNS42MjUKKzYxCTY2 NwkxMjUuNzUwCTc3MjkwMAkwLjAwMAkxMjUuMDAwCTEyNi4yNTAKKzYxCTY2OAkxMjcuMTI1CTky NTcwMAkwLjAwMAkxMjUuMzc1CTEyNy4yNTAKKzYxCTY2OQkxMjcuODgwCTk3ODMwMAkwLjAwMAkx MjcuMDAwCTEyOC4yNTAKKzYxCTY3MAkxMzAuMTMwCTIyMzkwMDAJMC4wMDAJMTI4LjUwMAkxMzAu ODgwCis2MQk2NzEJMTMwLjI1MAkxMTU3NjAwCTAuMDAwCTEyOS43NTAJMTMwLjYyNQorNjEJNjcy CTEyOC4wMDAJMTU1MTIwMAkwLjAwMAkxMjcuNzUwCTEzMC44NzUKKzYyCTY3MwkxMzMuMDAwCTEy MTUwMDAJMC4wMDAJMTMyLjM4MAkxMzMuMjUwCis2Mgk2NzQJMTMyLjM3NQk4NTcxMDAJMC4wMDAJ MTMxLjg3NQkxMzIuNzUwCis2Mgk2NzUJMTMxLjM3NQk4MjkzMDAJMC4wMDAJMTMxLjI1MAkxMzIu Mzc1Cis2Mgk2NzYJMTMwLjg4MAk2NzUyMDAJMC4wMDAJMTMwLjc1MAkxMzEuNjMwCis2Mgk2NzcJ MTMwLjM3NQk5MjE5MDAJMC4wMDAJMTI5Ljc1MAkxMzEuNzUwCis2Mgk2NzgJMTI5Ljc1MAk5Mzk3 MDAJMC4wMDAJMTI5LjI1MAkxMzAuMjUwCis2Mgk2NzkJMTI4LjAwMAkxNjY2NjAwCTAuMDAwCTEy Ny4yNTAJMTI5LjUwMAorNjIJNjgwCTEyOC42MjUJMTM3MTkwMAkwLjAwMAkxMjcuMjUwCTEzMC4w MDAKKzYyCTY4MQkxMjkuMTI1CTEyNjU2MDAJMC4wMDAJMTI4LjI1MAkxMjkuNTAwCis2Mgk2ODIJ MTI5Ljc1MAkxMTc2MTAwCTAuMDAwCTEyOC43NTAJMTMwLjEzMAorNjIJNjgzCTEyOC41MDAJMTY0 NDUwMAkwLjAwMAkxMjguNTAwCTEzMC42MzAKKzYzCTY4NAkxMjEuMTMwCTE3NTMwMDAJMC4wMDAJ MTE5LjM4MAkxMjEuMTMwCis2Mwk2ODUJMTIwLjEzMAkxMzE2NjAwCTAuMDAwCTExOS4yNTAJMTIw LjUwMAorNjMJNjg2CTExOS44NzUJMTgxOTAwMAkwLjAwMAkxMTkuMTI1CTEyMS42MjUKKzYzCTY4 NwkxMTkuMzc1CTEyNjg5MDAJMC4wMDAJMTE5LjI1MAkxMjAuODc1Cis2Mwk2ODgJMTE4Ljc1MAkx NDAwMzAwCTAuMDAwCTExNy4zNzUJMTE5Ljc1MAorNjMJNjg5CTExOS4zODAJMTM2NTEwMAkwLjAw MAkxMTguMzgwCTExOS43NTAKKzYzCTY5MAkxMjAuODc1CTExMjUzMDAJMC4wMDAJMTE4Ljc1MAkx MjEuMTI1Cis2Mwk2OTEJMTIyLjAwMAkxNzUzMDAwCTAuMDAwCTEyMS4zODAJMTIzLjM4MAorNjMJ NjkyCTEyMy4xMzAJOTE0MzAwCTAuMDAwCTEyMi4wMDAJMTIzLjI1MAorNjMJNjkzCTEyNC4wMDAJ MTE1MTUwMAkwLjAwMAkxMjMuMTI1CTEyNC4yNTAKKzYzCTY5NAkxMjMuNzUwCTgyMDUwMAkwLjAw MAkxMjMuNTAwCTEyNC41MDAKKzY0CTY5NQkxNDEuNzUwCTE2Mzg0MDAJMC4wMDAJMTQwLjI1MAkx NDEuNzUwCis2NAk2OTYJMTQ0LjYzMAkxNjYyNTAwCTAuMDAwCTE0Mi4xMzAJMTQ0Ljg4MAorNjQJ Njk3CTE0Ni42MjUJMTk0MDIwMAkwLjAwMAkxNDQuMjUwCTE0OC4wMDAKKzY0CTY5OAkxNDkuMDAw CTE5ODU2MDAJMC4wMDAJMTQ2LjYyNQkxNDkuMzc1Cis2NAk2OTkJMTQ4LjYzMAkxNDA3NjAwCTAu MDAwCTE0Ny4wMDAJMTQ5LjM4MAorNjQJNzAwCTE1MC4yNTAJMTg5MDEwMAkwLjAwMAkxNDkuMTMw CTE1MS41MDAKKzY0CTcwMQkxNTIuMjUwCTE1ODYxMDAJMC4wMDAJMTUwLjAwMAkxNTMuNTAwCis2 NAk3MDIJMTUyLjUwMAkxNzg2MTAwCTAuMDAwCTE1MS41MDAJMTU0LjUwMAorNjQJNzAzCTE1Mi44 NzUJMTUyNDEwMAkwLjAwMAkxNTEuNjI1CTE1My44NzUKKzY0CTcwNAkxNTMuNzUwCTExMDU5MDAJ MC4wMDAJMTUyLjM3NQkxNTQuMDAwCis2NAk3MDUJMTU0LjI1MAkyMTI3ODAwCTAuMDAwCTE1My43 NTAJMTU2LjYyNQorNjQJNzA2CTE1NC4wMDAJMTIyMDkwMAkwLjAwMAkxNTMuMzgwCTE1NS4xMzAK KzY0CTcwNwkxNTIuNzUwCTEwMTE2MDAJMC4wMDAJMTUxLjI1MAkxNTQuNjMwCis2NAk3MDgJMTUz LjI1MAk1NjI3MDAJMC4wMDAJMTUyLjEyNQkxNTMuNzUwCis2NQk3MDkJMTQxLjEzMAkxODU4NjAw CTAuMDAwCTEzOC44ODAJMTQxLjI1MAorNjUJNzEwCTE0MS4xMjUJMTU2MTYwMAkwLjAwMAkxNDAu NTAwCTE0Mi4wMDAKKzY1CTcxMQkxNDAuMDAwCTEyMjkwMDAJMC4wMDAJMTM5LjUwMAkxNDAuMzgw Cis2NQk3MTIJMTM4Ljc1MAk4ODc2MDAJMC4wMDAJMTM4LjAwMAkxNDAuMDAwCis2NQk3MTMJMTM2 LjAwMAkxOTM4MzAwCTAuMDAwCTEzNS41MDAJMTM4Ljg3NQorNjUJNzE0CTEzNi4xMjUJMTYyODYw MAkwLjAwMAkxMzUuMTI1CTEzNi4zNzUKKzY1CTcxNQkxMzkuMzgwCTE2MzAwMDAJMC4wMDAJMTM2 LjAwMAkxMzkuNTAwCis2NQk3MTYJMTQwLjM3NQkyNjE4MTAwCTAuMDAwCTEzOC41MDAJMTQxLjAw MAorNjUJNzE3CTE0My43NTAJMjYyOTEwMAkwLjAwMAkxNDAuODc1CTE0My44NzUKKzY1CTcxOAkx NDMuODgwCTIyNTExMDAJMC4wMDAJMTQzLjUwMAkxNDUuNTAwCis2NQk3MTkJMTQ0LjEzMAkxNzY2 OTAwCTAuMDAwCTE0Mi44ODAJMTQ0LjUwMAorNjUJNzIwCTEzOS4yNTAJMjg2NjEwMAkwLjAwMAkx MzguNzUwCTE0Mi44ODAKKzY1CTcyMQkxMzcuMzgwCTQzNzk1MDAJMC4wMDAJMTM2LjI1MAkxMzku ODgwCis2NQk3MjIJMTM3LjAwMAkyMTk0NTAwCTAuMDAwCTEzNi4wMDAJMTM4LjUwMAorNjUJNzIz CTEzOC4yNTAJMTQxMzEwMAkwLjAwMAkxMzUuNjI1CTEzOC41MDAKKzY2CTcyNAkxMjMuNjI1CTI0 MzExMDAJMC4wMDAJMTIyLjM3NQkxMjQuNTAwCis2Ngk3MjUJMTIyLjAwMAkxNjA5MzAwCTAuMDAw CTEyMS44ODAJMTI1LjI1MAorNjYJNzI2CTEyMC44ODAJMzE0MjIwMAkwLjAwMAkxMTkuNzUwCTEy My4wMDAKKzY2CTcyNwkxMjMuMDAwCTIyMzk1MDAJMC4wMDAJMTIwLjM3NQkxMjMuMDAwCis2Ngk3 MjgJMTIxLjEzMAkyMjIwNDAwCTAuMDAwCTEyMC44ODAJMTIzLjM4MAorNjYJNzI5CTEyMS44NzUJ MTk0NzYwMAkwLjAwMAkxMjAuNTAwCTEyMi4zNzUKKzY2CTczMAkxMjAuMjUwCTE0ODQ3MDAJMC4w MDAJMTE5Ljg3NQkxMjEuMjUwCis2Ngk3MzEJMTIxLjM3NQkxNjk3MDAwCTAuMDAwCTEyMC4yNTAJ MTIxLjM3NQorNjYJNzMyCTEyMC4zNzUJMTI4MzkwMAkwLjAwMAkxMjAuMTI1CTEyMS41MDAKKzY3 CTczMwkxMjMuMTMwCTIxMDc3MDAJMC4wMDAJMTIyLjUwMAkxMjQuNzUwCis2Nwk3MzQJMTIxLjM4 MAkyNTgxMjAwCTAuMDAwCTExOS4yNTAJMTIyLjAwMAorNjcJNzM1CTEyMS41MDAJMTEwMzQwMAkw LjAwMAkxMjAuMDAwCTEyMS44ODAKKzY3CTczNgkxMjMuMTI1CTk5ODIwMAkwLjAwMAkxMjEuMjUw CTEyMy4yNTAKKzY3CTczNwkxMjMuNzUwCTc1MTQwMAkwLjAwMAkxMjIuODc1CTEyNC4yNTAKKzY3 CTczOAkxMjIuNzUwCTExMzA0MDAJMC4wMDAJMTIxLjg3NQkxMjQuMzc1Cis2OAk3MzkJMTUxLjc1 MAkxODA0NzAwCTAuMDAwCTE1MS41MDAJMTU0LjEzMAorNjgJNzQwCTE1NC4yNTAJMzMwODkwMAkw LjAwMAkxNDkuNTAwCTE1Ni4wMDAKKzY4CTc0MQkxNTUuMjUwCTI5NDU5MDAJMC4wMDAJMTU0LjYy NQkxNTYuNjI1Cis2OAk3NDIJMTU4LjYzMAkzMjQ4ODAwCTAuMDAwCTE1NS44ODAJMTU5LjYzMAor NjgJNzQzCTE2MC4xMjUJMzI3MjIwMAkwLjAwMAkxNTcuNzUwCTE2MS41MDAKKzY4CTc0NAkxNjAu NjMwCTIzODUwMDAJMC4wMDAJMTU5LjEzMAkxNjIuMzgwCis2OAk3NDUJMTYzLjAwMAkxNTYxNzAw CTAuMDAwCTE1OS43NTAJMTYzLjAwMAorNjgJNzQ2CTE2Ni44NzUJMjc5MjUwMAkwLjAwMAkxNjQu MjUwCTE2Ny42MjUKKzY4CTc0NwkxNjYuNzUwCTIxODc5MDAJMC4wMDAJMTY2LjAwMAkxNjcuNjMw Cis2OAk3NDgJMTY0Ljg4MAkxNjUyMjAwCTAuMDAwCTE2My44ODAJMTY2Ljc1MAorNjgJNzQ5CTE2 My43NTAJMTQzMDUwMAkwLjAwMAkxNjMuMjUwCTE2NS44NzUKKzY4CTc1MAkxNjMuMDAwCTIyNjk2 MDAJMC4wMDAJMTYzLjAwMAkxNjcuMzgwCis2OAk3NTEJMTY1LjM4MAkxOTk4MjAwCTAuMDAwCTE2 Mi4yNTAJMTY2LjEzMAorNjkJNzUyCTE1OS4yNTAJMjA1NzkwMAkwLjAwMAkxNTguNzUwCTE2MC44 ODAKKzY5CTc1MwkxNTkuMzgwCTE2Njg0MDAJMC4wMDAJMTU4LjUwMAkxNjAuMDAwCis2OQk3NTQJ MTYwLjI1MAkyNDM1ODAwCTAuMDAwCTE1OS43NTAJMTYxLjAwMAorNjkJNzU1CTE2My4wMDAJMjI4 NDAwMAkwLjAwMAkxNTkuMTI1CTE2My4yNTAKKzY5CTc1NgkxNjQuMzc1CTIzODY5MDAJMC4wMDAJ MTYzLjAwMAkxNjUuNjI1Cis2OQk3NTcJMTY2Ljc1MAkxNjMyMjAwCTAuMDAwCTE2NC41MDAJMTY2 Ljc1MAorNjkJNzU4CTE2OS4wMDAJMzIwMzMwMAkwLjAwMAkxNjcuMTMwCTE2OS42MzAKKzY5CTc1 OQkxNzAuMzgwCTMyOTk5MDAJMC4wMDAJMTY4LjAwMAkxNzIuMTMwCis2OQk3NjAJMTczLjM4MAky NTg2NjAwCTAuMDAwCTE3MC4zODAJMTc0LjAwMAorNjkJNzYxCTE3My4yNTAJMjEwOTIwMAkwLjAw MAkxNzIuMDAwCTE3NS4wMDAKKzcwCTc2MgkxNTAuNTAwCTI2MzA1MDAJMC4wMDAJMTQ5LjUwMAkx NTMuNzUwCis3MAk3NjMJMTUwLjc1MAkzMDczMzAwCTAuMDAwCTE0OC41MDAJMTUxLjg4MAorNzAJ NzY0CTE1NC42MzAJMTkwODQwMAkwLjAwMAkxNTEuMDAwCTE1NC43NTAKKzcwCTc2NQkxNTUuMjUw CTE4Njg1MDAJMC4wMDAJMTU0Ljc1MAkxNTYuODgwCis3MAk3NjYJMTU2LjUwMAkxNTQ0MzAwCTAu MDAwCTE1NC41MDAJMTU3LjI1MAorNzAJNzY3CTE1MS4wMDAJMjA0NDIwMAkwLjAwMAkxNTEuMDAw CTE1Ni4zNzUKKzcxCTc2OAkxNDUuMjUwCTI5MjIxMDAJMC4wMDAJMTQ0LjEzMAkxNDcuMzgwCis3 MQk3NjkJMTQwLjEyNQkzOTIzOTAwCTAuMDAwCTE0MC4wMDAJMTQ1Ljc1MAorNzEJNzcwCTEzNS4w MDAJNDY2NTAwMAkwLjAwMAkxMzIuMDAwCTE0MS4yNTAKKzcxCTc3MQkxMDQuMDAwCTYzODQ0MDAJ MC4wMDAJMTAyLjAwMAkxMzAuNzUwCis3MQk3NzIJMTE1LjAwMAkwCTAuMDAwCTExMC4xMzAJMTIy LjAwMAorNzEJNzczCTEyMi43NTAJNTM4NjYwMAkwLjAwMAkxMjAuMDAwCTEyNS41MDAKKzcyCTc3 NAkxMTguODgwCTIyMzM2MDAJMC4wMDAJMTE1LjAwMAkxMTkuMjUwCis3Mgk3NzUJMTE1LjUwMAkx ODI0NzAwCTAuMDAwCTExNS4wMDAJMTE5LjUwMAorNzIJNzc2CTExNy4yNTAJMjc5ODkwMAkwLjAw MAkxMTUuMjUwCTExOC4yNTAKKzcyCTc3NwkxMTguMjUwCTE1NTAyMDAJMC4wMDAJMTE2Ljg4MAkx MTkuNTAwCis3Mgk3NzgJMTE4LjI1MAkxMjE3MDAwCTAuMDAwCTExNi41MDAJMTE4LjM3NQorNzIJ Nzc5CTExOS41MDAJMTY0NjQwMAkwLjAwMAkxMTguNzUwCTEyMC4zODAKKzcyCTc4MAkxMTkuODc1 CTYzMDMwMAkwLjAwMAkxMTkuMDAwCTExOS44NzUKKzcyCTc4MQkxMTUuNzUwCTEwODY4MDAJMC4w MDAJMTE1LjEzMAkxMTcuNjMwCis3Mwk3ODIJMTExLjYzMAkxMjMwMzAwCTAuMDAwCTExMC43NTAJ MTEyLjEzMAorNzMJNzgzCTExMi4yNTAJNzY5MDAwCTAuMDAwCTExMS41MDAJMTEyLjc1MAorNzMJ Nzg0CTExMy4zODAJODY3NDAwCTAuMDAwCTExMi43NTAJMTE0LjAwMAorNzMJNzg1CTExMi44NzUJ ODk2ODAwCTAuMDAwCTExMi42MjUJMTEzLjc1MAorNzMJNzg2CTExMS41MDAJOTMyMjAwCTAuMDAw CTExMC43NTAJMTEzLjUwMAorNzMJNzg3CTExMC4yNTAJMTQ4OTAwMAkwLjAwMAkxMDkuNTAwCTEx MS4xMzAKKzczCTc4OAkxMTQuMDAwCTE1NjQ5MDAJMC4wMDAJMTExLjYzMAkxMTQuNzUwCis3Mwk3 ODkJMTEyLjg3NQk5NTgyMDAJMC4wMDAJMTEyLjM3NQkxMTMuODc1Cis3NAk3OTAJMTE0LjEyNQkx NjUyNzAwCTAuMDAwCTExMi41MDAJMTE0LjM3NQorNzQJNzkxCTExMy41MDAJOTQ3NDAwCTAuMDAw CTExMy4zNzUJMTE0LjEyNQorNzQJNzkyCTExMi43NTAJMTEwMDIwMAkwLjAwMAkxMTIuNTAwCTEx NC4zODAKKzc0CTc5MwkxMTIuNTAwCTIxOTU5MDAJMC4wMDAJMTEwLjYzMAkxMTIuNjMwCis3NAk3 OTQJMTEzLjAwMAkxNTU4MTAwCTAuMDAwCTExMS44ODAJMTEzLjAwMAorNzQJNzk1CTExMy4zODAJ MTE4NzcwMAkwLjAwMAkxMTMuMTMwCTExNC4yNTAKKzc0CTc5NgkxMTUuMDAwCTEzNjUzMDAJMC4w MDAJMTEzLjYzMAkxMTUuMjUwCis3NAk3OTcJMTE0LjYyNQkxOTkyMDAwCTAuMDAwCTExNC41MDAJ MTE2LjUwMAorNzQJNzk4CTExNC4wMDAJMTU4MjEwMAkwLjAwMAkxMTMuNjI1CTExNS4wMDAKKzc0 CTc5OQkxMTMuNzUwCTIyMjUwMDAJMC4wMDAJMTEyLjYyNQkxMTQuMDAwCis3NAk4MDAJMTE1LjUw MAkyNDA2NDAwCTAuMDAwCTExMy4yNTAJMTE1Ljc1MAorNzQJODAxCTExNy4zNzUJMjIwOTUwMAkw LjAwMAkxMTUuNzUwCTExNy42MjUKKzc0CTgwMgkxMTguMjUwCTI2NDgyMDAJMC4wMDAJMTE3Ljc1 MAkxMTkuMzc1Cis3NAk4MDMJMTE3LjEyNQkxNjE5ODAwCTAuMDAwCTExNy4xMjUJMTE5LjEyNQor NzUJODA0CTExNi4zODAJMTMzMzgwMAkwLjAwMAkxMTYuMDAwCTExOC4zODAKKzc1CTgwNQkxMTYu ODc1CTE1MDk4MDAJMC4wMDAJMTE2LjEyNQkxMTcuNTAwCis3NQk4MDYJMTE3LjEzMAk5MzkwMDAJ MC4wMDAJMTE2Ljg4MAkxMTcuNjMwCis3NQk4MDcJMTE3LjM4MAkxMDQ5ODAwCTAuMDAwCTExNi44 ODAJMTE4LjI1MAorNzUJODA4CTExNy43NTAJMTcwODMwMAkwLjAwMAkxMTcuMzc1CTExOC43NTAK Kzc1CTgwOQkxMTYuNzUwCTExMDU2MDAJMC4wMDAJMTE2LjAwMAkxMTcuNjMwCis3NQk4MTAJMTE2 LjI1MAkxMTQxMjAwCTAuMDAwCTExNS44NzUJMTE3LjAwMAorNzUJODExCTExNi4wMDAJMTE3MzQw MAkwLjAwMAkxMTUuMDAwCTExNi4zODAKKzc1CTgxMgkxMTYuMjUwCTk0NjYwMAkwLjAwMAkxMTUu Mzc1CTExNi4zNzUKKzc2CTgxMwk5OC43NTAJMTI0OTcwMAkwLjAwMAk5OC4wMDAJOTkuMzgwCis3 Ngk4MTQJOTkuNTAwCTExMjc5MDAJMC4wMDAJOTguNTAwCTk5Ljc1MAorNzYJODE1CTEwMC4xMjUJ MTEyOTQwMAkwLjAwMAk5OS4zNzUJMTAwLjUwMAorNzYJODE2CTEwMC4zNzUJNjM4ODAwCTAuMDAw CTEwMC4yNTAJMTAwLjc1MAorNzYJODE3CTk5LjM4MAkxMjQ1NDAwCTAuMDAwCTk4LjI1MAkxMDAu NzUwCis3Ngk4MTgJOTguODgwCTExNTc3MDAJMC4wMDAJOTguNTAwCTk5LjM4MAorNzYJODE5CTk3 Ljc1MAk5NTY1MDAJMC4wMDAJOTcuNTAwCTk4LjYyNQorNzYJODIwCTk3LjYzMAkxMDAxMzAwCTAu MDAwCTk2Ljg4MAk5OC4xMzAKKzc2CTgyMQk5Ny4xMzAJMTQzNDIwMAkwLjAwMAk5Ni44ODAJOTgu MTMwCis3Ngk4MjIJOTkuMjUwCTIwMjY5MDAJMC4wMDAJOTcuMzgwCTk5LjUwMAorNzcJODIzCTk1 LjM3NQkxMDA1MTAwCTAuMDAwCTk1LjEyNQk5NS43NTAKKzc3CTgyNAk5NC41MDAJNjgyMjAwCTAu MDAwCTk0LjI1MAk5NS41MDAKKzc3CTgyNQk5NC43NTAJMTE2NTcwMAkwLjAwMAk5NC41MDAJOTUu Mzc1Cis3Nwk4MjYJOTQuMTMwCTExOTIzMDAJMC4wMDAJOTQuMDAwCTk1LjEzMAorNzcJODI3CTk0 LjEzMAkxNjM3MTAwCTAuMDAwCTk0LjAwMAk5NC42MzAKKzc3CTgyOAk5OC4wMDAJMTc2MDQwMAkw LjAwMAk5NC41MDAJOTguMTMwCis3Nwk4MjkJOTguODc1CTIzNjYwMDAJMC4wMDAJOTguMzc1CTk5 LjUwMAorNzcJODMwCTEwMC4wMDAJMjQxODcwMAkwLjAwMAk5OC44ODAJMTAwLjM4MAorNzcJODMx CTk5Ljc1MAkxODkwNTAwCTAuMDAwCTk5LjUwMAkxMDEuNjMwCis3OAk4MzIJMTA2LjYyNQkxMDUw NDAwCTAuMDAwCTEwNi4wMDAJMTA2Ljc1MAorNzgJODMzCTEwNi41MDAJMTcxNjIwMAkwLjAwMAkx MDUuODgwCTEwNy43NTAKKzc4CTgzNAkxMDYuMTMwCTg2ODQwMAkwLjAwMAkxMDUuODgwCTEwNi44 ODAKKzc4CTgzNQkxMDUuODc1CTc1MjMwMAkwLjAwMAkxMDUuMjUwCTEwNi4zNzUKKzc4CTgzNgkx MDUuNTAwCTc4MjgwMAkwLjAwMAkxMDUuMjUwCTEwNS44ODAKKzc4CTgzNwkxMDUuODc1CTkzNDgw MAkwLjAwMAkxMDUuMTI1CTEwNi4zNzUKKzc4CTgzOAkxMDYuMzc1CTY0NTIwMAkwLjAwMAkxMDUu ODc1CTEwNi41MDAKKzc4CTgzOQkxMDcuMTI1CTkyMTYwMAkwLjAwMAkxMDcuMDAwCTEwOC4wMDAK Kzc4CTg0MAkxMTAuODgwCTQxMjA3MDAJMC4wMDAJMTEwLjEzMAkxMTEuMjUwCis3OAk4NDEJMTEx LjEyNQkxOTE2OTAwCTAuMDAwCTEwOS44NzUJMTExLjI1MAorNzgJODQyCTEwOS44NzUJMTUzMTAw MAkwLjAwMAkxMDkuNTAwCTExMC44NzUKKzc5CTg0MwkxMDIuMzgwCTEzNDcwMDAJMC4wMDAJMTAx LjUwMAkxMDMuNTAwCis3OQk4NDQJMTA1LjUwMAkxNjM0NzAwCTAuMDAwCTEwMS44ODAJMTA1LjUw MAorNzkJODQ1CTEwNS44ODAJMTYwOTQwMAkwLjAwMAkxMDUuNTAwCTEwNy42MzAKKzc5CTg0Ngkx MDcuNTAwCTE0MzgyMDAJMC4wMDAJMTA1Ljg4MAkxMDcuNzUwCis3OQk4NDcJMTA3Ljg4MAkxMTky OTAwCTAuMDAwCTEwNy4xMzAJMTA4LjM4MAorNzkJODQ4CTEwNS4wMDAJMTA3NzAwMAkwLjAwMAkx MDQuNzUwCTEwNy43NTAKKzgwCTg0OQkxMDcuMzc1CTExMDE3MDAJMC4wMDAJMTA3LjEyNQkxMDku MDAwCis4MAk4NTAJMTA3Ljg4MAkxMTYyMDAwCTAuMDAwCTEwNi4zODAJMTA4LjI1MAorODAJODUx CTEwOC4yNTAJMTU3MDAwMAkwLjAwMAkxMDYuMDAwCTEwOS4wMDAKKzgwCTg1MgkxMDkuNTAwCTkw MTMwMAkwLjAwMAkxMDguNjI1CTEwOS41MDAKKzgwCTg1MwkxMDUuMzc1CTE0MTg2MDAJMC4wMDAJ MTA1LjM3NQkxMDguNjI1Cis4MAk4NTQJMTAzLjUwMAkyMjU4NjAwCTAuMDAwCTEwMi44NzUJMTA2 LjYyNQorODAJODU1CTEwMS4wMDAJMzExMzgwMAkwLjAwMAk5OS43NTAJMTAzLjg4MAorODAJODU2 CTEwMC4yNTAJMjMwODEwMAkwLjAwMAk5OS41MDAJMTAyLjAwMAorODAJODU3CTk5LjI1MAkzMTIx NDAwCTAuMDAwCTk2LjI1MAkxMDAuODc1Cis4MAk4NTgJOTkuMzgwCTE2OTAyMDAJMC4wMDAJOTgu MjUwCTEwMC4zODAKKzgwCTg1OQkxMDAuNzUwCTEzMzAzMDAJMC4wMDAJOTkuMzgwCTEwMS42MzAK KzgwCTg2MAkxMDUuMzc1CTE4NjY1MDAJMC4wMDAJMTAxLjc1MAkxMDUuMzc1Cis4MAk4NjEJMTA3 LjYyNQkyNjU4NjAwCTAuMDAwCTEwNC42MjUJMTA5LjAwMAorODAJODYyCTEwNy43NTAJMTkxODMw MAkwLjAwMAkxMDYuNTAwCTEwOC43NTAKKzgwCTg2MwkxMDYuNzUwCTEyNzA3MDAJMC4wMDAJMTA2 LjYyNQkxMDguMjUwCis4MQk4NjQJMTExLjUwMAkzMzg5ODAwCTAuMDAwCTExMS4yNTAJMTE2LjAw MAorODEJODY1CTExMi41MDAJMTkwOTQwMAkwLjAwMAkxMTAuNzUwCTExMi44NzUKKzgxCTg2Ngkx MTMuMzgwCTExNzM4MDAJMC4wMDAJMTEyLjEzMAkxMTMuNzUwCis4MQk4NjcJMTEyLjg3NQk5OTc5 MDAJMC4wMDAJMTEyLjM3NQkxMTMuMTI1Cis4MQk4NjgJMTE0LjM3NQkxNDcxOTAwCTAuMDAwCTEx Mi42MjUJMTE0LjUwMAorODEJODY5CTExMi44ODAJMTA5MzEwMAkwLjAwMAkxMTIuODgwCTExNC42 MzAKKzgxCTg3MAkxMTEuMjUwCTE0MzUyMDAJMC4wMDAJMTExLjAwMAkxMTIuNTAwCis4MQk4NzEJ MTExLjUwMAk5NTQ5MDAJMC4wMDAJMTEwLjYyNQkxMTEuNzUwCis4MQk4NzIJMTEzLjUwMAkxNjE3 MTAwCTAuMDAwCTExMS41MDAJMTEzLjUwMAorODEJODczCTExMi43NTAJMjQ2MzkwMAkwLjAwMAkx MTIuMTMwCTExNC4wMDAKKzgxCTg3NAkxMTMuNzUwCTE4OTYwMDAJMC4wMDAJMTEyLjI1MAkxMTQu NjMwCis4MQk4NzUJMTEzLjg3NQkyMDg0NjAwCTAuMDAwCTExMy4zNzUJMTE0LjM3NQorODEJODc2 CTExMy44ODAJMzQxMzAwCTAuMDAwCTExMy43NTAJMTE0LjI1MAorODEJODc3CTExMy41MDAJMzk2 ODAwCTAuMDAwCTExMy41MDAJMTE0LjI1MAorODEJODc4CTExMy42MzAJNzE0MTAwCTAuMDAwCTEx My4wMDAJMTEzLjg4MAorODEJODc5CTExMy4zNzUJNzI4MjAwCTAuMDAwCTExMy4yNTAJMTEzLjg3 NQorODEJODgwCTExMy4wMDAJNDYxMzAwCTAuMDAwCTExMi44ODAJMTEzLjUwMAorODEJODgxCTEx Mi4xMjUJMTAzNzcwMAkwLjAwMAkxMTIuMTI1CTExMy43NTAKKzgxCTg4MgkxMTIuNTAwCTEzMDc0 MDAJMC4wMDAJMTEyLjI1MAkxMTMuODgwCis4MQk4ODMJMTEyLjEzMAkxMDg1MTAwCTAuMDAwCTEx MS44ODAJMTEzLjAwMAorODEJODg0CTExMC4yNTAJMTE4OTQwMAkwLjAwMAkxMTAuMDAwCTExMS44 NzUKKzgxCTg4NQkxMDkuMDAwCTE3MTU1MDAJMC4wMDAJMTA4Ljc1MAkxMTAuMzc1Cis4MQk4ODYJ MTA2Ljg4MAkyMDc4MDAwCTAuMDAwCTEwNi43NTAJMTEwLjc1MAorODEJODg3CTEwOC4zODAJOTYy MDAwCTAuMDAwCTEwNy4yNTAJMTA4LjM4MAorODEJODg4CTEwOC4xMzAJNjA4NzAwCTAuMDAwCTEw Ny43NTAJMTA4LjI1MAorODEJODg5CTEwNi43NTAJMTc0NjUwMAkwLjAwMAkxMDUuNTAwCTEwNy4x MzAKKzgxCTg5MAkxMDcuNTAwCTExNjgxMDAJMC4wMDAJMTA2Ljc1MAkxMDcuNzUwCis4MQk4OTEJ MTA5LjEzMAkxNTgyMDAwCTAuMDAwCTEwNi42MzAJMTA5LjI1MAorODEJODkyCTExNS43NTAJNDMz MDQwMAkwLjAwMAkxMTQuMjUwCTExNi4xMzAKKzgxCTg5MwkxMTcuNjI1CTQ1OTI1MDAJMC4wMDAJ MTE0Ljg3NQkxMTguMjUwCis4Mgk4OTQJMTE4LjAwMAkxOTYzNzAwCTAuMDAwCTExNy43NTAJMTE5 LjYyNQorODIJODk1CTExOS4yNTAJMjIxMTAwMAkwLjAwMAkxMTcuODc1CTEyMC4xMjUKKzgyCTg5 NgkxMjEuMDAwCTI4NDEyMDAJMC4wMDAJMTE5Ljg4MAkxMjEuNjMwCis4Mgk4OTcJMTIyLjYyNQky NDQxMTAwCTAuMDAwCTEyMC41MDAJMTIyLjYyNQorODIJODk4CTEyNC4yNTAJMjQ3ODQwMAkwLjAw MAkxMjIuMzgwCTEyNS4wMDAKKzgyCTg5OQkxMjQuNTAwCTE5NDkyMDAJMC4wMDAJMTIzLjAwMAkx MjUuMzgwCis4Mgk5MDAJMTI3LjAwMAkyNTI0MzAwCTAuMDAwCTEyNC42MzAJMTI3LjAwMAorODIJ OTAxCTEyNi43NTAJMTcxODMwMAkwLjAwMAkxMjYuMjUwCTEyNy4xMzAKKzgyCTkwMgkxMjYuODgw CTE5MTkxMDAJMC4wMDAJMTI1LjYzMAkxMjcuNjMwCis4Mwk5MDMJMTI4LjUwMAkyNTMyMDAwCTAu MDAwCTEyOC4zODAJMTMxLjAwMAorODMJOTA0CTEyOS41MDAJMTc1MTcwMAkwLjAwMAkxMjguMjUw CTEyOS44NzUKKzgzCTkwNQkxMzIuMzc1CTE4NjUzMDAJMC4wMDAJMTI5LjYyNQkxMzIuNTAwCis4 Mwk5MDYJMTMyLjc1MAkyMzcyNDAwCTAuMDAwCTEzMS41MDAJMTMzLjg3NQorODMJOTA3CTEzNC42 MzAJMTkyMzgwMAkwLjAwMAkxMzIuMjUwCTEzNS4wMDAKKzgzCTkwOAkxMzUuMDAwCTI0ODU0MDAJ MC4wMDAJMTMzLjg4MAkxMzYuMjUwCis4Mwk5MDkJMTM3LjM3NQkyNzM4OTAwCTAuMDAwCTEzNS4z NzUJMTM3Ljc1MAorODMJOTEwCTEzOS41MDAJMjI3ODEwMAkwLjAwMAkxMzcuMDAwCTEzOS43NTAK KzgzCTkxMQkxMzcuODgwCTE4NTQyMDAJMC4wMDAJMTM3Ljg4MAkxMzguNzUwCis4NAk5MTIJMTEw LjYzMAkyMjE0NzAwCTAuMDAwCTExMC4xMzAJMTExLjg4MAorODQJOTEzCTEwOC41MDAJMzU1NTUw MAkwLjAwMAkxMDguMTMwCTExMS4wMDAKKzg0CTkxNAkxMDYuODc1CTMwMjY4MDAJMC4wMDAJMTA1 LjYyNQkxMDguMzc1Cis4NAk5MTUJMTA5LjI1MAkyMDg2NzAwCTAuMDAwCTEwNi43NTAJMTA5LjI1 MAorODQJOTE2CTEwOS44ODAJMjA4OTAwMAkwLjAwMAkxMDkuMjUwCTExMC43NTAKKzg0CTkxNwkx MDkuNzUwCTE0NjM4MDAJMC4wMDAJMTA5LjM3NQkxMTAuNzUwCis4NAk5MTgJMTA5LjUwMAkyMTA5 MzAwCTAuMDAwCTEwOS4wMDAJMTEwLjI1MAorODQJOTE5CTEwOC41MDAJMTU3MDQwMAkwLjAwMAkx MDguMTI1CTEwOS4zNzUKKzg1CTkyMAk5OC4wMDAJMTQzODgwMAkwLjAwMAk5Ny42MzAJOTkuMzgw Cis4NQk5MjEJOTcuMjUwCTE5MDk1MDAJMC4wMDAJOTYuNzUwCTk4LjI1MAorODUJOTIyCTk5Ljc1 MAkxNDE3MjAwCTAuMDAwCTk3LjAwMAk5OS44NzUKKzg1CTkyMwk5OS44ODAJODkzNjAwCTAuMDAw CTk5LjUwMAkxMDAuNTAwCis4NQk5MjQJMTAxLjI1MAk3OTEwMDAJMC4wMDAJOTkuMTI1CTEwMS42 MjUKKzg1CTkyNQkxMDQuMjUwCTMwMzM2MDAJMC4wMDAJOTkuNzUwCTEwNC43NTAKKzg1CTkyNgkx MDEuNjI1CTIwMjU5MDAJMC4wMDAJMTAxLjM3NQkxMDMuNzUwCis4NQk5MjcJOTkuODc1CTE2MzE5 MDAJMC4wMDAJOTkuMzc1CTEwMS4yNTAKKzg1CTkyOAkxMDAuMzgwCTEzMTU3MDAJMC4wMDAJOTku NjMwCTEwMC4zODAKKzg2CTkyOQk5NC42MjUJMTk3MzAwMAk5Mi4wMDAJOTEuODc1CTk0Ljc1MAor ODYJOTMwCTkyLjM4MAkyNTE1OTAwCTk0LjAwMAk5Mi4yNTAJOTUuMDAwCis4Ngk5MzEJOTEuMjUw CTIwNDAxMDAJOTIuNjI1CTkxLjI1MAk5NC4yNTAKKzg2CTkzMgk5MC44NzUJMTYxMTUwMAk5MS4z NzUJOTAuNjI1CTkyLjUwMAorODYJOTMzCTkwLjI1MAkxMzMzMzAwCTkwLjc1MAk4OS43NTAJOTAu ODc1Cis4Ngk5MzQJOTIuMzc1CTEzMzg0MDAJOTAuMzc1CTkwLjI1MAk5Mi41MDAKKzg2CTkzNQk5 NS4zODAJMzEwMzkwMAk5NC4wMDAJOTMuNTAwCTk1Ljc1MAorODYJOTM2CTk1LjUwMAkyMjUzMjAw CTk1LjEyNQk5NS4wMDAJOTcuMTI1Cis4Ngk5MzcJOTYuMzc1CTM1ODIwMDAJOTUuMDAwCTkyLjYy NQk5OC4xMjUKKzg2CTkzOAk5NS4yNTAJMTIwOTUwMAk5Ni4yNTAJOTUuMjUwCTk2LjM3NQorODYJ OTM5CTkyLjg4MAkxNDI2NDAwCTk1LjI1MAk5Mi44ODAJOTUuNTAwCis4Ngk5NDAJOTUuNjMwCTEy NzM0MDAJOTIuODgwCTkyLjg4MAk5NS42MzAKKzg3CTk0MQk5Mi4yNTAJMTUwMjYwMAk5MS4xMjUJ OTAuMDAwCTkyLjI1MAorODcJOTQyCTkxLjI1MAkxNjMyNTAwCTkxLjc1MAk5MS4wMDAJOTIuMTMw Cis4Nwk5NDMJODkuODgwCTE0MDE3MDAJOTAuMzgwCTg5LjYzMAk5MC44ODAKKzg3CTk0NAk4OS4y NTAJMTcyNDIwMAk5MC4wMDAJODguNjI1CTkwLjM3NQorODcJOTQ1CTg5Ljc1MAk5NDU4MDAJODku NjI1CTg5LjEyNQk4OS44NzUKKzg3CTk0Ngk5MC4yNTAJMTEzMDcwMAk4OS43NTAJODkuNzUwCTkw Ljg3NQorODcJOTQ3CTkyLjEyNQkxNTgxNTAwCTkwLjUwMAk4OS44NzUJOTIuMzc1Cis4Nwk5NDgJ OTAuNzUwCTE5NTQwMDAJOTIuNzUwCTkwLjEzMAk5My4yNTAKKzg3CTk0OQk4OS43NTAJMTI5NTEw MAk5MC41MDAJODkuNTAwCTkxLjEzMAorODcJOTUwCTg5LjYyNQkxMzE0NTAwCTkwLjAwMAk4OS4x MjUJOTEuMTI1Cis4Nwk5NTEJODkuNjMwCTExNDg0MDAJOTAuMDAwCTg5LjM4MAk5MC43NTAKKzg3 CTk1Mgk4OS43NTAJMTM2MzIwMAk4OS43NTAJODkuMTI1CTkwLjYyNQorODcJOTUzCTg5Ljg3NQkx NDQ2MTAwCTg5Ljc1MAk4OS4yNTAJOTAuMzc1Cis4Nwk5NTQJODkuMzgwCTEwNTY1MDAJODkuODgw CTg4Ljc1MAk5MC4yNTAKKzg4CTk1NQk4Mi4zODAJMTkyNjQwMAk4My4zODAJODIuMjUwCTg0Ljg4 MAorODgJOTU2CTg0Ljg3NQkzMDIwMTAwCTgyLjYyNQk4Mi42MjUJODUuMDAwCis4OAk5NTcJODUu MTI1CTIyNzU2MDAJODUuMzc1CTg0LjYyNQk4NS44NzUKKzg4CTk1OAk4Ni4wMDAJMjA1MjkwMAk4 NS42MzAJODQuNTAwCTg2LjEzMAorODgJOTU5CTg3LjUwMAkxNzEyMzAwCTg2LjEzMAk4NS44ODAJ ODcuNTAwCis4OAk5NjAJODguMjUwCTMzMTY2MDAJODkuNTAwCTg4LjEyNQk4OS43NTAKKzg4CTk2 MQk4OC41MDAJMjIxNTYwMAk4OC43NTAJODcuNjI1CTg4Ljg3NQorODgJOTYyCTg4LjYyNQkyMDYz MTAwCTg4LjUwMAk4Ny41MDAJODguNjI1Cis4OAk5NjMJODkuNTAwCTE3OTI4MDAJODguNTAwCTg4 LjI1MAk4OS43NTAKKzg4CTk2NAk5MC4wMDAJMjExNzIwMAk4OS42MzAJODkuNTAwCTkwLjI1MAor ODgJOTY1CTkwLjEyNQkxMzI0OTAwCTg5Ljg3NQk4OS42MjUJOTAuMTI1Cis4OAk5NjYJODkuMjUw CTE0NzU0MDAJOTAuMDAwCTg5LjAwMAk5MC42MzAKKzg5CTk2Nwk4OS4yNTAJMTQ3NTQwMAk5MC4w MDAJODkuMDAwCTkwLjYzMAorODkJOTY4CTg4LjEzMAk5OTMxMDAJODkuMTMwCTg4LjEzMAk4OS4y NTAKKzg5CTk2OQk4OC4xMjUJMTAwMDkwMAk4Ny44NzUJODcuNzUwCTg4Ljc1MAorODkJOTcwCTg4 LjUwMAkxMTA4OTAwCTg4LjEzMAk4Ny4zODAJODguNTAwCis4OQk5NzEJODguMTMwCTEyNjg2MDAJ ODguODgwCTg3Ljc1MAk4OC44ODAKKzg5CTk3Mgk5MC43NTAJMTY4MTkwMAk4OC41MDAJODguMjUw CTkwLjc1MAorODkJOTczCTkwLjYyNQkyMDc0NDAwCTkxLjI1MAk5MC4zNzUJOTIuMTI1Cis4OQk5 NzQJOTIuNTAwCTIzNDEyMDAJOTIuNTAwCTkyLjEyNQk5My4wMDAKKzg5CTk3NQk5My44NzUJMjA0 NDkwMAk5Mi41MDAJOTIuMzc1CTk0LjAwMAorOTAJOTc2CTYyLjg4MAkyNTQxODAwCTYyLjM4MAk2 Mi4zODAJNjMuMzgwCis5MAk5NzcJNTYuMTMwCTEyMTkzNTAwCTAuMDAwCTU2LjAwMAk1OS44ODAK KzkwCTk3OAk1MS44NzUJMTM0MjEyMDAJNTMuNjI1CTUwLjc1MAk1NC44NzUKKzkwCTk3OQk1My4w MDAJODAyNTQwMAkwLjAwMAk1MS4yNTAJNTMuMzgwCis5MAk5ODAJNTEuMzc1CTc2NTgwMDAJNTMu MTI1CTUwLjI1MAk1My4yNTAKKzkwCTk4MQk0OC44NzUJNzM4NDYwMAk1MS4yNTAJNDguNzUwCTUx LjYyNQorOTAJOTgyCTUxLjc1MAk2MTE1NzAwCTUwLjAwMAk0OS4wMDAJNTIuMDAwCis5MAk5ODMJ NTEuMjUwCTQxODYyMDAJNTEuNjI1CTUxLjAwMAk1Mi42MjUKKzkxCTk4NAk0Ni4zODAJMzYzODkw MAk0Ny4wMDAJNDUuODgwCTQ3LjAwMAorOTEJOTg1CTQ4LjYyNQkzNDIwNTAwCTQ2LjUwMAk0Ni41 MDAJNDguNzUwCis5MQk5ODYJNDguODc1CTMwNTQ1MDAJNDguNzUwCTQ3LjUwMAk0OS4yNTAKKzkx CTk4Nwk0OS4wMDAJNzgwMjQwMAk1Mi44NzUJNDguNzUwCTUzLjI1MAorOTEJOTg4CTQ5LjYyNQkz MzA3NTAwCTQ5LjEyNQk0OC4yNTAJNTAuMDAwCis5MQk5ODkJNTAuMjUwCTMwOTU3MDAJNTAuMDAw CTQ5Ljc1MAk1MC44NzUKKzkxCTk5MAk1MS41MDAJMjk4MTUwMAk1MS4wMDAJNTAuODc1CTUxLjYy NQorOTEJOTkxCTUyLjYyNQkzMDM5NTAwCTUyLjAwMAk1Mi4wMDAJNTIuNjI1Cis5MQk5OTIJNTIu MTI1CTI2MzU0MDAJNTIuMjUwCTUyLjAwMAk1My4wMDAKKzkyCTk5Mwk0Mi4yNTAJMjQ5NDIwMAk0 My42MjUJNDIuMDAwCTQzLjYyNQorOTIJOTk0CTQyLjM3NQkzOTIyMzAwCTQxLjg3NQk0MS4xMjUJ NDIuMzc1Cis5Mgk5OTUJNDUuNjMwCTYyNjAzMDAJNDQuODgwCTQ0LjUwMAk0NS44ODAKKzkyCTk5 Ngk0NC4wMDAJNDIxNjcwMAk0Ni4wMDAJNDMuODc1CTQ2LjM3NQorOTMJOTk3CTUxLjg3NQkyMzMx NzAwCTUyLjI1MAk1MS41MDAJNTIuNjI1Cis5Mwk5OTgJNTIuMDAwCTI1OTUzMDAJNTEuODc1CTUx LjYyNQk1Mi41MDAKKzkzCTk5OQk1My4xMjUJMjA2NzIwMAk1Mi4zNzUJNTEuODc1CTUzLjI1MAor OTMJMTAwMAk1NS4xMjUJNDE4NDAwMAk1NC4wMDAJNTMuNzUwCTU1LjI1MAorOTMJMTAwMQk1NS43 NTAJMTIxMTAwMAk1NS41MDAJNTUuMTI1CTU2LjAwMAorOTMJMTAwMgk1NC4zODAJMjQ4NzkwMAk1 Ni4wMDAJNTQuMzgwCTU2LjEzMAorOTMJMTAwMwk1My44NzUJMTk3NjgwMAk1NC41MDAJNTMuNzUw CTU1LjEyNQorOTMJMTAwNAk1My4xMzAJMjM4NTMwMAk1NC43NTAJNTMuMTMwCTU0Ljc1MAorOTMJ MTAwNQk1My43NTAJMTg2NTgwMAk1My4yNTAJNTMuMjUwCTU0LjEyNQorOTQJMTAwNgk1OS4wMDAJ MTg0NjgwMAk1OC4xMzAJNTguMDAwCTU5LjEzMAorOTQJMTAwNwk1OS41MDAJMjU3MDAwMAk1OS4w MDAJNTguNTAwCTU5Ljg3NQorOTQJMTAwOAk1OC41MDAJMjM3OTgwMAk2MC4wMDAJNTguNTAwCTYw LjAwMAorOTQJMTAwOQk1OC44NzUJMTQ1ODYwMAk1OC41MDAJNTguMDAwCTU5LjM3NQorOTQJMTAx MAk1OS4yNTAJMTczNDkwMAk1OC44NzUJNTguNTAwCTU5LjUwMAorOTQJMTAxMQk1OC42MzAJMTY5 MDYwMAk1OS4xMzAJNTguNTAwCTU5LjM4MAorOTQJMTAxMgk1OC4xMzAJMTUwMzEwMAk1OC43NTAJ NTguMTMwCTU4Ljg4MAorOTQJMTAxMwk1OC43NTAJMTgwNDIwMAk1OC4yNTAJNTguMjUwCTU5LjAw MAorOTQJMTAxNAk1OC42MzAJMTU4NjAwMAk1OC43NTAJNTguMzgwCTU5LjUwMAorOTQJMTAxNQk1 Ny41MDAJMTUyODEwMAk1OC41MDAJNTcuMTMwCTU4LjUwMAorOTQJMTAxNgk1Ny4xMjUJMjI1NTkw MAk1Ny4zNzUJNTYuMzc1CTU3LjM3NQorOTQJMTAxNwk1Ni4wMDAJMTk1OTUwMAk1Ni43NTAJNTUu NzUwCTU3LjAwMAorOTQJMTAxOAk1NS4yNTAJMjI3ODUwMAk1NS44NzUJNTUuMTI1CTU1Ljg3NQor OTQJMTAxOQk1NS4yNTAJMzE3NjYwMAk1NS4xMjUJNTQuNzUwCTU1LjYyNQorOTQJMTAyMAk1OC42 MzAJNDIxOTMwMAk1NS43NTAJNTUuNzUwCTU4Ljc1MAorOTQJMTAyMQk1OC4yNTAJMTAxNTQ5MDAJ NTguODgwCTU1LjM4MAk1OS4zODAKKzk1CTEwMjIJNTIuODgwCTE1NjU2MDAJNTMuMzgwCTUyLjc1 MAk1My42MzAKKzk1CTEwMjMJNTMuMjUwCTE5ODU1MDAJNTIuNTAwCTUyLjAwMAk1My4zODAKKzk1 CTEwMjQJNTQuMDAwCTE4NzM3MDAJNTMuMzc1CTUzLjM3NQk1NC42MjUKKzk1CTEwMjUJNTQuNTAw CTE3Mjc0MDAJNTQuMzgwCTU0LjAwMAk1NC42MzAKKzk1CTEwMjYJNTQuNjI1CTE0OTU3MDAJNTUu MjUwCTU0LjUwMAk1NS4yNTAKKzk1CTEwMjcJNTIuNzUwCTIyOTAyMDAJNTQuODgwCTUyLjUwMAk1 NS4wMDAKKzk2CTEwMjgJNTMuMzgwCTIwOTc1MDAJNTMuNTAwCTUxLjM4MAk1My43NTAKKzk2CTEw MjkJNTIuMjUwCTIyMDc3MDAJNTMuMjUwCTUxLjc1MAk1My41MDAKKzk2CTEwMzAJNTguMzgwCTg3 NTgxMDAJNTUuMDAwCTU0LjAwMAk1OC42MzAKKzk2CTEwMzEJNTguNzUwCTU2NjA1MDAJNTguMzc1 CTU4LjAwMAk1OS41MDAKKzk3CTEwMzIJNTguNTAwCTIyMTcyMDAJNTguODgwCTU4LjUwMAk1OS4y NTAKKzk3CTEwMzMJNTcuMTI1CTIyOTc1MDAJNTcuODc1CTU2Ljc1MAk1OC4yNTAKKzk3CTEwMzQJ NTcuNTAwCTE5MDg2MDAJNTcuMzc1CTU2Ljg3NQk1Ny44NzUKKzk3CTEwMzUJNTguMDAwCTE2MDg1 MDAJNTcuNTAwCTU2Ljg3NQk1OC4zNzUKKzk3CTEwMzYJNTguMzgwCTEzNzY2MDAJNTguMTMwCTU3 Ljg4MAk1OC42MzAKKzk3CTEwMzcJNTcuNzUwCTE1MDAzMDAJNTguMjUwCTU3LjUwMAk1OC4yNTAK Kzk4CTEwMzgJNTUuNjI1CTE4MTcyMDAJNTYuNzUwCTU1LjYyNQk1Ni44NzUKKzk4CTEwMzkJNTUu ODgwCTMxODkzMDAJNTUuNzUwCTU0LjUwMAk1Ni4yNTAKKzk4CTEwNDAJNjIuMzgwCTg4MDc1MDAJ NTkuMDAwCTU4LjAwMAk2Mi42MzAKKzk4CTEwNDEJNjEuMzgwCTM3MTQxMDAJNjIuMjUwCTYxLjEz MAk2Mi4zODAKKzk5CTEwNDIJNzIuMjUwCTIzNDE2MDAJNzMuNjI1CTcyLjI1MAk3NC4xMjUKKzk5 CTEwNDMJNzMuMTI1CTIwNDA4MDAJNzIuNTAwCTcxLjg3NQk3My4xMjUKKzk5CTEwNDQJNzMuMjUw CTE1MzY0MDAJNzIuODgwCTcyLjc1MAk3My43NTAKKzk5CTEwNDUJNzQuMzc1CTI0NjM0MDAJNzMu NTAwCTczLjM3NQk3NC41MDAKKzk5CTEwNDYJNzUuMzgwCTM5MzM5MDAJNzQuMDAwCTczLjc1MAk3 NS43NTAKKzk5CTEwNDcJNzUuMDAwCTUyMTY5MDAJNzUuNTAwCTczLjg3NQk3Ni4xMjUKKzk5CTEw NDgJNzQuNjI1CTMzNzI1MDAJNzQuNjI1CTc0LjEyNQk3NS4zNzUKKzk5CTEwNDkJNzMuMDAwCTI2 MTUyMDAJNzQuNjI1CTcyLjg3NQk3NC42MjUKKzk5CTEwNTAJNzMuODgwCTI4Mjk2MDAJNzIuNjMw CTcyLjYzMAk3NC4zODAKKzEwMAkxMDUxCTcxLjc1MAkxNDE4NTAwCTcyLjc1MAk3MS41MDAJNzMu MDAwCisxMDAJMTA1Mgk3Mi4xMzAJMjc0MjQwMAk3Mi4wMDAJNzAuMjUwCTcyLjg4MAorMTAwCTEw NTMJNzMuNjI1CTMyOTIwMDAJNzIuMzc1CTcyLjI1MAk3My44NzUKKzEwMAkxMDU0CTc0LjM4MAkx NDU4NjAwCTczLjYzMAk3My41MDAJNzQuMzgwCisxMDAJMTA1NQk3NC42MjUJMjU2MjgwMAk3NC44 NzUJNzQuNTAwCTc1LjI1MAorMTAwCTEwNTYJNzQuMzgwCTEzNTIxMDAJNzQuMzgwCTc0LjEzMAk3 NC44ODAKKzEwMAkxMDU3CTc0LjI1MAkxNDUwNzAwCTc0LjI1MAk3My44NzUJNzQuMzc1CisxMDAJ MTA1OAk3NC4yNTAJMTQ5NjQwMAk3NC4xMjUJNzQuMTI1CTc0Ljg3NQorMTAxCTEwNTkJODcuMTMw CTI1NzY0MDAJODcuODgwCTg2LjAwMAk4OC4yNTAKKzEwMQkxMDYwCTg5LjAwMAk1OTc3NzAwCTkw LjUwMAk4OC42MzAJOTAuNTAwCisxMDEJMTA2MQk5MS42MjUJNTg4NjQwMAk4OS4zNzUJODkuMTI1 CTkyLjAwMAorMTAxCTEwNjIJOTMuNTAwCTQzMTg5MDAJOTEuNTAwCTkxLjAwMAk5My44ODAKKzEw MQkxMDYzCTkzLjYyNQkzMzQ2MzAwCTkzLjEyNQk5Mi44NzUJOTMuODc1CisxMDEJMTA2NAk5NS4y NTAJMzY5NDUwMAk5My4xMjUJOTIuODc1CTk1LjYyNQorMTAyCTEwNjUJODkuMzc1CTMzOTQwMDAJ OTAuMTI1CTg4LjM3NQk5MC43NTAKKzEwMgkxMDY2CTg5LjEzMAkzMzA4NDAwCTg5LjYzMAk4OC42 MzAJOTAuMjUwCisxMDIJMTA2Nwk5MC4yNTAJMjk5NTcwMAk5MC41MDAJODkuNzUwCTkwLjc1MAor MTAyCTEwNjgJOTEuNzUwCTI5MDUyMDAJOTEuMzgwCTkwLjg4MAk5Mi4yNTAKKzEwMgkxMDY5CTkz LjAwMAkyNTYyNTAwCTkxLjg3NQk5MS44NzUJOTMuMzc1CisxMDIJMTA3MAk5My4wMDAJMjE5Mjkw MAk5My42MzAJOTMuMDAwCTk0LjAwMAorMTAzCTEwNzEJMTA5LjAwMAkzMjg1NjAwCTEwNi41MDAJ MTA1LjYyNQkxMDkuNTAwCisxMDMJMTA3MgkxMDguNjI1CTEyNTcyMDAJMTA5LjEyNQkxMDguNTAw CTEwOS43NTAKKzEwMwkxMDczCTEwOC44NzUJMTQzMDgwMAkxMDkuMTI1CTEwOC42MjUJMTA5LjM3 NQorMTAzCTEwNzQJMTA5LjYzMAkxNzk1MzAwCTEwOC44ODAJMTA4Ljg4MAkxMTAuMDAwCisxMDMJ MTA3NQkxMDkuODc1CTE5NjY4MDAJMTEwLjAwMAkxMDkuNjI1CTExMC4zNzUKKzEwMwkxMDc2CTEw OS4xMjUJMTk3MTQwMAkxMDkuODc1CTEwOC44NzUJMTEwLjM3NQorMTAzCTEwNzcJMTA5LjI1MAky MzI3NzAwCTEwOS41MDAJMTA4LjM4MAkxMDkuNjMwCisxMDMJMTA3OAkxMTAuNzUwCTE3NDgzMDAJ MTA5LjI1MAkxMDkuMjUwCTExMC44NzUKKzEwMwkxMDc5CTExMi4wMDAJMjcwMTAwMAkxMTEuMDAw CTExMC4yNTAJMTEyLjEyNQorMTAzCTEwODAJMTEyLjM3NQkyOTQ2ODAwCTExMi4xMjUJMTEwLjc1 MAkxMTIuNzUwCisxMDMJMTA4MQkxMTMuNjI1CTMwMjk3MDAJMTEyLjM3NQkxMTIuMjUwCTExNC42 MjUKKzEwMwkxMDgyCTExMS4zNzUJMzY5ODEwMAkxMTMuODc1CTExMS4xMjUJMTE0LjAwMAorMTAz CTEwODMJMTA2Ljc1MAk0NzAwNzAwCTExMS4zODAJMTA2LjUwMAkxMTEuMzgwCisxMDMJMTA4NAkx MDcuNjMwCTU1MTQzMDAJMTA3LjAwMAkxMDUuNjMwCTEwOC4yNTAKKzEwMwkxMDg1CTEwNi42MjUJ MzIzOTAwMAkxMDguMTI1CTEwNi41MDAJMTA4LjUwMAorMTA0CTEwODYJOTEuODgwCTM3NDQ0MDAJ ODkuMTMwCTg5LjEzMAk5MS44ODAKKzEwNAkxMDg3CTg5LjM3NQkzNjA1ODAwCTkyLjAwMAk4OS4x MjUJOTIuMDAwCisxMDQJMTA4OAk5MC44NzUJMjY3NDAwMAk4OS44NzUJODkuNzUwCTkxLjEyNQor MTA0CTEwODkJOTEuMjUwCTE4Nzc0MDAJOTAuODgwCTkwLjg4MAk5MS44ODAKKzEwNAkxMDkwCTkx Ljc1MAk5NDU0MDAJOTIuMDAwCTkxLjYyNQk5Mi4xMjUKKzEwNAkxMDkxCTkyLjAwMAkxNTcyMDAw CTkxLjc1MAk5MC43NTAJOTIuMDAwCisxMDUJMTA5Mgk4Ny4yNTAJNDYyNDYwMAk4OC4xMzAJODYu MDAwCTg4LjUwMAorMTA1CTEwOTMJODYuMzc1CTI2NjQ0MDAJODcuMjUwCTg2LjEyNQk4Ny4yNTAK KzEwNQkxMDk0CTgzLjEyNQkzNzQyODAwCTg2LjUwMAk4My4xMjUJODYuNTAwCisxMDUJMTA5NQk4 Ny4wMDAJNDYxMzAwMAk4NC4xMjUJODMuNTAwCTg3Ljc1MAorMTA1CTEwOTYJODcuNjI1CTQ4MjEx MDAJODYuNzUwCTg1Ljc1MAk4OS4yNTAKKzEwNQkxMDk3CTk2LjI1MAk5ODU2OTAwCTkwLjAwMAk4 OS42MjUJOTYuMjUwCisxMDUJMTA5OAkxMDIuMDAwCTEzMTQ1OTAwCTk2LjYyNQk5Ni41MDAJMTA0 LjEyNQorMTA1CTEwOTkJMTAyLjI1MAk1MjkzMDAwCTEwMS41MDAJMTAxLjM3NQkxMDMuODc1Cisx MDUJMTEwMAkxMDMuMDAwCTQ5NTkxMDAJMTAwLjc1MAkxMDAuNzUwCTEwNC41MDAKKzEwNQkxMTAx CTEwNy4wMDAJNzk4OTAwMAkxMDMuMTMwCTEwMy4xMzAJMTA5LjAwMAorMTA1CTExMDIJMTA0LjEy NQk0NzIxODAwCTEwNy42MjUJMTA0LjEyNQkxMDguMDAwCisxMDYJMTEwMwkxMTMuNjI1CTM0Njc5 MDAJMTE0LjAwMAkxMTMuNTAwCTExNC44NzUKKzEwNgkxMTA0CTExNC4yNTAJMzIzNzQwMAkxMTMu ODgwCTExMy43NTAJMTE1LjAwMAorMTA2CTExMDUJMTE3LjYyNQk1ODM1MzAwCTExNC4zNzUJMTE0 LjI1MAkxMTguNTAwCisxMDYJMTEwNgkxMTguMDAwCTQ5ODU5MDAJMTE4LjAwMAkxMTcuNTAwCTEx OC44ODAKKzEwNgkxMTA3CTExOS4xMjUJNTMyMjIwMAkxMTYuNzUwCTExNi43NTAJMTIwLjg3NQor MTA2CTExMDgJMTIwLjI1MAk0MDk3MzAwCTExOS4wMDAJMTE4LjYzMAkxMjAuNjMwCisxMDYJMTEw OQkxMjQuMTI1CTUzNTU4MDAJMTIxLjc1MAkxMjEuMjUwCTEyNS42MjUKKzEwNgkxMTEwCTEyNS42 MzAJNDEyNjIwMAkxMjUuMDAwCTEyNC4wMDAJMTI2LjEzMAorMTA2CTExMTEJMTI0Ljg4MAkyODgy NTAwCTEyMy44ODAJMTIzLjg4MAkxMjUuNTAwCisxMDcJMTExMgkxMDguNzUwCTQ3MjI5MDAJMTE0 Ljg3NQkxMDguMzc1CTExNS4xMjUKKzEwNwkxMTEzCTExMC43NTAJNDU1ODkwMAkxMDguMzc1CTEw Ny42MjUJMTEyLjAwMAorMTA3CTExMTQJMTExLjI1MAkzNjE5ODAwCTExMS4xMzAJMTEwLjI1MAkx MTMuNzUwCisxMDcJMTExNQkxMDkuNzUwCTMwNDY2MDAJMTExLjg3NQkxMDkuNTAwCTExMi4zNzUK KzEwNwkxMTE2CTExMS4yNTAJMjkzMTYwMAkxMTAuMzgwCTExMC4zODAJMTEzLjc1MAorMTA3CTEx MTcJMTEwLjM4MAkyMzc5NTAwCTExMi4xMzAJMTEwLjAwMAkxMTIuNzUwCisxMDcJMTExOAkxMTcu NjI1CTU0MDc3MDAJMTExLjAwMAkxMTAuNTAwCTExOC4xMjUKKzEwNwkxMTE5CTExOS43NTAJNDE0 OTkwMAkxMTcuNTAwCTExNi4xMzAJMTIwLjUwMAorMTA4CTExMjAJOTEuNzUwCTM2ODM2MDAJODku NjMwCTg5LjEzMAk5Mi42MzAKKzEwOAkxMTIxCTEwMy42MzAJOTAxNDkwMAk5Ni4wMDAJOTUuNjMw CTEwMy43NTAKKzEwOAkxMTIyCTEwMy44NzUJMzk5MDQwMAkxMDMuMTI1CTEwMS42MjUJMTA0LjEy NQorMTA4CTExMjMJMTA0Ljc1MAkzMzM4MjAwCTEwMy41MDAJMTAzLjM4MAkxMDUuNTAwCisxMDgJ MTEyNAkxMDcuMzgwCTM5OTI4MDAJMTA1LjI1MAkxMDMuNzUwCTEwOC4wMDAKKzEwOAkxMTI1CTEw Ny41MDAJMzUwNTMwMAkxMDcuMTI1CTEwNy4wMDAJMTA4Ljg3NQorMTA4CTExMjYJMTA3LjI1MAkz MTIwNjAwCTEwOC4wMDAJMTA3LjI1MAkxMDkuMDAwCisxMDgJMTEyNwkxMDguODc1CTIyNjU4MDAJ MTA4LjM3NQkxMDcuNzUwCTEwOS4zNzUKKzEwOAkxMTI4CTEwOS4yNTAJMjE1MTEwMAkxMDguMDAw CTEwOC4wMDAJMTA5LjM3NQorMTA5CTExMjkJMTI0Ljc1MAkxMzEyMjAwCTEyNC43NTAJMTI0LjAw MAkxMjUuNTAwCisxMDkJMTEzMAkxMjQuNTAwCTE4NjQ0MDAJMTI0Ljg3NQkxMjQuMTI1CTEyNy4x MjUKKzEwOQkxMTMxCTEyMy43NTAJMjQ0NjUwMAkxMjQuMDAwCTEyMy4xMzAJMTI1LjI1MAorMTA5 CTExMzIJMTI1Ljg4MAkyMDEzMjAwCTEyNC4yNTAJMTI0LjAwMAkxMjUuODgwCisxMDkJMTEzMwkx MjUuMDAwCTE4NDUxMDAJMTI1Ljc1MAkxMjQuNjI1CTEyNi4yNTAKKzEwOQkxMTM0CTEyNi42MjUJ MjMwMjMwMAkxMjUuODc1CTEyNS42MjUJMTI3LjEyNQorMTA5CTExMzUJMTI3Ljg3NQkxODM1NDAw CTEyNi44NzUJMTI2Ljg3NQkxMjguMDAwCisxMDkJMTEzNgkxMjguMzgwCTMxNDgwMDAJMTI4LjAw MAkxMjcuNjMwCTEyOS41MDAKKzEwOQkxMTM3CTEyNi4yNTAJMjQwMjQwMAkxMjkuMDAwCTEyNi4x MzAJMTI5LjM4MAorMTA5CTExMzgJMTI3Ljc1MAkyMjQ4NTAwCTEyNS41MDAJMTI1LjUwMAkxMjgu MDAwCisxMDkJMTEzOQkxMjkuODc1CTI4NTgzMDAJMTI4LjUwMAkxMjguMjUwCTEzMC4xMjUKKzEw OQkxMTQwCTEzMC4wMDAJMTQwMDkwMAkxMjkuODgwCTEyOS4xMzAJMTMwLjAwMAorMTA5CTExNDEJ MTI5LjUwMAkyODYzOTAwCTEzMC43NTAJMTI4LjYzMAkxMzEuMjUwCisxMDkJMTE0MgkxMjcuNjI1 CTE4NzU3MDAJMTI5LjUwMAkxMjcuMzc1CTEyOS41MDAKKzEwOQkxMTQzCTEyNS42MjUJMjEzNTQw MAkxMjguNzUwCTEyNS4yNTAJMTI5LjEyNQorMTA5CTExNDQJMTI5LjM3NQkzNDczNzAwCTEyNS41 MDAJMTI0LjAwMAkxMjkuNTAwCisxMTAJMTE0NQkxMzMuMzc1CTI4ODY0MDAJMTMwLjYyNQkxMzAu MjUwCTEzMy44NzUKKzExMAkxMTQ2CTEzMy43NTAJMzQ4MTYwMAkxMzMuMTI1CTEzMi43NTAJMTM1 LjEyNQorMTEwCTExNDcJMTM0LjM3NQkxNTY5NDAwCTEzMy4zNzUJMTMyLjg3NQkxMzQuNTAwCisx MTAJMTE0OAkxMzQuNTAwCTE0MjkyMDAJMTM0LjM3NQkxMzQuMDAwCTEzNC44NzUKKzExMAkxMTQ5 CTEzMy4yNTAJMjcyNDEwMAkxMzUuMDAwCTEzMy4wMDAJMTM1Ljc1MAorMTEwCTExNTAJMTM0Ljc1 MAkyMzkyMzAwCTEzMy41MDAJMTMzLjI1MAkxMzUuODc1CisxMTAJMTE1MQkxMzYuODgwCTI3NzQ1 MDAJMTM0LjYzMAkxMzQuNjMwCTEzNy42MzAKKzExMAkxMTUyCTE0NS4wMDAJNzgwMzgwMAkxMzcu NjMwCTEzNy4zODAJMTQ1LjUwMAorMTEwCTExNTMJMTQ2Ljc1MAk1Nzc3MTAwCTE0NC43NTAJMTQz LjAwMAkxNTAuMDAwCisxMTEJMTE1NAkxNTcuNjI1CTI4MzMwMDAJMTU4LjEyNQkxNTYuMTI1CTE1 OC41MDAKKzExMQkxMTU1CTE1OC4wMDAJNTUxNTQwMAkxNTcuNTAwCTE1Ny4wMDAJMTYwLjc1MAor MTExCTExNTYJMTU4LjEyNQkyNzk5NzAwCTE1OC4yNTAJMTU3Ljc1MAkxNjAuMjUwCisxMTEJMTE1 NwkxNTkuMzc1CTkzMTMwMAkxNTguMTI1CTE1OC4xMjUJMTU5LjYyNQorMTExCTExNTgJMTYzLjAw MAkzMzE2MDAwCTE1OS42MzAJMTU5LjYzMAkxNjMuNTAwCisxMTEJMTE1OQkxNjIuNjI1CTQ2Nzc4 MDAJMTYzLjYyNQkxNjIuNjI1CTE2Ni4wMDAKKzExMQkxMTYwCTE2Mi4wMDAJNDQzNzQwMAkxNjIu ODc1CTE1OS4xMjUJMTY0LjAwMAorMTExCTExNjEJMTU4LjUwMAkzMDM2MzAwCTE2MS4zNzUJMTU4 LjM3NQkxNjIuNjI1CisxMTEJMTE2MgkxNTUuNjI1CTYwNTE5MDAJMTUxLjAwMAkxNTEuMDAwCTE1 OC4wMDAKKzExMQkxMTYzCTE2MC4wMDAJMjc2OTkwMAkxNTYuNjMwCTE1Ni4yNTAJMTYwLjEzMAor MTEyCTExNjQJMTQxLjI1MAkzNTgzMDAwCTE0My4xMzAJMTQwLjI1MAkxNDMuNTAwCisxMTIJMTE2 NQkxMzcuNjI1CTYzMDg1MDAJMTQwLjc1MAkxMzcuMTI1CTE0MC44NzUKKzExMgkxMTY2CTE0My44 NzUJNDI4MjcwMAkxMzcuNjI1CTAuMDAwCTE0NC4wMDAKKzExMgkxMTY3CTE0Ni41MDAJNDE5ODQw MAkxNDQuMzgwCTE0NC4xMzAJMTQ4LjAwMAorMTEyCTExNjgJMTQ2Ljg3NQkzNjcwNDAwCTE0Ny4w MDAJMTQ0LjAwMAkxNDcuNTAwCisxMTIJMTE2OQkxNDMuMDAwCTE3NzIyMDAJMTQ2Ljg4MAkxNDMu MDAwCTE0Ni44ODAKKzExMwkxMTcwCTEzNi41MDAJMjYzNDQwMAkxMzQuNTAwCTEzMy4yNTAJMTM2 Ljg4MAorMTEzCTExNzEJMTM3Ljg4MAkzOTMxOTAwCTEzOC42MzAJMTM0LjM4MAkxMzkuMDAwCisx MTMJMTE3MgkxMzcuNTAwCTE4NDUzMDAJMTM3LjM4MAkxMzUuNzUwCTEzOC4zODAKKzExMwkxMTcz CTEzNy43NTAJMjY1NTEwMAkxMzcuMzc1CTEzNi43NTAJMTM5Ljc1MAorMTEzCTExNzQJMTM5Ljc1 MAkyMzQzMjAwCTEzOC4wMDAJMTM3Ljc1MAkxNDAuMTMwCisxMTMJMTE3NQkxMzcuMzgwCTIzNTY3 MDAJMTM5LjYzMAkxMzYuNjMwCTE0MS4yNTAKKzExMwkxMTc2CTE0MC4wMDAJMzAyMjIwMAkxMzcu MjUwCTEzNC43NTAJMTQwLjEzMAorMTEzCTExNzcJMTQyLjM4MAkzOTE3MTAwCTE0MC4wMDAJMTM5 LjAwMAkxNDMuNzUwCisxMTMJMTE3OAkxNTMuNjI1CTEwNjU5MTAwCTE1MC41MDAJMTQ5LjUwMAkx NTcuMDAwCisxMTMJMTE3OQkxNTAuNzUwCTMwMDUwMDAJMTUyLjI1MAkxNTAuNjI1CTE1Mi44NzUK KzExNAkxMTgwCTk4LjYyNQkyOTQ5NjAwCTEwMi40MzcJOTguNjI1CTEwNC4xMjUKKzExNAkxMTgx CTk5LjEzMAkyMDYwMDAwCTEwMC4xMzAJOTkuMDAwCTEwMC44MTAKKzExNAkxMTgyCTEwMS42OTAJ MTA2OTEwMAk5OS4zODAJOTkuMjUwCTEwMS43NTAKKzExNAkxMTgzCTEwMi43NTAJMjMwNzMwMAkx MDIuODc1CTEwMi43NTAJMTAzLjY4NworMTE0CTExODQJMTAzLjEzMAkzNTU4MDAwCTEwMy42OTAJ MTAyLjk0MAkxMDUuNTAwCisxMTQJMTE4NQkxMDQuNjI1CTI3MzY1MDAJMTA0LjAwMAkxMDMuMTg3 CTEwNS4xODcKKzExNAkxMTg2CTEwNS42MjUJMjYzNTAwMAkxMDQuNTAwCTEwNC4wNjIJMTA1Ljc1 MAorMTE0CTExODcJMTA2LjQzNwk1MDE3MDAwCTEwNS41NjIJMTA1LjAwMAkxMDYuODEyCisxMTQJ MTE4OAkxMDUuMjUwCTM1NTU2MDAJMTA1LjM3NQkxMDUuMDYyCTEwNy4xODcKKzExNAkxMTg5CTEw NC4yNTAJNDMwODIwMAkxMDUuMDAwCTEwMi42MjUJMTA1LjAwMAorMTE0CTExOTAJMTA0LjE5MAk0 MDU5NDAwCTEwMy41MDAJMTAyLjk0MAkxMDUuNTAwCisxMTQJMTE5MQkxMDAuMDYyCTcxODI4MDAJ MTA0LjMxMgk5OS4zNzUJMTA0Ljg3NQorMTE0CTExOTIJMTAwLjEzMAk2NDEwNzAwCTk4LjI1MAk5 Ny41MDAJMTAxLjEzMAorMTE0CTExOTMJMTAyLjEzMAkzNDE0NTAwCTEwMC41NjAJMTAwLjMxMAkx MDIuNDQwCisxMTQJMTE5NAkxMDIuNjI1CTQyNzU0MDAJMTAzLjUwMAkxMDEuMjUwCTEwNC4wMDAK KzExNAkxMTk1CTEwMy40MzcJNjMyMTcwMAkxMDMuMTg3CTEwMi4zNzUJMTA0LjkzNworMTE0CTEx OTYJMTA1LjAwMAk0MTg5MTAwCTEwNC44NzUJMTA0LjUwMAkxMDUuMTg3CisxMTQJMTE5NwkxMDgu MzgwCTQ5NzA2MDAJMTA1LjE5MAkxMDQuNjkwCTEwOC4zODAKKzExNAkxMTk4CTEwMC4xMjUJMTM5 MDc4MDAJMTAwLjI1MAk5OS42MjUJMTAyLjAwMAorMTE0CTExOTkJOTkuMzgwCTY1ODM1MDAJOTku ODEwCTk4LjUwMAkxMDAuNjMwCisxMTQJMTIwMAk5OS4xODcJMzkxMTUwMAk5OS44MTIJOTguOTM3 CTEwMC4wMDAKKzExNAkxMjAxCTk4LjEyNQkyODA3OTAwCTk5LjI1MAk5OC4wMDAJOTkuOTM3Cisx MTQJMTIwMgk5Ni41MDAJNzAxOTcwMAk5Ni43NTAJOTUuNjMwCTk3Ljg4MAorMTE0CTEyMDMJOTcu MDAwCTUxOTI0MDAJOTcuMTMwCTk2LjUwMAk5OC4wMDAKKzExNAkxMjA0CTk4LjE4Nwk0NDEzNjAw CTk3LjAwMAk5Ny4wMDAJOTkuMzEyCisxMTQJMTIwNQk5OC43NTAJMjkwMDEwMAk5OC4zMTIJOTgu MDAwCTk5LjU2MgorMTE0CTEyMDYJMTAwLjU2MgkzNDM3NzAwCTEwMC4wMDAJMTAwLjAwMAkxMDEu MjUwCisxMTQJMTIwNwk5OS4zODAJMzU4NTYwMAkxMDAuMTMwCTk4LjY5MAkxMDAuMjUwCisxMTUJ MTIwOAk5OC4xMjUJNTIwNTEwMAk5OS4xMjUJOTguMTI1CTk5LjgxMgorMTE1CTEyMDkJOTYuMTI1 CTY0NjQyMDAJOTcuMTI1CTk1Ljg3NQk5OC4yNTAKKzExNQkxMjEwCTk3LjUwMAk0MTY3MTAwCTk3 LjM4MAk5Ni42OTAJOTguMTkwCisxMTUJMTIxMQk5OS4xMzAJMzQwMzQwMAk5Ny44ODAJOTcuNDQw CTk5Ljg4MAorMTE1CTEyMTIJMTAwLjI1MAkyOTUxNzAwCTk5LjE4Nwk5OC4xODcJMTAwLjYyNQor MTE1CTEyMTMJOTkuNjMwCTI5MjUzMDAJMTAwLjg4MAk5OS4wMDAJMTAxLjEzMAorMTE1CTEyMTQJ MTAxLjI1MAkzNDIwNzAwCTk5LjY5MAk5OS4yNTAJMTAxLjM4MAorMTE1CTEyMTUJMTAwLjg4MAkz NTg1MTAwCTEwMS4zMTAJOTkuNTYwCTEwMS44MTAKKzExNQkxMjE2CTEwMS41NjAJMzU5NDcwMAkx MDAuNjMwCTEwMC41NjAJMTAyLjMxMAorMTE1CTEyMTcJMTAyLjg3NQkyNTg1MDAwCTEwMS42ODcJ MTAxLjQzNwkxMDMuMDAwCisxMTUJMTIxOAkxMDIuMDYyCTQxMDc4MDAJMTAzLjAwMAkxMDEuNDM3 CTEwMy4yNTAKKzExNgkxMjE5CTEwOC44MTIJNDI0MDcwMAkxMDkuMDAwCTEwNy42MjUJMTA5LjEy NQorMTE2CTEyMjAJMTA2LjEzMAk0ODg0MDAwCTEwOC43NTAJMTA2LjAwMAkxMDkuMjUwCisxMTYJ MTIyMQkxMDguMTMwCTQyNzY5MDAJMTA2LjI1MAkxMDYuMTkwCTEwOS41MDAKKzExNgkxMjIyCTEx MS43NTAJNDAzOTIwMAkxMTAuMDAwCTEwOS45NDAJMTEyLjMxMAorMTE2CTEyMjMJMTEyLjAwMAkz MDMwMDAwCTExMS44ODAJMTEwLjA2MAkxMTIuMTMwCisxMTYJMTIyNAkxMTIuNDQwCTMxODc4MDAJ MTEyLjUwMAkxMTIuMDAwCTExNC42OTAKKzExNgkxMjI1CTExMy4wMDAJMTYzNjQwMAkxMTIuMzgw CTExMi4zMTAJMTEzLjQ0MAorMTE2CTEyMjYJMTE0LjEyNQkyMTg0NjAwCTExNC4xMjUJMTEzLjU2 MgkxMTQuODEyCisxMTYJMTIyNwkxMTQuODEwCTQzNTYwMDAJMTE0LjEzMAkxMTMuNTAwCTExNi4z MTAKKzExNgkxMjI4CTExNi43NTAJMzE2NjQwMAkxMTYuMDAwCTExNS41MDAJMTE2LjkzNworMTE2 CTEyMjkJMTE1LjE5MAkzMjE5ODAwCTExNi41NjAJMTE0LjUwMAkxMTYuNjMwCisxMTcJMTIzMAkx MTUuMDAwCTIyNTgyMDAJMTEzLjc1MAkxMTMuNjMwCTExNS41NjAKKzExNwkxMjMxCTExNy4wNjIJ MzE4OTUwMAkxMTQuNzUwCTExNC42MjUJMTE4LjUwMAorMTE3CTEyMzIJMTE4LjUwMAkzMDcwMTAw CTExOC4yNTAJMTE3LjM3NQkxMTkuMjUwCisxMTcJMTIzMwkxMTkuMzgwCTIzMzk4MDAJMTE4LjUw MAkxMTguMjUwCTEyMC4wMDAKKzExNwkxMjM0CTExOS42MjUJMjI2ODYwMAkxMTkuNzUwCTExOS4w MDAJMTIwLjYyNQorMTE3CTEyMzUJMTE3LjAwMAkyNTU3ODAwCTExOS4yNTAJMTE3LjAwMAkxMjAu MDAwCisxMTcJMTIzNgkxMTguMzgwCTIxODAxMDAJMTE3LjEzMAkxMTYuMDAwCTExOC45NDAKKzEx NwkxMjM3CTEyMC4xODcJMzE2ODQwMAkxMTguNTYyCTExOC41MDAJMTIwLjM3NQorMTE3CTEyMzgJ MTIyLjAwMAk0NDg5MjAwCTEyMS4wMDAJMTIwLjMxMgkxMjMuMDAwCisxMTcJMTIzOQkxMjguMTMw CTEyMzA4NjAwCTEyOC4yNTAJMTI3Ljc1MAkxMzEuMDAwCisxMTcJMTI0MAkxMjcuNDQwCTYwNDk5 MDAJMTI2LjAwMAkxMjQuNTAwCTEyOC40NDAKKzExNwkxMjQxCTEyMy44ODAJNDE1MzEwMAkxMjcu MTkwCTEyMy42OTAJMTI5LjAwMAorMTE3CTEyNDIJMTI0LjI1MAkyODc0NjAwCTEyNS44NzUJMTIy LjUwMAkxMjUuOTM3CisxMTgJMTI0MwkxMjMuNTAwCTQ5OTQ3MDAJMTI1Ljc1MAkxMjMuMzc1CTEy Ny40MzcKKzExOAkxMjQ0CTEyMi41MDAJNTU3OTgwMAkxMjIuMTMwCTExOC4xOTAJMTIyLjUwMAor MTE4CTEyNDUJMTI2LjU2Mgk0OTY1MTAwCTEyMS4zNzUJMTIwLjYyNQkxMjYuNTYyCisxMTgJMTI0 NgkxMjkuMTMwCTQ1NTcxMDAJMTI4LjAwMAkxMjcuNjMwCTEyOS45NDAKKzExOAkxMjQ3CTEzMC4w MDAJMzI0NjgwMAkxMjkuMDAwCTEyOC41MDAJMTMwLjY4NworMTE4CTEyNDgJMTMwLjUwMAkzMzE5 NDAwCTEzMC4wMDAJMTI4LjE5MAkxMzAuOTQwCisxMTkJMTI0OQkxMzMuNjI1CTM4MjA0MDAJMTM0 LjUwMAkxMzIuMTg3CTEzNi4xODcKKzExOQkxMjUwCTEzMS40MzcJMzU0NDkwMAkxMzMuNzUwCTEz MC4wMDAJMTM0LjEyNQorMTE5CTEyNTEJMTI4LjUwMAk0MTQ5NzAwCTEzMC43NTAJMTI3LjYzMAkx MzEuNTAwCisxMTkJMTI1MgkxMjUuMzc1CTYyNjg3MDAJMTI1LjA2MgkxMjMuMzc1CTEyNi40MzcK KzExOQkxMjUzCTEyNC44MTAJNzMwMjYwMAkxMjQuMTMwCTExOC45NDAJMTI1LjI1MAorMTE5CTEy NTQJMTIwLjI1MAk2NzIxMDAwCTEyMy43NTAJMTE3LjMxMAkxMjMuNzUwCisxMTkJMTI1NQkxMTku MjUwCTcxODM3MDAJMTI0LjAwMAkxMTguNzUwCTEyNC4wMDAKKzExOQkxMjU2CTEyMC43NTAJNjU4 MjQwMAkxMTkuNTAwCTExOC4xMjUJMTIyLjg3NQorMTE5CTEyNTcJMTIzLjUwMAk5MTU2MzAwCTEy MC43NTAJMTE2LjgxMgkxMjMuNTAwCisxMTkJMTI1OAkxMjcuMzEyCTU4NDE2MDAJMTI0LjQzNwkx MjIuNTAwCTEyNy45MzcKKzExOQkxMjU5CTEzMC44NzUJNTQwMjUwMAkxMzAuMTI1CTEyOS41NjIJ MTMyLjg3NQorMTE5CTEyNjAJMTI4LjE5MAk0Njk2ODAwCTEzMC41MDAJMTI2LjU2MAkxMzAuNTAw CisxMjAJMTI2MQkxNDcuMzgwCTM0NTY1MDAJMTQ4LjUwMAkxNDcuMTkwCTE0OS45NDAKKzEyMAkx MjYyCTE0Ny44ODAJNDA5NjMwMAkxNDguODgwCTE0NS43NTAJMTQ5Ljc1MAorMTIwCTEyNjMJMTQ5 LjAwMAkzMjkzMDAwCTE0Ny42OTAJMTQ2LjgxMAkxNDkuNTYwCisxMjAJMTI2NAkxNDkuOTQwCTM1 NjkwMDAJMTQ4Ljg4MAkxNDcuNTAwCTE1MC45NDAKKzEyMAkxMjY1CTE1MS4zODAJMzc4ODcwMAkx NTAuNzUwCTE0OS45NDAJMTUyLjE5MAorMTIwCTEyNjYJMTU2LjAwMAk0MzcxNTAwCTE1MC44ODAJ MTUwLjY5MAkxNTYuNzUwCisxMjAJMTI2NwkxNTcuMTI1CTUxMDkxMDAJMTU3LjAwMAkxNTYuNTAw CTE1OC44NzUKKzEyMAkxMjY4CTE1Ny44ODAJNDMzMzkwMAkxNTYuNjkwCTE1Ni42MzAJMTU5Ljg4 MAorMTIwCTEyNjkJMTU3LjQzNwkyOTk3NjAwCTE1Ny4wMDAJMTU1Ljc1MAkxNTcuNTAwCisxMjEJ MTI3MAkxNjUuMDAwCTM4ODU4MDAJMTYzLjUwMAkxNjIuNTAwCTE2NS44MTAKKzEyMQkxMjcxCTE2 NC4zNzUJMjgyNjQwMAkxNjYuODc1CTE2NC4zMTIJMTY2Ljg3NQorMTIxCTEyNzIJMTY2LjA2Mgk0 MzgxNjAwCTE2NS40MzcJMTY1LjA2MgkxNjkuNjI1CisxMjEJMTI3MwkxNzEuNTYwCTQ5MDg0MDAJ MTY2LjYzMAkxNjYuNjMwCTE3Mi4xOTAKKzEyMQkxMjc0CTE3Ni4zNzUJMzczOTMwMAkxNzEuNTYy CTE3MS41NjIJMTc4LjkzNworMTIxCTEyNzUJMTgyLjI1MAk0MzUyMzAwCTE3Ny41MDAJMTc1LjI1 MAkxODMuMDAwCisxMjEJMTI3NgkxODUuMDAwCTM1MzUwMDAJMTgyLjY5MAkxODEuMTMwCTE4NS4z ODAKKzEyMQkxMjc3CTE4Ny45MzcJMTUyNDkwMAkxODQuNzUwCTE4NC4wNjIJMTg3LjkzNworMTIx CTEyNzgJMTg5LjI1MAkyNjM0NjAwCTE4Ni41MDAJMTg2LjAwMAkxODkuOTM3CisxMjEJMTI3OQkx ODcuMTI1CTE4ODExMDAJMTg4LjYyNQkxODcuMDAwCTE4OC45MzcKKzEyMQkxMjgwCTE4Ni43NTAJ MjQwNjYwMAkxODYuODc1CTE4Ni4zMTIJMTg4LjYyNQorMTIxCTEyODEJMTg0LjM3NQkxOTMyNDAw CTE4Ni43NTAJMTgzLjUwMAkxODcuMTg3CisxMjEJMTI4MgkxODMuMDAwCTQwNzQ4MDAJMTg1LjAw MAkxODEuNTAwCTE4Ni41MDAKKzEyMQkxMjgzCTE4OS42MzAJNDk1MzgwMAkxODMuMDAwCTE4Mi44 MTAJMTg5Ljg4MAorMTIyCTEyODQJMTc3LjkzNwk0NjAwMTAwCTE3Mi4yNTAJMTcxLjA2MgkxNzcu OTM3CisxMjIJMTI4NQkxNzYuOTQwCTQ1NTQ2MDAJMTc4LjAwMAkxNzUuNzUwCTE4MC4wMDAKKzEy MgkxMjg2CTE3My43NTAJNDMxODcwMAkxNzcuMjUwCTE3My4xMzAJMTc5LjY5MAorMTIyCTEyODcJ MTczLjYyNQk1MjM0ODAwCTE3Mi4wMDAJMTY5LjMxMgkxNzMuOTM3CisxMjIJMTI4OAkxNjkuNzUw CTczOTkwMDAJMTcxLjAwMAkxNjYuNTAwCTE3MS44ODAKKzEyMgkxMjg5CTE2OC4zNzUJNDc5NTQw MAkxNjkuNTAwCTE2NS4xMjUJMTY5LjUwMAorMTIyCTEyOTAJMTY3Ljc1MAk0MzcxMjAwCTE3MC41 MDAJMTY2Ljg4MAkxNzAuOTQwCisxMjIJMTI5MQkxNjYuNzUwCTM4NzE1MDAJMTY4LjUwMAkxNjUu MDYyCTE2OC45MzcKKzEyMgkxMjkyCTE3MS4wMDAJMTA3NTA1MDAJMTczLjUwMAkxNzAuMTI1CTE3 Ny4wMDAKKzEyMgkxMjkzCTE3OC4zODAJNTgwMzIwMAkxNzMuODgwCTE3My43NTAJMTc4Ljk0MAor MTIyCTEyOTQJMTc4Ljg3NQkzNzc5OTAwCTE3OC42MjUJMTc3LjA2MgkxODAuMDAwCisxMjIJMTI5 NQkxODIuMTkwCTUwMDk1MDAJMTc5Ljg4MAkxNzguNTYwCTE4NC44ODAKKzEyMgkxMjk2CTE4MS41 MDAJMzUwNDkwMAkxODEuNjMwCTE4MC4yNTAJMTgyLjg4MAorMTIzCTEyOTcJMTgyLjAwMAkzOTUx NDAwCTE3OS4xODcJMTc3LjEyNQkxODIuMzEyCisxMjMJMTI5OAkxODEuMDAwCTMzMDMwMDAJMTgy LjAwMAkxODAuMTkwCTE4My41MDAKKzEyMwkxMjk5CTE3OC4wNjAJMzQ1MjcwMAkxNzkuNTAwCTE3 OC4wMDAJMTgwLjAwMAorMTIzCTEzMDAJMTc3LjYzMAk3MjUyNTAwCTE3Ny41MDAJMTcyLjk0MAkx NzcuNzUwCisxMjMJMTMwMQkxNjguNTYyCTk3NDg0MDAJMTc2LjYyNQkxNjguMDAwCTE3OC4wMDAK KzEyMwkxMzAyCTE2Ny4wMDAJNTk0ODMwMAkxNjguNjg3CTE2Ni42MjUJMTcwLjUwMAorMTIzCTEz MDMJMTY1LjM4MAk1MDA3NTAwCTE2Ny4wMDAJMTY0LjAwMAkxNjcuNjMwCisxMjMJMTMwNAkxNjku NTAwCTU5MTA1MDAJMTY4LjAwMAkxNjYuNTAwCTE3MC41MDAKKzEyMwkxMzA1CTE3MS4zMTIJNDkx NDQwMAkxNzIuMDAwCTE2OS41MDAJMTczLjI1MAorMTIzCTEzMDYJMTcyLjM4MAk0MTMzMjAwCTE3 MS4wNjAJMTcwLjU2MAkxNzUuODgwCisxMjMJMTMwNwkxNzguNTYyCTM3MzM0MDAJMTc3LjAwMAkx NzYuODc1CTE4MS4yNTAKKzEyMwkxMzA4CTE3Ny4yNTAJMjkxNzYwMAkxODAuMDAwCTE3Ni41MDAJ MTgxLjUwMAorMTI0CTEzMDkJMTg3LjAwMAk0MjY1NTAwCTE4Ni4wMDAJMTgyLjMxMgkxODguMDYy CisxMjQJMTMxMAkxODYuMzEwCTMwNTU5MDAJMTg1LjYzMAkxODQuMDAwCTE4OC4wNjAKKzEyNAkx MzExCTE4My40NDAJNDQ4OTkwMAkxODMuNTAwCTE4MS4wNjAJMTgzLjYzMAorMTI0CTEzMTIJMTgw LjAwMAkzNDIzMjAwCTE4NC4wMDAJMTc5Ljk0MAkxODQuMDAwCisxMjQJMTMxMwkxNzkuMzgwCTM2 MzA1MDAJMTgyLjc1MAkxNzcuNjMwCTE4My44ODAKKzEyNAkxMzE0CTE3Ny43NTAJNDE2NTIwMAkx NzkuNTAwCTE3My41MDAJMTc5LjUwMAorMTI0CTEzMTUJMTcwLjM3NQk1OTY0NDAwCTE3Ny41MDAJ MTcwLjEyNQkxNzcuNTAwCisxMjQJMTMxNgkxNjYuNzUwCTc2OTE4MDAJMTcwLjg4MAkxNjQuMDYw CTE3Mi4zMTAKKzEyNAkxMzE3CTE2OS43NTAJNzM1ODAwMAkxNjcuMDAwCTE2My4wMDAJMTY5Ljc1 MAorMTI0CTEzMTgJMTcxLjg3NQk2NTgwODAwCTE2OS43NTAJMTY1LjEyNQkxNzEuODc1CisxMjQJ MTMxOQkxOTQuNTAwCTE5NTg0OTAwCTE5Ny4yNTAJMTkyLjY4NwkxOTguNzUwCisxMjQJMTMyMAkx OTkuNzUwCTEwMzc1NTAwCTE5My4zODAJMTkyLjk0MAkyMDYuNTYwCisxMjQJMTMyMQkyMDkuODgw CTkzMzMwMDAJMjA0Ljc1MAkyMDIuMzEwCTIxMC43NTAKKzEyNAkxMzIyCTIxMi4wMDAJMTA0NjQ2 MDAJMjEyLjAwMAkyMDguNTAwCTIxNS4yNTAKKzEyNAkxMzIzCTIwNS4wMDAJNTY3MDkwMAkyMDku MjUwCTIwMy41MDAJMjEwLjUwMAorMTI1CTEzMjQJMjA5LjI1MAk0MTY5ODAwCTIxMS44ODAJMjA4 LjAwMAkyMTQuMDAwCisxMjUJMTMyNQkyMTcuMjUwCTQ5OTM0MDAJMjExLjI1MAkyMTEuMDYyCTIx Ny41MDAKKzEyNQkxMzI2CTIxOC42MzAJNDc3NDIwMAkyMTcuMjUwCTIxNy4wNjAJMjIxLjg4MAor MTI1CTEzMjcJMjIxLjAwMAk0MTg2NDAwCTIyMC41MDAJMjE3LjUwMAkyMjEuODc1CisxMjUJMTMy OAkyMjUuNTAwCTYwMzM0MDAJMjIxLjEyNQkyMTUuNTAwCTIyOC40MzcKKzEyNQkxMzI5CTI0Ni4w MDAJMTIxNjU3MDAJMjM0LjAwMAkyMzQuMDAwCTI0Ni4wMDAKKzEyNQkxMzMwCTIzOS4yNTAJOTAz NjkwMAkyNDEuNTAwCTIzNi4wMDAJMjQzLjUwMAorMTI1CTEzMzEJMjM3LjUwMAk1NzgwMjAwCTIz Ni4wMDAJMjMyLjAwMAkyMzkuNjI1CisxMjUJMTMzMgkyMzguNTAwCTQzMTY5MDAJMjM4LjI1MAky MzcuMDAwCTI0MC42MjUKKzEyNQkxMzMzCTIzNS44NzUJMzg5NTgwMAkyMzguMjUwCTIzMy4wNjIJ MjM4Ljc1MAorMTI1CTEzMzQJMjMyLjg3NQkzMjIwOTAwCTIzNS42MjUJMjMyLjUwMAkyMzYuMzc1 CisxMjUJMTMzNQkyMzAuMzgwCTM0NTIzMDAJMjMyLjc1MAkyMjkuMTkwCTIzMy4zODAKKzEyNQkx MzM2CTIyMy43NTAJNDI5OTEwMAkyMzAuMzEwCTIyMS43NTAJMjMwLjY5MAorMTI1CTEzMzcJMjIx LjE4Nwk0NzAyNTAwCTIyMi41MDAJMjIxLjAwMAkyMjYuMDAwCisxMjUJMTMzOAkyMzYuMjUwCTgz MTQwMDAJMjIzLjAwMAkyMjEuNDQwCTIzNi42MzAKKzEyNQkxMzM5CTExNi4wMDAJMTA1NTI2MDAJ MTE2LjY4NwkxMTIuNjI1CTExNi44NzUKKzEyNQkxMzQwCTExNi4wMDAJNjM3OTUwMAkxMTYuMDAw CTExNC4xODcJMTE2Ljc1MAorMTI2CTEzNDEJMTI0LjQ0MAk2MDQzNTAwCTEyMi43NTAJMTIyLjMx MAkxMjQuODgwCisxMjYJMTM0MgkxMjIuMDAwCTg0NDIxMDAJMTIzLjM3NQkxMjEuMDAwCTEyMy42 MjUKKzEyNgkxMzQzCTEyMi4zODAJNjQ2MzAwMAkxMjIuMDAwCTEyMC44ODAJMTI0LjA2MAorMTI2 CTEzNDQJMTIyLjk0MAk2MjQ1MzAwCTEyMi42MzAJMTIyLjA2MAkxMjUuODgwCisxMjYJMTM0NQkx MjQuMDAwCTQzNTQ2MDAJMTI1LjAwMAkxMjIuNzUwCTEyNS4xOTAKKzEyNgkxMzQ2CTEyMy4xODcJ NDc3MzAwMAkxMjQuMjUwCTEyMi42ODcJMTI1LjYyNQorMTI3CTEzNDcJOTguMDAwCTE4NzIwNDAw CTk0LjAwMAk5My41NjIJOTguMjUwCisxMjcJMTM0OAkxMDQuNzUwCTE5NjczMzAwCTk5LjAwMAk5 OC4zODAJMTA1LjAwMAorMTI3CTEzNDkJMTA3Ljg4MAkxMzY4MTUwMAkxMDUuNTAwCTEwNC40NDAJ MTA4LjQ0MAorMTI3CTEzNTAJMTA2LjEyNQkxMDY2NTAwMAkxMDguODEyCTEwNi4wMDAJMTA5Ljg3 NQorMTI3CTEzNTEJMTA0LjA2MAk5NzEwMzAwCTEwNS4wMDAJMTAxLjgxMAkxMDUuMDAwCisxMjcJ MTM1MgkxMDUuMDAwCTMxMDg0MDAJMTA1LjkzNwkxMDQuMTI1CTEwNi4wMDAKKzEyNwkxMzUzCTEw NC4xODcJNTY3NzcwMAkxMDQuOTM3CTEwMy4zNzUJMTA0LjkzNworMTI3CTEzNTQJMTAzLjA2MAk1 NzE5OTAwCTEwMy42OTAJMTAyLjEzMAkxMDQuNTAwCisxMjcJMTM1NQkxMDMuNzUwCTUzMzYwMDAJ MTAyLjU2MgkxMDIuMjUwCTEwNC40MzcKKzEyNwkxMzU2CTEwNS41NjAJNjIwODYwMAkxMDMuNDQw CTEwMy4zODAJMTA2LjMxMAorMTI3CTEzNTcJMTEyLjAwMAkxNDY3OTkwMAkxMDkuODEyCTEwNy45 MzcJMTEyLjg3NQorMTI3CTEzNTgJMTE2LjAwMAk5OTI0NDAwCTExMy4wMDAJMTEyLjUwMAkxMTYu NTAwCisxMjgJMTM1OQkxMDkuMTkwCTcxMTczMDAJMTA4LjAwMAkxMDUuNzUwCTEwOS42OTAKKzEy OAkxMzYwCTEwOS4xMjUJNzY4MDcwMAkxMTAuNjg3CTEwOC42MjUJMTExLjA2MgorMTI4CTEzNjEJ MTA4LjA2MAk0ODM0OTAwCTEwOS4wNjAJMTA3Ljc1MAkxMTAuNDQwCisxMjgJMTM2MgkxMTAuMTI1 CTQ3NzM1MDAJMTA4LjUwMAkxMDguMDYyCTExMC4xMjUKKzEyOAkxMzYzCTEwOC4zNzUJNDAwNTUw MAkxMDkuODc1CTEwOC4yNTAJMTEwLjMxMgorMTI4CTEzNjQJMTA4LjYyNQk0NTI4NzAwCTEwOS4x MjUJMTA4LjE4NwkxMTAuNDM3CisxMjgJMTM2NQkxMDkuNzUwCTM3NDA3MDAJMTA5LjY4NwkxMDgu MTI1CTExMC4wMDAKKzEyOAkxMzY2CTEwOS4yNTAJNDA4MTMwMAkxMDkuNTYwCTEwOS4wNjAJMTEw Ljc1MAorMTI4CTEzNjcJMTA5LjA2MAkyNjgzMTAwCTExMC40NDAJMTA4Ljc1MAkxMTAuNTAwCisx MjgJMTM2OAkxMDguNzUwCTM0MzUxMDAJMTA5LjY5MAkxMDguNTYwCTExMC41MDAKKzEyOAkxMzY5 CTEwNy44NzUJMjg3MDMwMAkxMDkuMTg3CTEwNi42MjUJMTA5LjUwMAorMTI4CTEzNzAJMTE1LjYy NQkxMDM0NjgwMAkxMTIuNDM3CTExMS44NzUJMTE1LjgxMgorMTI4CTEzNzEJMTEyLjA2MAk4MjI3 ODAwCTExNC4wMDAJMTEwLjg4MAkxMTQuNTAwCisxMjkJMTM3MgkxMDcuMDAwCTU2NjU5MDAJMTA3 LjUwMAkxMDYuMTMwCTEwOC4yNTAKKzEyOQkxMzczCTEwOS4wMDAJNjYyMjUwMAkxMDkuMDAwCTEw Ny44ODAJMTA5LjgxMAorMTI5CTEzNzQJMTEwLjAwMAk4ODU2NDAwCTEwOC4yNTAJMTA3LjY4Nwkx MTEuNjg3CisxMjkJMTM3NQkxMTIuNzUwCTY1NjM1MDAJMTEwLjAwMAkxMDkuOTQwCTExMy4zODAK KzEyOQkxMzc2CTExMy41MDAJNjc3MTQwMAkxMTIuODEwCTExMS45NDAJMTE0LjY5MAorMTI5CTEz NzcJMTE0LjI1MAk2MTM3ODAwCTExNC41MDAJMTEzLjg3NQkxMTUuMzc1CisxMjkJMTM3OAkxMTUu MjUwCTY0OTI0MDAJMTE1Ljg3NQkxMTEuNjI1CTExNS44NzUKKzEyOQkxMzc5CTEyMS41MDAJMTIx MjQzMDAJMTE1LjM3NQkxMTUuMDYyCTEyMi4yNTAKKzEyOQkxMzgwCTEyNi44ODAJMTE4NjI5MDAJ MTI1LjAwMAkxMjQuNjMwCTEyOC4yNTAKKzEyOQkxMzgxCTEyMi41MDAJODE2MzAwMAkxMjUuNzUw CTEyMi4wNjAJMTI3LjAwMAorMTMwCTEzODIJMTAyLjk0MAk2NDAyODAwCTEwNC4xMzAJMTAyLjYz MAkxMDQuODEwCisxMzAJMTM4MwkxMDMuNTAwCTc0MjgxMDAJMTAyLjM4MAkxMDEuMDAwCTEwNC4z ODAKKzEzMAkxMzg0CTExNy4wMDAJMjI5Mjc5MDAJMTEyLjAwMAkxMTEuNzUwCTExNy44MTIKKzEz MAkxMzg1CTExNC40NDAJODc2NDcwMAkxMTcuMDAwCTExMy43NTAJMTE3LjAwMAorMTMxCTEzODYJ OTAuMTMwCTc3MDUzMDAJOTAuMTkwCTg5LjgxMAk5NC40NDAKKzEzMQkxMzg3CTg2LjAwMAkxMjU3 OTUwMAk4NS44ODAJODQuODEwCTg4LjAwMAorMTMxCTEzODgJODEuNTYwCTEyNzI0OTAwCTg1LjUw MAk4MC4wNjAJODcuOTQwCisxMzEJMTM4OQk4OS4wMDAJOTUxNDAwMAk4NC41MDAJODQuNTAwCTg5 LjM3NQorMTMxCTEzOTAJODQuODEwCTYwNTIzMDAJODkuMDAwCTg0LjI1MAk4OS41NjAKKzEzMgkx MzkxCTkyLjc1MAk1NjcxODAwCTkzLjc1MAk5MS44MTAJOTQuMDAwCisxMzIJMTM5Mgk5Ni42ODcJ OTcxMjkwMAk5NS4zNzUJOTQuMzEyCTk3Ljc1MAorMTMyCTEzOTMJMTA4LjMxMgkyNTI0MzMwMAkx MDQuMzc1CTEwMy41MDAJMTEwLjAwMAorMTMyCTEzOTQJMTExLjI1MAkxNDc2MDQwMAkxMDcuNTAw CTEwNy4yNTAJMTEzLjkzNworMTMzCTEzOTUJMTA2LjQ3MAk2NzkzMTAwCTEwNy4xNzAJMTA1LjM3 MAkxMDcuMzQwCisxMzMJMTM5Ngk5OS4yOTAJMTY2ODgxMDAJMTA1LjAwMAk5Ny45MDUJMTA1LjAx MAorMTMzCTEzOTcJOTUuNDkwCTE0NDk0ODAwCTk3LjkwMAk5NS4wMjAJOTguNDAwCisxMzMJMTM5 OAk5OC4zOTAJMTIxMjc5MDAJOTUuMTAwCTk0LjIwMAk5OC40NDAKKzEzMwkxMzk5CTk0Ljk2MAkx NDI0NjYwMAk5NS40MDAJOTMuMzQwCTk4LjkwMAorMTM0CTE0MDAJOTkuNzAwCTk5NTczMDAJOTcu MDAwCTk3LjAwMAk5OS44ODAKKzEzNAkxNDAxCTEwNi41MDAJMTk4NDk1MDAJMTAzLjAwMAkxMDIu MzAwCTExMC4wMDAKKzEzNAkxNDAyCTExNC40NzAJMjU4MjI0MDAJMTEyLjAwMAkxMTAuNDUwCTEx NS45MDAKKzEzNAkxNDAzCTExNC44MzAJMTI3NTkxMDAJMTE0LjM1MAkxMTMuNzUwCTExNi40MDAK KzEzNQkxNDA0CTExOS42MDAJNzcyNjkwMAkxMTcuNTAwCTExNy41MDAJMTE5LjYwMAorMTM1CTE0 MDUJMTE3LjgwMAk1NjI5MTAwCTExOS41MjAJMTE3Ljc2MAkxMTkuOTAwCisxMzUJMTQwNgkxMTUu MjcwCTU4MTgwMDAJMTE3LjM1MAkxMTUuMDgwCTExNy41OTAKKzEzNQkxNDA3CTExMi42NTAJOTU5 ODcwMAkxMTQuMDAwCTExMi4wMDAJMTE0LjEwMAorMTM1CTE0MDgJMTExLjgwMAk2NzU3NjAwCTEx Mi42NTAJMTExLjY0MAkxMTMuODYwCisxMzUJMTQwOQkxMTIuODkwCTUxMzg5MDAJMTEyLjUwMAkx MTEuOTAwCTExMy42MDAKKzEzNQkxNDEwCTExMy42NDAJMzgxMjIwMAkxMTMuMjUwCTExMi44NTAJ MTE0Ljc1MAorMTM1CTE0MTEJMTE2Ljk3MAk2MTU0NDAwCTExMy42NDAJMTEzLjU2MAkxMTcuNjAw CisxMzUJMTQxMgkxMTcuNTAwCTk2MjU3MDAJMTE3LjYwMAkxMTYuNTAwCTExOS4wMDAKKzEzNQkx NDEzCTExNy4yNTAJNjQyMzcwMAkxMTcuMDAwCTExNy4wMDAJMTE4LjI1MAorMTM1CTE0MTQJMTE2 LjEwMAkzMDk5MTAwCTExNy41MDAJMTE1LjYwMAkxMTcuNTAwCisxMzUJMTQxNQkxMTcuMzYwCTY1 NDI3MDAJMTE2LjMwMAkxMTYuMTAwCTExOC4xNDAKKzEzNgkxNDE2CTEwNC43MjAJOTMxMjYwMAkx MDYuNTAwCTEwMy42NTAJMTA2Ljk1MAorMTM2CTE0MTcJMTAxLjk2MAkxMDI2NjgwMAkxMDQuNzMw CTEwMS42MDAJMTA1LjQwMAorMTM2CTE0MTgJMTAzLjg1MAk4ODk0ODAwCTEwMS42MDAJMTAxLjU2 MAkxMDQuMTMwCisxMzYJMTQxOQkxMDcuMjUwCTg3NjcyMDAJMTA1LjkwMAkxMDUuNjIwCTEwNy44 MDAKKzEzNgkxNDIwCTEwOC41MzAJNzg0MTgwMAkxMDYuMTUwCTEwNi4xMTAJMTA5LjMwMAorMTM2 CTE0MjEJMTA3LjgyMAk1MzMwMTAwCTEwOC41MzAJMTA3LjI4MAkxMDkuMzgwCisxMzcJMTQyMgkx MDguODAwCTU2NzUxMDAJMTA4LjUwMAkxMDcuMjEwCTEwOS40NzAKKzEzNwkxNDIzCTEwOC4xODAJ MzcwNDEwMAkxMDcuODAwCTEwNy4xMDAJMTEwLjA5MAorMTM3CTE0MjQJMTA2LjUxMAk0MTc2ODAw CTEwNy4yNTAJMTA1Ljc5MAkxMDcuMzcwCisxMzcJMTQyNQkxMDYuMjUwCTQwMjgzMDAJMTA1Ljgw MAkxMDUuMjYwCTEwNy4zNzAKKzEzNwkxNDI2CTEwNC4xOTAJNjM5ODAwMAkxMDUuMDAwCTEwNC4x MDAJMTA2LjEwMAorMTM3CTE0MjcJMTA0LjA4MAk2NzYzMjAwCTEwMy43MDAJMTAyLjcwMAkxMDQu NTQwCisxMzcJMTQyOAkxMDQuOTUwCTUyNTQ4MDAJMTAzLjg1MAkxMDIuODEwCTEwNC45NTAKKzEz NwkxNDI5CTEwNS44NjAJNjAyNDQwMAkxMDUuMDAwCTEwNC42NTAJMTA2LjY0MAorMTM3CTE0MzAJ MTA2LjIwMAk1NzMwMjAwCTEwNi41MDAJMTA1LjQwMAkxMDYuODUwCisxMzcJMTQzMQkxMDUuMDEw CTQ3MTMxMDAJMTA2LjM1MAkxMDUuMDEwCTEwNi41OTAKKzEzOAkxNDMyCTkxLjMwMAkxMzc4MzEw MAk5NC40NTAJOTAuMzAwCTk0LjQ1MAorMTM4CTE0MzMJOTAuMDAwCTEzMTcyMjAwCTkxLjMwMAk4 Ny40OTAJOTEuNTAwCisxMzgJMTQzNAk5MS43MjAJMTEwNzcyMDAJOTAuMjAwCTg5LjkwMAk5Mi43 MTAKKzEzOAkxNDM1CTkyLjcxMAk4Njc2MjAwCTkxLjcyMAk5MS4zNDAJOTMuNDgwCisxMzgJMTQz Ngk5My43NzAJNzIyMTIwMAk5Mi4zMDAJOTIuMTAwCTkzLjkwMAorMTM4CTE0MzcJOTYuOTUwCTEx MTE4ODAwCTkyLjkwMAk5Mi40MDAJOTcuNjIwCisxMzgJMTQzOAk5Ny4zMTAJOTc4NTEwMAk5Ny4x NTAJOTYuODAwCTk4Ljg4MAorMTM4CTE0MzkJOTguMDIwCTk3MzMwMDAJOTYuNjUwCTk1LjM3MAk5 OC40NTAKKzEzOAkxNDQwCTk4LjUwMAk3MDkzNDAwCTk4LjAzMAk5Ni43NTAJOTkuMDAwCisxMzgJ MTQ0MQk5Ny4xNDAJNzUyNTMwMAk5OC41MDAJOTYuNzYwCTk4LjUwMAorMTM5CTE0NDIJMTIzLjIw MAk3OTUwNDAwCTEyMS4xMjAJMTIwLjA2MAkxMjMuMjEwCisxMzkJMTQ0MwkxMjAuMjUwCTgwNjEw MDAJMTIxLjU1MAkxMjAuMTIwCTEyMi4zMDAKKzEzOQkxNDQ0CTEyMS4xMDAJNzAzNjAwMAkxMjAu ODAwCTExOS40MTAJMTIxLjQ4MAorMTM5CTE0NDUJMTIxLjM0MAk2MjI1NTAwCTEyMC4xNTAJMTIw LjE1MAkxMjIuMTQwCisxMzkJMTQ0NgkxMjIuMjAwCTU1OTYyMDAJMTIxLjUxMAkxMjEuMzUwCTEy Mi45NzAKKzEzOQkxNDQ3CTEyMy44OTAJODA1NDIwMAkxMjEuOTAwCTEyMS4wMTAJMTI0LjcwMAor MTQwCTE0NDgJNzUuNDkwCTc5NTMwMDAJNzcuODUwCTc1LjIwMAk3OC4yNTAKKzE0MAkxNDQ5CTc0 LjY1MAkxMzI5NjEwMAk3NS40MDAJNzMuMjUwCTc1Ljk1MAorMTQwCTE0NTAJNzUuNjAwCTg5MDk3 MDAJNzUuNDUwCTc1LjMwMAk3Ny40MDAKKzE0MAkxNDUxCTc2LjE3MAk4NTkyMDAwCTc0LjIwMAk3 My4yNTAJNzYuNzcwCisxNDAJMTQ1Mgk3Ny4xNDAJNzc3NTgwMAk3Ni4xODAJNzUuMTYwCTc3Ljc1 MAorMTQwCTE0NTMJNzUuOTQwCTcyNDA5MDAJNzUuNjAwCTc1LjQ3MAk3Ni45MDAKKzE0MQkxNDU0 CTcyLjAwMAkxMDk0NTYwMAk3MS4zNTAJNzEuMjUwCTczLjYyMAorMTQxCTE0NTUJNjcuNjAwCTEy MDU2MDAwCTcyLjAxMAk2Ny4xNjAJNzIuNDEwCisxNDEJMTQ1Ngk2OC41ODAJMTIwMTI5MDAJNjcu ODUwCTY3LjcwMAk2OS40MDAKKzE0MQkxNDU3CTcwLjUxMAk4NDY5OTAwCTY3Ljk1MAk2Ny44NzAJ NzAuNzEwCisxNDEJMTQ1OAk3My41MDAJNTI0MzAwMAk3Mi40NTAJNzIuMDAwCTczLjkwMAorMTQx CTE0NTkJNzEuMzAwCTk0ODgxMDAJNzMuMDAwCTcxLjAzMAk3My40ODAKKzE0MQkxNDYwCTY5LjY3 MAkxMTE2NTEwMAk3MS40MDAJNjkuNDUwCTcyLjI1MAorMTQxCTE0NjEJNjguNzYwCTEwMDczNDAw CTcwLjYwMAk2OC41MzAJNzEuMjUwCisxNDEJMTQ2Mgk2OS40MTAJMTEwMzQ2MDAJNjguMDAwCTY3 LjU1MAk2OS43NTAKKzE0MgkxNDYzCTY5LjM1MAkxMDk4OTgwMAk2OC45MDAJNjcuMzAwCTcwLjAw MAorMTQyCTE0NjQJNjYuNDAwCTExNTc2NDAwCTY4Ljc1MAk2NS43NjAJNjkuNDcwCisxNDIJMTQ2 NQk3MS4xODAJMTE5MTg2MDAJNzAuMzcwCTY4LjAwMAk3MS40MDAKKzE0MgkxNDY2CTcxLjc5MAkx MDEzNjQwMAk3MC41MDAJNzAuMDIwCTcyLjcwMAorMTQyCTE0NjcJNzAuNDAwCTEyNzA4MTAwCTcw Ljc1MAk2OS4xMTAJNzEuNjAwCisxNDIJMTQ2OAk2OC4yNTAJODgzMjAwMAk3MC40MDAJNjcuMjIw CTcwLjcwMAorMTQyCTE0NjkJNjcuODgwCTY5MTUwMDAJNjguMjEwCTY3LjEyMwk2OC4yMzAKKzE0 MgkxNDcwCTY1Ljk5MAk3MTI2OTAwCTY3Ljk0MAk2NS44NTAJNjguMzUwCisxNDIJMTQ3MQk2Ny45 MDAJODM3MDgwMAk2Ny4wMDAJNjYuNjEwCTY5LjQyMAorMTQyCTE0NzIJNjkuMTcwCTgwMzY4MDAJ NjkuMDAwCTY2LjgwMAk2OS45MDAKKzE0MgkxNDczCTcxLjYxMAk4NDMyNTAwCTY5LjIwMAk2OC4z NTAJNzIuMDUwCisxNDIJMTQ3NAk3MS44MzAJNjk0MDkwMAk3MC42MTAJNzAuNDAwCTc0LjMwMAor MTQyCTE0NzUJNzEuNzcwCTUyNjMzMDAJNzEuMDUwCTcwLjYxMAk3Mi42NDAKKzE0MwkxNDc2CTU1 LjA3MAkxMjE1NTgwMAk1Ni4wNTAJNTQuODEwCTU2LjcwMAorMTQzCTE0NzcJNTcuNTgwCTEyNjcy NjAwCTU0LjY1MAk1NC4wMTAJNTguNDgwCisxNDMJMTQ3OAk2My45MjAJMTc4NTI1MDAJNjIuMDAw CTYxLjUwMAk2My45MjAKKzE0MwkxNDc5CTYzLjQyMAk3OTI1MzAwCTYxLjU0MAk2MS41NDAJNjMu ODAwCisxNDMJMTQ4MAk2OC40ODAJMTQ2MDAyMDAJNjcuNzUwCTY2LjU4MAk2OC40ODAKKzE0Mwkx NDgxCTY0LjkwMAkxNTgyODkwMAk2Ni42MDAJNjQuMjQwCTY3LjAwNQorMTQzCTE0ODIJNzIuMjAw CTIxMzQ0NTAwCTcyLjgwMAk3MS4yMzAJNzMuMDAwCisxNDMJMTQ4Mwk3NC4yNTAJMTI1MzI3MDAJ NzEuNzMwCTcwLjI2MAk3NC4yNTAKKzE0NAkxNDg0CTcyLjEwMAkxMDU3MDAwMAk3NS41MDAJNzEu NzUwCTc1LjU1MAorMTQ0CTE0ODUJNzQuNTYwCTc1Mzg4MDAJNzIuNTAwCTcyLjE2MAk3NC42MjAK KzE0NAkxNDg2CTc2LjU2MAkxMjU0NDgwMAk3NS4xNTAJNzQuNTYwCTc3LjUwMAorMTQ0CTE0ODcJ NzYuNzQwCTExNjQ4NTAwCTc2LjU2MAk3NC4yMDAJNzcuMDUwCisxNDQJMTQ4OAk3OC42NzAJMTI4 NjU4MDAJNzcuMDAwCTc2LjAyMAk3OS40MDAKKzE0NAkxNDg5CTc4Ljk0MAk5ODQ0MzAwCTc4LjY3 MAk3OC41MDAJNzkuNzkwCisxNDQJMTQ5MAk4MC40MDAJOTM5NTIwMAk3OC45MDAJNzguMzIwCTgw LjUwMAorMTQ0CTE0OTEJODIuNTAwCTEyMDA1MTAwCTgyLjAwMAk4MS43MDAJODMuODEwCisxNDQJ MTQ5Mgk4MS42ODAJMTA0NjY3MDAJODEuNzUwCTgwLjQ3MAk4Mi4wMTAKKzE0NQkxNDkzCTgwLjI2 MAk1OTIyNzAwCTc5Ljc1MAk3OS40NDAJODEuNTA3CisxNDUJMTQ5NAk3OS43NjAJMjQyMDIwMAk4 MC4yMDAJNzkuNzYwCTgxLjAwMAorMTQ1CTE0OTUJNzguNTAwCTU3ODQzMDAJNzkuODEwCTc4LjI2 MAk4MC43MDAKKzE0NQkxNDk2CTc3LjM2MAk2MzM0NDAwCTc4LjUwMAk3Ni42MTAJNzkuMTgwCisx NDUJMTQ5Nwk3Ni4yNTAJODA2NjYwMAk3Ny4wMDAJNzUuNjAwCTc3LjQzMAorMTQ1CTE0OTgJNzcu NTAwCTc4NzE0MDAJNzcuMTAwCTc3LjEwMAk3OC40NjAKKzE0NQkxNDk5CTgwLjU3MAk3ODY0NTAw CTc4LjgwMAk3OC4xOTAJODAuNTcwCisxNDUJMTUwMAk4MS42NTAJNTk2MzQwMAk4MC43MDAJODAu MjEwCTgxLjY1MAorMTQ1CTE1MDEJODMuNTkwCTc5MjMzMDAJODEuOTAwCTgxLjgxMAk4NC41OTAK KzE0NQkxNTAyCTg2LjAwMAkxMTkwNzAwMAk4My45NTAJODMuNzUwCTg2LjE4MAorMTQ1CTE1MDMJ ODQuMTkwCTk1MDk3MDAJODUuNTUwCTg0LjA3MAk4NS42OTAKKzE0NgkxNTA0CTc2LjUwMAk1NjE3 NzAwCTc3LjUwMAk3Ni41MDAJNzguMDkwCisxNDYJMTUwNQk3NS44NjAJMTEyMTg2MDAJNzYuMTAw CTc0LjMxMAk3Ni4zNTAKKzE0NgkxNTA2CTc3LjQ1MAk4MzAwMTAwCTc2LjQwMAk3NS4zNTAJNzcu NDUwCisxNDYJMTUwNwk3OS4zMzAJNzc5MzAwMAk3OC4wMjAJNzcuOTEwCTc5LjUxMAorMTQ2CTE1 MDgJNzkuNTEwCTU0NDEzMDAJNzkuMDgwCTc4LjgyNgk3OS43MDAKKzE0NgkxNTA5CTc5LjA0MAk2 Mjk1NjAwCTc5LjU3MAk3OC43MTAJODAuMDUwCisxNDcJMTUxMAk3OS44NTAJNzAyNDcwMAk4MS4x MzAJNzkuODAwCTgxLjMzMAorMTQ3CTE1MTEJNzkuNzUwCTc0NzIyMDAJNzkuNzAwCTc4LjczMAk4 MC42ODAKKzE0NwkxNTEyCTgwLjY5MAk1Mjk4NTAwCTc5LjY5MAk3OS4zODAJODAuODIwCisxNDcJ MTUxMwk4MC44ODAJNDYxNTYwMAk4MS4wNTAJODAuMzUwCTgxLjI3MAorMTQ3CTE1MTQJODEuMDIw CTQyNjIyMDAJODAuODcwCTgwLjI4MAk4MS41MDAKKzE0NwkxNTE1CTgxLjUxMAk0NjM0MjAwCTgx LjQ1MAk4MC42NTAJODEuNTQwCisxNDgJMTUxNgk4OS43MDAJODg0MjUwMAk5MS40NTAJODkuMDEw CTkxLjUxMAorMTQ4CTE1MTcJOTAuMzEwCTU1Mjk3MDAJODkuOTAwCTg5Ljc1MAk5MC40NjAKKzE0 OAkxNTE4CTk0LjAyMAkxOTgxMzYwMAk5NS4wNzAJOTMuNTUwCTk1LjY1MAorMTQ4CTE1MTkJOTUu MzIwCTkzMDIxMDAJOTUuMDAwCTk0LjcxMAk5NS4zNTAKKzE0OAkxNTIwCTk3LjEwMAk5Mjg1MzAw CTk2LjAwMAk5NS43MzAJOTcuNDQwCisxNDgJMTUyMQk5Ny43MDAJNjk1MjcwMAk5Ny4yMzAJOTYu NjQwCTk4LjA0MAorMTQ4CTE1MjIJOTcuNTEwCTQzNzE2MDAJOTcuODQwCTk3LjMyMAk5OC4xNjAK KzE0OQkxNTIzCTk5LjMwMAkzNjExNzAwCTEwMC4wNjAJOTkuMzAwCTEwMC4zMDAKKzE0OQkxNTI0 CTk5LjcxMAkzNTYyNDAwCTk5LjEwMAk5OS4wODAJMTAwLjA5MAorMTQ5CTE1MjUJOTkuMzcwCTM5 MzA1MDAJOTkuOTkwCTk5LjMyMAkxMDAuMDAwCisxNDkJMTUyNgk5OC40MjAJNDgzMDUwMAk5OS4z MTAJOTguMTUwCTk5Ljc3MAorMTQ5CTE1MjcJOTcuODAwCTU0NDc3MDAJOTguNDIwCTk3LjUyMAk5 OS4yMzAKKzE0OQkxNTI4CTk3LjMxMAk1NjkwMjAwCTk4LjYwMAk5Ny4xOTAJOTguNjAwCisxNDkJ MTUyOQk5NS45NjAJNjYyOTYwMAk5Ny40MDAJOTUuNDYwCTk3LjUxMAorMTQ5CTE1MzAJOTYuNzkw CTcwMTIxMDAJOTUuMjAwCTk1LjIwMAk5Ny40NjAKKzE0OQkxNTMxCTk2LjU0MAkzMzYyNTAwCTk2 LjUwMAk5Ni4yMzAJOTcuMDkwCisxNTAJMTUzMgk5Ni44NDAJNDgwNzAwMAk5Ni41NzAJOTUuNjAw CTk2Ljg5MAorMTUwCTE1MzMJOTYuMzkwCTM1NDg1MDAJOTYuNTgwCTk2LjEzMAk5Ni45MjAKKzE1 MAkxNTM0CTk2LjQ1MAkzOTcxODAwCTk1Ljk1MAk5NS41NjAJOTYuOTgwCisxNTAJMTUzNQk5NC41 OTAJNTA4NDIwMAk5Ni40OTAJOTQuNTkwCTk2Ljg4MAorMTUwCTE1MzYJOTQuNTMwCTYzOTE0MDAJ OTQuMzAwCTkzLjc3MAk5NS4yODAKKzE1MAkxNTM3CTkzLjA2MAk2NTM2NDAwCTk0LjM4MAk5Mi42 ODAJOTQuNzQwCisxNTAJMTUzOAk5MS4yMTAJODU2MDgwMAk5Mi4wMDAJOTEuMTUwCTkyLjk4MAor MTUwCTE1MzkJOTMuMzAwCTYyOTA2MDAJOTIuMDAwCTkxLjY4MAk5My4zODAKKzE1MQkxNTQwCTg1 LjM1MAk1Njc3MzAwCTg1LjMwMAk4NS4wNTAJODUuOTQwCisxNTEJMTU0MQk4My42NTAJNzUzMDEw MAk4NS4wMDAJODMuNTgwCTg1LjAxMAorMTUxCTE1NDIJODMuODkwCTY1OTUyMDAJODQuNDAwCTgz LjUxMAk4NC41MDAKKzE1MQkxNTQzCTg0Ljk1MAk2MDA5MjAwCTg0LjAwMAk4My40MjAJODUuMjUw CisxNTEJMTU0NAk4NS4yNTAJNjAwMTUwMAk4NS45MDAJODUuMjAwCTg2LjA5MAorMTUxCTE1NDUJ ODQuMTMwCTYyOTg3MDAJODQuODQwCTgzLjc4MAk4NS4yNDAKKzE1MgkxNTQ2CTgzLjY5MAk1MjY4 NTAwCTgzLjcwMAk4My4xMDAJODMuOTgwCisxNTIJMTU0Nwk4Mi4yMTAJNzEzNDkwMAk4My4wNTAJ ODEuOTAwCTgzLjA1MAorMTUyCTE1NDgJODMuOTEwCTU5MTY5MDAJODIuNTQwCTgyLjUxMAk4My45 NDAKKzE1MgkxNTQ5CTg0LjAyMAk0MzYxNTAwCTgzLjcwMAk4My41MTAJODQuNTYwCisxNTIJMTU1 MAk4NC4wNDAJMzU1OTUwMAk4NC4xMDAJODMuNjYwCTg0LjU0MAorMTUyCTE1NTEJODUuMTMwCTQ4 MzM3MDAJODMuNjAwCTgzLjU3MAk4NS4xMzAKKzE1MwkxNTUyCTg0LjE2MAk0NjUwMzAwCTg0LjEw MAk4My45ODAJODQuNDQwCisxNTMJMTU1Mwk4NC40ODAJMzg3NDIwMAk4NC4zNTAJODMuODgwCTg0 LjY1MAorMTUzCTE1NTQJODQuOTgwCTQyMDQ2MDAJODQuNDgwCTg0LjE1MAk4NC45ODAKKzE1Mwkx NTU1CTg1Ljc0MAk1MTk4MDAwCTg1LjE0MAk4NS4wMTAJODUuOTgwCisxNTMJMTU1Ngk4Ni43MjAJ NDU0MjcwMAk4NS45NTAJODUuODgwCTg2Ljk4MAorMTUzCTE1NTcJODcuMTYwCTUwMDE0MDAJODcu MDAwCTg2LjcyMAk4OC4xMDAKKzE1MwkxNTU4CTg3LjMyMAk1MTUwODAwCTg3Ljk1MAk4Ny4xMzAJ ODguMDMwCisxNTMJMTU1OQk4OC4wNDAJMzk4NDQwMAk4Ny4xNDAJODcuMTAwCTg4LjEwMAorMTUz CTE1NjAJODcuNDIwCTMwNzY5MDAJODguMDQwCTg3LjQwMAk4OC4xMDAKKzE1MwkxNTYxCTg2Ljcx MAk0MDkwMDAwCTg3LjQzMAk4Ni41MTAJODcuOTEwCisxNTMJMTU2Mgk4Ni42MzAJMzAxNjMwMAk4 Ni43NzAJODYuMjcwCTg3LjIwMAorMTUzCTE1NjMJODYuMDAwCTQ2MjY2MDAJODYuMDIwCTg1LjU4 MAk4Ni4yMDAKKzE1MwkxNTY0CTg0Ljk4MAk2NjY1MjAwCTg2LjI2MAk4NC40MzAJODYuNDgwCisx NTMJMTU2NQk4NC43ODAJNDIzMzcwMAk4NC43NTAJODQuMzAwCTg0Ljk4MAorMTUzCTE1NjYJODQu ODUwCTU5Mjg1MDAJODQuNzgwCTg0LjYwMAk4NS4yNTAKKzE1MwkxNTY3CTg1LjkyMAk3Mjc1NjAw CTg0LjMwMAk4NC4yOTAJODYuMTUwCisxNTMJMTU2OAk4OS4zNzAJMTM4MjQ1MDAJODguMjAwCTg4 LjAwMAk4OS43MzAKKzE1MwkxNTY5CTg4LjgyMAk3MDc5ODAwCTg4LjQ1MAk4OC4yOTAJODkuMTkw CisxNTMJMTU3MAk4OC4xMDAJNjI3MjEwMAk4OC40MDAJODcuNjYwCTg4Ljc2MAorMTUzCTE1NzEJ ODcuMzkwCTU5OTg5MDAJODguMjIwCTg3LjI5MAk4OC40NTAKKzE1MwkxNTcyCTg4LjQzMAk1Nzc1 MDAwCTg3LjM2MAk4Ny4zMTAJODguOTAwCisxNTMJMTU3Mwk4OS4wMDAJNzMzNzMwMAk4OC4zMzAJ ODguMjUwCTg5LjU3MAorMTUzCTE1NzQJOTAuMDAwCTYwMzUxMDAJODguNTgwCTg4LjUwMAk5MC4y NzAKKzE1MwkxNTc1CTg5LjUwMAk0MjI2NTAwCTg5LjgwMAk4OS40MzAJOTAuMjQwCisxNTMJMTU3 Ngk4OS43NTAJNDUxODUwMAk4OS40MDAJODguOTUwCTg5LjkwMAorMTUzCTE1NzcJOTAuMTEwCTUx NjA5MDAJODkuMzMwCTg5LjIzMAk5MC42MDAKKzE1MwkxNTc4CTkwLjQ3MAk1MzkxMTAwCTg5LjU1 MAk4OS41MDAJOTEuMjIwCisxNTMJMTU3OQk5MS4yMDAJNjU1MzMwMAk5MS4yNTAJOTAuOTcwCTkx LjkwMAorMTUzCTE1ODAJOTIuMzgwCTY5NTIxMDAJOTEuMDUwCTkwLjgyMAk5Mi43MDAKKzE1Mwkx NTgxCTkzLjI4MAk2NzA4NTAwCTkyLjQwMAk5Mi40MDAJOTMuNTIwCisxNTMJMTU4Mgk5My4zNzAJ NDkwNzMwMAk5Mi41MDAJOTIuNTAwCTkzLjcwMAorMTUzCTE1ODMJOTMuMzcwCTQ1MTMxMDAJOTMu MDAwCTkzLjAwMAk5My45NTAKKzE1NAkxNTg0CTk0LjEzMAkzNTQxMjAwCTk0LjI4MAk5NC4xMzAJ OTQuNjQwCisxNTQJMTU4NQk5Mi43MDAJNTY2NDIwMAk5NC4xNDAJOTIuNTQwCTk0LjgzMAorMTU0 CTE1ODYJOTIuNzYwCTQ4Mzg3MDAJOTIuOTUwCTkyLjMwMAk5My4xMDAKKzE1NAkxNTg3CTkzLjMw MAk0MjMzMDAwCTkyLjcwMAk5Mi41MDAJOTMuOTcwCisxNTQJMTU4OAk5My41NzAJMjg2ODgwMAk5 My4xNjAJOTMuMTYwCTk0LjAyMAorMTU0CTE1ODkJOTQuMzMwCTQyOTkyMDAJOTMuNTAwCTkzLjQ4 MAk5NC42NzAKKzE1NQkxNTkwCTkzLjMwMAkzODIxOTAwCTkyLjY0MAk5Mi41OTAJOTMuNDMwCisx NTUJMTU5MQk5Mi45MjAJNDU0MTIwMAk5Mi43NTAJOTIuNzUwCTkzLjczMAorMTU1CTE1OTIJOTIu NDEwCTQwMzc5MDAJOTMuMTUwCTkyLjIwMAk5My4yMTAKKzE1NQkxNTkzCTkyLjM3MAk0NzU0MDAw CTkyLjk0MAk5Mi4zNjAJOTMuMTgwCisxNTUJMTU5NAk5MS42MDAJODA1MTAwMAk5Mi4zNTAJOTEu NTkwCTkyLjUxMAorMTU1CTE1OTUJOTIuMTMwCTUwODc4MDAJOTEuNzAwCTkxLjcwMAk5Mi41NjAK KzE1NQkxNTk2CTkyLjM1MAk0NTEzOTAwCTkyLjAyMAk5Mi4wMTAJOTMuMDAwCisxNTUJMTU5Nwk5 Mi40MTAJMzQyNDgwMAk5Mi4zNTAJOTIuMDkwCTkyLjgwMAorMTU1CTE1OTgJOTEuNTEwCTQ0OTQz MDAJOTIuMjUwCTkxLjIwMAk5Mi40MTAKKzE1NgkxNTk5CTkxLjM4MAk0NDE5MTAwCTkwLjQ2MAk5 MC4yMjAJOTEuNDEwCisxNTYJMTYwMAk5MC40NDAJNTc0MDgwMAk5MS40OTAJOTAuMDQwCTkxLjc2 MAorMTU2CTE2MDEJOTAuMzIwCTM3Mzc5MDAJOTAuMDgwCTg5Ljc3Mwk5MC42MjAKKzE1NgkxNjAy CTg5LjU3MAk0NTc5MzAwCTkwLjIzMAk4OS4yNjAJOTAuMzMwCisxNTYJMTYwMwk4OS4wMDAJNzgz NjgwMAk4OS4wNTAJODguNzA2CTg5LjM4MAorMTU2CTE2MDQJODguNDQwCTYzNzY1MDAJODkuMDAw CTg4LjEwMAk4OS4yMDAKKzE1NgkxNjA1CTg3LjYwMAk1MjczNDAwCTg4LjI4MAk4Ny41MDAJODgu NDYwCisxNTYJMTYwNgk4Ni4yMDAJODI5NjUwMAk4Ny4zNTAJODYuMDkwCTg3LjU2MAorMTU2CTE2 MDcJODUuNzUwCTg0NTAwMDAJODUuOTAwCTg1LjE3MAk4Ni4yNDAKKzE1NgkxNjA4CTg0LjU3MAk3 MDkwODAwCTg1Ljc2MAk4NC4yNDAJODUuOTcyCisxNTYJMTYwOQk4My42NDAJMTA3MDgzMDAJODQu NjMwCTgzLjQ3MAk4NS40MTAKKzE1NgkxNjEwCTc2LjcwMAkyNzkzMjQwMAk3OS40OTAJNzYuMzMw CTc5LjY2MAorMTU2CTE2MTEJNzYuNjUwCTEzMjU2MTAwCTc3LjE1MAk3Ni4xNDAJNzcuNzUwCisx NTYJMTYxMgk3NS40ODAJOTI5MjcwMAk3Ni45ODAJNzUuMjUwCTc3LjIwMAorMTU2CTE2MTMJNzIu MDEwCTIwMzg5ODAwCTc1LjQ4MAk3MS44NTAJNzUuODcwCisxNTYJMTYxNAk3NC4wMzAJMTYyNzM2 MDAJNzIuOTkwCTcyLjgwMAk3NC4xMDAKKzE1NgkxNjE1CTc0LjIxMAkxMDk4NTIwMAk3NC4wNTAJ NzMuMjYwCTc0LjcwMAorMTU2CTE2MTYJNzQuNjEwCTEwMjIzNDAwCTc1LjI0MAk3NC4wNTAJNzUu NzIwCisxNTYJMTYxNwk3NS40MzAJMTI1MDAyMDAJNzQuNjgwCTc0LjY1MAk3Ni45ODAKKzE1Ngkx NjE4CTc3LjA1MAkxMTcwNjgwMAk3NS42OTAJNzUuNTAwCTc3LjE4MAorMTU2CTE2MTkJNzUuOTEw CTg2MzgzMDAJNzcuMDUwCTc1LjY1MAk3Ny4xMTAKKzE1NwkxNjIwCTgzLjE0MAk1MzQwOTAwCTgy LjkzMAk4Mi41MDAJODMuNzgwCisxNTcJMTYyMQk4NC4wMDAJNDQ5MDIwMAk4My4xNDAJODMuMDAw CTg0LjA4MAorMTU3CTE2MjIJODQuMTkwCTQ3MTI5MDAJODMuNzEwCTgzLjU2MAk4NC42MzAKKzE1 NwkxNjIzCTg0LjE5MAk1MjEwNjAwCTg0LjE1MAk4My43OTAJODQuNjkwCisxNTcJMTYyNAk4NC43 MDAJNDY2MTcwMAk4NC4yMDAJODQuMTAwCTg0LjkwMAorMTU3CTE2MjUJODYuMDgwCTc3ODg2MDAJ ODQuNDUwCTg0LjQ0MAk4Ni4yMTAKKzE1NwkxNjI2CTg2LjcxMAk4NjMzNjAwCTg2LjA4MAk4NS43 NTAJODcuNjAwCisxNTcJMTYyNwk4Ni45NTAJMTMzMjgzMDAJODYuMzMwCTg2LjIyMAk4Ny45NDAK KzE1NwkxNjI4CTg5LjgyMAkyNzg3NjIwMAk5MC41MTAJODkuNzMwCTkyLjA0MAorMTU3CTE2MjkJ ODkuODYwCTEwNjc2NDAwCTg5LjgwMAk4OS4zMTAJOTAuOTgwCisxNTcJMTYzMAk5MC40ODAJNzM5 MTYwMAk5MC4wNDAJODkuNTUwCTkwLjcwMAorMTU3CTE2MzEJOTEuNTYwCTg4NjIzMDAJOTAuMDUw CTkwLjAxMAk5Mi4wMDAKKzE1NwkxNjMyCTkxLjQ5MAk5MjIyNTAwCTkwLjkxMAk5MC44MDAJOTEu OTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uZmM0OGVk MmFmYzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTA0LDYgKzEwNCwxMSBA QCB0ZXN0OiBwdWJsaWNhdGlvbiBzdWJzY3JpcHRpb24KICMgLS0tLS0tLS0tLQogdGVzdDogc2Vs ZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgZGVwZW5kZW5jeSBndWMgYml0bWFwb3Bz IGNvbWJvY2lkIHRzZWFyY2ggdHNkaWN0cyBmb3JlaWduX2RhdGEgd2luZG93IHhtbG1hcCBmdW5j dGlvbmFsX2RlcHMgYWR2aXNvcnlfbG9jayBpbmRpcmVjdF90b2FzdCBlcXVpdmNsYXNzIHN0YXRz X3Jld3JpdGUgZ3JhcGhfdGFibGUKIAorIyAtLS0tLS0tLS0tCisjIFJvdyBQYXR0ZXJuIFJlY29n bml0aW9uIHRlc3RzCisjIC0tLS0tLS0tLS0KK3Rlc3Q6IHJwciBycHJfYmFzZSBycHJfZXhwbGFp biBycHJfbmZhIHJwcl9pbnRlZ3JhdGlvbgorCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91 cCBvZiBwYXJhbGxlbCB0ZXN0cyAoSlNPTiByZWxhdGVkKQogIyAtLS0tLS0tLS0tCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjE1YjMwYzg1 YWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCkBAIC0w LDAgKzEsMjEyMSBAQAorLS0KKy0tIFRlc3QgZm9yIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uOiBX SU5ET1cgY2xhdXNlIGludGVncmF0aW9uIGFuZAorLS0gc2NlbmFyaW8gdGVzdHMgdXNpbmcgc3lu dGhldGljIHN0b2NrIGRhdGEuCistLQorLS0gUGFyc2VyL3BsYW5uZXIgdGVzdHM6IHJwcl9iYXNl LnNxbAorLS0gTkZBIGVuZ2luZSB0ZXN0czogcnByX25mYS5zcWwKKy0tIEVYUExBSU4gc3RhdGlz dGljcyB0ZXN0czogcnByX2V4cGxhaW4uc3FsCistLQorCitcZ2V0ZW52IGFic19zcmNkaXIgUEdf QUJTX1NSQ0RJUgorCistLSBTeW50aGV0aWMgc3RvY2sgZGF0YSBmb3IgUlBSIHBhdHRlcm4gbWF0 Y2hpbmcgdGVzdHMKK0NSRUFURSBUQUJMRSBycHJfc3RvY2sgKAorICAgICAgIHBhcnRfaWQgaW50 ZWdlciwKKyAgICAgICBybiAgICAgIGludGVnZXIsCisgICAgICAgcHJpY2UgICBudW1lcmljKDEw LDMpLAorICAgICAgIHZvbHVtZSAgYmlnaW50LAorICAgICAgIG9wZW4gICAgbnVtZXJpYygxMCwz KSwKKyAgICAgICBsb3cgICAgIG51bWVyaWMoMTAsMyksCisgICAgICAgaGlnaCAgICBudW1lcmlj KDEwLDMpCispOworCitcc2V0IGZpbGVuYW1lIDphYnNfc3JjZGlyICcvZGF0YS9zdG9jay5kYXRh JworQ09QWSBycHJfc3RvY2sgRlJPTSA6J2ZpbGVuYW1lJzsKK0FOQUxZWkUgcnByX3N0b2NrOwor CitDUkVBVEUgVEVNUCBUQUJMRSBzdG9jayAoCisgICAgICAgY29tcGFueSBURVhULAorICAgICAg IHRkYXRlIERBVEUsCisgICAgICAgcHJpY2UgSU5URUdFUgorKTsKK0lOU0VSVCBJTlRPIHN0b2Nr IFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDEnLCAxMDApOworSU5TRVJUIElOVE8gc3Rv Y2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMicsIDIwMCk7CitJTlNFUlQgSU5UTyBz dG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAzJywgMTUwKTsKK0lOU0VSVCBJTlRP IHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDQnLCAxNDApOworSU5TRVJUIElO VE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNScsIDE1MCk7CitJTlNFUlQg SU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA2JywgOTApOworSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNycsIDExMCk7CitJTlNF UlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA4JywgMTMwKTsKK0lO U0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDknLCAxMjApOwor SU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0xMCcsIDEzMCk7 CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTAxJywgNTAp OworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMicsIDIw MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMycs IDE1MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0w NCcsIDE0MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0w Ny0wNScsIDE1MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAy My0wNy0wNicsIDYwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIw MjMtMDctMDcnLCAxMTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywg JzIwMjMtMDctMDgnLCAxMzAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnky JywgJzIwMjMtMDctMDknLCAxMjAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBh bnkyJywgJzIwMjMtMDctMTAnLCAxMzAwKTsKKworU0VMRUNUICogRlJPTSBzdG9jazsKKworLS0K Ky0tIEJhc2ljIHBhdHRlcm4gbWF0Y2hpbmcgd2l0aCBQUkVWL05FWFQKKy0tCisKKy0tIGJhc2lj IHRlc3QgdXNpbmcgUFJFVgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0 ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykK KyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwK KyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBiYXNpYyB0ZXN0IHVzaW5n IFBSRVYuIFVQIGFwcGVhcnMgdHdpY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhf dmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsg RE9XTisgVVArKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBS RVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIGJhc2lj IHRlc3QgdXNpbmcgUFJFVi4gVXNlICcqJworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwg Zmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50 aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQ KiBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBiYXNpYyB0 ZXN0IHVzaW5nIFBSRVYuIFVzZSAnPycKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhf dmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUD8g RE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihw cmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdGVzdCB1c2lu ZyBhbHRlcm5hdGlvbiAofCkgd2l0aCBzZXF1ZW5jZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChTVEFSVCAoVVAgfCBET1dOKSkKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwK KyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJp Y2UpCispOworCistLSB0ZXN0IHVzaW5nIGFsdGVybmF0aW9uICh8KSB3aXRoIGdyb3VwIHF1YW50 aWZpZXIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgKFVQIHwgRE9X TikrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIHRlc3QgdXNpbmcg bmVzdGVkIGFsdGVybmF0aW9uCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2Nr CisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNU QVJUICgoVVAgRE9XTikgfCBGTEFUKSspCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQ IEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwK KyAgRkxBVCBBUyBwcmljZSA9IFBSRVYocHJpY2UpCispOworCistLSB0ZXN0IHVzaW5nIGdyb3Vw IHdpdGggcXVhbnRpZmllcgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jawor IFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOICgoVVAg RE9XTikrKQorIERFRklORQorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFT IHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIHRlc3QgdXNpbmcgYWJzb2x1dGUgdGhyZXNo b2xkIHZhbHVlcyAobm90IHJlbGF0aXZlIFBSRVYpCistLSBISUdIOiBwcmljZSA+IDE1MCwgTE9X OiBwcmljZSA8IDEwMCwgTUlEOiBuZXV0cmFsIHJhbmdlCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55Cisg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElB TAorIFBBVFRFUk4gKExPVyBNSUQqIEhJR0gpCisgREVGSU5FCisgIExPVyBBUyBwcmljZSA8IDEw MCwKKyAgTUlEIEFTIHByaWNlID49IDEwMCBBTkQgcHJpY2UgPD0gMTUwLAorICBISUdIIEFTIHBy aWNlID4gMTUwCispOworCistLSB0ZXN0IHRocmVzaG9sZC1iYXNlZCBwYXR0ZXJuIHdpdGggYWx0 ZXJuYXRpb24KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoTE9XIChNSUQgfCBI SUdIKSspCisgREVGSU5FCisgIExPVyBBUyBwcmljZSA8IDEwMCwKKyAgTUlEIEFTIHByaWNlID49 IDEwMCBBTkQgcHJpY2UgPD0gMTUwLAorICBISUdIIEFTIHByaWNlID4gMTUwCispOworCistLSBi YXNpYyB0ZXN0IHdpdGggZml4ZWQtbGVuZ3RoIHBhdHRlcm4gKEEgQSBBID0gZXhhY3RseSAzKQor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChB IEEgQSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+PSAxNDAgQU5EIHByaWNlIDw9IDE1MAorKTsK KworLS0gdGVzdCB1c2luZyB7bn0gcXVhbnRpZmllciAoQSBBIEEgc2hvdWxkIGJlIG9wdGltaXpl ZCB0byBBezN9KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3 CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChBezN9KQorIERFRklORQorICBBIEFTIHByaWNlID49IDE0MCBBTkQgcHJpY2Ug PD0gMTUwCispOworCistLSB0ZXN0IHVzaW5nIHtuLH0gcXVhbnRpZmllciAoMiBvciBtb3JlKQor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChB ezIsfSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+IDEwMAorKTsKKworLS0gdGVzdCB1c2luZyB7 bixtfSBxdWFudGlmaWVyICgyIHRvIDQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBj b3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBC WSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEF7Miw0fSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+ IDEwMAorKTsKKworLS0gdGVzdCBwcmVmaXgvc3VmZml4IG1lcmdlIG9wdGltaXphdGlvbiB3aXRo IGJvdW5kZWQgcXVhbnRpZmllcgorLS0gUGF0dGVybiBBIEIgKEEgQil7MSwyfSBBIEIgc2hvdWxk IGJlIG9wdGltaXplZCB0byAoQSBCKXszLDR9CitDUkVBVEUgVEVNUCBUQUJMRSBycHJfdCAoaWQg aW50LCB2YWwgdGV4dCk7CitJTlNFUlQgSU5UTyBycHJfdCBWQUxVRVMKKyAgKDEsJ0EnKSwoMiwn QicpLAorICAoMywnQScpLCg0LCdCJyksCisgICg1LCdBJyksKDYsJ0InKSwKKyAgKDcsJ0EnKSwo OCwnQicpLAorICAoOSwnWCcpOworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBt YXRjaF9jb3VudAorRlJPTSBycHJfdAorV0lORE9XIHcgQVMgKAorICBPUkRFUiBCWSBpZAorICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4gKEEgQiAoQSBCKXsx LDJ9IEEgQikKKyAgREVGSU5FCisgICAgQSBBUyB2YWwgPSAnQScsCisgICAgQiBBUyB2YWwgPSAn QicKKyk7CitEUk9QIFRBQkxFIHJwcl90OworCistLSBsYXN0X3ZhbHVlKCkgc2hvdWxkIHJlbWFp biBjb25zaXN0ZW50CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBsYXN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBj b21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQor IERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAor ICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIG9taXQgIlNUQVJUIiBpbiBE RUZJTkUgYnV0IGl0IGlzIG9rIGJlY2F1c2UgIlNUQVJUIEFTIFRSVUUiIGlzCistLSBpbXBsaWNp dGx5IGRlZmluZWQuIHBlciBzcGVjLgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92 YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBE T1dOKykKKyBERUZJTkUKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBw cmljZSA8IFBSRVYocHJpY2UpCispOworCistLSB0aGUgZmlyc3Qgcm93IHN0YXJ0IHdpdGggbGVz cyB0aGFuIG9yIGVxdWFsIHRvIDEwMAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBz dG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJO IChMT1dQUklDRSBVUCsgRE9XTispCisgREVGSU5FCisgIExPV1BSSUNFIEFTIHByaWNlIDw9IDEw MCwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYo cHJpY2UpCispOworCistLSBzZWNvbmQgcm93IHJhaXNlcyAxMjAlCitTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21w YW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg SU5JVElBTAorIFBBVFRFUk4gKExPV1BSSUNFIFVQKyBET1dOKykKKyBERUZJTkUKKyAgTE9XUFJJ Q0UgQVMgcHJpY2UgPD0gMTAwLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpICogMS4yLAor ICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIHVzaW5nIE5FWFQKK1NFTEVD VCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3Rf dmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElU SU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVBET1dOKQorIERFRklORQorICBT VEFSVCBBUyBUUlVFLAorICBVUERPV04gQVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQgcHJpY2Ug PiBORVhUKHByaWNlKQorKTsKKworLS0gdXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VyAoc2FtZSBwYXR0ZXJuIGFzIGFib3ZlOworLS0gbWF0Y2ggbGVuZ3RoIGlzIGFsd2F5cyAyLCBz byByZXN1bHQgaXMgaWRlbnRpY2FsIHRvIFNLSVAgUEFTVCBMQVNUIFJPVy4KKy0tIFNLSVAgVE8g TkVYVCBST1cncyBkaXN0aW5jdCBlZmZlY3QgaXMgdGVzdGVkIGluIGJhY2t0cmFja2luZyBzZWN0 aW9uLikKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgSU5J VElBTAorIFBBVFRFUk4gKFNUQVJUIFVQRE9XTikKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwK KyAgVVBET1dOIEFTIHByaWNlID4gUFJFVihwcmljZSkgQU5EIHByaWNlID4gTkVYVChwcmljZSkK Kyk7CisKKy0tIFBSRVYgcmV0dXJucyBOVUxMIGF0IHBhcnRpdGlvbidzIGZpcnN0IHJvdyAobnVs bF9zbG90IHBhdGgpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVS IHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9S REVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgUEFUVEVSTiAoQk9VTkRBUlkgUkVTVCspCisgREVGSU5FCisgIEJPVU5EQVJZIEFT IFBSRVYocHJpY2UpIElTIE5VTEwsCisgIFJFU1QgQVMgUFJFVihwcmljZSkgSVMgTk9UIE5VTEwK Kyk7CisKKy0tIE5FWFQgcmV0dXJucyBOVUxMIGF0IHBhcnRpdGlvbidzIGxhc3Qgcm93IChudWxs X3Nsb3QgcGF0aCkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIg dworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JE RVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChBKyBCT1VO REFSWSkKKyBERUZJTkUKKyAgQSBBUyBORVhUKHByaWNlKSBJUyBOT1QgTlVMTCwKKyAgQk9VTkRB UlkgQVMgTkVYVChwcmljZSkgSVMgTlVMTAorKTsKKworLS0gREVTQyBvcmRlcjogUFJFViByZWZl cnMgdG8gdGhlIHJvdyB3aXRoIGxhdGVyIGRhdGUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUgREVTQworIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworIFBBVFRFUk4gKFNUQVJUIERPV04rIFVQKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJV RSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICBVUCBBUyBwcmljZSA+IFBSRVYo cHJpY2UpCispOworCistLSBNdWx0aXBsZSBwYXJ0aXRpb25zIHdpdGggdW5lcXVhbCBzaXplcwor V0lUSCBtdWx0aV9wYXJ0IEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKCdhJywgMSwg MTApLCAoJ2EnLCAyLCAyMCksICgnYScsIDMsIDE1KSwKKyAgKCdiJywgMSwgNSksCisgICgnYycs IDEsIDEwMCksICgnYycsIDIsIDIwMCksICgnYycsIDMsIDE1MCksICgnYycsIDQsIDE0MCksICgn YycsIDUsIDMwMCkKKyApIEFTIHQoZ3JwLCBpZCwgdmFsKQorKQorU0VMRUNUIGdycCwgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3CitGUk9NIG11bHRpX3BhcnQKK1dJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgZ3JwCisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQ QVRURVJOIChBIEIrKQorIERFRklORQorICBBIEFTIHZhbCA8PSBORVhUKHZhbCksCisgIEIgQVMg dmFsID4gUFJFVih2YWwpIE9SIHZhbCA8IFBSRVYodmFsKQorKTsKKworLS0gRkxPQVQvTlVNRVJJ QyBERUZJTkUgY29uZGl0aW9ucworV0lUSCBmbG9hdF9kYXRhIEFTICgKKyBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgKDEsIDEuMDo6ZmxvYXQ4KSwgKDIsIDEuNSksICgzLCAxLjQ5OTkpLCAoNCwg MS41MDAwMSksICg1LCAwLjEpCisgKSBBUyB0KGlkLCB2YWwpCispCitTRUxFQ1QgaWQsIHZhbCwg Y291bnQoKikgT1ZFUiB3CitGUk9NIGZsb2F0X2RhdGEKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBC WSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKEEgQispCisgREVGSU5F CisgIEEgQVMgVFJVRSwKKyAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgKiAwLjk5CispOworCistLQor LS0gRXJyb3IgY2FzZXM6IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKKy0tCisKKy0tIFBS RVYgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsK KworLS0gTkVYVCBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBuZXh0KHByaWNlKSBGUk9N IHN0b2NrOworCistLSBOZXN0ZWQgUFJFVgorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKHByaWNlKSkKKyk7CisKKy0t IE5lc3RlZCBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorKTsKKworLS0gUFJFViBuZXN0ZWQg aW5zaWRlIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJ TkUgQSBBUyBwcmljZSA+IE5FWFQoUFJFVihwcmljZSkpCispOworCistLSBQUkVWIG5lc3RlZCBp bnNpZGUgZXhwcmVzc2lvbiBpbnNpZGUgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRU RVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2Up KQorKTsKKworLS0gVHJpcGxlIG5lc3Rpbmc6IGVycm9yIHJlcG9ydGVkIGF0IG91dGVybW9zdCBQ UkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQorKTsKKworLS0gTm8gY29sdW1uIHJlZmVy ZW5jZSBpbiBQUkVWL05FWFQgYXJndW1lbnQKKy0tIFBSRVYoMSk6IGNvbnN0YW50IG9ubHksIG5v IGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorKTsKKworLS0gTkVYVCgxICsgMik6IGNvbnN0YW50 IGV4cHJlc3Npb24sIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7CisKKy0tIDIt YXJnIGZvcm06IFBSRVYoMSwgMSk6IGNvbnN0YW50IGV4cHJlc3Npb24gYXMgZmlyc3QgYXJnCitT RUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVigx LCAxKSA+IDAKKyk7CisKKy0tIENvbXBvdW5kIG5hdmlnYXRpb24gd2l0aG91dCBhIGNvbHVtbiBy ZWZlcmVuY2UgbXVzdCBiZSByZWplY3RlZCB0b28sCistLSBjb25zaXN0ZW50IHdpdGggdGhlIHNp bXBsZSBmb3JtcyBhYm92ZS4KKy0tIFBSRVYoRklSU1QoMSkpOiBjb21wb3VuZCwgY29uc3RhbnQg b25seSwgbm8gY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoMSkpID4gMAorKTsKKworLS0gTkVYVChM QVNUKDEgKyAyKSk6IGNvbXBvdW5kLCBjb25zdGFudCBleHByZXNzaW9uLCBubyBjb2x1bW4gcmVm ZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEg QVMgTkVYVChMQVNUKDEgKyAyKSkgPiAwCispOworCistLSBQUkVWKEZJUlNUKDEsIDIpKTogY29t cG91bmQsIHR3by1hcmcgaW5uZXIsIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklU SUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEsIDIpKSA+ IDAKKyk7CisKKy0tIFBSRVYoRklSU1QoMSksIDIpOiBjb21wb3VuZCwgb3V0ZXIgb2Zmc2V0IG9u bHksIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAo QSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEpLCAyKSA+IDAKKyk7CisKKy0tIFBSRVYo RklSU1QoMSwgMiksIDMpOiBjb21wb3VuZCwgaW5uZXIgYW5kIG91dGVyIG9mZnNldHMsIG5vIGNv bHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBE RUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEsIDIpLCAzKSA+IDAKKyk7CisKKy0tIE5vbi1jb25zdGFu dCBvZmZzZXQ6IGNvbHVtbiByZWZlcmVuY2UgYXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcHJpY2UpID4gMAor KTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5jZSBpbiBjb21wb3Vu ZCBpbm5lciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBE RUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIHByaWNlKSwgMikgPiAwCispOworCistLSBOb24t Y29uc3RhbnQgb2Zmc2V0OiBjb2x1bW4gcmVmZXJlbmNlIGluIGNvbXBvdW5kIG91dGVyIG9mZnNl dAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBS RVYoTEFTVChwcmljZSwgMSksIHByaWNlKSA+IDAKKyk7CisKKy0tIE5vbi1jb25zdGFudCBvZmZz ZXQ6IHZvbGF0aWxlIGZ1bmN0aW9uIGFzIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sK K1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQ QVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHJhbmRvbSgpOjppbnQpID4g MAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNldDogc3VicXVlcnkgYXMgb2Zmc2V0CitTRUxF Q1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21w YW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmlj ZSwgKFNFTEVDVCAxKSkgPiAwCispOworCistLSBGaXJzdCBhcmc6IHN1YnF1ZXJ5IChjYXVnaHQg YnkgREVGSU5FLWxldmVsIHN1YnF1ZXJ5IHJlc3RyaWN0aW9uKQorU0VMRUNUIHByaWNlIEZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwK KyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UgKyAoU0VMRUNUIDEp KSA+IDAKKyk7CisKKy0tIFZvbGF0aWxlIGZ1bmN0aW9uIGluc2lkZSBuYXYuYXJnIGlzIHJlamVj dGVkIGluIHRoZSBwbGFubmVyCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAg IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291 bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlICsgcmFuZG9tKCkgKiAwKSA+PSAwCispOworCistLSBuZXh0dmFsIGlzIHZvbGF0 aWxlIChwZXIgcGdfcHJvYyksIHNvIGl0IGlzIHJlamVjdGVkIHZpYSB0aGUgRnVuY0V4cHIKKy0t IHBhdGggd2l0aCB0aGUgInZvbGF0aWxlIGZ1bmN0aW9ucyIgbWVzc2FnZQorQ1JFQVRFIFNFUVVF TkNFIHJwcl9zZXE7CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBuZXh0dmFsKCdycHJfc2VxJykKKyk7CitEUk9QIFNFUVVFTkNFIHJw cl9zZXE7CisKKy0tIEEgdm9sYXRpbGUgREVGSU5FIGlzIG5vdyByZWplY3RlZCBpbiB0aGUgcGxh bm5lciwgbm90IGF0IHBhcnNlIHRpbWUsIHNvIGEKKy0tIHZpZXcgdGhhdCBoaWRlcyBvbmUgaXMg Y3JlYXRlZCBzdWNjZXNzZnVsbHkgYW5kIG9ubHkgZXJyb3JzIHdoZW4gcmVhZC4KK0NSRUFURSBU RU1QIFZJRVcgcnByX3ZvbGF0aWxlX3ZpZXcgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHByaWNlID4gcmFuZG9tKCkgKiAwCispOworU0VMRUNUICogRlJP TSBycHJfdm9sYXRpbGVfdmlldzsKK0RST1AgVklFVyBycHJfdm9sYXRpbGVfdmlldzsKKworLS0g REVGSU5FIGNhbm5vdCByZWZlcmVuY2UgYW4gb3V0ZXIgcXVlcnkncyBjb2x1bW4uICBBIGNvcnJl bGF0ZWQgb3V0ZXIKKy0tIHJlZmVyZW5jZSBtdXN0IHByb2R1Y2UgYSBjbGVhbiBlcnJvciwgbm90 IHRoZSBpbnRlcm5hbCAiVXBwZXItbGV2ZWwgVmFyIgorLS0gZWxvZyB0aGF0IHB1bGxfdmFyX2Ns YXVzZSB3b3VsZCBvdGhlcndpc2UgcmFpc2UuCistLSBRdWFsaWZpZWQgb3V0ZXIgcmVmZXJlbmNl IChvLnRocmVzaG9sZCk6CitTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDk1KSkgQVMgbyh0aHJlc2hv bGQpLAorTEFURVJBTCAoCisgICAgU0VMRUNUIHByaWNlIEZST00gc3RvY2sKKyAgICBXSU5ET1cg dyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBJTklUSUFMCisg ICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAgIERFRklORSBBIEFTIHByaWNlID4gby50aHJlc2hv bGQKKyAgICApCispIHM7CistLSBVbnF1YWxpZmllZCBuYW1lIHJlc29sdmluZyB0byB0aGUgb3V0 ZXIgY29sdW1uICh0aHJlc2hvbGQpOgorU0VMRUNUICogRlJPTSAoVkFMVUVTICg5NSkpIEFTIG8o dGhyZXNob2xkKSwKK0xBVEVSQUwgKAorICAgIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCisgICAg V0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgSU5J VElBTAorICAgICAgICBQQVRURVJOIChBKQorICAgICAgICBERUZJTkUgQSBBUyBwcmljZSA+IHRo cmVzaG9sZAorICAgICkKKykgczsKKy0tIE91dGVyIHJlZmVyZW5jZSBpbnNpZGUgYSBuYXZpZ2F0 aW9uIGFyZ3VtZW50IGlzIHJlamVjdGVkIHRvbzoKK1NFTEVDVCAqIEZST00gKFZBTFVFUyAoOTUp KSBBUyBvKHRocmVzaG9sZCksCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgcHJpY2UgRlJPTSBzdG9j aworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIg QlkgdGRhdGUKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyBQUkVW KG8udGhyZXNob2xkLCAxKSA+IDAKKyAgICApCispIHM7CisKKy0tIERFRklORSByZWplY3RzIGEg c2NoZW1hLXF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlICh0aHJlZSBvciBtb3JlIG5hbWUKKy0t IHBhcnRzKSBvbmNlIGl0IHJlc29sdmVzOyB0aGUgcXVhbGlmaWVkIGZvcm0gaXRzZWxmIGlzIG5v dCBhbGxvd2VkLiAgKHN0b2NrCistLSBpcyBhIHRlbXAgdGFibGUsIHNvIGl0IGlzIHF1YWxpZmll ZCB3aXRoIHBnX3RlbXAgaGVyZS4pCistLSAzLXBhcnQgKHNjaGVtYS50YWJsZS5jb2x1bW4pOgor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHBnX3Rl bXAuc3RvY2sucHJpY2UgPiAwCispOworLS0gd2hvbGUtcm93IHZhcmlhbnQgKHNjaGVtYS50YWJs ZS4qKToKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBB UyAocGdfdGVtcC5zdG9jay4qKSBJUyBOT1QgTlVMTAorKTsKKworLS0KKy0tIDItYXJnIFBSRVYv TkVYVDogZnVuY3Rpb25hbCB0ZXN0cworLS0KKworLS0gUFJFVihwcmljZSwgMik6IG1hdGNoIHJv d3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBiYWNrCistLSBzdG9jazogMTAw LCA5MCwgODAsIDk1LCAxMTAKKy0tIFBhdHRlcm4gKEEgQispOiBBPWFueSwgQiB3aGVyZSBwcmlj ZSA+IFBSRVYocHJpY2UsIDIpCistLSBBdCBwb3MgMiAoODApOiBBIG1hdGNoZXMuIHBvcyAzICg5 NSk6IDk1ID4gUFJFVig5NSwyKT05MCBUUlVFLgorLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBvcyA0ICgxMTApOiAxMTAgPiBQUkVWKDExMCwyKT04MCBUUlVFLiBNYXRjaCEKK1NFTEVD VCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIg dywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sK K1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAg QiBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworCistLSBORVhUKHByaWNlLCAyKTogbWF0 Y2ggcm93cyB3aGVyZSBjdXJyZW50IHByaWNlID4gcHJpY2UgMiByb3dzIGFoZWFkCistLSBwb3Mg MCAoMTAwKTogTkVYVCgxMDAsMik9ODAsIDEwMD44MCBUUlVFLiBwb3MgMSAoOTApOiBORVhUKDkw LDIpPTk1LCA5MD45NSBGQUxTRS4gTWF0Y2ggZW5kcy4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSwgMikKKyk7CisKKy0tIEV4cHJlc3Npb25z IGluc2lkZSBQUkVWL05FWFQgYXJnOiBleHByIGlzIGV2YWx1YXRlZCBvbiB0YXJnZXQgcm93Cist LSBQUkVWKHByaWNlIC0gNTAsIDEpOiBmZXRjaGVzIChwcmljZSAtIDUwKSBmcm9tIDEgcm93IGJh Y2sKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBC WSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmlj ZSAtIDUwLCAxKQorKTsKKworLS0gTkVYVChwcmljZSAqIDIsIDEpOiBmZXRjaGVzIChwcmljZSAq IDIpIGZyb20gMSByb3cgYWhlYWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAg ICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBj b3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHByaWNlIDwgTkVYVChwcmljZSAqIDIsIDEpCispOworCistLSBMYXJnZSBvZmZzZXQ6IFBSRVYo dmFsLCA5OTkpIG9uIDEwMDAtcm93IHNlcmllcyBtYXRjaGVzIG9ubHkgbGFzdCByb3cKKy0tIE5F WFQodmFsLCA5OTkpIG1hdGNoZXMgb25seSBmaXJzdCByb3cKK1NFTEVDVCB2YWwsIGZpcnN0X3Zh bHVlKHZhbCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodmFsLCA5OTkpID0gMQorKQorT1JE RVIgQlkgdmFsIERFU0MgTElNSVQgMzsKKworU0VMRUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBP VkVSIHcsIGxhc3RfdmFsdWUodmFsKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgTkVYVCh2YWwsIDk5OSkgPSAxMDAwCispCitMSU1JVCAzOwor CistLSBQUkVWKHByaWNlLCAwKTogb2Zmc2V0IDAgbWVhbnMgY3VycmVudCByb3csIGFsd2F5cyBl cXVhbCB0byBwcmljZQorLS0gQSsgbWF0Y2hlcyBlbnRpcmUgcGFydGl0aW9uIGFzIG9uZSBncm91 cDsgY291bnQgPSBwYXJ0aXRpb24gc2l6ZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwK KyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgUFJFVihwcmljZSwgMCkgPSBwcmljZQorKTsKKworLS0gMi1hcmcgUFJFVi9ORVhUIG91 dHNpZGUgREVGSU5FIGNsYXVzZQorU0VMRUNUIHByZXYocHJpY2UsIDIpIEZST00gc3RvY2s7CitT RUxFQ1QgbmV4dChwcmljZSwgMikgRlJPTSBzdG9jazsKKworLS0gMi1hcmcgUFJFVi9ORVhUOiBu ZWdhdGl2ZSBvZmZzZXQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IFBSRVYocHJpY2UsIC0xKSBJUyBOT1QgTlVMTAorKTsKKworLS0gMi1hcmcgUFJFVi9ORVhUOiBO VUxMIG9mZnNldCAodHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBQUkVWKHByaWNlLCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVMTAorKTsKKworLS0gMi1hcmcg UFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodW50eXBlZCkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFT ICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIE5VTEwpIElTIE5PVCBOVUxMCispOworCist LSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgbmVnYXRpdmUgYW5kIE5VTEwKK1BSRVBB UkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAkMSkKKyk7CitFWEVDVVRFIHRlc3Rf cHJldl9vZmZzZXQoLTEpOworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworREVBTExP Q0FURSB0ZXN0X3ByZXZfb2Zmc2V0OworCistLSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFi bGUgd2l0aCBleHByZXNzaW9uICgwICsgJDEpCitQUkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50 OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4g UFJFVihwcmljZSwgMCArICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldCgtMSk7CitF WEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoTlVMTCk7CitERUFMTE9DQVRFIHRlc3RfcHJldl9vZmZz ZXQ7CisKKy0tIDItYXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSB3aXRoIHBvc2l0aXZlIHZh bHVlCistLSBFeGVyY2lzZXMgUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCAtPiBldmFsX25hdl9t YXhfb2Zmc2V0KCkgcGF0aAorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0KGludDgpIEFTCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBwcmljZSA+IFBS RVYocHJpY2UsICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldCgxKTsKK0VYRUNVVEUg dGVzdF9wcmV2X29mZnNldCgyKTsKK0RFQUxMT0NBVEUgdGVzdF9wcmV2X29mZnNldDsKKworLS0g Mi1hcmc6IHR3byBQUkVWIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4gc2FtZSBERUZJTkUgY2xh dXNlCistLSBCOiBwcmljZSBleGNlZWRzIGJvdGggMS1iYWNrIGFuZCAyLWJhY2sgdmFsdWVzCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRh dGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgcHJpY2UgPiBQUkVW KHByaWNlLCAxKSBBTkQgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorKTsKKworLS0gMi1hcmc6IFBS RVYgYW5kIE5FWFQgd2l0aCBleHBsaWNpdCBvZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQor LS0gQTogcHJpY2UgZXhjZWVkcyAxLWJhY2sgYW5kIGlzIGJlbG93IDEtYWhlYWQgKGFzY2VuZGlu ZyBpbnRlcmlvciBwb2ludCkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAg Zmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkg QU5EIHByaWNlIDwgTkVYVChwcmljZSwgMSkKKyk7CisKKy0tIFBhc3MtYnktcmVmIHR5cGVzOiB0 d28gUFJFViBjYWxscyB0YXJnZXRpbmcgZGlmZmVyZW50IHBvc2l0aW9ucy4KKy0tIFZlcmlmaWVz IHRoYXQgZGF0dW1Db3B5IGluIFJFU1RPUkUgcHJldmVudHMgZGFuZ2xpbmcgcG9pbnRlcnMgd2hl bgorLS0gbmF2X3Nsb3QgaXMgcmUtZmV0Y2hlZCBmb3IgdGhlIHNlY29uZCBuYXZpZ2F0aW9uLgor LS0gdGRhdGU6OnRleHQgZ2l2ZXMgZGlzdGluY3QgdGV4dCB2YWx1ZXMgcGVyIHJvdyAoZS5nLiAn MDctMDEtMjAyMycpLgorLS0gQiBtYXRjaGVzIHdoZW4gMS1iYWNrIGRhdGUgdGV4dCA+IDItYmFj ayBkYXRlIHRleHQgKGFsd2F5cyB0cnVlIGZvcgorLS0gYXNjZW5kaW5nIGRhdGVzKSwgc28gQisg ZXh0ZW5kcyB0aGUgZnVsbCBwYXJ0aXRpb24gYWZ0ZXIgQS4KK1NFTEVDVCBjb21wYW55LCB0ZGF0 ZSwgdGRhdGU6OnRleHQgQVMgdGRhdGVfdGV4dCwKKyAgICAgICBmaXJzdF92YWx1ZSh0ZGF0ZTo6 dGV4dCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlOjp0ZXh0KSBPVkVSIHcsIGNvdW50KCopIE9W RVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFT IFBSRVYodGRhdGU6OnRleHQsIDEpID4gUFJFVih0ZGF0ZTo6dGV4dCwgMikKKyk7CisKKy0tIG51 bWVyaWM6IFBSRVYocHJpY2U6Om51bWVyaWMsIDEpID4gUFJFVihwcmljZTo6bnVtZXJpYywgMikK Ky0tIEIgbWF0Y2hlcyB3aGVuIHByaWNlIDEtYmFjayA+IHByaWNlIDItYmFjayAoYXNjZW5kaW5n IHBhaXIpLgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZTo6bnVtZXJpYyBBUyBucHJpY2Us CisgICAgICAgZmlyc3RfdmFsdWUocHJpY2U6Om51bWVyaWMpIE9WRVIgdywgbGFzdF92YWx1ZShw cmljZTo6bnVtZXJpYykgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyBQUkVWKHByaWNlOjpudW1lcmljLCAx KSA+IFBSRVYocHJpY2U6Om51bWVyaWMsIDIpCispOworCistLQorLS0gRklSU1QvTEFTVCBuYXZp Z2F0aW9uCistLQorCistLSBUZXN0IGRhdGEgZm9yIEZJUlNUL0xBU1Q6IHZhbHVlcyBjeWNsZSBi YWNrIHNvIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCkKKy0tIGF0IHNwZWNpZmljIHBvc2l0aW9ucy4K K0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYXYgKGlkIGludCwgdmFsIGludCk7CitJTlNFUlQgSU5U TyBycHJfbmF2IFZBTFVFUyAoMSwxMCksKDIsMjApLCgzLDMwKSwoNCwxMCksKDUsNTApLCg2LDEw KTsKKworLS0gRklSU1QodmFsKSA9IGNvbnN0YW50OiBCIG1hdGNoZXMgd2hlbiBtYXRjaF9zdGFy dCBoYXMgdmFsPTEwCistLSBtYXRjaF9zdGFydD0xKDEwKTogQT1pZDEsIEI9aWQyLCBGSVJTVCh2 YWwpPTEwIC0+IG1hdGNoIHsxLDJ9CistLSBtYXRjaF9zdGFydD0zKDMwKTogQT1pZDMsIEI9aWQ0 LCBGSVJTVCh2YWwpPTMwIT0xMCAtPiBubyBtYXRjaAorLS0gbWF0Y2hfc3RhcnQ9NCgxMCk6IEE9 aWQ0LCBCPWlkNSwgRklSU1QodmFsKT0xMCAtPiBtYXRjaCB7NCw1fQorU0VMRUNUIGlkLCB2YWws IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt bAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBB UyBUUlVFLCBCIEFTIEZJUlNUKHZhbCkgPSAxMAorKTsKKworLS0gTEFTVCh2YWwpOiBhbHdheXMg ZXF1YWxzIGN1cnJlbnQgcm93J3MgdmFsIChvZmZzZXQgMCBkZWZhdWx0KQorLS0gRXF1aXZhbGVu dCB0bzogQiBBUyB2YWwgPiAxNQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtbAorRlJPTSBycHJfbmF2IFdJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIExBU1QodmFs KSA+IDE1CispOworCistLSBSZWx1Y3RhbnQgQSs/IHdpdGggRklSU1QodmFsKSA9IExBU1QodmFs KTogZmluZCBzaG9ydGVzdCBtYXRjaCB3aGVyZQorLS0gZmlyc3QgYW5kIGxhc3Qgcm93cyBoYXZl IHRoZSBzYW1lIHZhbC4KKy0tIG1hdGNoX3N0YXJ0PTEoMTApOiByZWx1Y3RhbnQgdHJpZXMgQiBl YXJseToKKy0tICAgaWQyKDIwIT0xMCksIGlkMygzMCE9MTApLCBpZDQoMTA9MTApIC0+IG1hdGNo IHsxLDIsMyw0fQorLS0gbWF0Y2hfc3RhcnQ9NSg1MCk6IGlkNigxMCE9NTApIC0+IG5vIG1hdGNo CitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/ IEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCisp OworCistLSBHcmVlZHkgQSsgd2l0aCBGSVJTVCh2YWwpID0gTEFTVCh2YWwpOiBmaW5kIGxvbmdl c3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2YWwu CistLSBtYXRjaF9zdGFydD0xKDEwKTogZ3JlZWR5IEEgZWF0cyBhbGwsIEIgdHJpZXMgbGFzdDoK Ky0tICAgaWQ2KDEwPTEwKSAtPiBtYXRjaCB7MSwyLDMsNCw1LDZ9CitTRUxFQ1QgaWQsIHZhbCwg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1s CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBB UyBUUlVFLCBCIEFTIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCkKKyk7CisKKy0tIFNLSVAgVE8gTkVY VCBST1cgd2l0aCBGSVJTVCh2YWwpID0gTEFTVCh2YWwpOiBvdmVybGFwcGluZyBtYXRjaCBhdHRl bXB0cy4KKy0tIFdpdGggT05FIFJPVyBQRVIgTUFUQ0gsIGVhY2ggcm93IHNob3dzIG9ubHkgaXRz IGZpcnN0IG1hdGNoIHJlc3VsdC4KK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSs/IEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2 YWwpID0gTEFTVCh2YWwpCispOworCistLSBGSVJTVC9MQVNUIDItYXJnIG9mZnNldCBmb3JtCist LQorLS0gRklSU1QodmFsLCAwKSA9IEZJUlNUKHZhbCk6IG1hdGNoX3N0YXJ0IHJvdworU0VMRUNU IGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFsLCAwKSA9IDEwCispOworCistLSBGSVJTVCh2YWws IDEpOiBtYXRjaF9zdGFydCArIDEgcm93IChzZWNvbmQgcm93IG9mIG1hdGNoKQorLS0gbWF0Y2hf c3RhcnQ9MSgxMCk6IEZJUlNUKHZhbCwxKT0yMCwgQiBuZWVkcyB2YWw9MjAgLT4gaWQyKDIwKSBt YXRjaCwgaWQzKDMwKSBubworLS0gbWF0Y2hfc3RhcnQ9MygzMCk6IEZJUlNUKHZhbCwxKT0xMCwg QiBuZWVkcyB2YWw9MTAgLT4gaWQ0KDEwKSBtYXRjaAorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25h diBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMg dmFsID0gRklSU1QodmFsLCAxKQorKTsKKworLS0gRklSU1QodmFsLCA5OSk6IG9mZnNldCBiZXlv bmQgbWF0Y2ggcmFuZ2UgLT4gTlVMTCwgbm8gbWF0Y2gKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykK KyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZhbCwgOTkpIElTIE5PVCBOVUxMCisp OworCistLSBMQVNUKHZhbCwgMCkgPSBMQVNUKHZhbCk6IGN1cnJlbnQgcm93CitTRUxFQ1QgaWQs IHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKHZhbCwgMCkgPiAxNQorKTsKKworLS0gTEFTVCh2YWwsIDEpOiBv bmUgcm93IGJhY2sgZnJvbSBjdXJyZW50IChwcmV2aW91cyBtYXRjaCByb3cpCistLSBBdCBCIGV2 YWx1YXRpb24gb24gaWQyOiBMQVNUKHZhbCwxKSA9IHZhbCBhdCBpZDEgPSAxMAorLS0gQiBtYXRj aGVzIHdoZW4gcHJldmlvdXMgcm93IHZhbCA8IDMwCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBM QVNUKHZhbCwgMSkgPCAzMAorKTsKKworLS0gTEFTVCh2YWwsIDk5KTogb2Zmc2V0IGJlZm9yZSBt YXRjaF9zdGFydCAtPiBOVUxMCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKHZhbCwgOTkpIElTIE5PVCBOVUxMCispOworCistLSBFcnJvcjog TlVMTCBvZmZzZXQKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIEZJUlNUKHZhbCwgTlVMTDo6aW50OCkgSVMgTlVMTAorKTsKKworLS0gRXJyb3I6IG5l Z2F0aXZlIG9mZnNldAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9u YXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgTEFTVCh2YWwsIC0xKSBJUyBOVUxMCispOworCistLSBGSVJTVC9MQVNUIG91dHNp ZGUgREVGSU5FIGNsYXVzZSAoZXJyb3IgY2FzZXMpCitTRUxFQ1QgZmlyc3QodmFsKSBGUk9NIHJw cl9uYXY7CitTRUxFQ1QgbGFzdCh2YWwpIEZST00gcnByX25hdjsKK1NFTEVDVCBmaXJzdCh2YWws IDEpIEZST00gcnByX25hdjsKKworLS0gRnVuY3Rpb25hbCBub3RhdGlvbjogc2hvdWxkIGFjY2Vz cyBjb2x1bW4sIG5vdCBSUFIgbmF2aWdhdGlvbgorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hbWVz IChwcmV2IGludCwgbmV4dCBpbnQsIGZpcnN0IHRleHQsIGxhc3QgdGV4dCk7CitJTlNFUlQgSU5U TyBycHJfbmFtZXMgVkFMVUVTICgxLCAyLCAnSm9lJywgJ0Jsb3cnKTsKK1NFTEVDVCBwcmV2KGYp LCBuZXh0KGYpLCBmaXJzdChmKSwgbGFzdChmKSBGUk9NIHJwcl9uYW1lcyBmOworRFJPUCBUQUJM RSBycHJfbmFtZXM7CisKKy0tIENvbXBvdW5kIG5hdmlnYXRpb246IFBSRVYoRklSU1QodmFsKSwg TSkKKy0tIHJwcl9uYXY6ICgxLDEwKSwoMiwyMCksKDMsMzApLCg0LDEwKSwoNSw1MCksKDYsMTAp CistLSBQUkVWKEZJUlNUKHZhbCksIDEpOiB0YXJnZXQgPSBtYXRjaF9zdGFydCArIDAgLSAxID0g bWF0Y2hfc3RhcnQgLSAxCistLSBBdCBtYXRjaF9zdGFydD0xOiB0YXJnZXQ9MCAtPiBvdXQgb2Yg cmFuZ2UgLT4gTlVMTAorLS0gQXQgbWF0Y2hfc3RhcnQ9MzogdGFyZ2V0PTIodmFsPTIwKSAtPiAy MCA+IDAgLT4gdHJ1ZQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2YWwpLCAx KSA+IDAKKyk7CisKKy0tIE5FWFQoRklSU1QodmFsLCAxKSwgMSk6IHRhcmdldCA9IG1hdGNoX3N0 YXJ0ICsgMSArIDEgPSBtYXRjaF9zdGFydCArIDIKKy0tIEF0IG1hdGNoX3N0YXJ0PTEsIEIgb24g aWQyOiB0YXJnZXQ9MSsxKzE9Myh2YWw9MzApLCAzMD4wIC0+IHRydWUKK1NFTEVDVCBpZCwgdmFs LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitG Uk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBU UlVFLCBCIEFTIE5FWFQoRklSU1QodmFsLCAxKSwgMSkgPiAwCispOworCistLSBQUkVWKExBU1Qo dmFsKSwgMik6IHRhcmdldCA9IGN1cnJlbnRwb3MgLSAwIC0gMiA9IGN1cnJlbnRwb3MgLSAyCist LSBTYW1lIGJhY2t3YXJkIHJlYWNoIGFzIFBSRVYodmFsLCAyKQorU0VMRUNUIGlkLCB2YWwsIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00g cnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUs IEIgQVMgUFJFVihMQVNUKHZhbCksIDIpIElTIE5PVCBOVUxMCispOworCistLSBORVhUKExBU1Qo dmFsLCAxKSwgMik6IHRhcmdldCA9IGN1cnJlbnRwb3MgLSAxICsgMiA9IGN1cnJlbnRwb3MgKyAx CistLSBMb29rcyAxIHJvdyBhaGVhZDogc2FtZSBhcyBORVhUKHZhbCwgMSkKK1NFTEVDVCBpZCwg dmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBB UyBUUlVFLCBCIEFTIE5FWFQoTEFTVCh2YWwsIDEpLCAyKSBJUyBOT1QgTlVMTAorKTsKKworLS0g Q29tcG91bmQ6IG91dGVyIG9mZnNldCBiZXlvbmQgcGFydGl0aW9uIChQUkVWIGZhciBiYWNrKQor U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBB IEFTIFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2YWwpLCA5OSkgSVMgTk9UIE5VTEwKKyk7CisKKy0t IENvbXBvdW5kOiBvdXRlciBvZmZzZXQgYmV5b25kIHBhcnRpdGlvbiAoTkVYVCBmYXIgZm9yd2Fy ZCkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYg V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJ TkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoRklSU1QodmFsKSwgOTkpIElTIE5PVCBOVUxMCispOwor CistLSBDb21wb3VuZDogaW5uZXIgb2Zmc2V0IGJleW9uZCBtYXRjaCByYW5nZSAoRklSU1Qgb2Zm c2V0IHRvbyBsYXJnZSkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitG Uk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBC KykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsLCA5OSksIDEpIElT IE5PVCBOVUxMCispOworCistLSBDb21wb3VuZDogaW5uZXIgb2Zmc2V0IGJleW9uZCBtYXRjaCBy YW5nZSAoTEFTVCBvZmZzZXQgdG9vIGxhcmdlKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9W RVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChMQVNUKHZh bCwgOTkpLCAxKSBJUyBOT1QgTlVMTAorKTsKKworLS0gQ29tcG91bmQ6IE5VTEwgb3V0ZXIgb2Zm c2V0IChydW50aW1lIGVycm9yKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2YWwpLCBOVUxMOjppbnQ4KSBJUyBOVUxMCispOwor CistLSBDb21wb3VuZDogbmVnYXRpdmUgb3V0ZXIgb2Zmc2V0IChydW50aW1lIGVycm9yKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNU KHZhbCksIC0xKSBJUyBOVUxMCispOworCistLSBDb21wb3VuZDogZGVmYXVsdCBvZmZzZXRzIG9u IGJvdGggc2lkZXMKKy0tIFBSRVYoRklSU1QodmFsKSk6IGlubmVyPTAgKG1hdGNoX3N0YXJ0KSwg b3V0ZXI9MSAtPiB0YXJnZXQgPSBtYXRjaF9zdGFydCAtIDEKK1NFTEVDVCBpZCwgdmFsLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJw cl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIFBSRVYoRklSU1QodmFsKSkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIE5FWFQoTEFTVCh2YWwp KTogaW5uZXI9MCAoY3VycmVudHBvcyksIG91dGVyPTEgLT4gdGFyZ2V0ID0gY3VycmVudHBvcyAr IDEKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgq KSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykK KyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoTEFTVCh2YWwpKSBJUyBOT1QgTlVMTAor KTsKKworLS0gQ29tcG91bmQ6IGlubmVyIE5VTEwgb2Zmc2V0IChydW50aW1lIGVycm9yKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJT VCh2YWwsIE5VTEw6OmludDgpLCAxKSBJUyBOVUxMCispOworCistLSBDb21wb3VuZDogaW5uZXIg bmVnYXRpdmUgb2Zmc2V0IChydW50aW1lIGVycm9yKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCop IE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKHZhbCwgLTEpLCAxKSBJUyBOVUxM CispOworCistLSBDb21wb3VuZCArIGhvc3QgdmFyaWFibGUgb2Zmc2V0cworUFJFUEFSRSB0ZXN0 X2NvbXBvdW5kX29mZnNldChpbnQ4LCBpbnQ4KSBBUworU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25h diBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMg UFJFVihGSVJTVCh2YWwsICQxKSwgJDIpIElTIE5PVCBOVUxMCispOworRVhFQ1VURSB0ZXN0X2Nv bXBvdW5kX29mZnNldCgwLCAxKTsKK0VYRUNVVEUgdGVzdF9jb21wb3VuZF9vZmZzZXQoMSwgMSk7 CitERUFMTE9DQVRFIHRlc3RfY29tcG91bmRfb2Zmc2V0OworCistLSBDb21wb3VuZCArIFNLSVAg VE8gTkVYVCBST1c6IG92ZXJsYXBwaW5nIG1hdGNoZXMgd2l0aCBQUkVWKEZJUlNUKCkpCitTRUxF Q1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RSBBIEFTIFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2YWwpLCAxKSA+IDAKKyk7CisKKy0tIENvbXBv dW5kICsgbXVsdGlwbGUgcGFydGl0aW9ucworQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hdl9wYXJ0 IChnaWQgaW50LCBpZCBpbnQsIHZhbCBpbnQpOworSU5TRVJUIElOVE8gcnByX25hdl9wYXJ0IFZB TFVFUworICAgICgxLDEsMTApLCgxLDIsMjApLCgxLDMsMzApLAorICAgICgyLDEsNDApLCgyLDIs NTApLCgyLDMsNjApOworU0VMRUNUIGdpZCwgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2X3BhcnQgV0lORE9X IHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBnaWQgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRS VUUsIEIgQVMgTkVYVChGSVJTVCh2YWwpLCAxKSA+IDAKKyk7CitEUk9QIFRBQkxFIHJwcl9uYXZf cGFydDsKKworLS0gUmV2ZXJzZSBuZXN0aW5nOiBGSVJTVCB3cmFwcGluZyBQUkVWIGlzIHByb2hp Yml0ZWQKK1NFTEVDVCBpZCwgdmFsIEZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJT VChQUkVWKHZhbCkpID4gMAorKTsKKworLS0gUmV2ZXJzZSBuZXN0aW5nOiBMQVNUIHdyYXBwaW5n IE5FWFQgaXMgcHJvaGliaXRlZAorU0VMRUNUIGlkLCB2YWwgRlJPTSBycHJfbmF2IFdJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyBU UlVFLCBCIEFTIExBU1QoTkVYVCh2YWwpKSA+IDAKKyk7CisKK0RST1AgVEFCTEUgcnByX25hdjsK KworLS0KKy0tIFNLSVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFyeQorLS0KKwor LS0gbWF0Y2ggZXZlcnl0aGluZworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9j aworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRl CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKEErKQorIERF RklORQorICBBIEFTIFRSVUUKKyk7CisKKy0tIG50aF92YWx1ZSBiZXlvbmQgcmVkdWNlZCBmcmFt ZSAobm8gSUdOT1JFIE5VTExTKQorLS0gVGVzdHMgV2luR2V0U2xvdEluRnJhbWUvV2luR2V0RnVu Y0FyZ0luRnJhbWUgb3V0LW9mLWZyYW1lIHdpdGggUlBSCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLAorIG50aF92YWx1ZShwcmljZSwgNSkgT1ZFUiB3IEFTIG50aF81CitGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQor IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBE RUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAg RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBiYWNrdHJhY2tpbmcgd2l0aCBy ZWNsYXNzaWZpY2F0aW9uIG9mIHJvd3MKKy0tIHVzaW5nIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUodGRhdGUp IE9WRVIgdywgbGFzdF92YWx1ZSh0ZGF0ZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKEErIEIrKQorIERFRklORQorICBB IEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlID4gMTAwCispOworCistLSBiYWNrdHJhY2tp bmcgd2l0aCByZWNsYXNzaWZpY2F0aW9uIG9mIHJvd3MKKy0tIHVzaW5nIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHRkYXRlKSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoQSsgQispCisgREVGSU5F CisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPiAxMDAKKyk7CisKKy0tIFNLSVAg VE8gTkVYVCBST1cgd2l0aCBsaW1pdGVkIGZyYW1lIChJc2hpaS1zYW4ncyB0ZXN0IGNhc2UpCist LSBFYWNoIHJvdyBzaG91bGQgcHJvZHVjZSBpdHMgb3duIG1hdGNoIHdpdGhpbiBpdHMgZnJhbWUK K1dJVEggZGF0YSBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgnQScsIDEpLCAoJ0En LCAyKSwKKyAgKCdCJywgMyksICgnQicsIDQpCisgKSBBUyB0KGdpZCwgaWQpCispCitTRUxFQ1Qg Z2lkLCBpZCwgYXJyYXlfYWdnKGlkKSBPVkVSIHcKK0ZST00gZGF0YQorV0lORE9XIHcgQVMgKAor IFBBUlRJVElPTiBCWSBnaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9X SU5HCisgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIFBBVFRFUk4gKEErKQorIERFRklO RSBBIEFTIGlkIDwgMTAKKyk7CisKKy0tIExpbWl0ZWQgZnJhbWUgd2l0aCBhYnNvcnB0aW9uIHRl c3QKKy0tIFJvdyAwOiBmcmFtZSBbMCwyXSwgY2FuJ3Qgc2VlIEIgYXQgcm93IDMgLT4gbm8gbWF0 Y2gKKy0tIFJvdyAxOiBmcmFtZSBbMSwzXSwgY2FuIHNlZSBBIEEgQiAtPiBzaG91bGQgbWF0Y2gg cm93cyAxLTMKK1dJVEggZnJhbWVfYWJzb3JiX3Rlc3QgQVMgKAorIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAoMCwgJ0EnKSwgKDEsICdBJyksICgyLCAnQScpLCAoMywgJ0InKQorICkgQVMgdChp ZCwgZmxhZykKKykKK1NFTEVDVCBpZCwgZmxhZywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBmcmFt ZV9hYnNvcmJfdGVzdAorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworIFBBVFRFUk4gKEErIEIpCisgREVGSU5FCisgIEEgQVMgZmxhZyA9ICdBJywKKyAgQiBB UyBmbGFnID0gJ0InCispOworCistLSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIG9mZnNl dCBGT0xMT1dJTkcKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHRk YXRlKSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdywKKyBjb3VudCgqKSBPVkVSIHcK KyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JE RVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04r KQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2Up LAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tCistLSBBZ2dyZWdhdGVz CistLQorCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBsYXN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbWF4KHByaWNlKSBPVkVSIHcsCisgbWluKHByaWNlKSBP VkVSIHcsCisgc3VtKHByaWNlKSBPVkVSIHcsCisgYXZnKHByaWNlKSBPVkVSIHcsCisgY291bnQo cHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorUEFSVElUSU9OIEJZIGNv bXBhbnkKK1JPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCitJTklUSUFMCitQQVRURVJOIChTVEFSVCBV UCsgRE9XTispCitERUZJTkUKK1NUQVJUIEFTIFRSVUUsCitVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpLAorRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSB1c2luZyBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG1h eChwcmljZSkgT1ZFUiB3LAorIG1pbihwcmljZSkgT1ZFUiB3LAorIHN1bShwcmljZSkgT1ZFUiB3 LAorIGF2ZyhwcmljZSkgT1ZFUiB3LAorIGNvdW50KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sK K1dJTkRPVyB3IEFTICgKK1BBUlRJVElPTiBCWSBjb21wYW55CitST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK0FGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKK0lOSVRJQUwKK1BBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKK0RFRklORQorU1RBUlQgQVMg VFJVRSwKK1VQIEFTIHByaWNlID4gUFJFVihwcmljZSksCitET1dOIEFTIHByaWNlIDwgUFJFVihw cmljZSkKKyk7CisKKy0tIHJvd19udW1iZXIoKSB3aXRoaW4gUlBSIHJlZHVjZWQgZnJhbWUKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIHJvd19udW1iZXIoKSBPVkVSIHcsIGNvdW50KCop IE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55 CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChT VEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNl ID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0K Ky0tIFNRTCBJbnRlZ3JhdGlvbjogSk9JTiwgQ1RFLCBMQVRFUkFMCistLQorCistLSBKT0lOIGNh c2UKK0NSRUFURSBURU1QIFRBQkxFIHQxIChpIGludCwgdjEgaW50KTsKK0NSRUFURSBURU1QIFRB QkxFIHQyIChqIGludCwgdjIgaW50KTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygxLDEwKTsKK0lO U0VSVCBJTlRPIHQxIFZBTFVFUygxLDExKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygxLDEyKTsK K0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEwKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEx KTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEyKTsKKworU0VMRUNUICogRlJPTSB0MSwgdDIg V0hFUkUgdDEudjEgPD0gMTEgQU5EIHQyLnYyIDw9IDExOworCitTRUxFQ1QgKiwgY291bnQoKikg T1ZFUiB3IEZST00gdDEsIHQyCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIHQxLmkKKyBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFM CisgUEFUVEVSTiAoQSkKKyBERUZJTkUKKyBBIEFTIHYxIDw9IDExIEFORCB2MiA8PSAxMQorKTsK KworLS0gV0lUSCBjYXNlCitXSVRIIHdzdG9jayBBUyAoCisgIFNFTEVDVCAqIEZST00gc3RvY2sg V0hFUkUgdGRhdGUgPCAnMjAyMy0wNy0wOCcKKykKK1NFTEVDVCB0ZGF0ZSwgcHJpY2UsCitmaXJz dF92YWx1ZSh0ZGF0ZSkgT1ZFUiB3LAorY291bnQoKikgT1ZFUiB3CisgRlJPTSB3c3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNl KQorKTsKKworLS0gUmVTY2FuIHRlc3Q6IExBVEVSQUwgam9pbiBmb3JjZXMgV2luZG93QWdnIHJl c2NhbiB3aXRoIFJQUgorLS0gVGVzdHMgRXhlY1JlU2NhbldpbmRvd0FnZyBjbGVhcmluZyBuYXZf c2xvdAorU0VMRUNUIGcueCwgc3ViLioKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGcoeCks CitMQVRFUkFMICgKKyAgU0VMRUNUIGlkLCBwcmljZSwgY291bnQoKikgT1ZFUiB3IEFTIGMKKyAg RlJPTSAoVkFMVUVTICgxLCAxMDApLCAoMiwgMjAwKSwgKDMsIDE1MCkpIEFTIHQoaWQsIHByaWNl KQorICBXSEVSRSBpZCA8PSBnLnggKyAxCisgIFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKFNUQVJUIFVQKykKKyAgICBERUZJTkUKKyAgICAgIFNUQVJUIEFTIFRSVUUs CisgICAgICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpCisgICkKKykgc3ViCitPUkRFUiBCWSBn LngsIHN1Yi5pZDsKKworLS0gUFJFViBoYXMgbXVsdGlwbGUgY29sdW1uIHJlZmVyZW5jZQorQ1JF QVRFIFRFTVAgVEFCTEUgcnByMSAoaWQgSU5URUdFUiwgaSBTRVJJQUwsIGogSU5URUdFUik7CitJ TlNFUlQgSU5UTyBycHIxKGlkLCBqKSBTRUxFQ1QgMSwgZyoyIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwKSBBUyBnOworU0VMRUNUIGlkLCBpLCBqLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHJw cjEKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGlkCisgT1JERVIgQlkgaQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBDT05EKykKKyBE RUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgQ09ORCBBUyBQUkVWKGkgKyBqICsgMSkgPCAxMAor KTsKKworLS0KKy0tIExhcmdlLXNjYWxlIC8gc2NhbGFiaWxpdHkgdGVzdHMKKy0tCisKKy0tIFNt b2tlIHRlc3QgZm9yIGxhcmdlciBwYXJ0aXRpb25zLgorV0lUSCBzIEFTICgKKyBTRUxFQ1Qgdiwg Y291bnQoKikgT1ZFUiB3IEFTIGMKKyBGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApIHYpCisgV0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElO SVRJQUwKKyAgUEFUVEVSTiAoIHIrICkKKyAgREVGSU5FIHIgQVMgVFJVRQorICkKKykKKy0tIFNo b3VsZCBiZSBleGFjdGx5IG9uZSBsb25nIG1hdGNoIGFjcm9zcyBhbGwgcm93cy4KK1NFTEVDVCAq IEZST00gcyBXSEVSRSBjID4gMDsKKworV0lUSCBzIEFTICgKKyBTRUxFQ1QgdiwgY291bnQoKikg T1ZFUiB3IEFTIGMKKyBGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHYpCisg V0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAg UEFUVEVSTiAoIHIgKQorICBERUZJTkUgciBBUyBUUlVFCisgKQorKQorLS0gRXZlcnkgcm93IHNo b3VsZCBiZSBpdHMgb3duIG1hdGNoLgorU0VMRUNUIGNvdW50KCopIEZST00gcyBXSEVSRSBjID4g MDsKKworLS0gTGFyZ2UgcGFydGl0aW9uIHRlc3Q6IDEwMEsgcm93cyB3aXRoIEErIEIqIEN7MTAw MDAsfSBwYXR0ZXJuCistLSBUZXN0cyB0aGF0IGludDMyIGNvdW50IGRvZXNuJ3Qgb3ZlcmZsb3cg d2l0aCBsYXJnZSByZXBldGl0aW9ucworV0lUSCBkYXRhIEFTICgKKyBTRUxFQ1QgZ2VuZXJhdGVf c2VyaWVzKDAsIDEwMDAwMCkgQVMgdgorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIHYsCisgICAg ICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9sZW4sCisgICAgICAgIGZpcnN0X3ZhbHVlKHYp IE9WRVIgdyBBUyBtYXRjaF9maXJzdCwKKyAgICAgICAgbGFzdF92YWx1ZSh2KSBPVkVSIHcgQVMg bWF0Y2hfbGFzdAorIEZST00gZGF0YQorIFdJTkRPVyB3IEFTICgKKyAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4gKEErIEIqIEN7MTAwMDAsfSkKKyAgREVG SU5FCisgICBBIEFTIHYgPCAzMzMzMywKKyAgIEIgQVMgdiA+PSAzMzMzMyBBTkQgdiA8IDY2NjY2 LAorICAgQyBBUyB2ID49IDY2NjY2IEFORCB2IDwgOTk5OTkKKyApCispCistLSBTaG91bGQgbWF0 Y2g6IEEgKDMzMzMzIHJvd3MpICsgQiAoMzMzMzMgcm93cykgKyBDICgzMzMzMyByb3dzKSA9IDk5 OTk5IHJvd3MKK1NFTEVDVCBtYXRjaF9maXJzdCwgbWF0Y2hfbGFzdCwgbWF0Y2hfbGVuIEZST00g cmVzdWx0IFdIRVJFIG1hdGNoX2xlbiA+IDA7CisKKy0tIEpJVCBQUkVWL05FWFQgbmF2aWdhdGlv biB0ZXN0OiAxMDBLIHJvd3Mgd2l0aCBQUkVWIGluIERFRklORS4KKy0tIEV4ZXJjaXNlcyBFRU9Q X1JQUl9OQVZfU0VUL1JFU1RPUkUgSklUIGNvZGUgcGF0aHMgKGhhc19ycHJfbmF2IHJlbG9hZCkK Ky0tIGF0IHNjYWxlLiBWLXNoYXBlOiBwcmljZSByaXNlcyB0aGVuIGZhbGxzLCByZXBlYXRlZCBh Y3Jvc3MgcGFydGl0aW9uLgorU0VUIGppdCA9IG9uOworU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsK K1dJVEggZGF0YSBBUyAoCisgU0VMRUNUIGksIGFicyg1MDAwMCAtIGkpIEFTIHByaWNlCisgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDAwKSBpCispLAorcmVzdWx0IEFTICgKKyBTRUxFQ1Qg aSwgcHJpY2UsCisgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9sZW4sCisgICAgICAg IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgbWF0Y2hfZmlyc3QKKyBGUk9NIGRhdGEKKyBX SU5ET1cgdyBBUyAoCisgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgSU5JVElBTAorICBQ QVRURVJOIChET1dOKyBVUCspCisgIERFRklORQorICAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJp Y2UpLAorICAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKQorICkKKykKK1NFTEVDVCBjb3VudCgq KSBBUyBtYXRjaGVkX3Jvd3MsIG1heChtYXRjaF9sZW4pIEFTIGxvbmdlc3RfbWF0Y2gKK0ZST00g cmVzdWx0IFdIRVJFIG1hdGNoX2xlbiA+IDA7CitSRVNFVCBqaXRfYWJvdmVfY29zdDsKK1JFU0VU IGppdDsKKworLS0gSklUIGNvbXBvdW5kIG5hdmlnYXRpb24gdGVzdAorU0VUIGppdCA9IG9uOwor U0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1NFTEVDVCBjb3VudCgqKSBBUyBtYXRjaGVkX3Jvd3MK K0ZST00gKAorIFNFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuCisgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2KQorIFdJTkRPVyB3IEFTICgKKyAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICBQQVRURVJOIChBIEIrKQorICBERUZJTkUgQSBBUyBUUlVF LCBCIEFTIFBSRVYoRklSU1QodiksIDEpID4gMAorICkKKykgc3ViIFdIRVJFIG1hdGNoX2xlbiA+ IDA7CitSRVNFVCBqaXRfYWJvdmVfY29zdDsKK1JFU0VUIGppdDsKKworLS0KKy0tIElHTk9SRSBO VUxMUworLS0KKworLS0gbm8gTlVMTCByb3dzIGNhc2UuIFRoZSByZXN1bHQgc2hvdWxkIGJlIGlk ZW50aWNhbCB3aXRoICJiYXNpYyB0ZXN0IHVzaW5nIFBSRVYiCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyBsYXN0 X3ZhbHVlKHByaWNlKSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikg SUdOT1JFIE5VTExTIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9X TispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmlj ZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gbnRoX3ZhbHVlIHdp dGggSUdOT1JFIE5VTExTIG9wdGlvbiB3YW50cyB0byBmaW5kIHRoZSBzZWNvbmQgcm93IGJ1dAor LS0gZHVlIHRvIGEgTlVMTCBpbiB0aGUgbWlkZGxlLCBpdCByZXR1cm5zIHRoZSB0aGlyZCByb3cu CitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMTAsIDEpLCAoMTEs IE5VTEwpLCAoMTIsIDMpLCAoMTMsIDQpCisgICkgQVMgdChnaWQsIGlkKSkKKyAgU0VMRUNUIGdp ZCwgaWQsIG50aF92YWx1ZShpZCwgMikgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBzZWNvbmRfdmFs LAorICBhcnJheV9hZ2coaWQpIE9WRVIgdworICBGUk9NIGRhdGEKKyAgV0lORE9XIHcgQVMgKAor ICAgT1JERVIgQlkgZ2lkCisgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgUEFUVEVS TiAoQSspCisgICBERUZJTkUgQSBBUyBnaWQgPCAxMworICApOworCistLSBudGhfdmFsdWUgd2l0 aCBJR05PUkUgTlVMTFMgb3B0aW9uIHdhbnRzIHRvIGZpbmQgdGhlIHRoaXJkIHJvdyBidXQKKy0t IGR1ZSB0byBhIE5VTEwgaW4gdGhlIG1pZGRsZSwgaXQgcmVhY2hlcyB0aGUgZW5kIG9mIHJlZHVj ZWQgZnJhbWUgYW5kCistLSByZXR1cm5zIE5VTEwKK1dJVEggZGF0YSBBUyAoCisgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICgxMCwgMSksICgxMSwgTlVMTCksICgxMiwgMyksICgxMywgNCkKKyAg KSBBUyB0KGdpZCwgaWQpKQorICBTRUxFQ1QgZ2lkLCBpZCwgbnRoX3ZhbHVlKGlkLCAzKSBJR05P UkUgTlVMTFMgT1ZFUiB3IEFTIHRocmlkX3ZhbCwKKyAgYXJyYXlfYWdnKGlkKSBPVkVSIHcKKyAg RlJPTSBkYXRhCisgIFdJTkRPVyB3IEFTICgKKyAgIE9SREVSIEJZIGdpZAorICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgIFBBVFRFUk4gKEErKQorICAgREVGSU5FIEEgQVMgZ2lkIDwg MTMKKyAgKTsKKworLS0gbnRoX3ZhbHVlIGJleW9uZCByZWR1Y2VkIGZyYW1lIHdpdGggSUdOT1JF IE5VTExTCistLSBUZXN0cyBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZSBlYXJseSBvdXQt b2YtZnJhbWUgY2hlY2sKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgbnRoX3ZhbHVl KHByaWNlLCA1KSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIG50aF81X2luCitGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJ TkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9X TiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBJR05PUkUgTlVMTFMgKyBmaXJzdF92 YWx1ZSB3aGVyZSBmaXJzdCB2YWx1ZSBpbiByZWR1Y2VkIGZyYW1lIGlzIE5VTEwKK1dJVEggZGF0 YSBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgxLCBOVUxMKSwgKDIsIE5VTEwpLCAo MywgMzApLCAoNCwgNDApCisgKSBBUyB0KGlkLCB2YWwpKQorU0VMRUNUIGlkLCB2YWwsCisgZmly c3RfdmFsdWUodmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGZ2X2lnbnVsbCwKKyBjb3VudCgq KSBPVkVSIHcKK0ZST00gZGF0YQorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoQSspCisgREVGSU5FIEEgQVMgVFJVRQorKTsK KworLS0gSUdOT1JFIE5VTExTICsgYWxsIHZhbHVlcyBOVUxMIGluIHJlZHVjZWQgZnJhbWUKK1dJ VEggZGF0YSBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgxLCBOVUxMKSwgKDIsIE5V TEwpLCAoMywgTlVMTCkKKyApIEFTIHQoaWQsIHZhbCkpCitTRUxFQ1QgaWQsIHZhbCwKKyBmaXJz dF92YWx1ZSh2YWwpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgZnZfaWdudWxsLAorIGxhc3RfdmFs dWUodmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGx2X2lnbnVsbCwKKyBjb3VudCgqKSBPVkVS IHcKK0ZST00gZGF0YQorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgUEFUVEVSTiAoQSspCisgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0K Ky0tIGxhc3RfdmFsdWUgSUdOT1JFIE5VTExTIHdpdGggcmVkdWNlZCBmcmFtZSBjb250YWluaW5n IGFsbCBOVUxMcworLS0gRXhlcmNpc2VzIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lIFNF RUtfVEFJTCBvdXQtb2YtZnJhbWUgcGF0aAorLS0gd2hlbiBub3RudWxsX3JlbHBvcyA+PSBudW1f cmVkdWNlZF9mcmFtZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSBycHJfbnVsbHZhbCAoaWQgSU5U LCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9udWxsdmFsIFZBTFVFUyAoMSwgMTApLCAoMiwg TlVMTCksICgzLCBOVUxMKSwgKDQsIDIwKTsKKworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgbGFz dF92YWx1ZSh2YWwpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbHZfaWdudWxsLAorICAgICAgIGNv dW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX251bGx2YWwKK1dJTkRPVyB3IEFTICgKKyAg T1JERVIgQlkgaWQKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBQQVRURVJOIChBIEIr KQorICBERUZJTkUKKyAgICBBIEFTIHZhbCBJUyBOT1QgTlVMTCwKKyAgICBCIEFTIHZhbCBJUyBO VUxMCispOworCistLQorLS0gTlVMTCBoYW5kbGluZworLS0KKworQ1JFQVRFIFRFTVAgVEFCTEUg c3RvY2tfbnVsbCAoY29tcGFueSBURVhULCB0ZGF0ZSBEQVRFLCBwcmljZSBJTlRFR0VSKTsKK0lO U0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgnYzEnLCAnMjAyMy0wNy0wMScsIDEwMCk7CitJ TlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2MxJywgJzIwMjMtMDctMDInLCBOVUxMKTsg IC0tIE5VTEwgaW4gbWlkZGxlCitJTlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2MxJywg JzIwMjMtMDctMDMnLCAyMDApOworSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScs ICcyMDIzLTA3LTA0JywgMTUwKTsKKworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291 bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2NvdW50CitGUk9NIHN0b2NrX251bGwKK1dJTkRPVyB3IEFT ICgKKyAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgT1JERVIgQlkgdGRhdGUKKyAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIFBBVFRFUk4gKFNUQVJU IFVQIERPV04pCisgIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpLCBET1dOIEFTIHByaWNlIDwKK1BSRVYocHJpY2UpCispOworCistLSBDb25zZWN1dGl2ZSBO VUxMczogUFJFViBuYXZpZ2F0ZXMgdGhyb3VnaCBOVUxMIHZhbHVlcworQ1JFQVRFIFRFTVAgVEFC TEUgcnByX2NvbnNlY19udWxsIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2Nv bnNlY19udWxsIFZBTFVFUworICgxLCAxMDApLCAoMiwgTlVMTCksICgzLCBOVUxMKSwgKDQsIE5V TEwpLCAoNSwgMjAwKSwgKDYsIDMwMCk7CisKKy0tIFBSRVYodmFsKSBJUyBOVUxMIHN1Y2NlZWRz IGZvciBib3RoIG51bGxfc2xvdCAoZmlyc3Qgcm93KSBhbmQgYWN0dWFsIE5VTEwKK1NFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9jb25zZWNfbnVsbAorV0lO RE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFU VEVSTiAoQSBCKyBDKQorIERFRklORQorICBBIEFTIHZhbCBJUyBOVUxMLAorICBCIEFTIHZhbCBJ UyBOVUxMIEFORCBQUkVWKHZhbCkgSVMgTlVMTCwKKyAgQyBBUyB2YWwgSVMgTk9UIE5VTEwKKyk7 CisKKy0tIE5FWFQodmFsKSB0aHJvdWdoIGNvbnNlY3V0aXZlIE5VTExzCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY29uc2VjX251bGwKK1dJTkRPVyB3 IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4g KEEgQisgQykKKyBERUZJTkUKKyAgQSBBUyB2YWwgSVMgTk9UIE5VTEwsCisgIEIgQVMgdmFsIElT IE5VTEwgQU5EIE5FWFQodmFsKSBJUyBOVUxMLAorICBDIEFTIHZhbCBJUyBOVUxMIEFORCBORVhU KHZhbCkgSVMgTk9UIE5VTEwKKyk7CisKK0RST1AgVEFCTEUgcnByX2NvbnNlY19udWxsOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFN0b2NrIFNjZW5hcmlvIFRlc3RzICgxNjMyIHJvd3MsIHBhcnRpdGlvbmVkIHJl Z2lvbnMpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworLS0gQ29uc2VjdXRpdmUgcmlzaW5nIGRheXM6IGZpbmQgc3RyZWFr cyBvZiA3KyBkYXlzCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4p IE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFT IGVuZF9ybiwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJw cl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQK KyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgICAgICBQQVRURVJOIChVUHs3LH0pCisgICAgICAgIERFRklORSBVUCBBUyBwcmlj ZSA+IFBSRVYocHJpY2UpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0 X3JuOworCistLSBWLXNoYXBlIHJlY292ZXJ5OiA0KyBkYXlzIGRlY2xpbmUgZm9sbG93ZWQgYnkg NCsgZGF5cyByaXNlCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4p IE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFT IGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9w cmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwK KyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jawor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAg T1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg ICAgICBQQVRURVJOIChERUNMSU5FezQsfSBSSVNFezQsfSkKKyAgICAgICAgREVGSU5FCisgICAg ICAgICAgICBERUNMSU5FIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgICAgICAgICAgICBSSVNF IEFTIHByaWNlID4gUFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIg Qlkgc3RhcnRfcm47CisKKy0tIFctYm90dG9tOiBkZWNsaW5lLCBib3VuY2UsIHJlLWRlY2xpbmUs IHJlY292ZXJ5CitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9W RVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVu ZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmlj ZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAg ICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAg IFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JE RVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAg ICBQQVRURVJOIChERUNMSU5FezMsfSBCT1VOQ0V7Myx9IERJUHszLH0gUkVDT1ZFUnszLH0pCisg ICAgICAgIERFRklORQorICAgICAgICAgICAgREVDTElORSBBUyBwcmljZSA8IFBSRVYocHJpY2Up LAorICAgICAgICAgICAgQk9VTkNFIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgICAgICAgICAg ICBESVAgQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgIFJFQ09WRVIgQVMgcHJp Y2UgPiBQUkVWKHByaWNlKQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFy dF9ybjsKKworLS0gVm9sdW1lIHN1cmdlIHN0cmVhazogNisgY29uc2VjdXRpdmUgZGF5cyBvZiBp bmNyZWFzaW5nIHZvbHVtZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVl KHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIg dyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHZvbHVtZSkgT1ZFUiB3IEFTIHN0 YXJ0X3ZvbCwKKyAgICAgICAgICAgbGFzdF92YWx1ZSh2b2x1bWUpIE9WRVIgdyBBUyBlbmRfdm9s LAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZST00gcnByX3N0b2Nr CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgcGFydF9pZAorICAgICAg ICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgICAgIFBBVFRFUk4gKElOSVQgU1VSR0V7NSx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAg ICAgIFNVUkdFIEFTIHZvbHVtZSA+IFBSRVYodm9sdW1lKQorICAgICkKKykgdCBXSEVSRSBkYXlz ID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKworLS0gVm9sYXRpbGl0eSBzcXVlZXplOiBjb25zZWN1 dGl2ZSBuYXJyb3dpbmcgb2YgZGFpbHkgcHJpY2UgcmFuZ2UKK1NFTEVDVCAqIEZST00gKAorICAg IFNFTEVDVCBmaXJzdF92YWx1ZShybikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBs YXN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZSho aWdoIC0gbG93KSBPVkVSIHcgQVMgc3RhcnRfcmFuZ2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUo aGlnaCAtIGxvdykgT1ZFUiB3IEFTIGVuZF9yYW5nZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZF UiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAg ICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChJTklUIE5BUlJP V3s1LH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAgTkFSUk9XIEFTIChoaWdoIC0gbG93 KSA8IFBSRVYoaGlnaCkgLSBQUkVWKGxvdykKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JE RVIgQlkgc3RhcnRfcm47CisKKy0tIEdhcCB1cDogb3BlbiBzaWduaWZpY2FudGx5IGhpZ2hlciB0 aGFuIHByZXZpb3VzIGNsb3NlICg1JSspCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmly c3RfdmFsdWUocm4pIE9WRVIgdyBBUyBnYXBfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcgQVMgcHJldl9jbG9zZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShvcGVuKSBP VkVSIHcgQVMgZ2FwX29wZW4sCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAg ICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZ IHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChQUkVWX0RBWSBHQVBfVVApCisgICAgICAg IERFRklORQorICAgICAgICAgICAgR0FQX1VQIEFTIG9wZW4gPiBQUkVWKHByaWNlKSAqIDEuMDUK KyAgICApCispIHQgV0hFUkUgY250ID4gMCBPUkRFUiBCWSBnYXBfcm47CisKKy0tIFByaWNlLXZv bHVtZSBkaXZlcmdlbmNlOiBwcmljZSByaXNpbmcgd2hpbGUgdm9sdW1lIGRlY2xpbmluZyAoYmVh cmlzaCBzaWduYWwpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4p IE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFT IGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9w cmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwK KyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jawor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAg T1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg ICAgICBQQVRURVJOIChJTklUIERJVkVSR0V7Myx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAg ICAgIERJVkVSR0UgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQgdm9sdW1lIDwgUFJFVih2b2x1 bWUpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOworCistLSBD b25zb2xpZGF0aW9uIHRoZW4gYnJlYWtvdXQ6IHNpZGV3YXlzIG1vdmVtZW50IGZvbGxvd2VkIGJ5 IHNoYXJwIHJpc2UKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShybikg T1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMg ZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIHN0YXJ0X3By aWNlLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgZW5kX3ByaWNlLAor ICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZST00gcnByX3N0b2NrCisg ICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgcGFydF9pZAorICAgICAgICBP UkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg ICAgIFBBVFRFUk4gKEZMQVR7NSx9IEJSRUFLT1VUKQorICAgICAgICBERUZJTkUKKyAgICAgICAg ICAgIEZMQVQgQVMgcHJpY2UgQkVUV0VFTiBQUkVWKHByaWNlKSAqIDAuOTggQU5EIFBSRVYocHJp Y2UpICogMS4wMiwKKyAgICAgICAgICAgIEJSRUFLT1VUIEFTIHByaWNlID4gUFJFVihwcmljZSkg KiAxLjA1CisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOworCist LSBEZWFkIGNhdCBib3VuY2U6IGRlY2xpbmUgZm9sbG93ZWQgYnkgd2VhayByZWNvdmVyeSAoPDEl IHBlciBkYXkpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9W RVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVu ZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmlj ZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAg ICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAg IFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JE RVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAg ICBQQVRURVJOIChERUNMSU5FezQsfSBCT1VOQ0V7Myx9KQorICAgICAgICBERUZJTkUKKyAgICAg ICAgICAgIERFQ0xJTkUgQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgIEJPVU5D RSBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA8IFBSRVYocHJpY2UpICogMS4wMQor ICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKworLS0gVXB0cmVu ZDogNysgY29uc2VjdXRpdmUgZGF5cyBvZiBoaWdoZXIgaGlnaHMgQU5EIGhpZ2hlciBsb3dzCitT RUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFy dF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAg ICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAg ICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291 bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFT ICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChV UFRSRU5EezcsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBVUFRSRU5EIEFTIGhpZ2gg PiBQUkVWKGhpZ2gpIEFORCBsb3cgPiBQUkVWKGxvdykKKyAgICApCispIHQgV0hFUkUgZGF5cyA+ IDAgT1JERVIgQlkgc3RhcnRfcm47CisKKy0tIFBhbmljIGFuZCBzbmFwLWJhY2s6IDMlKyBkYWls eSBkcm9wcyBmb2xsb3dlZCBieSAyJSsgcmVib3VuZAorU0VMRUNUICogRlJPTSAoCisgICAgU0VM RUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3Rf dmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcgQVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9W RVIgdyBBUyBlbmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisg ICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBC WSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoUEFOSUN7Mix9IFNOQVApCisgICAgICAg IERFRklORQorICAgICAgICAgICAgUEFOSUMgQVMgcHJpY2UgPCBQUkVWKHByaWNlKSAqIDAuOTcs CisgICAgICAgICAgICBTTkFQIEFTIHByaWNlID4gUFJFVihwcmljZSkgKiAxLjAyCisgICAgKQor KSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOworCistLSBWb2x1bWUgY2xpbWF4 IHJldmVyc2FsOiB1cHRyZW5kLCB2b2x1bWUgc3Bpa2UgKDEuNXgpLCB0aGVuIGRlY2xpbmUKK1NF TEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShybikgT1ZFUiB3IEFTIHN0YXJ0 X3JuLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgZW5kX3JuLAorICAgICAg ICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIHN0YXJ0X3ByaWNlLAorICAgICAgICAg ICBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgZW5kX3ByaWNlLAorICAgICAgICAgICBjb3Vu dCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMg KAorICAgICAgICBQQVJUSVRJT04gQlkgcGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAg ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFJB TExZezMsfSBDTElNQVggU0VMTE9GRnsyLH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAg UkFMTFkgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgIENMSU1BWCBBUyB2b2x1 bWUgPiBQUkVWKHZvbHVtZSkgKiAxLjUsCisgICAgICAgICAgICBTRUxMT0ZGIEFTIHByaWNlIDwg UFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRfcm47 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmZjZWZkNTlkZTRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0wLDAgKzEsNDQwMyBAQAorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgQmFz ZSBUZXN0cworLS0gVGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChJU08vSUVDIDE5 MDc1LTUpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tCistLSBQYXJzZXIgTGF5ZXI6CistLSAgIEtleXdvcmQgVXNhZ2Ug VGVzdHMKKy0tICAgREVGSU5FIENsYXVzZSBUZXN0cworLS0gICBGUkFNRSBPcHRpb25zIFRlc3Rz CistLSAgIFBBUlRJVElPTiBCWSArIEZSQU1FIFRlc3RzCistLSAgIFBBVFRFUk4gU3ludGF4IFRl c3RzCistLSAgIFF1YW50aWZpZXJzIFRlc3RzCistLSAgIE5hdmlnYXRpb24gRnVuY3Rpb25zIFRl c3RzCistLSAgIFNLSVAgVE8gLyBJTklUSUFMIFRlc3RzCistLSAgIFNlcmlhbGl6YXRpb24vRGVz ZXJpYWxpemF0aW9uIFRlc3RzCistLSAgIEdsdWVkIFF1YW50aWZpZXIgLyBBbHRlcm5hdGlvbiBU ZXN0cworLS0gICBFcnJvciBDYXNlcyBUZXN0cworLS0gICBXaW5kb3cgRGVkdXBsaWNhdGlvbiBU ZXN0cworLS0KKy0tIFBsYW5uZXIgTGF5ZXI6CistLSAgIFBhdHRlcm4gT3B0aW1pemF0aW9uIFRl c3RzCistLSAgIEFic29ycHRpb24gRmxhZyBEaXNwbGF5IFRlc3RzCistLSAgIEFic29ycHRpb24g QW5hbHlzaXMgVGVzdHMKKy0tICAgRWRnZSBDYXNlIFRlc3RzCistLSAgIE9wdGltaXphdGlvbiBG YWxsYmFjayBUZXN0cworLS0gICBQbGFubmVyIEludGVncmF0aW9uIFRlc3RzCistLSAgIFN1YnF1 ZXJ5IGFuZCBDVEUgVGVzdHMKKy0tICAgSk9JTiBUZXN0cworLS0gICBDb21wbGV4IEV4cHJlc3Np b24gVGVzdHMKKy0tICAgU2V0IE9wZXJhdGlvbnMgVGVzdHMKKy0tICAgU29ydGluZyBhbmQgR3Jv dXBpbmcgVGVzdHMKKy0tICAgU1FMIEZ1bmN0aW9uIElubGluaW5nIFRlc3RzCistLSAgIFN0cmVz cyBUZXN0cworLS0gICBFcnJvciBMaW1pdCBUZXN0cworLS0KKy0tIENvbnRyaWJ1dGVkIFRlc3Rz OgorLS0gICBCYXNpYyBQYXR0ZXJuIE1hdGNoaW5nCistLSAgIFBhdGhvbG9naWNhbCBQYXR0ZXJu cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBLZXl3b3JkIFVzYWdlIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gUlBSIGtleXdvcmRzIGFzIGNv bHVtbiBuYW1lcworLS0gS2V5d29yZHM6IGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwg c2VlaworCitDUkVBVEUgVEFCTEUgcnByX2tleXdvcmRzICgKKyAgICBpZCBJTlQsCisgICAgZGVm aW5lIElOVCwgICAgICAtLSBERUZJTkUga2V5d29yZAorICAgIGluaXRpYWwgSU5ULCAgICAgLS0g SU5JVElBTCBrZXl3b3JkCisgICAgcGFzdCBJTlQsICAgICAgICAtLSBQQVNUIGtleXdvcmQKKyAg ICBwYXR0ZXJuIElOVCwgICAgIC0tIFBBVFRFUk4ga2V5d29yZAorICAgIHNlZWsgSU5ULCAgICAg ICAgLS0gU0VFSyBrZXl3b3JkCistLSBFUlJPUjogU0VFSyBpcyBub3Qgc3VwcG9ydGVkCisgICAg c2tpcCBJTlQgICAgICAgICAtLSBTS0lQIGtleXdvcmQgKHByZS1leGlzdGluZykKKyk7CisKK0lO U0VSVCBJTlRPIHJwcl9rZXl3b3JkcyBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjAp OworCitTRUxFQ1QgaWQsIGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwgc2Vlaywgc2tp cAorRlJPTSBycHJfa2V5d29yZHMKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9rZXl3 b3JkczsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBERUZJTkUgQ2xhdXNlIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU2lt cGxlIGNvbHVtbiByZWZlcmVuY2VzCitDUkVBVEUgVEFCTEUgc3RvY2tfcHJpY2UgKAorICAgIGR0 IERBVEUsCisgICAgc3ltYm9sIFRFWFQsCisgICAgcHJpY2UgTlVNRVJJQywKKyAgICB2b2x1bWUg SU5UCispOworCitJTlNFUlQgSU5UTyBzdG9ja19wcmljZSBWQUxVRVMKKyAgICAoJzIwMjQtMDEt MDEnLCAnQUFQTCcsIDE1MCwgMTAwMCksCisgICAgKCcyMDI0LTAxLTAyJywgJ0FBUEwnLCAxNTUs IDEyMDApLAorICAgICgnMjAyNC0wMS0wMycsICdBQVBMJywgMTUyLCA5MDApLAorICAgICgnMjAy NC0wMS0wNCcsICdBQVBMJywgMTYwLCAxNTAwKSwKKyAgICAoJzIwMjQtMDEtMDUnLCAnQUFQTCcs IDE1OCwgMTEwMCk7CisKKy0tIFNpbXBsZSBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgZHQsIHBy aWNlLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBB UyAoCisgICAgUEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo VVArKQorICAgIERFRklORSBVUCBBUyBwcmljZSA+IDE1MAorKQorT1JERVIgQlkgZHQ7CisKKy0t IE11bHRpcGxlIGNvbHVtbiByZWZlcmVuY2VzCitTRUxFQ1QgZHQsIHByaWNlLCB2b2x1bWUsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChHT09EKykK KyAgICBERUZJTkUgR09PRCBBUyBwcmljZSA+IDE1MCBBTkQgdm9sdW1lID4gMTAwMAorKQorT1JE RVIgQlkgZHQ7CisKKy0tIEV4cHJlc3Npb24gaW4gREVGSU5FCitTRUxFQ1QgZHQsIHByaWNlLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoSElHSCsp CisgICAgREVGSU5FIEhJR0ggQVMgcHJpY2UgKiAxLjEgPiAxNjUKKykKK09SREVSIEJZIGR0Owor CistLSBBcml0aG1ldGljIGFuZCBmdW5jdGlvbnMKK1NFTEVDVCBkdCwgcHJpY2UsIHZvbHVtZSwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKENBTEMr KQorICAgIERFRklORSBDQUxDIEFTIChwcmljZSArIHZvbHVtZSAvIDEwMCkgPiAxNjAKKykKK09S REVSIEJZIGR0OworCitEUk9QIFRBQkxFIHN0b2NrX3ByaWNlOworCistLSBBdXRvLWdlbmVyYXRl ZCBERUZJTkUKK0NSRUFURSBUQUJMRSBycHJfYXV0byAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VS VCBJTlRPIHJwcl9hdXRvIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgMTUp OworCistLSBPbmUgdmFyaWFibGUgdW5kZWZpbmVkIChCIGF1dG8tZ2VuZXJhdGVkIGFzICJCIElT IFRSVUUiKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X2F1dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIqKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDE1CispCitPUkRFUiBCWSBpZDsKKworLS0gTXVsdGlwbGUg dW5kZWZpbmVkIHZhcmlhYmxlcworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX2F1dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAtLSBCIGFuZCBDIGF1dG8t Z2VuZXJhdGVkIGFzICJCIElTIFRSVUUiLCAiQyBJUyBUUlVFIgorKQorT1JERVIgQlkgaWQ7CisK Ky0tIEFsbCB2YXJpYWJsZXMgZGVmaW5lZCBleHBsaWNpdGx5CitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoWCBZIFopCisgICAgREVGSU5FCisgICAgICAgIFggQVMgdmFs ID4gMTAsCisgICAgICAgIFkgQVMgdmFsID4gMjAsCisgICAgICAgIFogQVMgdmFsIDwgMjAKKykK K09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9hdXRvOworCistLSBEdXBsaWNhdGUgdmFy aWFibGUgbmFtZXMKK0NSRUFURSBUQUJMRSBycHJfZHVwIChpZCBJTlQpOworSU5TRVJUIElOVE8g cnByX2R1cCBWQUxVRVMgKDEpLCAoMik7CisKKy0tIER1cGxpY2F0ZSBERUZJTkUgdmFyaWFibGUg bmFtZSBpcyBub3QgYWxsb3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZHVw CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyBpZCA+IDAsIEEgQVMgaWQgPCAxMAorKTsKKworRFJPUCBUQUJMRSBycHJfZHVwOwor CistLSBCb29sZWFuIGNvZXJjaW9uCitDUkVBVEUgVEFCTEUgcnByX2Jvb2wgKGlkIElOVCwgZmxh ZyBCT09MRUFOKTsKK0lOU0VSVCBJTlRPIHJwcl9ib29sIFZBTFVFUyAoMSwgdHJ1ZSksICgyLCBm YWxzZSk7CisKKy0tIERFRklORSBjbGF1c2UgbXVzdCBiZSBhIGJvb2xlYW4gZXhwcmVzc2lvbgor U0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgaWQKKyk7CisKKy0t IEJvb2xlYW4gY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIGlkLCBmbGFnLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9ib29sCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChUKykKKyAgICBERUZJTkUgVCBBUyBmbGFnCispCitPUkRFUiBCWSBpZDsKKwor LS0gTlVMTDo6Ym9vbGVhbgorU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9ib29sCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChOKykK KyAgICBERUZJTkUgTiBBUyBOVUxMOjpib29sZWFuCispCitPUkRFUiBCWSBpZDsKKworLS0gSW1w bGljaXQgY2FzdCB0byBib29sZWFuIHZpYSBjdXN0b20gdHlwZQorQ1JFQVRFIFRZUEUgdHJ1dGh5 aW50IEFTICh2IGludCk7CitDUkVBVEUgRlVOQ1RJT04gdHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5 aW50KSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKKyAgU0VMRUNUICgkMSkudiA8PiAwOworJCQgTEFO R1VBR0UgU1FMIElNTVVUQUJMRSBTVFJJQ1Q7CitDUkVBVEUgQ0FTVCAodHJ1dGh5aW50IEFTIGJv b2xlYW4pCisgIFdJVEggRlVOQ1RJT04gdHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5aW50KQorICBB UyBBU1NJR05NRU5UOworCitDUkVBVEUgVEFCTEUgcnByX2NvZXJjZSAoaWQgaW50LCB2YWwgdHJ1 dGh5aW50KTsKK0lOU0VSVCBJTlRPIHJwcl9jb2VyY2UgVkFMVUVTICgxLCBST1coMSkpLCAoMiwg Uk9XKDApKSwgKDMsIFJPVyg1KSksICg0LCBST1coMCkpOworCitTRUxFQ1QgaWQsIHZhbCwgY250 CitGUk9NIChTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgQVMg Y250CisgICAgICBGUk9NIHJwcl9jb2VyY2UKKyAgICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAg ICBPUkRFUiBCWSBpZAorICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICAgIERFRklO RSBBIEFTIHZhbAorICAgICAgKQorKSBzIE9SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9j b2VyY2U7CitEUk9QIENBU1QgKHRydXRoeWludCBBUyBib29sZWFuKTsKK0RST1AgRlVOQ1RJT04g dHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5aW50KTsKK0RST1AgVFlQRSB0cnV0aHlpbnQ7CisKK0RS T1AgVEFCTEUgcnByX2Jvb2w7CisKKy0tIENvbXBsZXggZXhwcmVzc2lvbnMKK0NSRUFURSBUQUJM RSBycHJfY29tcGxleCAoaWQgSU5ULCB2YWwxIElOVCwgdmFsMiBJTlQpOworSU5TRVJUIElOVE8g cnByX2NvbXBsZXggVkFMVUVTICgxLCAxMCwgMjApLCAoMiwgMTUsIDI1KSwgKDMsIDIwLCAzMCk7 CisKKy0tIENBU0UgZXhwcmVzc2lvbgorU0VMRUNUIGlkLCB2YWwxLCB2YWwyLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyBDQVNFIFdIRU4gdmFsMSA+IDEw IFRIRU4gdmFsMiA+IDIwIEVMU0UgZmFsc2UgRU5ECispCitPUkRFUiBCWSBpZDsKKworRFJPUCBU QUJMRSBycHJfY29tcGxleDsKKworLS0gUGF0dGVybiB2YXJpYWJsZSBub3QgaW4gUEFUVEVSTiAo c2hvdWxkIGJlIGlnbm9yZWQpCitDUkVBVEUgVEFCTEUgcnByX3VudXNlZCAoaWQgSU5UKTsKK0lO U0VSVCBJTlRPIHJwcl91bnVzZWQgVkFMVUVTICgxKSwgKDIpOworCistLSBFeHRyYSBERUZJTkUg dmFyaWFibGUKK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdW51 c2VkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBpZCA+IDAsIEIgQVMgaWQgPiA1ICAtLSBCIG5vdCBpbiBwYXR0ZXJuCispCitP UkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfdW51c2VkOworCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEZSQU1F IE9wdGlvbnMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCitDUkVBVEUgVEFCTEUgcnByX2ZyYW1lIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2ZyYW1lIFZBTFVFUworICAgICgxLCAxMCksICgy LCAxMCksICgzLCAxMCksICAtLSBTYW1lIHZhbDogMTAKKyAgICAoNCwgMjApLCAoNSwgMjApLCAg ICAgICAgICAgLS0gU2FtZSB2YWw6IDIwCisgICAgKDYsIDMwKTsKKworLS0gVmFsaWQgZnJhbWUg b3B0aW9ucworCistLSBST1dTOiBjb3VudHMgcGh5c2ljYWwgcm93cyAoMSBGT0xMT1dJTkcgPSBu ZXh0IDEgcGh5c2ljYWwgcm93KQorLS0gRXhwZWN0ZWQgcmVzdWx0OiBFYWNoIHJvdyBjYW4gc2Vl IDEgcGh5c2ljYWwgcm93IGFoZWFkCistLSBpZD0xLDIsMyAodmFsPTEwKTogY2FuIHNlZSBuZXh0 IHJvdyAtPiBjbnQ9MgorLS0gaWQ9NCw1ICh2YWw9MjApOiBjYW4gc2VlIG5leHQgcm93IC0+IGNu dD0yCistLSBpZD02ICh2YWw9MzApOiBubyBuZXh0IHJvdyAtPiBjbnQ9MQorLS0gUmVzdWx0OiBb MiwyLDIsMiwyLDFdCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFsID49IDAs IEIgQVMgdmFsID49IDAKKykKK09SREVSIEJZIGlkOworCistLSBFUlJPUjogZnJhbWUgbXVzdCBz dGFydCBhdCBjdXJyZW50IHJvdyB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CisKKy0tIEVYQ0xVREUgb3B0aW9ucworCistLSBFWENMVURFIG5vdCBwZXJtaXR0 ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBFWENMVURFIENVUlJFTlQgUk9XCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gRVhDTFVERSBHUk9VUCBub3QgcGVy bWl0dGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgRVhDTFVERSBHUk9VUAorICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVYQ0xVREUgVElFUyBub3QgcGVybWl0 dGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgRVhDTFVERSBUSUVTCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gcmFuZ2UgZnJhbWUgaXMgbm90IGFsbG93ZWQg d2l0aCBSUFIKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVD RURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworCistLSBHUk9VUFMgZnJhbWUgaXMgbm90IGFsbG93ZWQgd2l0 aCBSUFIKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VE SU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKworLS0gRVJST1I6IGZyYW1lIG11c3Qgc3RhcnQgYXQgY3VycmVu dCByb3cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIDEgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gRVJST1I6 IGZyYW1lIG11c3Qgc3RhcnQgYXQgY3VycmVudCByb3cgd2l0aCBSUFIKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gMSBGT0xMT1dJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBFUlJPUjog ZW5kIGJlZm9yZSBzdGFydDogQ1VSUkVOVCBST1cgQU5EIDEgUFJFQ0VESU5HCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIFBSRUNFRElORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiBlbmQg YmVmb3JlIHN0YXJ0OiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIFBSRUNFRElORworU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIFBSRUNF RElORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0t IFNpbmdsZSByb3cgZnJhbWU6IENVUlJFTlQgUk9XIEFORCBDVVJSRU5UIFJPVyBpcyByZWplY3Rl ZCAodGhlIHN0YW5kYXJkCistLSBhbGxvd3Mgb25seSBVTkJPVU5ERUQgRk9MTE9XSU5HIG9yIGEg cG9zaXRpdmUgb2Zmc2V0IEZPTExPV0lORykuCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gWmVybyBvZmZzZXQ6IENVUlJFTlQgUk9X IEFORCAwIEZPTExPV0lORyBkZW5vdGVzIHRoZSBzYW1lIG9uZS1yb3cgZnJhbWUKKy0tIGFuZCBp cyBsaWtld2lzZSByZWplY3RlZCAoY2F1Z2h0IGF0IGV4ZWN1dGlvbiB0aW1lKS4KK1NFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAw IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBBIG5v bi1jb25zdGFudCBmcmFtZSBlbmQgb2Zmc2V0IGlzIGFsbG93ZWQ7IGEgemVybyB2YWx1ZSBpcyBz dGlsbCByZWplY3RlZCwKKy0tIHRoaXMgdGltZSBhdCBleGVjdXRpb24gdGltZSAoYSBsaXRlcmFs IGNhbm5vdCBleGVyY2lzZSB0aGF0IHBhdGgpLgorUFJFUEFSRSBycHJfZW5kX29mZnNldChpbnQ4 KSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2Zy YW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EICQxIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworRVhFQ1VURSBycHJfZW5kX29mZnNldCgyKTsKK0VYRUNVVEUgcnByX2VuZF9vZmZzZXQo MCk7CitERUFMTE9DQVRFIHJwcl9lbmRfb2Zmc2V0OworCistLSBMYXJnZSBvZmZzZXQ6IENVUlJF TlQgUk9XIEFORCAxMDAwIEZPTExPV0lORworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwMDAgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBNYXhpbXVtIG9mZnNldDogQ1VSUkVO VCBST1cgQU5EIDIxNDc0ODM2NDYgRk9MTE9XSU5HIChJTlRfTUFYIC0gMSkKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyMTQ3 NDgzNjQ2IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKwor LS0gaW50NjQgZnJhbWUtZW5kIG92ZXJmbG93OiBhIGh1Z2UgRk9MTE9XSU5HIG9mZnNldCBtdXN0 IGNsYW1wIHRvIHRoZQorLS0gcGFydGl0aW9uIGVuZCAobWF0Y2hTdGFydFJvdyArIG9mZnNldCAr IDEgb3ZlcmZsb3dzIGludDY0OyB0aGUgY2xhbXAgbWFrZXMKKy0tIGl0IGJlaGF2ZSBsaWtlIFVO Qk9VTkRFRCBGT0xMT1dJTkcpLiAgR3VhcmRzIGFnYWluc3Qgc2lnbmVkLWludGVnZXIgb3ZlcmZs b3cKKy0tIGluIHRoZSAiZnJhbWVPZmZzZXQgKyAxIiBzdWJleHByZXNzaW9uICh1bmRlZmluZWQg YmVoYXZpb3IpLiAgVGhlIGNudCB2YWx1ZXMKKy0tIG11c3QgbWF0Y2ggdGhlIFVOQk9VTkRFRCBG T0xMT1dJTkcgcmVzdWx0IGZvciB0aGUgc2FtZSBkYXRhLgorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDkyMjMzNzIwMzY4NTQ3 NzU4MDYgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCist LSByYW5nZSBmcmFtZSBpcyBub3QgYWxsb3dlZCB3aXRoIFJQUgorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgdmFsCisgICAgUkFOR0UgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQj8p CisgICAgREVGSU5FIEEgQVMgdmFsID49IDAsIEIgQVMgdmFsID49IDAKKykKK09SREVSIEJZIGlk OworCistLSBHUk9VUFMgZnJhbWUgd2l0aCBSUFIgKG5vdCBwZXJtaXR0ZWQpCitTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBHUk9VUFMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSBCPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQorT1JE RVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2ZyYW1lOworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBBUlRJVElP TiBCWSArIEZSQU1FIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gVGVzdCBQQVJUSVRJT04gQlkgd2l0aCBS UFIgdG8gZW5zdXJlIHByb3BlciBwYXJ0aXRpb25pbmcgYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBy cHJfcGFydGl0aW9uIChpZCBJTlQsIGdycCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnBy X3BhcnRpdGlvbiBWQUxVRVMKKyAgICAoMSwgMSwgMTApLCAoMiwgMSwgMjApLCAoMywgMSwgMzAp LAorICAgICg0LCAyLCAxNSksICg1LCAyLCAyNSksICg2LCAyLCAzNSk7CisKKy0tIFBBUlRJVElP TiBCWSB3aXRoIFJPV1MgZnJhbWUKK1NFTEVDVCBpZCwgZ3JwLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX3BhcnRpdGlvbgorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBncnAKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFs ID4gMTUKKykKK09SREVSIEJZIGlkOworLS0gRXhwZWN0ZWQ6IFBhdHRlcm4gbWF0Y2hpbmcgc2hv dWxkIHJlc2V0IGZvciBlYWNoIHBhcnRpdGlvbgorCistLSBQQVJUSVRJT04gQlkgd2l0aCBSQU5H RSBmcmFtZQorU0VMRUNUIGlkLCBncnAsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfcGFydGl0aW9uCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGdycAorICAg IE9SREVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/ KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAxMCwgQiBBUyB2YWwgPj0gMjAKKykKK09SREVSIEJZ IGlkOworCitEUk9QIFRBQkxFIHJwcl9wYXJ0aXRpb247CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUEFUVEVSTiBT eW50YXggVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorCitDUkVBVEUgVEFCTEUgcnByX3BhdHRlcm4gKGlkIElOVCwg dmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGF0dGVybiBWQUxVRVMKKyAgICAoMSwgNSksICgy LCAxMCksICgzLCAxNSksICg0LCAyMCksICg1LCAyNSksCisgICAgKDYsIDMwKSwgKDcsIDM1KSwg KDgsIDQwKSwgKDksIDQ1KSwgKDEwLCA1MCk7CisKKy0tIEFsdGVybmF0aW9uICh8KQorCistLSBN dWx0aXBsZSBhbHRlcm5hdGl2ZXMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKyB8IEIrIHwgQyspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMzUsIEIgQVMgdmFs IEJFVFdFRU4gMTUgQU5EIDM1LCBDIEFTIHZhbCA8IDE1CispCitPUkRFUiBCWSBpZDsKKworLS0g R3JvdXBpbmcKKworLS0gTmVzdGVkIGdyb3VwaW5nIHdpdGggcXVhbnRpZmllcgorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSBDKSspCisgICAgREVGSU5F IEEgQVMgdmFsID4gMTAsIEIgQVMgdmFsID4gMjAsIEMgQVMgdmFsID4gMzAKKykKK09SREVSIEJZ IGlkOworCistLSBTZXF1ZW5jZQorCistLSBNdWx0aS1lbGVtZW50IHNlcXVlbmNlCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklO RQorICAgICAgICBBIEFTIHZhbCA8IDE1LAorICAgICAgICBCIEFTIHZhbCBCRVRXRUVOIDE1IEFO RCAyNSwKKyAgICAgICAgQyBBUyB2YWwgQkVUV0VFTiAyNSBBTkQgMzUsCisgICAgICAgIEQgQVMg dmFsIEJFVFdFRU4gMzUgQU5EIDQ1LAorICAgICAgICBFIEFTIHZhbCA+PSA0NQorKQorT1JERVIg QlkgaWQ7CisKKy0tIENvbXBsZXggY29tYmluYXRpb25zCisKKy0tIEFsdGVybmF0aW9uIHdpdGgg Z3JvdXBpbmcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJw cl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBC KSB8IChDIEQpKQorICAgIERFRklORSBBIEFTIHZhbCA8IDIwLCBCIEFTIHZhbCA+PSAyMCwgQyBB UyB2YWwgPCAzMCwgRCBBUyB2YWwgPj0gMzAKKykKK09SREVSIEJZIGlkOworCistLSBBbHRlcm5h dGlvbiArIHNlcXVlbmNlICsgZ3JvdXBpbmcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChTVEFSVCAoVVB7Mix9IERPV04/IHwgRkxBVCspIEZJTklTSCkKKyAgICBE RUZJTkUKKyAgICAgICAgU1RBUlQgQVMgdmFsID49IDAsCisgICAgICAgIFVQIEFTIHZhbCA+IDIw LAorICAgICAgICBET1dOIEFTIHZhbCA8PSAzMCwKKyAgICAgICAgRkxBVCBBUyB2YWwgQkVUV0VF TiAyNSBBTkQgMzUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiA0MAorKQorT1JERVIgQlkgaWQ7 CisKKy0tIE5lc3RlZCBhbHRlcm5hdGlvbiBpbiBncm91cHMKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMg dmFsIDwgMTUsIEIgQVMgdmFsIEJFVFdFRU4gMTUgQU5EIDI1LCBDIEFTIHZhbCBCRVRXRUVOIDI1 IEFORCAzNSwgRCBBUyB2YWwgPiAzNQorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnBy X3BhdHRlcm47CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gUXVhbnRpZmllcnMgVGVzdHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDUkVB VEUgVEFCTEUgcnByX3F1YW50IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3F1 YW50IFZBTFVFUworICAgICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCksICg1LCA1 MCksCisgICAgKDYsIDYwKSwgKDcsIDcwKSwgKDgsIDgwKSwgKDksIDkwKSwgKDEwLCAxMDApOwor CistLSBCYXNpYyBncmVlZHkgcXVhbnRpZmllcnMKKworLS0gKiAoemVybyBvciBtb3JlKQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKikKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gKyAob25lIG9yIG1vcmUpCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gPyAoemVybyBvciBvbmUpCitTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEE/KQorICAgIERFRklORSBBIEFTIHZhbCA9 IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gRWRnZSBjYXNlIHF1YW50aWZpZXJzCisKKy0tIHsw fSBpcyBub3QgYWxsb3dlZCAobWluIG11c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXswfSBCKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAs IEIgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIHswLDB9IGlzIG5vdCBhbGxvd2Vk IChtYXggbXVzdCBiZSA+PSAxKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBezAsMH0gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMDAwLCBCIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGlkOworCistLSB7MCwxfSAoZXF1aXZhbGVudCB0byA/KQorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezAsMX0pCisgICAgREVGSU5FIEEgQVMg dmFsID0gNTAKKykKK09SREVSIEJZIGlkOworCistLSBFeGFjdCBxdWFudGlmaWVycyB7bn0KKwor LS0gezN9IChyZXByZXNlbnRhdGl2ZSBleGFjdCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezN9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGlkOworCistLSBSYW5nZSBxdWFudGlmaWVycyB7bix9CisKKy0tIHsyLH0g KHJlcHJlc2VudGF0aXZlIG4gb3IgbW9yZSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQXsyLH0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gNDAKKykKK09SREVSIEJZ IGlkOworCistLSBVcHBlciBib3VuZCBxdWFudGlmaWVycyB7LG19CisKKy0tIHssM30gKHJlcHJl c2VudGF0aXZlIHVwIHRvIG0pCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7LDN9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCist LSBSYW5nZSBxdWFudGlmaWVycyB7bixtfQorCistLSB7Myw3fSAocmVwcmVzZW50YXRpdmUgcmFu Z2UpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVh bnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Myw3fSkKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJf cXVhbnQ7CisKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVycworQ1JFQVRFIFRBQkxFIHJwcl9yZWx1 Y3RhbnQgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcmVsdWN0YW50IFZBTFVF UyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworCistLSAqPyAoemVybyBvciBtb3JlLCByZWx1 Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispOworCistLSArPyAob25lIG9yIG1vcmUsIHJlbHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFu dGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZS T00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSs/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tID8/ICh6ZXJvIG9yIG9u ZSwgcmVsdWN0YW50KQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBt YXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBPz8pCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKTsKKworLS0ge24sfT8gKG4gb3IgbW9yZSwgcmVsdWN0YW50KQorLS0gUmVsdWN0 YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBezIsfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0ge24s bX0/IChuIHRvIG0sIHJlbHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIg c2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxLDN9PykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSB7bn0/IChleGFjdGx5IG4sIHJlbHVjdGFu dCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAor KTsKKworLS0geyxtfT8gKHVwIHRvIG0sIHJlbHVjdGFudCkgLSBDT01QTEVURUxZIFVOVEVTVEVE IFJVTEUhCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDN9PykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworCistLSB7Mn0rIChzaG91bGQgYmUgezJ9PyBub3QgezJ9KykKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXsyfSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKwor LS0gezIsfSogKHNob3VsZCBiZSB7Mix9PyBub3QgezIsfSopCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEF7Mix9KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSB7LDN9 KiAoc2hvdWxkIGJlIHssM30/IG5vdCB7LDN9KikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZS T00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQXssM30qKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIHsxLDN9KyAoc2hv dWxkIGJlIHsxLDN9PyBub3QgezEsM30rKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezEsM30rKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEJvdW5kYXJ5IGVycm9y cyBpbiByZWx1Y3RhbnQgcXVhbnRpZmllcnMKKworLS0gbmVnYXRpdmUgYm91bmQgaXMgbm90IGFs bG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXstMX0/KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIGV4Y2VlZHMgbGlt aXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0N30/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIG5lZ2F0aXZlIGxvd2VyIGJvdW5kIGlzIG5vdCBh bGxvd2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsfT8pCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKworLS0gRVJST1I6IHF1YW50aWZpZXIgbG93ZXIgYm91bmQgZXhj ZWVkcyBsaW1pdHMKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ3LH0/ KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIHplcm8gdXBwZXIgYm91bmQgaXMg bm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssMH0/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiB7LDIxNDc0ODM2NDd9PyAodXBwZXIg Ym91bmQgaW4gcmFuZ2UgZXhjZWVkcyBsaW1pdHMpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7LDIxNDc0ODM2NDd9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBF UlJPUjogey0xLDN9PyAobmVnYXRpdmUgbG93ZXIgYm91bmQgaW4gcmFuZ2UgaXMgbm90IGFsbG93 ZWQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsM30/KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiB7MSwyMTQ3NDgzNjQ3fT8gKHVwcGVyIGJvdW5k IGluIHJhbmdlIGV4Y2VlZHMgbGltaXRzKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezEsMjE0NzQ4MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9S OiB7NSwzfT8gKG1pbiA+IG1heCBpcyBub3QgYWxsb3dlZCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXs1LDN9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBUb2tl bi1zZXBhcmF0ZWQgcmVsdWN0YW50IHF1YW50aWZpZXJzIChzcGFjZSBiZXR3ZWVuIHF1YW50aWZp ZXIgYW5kID8pCistLSBUaGVzZSBtYXkgYmUgdG9rZW5pemVkIGRpZmZlcmVudGx5IGJ5IHRoZSBs ZXhlcgorCistLSAqID8gKHRva2VuIHNlcGFyYXRlZCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVy OiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSog PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSArID8gKHRva2VuIHNlcGFyYXRl ZCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworCistLSB7Mix9ID8gKHRva2VuIHNlcGFyYXRlZCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVy OiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsy LH0gPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSAqICsgKGludmFsaWQgY29t YmluYXRpb24pCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqICspCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKworLS0gKyAqIChpbnZhbGlkIGNvbWJpbmF0aW9uKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyAqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CisKKy0tID8gPyAocGFyc2VkIGFzID8/IHJlbHVjdGFudCBxdWFudGlmaWVyKQorLS0gUmVsdWN0 YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBPyA/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKK0RST1AgVEFC TEUgcnByX3JlbHVjdGFudDsKKworLS0gUXVhbnRpZmllciBib3VuZGFyeSBjb25kaXRpb25zCisK K0NSRUFURSBUQUJMRSBycHJfYm91bmRzIChpZCBJTlQpOworSU5TRVJUIElOVE8gcnByX2JvdW5k cyBWQUxVRVMgKDEpLCAoMik7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIGxvd2VyIGJvdW5kIG11 c3Qgbm90IGV4Y2VlZCB1cHBlciBib3VuZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezUs M30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworCistLSBMYXJnZSBib3VuZHMKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXsxMDAwLDIwMDB9KQorICAgIERFRklORSBBIEFTIGlkID4g MAorKTsKKworLS0gVmVyeSBsYXJnZSBib3VuZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezEwMDAwMH0pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworCistLSBJTlRfTUFYIC0gMSA9 IDIxNDc0ODM2NDYgKGF0IGxpbWl0KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJf Ym91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0 ODM2NDZ9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKworLS0gRVJST1I6IHF1YW50aWZp ZXIgYm91bmQgZXhjZWVkcyBsaW1pdHMKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyMTQ3 NDgzNjQ3fSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CisKKy0tIHtuLH0gYm91bmRhcnkg ZXJyb3JzCisKKy0tIEVSUk9SOiBuZWdhdGl2ZSBsb3dlciBib3VuZCBpbiB7bix9IGlzIG5vdCBh bGxvd2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTEsfSkKKyAgICBERUZJTkUgQSBB UyBpZCA+IDAKKyk7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIGxvd2VyIGJvdW5kIGV4Y2VlZHMg bGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nyx9KQorICAgIERF RklORSBBIEFTIGlkID4gMAorKTsKKworLS0geyxtfSBib3VuZGFyeSBlcnJvcnMKKworLS0gWmVy byB1cHBlciBib3VuZCBpbiB7LG19CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9i b3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDB9KQor ICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKworLS0gRVJST1I6IHF1YW50aWZpZXIgdXBwZXIg Ym91bmQgZXhjZWVkcyBsaW1pdHMKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Jv dW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssMjE0NzQ4 MzY0N30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworCitEUk9QIFRBQkxFIHJwcl9ib3Vu ZHM7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYgLyBORVhU IC8gRklSU1QgLyBMQVNUKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NSRUFURSBUQUJMRSBycHJfbmF2IChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX25hdiBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwg MjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgMzApOworCistLSBQUkVWIGZ1bmN0aW9uIC0gcmVm ZXJlbmNlIHByZXZpb3VzIHJvdyBpbiBwYXR0ZXJuCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisg ICAgICAgIEIgQVMgdmFsID4gUFJFVih2YWwpCispCitPUkRFUiBCWSBpZDsKKworLS0gTkVYVCBm dW5jdGlvbiAtIHJlZmVyZW5jZSBuZXh0IHJvdyBpbiBwYXR0ZXJuCitTRUxFQ1QgaWQsIHZhbCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZh bCA8IE5FWFQodmFsKSwKKyAgICAgICAgQiBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKwor LS0gQ29tYmluZWQgUFJFViBhbmQgTkVYVAorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4gMCwKKyAgICAg ICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIHZhbCA8IE5FWFQodmFsKSwKKyAgICAgICAgQyBB UyB2YWwgPiBQUkVWKHZhbCkKKykKK09SREVSIEJZIGlkOworCistLSBQUkVWIGZ1bmN0aW9uIGNh bm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxFQ1QgUFJFVihpZCksIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7 CisKKy0tIE5FWFQgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBpbiBERUZJTkUK K1NFTEVDVCBORVhUKGlkKSwgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgdmFsID4gUFJF Vih2YWwpCispCitPUkRFUiBCWSBpZDsKKworLS0gRklSU1QgZnVuY3Rpb24gLSByZWZlcmVuY2Ug bWF0Y2hfc3RhcnQgcm93CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB IEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgdmFs ID4gRklSU1QodmFsKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIExBU1QgZnVuY3Rpb24gd2l0aG91 dCBvZmZzZXQgLSBlcXVpdmFsZW50IHRvIGN1cnJlbnQgcm93J3MgdmFsdWUKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgdmFsID4gMCwKKyAgICAgICAgQiBBUyBMQVNUKHZhbCkgPiBQUkVWKHZhbCkKKykKK09SREVS IEJZIGlkOworCistLSBGSVJTVCBhbmQgTEFTVCBjb21iaW5lZAorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwg PiAwLAorICAgICAgICBCIEFTIHZhbCA+IEZJUlNUKHZhbCkgQU5EIExBU1QodmFsKSA+IFBSRVYo dmFsKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIEZJUlNUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2Vk IG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxFQ1QgRklSU1QoaWQpLCBpZCwgdmFsIEZST00gcnBy X25hdjsKKworLS0gTEFTVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERF RklORQorU0VMRUNUIExBU1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsKKworRFJPUCBUQUJM RSBycHJfbmF2OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFNLSVAgVE8gLyBJTklUSUFMIFRlc3RzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworQ1JFQVRFIFRBQkxFIHJwcl9za2lwIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8g cnByX3NraXAgVkFMVUVTCisgICAgKDEsIDEpLCAoMiwgMiksICgzLCAzKSwgKDQsIDQpLCAoNSwg NSksCisgICAgKDYsIDYpLCAoNywgNyksICg4LCA4KTsKKworLS0gU0tJUCBUTyBORVhUIFJPVwor CistLSBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMiwgQyBBUyB2YWwgPiA0CispCitPUkRFUiBCWSBp ZDsKKworLS0gU0tJUCBQQVNUIExBU1QgUk9XCisKKy0tIFNLSVAgUEFTVCBMQVNUIFJPVworU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NraXAKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFs ID4gMiwgQyBBUyB2YWwgPiA0CispCitPUkRFUiBCWSBpZDsKKworLS0gRGVmYXVsdCBiZWhhdmlv ciAoc2hvdWxkIGJlIFNLSVAgUEFTVCBMQVNUIFJPVykKKworLS0gTm8gU0tJUCBUTyBjbGF1c2Ug KGRlZmF1bHQpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMQorKQorT1JERVIgQlkgaWQ7CisK Ky0tIENvbXBhcmUgZGVmYXVsdCB3aXRoIGV4cGxpY2l0IFBBU1QgTEFTVCBST1cKKy0tIFJlc3Vs dHMgc2hvdWxkIGJlIGlkZW50aWNhbAorV0lUSCBkZWZhdWx0X3NraXAgQVMgKAorICAgIFNFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfc2tpcAorICAg IFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QiBDKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFs ID4gNAorICAgICkKKyksCitleHBsaWNpdF9za2lwIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3NraXAKKyAgICBXSU5ET1cgdyBB UyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgICAgIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsID4gMiwgQyBBUyB2YWwgPiA0CisgICAgKQorKQorU0VMRUNUICdkZWZh dWx0JyBhcyB0eXBlLCAqIEZST00gZGVmYXVsdF9za2lwCitVTklPTiBBTEwKK1NFTEVDVCAnZXhw bGljaXQnIGFzIHR5cGUsICogRlJPTSBleHBsaWNpdF9za2lwCitPUkRFUiBCWSB0eXBlLCBpZDsK KworRFJPUCBUQUJMRSBycHJfc2tpcDsKKworQ1JFQVRFIFRBQkxFIHJwcl9pbml0IChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2luaXQgVkFMVUVTICgxLCAxMCksICgyLCAyMCks ICgzLCAzMCksICg0LCA0MCk7CisKKy0tIEV4cGxpY2l0IElOSVRJQUwKK1NFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9pbml0CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEltcGxpY2l0IElOSVRJQUwgKGRlZmF1 bHQpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfaW5p dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2luaXQ7 CisKKy0tIFNFRUsKKworQ1JFQVRFIFRBQkxFIHJwcl9zZWVrIChpZCBJTlQsIHZhbCBJTlQpOwor SU5TRVJUIElOVE8gcnByX3NlZWsgVkFMVUVTICgxLCAxMCk7CisKKy0tIFNFRUsga2V5d29yZCwg U0VFSyBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX3NlZWsKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFNFRUsKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCitEUk9QIFRBQkxFIHJwcl9z ZWVrOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFNlcmlhbGl6YXRpb24vRGVzZXJpYWxpemF0aW9uIFRlc3RzCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFJQUi1kZWZpbmluZyB2aWV3cyBhbmQgdGFibGVzIGhlcmUgYXJlIGludGVudGlv bmFsbHkgbGVmdCBpbiBwbGFjZSAobm90CistLSBkcm9wcGVkKSBzbyB0aGF0IHBnX2R1bXAvcGdf dXBncmFkZSBleGVyY2lzZSB0aGUgZGVwYXJzZS10aGVuLXJlLXBhcnNlCistLSByb3VuZC10cmlw IG9mIHRoZSBSUFIgd2luZG93IGNsYXVzZS4KKworLS0gVmlldyBjcmVhdGlvbiBhbmQgZGVwYXJz aW5nCisKK0NSRUFURSBUQUJMRSBycHJfc2VyaWFsIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJU IElOVE8gcnByX3NlcmlhbCBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAoMywgMTUpLCAo NCwgMjUpLCAoNSwgMzApOworCistLSBTaW1wbGUgcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX3Nl cmlhbF92MSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gVmVyaWZ5IHZpZXcgd29ya3MgKHRl c3RzIGRlc2VyaWFsaXphdGlvbikKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92MSBPUkRFUiBC WSBpZDsKKworLS0gVmVyaWZ5IGRlcGFyc2luZworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJf c2VyaWFsX3YxJzo6cmVnY2xhc3MpOworCistLSBDb21wbGV4IHBhdHRlcm4gd2l0aCBhbHRlcm5h dGlvbgorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF92MiBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSsgfCBCKikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAyMCwg QiBBUyB2YWwgPD0gMjAKKyk7CisKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92MiBPUkRFUiBC WSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92Mic6OnJlZ2NsYXNzKTsK KworLS0gUGF0dGVybiB3aXRoIGdyb3VwaW5nIGFuZCBxdWFudGlmaWVycworQ1JFQVRFIFZJRVcg cnByX3NlcmlhbF92MyBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKEEgQil7Miw1fSB8IEMqKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDEwLAor ICAgICAgICBCIEFTIHZhbCA+IDIwLAorICAgICAgICBDIEFTIHZhbCA8PSAxMAorKTsKKworU0VM RUNUICogRlJPTSBycHJfc2VyaWFsX3YzIE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3 ZGVmKCdycHJfc2VyaWFsX3YzJzo6cmVnY2xhc3MpOworCistLSBBbGwgZmVhdHVyZXMgY29tYmlu ZWQKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjQgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoU1RBUlQgKE1JRHsxLDN9IHwgQUxUKykgRklOSVNIKQorICAgIERFRklORQorICAg ICAgICBTVEFSVCBBUyB2YWwgPiA1LAorICAgICAgICBNSUQgQVMgdmFsIEJFVFdFRU4gMTAgQU5E IDI1LAorICAgICAgICBBTFQgQVMgdmFsID4gMjUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiAx NQorKTsKKworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y0IE9SREVSIEJZIGlkOworU0VMRUNU IHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3Y0Jzo6cmVnY2xhc3MpOworCistLSBBZGRpdGlv bmFsIHF1YW50aWZpZXJzIGZvciBkZXBhcnNpbmcgY292ZXJhZ2UKKworLS0gPyBxdWFudGlmaWVy ICh6ZXJvIG9yIG9uZSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjUgQVMKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMTAsIEIgQVMgdmFsID4gMjAKKyk7CisKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92NSBP UkRFUiBCWSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92NSc6OnJlZ2Ns YXNzKTsKKworLS0ge24sfSBxdWFudGlmaWVyIChuIG9yIG1vcmUpCitDUkVBVEUgVklFVyBycHJf c2VyaWFsX3Y2IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxNQorKTsKKworU0VMRUNUICogRlJPTSBycHJf c2VyaWFsX3Y2IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFs X3Y2Jzo6cmVnY2xhc3MpOworCistLSB7bn0gcXVhbnRpZmllciAoZXhhY3RseSBuKQorQ1JFQVRF IFZJRVcgcnByX3NlcmlhbF92NyBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXszfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCitTRUxFQ1QgKiBG Uk9NIHJwcl9zZXJpYWxfdjcgT1JERVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9zZXJpYWxfdjcnOjpyZWdjbGFzcyk7CisKKy0tIE5lc3RlZCBBTFQgcGF0dGVybiAodGVzdHMg ZGVwYXJzZSBvZiBjb21wbGV4IG5lc3RlZCBzdHJ1Y3R1cmUpCitDUkVBVEUgVklFVyBycHJfc2Vy aWFsX3Y4IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEr IEIpIHwgQykgRCB8IEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAxNSwgQiBBUyB2YWwg PD0gMjUsIEMgQVMgdmFsIDw9IDMwLCBEIEFTIHZhbCA+IDMwCispOworCitTRUxFQ1QgKiBGUk9N IHJwcl9zZXJpYWxfdjggT1JERVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9z ZXJpYWxfdjgnOjpyZWdjbGFzcyk7CisKKy0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXph dGlvbjogUFJFViB3aXRoIG9mZnNldAorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXYxIEFTCitT RUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAg ICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyB2YWwgPiBQUkVWKHZhbCwgMikpOworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX25hdjEnOjpyZWdjbGFzcyk7CisKKy0tIE5h dmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogRklSU1QgYW5kIExBU1QKK0NSRUFURSBW SUVXIHJwcl9zZXJpYWxfbmF2MiBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdwor RlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMg RklSU1QodmFsKSA8IExBU1QodmFsLCAxKSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9z ZXJpYWxfbmF2Mic6OnJlZ2NsYXNzKTsKKworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBzZXJpYWxp emF0aW9uOiBjb21wb3VuZCBQUkVWKEZJUlNUKCkpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX25h djMgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBC KykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsLCAx KSwgMikgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9uYXYzJzo6cmVn Y2xhc3MpOworCistLSBOYXZpZ2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb246IGNvbXBvdW5k IE5FWFQoTEFTVCgpKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXY0IEFTCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhUKExBU1QodmFsKSwgMikgSVMgTk9UIE5VTEwpOwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX25hdjQnOjpyZWdjbGFzcyk7CisKKy0t IE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogY29tcG91bmQgUFJFVihMQVNUKCkp CitDUkVBVEUgVklFVyBycHJfc2VyaWFsX25hdjUgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBU UlVFLCBCIEFTIFBSRVYoTEFTVCh2YWwsIDEpLCAyKSA+IDApOworU0VMRUNUIHBnX2dldF92aWV3 ZGVmKCdycHJfc2VyaWFsX25hdjUnOjpyZWdjbGFzcyk7CisKKy0tIE5hdmlnYXRpb24gZnVuY3Rp b24gc2VyaWFsaXphdGlvbjogY29tcG91bmQgTkVYVChGSVJTVCgpKQorQ1JFQVRFIFZJRVcgcnBy X3NlcmlhbF9uYXY2IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJw cl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhUKEZJ UlNUKHZhbCksIDMpID4gMCk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfbmF2 Nic6OnJlZ2NsYXNzKTsKKworLS0gUHJldHR5IGRlcGFyc2U6IG5hdmlnYXRpb24gY2FsbHMgYXJl IGZ1bmN0aW9uLWxpa2UgYW5kIHRha2Ugbm8gZXh0cmEgcGFyZW5zCitDUkVBVEUgVklFVyBycHJf bmF2X3ByZXR0eV92IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJw cl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwKKyAgICAgICAgICAg ICAgICAgICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIFBSRVYodmFsKSBJUyBOT1QgTlVMTAor ICAgICAgICAgICAgICAgICAgICAgICAgIEFORCBORVhUKHZhbCkgPiBGSVJTVCh2YWwpCisgICAg ICAgICAgICAgICAgICAgICAgICAgQU5EIFBSRVYoRklSU1QodmFsKSkgPiAwKTsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigncnByX25hdl9wcmV0dHlfdic6OnJlZ2NsYXNzLCB0cnVlKTsKKworLS0g UmVsdWN0YW50IHsxfT8gcXVhbnRpZmllciBkZXBhcnNlIHRocm91Z2ggcnVsZXV0aWxzCitDUkVB VEUgVklFVyBycHJfcXVhbnRfcmVsdWN0YW50X3YgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgSU5JVElBTAorICAgICAgICAgICAgIFBBVFRFUk4gKEF7MX0/IEIpCisg ICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAwKTsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigncnByX3F1YW50X3JlbHVjdGFudF92Jzo6cmVnY2xhc3MpOworCistLSBR dW90ZWQgaWRlbnRpZmllciByb3VuZC10cmlwOiBtaXhlZCBjYXNlIGFuZCByZXNlcnZlZCB3b3Jk cyBuZWVkIHF1b3RpbmcKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfcXVvdGVkIEFTCitTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCJTdGFydCIgIlVwIispCisg ICAgICAgICAgICAgREVGSU5FICJTdGFydCIgQVMgVFJVRSwgIlVwIiBBUyB2YWwgPiBQUkVWKHZh bCkpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3F1b3RlZCc6OnJlZ2NsYXNz KTsKKworLS0gSW5saW5lIE9WRVIgcm91bmQtdHJpcDogaW5saW5lIHdpbmRvdyBzcGVjIChubyBX SU5ET1cgYWxpYXMpIGRlcGFyc2VzIGluc2lkZSBPVkVSICguLi4pCitDUkVBVEUgVklFVyBycHJf c2VyaWFsX2lubGluZV9vdmVyIEFTCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBjb3VudCgqKSBP VkVSIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgICAgICAgICAgIFBB VFRFUk4gKEEgQispCisgICAgICAgICAgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTAs IEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBjbnQKK0ZST00gcnByX3NlcmlhbDsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigncnByX3NlcmlhbF9pbmxpbmVfb3Zlcic6OnJlZ2NsYXNzKTsKKworLS0g TWF0ZXJpYWxpemVkIHZpZXcgKGlmIHN1cHBvcnRlZCkKKworQ1JFQVRFIFRBQkxFIHJwcl9tdmll dyAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9tdmlldyBWQUxVRVMgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDMwKTsKKworQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXIHJwcl9tdmll d192MSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X212aWV3CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9tdmlld192MSBP UkRFUiBCWSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX212aWV3X3YxJzo6cmVnY2xh c3MpOworCistLSBSZWZyZXNoIHRlc3QKK1JFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgcnByX212 aWV3X3YxOworU0VMRUNUICogRlJPTSBycHJfbXZpZXdfdjEgT1JERVIgQlkgaWQ7CisKKy0tIENS RUFURSBUQUJMRSBBUyBTRUxFQ1Qgd2l0aCBSUFIKK0NSRUFURSBUQUJMRSBycHJfY3RhcyAoaWQg SU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9jdGFzIFZBTFVFUyAoMSwgMTApLCAoMiwg MjApLCAoMywgMTUpLCAoNCwgMjUpOworCitDUkVBVEUgVEFCTEUgcnByX2N0YXNfcmVzdWx0IEFT CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY3Rhcwor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIHZh bCA+IFBSRVYodmFsKQorKTsKK1NFTEVDVCAqIEZST00gcnByX2N0YXNfcmVzdWx0IE9SREVSIEJZ IGlkOworCistLSBJTlNFUlQgSU5UTyAuLi4gU0VMRUNUIHdpdGggUlBSCitDUkVBVEUgVEFCTEUg cnByX2luc2VydF90YXJnZXQgKGlkIElOVCwgdmFsIElOVCwgY250IEJJR0lOVCk7CitJTlNFUlQg SU5UTyBycHJfaW5zZXJ0X3RhcmdldAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdwor RlJPTSBycHJfY3RhcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBB UyBUUlVFLCBCIEFTIHZhbCA+IFBSRVYodmFsKQorKTsKK1NFTEVDVCAqIEZST00gcnByX2luc2Vy dF90YXJnZXQgT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2N0YXNfcmVzdWx0OworRFJP UCBUQUJMRSBycHJfaW5zZXJ0X3RhcmdldDsKK0RST1AgVEFCTEUgcnByX2N0YXM7CisKKy0tIFBy ZXBhcmVkIHN0YXRlbWVudHMgKHRlc3RzIG91dGZ1bmNzLmMgLyByZWFkZnVuY3MuYykKKworQ1JF QVRFIFRBQkxFIHJwcl9wcmVwIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3By ZXAgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CisKKy0tIFNpbXBsZSBwcmVwYXJl ZCBzdGF0ZW1lbnQKK1BSRVBBUkUgcnByX3ByZXBfc2ltcGxlIEFTCitTRUxFQ1QgaWQsIHZhbCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQor T1JERVIgQlkgaWQ7CisKK0VYRUNVVEUgcnByX3ByZXBfc2ltcGxlOworRVhFQ1VURSBycHJfcHJl cF9zaW1wbGU7CisKK0RFQUxMT0NBVEUgcnByX3ByZXBfc2ltcGxlOworCistLSBQcmVwYXJlZCBz dGF0ZW1lbnQgd2l0aCBwYXJhbWV0ZXJzCitQUkVQQVJFIHJwcl9wcmVwX3BhcmFtKGludCkgQVMK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wcmVwCitX SEVSRSBpZCA8PSAkMQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAKKykKK09SREVSIEJZIGlkOworCitFWEVDVVRF IHJwcl9wcmVwX3BhcmFtKDIpOworRVhFQ1VURSBycHJfcHJlcF9wYXJhbSgzKTsKKworREVBTExP Q0FURSBycHJfcHJlcF9wYXJhbTsKKworLS0gQ29tcGxleCBwcmVwYXJlZCBzdGF0ZW1lbnQKK1BS RVBBUkUgcnByX3ByZXBfY29tcGxleCBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX3ByZXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsxLDJ9IHwg QyspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4gNSwKKyAgICAgICAgQiBBUyB2YWwg PiAxNSwKKyAgICAgICAgQyBBUyB2YWwgPD0gMTUKKykKK09SREVSIEJZIGlkOworCitFWEVDVVRF IHJwcl9wcmVwX2NvbXBsZXg7CitFWEVDVVRFIHJwcl9wcmVwX2NvbXBsZXg7CisKK0RFQUxMT0NB VEUgcnByX3ByZXBfY29tcGxleDsKKworRFJPUCBUQUJMRSBycHJfcHJlcDsKKworLS0gQ1RFIGFu ZCBTdWJxdWVyeSAodGVzdHMgY29weWZ1bmNzLmMpCisKK0NSRUFURSBUQUJMRSBycHJfY29weSAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9jb3B5IFZBTFVFUyAoMSwgMTApLCAo MiwgMjApLCAoMywgMzApLCAoNCwgNDApOworCistLSBTaW1wbGUgQ1RFCitXSVRIIHJwcl9jdGUg QVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJP TSBycHJfY29weQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKQor U0VMRUNUICogRlJPTSBycHJfY3RlIE9SREVSIEJZIGlkOworCistLSBDVEUgd2l0aCBtdWx0aXBs ZSByZWZlcmVuY2VzIChmb3JjZXMgbm9kZSBjb3B5KQorV0lUSCBycHJfY3RlIEFTICgKKyAgICBT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2NvcHkK KyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKyAgICApCispCitTRUxFQ1QgYzEu aWQsIGMxLmNudCBhcyBjbnQxLCBjMi5jbnQgYXMgY250MgorRlJPTSBycHJfY3RlIGMxCitKT0lO IHJwcl9jdGUgYzIgT04gYzEuaWQgPSBjMi5pZAorT1JERVIgQlkgYzEuaWQ7CisKKy0tIFN1YnF1 ZXJ5IGluIEZST00gY2xhdXNlCitTRUxFQ1QgKgorRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9jb3B5CisgICAgV0lORE9XIHcg QVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCPykKKyAgICAg ICAgREVGSU5FIEEgQVMgdmFsID4gMTAsIEIgQVMgdmFsID4gMjAKKyAgICApCispIHN1YgorV0hF UkUgY250ID4gMAorT1JERVIgQlkgaWQ7CisKKy0tIE5lc3RlZCBzdWJxdWVyaWVzCitTRUxFQ1Qg KgorRlJPTSAoCisgICAgU0VMRUNUICoKKyAgICBGUk9NICgKKyAgICAgICAgU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgRlJPTSBycHJfY29weQorICAgICAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICBQQVRURVJOIChBKykKKyAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+PSAxMAorICAgICAg ICApCisgICAgKSBpbm5lcl9zdWIKKyAgICBXSEVSRSBjbnQgPiAwCispIG91dGVyX3N1YgorT1JE RVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2NvcHk7CisKKy0tIERJU1RJTkNUIGFuZCBzZXQg b3BlcmF0aW9ucyAodGVzdHMgZXF1YWxmdW5jcy5jKQorCitDUkVBVEUgVEFCTEUgcnByX2VxdWFs IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2VxdWFsIFZBTFVFUyAoMSwgMTAp LCAoMiwgMjApLCAoMywgMTApLCAoNCwgMjApOworCistLSBESVNUSU5DVCB3aXRoIFJQUgorU0VM RUNUIERJU1RJTkNUIGNudAorRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAg ICAgT1JERVIgQlkgdmFsCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQor KSBzdWIKK09SREVSIEJZIGNudDsKKworLS0gVU5JT04gd2l0aCBSUFIgaW4gYm90aCBzaWRlcwor U0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgdmFsID0gMTAKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChB KykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMQorVU5JT04KK1NF TEVDVCBpZCwgdmFsLCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdIRVJFIHZhbCA9IDIwCisgICAg V0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSsp CisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCispIHN1YjIKK09SREVSIEJZIGlk OworCistLSBVTklPTiBBTEwKK1NFTEVDVCBpZCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0lORE9XIHcg QVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAg IERFRklORSBBIEFTIHZhbCA+IDEwCisgICAgKQorKSBzdWIKK1VOSU9OIEFMTAorU0VMRUNUIGlk LCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAg RlJPTSBycHJfZXF1YWwKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICBQQVRURVJOIChCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDw9IDEwCisgICAg KQorKSBzdWIKK09SREVSIEJZIGlkLCBjbnQ7CisKKy0tIElOVEVSU0VDVAorU0VMRUNUIGlkLCBj bnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJP TSBycHJfZXF1YWwKKyAgICBXSEVSRSBpZCA8PSAzCisgICAgV0lORE9XIHcgQVMgKAorICAgICAg ICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyAgICApCispIHN1YjEKK0lOVEVSU0VDVAorU0VMRUNUIGlkLCBjbnQgRlJPTSAo CisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1 YWwKKyAgICBXSEVSRSBpZCA+PSAyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBC WSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAK KyAgICApCispIHN1YjIKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9lcXVhbDsKKwor LS0gVmlldyB3aXRoIG11bHRpcGxlIHdpbmRvdyBkZWZpbml0aW9ucworCitDUkVBVEUgVEFCTEUg cnByX211bHRpd2luIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX211bHRpd2lu IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworCitDUkVBVEUgVklFVyBycHJfbXVs dGl3aW5fdiBBUworU0VMRUNUCisgICAgaWQsCisgICAgdmFsLAorICAgIENPVU5UKCopIE9WRVIg dzEgYXMgY250MSwKKyAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIKK0ZST00gcnByX211bHRp d2luCitXSU5ET1cKKyAgICB3MSBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQ QVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKyAgICApLAorICAgIHcy IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEIqKQorICAgICAg ICBERUZJTkUgQiBBUyB2YWwgPD0gMTUKKyAgICApOworCitTRUxFQ1QgKiBGUk9NIHJwcl9tdWx0 aXdpbl92IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfbXVsdGl3aW5f dic6OnJlZ2NsYXNzKTsKKworLS0ge259IHF1YW50aWZpZXIgZGlzcGxheSBpbiB2aWV3CitDUkVB VEUgVklFVyBycHJfcXVhbnRfbl92IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIElOSVRJQUwKKyAgICAgICAgICAgICBQQVRURVJOIChBezN9KQorICAgICAgICAgICAg IERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfcXVhbnRf bl92Jzo6cmVnY2xhc3MpOworCistLSB7bix9IHF1YW50aWZpZXIgZGlzcGxheSBpbiB2aWV3CitD UkVBVEUgVklFVyBycHJfcXVhbnRfbl9wbHVzX3YgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgSU5JVElBTAorICAgICAgICAgICAgIFBBVFRFUk4gKEF7Mix9KQorICAg ICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdy cHJfcXVhbnRfbl9wbHVzX3YnOjpyZWdjbGFzcyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gR2x1ZWQgUXVhbnRp ZmllciAvIEFsdGVybmF0aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSBycHJfZ2x1ZSAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9nbHVlIFZBTFVFUyAoMSwgNSksICgy LCA4KSwgKDMsIDkpLCAoNCwgLTEpLCAoNSwgNiksICg2LCAtMik7CistLSBRdWFudGlmaWVyIGds dWVkIHRvIHRoZSBhbHRlcm5hdGlvbiBvcGVyYXRvciAnfCcgd2l0aG91dCBhIHNwYWNlICgwMDU5 KS4KKy0tIFRoZSBsZXhlciBnbHVlcyB0aGUgdHJhaWxpbmcgJ3wnIGludG8gb25lIE9wIHRva2Vu OyB0aGUgZ3JhbW1hciByZWF0dGFjaGVzIGl0CistLSBhcyB0aGUgbG93ZXN0LXByZWNlZGVuY2Ug YWx0ZXJuYXRpb24gb25jZSB0aGUgc3Vycm91bmRpbmcgc2VxdWVuY2UgaXMgYnVpbHQuCistLSBE ZXBhcnNlIGlzIGNhbm9uaWNhbCwgc28gdGhlIGdsdWVkLCBzcGFjZWQsIGFuZCBtaXhlZC1zcGFj aW5nIGZvcm1zIGFsbAorLS0gcmVkdWNlIHRvIHRoZSBzYW1lIFBBVFRFUk4gLS0gb25lIGRlcGFy c2UgcGVyIHNoYXBlIHByb3ZlcyB0aGUgcGFyc2UgdHJlZS4KKworLS0gT3AtY2hhciBxdWFudGlm aWVycyAoKiwgKywgPywgKj8sICs/LCA/PykgZ2x1ZWQgdG8gJ3wnLgorQ1JFQVRFIFZJRVcgcnBy X2RwX29wIEFTIFNFTEVDVAorICAgIGNvdW50KCopIE9WRVIgdzEgQVMgdzEsIGNvdW50KCopIE9W RVIgdzIgQVMgdzIsIGNvdW50KCopIE9WRVIgdzMgQVMgdzMsCisgICAgY291bnQoKikgT1ZFUiB3 NCBBUyB3NCwgY291bnQoKikgT1ZFUiB3NSBBUyB3NSwgY291bnQoKikgT1ZFUiB3NiBBUyB3Ngor RlJPTSBycHJfZ2x1ZQorV0lORE9XIHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8QikgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChB K3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKEE/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAor ICAgICAgIHc0IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSo/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIg QVMgdmFsIDw9IDApLAorICAgICAgIHc1IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSs/fEIpIERFRklORSBB IEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHc2IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QT8/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZHBfb3AnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitEUk9QIFZJRVcgcnByX2Rw X29wOworLS0gU3BhY2VkIHJlZmVyZW5jZTogdGhlIGZ1bGx5LXNwYWNlZCBjYW5vbmljYWwgZm9y bXMuICBJZGVudGljYWwgZGVwYXJzZSB0byB0aGUKKy0tIGdsdWVkIHJwcl9kcF9vcCB3MS93NCBh Ym92ZSBjb21wbGV0ZXMgdGhlIGdsdWVkID0gc3BhY2VkID0gbWl4ZWQgZXF1aXZhbGVuY2UuCitD UkVBVEUgVklFVyBycHJfZHBfc3BjIEFTIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcxIEFTIHcxLCBj b3VudCgqKSBPVkVSIHcyIEFTIHcyCitGUk9NIHJwcl9nbHVlCitXSU5ET1cgdzEgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQ QVRURVJOIChBKiB8IEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAg ICAgIHcyIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSo/IHwgQikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9kcF9zcGMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitEUk9QIFZJRVcgcnByX2RwX3NwYzsKKy0tIFJhbmdlIHF1YW50aWZpZXJzIGds dWVkIHRvICd8Jzogbm9uLXJlbHVjdGFudCB7bn18ICh9ICsgY2hhciAnfCcpIGFuZAorLS0gcmVs dWN0YW50IHtufT98ICh9ICsgT3AgIj98IikuCitDUkVBVEUgVklFVyBycHJfZHBfcm5nIEFTIFNF TEVDVAorICAgIGNvdW50KCopIE9WRVIgdzEgQVMgdzEsIGNvdW50KCopIE9WRVIgdzIgQVMgdzIs IGNvdW50KCopIE9WRVIgdzMgQVMgdzMsIGNvdW50KCopIE9WRVIgdzQgQVMgdzQsCisgICAgY291 bnQoKikgT1ZFUiB3NSBBUyB3NSwgY291bnQoKikgT1ZFUiB3NiBBUyB3NiwgY291bnQoKikgT1ZF UiB3NyBBUyB3NywgY291bnQoKikgT1ZFUiB3OCBBUyB3OAorRlJPTSBycHJfZ2x1ZQorV0lORE9X IHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfXxCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZh bCA8PSAwKSwKKyAgICAgICB3MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mix9fEIpIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHczIEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXss M318QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzQgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBQQVRURVJOIChBezIsM318QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0g MCksCisgICAgICAgdzUgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9P3xCKSBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mix9P3xC KSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H IFBBVFRFUk4gKEF7LDN9P3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwK KyAgICAgICB3OCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7MiwzfT98QikgREVGSU5FIEEgQVMgdmFsID4g MCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9kcF9ybmcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitEUk9QIFZJRVcgcnByX2RwX3JuZzsKKy0tIE1peGVkIHNwYWNpbmc6 IGEgc3BhY2UgaW5zaWRlIHRoZSBxdWFudGlmaWVyIHdpdGggJ3wnIHN0aWxsIGdsdWVkLgorLS0g IkEqID98QiIgPSAnKicgKyBPcCI/fCIgPSByZWx1Y3RhbnQgIkEqPyIgcGx1cyBhbHRlcm5hdGlv bi4KK0NSRUFURSBWSUVXIHJwcl9kcF9taXggQVMgU0VMRUNUIGNvdW50KCopIE9WRVIgdzEgQVMg dzEsIGNvdW50KCopIE9WRVIgdzIgQVMgdzIsIGNvdW50KCopIE9WRVIgdzMgQVMgdzMKK0ZST00g cnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqID98QikgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKyA/ fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHczIEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgUEFUVEVSTiAoQT8gP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2RwX21peCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK0RS T1AgVklFVyBycHJfZHBfbWl4OworLS0gU3RydWN0dXJlOiBwcmVjZWRlbmNlICh8IGlzIGxvd2Vz dCwgc28gaXRzIHJpZ2h0IG9wZXJhbmQgaXMgdGhlIHdob2xlCistLSBmb2xsb3dpbmcgc2VxdWVu Y2UpLCBjaGFpbmluZywgY29uY2F0ZW5hdGlvbiwgYW5kIGdyb3VwaW5nLgorQ1JFQVRFIFZJRVcg cnByX2RwX3N0cnVjdCBBUyBTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFTIHcxLCBjb3Vu dCgqKSBPVkVSIHcyIEFTIHcyLCBjb3VudCgqKSBPVkVSIHczIEFTIHczLAorICAgIGNvdW50KCop IE9WRVIgdzQgQVMgdzQsIGNvdW50KCopIE9WRVIgdzUgQVMgdzUsIGNvdW50KCopIE9WRVIgdzYg QVMgdzYKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIgQykg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCwgQyBBUyB2YWwgPCAxMDApLAorICAg ICAgIHcyIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8Qip8QykgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCwgQyBBUyB2YWwgPCAxMDApLAorICAgICAgIHczIEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QSBCKnxDIEQpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDAsIEMgQVMgdmFsIDwg MTAwLCBEIEFTIHZhbCA+IDUpLAorICAgICAgIHc0IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEqfEIpKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NSBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBB VFRFUk4gKEEqfChCfEMpKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwLCBDIEFT IHZhbCA8IDEwMCksCisgICAgICAgdzYgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOICgoQSp8QikrKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2RwX3N0cnVjdCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK0RST1AgVklFVyBycHJfZHBfc3RydWN0Owor LS0gRXhlY3V0aW9uIHNlbWFudGljcyAoZGVwYXJzZSBjYW5ub3Qgc2hvdyByZWx1Y3RhbnQgc2hv cnRlc3QtbWF0Y2gpLiAgVGhlCistLSBycHJfZ2x1ZSByb3dzIC0tIGFuIEEtcnVuIGZvbGxvd2Vk IGJ5IEIgcm93cyAtLSBtYWtlIHRoZSAnfEInIGFsdGVybmF0aXZlCistLSByZWFjaGFibGU6IHdp dGggIioiIHRoZSBncmVlZHkgZm9ybSBtYXRjaGVzIHRoZSB3aG9sZSBydW4gd2hpbGUgdGhlCist LSByZWx1Y3RhbnQgZm9ybSBtYXRjaGVzIGVtcHR5OyB3aXRoICIrIiB0aGUgZ3JlZWR5IGZvcm0g bWF0Y2hlcyB0aGUgcnVuIGFuZAorLS0gdGhlIHJlbHVjdGFudCBmb3JtIG1hdGNoZXMgb25lIHJv dywgYW5kIG9uIGEgQiByb3cgKHdoZXJlICJBKyIgZmFpbHMpIHRoZSBCCistLSBhbHRlcm5hdGl2 ZSBmaXJlcy4KK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIGNvdW50KCopIE9WRVIgZ3MgQVMgZ3N0 YXIsIGNvdW50KCopIE9WRVIgcnMgQVMgcnN0YXIsCisgICAgICAgY291bnQoKikgT1ZFUiBncCBB UyBncGx1cywgY291bnQoKikgT1ZFUiBycCBBUyBycGx1cworRlJPTSBycHJfZ2x1ZQorV0lORE9X IGdzIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwg PD0gMCksCisgICAgICAgcnMgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKj98QikgREVGSU5FIEEgQVMgdmFs ID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgZ3AgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBK3xCKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICBycCBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBB VFRFUk4gKEErP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKQorT1JERVIg QlkgaWQ7CistLSBQYXR0ZXJucyB0aGF0IG11c3Qgc3RheSByZWplY3RlZC4gICImIiBpcyBhbiBp bnZhbGlkIG9wOyBhICd8JyB3aXRoIGFuIGVtcHR5CistLSBzaWRlIChsZWFkaW5nLCB0cmFpbGlu ZywgZG91YmxlZCwgb3IgYWxvbmUgaW4gYSBncm91cCkgaGFzIG5vIG9wZXJhbmQ7ICJ8fCIKKy0t IGFuZCAiKnx8IiBhcmUgZG91YmxlZCBwaXBlczsgIkEqICp8QiIvIkEqICo/fEIiLyJBezJ9Kj98 QiIgYXJlIGRvdWJsZWQKKy0tIHF1YW50aWZpZXJzLgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSZCKSBERUZJTkUgQSBBUyB2 YWwgPiAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HIFBBVFRFUk4gKEEqfCkgREVGSU5FIEEgQVMgdmFsID4gMCk7CitTRUxFQ1QgY291bnQo KikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnwgfEIp IERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9W RVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8fEIpIERFRklO RSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXx8QikgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnBy X2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnxCfCkgREVGSU5FIEEgQVMgdmFsID4g MCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOICh8QSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CitTRUxF Q1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJO ICgoQSp8KSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKiAqfEIpIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJw cl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSogKj98QikgREVGSU5FIEEgQVMgdmFs ID4gMCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ds dWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBPyAqP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAw LCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn0qP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn0gKj98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCk7CistLSBEb3VibGVkIG9wLWNoYXIgcXVhbnRpZmllcnMgbGV4IGFzIG9uZSBP cCB0b2tlbiBhbmQgYXJlIHVuc3VwcG9ydGVkLCB3aGV0aGVyCistLSBnbHVlZCB0byAnfCcgKCIq KnwiLCAiKit8IiwgIj8/P3wiKSBvciBvbiB0aGVpciBvd24gKCIqKiIpLgorU0VMRUNUIGNvdW50 KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSoqfEIp IERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9W RVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSorfEIpIERFRklO RSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQT8/P3xCKSBERUZJTkUgQSBB UyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBy cHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqKkIpIERFRklORSBBIEFTIHZhbCA+ IDApOworRFJPUCBUQUJMRSBycHJfZ2x1ZTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFcnJvciBDYXNlcyBUZXN0 cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHJwcl9lcnI7CitDUkVBVEUgVEFCTEUg cnByX2VyciAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9lcnIgVkFMVUVTICgx LCAxMCksICgyLCAyMCk7CisKKy0tIEludmFsaWQgcXVhbnRpZmllciBzeW50YXgKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSshKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIG5v bmUgb2YgdGhlIGZvbGxvd2luZyBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRlZAorU0VMRUNUIEZS T00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBG T0xMT1dJTkcgUEFUVEVSTiAoQSsgISkgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1QgRlJPTSBy cHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExP V0lORyBQQVRURVJOIChBKyA/KykgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1QgRlJPTSBycHJf ZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lO RyBQQVRURVJOIChBKiA/KykgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1QgRlJPTSBycHJfZXJy IFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQ QVRURVJOIChBPyA/PykgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1QgRlJPTSBycHJfZXJyIFdJ TkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRU RVJOIChBIHsxLDJ9Pz8pIERFRklORSBBIEFTIFRSVUUpOworCistLSBub25lIG9mIHRoZSBmb2xs b3dpbmcgNCByYW5nZS1xdWFudGlmaWVyIHF1ZXJpZXMgc2hvdWxkIGJlIGFjY2VwdGVkCitTRUxF Q1QgRlJPTSBycHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCAxIEZPTExPV0lORyBQQVRURVJOIChBezJ9ICEpIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNU IEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLH0gISkgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1Qg RlJPTSBycHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAx IEZPTExPV0lORyBQQVRURVJOIChBeywzfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKK1NFTEVDVCBG Uk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEg Rk9MTE9XSU5HIFBBVFRFUk4gKEF7MiwzfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKKworLS0gVW5t YXRjaGVkIHBhcmVudGhlc2VzCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IE5PVElDRTsKK0RP ICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJf ZXJyIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEgQikgREVGSU5FIEEgQVMgdmFsID4gMCwg QiBBUyB2YWwgPiAxMCknOworICAgIFJBSVNFIE5PVElDRSAnVW5tYXRjaGVkIHBhcmVudGhlc2Vz OiBVTkVYUEVDVEVEIFNVQ0NFU1MnOworRVhDRVBUSU9OCisgICAgV0hFTiBzeW50YXhfZXJyb3Ig VEhFTgorICAgICAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRoZXNlczogRVhQRUNU RUQgRVJST1IgLSAlJywgU1FMRVJSTTsKKyAgICBXSEVOIE9USEVSUyBUSEVOCisgICAgICAgIFJB SVNFIE5PVElDRSAnVW5tYXRjaGVkIHBhcmVudGhlc2VzOiBVTkVYUEVDVEVEIEVSUk9SIC0gJScs IFNRTEVSUk07CitFTkQgJCQ7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CisK Ky0tIEVSUk9SOiBlbXB0eSBERUZJTkUgbm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FCispOworCistLSBFUlJPUjogZW1wdHkgUEFUVEVSTiBub3QgYWxs b3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAor KTsKKworLS0gRVJST1I6IERFRklORSB3aXRob3V0IFBBVFRFUk4gKFBBVFRFUk4gYW5kIERFRklO RSBtdXN0IGJlIHVzZWQgdG9nZXRoZXIpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CisKKy0tIFF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlcyAoTk9UIFNVUFBPUlRFRCkK KworLS0gUGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IHN1cHBvcnRlZCAodmFs aWQgcGVyIElTTy9JRUMgMTkwNzUtNSA2LjE1IC8gNC4xNiwgbm90IHlldCBpbXBsZW1lbnRlZCkK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgQS52YWwgPiAwCisp OworCistLSBQQVRURVJOLW9ubHkgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBzdXBwb3J0 ZWQgZXZlbiB3aXRob3V0IERFRklORSBlbnRyeQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyBC KykKKyAgICBERUZJTkUgQSBBUyBCLnZhbCA+IDAKKyk7CisKKy0tIERFRklORS1vbmx5IHZhcmlh YmxlIHF1YWxpZmllZCBuYW1lOiBzdGlsbCBhIHBhdHRlcm4gdmFyaWFibGUsIG5vdCBhIHJhbmdl IHZhcmlhYmxlCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgQi52YWwgPiAwCispOworCistLSBGUk9NLWNsYXVzZSByYW5nZSB2YXJpYWJs ZSBxdWFsaWZpZWQgbmFtZTogbm90IGFsbG93ZWQgKHByb2hpYml0ZWQgYnkgSVNPL0lFQyAxOTA3 NS01IDYuNSkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcnBy X2Vyci52YWwgPiAwCispOworCistLSBVbmtub3duIHF1YWxpZmllciAobmVpdGhlciBwYXR0ZXJu IHZhciBub3IgcmFuZ2UgdmFyKTogdGhlIERFRklORSBwcmUtY2hlY2sKKy0tIG11c3QgZmFsbCB0 aHJvdWdoIHNvIHRoYXQgbm9ybWFsIGNvbHVtbiByZXNvbHV0aW9uIHByb2R1Y2VzIGEgc2Vuc2li bGUgZXJyb3IuCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIG5v c3VjaC52YWwgPiAwCispOworCistLSBVbnF1YWxpZmllZCBjb21wb3NpdGUgZmllbGQgYWNjZXNz IGluIERFRklORSB3b3Jrczogbm8gcXVhbGlmaWVyIG1lYW5zIG5vCistLSBwYXR0ZXJuL3Jhbmdl LXZhciBuYXZpZ2F0aW9uLCBzbyB0aGUgcHJlLWNoZWNrIHNraXBzIGFuZCBub3JtYWwgcmVzb2x1 dGlvbgorLS0gaGFuZGxlcyAiKGl0ZW1zKS5hbW91bnQiIHZpYSBBX0luZGlyZWN0aW9uIG9uIHRo ZSBjdXJyZW50IHJvdy4KK0NSRUFURSBUWVBFIHJwcl9pdGVtIEFTIChuYW1lIFRFWFQsIGFtb3Vu dCBJTlQpOworQ1JFQVRFIFRFTVAgVEFCTEUgcnByX2NvbXBvc2l0ZSAoaWQgaW50LCBpdGVtcyBy cHJfaXRlbSk7CitJTlNFUlQgSU5UTyBycHJfY29tcG9zaXRlIFZBTFVFUyAoMSwgUk9XKCdhJyw1 KSksICgyLCBST1coJ2InLDE1KSksICgzLCBST1coJ2MnLDI1KSk7CitTRUxFQ1QgaWQsIChpdGVt cykuYW1vdW50LCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9jb21wb3NpdGUKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAoaXRlbXMpLmFtb3VudCA+IDEw CispOworLS0gRXhwZWN0ZWQ6IHJvd3Mgd2hlcmUgKGl0ZW1zKS5hbW91bnQgPiAxMCBmb3JtIG1h dGNoZXM7IGNvdW50cyByZWZsZWN0IGZyYW1lIHNpemUKKworLS0gQ29tcG9zaXRlIHR5cGUgZmll bGQgc2VsZWN0aW9uIChxdWFsaWZpZWQgZm9ybXMpOiB0aGUgQ29sdW1uUmVmIHBvcnRpb24gKCJB Lml0ZW1zIiBvcgorLS0gInJwcl9jb21wb3NpdGUuaXRlbXMiKSBpcyB3aGF0IGdldHMgcXVvdGVk OyB0aGUgdHJhaWxpbmcgIi5hbW91bnQiIGxpdmVzIGluCistLSB0aGUgc3Vycm91bmRpbmcgQV9J bmRpcmVjdGlvbiBub2RlIGFuZCBpcyBub3QgdmlzaWJsZSB0byB0aGUgcHJlLWNoZWNrLgorU0VM RUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAoQS5pdGVtcyku YW1vdW50ID4gMTAKKyk7CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9jb21wb3Np dGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIChycHJfY29tcG9zaXRlLml0ZW1zKS5hbW91bnQgPiAxMAorKTsKK0RST1AgVEFC TEUgcnByX2NvbXBvc2l0ZTsKK0RST1AgVFlQRSBycHJfaXRlbTsKKworLS0gRVJST1I6IHVuZGVm aW5lZCBjb2x1bW4gaW4gREVGSU5FCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9l cnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIG5vbmV4aXN0ZW50X2NvbHVtbiA+IDAKKyk7CisKKy0tIEVSUk9SOiB0eXBlIG1p c21hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ ICdzdHJpbmcnCispOworCistLSBFUlJPUjogYWdncmVnYXRlIGZ1bmN0aW9uIGluIERFRklORSBp cyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIENPVU5UKCopID4gMAorKTsKKworLS0gRVJST1I6IHNldC1yZXR1cm5pbmcgZnVuY3Rpb24g aW4gREVGSU5FIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBGUk9NIHJwcl9lcnIKK1dJTkRPVyB3 IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChB KykgREVGSU5FIEEgQVMgMSA+IGdlbmVyYXRlX3NlcmllcygxICwyKSk7CisKKy0tIEVSUk9SOiB3 aW5kb3cgZnVuY3Rpb24gaW4gREVGSU5FIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBGUk9NIHJw cl9lcnIKK1dJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExP V0lORyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgMSA+IHJvd19udW1iZXIoKSBPVkVSICgpKTsK KworLS0gU3VicXVlcnkgaW4gREVGSU5FIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gKFNFTEVDVCBtYXgodmFsKSBGUk9N IHJwcl9lcnIpCispOworCistLSBQYXR0ZXJuIHZhcmlhYmxlIG5vdCB1c2VkIChzaG91bGQgd29y aywgZXh0cmEgdmFycyBpZ25vcmVkKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiA1LCBDIEFTIHZh bCA+IDEwCispCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfZXJyOworCistLSBOVUxM IGhhbmRsaW5nCisKK0NSRUFURSBUQUJMRSBycHJfbnVsbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lO U0VSVCBJTlRPIHJwcl9udWxsIFZBTFVFUyAoMSwgMTApLCAoMiwgTlVMTCksICgzLCAzMCk7CisK Ky0tIE5VTEwgaW4gREVGSU5FIGV4cHJlc3Npb24KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxNQorKQorT1JERVIgQlkg aWQ7CisKKy0tIElTIE5VTEwgaW4gREVGSU5FCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoTispCisgICAgREVGSU5FIE4gQVMgdmFsIElTIE5VTEwKKykKK09SREVSIEJZ IGlkOworCistLSBJUyBOT1QgTlVMTCBpbiBERUZJTkUKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChOTispCisgICAgREVGSU5FIE5OIEFTIHZhbCBJUyBOT1QgTlVMTAor KQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX251bGw7CisKKy0tIENvbXBvdW5kIG5h dmlnYXRpb246IGlubmVyIG5hdiBtdXN0IGJlIGRpcmVjdCBhcmcgKG5vdCBuZXN0ZWQgaW4gZXhw cmVzc2lvbikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQ UkVWKHYgKyBGSVJTVCh2KSkgPiAwCispOworCistLSBGSVJTVC9MQVNUIHdyYXBwaW5nIEZJUlNU L0xBU1Q6IHByb2hpYml0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyBGSVJTVChGSVJTVCh2KSkgPiAwCispOworCistLSBUcmlwbGUgbmVzdGluZzogcHJv aGliaXRlZCAoMy1sZXZlbCBkZWVwIG5hdmlnYXRpb24pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVChQUkVWKHYpKSkgPiAwCispOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFdpbmRvdyBEZWR1cGxpY2F0aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gbm9uLVJQ UiBhbmQgUlBSIHdpbmRvd3Mgd2l0aCBpZGVudGljYWwgYmFzZSBmcmFtZSBhcmUga2VwdCBzZXBh cmF0ZS4KK1NFTEVDVCBpZCwgdmFsLAorICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSICgKKyAgICAg ICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgKSBBUyBmdl9ub3JtYWwsCisgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdzEgQVMgZnZfcnByCitGUk9NIChWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMw KSwgKDQsIDQwKSkgQVMgdChpZCwgdmFsKQorV0lORE9XIHcxIEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwCispOworCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFBhdHRlcm4gT3B0aW1pemF0aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGZvciBwYXR0 ZXJuIG9wdGltaXphdGlvbgorLS0gVXNlIEVYUExBSU4gdG8gdmVyaWZ5IG9wdGltaXplZCBwYXR0 ZXJuIChzaG93biBhcyAiUGF0dGVybjogLi4uIikKKworQ1JFQVRFIFRBQkxFIHJwcl9wbGFuIChp ZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BsYW4gVkFMVUVTCisgICAgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKSwgKDUsIDUwKSwKKyAgICAoNiwgNjApLCAoNywg NzApLCAoOCwgODApLCAoOSwgOTApLCAoMTAsIDEwMCk7CisKKy0tIENvbnNlY3V0aXZlIFZBUiBt ZXJnZTogQSBBIEEgLT4gYXszfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoQSBBIEEpIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2ZSBWQVIg bWVyZ2U6IEF7Mn0gQXszfSAtPiBhezV9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOIChBezJ9IEF7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1 dGl2ZSBWQVIgbWVyZ2U6IEErIEEqIC0+IGErCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOIChBKyBBKikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIENvbnNlY3V0 aXZlIFZBUiBtZXJnZTogQSBBKyAtPiBhezIsfQorLS0gd2hlcmUgYSBmaW5pdGUgcHJldiAoQXsx LDF9KSBtZWV0cyBhbiBpbmZpbml0ZSBjaGlsZCAoQSspLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSBBKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIENv bnNlY3V0aXZlIFZBUiBtZXJnZSBhdCB0aGUgYm91bmRhcnk6IEF7MTA3Mzc0MTgyMyx9IEF7MTA3 Mzc0MTgyMyx9IC0+CistLSBhezIxNDc0ODM2NDYsfS4gIFRoZSBtaW4gc3VtIDIxNDc0ODM2NDYg PSBJTlQzMl9NQVggLSAxIGlzIHRoZSBsYXJnZXN0CistLSBzdGlsbC1maW5pdGUgYm91bmQsIHNv IHRoZSBtZXJnZSBwcm9jZWVkczsgYSBzdW0gb2YgZXhhY3RseSBJTkYgaW5zdGVhZAorLS0gZmFs bHMgYmFjayAoc2VlIHRoZSBPcHRpbWl6YXRpb24gRmFsbGJhY2sgVGVzdHMpLgorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQXsxMDczNzQxODIzLH0gQXsxMDczNzQx ODIzLH0pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJn ZSB3aXRoIGZpbml0ZSBxdWFudGlmaWVyczogKChBIEIpezV9KSAoKEEgQil7MTB9KSAtPiBtZXJn ZWQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSBCKXs1fSkg KChBIEIpezEwfSkpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0t IENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIHdpdGggdW5ib3VuZGVkOiAoQSBCKSsgKEEgQikrIC0+ IChhIGIpezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEg QikrIChBIEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0g Q29uc2VjdXRpdmUgR1JPVVAgbWVyZ2U6IChBIEIpezJ9IChBIEIpKyAtPiAoYSBiKXszLH0KKy0t IFdoZXJlIGEgZmluaXRlIHByZXYgKChBIEIpezIsMn0pIG1lZXRzIGFuIGluZmluaXRlIGNoaWxk ICgoQSBCKSspLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEg Qil7Mn0gKEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCist LSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSBhdCB0aGUgYm91bmRhcnk6IChBIEIpezEwNzM3NDE4 MjMsfSAoQSBCKXsxMDczNzQxODIzLH0KKy0tIC0+IChhIGIpezIxNDc0ODM2NDYsfS4gIFRoZSBt aW4gc3VtIElOVDMyX01BWCAtIDEgaXMgc3RpbGwgZmluaXRlLCBzbyB0aGUKKy0tIG1lcmdlIHBy b2NlZWRzOyBhIHN1bSBvZiBleGFjdGx5IElORiBpbnN0ZWFkIGZhbGxzIGJhY2sgKHNlZSB0aGUK Ky0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBUZXN0cykuCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQSBCKXsxMDczNzQxODIzLH0gKEEgQil7MTA3Mzc0MTgyMyx9 KSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBQUkVGSVggbWVy Z2U6IEEgQiAoQSBCKSsgLT4gKGEgYil7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOIChBIEIgKEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFs ID4gNTApOworCistLSBQUkVGSVggYW5kIFNVRkZJWCBtZXJnZTogQSBCIChBIEIpKyBBIEIgLT4g KGEgYil7Myx9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIg KEEgQikrIEEgQikgREVGSU5FIEEgQVMgdmFsIDw9IDQwLCBCIEFTIHZhbCA+IDQwKTsKKworLS0g RmxhdHRlbiBuZXN0ZWQ6IEEgKChCKSAoQykpIC0+IGEgYiBjCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOIChBICgoQikgKEMpKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMw LCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tIERhdGEgZXhlY3V0aW9uOiBT RVEgZmxhdHRlbiBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdHMKK1NFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgICAgICAgICAgIFBBVFRF Uk4gKEEgKChCKSAoQykpKSBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBD IEFTIHZhbCA+IDYwKTsKKworLS0gQUxUIGZsYXR0ZW46IChBIHwgKEIgfCBDKSkrIC0+IChhIHwg YiB8IGMpKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCAo QiB8IEMpKSspIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFs ID4gNjApOworCistLSBBTFQgZGVkdXBsaWNhdGU6IChBIHwgQiB8IEEpIC0+IChhIHwgYikKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgQiB8IEEpKykgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gRGF0YSBleGVjdXRpb246 IEFMVCBkZWR1cCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdHMKK1NFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEgfCBCIHwgQSkrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAp OworCistLSBRdWFudGlmaWVyIG11bHRpcGx5OiAoQXsyfSl7M30gLT4gYXs2fQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezN9KSBERUZJTkUgQSBBUyB2 YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBseTogcmVsdWN0YW50IEdST1VQIGNo aWxkICgoKEEgQil7Mn0/KXszfSkgc3RheXMgbmVzdGVkCistLSBhIHJlbHVjdGFudCBxdWFudGlm aWVyIG9uIGEgR1JPVVAgaXMgbm90IHN1YmplY3QgdG8gbXVsdGlwbGljYXRpb24KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSBCKXsyfT8pezN9KSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIG11bHRpcGx5IGNv bnRyb2w6IGdyZWVkeSBHUk9VUCAoKChBIEIpezJ9KXszfSkgLT4gKGEgYil7Nn0KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSBCKXsyfSl7M30pIERFRklORSBB IEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHkgd2l0 aCBjaGlsZCByYW5nZTogKEF7MiwzfSl7M30gLT4gYXs2LDl9CistLSBvdXRlciBleGFjdCwgY2hp bGQgcmFuZ2UgLSBvcHRpbWl6YXRpb24gYXBwbGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKEF7MiwzfSl7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworCist LSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXsyfSl7MiwzfSBzdGF5cyBhcyAoYXsyfSl7Miwz fQorLS0gb3V0ZXIgcmFuZ2UgLSBnYXBzIHdvdWxkIG9jY3VyICg0LDYgbm90IDQsNSw2KSwgbm8g b3B0aW1pemF0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgo QXsyfSl7MiwzfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgTk8gbXVs dGlwbHk6IChBezJ9KXsyLH0gc3RheXMgYXMgKGF7Mn0pezIsfQorLS0gb3V0ZXIgdW5ib3VuZGVk IC0gZ2FwcyB3b3VsZCBvY2N1ciAoNCw2LDgsLi4uIG5vdCA0LDUsNiwuLi4pLCBubyBvcHRpbWl6 YXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXsy LH0pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIG11bHRpcGx5OiAoQSl7 Mix9IC0+IGF7Mix9CistLSBjaGlsZCBleGFjdCAxIC0gbm8gZ2Fwcywgb3B0aW1pemF0aW9uIGFw cGxpZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBKXsyLH0p IERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIG11bHRpcGx5OiAoQSkrIC0+ IGErCistLSBjaGlsZCBleGFjdCAxIC0gbm8gZ2Fwcywgb3B0aW1pemF0aW9uIGFwcGxpZXMKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBKSspIERFRklORSBBIEFT IHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXsyfSl7Myw1fSBzdGF5 cyBhcyAoYXsyfSl7Myw1fQorLS0gb3V0ZXIgcmFuZ2UsIGNoaWxkIGV4YWN0ID4gMSAtIGdhcHMg d291bGQgb2NjdXIgKDYsOCwxMCBub3QgNiw3LDgsOSwxMCkKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXszLDV9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsK KworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEF7MiwzfSl7MiwzfSAtPiBhezQsOX0KKy0tIG91 dGVyIHJhbmdlLCBjaGlsZCByYW5nZTogY291bnRzIFs0LDZdIFUgWzYsOV0gPSBbNCw5XSBhcmUg Y29udGlndW91cywgc28gaXQgZm9sZHMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKChBezIsM30pezIsM30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBRdWFu dGlmaWVyIE5PIG11bHRpcGx5OiAoQXs0LDV9KXsyLDN9IHN0YXlzIGFzIChhezQsNX0pezIsM30K Ky0tIG91dGVyIHJhbmdlLCBjaGlsZCByYW5nZSB3aXRoIGEgZ2FwOiBbOCwxMF0gVSBbMTIsMTVd IG1pc3NlcyAxMQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7 NCw1fSl7MiwzfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6 IChBKikqIC0+IGEqCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgo QSopKikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKykq IC0+IGEqCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspKikg REVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKykrIC0+IGEr CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspKykgREVGSU5F IEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHkgd2l0aCBhbiB1bmJvdW5k ZWQgY2hpbGQ6IGFuIGV4YWN0IG91dGVyIGNvdW50IChtID09IG4pCistLSBhbHdheXMgZm9sZHMg cmVnYXJkbGVzcyBvZiB0aGUgY2hpbGQncyBtYXggLSAoQSspezN9IC0+IGF7Myx9CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspezN9KSBERUZJTkUgQSBBUyB2 YWwgPiAwKTsKKworLS0gKEF7Mix9KXszfSAtPiBhezYsfSAgKG0gPT0gbiwgdW5ib3VuZGVkIGNo aWxkIHdpdGggbWluIDIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO ICgoQXsyLH0pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gKEErKXsyLDR9IC0+IGF7 Mix9ICAob3V0ZXIgcmFuZ2UsIHVuYm91bmRlZCBjaGlsZDogZXZlcnkgaW50ZXJ2YWwgcmVhY2hl cyBJTkYsCistLSBzbyB0aGV5IGFsd2F5cyB0b3VjaCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKChBKyl7Miw0fSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0t IChBezIsM30pezIsNH0gLT4gYXs0LDEyfSAgKG91dGVyIHJhbmdlIHggY2hpbGQgcmFuZ2UsIGNv bnRpZ3VvdXM6CistLSBbNCw2XSBVIFs2LDldIFUgWzgsMTJdID0gWzQsMTJdKQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7MiwzfSl7Miw0fSkgREVGSU5FIEEg QVMgdmFsID4gMCk7CisKKy0tIFNraXBwYWJsZSBvdXRlciAobWluIDApIGZvbGRzIG9ubHkgd2hl biB0aGUgemVybyBjYXNlIGNvbm5lY3RzIHRvIHRoZSBjaGlsZAorLS0gcmFuZ2U6IChBezEsM30p PyAtPiBhezAsM30gIChjaGlsZCBtaW4gPD0gMSwgc28gezB9IFUgWzEsM10gPSBbMCwzXSBpcyBj b250aWd1b3VzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7 MSwzfSk/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBs eTogKEF7MiwzfSk/IHN0YXlzIGFzIChhezIsM30pPworLS0gbWluIDAgd2l0aCBjaGlsZCBtaW4g Pj0gMjogezB9IFUgWzIsM10gbGVhdmVzIDEgdW5yZWFjaGFibGUgKGludGVydmFscyB0b3VjaCBi dXQKKy0tIHRoZSB6ZXJvIGNhc2UgZG9lcyBub3QgY29ubmVjdCkKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIFBBVFRFUk4gKChBezIsM30pPykgREVGSU5FIEEgQVMgdmFsID4gMCk7 CisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IChBezMsNH0pPyBzdGF5cyBhcyAoYXszLDR9 KT8KKy0tIG1pbiAwIHdpdGggY2hpbGQgbWluID49IDI6IHswfSBVIFszLDRdIGxlYXZlcyAxLDIg dW5yZWFjaGFibGUKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChB ezMsNH0pPykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFVud3JhcCBHUk9VUHsxLDF9OiAo QSkgLT4gYQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEpKSBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gVW53cmFwIEdST1VQezEsMX06IChBIEIpIC0+IGEg YgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikpIERFRklO RSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIENvbWJpbmVkIG9wdGltaXph dGlvbjogQSBBIChCIEIpKyBCIEIgQyBDIEMgLT4gYXsyfSAoYnsyfSl7Mix9IGN7M30KK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQSAoQiBCKSsgQiBCIEMgQyBD KQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyMCwgQiBBUyB2YWwgPiAyMCBBTkQg dmFsIDw9IDcwLCBDIEFTIHZhbCA+IDcwKTsKKworLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2Ug d2l0aCB1bmJvdW5kZWQ6IChBKykgKEErKSAtPiBhezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoKEErKSAoQSspKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKwor LS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2UgZmluaXRlOiAoQXsxMH0pezIwfSAtPiBhezIwMH0K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezEwfSl7MjB9KSBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gRGlmZmVyZW50IEdST1VQIHByZXZlbnRzIG1lcmdl OiAoQSBCKXsyfSAoQyBEKXszfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEgQil7Mn0gKEMgRCl7M30pCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCisgICAgICAgICAgICAgICAgICAgIEMg QVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisKKy0tIERpZmZlcmVu dCBjaGlsZHJlbiBjb3VudCBwcmV2ZW50cyBtZXJnZTogKEEgQikrIChBIEIgQykrCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSsgKEEgQiBDKSspCisgICAg ICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMzLCBCIEFTIHZhbCA+IDMzIEFORCB2YWwgPD0g NjYsIEMgQVMgdmFsID4gNjYpOworCistLSBQUkVGSVggb25seSBtZXJnZTogQSBCIChBIEIpKyAt PiAoYSBiKXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEg QiAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIFNV RkZJWCBvbmx5IG1lcmdlOiAoQSBCKSsgQSBCIC0+IChhIGIpezIsfQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikrIEEgQikgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTXVsdGlwbGUgU1VGRklYIGFic29ycHRpb24gd2l0 aCBza2lwVW50aWw6IChBIEIpKyBBIEIgQSBCIEMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBIEIpKyBBIEIgQSBCIEMpCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEMgQVMgdmFsID4gNzUp OworCistLSBQUkVGSVggbWVyZ2Ugd2l0aCByZW1haW5pbmcgcHJlZml4OiBBIEIgQyBEIChDIEQp KyAgLT4gQSBCIChDIEQpIHsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQiBDIEQgKEMgRCkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAy NSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBDIEFT IHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworCistLSBjYW5ub3QgbWVy Z2UsIHByZWZpeCBpcyBkaWZmZXJlbnQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK1BBVFRFUk4gKEEg QiBDIEQgQyAoQyBEKSArKQorREVGSU5FIEEgQVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1LAor ICAgICAgIEMgQVMgdmFsID4gNTAsIEQgQVMgdmFsID4gNzUpOworCistLSBQUkVGSVggbWVyZ2Ug d2l0aCBxdWFudGlmaWVyczogQSBCKiAoQSBCKikrIC0+IChhIGIqKXsyLH0KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiogKEEgQiopKykKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBQUkVGSVggbWVy Z2Ugd2l0aCBtdWx0aXBsZSBxdWFudGlmaWVyczogQSsgQiogQz8gKEErIEIqIEM/KSsgLT4gKGEr IGIqIGM/KXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEr IEIqIEM/IChBKyBCKiBDPykrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKworLS0gU1VGRklY IG1lcmdlIHdpdGggcXVhbnRpZmllcnM6IChBIEIqKSsgQSBCKiAtPiAoYSBiKil7Mix9CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKikrIEEgQiopCisgICAg ICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gVW53 cmFwIEdST1VQezEsMX06ICgoQSB8IEIgfCBDKSkgLT4gKGEgfCBiIHwgYykKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgQiB8IEMpKSBERUZJTkUgQSBBUyB2 YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKworLS0gRGF0YSBleGVj dXRpb246IEdST1VQIHVud3JhcCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdHMKK1NFTEVDVCBpZCwg dmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgICAgICAg ICAgIFBBVFRFUk4gKChBIHwgQiB8IEMpKSBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFs IDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKworLS0gUmVsdWN0YW50IG9wdGltaXphdGlvbiBieXBh c3M6IFZBUiBtZXJnZQorLS0gQSs/IEEgc3RheXMgYXMgYSs/IGEgKGdyZWVkeSBBKyBBIG1lcmdl cyB0byBhezIsfSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEr PyBBKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUmVsdWN0YW50IG9wdGltaXphdGlvbiBi eXBhc3M6IEdST1VQIG1lcmdlCistLSAoQSBCKSs/IChBIEIpIHN0YXlzIHNlcGFyYXRlIChncmVl ZHkgbWVyZ2VzIHRvIChhIGIpezIsfSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKChBIEIpKz8gKEEgQikpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwg PiA1MCk7CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBxdWFudGlmaWVyIG11 bHRpcGx5IChvdXRlciByZWx1Y3RhbnQpCistLSAoQXsyfSl7M30/IHN0YXlzIGFzIChhezJ9KXsz fT8gKGdyZWVkeSBtZXJnZXMgdG8gYXs2fSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIFBBVFRFUk4gKChBezJ9KXszfT8pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBSZWx1 Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogcXVhbnRpZmllciBtdWx0aXBseSAoaW5uZXIgcmVs dWN0YW50KQorLS0gKEF7Mn0/KXszfSBzdGF5cyBhcyAoYXsyfT8pezN9IChncmVlZHkgbWVyZ2Vz IHRvIGF7Nn0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsy fT8pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUmVsdWN0YW50IG9wdGltaXphdGlv biBieXBhc3M6IFBSRUZJWCBtZXJnZQorLS0gQSBCIChBIEIpKz8gc3RheXMgc2VwYXJhdGUgKGdy ZWVkeSBtZXJnZXMgdG8gKGEgYil7Mix9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgUEFUVEVSTiAoQSBCIChBIEIpKz8pIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwg PiA1MCk7CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBTVUZGSVggbWVyZ2UK Ky0tIChBIEIpKz8gQSBCIHN0YXlzIHNlcGFyYXRlIChncmVlZHkgbWVyZ2VzIHRvIChhIGIpezIs fSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKz8gQSBC KSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBHUk9VUCB1bndy YXAgd2l0aCBxdWFudGlmaWVyIHByb3BhZ2F0aW9uOiAoQSk/PyBCIC0+IGE/PyBiCistLSBTaW5n bGUgVkFSIGNoaWxkIHsxLDF9IHJlY2VpdmVzIEdST1VQJ3MgcXVhbnRpZmllciBhbmQgcmVsdWN0 YW50CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSk/PyBCKSBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBSZWx1Y3RhbnQgcHJl c2VydmVkIHRocm91Z2ggQUxUIGZsYXR0ZW4KKy0tIChBIHwgKEIgfCBDKSkrPyBmbGF0dGVucyB0 byAoYSB8IGIgfCBjKSs/IC0gaW5uZXIgQUxUIGZsYXR0ZW5lZCwgcmVsdWN0YW50IGtlcHQKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgKEIgfCBDKSkrPykg REVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisK Ky0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBhYnNvcnB0aW9uIGZsYWdzCistLSBB Kz8gd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgLSBubyBhYnNvcnB0aW9uIG1hcmtlcnMgKGdyZWVk eSBBKyBnZXRzIGErIikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKz8pIERFRklORSBBIEFTIHZhbCA+IDAp OworCistLSBEdXBsaWNhdGUgR1JPVVAgcmVtb3ZhbDogKChBIHwgQikrIHwgKEEgfCBCKSspIC0+ IChhIHwgYikrCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8 IEIpKyB8IChBIHwgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOwor CistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2Ugd2l0aCB6ZXJvLW1pbjogQSogQSsgLT4gYSsKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEqIEErKSBERUZJTkUgQSBB UyB2YWwgPiAwKTsKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdlICg0LWVsZW1lbnQpOiBBIEF7 Mn0gQSsgQXszfSAtPiBhezcsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoQSBBezJ9IEErIEF7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBQUkVGSVgr U1VGRklYIG1lcmdlICg1LXdheSk6IEEgQiBBIEIgKEEgQikrIEEgQiBBIEIgLT4gKGEgYil7NSx9 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIgQSBCIChBIEIp KyBBIEIgQSBCKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwg PiA1MCk7CisKKy0tIFBSRUZJWCtTVUZGSVggbWVyZ2UgKDUtd2F5KTogQiBBIEIgKEEgQikrIEEg QiBBIEIgLT4gYiAoYSBiKXs0LH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEIgQSBCIChBIEIpKyBBIEIgQSBCKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZh bCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIFVud3JhcCBzaW5nbGUtaXRlbSBBTFQgYWZ0 ZXIgZGVkdXA6IChBIHwgQSkrIC0+IGErCistLSBBTFQgZGVkdXAgcmVkdWNlcyB0byBzaW5nbGUt aXRlbSwgdGhlbiBHUk9VUCB1bndyYXAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKChBIHwgQSkrKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gR1JPVVB7MSwx fSB0byBTRVEgd2l0aCBmbGF0dGVuOiAoKEEgQikoQyBEKSkgLT4gYSBiIGMgZAorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKChBIEIpKEMgRCkpKQorICAgICAgICAg ICAgIERFRklORSBBIEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAor ICAgICAgICAgICAgICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFs ID4gNzUpOworCistLSBOZXN0ZWQgQUxUIHBhdHRlcm46ICgoQSBCKSB8IEMpIEQgfCBBIEIgQwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKChBIEIpIHwgQykgRCB8 IEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAy NSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2 YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworCistLSBOZXN0ZWQgQUxUIHdpdGggdW5ib3VuZGVk OiAoKEErIEIpIHwgQykgRCB8IEEgQiBDCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoKEErIEIpIHwgQykgRCB8IEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBB IEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAg ICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEFic29ycHRpb24gRmxhZyBEaXNwbGF5IFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3Rz IGFic29ycHRpb24gbWFya2VyIGRpc3BsYXkgaW4gRVhQTEFJTiBvdXRwdXQKKy0tIE1hcmtlcnM6 ICcgPSBicmFuY2ggZWxlbWVudCwgIiA9IGp1ZGdtZW50IHBvaW50CistLSBGaWxlczogZXhwbGFp bi5jIChhcHBlbmRfcnByX3F1YW50aWZpZXIsIGRlcGFyc2VfcnByX3BhdHRlcm4pCisKKy0tIFNp bXBsZSBWQVI6IEErIC0+IGErIiAoanVkZ21lbnQgcG9pbnQpCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsp IERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBHUk9VUCB1bmJvdW5kZWQ6IChBIEIpKyAtPiAo YScgYicpKyIgKGJyYW5jaCArIGp1ZGdtZW50KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEIpKykgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gQUxUIGJvdGggYWJzb3Ji YWJsZTogQSsgfCBCKyAtPiAoYSsiIHwgYisiKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErIHwgQispIERF RklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIEFMVCBvbmUgYWJzb3Ji YWJsZTogQSsgfCBCIC0+IChhKyIgfCBiKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErIHwgQikgREVGSU5F IEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gU2VxdWVuY2Ugd2l0aCBhYnNv cmJhYmxlIHN0YXJ0OiBBKyBCIC0+IGErIiBiCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgQikgREVGSU5F IEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gQ29tcGxleCBuZXN0ZWQ6ICgo QSsgQikgfCBDKSBEIHwgQSBCIEMgLSBkZWVwbHkgbmVzdGVkIEFMVAorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4g KCgoQSsgQikgfCBDKSBEIHwgQSBCIEMpCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPD0gODAsIEQgQVMgdmFsID4gODApOworCist LSBOZXN0ZWQgdW5ib3VuZGVkOiAoQSsgfCBCKSsgLT4gKGErIiB8IGIpKyAoZmlyc3QgaXRlcmF0 aW9uIGFic29yYmFibGUpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEErIHwgQikrKQorICAgICAgICAgICAg IERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIEFMVCBpbnNpZGUg dW5ib3VuZGVkIEdST1VQOiAoQSsgQiB8IEEgQikqIC0+IChhKyIgYiB8IGEgYikqIChmaXJzdCBp dGVyYXRpb24gYWJzb3JiYWJsZSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSsgQiB8IEEgQikqKQorICAg ICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIEZp eGVkLWxlbmd0aCBncm91cCBhYnNvcmJhYmxlOiAoQXsyfSBCezN9KSsgLT4gKGF7Mn0nIGJ7M30n KXsyLH0iCistLSBBbGwgY2hpbGRyZW4gaGF2ZSBtaW4gPT0gbWF4LCBlcXVpdmFsZW50IHRvIHVu cm9sbGluZyB0byB7MSwxfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBezJ9IEJ7M30pKykKKyAgICAgICAg ICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBOZXN0ZWQg Zml4ZWQtbGVuZ3RoIGdyb3VwOiAoQSAoQiBDKXsyfSBEKSsgLT4gYWJzb3JiYWJsZQorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X IFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwg PD0gMjAsIEIgQVMgdmFsIDw9IDQwLCBDIEFTIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2MCk7CisK Ky0tIE5lc3RlZCBmaXhlZC1sZW5ndGggd2l0aCBpbm5lciBxdWFudGlmaWVyOiAoKEF7Mn0gQnsz fSl7Mn0pKyAtPiBhYnNvcmJhYmxlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKChBezJ9IEJ7M30pezJ9KSsp CisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKwor LS0gTm9uLWFic29yYmFibGUgZml4ZWQtbGVuZ3RoOiAoQSBCezIsNX0pKyAtPiBubyBtYXJrZXJz IChtaW4gIT0gbWF4KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEJ7Miw1fSkrKQorICAgICAgICAgICAg IERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIE5vbi1hYnNvcmJh YmxlIGZpeGVkLWxlbmd0aDogKEEgQj8pKyAtPiBubyBtYXJrZXJzIChtaW4gIT0gbWF4KQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XIFBBVFRFUk4gKChBIEI/KSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUw LCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFibGUgKHVuYm91bmRlZCBub3QgYXQg c3RhcnQpOiBBIEIrIC0+IGEgYisgKG5vIG1hcmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSBCKykg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFi bGUgKG5vIHVuYm91bmRlZCBicmFuY2gpOiAoQSB8IEIpezIsfSAtPiAoYSB8IGIpezIsfSAobm8g bWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSB8IEIpezIsfSkgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFibGUgKFNLSVAgVE8gTkVYVCBS T1cpOiBBKyAtPiBhKyAobm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFT IHZhbCA+IDApOworCistLSBOb24tYWJzb3JiYWJsZSAobGltaXRlZCBmcmFtZSk6IEErIC0+IGEr IChubyBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCAxMCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBS ZWx1Y3RhbnQgezF9PyBxdWFudGlmaWVyIGRlcGFyc2UKKy0tIEF7MX0/IGlzIGEgcmVsdWN0YW50 IHsxLDF9IHF1YW50aWZpZXIuICBUaGUgZGVwYXJzZSBjb2RlIG11c3QKKy0tIG91dHB1dCAiezF9 IiBleHBsaWNpdGx5IHRvIGRpc2FtYmlndWF0ZSBmcm9tIGEgYmFyZSAiPyIgcXVhbnRpZmllcgor LS0gKHdoaWNoIHdvdWxkIG1lYW4gezAsMX0pLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgdmFsCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXsxfT8gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IHZhbCA+IDAKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBBbmFseXNpcyBUZXN0cworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0cyBjb250ZXh0IGFic29ycHRpb24gb3B0aW1pemF0aW9uIChPKG5eMikgLT4g TyhuKSkKKy0tIEZpbGVzOiBycHIuYyAoY29tcHV0ZUFic29yYmFiaWxpdHkpCisKKy0tIFNpbXBs ZSBBYnNvcmJhYmxlIFBhdHRlcm46IEErIEIKKy0tIFBhdHRlcm4gc3RhcnRzIHdpdGggdW5ib3Vu ZGVkIFZBUgorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2YWwg PD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworCistLSBBYnNvcmJhYmxlIEdS T1VQIFBhdHRlcm46IChBIEIpKyBDCistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBH Uk9VUAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdmFs IDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjAKKykKK09S REVSIEJZIGlkOworCistLSBOb24tQWJzb3JiYWJsZTogVW5ib3VuZGVkIE5vdCBhdCBTdGFydAor LS0gUGF0dGVybjogQSBCKyAodW5ib3VuZGVkIG5vdCBhdCBzdGFydCkKKworU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCisp CitPUkRFUiBCWSBpZDsKKworLS0gQUxUIHdpdGggQWJzb3JiYWJsZSBCcmFuY2hlcworLS0gUGF0 dGVybjogKEErIHwgQispIEMgLSBib3RoIGJyYW5jaGVzIGFic29yYmFibGUKKworU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBKyB8IEIrKSBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2 YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsKKwor LS0gQUxUIHdpdGggTWl4ZWQgQnJhbmNoZXMKKy0tIFBhdHRlcm46IChBKyB8IEIgQykgLSBvbmx5 IGZpcnN0IGJyYW5jaCBhYnNvcmJhYmxlCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSsgfCBCIEMp KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gMzAgQU5EIHZhbCA8PSA2 MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIE5vbi1BYnNvcmJhYmxlOiBB TFQgSW5zaWRlIEdST1VQCistLSBQYXR0ZXJuOiAoQSB8IEIpezIsfSAtIEFMVCBpbnNpZGUgdW5i b3VuZGVkIEdST1VQCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpezIsfSkKKyAgICBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworCistLSBO b24tQWJzb3JiYWJsZTogTmVzdGVkIFVuYm91bmRlZAorLS0gUGF0dGVybjogKChBIEIpKyBDKSsg LSBuZXN0ZWQgR1JPVVAgc3RydWN0dXJlCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgQikrIEMp KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gMzAgQU5EIHZhbCA8PSA2 MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIE5vbi1BYnNvcmJhYmxlOiBV bmJvdW5kZWQgRWxlbWVudCBJbnNpZGUgR1JPVVAKKy0tIFBhdHRlcm46IChBIEIrKXsyLH0gLSB1 bmJvdW5kZWQgaW5zaWRlIEdST1VQCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKyl7Mix9KQor ICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7 CisKKy0tIFJ1bnRpbWUgQ29uZGl0aW9uczogU0tJUCBUTyBORVhUIFJPVworLS0gQWJzb3JwdGlv biBkaXNhYmxlZCB3aXRoIFNLSVAgVE8gTkVYVCBST1cKKworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkg aWQ7CisKKy0tIFJ1bnRpbWUgQ29uZGl0aW9uczogTGltaXRlZCBGcmFtZQorLS0gQWJzb3JwdGlv biBkaXNhYmxlZCB3aXRoIGxpbWl0ZWQgZnJhbWUgZW5kCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDUgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEVkZ2UgQ2FzZSBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBib3VuZGFyeSBj b25kaXRpb25zIGFuZCBjb21wbGV4IHNjZW5hcmlvcworCistLSBFbXB0eSBNYXRjaCBQcmV2ZW50 aW9uCistLSBQYXR0ZXJuIHRoYXQgY291bGQgbWF0Y2ggZW1wdHk6IEEqCisKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAx MDAwICAtLSBOZXZlciBtYXRjaGVzCispCitPUkRFUiBCWSBpZDsKKworLS0gQWxsIFJvd3MgTWF0 Y2gKKy0tIFBhdHRlcm4gd2hlcmUgZXZlcnkgcm93IG1hdGNoZXMKKworU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+PSAwICAt LSBBbHdheXMgdHJ1ZQorKQorT1JERVIgQlkgaWQ7CisKKy0tIExhcmdlIFF1YW50aWZpZXJzCist LSBQYXR0ZXJuOiBBezEwMH0gKGxhcmdlIGV4YWN0IHF1YW50aWZpZXIpCisKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwMH0pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIFBhdHRlcm46IEF7MTAsMjB9IChsYXJnZSByYW5n ZSBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7 MTAsMjB9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBD b21wbGV4IE11bHRpLUxldmVsIE5lc3RpbmcKKy0tIFBhdHRlcm46ICgoKEEgQikgfCBDKSsgRCkr CisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIEIpIHwgQykr IEQpKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIgQVMgdmFsID4gMjAgQU5EIHZhbCA8 PSA0MCwKKyAgICAgICAgICAgQyBBUyB2YWwgPiA0MCBBTkQgdmFsIDw9IDYwLCBEIEFTIHZhbCA+ IDYwCispCitPUkRFUiBCWSBpZDsKKworLS0gTG9uZyBBbHRlcm5hdGlvbiBDaGFpbgorLS0gUGF0 dGVybjogQSB8IEIgfCBDIHwgRCB8IEUgKDUtd2F5IEFMVCkKKworU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEEgfCBCIHwgQyB8IEQgfCBFKQorICAgIERFRklORSBBIEFT IHZhbCA9IDEwLCBCIEFTIHZhbCA9IDMwLCBDIEFTIHZhbCA9IDUwLAorICAgICAgICAgICBEIEFT IHZhbCA9IDcwLCBFIEFTIHZhbCA9IDkwCispCitPUkRFUiBCWSBpZDsKKworLS0gTG9uZyBTZXF1 ZW5jZQorLS0gUGF0dGVybjogQSBCIEMgRCBFIEYgRyBIICg4LWVsZW1lbnQgU0VRKQorCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIEYgRyBIKQorICAg IERFRklORSBBIEFTIHZhbCA+PSAxMCwgQiBBUyB2YWwgPj0gMjAsIEMgQVMgdmFsID49IDMwLAor ICAgICAgICAgICBEIEFTIHZhbCA+PSA0MCwgRSBBUyB2YWwgPj0gNTAsIEYgQVMgdmFsID49IDYw LAorICAgICAgICAgICBHIEFTIHZhbCA+PSA3MCwgSCBBUyB2YWwgPj0gODAKKykKK09SREVSIEJZ IGlkOworCistLSBJbnRlcmxlYXZlZCBRdWFudGlmaWVycworLS0gUGF0dGVybjogQXsyfSBCKyBD ezMsNX0gRCogRXsxLH0KKworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7Mn0gQisgQ3szLDV9IEQqIEV7MSx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsID4gMCwgQyBBUyB2YWwgPiAwLAorICAgICAgICAgICBEIEFTIHZhbCA+IDAsIEUgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gT3B0aW1pemF0aW9uIEZhbGxiYWNr IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGZvciBvcHRpbWl6YXRpb24gZWRnZSBjYXNlcyBhbmQg ZmFsbGJhY2sgYmVoYXZpb3IKKworQ1JFQVRFIFRBQkxFIHJwcl9mYWxsYmFjayAoaWQgSU5ULCB2 YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9mYWxsYmFjayBWQUxVRVMgKDEsIDEwKSwgKDIsIDIw KTsKKworLS0gVGVzdDogbWluIHF1YW50aWZpZXIgb3ZlcmZsb3cgY2F1c2VzIG9wdGltaXphdGlv biBmYWxsYmFjayAobWluID09IG1heCBjYXNlKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MjAwMDAwMDAwMH0pezJ9KQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyk7CistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBwYXR0ZXJuIG5vdCBtZXJnZWQg ZHVlIHRvIG1pbiBvdmVyZmxvdyAoNDAwMDAwMDAwMCA+IElOVDMyX01BWCkKKworLS0gVGVzdDog bWF4LW9ubHkgcXVhbnRpZmllciBvdmVyZmxvdyBjYXVzZXMgb3B0aW1pemF0aW9uIGZhbGxiYWNr CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Zh bGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQXsxLDIw MDAwMDAwMDB9KXsyfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6 IEZhbGxiYWNrIC0gbWluIE9LICgyKjE9MiksIGJ1dCBtYXggb3ZlcmZsb3cgKDIqMjAwMDAwMDAw MCA+IElOVDMyX01BWCkKKworLS0gVGVzdDogbWF4IHF1YW50aWZpZXIgZXhjZWVkcyB2YWxpZCBy YW5nZSAoMjE0NzQ4MzY0NyA9IElOVF9NQVgsIGxpbWl0IGlzIDIxNDc0ODM2NDYpCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2ZhbGxiYWNrCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQXsyMDAwMDAwMDAwLDIx NDc0ODM2NDd9KXsyfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBUZXN0OiBu ZXN0ZWQgdW5ib3VuZGVkIHdpdGggbGFyZ2UgbWluIGNhdXNlcyBvdmVyZmxvdyBmYWxsYmFjawor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxs YmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MjAwMDAw MDAwMCx9KXsyMDAwMDAwMDAwLH0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4 cGVjdGVkOiBGYWxsYmFjayAtIG1pbiBvdmVyZmxvdyAoMjAwMDAwMDAwMCAqIDIwMDAwMDAwMDAg PiBJTlQzMl9NQVgpCisKKy0tIFRlc3Q6IHByZWZpeCBtaXNtYXRjaCBjYXVzZXMgb3B0aW1pemF0 aW9uIGZhbGxiYWNrCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIgKEMgRCkrKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gNSwg QyBBUyB2YWwgPiAxMCwgRCBBUyB2YWwgPiAxNQorKTsKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAt IHByZWZpeCBlbGVtZW50cyBkb24ndCBtYXRjaCBHUk9VUCBjb250ZW50CisKKy0tIFRlc3Q6IGNv bnNlY3V0aXZlIFZBUiBtZXJnZSB3aG9zZSBtaW4gc3VtIGlzIGV4YWN0bHkgSU5GIGNhdXNlcyBm YWxsYmFjay4KKy0tIDEwNzM3NDE4MjQgKyAxMDczNzQxODIzID0gMjE0NzQ4MzY0NyA9IElOVDMy X01BWCA9IFJQUl9RVUFOVElUWV9JTkYuCistLSBNZXJnaW5nIHdvdWxkIHlpZWxkIGEgVkFSIHdp dGggbWluID09IElORiwgc28gdGhlIG1lcmdlIG11c3QgZmFsbCBiYWNrIGFuZAorLS0gbGVhdmUg dGhlIHR3byBWQVJzIHVubWVyZ2VkIChtaXJyb3JzIHRoZSBtdWx0aXBseSBwYXRoJ3MgPj0gSU5G IGd1YXJkKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7MTA3Mzc0MTgyNCx9IEF7MTA3Mzc0MTgyMyx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBWQVJzIG5vdCBtZXJnZWQgKG1pbiBzdW0gMjE0 NzQ4MzY0NyA9PSBJTkYpCisKKy0tIFRlc3Q6IGNvbnNlY3V0aXZlIEdST1VQIG1lcmdlIHdob3Nl IG1pbiBzdW0gaXMgZXhhY3RseSBJTkYgY2F1c2VzIGZhbGxiYWNrLgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQil7MTA3Mzc0MTgyNCx9IChBIEIp ezEwNzM3NDE4MjMsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDUKKyk7 CistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBHUk9VUHMgbm90IG1lcmdlZCAobWluIHN1bSAyMTQ3 NDgzNjQ3ID09IElORikKKworRFJPUCBUQUJMRSBycHJfZmFsbGJhY2s7CisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g UGxhbm5lciBJbnRlZ3JhdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBmdWxsIHBsYW5uaW5n IHBpcGVsaW5lIGFuZCBXaW5kb3dBZ2cgcGxhbiBub2RlIGNyZWF0aW9uCistLSBGaWxlczogcGxh bm5lci5jLCBjcmVhdGVwbGFuLmMKKworQ1JFQVRFIFRBQkxFIHJwcl9wbGFubmVyIChpZCBJTlQs IGNhdGVnb3J5IFZBUkNIQVIoMTApLCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wbGFubmVy IFZBTFVFUworICAgICgxLCAnQScsIDEwKSwgKDIsICdBJywgMjApLCAoMywgJ0EnLCAzMCksCisg ICAgKDQsICdCJywgNDApLCAoNSwgJ0InLCA1MCksICg2LCAnQicsIDYwKSwKKyAgICAoNywgJ0Mn LCA3MCksICg4LCAnQycsIDgwKSwgKDksICdDJywgOTApOworCistLSBNdWx0aXBsZSBXaW5kb3cg RnVuY3Rpb25zIGluIFNhbWUgUXVlcnkKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAg ICBDT1VOVCgqKSBPVkVSIHcxIGFzIGNudDEsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MiBhcyBj bnQyCitGUk9NIHJwcl9wbGFubmVyCitXSU5ET1cgdzEgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKSwKK3cyIEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY2F0ZWdvcnkKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEIrKQorICAg IERFRklORSBCIEFTIHZhbCA+PSA0MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIFdpbmRvdyBGdW5j dGlvbiB3aXRoIFBBUlRJVElPTiBCWQorCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAg ICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbm5lcgorV0lORE9XIHcgQVMg KAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgY2F0ZWdvcnksIGlkOwor CistLSBXaW5kb3cgRnVuY3Rpb24gd2l0aCBDb21wbGV4IE9SREVSIEJZCisKK1NFTEVDVCBpZCwg Y2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9w bGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgY2F0ZWdvcnkgREVTQywgdmFsIEFT QworICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGNh dGVnb3J5IERFU0MsIHZhbCBBU0M7CisKKy0tIE5hbWVkIFdpbmRvdyBSZWZlcmVuY2UKKworU0VM RUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBJbmxp bmUgV2luZG93IERlZmluaXRpb24KKworU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAg IENPVU5UKCopIE9WRVIgKAorICAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAgICApIGFz IGNudAorRlJPTSBycHJfcGxhbm5lcgorT1JERVIgQlkgaWQ7CisKKy0tIFdpbmRvdyB3aXRoIEFn Z3JlZ2F0ZSBGdW5jdGlvbnMKK1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBPVkVS IHcgYXMgd2luZG93X2NudCwKKyAgICAgICBDT1VOVCgqKSBhcyBhZ2dfY250CitGUk9NIHJwcl9w bGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5CisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitHUk9V UCBCWSBjYXRlZ29yeQorT1JERVIgQlkgY2F0ZWdvcnk7CistLSAoR1JPVVAgQlkgYWZ0ZXIgV0lO RE9XIGNsYXVzZSBpcyBub3QgdmFsaWQgU1FMIHN5bnRheCkKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdWJxdWVy eSBhbmQgQ1RFIFRlc3RzCistLSBGaWxlczogcGxhbm5lci5jLCBwcmVwam9pbnRyZWUuYworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBUZXN0cyBSUFIgd2l0aCBzdWJxdWVyaWVzIGFuZCBDVEVzCisKKy0tIFJQUiBpbiBT dWJxdWVyeSAoRlJPTSBjbGF1c2UpCisKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBpZCwg Y2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZS T00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkK Kykgc3ViCitXSEVSRSBjbnQgPiA1CitPUkRFUiBCWSBpZDsKKworLS0gUlBSIHdpdGggU3VicXVl cnkgaW4gV0hFUkUKKworU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK1dIRVJFIHZhbCA+IChTRUxFQ1QgQVZH KHZhbCkgRlJPTSBycHJfcGxhbm5lcikKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsK KworLS0gQ1RFIHdpdGggUlBSCisKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNUIGlkLCBj YXRlZ29yeSwgdmFsLAorICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJP TSBycHJfcGxhbm5lcgorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQor KQorU0VMRUNUICogRlJPTSBycHJfY3RlIFdIRVJFIGNudCA+IDUgT1JERVIgQlkgaWQ7CisKKy0t IE11bHRpcGxlIENURSBSZWZlcmVuY2VzCisKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNU IGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250Cisg ICAgRlJPTSBycHJfcGxhbm5lcgorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisg ICAgKQorKQorU0VMRUNUIGMxLmlkLCBjMS5jbnQsIGMyLmNudCBhcyBjbnQyCitGUk9NIHJwcl9j dGUgYzEKK0pPSU4gcnByX2N0ZSBjMiBPTiBjMS5pZCA9IGMyLmlkCitPUkRFUiBCWSBjMS5pZDsK KworLS0gTmVzdGVkIENURXMKKworV0lUSCBjdGUxIEFTICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVn b3J5LCB2YWwgRlJPTSBycHJfcGxhbm5lciBXSEVSRSB2YWwgPiAzMAorKSwKK2N0ZTIgQVMgKAor ICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorICAgIEZST00gY3RlMQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAw CisgICAgKQorKQorU0VMRUNUICogRlJPTSBjdGUyIE9SREVSIEJZIGlkOworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEpPSU4gVGVzdHMKKy0tIEZpbGVzOiBwcmVwam9pbnRyZWUuYywgc2V0cmVmcy5jCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRlc3RzIFJQUiB3aXRoIEpPSU5zIGFuZCBtdWx0aXBsZSB0YWJsZSByZWZlcmVuY2VzCisK K0NSRUFURSBUQUJMRSBycHJfam9pbjEgKGlkIElOVCwgdmFsMSBJTlQpOworQ1JFQVRFIFRBQkxF IHJwcl9qb2luMiAoaWQgSU5ULCB2YWwyIElOVCk7CisKK0lOU0VSVCBJTlRPIHJwcl9qb2luMSBW QUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKSwgKDUsIDUwKTsKK0lOU0VS VCBJTlRPIHJwcl9qb2luMiBWQUxVRVMgKDEsIDEwMCksICgyLCAyMDApLCAoMywgMzAwKSwgKDQs IDQwMCksICg1LCA1MDApOworCistLSBSUFIgQWZ0ZXIgSU5ORVIgSk9JTgorCitTRUxFQ1QgdDEu aWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQxLmlkID0gdDIuaWQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHZhbDEgKyB2YWwyID4gMTAwCispCitPUkRFUiBCWSB0MS5pZDsKKworLS0gUlBS IEFmdGVyIExFRlQgSk9JTgorCitTRUxFQ1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAg ICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0xFRlQgSk9JTiBy cHJfam9pbjIgdDIgT04gdDEuaWQgPSB0Mi5pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IHQxLmlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsMSA+IDAKKykKK09SREVS IEJZIHQxLmlkOworCistLSBSUFIgd2l0aCBNdWx0aXBsZSBUYWJsZXMgaW4gREVGSU5FCisKK1NF TEVDVCB0MS5pZCwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9qb2luMSB0MQorSU5ORVIgSk9JTiBycHJfam9pbjIgdDIgT04gdDEuaWQg PSB0Mi5pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHQxLmlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUgQSBBUyB2YWwxID4gMjAsCisgICAgICAgICAgIEIgQVMgdmFsMiA+IDIw MAorKQorT1JERVIgQlkgdDEuaWQ7CisKKy0tIFJQUiBBZnRlciBDcm9zcyBKb2luCisKK1NFTEVD VCB0MS5pZCBhcyBpZDEsIHQyLmlkIGFzIGlkMiwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9qb2luMSB0MQorQ1JPU1MgSk9JTiBycHJf am9pbjIgdDIKK1dIRVJFIHQxLmlkIDw9IDIgQU5EIHQyLmlkIDw9IDIKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSB0MS5pZCwgdDIuaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyB2YWwxICsgdmFsMiA+IDAKKykKK09SREVSIEJZIHQxLmlkLCB0Mi5pZDsKKworLS0gU2VsZi1K b2luIHdpdGggUlBSCisKK1NFTEVDVCBpZCwgdmFsMSwgdmFsMV9uZXh0LAorICAgICAgIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gKFNFTEVDVCBhLmlkLCBhLnZhbDEsIGIudmFsMSBhcyB2 YWwxX25leHQKKyAgICAgIEZST00gcnByX2pvaW4xIGEKKyAgICAgIElOTkVSIEpPSU4gcnByX2pv aW4xIGIgT04gYS5pZCArIDEgPSBiLmlkKSBzdWIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKFgrKQorICAgIERFRklORSBYIEFTIHZhbDEgPCB2YWwxX25leHQKKykK K09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9qb2luMSwgcnByX2pvaW4yOworCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIENvbXBsZXggRXhwcmVzc2lvbiBUZXN0cworLS0gRmlsZXM6IGNyZWF0ZXBsYW4uYywg c2V0cmVmcy5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGNvbXBsZXggdGFyZ2V0IGxpc3QgZXhwcmVzc2lv bnMKKworQ1JFQVRFIFRBQkxFIHJwcl90YXJnZXQgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQg SU5UTyBycHJfdGFyZ2V0IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDAp LCAoNSwgNTApOworCistLSBFeHByZXNzaW9ucyBpbiBUYXJnZXQgTGlzdAorCitTRUxFQ1QgaWQs CisgICAgICAgdmFsICogMiBhcyBkb3VibGVkLAorICAgICAgIHZhbCArIDEwIGFzIGFkZGVkLAor ICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIENBU0UgRXhwcmVzc2lvbiBpbiBUYXJnZXQgTGlz dAorCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDQVNFCisgICAgICAgICAgIFdIRU4gdmFsIDwg MzAgVEhFTiAnbG93JworICAgICAgICAgICBXSEVOIHZhbCA8IDUwIFRIRU4gJ21lZGl1bScKKyAg ICAgICAgICAgRUxTRSAnaGlnaCcKKyAgICAgICBFTkQgYXMgY2F0ZWdvcnksCisgICAgICAgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitP UkRFUiBCWSBpZDsKKworLS0gU3VicXVlcnkgaW4gVGFyZ2V0IExpc3QKKworU0VMRUNUIGlkLCB2 YWwsCisgICAgICAgKFNFTEVDVCBNQVgodmFsKSBGUk9NIHJwcl90YXJnZXQpIGFzIG1heF92YWws CisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gRnVuY3Rpb24gQ2FsbHMgaW4gVGFyZ2V0IExp c3QKKworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09BTEVTQ0UodmFsLCAwKSBhcyBjb2FsZXNj ZWQsCisgICAgICAgQUJTKHZhbCAtIDMwKSBhcyBkaXN0YW5jZSwKKyAgICAgICBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworCistLSBDb2x1bW4gQWxpYXNlcyBhbmQgUmVmZXJlbmNlcworCitTRUxFQ1QgaWQgYXMg cm93X2lkLAorICAgICAgIHZhbCBhcyB2YWx1ZSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIHJvd19pZDsK KworRFJPUCBUQUJMRSBycHJfdGFyZ2V0OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNldCBPcGVyYXRpb25zIFRl c3RzCistLSBGaWxlczogcGxhbm5lci5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQUiB3aXRoIFVOSU9O LCBJTlRFUlNFQ1QsIEVYQ0VQVAorCitDUkVBVEUgVEFCTEUgcnByX3NldDEgKGlkIElOVCwgdmFs IElOVCk7CitDUkVBVEUgVEFCTEUgcnByX3NldDIgKGlkIElOVCwgdmFsIElOVCk7CisKK0lOU0VS VCBJTlRPIHJwcl9zZXQxIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworSU5TRVJU IElOVE8gcnByX3NldDIgVkFMVUVTICgyLCAyMCksICgzLCAzMCksICg0LCA0MCk7CisKKy0tIFVO SU9OIHdpdGggUlBSCisKKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor IEZST00gcnByX3NldDEKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9SREVSIEJZIGlkCisgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICBQQVRU RVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkpCitVTklPTgorKFNFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3 IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBB UyB2YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOworCistLSBVTklPTiBBTEwgd2l0aCBSUFIKKwor KFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQor IFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK1VOSU9OIEFMTAorKFNFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFTICgKKyAgICAg T1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisg KSkKK09SREVSIEJZIGlkLCB2YWw7CisKKy0tIElOVEVSU0VDVCB3aXRoIFJQUgorCisoU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisgV0lORE9X IHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyApKQorSU5URVJTRUNUCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBC WSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorT1JE RVIgQlkgaWQ7CisKKy0tIEVYQ0VQVCB3aXRoIFJQUgorCisoU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisgV0lORE9XIHcgQVMgKAorICAgICBP UkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAp KQorRVhDRVBUCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9N IHJwcl9zZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAo QSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorT1JERVIgQlkgaWQ7CisKK0RST1Ag VEFCTEUgcnByX3NldDEsIHJwcl9zZXQyOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNvcnRpbmcgYW5kIEdyb3Vw aW5nIFRlc3RzCistLSBGaWxlczogcGxhbm5lci5jLCBjcmVhdGVwbGFuLmMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g VGVzdHMgUlBSIGludGVyYWN0aW9uIHdpdGggc29ydGluZyBhbmQgZ3JvdXBpbmcKKworQ1JFQVRF IFRBQkxFIHJwcl9zb3J0IChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIoMTApLCB2YWwgSU5UKTsK K0lOU0VSVCBJTlRPIHJwcl9zb3J0IFZBTFVFUworICAgICgxLCAnQScsIDMwKSwgKDIsICdCJywg MjApLCAoMywgJ0EnLCAxMCksCisgICAgKDQsICdCJywgNDApLCAoNSwgJ0EnLCA1MCksICg2LCAn QicsIDYwKTsKKworLS0gUlBSIHdpdGggR1JPVVAgQlkgKGFnZ3JlZ2F0ZSBpbiBERUZJTkUgLT4g RVJST1IgYmVmb3JlIEdST1VQIEJZIGludGVyYWN0aW9uKQorCitTRUxFQ1QgY2F0ZWdvcnksCisg ICAgICAgQ09VTlQoKikgYXMgZ3JvdXBfY250LAorICAgICAgIE1BWCh2YWwpIGFzIG1heF92YWws CisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIHdpbmRvd19jbnQKK0ZST00gcnByX3NvcnQKK0dS T1VQIEJZIGNhdGVnb3J5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgY2F0ZWdvcnkKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKykKK09SREVSIEJZIGNh dGVnb3J5OworCistLSBSUFIgd2l0aCBIQVZJTkcgKHNhbWUgYWdncmVnYXRlLWluLURFRklORSBl cnJvcikKKworU0VMRUNUIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIGFzIGdyb3VwX2NudCwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgd2luZG93X2NudAorRlJPTSBycHJfc29ydAorR1JP VVAgQlkgY2F0ZWdvcnkKK0hBVklORyBDT1VOVCgqKSA+IDIKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBjYXRlZ29yeQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIENPVU5UKCop ID4gMAorKQorT1JERVIgQlkgY2F0ZWdvcnk7CisKKy0tIFJQUiB3aXRoIERJU1RJTkNUCisKK1NF TEVDVCBESVNUSU5DVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5Cisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp CitPUkRFUiBCWSBjYXRlZ29yeTsKKworLS0gUlBSIHdpdGggT1JERVIgQlkgKGRpZmZlcmVudCBm cm9tIHdpbmRvdyBPUkRFUiBCWSkKKworU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykK K09SREVSIEJZIHZhbCBERVNDOworCistLSBSUFIgd2l0aCBMSU1JVCBhbmQgT0ZGU0VUCisKK1NF TEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZAorTElNSVQgMyBPRkZT RVQgMTsKKworRFJPUCBUQUJMRSBycHJfc29ydDsKKworLS0gU1FMIGZ1bmN0aW9uIGlubGluaW5n OiAkMSBpbiBERUZJTkUgbXVzdCBiZSBzdWJzdGl0dXRlZCBieQorLS0gc3Vic3RpdHV0ZV9hY3R1 YWxfcGFyYW1ldGVyc19pbl9mcm9tIHZpYSBxdWVyeV90cmVlX211dGF0b3IuCitDUkVBVEUgVEFC TEUgcnByX3NyZl90ICh2IGludCk7CitJTlNFUlQgSU5UTyBycHJfc3JmX3QgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCA1KTsKKworQ1JFQVRFIEZVTkNUSU9OIHJwcl9zcmZfZih0aHJlc2hvbGQg aW50KQorUkVUVVJOUyBUQUJMRSAodiBpbnQsIGNudCBiaWdpbnQpCitMQU5HVUFHRSBzcWwgU1RB QkxFIEFTICQkCisgICAgU0VMRUNUIHY6OmludCwgY291bnQoKikgT1ZFUiB3CisgICAgRlJPTSBy cHJfc3JmX3QKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIHYKKyAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg IFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2ID4gJDEKKyAgICApCiskJDsKKwor U0VMRUNUIHYsIGNudCBGUk9NIHJwcl9zcmZfZigzKSBPUkRFUiBCWSB2OworCitEUk9QIFRBQkxF IHJwcl9zcmZfdDsKK0RST1AgRlVOQ1RJT04gcnByX3NyZl9mKGludCk7CisKK0RST1AgVEFCTEUg cnByX3BsYW5uZXI7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RyZXNzIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVkZ2Ug Y2FzZXMgYW5kIHN0cmVzcyBzY2VuYXJpb3MKKworQ1JFQVRFIFRBQkxFIHJwcl9zdHJlc3MgKGlk IElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc3RyZXNzIFNFTEVDVCBpLCBpICogMTAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGk7CisKKy0tIFZlcnkgTG9uZyBRdWVyeSB3aXRo IE1hbnkgV2luZG93cworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MSBh cyBjbnQxLAorICAgICAgIENPVU5UKCopIE9WRVIgdzIgYXMgY250MiwKKyAgICAgICBDT1VOVCgq KSBPVkVSIHczIGFzIGNudDMKK0ZST00gcnByX3N0cmVzcworV0lORE9XIHcxIEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyksCit3 MiBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChCKykKKyAgICBERUZJTkUgQiBBUyB2 YWwgPiA1MAorKSwKK3czIEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMrKQorICAg IERFRklORSBDIEFTIHZhbCA+IDEwMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIERlZXBseSBOZXN0 ZWQgU3VicXVlcmllcyB3aXRoIFJQUgorCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgKiBG Uk9NICgKKyAgICAgICAgU0VMRUNUICogRlJPTSAoCisgICAgICAgICAgICBTRUxFQ1QgaWQsIHZh bCwKKyAgICAgICAgICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgICAgICAg ICBGUk9NIHJwcl9zdHJlc3MKKyAgICAgICAgICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgICAg ICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgICAgIFBBVFRFUk4gKEErKQor ICAgICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAgICAgICAgICkKKyAgICAg ICAgKSBzdWIxCisgICAgKSBzdWIyCispIHN1YjMKK1dIRVJFIGNudCA+IDEwCitPUkRFUiBCWSBp ZDsKKworLS0gQ29tcGxleCBFeHByZXNzaW9uIGluIERFRklORSBDbGF1c2UKKworU0VMRUNUIGlk LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc3RyZXNzCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklO RSBBIEFTICh2YWwgJSAzID0gMCBPUiB2YWwgJSA1ID0gMCksCisgICAgICAgICAgIEIgQVMgKHZh bCAqIDIgPiAxMDAgQU5EIHZhbCAvIDIgPCAxMDApCispCitPUkRFUiBCWSBpZDsKKworLS0gV2lu ZG93IHdpdGggTm8gTWF0Y2hpbmcgUm93cworCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dIRVJFIHZhbCA+IDEwMDAgIC0t IE5vIHJvd3MgbWF0Y2gKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBXaW5k b3cgb24gU2luZ2xlIFJvdworCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dIRVJFIGlkID0gMTAKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9zdHJlc3M7CisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g RXJyb3IgTGltaXQgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9yIGVycm9yIGNvbmRpdGlvbnMg aW4gcnByLmMKKworQ1JFQVRFIFRBQkxFIHJwcl9lcnJvcnMgKGlkIElOVCwgdmFsIElOVCk7CitJ TlNFUlQgSU5UTyBycHJfZXJyb3JzIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworCistLSBUZXN0 OiBERUZJTkUgdmFyaWFibGUgbm90IGluIFBBVFRFUk4gKGVycm9yKQorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FCisgICAgICBCIEFTIFRSVUUKKyk7Cist LSBFeHBlY3RlZDogRXJyb3IgLSBCIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4KKworLS0gVGVzdDog MjQwIHZhcmlhYmxlcyBpbiBQQVRURVJOIGFuZCBERUZJTkUgKGJvdW5kYXJ5IC0gc2hvdWxkIHN1 Y2NlZWQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycworV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQgVjUgVjYgVjcgVjgg VjkgVjEwIFYxMSBWMTIgVjEzIFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYyMCBWMjEgVjIyIFYy MyBWMjQgVjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3 IFYzOCBWMzkgVjQwIFY0MSBWNDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDggVjQ5IFY1MCBWNTEg VjUyIFY1MyBWNTQgVjU1IFY1NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBWNjMgVjY0IFY2NSBW NjYgVjY3IFY2OCBWNjkgVjcwIFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3NyBWNzggVjc5IFY4 MCBWODEgVjgyIFY4MyBWODQgVjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5MiBWOTMgVjk0 IFY5NSBWOTYgVjk3IFY5OCBWOTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0IFYxMDUgVjEwNiBW MTA3IFYxMDggVjEwOSBWMTEwIFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBWMTE2IFYxMTcgVjEx OCBWMTE5IFYxMjAgVjEyMSBWMTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEyNyBWMTI4IFYxMjkg VjEzMCBWMTMxIFYxMzIgVjEzMyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzggVjEzOSBWMTQwIFYx NDEgVjE0MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYxNTAgVjE1MSBWMTUy IFYxNTMgVjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYxIFYxNjIgVjE2MyBW MTY0IFYxNjUgVjE2NiBWMTY3IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBWMTczIFYxNzQgVjE3 NSBWMTc2IFYxNzcgVjE3OCBWMTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4NCBWMTg1IFYxODYg VjE4NyBWMTg4IFYxODkgVjE5MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUgVjE5NiBWMTk3IFYx OTggVjE5OSBWMjAwIFYyMDEgVjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIwOCBWMjA5 IFYyMTAgVjIxMSBWMjEyIFYyMTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkgVjIyMCBW MjIxIFYyMjIgVjIyMyBWMjI0IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBWMjMwIFYyMzEgVjIz MiBWMjMzIFYyMzQgVjIzNSBWMjM2IFYyMzcgVjIzOCBWMjM5IFYyNDApCisgICAgREVGSU5FCisg ICAgVjEgQVMgdmFsID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFs ID4gMCwgVjUgQVMgdmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMg dmFsID4gMCwgVjkgQVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+ IDAsIFYxMiBBUyB2YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBB UyB2YWwgPiAwLCBWMTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAw LCBWMTkgQVMgdmFsID4gMCwgVjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYy MiBBUyB2YWwgPiAwLCBWMjMgQVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwg PiAwLCBWMjYgQVMgdmFsID4gMCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkg QVMgdmFsID4gMCwgVjMwIEFTIHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2 YWwgPiAwLCBWMzMgQVMgdmFsID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBW MzYgQVMgdmFsID4gMCwgVjM3IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFs ID4gMCwgVjQwIEFTIHZhbCA+IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAw LCBWNDMgQVMgdmFsID4gMCwgVjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMg dmFsID4gMCwgVjQ3IEFTIHZhbCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwg VjUwIEFTIHZhbCA+IDAsCisgICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMg QVMgdmFsID4gMCwgVjU0IEFTIHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4g MCwgVjU3IEFTIHZhbCA+IDAsIFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFT IHZhbCA+IDAsCisgICAgVjYxIEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFs ID4gMCwgVjY0IEFTIHZhbCA+IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3 IEFTIHZhbCA+IDAsIFY2OCBBUyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+ IDAsCisgICAgVjcxIEFTIHZhbCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwg Vjc0IEFTIHZhbCA+IDAsIFY3NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZh bCA+IDAsIFY3OCBBUyB2YWwgPiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisg ICAgVjgxIEFTIHZhbCA+IDAsIFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFT IHZhbCA+IDAsIFY4NSBBUyB2YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAs IFY4OCBBUyB2YWwgPiAwLCBWODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkx IEFTIHZhbCA+IDAsIFY5MiBBUyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+ IDAsIFY5NSBBUyB2YWwgPiAwLCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBB UyB2YWwgPiAwLCBWOTkgQVMgdmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMg dmFsID4gMCwgVjEwMiBBUyB2YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4g MCwgVjEwNSBBUyB2YWwgPiAwLCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEw OCBBUyB2YWwgPiAwLCBWMTA5IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTEx IEFTIHZhbCA+IDAsIFYxMTIgQVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZh bCA+IDAsIFYxMTUgQVMgdmFsID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAs IFYxMTggQVMgdmFsID4gMCwgVjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAg VjEyMSBBUyB2YWwgPiAwLCBWMTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBB UyB2YWwgPiAwLCBWMTI1IEFTIHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwg PiAwLCBWMTI4IEFTIHZhbCA+IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAor ICAgIFYxMzEgQVMgdmFsID4gMCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYx MzQgQVMgdmFsID4gMCwgVjEzNSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMg dmFsID4gMCwgVjEzOCBBUyB2YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4g MCwKKyAgICBWMTQxIEFTIHZhbCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAw LCBWMTQ0IEFTIHZhbCA+IDAsIFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3 IEFTIHZhbCA+IDAsIFYxNDggQVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZh bCA+IDAsCisgICAgVjE1MSBBUyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFs ID4gMCwgVjE1NCBBUyB2YWwgPiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwg VjE1NyBBUyB2YWwgPiAwLCBWMTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBB UyB2YWwgPiAwLAorICAgIFYxNjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFT IHZhbCA+IDAsIFYxNjQgQVMgdmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+ IDAsIFYxNjcgQVMgdmFsID4gMCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYx NzAgQVMgdmFsID4gMCwKKyAgICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3 MyBBUyB2YWwgPiAwLCBWMTc0IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2 YWwgPiAwLCBWMTc3IEFTIHZhbCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAw LCBWMTgwIEFTIHZhbCA+IDAsCisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAs IFYxODMgQVMgdmFsID4gMCwgVjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYg QVMgdmFsID4gMCwgVjE4NyBBUyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFs ID4gMCwgVjE5MCBBUyB2YWwgPiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwg PiAwLCBWMTkzIEFTIHZhbCA+IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBW MTk2IEFTIHZhbCA+IDAsIFYxOTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFT IHZhbCA+IDAsIFYyMDAgQVMgdmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMg dmFsID4gMCwgVjIwMyBBUyB2YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4g MCwgVjIwNiBBUyB2YWwgPiAwLCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIw OSBBUyB2YWwgPiAwLCBWMjEwIEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEy IEFTIHZhbCA+IDAsIFYyMTMgQVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZh bCA+IDAsIFYyMTYgQVMgdmFsID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAs IFYyMTkgQVMgdmFsID4gMCwgVjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwg VjIyMiBBUyB2YWwgPiAwLCBWMjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBB UyB2YWwgPiAwLCBWMjI2IEFTIHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwg PiAwLCBWMjI5IEFTIHZhbCA+IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+ IDAsIFYyMzIgQVMgdmFsID4gMCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYy MzUgQVMgdmFsID4gMCwgVjIzNiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMg dmFsID4gMCwgVjIzOSBBUyB2YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAKKyk7CistLSBFeHBlY3Rl ZDogU3VjY2VzcyAtIGV4YWN0bHkgYXQgUlBSX1ZBUklEX01BWCBib3VuZGFyeQorCistLSBFUlJP UjogMjQxIHZhcmlhYmxlcyBpbiBQQVRURVJOLCAyNDAgaW4gREVGSU5FIChleGNlZWRzIGxpbWl0 IHdpdGggaW1wbGljaXQgVFJVRSkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJy b3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChWMSBWMiBWMyBW NCBWNSBWNiBWNyBWOCBWOSBWMTAgVjExIFYxMiBWMTMgVjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkg VjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUgVjI2IFYyNyBWMjggVjI5IFYzMCBWMzEgVjMyIFYzMyBW MzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBWNDAgVjQxIFY0MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0 OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYy IFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4IFY2OSBWNzAgVjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYg Vjc3IFY3OCBWNzkgVjgwIFY4MSBWODIgVjgzIFY4NCBWODUgVjg2IFY4NyBWODggVjg5IFY5MCBW OTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBWOTcgVjk4IFY5OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYx MDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBWMTA5IFYxMTAgVjExMSBWMTEyIFYxMTMgVjExNCBWMTE1 IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEyMCBWMTIxIFYxMjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBW MTI3IFYxMjggVjEyOSBWMTMwIFYxMzEgVjEzMiBWMTMzIFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEz OCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYxNDMgVjE0NCBWMTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkg VjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0IFYxNTUgVjE1NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYx NjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcgVjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcy IFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYxNzkgVjE4MCBWMTgxIFYxODIgVjE4MyBW MTg0IFYxODUgVjE4NiBWMTg3IFYxODggVjE4OSBWMTkwIFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5 NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYyMDAgVjIwMSBWMjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYg VjIwNyBWMjA4IFYyMDkgVjIxMCBWMjExIFYyMTIgVjIxMyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYy MTggVjIxOSBWMjIwIFYyMjEgVjIyMiBWMjIzIFYyMjQgVjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5 IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBW MjQxKQorICAgIERFRklORQorICAgIFYxIEFTIHZhbCA+IDAsIFYyIEFTIHZhbCA+IDAsIFYzIEFT IHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFTIHZhbCA+IDAsIFY2IEFTIHZhbCA+IDAsIFY3 IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5IEFTIHZhbCA+IDAsIFYxMCBBUyB2YWwgPiAw LAorICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMgdmFsID4gMCwgVjEzIEFTIHZhbCA+IDAsIFYx NCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwgVjE2IEFTIHZhbCA+IDAsIFYxNyBBUyB2YWwg PiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZhbCA+IDAsIFYyMCBBUyB2YWwgPiAwLAorICAg IFYyMSBBUyB2YWwgPiAwLCBWMjIgQVMgdmFsID4gMCwgVjIzIEFTIHZhbCA+IDAsIFYyNCBBUyB2 YWwgPiAwLCBWMjUgQVMgdmFsID4gMCwgVjI2IEFTIHZhbCA+IDAsIFYyNyBBUyB2YWwgPiAwLCBW MjggQVMgdmFsID4gMCwgVjI5IEFTIHZhbCA+IDAsIFYzMCBBUyB2YWwgPiAwLAorICAgIFYzMSBB UyB2YWwgPiAwLCBWMzIgQVMgdmFsID4gMCwgVjMzIEFTIHZhbCA+IDAsIFYzNCBBUyB2YWwgPiAw LCBWMzUgQVMgdmFsID4gMCwgVjM2IEFTIHZhbCA+IDAsIFYzNyBBUyB2YWwgPiAwLCBWMzggQVMg dmFsID4gMCwgVjM5IEFTIHZhbCA+IDAsIFY0MCBBUyB2YWwgPiAwLAorICAgIFY0MSBBUyB2YWwg PiAwLCBWNDIgQVMgdmFsID4gMCwgVjQzIEFTIHZhbCA+IDAsIFY0NCBBUyB2YWwgPiAwLCBWNDUg QVMgdmFsID4gMCwgVjQ2IEFTIHZhbCA+IDAsIFY0NyBBUyB2YWwgPiAwLCBWNDggQVMgdmFsID4g MCwgVjQ5IEFTIHZhbCA+IDAsIFY1MCBBUyB2YWwgPiAwLAorICAgIFY1MSBBUyB2YWwgPiAwLCBW NTIgQVMgdmFsID4gMCwgVjUzIEFTIHZhbCA+IDAsIFY1NCBBUyB2YWwgPiAwLCBWNTUgQVMgdmFs ID4gMCwgVjU2IEFTIHZhbCA+IDAsIFY1NyBBUyB2YWwgPiAwLCBWNTggQVMgdmFsID4gMCwgVjU5 IEFTIHZhbCA+IDAsIFY2MCBBUyB2YWwgPiAwLAorICAgIFY2MSBBUyB2YWwgPiAwLCBWNjIgQVMg dmFsID4gMCwgVjYzIEFTIHZhbCA+IDAsIFY2NCBBUyB2YWwgPiAwLCBWNjUgQVMgdmFsID4gMCwg VjY2IEFTIHZhbCA+IDAsIFY2NyBBUyB2YWwgPiAwLCBWNjggQVMgdmFsID4gMCwgVjY5IEFTIHZh bCA+IDAsIFY3MCBBUyB2YWwgPiAwLAorICAgIFY3MSBBUyB2YWwgPiAwLCBWNzIgQVMgdmFsID4g MCwgVjczIEFTIHZhbCA+IDAsIFY3NCBBUyB2YWwgPiAwLCBWNzUgQVMgdmFsID4gMCwgVjc2IEFT IHZhbCA+IDAsIFY3NyBBUyB2YWwgPiAwLCBWNzggQVMgdmFsID4gMCwgVjc5IEFTIHZhbCA+IDAs IFY4MCBBUyB2YWwgPiAwLAorICAgIFY4MSBBUyB2YWwgPiAwLCBWODIgQVMgdmFsID4gMCwgVjgz IEFTIHZhbCA+IDAsIFY4NCBBUyB2YWwgPiAwLCBWODUgQVMgdmFsID4gMCwgVjg2IEFTIHZhbCA+ IDAsIFY4NyBBUyB2YWwgPiAwLCBWODggQVMgdmFsID4gMCwgVjg5IEFTIHZhbCA+IDAsIFY5MCBB UyB2YWwgPiAwLAorICAgIFY5MSBBUyB2YWwgPiAwLCBWOTIgQVMgdmFsID4gMCwgVjkzIEFTIHZh bCA+IDAsIFY5NCBBUyB2YWwgPiAwLCBWOTUgQVMgdmFsID4gMCwgVjk2IEFTIHZhbCA+IDAsIFY5 NyBBUyB2YWwgPiAwLCBWOTggQVMgdmFsID4gMCwgVjk5IEFTIHZhbCA+IDAsIFYxMDAgQVMgdmFs ID4gMCwKKyAgICBWMTAxIEFTIHZhbCA+IDAsIFYxMDIgQVMgdmFsID4gMCwgVjEwMyBBUyB2YWwg PiAwLCBWMTA0IEFTIHZhbCA+IDAsIFYxMDUgQVMgdmFsID4gMCwgVjEwNiBBUyB2YWwgPiAwLCBW MTA3IEFTIHZhbCA+IDAsIFYxMDggQVMgdmFsID4gMCwgVjEwOSBBUyB2YWwgPiAwLCBWMTEwIEFT IHZhbCA+IDAsCisgICAgVjExMSBBUyB2YWwgPiAwLCBWMTEyIEFTIHZhbCA+IDAsIFYxMTMgQVMg dmFsID4gMCwgVjExNCBBUyB2YWwgPiAwLCBWMTE1IEFTIHZhbCA+IDAsIFYxMTYgQVMgdmFsID4g MCwgVjExNyBBUyB2YWwgPiAwLCBWMTE4IEFTIHZhbCA+IDAsIFYxMTkgQVMgdmFsID4gMCwgVjEy MCBBUyB2YWwgPiAwLAorICAgIFYxMjEgQVMgdmFsID4gMCwgVjEyMiBBUyB2YWwgPiAwLCBWMTIz IEFTIHZhbCA+IDAsIFYxMjQgQVMgdmFsID4gMCwgVjEyNSBBUyB2YWwgPiAwLCBWMTI2IEFTIHZh bCA+IDAsIFYxMjcgQVMgdmFsID4gMCwgVjEyOCBBUyB2YWwgPiAwLCBWMTI5IEFTIHZhbCA+IDAs IFYxMzAgQVMgdmFsID4gMCwKKyAgICBWMTMxIEFTIHZhbCA+IDAsIFYxMzIgQVMgdmFsID4gMCwg VjEzMyBBUyB2YWwgPiAwLCBWMTM0IEFTIHZhbCA+IDAsIFYxMzUgQVMgdmFsID4gMCwgVjEzNiBB UyB2YWwgPiAwLCBWMTM3IEFTIHZhbCA+IDAsIFYxMzggQVMgdmFsID4gMCwgVjEzOSBBUyB2YWwg PiAwLCBWMTQwIEFTIHZhbCA+IDAsCisgICAgVjE0MSBBUyB2YWwgPiAwLCBWMTQyIEFTIHZhbCA+ IDAsIFYxNDMgQVMgdmFsID4gMCwgVjE0NCBBUyB2YWwgPiAwLCBWMTQ1IEFTIHZhbCA+IDAsIFYx NDYgQVMgdmFsID4gMCwgVjE0NyBBUyB2YWwgPiAwLCBWMTQ4IEFTIHZhbCA+IDAsIFYxNDkgQVMg dmFsID4gMCwgVjE1MCBBUyB2YWwgPiAwLAorICAgIFYxNTEgQVMgdmFsID4gMCwgVjE1MiBBUyB2 YWwgPiAwLCBWMTUzIEFTIHZhbCA+IDAsIFYxNTQgQVMgdmFsID4gMCwgVjE1NSBBUyB2YWwgPiAw LCBWMTU2IEFTIHZhbCA+IDAsIFYxNTcgQVMgdmFsID4gMCwgVjE1OCBBUyB2YWwgPiAwLCBWMTU5 IEFTIHZhbCA+IDAsIFYxNjAgQVMgdmFsID4gMCwKKyAgICBWMTYxIEFTIHZhbCA+IDAsIFYxNjIg QVMgdmFsID4gMCwgVjE2MyBBUyB2YWwgPiAwLCBWMTY0IEFTIHZhbCA+IDAsIFYxNjUgQVMgdmFs ID4gMCwgVjE2NiBBUyB2YWwgPiAwLCBWMTY3IEFTIHZhbCA+IDAsIFYxNjggQVMgdmFsID4gMCwg VjE2OSBBUyB2YWwgPiAwLCBWMTcwIEFTIHZhbCA+IDAsCisgICAgVjE3MSBBUyB2YWwgPiAwLCBW MTcyIEFTIHZhbCA+IDAsIFYxNzMgQVMgdmFsID4gMCwgVjE3NCBBUyB2YWwgPiAwLCBWMTc1IEFT IHZhbCA+IDAsIFYxNzYgQVMgdmFsID4gMCwgVjE3NyBBUyB2YWwgPiAwLCBWMTc4IEFTIHZhbCA+ IDAsIFYxNzkgQVMgdmFsID4gMCwgVjE4MCBBUyB2YWwgPiAwLAorICAgIFYxODEgQVMgdmFsID4g MCwgVjE4MiBBUyB2YWwgPiAwLCBWMTgzIEFTIHZhbCA+IDAsIFYxODQgQVMgdmFsID4gMCwgVjE4 NSBBUyB2YWwgPiAwLCBWMTg2IEFTIHZhbCA+IDAsIFYxODcgQVMgdmFsID4gMCwgVjE4OCBBUyB2 YWwgPiAwLCBWMTg5IEFTIHZhbCA+IDAsIFYxOTAgQVMgdmFsID4gMCwKKyAgICBWMTkxIEFTIHZh bCA+IDAsIFYxOTIgQVMgdmFsID4gMCwgVjE5MyBBUyB2YWwgPiAwLCBWMTk0IEFTIHZhbCA+IDAs IFYxOTUgQVMgdmFsID4gMCwgVjE5NiBBUyB2YWwgPiAwLCBWMTk3IEFTIHZhbCA+IDAsIFYxOTgg QVMgdmFsID4gMCwgVjE5OSBBUyB2YWwgPiAwLCBWMjAwIEFTIHZhbCA+IDAsCisgICAgVjIwMSBB UyB2YWwgPiAwLCBWMjAyIEFTIHZhbCA+IDAsIFYyMDMgQVMgdmFsID4gMCwgVjIwNCBBUyB2YWwg PiAwLCBWMjA1IEFTIHZhbCA+IDAsIFYyMDYgQVMgdmFsID4gMCwgVjIwNyBBUyB2YWwgPiAwLCBW MjA4IEFTIHZhbCA+IDAsIFYyMDkgQVMgdmFsID4gMCwgVjIxMCBBUyB2YWwgPiAwLAorICAgIFYy MTEgQVMgdmFsID4gMCwgVjIxMiBBUyB2YWwgPiAwLCBWMjEzIEFTIHZhbCA+IDAsIFYyMTQgQVMg dmFsID4gMCwgVjIxNSBBUyB2YWwgPiAwLCBWMjE2IEFTIHZhbCA+IDAsIFYyMTcgQVMgdmFsID4g MCwgVjIxOCBBUyB2YWwgPiAwLCBWMjE5IEFTIHZhbCA+IDAsIFYyMjAgQVMgdmFsID4gMCwKKyAg ICBWMjIxIEFTIHZhbCA+IDAsIFYyMjIgQVMgdmFsID4gMCwgVjIyMyBBUyB2YWwgPiAwLCBWMjI0 IEFTIHZhbCA+IDAsIFYyMjUgQVMgdmFsID4gMCwgVjIyNiBBUyB2YWwgPiAwLCBWMjI3IEFTIHZh bCA+IDAsIFYyMjggQVMgdmFsID4gMCwgVjIyOSBBUyB2YWwgPiAwLCBWMjMwIEFTIHZhbCA+IDAs CisgICAgVjIzMSBBUyB2YWwgPiAwLCBWMjMyIEFTIHZhbCA+IDAsIFYyMzMgQVMgdmFsID4gMCwg VjIzNCBBUyB2YWwgPiAwLCBWMjM1IEFTIHZhbCA+IDAsIFYyMzYgQVMgdmFsID4gMCwgVjIzNyBB UyB2YWwgPiAwLCBWMjM4IEFTIHZhbCA+IDAsIFYyMzkgQVMgdmFsID4gMCwgVjI0MCBBUyB2YWwg PiAwCispOworCistLSBUZXN0OiBQYXR0ZXJuIG5lc3RpbmcgYXQgbWF4aW11bSBkZXB0aCAoZGVw dGggMjUzKQorLS0gTm90ZTogMjUzIG5lc3RlZCBHUk9VUHszLDd9PyBxdWFudGlmaWVyczsgcmVs dWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QKKy0tIHN1YmplY3QgdG8gcXVhbnRpZmllciBtdWx0 aXBsaWNhdGlvbiwgc28gdGhlIG5lc3RpbmcgKGFuZCBkZXB0aCAyNTMpIGlzCistLSBwcmVzZXJ2 ZWQgYWZ0ZXIgb3B0aW1pemF0aW9uLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChBezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9PykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IFNob3VsZCBzdWNjZWVkCisKKy0tIFRlc3Q6IFBhdHRl cm4gbmVzdGluZyBkZXB0aCBleGNlZWRzIG1heGltdW0gKGRlcHRoIDI1NCkKKy0tIE5vdGU6IDI1 NCBuZXN0ZWQgR1JPVVB7Myw3fT8gcXVhbnRpZmllcnM7IHJlbHVjdGFudCBxdWFudGlmaWVycyBh cmUgbm90CistLSBzdWJqZWN0IHRvIHF1YW50aWZpZXIgbXVsdGlwbGljYXRpb24sIHNvIHRoZSBu ZXN0aW5nIHJlYWNoZXMgZGVwdGggMjU0IGFuZAorLS0gZXhjZWVkcyB0aGUgbGltaXQuCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycworV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChB ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworRFJPUCBU QUJMRSBycHJfZXJyb3JzOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJhc2ljIFBhdHRlcm4gTWF0Y2hpbmcKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCistLSBUZXN0OiBBPyAob3B0aW9uYWwsIGdyZWVkeSkKK1NFTEVDVCBpZCwgdmFsLCBj b3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gNTAKKyk7CisKKy0tIFRlc3Q6IEF7Mn0gKGV4YWN0 IGNvdW50KQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezJ9KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1 MAorKTsKKworLS0gVGVzdDogQXsxLDN9IChib3VuZGVkIHJhbmdlLCBncmVlZHkpCitTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEF7MSwzfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAKKyk7CisKKy0tIFRl c3Q6IEEgfCBCIChzaW1wbGUgYWx0ZXJuYXRpb24pCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgfCBCKQor ICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiA3MAorKTsKKworLS0gVGVzdDog QSB8IEIgfCBDICh0aHJlZS13YXkgYWx0ZXJuYXRpb24pCitTRUxFQ1QgaWQsIHZhbCwgY291bnQo KikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgfCBC IHwgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIgQVMgdmFsIEJFVFdFRU4gNDAgQU5E IDYwLCBDIEFTIHZhbCA+IDgwCispOworCistLSBUZXN0OiBBIEIgQyAoY29uY2F0ZW5hdGlvbikK K1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFT IHZhbCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA2MAorKTsKKworLS0gVGVzdDogQSBC PyBDIChvcHRpb25hbCBtaWRkbGUpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFT IGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIEJFVFdFRU4gMzEgQU5EIDYwLCBDIEFTIHZhbCA+ IDYwCispOworCistLSBUZXN0OiAoQSBCKSsgKGdyb3VwZWQgcXVhbnRpZmllcikKK1NFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1 MAorKTsKKworLS0gVGVzdDogKEEgfCBCKSsgQyAoYWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVy KQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAz MCwgQiBBUyB2YWwgQkVUV0VFTiAzMSBBTkQgNjAsIEMgQVMgdmFsID4gODAKKyk7CisKKy0tIFRl c3Q6IChBKyB8IChBIHwgQikrKSogLSBuZXN0ZWQgYWx0ZXJuYXRpb24gaW5zaWRlIHF1YW50aWZp ZWQgZ3JvdXAKKy0tIFByZXZpb3VzbHkgY2F1c2VkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiBhbHRl cm5hdGlvbiBoYW5kbGluZyB3aGVuIHRoZSBpbm5lcgorLS0gQkVHSU4oKykncyBza2lwIGp1bXAg d2FzIGZvbGxvd2VkIGFzIGFuIEFMVCBicmFuY2ggcG9pbnRlci4KK1NFTEVDVCBpZCwgZmxhZ3Ms IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gKFZBTFVFUworICAgICgxLCBBUlJBWVsnQScsICdCJ10p LAorICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAoMywgQVJSQVlbJ0MnXSkKKykgQVMgdChpZCwg ZmxhZ3MpCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSsgfCAoQSB8IEIpKykqKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBQYXRob2xvZ2ljYWwgUGF0dGVybnMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gVGhlc2UgcGF0dGVybnMgcHJldmlvdXNseSBjYXVzZWQgaXNzdWVzLiBOb3cgb3B0aW1pemVk IG9yIGhhbmRsZWQgc2FmZWx5LgorCistLSBUZXN0OiAoQSopKiAtIG5lc3RlZCB1bmJvdW5kZWQg KG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSAo U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgoQSopKikK KyAgICBERUZJTkUgQSBBUyBUUlVFCispOworCistLSBUZXN0OiAoQSopKyAtIGlubmVyIG51bGxh YmxlIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZS T00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEq KSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0gVGVzdDogKEErKSogLSBvdXRlciBu dWxsYWJsZSAob3B0aW1pemVkIHRvIEEqKQorU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBj CitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4g KChBKykqKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CisKKy0tIFRlc3Q6IChBKykrIC0gYm90 aCByZXF1aXJlIG1hdGNoIChvcHRpbWl6ZWQgdG8gQSspCitTRUxFQ1QgdiwgY291bnQoKikgT1ZF UiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoKEErKSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0gVGVzdDogKCgo QSkqKSopKiAgLSB0cmlwbGUgbmVzdGVkIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291 bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgdikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklU SUFMCisgICAgUEFUVEVSTiAoKCgoQSkqKSopKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOwor CistLSBPcHRpb25hbCBncm91cCB3aXRoIGFsdGVybmF0aW9uOiBBICgoQiB8IEMpIChEIHwgRSkp KiBGPworLS0gV2hlbiBvbmx5IEEgbWF0Y2hlcywgdGhlICogZ3JvdXAgbWF0Y2hlcyAwIHRpbWVz IGFuZCBGPyBtYXRjaGVzIDAgdGltZXMKK1NFTEVDVCBpZCwgdmFsLCBtYXRjaF9sZW4KK0ZST00g KFNFTEVDVCBpZCwgdmFsLAorICAgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBBUyBtYXRjaF9s ZW4KKyAgICAgIEZST00gKFZBTFVFUyAoMSwgMSksICgyLCA5OSkpIEFTIHQoaWQsIHZhbCkKKyAg ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICAgIFBBVFRFUk4gKEEgKChCIHwg QykgKEQgfCBFKSkqIEY/KQorICAgICAgICAgIERFRklORSBBIEFTIHZhbCA9IDEsCisgICAgICAg ICAgICAgICAgIEIgQVMgdmFsID0gMiwgQyBBUyB2YWwgPSAzLAorICAgICAgICAgICAgICAgICBE IEFTIHZhbCA9IDQsIEUgQVMgdmFsID0gNSwKKyAgICAgICAgICAgICAgICAgRiBBUyB2YWwgPSA2 CisgICAgICApCispIHM7CisKK0RST1AgVEFCTEUgcnByX3BsYW47CitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4u c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOTdjYTc4ZDU0YgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbApAQCAtMCwwICsxLDM0NDQgQEAK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gUlBSIEVYUExBSU4gVGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBS ZWNvZ25pdGlvbiBFWFBMQUlOIG91dHB1dAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLQorLS0gVmlld3MgYW5kIHRhYmxl cyBpbiB0aGlzIGZpbGUgYXJlIGludGVudGlvbmFsbHkgbm90IGRyb3BwZWQsCistLSBzbyB0aGF0 IHBnX3VwZ3JhZGUvcGdfZHVtcCBjYW4gdGVzdCBSUFIgc3ludGF4IHNlcmlhbGl6YXRpb24uCist LQorLS0gVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyBFWFBMQUlOIG91dHB1dCBmb3IgUlBSIHF1 ZXJpZXMsCistLSBpbmNsdWRpbmcgTkZBIHN0YXRpc3RpY3Mgc2hvd24gaW4gRVhQTEFJTiBBTkFM WVpFOgorLS0gICAtIE5GQSBTdGF0ZXM6IHBlYWssIHRvdGFsLCBtZXJnZWQKKy0tICAgLSBORkEg Q29udGV4dHM6IHBlYWssIHRvdGFsLCBwcnVuZWQKKy0tICAgLSBORkE6IG1hdGNoZWQgKGxlbiBt aW4vbWF4L2F2ZyksIG1pc21hdGNoZWQgKGxlbiBtaW4vbWF4L2F2ZykKKy0tICAgLSBORkE6IGFi c29yYmVkIChsZW4gbWluL21heC9hdmcpLCBza2lwcGVkIChsZW4gbWluL21heC9hdmcpCistLSAg IC0gUGF0dGVybiBkZXBhcnNlIGZvcm1hdHRpbmcKKy0tICAgLSBNdWx0aXBsZSBvdXRwdXQgZm9y bWF0cyAodGV4dCwgSlNPTiwgWE1MKQorLS0KKy0tIFRlc3QgQ292ZXJhZ2U6CistLSAgIEJhc2lj IE5GQSBTdGF0aXN0aWNzIFRlc3RzCistLSAgIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMKKy0tICAg Q29udGV4dCBTdGF0aXN0aWNzIFRlc3RzCistLSAgIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRl c3RzCistLSAgIE1pc21hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSAgIEpTT04gRm9y bWF0IFRlc3RzCistLSAgIFhNTCBGb3JtYXQgVGVzdHMKKy0tICAgTXVsdGlwbGUgUGFydGl0aW9u cyBUZXN0cworLS0gICBFZGdlIENhc2VzCistLSAgIENvbXBsZXggUGF0dGVybiBUZXN0cworLS0g ICBSZWFsLXdvcmxkIFBhdHRlcm4gRXhhbXBsZXMKKy0tICAgUGVyZm9ybWFuY2Utb3JpZW50ZWQg VGVzdHMKKy0tICAgSU5JVElBTCB2cyBubyBJTklUSUFMIGNvbXBhcmlzb24KKy0tICAgUXVhbnRp ZmllciBWYXJpYXRpb25zCistLSAgIFJlZ3Jlc3Npb24gVGVzdHMgZm9yIFN0YXRpc3RpY3MgQWNj dXJhY3kKKy0tICAgQWx0ZXJuYXRpb24gUGF0dGVybiBUZXN0cworLS0gICBHcm91cCBQYXR0ZXJu IFRlc3RzCistLSAgIFdpbmRvdyBGdW5jdGlvbiBDb21iaW5hdGlvbnMKKy0tICAgREVGSU5FIEV4 cHJlc3Npb24gVmFyaWF0aW9ucworLS0gICBMYXJnZSBTY2FsZSBTdGF0aXN0aWNzIFZlcmlmaWNh dGlvbgorLS0gICBOYXYgTWFyayBMb29rYmFjay9Mb29rYWhlYWQgKHR1cGxlc3RvcmUgdHJpbSkK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCistLSBGaWx0ZXIgZnVuY3Rpb24gdG8gbm9ybWFsaXplIHBsYXRmb3JtLWRlcGVu ZGVudCBtZW1vcnkgdmFsdWVzIChub3QgTkZBIHN0YXRpc3RpY3MpLgorLS0gTkZBIHN0YXRpc3Rp Y3Mgc2hvdWxkIG5vdCBjaGFuZ2UgYmV0d2VlbiBwbGF0Zm9ybXM7IGlmIHRoZXkgZG8sIGl0IGNv dWxkCistLSBpbmRpY2F0ZSBpc3N1ZXMgc3VjaCBhcyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nl c3MuCistLSBXb3JrcyBmb3IgdGV4dCwgSlNPTiwgYW5kIFhNTCBmb3JtYXRzLgorY3JlYXRlIGZ1 bmN0aW9uIHJwcl9leHBsYWluX2ZpbHRlcih0ZXh0KSByZXR1cm5zIHNldG9mIHRleHQKK2xhbmd1 YWdlIHBscGdzcWwgYXMKKyQkCitkZWNsYXJlCisgICAgbG4gdGV4dDsKK2JlZ2luCisgICAgZm9y IGxuIGluIGV4ZWN1dGUgJDEKKyAgICBsb29wCisgICAgICAgIC0tIE5vcm1hbGl6ZSBwbGF0Zm9y bS1kZXBlbmRlbnQgbWVtb3J5IHZhbHVlcworICAgICAgICAtLSBLZWVwIE5GQSBzdGF0aXN0aWNz IG51bWJlcnMgdW5jaGFuZ2VkICh0aGV5IGFyZSB0ZXN0IGFzc2VydGlvbnMpCisKKyAgICAgICAg LS0gVGV4dCBmb3JtYXQ6ICJTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogMThrQiIK KyAgICAgICAgaWYgbG4gfiAnU3RvcmFnZTouKk1heGltdW0gU3RvcmFnZTonIHRoZW4KKyAgICAg ICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnXG1cZCtrQicsICdOa0InLCAnZycpOwor ICAgICAgICBlbmQgaWY7CisKKyAgICAgICAgLS0gSlNPTiBmb3JtYXQ6ICJNYXhpbXVtIFN0b3Jh Z2UiOiAxNyAobnVtYmVyIGluIGtCIHVuaXRzKQorICAgICAgICBpZiBsbiB+ICciTWF4aW11bSBT dG9yYWdlIjonIHRoZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnIk1h eGltdW0gU3RvcmFnZSI6IFxkKycsICciTWF4aW11bSBTdG9yYWdlIjogMCcsICdnJyk7CisgICAg ICAgIGVuZCBpZjsKKworICAgICAgICAtLSBYTUwgZm9ybWF0OiA8TWF4aW11bS1TdG9yYWdlPjE3 PC9NYXhpbXVtLVN0b3JhZ2U+IChudW1iZXIgaW4ga0IgdW5pdHMpCisgICAgICAgIGlmIGxuIH4g JzxNYXhpbXVtLVN0b3JhZ2U+JyB0aGVuCisgICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFj ZShsbiwgJzxNYXhpbXVtLVN0b3JhZ2U+XGQrPC9NYXhpbXVtLVN0b3JhZ2U+JywgJzxNYXhpbXVt LVN0b3JhZ2U+MDwvTWF4aW11bS1TdG9yYWdlPicsICdnJyk7CisgICAgICAgIGVuZCBpZjsKKwor ICAgICAgICAtLSBTb3J0IE1ldGhvZCBtZW1vcnkgaXMgcGxhdGZvcm0tZGVwZW5kZW50ICgzMi1i aXQgdnMgNjQtYml0KQorICAgICAgICBpZiBsbiB+ICdTb3J0IE1ldGhvZDouKk1lbW9yeTonIHRo ZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnTWVtb3J5OiBcZCtrQics ICdNZW1vcnk6IE5rQicpOworICAgICAgICBlbmQgaWY7CisKKyAgICAgICAgcmV0dXJuIG5leHQg bG47CisgICAgZW5kIGxvb3A7CitlbmQ7CiskJDsKKworLS0gU2V0dXA6IENyZWF0ZSB0ZXN0IHRh YmxlcworQ1JFQVRFIFRBQkxFIHJwcl9uZmFfdGVzdCAoCisgICAgaWQgc2VyaWFsLAorICAgIHYg aW50LAorICAgIGNhdCBjaGFyKDEpCispOworCistLSBJbnNlcnQgdGVzdCBkYXRhOiAxMDAgcm93 cyB3aXRoIHByZWRpY3RhYmxlIHBhdHRlcm4KK0lOU0VSVCBJTlRPIHJwcl9uZmFfdGVzdCAodiwg Y2F0KQorU0VMRUNUIGksCisgICAgICAgQ0FTRQorICAgICAgICAgICBXSEVOIGkgJSA1ID0gMSBU SEVOICdBJworICAgICAgICAgICBXSEVOIGkgJSA1ID0gMiBUSEVOICdCJworICAgICAgICAgICBX SEVOIGkgJSA1ID0gMyBUSEVOICdDJworICAgICAgICAgICBXSEVOIGkgJSA1ID0gNCBUSEVOICdE JworICAgICAgICAgICBFTFNFICdFJworICAgICAgIEVORAorRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBpOworCistLSBBZGRpdGlvbmFsIHRlc3QgdGFibGUgd2l0aCBtb3JlIGNvbXBsZXgg cGF0dGVybnMKK0NSRUFURSBUQUJMRSBycHJfbmZhX2NvbXBsZXggKAorICAgIGlkIHNlcmlhbCwK KyAgICBwcmljZSBpbnQsCisgICAgdHJlbmQgY2hhcigxKSAgLS0gVT11cCwgRD1kb3duLCBTPXN0 YWJsZQorKTsKKworSU5TRVJUIElOVE8gcnByX25mYV9jb21wbGV4IChwcmljZSwgdHJlbmQpCitW QUxVRVMKKyAgICAoMTAwLCAnUycpLCAoMTA1LCAnVScpLCAoMTEwLCAnVScpLCAoMTA4LCAnRCcp LCAoMTEyLCAnVScpLAorICAgICgxMTUsICdVJyksICgxMTMsICdEJyksICgxMTEsICdEJyksICgx MDksICdEJyksICgxMTAsICdVJyksCisgICAgKDEyMCwgJ1UnKSwgKDEyNSwgJ1UnKSwgKDEzMCwg J1UnKSwgKDEyOCwgJ0QnKSwgKDEyNiwgJ0QnKSwKKyAgICAoMTI0LCAnRCcpLCAoMTIyLCAnRCcp LCAoMTIwLCAnRCcpLCAoMTE4LCAnRCcpLCAoMTE5LCAnVScpLAorICAgICgxMjEsICdVJyksICgx MjMsICdVJyksICgxMjUsICdVJyksICgxMjcsICdVJyksICgxMjksICdVJyksCisgICAgKDEzMSwg J1UnKSwgKDEzMywgJ1UnKSwgKDEzMCwgJ0QnKSwgKDEyNywgJ0QnKSwgKDEyNCwgJ0QnKTsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBCYXNpYyBORkEgU3RhdGlzdGljcyBUZXN0cworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFNpbXBs ZSBwYXR0ZXJuIC0gc2hvdWxkIHNob3cgYmFzaWMgc3RhdGlzdGljcworQ1JFQVRFIFZJRVcgcnBy X2V2X2Jhc2ljX3NpbXBsZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZh X3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdC JworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X2Jhc2ljX3NpbXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJ TkUgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJworKScpOworCistLSBQYXR0ZXJu IHdpdGggbm8gbWF0Y2hlcyAtIDAgbWF0Y2hlZAorQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX25v bWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo WCBZIFopCisgICAgREVGSU5FIFggQVMgY2F0ID0gJ1gnLCBZIEFTIGNhdCA9ICdZJywgWiBBUyBj YXQgPSAnWicKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19ub21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoWCBZIFop CisgICAgREVGSU5FIFggQVMgY2F0ID0gJydYJycsIFkgQVMgY2F0ID0gJydZJycsIFogQVMgY2F0 ID0gJydaJycKKyk7Jyk7CisKKy0tIFBhdHRlcm4gbWF0Y2hpbmcgZXZlcnkgcm93IC0gaGlnaCBt YXRjaCBjb3VudAorQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX2FsbHJvd3MgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoUikKKyAgICBERUZJTkUgUiBB UyBUUlVFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYmFzaWNfYWxscm93cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFIpCisgICAg REVGSU5FIFIgQVMgVFJVRQorKTsnKTsKKworLS0gUmVncmVzc2lvbiB0ZXN0OiBTcGFjZSBiZWZv cmUgcGFyZW50aGVzaXMgaW4gcGF0dGVybiBkZXBhcnNlCistLSBWZXJpZmllcyB0aGF0ICJBIChC IHwgQykiIGNvcnJlY3RseSBvdXRwdXRzIGFzICJhIChiIHwgYykiIHdpdGggc3BhY2UKK0NSRUFU RSBWSUVXIHJwcl9ldl9iYXNpY19kZXBhcnNlX3NwYWNlIEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgKEIgfCBDKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAl IDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX2RlcGFyc2Vfc3BhY2UnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChC IHwgQykpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2 ICUgMyA9IDAKKyk7Jyk7CisKKy0tIFJlZ3Jlc3Npb24gdGVzdDogU2VxdWVudGlhbCBhbHRlcm5h dGlvbnMgYXQgc2FtZSBkZXB0aAorLS0gVmVyaWZpZXMgdGhhdCAiKChCIHwgQykgKEQgfCBFKSki IGNvcnJlY3RseSBvdXRwdXRzIGFzICIoYiB8IGMpIChkIHwgZSkiCistLSBQcmV2aW91c2x5IGZh aWxlZCBkdWUgdG8gbWlzc2luZyBwYXJlbnRoZXNlcyBvbiBBTFQgZGVwdGggZGVjcmVhc2UKK0NS RUFURSBWSUVXIHJwcl9ldl9iYXNpY19kZXBhcnNlX3NlcWFsdCBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBICgoQiB8IEMpIChEIHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFTIHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUg QVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYmFzaWNfZGVwYXJzZV9zZXFhbHQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIChE IHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFT IHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCispOycpOworCistLSBS ZWdyZXNzaW9uIHRlc3Q6IFF1b3RlZCBpZGVudGlmaWVycyBpbiBFWFBMQUlOIHBhdHRlcm4gZGVw YXJzZQorLS0gTWl4ZWQgY2FzZSBuYW1lcyBtdXN0IGJlIHF1b3RlZCB0byBwcmVzZXJ2ZSByb3Vu ZC10cmlwIHNhZmV0eQorU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCJTdGFydCIgIlVwIispCisgICAg REVGSU5FICJTdGFydCIgQVMgVFJVRSwgIlVwIiBBUyB2ID4gUFJFVih2KQorKTsnKTsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBTdGF0ZSBTdGF0aXN0aWNzIFRlc3RzIChwZWFrLCB0b3RhbCwgbWVyZ2VkKQorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKy0tIFNpbXBsZSBxdWFudGlmaWVyIHBhdHRlcm4gLSBBKyB3aXRoIHNob3J0IG1hdGNo ZXMgKG5vIG1lcmdpbmcpCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfc2ltcGxlX3F1YW50IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRl X3NpbXBsZV9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHYgJSAyID0gMQorKTsnKTsKKworLS0gQWx0ZXJuYXRpb24gcGF0dGVybiAt IG11bHRpcGxlIHN0YXRlIGJyYW5jaGVzCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8 IEMpIChEIHwgRSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNh dCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCisgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFTIGNh dCA9ICdFJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMp IChEIHwgRSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0 ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycsCisgICAgICAgIEQgQVMgY2F0ID0gJydEJycsIEUg QVMgY2F0ID0gJydFJycKKyk7Jyk7CisKKy0tIENvbXBsZXggcGF0dGVybiB3aXRoIGhpZ2ggc3Rh dGUgY291bnQKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9jb21wbGV4IEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KyBCKiBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMyA9IDEsCisgICAgICAgIEIg QVMgdiAlIDMgPSAyLAorICAgICAgICBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2Nv bXBsZXgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQiogQyspCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgdiAlIDMgPSAxLAorICAgICAgICBCIEFTIHYgJSAzID0gMiwK KyAgICAgICAgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisKKy0tIEdyb3VwZWQgcGF0dGVybiB3aXRo IHF1YW50aWZpZXIgLSBzdGF0ZSBjb3VudCB3aXRoIGdyb3VwaW5nCitDUkVBVEUgVklFVyBycHJf ZXZfc3RhdGVfZ3JvdXBfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFT IHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9ncm91cF9xdWFudCcp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworCistLSBTdGF0ZSBleHBsb3Npb24g cGF0dGVybiAtIG1hbnkgYWx0ZXJuYXRpb25zCistLSBQYXR0ZXJuIChBfEIpKEF8QikoQXxCKShB fEIpIGNhbiBjcmVhdGUgbWFueSBwYXJhbGxlbCBzdGF0ZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9z dGF0ZV9leHBsb3Npb24gQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwg QikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUg MiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfZXhwbG9zaW9uJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwg QikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUg MiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworCistLSBDb25zZWN1dGl2ZSBBTFQgbWVyZ2Ug Zm9sbG93ZWQgYnkgZGlmZmVyZW50IEFMVAorLS0gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKSAt PiAoQXxCKXsyfSAoQ3xEKQorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9tZXJnZV9hbHQg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdiAl IDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfc3RhdGVfYWx0X21lcmdlX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsK KworLS0gQ29uc2VjdXRpdmUgQUxUIG1lcmdlIGZvbGxvd2VkIGJ5IG5vbi1BTFQgZWxlbWVudAor LS0gKChBIHwgQikgKEEgfCBCKSBDKSAtPiAoQXxCKXsyfSBDCitDUkVBVEUgVklFVyBycHJfZXZf c3RhdGVfYWx0X21lcmdlX25vbmFsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X3N0YXRlX2FsdF9tZXJnZV9ub25hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAs IEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsnKTsKKworLS0gQUxUIHByZWZpeC9z dWZmaXggYWJzb3JiZWQgaW50byBHUk9VUDogKEF8QikgKEF8QikrIChBfEIpIC0+IChBfEIpezMs fQorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9hYnNvcmJfZ3JvdXAgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgfCBCKSAoQSB8IEIpKyAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMCwgQiBB UyB2ICUgMiA9IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfYWJzb3JiX2dyb3VwJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpKyAoQSB8IEIpKQorICAgIERF RklORSBBIEFTIHYgJSAyID0gMCwgQiBBUyB2ICUgMiA9IDEKKyk7Jyk7CisKKy0tIEhpZ2ggc3Rh dGUgY291bnQgLSBhbHRlcm5hdGlvbiB3aXRoIHBsdXMgcXVhbnRpZmllcgorQ1JFQVRFIFZJRVcg cnByX2V2X3N0YXRlX2FsdF9wbHVzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSsgRCkKKyAgICBE RUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMywgRCBB UyB2ICUgNCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfcGx1cycpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSsgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9 IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMywgRCBBUyB2ICUgNCA9IDAKKyk7Jyk7 CisKKy0tIEVhcmx5IHRlcm1pbmF0aW9uOiBmaXJzdCBBTFQgYnJhbmNoIChBKSByZWFjaGVzIEZJ TiBpbW1lZGlhdGVseSwKKy0tIHBydW5pbmcgc2Vjb25kIGJyYW5jaCAoQSBCKykgYmVmb3JlIGl0 IGNhbiBhY2N1bXVsYXRlIEIgcmVwZXRpdGlvbnMuCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVf YWx0X3BydW5lIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEEgQikrKQorICAgIERFRklORSBBIEFTIHYgPSAx LCBCIEFTIHYgPiAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X3BydW5lJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKChBIHwgQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIg QVMgdiA+IDEKKyk7Jyk7CisKKy0tIE5lc3RlZCBxdWFudGlmaWVycyBjYXVzaW5nIHN0YXRlIGdy b3d0aAorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX25lc3RlZF9xdWFudCBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KCgoQSB8IEIpKykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9zdGF0ZV9uZXN0ZWRfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKCgoQSB8IEIpKykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2 ICUgMyA9IDIKKyk7Jyk7CisKKy0tIChBezIsfSkqIG11c3QgTk9UIGZsYXR0ZW4gdG8gYSogKEgt MSk6IGNvdW50cyB7MH0gVU5JT04gWzIsIElORikgbGVhdmUgMQorLS0gdW5yZWFjaGFibGUuICBU aGUgcGxhbm5lciBrZWVwcyBpdCBhcyAoYXsyLH0pKiwgbm90IGEqLgorQ1JFQVRFIFZJRVcgcnBy X2V2X25lc3RlZF9xdWFudF9ub19mbGF0dGVuIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA2KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEF7Mix9KSopCisgICAgREVG SU5FIEEgQVMgdiAlIDMgPD4gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25lc3RlZF9xdWFudF9ub19mbGF0dGVuJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQXsyLH0pKikKKyAgICBERUZJTkUgQSBB UyB2ICUgMyA8PiAwCispOycpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbnRleHQgU3RhdGlzdGljcyBUZXN0 cyAocGVhaywgdG90YWwsIHBydW5lZCArIGFic29yYmVkL3NraXBwZWQpCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0g Q29udGV4dCBhYnNvcnB0aW9uIHdpdGggdW5ib3VuZGVkIHF1YW50aWZpZXIgYXQgc3RhcnQKK0NS RUFURSBWSUVXIHJwcl9ldl9jdHhfYWJzb3JiX3VuYm91bmRlZCBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4 X2Fic29yYl91bmJvdW5kZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworCist LSBObyBhYnNvcnB0aW9uIC0gYm91bmRlZCBxdWFudGlmaWVyCitDUkVBVEUgVklFVyBycHJfZXZf Y3R4X25vX2Fic29yYiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9ub19hYnNvcmInKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gQ29udGV4dHMgc2tpcHBlZCBieSBT S0lQIFBBU1QgTEFTVCBST1cKK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfc2tpcCBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUgMTAgPSAyLCBD IEFTIHYgJSAxMCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYg JSAxMCA9IDIsIEMgQVMgdiAlIDEwID0gMworKTsnKTsKKworLS0gSGlnaCBjb250ZXh0IGFic29y cHRpb24gLSB1bmJvdW5kZWQgZ3JvdXAKK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfYWJzb3JiX2dy b3VwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIg QVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZ3JvdXAn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisK Ky0tIEZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSBCIEIpKyBDCistLSBCIEIgbWVy Z2VkIHRvIEJ7Mn07IGFic29yYmFibGUgd2l0aCBmaXhlZC1sZW5ndGggY2hlY2sKKy0tIHN0ZXBf c2l6ZT0zIChBICsgQiArIEIpOyB2ICUgNyBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMgcGVyIG1h dGNoCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9maXhlZHZhciBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSBCIEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSA3IElOICgxLCA0KSwgQiBBUyB2ICUgNyBJ TiAoMiwgMywgNSwgNiksIEMgQVMgdiAlIDcgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9maXhl ZHZhcicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA3MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIgQikrIEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDcgSU4gKDEsIDQpLCBCIEFTIHYgJSA3IElOICgyLCAzLCA1LCA2KSwg QyBBUyB2ICUgNyA9IDAKKyk7Jyk7CisKKy0tIE5lc3RlZCBmaXhlZC1sZW5ndGggZ3JvdXAgYWJz b3JwdGlvbjogKEEgKEIgQyl7Mn0gRCkrIEUKKy0tIHN0ZXBfc2l6ZSA9IDEgKyAoMSsxKSoyICsg MSA9IDY7IHYgJSAxMyBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMgKyBFCitDUkVBVEUgVklFVyBy cHJfZXZfY3R4X2Fic29yYl9uZXN0ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDY1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgKEIgQyl7Mn0gRCkrIEUpCisg ICAgREVGSU5FIEEgQVMgdiAlIDEzIElOICgxLCA3KSwgQiBBUyB2ICUgMTMgSU4gKDIsIDQsIDgs IDEwKSwKKyAgICAgICAgICAgQyBBUyB2ICUgMTMgSU4gKDMsIDUsIDksIDExKSwgRCBBUyB2ICUg MTMgSU4gKDYsIDEyKSwKKyAgICAgICAgICAgRSBBUyB2ICUgMTMgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4 X2Fic29yYl9uZXN0ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjUpIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoQiBD KXsyfSBEKSsgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMTMgSU4gKDEsIDcpLCBCIEFTIHYgJSAx MyBJTiAoMiwgNCwgOCwgMTApLAorICAgICAgICAgICBDIEFTIHYgJSAxMyBJTiAoMywgNSwgOSwg MTEpLCBEIEFTIHYgJSAxMyBJTiAoNiwgMTIpLAorICAgICAgICAgICBFIEFTIHYgJSAxMyA9IDAK Kyk7Jyk7CisKKy0tIERvdWJseSBuZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246 IChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRgorLS0gc3RlcF9zaXplID0gMSArICgoMSszKSoy KzEpKjIgKyAxID0gMjA7IHYgJSA0MSBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMgKyBGCitDUkVB VEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9kZWVwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4MikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBICgoQiBDIEMgQyl7 Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDQxIElOICgxLCAyMSksCisgICAg ICAgICAgIEIgQVMgdiAlIDQxIElOICgyLCA2LCAxMSwgMTUsIDIyLCAyNiwgMzEsIDM1KSwKKyAg ICAgICAgICAgQyBBUyB2ICUgNDEgSU4gKDMsNCw1LCA3LDgsOSwgMTIsMTMsMTQsIDE2LDE3LDE4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMsMjQsMjUsIDI3LDI4LDI5LCAzMiwzMywz NCwgMzYsMzcsMzgpLAorICAgICAgICAgICBEIEFTIHYgJSA0MSBJTiAoMTAsIDE5LCAzMCwgMzkp LAorICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAoMjAsIDQwKSwKKyAgICAgICAgICAgRiBBUyB2 ICUgNDEgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9kZWVwJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDgy KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgKChCIEMgQyBDKXsyfSBEKXsyfSBFKSsgRikKKyAgICBERUZJTkUg QSBBUyB2ICUgNDEgSU4gKDEsIDIxKSwKKyAgICAgICAgICAgQiBBUyB2ICUgNDEgSU4gKDIsIDYs IDExLCAxNSwgMjIsIDI2LCAzMSwgMzUpLAorICAgICAgICAgICBDIEFTIHYgJSA0MSBJTiAoMyw0 LDUsIDcsOCw5LCAxMiwxMywxNCwgMTYsMTcsMTgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAyMywyNCwyNSwgMjcsMjgsMjksIDMyLDMzLDM0LCAzNiwzNywzOCksCisgICAgICAgICAgIEQg QVMgdiAlIDQxIElOICgxMCwgMTksIDMwLCAzOSksCisgICAgICAgICAgIEUgQVMgdiAlIDQxIElO ICgyMCwgNDApLAorICAgICAgICAgICBGIEFTIHYgJSA0MSA9IDAKKyk7Jyk7CisKKy0tIDMtbGV2 ZWwgRU5EIGNoYWluIGFic29ycHRpb246ICgoQSAoQiBDKXsyfSl7Mn0pKworLS0gc3RlcF9zaXpl ID0gKDEgKyAoMSsxKSoyKSAqIDIgPSAxMDsgdiAlIDIxIGN5Y2xlIGdpdmVzIDIgaXRlcmF0aW9u cworLS0gRU5EIGNoYWluOiBFTkQoQkN7Mn0pIC0+IEVORChBLi57Mn0pIC0+IEVORCgrLCBBQlNP UkJBQkxFKQorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfZW5kY2hhaW4gQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQyKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKChBIChCIEMpezJ9KXsyfSkrKQorICAgIERFRklORSBBIEFTIHYgJSAyMSBJTiAoMSwgNiwg MTEsIDE2KSwKKyAgICAgICAgICAgQiBBUyB2ICUgMjEgSU4gKDIsIDQsIDcsIDksIDEyLCAxNCwg MTcsIDE5KSwKKyAgICAgICAgICAgQyBBUyB2ICUgMjEgSU4gKDMsIDUsIDgsIDEwLCAxMywgMTUs IDE4LCAyMCkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2VuZGNoYWluJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDQyKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkrKQorICAgIERFRklORSBBIEFTIHYg JSAyMSBJTiAoMSwgNiwgMTEsIDE2KSwKKyAgICAgICAgICAgQiBBUyB2ICUgMjEgSU4gKDIsIDQs IDcsIDksIDEyLCAxNCwgMTcsIDE5KSwKKyAgICAgICAgICAgQyBBUyB2ICUgMjEgSU4gKDMsIDUs IDgsIDEwLCAxMywgMTUsIDE4LCAyMCkKKyk7Jyk7CisKKy0tIE5vIGFic29ycHRpb24gd2hlbiBE RUZJTkUgdXNlcyBGSVJTVCAobWF0Y2hfc3RhcnQtZGVwZW5kZW50KQorLS0gU2FtZSBwYXR0ZXJu IGFzIHJwcl9ldl9jdHhfYWJzb3JiX3VuYm91bmRlZCBidXQgd2l0aCBGSVJTVCBpbiBERUZJTkUu CistLSBDb21wYXJlOiBhYnNvcmJlZCBjb3VudCBzaG91bGQgYmUgMCBoZXJlIHZzID4wIGFib3Zl LgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9ub19hYnNvcmJfZmlyc3QgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBBTkQgdiA+IEZJ UlNUKHYpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfY3R4X25vX2Fic29yYl9maXJzdCcpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2 ICUgNSA9IDAgQU5EIHYgPiBGSVJTVCh2KQorKTsnKTsKKworLS0gQWJzb3JwdGlvbiBwcmVzZXJ2 ZWQgd2hlbiBERUZJTkUgdXNlcyBvbmx5IExBU1Qgd2l0aG91dCBvZmZzZXQKKy0tIExBU1Qodikg aXMgbWF0Y2hfc3RhcnQtaW5kZXBlbmRlbnQgKGFsd2F5cyBjdXJyZW50cG9zKSwgc28gYWJzb3Jw dGlvbgorLS0gcmVtYWlucyBhY3RpdmUuICBDb21wYXJlOiBhYnNvcmJlZCBjb3VudCBzaG91bGQg YmUgPjAsIGxpa2UgdGhlCistLSBQUkVWLW9ubHkgY2FzZSBhYm92ZS4KK0NSRUFURSBWSUVXIHJw cl9ldl9jdHhfYWJzb3JiX2xhc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2 ICUgNSA8PiAwLCBCIEFTIExBU1QodikgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfbGFz dCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEg QVMgdiAlIDUgPD4gMCwgQiBBUyBMQVNUKHYpICUgNSA9IDAKKyk7Jyk7CisKKy0tIE5vIGFic29y cHRpb24gd2l0aCBjb21wb3VuZCBQUkVWKEZJUlNUKCkpIChtYXRjaF9zdGFydC1kZXBlbmRlbnQp CitDUkVBVEUgVklFVyBycHJfZXZfY3R4X25vX2Fic29yYl9jb21wb3VuZCBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwIEFORCBQUkVW KEZJUlNUKHYpLCAxKSBJUyBOT1QgTlVMTAorKTsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwg QiBBUyB2ICUgNSA9IDAgQU5EIFBSRVYoRklSU1QodiksIDEpIElTIE5PVCBOVUxMCispOycpOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0g Rml4ZWQgbGVuZ3RoIG1hdGNoZXMgLSBhbGwgc2FtZSBsZW5ndGgKK0NSRUFURSBWSUVXIHJwcl9l dl9tbGVuX2ZpeGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVz dAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnQScsIEIg QVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKKyAgICAgICAgRCBBUyBjYXQgPSAnRCcsIEUg QVMgY2F0ID0gJ0UnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxlbl9maXhlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBD IEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAn J0InJywgQyBBUyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBj YXQgPSAnJ0UnJworKTsnKTsKKworLS0gVmFyaWFibGUgbGVuZ3RoIG1hdGNoZXMgLSBtaW4vbWF4 L2F2ZyBkaWZmZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX3ZhcmlhYmxlIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9tbGVuX3ZhcmlhYmxlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsn KTsKKworLS0gVmVyeSBsb25nIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX2xvbmcg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiA8PSAxOTUsIEIgQVMgdiA+IDE5 NQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X21sZW5fbG9uZycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCKQorICAgIERFRklORSBBIEFTIHYgPD0gMTk1LCBCIEFTIHYgPiAxOTUKKyk7Jyk7CisK Ky0tIFVuaWZvcm0gbWF0Y2ggbGVuZ3RoIHdpdGggbWlzbWF0Y2hlcyBmcm9tIGdhcCByb3dzICh2 JTIwID0gMTEuLjE1KQorQ1JFQVRFIFZJRVcgcnByX2V2X21sZW5fd2l0aF9taXNtYXRjaCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDIwIDw+IDApIEFO RCAodiAlIDIwIDw9IDEwIE9SIHYgJSAyMCA+IDE1KSwKKyAgICAgICAgQiBBUyB2ICUgMjAgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfbWxlbl93aXRoX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgKHYgJSAyMCA8PiAwKSBB TkQgKHYgJSAyMCA8PSAxMCBPUiB2ICUgMjAgPiAxNSksCisgICAgICAgIEIgQVMgdiAlIDIwID0g MAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBNaXNtYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKy0tIFBhdHRlcm4gd2l0aCBjb21wbGV0ZSBtYXRjaCBldmVyeSBjeWNsZTogMCBt aXNtYXRjaGVkCistLSBBKDEsMiwzKSBCKDQsNSkgQyg2KSByZXBlYXRzIHBlcmZlY3RseTsgWCBy b3dzIGFyZSBwcnVuZWQsIG5vdCBtaXNtYXRjaGVkCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9u b19taXNtYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNU IHYsCisgICAgICAgICAgIENBU0UgV0hFTiB2ICUgMTAgSU4gKDEsMiwzKSBUSEVOICdBJworICAg ICAgICAgICAgICAgIFdIRU4gdiAlIDEwIElOICg0LDUpIFRIRU4gJ0InCisgICAgICAgICAgICAg ICAgV0hFTiB2ICUgMTAgPSA2IFRIRU4gJ0MnCisgICAgICAgICAgICAgICAgRUxTRSAnWCcgRU5E IEFTIGNhdAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorKSB0CitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBD IEFTIGNhdCA9ICdDJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5fbm9fbWlzbWF0Y2gnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNUIHYs CisgICAgICAgICAgIENBU0UgV0hFTiB2ICUgMTAgSU4gKDEsMiwzKSBUSEVOICcnQScnCisgICAg ICAgICAgICAgICAgV0hFTiB2ICUgMTAgSU4gKDQsNSkgVEhFTiAnJ0InJworICAgICAgICAgICAg ICAgIFdIRU4gdiAlIDEwID0gNiBUSEVOICcnQycnCisgICAgICAgICAgICAgICAgRUxTRSAnJ1gn JyBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCisp IHQKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKyBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9 ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnCispOycpOworCistLSBMb25nIHBhcnRpYWwgbWF0Y2hl cyB0aGF0IGZhaWwKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX2xvbmdfcGFydGlhbCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNUIGkgQVMgdiwKKyAgICAgICAg ICAgQ0FTRQorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDIwIFRIRU4gJ0EnCisgICAgICAgICAg ICAgICBXSEVOIGkgPD0gMjUgVEhFTiAnQicKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRI RU4gJ1gnICAtLSBicmVha3MgdGhlIHBhdHRlcm4KKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSA1 MCBUSEVOICdBJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDU1IFRIRU4gJ0InCisgICAgICAg ICAgICAgICBXSEVOIGkgPSA1NiBUSEVOICdDJyAgLS0gY29tcGxldGVzIHBhdHRlcm4KKyAgICAg ICAgICAgICAgIEVMU0UgJ1knCisgICAgICAgICAgIEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2MCkgaQorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBj YXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJworKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5f bG9uZ19wYXJ0aWFsJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBpIEFTIHYsCisgICAgICAgICAgIENBU0UKKyAgICAg ICAgICAgICAgIFdIRU4gaSA8PSAyMCBUSEVOICcnQScnCisgICAgICAgICAgICAgICBXSEVOIGkg PD0gMjUgVEhFTiAnJ0InJworICAgICAgICAgICAgICAgV0hFTiBpID0gMjYgVEhFTiAnJ1gnJyAg LS0gYnJlYWtzIHRoZSBwYXR0ZXJuCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gNTAgVEhFTiAn J0EnJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDU1IFRIRU4gJydCJycKKyAgICAgICAgICAg ICAgIFdIRU4gaSA9IDU2IFRIRU4gJydDJycgIC0tIGNvbXBsZXRlcyBwYXR0ZXJuCisgICAgICAg ICAgICAgICBFTFNFICcnWScnCisgICAgICAgICAgIEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2MCkgaQorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBj YXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJworKTsnKTsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBKU09OIEZvcm1hdCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIEpTT04gZm9ybWF0IG91 dHB1dCB3aXRoIGFsbCBzdGF0aXN0aWNzCitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9iYXNpYyBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMg PSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfanNvbl9iYXNpYycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1B VCBKU09OKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMg diAlIDMgPSAyCispJyk7CisKKy0tIEpTT04gZm9ybWF0IHdpdGggbWF0Y2ggbGVuZ3RoIHN0YXRp c3RpY3MKK0NSRUFURSBWSUVXIHJwcl9ldl9qc29uX21hdGNobGVuIEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9qc29uX21hdGNobGVuJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFUIEpTT04pCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9 IDAKKyknKTsKKworLS0gSlNPTiBmb3JtYXQgd2l0aCBtaXNtYXRjaCBzdGF0aXN0aWNzCistLSBQ YXR0ZXJuIEEgQiBDIGV4cGVjdHMgMSwyLDMgYnV0IGdldHMgMSwyLDQgdHdpY2UgY2F1c2luZyBt aXNtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9taXNtYXRjaCBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSAoVkFMVUVTICgxKSwoMiksKDQpLCAoMSksKDIpLCg0KSwgKDEp LCgyKSwoMykpIEFTIHQodikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBB UyB2ID0gMiwgQyBBUyB2ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2pzb25fbWlzbWF0Y2gnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g KFZBTFVFUyAoMSksKDIpLCg0KSwgKDEpLCgyKSwoNCksICgxKSwoMiksKDMpKSBBUyB0KHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMK KyknKTsKKworLS0gSlNPTiBmb3JtYXQgd2l0aCBza2lwcGVkIGNvbnRleHQgc3RhdGlzdGljcwor LS0gQWx0ZXJuYXRpb24gcGF0dGVybiB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyBjYXVzZXMgbWFu eSBjb250ZXh0cyB0byBiZSBza2lwcGVkCitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9za2lwIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBC KSAoQSB8IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAy ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2pzb25fc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1B VCBKU09OKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBB UyB2ICUgMiA9IDAKKyknKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBYTUwgRm9ybWF0IFRlc3RzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworLS0gWE1MIGZvcm1hdCBvdXRwdXQKK0NSRUFURSBWSUVXIHJwcl9ldl94bWxfYmFzaWMgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl94bWxfYmFzaWMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgWE1M KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0g MAorKScpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIE11bHRpcGxlIFBhcnRpdGlvbnMgVGVzdHMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CistLSBTdGF0aXN0aWNzIGFjcm9zcyBtdWx0aXBsZSBwYXJ0aXRpb25zCitDUkVBVEUgVklFVyBy cHJfZXZfcGFydF9tdWx0aSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAg U0VMRUNUIHAsIHYKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBwLAorICAgICAgICAg Z2VuZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9wYXJ0X211bHRpJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBwLCB2CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMykgcCwKKyAgICAgICAgIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgdgorKSB0CitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMg diAlIDUgPSAwCispOycpOworCistLSBEaWZmZXJlbnQgcGF0dGVybiBiZWhhdmlvciBwZXIgcGFy dGl0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfcGFydF9kaWZmIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FTRSBXSEVOIHYgPD0gMjUgVEhF TiAxIEVMU0UgMiBFTkQgQVMgcCwKKyAgICAgICAgdiAlIDEwIEFTIHZhbAorICAgIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdmFsIDwgNSwgQiBBUyB2YWwgPj0gNQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BhcnRf ZGlmZicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FTRSBXSEVOIHYgPD0gMjUgVEhFTiAxIEVMU0Ug MiBFTkQgQVMgcCwKKyAgICAgICAgdiAlIDEwIEFTIHZhbAorICAgIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVG SU5FIEEgQVMgdmFsIDwgNSwgQiBBUyB2YWwgPj0gNQorKTsnKTsKKworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdl IENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworLS0gRW1wdHkgcmVzdWx0IHNldAorQ1JFQVRFIFZJRVcgcnByX2V2 X2VkZ2VfZW1wdHkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMg diA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIKKyk7Jyk7CisKKy0t IEVtcHR5IG1hdGNoZXMgKGxlbmd0aCAwKTogbWlycm9yIHRoZSB0ZXN0XzcyOF8qIGNhc2VzIGlu IHJwcl9uZmEuc3FsLgorLS0gV2luZG93IGFnZ3JlZ2F0ZXMgb3ZlciBhIGxlbmd0aC0wIGZyYW1l IHJldHVybiAwIC8gTlVMTCwgc28gdGhlIFNFTEVDVAorLS0gcmVzdWx0IGFsb25lIGNhbm5vdCBk aXN0aW5ndWlzaCAibm8gbWF0Y2giIGZyb20gImVtcHR5IG1hdGNoIjsgdGhlCistLSAiTkZBOiBO IG1hdGNoZWQgKGxlbiAwLzAvMC4wKSIgbGluZSBpbiBFWFBMQUlOIGlzIHRoZSBvbmx5IG9ic2Vy dmFibGUKKy0tIHByb29mIHRoYXQgdGhlIGVtcHR5IG1hdGNoZXMgd2VyZSBmb3VuZC4KKworLS0g KEE/KXswLDN9OiBtaW49MCwgQSBuZXZlciBtYXRjaGVzIC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcwor Q1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezAs M30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21p bjAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezAsM30pCisgICAgREVGSU5F IEEgQVMgRkFMU0UKKyk7Jyk7CisKKy0tIChBPyl7MSwzfTogbWluPTEsIG9uZSBlbXB0eSBpdGVy YXRpb24gc2F0aXNmaWVzIG1pbiAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJw cl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjEgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsxLDN9KQorICAgIERFRklO RSBBIEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4xJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsxLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCisp OycpOworCistLSAoQT8pezIsM306IG1pbj0yIChJU08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYg PSBTVFJFIFNUUkUpIC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2Vk Z2VfZW1wdHlfbWF0Y2hfbWluMiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMg RkFMU0UKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjInKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7Jyk7CisK Ky0tIChBPyl7MiwzfSBtaXhlZDogcm93cyAxLTIgbWF0Y2ggQSAocmVhbCksIHJvd3MgMy00IGZh bGwgYmFjayB0byBlbXB0eQorQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWl4 ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYgPD0gMgorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2VkZ2VfZW1wdHlfbWF0Y2hfbWl4ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgo QT8pezIsM30pCisgICAgREVGSU5FIEEgQVMgdiA8PSAyCispOycpOworCistLSAoQT8gQj8pezIs M306IHB1cmUgZW1wdHkgbXVsdGktZWxlbWVudCBib2R5IC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcwor Q1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbXVsdGkgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/IEI/ KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFLCBCIEFTIEZBTFNFCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRn ZV9lbXB0eV9tYXRjaF9tdWx0aScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyBC Pyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQorKTsnKTsKKworLS0g U2luZ2xlIHJvdworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2Vfc2luZ2xlX3JvdyBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEpCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2VkZ2Vfc2luZ2xlX3JvdycpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBUUlVFCisp OycpOworCistLSBQYXR0ZXJuIGxvbmdlciB0aGFuIGRhdGEKK0NSRUFURSBWSUVXIHJwcl9ldl9l ZGdlX3BhdHRlcm5fbG9uZ2VyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIEYgRyBIIEkgSikKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBBUyB2ID0gMywgRCBBUyB2 ID0gNCwgRSBBUyB2ID0gNSwKKyAgICAgICAgRiBBUyB2ID0gNiwgRyBBUyB2ID0gNywgSCBBUyB2 ID0gOCwgSSBBUyB2ID0gOSwgSiBBUyB2ID0gMTAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX3BhdHRlcm5fbG9u Z2VyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgRiBHIEggSSBK KQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAz LCBEIEFTIHYgPSA0LCBFIEFTIHYgPSA1LAorICAgICAgICBGIEFTIHYgPSA2LCBHIEFTIHYgPSA3 LCBIIEFTIHYgPSA4LCBJIEFTIHYgPSA5LCBKIEFTIHYgPSAxMAorKTsnKTsKKworLS0gQWxsIHJv d3MgbWF0Y2ggYXMgc2luZ2xlIG1hdGNoCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9zaW5nbGVf bWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Vk Z2Vfc2luZ2xlX21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgVFJVRQorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb21wbGV4IFBhdHRlcm4g VGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCistLSBOZXN0ZWQgZ3JvdXBzCitDUkVBVEUgVklFVyBycHJfZXZfY3B4 X25lc3RlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0g MSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X25lc3RlZCcp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKSBDKSspCisgICAgREVGSU5F IEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisK Ky0tIE11bHRpcGxlIGFsdGVybmF0aW9ucworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9tdWx0aV9h bHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg fCBCKSAoQyB8IEQgfCBFKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnQScsIEIg QVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKKyAgICAgICAgRCBBUyBjYXQgPSAnRCcsIEUg QVMgY2F0ID0gJ0UnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X211bHRpX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChB IHwgQikgKEMgfCBEIHwgRSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJydBJycs IEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycsCisgICAgICAgIEQgQVMgY2F0ID0g JydEJycsIEUgQVMgY2F0ID0gJydFJycKKyk7Jyk7CisKKy0tIE9wdGlvbmFsIGVsZW1lbnRzCitD UkVBVEUgVklFVyBycHJfZXZfY3B4X29wdGlvbmFsIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBE RUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2NweF9vcHRpb25hbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg Qj8gQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYg JSA0ID0gMworKTsnKTsKKworLS0gQm91bmRlZCBxdWFudGlmaWVycworQ1JFQVRFIFZJRVcgcnBy X2V2X2NweF9ib3VuZGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNX0gQikKKyAgICBERUZJTkUgQSBBUyB2 ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X2JvdW5kZWQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDV9IEIpCisgICAgREVGSU5FIEEgQVMg diAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsKKworLS0gU3RhciBxdWFudGlmaWVy CitDUkVBVEUgVklFVyBycHJfZXZfY3B4X3N0YXIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKiBDKQorICAgIERF RklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEwIElOICgyLDMsNCw1LDYsNyw4KSwgQyBB UyB2ICUgMTAgPSA5CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X3N0YXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIqIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUg MTAgSU4gKDIsMyw0LDUsNiw3LDgpLCBDIEFTIHYgJSAxMCA9IDkKKyk7Jyk7CisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gUmVhbC13b3JsZCBQYXR0ZXJuIEV4YW1wbGVzCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU3RvY2sgcHJpY2Ug cGF0dGVybiAtIFYtc2hhcGUgKGRvd24gdGhlbiB1cCkKK0NSRUFURSBWSUVXIHJwcl9ldl9yZWFs X3ZzaGFwZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX2NvbXBsZXgK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChEKyBVKykKKyAgICBERUZJTkUgRCBBUyB0cmVuZCA9ICdEJywgVSBBUyB0cmVuZCA9ICdV JworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X3JlYWxfdnNoYXBlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoRCsgVSspCisgICAg REVGSU5FIEQgQVMgdHJlbmQgPSAnJ0QnJywgVSBBUyB0cmVuZCA9ICcnVScnCispOycpOworCist LSBTdG9jayBwcmljZSBwYXR0ZXJuIC0gcGVhayAodXAsIHN0YWJsZSwgZG93bikKK0NSRUFURSBW SUVXIHJwcl9ldl9yZWFsX3BlYWsgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnBy X25mYV9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoVSsgUyogRCspCisgICAgREVGSU5FIFUgQVMgdHJlbmQgPSAnVScs IFMgQVMgdHJlbmQgPSAnUycsIEQgQVMgdHJlbmQgPSAnRCcKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWFsX3BlYWsn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBy cHJfbmZhX2NvbXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChVKyBTKiBEKykKKyAgICBERUZJTkUgVSBBUyB0cmVuZCA9ICcn VScnLCBTIEFTIHRyZW5kID0gJydTJycsIEQgQVMgdHJlbmQgPSAnJ0QnJworKTsnKTsKKworLS0g Q29uc2VjdXRpdmUgaW5jcmVhc2luZyB2YWx1ZXMgKHVzaW5nIFBSRVYpCitDUkVBVEUgVklFVyBy cHJfZXZfcmVhbF9pbmNyZWFzaW5nIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9KQorICAgIERFRklORSBBIEFT IHYgPiBQUkVWKHYpIE9SIFBSRVYodikgSVMgTlVMTAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlYWxfaW5jcmVhc2lu ZycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9KQorICAgIERFRklORSBB IEFTIHYgPiBQUkVWKHYpIE9SIFBSRVYodikgSVMgTlVMTAorKTsnKTsKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQ ZXJmb3JtYW5jZS1vcmllbnRlZCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIExhcmdlIGRhdGFzZXQgd2l0 aCBzaW1wbGUgcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3BlcmZfbGFyZ2Vfc2ltcGxlIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9wZXJmX2xhcmdlX3NpbXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9 IDAKKyk7Jyk7CisKKy0tIExhcmdlIGRhdGFzZXQgd2l0aCBhYnNvcnB0aW9uCitDUkVBVEUgVklF VyBycHJfZXZfcGVyZl9sYXJnZV9hYnNvcmIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklO RSBBIEFTIHYgJSAxMDAgPD4gMCwgQiBBUyB2ICUgMTAwID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfbGFy Z2VfYWJzb3JiJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAg IERFRklORSBBIEFTIHYgJSAxMDAgPD4gMCwgQiBBUyB2ICUgMTAwID0gMAorKTsnKTsKKworLS0g SGlnaCBzdGF0ZSBtZXJnZSByYXRpbworQ1JFQVRFIFZJRVcgcnByX2V2X3BlcmZfaGlnaF9tZXJn ZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIg QVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfaGlnaF9tZXJnZScp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklO RSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIElOSVRJQUwgdnMgbm8gSU5JVElBTCBjb21wYXJpc29uCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gV2l0aCBJTklUSUFMIGtleXdvcmQKK0NSRUFURSBWSUVXIHJwcl9ldl9pbml0aWFsX3dpdGgg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4g MCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9pbml0aWFsX3dpdGgnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2 ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gV2l0aG91dCBJTklUSUFMIGtl eXdvcmQgKHNhbWUgYmVoYXZpb3IgY3VycmVudGx5KQorQ1JFQVRFIFZJRVcgcnByX2V2X2luaXRp YWxfd2l0aG91dCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfaW5pdGlhbF93aXRob3V0JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBC IEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBRdWFudGlmaWVyIFZhcmlhdGlvbnMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCistLSBQbHVzIHF1YW50aWZpZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9w bHVzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0 MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSA0IDw+IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9xdWFudF9wbHVzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdiAlIDQgPD4gMAorKTsnKTsKKworLS0gU3RhciBxdWFudGlmaWVyICh6ZXJv IG9yIG1vcmUpCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfc3RhciBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKiBC KQorICAgIERFRklORSBBIEFTIHYgJSA0IElOICgxLCAyKSwgQiBBUyB2ICUgNCA9IDMKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9xdWFudF9zdGFyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSogQikK KyAgICBERUZJTkUgQSBBUyB2ICUgNCBJTiAoMSwgMiksIEIgQVMgdiAlIDQgPSAzCispOycpOwor CistLSBRdWVzdGlvbiBtYXJrICh6ZXJvIG9yIG9uZSkKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFu dF9xdWVzdGlvbiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBPyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAx LCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9xdWVzdGlv bicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/IEIgQykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsnKTsKKwor LS0gRXhhY3QgY291bnQge259CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfZXhhY3QgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQXszfSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfcXVhbnRfZXhhY3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBezN9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7 Jyk7CisKKy0tIFJhbmdlIHtuLG19CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfcmFuZ2UgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUg NSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9yYW5nZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEF7Miw0fSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUg PSAwCispOycpOworCistLSBBdCBsZWFzdCB7bix9CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRf YXRsZWFzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBezMsfSBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAw LCBCIEFTIHYgJSAxMCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9hdGxlYXN0JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQXszLH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4g MCwgQiBBUyB2ICUgMTAgPSAwCispOycpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJlZ3Jlc3Npb24gVGVzdHMg Zm9yIFN0YXRpc3RpY3MgQWNjdXJhY3kKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBWZXJpZnkgc3RhdGUgY291bnQg YWNjdXJhY3kKKy0tIFBhdHRlcm4gQSsgQiB3aXRoIDIwIHJvd3Mgc2hvdWxkIHNob3cgcHJlZGlj dGFibGUgc3RhdGUgYmVoYXZpb3IKK0NSRUFURSBWSUVXIHJwcl9ldl9yZWdfc3RhdGVfY291bnQg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1 ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X3JlZ19zdGF0ZV9jb3VudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9 IDAKKyk7Jyk7CisKKy0tIFZlcmlmeSBjb250ZXh0IGNvdW50IHdpdGgga25vd24gYWJzb3JwdGlv bgorQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19jdHhfYWJzb3JiIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykK KyAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAxMCA9 IDgsIEMgQVMgdiAlIDEwID0gOQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlZ19jdHhfYWJzb3JiJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCBJ TiAoMSwyLDMsNCw1LDYsNyksIEIgQVMgdiAlIDEwID0gOCwgQyBBUyB2ICUgMTAgPSA5CispOycp OworCistLSBWZXJpZnkgbWF0Y2ggbGVuZ3RoIHdpdGggZml4ZWQtbGVuZ3RoIHBhdHRlcm4KK0NS RUFURSBWSUVXIHJwcl9ldl9yZWdfbWF0Y2hsZW4gQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVG SU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9yZWdfbWF0Y2hsZW4nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAz ID0gMAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBQYXR0ZXJuIFRlc3RzCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gU2ltcGxlIGFsdGVybmF0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3NpbXBs ZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8 IEIpIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBj YXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfc2ltcGxlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSBD KQorICAgIERFRklORSBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNh dCA9ICcnQycnCispOycpOworCistLSBNdWx0aXBsZSBpdGVtcyBpbiBhbHRlcm5hdGlvbgorQ1JF QVRFIFZJRVcgcnByX2V2X2FsdF9tdWx0aV9pdGVtIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMgfCBEKSBFKQorICAgIERFRklORQor ICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAor ICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbXVs dGlfaXRlbScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMgfCBEKSBFKQorICAgIERFRklORQor ICAgICAgICBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcn QycnLAorICAgICAgICBEIEFTIGNhdCA9ICcnRCcnLCBFIEFTIGNhdCA9ICcnRScnCispOycpOwor CistLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0 X3dpdGhfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF93aXRo X3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAor KTsnKTsKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpdmVzICg0KykKK0NSRUFURSBWSUVXIHJwcl9l dl9hbHRfZm91cl9wbHVzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8 IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBD IEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf YWx0X2ZvdXJfcGx1cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9 IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMg diAlIDUgPSA0CispOycpOworCistLSBBbHRlcm5hdGlvbiBhdCBzdGFydAorQ1JFQVRFIFZJRVcg cnByX2V2X2FsdF9hdF9zdGFydCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8 IEIpIEMgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFT IHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfYXRfc3RhcnQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIp IEMgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYg JSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0tIE11bHRpcGxlIHNlcXVlbnRpYWwg YWx0ZXJuYXRpb25zCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3NlcXVlbnRpYWwgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikgQyAoRCB8IEUpIEYpCisgICAgREVGSU5F IEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsIEQgQVMgdiAl IDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfc2Vx dWVudGlhbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOICgoQSB8IEIpIEMgKEQgfCBFKSBGKQorICAgIERFRklORSBBIEFTIHYgJSA2ID0gMCwg QiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLCBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUg NiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOycpOworCistLSBRdWFudGlmaWVkIGFsdGVybmF0aXZl cworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9xdWFudGlmaWVkIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKChBKyB8IEIrKSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBB UyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X3F1YW50aWZpZWQnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSsg fCBCKykgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFT IHYgJSAzID0gMgorKTsnKTsKKworLS0gQWx0ZXJuYXRpb24gYXQgZW5kCitDUkVBVEUgVklFVyBy cHJfZXZfYWx0X2F0X2VuZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgKEMg fCBEKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYg JSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfYXRfZW5kJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIChDIHwgRCkp CisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9 IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworCistLSBOZXN0ZWQgQUxUIGF0IHN0YXJ0IG9mIGJy YW5jaCBpbnNpZGUgb3V0ZXIgQUxUCistLSBQYXR0ZXJuOiAoQSAoKEIgfCBDKSBEIHwgRSkpIC0g cHJlY2VkaW5nIFZBUiArIGlubmVyIEFMVCBhcyBmaXJzdCBicmFuY2ggZWxlbWVudAorQ1JFQVRF IFZJRVcgcnByX2V2X2FsdF9uZXN0ZWRfc3RhcnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSAoKEIgfCBDKSBEIHwgRSkpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFT IHYgJSA1ID0gMSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUgPSAzLCBFIEFTIHYgJSA1ID0g NAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X2FsdF9uZXN0ZWRfc3RhcnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIEQgfCBFKSkKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2 ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOycpOworCistLSBOZXN0ZWQgQUxUIGF0IGVuZCBv ZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAorLS0gUGF0dGVybjogKEMgKEEgfCBCKSB8IEQpIC0g aW5uZXIgQUxUIGlzIGxhc3QgZWxlbWVudCBpbiBvdXRlciBicmFuY2gKK0NSRUFURSBWSUVXIHJw cl9ldl9hbHRfbmVzdGVkX2VuZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIChB IHwgQikgfCBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMg QVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9uZXN0ZWRfZW5kJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyAo QSB8IEIpIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBD IEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0tIFF1YW50aWZpZWQgZ3Jv dXAgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJyYW5jaAorLS0gUGF0dGVybjogKChBIEIpKyB8 IEMpIC0gbGVhZGluZyBncm91cCBicmFuY2ggbXVzdCBvcGVuIHRoZSBlbmNsb3NpbmcgcGFyZW4K K0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2ZpcnN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKChBIEIpKyB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYg JSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2ZpcnN0JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0 ID0gMgorKTsnKTsKKworLS0gUXVhbnRpZmllZCBncm91cCBhcyB0aGUgbGFzdCBhbHRlcm5hdGlv biBicmFuY2gKKy0tIFBhdHRlcm46IChDIHwgKEEgQikrKSAtIHRyYWlsaW5nIGdyb3VwIGJyYW5j aCwgbm8gc2VwYXJhdG9yIGZvbGxvd3MKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2xhc3Qg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2FsdF9ncnBfbGFzdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEMgfCAoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFT IHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7CisKKy0tIFF1YW50aWZpZWQgZ3JvdXAg YXMgdGhlIG1pZGRsZSBicmFuY2ggb2YgYSB0aHJlZS13YXkgYWx0ZXJuYXRpb24KKy0tIFBhdHRl cm46IChDIHwgKEEgQikrIHwgRCkgLSBzZXBhcmF0b3IgYmVmb3JlIEQgbXVzdCBzdXJ2aXZlIHRo ZSBncm91cCBicmFuY2gKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX21pZCBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChDIHwgKEEgQikrIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9hbHRfZ3JwX21pZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSsgfCBEKQorICAgIERFRklORSBBIEFTIHYg JSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMwor KTsnKTsKKworLS0gUXVhbnRpZmllZCBncm91cCBhcyB0aGUgZmlyc3QgYnJhbmNoIG9mIGEgdGhy ZWUtd2F5IGFsdGVybmF0aW9uCistLSBQYXR0ZXJuOiAoKEEgQikrIHwgQyB8IEQpIC0gbGVhZGlu ZyBncm91cCBicmFuY2ggd2l0aCB0d28gZm9sbG93aW5nIGJyYW5jaGVzCitDUkVBVEUgVklFVyBy cHJfZXZfYWx0X2dycF9maXJzdDMgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEg QikrIHwgQyB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwg QyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9maXJzdDMn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSBCKSsgfCBDIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAx LCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0tIEJvdW5kZWQtcXVh bnRpZmllciBncm91cCBhcyB0aGUgZmlyc3QgYWx0ZXJuYXRpb24gYnJhbmNoCistLSBQYXR0ZXJu OiAoKEEgQil7Mn0gfCBDKSAtIGxlYWRpbmcgZ3JvdXAgYnJhbmNoIHdpdGggYSByYW5nZSBxdWFu dGlmaWVyCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9ib3VuZGVkIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKChBIEIpezJ9IHwgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9 IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfYm91 bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKChBIEIpezJ9IHwgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQg PSAxLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsKKworLS0gVHdvIHF1YW50aWZpZWQgZ3JvdXBzIGlu IG9uZSBhbHRlcm5hdGlvbgorLS0gUGF0dGVybjogKChBIEIpKyB8IChDIEQpKykgLSBib3RoIGJy YW5jaGVzIGFyZSBncm91cHMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2JvdGggQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwgKEMgRCkrKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0 ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2FsdF9ncnBfYm90aCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8IChDIEQpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUg NCA9IDMKKyk7Jyk7CisKKy0tIExlYWRpbmcgZ3JvdXAgYnJhbmNoIGluIGFuIGFsdGVybmF0aW9u IG5lc3RlZCBpbiBhIHNlcXVlbmNlCistLSBQYXR0ZXJuOiAoKChBIEIpKyB8IEMpIEQpIC0gaW5u ZXIgYWx0ZXJuYXRpb24gb3BlbnMgd2l0aCBhIGdyb3VwIGJyYW5jaAorQ1JFQVRFIFZJRVcgcnBy X2V2X2FsdF9ncnBfc2VxX2hlYWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChB IEIpKyB8IEMpIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwg QyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9zZXFfaGVh ZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KCgoQSBCKSsgfCBDKSBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9 IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKworLS0gVHJhaWxpbmcg Z3JvdXAgYnJhbmNoIGluIGFuIGFsdGVybmF0aW9uIG5lc3RlZCBpbiBhIHNlcXVlbmNlCistLSBQ YXR0ZXJuOiAoKEMgfCAoQSBCKSspIEQpIC0gZ3JvdXAgYXMgbGFzdCBicmFuY2gsIHRoZW4gYSBz ZXF1ZW5jZSBlbGVtZW50CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9zZXFfdGFpbCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQyB8IChBIEIpKykgRCkKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUg NCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX3NlcV90YWlsJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEMgfCAoQSBCKSspIEQpCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMg diAlIDQgPSAzCispOycpOworCistLSBRdWFudGlmaWVkIGFsdGVybmF0aW9uIHdob3NlIGZpcnN0 IGJyYW5jaCBpcyBhIHF1YW50aWZpZWQgZ3JvdXAKKy0tIFBhdHRlcm46ICgoKEEgQil7Mn0gfCBD KSspIC0gc2luZ2xlLUFMVCBncm91cCB3cmFwcyBhIGxlYWRpbmcgZ3JvdXAgYnJhbmNoCitDUkVB VEUgVklFVyBycHJfZXZfYWx0X2dycF9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOICgoKEEgQil7Mn0gfCBDKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYg JSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX3F1YW50JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpezJ9 IHwgQykrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMg diAlIDQgPSAyCispOycpOworCistLSBVbml0ICgxLDEpIGdyb3VwIGFzIGFuIGFsdGVybmF0aW9u IGJyYW5jaCAoZW1pdHMgbm8gQkVHSU4vRU5EKQorLS0gUGF0dGVybjogKChBIEIpIHwgQykgLSBj b250cm9sOiB0YWtlcyB0aGUgdmFyaWFibGUgcGF0aCwgbm90IGRlcGFyc2VfcnByX2dyb3VwCitD UkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF91bml0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKChBIEIpIHwgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQg PSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfdW5pdCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpIHwgQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgor KTsnKTsKKworLS0gUXVhbnRpZmllZCB2YXJpYWJsZSBhcyB0aGUgZmlyc3QgYWx0ZXJuYXRpb24g YnJhbmNoCistLSBQYXR0ZXJuOiAoQSsgfCBDKSAtIGNvbnRyb2w6IGRlcGFyc2VfcnByX3ZhciBh bHJlYWR5IG9wZW5zIHRoZSBsZWFkaW5nIHBhcmVuCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3Zh cl9maXJzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyB8IEMpCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAwLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF92YXJfZmly c3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKyB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBDIEFTIHYgJSA0ID0gMgorKTsn KTsKKworLS0gUXVhbnRpZmllZCBncm91cCBhcyB0aGUgbGFzdCBicmFuY2ggb2YgYSB0aHJlZS13 YXkgYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46IChDIHwgRCB8IChBIEIpKykgLSBjb250cm9sOiB0 cmFpbGluZyBncm91cCBuZWVkcyBubyBzZXBhcmF0b3IKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRf Z3JwX2xhc3QzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgfCBEIHwgKEEgQikr KQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQg PSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfbGFzdDMnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIHwgRCB8IChBIEIp KykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0 ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0tIEFsdGVybmF0aW9uIG5lc3RlZCBpbiBh IGxlYWRpbmcgYnJhbmNoIG11c3Qgbm90IHN3YWxsb3cgdGhlIHRyYWlsaW5nIGJyYW5jaAorLS0g UGF0dGVybjogKEQgKEEgfCBCKSB8IEUpIC0gaW5oZXJpdGVkIGxpbWl0IGJvdW5kcyB0aGUgaW5u ZXIgYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfaW5uZXJfYm91bmRlZCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChEIChBIHwgQikgfCBFKQorICAgIERFRklORSBB IEFTIHYgJSA1ID0gMCwgQiBBUyB2ICUgNSA9IDEsIEQgQVMgdiAlIDUgPSAyLCBFIEFTIHYgJSA1 ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2FsdF9pbm5lcl9ib3VuZGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoRCAoQSB8IEIpIHwgRSkKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBEIEFTIHYgJSA1ID0gMiwgRSBBUyB2 ICUgNSA9IDMKKyk7Jyk7CisKKy0tIEdyb3VwIG1pZC1icmFuY2ggZm9sbG93ZWQgYnkgYSBzZXF1 ZW5jZSBlbGVtZW50IG5lZWRzIG5vIHNlcGFyYXRvciBiZWZvcmUgaXQKKy0tIFBhdHRlcm46IChD IHwgKEEgQikrIEQpIC0gcmVsYXRpdmUtbmV4dCBibG9ja3MgYSBzcHVyaW91cyBzZXBhcmF0b3Ig YXQgRAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfdGhlbl9zZXEgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2FsdF9ncnBfdGhlbl9zZXEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChDIHwgKEEgQikrIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQg PSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycp OworCistLSBRdWFudGlmaWVkIGdyb3VwIHdyYXBwaW5nIGEgbG9uZSBhbHRlcm5hdGlvbjogdGhl IEFMVCBzdXBwbGllcyB0aGUgcGFyZW5zCistLSBQYXR0ZXJuOiAoKEEgfCBCKSspIC0gbG9uZUFs dCBwYXRoLCBzaW5nbGUgcGFpciBvZiBwYXJlbnMKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfbG9u ZV9hbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSspCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMQorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9sb25lX2Fs dCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KChBIHwgQikrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEKKyk7 Jyk7CisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgd3JhcHBpbmcgYSBzZXF1ZW5jZSB3aG9zZSBsYXN0 IGVsZW1lbnQgaXMgYW4gYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46ICgoQSAoQiB8IEMpKSspIC0g Z3JvdXAgcGFyZW4gcGx1cyBhIG5lc3RlZCBhbHRlcm5hdGlvbiBwYXJlbgorQ1JFQVRFIFZJRVcg cnByX2V2X2dycF9zZXFfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChC IHwgQykpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFT IHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2dycF9zZXFfYWx0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgfCBDKSkrKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOycpOwor CistLSBRdWFudGlmaWVkIGdyb3VwIHdyYXBwaW5nIGEgc2VxdWVuY2Ugd2hvc2UgZmlyc3QgZWxl bWVudCBpcyBhbiBhbHRlcm5hdGlvbgorLS0gUGF0dGVybjogKCgoQSB8IEIpIEMpKykgLSBsZWFk aW5nIG5lc3RlZCBhbHRlcm5hdGlvbiBpbnNpZGUgYSBncm91cCBzZXF1ZW5jZQorQ1JFQVRFIFZJ RVcgcnByX2V2X2dycF9hbHRfc2VxIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgo QSB8IEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBD IEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9hbHRfc2VxJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIHwgQikgQykrKQorICAgIERF RklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOycp OworCistLSBBbHRlcm5hdGlvbiBub24tbGFzdCBpbiBhIG5vbi1sYXN0IGJyYW5jaCwgc3RhY2tl ZCB0aHJlZSBkZWVwOiBlYWNoIGxldmVsJ3MKKy0tIGluaGVyaXRlZCBsaW1pdCBtdXN0IGJvdW5k IHRoZSBpbm5lciBhbHRlcm5hdGlvbiBhZ2FpbnN0IHRoZSBuZXh0IGJyYW5jaAorLS0gUGF0dGVy bjogKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikgLSB0aHJlZSBuZXN0ZWQgaW5oZXJpdGVkLWxpbWl0 IGJvdW5kYXJpZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfc3RhY2szIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikKKyAgICBERUZJTkUgQSBB UyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAgICAgICAgICAg RCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2FsdF9zdGFjazMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOICgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDYg PSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAgICAgICAgIEQgQVMgdiAl IDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7Jyk7CisKKy0tIFNhbWUg aW50ZXJhY3Rpb24gc3RhY2tlZCBmb3VyIGRlZXAsIHRvIGV4ZXJjaXNlIHRoZSBpbmR1Y3Rpb24g b25lIHN0ZXAgZnVydGhlcgorLS0gUGF0dGVybjogKCgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIEcg fCBIKSAtIGZvdXIgbmVzdGVkIGluaGVyaXRlZC1saW1pdCBib3VuZGFyaWVzCitDUkVBVEUgVklF VyBycHJfZXZfYWx0X3N0YWNrNCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChB IHwgQikgQyB8IEQpIEUgfCBGKSBHIHwgSCkKKyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIg QVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAg IEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAl IDggPSA3CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYWx0X3N0YWNrNCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIEcgfCBI KQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDgg PSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAl IDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisKKy0tIFRocmVl LWRlZXAgc3RhY2sgd2hvc2UgaW5uZXJtb3N0IGJyYW5jaCBpcyBhIHF1YW50aWZpZWQgZ3JvdXA6 IHRoZSBncm91cCdzCistLSBza2lwLXRhcmdldCBqdW1wIG11c3Qgbm90IGJlIG1pc3Rha2VuIGZv ciBhIGJyYW5jaCBzZXBhcmF0b3IgYXQgYW55IGRlcHRoCistLSBQYXR0ZXJuOiAoKChBIHwgQikr IEMgfCBEKSBFIHwgRikgLSBpbmhlcml0ZWQgbGltaXQgcGx1cyBsb25lQWx0IGF0IHRoZSBiYXNl CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3N0YWNrM19ncnAgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoKChBIHwgQikrIEMgfCBEKSBFIHwgRikKKyAgICBERUZJTkUgQSBBUyB2ICUg NiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAgICAgICAgICAgRCBBUyB2 ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9z dGFjazNfZ3JwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoKChBIHwgQikrIEMgfCBEKSBFIHwgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9 IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAgICAgICAgICAgRCBBUyB2ICUg NiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsnKTsKKworLS0gQWx0ZXJu YXRpb24gdHJhaWxpbmcgYSBwYXJlbi1sZXNzIHNlcXVlbmNlIChsYXN0IGVsZW1lbnQgb2YgYSBu b24tbGFzdAorLS0gYnJhbmNoLCBubyBzYW1lLWRlcHRoIHNpYmxpbmcgdG8gYm91bmQgaXQpLCBu ZXN0ZWQgdGhyZWUgZGVlcAorLS0gUGF0dGVybjogKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikgLSBl YWNoIGlubmVyIGFsdGVybmF0aW9uIGlzIGJyYW5jaC10YWlsCitDUkVBVEUgVklFVyBycHJfZXZf YWx0X3RhaWwzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgKEMgfCBEKSB8 IEUpIHwgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFT IHYgJSA2ID0gMiwKKyAgICAgICAgICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBG IEFTIHYgJSA2ID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF90YWlsMycpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikK KyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0g MiwKKyAgICAgICAgICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2 ID0gNQorKTsnKTsKKworLS0gU2FtZSBicmFuY2gtdGFpbCBhbHRlcm5hdGlvbiBuZXN0ZWQgZm91 ciBkZWVwCistLSBQYXR0ZXJuOiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHKSB8IEgpIC0gYnJh bmNoLXRhaWwgYWx0ZXJuYXRpb24geDQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfdGFpbDQgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHKSB8 IEgpCisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUg OCA9IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2 ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF90 YWlsNCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRykgfCBIKQorICAgIERFRklORSBBIEFTIHYgJSA4 ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAyLCBEIEFTIHYgJSA4ID0gMywKKyAg ICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4ID0gNiwg SCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisKKy0tIEEgbmVzdGVkIGFsdGVybmF0aW9uIHRhaWwgbmVp Z2hib3VyaW5nIGEgbXVsdGktZWxlbWVudCBzZXF1ZW5jZSBicmFuY2g6IHRoZQorLS0gYnJhbmNo IGJvdW5kYXJ5IG11c3Qgc3BsaXQgIi4uLmJyYW5jaC10YWlsIEFMVCIgZnJvbSBhIHBsYWluICJH IEEiIHNlcXVlbmNlCistLSBQYXR0ZXJuOiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHIEEpIHwg SCkgLSBzZXEgYnJhbmNoIGJlc2lkZSBhbiBBTFQgdGFpbAorQ1JFQVRFIFZJRVcgcnByX2V2X2Fs dF90YWlsX3NlcWJyYW5jaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChD IChEIHwgRSkgfCBGKSB8IEcgQSkgfCBIKQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBB UyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAg RSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUg OCA9IDcKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdGFpbF9zZXFicmFuY2gnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIChEIHwgRSkgfCBGKSB8 IEcgQSkgfCBIKQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMg QVMgdiAlIDggPSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQs IEYgQVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisK Ky0tIEEgbmVzdGVkIGFsdGVybmF0aW9uIHRoYXQgaXMgc2libGluZy1ib3VuZGVkIGJ5IGEgdHJh aWxpbmcgc2VxdWVuY2UgZWxlbWVudAorLS0gYXQgdGhlIG91dGVyIGxldmVsICh0aGUgQUxUIGlz IG5vdCB0aGUgYnJhbmNoIHRhaWw7IEcgZm9sbG93cyBpdCBpbi1icmFuY2gpCistLSBQYXR0ZXJu OiAoKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikgRyB8IEgpIC0gQUxUIGJvdW5kZWQgYnkgYSBmb2xs b3dpbmcgZWxlbWVudAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9taWRfc2VxdGFpbCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSAoQiAoQyB8IEQpIHwgRSkgfCBGKSBHIHwgSCkK KyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0g MiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4 ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDggPSA3CispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X21pZF9z ZXF0YWlsJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikgRyB8IEgpCisgICAgREVGSU5FIEEgQVMgdiAl IDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQgQVMgdiAlIDggPSAzLAor ICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2 LCBIIEFTIHYgJSA4ID0gNworKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHcm91cCBQYXR0ZXJuIFRlc3Rz CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworLS0gU2ltcGxlIGdyb3VwCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX3NpbXBs ZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYg JSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2dycF9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0g MAorKTsnKTsKKworLS0gR3JvdXAgd2l0aCBib3VuZGVkIHF1YW50aWZpZXIKK0NSRUFURSBWSUVX IHJwcl9ldl9ncnBfYm91bmRlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsyLDR9KQorICAgIERFRklORSBB IEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfYm91bmRlZCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpezIsNH0pCisgICAgREVGSU5FIEEg QVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKworLS0gTmVzdGVkIGdyb3Vwcwor Q1JFQVRFIFZJRVcgcnByX2V2X2dycF9uZXN0ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezJ9KSspCisg ICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9u ZXN0ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworCistLSBEZWVw IG5lc3RpbmcgKDMrIGxldmVscykKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfZGVlcCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIHwgQikrKSspKykKKyAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX2RlZXAnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIHwgQikr KSspKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOycpOwor CistLSBCb3VuZGVkIHF1YW50aWZpZXIgb24gYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9l dl9ncnBfYm91bmRlZF9hbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBC KXsyLDN9IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBB UyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfYm91bmRlZF9hbHQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpezIsM30gQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsnKTsKKworLS0gTmVzdGVkIGdyb3VwcyB3aXRoIHF1YW50aWZpZXJzCitDUkVBVEUgVklFVyBy cHJfZXZfZ3JwX25lc3RlZF9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo KEEgQikrIEMpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBD IEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9uZXN0ZWRfcXVhbnQnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikrIEMpKikKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsnKTsKKworLS0gUGFydGlhbCBuZXN0ZWQgcXVhbnRpZmljYXRpb24KK0NSRUFURSBWSUVXIHJw cl9ldl9ncnBfcGFydGlhbF9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSAoQiBDKSspKikKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBD IEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9wYXJ0aWFsX3F1YW50JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgQykrKSopCisg ICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIK Kyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gV2luZG93IEZ1bmN0aW9uIENvbWJpbmF0aW9ucworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKy0tIGNvdW50KCopIHdpdGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3dmbl9jb3Vu dCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAl IDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfd2ZuX2NvdW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsnKTsKKworLS0gZmlyc3RfdmFsdWUgd2l0aCBwYXR0ZXJuCitDUkVBVEUgVklFVyBycHJfZXZf d2ZuX2ZpcnN0X3ZhbHVlIEFTCitTRUxFQ1QgZmlyc3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMg diAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5fZmlyc3RfdmFsdWUnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGZpcnN0X3ZhbHVlKHYpIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBB IEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworCistLSBsYXN0X3ZhbHVlIHdp dGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3dmbl9sYXN0X3ZhbHVlIEFTCitTRUxFQ1Qg bGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X3dmbl9sYXN0X3ZhbHVlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBsYXN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAw CispOycpOworCistLSBNdWx0aXBsZSB3aW5kb3cgZnVuY3Rpb25zCitDUkVBVEUgVklFVyBycHJf ZXZfd2ZuX211bHRpIEFTCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcsCisgICAgZmlyc3Rf dmFsdWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5fbXVsdGknKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3LAorICAgIGZpcnN0X3ZhbHVl KHYpIE9WRVIgdywKKyAgICBsYXN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCispOycpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIERFRklORSBFeHByZXNzaW9uIFZh cmlhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCistLSBDb21wbGV4IGJvb2xlYW4gZXhwcmVzc2lvbnMKK0NSRUFU RSBWSUVXIHJwcl9ldl9kZWZfY29tcGxleF9ib29sIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAg IEIgQVMgKHYgJSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9kZWZfY29tcGxleF9i b29sJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAodiAlIDUgPD4gMCkgQU5EICh2ICUgMyA8PiAwKSwKKyAgICAgICAgQiBB UyAodiAlIDUgPSAwKSBPUiAodiAlIDMgPSAwKQorKTsnKTsKKworLS0gVXNpbmcgUFJFViBmdW5j dGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9wcmV2IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFMgVSsgRCspCisg ICAgREVGSU5FCisgICAgICAgIFMgQVMgVFJVRSwKKyAgICAgICAgVSBBUyB2ID4gUFJFVih2KSwK KyAgICAgICAgRCBBUyB2IDwgUFJFVih2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2RlZl9wcmV2JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoUyBVKyBEKykKKyAgICBERUZJTkUKKyAgICAgICAgUyBB UyBUUlVFLAorICAgICAgICBVIEFTIHYgPiBQUkVWKHYpLAorICAgICAgICBEIEFTIHYgPCBQUkVW KHYpCispOycpOworCistLSBVc2luZyAxLWFyZyBQUkVWIChpbXBsaWNpdCBvZmZzZXQgMSkKK0NS RUFURSBWSUVXIHJwcl9ldl9uYXZfcHJldjEgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf bmF2X3ByZXYxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5F fFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIDEtYXJnIE5FWFQgKGltcGxpY2l0IG9mZnNldCAxKQor Q1JFQVRFIFZJRVcgcnByX2V2X25hdl9uZXh0MSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodikKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9uYXZfbmV4dDEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJ TkV8UFJFVnxORVhUJzsKKworLS0gVXNpbmcgMi1hcmcgUFJFViAoZXhwbGljaXQgb2Zmc2V0KQor Q1JFQVRFIFZJRVcgcnByX2V2X25hdl9wcmV2MiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA+IFBSRVYodiwgMikKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9uYXZfcHJldjInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxE RUZJTkV8UFJFVnxORVhUJzsKKworLS0gVXNpbmcgMi1hcmcgTkVYVCAoZXhwbGljaXQgb2Zmc2V0 KQorQ1JFQVRFIFZJRVcgcnByX2V2X25hdl9uZXh0MiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERF RklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodiwgMikKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9uYXZfbmV4dDInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS TnxERUZJTkV8UFJFVnxORVhUJzsKKworLS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucworQ1JFQVRF IFZJRVcgcnByX2V2X2RlZl9udWxsIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgK KyAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2 CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiBJUyBOT1QgTlVMTCwgQiBBUyB2IElTIE5VTEwKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9kZWZf bnVsbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NICgKKyAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVO RCBBUyB2CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiBJUyBOT1QgTlVMTCwgQiBBUyB2IElTIE5VTEwKKyk7Jyk7CisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gTGFyZ2UgU2NhbGUgU3RhdGlzdGljcyBWZXJpZmljYXRpb24KKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CistLSA1MDAgcm93cyAtIHZlcmlmeSBzdGF0aXN0aWNzIHNjYWxlIGNvcnJlY3RseQorQ1JFQVRF IFZJRVcgcnByX2V2X3NjYWxlXzUwMHJvd3MgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJ TkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0gOAorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X3NjYWxlXzUwMHJvd3MnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8IDcsIEIgQVMgdiAlIDEwID0gNywgQyBB UyB2ICUgMTAgPSA4CispOycpOworCistLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCitDUkVB VEUgVklFVyBycHJfZXZfc2NhbGVfaGlnaF9tYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERF RklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zY2FsZV9oaWdo X21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworCistLSBIaWdoIHNraXAg Y291bnQgc2NlbmFyaW8KK0NSRUFURSBWSUVXIHJwcl9ldl9zY2FsZV9oaWdoX3NraXAgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMTAwID0gMSwK KyAgICAgICAgQiBBUyB2ICUgMTAwID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMTAwID0gMywKKyAg ICAgICAgRCBBUyB2ICUgMTAwID0gNCwKKyAgICAgICAgRSBBUyB2ICUgMTAwID0gNQorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X3NjYWxlX2hpZ2hfc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB IEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiAlIDEwMCA9IDEsCisgICAgICAg IEIgQVMgdiAlIDEwMCA9IDIsCisgICAgICAgIEMgQVMgdiAlIDEwMCA9IDMsCisgICAgICAgIEQg QVMgdiAlIDEwMCA9IDQsCisgICAgICAgIEUgQVMgdiAlIDEwMCA9IDUKKyk7Jyk7CisKKy0tCist LSBQbGFubmVyIG9wdGltaXphdGlvbjogb3B0aW1pemVfd2luZG93X2NsYXVzZXMgbXVzdCBub3Qg YWx0ZXIgUlBSIGZyYW1lCistLQorLS0gb3B0aW1pemVfd2luZG93X2NsYXVzZXMoKSByZXBsYWNl cyBmcmFtZSBvcHRpb25zIHZpYSBwcm9zdXBwb3J0IGZ1bmN0aW9ucy4KKy0tIEFmZmVjdGVkIGZ1 bmN0aW9uczogcm93X251bWJlciwgcmFuaywgZGVuc2VfcmFuaywgcGVyY2VudF9yYW5rLCBjdW1l X2Rpc3QsCistLSBudGlsZS4gIEFsbCB3b3VsZCBjaGFuZ2UgdGhlIGZyYW1lIHRvIFJPV1MgVU5C T1VOREVEIFBSRUNFRElORywgYnJlYWtpbmcKKy0tIFJQUidzIHJlcXVpcmVkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORy4KKy0tIFRlc3Qgd2l0aCByb3df bnVtYmVyKCkgYXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KKy0tCisKKy0tIFdpdGhvdXQgUlBSOiBy b3dfbnVtYmVyKCkgZnJhbWUgaXMgb3B0aW1pemVkIHRvIFJPV1MgVU5CT1VOREVEIFBSRUNFRElO RworQ1JFQVRFIFZJRVcgcnByX2V2X29wdF9ub19ycHIgQVMKK1NFTEVDVCByb3dfbnVtYmVyKCkg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIHYKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBy cHJfZXZfb3B0X25vX3JwcjsKKworLS0gV2l0aCBSUFI6IGZyYW1lIG11c3QgcmVtYWluIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworQ1JFQVRFIFZJRVcg cnByX2V2X29wdF93aXRoX3JwciBBUworU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgdgorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQisp CisgICAgREVGSU5FCisgICAgICAgIEIgQVMgdiA+IFBSRVYodikKKyk7CisKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXZfb3B0X3dpdGhfcnByOworCistLQorLS0gUGxh bm5lciBvcHRpbWl6YXRpb246IG5vbi1SUFIgYW5kIFJQUiB3aW5kb3dzIHRoYXQgc2hhcmUgdGhl IHNhbWUgYmFzZSBmcmFtZQorLS0gYWZ0ZXIgZnJhbWUgb3B0aW1pemF0aW9uIGFyZSBrZXB0IGFz IHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4KKy0tCitDUkVBVEUgVklFVyBycHJfZXZfb3B0X21p eGVkIEFTCitTRUxFQ1QKKyAgICByb3dfbnVtYmVyKCkgT1ZFUiB3X25vcm1hbCBBUyBybl9ub3Jt YWwsCisgICAgcm93X251bWJlcigpIE9WRVIgd19ycHIgQVMgcm5fcnByCitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5ET1cKKyAgICB3X25vcm1hbCBBUyAoT1JERVIgQlkg diBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XKSwKKyAg ICB3X3JwciBBUyAoCisgICAgICAgIE9SREVSIEJZIHYKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQor ICAgICAgICBERUZJTkUgQSBBUyB2ID4gMQorICAgICk7CisKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUICogRlJPTSBycHJfZXZfb3B0X21peGVkOworCistLQorLS0gUGxhbm5lciBvcHRpbWl6 YXRpb246IGZpbmRfd2luZG93X3J1bl9jb25kaXRpb25zIG11c3Qgbm90IHB1c2ggZG93bgorLS0g UlBSIHdpbmRvdyBmdW5jdGlvbiByZXN1bHRzIGFzIFJ1biBDb25kaXRpb25zLgorLS0KKy0tIGZp bmRfd2luZG93X3J1bl9jb25kaXRpb25zKCkgcHVzaGVzIFdIRVJFIGZpbHRlcnMgb24gbW9ub3Rv bmljIHdpbmRvdworLS0gZnVuY3Rpb25zIGludG8gV2luZG93QWdnIGFzIFJ1biBDb25kaXRpb25z IGZvciBlYXJseSB0ZXJtaW5hdGlvbi4KKy0tIFdpdGggUlBSJ3MgcmVxdWlyZWQgZnJhbWUgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVECistLSBGT0xMT1dJTkcpLCB0aGUg bW9ub3RvbmljIGRpcmVjdGlvbiBkZXRlcm1pbmVzIHdoaWNoIG9wZXJhdG9ycyB0cmlnZ2VyCist LSBSdW4gQ29uZGl0aW9uIHB1c2hkb3duOgorLS0gICBJTkNSRUFTSU5HICg8PSk6IHJvd19udW1i ZXIsIHJhbmssIGRlbnNlX3JhbmssIHBlcmNlbnRfcmFuaywKKy0tICAgICAgICAgICAgICAgICAg ICBjdW1lX2Rpc3QsIG50aWxlCistLSAgIERFQ1JFQVNJTkcgKD4pOiAgY291bnQoKikgKHZpYSBp bnQ4aW5jLCBFTkRfVU5CT1VOREVEX0ZPTExPV0lORykKKy0tIFJQUiB3aW5kb3cgZnVuY3Rpb24g cmVzdWx0cyBhcmUgbWF0Y2gtZGVwZW5kZW50LCBub3QgbW9ub3RvbmljLgorLS0gVGVzdCB3aXRo IGNvdW50KCopID4gMCBhcyByZXByZXNlbnRhdGl2ZSBjYXNlLgorLS0KKworLS0gV2l0aG91dCBS UFI6IGNvdW50KCopID4gMCBpcyBwdXNoZWQgZG93biBhcyBSdW4gQ29uZGl0aW9uCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICkKKykgdCBXSEVSRSBjbnQgPiAw OworCistLSBXaXRoIFJQUjogY291bnQoKikgPiAwIG11c3Qgbm90IGJlIHB1c2hlZCBkb3duIGFz IFJ1biBDb25kaXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAg IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTApIEFTIHModikKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIHYKKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChB IEIrKQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIEIgQVMgdiA+IFBSRVYodikKKyAgICAp CispIHQgV0hFUkUgY250ID4gMDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBOYXYgTWFyayBMb29rYmFjay9Mb29r YWhlYWQgVGVzdHMKKy0tIFZlcmlmaWVzIHBsYW5uZXItY29tcHV0ZWQgbmF2aWdhdGlvbiBvZmZz ZXRzIGZvciB0dXBsZXN0b3JlIHRyaW0uCistLSBMb29rYmFjazogaG93IGZhciBiYWNrIGZyb20g Y3VycmVudHBvcyAoUFJFViwgTEFTVCwgY29tcG91bmQgUFJFVl9MQVNUL05FWFRfTEFTVCkuCist LSBMb29rYWhlYWQ6IGhvdyBmYXIgZm9yd2FyZCBmcm9tIG1hdGNoX3N0YXJ0IChGSVJTVCwgY29t cG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNUKS4KKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBQcmVwYXJlIHN0YXRl bWVudCBmb3IgaG9zdCB2YXJpYWJsZSBvZmZzZXQgdGVzdCBiZWxvdworUFJFUEFSRSBycHJfbmF2 X29mZnNldF9wcmVwKGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdiA+IFBSRVYodiwgJDEpCispOworCistLSBObyBuYXZpZ2F0aW9uIGZ1bmN0 aW9uOiBvZmZzZXQgMAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA+IDAKKyk7CisKKy0tIE5FWFQgb25seTogbm8gYmFj a3dhcmQgbmF2aWdhdGlvbiwgb2Zmc2V0IDAKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPCBORVhUKHYpCispOworCist LSBQUkVWKHYpOiBpbXBsaWNpdCBvZmZzZXQgMQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA+IFBSRVYodikKKyk7CisK Ky0tIFBSRVYodiwgMyk6IGV4cGxpY2l0IGNvbnN0YW50IG9mZnNldCAzCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAp IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ID4g UFJFVih2LCAzKQorKTsKKworLS0gVHdvIFBSRVYgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0czogbWF4 KDEsIDUpID0gNQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2LCAxKSA8IHYgQU5EIFBSRVYodiwgNSkgPCB2Cisp OworCistLSBIb3N0IHZhcmlhYmxlIG9mZnNldDogY3VzdG9tIHBsYW4gcmVzb2x2ZXMgJDE9MiB0 byBjb25zdGFudCAyCitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcnByX25hdl9vZmZzZXRf cHJlcCgyKTsKKworLS0gRm9yY2UgZ2VuZXJpYyBwbGFuOiBvZmZzZXQgYmVjb21lcyAicnVudGlt ZSIgKFBhcmFtIG5vZGUpCitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFu OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHJwcl9uYXZfb2Zmc2V0X3ByZXAoMik7CitS RVNFVCBwbGFuX2NhY2hlX21vZGU7CitERUFMTE9DQVRFIHJwcl9uYXZfb2Zmc2V0X3ByZXA7CisK Ky0tIEZJUlNUKHYpOiByZXRhaW4gYWxsIChyZWZlcmVuY2VzIG1hdGNoX3N0YXJ0IHJvdykKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHYgPiBGSVJTVCh2KQorKTsKKworLS0gTEFTVCh2LCAxKTogYmFja3dhcmQgcmVhY2gg MSwgc2FtZSBhcyBQUkVWKHYsIDEpCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBMQVNUKHYsIDEpID4gMAorKTsKKworLS0g TEFTVCh2KSB3aXRob3V0IG9mZnNldCArIFBSRVYodik6IG5vIG1hdGNoX3N0YXJ0IGRlcGVuZGVu Y3ksIG9mZnNldCAxCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBMQVNUKHYpID4gUFJFVih2KQorKTsKKworLS0gQ29tcG91 bmQgUFJFVihGSVJTVCh2YWwsIDEpLCAyKTogbG9va2JhY2sgZnJvbSBtYXRjaF9zdGFydCwgZmly c3RPZmZzZXQgPSAxLTIgPSAtMQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2LCAxKSwgMikgPiAwCisp OworCistLSBDb21wb3VuZCBORVhUKEZJUlNUKHZhbCksIDMpOiBmaXJzdE9mZnNldCA9IDArMyA9 IDMKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIE5FWFQoRklSU1QodiksIDMpID4gMAorKTsKKworLS0gQ29tcG91bmQgUFJF VihMQVNUKHZhbCksIDIpOiBsb29rYmFjayA9IDArMiA9IDIKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoTEFTVCh2 KSwgMikgPiAwCispOworCistLSBDb21wb3VuZCBORVhUKExBU1QodmFsLCAxKSwgMyk6IGxvb2ti YWNrID0gbWF4KDEtMywgMCkgPSAwCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKExBU1QodiwgMSksIDMpID4gMAor KTsKKworLS0gQ29tcG91bmQgUFJFVihMQVNUKHZhbCwgTiksIE0pOiBjb25zdGFudCBuZWFyLW92 ZXJmbG93IChOK00ganVzdCBmaXRzIGludDY0KQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYsIDQ2MTE2 ODYwMTg0MjczODc5MDMpLCA0NjExNjg2MDE4NDI3Mzg3OTAzKSBJUyBOT1QgTlVMTAorKTsKKwor LS0gQ29tcG91bmQgUFJFVihMQVNUKHZhbCwgTiksIE0pOiBjb25zdGFudCBvdmVyZmxvdyAtPiBy ZXRhaW4gYWxsCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QodiwgNDYxMTY4NjAxODQyNzM4NzkwNCksIDQ2 MTE2ODYwMTg0MjczODc5MDQpIElTIE5PVCBOVUxMCispOworCistLSBDb21wb3VuZCBORVhUKEZJ UlNUKHZhbCwgTiksIE0pOiBjb25zdGFudCBsb29rYWhlYWQgb3ZlcmZsb3cgLT4gaW5maW5pdGUK Ky0tIE4gKyBNIG92ZXJmbG93cyBpbnQ2NDsgZm9yd2FyZCByZWFjaCBpcyB1bmJvdW5kZWQsIGRp c3BsYXllZCBhcyBpbmZpbml0ZS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoRklSU1QodiwgNDYxMTY4NjAxODQy NzM4NzkwNCksIDQ2MTE2ODYwMTg0MjczODc5MDQpIElTIE5PVCBOVUxMCispOworCistLSBDb21w b3VuZCBQUkVWKExBU1QodmFsLCAkMSksICQyKTogcGFyYW1ldGVyIGxvb2tiYWNrIG92ZXJmbG93 IC0+IHJldGFpbiBhbGwKKy0tIEVYUExBSU4gc2hvd3MgInJ1bnRpbWUiIChwbGFuLWxldmVsKTsg RVhQTEFJTiBBTkFMWVpFIHNob3dzICJyZXRhaW4gYWxsIgorLS0gKGV4ZWN1dG9yLXJlc29sdmVk KS4KK1BSRVBBUkUgdGVzdF9vdmVyZmxvd19sb29rYmFjayhpbnQ4LCBpbnQ4KSBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoTEFTVCh2LCAkMSks ICQyKSBJUyBOT1QgTlVMTAorKTsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgdGVzdF9vdmVyZmxvd19sb29rYmFj ayg0NjExNjg2MDE4NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3OTA0KTsKK0VYUExBSU4gKENP U1RTIE9GRiwgQU5BTFlaRSwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCisgICAgRVhFQ1VURSB0 ZXN0X292ZXJmbG93X2xvb2tiYWNrKDQ2MTE2ODYwMTg0MjczODc5MDQsIDQ2MTE2ODYwMTg0Mjcz ODc5MDQpOworUkVTRVQgcGxhbl9jYWNoZV9tb2RlOworREVBTExPQ0FURSB0ZXN0X292ZXJmbG93 X2xvb2tiYWNrOworCistLSBDb21wb3VuZCBORVhUKEZJUlNUKHZhbCwgJDEpLCAkMik6IHBhcmFt ZXRlciBsb29rYWhlYWQgb3ZlcmZsb3cgLT4gaW5maW5pdGUKK1BSRVBBUkUgdGVzdF9vdmVyZmxv d19sb29rYWhlYWQoaW50OCwgaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBORVhUKEZJUlNUKHYsICQxKSwgJDIpIElTIE5PVCBOVUxMCispOwor U0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYUExBSU4gKENPU1RT IE9GRiwgQU5BTFlaRSwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCisgICAgRVhFQ1VURSB0ZXN0 X292ZXJmbG93X2xvb2thaGVhZCg0NjExNjg2MDE4NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3 OTA0KTsKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgdGVzdF9vdmVyZmxvd19s b29rYWhlYWQ7CisKKy0tIFBSRVYodikgKyBQUkVWKHYsICQxKTogTkVFRFNfRVZBTCBwYXRoIG11 c3QgYWNjb3VudCBmb3IgaW1wbGljaXQgbG9va2JhY2s9MQorLS0gUHJldmlvdXNseSwgZXZhbF9u YXZfbWF4X29mZnNldF93YWxrZXIgc2tpcHBlZCBQUkVWKHYpIHdoZW4gb2Zmc2V0X2FyZyB3YXMK Ky0tIE5VTEwsIGNhdXNpbmcgbWF4T2Zmc2V0PTAgd2hlbiAkMT0wLCB3aGljaCB3b3VsZCB0cmlt IHRoZSByb3cgbmVlZGVkIGJ5CistLSBQUkVWKHYpLiAgVmVyaWZ5IHRoaXMgZXhlY3V0ZXMgd2l0 aG91dCAiY2Fubm90IGZldGNoIHJvdyBiZWZvcmUgbWFyayIgZXJyb3IuCitQUkVQQVJFIHRlc3Rf cHJldl9pbXBsaWNpdF9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYpIElTIE5PVCBOVUxMIEFORCBQUkVWKHYsICQxKSBJ UyBOT1QgTlVMTAorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X2ltcGxpY2l0X29mZnNldCgwKTsKK0RF QUxMT0NBVEUgdGVzdF9wcmV2X2ltcGxpY2l0X29mZnNldDsKKworLS0gUnVudGltZSBlcnJvcjog bmVnYXRpdmUgb2Zmc2V0IGF0IGV4ZWN1dGlvbiB0aW1lCitQUkVQQVJFIHRlc3RfcnVudGltZV9u ZWdfb2Zmc2V0KGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgUFJFVih2LCAkMSkgSVMgTk9UIE5VTEwKKyk7CitFWEVDVVRFIHRlc3RfcnVudGlt ZV9uZWdfb2Zmc2V0KC0xKTsKK0RFQUxMT0NBVEUgdGVzdF9ydW50aW1lX25lZ19vZmZzZXQ7CisK Ky0tIFJ1bnRpbWUgZXJyb3I6IG51bGwgb2Zmc2V0IGF0IGV4ZWN1dGlvbiB0aW1lCitQUkVQQVJF IHRlc3RfcnVudGltZV9udWxsX29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodiwgJDEpIElTIE5PVCBOVUxMCispOworRVhF Q1VURSB0ZXN0X3J1bnRpbWVfbnVsbF9vZmZzZXQoTlVMTCk7CitERUFMTE9DQVRFIHRlc3RfcnVu dGltZV9udWxsX29mZnNldDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9p bnRlZ3JhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZDYwNzUyNjViYgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwK QEAgLTAsMCArMSw5NTAgQEAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIEludGVncmF0aW9uIFRlc3RzCistLSBQ bGFubmVyIG9wdGltaXphdGlvbiBpbnRlcmFjdGlvbiB0ZXN0cyBmb3IgUm93IFBhdHRlcm4gUmVj b2duaXRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0KKy0tIFZlcmlmaWVzIHRoYXQgZWFjaCBwbGFubmVyIG9wdGlt aXphdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBSUFIgd2luZG93cy4KKy0tIEV2ZW4gaWYgaW5kaXZp ZHVhbCBvcHRpbWl6YXRpb25zIGFyZSB0ZXN0ZWQgZWxzZXdoZXJlLCB0aGlzIGZpbGUKKy0tIHBy b3ZpZGVzIGEgc2luZ2xlIGNoZWNrcG9pbnQgZm9yIGFsbCBwbGFubmVyL1JQUiBpbnRlcmFjdGlv bnMuCistLQorLS0gQS4gUGxhbm5lciBPcHRpbWl6YXRpb24gUHJvdGVjdGlvbiBUZXN0cworLS0g ICAgQTEuIEZyYW1lIG9wdGltaXphdGlvbiBieXBhc3MKKy0tICAgIEEyLiBSdW4gY29uZGl0aW9u IHB1c2hkb3duIGJ5cGFzcworLS0gICAgQTMuIFdpbmRvdyBkZWR1cCBwcmV2ZW50aW9uIChSUFIg dnMgbm9uLVJQUikKKy0tICAgIEE0LiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoc2FtZSBQQVRU RVJOLCBkaWZmZXJlbnQgREVGSU5FKQorLS0gICAgQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBw cmV2ZW50aW9uCistLSAgICBBNi4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5cGFzcworLS0gICAgQTcu IENvc3QgZXN0aW1hdGlvbiBSUFIgYXdhcmVuZXNzCistLSAgICBBOC4gU3VicXVlcnkgZmxhdHRl bmluZyBwcmV2ZW50aW9uCistLSAgICBBOS4gREVGSU5FIGV4cHJlc3Npb24gbm9uLXByb3BhZ2F0 aW9uCistLSAgICBBMTAuIFJQUiArIExJTUlUCistLQorLS0gQi4gSW50ZWdyYXRpb24gU2NlbmFy aW8gVGVzdHMKKy0tICAgIEIxLiBSUFIgKyBDVEUKKy0tICAgIEIyLiBSUFIgKyBKT0lOCistLSAg ICBCMy4gUlBSICsgU2V0IG9wZXJhdGlvbnMKKy0tICAgIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0 ZW1lbnRzCistLSAgICBCNS4gUlBSICsgUGFydGl0aW9uZWQgdGFibGUKKy0tICAgIEI2LiBSUFIg KyBMQVRFUkFMCistLSAgICBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gICAgQjguIFJQUiAr IEluY3JlbWVudGFsIHNvcnQKKy0tICAgIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBE RUZJTkUKKy0tICAgIEIxMC4gUlBSICsgQ29ycmVsYXRlZCBzdWJxdWVyeQorLS0KKworQ1JFQVRF IFRBQkxFIHJwcl9pbnRlZyAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9pbnRl ZyBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgNSks CisgICAgKDYsIDMwKSwgKDcsIDM1KSwgKDgsIDIwKSwgKDksIDQwKSwgKDEwLCA0NSk7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gQTEuIEZyYW1lIG9wdGltaXphdGlvbiBieXBhc3MKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5 IHRoYXQgb3B0aW1pemVfd2luZG93X2NsYXVzZXMoKSBkb2VzIG5vdCBhcHBseSBmcmFtZQorLS0g b3B0aW1pemF0aW9uIHRvIFJQUiB3aW5kb3dzLiAgQm90aCBxdWVyaWVzIGJlbG93IHVzZSB0aGUg c2FtZSBpbnB1dAorLS0gZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykgd2l0aAorLS0gcm93X251bWJlcigpLCB3aG9zZSBwcm9zdXBwb3J0IGhh bmRsZXMKKy0tIFN1cHBvcnRSZXF1ZXN0T3B0aW1pemVXaW5kb3dDbGF1c2UgYW5kIHRyaWdnZXJz IGZyYW1lIHJld3JpdGluZy4KKy0tIEluIHRoZSBub24tUlBSIGJhc2VsaW5lIHRoZSBwbGFubmVy IHJld3JpdGVzIHRoZSBmcmFtZSB0byBST1dTCistLSBVTkJPVU5ERUQgUFJFQ0VESU5HLCB3aGls ZSBpbiB0aGUgUlBSIGNhc2UgdGhlIGd1YXJkIGluCistLSBvcHRpbWl6ZV93aW5kb3dfY2xhdXNl cygpIGJsb2NrcyB0aGUgcmV3cml0ZSBhbmQgdGhlIGZyYW1lIGlzCistLSBwcmVzZXJ2ZWQgYXMg c3BlY2lmaWVkLgorCistLSBOb24tUlBSIGJhc2VsaW5lOiB0aGUgcGxhbm5lciByZXdyaXRlcyB0 aGUgZnJhbWUgdG8gUk9XUyBVTkJPVU5ERUQgUFJFQ0VESU5HLgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyk7CisKKy0tIFJQUiBjYXNlOiB0aGUgZnJhbWUgaXMgcHJlc2VydmVkIGFzIHNw ZWNpZmllZC4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCByb3dfbnVtYmVyKCkgT1ZFUiB3 IEZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIr KQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTIuIFJ1 biBjb25kaXRpb24gcHVzaGRvd24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IGZpbmRf d2luZG93X3J1bl9jb25kaXRpb25zKCkgZG9lcyBub3QgcHVzaCBhIG1vbm90b25pYworLS0gZmls dGVyIGRvd24gYXMgYSBSdW4gQ29uZGl0aW9uIG9uIFJQUiB3aW5kb3dzLiAgUlBSIG1hdGNoIGNv dW50cyBhcmUKKy0tIGRldGVybWluZWQgYnkgcGF0dGVybiBtYXRjaGluZyByYXRoZXIgdGhhbiBi eSBhIG1vbm90b25pYworLS0gYWNjdW11bGF0aW9uIG92ZXIgdGhlIGZyYW1lLCBzbyBhIGZpbHRl ciBzdWNoIGFzICJjbnQgPiAwIiBjYW5ub3QgYmUKKy0tIHVzZWQgdG8gc3RvcCBldmFsdWF0aW5n IHRoZSB3aW5kb3cgZnVuY3Rpb24gZWFybHkuCisKKy0tIE5vbi1SUFIgYmFzZWxpbmU6IHRoZSBm aWx0ZXIgaXMgZXhwZWN0ZWQgdG8gYXBwZWFyIGFzIGEgUnVuIENvbmRpdGlvbi4KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcg QVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQK KyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorKSB0IFdIRVJFIGNudCA+IDA7CisKKy0tIFJQUiBjYXNlOiB0aGUgZmlsdGVyIG11c3QgYXBw ZWFyIGFzIGEgRmlsdGVyIGFib3ZlIHRoZSBXaW5kb3dBZ2csCistLSBub3QgYXMgYSBSdW4gQ29u ZGl0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNU IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5F IEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0IFdIRVJFIGNudCA+IDA7CisKKy0tIFZlcmlmeSB0 aGF0IHRoZSBSUFIgcXVlcnkgc3RpbGwgcmV0dXJucyBldmVyeSByb3cgd2hvc2UgbWF0Y2ggY291 bnQgaXMKKy0tIGdyZWF0ZXIgdGhhbiB6ZXJvLCBjb25maXJtaW5nIHRoZSBmaWx0ZXIgaXMgZXZh bHVhdGVkIGFib3ZlIHRoZQorLS0gV2luZG93QWdnIHJhdGhlciB0aGFuIGN1dHRpbmcgb2ZmIHBh dHRlcm4gbWF0Y2hpbmcgcHJlbWF0dXJlbHkuCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAg ICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250ID4gMAorT1JERVIg QlkgaWQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQTMuIFdpbmRvdyBkZWR1cCBwcmV2ZW50aW9uIChSUFIgdnMg bm9uLVJQUikKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUG9zdGdyZVNRTCBkb2VzIG5vdCBtZXJn ZSBhbiBSUFIgd2luZG93IHdpdGggYSBub24tUlBSCistLSB3aW5kb3cgZXZlbiB3aGVuIGJvdGgg c2hhcmUgdGhlIHNhbWUgT1JERVIgQlkgYW5kIGZyYW1lCistLSBzcGVjaWZpY2F0aW9uLiAgUlBS IHBhdHRlcm4gbWF0Y2hpbmcgcHJvZHVjZXMgcmVzdWx0cyB0aGF0IGFyZQorLS0gc2VtYW50aWNh bGx5IGRpZmZlcmVudCBmcm9tIGEgcGxhaW4gZnJhbWUtYmFzZWQgYWdncmVnYXRlLCBzbyB0aGUK Ky0tIHR3byB3aW5kb3dzIG11c3QgcmVtYWluIGFzIHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4g IElubGluZSB3aW5kb3cKKy0tIHNwZWNzIGFyZSB1c2VkIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9u IGJlY2F1c2Ugb25seSBpbmxpbmUgd2luZG93cworLS0gYXJlIHN1YmplY3QgdG8gdGhlIGRlZHVw IHBhdGg7IGRpc3RpbmN0IG5hbWVkIHdpbmRvd3MgYXJlIGFsd2F5cworLS0ga2VwdCBzZXBhcmF0 ZSByZWdhcmRsZXNzIG9mIGVxdWl2YWxlbmNlLgorCistLSBOb24tUlBSIGJhc2VsaW5lOiB0d28g aW5saW5lIHdpbmRvd3Mgd2l0aCBpZGVudGljYWwgc3BlYyBhcmUKKy0tIGRlZHVwZWQgYnkgdGhl IHBsYW5uZXIgaW50byBhIHNpbmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29uZmlybWluZworLS0gdGhh dCB0aGUgZGVkdXAgcGF0aCBpcyBhY3RpdmUgZm9yIG5vbi1SUFIgd2luZG93cy4KK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykgQVMg Y250LAorICAgIHN1bSh2YWwpICBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIEFTIHRvdGFsCitGUk9NIHJw cl9pbnRlZzsKKworLS0gQW4gaW5saW5lIFJQUiB3aW5kb3cgYW5kIGFuIGlubGluZSBub24tUlBS IHdpbmRvdyBzaGFyZSB0aGUgc2FtZQorLS0gT1JERVIgQlkgYW5kIGZyYW1lIGJ1dCBtdXN0IHJl bWFpbiBhcyBkaXN0aW5jdCBXaW5kb3dBZ2cgbm9kZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBycHJfY250LAor ICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykgQVMgbm9ybWFsX2NudAorRlJPTSBycHJf aW50ZWc7CisKKy0tIFZlcmlmeSB0aGF0IHRoZSB0d28gd2luZG93cyByZXR1cm4gaW5kZXBlbmRl bnQgY291bnRzIHBlciByb3csCistLSBjb25maXJtaW5nIHRoZXkgd2VyZSBub3QgbWVyZ2VkIGlu dG8gYSBzaW5nbGUgV2luZG93QWdnLgorU0VMRUNUCisgICAgaWQsIHZhbCwKKyAgICBjb3VudCgq KSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBycHJfY250LAorICAgIGNvdW50KCopIE9WRVIg KE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykgQVMgbm9ybWFsX2NudAorRlJPTSBycHJfaW50ZWcKK09SREVSIEJZIGlk OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEE0LiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoc2FtZSBQQVRURVJO LCBkaWZmZXJlbnQgREVGSU5FKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBpbmxpbmUtd2luZG93 IGRlZHVwIGRvZXMgbm90IG1lcmdlIHR3byBSUFIgd2luZG93cworLS0gdGhhdCBzaGFyZSB0aGUg c2FtZSBQQVRURVJOIHN0cnVjdHVyZSBidXQgaGF2ZSBkaWZmZXJlbnQgREVGSU5FCistLSBjb25k aXRpb25zLiAgRXZlbiB0aG91Z2ggdGhlIE9SREVSIEJZLCBmcmFtZSwgYW5kIFBBVFRFUk4gY29p bmNpZGUsCistLSB0aGUgZGlmZmVyaW5nIERFRklORSBleHByZXNzaW9ucyBjbGFzc2lmeSByb3dz IGRpZmZlcmVudGx5IGFuZAorLS0gbXVzdCB0aGVyZWZvcmUgeWllbGQgdHdvIHNlcGFyYXRlIFdp bmRvd0FnZyBub2Rlcy4gIElubGluZSBzcGVjcworLS0gYXJlIHVzZWQgaGVyZSBiZWNhdXNlIGRl ZHVwIG9ubHkgYXBwbGllcyB0byBpbmxpbmUgd2luZG93cy4KKworLS0gQmFzZWxpbmU6IHR3byBp bmxpbmUgUlBSIHdpbmRvd3MgdGhhdCBhcmUgc3RydWN0dXJhbGx5IGlkZW50aWNhbAorLS0gKHNh bWUgT1JERVIgQlksIGZyYW1lLCBQQVRURVJOLCBhbmQgREVGSU5FKSBhcmUgZGVkdXBlZCBieSB0 aGUKKy0tIHBhcnNlciBpbnRvIGEgc2luZ2xlIFdpbmRvd0FnZyBub2RlLCBjb25maXJtaW5nIHRo YXQgcGFyc2VyLWxldmVsCistLSBkZWR1cCBpcyBhY3RpdmUgZm9yIFJQUiB3aW5kb3dzIHdob3Nl IERFRklORSBtYXRjaGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUCisgICAgY291bnQo KikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERF RklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgY250LAorICAgIHN1bSh2YWwpICBPVkVSIChP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMg dmFsID4gUFJFVih2YWwpKSBBUyB0b3RhbAorRlJPTSBycHJfaW50ZWc7CisKKy0tIFR3byBpbmxp bmUgUlBSIHdpbmRvd3Mgd2l0aCB0aGUgc2FtZSBQQVRURVJOIGJ1dCBvcHBvc2l0ZSBERUZJTkUK Ky0tIGNvbmRpdGlvbnMgbXVzdCByZW1haW4gYXMgc2VwYXJhdGUgV2luZG93QWdnIG5vZGVzLgor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBS RVYodmFsKSkgQVMgY250X3VwLAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPCBQUkVWKHZhbCkp IEFTIGNudF9kb3duCitGUk9NIHJwcl9pbnRlZzsKKworLS0gVmVyaWZ5IHRoYXQgdGhlIHR3byB3 aW5kb3dzIHJldHVybiBkaWZmZXJlbnQgY291bnRzIHBlciByb3csCistLSBjb25maXJtaW5nIHRo ZSBERUZJTkUgY29uZGl0aW9ucyB3ZXJlIG5vdCBjb2xsYXBzZWQgYnkgZGVkdXAuCitTRUxFQ1QK KyAgICBpZCwgdmFsLAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQ QVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpIEFTIGNu dF91cCwKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDwgUFJFVih2YWwpKSBBUyBjbnRfZG93bgor RlJPTSBycHJfaW50ZWcKK09SREVSIEJZIGlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEE1LiBVbnVzZWQgd2lu ZG93IHJlbW92YWwgcHJldmVudGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCByZW1vdmVfdW51 c2VkX3N1YnF1ZXJ5X291dHB1dHMoKSBkb2VzIG5vdCBkcm9wIGFuIFJQUgorLS0gd2luZG93IGZ1 bmN0aW9uIGV2ZW4gd2hlbiB0aGUgb3V0ZXIgcXVlcnkgZG9lcyBub3QgcmVmZXJlbmNlIGl0cwor LS0gcmVzdWx0LiAgVGhlIFJQUiBXaW5kb3dBZ2cgbm9kZSBpcyByZXNwb25zaWJsZSBmb3IgcGVy Zm9ybWluZyBwYXR0ZXJuCistLSBtYXRjaGluZywgc28gcmVtb3ZpbmcgdGhlIHdpbmRvdyBmdW5j dGlvbiB3b3VsZCBzaWxlbnRseSBza2lwIHRoZQorLS0gcGF0dGVybiBtYXRjaCBldmVuIHRob3Vn aCB0aGUgc3Vycm91bmRpbmcgcXVlcnkgc3RpbGwgZGVwZW5kcyBvbgorLS0gUlBSIHNlbWFudGlj cy4KKworLS0gVGhlIG91dGVyIHF1ZXJ5IGlnbm9yZXMgdGhlIHBlci1yb3cgd2luZG93IHJlc3Vs dCwgeWV0IHBhdHRlcm4KKy0tIG1hdGNoaW5nIG11c3Qgc3RpbGwgZXhlY3V0ZS4gIFRoZSBwbGFu IG11c3Qgc3RpbGwgY29udGFpbiBhCistLSBXaW5kb3dBZ2cgbm9kZSBiZWxvdyB0aGUgb3V0ZXIg QWdncmVnYXRlOyBpZiB0aGUgd2luZG93IHdlcmUKKy0tIHJlbW92ZWQsIG9ubHkgQWdncmVnYXRl ICsgU2VxIFNjYW4gd291bGQgYXBwZWFyLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcK KyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5F IEEgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworCitTRUxFQ1QgY291bnQoKikgRlJPTSAoCisg ICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFT ICgKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiBQUkVW KHZhbCkpCispIHQ7CisKKy0tIFRoZSBERUZJTkUgZXhwcmVzc2lvbiByZWZlcmVuY2VzIFBSRVYo dmFsKSwgc28gdGhlIHdpbmRvdyBtdXN0IGJlCistLSBwcmVzZXJ2ZWQgZXZlbiBpZiB0aGUgb3V0 ZXIgcXVlcnkgb25seSBhZ2dyZWdhdGVzIG92ZXIgdGhlIGNvdW50LgorLS0gVGhlIHBsYW4gbXVz dCBzdGlsbCBjb250YWluIGEgV2luZG93QWdnIHdpdGggdGhlIFBBVFRFUk4vREVGSU5FCistLSBp bnRhY3QuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBGUk9N ICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMg dmFsID4gUFJFVih2YWwpKQorKSB0OworCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBGUk9NICgK KyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5E T1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFs ID4gUFJFVih2YWwpKQorKSB0OworCistLSBUaGUgREVGSU5FIGV4cHJlc3Npb24gY29udGFpbnMg bm8gbmF2aWdhdGlvbiwgYnV0IHRoZSBSUFIgd2luZG93CistLSBtdXN0IHN0aWxsIGJlIHByZXNl cnZlZCBiZWNhdXNlIHRoZSBtYXRjaCBzdHJ1Y3R1cmUgaXRzZWxmIGFmZmVjdHMKKy0tIHRoZSBj b3VudC4gIFRoZSBwbGFuIG11c3QgcmV0YWluIHRoZSBXaW5kb3dBZ2cuCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQo KikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgVFJVRSkKKykgdDsKKworU0VMRUNU IGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBj IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSsp CisgICAgICAgIERFRklORSBBIEFTIFRSVUUpCispIHQ7CisKKy0tIFhYWDogInZhbCIgaXMgbm9u LXJlc2p1bmsgaW4gdGhlIHN1YnF1ZXJ5IG91dHB1dCBhbmQgaXMgbm90CistLSByZWZlcmVuY2Vk IGJ5IHRoZSBvdXRlciBxdWVyeS4gIFdpdGhvdXQgYSBndWFyZCwKKy0tIHJlbW92ZV91bnVzZWRf c3VicXVlcnlfb3V0cHV0cygpIHdvdWxkIHJlcGxhY2UgaXQgd2l0aCBOVUxMIGluCistLSB0aGUg c3VicXVlcnkgb3V0cHV0LCBhbmQgdGhhdCByZXBsYWNlbWVudCBwcm9wYWdhdGVzIHRvIHRoZQor LS0gc2NhbidzIHRhcmdldGxpc3QgLS0gREVGSU5FIHdvdWxkIHRoZW4gZXZhbHVhdGUgd2l0aCBO VUxMCistLSBpbnB1dHMuICBUaGUgdGFyZ2V0bGlzdCBoYXMgbm8gd2F5IHRvIGRpc3Rpbmd1aXNo ICJleHBvc2VkIHRvCistLSB0aGUgb3V0ZXIgcXVlcnkiIGZyb20gInJlZmVyZW5jZWQgb25seSBi eSBERUZJTkUiLCBzbyB0aGUKKy0tIG9wdGltaXphdGlvbiBjYW5ub3QgYmUgYXBwbGllZCBzZWxl Y3RpdmVseS4gIFRoZSBjb2x1bW4gZ3VhcmQKKy0tIGluIGFsbHBhdGhzLmMgYmxvY2tzIHRoaXMg cmVwbGFjZW1lbnQgZm9yIGFueSBjb2x1bW4gcmVmZXJlbmNlZAorLS0gYnkgYW4gUlBSIERFRklO RSBjbGF1c2UsIGtlZXBpbmcgdGhlIFdpbmRvd0FnZyB3aXRoIERFRklORQorLS0gYWN0aXZlIGlu IHRoZSBwbGFuLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gKAor ICAgIFNFTEVDVCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworCitTRUxFQ1QgY291bnQoKikgRlJPTSAo CisgICAgU0VMRUNUIHZhbCwgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBE RUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQ7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTYuIEludmVy c2UgdHJhbnNpdGlvbiBieXBhc3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUlBSIHdpbmRvd3Mg ZG8gbm90IHVzZSB0aGUgbW92aW5nIGFnZ3JlZ2F0ZSAoaW52ZXJzZQorLS0gdHJhbnNpdGlvbikg b3B0aW1pemF0aW9uLiAgTW92aW5nIGFnZ3JlZ2F0ZXMgbWFpbnRhaW4gc3RhdGUgYnkKKy0tIGFk ZGluZyBhcnJpdmluZyByb3dzIGFuZCBzdWJ0cmFjdGluZyBsZWF2aW5nIHJvd3MsIGJ1dCBhbiBS UFIKKy0tIHJlZHVjZWQgZnJhbWUgaXMgbm90IGEgc2xpZGluZyB3aW5kb3c7IHRoZSBzZXQgb2Yg cm93cyBpbmNsdWRlZCBpbgorLS0gdGhlIGZyYW1lIGlzIGRldGVybWluZWQgYnkgcGF0dGVybiBt YXRjaGluZyBhbmQgY2Fubm90IGJlIGRlcml2ZWQKKy0tIGluY3JlbWVudGFsbHkgZnJvbSB0aGUg cHJldmlvdXMgZnJhbWUuCisKKy0tIHN1bSgpIHdvdWxkIG5vcm1hbGx5IGJlIGVsaWdpYmxlIGZv ciB0aGUgbW92aW5nIGFnZ3JlZ2F0ZQorLS0gb3B0aW1pemF0aW9uOyB1bmRlciBSUFIgaXQgbXVz dCBiZSBjb21wdXRlZCBmcm9tIHNjcmF0Y2ggb3ZlciBlYWNoCistLSByZWR1Y2VkIGZyYW1lLCBh bmQgdGhlIHJldHVybmVkIHZhbHVlcyBtdXN0IG1hdGNoIHRoZSBwYXR0ZXJuLgorLS0gTm90ZTog aW52ZXJzZS10cmFuc2l0aW9uIHNlbGVjdGlvbiBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcGxhbiwg c28KKy0tIHRoZXJlIGlzIG5vIGRpcmVjdCBFWFBMQUlOIGFzc2VydGlvbiBmb3IgaXQuICBUaGUg c3RydWN0dXJhbAorLS0gZ3VhcmFudGVlIGlzIHRoYXQgUlBSIHVzZXMgaXRzIG93biBuYXZpZ2F0 aW9uIG1hcmssIGRpc3RpbmN0IGZyb20KKy0tIHRoZSBtb3ZpbmctYWdncmVnYXRlIG1hcmssIHNv IHRoZSBpbnZlcnNlLXRyYW5zaXRpb24gcGF0aCBpcworLS0gbmV2ZXIgcmVhY2hlZCBvbiB0aGUg UlBSIHNpZGUuICBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdAorLS0gc2VwYXJhdGlvbiBpbmRpcmVj dGx5OiBpZiBpbnZlcnNlIHRyYW5zaXRpb24gbGVha2VkIGludG8gdGhlIFJQUgorLS0gcGF0aCwg c3RhdGUgd291bGQgbWl4IGFjcm9zcyBtYXRjaCBib3VuZGFyaWVzIGFuZCBwYXR0ZXJuX3N1bQor LS0gd291bGQgZGl2ZXJnZSBmcm9tIHRoZSBleHBlY3RlZCBvdXRwdXQsIGZhaWxpbmcgdGhlIHJl Z3Jlc3Npb24uCitTRUxFQ1QgaWQsIHZhbCwKKyAgICBzdW0odmFsKSBPVkVSIHcgQVMgcGF0dGVy bl9zdW0KK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEE3LiBDb3N0IGVzdGltYXRpb24gUlBSIGF3YXJlbmVzcworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBjb3N0X3dpbmRvd2FnZygpIG11c3QgYWNjb3VudCBmb3IgREVGSU5FIGV4cHJlc3Npb24gZXZh bHVhdGlvbiBjb3N0LgorLS0gVmVyaWZ5IFJQUiBXaW5kb3dBZ2cgY29zdCA+IG5vbi1SUFIgV2lu ZG93QWdnIGNvc3QuCisKK0NSRUFURSBGVU5DVElPTiBnZXRfd2luZG93YWdnX2Nvc3QocXVlcnkg dGV4dCkgUkVUVVJOUyBudW1lcmljIEFTICQkCitERUNMQVJFCisgICAgcGxhbiBqc29uOworICAg IGNvc3QgbnVtZXJpYzsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoRk9STUFUIEpTT04p ICcgfHwgcXVlcnkgSU5UTyBwbGFuOworICAgIGNvc3QgOj0gKHBsYW4tPjAtPidQbGFuJy0+PidU b3RhbCBDb3N0Jyk6Om51bWVyaWM7CisgICAgUkVUVVJOIGNvc3Q7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworCitTRUxFQ1QgZ2V0X3dpbmRvd2FnZ19jb3N0KAorICAgICdTRUxFQ1QgY291 bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICAgICAgIFBBVFRFUk4gKEEgQisgQyspIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFs KSwgQyBBUyB2YWwgPCBQUkVWKHZhbCkpJykKKyAgICA+CisgICAgZ2V0X3dpbmRvd2FnZ19jb3N0 KAorICAgICdTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpJykKKyAgICBBUyBycHJfY29zdF9pc19oaWdoZXI7CisKK0RST1AgRlVOQ1RJ T04gZ2V0X3dpbmRvd2FnZ19jb3N0KHRleHQpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEE4LiBTdWJxdWVyeSBm bGF0dGVuaW5nIHByZXZlbnRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgYSBzdWJxdWVyeSBj b250YWluaW5nIGFuIFJQUiB3aW5kb3cgaXMgbm90IGZsYXR0ZW5lZAorLS0gaW50byB0aGUgb3V0 ZXIgcXVlcnkuICBpc19zaW1wbGVfc3VicXVlcnkoKSBhbHJlYWR5IGJsb2NrcyBwdWxsdXAKKy0t IGZvciBzdWJxdWVyaWVzIHdpdGggd2luZG93IGZ1bmN0aW9ucyBpbiBnZW5lcmFsOyB0aGlzIHRl c3QgY29uZmlybXMKKy0tIHRoZSBydWxlIGNvbnRpbnVlcyB0byBhcHBseSB0byBSUFIgd2luZG93 cywgc28gRVhQTEFJTiBtdXN0IHN0aWxsCistLSBzaG93IGEgU3VicXVlcnkgU2NhbiBhYm92ZSB0 aGUgUlBSIFdpbmRvd0FnZy4KKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAo CisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJw cl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSBzdWIKK1dIRVJF IGNudCA+IDA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQTkuIERFRklORSBleHByZXNzaW9uIG5vbi1wcm9wYWdh dGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBERUZJTkUgZXhwcmVzc2lvbnMgYXJlIG5vdCBw cm9wYWdhdGVkIGludG8gdGhlCistLSB0YXJnZXRsaXN0IG9mIGFueSB1cHBlciBXaW5kb3dBZ2cg bm9kZS4gIE9ubHkgdGhlIGNvbHVtbiByZWZlcmVuY2VzCistLSBjb25zdW1lZCBieSBERUZJTkUg c2hvdWxkIGJlIHBhc3NlZCB1cDsgdGhlIGZ1bGwgREVGSU5FIGV4cHJlc3Npb24KKy0tIGlzIG1l YW5pbmdmdWwgb25seSBpbnNpZGUgdGhlIFJQUiBXaW5kb3dBZ2cgdGhhdCBvd25zIGl0LgorLS0g RVhQTEFJTiBWRVJCT1NFIGlzIHRoZXJlZm9yZSBleHBlY3RlZCB0byBzaG93IGEgY2xlYW4gdGFy Z2V0bGlzdCBvbgorLS0gdGhlIG91dGVyIFdpbmRvd0FnZywgd2l0aCBubyBERUZJTkUtZGVyaXZl ZCBleHByZXNzaW9uIGxlYWtpbmcgaW4uCistLSBOb3RlOiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkg REVGSU5FIChlLmcuLCAidmFsIikgbWF5IGFwcGVhciBhcworLS0gcmVzanVuayBlbnRyaWVzIGlu IHVwcGVyIFdpbmRvd0FnZyB0YXJnZXRsaXN0cyAtLSB0aGF0IGlzIGEKKy0tIGhhcm1sZXNzIGJ5 cHJvZHVjdCBvZiB0aGUgY29sdW1uIGd1YXJkJ3MgYnJvYWQgc2NvcGUgYW5kIGRvZXMgbm90Cist LSBhZmZlY3QgY2xpZW50IG91dHB1dC4gIFRoZSBjbGFpbSBoZXJlIGlzIGxpbWl0ZWQgdG8gdGhl IGZ1bGwKKy0tIERFRklORSBib29sZWFuIGV4cHJlc3Npb24uCisKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnByX2NudCwK KyAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2ludGVn CitXSU5ET1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisgICAgd19ub3JtYWwg QVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyk7CisKKy0tIEV4ZWN1dGluZyB0aGUgc2FtZSBxdWVyeSBzaG93cyB0 aGUgY2xpZW50IHJlc3VsdCBpcyBsaW1pdGVkIHRvCistLSB0aGUgdHdvIHByb2plY3RlZCBjb2x1 bW5zOyAiaWQiIGFuZCAidmFsIiB0aGF0IGFwcGVhcmVkIGluIHRoZQorLS0gdXBwZXIgV2luZG93 QWdnIE91dHB1dCBsaW5lIGFyZSByZXNqdW5rLW9ubHkgYW5kIGRvIG5vdCByZWFjaAorLS0gdGhl IGNsaWVudC4KK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnByX2NudCwKKyAg ICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2ludGVnCitX SU5ET1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisgICAgd19ub3JtYWwgQVMg KE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKK09SREVSIEJZIHJwcl9jbnQgREVTQywgbm9ybWFsX2NudCBERVNDOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEExMC4gUlBSICsgTElNSVQKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTElNSVQgbXVzdCBub3Qg aW50ZXJmZXJlIHdpdGggUlBSIHBhdHRlcm4gbWF0Y2hpbmcuICBUaGUgTGltaXQKKy0tIG5vZGUg bXVzdCBzaXQgYWJvdmUgdGhlIFdpbmRvd0FnZyBzbyB0aGF0IHBhdHRlcm4gbWF0Y2hpbmcgcnVu cworLS0gb24gdGhlIGZ1bGwgcGFydGl0aW9uIGZpcnN0OyB0aGUgcmVzdWx0IGlzIHRoZW4gYSBw cmVmaXggb2YgdGhlCistLSB1bi1MSU1JVGVkIG91dHB1dC4gIFB1c2hpbmcgTGltaXQgYmVsb3cg dGhlIFdpbmRvd0FnZyB3b3VsZAorLS0gdHJ1bmNhdGUgaW5wdXQgYmVmb3JlIG1hdGNoaW5nIGFu ZCBzaWxlbnRseSBkcm9wIHZhbGlkIG1hdGNoZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gUFJFVih2YWwpKQorTElNSVQgNTsKKworLS0gUmVmZXJlbmNlOiB1bi1MSU1JVGVkIHJlc3Vs dCBhZ2FpbnN0IHdoaWNoIHRoZSBMSU1JVCA1IHJlc3VsdCBpcworLS0gY29tcGFyZWQuCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisKKy0tIExJTUlUIDUgY2FzZTsgdGhlIGZpcnN0 IGZpdmUgcm93cyBtdXN0IG1hdGNoIHRoZSByZWZlcmVuY2UgYWJvdmUuCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKQorTElNSVQgNTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCMS4gUlBSICsgQ1RFCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZl cmlmeSB0aGF0IGFuIFJQUiB3aW5kb3cgZW1iZWRkZWQgaW5zaWRlIGEgQ1RFIGJlaGF2ZXMgdGhl IHNhbWUgYXMKKy0tIGEgZGlyZWN0IFJQUiBxdWVyeToKKy0tICAgKDEpIEEgc2luZ2xlLXJlZmVy ZW5jZSBDVEUgaXMgaW5saW5lZCBieSB0aGUgcGxhbm5lciBhbmQgeWllbGRzCistLSAgICAgICBw ZXItcm93IHJlc3VsdHMgaWRlbnRpY2FsIHRvIHRoZSBkaXJlY3QgUlBSIHF1ZXJ5LgorLS0gICAo MikgQSBtdWx0aS1yZWZlcmVuY2UgQ1RFIGlzIG1hdGVyaWFsaXplZCAoQ1RFIFNjYW4gYXBwZWFy cyBpbgorLS0gICAgICAgdGhlIHBsYW4pIHNvIHBhdHRlcm4gbWF0Y2hpbmcgcnVucyBvbmNlLCBh bmQgZXZlcnkgcmVmZXJlbmNlCistLSAgICAgICBvYnNlcnZlcyB0aGUgc2FtZSBtYXRjaCByZXN1 bHRzLgorCistLSBCYXNlbGluZTogZGlyZWN0IFJQUiBwcm9kdWNlcyB0aGUgcGVyLXJvdyByZWZl cmVuY2Ugb3V0cHV0LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZS T00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworCistLSBTaW5n bGUtcmVmZXJlbmNlIENURTogcGxhbiBoYXMgbm8gIkNURSBycHJfcmVzdWx0IiBzY29wZSwgc2hv d2luZworLS0gdGhlIENURSB3YXMgaW5saW5lZCBpbnRvIHRoZSBzdXJyb3VuZGluZyBxdWVyeS4K K0VYUExBSU4gKENPU1RTIE9GRikKK1dJVEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNUIGlk LCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAg REVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9N IHJwcl9yZXN1bHQgT1JERVIgQlkgaWQ7CisKKy0tIFJlc3VsdCBtdXN0IG1hdGNoIHRoZSBiYXNl bGluZSByb3ctZm9yLXJvdy4KK1dJVEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NIHJw cl9yZXN1bHQgT1JERVIgQlkgaWQ7CisKKy0tIE11bHRpLXJlZmVyZW5jZSBDVEUgKHNlbGYtam9p bik6IHBsYW4gaGFzIGEgIkNURSBycHJfcmVzdWx0IiBzY29wZQorLS0gYW5kIENURSBTY2FuIG5v ZGVzIG9uIGJvdGggc2lkZXMsIHNob3dpbmcgdGhlIENURSB3YXMgbWF0ZXJpYWxpemVkCistLSBh bmQgcGF0dGVybiBtYXRjaGluZyByYW4gb25seSBvbmNlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor V0lUSCBycHJfcmVzdWx0IEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpCispCitTRUxFQ1QgcjEuaWQsIHIxLmNudAorRlJPTSBycHJfcmVzdWx0IHIxCitKT0lO IHJwcl9yZXN1bHQgcjIgT04gcjEuaWQgPSByMi5pZCBBTkQgcjEuY250ID0gcjIuY250CitXSEVS RSByMS5jbnQgPiAwCitPUkRFUiBCWSByMS5pZDsKKworLS0gUmVzdWx0OiBib3RoIHJlZmVyZW5j ZXMgc2VlIHRoZSBzYW1lIG1hdGNoIGNvdW50cywgc28gdGhlIHNlbGYtam9pbgorLS0gcHJlc2Vy dmVzIGFsbCBtYXRjaGVkIHJvd3MgZnJvbSB0aGUgYmFzZWxpbmUuCitXSVRIIHJwcl9yZXN1bHQg QVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJP TSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRF Uk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykKK1NFTEVD VCByMS5pZCwgcjEuY250CitGUk9NIHJwcl9yZXN1bHQgcjEKK0pPSU4gcnByX3Jlc3VsdCByMiBP TiByMS5pZCA9IHIyLmlkIEFORCByMS5jbnQgPSByMi5jbnQKK1dIRVJFIHIxLmNudCA+IDAKK09S REVSIEJZIHIxLmlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEIyLiBSUFIgKyBKT0lOCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZl cmlmeSB0aGF0IGFuIFJQUiBzdWJxdWVyeSBjYW4gYmUgam9pbmVkIHdpdGggYW5vdGhlciByZWxh dGlvbi4KKy0tIFR3byBhc3BlY3RzIGFyZSBjaGVja2VkIGFnYWluc3QgYSBub24tUlBSIGJhc2Vs aW5lOgorLS0gICAoMSkgRmxhdHRlbmluZzogYSBub24tUlBSIHN1YnF1ZXJ5IGlzIHB1bGxlZCB1 cCBieSB0aGUgcGxhbm5lcgorLS0gICAgICAgKG5vIFN1YnF1ZXJ5IFNjYW4gaW4gdGhlIHBsYW4p OyBhbiBSUFIgc3VicXVlcnkgaXMga2VwdAorLS0gICAgICAgdW4tZmxhdHRlbmVkIChTdWJxdWVy eSBTY2FuIGFib3ZlIFdpbmRvd0FnZykuCistLSAgICgyKSBKb2luIGNvcnJlY3RuZXNzOiB0aGUg am9pbiBhbGlnbnMgZWFjaCBSUFIgbWF0Y2ggcm93IHdpdGgKKy0tICAgICAgIHRoZSBkaW1lbnNp b24tdGFibGUgcm93IG9uIHRoZSBzYW1lIGtleS4KKworQ1JFQVRFIFRBQkxFIHJwcl9pbnRlZzIg KGlkIElOVCwgbGFiZWwgVEVYVCk7CitJTlNFUlQgSU5UTyBycHJfaW50ZWcyIFZBTFVFUworICAg ICgxLCAnYScpLCAoMiwgJ2InKSwgKDMsICdjJyksICg0LCAnZCcpLCAoNSwgJ2UnKSwKKyAgICAo NiwgJ2YnKSwgKDcsICdnJyksICg4LCAnaCcpLCAoOSwgJ2knKSwgKDEwLCAnaicpOworCistLSBC YXNlbGluZTogYSBub24tUlBSIHN1YnF1ZXJ5IGlzIGZsYXR0ZW5lZCBieSB0aGUgcGxhbm5lci4g IE5vCistLSBTdWJxdWVyeSBTY2FuIG5vZGUgYXBwZWFyczsgdGhlIGlubmVyIFNFTEVDVCBpcyBt ZXJnZWQgaW50byB0aGUKKy0tIG91dGVyIGpvaW4uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1Qgci5pZCwgci52YWwsIGoubGFiZWwKK0ZST00gKFNFTEVDVCBpZCwgdmFsIEZST00gcnByX2lu dGVnKSByCitKT0lOIHJwcl9pbnRlZzIgaiBPTiByLmlkID0gai5pZAorT1JERVIgQlkgci5pZDsK KworLS0gUlBSIHN1YnF1ZXJ5IEpPSU46IHRoZSBTdWJxdWVyeSBTY2FuIGlzIHByZXNlcnZlZCBh Ym92ZSB0aGUKKy0tIFdpbmRvd0FnZywgY29uZmlybWluZyB0aGUgUlBSIHN1YnF1ZXJ5IGlzIG5v dCBmbGF0dGVuZWQuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgci5pZCwgci5jbnQsIGou bGFiZWwKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAg IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQ QVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHIK K0pPSU4gcnByX2ludGVnMiBqIE9OIHIuaWQgPSBqLmlkCitXSEVSRSByLmNudCA+IDAKK09SREVS IEJZIHIuaWQ7CisKKy0tIFJlc3VsdDogbWF0Y2hlZCBSUFIgcm93cyBhbGlnbiB3aXRoIGRpbWVu c2lvbiByb3dzIG9uIGlkLCBzaG93aW5nCistLSB0aGUgam9pbiBjb3JyZWN0bHkgcGFpcnMgcGVy LXJvdyBtYXRjaCBjb3VudHMgd2l0aCB0aGVpciBsYWJlbHMuCitTRUxFQ1Qgci5pZCwgci5jbnQs IGoubGFiZWwKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor ICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCisp IHIKK0pPSU4gcnByX2ludGVnMiBqIE9OIHIuaWQgPSBqLmlkCitXSEVSRSByLmNudCA+IDAKK09S REVSIEJZIHIuaWQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjMuIFJQUiArIFNldCBvcGVyYXRpb25zCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFZlcmlmeSB0aGF0IFJQUiByZXN1bHRzIGNvbWJpbmUgY29ycmVjdGx5IHdpdGggbm9u LVJQUiByZXN1bHRzCistLSB1bmRlciBhIFVOSU9OIEFMTC4gIFRoZSBwbGFuIG11c3Qgc2hvdyBh biBBcHBlbmQgbm9kZSB3aXRoIHR3bworLS0gaW5kZXBlbmRlbnQgY2hpbGQgcGxhbnM6IHRoZSBS UFIgYnJhbmNoIHdpdGggUGF0dGVybi9ERUZJTkUgYWN0aXZlLAorLS0gYW5kIHRoZSBub24tUlBS IGJyYW5jaCB3aXRoIGEgcGxhaW4gV2luZG93QWdnLiAgRWFjaCBjaGlsZCBzY2FucworLS0gdGhl IGJhc2UgcmVsYXRpb24gb24gaXRzIG93biBhbmQgY29udHJpYnV0ZXMgaXRzIHJvd3MgdG8gdGhl CistLSB1bmlvbmVkIG91dHB1dC4KKworLS0gUGxhbjogQXBwZW5kIHdpdGggdHdvIGluZGVwZW5k ZW50IGNoaWxkcmVuLiAgVGhlIFJQUiBicmFuY2ggaGFzIGEKKy0tIFdpbmRvd0FnZyBjYXJyeWlu ZyBQYXR0ZXJuL05hdiBNYXJrIExvb2tiYWNrOyB0aGUgbm9uLVJQUiBicmFuY2gKKy0tIGhhcyBh IHBsYWluIFdpbmRvd0FnZyB3aXRoIG5vIHBhdHRlcm4gbWV0YWRhdGEuCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgaWQsIGNudCwgJ3JwcicgQVMgc291cmNlIEZST00gKAorICAgIFNFTEVD VCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBE RUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250ID4gMAorVU5JT04gQUxM CitTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkKSBBUyBjbnQsICdub3JtYWwn IEFTIHNvdXJjZQorRlJPTSBycHJfaW50ZWcKK09SREVSIEJZIHNvdXJjZSwgaWQ7CisKKy0tIFJl c3VsdDogcm93cyBmcm9tIGJvdGggYnJhbmNoZXMgYXJlIHByZXNlbnQgaW4gdGhlIHVuaW9uZWQg b3V0cHV0LgorLS0gVGhlIFJQUiBicmFuY2ggZW1pdHMgb25seSBtYXRjaGVkIHJvd3MgKGNudCA+ IDApLCB3aGlsZSB0aGUKKy0tIG5vbi1SUFIgYnJhbmNoIGVtaXRzIGFsbCByb3dzIHdpdGggaXRz IG93biBjb3VudCB2YWx1ZXMuCitTRUxFQ1QgaWQsIGNudCwgJ3JwcicgQVMgc291cmNlIEZST00g KAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2lu dGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250ID4g MAorVU5JT04gQUxMCitTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkKSBBUyBj bnQsICdub3JtYWwnIEFTIHNvdXJjZQorRlJPTSBycHJfaW50ZWcKK09SREVSIEJZIHNvdXJjZSwg aWQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQjQuIFJQUiArIFByZXBhcmVkIHN0YXRlbWVudHMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gVmVyaWZ5IHRoYXQgUlBSIHF1ZXJpZXMgc3Vydml2ZSB0aGUgcHJlcGFyZWQtc3RhdGVtZW50 IHBhdGggYnkKKy0tIGV4ZXJjaXNpbmcgYm90aCBwbGFuY2FjaGUgbW9kZXMgd2l0aCBhIHBhcmFt ZXRlciB0aGF0IGZlZWRzIGludG8KKy0tIFJQUidzIG5hdmlnYXRpb24gb2Zmc2V0IChQUkVWKHZh bCwgJDEpKS4gIFRoZSBwYXJhbWV0ZXIgc3VyZmFjZXMKKy0tIHRoZSBSUFItc3BlY2lmaWMgcGxh bmNhY2hlIGRpZmZlcmVuY2U6CistLSAgIC0gY3VzdG9tIHBsYW46ICJOYXYgTWFyayBMb29rYmFj ayIgaXMgcmVzb2x2ZWQgdG8gdGhlIGxpdGVyYWwKKy0tICAgICBwYXJhbWV0ZXIgdmFsdWUgYXQg cGxhbiB0aW1lIChlLmcuLCAiTmF2IE1hcmsgTG9va2JhY2s6IDEiKS4KKy0tICAgLSBnZW5lcmlj IHBsYW46ICJOYXYgTWFyayBMb29rYmFjayIgaXMgZGVmZXJyZWQgdG8gZXhlY3V0aW9uIGFuZAor LS0gICAgIGFwcGVhcnMgYXMgIk5hdiBNYXJrIExvb2tiYWNrOiBydW50aW1lIiBpbiB0aGUgcGxh bi4KKy0tIFRoZSByZXN1bHQgbXVzdCBiZSBpZGVudGljYWwgdW5kZXIgYm90aCBtb2Rlcy4KKwor LS0gUmVnaXN0ZXIgdGhlIHByZXBhcmVkIHN0YXRlbWVudDsgREVGSU5FIHVzZXMgUFJFVih2YWws ICQxKSBzbyB0aGUKKy0tIHBhcmFtZXRlciByZWFjaGVzIFJQUidzIG5hdmlnYXRpb24gbWFjaGlu ZXJ5LgorUFJFUEFSRSBycHJfcHJldihpbnQpIEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwsICQxKSkKK09S REVSIEJZIGlkOworCistLSBDdXN0b20gcGxhbjogTmF2IE1hcmsgTG9va2JhY2sgcmVzb2x2ZWQg dG8gdGhlIGxpdGVyYWwgMS4KK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9jdXN0b21fcGxh bjsKK0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBycHJfcHJldigxKTsKK0VYRUNVVEUgcnBy X3ByZXYoMSk7CisKKy0tIEdlbmVyaWMgcGxhbjogTmF2IE1hcmsgTG9va2JhY2sgZGVmZXJyZWQg dG8gZXhlY3V0aW9uLCBzaG93biBhcworLS0gInJ1bnRpbWUiIGluIHRoZSBwbGFuLiAgUmVzdWx0 IG11c3QgbWF0Y2ggdGhlIGN1c3RvbS1wbGFuIHJlc3VsdAorLS0gZXhhY3RseS4KK1NFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYpIEVY RUNVVEUgcnByX3ByZXYoMSk7CitFWEVDVVRFIHJwcl9wcmV2KDEpOworCitSRVNFVCBwbGFuX2Nh Y2hlX21vZGU7CitERUFMTE9DQVRFIHJwcl9wcmV2OworCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEI1LiBSUFIgKyBQ YXJ0aXRpb25lZCB0YWJsZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBSUFIgcGF0dGVybiBtYXRj aGluZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgc291cmNlCistLSByZWxhdGlvbiBpcyBwYXJ0 aXRpb25lZC4gIFRoZSBwbGFubmVyIG11c3QgZ2F0aGVyIHJvd3MgZnJvbSBldmVyeQorLS0gcGFy dGl0aW9uIGludG8gYSBzaW5nbGUgb3JkZXJlZCBzdHJlYW0gYmVmb3JlIFJQUiBjYW4gc2VlIHRo ZW0sCistLSBiZWNhdXNlIHBhdHRlcm4gbWF0Y2hpbmcgaXMgc2VxdWVudGlhbCBhY3Jvc3MgdGhl IGVudGlyZQorLS0gcGFydGl0aW9uLWJ5IGdyb3VwIGFuZCBjYW5ub3QgYmUgcGVyZm9ybWVkIGlu ZGVwZW5kZW50bHkgb24gZWFjaAorLS0gdGFibGUgcGFydGl0aW9uLgorCitDUkVBVEUgVEFCTEUg cnByX3BhcnQgKGlkIElOVCwgdmFsIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVB VEUgVEFCTEUgcnByX3BhcnRfMSBQQVJUSVRJT04gT0YgcnByX3BhcnQgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoNik7CitDUkVBVEUgVEFCTEUgcnByX3BhcnRfMiBQQVJUSVRJT04gT0YgcnByX3Bh cnQgRk9SIFZBTFVFUyBGUk9NICg2KSBUTyAoMTEpOworSU5TRVJUIElOVE8gcnByX3BhcnQgU0VM RUNUIGlkLCB2YWwgRlJPTSBycHJfaW50ZWc7CisKKy0tIFBsYW46IHBhcnRpdGlvbiBzY2FucyBh cmUgY29tYmluZWQgd2l0aCBBcHBlbmQgKG9yIE1lcmdlIEFwcGVuZCksCistLSBzb3J0ZWQgaW50 byBhIHNpbmdsZSBvcmRlcmVkIHN0cmVhbSwgYW5kIGZlZCBpbnRvIG9uZSBXaW5kb3dBZ2cKKy0t IHRoYXQgcGVyZm9ybXMgUlBSIHBhdHRlcm4gbWF0Y2hpbmcgYWNyb3NzIHRoZSBjb21iaW5lZCBz dHJlYW0uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBycHJfcGFydAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBp ZDsKKworLS0gQmFzZWxpbmU6IHRoZSBzYW1lIHF1ZXJ5IGFnYWluc3QgdGhlIG5vbi1wYXJ0aXRp b25lZCBycHJfaW50ZWcKKy0tIHByb2R1Y2VzIHRoZSBwZXItcm93IHJlZmVyZW5jZSBvdXRwdXQu CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcK K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIg QVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisKKy0tIFJlc3VsdCBhZ2FpbnN0IHRo ZSBwYXJ0aXRpb25lZCB0YWJsZSBtdXN0IG1hdGNoIHRoZSBiYXNlbGluZQorLS0gcm93LWZvci1y b3cuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfcGFy dAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfcGFy dDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBCNi4gUlBSICsgTEFURVJBTAorLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgaW5zaWRl IGEgTEFURVJBTCBzdWJxdWVyeS4gIFF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlcyBmcm9tCist LSB0aGUgb3V0ZXIgcXVlcnkgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGluIERFRklORSwgc28gdGhp cyB0ZXN0cworLS0gdGhlIGJhc2ljIGNhc2Ugd2hlcmUgTEFURVJBTCBwcm92aWRlcyB0aGUgY29y cmVsYXRpb24gZmlsdGVyCistLSAoV0hFUkUgaWQgPD0gby5pZCkgYW5kIERFRklORSB1c2VzIG9u bHkgbG9jYWwgY29sdW1ucy4gIFRoZSBwbGFuCistLSBtdXN0IHNob3cgYSBOZXN0ZWQgTG9vcCBk cml2aW5nIHRoZSBvdXRlciByZWxhdGlvbiBpbnRvIHRoZSBpbm5lcgorLS0gc3VicXVlcnkgc2Nh biwgd2l0aCB0aGUgUlBSIFdpbmRvd0FnZyByZS1leGVjdXRlZCBmb3IgZWFjaCBvdXRlcgorLS0g cm93IGFuZCB0aGUgY29ycmVsYXRpb24gc3VyZmFjaW5nIGFzIGEgc2Nhbi1sZXZlbCBGaWx0ZXIg b24KKy0tICJpZCA8PSBvLmlkIi4KKworLS0gUGxhbjogTmVzdGVkIExvb3Agd2l0aCB0aGUgUlBS IFdpbmRvd0FnZyBpbiB0aGUgaW5uZXIgbGVnLCBkcml2ZW4KKy0tIGJ5IHRoZSBmaWx0ZXJlZCBv dXRlciByb3dzIChvLmlkIElOICg1LCAxMCkpLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IG8uaWQgQVMgb3V0ZXJfaWQsIHIuaWQsIHIuY250CitGUk9NIHJwcl9pbnRlZyBvLAorTEFURVJB TCAoCisgICAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJf aW50ZWcKKyAgICBXSEVSRSBpZCA8PSBvLmlkCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpCispIHIKK1dIRVJFIHIuY250ID4gMCBBTkQgby5pZCBJTiAoNSwgMTApCitPUkRFUiBC WSBvLmlkLCByLmlkOworCistLSBSZXN1bHQ6IGZvciBlYWNoIG9mIHRoZSB0d28gb3V0ZXIgaWRz ICg1IGFuZCAxMCksIHRoZSBMQVRFUkFMCistLSBzdWJxdWVyeSBwcm9kdWNlcyBSUFIgbWF0Y2gg Y291bnRzIG92ZXIgdGhlIHJlc3RyaWN0ZWQgaW5wdXQuCitTRUxFQ1Qgby5pZCBBUyBvdXRlcl9p ZCwgci5pZCwgci5jbnQKK0ZST00gcnByX2ludGVnIG8sCitMQVRFUkFMICgKKyAgICBTRUxFQ1Qg aWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdIRVJF IGlkIDw9IG8uaWQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRF Uk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgcgorV0hF UkUgci5jbnQgPiAwIEFORCBvLmlkIElOICg1LCAxMCkKK09SREVSIEJZIG8uaWQsIHIuaWQ7CisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQjcuIFJQUiArIFJlY3Vyc2l2ZSBDVEUKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRo YXQgUlBSIGlzIHJlamVjdGVkIGluc2lkZSBhIHJlY3Vyc2l2ZSBxdWVyeS4KKy0tIElTTy9JRUMg MTkwNzUtNSA2LjE3LjUgKFIwMjApIGFuZCA0LjE4LjUgKFIwMTApIGNpdGUgQ1JFQVRFCistLSBS RUNVUlNJVkUgVklFVyBleGFtcGxlcyBhbmQgc3RhdGUgdGhhdCAicm93IHBhdHRlcm4gbWF0Y2hp bmcKKy0tIGlzIHByb2hpYml0ZWQgaW4gcmVjdXJzaXZlIHF1ZXJpZXMiLiAgVGhlIGZvcm1hbCBy dWxlIGxpdmVzIGluCistLSBJU08vSUVDIDkwNzUtMjoyMDE2IDcuMTcgU3ludGF4IFJ1bGUgMylm KTogYSBwb3RlbnRpYWxseQorLS0gcmVjdXJzaXZlIDx3aXRoIGxpc3QgZWxlbWVudD4gc2hhbGwg bm90IGNvbnRhaW4gYSA8cm93IHBhdHRlcm4KKy0tIG1lYXN1cmVzPiBvciA8cm93IHBhdHRlcm4g Y29tbW9uIHN5bnRheD4uICBQZXIgMyllKSwgZXZlcnkKKy0tIDx3aXRoIGxpc3QgZWxlbWVudD4g dW5kZXIgV0lUSCBSRUNVUlNJVkUgaXMgInBvdGVudGlhbGx5CistLSByZWN1cnNpdmUiLCBzbyB0 aGUgcmVqZWN0aW9uIGNvdmVycyB0aGUgYmFzZSAobm9uLXJlY3Vyc2l2ZSkKKy0tIGxlZyB0b28s IG5vdCBqdXN0IHRoZSBzZWxmLXJlZmVyZW5jaW5nIGxlZy4KKworLS0gV0lUSCBSRUNVUlNJVkU6 IFJQUiBpbiB0aGUgYmFzZSBsZWcgaXMgcmVqZWN0ZWQgZXZlbiB0aG91Z2ggdGhlCistLSBiYXNl IGxlZyBuZXZlciByZWZlcmVuY2VzIHRoZSByZWN1cnNpdmUgQ1RFIG5hbWUuCitXSVRIIFJFQ1VS U0lWRSBzZXEgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkK KyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgaWQgKyAxMDAsIHZhbCwgY250IEZST00gc2VxIFdI RVJFIGlkIDwgMworKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NIHNlcSBPUkRFUiBCWSBpZDsK KworLS0gQ1JFQVRFIFJFQ1VSU0lWRSBWSUVXOiByZXdyaXR0ZW4gYnkgbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoKQorLS0gaW50byBXSVRIIFJFQ1VSU0lWRSwgc28gdGhlIHNhbWUgcmVqZWN0aW9u IGFwcGxpZXMuICBUaGlzIGlzCistLSB0aGUgZm9ybSBJU08vSUVDIDE5MDc1LTUgNi4xNy41IGNp dGVzIHZlcmJhdGltLgorQ1JFQVRFIFJFQ1VSU0lWRSBWSUVXIHJwcl9yZWN2KGlkLCB2YWwsIGNu dCkgQVMKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CisgICAgRlJPTSBycHJf aW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g QjguIFJQUiArIEluY3JlbWVudGFsIHNvcnQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUlBSIHBh dHRlcm4gbWF0Y2hpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gdGhlIGlucHV0CistLSB0byBXaW5k b3dBZ2cgYXJyaXZlcyB2aWEgYW4gaW5jcmVtZW50YWwgc29ydC4gIFRoZSBpbmRleCBvbiAoaWQp CistLSBwcm92aWRlcyBwcmVzb3J0ZWQgaW5wdXQgZm9yIHRoZSBmaXJzdCBPUkRFUiBCWSBrZXks IHNvCistLSAiT1JERVIgQlkgaWQsIHZhbCIgbGV0cyB0aGUgcGxhbm5lciB1c2UgSW5jcmVtZW50 YWwgU29ydCB0byBvcmRlcgorLS0gb25seSBvbiB0aGUgc2Vjb25kIGtleS4gIFRoZSBwbGFuIG11 c3Qgc2hvdyBJbmNyZW1lbnRhbCBTb3J0CistLSBiZWxvdyB0aGUgUlBSIFdpbmRvd0FnZywgYW5k IFJQUiBtdXN0IHByb2R1Y2UgdGhlIHNhbWUgcGVyLXJvdworLS0gbWF0Y2ggY291bnRzIGFzIGl0 IHdvdWxkIHdpdGggYSBwbGFpbiBTb3J0LgorCitDUkVBVEUgSU5ERVggcnByX2ludGVnX2lkX2lk eCBPTiBycHJfaW50ZWcgKGlkKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKworLS0gUGxh bjogUlBSIFdpbmRvd0FnZyBhYm92ZSBhbiBJbmNyZW1lbnRhbCBTb3J0IGFib3ZlIGFuIEluZGV4 IFNjYW4uCistLSBUaGUgSW5jcmVtZW50YWwgU29ydCBkZWNsYXJlcyAiUHJlc29ydGVkIEtleTog aWQiIGFuZCBzb3J0cyBvbmx5CistLSBvbiB2YWwgd2l0aGluIGVhY2ggaWQgZ3JvdXAuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor RlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCwgdmFsCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworCistLSBSZXN1bHQ6IFJQ UiBvdmVyIHRoZSBpbmNyZW1lbnRhbGx5IHNvcnRlZCBzdHJlYW0gcHJvZHVjZXMgbWF0Y2gKKy0t IGNvdW50cyBwZXIgcm93LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQsIHZhbAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQsIHZh bDsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIElOREVYIHJwcl9pbnRlZ19pZF9pZHg7 CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBWb2xhdGlsZSBmdW5jdGlvbnMgaW4gREVGSU5FIGFyZSByZWplY3RlZCBpbiB0aGUg cGxhbm5lci4gIFVuZGVyCistLSBSUFIncyBORkEgZW5naW5lIHRoZSBzYW1lIHJvdydzIERFRklO RSBwcmVkaWNhdGUgbWF5IGJlIGV2YWx1YXRlZAorLS0gbXVsdGlwbGUgdGltZXMgKGJhY2t0cmFj a2luZywgUFJFVi9ORVhUIG5hdmlnYXRpb24pLCBzbyBhIHZvbGF0aWxlCistLSByZXN1bHQgd291 bGQgbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgU1RBQkxFIGFuZAor LS0gSU1NVVRBQkxFIGNhbGxlZXMgYXJlIGFjY2VwdGVkLgorCistLSBCYXNlbGluZTogU1RBQkxF ICh0b19jaGFyKSBhbmQgSU1NVVRBQkxFIChsZW5ndGgpIGNhbGxlZXMgYXJlIGFjY2VwdGVkLgor U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFT IHZhbCA+IFBSRVYodmFsKQorICAgICAgICAgICAgICAgIEFORCBsZW5ndGgoJ3gnKSA9IDEKKyAg ICAgICAgICAgICAgICBBTkQgdG9fY2hhcihkYXRlICcyMDI2LTAxLTAxJywgJ1lZWVknKSA9ICcy MDI2JykKK09SREVSIEJZIGlkOworCistLSBWb2xhdGlsZSAocmFuZG9tKSBpcyByZWplY3RlZC4K K1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZwor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBB UyB2YWwgPiBQUkVWKHZhbCkgQU5EIHJhbmRvbSgpID49IDAuMCkKK09SREVSIEJZIGlkOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEIxMC4gUlBSICsgQ29ycmVsYXRlZCBzdWJxdWVyeSBpbiBXSEVSRQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBWZXJpZnkgdGhhdCBhbiBSUFIgd2luZG93IHBsYWNlZCBpbnNpZGUgYSBjb3JyZWxhdGVk IHNjYWxhcgorLS0gc3VicXVlcnkgaXMgZXhlY3V0ZWQgb25jZSBwZXIgb3V0ZXIgcm93LiAgREVG SU5FIHN0aWxsIHJlZmVyZW5jZXMKKy0tIG9ubHkgbG9jYWwgY29sdW1ucyAocXVhbGlmaWVkIHJl ZnMgZnJvbSB0aGUgb3V0ZXIgcXVlcnkgYXJlIG5vdAorLS0gc3VwcG9ydGVkIGluIERFRklORSk7 IHRoZSBjb3JyZWxhdGlvbiBsaXZlcyBpbiB0aGUgc3VicXVlcnkncworLS0gV0hFUkUgY2xhdXNl IGFzICJpLmlkIDw9IG8uaWQiLiAgVGhlIHBsYW4gbXVzdCBzaG93IGEgU3ViUGxhbgorLS0gYXR0 YWNoZWQgdG8gdGhlIG91dGVyIHNjYW4sIHdpdGggdGhlIFJQUiBXaW5kb3dBZ2cgZHJpdmVuIGJ5 IGEKKy0tIHBlci1yb3cgc2NhbiBmaWx0ZXIgY2FycnlpbmcgdGhlIGNvcnJlbGF0aW9uIHByZWRp Y2F0ZS4KKworLS0gUGxhbjogU3ViUGxhbiBhdHRhY2hlZCB0byB0aGUgb3V0ZXIgU2VxIFNjYW47 IHRoZSBpbm5lciBzY2FuCistLSBjYXJyaWVzICJGaWx0ZXI6IChpZCA8PSBvLmlkKSIsIGNvbmZp cm1pbmcgdGhlIGNvcnJlbGF0aW9uIGlzCistLSBldmFsdWF0ZWQgcGVyIG91dGVyIHJvdy4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBvLmlkLCBvLnZhbCwKKyAgICAoU0VMRUNUIGNvdW50 KCopIE9WRVIgdworICAgICBGUk9NIHJwcl9pbnRlZyBpCisgICAgIFdIRVJFIGkuaWQgPD0gby5p ZAorICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgUEFUVEVSTiAoQSBC KykKKyAgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKyAgICAgT1JERVIgQlkg aWQKKyAgICAgTElNSVQgMSkgQVMgZmlyc3RfY250CitGUk9NIHJwcl9pbnRlZyBvCitPUkRFUiBC WSBvLmlkOworCistLSBSZXN1bHQ6IGVhY2ggb3V0ZXIgcm93IHJlY2VpdmVzIHRoZSBmaXJzdF9j bnQgZnJvbSBpdHMgb3duCistLSBjb3JyZWxhdGVkIFJQUiBzdWJxdWVyeS4KK1NFTEVDVCBvLmlk LCBvLnZhbCwKKyAgICAoU0VMRUNUIGNvdW50KCopIE9WRVIgdworICAgICBGUk9NIHJwcl9pbnRl ZyBpCisgICAgIFdIRVJFIGkuaWQgPD0gby5pZAorICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQKKyAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgIERFRklORSBCIEFTIHZhbCA+ IFBSRVYodmFsKSkKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgTElNSVQgMSkgQVMgZmlyc3RfY250 CitGUk9NIHJwcl9pbnRlZyBvCitPUkRFUiBCWSBvLmlkOworCistLSBBIGNvbHVtbiByZWZlcmVu Y2VkIG9ubHkgYnkgREVGSU5FIG11c3Qgbm90IGtlZXAgYW4gdW5yZWxhdGVkIGNvbHVtbiB0aGF0 CistLSBtZXJlbHkgc2hhcmVzIGl0cyBhdHRyaWJ1dGUgbnVtYmVyLiAgREVGSU5FIHJlZmVyZW5j ZXMgYSAocnByX292ZXIxKTsgYworLS0gKHJwcl9vdmVyMikgaGFzIHRoZSBzYW1lIGF0dG5vIGJ1 dCBpcyB1bnVzZWQsIHNvIGl0IG11c3QgYmUgZHJvcHBlZC4KK0NSRUFURSBUQUJMRSBycHJfb3Zl cjEgKGEgaW50KTsKK0NSRUFURSBUQUJMRSBycHJfb3ZlcjIgKGMgaW50KTsKK0lOU0VSVCBJTlRP IHJwcl9vdmVyMSBWQUxVRVMgKDEpLCgyKSwoMyk7CitJTlNFUlQgSU5UTyBycHJfb3ZlcjIgVkFM VUVTICgxKSwoMiksKDMpOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIGNu dCBGUk9NICgKKyAgU0VMRUNUIGEgQVMgb2EsIGMgQVMgb2MsIGNvdW50KCopIE9WRVIgdyBBUyBj bnQKKyAgRlJPTSBycHJfb3ZlcjEgQ1JPU1MgSk9JTiBycHJfb3ZlcjIKKyAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGEgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgICBQQVRURVJOIChYKykgREVGSU5FIFggQVMgYSA+IDApCispIHM7 CitEUk9QIFRBQkxFIHJwcl9vdmVyMSwgcnByX292ZXIyOworCistLSBDbGVhbnVwCitEUk9QIFRB QkxFIHJwcl9pbnRlZzsKK0RST1AgVEFCTEUgcnByX2ludGVnMjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25m YS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4MmI4MzQwOTc3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKQEAg LTAsMCArMSwzNjMzIEBACistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUiBORkEgVGVzdHMKKy0tIFRlc3RzIGZvciBS b3cgUGF0dGVybiBSZWNvZ25pdGlvbiBORkEgUnVudGltZSBFeGVjdXRpb24KKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0K Ky0tIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIE5GQSAoTm9uLWRldGVybWluaXN0aWMg RmluaXRlCistLSBBdXRvbWF0b24pIHJ1bnRpbWUgZXhlY3V0aW9uIGVuZ2luZSBpbiBub2RlV2lu ZG93QWdnLmMsCistLSBmb2N1c2luZyBvbiB1cGRhdGVfcmVkdWNlZF9mcmFtZSBhbmQgcmVsYXRl ZCBmdW5jdGlvbnMuCistLQorLS0gVGVzdCBTdHJhdGVneToKKy0tICAgRGlhZ29uYWwgcGF0dGVy biBzdHlsZSB1c2luZyBBUlJBWSBmbGFncyB0byBleHBsaWNpdGx5CistLSAgIGNvbnRyb2wgd2hp Y2ggcGF0dGVybiB2YXJpYWJsZXMgbWF0Y2ggYXQgZWFjaCByb3cuCistLQorLS0gVGVzdCBDb3Zl cmFnZToKKy0tICAgQmFzaWMgTkZBIEZsb3cgKG1hdGNoLT5hYnNvcmItPmFkdmFuY2UpCistLSAg IEFic29ycHRpb24gT3B0aW1pemF0aW9uCistLSAgIENvbnRleHQgTGlmZWN5Y2xlIE1hbmFnZW1l bnQKKy0tICAgQWR2YW5jZSBQaGFzZSAoRXBzaWxvbiBUcmFuc2l0aW9ucykKKy0tICAgTWF0Y2gg UGhhc2UgKFZhcmlhYmxlIE1hdGNoaW5nKQorLS0gICBGcmFtZSBCb3VuZGFyeSBIYW5kbGluZwor LS0gICBTdGF0ZSBNYW5hZ2VtZW50IChEZWR1cGxpY2F0aW9uKQorLS0gICBTdGF0aXN0aWNzIGFu ZCBEaWFnbm9zdGljcworLS0gICBRdWFudGlmaWVyIFJ1bnRpbWUgQmVoYXZpb3IKKy0tICAgUGF0 aG9sb2dpY2FsIFBhdHRlcm4gUHJvdGVjdGlvbgorLS0gICBBbHRlcm5hdGlvbiBSdW50aW1lIEJl aGF2aW9yCistLSAgIERlZXAgTmVzdGVkIEdyb3VwcworLS0gICBTS0lQIE9wdGlvbnMgKFJ1bnRp bWUpCistLSAgIElOSVRJQUwgTW9kZSAoUnVudGltZSkKKy0tICAgRnJhbWUgQm91bmRhcnkgVmFy aWF0aW9ucworLS0gICBTcGVjaWFsIFBhcnRpdGlvbiBDYXNlcworLS0gICBERUZJTkUgU3BlY2lh bCBDYXNlcworLS0gICBBYnNvcnB0aW9uIER5bmFtaWMgRmxhZ3MKKy0tICAgWmVyby1Db25zdW1w dGlvbiBDeWNsZSBEZXRlY3Rpb24KKy0tCistLSBSZXNwb25zaWJpbGl0eToKKy0tICAgLSBORkEg cnVudGltZSBleGVjdXRpb24gcGF0aHMKKy0tICAgLSBDb250ZXh0L1N0YXRlIGxpZmVjeWNsZSBt YW5hZ2VtZW50CistLSAgIC0gUnVudGltZSBib3VuZGFyeSBjb25kaXRpb25zIGFuZCBwcm90ZWN0 aW9ucworLS0KKy0tIE5PVCB0ZXN0ZWQgaGVyZSAoY292ZXJlZCBpbiBvdGhlciBmaWxlcyk6Cist LSAgIC0gUGF0dGVybiBwYXJzaW5nL29wdGltaXphdGlvbiAocnByX2Jhc2Uuc3FsKQorLS0gICAt IEVYUExBSU4gb3V0cHV0IChycHJfZXhwbGFpbi5zcWwpCistLSAgIC0gUFJFVi9ORVhUIHNlbWFu dGljcyAocnByLnNxbCkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJhc2ljIE5GQSBGbG93CistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gU2ltcGxlIHNlcXVlbnRpYWwgcGF0dGVybgorV0lUSCB0ZXN0X3NlcXVlbnRpYWwg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKSAgLS0gTm8gbWF0 Y2gKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9zZXF1ZW50aWFsCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSBCIEMgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworCistLSBRdWFu dGlmaWVkIHBhdHRlcm4gKEErIEIrIEMrKQorV0lUSCB0ZXN0X3F1YW50aWZpZWQgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZ WydDJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0MnXSksCisgICAgICAgICg4LCBBUlJBWVsnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50aWZpZWQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKyBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKQorKTsKKworLS0gT3B0aW9uYWwgcGF0dGVybiAoQSBCPyBDKQorV0lUSCB0ZXN0 X29wdGlvbmFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0MnXSksICAtLSBCIHNraXBwZWQKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1 LCBBUlJBWVsnQyddKSwgIC0tIEIgbWF0Y2hlZAorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vcHRpb25hbAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEEgQj8gQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KQorKTsKKworLS0gQWx0ZXJuYXRpb24gcGF0dGVybiAoQSAoQnxDKSBEKQorV0lUSCB0ZXN0X2Fs dGVybmF0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksICAtLSBGaXJzdCBicmFuY2gKKyAg ICAgICAgKDMsIEFSUkFZWydEJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg1LCBBUlJBWVsnQyddKSwgIC0tIFNlY29uZCBicmFuY2gKKyAgICAgICAgKDYsIEFSUkFZWydE J10pLAorICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9hbHRlcm5hdGlvbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgKEIgfCBDKSBEKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFT ICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBPcHRpbWl6YXRp b24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCistLSBBYnNvcmJhYmxlIHBhdHRlcm4gKEErKQorV0lUSCB0ZXN0X2Fic29y YmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCist LSBNaXhlZCBhYnNvcmJhYmxlL25vbi1hYnNvcmJhYmxlICgoQSspIHwgQikKK1dJVEggdGVzdF9t aXhlZF9hYnNvcnB0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlb J18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taXhlZF9hYnNvcnB0aW9uCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEErKSB8IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBT dGF0ZSBjb3ZlcmFnZSAoc2FtZSBlbGVtSWR4LCBkaWZmZXJlbnQgY291bnQpCitXSVRIIHRlc3Rf c3RhdGVfY292ZXJhZ2UgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsn XyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3N0YXRlX2NvdmVyYWdlCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQXsyLH0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFJlbHVj dGFudCBwYXR0ZXJuIChBKz8pIC0gbm90IGFic29yYmFibGUKKy0tIENvbXBhcmUgd2l0aCBncmVl ZHkgQSsgYWJvdmU6IHJlbHVjdGFudCBleGNsdWRlZCBmcm9tIGFic29ycHRpb24uCistLSBFYWNo IGNvbnRleHQgcHJvZHVjZXMgbWluaW11bSBtYXRjaCBpbmRlcGVuZGVudGx5LgorV0lUSCB0ZXN0 X3JlbHVjdGFudF9hYnNvcnB0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywK KyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfYWJz b3JwdGlvbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBBYnNvcnB0aW9uIHdpdGggZml4ZWQgc3VmZml4 OiBBKyBCCitXSVRIIHRlc3RfYWJzb3JiX3N1ZmZpeCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfc3VmZml4CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFBlci1icmFu Y2ggYWJzb3JwdGlvbiB3aXRoIEFMVDogQisgQyB8IEIrIEQKK1dJVEggdGVzdF9hYnNvcmJfYWx0 IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ1gnXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X2Fic29yYl9hbHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChCKyBDIHwgQisgRCkKKyAgICBE RUZJTkUKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTm9u LWFic29yYmFibGU6IEEgQisgKHVuYm91bmRlZCBub3QgaW4gZmlyc3QgcG9zaXRpb24pCitXSVRI IHRlc3Rfbm9fYWJzb3JiIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlb J1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X25vX2Fic29yYgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQisp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBB UyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBHUk9VUCBtZXJnZSBlbmFibGVzIGFic29ycHRp b246IChBIEIpIChBIEIpKyBvcHRpbWl6ZWQgdG8gKEEgQil7Mix9CitXSVRIIHRlc3RfYWJzb3Ji X2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydYJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9hYnNvcmJfZ3JvdXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSAoQSBCKSspCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworCistLSBUd28gY29uc2VjdXRpdmUgdW5ib3VuZGVkIGdyb3Vw czogKEEgQikrIChDIEQpKworLS0gVGhlIGxlYWRpbmcgZ3JvdXAgKEEgQikrIGlzIGFic29yYmFi bGUgKHVuYm91bmRlZCBtdWx0aS1lbGVtZW50KTsgKEMgRCkrIGlzCistLSBhIGRpc3RpbmN0IHNp YmxpbmcgZ3JvdXAgdGhhdCBkb2VzIG5vdCBtZXJnZSB3aXRoIGl0LiAgV2hlbiB0aGUgbGVhZGlu ZyBncm91cAorLS0gZXhpdHMgaW50byB0aGUgc2libGluZywgaXRzIGJvZHkgbGVhZi1WQVIgY291 bnQgbXVzdCBiZSBjbGVhcmVkIHNvIGl0IGRvZXMKKy0tIG5vdCBsZWFrIGludG8gdGhlIHNpYmxp bmcncyBzaGFyZWQgZGVwdGggc2xvdC4KK1dJVEggdGVzdF9hYnNvcmJfdHdvX2dyb3VwcyBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAg ICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwg QVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDgsIEFSUkFZ WydEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfdHdvX2dyb3VwcworV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoKEEgQikrIChDIEQpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworCistLSBG aXhlZC1sZW5ndGggZ3JvdXAgYWJzb3JwdGlvbjogKEEgQnsyfSkrIEMKKy0tIEJ7Mn0gaGFzIG1p biA9PSBtYXgsIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIChBIEIgQikrIEMKK1dJVEggdGVz dF9hYnNvcmJfZml4ZWRsZW4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAo MywgIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwg IEFSUkFZWydCJ10pLAorICAgICAgICAoNiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgIEFS UkFZWydBJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZ WydCJ10pLAorICAgICAgICAoMTAsIEFSUkFZWydDJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydY J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfZml4ZWRsZW4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KChBIEJ7Mn0pKyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyks CisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlko ZmxhZ3MpCispOworCistLSBDb25zZWN1dGl2ZSB2YXJzIG1lcmdlZCB0byBmaXhlZC1sZW5ndGg6 IChBIEIgQikrIC0+IChBIEJ7Mn0pKworV0lUSCB0ZXN0X2Fic29yYl9jb25zZWN1dGl2ZSBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0InXSksCisgICAg ICAgICg0LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSksCisgICAgICAg ICg2LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg4 LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAgICAgICgxMCwg QVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9jb25zZWN1dGl2ZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgQiBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBOZXN0ZWQg Zml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIChCIEMpezJ9IEQpKyBFCistLSBJbm5l ciBncm91cCB7Mn0gaGFzIG1pbiA9PSBtYXg7IGFic29yYmFibGUgdmlhIHJlY3Vyc2l2ZSBjaGVj aworLS0gc3RlcF9zaXplID0gMSArICgxKzEpKjIgKyAxID0gNgorV0lUSCB0ZXN0X2Fic29yYl9u ZXN0ZWRfZml4ZWRsZW4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg IEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFS UkFZWydDJ10pLAorICAgICAgICAoNiwgIEFSUkFZWydEJ10pLAorICAgICAgICAoNywgIEFSUkFZ WydBJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydD J10pLAorICAgICAgICAoMTAsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydDJ10p LAorICAgICAgICAoMTIsIEFSUkFZWydEJ10pLAorICAgICAgICAoMTMsIEFSUkFZWydFJ10pLAor ICAgICAgICAoMTQsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfbmVzdGVkX2Zp eGVkbGVuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoQiBDKXsyfSBEKSsgRSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisKKy0t IERvdWJseSBuZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBICgoQiBDezN9 KXsyfSBEKXsyfSBFKSsgRgorLS0gc3RlcF9zaXplID0gMSArICgoMSszKSoyKzEpKjIgKyAxID0g MjA7IDIgaXRlcmF0aW9ucyArIEYgPSA0MSByb3dzCitXSVRIIHRlc3RfYWJzb3JiX2RvdWJseV9u ZXN0ZWQgQVMgKAorICAgIFNFTEVDVCB2IEFTIGlkLCBBUlJBWVsKKyAgICAgICAgQ0FTRQorICAg ICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDEsIDIxKSAgVEhFTiAnQScKKyAgICAgICAgICAgIFdI RU4gdiAlIDQxIElOICgyLCA2LCAxMSwgMTUsIDIyLCAyNiwgMzEsIDM1KSBUSEVOICdCJworICAg ICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDMsNCw1LCA3LDgsOSwgMTIsMTMsMTQsIDE2LDE3LDE4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0LDI1LCAyNywyOCwyOSwgMzIsMzMs MzQsIDM2LDM3LDM4KSBUSEVOICdDJworICAgICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDEwLCAx OSwgMzAsIDM5KSBUSEVOICdEJworICAgICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDIwLCA0MCkg VEhFTiAnRScKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxID0gMCBUSEVOICdGJworICAgICAgICAg ICAgRUxTRSAnWCcKKyAgICAgICAgRU5ECisgICAgXSBBUyBmbGFncworICAgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDgyKSBBUyBzKHYpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2RvdWJseV9uZXN0ZWQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBICgoQiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFO WShmbGFncykKKyk7CisKKy0tIDMtbGV2ZWwgRU5EIGNoYWluOiAoKEEgKEIgQyl7Mn0pezJ9KSsK Ky0tIFRlc3RzIEVORChCQ3syfSkgLT4gRU5EKEEuLnsyfSkgLT4gRU5EKCspIGNoYWluaW5nCist LSAyIGl0ZXJhdGlvbnMgb2YgKywgZWFjaCAxMCByb3dzOiAoQSBCIEMgQiBDKShBIEIgQyBCIEMp CitXSVRIIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLCAgLS0gMXN0ICsgaXRlciwgMXN0IHsyfSwg QQorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydDJ10pLAor ICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydDJ10pLCAgLS0g MXN0IChCQyl7Mn0gZG9uZQorICAgICAgICAoNiwgIEFSUkFZWydBJ10pLCAgLS0gMXN0ICsgaXRl ciwgMm5kIHsyfSwgQQorICAgICAgICAoNywgIEFSUkFZWydCJ10pLAorICAgICAgICAoOCwgIEFS UkFZWydDJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMTAsIEFSUkFZ WydDJ10pLCAgLS0gMm5kIChCQyl7Mn0gZG9uZSwgMXN0IHsyfSBkb25lLCAxc3QgKyBpdGVyIGRv bmUKKyAgICAgICAgKDExLCBBUlJBWVsnQSddKSwgIC0tIDJuZCArIGl0ZXIsIDFzdCB7Mn0sIEEK KyAgICAgICAgKDEyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDEzLCBBUlJBWVsnQyddKSwKKyAg ICAgICAgKDE0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDE1LCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDE2LCBBUlJBWVsnQSddKSwgIC0tIDJuZCArIGl0ZXIsIDJuZCB7Mn0sIEEKKyAgICAgICAg KDE3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDE4LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDE5 LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIwLCBBUlJBWVsnQyddKSwgIC0tIDJuZCArIGl0ZXIg ZG9uZQorICAgICAgICAoMjEsIEFSUkFZWydYJ10pICAgLS0gbm8gbWF0Y2gsICsgZW5kcworICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSAo QiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5Z KGZsYWdzKQorKTsKKworLS0gTXVsdGlwbGUgdW5ib3VuZGVkOiBBKyBCKyAoZmlyc3QgZWxlbWVu dCB1bmJvdW5kZWQgZW5hYmxlcyBhYnNvcnB0aW9uKQorV0lUSCB0ZXN0X211bHRpX3VuYm91bmRl ZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisg ICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9tdWx0aV91bmJvdW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29udGV4dCBMaWZlY3ljbGUKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CistLSBNdWx0aXBsZSBvdmVybGFwcGluZyBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykKK1dJ VEggdGVzdF9vdmVybGFwcGluZ19jb250ZXh0cyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3Zlcmxh cHBpbmdfY29udGV4dHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKworLS0gRmFpbGVkIGNvbnRleHQgY2xlYW51cCAoZWFybHkgZmFpbHVyZSkKK1dJVEgg dGVzdF9jb250ZXh0X2NsZWFudXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBQcnVuZWQgYXQgZmlyc3Qgcm93CisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBh ZnRlciByb3cgMgorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsn QiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbnRleHRfY2xlYW51cAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFBhcnRpdGlv biBlbmQgKGluY29tcGxldGUgY29udGV4dHMpCitXSVRIIHRlc3RfcGFydGl0aW9uX2VuZCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICAgICAg LS0gUGF0dGVybiByZXF1aXJlcyBCLCBidXQgcGFydGl0aW9uIGVuZHMKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9wYXJ0aXRpb25fZW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIENvbXBsZXRlZCBjb250ZXh0IGVuY291bnRlcmVk IGR1cmluZyBwcm9jZXNzaW5nCistLSBQYXR0ZXJuIChBIHwgQiBDIEQpOiBDdHgxIHRha2VzIGxv bmcgQi0+Qy0+RCBwYXRoLCB3aGlsZSBDdHgyIHRha2VzCistLSBzaG9ydCBBIHBhdGggYW5kIGNv bXBsZXRlcyBmaXJzdC4gTmV4dCByb3cgc2VlcyBDdHgyCistLSB3aXRoIHN0YXRlcz1OVUxMIGFu ZCBza2lwcyBpdC4KK1dJVEggdGVzdF9jb21wbGV0ZWRfY3R4IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJywgJ18nXSksCisgICAgICAgICgyLCBB UlJBWVsnQycsICdBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0QnLCAnXyddKSwKKyAgICAgICAg KDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb21w bGV0ZWRfY3R4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSB8IEIgQyBEKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBjb250ZXh0IGxpZmVjeWNsZSAoQSs/IEIgd2l0 aCBTS0lQIFRPIE5FWFQgUk9XKQorLS0gQSs/IGV4aXRzIGVhcmx5IGJ1dCBpZiBCIG5vdCBhdmFp bGFibGUsIGZhbGxzIGJhY2sgdG8gbG9vcC4KKy0tIENvbnRleHRzIG5vdCBhYnNvcmJlZCAocmVs dWN0YW50KSwgc28gbXVsdGlwbGUgc3Vydml2ZS4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfY29udGV4 dCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisg ICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3Jl bHVjdGFudF9jb250ZXh0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIEFkdmFuY2UgUGhhc2UgKEVwc2lsb24gVHJhbnNpdGlvbnMp CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworLS0gTmVzdGVkIGdyb3VwcyAoKEEgQikrKQorV0lUSCB0ZXN0X25lc3RlZF9n cm91cHMgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDYsIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfZ3JvdXBzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEEgQikrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpb24g YnJhbmNoZXMgKEEgKEJ8Q3xEKSBFKQorV0lUSCB0ZXN0X211bHRpX2FsdCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0UnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0Un XSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydEJ10pLAor ICAgICAgICAoOSwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9t dWx0aV9hbHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQyB8IEQpIEUpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0Qn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworCistLSBP cHRpb25hbCBWQVIgYXQgc3RhcnQgKEE/IEIgQykKK1dJVEggdGVzdF9vcHRpb25hbF92YXIgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksICAt LSBBIHNraXBwZWQKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksICAtLSBBIG1hdGNoZWQKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAo NSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vcHRpb25hbF92 YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBPyBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5lc3RlZCBhbHRlcm5hdGlvbiAoKEF8 QikgKEN8RCkpCitXSVRIIHRlc3RfbmVzdGVkX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10p LCAgLS0gQSBDCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydE J10pLCAgLS0gQSBECisgICAgICAgICg1LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZ WydDJ10pLCAgLS0gQiBDCisgICAgICAgICg3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDgsIEFS UkFZWydEJ10pICAgLS0gQiBECisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVk X2FsdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBB TlkoZmxhZ3MpCispOworCistLSBNaXhlZCBncmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKz8g QisgKHJlbHVjdGFudCBBLCBncmVlZHkgQikKKy0tIEEgZXhpdHMgYXMgZWFybHkgYXMgcG9zc2li bGUsIEIgY29uc3VtZXMgdGhlIHJlc3QgZ3JlZWRpbHkKK1dJVEggdGVzdF9taXhlZF9yZWx1Y3Rh bnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQidd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taXhlZF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErPyBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE9wdGlvbmFsIHJl bHVjdGFudCBncm91cDogKEEgQik/PyBDCistLSBSZWx1Y3RhbnQgZ3JvdXAgZW50cnkgdHJpZXMg c2tpcCBmaXJzdCwgYnV0IHRoZSBza2lwIHBhdGggbmVlZHMgQworLS0gYXQgcm93IDEgd2hpY2gg aXMgQSAtPiBza2lwIGZhaWxzLiBFbnRlciBwYXRoIHN1Y2NlZWRzOiBBKDEpIEIoMikgQygzKS4K K1dJVEggdGVzdF9vcHRpb25hbF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf b3B0aW9uYWxfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKT8/IEMpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5v bi1sZWFkaW5nIHJlbHVjdGFudCBvcHRpb25hbCBWQVI6IChCIEE/PyBDKQorLS0gUmVsdWN0YW50 IEE/PyBzaG91bGQgcHJlZmVyIHRvIHNraXAsIG1hdGNoaW5nIEIoMSkgQygyKSB3aXRoIEEgbGVm dAorLS0gdW5tYXRjaGVkIChtYXRjaF9lbmQgMikuICBUaGUgbGVhZGluZy9ncm91cCByZWx1Y3Rh bnQgY2FzZXMgYWJvdmUgZ28gdGhyb3VnaAorLS0gdGhlIGJlZ2luIHBhdGg7IHRoaXMgZXhlcmNp c2VzIHRoZSBub24tbGVhZGluZyBza2lwIHBhdGgsCistLSB3aGljaCBtdXN0IGhvbm9yIHJlbHVj dGFudCBvcmRlcmluZyB0b28uCitXSVRIIHRlc3Rfbm9ubGVhZGluZ19yZWx1Y3RhbnQgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAg ICAgICgyLCBBUlJBWVsnQScsICdDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ub25sZWFkaW5nX3JlbHVjdGFudAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQiBBPz8gQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IG91dGVyIHF1YW50aWZpZXIgb3ZlciBh IG51bGxhYmxlIHJlbHVjdGFudCBib2R5OiBTUUwvUlBSCistLSBzZW1hbnRpY3MgY2FsbCBmb3Ig dGhlIHNob3J0ZXN0IChlbXB0eSkgbWF0Y2guICBJbiB0aGUgY291bnQ8bWluIGNhc2UKKy0tIHRo ZSBlbmdpbmUgbXVzdCBwcmVmZXIgdGhlIGZhc3QtZm9yd2FyZCAoZXhpdCkgcGF0aCBmb3IgcmVs dWN0YW50CistLSBncm91cHMgYW5kIHN1cHByZXNzIGxvbmdlciBtYXRjaGVzIG9uY2UgZXhpdCBy ZWFjaGVzIEZJTiwgbWlycm9yaW5nIHRoZQorLS0gc2libGluZyBtaW48PWNvdW50PG1heCBicmFu Y2guICBUaGUgMi1sZXZlbCBncmVlZHkvcmVsdWN0YW50IG1hdHJpeCBwbHVzIGEKKy0tIG1pbj49 MiBib3VuZGFyeSBhbmQgc2luZ2xlLXF1YW50aWZpZXIgY29udHJvbHMgbG9jYWxpemUgdGhlIGJl aGF2aW91cjogb25seQorLS0gdGhlIGFsbC1yZWx1Y3RhbnQgY2FzZSAocnIpIHNob3VsZCBkaWZm ZXIuCitXSVRIIHQoaWQsIGlzYSkgQVMgKFZBTFVFUyAoMSwgdHJ1ZSksICgyLCB0cnVlKSwgKDMs IHRydWUpLCAoNCwgZmFsc2UpKQorU0VMRUNUIGlkLAorICAgICAgIGNvdW50KCopIE9WRVIgZ2cg IEFTIGdnLCAgICAgLS0gKEE/KSsgICAgICBncmVlZHkgLyBncmVlZHkKKyAgICAgICBjb3VudCgq KSBPVkVSIGdyICBBUyBnciwgICAgIC0tIChBPz8pKyAgICAgZ3JlZWR5IC8gcmVsdWN0YW50Cisg ICAgICAgY291bnQoKikgT1ZFUiByZyAgQVMgcmcsICAgICAtLSAoQT8pKz8gICAgIHJlbHVjdGFu dCAvIGdyZWVkeQorICAgICAgIGNvdW50KCopIE9WRVIgcnIgIEFTIHJyLCAgICAgLS0gKEE/Pykr PyAgICByZWx1Y3RhbnQgLyByZWx1Y3RhbnQKKyAgICAgICBjb3VudCgqKSBPVkVSIHJyMiBBUyBy cjIsICAgIC0tIChBPz8pezIsfT8gcmVsdWN0YW50LCBtaW4+PTIgYm91bmRhcnkKKyAgICAgICBj b3VudCgqKSBPVkVSIGNhICBBUyBjYSwgICAgIC0tIEE/PyAgICAgICAgc2luZ2xlIHJlbHVjdGFu dCBjb250cm9sCisgICAgICAgY291bnQoKikgT1ZFUiBjcyAgQVMgY3MgICAgICAtLSBBKj8gICAg ICAgIHNpbmdsZSByZWx1Y3RhbnQgY29udHJvbAorRlJPTSB0CitXSU5ET1cgZ2cgIEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg UEFUVEVSTiAoKEE/KSspICAgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICBnciAgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOICgoQT8/KSspICAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIHJnICBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKChBPykrPykgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAgcnIgIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoKEE/PykrPykgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICBycjIg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOICgoQT8/KXsyLH0/KSBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIGNh ICBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKEE/PykgICAgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAg Y3MgIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQSo/KSAgICAgICAgREVGSU5FIEEgQVMgaXNhKQorT1JERVIg QlkgaWQ7CisKKy0tIE5vbi1sZWFkaW5nIHJlbHVjdGFudCBvcHRpb25hbCBHUk9VUCB3aXRoIGEg Zm9sbG93ZXI6IChCIChBIFgpPz8gQykKKy0tIExpa2UgdGhlIFZBUiBjYXNlIGFib3ZlIGJ1dCBh IG11bHRpLWVsZW1lbnQgZ3JvdXA7IGl0IGdvZXMgdGhyb3VnaCB0aGUKKy0tIGJlZ2luIHBhdGgs IHdoaWNoIGFscmVhZHkgaG9ub3JzIHJlbHVjdGFudCBvcmRlcmluZy4KKy0tIFJlbHVjdGFudCAo QSBYKT8/IHNob3VsZCBza2lwLCBtYXRjaGluZyBCKDEpIEMoMiksIHdpdGggdGhlIGdyb3VwIHNr aXBwZWQKKy0tIHRvIHRoZSBmb2xsb3dpbmcgQyAobm90IHRvIEZJTikuCitXSVRIIHRlc3Rfbm9u bGVhZGluZ19yZWx1Y3RhbnRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsICdDJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ1gnXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25vbmxlYWRpbmdfcmVsdWN0YW50X2dyb3VwCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChCIChBIFgpPz8gQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBYIEFTICdYJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCisp OworCistLSBHcmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKyBCKz8gKGdyZWVkeSBBLCByZWx1 Y3RhbnQgQiBhdCBlbmQpCistLSBBIGNvbnN1bWVzIGdyZWVkaWx5LCBCKz8gZXhpdHMgdG8gRklO IGFmdGVyIG1pbmltdW0gbWF0Y2gKK1dJVEggdGVzdF9ncmVlZHlfdGhlbl9yZWx1Y3RhbnQgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZ3Jl ZWR5X3RoZW5fcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKz8pCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCispOworCistLSBSZWx1Y3RhbnQgb3B0aW9uYWwgZ3JvdXAgc2tpcC10by1GSU4K Ky0tIFdoZW4gYSByZWx1Y3RhbnQgb3B0aW9uYWwgZ3JvdXAncyBza2lwIHBhdGggcmVhY2hlcyBG SU4sIHRoZSBncm91cAorLS0gZW50cnkgcGF0aCBpcyBhYmFuZG9uZWQuCistLSBQYXR0ZXJuOiBD IChBIEIpPz8gLS0gYWZ0ZXIgQyBtYXRjaGVzLCB0aGUgcmVsdWN0YW50IGdyb3VwIChBIEIpPz8K Ky0tIHByZWZlcnMgdG8gc2tpcC4gIFNraXAgZ29lcyB0byBGSU4gKGdyb3VwIGlzIGxhc3QgZWxl bWVudCksIHNvCistLSB0aGUgbWF0Y2ggY29tcGxldGVzIHdpdGgganVzdCBDLgorV0lUSCB0ZXN0 X2JlZ2luX3NraXBfZmluIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydDJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJywnQSddKSwKKyAgICAgICAgKDUsIEFS UkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYmVnaW5fc2tpcF9maW4K K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChDIChBIEIpPz8pCisgICAgREVGSU5FCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTWF0Y2ggUGhhc2UKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCistLSBTaW1wbGUgVkFSIHdpdGggRU5EIG5leHQgKEEgQiBDIGFsbCBtaW49bWF4PTEp CitXSVRIIHRlc3Rfc2ltcGxlX3ZhciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3NpbXBsZV92YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gVkFSIG1heCBleGNlZWRlZCAoQXsyLDN9KQorV0lUSCB0ZXN0X21heF9leGNlZWRlZCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBNYXgg PSAzCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwgIC0tIEV4Y2VlZHMgbWF4LCBzdGF0ZSByZW1v dmVkCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X21heF9leGNlZWRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7MiwzfSBCKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKworLS0gTm9uLW1hdGNoaW5nIFZBUiAoREVGSU5FIGZhbHNlKQorV0lUSCB0 ZXN0X25vbl9tYXRjaGluZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydfJ10pLCAgLS0gQiBub3QgbWF0 Y2hlZCAoREVGSU5FIGZhbHNlKQorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0 LCBBUlJBWVsnQiddKSwgIC0tIEIgbWF0Y2hlZAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ub25fbWF0Y2hpbmcKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBGcmFtZSBCb3VuZGFyeSBIYW5kbGluZworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK Ky0tIExpbWl0ZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMyBGT0xMT1dJ TkcpCitXSVRIIHRlc3RfbGltaXRlZF9mcmFtZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIFdp dGhpbiAzIEZPTExPV0lORworICAgICAgICAoNSwgQVJSQVlbJ0InXSksICAtLSBCZXlvbmQgMyBG T0xMT1dJTkcgZnJvbSByb3cgMQorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9saW1pdGVkX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpCispOworCistLSBVbmJvdW5kZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKK1dJVEggdGVzdF91bmJvdW5kZWRfZnJh bWUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDYsIEFSUkFZWydCJ10pICAtLSBGYXIgZnJvbSBzdGFydCwgYnV0IHVuYm91bmRlZAorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3VuYm91bmRlZF9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBNYXRjaCBleGNlZWRzIGZy YW1lIGJvdW5kYXJ5CitXSVRIIHRlc3RfZnJhbWVfZXhjZWVkZWQgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgICAgIC0tIEZyYW1lIGVuZHMg YXQgcm93IDMgKDIgRk9MTE9XSU5HKSwgQiBuZXZlciBhcHBlYXJzCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfZnJhbWVfZXhjZWVkZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisKKy0tIEZyYW1lIGJvdW5kYXJ5IGZvcmNlZCBtaXNtYXRjaAorLS0gTGlt aXRlZCBmcmFtZSB3aXRoIGVub3VnaCByb3dzIHNvIHRoYXQgYSBjb250ZXh0J3MgZnJhbWUgYm91 bmRhcnkKKy0tIGlzIGV4Y2VlZGVkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcuCitXSVRIIHRlc3Rf ZnJhbWVfYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfZnJhbWVfYm91bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisKKy0tIFJlbHVjdGFudCB3aXRoIGxpbWl0ZWQgZnJhbWUgKEErPyBCIHdpdGggMiBGT0xM T1dJTkcpCistLSBSZWx1Y3RhbnQgZXhpdHMgZWFybHksIEIgbXVzdCBiZSB3aXRoaW4gZnJhbWUg Ym91bmRhcnkKK1dJVEggdGVzdF9yZWx1Y3RhbnRfZnJhbWUgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfZnJhbWUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSs/IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0YXRlIE1hbmFn ZW1lbnQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCistLSBEdXBsaWNhdGUgc3RhdGUgY3JlYXRpb24KK1dJVEggdGVzdF9k dXBsaWNhdGVfc3RhdGVzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJywgJ0InXSksICAtLSBCb3RoIEEgYW5kIEIgbWF0Y2ggKGNyZWF0ZXMgZHVw bGljYXRlIHN0YXRlcyB2aWEgZGlmZmVyZW50IHBhdGhzKQorICAgICAgICAoMiwgQVJSQVlbJ0Mn LCAnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydEJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9kdXBsaWNhdGVfc3RhdGVzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBC KSBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyks CisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IGR1cGxp Y2F0ZSBzdGF0ZSBoYW5kbGluZworLS0gKEErPyB8IEIrPykgY3JlYXRlcyBleGl0IGFuZCBsb29w IHN0YXRlczsgZXhpdCBwYXRocyBtYXkgY29udmVyZ2UKK1dJVEggdGVzdF9yZWx1Y3RhbnRfZGVk dXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En LCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMywgQVJSQVlb J18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfZGVkdXAKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOICgoQSs/IHwgQis/KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0t IExhcmdlIHBhdHRlcm4gKHN0cmVzcyBmcmVlIGxpc3QpCitXSVRIIHRlc3RfbGFyZ2VfcGF0dGVy biBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisg ICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydFJ10pLAorICAgICAg ICAoNiwgQVJSQVlbJ0YnXSksCisgICAgICAgICg3LCBBUlJBWVsnRyddKSwKKyAgICAgICAgKDgs IEFSUkFZWydIJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ0knXSksCisgICAgICAgICgxMCwgQVJS QVlbJ0onXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9sYXJnZV9wYXR0ZXJuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIEYgRyBIIEkgSikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlko ZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYgQVMgJ0Yn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRyBBUyAnRycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBI IEFTICdIJyA9IEFOWShmbGFncyksCisgICAgICAgIEkgQVMgJ0knID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgSiBBUyAnSicgPSBBTlkoZmxhZ3MpCispOworCistLSBSZWR1Y2VkIGZyYW1lIG1hcCBy ZWFsbG9jYXRpb24gKD4gMTAyNCByb3dzKQorV0lUSCB0ZXN0X21hcF9yZWFsbG9jIEFTICgKKyAg ICBTRUxFQ1QgaWQsIENBU0UgV0hFTiBpZCAlIDIgPSAxIFRIRU4gQVJSQVlbJ0EnXSBFTFNFIEFS UkFZWydCJ10gRU5EIEFTIGZsYWdzCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTEwMCkg QVMgaWQKKykKK1NFTEVDVCBjb3VudCgqKSwgbWluKG1hdGNoX3N0YXJ0KSwgbWF4KG1hdGNoX2Vu ZCkKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKKyAgICBGUk9NIHRlc3RfbWFwX3JlYWxsb2MKKyAgICBXSU5ET1cg dyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgICAgIFBBVFRFUk4gKEEgQikKKyAgICAgICAgREVGSU5FCisgICAgICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyAgICApCispIHN1YjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdGF0aXN0aWNzIGFuZCBEaWFnbm9z dGljcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKKy0tIE1hdGNoZWQgY29udGV4dHMKK1dJVEggdGVzdF9tYXRjaGVkIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWF0Y2hl ZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFBy dW5lZCBjb250ZXh0cyAoZmFpbGVkIGF0IGZpcnN0IHJvdykKK1dJVEggdGVzdF9wcnVuZWQgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAt LSBQcnVuZWQKKyAgICAgICAgKDIsIEFSUkFZWydfJ10pLCAgLS0gUHJ1bmVkCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfcHJ1bmVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKworLS0gTWlzbWF0Y2hlZCBjb250ZXh0cyAoZmFpbGVkIGFmdGVyIG11bHRp cGxlIHJvd3MpCitXSVRIIHRlc3RfbWlzbWF0Y2hlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10p LAorICAgICAgICAoMywgQVJSQVlbJ18nXSksICAtLSBNaXNtYXRjaGVkIGFmdGVyIDIgcm93cwor ICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21pc21hdGNoZWQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IG5vdCBhYnNvcmJlZCAo QSs/IHdpdGggU0tJUCBUTyBORVhUIFJPVykKKy0tIENvbXBhcmUgd2l0aCBncmVlZHkgQSsgYmVs b3c6IHJlbHVjdGFudCBpcyBub3QgYWJzb3JiYWJsZSwKKy0tIHNvIGFsbCBjb250ZXh0cyBzdXJ2 aXZlIGluZGVwZW5kZW50bHkuCitXSVRIIHRlc3RfcmVsdWN0YW50X3N0YXRzIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9yZWx1Y3RhbnRfc3RhdHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQWJzb3JiZWQg Y29udGV4dHMKK1dJVEggdGVzdF9hYnNvcmJlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3Ji ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpCispOworCistLSBTa2lwcGVkIGNvbnRleHRzIChTS0lQIFRPIE5FWFQgUk9X KQorV0lUSCB0ZXN0X3NraXBwZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkgIC0tIENvbXBsZXRlcyBt YXRjaCBzdGFydGluZyBhdCByb3cgMQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3Nr aXBwZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBRdWFudGlmaWVyIFJ1bnRpbWUgQmVoYXZpb3IKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBMYXJn ZSBjb3VudCBoYW5kbGluZyAoQXsxMDB9KQorV0lUSCB0ZXN0X2xhcmdlX2NvdW50IEFTICgKKyAg ICBTRUxFQ1QgaSBBUyBpZCwgQVJSQVlbJ0EnXSBBUyBmbGFncworICAgIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwNSkgaQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9sYXJnZV9jb3VudAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEF7MTAwfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOwor CistLSBVbmxpbWl0ZWQgcXVhbnRpZmllciAoQXsxMCx9KQorV0lUSCB0ZXN0X3VubGltaXRlZCBB UyAoCisgICAgU0VMRUNUIGkgQVMgaWQsIEFSUkFZWydBJ10gQVMgZmxhZ3MKKyAgICBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxNSkgaQorICAgIFVOSU9OIEFMTAorICAgIFNFTEVDVCAxNiwgQVJS QVlbJ0InXQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF91bmxpbWl0ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezEwLH0gQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE1pbiBib3VuZGFyeSAoQXszLDV9KQorV0lUSCB0 ZXN0X21pbl9ib3VuZGFyeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0EnXSksICAtLSBNaW49MyByZWFjaGVkLCBleGl0IHBhdGggYXZhaWxhYmxlCisgICAg ICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIE1hdGNoIGVuZHMgYXQgbWluCisgICAgICAgICg1LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAorICAgICAgICAoNywgQVJSQVlb J0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDksIEFSUkFZWydBJ10p LCAgLS0gQ291bnQ9NSwgbWF4IHJlYWNoZWQKKyAgICAgICAgKDEwLCBBUlJBWVsnQiddKSAgLS0g TWF0Y2ggZW5kcyBhdCBtYXgKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taW5fYm91 bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezMsNX0gQikKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7 CisKKy0tIE1heCBib3VuZGFyeSBleGNlZWRlZCAoQXszLDV9KQorV0lUSCB0ZXN0X21heF9ib3Vu ZGFyeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNiwgQVJSQVlbJ0EnXSksICAtLSBDb3VudD02ID4gbWF4PTUsIHJvdyAxIGNvbnRleHQg cmVtb3ZlZAorICAgICAgICAoNywgQVJSQVlbJ0InXSkgICAtLSBSb3cgMSBjb250ZXh0OiBubyBt YXRjaCAoZXhjZWVkZWQgbWF4KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21heF9i b3VuZGFyeQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7Myw1fSBCKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKworLS0gR3JlZWR5IHZzIHJlbHVjdGFudDogQSsgbWF0Y2hlcyBhbGwgcm93cywgQSs/IG1h dGNoZXMgbWluaW11bQorV0lUSCB0ZXN0X2dyZWVkeV92c19yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf Z3JlZWR5X3ZzX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisKKy0tIFNhbWUgZGF0YSwgcmVsdWN0YW50IEErPyBleGl0cyBhdCByb3cg MyB3aGVyZSBCIGlzIGZpcnN0IGF2YWlsYWJsZQorV0lUSCB0ZXN0X2dyZWVkeV92c19yZWx1Y3Rh bnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En LCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfZ3JlZWR5X3ZzX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSs/IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBSZWx1Y3RhbnQgZ3JvdXA6IChBIEIp Kz8gbWF0Y2hlcyBtaW5pbXVtIDEgaXRlcmF0aW9uCitXSVRIIHRlc3RfcmVsdWN0YW50X2dyb3Vw IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVs dWN0YW50X2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSs/KQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKQorKTsKKworLS0gQSs/IEIgKHJlbHVjdGFudCBwbHVzKTogZXhpdHMgQSBhdCBmaXJzdCBC IGF2YWlsYWJpbGl0eQorLS0gKFNhbWUgc2NlbmFyaW8gYXMgZ3JlZWR5LXZzLXJlbHVjdGFudCBj b21wYXJpc29uIGFib3ZlOyByZXRhaW5lZCBmb3IKKy0tIHN0YW5kYWxvbmUgcXVhbnRpZmllciBj b3ZlcmFnZSBhbG9uZ3NpZGUgQXsxLDN9PyBhbmQgQXsyLDN9PyBiZWxvdykKK1dJVEggdGVzdF9y ZWx1Y3RhbnRfcGx1cyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAg ICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQicsJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3JlbHVjdGFudF9wbHVzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKz8gQikKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisKKy0tIEF7MSwzfT8gQiAocmVsdWN0YW50IGJvdW5kZWQpOiBz YW1lIGRhdGEsIGJvdW5kZWQgcXVhbnRpZmllcgorV0lUSCB0ZXN0X3JlbHVjdGFudF9ib3VuZGVk IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywn XyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB JywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVs dWN0YW50X2JvdW5kZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7MSwzfT8gQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisKKy0tIEF7Myw1fT8gQiAocmVsdWN0YW50IGJvdW5kZWQgbWlkLWJhbmQp OiB0aGUgVkFSLWxldmVsIGNvdW50CistLSBjeWNsZXMgdGhyb3VnaCAzLCA0LCA1IHdpdGhpbiBh IHNpbmdsZSBtYXRjaCBhdHRlbXB0LiAgRXhlcmNpc2VzCistLSBhIHJlbHVjdGFudCBib3VuZGVk IHF1YW50aWZpZXIgdGhhdCBhYnNvcmJhYmlsaXR5IGFuYWx5c2lzIGV4Y2x1ZGVzCistLSAocmVs dWN0YW50IHF1YW50aWZpZXJzIGFyZSBuZXZlciBhYnNvcmJhYmxlLCBzbyBBIHN0YXlzCistLSBu b24tYWJzb3JiYWJsZSkuCitXSVRIIHRlc3RfcmVsdWN0YW50X21pZF9iYW5kIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsn QiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9taWRfYmFuZAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQXszLDV9PyBCKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gTmVzdGVkIHF1YW50aWZpZXIgZmxhdHRlbmluZyBtdXN0IG5vdCB3aWRlbiB0aGUgbWF0Y2hp bmcgbGFuZ3VhZ2UgKEgtMSkuCistLSAoQXtrLH0pKiB3aXRoIGsgPj0gMiByZWFjaGVzIHJlcGV0 aXRpb24gY291bnRzIHswfSBVTklPTiBbaywgSU5GKTsgdGhlIGdhcAorLS0gMS4uay0xIGlzIHVu cmVhY2hhYmxlLCBzbyBpdCBtdXN0IE5PVCBjb2xsYXBzZSB0byBBKi4gIEFuIGlzb2xhdGVkIHNp bmdsZSBBCistLSBtdXN0IHlpZWxkIGFuIEVNUFRZIG1hdGNoIChjb3VudCAwKSwgbm90IGEgbGVu Z3RoLTEgbWF0Y2guCitXSVRIIHRlc3RfbmVzdGVkX3F1YW50X3ZhciBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwgIC0tIGlzb2xhdGVkIEE6 IChBezIsfSkqIG1hdGNoZXMgZW1wdHkgaGVyZSwgbm90IDEKKyAgICAgICAgKDIsIEFSUkFZWydf J10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwg IC0tIHJ1biBvZiAyOiBtYXRjaGVkCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZCwKKyAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfY291bnQKK0ZST00g dGVzdF9uZXN0ZWRfcXVhbnRfdmFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQXsyLH0pKikKKyAg ICBERUZJTkUgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBTYW1lIGZvciBhIEdST1VQ IGNoaWxkOiAoKEEgQil7Mix9KSogbXVzdCBub3QgY29sbGFwc2UgdG8gKEEgQikqLgorLS0gQW4g aXNvbGF0ZWQgc2luZ2xlIChBIEIpIHBhaXIgbXVzdCB5aWVsZCBhbiBFTVBUWSBtYXRjaCAoY291 bnQgMCkuCitXSVRIIHRlc3RfbmVzdGVkX3F1YW50X2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLCAgLS0gaXNvbGF0ZWQgKEEgQikg cGFpcjogbWF0Y2hlcyBlbXB0eSBoZXJlCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydfJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1 LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAorICAgICAgICAoNywgQVJS QVlbJ0InXSksICAtLSBydW4gb2YgMiBwYWlyczogbWF0Y2hlZAorICAgICAgICAoOCwgQVJSQVlb J18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQsCisgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIG1h dGNoX2NvdW50CitGUk9NIHRlc3RfbmVzdGVkX3F1YW50X2dyb3VwCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoKEEgQil7Mix9KSopCisgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwgQiBB UyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBhdGhvbG9naWNhbCBQYXR0ZXJu IFJ1bnRpbWUgUHJvdGVjdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIENvbXBsZXggbmVzdGVkIG51bGxhYmxl ICgoQSogQiopKikgLSBSdW50aW1lIHByb3RlY3Rpb24KK1dJVEggdGVzdF9jb21wbGV4X25lc3Rl ZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisg ICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY29tcGxleF9uZXN0ZWQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO ICgoQSogQiopKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5lc3RlZCBudWxsYWJsZSB3 aXRoIHF1YW50aWZpZXIgKChBezAsM30pKikKK1dJVEggdGVzdF9uZXN0ZWRfcXVhbnRpZmllciBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3Rl ZF9xdWFudGlmaWVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEF7MCwzfSkqKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBudWxsYWJs ZTogQSo/IChwcmVmZXJzIDAgbWF0Y2hlcykKKy0tIEEqPyBhbHdheXMgdGFrZXMgc2tpcCBwYXRo ICgwIGl0ZXJhdGlvbnMgcHJlZmVycmVkKQorV0lUSCB0ZXN0X3JlbHVjdGFudF9udWxsYWJsZSBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVj dGFudF9udWxsYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEqPyBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBSdW50aW1lIEJlaGF2aW9yCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworLS0gTXVsdGktYnJhbmNoIGFsdGVybmF0aW9uIChBIChCfEN8RHxFKSBGKQorV0lUSCB0ZXN0 X211bHRpX2JyYW5jaCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0YnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydD J10pLAorICAgICAgICAoNiwgQVJSQVlbJ0YnXSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDgsIEFSUkFZWydEJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ0YnXSksCisgICAg ICAgICgxMCwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMSwgQVJSQVlbJ0UnXSksCisgICAgICAg ICgxMiwgQVJSQVlbJ0YnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0aV9i cmFuY2gKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQyB8IEQgfCBFKSBGKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdE JyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg RiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOworCistLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZp ZXJzIChBKyB8IEIrIHwgQyspCitXSVRIIHRlc3RfYWx0X3F1YW50aWZpZXJzIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsn QyddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0MnXSks CisgICAgICAgICg5LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X2FsdF9xdWFudGlmaWVycworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIHwgQisgfCBDKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gYWx0 UHJpb3JpdHkgcmVwbGFjZW1lbnQgKEEgQiBDIHwgRCkKKy0tIEQgYnJhbmNoIChoaWdoZXIgYWx0 UHJpb3JpdHkpIG1hdGNoZXMgZmlyc3QgYXQgcm93IDEsCistLSB0aGVuIEEgQiBDIGJyYW5jaCAo bG93ZXIgYWx0UHJpb3JpdHkpIHJlcGxhY2VzIGl0IGF0IHJvdyAzLgorV0lUSCB0ZXN0X2FsdF9y ZXBsYWNlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJywgJ0QnXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0MnLCAnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcmVwbGFjZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEg QiBDIHwgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworCistLSBBTFQgbGV4aWNhbCBv cmRlciB0YWtlcyBwcmlvcml0eSBvdmVyIGdyZWVkeSAobG9uZ2VyIG1hdGNoKS4KKy0tIFJvdyAx IG1hdGNoZXMgYm90aCBBIGFuZCBCOyBBIHdpbnMgYnkgbGV4aWNhbCBvcmRlciAobWF0Y2ggMS0x KS4KK1dJVEggdGVzdF9hbHRfbGV4aWNhbF9vcmRlciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksICAtLSBBIGFuZCBCIGJvdGggbWF0 Y2gKKyAgICAgICAgKDIsIEFSUkFZWydfJywnQyddKSAgIC0tIG9ubHkgQyBtYXRjaGVzICh3b3Vs ZCBjb250aW51ZSBCIEMpCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X2xleGlj YWxfb3JkZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiBDKSspCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFMVCB3aXRoIHJl bHVjdGFudDogKEErPyB8IEIrKSAtIEEgYnJhbmNoIGlzIHJlbHVjdGFudCwgQiBpcyBncmVlZHku CistLSBSb3cgMSBtYXRjaGVzIGJvdGggQSBhbmQgQi4gQSs/IGV4aXRzIGltbWVkaWF0ZWx5ICht YXRjaCAxLTEpLgorV0lUSCB0ZXN0X2FsdF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0InLCdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEr PyB8IEIrKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE9wdGlvbmFsIGZpcnN0IGJyYW5j aCBpbiBBTFQgd2l0aCBxdWFudGlmaWVyOiAoQT8gfCBCKXsxLDJ9CistLSBGaXJzdCBicmFuY2gg QT8gZXhpdCBwYXRoIG1heSBsb29wIGJhY2sgdG8gQUxUIGFuZCB0cmlnZ2VyIGN5Y2xlCistLSBk ZXRlY3Rpb24gZHVyaW5nIERGUy4gIEFsbCBicmFuY2hlcyBtdXN0IHJlY2VpdmUgY29ycmVjdCBj b3VudHMuCitXSVRIIHRlc3RfYWx0X29wdF9maXJzdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9hbHRfb3B0X2ZpcnN0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBPyB8IEIpezEsMn0pKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTWl4ZWQgQS9CIHJvd3MgYWNyb3NzIGl0ZXJhdGlvbnMg b2YgKEE/IHwgQil7MSwyfQorV0lUSCB0ZXN0X2FsdF9vcHRfbWl4ZWQgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X2FsdF9vcHRfbWl4ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKEE/IHwg Qil7MSwyfSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBSZWx1Y3RhbnQgdmFyaWFudDog KEE/PyB8IEIpezEsMn0KK1dJVEggdGVzdF9hbHRfb3B0X3JlbHVjdGFudCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIs IEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9hbHRfb3B0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQT8/ IHwgQil7MSwyfSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBPdmVybGFwcGluZyBtYXRj aDogQSBCIEMgRCBFIHwgQiBDIEQgfCBDIEQgRSBGIChTS0lQIFBBU1QgTEFTVCBST1cpCitXSVRI IHRlc3Rfb3ZlcmxhcDEgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsn RSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIHwgQiBDIEQgfCBDIEQgRSBGKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFT ICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOworCistLSBTYW1lIHdpdGggU0tJUCBUTyBORVhU IFJPVzogdGhyZWUgb3ZlcmxhcHBpbmcgbWF0Y2hlcworV0lUSCB0ZXN0X292ZXJsYXAxIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAg KDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSksCisgICAgICAgICg2LCBB UlJBWVsnRiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDEKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB IEIgQyBEIEUgfCBCIEMgRCB8IEMgRCBFIEYpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBD IEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFOWShmbGFn cykKKyk7CisKKy0tIExvbmdlciBwYXR0ZXJuIGZhaWxzLCBzaG9ydGVyIHN1cnZpdmVzOiBBKyBC IEMgRCBFIHwgQisgQworV0lUSCB0ZXN0X292ZXJsYXAxYiBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwK KyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMWIKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIgQyBEIEUgfCBCKyBDKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFn cyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTG9uZyBCIHNlcXVl bmNlIHdpdGggZGlmZmVyZW50IGVuZGluZ3M6IEEgQisgQyB8IEIrIEQKK1dJVEggdGVzdF9vdmVy bGFwMiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0In XSksCisgICAgICAgICg0LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSks CisgICAgICAgICg2LCAgQVJSQVlbJ0MnXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0InXSksCisg ICAgICAgICg4LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAg ICAgICgxMCwgQVJSQVlbJ0QnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXAyCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSBCKyBDIHwgQisgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworCist LSBHcmVlZHkgd2l0aCBsYXRlIGZhaWx1cmUgKCJiZXRyYXlhbCIpOiBBIEIgQysgRCB8IEEgQgor V0lUSCB0ZXN0X2JldHJheWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYmV0cmF5 YWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKyBEIHwgQSBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncykKKyk7CisKKy0tIE11bHRpcGxlIFRSVUUgcGVyIHJvdzogb3ZlcmxhcHBpbmcgcGF0 dGVybiB2YXJpYWJsZXMKK1dJVEggdGVzdF9tdWx0aV90cnVlIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJywnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJywnRCddKSwKKyAgICAgICAgKDQs IEFSUkFZWydEJywnRSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydFJywnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfbXVsdGlfdHJ1ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFT ICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gRGlhZ29uYWwgcGF0dGVybiB3aXRoIHNoaWZ0ZWQgbXVsdGktVFJVRSBvdmVybGFwCitXSVRI IHRlc3RfZGlhZ29uYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InLCdBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0MnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnLCdDJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ18nLCdEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kaWFnb25hbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEEgQiBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0g KChBIHwgQikgQykrIC0gYWx0ZXJuYXRpb24gaW5zaWRlIGdyb3VwIHdpdGggb3V0ZXIgcXVhbnRp ZmllcgorV0lUSCB0ZXN0X2FsdF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKSwKKyAgICAgICAg KDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfZ3JvdXAKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKCgoQSB8IEIpIEMpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBEZWVwIE5lc3RlZCBHcm91cHMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCistLSBUaHJlZS1sZXZlbCBuZXN0aW5nICgoKChBIEIpKykrKSspCitXSVRIIHRlc3RfZGVl cF9uZXN0aW5nIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSks CisgICAgICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZGVlcF9uZXN0aW5nCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoKCgoQSBCKSspKykrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTXVsdGlwbGUgZ3Jv dXBzIGluIG5lc3RpbmcgKCgoQSBCKSAoQyBEKSkrKQorV0lUSCB0ZXN0X25lc3RlZF9zZXF1ZW50 aWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwK KyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAo OCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg5LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X25lc3RlZF9zZXF1ZW50aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChB IEIpIChDIEQpKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTmVzdGVkIEVO RC0+RU5EIG1heCByZWFjaGVkCistLSBJbm5lciBncm91cCAoQSBCKXsyfSByZWFjaGVzIG1heD0y IC0+IGV4aXRzIHRvIG91dGVyIEVORAorV0lUSCB0ZXN0X2VuZF9uZXN0ZWRfbWF4IEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0In XSksCisgICAgICAgICg5LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2VuZF9uZXN0ZWRfbWF4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezJ9KSspCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpCispOworCistLSBOZXN0ZWQgRU5ELT5FTkQgYmV0d2VlbiBtaW4vbWF4Cist LSBJbm5lciBncm91cCAoQSBCKXsxLDN9IGV4aXRzIGJldHdlZW4gbWluL21heCAtPiBvdXRlciBF TkQgY291bnQrKworV0lUSCB0ZXN0X2VuZF9uZXN0ZWRfbWlkIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10p LAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg5LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2VuZF9uZXN0 ZWRfbWlkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezEsM30pKykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cykKKyk7CisKKy0tIE5lc3RlZCByZWx1Y3RhbnQgZ3JvdXAgKChBIEIpKz8pIHdpdGggZm9sbG93 aW5nIGVsZW1lbnQgQworLS0gSW5uZXIgZ3JvdXAgZXhpdHMgYWZ0ZXIgbWluaW11bSAxIGl0ZXJh dGlvbgorV0lUSCB0ZXN0X25lc3RlZF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisg ICAgICAgICg1LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25l c3RlZF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSs/IEMpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIChBIEIpezJ9 IC0gZ3JvdXAgd2l0aCBleGFjdCBxdWFudGlmaWVyCitXSVRIIHRlc3RfZ3JvdXBfZXhhY3QgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfZ3JvdXBfZXhhY3QKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpezJ9KQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKworLS0gTmVzdGVkIEVORC0+RU5EIGZhc3QtZm9yd2FyZAorLS0gV2hlbiBh biBpbm5lciBncm91cCBoYXMgYSBudWxsYWJsZSBib2R5IGFuZCBjb3VudCA8IG1pbiwgdGhlCist LSBmYXN0LWZvcndhcmQgcGF0aCBleGl0cyB0aHJvdWdoIHRoZSBvdXRlciBFTkQsIGluY3JlbWVu dGluZworLS0gdGhlIG91dGVyIGdyb3VwJ3MgY291bnQuCistLSBQYXR0ZXJuOiAoKEE/KXsyLDN9 KXsyLDN9IC0tIG5lc3RlZCBncm91cHMsIG5laXRoZXIgY29sbGFwc2VzCistLSBiZWNhdXNlIHRo ZSBvcHRpbWl6ZXIgY2Fubm90IHNhZmVseSBtdWx0aXBseSBub24tZXhhY3QgcXVhbnRpZmllcnMu CistLSBEYXRhIGhhcyBubyBBIHJvd3MsIGZvcmNpbmcgYWxsLWVtcHR5IGl0ZXJhdGlvbnMgdmlh IGZhc3QtZm9yd2FyZC4KK1dJVEggdGVzdF9uZXN0ZWRfZmYgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfbmVzdGVkX2ZmCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBPyl7MiwzfSl7MiwzfSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFNLSVAgT3B0aW9ucyAoUnVudGltZSkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBTS0lQIFBBU1QgTEFTVCBST1cg KG5vbi1vdmVybGFwcGluZyBtYXRjaGVzKQorV0lUSCB0ZXN0X3NraXBfcGFzdCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3Rfc2tpcF9wYXN0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBTS0lQIFRPIE5FWFQg Uk9XIChvdmVybGFwcGluZyBtYXRjaGVzKQorV0lUSCB0ZXN0X3NraXBfbmV4dCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3Rfc2tpcF9uZXh0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gU0tJUCBkaWZmZXJlbmNl IHZlcmlmaWNhdGlvbgorV0lUSCB0ZXN0X3NraXBfZGlmZiBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgJ1NLSVAgUEFTVCcgQVMgbW9kZSwgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NraXBf ZGlmZgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKQorVU5J T04gQUxMCitTRUxFQ1QgJ1NLSVAgTkVYVCcgQVMgbW9kZSwgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NraXBfZGlmZgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKykKK09SREVSIEJZIG1vZGUsIGlkOworCist LSBSZWx1Y3RhbnQgU0tJUCBjb21wYXJpc29uOiBBKz8gd2l0aCBTS0lQIFBBU1QgdnMgU0tJUCBO RVhUCitXSVRIIHRlc3RfcmVsdWN0YW50X3NraXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUICdTS0lQIFBBU1QnIEFTIG1vZGUsIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRf c2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/KQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncykKKykKK1VOSU9OIEFMTAorU0VMRUNUICdTS0lQIE5FWFQnIEFTIG1v ZGUsIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9yZWx1Y3RhbnRfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispCitPUkRFUiBCWSBtb2RlLCBpZDsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBJTklUSUFMIE1vZGUgKFJ1bnRpbWUpCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gRXhwbGljaXQgSU5J VElBTCAoYWZ0ZXIgQUZURVIgTUFUQ0ggU0tJUCwgcGVyIHRoZSBncmFtbWFyKTsgc2FtZSBhcyB0 aGUgZGVmYXVsdAorV0lUSCB0ZXN0X2luaXRpYWxfbW9kZSBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZAorICAgICAg ICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkCisgICAgICAgICg1LCBBUlJBWVsnQSddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2luaXRpYWxfbW9kZQorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIElOSVRJ QUwKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpCispOworCistLSBEZWZhdWx0IG1vZGUgKGluY2x1ZGUgYWxsIHJvd3MpCitXSVRIIHRl c3RfZGVmYXVsdF9tb2RlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkLCBidXQgaW5jbHVkZWQKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnXyddKSwgIC0tIFVubWF0Y2hlZCwgYnV0IGluY2x1ZGVkCisgICAgICAgICg1LCBBUlJBWVsn QSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2RlZmF1bHRfbW9kZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cykKKyk7CisKKy0tIE1vZGUgZXF1aXZhbGVuY2UgdmVyaWZpY2F0aW9uOiBleHBsaWNpdCBJTklU SUFMIGVxdWFscyB0aGUgZGVmYXVsdCBtb2RlCitXSVRIIHRlc3RfbW9kZV9kaWZmIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgJ0lOSVRJQUwnIEFTIG1vZGUsIENPVU5UKCopIEFTIHJvd19j b3VudAorRlJPTSAoCisgICAgU0VMRUNUIGlkIEZST00gdGVzdF9tb2RlX2RpZmYKKyAgICBXSU5E T1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgICAgIElOSVRJQUwKKyAgICAgICAgUEFUVEVSTiAoQSkKKyAgICAg ICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorICAgICkKKykgc3ViCitVTklPTiBBTEwK K1NFTEVDVCAnREVGQVVMVCcgQVMgbW9kZSwgQ09VTlQoKikgQVMgcm93X2NvdW50CitGUk9NICgK KyAgICBTRUxFQ1QgaWQgRlJPTSB0ZXN0X21vZGVfZGlmZgorICAgIFdJTkRPVyB3IEFTICgKKyAg ICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICAgICAgUEFUVEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KQorICAgICkKKykgc3ViCitPUkRFUiBCWSBtb2RlOworCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEZyYW1lIEJvdW5k YXJ5IFZhcmlhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCistLSBWZXJ5IGxpbWl0ZWQgZnJhbWUgKDEgRk9MTE9X SU5HKQorV0lUSCB0ZXN0X29uZV9mb2xsb3dpbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwg IC0tIFdpdGhpbiAxIEZPTExPV0lORworICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBCZXlv bmQgMSBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vbmVfZm9sbG93aW5nCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFT ICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE1lZGl1bSBmcmFtZSAoMTAgRk9MTE9XSU5HKQor V0lUSCB0ZXN0X3Rlbl9mb2xsb3dpbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1 LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAorICAgICAgICAoNywgQVJS QVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDksIEFSUkFZWydB J10pLAorICAgICAgICAoMTAsIEFSUkFZWydBJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydCJ10p LCAgLS0gV2l0aGluIDEwIEZPTExPV0lORyBmcm9tIHJvdyAxCisgICAgICAgICgxMiwgQVJSQVlb J0EnXSksCisgICAgICAgICgxMywgQVJSQVlbJ0InXSkgICAtLSBCZXlvbmQgMTAgRk9MTE9XSU5H IGZyb20gcm93IDEKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywK KyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF90ZW5fZm9sbG93aW5n CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gRXhhY3QgYm91 bmRhcnkgbWF0Y2gKK1dJVEggdGVzdF9leGFjdF9ib3VuZGFyeSBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pICAgLS0gRXhhY3RseSBhdCA0IEZPTExPV0lORyAo ZnJhbWUgZW5kKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2V4YWN0X2JvdW5kYXJ5 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBOIEZPTExPV0lO RyArIFNLSVAgVE8gTkVYVCBST1c6IG92ZXJsYXBwaW5nIG1hdGNoZXMgYm91bmRlZCBieSBmcmFt ZQorLS0gUm93IDE6IGZyYW1lIFsxLDRdLCBBKDEtMykgQig0KSAtPiBtYXRjaAorLS0gUm93IDI6 IGZyYW1lIFsyLDVdLCBBKDItMykgQig0KSAtPiBtYXRjaAorLS0gUm93IDM6IGZyYW1lIFszLDZd LCBBKDMpIEIoNCkgLT4gbWF0Y2gKKy0tIFJvdyA1OiBmcmFtZSBbNSw2XSwgQSg1KSBCKDYpIC0+ IG1hdGNoCitXSVRIIHRlc3Rfbl9za2lwX25leHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAg ICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3Rfbl9za2lwX25leHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMyBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisKKy0tIEZyYW1lIGV4YWN0bHkgMSByb3cgc2hvcnQgb2YgcG90ZW50 aWFsIG1hdGNoCistLSBGcm9tIHJvdyAxOiBBIEEgQSBCIG5lZWRzIDQgcm93cyBidXQgZnJhbWUg aG9sZHMgMyAtPiBubyBtYXRjaAorLS0gRnJvbSByb3cgMjogQSBBIEIgZml0cyBpbiAzLXJvdyBm cmFtZSAtPiBtYXRjaAorV0lUSCB0ZXN0X2ZyYW1lX29uZV9zaG9ydCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9mcmFtZV9vbmVfc2hvcnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3BlY2lhbCBQYXJ0 aXRpb24gQ2FzZXMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorCistLSBFbXB0eSBwYXJ0aXRpb24gKDAgcm93cykKK1dJVEgg dGVzdF9lbXB0eV9wYXJ0aXRpb24gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCAyLCBBUlJBWVsnXyddKSAgLS0g RGlmZmVyZW50IHBhcnRpdGlvbgorICAgICkgQVMgdChpZCwgcGFydCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIHBhcnQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X2VtcHR5X3BhcnRpdGlvbgorV0hFUkUgcGFydCA9IDk5ICAtLSBObyByb3dzIG1hdGNo CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHBhcnQKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFNpbmdsZSByb3cgcGFy dGl0aW9uCitXSVRIIHRlc3Rfc2luZ2xlX3JvdyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X3NpbmdsZV9yb3cKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFsbCByb3dzIGZhaWwgbWF0Y2hpbmcg KGFsbCBERUZJTkUgZmFsc2UpCitXSVRIIHRlc3RfYWxsX2ZhaWwgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfYWxsX2ZhaWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyBmYWxzZSAgLS0gQWxsIHJvd3MgZmFpbAorKTsKKworLS0gUGFydGl0aW9uIGVu ZCB3aXRoIGFic29yYmFibGUgcGF0dGVybgorLS0gU0tJUCBQQVNUIExBU1QgUk9XICsgdW5ib3Vu ZGVkIGZyYW1lICsgYWxsIHJvd3MgbWF0Y2ggQQorLS0gVHJpZ2dlcnMgYWJzb3JiIGluICFyb3dF eGlzdHMgcGF0aCBhdCBwYXJ0aXRpb24gYm91bmRhcnkuCitXSVRIIHRlc3RfYWJzb3JiX3BhcnRp dGlvbl9lbmQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB J10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9wYXJ0aXRpb25fZW5kCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIERFRklORSBTcGVjaWFsIENhc2VzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gVW5kZWZpbmVkIHZhcmlhYmxlIGluIERFRklORQorV0lUSCB0ZXN0X3VuZGVmaW5lZF92YXIg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnWCddKSwgIC0tIEIgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRv IFRSVUUKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSks CisgICAgICAgICg1LCBBUlJBWVsnXyddKSwgIC0tIEIgZGVmYXVsdHMgdG8gVFJVRSwgYnV0IG5v IGZsYWdzCisgICAgICAgICg2LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X3VuZGVmaW5lZF92YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAtLSBCIGlzIHVuZGVm aW5lZCwgZGVmYXVsdHMgdG8gVFJVRQorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7 CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBEeW5hbWljIEZsYWdzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gUGFy dGlhbCBhYnNvcmJhYmxlIHBhdHRlcm4gKChBKykgQikKK1dJVEggdGVzdF9wYXJ0aWFsX2Fic29y YmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3BhcnRpYWxfYWJzb3JiYWJsZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKChBKykgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIER5bmFtaWMgZmxh ZyB1cGRhdGUgKChBKykgfCBCKQorV0lUSCB0ZXN0X2R5bmFtaWNfZmxhZ3MgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJS QVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydC J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZHluYW1pY19mbGFncworV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKChBKykgfCBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTm9uLWFi c29yYmFibGUgY29udGV4dCBkdXJpbmcgYWJzb3JwdGlvbgorLS0gUGF0dGVybiAoQSBCKSsgQzog QSxCIGluIGFic29yYmFibGUgZ3JvdXAsIEMgaXMgbm90LgorLS0gV2hlbiBFTkQgZXhpdHMgdG8g QywgdGhlIGNsb25lZCBjb250ZXh0IGJlY29tZXMgbm9uLWFic29yYmFibGUuCitXSVRIIHRlc3Rf bm9uX2Fic29yYmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsn QyddKSwKKyAgICAgICAgKDYsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3Rfbm9uX2Fic29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSBB YnNvcnB0aW9uIHNraXBwZWQgd2hlbiBubyBhYnNvcmJhYmxlIHN0YXRlIHJlbWFpbnMKKy0tIFBh dHRlcm4gKEEgQikrIEMgRCB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVworLS0gQWZ0ZXIgcmVhY2hp bmcgQyAobm9uLWFic29yYmFibGUpLCBubyBhYnNvcmJhYmxlIHN0YXRlIHJlbWFpbnMuCistLSBP biBuZXh0IHJvdyAoRCksIHRoZSBlYXJseSByZXR1cm4gZmlyZXMuCitXSVRIIHRlc3RfYWJzb3Jw dGlvbl9lYXJseV9yZXR1cm4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJB WVsnQyddKSwKKyAgICAgICAgKDYsIEFSUkFZWydEJ10pLAorICAgICAgICAoNywgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcnB0aW9uX2Vhcmx5X3JldHVy bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMgRCkKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisg ICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxh Z3MpCispOworCistLSBDb3ZlcmFnZSBmYWlsdXJlOiBvbGRlciBjYW4ndCBjb3ZlciBuZXdlcidz IHN0YXRlcworLS0gUGF0dGVybiBBKyB8IEIrIHdpdGggU0tJUCBQQVNUIExBU1QgUk9XLgorLS0g Um93IDE6IG9ubHkgQSAtPiBDdHgxIHRha2VzIEEgYnJhbmNoIG9ubHkgKEIgZmFpbHMpLgorLS0g Um93IDI6IEEgYW5kIEIgLT4gQ3R4MiB0YWtlcyBib3RoIGJyYW5jaGVzLgorLS0gQWJzb3JwdGlv bjogQ3R4MSBoYXMgQSBidXQgbm8gQiAtPiBjYW4ndCBjb3ZlciBDdHgyJ3MgQiBzdGF0ZSAtPiBm YWlscy4KK1dJVEggdGVzdF9jb3ZlcmFnZV9mYWlsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywgJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsn QScsICdCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCAnXyddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJywgJ18nXSksCisgICAgICAgICg1LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfY292ZXJhZ2VfZmFpbAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgfCBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYiBza2lwcyBjb21wbGV0 ZWQgY29udGV4dCAob2xkZXItPnN0YXRlcz09TlVMTCkKKy0tIFBhdHRlcm4gQSsgfCBCKyB3aXRo IFNLSVAgUEFTVCBMQVNUIFJPVy4KKy0tIFJvdyAxOiBBIG9ubHkgLT4gQ3R4MSB0YWtlcyBBIGJy YW5jaC4gUm93IDI6IEIgb25seSAtPiBDdHgxIEEgZmFpbHMgKGNvbXBsZXRlZCkuCistLSBDdHgy IHRha2VzIEIgYnJhbmNoLiBBYnNvcnB0aW9uOiBDdHgxIHN0YXRlcz09TlVMTCAtPiBza2lwLgor V0lUSCB0ZXN0X29sZGVyX2NvbXBsZXRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X29sZGVyX2NvbXBsZXRlZAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSsgfCBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYiBza2lwcyBhIGNv bnRleHQgd2l0aCBubyBhYnNvcmJhYmxlIHN0YXRlCistLSBQYXR0ZXJuIEErIHwgQiBDIHdpdGgg U0tJUCBQQVNUIExBU1QgUk9XIChvbmx5IEErIGJyYW5jaCBhYnNvcmJhYmxlKS4KKy0tIFJvdyAx OiBCIG9ubHkgLT4gQ3R4MSB0YWtlcyBCIGJyYW5jaCAobm9uLWFic29yYmFibGUpLCBhZHZhbmNl cyB0byBDLgorLS0gUm93IDI6IEMsQSAtPiBDdHgxIEMgbWF0Y2hlcyAobm8gYWJzb3JiYWJsZSBz dGF0ZSkuIEN0eDIgdGFrZXMgQSAoYWJzb3JiYWJsZSkuCistLSBBYnNvcnB0aW9uOiBDdHgxIGhh cyBubyBhYnNvcmJhYmxlIHN0YXRlIC0+IHNraXAuCitXSVRIIHRlc3Rfb2xkZXJfbm9uX2Fic29y YmFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0InLCAnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJywgJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnXycsICdBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nLCAnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X29sZGVyX25vbl9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyB8IEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IGJyYW5jaCBpbiBBTFQgbm90IGFic29yYmFi bGU6IChBKz8pIHwgQgorLS0gQSs/IGlzIHJlbHVjdGFudCBzbyBub3QgYWJzb3JiYWJsZS4gQ29t cGFyZSB3aXRoIGdyZWVkeSAoQSspIHwgQiBhYm92ZS4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfYWx0 X2Fic29ycHRpb24gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9hbHRfYWJzb3JwdGlv bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKChBKz8pIHwgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gWmVyby1Db25zdW1wdGlvbiBDeWNsZSBEZXRlY3Rpb24KKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCist LSBDeWNsZSBwcmV2ZW50aW9uIGF0IGNvdW50ID4gMDogKEEqKSogaW5uZXIgc2tpcCBjeWNsZXMg YXQgY291bnQ9MworV0lUSCB0ZXN0X2N5Y2xlX25vbnplcm8gQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkg IC0tIElubmVyIEEqIG1hdGNoZXMgMCwgY3ljbGVzIGF0IGNvdW50PTMKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9jeWNsZV9ub256ZXJvCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEqKSop CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQ3lj bGUgd2l0aCBtaXhlZCBudWxsYWJsZXM6IChBKiBCKikqIG11bHRpcGxlIG51bGxhYmxlIHBhdGhz CitXSVRIIHRlc3RfY3ljbGVfbWl4ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9jeWNsZV9taXhlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKiBC KikqKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdGFuZGFyZCBDbGF1c2Ug NzogRm9ybWFsIFBhdHRlcm4gTWF0Y2hpbmcgUnVsZXMKKy0tIElTTy9JRUMgMTkwNzUtNSwgQ2xh dXNlIDcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMi4yIEFsdGVybmF0aW9uOiBmaXJzdCBhbHRl cm5hdGl2ZSBpcyBwcmVmZXJyZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSAoQSB8IEIpOiBBIHByZWZlcnJlZCBv dmVyIEIgd2hlbiBib3RoIGNvdWxkIG1hdGNoCistLSBSb3cgMSBoYXMgYm90aCBBIGFuZCBCIGZs YWdzOiBBIHNob3VsZCBiZSBjaG9zZW4gKGZpcnN0IGFsdGVybmF0aXZlKQorV0lUSCB0ZXN0X2Fs dF9wcmVmZXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJB WVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9wcmVmZXIKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOICgoQSB8IEIpKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gKEF7MSwy fSB8IEJ7MiwzfSk6IGFsbCBBLW1hdGNoZXMgYmVmb3JlIGFsbCBCLW1hdGNoZXMKKy0tIFN0YW5k YXJkIGV4YW1wbGU6IHByZWZlcm1lbnQgb3JkZXIgaXMgQUEsIEEsIEJCQiwgQkIKKy0tIFJvd3Mg MS0yIGhhdmUgYm90aCBBIGFuZCBCOiBncmVlZHkgQXsxLDJ9IHNob3VsZCBtYXRjaCAxLTIKK1dJ VEggdGVzdF9hbHRfcXVhbnRpZmllZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSks CisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRf cXVhbnRpZmllZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBezEsMn0gfCBCezIsM30pKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKQorKTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA3LjIuMyBDb25jYXRlbmF0aW9uOiBsZXhpY29n cmFwaGljIG9yZGVyaW5nCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0gKChBIHwgQikgKEMgfCBEKSk6IHByZWZlcm1l bnQgb3JkZXIgaXMgQUMsIEFELCBCQywgQkQKKy0tIFJvdyAxIG1hdGNoZXMgQSBhbmQgQiwgUm93 IDIgbWF0Y2hlcyBDIGFuZCBECistLSBQcmVmZXJyZWQgbWF0Y2g6IEEgdGhlbiBDIChmaXJzdCBh bHRlcm5hdGl2ZXMgaW4gYm90aCBwb3NpdGlvbnMpCitXSVRIIHRlc3RfY29uY2F0X2xleCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQycsJ0QnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9jb25jYXRfbGV4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAg IEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gKChBIHwgQikgQyk6IGZpcnN0IGFsdCAo QSkgZmFpbHMsIHNlY29uZCBhbHQgKEIpIHN1Y2NlZWRzCistLSBUZXN0cyBiYWNrdHJhY2tpbmc6 IHJvdyAxIGhhcyBvbmx5IEIsIHJvdyAyIGhhcyBDCitXSVRIIHRlc3RfY29uY2F0X2JhY2t0cmFj ayBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisg ICAgICAgICg0LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Nv bmNhdF9iYWNrdHJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIEMpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g Ny4yLjQgUXVhbnRpZmljYXRpb246IGdyZWVkeS9yZWx1Y3RhbnQsIGxleGljb2dyYXBoaWMgPiBs ZW5ndGgKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCistLSBWezIsNH0gZ3JlZWR5OiBsb25nZXIgbWF0Y2ggcHJlZmVycmVk CitXSVRIIHRlc3RfcXVhbnRfZ3JlZWR5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfcXVhbnRfZ3JlZWR5CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB ezIsNH0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gVnsyLDR9PyByZWx1Y3RhbnQ6IHNob3J0ZXIgbWF0Y2ggcHJlZmVycmVkCitXSVRIIHRlc3Rf cXVhbnRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfcXVhbnRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNH0/ KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tICgo QXxCKXsxLDJ9KSBncmVlZHk6IGxleGljb2dyYXBoaWMgPiBsZW5ndGgKKy0tIFN0YW5kYXJkIGV4 YW1wbGU6IHByZWZlcm1lbnQgQUEsIEFCLCBBLCBCQSwgQkIsIEIKKy0tIFNpbmdsZSBBIHByZWZl cnJlZCBvdmVyIEItc3RhcnRpbmcgbG9uZ2VyIG1hdGNoCitXSVRIIHRlc3RfcXVhbnRfbGV4X2dy ZWVkeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3F1YW50X2xleF9ncmVlZHkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIp ezEsMn0pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gKChBfEIpezEsMn0/KSByZWx1Y3Rh bnQ6IGxleGljb2dyYXBoaWMgPiBsZW5ndGgKKy0tIFN0YW5kYXJkIGV4YW1wbGU6IHByZWZlcm1l bnQgQSwgQUEsIEFCLCBCLCBCQSwgQkIKKy0tIFNpbmdsZSBBIHByZWZlcnJlZCBvdmVyIGFueSBC LXN0YXJ0aW5nIG1hdGNoCitXSVRIIHRlc3RfcXVhbnRfbGV4X3JlbHVjdGFudCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAg ICAgICgyLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50 X2xleF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIpezEsMn0/KSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4yLjYgQW5jaG9ycyAobm90IHlldCBp bXBsZW1lbnRlZCAtIHN5bnRheCBlcnJvciBleHBlY3RlZCkKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSBeIGFuY2hv cjogbm90IHlldCBzdXBwb3J0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSAoU0VMRUNU IDEgQVMgdikgdAorV0lORE9XIHcgQVMgKE9SREVSIEJZIHYgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoXiBBKSBERUZJTkUgQSBB UyBUUlVFKTsKKworLS0gJCBhbmNob3I6IG5vdCB5ZXQgc3VwcG9ydGVkCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3IEZST00gKFNFTEVDVCAxIEFTIHYpIHQKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSB2 IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgJCkgREVGSU5FIEEgQVMgVFJVRSk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4yLjggSW5maW5p dGUgcmVwZXRpdGlvbnMgb2YgZW1wdHkgbWF0Y2hlcworLS0gKFBlcmwgbG93ZXItYm91bmQgc3Rv cHBpbmcgcnVsZSkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gU3RhbmRhcmQgZXhhbXBsZXMgZnJvbSA3LjIuODoKKy0t ICAgKEE/KXswLDN9OiBhbGxvd2VkIHN0cmluZ3MgaW5jbHVkZSBTVFIwMD0oKSwgU1RSMDE9KEEp LCBTVFIwMj0oZW1wdHkpLAorLS0gICAgICAgICAgICAgIFNUUjAzPShBQSksIFNUUjA0PShBLGVt cHR5KSwgU1RSMDc9KEFBQSksIFNUUjA4PShBQSxlbXB0eSkKKy0tICAgKEE/KXsxLDN9OiBzYW1l IGFzIHswLDN9IGJ1dCBTVFIwMCBleGNsdWRlZCAobWluPTEgbm90IG1ldCkKKy0tICAgKEE/KXsy LDN9OiBTVFIwMy0wNiAobGVuIDIpIGFuZCBTVFIwNywwOCwxMSwxMiAobGVuIDMpIGFyZSB2YWxp ZAorLS0gICAgICAgICAgICAgIFNUUjA2PShTVFJFLFNUUkUpIElTIHZhbGlkIGJlY2F1c2Ugbm9u LWZpbmFsIFNUUkUgYXQKKy0tICAgICAgICAgICAgICBwb3NpdGlvbiAxIGZpbGxzIHRoZSBsb3dl ciBib3VuZAorCistLSAoQT8/KSpCOiBTdGFuZGFyZCA3LjIuOCBpbnRyb2R1Y3RvcnkgZXhhbXBs ZQorLS0gIm1hdGNoZWQgYWdhaW5zdCBhIHNlcXVlbmNlIG9mIHJvd3MgZm9yIHdoaWNoIHRoZSBv bmx5IGZlYXNpYmxlCistLSAgbWF0Y2hpbmcgaXM6IEIiCistLSBBPz8gaXMgcmVsdWN0YW50LCBw cmVmZXJzIGVtcHR5LiAqIGlzIGdyZWVkeSBidXQgUGVybCBydWxlIHN0b3BzCistLSBhZnRlciBl bXB0eSBtYXRjaCB3aXRoIG1pbig9MCkgc2F0aXNmaWVkLgorLS0gRXhwZWN0ZWQ6IGVhY2ggQiBy b3cgbWF0Y2hlcyBhbG9uZSAoQT8/IGVtcHR5LCAqIHN0b3BzLCBCIG1hdGNoZXMpCitXSVRIIHRl c3RfZW1wdHlfcmVsdWN0YW50X3N0YXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZW1wdHlf cmVsdWN0YW50X3N0YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8/KSogQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tIChBPyl7MCwzfTogbWluPTAsIG51bGxhYmxlIGlubmVyLgorLS0gQSBu ZXZlciBtYXRjaGVzIGJ1dCBBPyBtYXRjaGVzIGVtcHR5LCBzYXRpc2Z5aW5nIG1pbj0wIGltbWVk aWF0ZWx5LgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzIChvbmUgcGVyIHJvdyk7 IGZpcnN0X3ZhbHVlIC8gbGFzdF92YWx1ZQorLS0gYXJlIE5VTEwgYmVjYXVzZSB0aGUgd2luZG93 IGZyYW1lIGZvciBhbiBlbXB0eSBtYXRjaCBoYXMgbm8gcm93cy4KK1dJVEggdGVzdF83MjhfbWlu MCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbWluMAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KChBPyl7MCwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCisp OworCistLSAoQT8pezEsM306IG1pbj0xLCBudWxsYWJsZSBpbm5lci4KKy0tIEEgbmV2ZXIgbWF0 Y2hlczsgb25lIGVtcHR5IGl0ZXJhdGlvbiBzYXRpc2ZpZXMgbWluPTEuCistLSBORkEgcmVwb3J0 cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVyIGVtcHR5IGZy YW1lLgorV0lUSCB0ZXN0XzcyOF9taW4xIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAg ICAgICgzLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0XzcyOF9t aW4xCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsxLDN9KQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIChBPyl7MiwzfTogbWluPTIsIG51bGxhYmxl IGlubmVyLiAgUGVyIElTTy9JRUMgMTkwNzUtNSA3LjIuOCBTVFIwNiA9IChTVFJFIFNUUkUpCist LSBpcyB2YWxpZDogdHdvIGVtcHR5IGl0ZXJhdGlvbnMgc2F0aXNmeSBtaW49Mi4KKy0tIE5GQSBy ZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlczsgZmlyc3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1w dHkgZnJhbWUuCitXSVRIIHRlc3RfNzI4X21pbjIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf NzI4X21pbjIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gKEE/KXsyLDN9IG1peGVkOiBzb21l IHJvd3MgbWF0Y2ggQSwgc29tZSBkb24ndAorLS0gUm93cyAxLTI6IEEgbWF0Y2hlcywgZ3JlZWR5 IHRha2VzIDIgLT4gbWluIHNhdGlzZmllZCAocmVhbCBtYXRjaCkKKy0tIFJvdyAzOiBBIGRvZXNu J3QgbWF0Y2gsIHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWluPTIgKGxlbmd0aC0wIG1h dGNoKQorLS0gUm93IDQ6IEEgbWF0Y2hlcyAxIHJlYWwgaXRlciArIDEgZmYgZW1wdHkgZXhpdCAt PiBtYXRjaCA0LTQKK1dJVEggdGVzdF83MjhfbWluMl9taXhlZCBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQSdd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0XzcyOF9taW4yX21peGVkCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncykKKyk7CisKKy0tIChBPyBCPyl7MiwzfTogbXVsdGktZWxlbWVudCBudWxsYWJsZSBi b2R5IHdpdGggcmVhbCBtYXRjaGVzCistLSBCb2R5IEE/IEI/IGlzIG51bGxhYmxlIChib3RoIG9w dGlvbmFsKSwgYnV0IEEgYW5kIEIgRE8gbWF0Y2ggcm93cy4KKy0tIFJlYWwgKG5vbi1lbXB0eSkg aXRlcmF0aW9ucyBsb29wIGJhY2sgbm9ybWFsbHk7IGZhc3QtZm9yd2FyZCBvbmx5CistLSBmaXJl cyBhcyBhIHBhcmFsbGVsIGV4aXQgcGF0aCAoRVhJVCBPTkxZLCBubyBncmVlZHkvcmVsdWN0YW50 IGxvb3ApLgorLS0gRGF0YTogYWx0ZXJuYXRpbmcgQSwgQiByb3dzICg2IHJvd3MpCistLSBHcmVl ZHk6IGVhY2ggcm93IGdldHMgdGhlIGxvbmdlc3QgbWF0Y2ggZnJvbSBpdHMgc3RhcnRpbmcgcG9z aXRpb24uCistLSBSb3cgMTogMyBpdGVycyAoQUAxLEJAMikoQUAzLEJANCkoQUA1LEJANikgLT4g MS02CistLSBSb3cgNTogMSByZWFsIGl0ZXIgKyAxIGZmIGVtcHR5IGV4aXQgLT4gNS02CitXSVRI IHRlc3RfNzI4X211bHRpX2JvZHkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfNzI4X211bHRpX2JvZHkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8pezIs M30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSAoQT8gQj8pezIsM306IHB1cmUgZW1wdHkg Ym9keSAobm90aGluZyBtYXRjaGVzIEEgb3IgQikuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0aC0w IG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVyIGVtcHR5IGZyYW1lLgorV0lUSCB0 ZXN0XzcyOF9tdWx0aV9lbXB0eSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbXVsdGlf ZW1wdHkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp CispOworCistLSAoQT8gQj8pezIsM306IG1peGVkIHJlYWwgYW5kIGVtcHR5IGl0ZXJhdGlvbnMK Ky0tIFJvdyAxOiBpdGVyMSByZWFsIChBQDEsQkAyKSwgaXRlcjIgYXQgcm93IDMgZW1wdHkgLT4g ZmYgZXhpdCwgbWF0Y2ggMS0yCistLSBSb3cgMzogQyBkb2Vzbid0IG1hdGNoIEEgb3IgQiAtPiBO VUxMCistLSBSb3cgNDogaXRlcjEgcmVhbCAoQUA0LEJANSksIGl0ZXIyIGF0IGVuZCBlbXB0eSAt PiBmZiBleGl0LCBtYXRjaCA0LTUKK1dJVEggdGVzdF83MjhfbXVsdGlfbWl4ZWQgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0XzcyOF9tdWx0aV9taXhlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyBCPyl7 MiwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4zIFBhdHRlcm4gbWF0 Y2hpbmcgaW4gdGhlb3J5IGFuZCBwcmFjdGljZQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tIFN0YW5kYXJkJ3Mgd29y a2VkIGV4YW1wbGU6IEE/IEIrIHdpdGggc3BlY2lmaWMgZGF0YQorLS0gUHJlZmVybWVudCBvcmRl cjogKEEpKEJCQiksIChBKShCQiksIChBKShCKSwgKCkoQkJCKSwgKCkoQkIpLCAoKShCKQorLS0g Um93IDE6IEEgY29uZGl0aW9uIChwcmljZT4xMDApIGlzIGZhbHNlIC0+IEEgZmFpbHMKKy0tIEJh Y2t0cmFjazogZW1wdHkgQT8sIHRoZW4gQisgZnJvbSByb3cgMQorLS0gRXhwZWN0ZWQ6IHJvd3Mg MS0zIG1hdGNoIGFzIEIgKEE/IHRha2VzIGVtcHR5IG1hdGNoKQorV0lUSCB0ZXN0XzczX2V4YW1w bGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgNjApLAorICAg ICAgICAoMiwgNzApLAorICAgICAgICAoMywgNDApCisgICAgKSBBUyB0KGlkLCBwcmljZSkKKykK K1NFTEVDVCBpZCwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfNzNfZXhhbXBsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQT8gQispCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgcHJpY2UgPiAxMDAsCisgICAgICAgIEIgQVMgVFJVRQorKTsKLS0gCjIu NTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0008-Row-pattern-recognition-patch-tests-expected.patch" Content-Disposition: attachment; filename="v49-0008-Row-pattern-recognition-patch-tests-expected.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlgku7 RnJvbSBiZjQyZTc4YTM3MzY2ZTVkZTZhZmE0NGYwNTQ0MDhkOTc3MGVhZWQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDgvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoICh0ZXN0czogZXhwZWN0ZWQpLgoK LS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICAgICAgICAgICAgfCAzOTA5 ICsrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgICAgICAg IHwgNzIzOCArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf ZXhwbGFpbi5vdXQgICAgIHwgNjA3NSArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IHwgMTUyMSArKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9uZmEub3V0ICAgICAgICAgfCA0OTE2ICsrKysrKysrKysrCiA1IGZpbGVz IGNoYW5nZWQsIDIzNjU5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dAoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzAy YzlkNzVhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jw ci5vdXQKQEAgLTAsMCArMSwzOTA5IEBACistLQorLS0gVGVzdCBmb3Igcm93IHBhdHRlcm4gcmVj b2duaXRpb246IFdJTkRPVyBjbGF1c2UgaW50ZWdyYXRpb24gYW5kCistLSBzY2VuYXJpbyB0ZXN0 cyB1c2luZyBzeW50aGV0aWMgc3RvY2sgZGF0YS4KKy0tCistLSBQYXJzZXIvcGxhbm5lciB0ZXN0 czogcnByX2Jhc2Uuc3FsCistLSBORkEgZW5naW5lIHRlc3RzOiBycHJfbmZhLnNxbAorLS0gRVhQ TEFJTiBzdGF0aXN0aWNzIHRlc3RzOiBycHJfZXhwbGFpbi5zcWwKKy0tCitcZ2V0ZW52IGFic19z cmNkaXIgUEdfQUJTX1NSQ0RJUgorLS0gU3ludGhldGljIHN0b2NrIGRhdGEgZm9yIFJQUiBwYXR0 ZXJuIG1hdGNoaW5nIHRlc3RzCitDUkVBVEUgVEFCTEUgcnByX3N0b2NrICgKKyAgICAgICBwYXJ0 X2lkIGludGVnZXIsCisgICAgICAgcm4gICAgICBpbnRlZ2VyLAorICAgICAgIHByaWNlICAgbnVt ZXJpYygxMCwzKSwKKyAgICAgICB2b2x1bWUgIGJpZ2ludCwKKyAgICAgICBvcGVuICAgIG51bWVy aWMoMTAsMyksCisgICAgICAgbG93ICAgICBudW1lcmljKDEwLDMpLAorICAgICAgIGhpZ2ggICAg bnVtZXJpYygxMCwzKQorKTsKK1xzZXQgZmlsZW5hbWUgOmFic19zcmNkaXIgJy9kYXRhL3N0b2Nr LmRhdGEnCitDT1BZIHJwcl9zdG9jayBGUk9NIDonZmlsZW5hbWUnOworQU5BTFlaRSBycHJfc3Rv Y2s7CitDUkVBVEUgVEVNUCBUQUJMRSBzdG9jayAoCisgICAgICAgY29tcGFueSBURVhULAorICAg ICAgIHRkYXRlIERBVEUsCisgICAgICAgcHJpY2UgSU5URUdFUgorKTsKK0lOU0VSVCBJTlRPIHN0 b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDEnLCAxMDApOworSU5TRVJUIElOVE8g c3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMicsIDIwMCk7CitJTlNFUlQgSU5U TyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAzJywgMTUwKTsKK0lOU0VSVCBJ TlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDQnLCAxNDApOworSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNScsIDE1MCk7CitJTlNF UlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA2JywgOTApOworSU5T RVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNycsIDExMCk7CitJ TlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA4JywgMTMwKTsK K0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDknLCAxMjAp OworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0xMCcsIDEz MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTAxJywg NTApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMics IDIwMDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0w MycsIDE1MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0w Ny0wNCcsIDE0MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAy My0wNy0wNScsIDE1MDApOworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAn MjAyMy0wNy0wNicsIDYwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywg JzIwMjMtMDctMDcnLCAxMTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnky JywgJzIwMjMtMDctMDgnLCAxMzAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBh bnkyJywgJzIwMjMtMDctMDknLCAxMjAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2Nv bXBhbnkyJywgJzIwMjMtMDctMTAnLCAxMzAwKTsKK1NFTEVDVCAqIEZST00gc3RvY2s7CisgY29t cGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAKKyBjb21wYW55MSB8IDA3LTAyLTIw MjMgfCAgIDIwMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwCisgY29tcGFueTEgfCAw Ny0wNC0yMDIzIHwgICAxNDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MAorIGNvbXBh bnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAKKyBjb21wYW55MiB8IDA3LTAx LTIwMjMgfCAgICA1MAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwCisgY29tcGFueTIg fCAwNy0wMy0yMDIzIHwgIDE1MDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMAorIGNv bXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAg NjAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMAorIGNvbXBhbnkyIHwgMDctMDgtMjAy MyB8ICAxMzAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAKKyBjb21wYW55MiB8IDA3 LTEwLTIwMjMgfCAgMTMwMAorKDIwIHJvd3MpCisKKy0tCistLSBCYXNpYyBwYXR0ZXJuIG1hdGNo aW5nIHdpdGggUFJFVi9ORVhUCistLQorLS0gYmFzaWMgdGVzdCB1c2luZyBQUkVWCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3Nl Y29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklU SUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVF LAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihw cmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8 IGxhc3RfdmFsdWUgfCBudGhfc2Vjb25kIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3 LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE0MCB8IDA3LTAyLTIwMjMK KyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAg ICAgICAgOTAgfCAgICAgICAgMTIwIHwgMDctMDctMjAyMworIGNvbXBhbnkxIHwgMDctMDctMjAy MyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0w OC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8 IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBh bnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDE0MDAg fCAwNy0wMi0yMDIzCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1 MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMg fCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTIwMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55 MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNv bXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg CisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJFVi4gVVAgYXBw ZWFycyB0d2ljZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwg MikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBB UlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKyBVUCspCisg REVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisg IERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAg fCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IG50aF9zZWNvbmQgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAg ICAgICAgMTUwIHwgMDctMDItMjAyMworIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMg fCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDUt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAgICAxMzAgfCAwNy0wNy0yMDIz CisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAg ICAgICAgIDUwIHwgICAgICAgMTUwMCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MiB8IDA3LTAyLTIw MjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDct MDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIg fCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21w YW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAor IGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgNjAgfCAgICAgICAxMzAw IHwgMDctMDctMjAyMworIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisoMjAgcm93cykKKworLS0gYmFzaWMg dGVzdCB1c2luZyBQUkVWLiBVc2UgJyonCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRo X3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5E T1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVAq IERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYo cHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAg IHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfc2Vjb25k IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgMTAwIHwgICAgICAgIDE0MCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMg fCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDMt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAw Ny0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55 MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgMTUwIHwgICAgICAgICA5MCB8IDA3LTA2 LTIwMjMKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAg fCAgICAgICAgMTIwIHwgMDctMDgtMjAyMworIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwg ICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTEwLTIw MjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwgMDctMDItMjAyMwor IGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgIDE1 MDAgfCAgICAgICAgIDYwIHwgMDctMDYtMjAyMworIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAg IDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNy0yMDIz IHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEyMDAgfCAwNy0wOC0yMDIzCisgY29tcGFu eTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisoMjAgcm93cykKKworLS0gYmFzaWMgdGVzdCB1c2luZyBQUkVWLiBVc2UgJz8nCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBs YXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMg bnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNv bXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVA/IERPV04rKQorIERFRklORQorICBTVEFSVCBB UyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwg UFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92 YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfc2Vjb25kIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55 MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE0MCB8IDA3LTAy LTIwMjMKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAg ICAgICAgMTUwIHwgICAgICAgICA5MCB8IDA3LTA2LTIwMjMKKyBjb21wYW55MSB8IDA3LTA2LTIw MjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTIwIHwgMDctMDgtMjAyMwor IGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAg NTAgfCAgICAgICAxNDAwIHwgMDctMDItMjAyMworIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAy MDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIz IHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0 LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgIDE1MDAgfCAgICAgICAgIDYwIHwgMDctMDYtMjAy MworIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAg ICAgIDEyMDAgfCAwNy0wOC0yMDIzCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisoMjAgcm93cykKKworLS0gdGVz dCB1c2luZyBhbHRlcm5hdGlvbiAofCkgd2l0aCBzZXF1ZW5jZQorU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElO SVRJQUwKKyBQQVRURVJOIChTVEFSVCAoVVAgfCBET1dOKSkKKyBERUZJTkUKKyAgU1RBUlQgQVMg VFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBS RVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFs dWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAg ICAgICAxMDAgfCAgICAgICAgMjAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgMTUwIHwgICAgICAgIDE0MAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAx NTAgfCAgICAgICAgIDE1MCB8ICAgICAgICAgOTAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAg ICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8 ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwCisgY29tcGFueTEgfCAwNy0wOC0yMDIz IHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIw MjMgfCAgIDEyMCB8ICAgICAgICAgMTIwIHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMTAt MjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0w MS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDIwMDAKKyBjb21wYW55MiB8IDA3 LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgIDE1MDAgfCAgICAgICAxNDAwCisgY29tcGFueTIg fCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgICA2MAorIGNvbXBh bnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEzMDAKKyBj b21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgIDEyMDAgfCAgICAgICAxMzAw CisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVzaW5nIGFsdGVybmF0aW9uICh8KSB3aXRoIGdyb3Vw IHF1YW50aWZpZXIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5E T1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgKFVQ IHwgRE9XTikrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBS RVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAg fCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMzAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAg IDUwIHwgICAgICAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwg IDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMg fCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIHRlc3Qg dXNpbmcgbmVzdGVkIGFsdGVybmF0aW9uCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9N IHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRF Uk4gKFNUQVJUICgoVVAgRE9XTikgfCBGTEFUKSspCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUs CisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHBy aWNlKSwKKyAgRkxBVCBBUyBwcmljZSA9IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0 ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkx IHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTUwCisgY29tcGFu eTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNv bXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgICAgIDkwCisg Y29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAg MTIwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8 ICAgICAgIDE1MDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAg MTQwMCB8ICAgICAgICAgNjAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAg ICAgICAgMTEwMCB8ICAgICAgIDEyMDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVzaW5n IGdyb3VwIHdpdGggcXVhbnRpZmllcgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBz dG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJO ICgoVVAgRE9XTikrKQorIERFRklORQorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBE T1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwg cHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0y MDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAy LTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAgIDE1MAorIGNvbXBhbnkxIHwgMDct MDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAw Ny0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8 IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgMTUwIHwgICAgICAgICA5MAorIGNvbXBhbnkx IHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgMTMwIHwgICAgICAgIDEyMAorIGNv bXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIwMDAgfCAgICAgICAx NTAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgIDE1MDAgfCAg ICAgICAgIDYwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgIDEz MDAgfCAgICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIHRlc3QgdXNpbmcgYWJzb2x1dGUg dGhyZXNob2xkIHZhbHVlcyAobm90IHJlbGF0aXZlIFBSRVYpCistLSBISUdIOiBwcmljZSA+IDE1 MCwgTE9XOiBwcmljZSA8IDEwMCwgTUlEOiBuZXV0cmFsIHJhbmdlCitTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21w YW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg SU5JVElBTAorIFBBVFRFUk4gKExPVyBNSUQqIEhJR0gpCisgREVGSU5FCisgIExPVyBBUyBwcmlj ZSA8IDEwMCwKKyAgTUlEIEFTIHByaWNlID49IDEwMCBBTkQgcHJpY2UgPD0gMTUwLAorICBISUdI IEFTIHByaWNlID4gMTUwCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmly c3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAy MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAg IDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8 ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIz IHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA2LTIw MjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDct MjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0w OC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3 LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwg MDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDIwMDAKKyBjb21wYW55 MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgNjAgfCAgICAgICAxMTAw CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHRocmVzaG9sZC1iYXNlZCBwYXR0ZXJuIHdp dGggYWx0ZXJuYXRpb24KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoTE9XIChN SUQgfCBISUdIKSspCisgREVGSU5FCisgIExPVyBBUyBwcmljZSA8IDEwMCwKKyAgTUlEIEFTIHBy aWNlID49IDEwMCBBTkQgcHJpY2UgPD0gMTUwLAorICBISUdIIEFTIHByaWNlID4gMTUwCispOwor IGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVl IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAg IDkwIHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAg fCAgICAgICAgICA1MCB8ICAgICAgIDE1MDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwg IDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAy MyB8ICAgIDYwIHwgICAgICAgICAgNjAgfCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0wNy0y MDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA4 LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAw Ny0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQor CistLSBiYXNpYyB0ZXN0IHdpdGggZml4ZWQtbGVuZ3RoIHBhdHRlcm4gKEEgQSBBID0gZXhhY3Rs eSAzKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRU RVJOIChBIEEgQSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+PSAxNDAgQU5EIHByaWNlIDw9IDE1 MAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGNvdW50IAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwg ICAxMDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wNC0y MDIzIHwgICAxNDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNy0yMDIzIHwgICAxMTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMw IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8 ICAgIDUwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQt MjAyMyB8ICAxNDAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMw MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgIDAKKygyMCByb3dzKQorCistLSB0ZXN0IHVz aW5nIHtufSBxdWFudGlmaWVyIChBIEEgQSBzaG91bGQgYmUgb3B0aW1pemVkIHRvIEF7M30pCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2Nr CisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEF7 M30pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPj0gMTQwIEFORCBwcmljZSA8PSAxNTAKKyk7Cisg Y29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAg MTQwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAy MyB8ICAgMTEwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MTAtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAg MTQwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIw MjMgfCAgMTEwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAwCisoMjAgcm93cykKKworLS0gdGVzdCB1c2luZyB7bix9 IHF1YW50aWZpZXIgKDIgb3IgbW9yZSkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNv dW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZ IGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQXsyLH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAx MDAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgMTAwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICA0Cisg Y29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQt MjAyMyB8ICAgMTQwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDctMjAyMyB8ICAgMTEwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEz MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMg fCAgICA1MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgNAor IGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0 LTIwMjMgfCAgMTQwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAwCisoMjAgcm93cykKKworLS0gdGVzdCB1 c2luZyB7bixtfSBxdWFudGlmaWVyICgyIHRvIDQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLCBjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJ VElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEF7Miw0fSkKKyBERUZJTkUKKyAgQSBBUyBw cmljZSA+IDEwMAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGNvdW50IAor LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0w MS0yMDIzIHwgICAxMDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwg ICAgIDQKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAg MTUwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgNAorIGNvbXBhbnkxIHwgMDctMDgtMjAy MyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAw CisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8 ICAgICA0CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAg MTUwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTA4LTIw MjMgfCAgMTMwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgIDAKKygyMCByb3dzKQorCist LSB0ZXN0IHByZWZpeC9zdWZmaXggbWVyZ2Ugb3B0aW1pemF0aW9uIHdpdGggYm91bmRlZCBxdWFu dGlmaWVyCistLSBQYXR0ZXJuIEEgQiAoQSBCKXsxLDJ9IEEgQiBzaG91bGQgYmUgb3B0aW1pemVk IHRvIChBIEIpezMsNH0KK0NSRUFURSBURU1QIFRBQkxFIHJwcl90IChpZCBpbnQsIHZhbCB0ZXh0 KTsKK0lOU0VSVCBJTlRPIHJwcl90IFZBTFVFUworICAoMSwnQScpLCgyLCdCJyksCisgICgzLCdB JyksKDQsJ0InKSwKKyAgKDUsJ0EnKSwoNiwnQicpLAorICAoNywnQScpLCg4LCdCJyksCisgICg5 LCdYJyk7CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2NvdW50CitG Uk9NIHJwcl90CitXSU5ET1cgdyBBUyAoCisgIE9SREVSIEJZIGlkCisgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoQSBCIChBIEIpezEsMn0gQSBCKQorICBE RUZJTkUKKyAgICBBIEFTIHZhbCA9ICdBJywKKyAgICBCIEFTIHZhbCA9ICdCJworKTsKKyBpZCB8 IHZhbCB8IG1hdGNoX2NvdW50IAorLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCBBICAg fCAgICAgICAgICAgOAorICAyIHwgQiAgIHwgICAgICAgICAgIDAKKyAgMyB8IEEgICB8ICAgICAg ICAgICA2CisgIDQgfCBCICAgfCAgICAgICAgICAgMAorICA1IHwgQSAgIHwgICAgICAgICAgIDAK KyAgNiB8IEIgICB8ICAgICAgICAgICAwCisgIDcgfCBBICAgfCAgICAgICAgICAgMAorICA4IHwg QiAgIHwgICAgICAgICAgIDAKKyAgOSB8IFggICB8ICAgICAgICAgICAwCisoOSByb3dzKQorCitE Uk9QIFRBQkxFIHJwcl90OworLS0gbGFzdF92YWx1ZSgpIHNob3VsZCByZW1haW4gY29uc2lzdGVu dAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9S REVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAg U1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBw cmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwg bGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t CisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgMTQwCisgY29tcGFueTEg fCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIz IHwgICAxNTAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAg ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgMTIwCisgY29tcGFueTEgfCAw Ny0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAxNDAwCisgY29tcGFueTIgfCAwNy0w Mi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1 MDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAg ICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgCisgY29tcGFu eTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0wNy0y MDIzIHwgIDExMDAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAg CisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgCisoMjAgcm93cykK KworLS0gb21pdCAiU1RBUlQiIGluIERFRklORSBidXQgaXQgaXMgb2sgYmVjYXVzZSAiU1RBUlQg QVMgVFJVRSIgaXMKKy0tIGltcGxpY2l0bHkgZGVmaW5lZC4gcGVyIHNwZWMuCitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsCisgbnRoX3ZhbHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29u ZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFM CisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBVUCBBUyBwcmljZSA+IFBS RVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAg fCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfc2Vj b25kIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAg ICAgICAgMTAwIHwgICAgICAgIDE0MCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MSB8IDA3LTAyLTIw MjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDct MDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEg fCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21w YW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAor IGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAgICAgICAgMTIw IHwgMDctMDctMjAyMworIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAg MTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMS0yMDIz IHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDE0MDAgfCAwNy0wMi0yMDIzCisgY29tcGFu eTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYw IHwgICAgICAgMTIwMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0y MDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3 LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJvd3Mp CisKKy0tIHRoZSBmaXJzdCByb3cgc3RhcnQgd2l0aCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTAw CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAor IFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPV1BSSUNFIFVQKyBET1dOKykK KyBERUZJTkUKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgPD0gMTAwLAorICBVUCBBUyBwcmljZSA+IFBS RVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAg fCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAgICAg ICAgMTIwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAg IDUwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAg fCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwg IDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMg fCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIHNlY29u ZCByb3cgcmFpc2VzIDEyMCUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoTE9X UFJJQ0UgVVArIERPV04rKQorIERFRklORQorICBMT1dQUklDRSBBUyBwcmljZSA8PSAxMDAsCisg IFVQIEFTIHByaWNlID4gUFJFVihwcmljZSkgKiAxLjIsCisgIERPV04gQVMgcHJpY2UgPCBQUkVW KHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVl IHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgMTAwIHwgICAgICAgIDE0MAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAg OTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAg IDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8 ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIz IHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIw MjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEt MjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwCisgY29tcGFueTIgfCAwNy0w Mi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisoMjAgcm93cykKKworLS0gdXNpbmcgTkVYVAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3Cisg RlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQ QVRURVJOIChTVEFSVCBVUERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQRE9X TiBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJpY2UpCispOworIGNv bXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAor LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAg MjAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAg ICAgICAgMTUwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAx MTAgfCAgICAgICAgMTMwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAg ICAgICAgICA1MCB8ICAgICAgIDIwMDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0 MDAgfCAgICAgICAgMTQwMCB8ICAgICAgIDE1MDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAg MTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8 ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIz IHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEzMDAKKyBjb21wYW55MiB8IDA3LTA4LTIw MjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDkt MjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0x MC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCist LSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XIChzYW1lIHBhdHRlcm4gYXMgYWJv dmU7CistLSBtYXRjaCBsZW5ndGggaXMgYWx3YXlzIDIsIHNvIHJlc3VsdCBpcyBpZGVudGljYWwg dG8gU0tJUCBQQVNUIExBU1QgUk9XLgorLS0gU0tJUCBUTyBORVhUIFJPVydzIGRpc3RpbmN0IGVm ZmVjdCBpcyB0ZXN0ZWQgaW4gYmFja3RyYWNraW5nIHNlY3Rpb24uKQorU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQg VVBET1dOKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUERPV04gQVMgcHJpY2UgPiBQ UkVWKHByaWNlKSBBTkQgcHJpY2UgPiBORVhUKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8 IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDIwMAorIGNvbXBhbnkx IHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAgICAgIDE1MAorIGNv bXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEz MAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAg ICAgICAyMDAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgIDE0 MDAgfCAgICAgICAxNTAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgIDExMDAgfCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0gUFJFViByZXR1cm5z IE5VTEwgYXQgcGFydGl0aW9uJ3MgZmlyc3Qgcm93IChudWxsX3Nsb3QgcGF0aCkKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBQQVRURVJOIChCT1VO REFSWSBSRVNUKykKKyBERUZJTkUKKyAgQk9VTkRBUlkgQVMgUFJFVihwcmljZSkgSVMgTlVMTCwK KyAgUkVTVCBBUyBQUkVWKHByaWNlKSBJUyBOT1QgTlVMTAorKTsKKyBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAxMAorIGNvbXBhbnkx IHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAg IDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIw MjMgfCAgICA5MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgMTAKKyBjb21wYW55 MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwg IDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0y MDIzIHwgICAgNjAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wOS0yMDIzIHwgIDEyMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAw IHwgICAgIDAKKygyMCByb3dzKQorCistLSBORVhUIHJldHVybnMgTlVMTCBhdCBwYXJ0aXRpb24n cyBsYXN0IHJvdyAobnVsbF9zbG90IHBhdGgpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04g QlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg UEFUVEVSTiAoQSsgQk9VTkRBUlkpCisgREVGSU5FCisgIEEgQVMgTkVYVChwcmljZSkgSVMgTk9U IE5VTEwsCisgIEJPVU5EQVJZIEFTIE5FWFQocHJpY2UpIElTIE5VTEwKKyk7CisgY29tcGFueSAg fCAgIHRkYXRlICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgMTAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0y MDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEw IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8 ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgIDEwCisg Y29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMt MjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDYtMjAyMyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMg fCAgMTMwMCB8ICAgICAwCisoMjAgcm93cykKKworLS0gREVTQyBvcmRlcjogUFJFViByZWZlcnMg dG8gdGhlIHJvdyB3aXRoIGxhdGVyIGRhdGUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBC WSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUgREVTQworIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworIFBBVFRFUk4gKFNUQVJUIERPV04rIFVQKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwK KyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgY291bnQgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTEwLTIwMjMg fCAgIDEzMCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3 LTIwMjMgfCAgIDExMCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIz IHwgIDEzMDAgfCAgICAgMworIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgMworIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIE11bHRp cGxlIHBhcnRpdGlvbnMgd2l0aCB1bmVxdWFsIHNpemVzCitXSVRIIG11bHRpX3BhcnQgQVMgKAor IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoJ2EnLCAxLCAxMCksICgnYScsIDIsIDIwKSwgKCdh JywgMywgMTUpLAorICAoJ2InLCAxLCA1KSwKKyAgKCdjJywgMSwgMTAwKSwgKCdjJywgMiwgMjAw KSwgKCdjJywgMywgMTUwKSwgKCdjJywgNCwgMTQwKSwgKCdjJywgNSwgMzAwKQorICkgQVMgdChn cnAsIGlkLCB2YWwpCispCitTRUxFQ1QgZ3JwLCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gbXVsdGlfcGFydAorV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBncnAKKyBPUkRFUiBC WSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKEEgQispCisgREVGSU5F CisgIEEgQVMgdmFsIDw9IE5FWFQodmFsKSwKKyAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgT1IgdmFs IDwgUFJFVih2YWwpCispOworIGdycCB8IGlkIHwgdmFsIHwgY291bnQgCistLS0tLSstLS0tKy0t LS0tKy0tLS0tLS0KKyBhICAgfCAgMSB8ICAxMCB8ICAgICAzCisgYSAgIHwgIDIgfCAgMjAgfCAg ICAgMAorIGEgICB8ICAzIHwgIDE1IHwgICAgIDAKKyBiICAgfCAgMSB8ICAgNSB8ICAgICAwCisg YyAgIHwgIDEgfCAxMDAgfCAgICAgNQorIGMgICB8ICAyIHwgMjAwIHwgICAgIDAKKyBjICAgfCAg MyB8IDE1MCB8ICAgICAwCisgYyAgIHwgIDQgfCAxNDAgfCAgICAgMAorIGMgICB8ICA1IHwgMzAw IHwgICAgIDAKKyg5IHJvd3MpCisKKy0tIEZMT0FUL05VTUVSSUMgREVGSU5FIGNvbmRpdGlvbnMK K1dJVEggZmxvYXRfZGF0YSBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgxLCAxLjA6 OmZsb2F0OCksICgyLCAxLjUpLCAoMywgMS40OTk5KSwgKDQsIDEuNTAwMDEpLCAoNSwgMC4xKQor ICkgQVMgdChpZCwgdmFsKQorKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJP TSBmbG9hdF9kYXRhCitXSU5ET1cgdyBBUyAoCisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyBQQVRURVJOIChBIEIrKQorIERFRklORQorICBBIEFTIFRSVUUsCisgIEIg QVMgdmFsID4gUFJFVih2YWwpICogMC45OQorKTsKKyBpZCB8ICAgdmFsICAgfCBjb3VudCAKKy0t LS0rLS0tLS0tLS0tKy0tLS0tLS0KKyAgMSB8ICAgICAgIDEgfCAgICAgNAorICAyIHwgICAgIDEu NSB8ICAgICAwCisgIDMgfCAgMS40OTk5IHwgICAgIDAKKyAgNCB8IDEuNTAwMDEgfCAgICAgMAor ICA1IHwgICAgIDAuMSB8ICAgICAwCisoNSByb3dzKQorCistLQorLS0gRXJyb3IgY2FzZXM6IFBS RVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKKy0tCistLSBQUkVWIG91dHNpZGUgREVGSU5FIGNs YXVzZQorU0VMRUNUIHByZXYocHJpY2UpIEZST00gc3RvY2s7CitFUlJPUjogIGNhbm5vdCB1c2Ug cHJldiBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgcHJldihwcmljZSkg RlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5FWFQgb3V0c2lkZSBERUZJTkUgY2xh dXNlCitTRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKK0VSUk9SOiAgY2Fubm90IHVzZSBu ZXh0IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlCitMSU5FIDE6IFNFTEVDVCBuZXh0KHByaWNlKSBG Uk9NIHN0b2NrOworICAgICAgICAgICAgICAgXgorLS0gTmVzdGVkIFBSRVYKK1NFTEVDVCBwcmlj ZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJ TklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJF VihwcmljZSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250YWluIFBSRVYg b3IgTkVYVAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYocHJpY2Up KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgT25seSBQUkVWKEZJ UlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29t cG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuCistLSBOZXN0ZWQgTkVYVAorU0VMRUNUIHByaWNlIEZS T00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJ QUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChORVhUKHBy aWNlKSkKKyk7CitFUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGNvbnRhaW4gUFJFViBvciBO RVhUCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoTkVYVChwcmljZSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYoRklSU1Qo KSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3Vu ZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIFBSRVYgbmVzdGVkIGluc2lkZSBORVhUCitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhU KFBSRVYocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgY29udGFpbiBQ UkVWIG9yIE5FWFQKK0xJTkUgNzogICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChQUkVWKHBy aWNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJF VihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkp IGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLgorLS0gUFJFViBuZXN0ZWQgaW5zaWRlIGV4cHJl c3Npb24gaW5zaWRlIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UgKiBQUkVWKHByaWNlKSkKKyk7CitFUlJP UjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUCitMSU5FIDc6ICAg ICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UgKiBQUkVWKHByaWNlKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJFVihGSVJTVCgpKSwgUFJF VihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1z IGFyZSBhbGxvd2VkLgorLS0gVHJpcGxlIG5lc3Rpbmc6IGVycm9yIHJlcG9ydGVkIGF0IG91dGVy bW9zdCBQUkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5F IEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQorKTsKK0VSUk9SOiAgUFJFViBh bmQgTkVYVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQKK0xJTkUgNzogICAgIERFRklORSBB IEFTIHByaWNlID4gUFJFVihQUkVWKFBSRVYocHJpY2UpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJFVihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBO RVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2Vk LgorLS0gTm8gY29sdW1uIHJlZmVyZW5jZSBpbiBQUkVWL05FWFQgYXJndW1lbnQKKy0tIFBSRVYo MSk6IGNvbnN0YW50IG9ubHksIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9N IHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFM CisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorKTsKK0VSUk9S OiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNs dWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBB UyBQUkVWKDEpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTkVYVCgxICsgMik6 IGNvbnN0YW50IGV4cHJlc3Npb24sIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklU SUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7 CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11 c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA3OiAgICAgREVG SU5FIEEgQVMgTkVYVCgxICsgMikgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSAy LWFyZyBmb3JtOiBQUkVWKDEsIDEpOiBjb25zdGFudCBleHByZXNzaW9uIGFzIGZpcnN0IGFyZwor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYo MSwgMSkgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9u IG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJ TkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoMSwgMSkgPiAwCisgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBDb21wb3VuZCBuYXZpZ2F0aW9uIHdpdGhvdXQgYSBjb2x1bW4gcmVmZXJlbmNl IG11c3QgYmUgcmVqZWN0ZWQgdG9vLAorLS0gY29uc2lzdGVudCB3aXRoIHRoZSBzaW1wbGUgZm9y bXMgYWJvdmUuCistLSBQUkVWKEZJUlNUKDEpKTogY29tcG91bmQsIGNvbnN0YW50IG9ubHksIG5v IGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEpKSA+IDAKKyk7CitFUlJPUjogIGFyZ3VtZW50IG9m IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBv bmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCgx KSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBORVhUKExBU1QoMSArIDIpKTog Y29tcG91bmQsIGNvbnN0YW50IGV4cHJlc3Npb24sIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVD VCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBORVhUKExBU1Qo MSArIDIpKSA+IDAKKyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRp b24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQor TElORSA3OiAgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKDEgKyAyKSkgPiAwCisgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBQUkVWKEZJUlNUKDEsIDIpKTogY29tcG91bmQsIHR3by1hcmcg aW5uZXIsIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5E T1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVS TiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEsIDIpKSA+IDAKKyk7CitFUlJPUjog IGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVk ZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMg UFJFVihGSVJTVCgxLCAyKSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQUkVW KEZJUlNUKDEpLCAyKTogY29tcG91bmQsIG91dGVyIG9mZnNldCBvbmx5LCBubyBjb2x1bW4gcmVm ZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEg QVMgUFJFVihGSVJTVCgxKSwgMikgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVt biByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoMSksIDIpID4g MAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUFJFVihGSVJTVCgxLCAyKSwgMyk6IGNv bXBvdW5kLCBpbm5lciBhbmQgb3V0ZXIgb2Zmc2V0cywgbm8gY29sdW1uIHJlZmVyZW5jZQorU0VM RUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29t cGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYoRklS U1QoMSwgMiksIDMpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2 aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJl bmNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEsIDIpLCAzKSA+IDAKKyAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IGNvbHVtbiBy ZWZlcmVuY2UgYXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMg KAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisg ICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcHJpY2UpID4gMAorKTsKK0VSUk9SOiAgcm93IHBh dHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitMSU5F IDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBjb2x1bW4g cmVmZXJlbmNlIGluIGNvbXBvdW5kIGlubmVyIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3Rv Y2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAg ICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgcHJpY2UpLCAy KSA+IDAKKyk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUg YSBydW4tdGltZSBjb25zdGFudAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHBy aWNlLCBwcmljZSksIDIpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBjb2x1bW4gcmVmZXJlbmNlIGluIGNvbXBv dW5kIG91dGVyIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgK KyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAg IERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgMSksIHByaWNlKSA+IDAKKyk7CitFUlJPUjog IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFu dAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHByaWNlLCAxKSwgcHJpY2UpID4g MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm9u LWNvbnN0YW50IG9mZnNldDogdm9sYXRpbGUgZnVuY3Rpb24gYXMgb2Zmc2V0CitTRUxFQ1QgcHJp Y2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55Cisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg SU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFu ZG9tKCk6OmludCkgPiAwCispOworRVJST1I6ICB2b2xhdGlsZSBmdW5jdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJp Y2UsIHJhbmRvbSgpOjppbnQpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogc3VicXVlcnkgYXMgb2Zmc2V0CitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwg KFNFTEVDVCAxKSkgPiAwCispOworRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERFRklO RSBleHByZXNzaW9uCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCAoU0VMRUNU IDEpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEZpcnN0 IGFyZzogc3VicXVlcnkgKGNhdWdodCBieSBERUZJTkUtbGV2ZWwgc3VicXVlcnkgcmVzdHJpY3Rp b24pCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg UFJFVihwcmljZSArIChTRUxFQ1QgMSkpID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJx dWVyeSBpbiBERUZJTkUgZXhwcmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihw cmljZSArIChTRUxFQ1QgMSkpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIFZvbGF0aWxlIGZ1bmN0aW9uIGluc2lkZSBuYXYuYXJnIGlzIHJlamVjdGVkIGlu IHRoZSBwbGFubmVyCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikg T1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHBy aWNlICsgcmFuZG9tKCkgKiAwKSA+PSAwCispOworRVJST1I6ICB2b2xhdGlsZSBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgODogICAgIERFRklORSBBIEFT IFBSRVYocHJpY2UgKyByYW5kb20oKSAqIDApID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBuZXh0dmFsIGlzIHZvbGF0aWxlIChwZXIgcGdfcHJvYyksIHNv IGl0IGlzIHJlamVjdGVkIHZpYSB0aGUgRnVuY0V4cHIKKy0tIHBhdGggd2l0aCB0aGUgInZvbGF0 aWxlIGZ1bmN0aW9ucyIgbWVzc2FnZQorQ1JFQVRFIFNFUVVFTkNFIHJwcl9zZXE7CitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBuZXh0 dmFsKCdycHJfc2VxJykKKyk7CitFUlJPUjogIHZvbGF0aWxlIGZ1bmN0aW9ucyBhcmUgbm90IGFs bG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBu ZXh0dmFsKCdycHJfc2VxJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJP UCBTRVFVRU5DRSBycHJfc2VxOworLS0gQSB2b2xhdGlsZSBERUZJTkUgaXMgbm93IHJlamVjdGVk IGluIHRoZSBwbGFubmVyLCBub3QgYXQgcGFyc2UgdGltZSwgc28gYQorLS0gdmlldyB0aGF0IGhp ZGVzIG9uZSBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSBhbmQgb25seSBlcnJvcnMgd2hlbiByZWFk LgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdm9sYXRpbGVfdmlldyBBUworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiByYW5kb20oKSAqIDAKKyk7CitT RUxFQ1QgKiBGUk9NIHJwcl92b2xhdGlsZV92aWV3OworRVJST1I6ICB2b2xhdGlsZSBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0RST1AgVklFVyBycHJfdm9sYXRp bGVfdmlldzsKKy0tIERFRklORSBjYW5ub3QgcmVmZXJlbmNlIGFuIG91dGVyIHF1ZXJ5J3MgY29s dW1uLiAgQSBjb3JyZWxhdGVkIG91dGVyCistLSByZWZlcmVuY2UgbXVzdCBwcm9kdWNlIGEgY2xl YW4gZXJyb3IsIG5vdCB0aGUgaW50ZXJuYWwgIlVwcGVyLWxldmVsIFZhciIKKy0tIGVsb2cgdGhh dCBwdWxsX3Zhcl9jbGF1c2Ugd291bGQgb3RoZXJ3aXNlIHJhaXNlLgorLS0gUXVhbGlmaWVkIG91 dGVyIHJlZmVyZW5jZSAoby50aHJlc2hvbGQpOgorU0VMRUNUICogRlJPTSAoVkFMVUVTICg5NSkp IEFTIG8odGhyZXNob2xkKSwKK0xBVEVSQUwgKAorICAgIFNFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgICAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgSU5JVElBTAorICAgICAgICBQQVRURVJOIChBKQorICAgICAgICBERUZJTkUgQSBBUyBwcmlj ZSA+IG8udGhyZXNob2xkCisgICAgKQorKSBzOworRVJST1I6ICBjYW5ub3QgdXNlIG91dGVyIHF1 ZXJ5IGNvbHVtbiBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDk6ICAgICAgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBvLnRocmVzaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gVW5xdWFsaWZpZWQgbmFtZSByZXNvbHZpbmcgdG8gdGhlIG91dGVyIGNvbHVtbiAodGhy ZXNob2xkKToKK1NFTEVDVCAqIEZST00gKFZBTFVFUyAoOTUpKSBBUyBvKHRocmVzaG9sZCksCitM QVRFUkFMICgKKyAgICBTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworICAgIFdJTkRPVyB3IEFTICgK KyAgICAgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIElOSVRJQUwKKyAgICAgICAg UEFUVEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiB0aHJlc2hvbGQKKyAgICAp CispIHM7CitFUlJPUjogIGNhbm5vdCB1c2Ugb3V0ZXIgcXVlcnkgY29sdW1uIGluIERFRklORSBj bGF1c2UKK0xJTkUgOTogICAgICAgICBERUZJTkUgQSBBUyBwcmljZSA+IHRocmVzaG9sZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gT3V0ZXIgcmVmZXJlbmNlIGlu c2lkZSBhIG5hdmlnYXRpb24gYXJndW1lbnQgaXMgcmVqZWN0ZWQgdG9vOgorU0VMRUNUICogRlJP TSAoVkFMVUVTICg5NSkpIEFTIG8odGhyZXNob2xkKSwKK0xBVEVSQUwgKAorICAgIFNFTEVDVCBw cmljZSBGUk9NIHN0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkg Y29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERF RklORSBBIEFTIFBSRVYoby50aHJlc2hvbGQsIDEpID4gMAorICAgICkKKykgczsKK0VSUk9SOiAg Y2Fubm90IHVzZSBvdXRlciBxdWVyeSBjb2x1bW4gaW4gREVGSU5FIGNsYXVzZQorTElORSA4OiAg ICAgICAgIERFRklORSBBIEFTIFBSRVYoby50aHJlc2hvbGQsIDEpID4gMAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gREVGSU5FIHJlamVjdHMgYSBzY2hlbWEtcXVhbGlm aWVkIGNvbHVtbiByZWZlcmVuY2UgKHRocmVlIG9yIG1vcmUgbmFtZQorLS0gcGFydHMpIG9uY2Ug aXQgcmVzb2x2ZXM7IHRoZSBxdWFsaWZpZWQgZm9ybSBpdHNlbGYgaXMgbm90IGFsbG93ZWQuICAo c3RvY2sKKy0tIGlzIGEgdGVtcCB0YWJsZSwgc28gaXQgaXMgcXVhbGlmaWVkIHdpdGggcGdfdGVt cCBoZXJlLikKKy0tIDMtcGFydCAoc2NoZW1hLnRhYmxlLmNvbHVtbik6CitTRUxFQ1QgcHJpY2Ug RlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5J VElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcGdfdGVtcC5zdG9jay5wcmlj ZSA+IDAKKyk7CitFUlJPUjogIHF1YWxpZmllZCBleHByZXNzaW9uICJwZ190ZW1wLnN0b2NrLnBy aWNlIiBpcyBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUg QSBBUyBwZ190ZW1wLnN0b2NrLnByaWNlID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gd2hvbGUtcm93IHZhcmlhbnQgKHNjaGVtYS50YWJsZS4qKToKK1NFTEVDVCBwcmljZSBGUk9N IHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFM CisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyAocGdfdGVtcC5zdG9jay4qKSBJUyBO T1QgTlVMTAorKTsKK0VSUk9SOiAgcXVhbGlmaWVkIGV4cHJlc3Npb24gInBnX3RlbXAuc3RvY2su KiIgaXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEg QVMgKHBnX3RlbXAuc3RvY2suKikgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLQorLS0gMi1hcmcgUFJFVi9ORVhUOiBmdW5jdGlvbmFsIHRlc3RzCistLQorLS0gUFJF VihwcmljZSwgMik6IG1hdGNoIHJvd3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93 cyBiYWNrCistLSBzdG9jazogMTAwLCA5MCwgODAsIDk1LCAxMTAKKy0tIFBhdHRlcm4gKEEgQisp OiBBPWFueSwgQiB3aGVyZSBwcmljZSA+IFBSRVYocHJpY2UsIDIpCistLSBBdCBwb3MgMiAoODAp OiBBIG1hdGNoZXMuIHBvcyAzICg5NSk6IDk1ID4gUFJFVig5NSwyKT05MCBUUlVFLgorLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA0ICgxMTApOiAxMTAgPiBQUkVWKDExMCwyKT04 MCBUUlVFLiBNYXRjaCEKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgq KSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29t cGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworIGNv bXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwg Y291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAy MDAgfCAgICAgICAgIDIwMCB8ICAgICAgICAxNTAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDMt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAg ICAgICAgMTEwIHwgICAgICAgIDEyMCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIw MDAgfCAgICAgICAxNTAwIHwgICAgIDIKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIz IHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAg ICAgIDEyMDAgfCAgICAgMworIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0y MDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3Mp CisKKy0tIE5FWFQocHJpY2UsIDIpOiBtYXRjaCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBw cmljZSAyIHJvd3MgYWhlYWQKKy0tIHBvcyAwICgxMDApOiBORVhUKDEwMCwyKT04MCwgMTAwPjgw IFRSVUUuIHBvcyAxICg5MCk6IE5FWFQoOTAsMik9OTUsIDkwPjk1IEZBTFNFLiBNYXRjaCBlbmRz LgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJP TSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZ IHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNl LCAyKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwg bGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwg ICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAgICAgMjAwIHwgICAgIDEKKyBjb21w YW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgIDE0MCB8ICAgICAg ICAxNTAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIz IHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAyMDAwIHwgICAgICAgMjAwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wMy0y MDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgIDE0MDAgfCAgICAgICAxNTAwIHwgICAgIDIK KyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKygyMCByb3dzKQorCistLSBFeHByZXNzaW9ucyBpbnNpZGUgUFJFVi9ORVhUIGFyZzogZXhw ciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0IHJvdworLS0gUFJFVihwcmljZSAtIDUwLCAxKTogZmV0 Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAxIHJvdyBiYWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UgLSA1MCwgMSkKKyk7CisgY29tcGFueSAg fCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAg ICAgICAgMjAwIHwgICAgICAgIDIwMCB8ICAgICAxCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwg ICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBjb21w YW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAx MTAgfCAgICAgICAgMTMwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIz IHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAg ICAgIDIwMDAgfCAgICAgMQorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0y MDIzIHwgIDE1MDAgfCAgICAgICAgMTUwMCB8ICAgICAgIDE1MDAgfCAgICAgMQorIGNvbXBhbnky IHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAxMTAwIHwgICAgICAgMTMw MCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAg MTMwMCB8ICAgICAgICAxMzAwIHwgICAgICAgMTMwMCB8ICAgICAxCisoMjAgcm93cykKKworLS0g TkVYVChwcmljZSAqIDIsIDEpOiBmZXRjaGVzIChwcmljZSAqIDIpIGZyb20gMSByb3cgYWhlYWQK K1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2Up IE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0 ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlIDwgTkVYVChwcmljZSAq IDIsIDEpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUg fCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMg fCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDEyMCB8ICAgICA5CisgY29tcGFueTEgfCAw Ny0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIw MjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAg ICAgICA1MCB8ICAgICAgIDE0MDAgfCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAy MDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAz LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYw IHwgICAgICAgMTIwMCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorKDIwIHJvd3MpCisKKy0tIExhcmdlIG9mZnNldDogUFJFVih2YWwsIDk5OSkgb24gMTAw MC1yb3cgc2VyaWVzIG1hdGNoZXMgb25seSBsYXN0IHJvdworLS0gTkVYVCh2YWwsIDk5OSkgbWF0 Y2hlcyBvbmx5IGZpcnN0IHJvdworU0VMRUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBPVkVSIHcs IGxhc3RfdmFsdWUodmFsKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgUFJFVih2YWwsIDk5OSkgPSAxCispCitPUkRFUiBCWSB2YWwgREVTQyBM SU1JVCAzOworIHZhbCAgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgMTAwMCB8ICAgICAgICAxMDAw IHwgICAgICAgMTAwMCB8ICAgICAxCisgIDk5OSB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgIDk5OCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMyByb3dz KQorCitTRUxFQ1QgdmFsLCBmaXJzdF92YWx1ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwp IE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBB UyB0KHZhbCkKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBO RVhUKHZhbCwgOTk5KSA9IDEwMDAKKykKK0xJTUlUIDM7CisgdmFsIHwgZmlyc3RfdmFsdWUgfCBs YXN0X3ZhbHVlIHwgY291bnQgCistLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tCisgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAxIHwgICAgIDEKKyAgIDIgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorICAgMyB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisoMyByb3dzKQorCistLSBQUkVWKHByaWNlLCAwKTogb2Zmc2V0IDAgbWVh bnMgY3VycmVudCByb3csIGFsd2F5cyBlcXVhbCB0byBwcmljZQorLS0gQSsgbWF0Y2hlcyBlbnRp cmUgcGFydGl0aW9uIGFzIG9uZSBncm91cDsgY291bnQgPSBwYXJ0aXRpb24gc2l6ZQorU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgMCkgPSBwcmljZQorKTsK KyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1 ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAg ICAgICAgIDEwMCB8ICAgICAgICAxMzAgfCAgICAxMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8 ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAy MyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAg ICAgICAxMzAwIHwgICAgMTAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1 MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQt MjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwg IDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCBy b3dzKQorCistLSAyLWFyZyBQUkVWL05FWFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1Qg cHJldihwcmljZSwgMikgRlJPTSBzdG9jazsKK0VSUk9SOiAgY2Fubm90IHVzZSBwcmV2IG91dHNp ZGUgYSBERUZJTkUgY2xhdXNlCitMSU5FIDE6IFNFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0 b2NrOworICAgICAgICAgICAgICAgXgorU0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7 CitFUlJPUjogIGNhbm5vdCB1c2UgbmV4dCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAx OiBTRUxFQ1QgbmV4dChwcmljZSwgMikgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0t IDItYXJnIFBSRVYvTkVYVDogbmVnYXRpdmUgb2Zmc2V0CitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBB UyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCAtMSkgSVMgTk9UIE5VTEwKKyk7CitFUlJP UjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCist LSAyLWFyZyBQUkVWL05FWFQ6IE5VTEwgb2Zmc2V0ICh0eXBlZCkKK1NFTEVDVCBjb21wYW55LCB0 ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIE5VTEw6OmludDgpIElTIE5PVCBO VUxMCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBi ZSBudWxsCistLSAyLWFyZyBQUkVWL05FWFQ6IE5VTEwgb2Zmc2V0ICh1bnR5cGVkKQorU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRk YXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgTlVMTCkgSVMg Tk9UIE5VTEwKKyk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qg bm90IGJlIG51bGwKKy0tIDItYXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSBuZWdhdGl2ZSBh bmQgTlVMTAorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0KGludDgpIEFTCitTRUxFQ1QgY29tcGFu eSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UsICQxKQorKTsK K0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldCgtMSk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmln YXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCitFWEVDVVRFIHRlc3RfcHJldl9vZmZz ZXQoTlVMTCk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90 IGJlIG51bGwKK0RFQUxMT0NBVEUgdGVzdF9wcmV2X29mZnNldDsKKy0tIDItYXJnIFBSRVYvTkVY VDogaG9zdCB2YXJpYWJsZSB3aXRoIGV4cHJlc3Npb24gKDAgKyAkMSkKK1BSRVBBUkUgdGVzdF9w cmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAwICsgJDEpCispOworRVhFQ1VURSB0ZXN0X3ByZXZf b2Zmc2V0KC0xKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBu b3QgYmUgbmVnYXRpdmUKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0VSUk9SOiAg cm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbnVsbAorREVBTExPQ0FU RSB0ZXN0X3ByZXZfb2Zmc2V0OworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIHdp dGggcG9zaXRpdmUgdmFsdWUKKy0tIEV4ZXJjaXNlcyBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFM IC0+IGV2YWxfbmF2X21heF9vZmZzZXQoKSBwYXRoCitQUkVQQVJFIHRlc3RfcHJldl9vZmZzZXQo aW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0 KDEpOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBjb3Vu dCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t CisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAyCisg Y29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgIDE0MCB8ICAgICAyCisgY29tcGFueTEg fCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0w Ny0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0y MDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIz IHwgICAxMjAgfCAgICAgICAgIDEyMCB8ICAgICAyCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAg NTAgfCAgICAgICAgICA1MCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAg ICAgMTQwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICA2 MCB8ICAgICAzCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgMTIwMCB8ICAgICAy CisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAwCiso MjAgcm93cykKKworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KDIpOworIGNvbXBhbnkgIHwgICB0 ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0y MDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIz IHwgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAyCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwg ICAxNTAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAx NDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAg fCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAg ICAgIDExMCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAy CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAzCisgY29tcGFueTIgfCAw Ny0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0y MDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93cykKKworREVBTExPQ0FU RSB0ZXN0X3ByZXZfb2Zmc2V0OworLS0gMi1hcmc6IHR3byBQUkVWIHdpdGggZGlmZmVyZW50IG9m ZnNldHMgaW4gc2FtZSBERUZJTkUgY2xhdXNlCistLSBCOiBwcmljZSBleGNlZWRzIGJvdGggMS1i YWNrIGFuZCAyLWJhY2sgdmFsdWVzCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAg ICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg Y291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisg ICAgICAgIEIgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAxKSBBTkQgcHJpY2UgPiBQUkVWKHByaWNl LCAyKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwg bGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwg ICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIz IHwgICAxMTAgfCAgICAgICAgIDExMCB8ICAgICAgICAxMzAgfCAgICAgMgorIGNvbXBhbnkxIHwg MDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0y MDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgIDExMDAgfCAgICAgICAxMzAwIHwgICAgIDIKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKygyMCByb3dzKQorCistLSAyLWFyZzogUFJFViBhbmQgTkVYVCB3aXRoIGV4cGxpY2l0IG9m ZnNldHMgaW4gc2FtZSBERUZJTkUgY2xhdXNlCistLSBBOiBwcmljZSBleGNlZWRzIDEtYmFjayBh bmQgaXMgYmVsb3cgMS1haGVhZCAoYXNjZW5kaW5nIGludGVyaW9yIHBvaW50KQorU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBs YXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lO RE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAxKSBBTkQgcHJpY2UgPCBORVhUKHByaWNlLCAxKQor KTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92 YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAy MyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAx MTAgfCAgICAgICAgIDExMCB8ICAgICAgICAxMTAgfCAgICAgMQorIGNvbXBhbnkxIHwgMDctMDgt MjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwg IDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDEx MDAgfCAgICAgICAxMTAwIHwgICAgIDEKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIz IHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygy MCByb3dzKQorCistLSBQYXNzLWJ5LXJlZiB0eXBlczogdHdvIFBSRVYgY2FsbHMgdGFyZ2V0aW5n IGRpZmZlcmVudCBwb3NpdGlvbnMuCistLSBWZXJpZmllcyB0aGF0IGRhdHVtQ29weSBpbiBSRVNU T1JFIHByZXZlbnRzIGRhbmdsaW5nIHBvaW50ZXJzIHdoZW4KKy0tIG5hdl9zbG90IGlzIHJlLWZl dGNoZWQgZm9yIHRoZSBzZWNvbmQgbmF2aWdhdGlvbi4KKy0tIHRkYXRlOjp0ZXh0IGdpdmVzIGRp c3RpbmN0IHRleHQgdmFsdWVzIHBlciByb3cgKGUuZy4gJzA3LTAxLTIwMjMnKS4KKy0tIEIgbWF0 Y2hlcyB3aGVuIDEtYmFjayBkYXRlIHRleHQgPiAyLWJhY2sgZGF0ZSB0ZXh0IChhbHdheXMgdHJ1 ZSBmb3IKKy0tIGFzY2VuZGluZyBkYXRlcyksIHNvIEIrIGV4dGVuZHMgdGhlIGZ1bGwgcGFydGl0 aW9uIGFmdGVyIEEuCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHRkYXRlOjp0ZXh0IEFTIHRkYXRl X3RleHQsCisgICAgICAgZmlyc3RfdmFsdWUodGRhdGU6OnRleHQpIE9WRVIgdywgbGFzdF92YWx1 ZSh0ZGF0ZTo6dGV4dCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyBQUkVWKHRkYXRlOjp0ZXh0LCAxKSA+ IFBSRVYodGRhdGU6OnRleHQsIDIpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHRkYXRl X3RleHQgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t CisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgMDctMDEtMjAyMyB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgMDctMDItMjAyMyB8IDA3 LTAyLTIwMjMgIHwgMDctMTAtMjAyMyB8ICAgICA5CisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwg MDctMDMtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wNC0yMDIzIHwgMDctMDQtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgMDctMDUtMjAyMyB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgMDctMDYtMjAyMyB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIz IHwgMDctMDctMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wOC0yMDIzIHwgMDctMDgtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgMDctMDktMjAyMyB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgMDctMTAtMjAy MyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0y MDIzIHwgMDctMDEtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wMi0yMDIzIHwgMDctMDItMjAyMyB8IDA3LTAyLTIwMjMgIHwgMDctMTAtMjAy MyB8ICAgICA5CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgMDctMDMtMjAyMyB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgMDctMDQt MjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w NS0yMDIzIHwgMDctMDUtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wNi0yMDIzIHwgMDctMDYtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgMDctMDctMjAyMyB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgMDct MDgtMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wOS0yMDIzIHwgMDctMDktMjAyMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgMDctMTAtMjAyMyB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisoMjAgcm93cykKKworLS0gbnVtZXJpYzogUFJFVihwcmljZTo6bnVt ZXJpYywgMSkgPiBQUkVWKHByaWNlOjpudW1lcmljLCAyKQorLS0gQiBtYXRjaGVzIHdoZW4gcHJp Y2UgMS1iYWNrID4gcHJpY2UgMi1iYWNrIChhc2NlbmRpbmcgcGFpcikuCitTRUxFQ1QgY29tcGFu eSwgdGRhdGUsIHByaWNlOjpudW1lcmljIEFTIG5wcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShw cmljZTo6bnVtZXJpYykgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlOjpudW1lcmljKSBPVkVSIHcs IGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAor ICAgICAgICBCIEFTIFBSRVYocHJpY2U6Om51bWVyaWMsIDEpID4gUFJFVihwcmljZTo6bnVtZXJp YywgMikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgbnByaWNlIHwgZmlyc3RfdmFsdWUg fCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIz IHwgICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTAyLTIwMjMgfCAgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAgICAxNTAgfCAgICAgMgor IGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAgMTQwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgICAxNTAgfCAg ICAgICAgIDE1MCB8ICAgICAgICAgOTAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8 ICAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNy0yMDIzIHwgICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTIwIHwgICAgIDMKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgIDEyMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAg ICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDItMjAyMyB8ICAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTUwMCB8ICAgICAyCisgY29t cGFueTIgfCAwNy0wMy0yMDIzIHwgICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgIDE0MDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAgMTUwMCB8ICAgICAg ICAxNTAwIHwgICAgICAgICA2MCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAg IDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3 LTIwMjMgfCAgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEyMDAgfCAgICAgMworIGNvbXBh bnkyIHwgMDctMDgtMjAyMyB8ICAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgICAxMjAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgIDEzMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tCistLSBGSVJTVC9MQVNU IG5hdmlnYXRpb24KKy0tCistLSBUZXN0IGRhdGEgZm9yIEZJUlNUL0xBU1Q6IHZhbHVlcyBjeWNs ZSBiYWNrIHNvIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCkKKy0tIGF0IHNwZWNpZmljIHBvc2l0aW9u cy4KK0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYXYgKGlkIGludCwgdmFsIGludCk7CitJTlNFUlQg SU5UTyBycHJfbmF2IFZBTFVFUyAoMSwxMCksKDIsMjApLCgzLDMwKSwoNCwxMCksKDUsNTApLCg2 LDEwKTsKKy0tIEZJUlNUKHZhbCkgPSBjb25zdGFudDogQiBtYXRjaGVzIHdoZW4gbWF0Y2hfc3Rh cnQgaGFzIHZhbD0xMAorLS0gbWF0Y2hfc3RhcnQ9MSgxMCk6IEE9aWQxLCBCPWlkMiwgRklSU1Qo dmFsKT0xMCAtPiBtYXRjaCB7MSwyfQorLS0gbWF0Y2hfc3RhcnQ9MygzMCk6IEE9aWQzLCBCPWlk NCwgRklSU1QodmFsKT0zMCE9MTAgLT4gbm8gbWF0Y2gKKy0tIG1hdGNoX3N0YXJ0PTQoMTApOiBB PWlkNCwgQj1pZDUsIEZJUlNUKHZhbCk9MTAgLT4gbWF0Y2ggezQsNX0KK1NFTEVDVCBpZCwgdmFs LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWwKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gMTAKKyk7CisgaWQgfCB2YWwgfCBtZiB8IG1sIAor LS0tLSstLS0tLSstLS0tKy0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgIDIKKyAgMiB8ICAyMCB8ICAg IHwgICAKKyAgMyB8ICAzMCB8ICAgIHwgICAKKyAgNCB8ICAxMCB8ICA0IHwgIDUKKyAgNSB8ICA1 MCB8ICAgIHwgICAKKyAgNiB8ICAxMCB8ICAgIHwgICAKKyg2IHJvd3MpCisKKy0tIExBU1QodmFs KTogYWx3YXlzIGVxdWFscyBjdXJyZW50IHJvdydzIHZhbCAob2Zmc2V0IDAgZGVmYXVsdCkKKy0t IEVxdWl2YWxlbnQgdG86IEIgQVMgdmFsID4gMTUKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnBy X25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBB UyBMQVNUKHZhbCkgPiAxNQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgbWwgCistLS0tKy0tLS0tKy0t LS0rLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgMgorICAyIHwgIDIwIHwgICAgfCAgIAorICAzIHwg IDMwIHwgICAgfCAgIAorICA0IHwgIDEwIHwgIDQgfCAgNQorICA1IHwgIDUwIHwgICAgfCAgIAor ICA2IHwgIDEwIHwgICAgfCAgIAorKDYgcm93cykKKworLS0gUmVsdWN0YW50IEErPyB3aXRoIEZJ UlNUKHZhbCkgPSBMQVNUKHZhbCk6IGZpbmQgc2hvcnRlc3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0 IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2YWwuCistLSBtYXRjaF9zdGFydD0xKDEwKTog cmVsdWN0YW50IHRyaWVzIEIgZWFybHk6CistLSAgIGlkMigyMCE9MTApLCBpZDMoMzAhPTEwKSwg aWQ0KDEwPTEwKSAtPiBtYXRjaCB7MSwyLDMsNH0KKy0tIG1hdGNoX3N0YXJ0PTUoNTApOiBpZDYo MTAhPTUwKSAtPiBubyBtYXRjaAorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtbAorRlJPTSBycHJfbmF2IFdJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1Qo dmFsKSA9IExBU1QodmFsKQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgbWwgCistLS0tKy0tLS0tKy0t LS0rLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgNAorICAyIHwgIDIwIHwgICAgfCAgIAorICAzIHwg IDMwIHwgICAgfCAgIAorICA0IHwgIDEwIHwgICAgfCAgIAorICA1IHwgIDUwIHwgICAgfCAgIAor ICA2IHwgIDEwIHwgICAgfCAgIAorKDYgcm93cykKKworLS0gR3JlZWR5IEErIHdpdGggRklSU1Qo dmFsKSA9IExBU1QodmFsKTogZmluZCBsb25nZXN0IG1hdGNoIHdoZXJlCistLSBmaXJzdCBhbmQg bGFzdCByb3dzIGhhdmUgdGhlIHNhbWUgdmFsLgorLS0gbWF0Y2hfc3RhcnQ9MSgxMCk6IGdyZWVk eSBBIGVhdHMgYWxsLCBCIHRyaWVzIGxhc3Q6CistLSAgIGlkNigxMD0xMCkgLT4gbWF0Y2ggezEs MiwzLDQsNSw2fQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYs IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtbAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFT VCh2YWwpCispOworIGlkIHwgdmFsIHwgbWYgfCBtbCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tCisg IDEgfCAgMTAgfCAgMSB8ICA2CisgIDIgfCAgMjAgfCAgICB8ICAgCisgIDMgfCAgMzAgfCAgICB8 ICAgCisgIDQgfCAgMTAgfCAgICB8ICAgCisgIDUgfCAgNTAgfCAgICB8ICAgCisgIDYgfCAgMTAg fCAgICB8ICAgCisoNiByb3dzKQorCistLSBTS0lQIFRPIE5FWFQgUk9XIHdpdGggRklSU1QodmFs KSA9IExBU1QodmFsKTogb3ZlcmxhcHBpbmcgbWF0Y2ggYXR0ZW1wdHMuCistLSBXaXRoIE9ORSBS T1cgUEVSIE1BVENILCBlYWNoIHJvdyBzaG93cyBvbmx5IGl0cyBmaXJzdCBtYXRjaCByZXN1bHQu CitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPyBC KQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFsKSA9IExBU1QodmFsKQorKTsK KyBpZCB8IHZhbCB8IG1mIHwgbWwgCistLS0tKy0tLS0tKy0tLS0rLS0tLQorICAxIHwgIDEwIHwg IDEgfCAgNAorICAyIHwgIDIwIHwgICAgfCAgIAorICAzIHwgIDMwIHwgICAgfCAgIAorICA0IHwg IDEwIHwgIDQgfCAgNgorICA1IHwgIDUwIHwgICAgfCAgIAorICA2IHwgIDEwIHwgICAgfCAgIAor KDYgcm93cykKKworLS0gRklSU1QvTEFTVCAyLWFyZyBvZmZzZXQgZm9ybQorLS0KKy0tIEZJUlNU KHZhbCwgMCkgPSBGSVJTVCh2YWwpOiBtYXRjaF9zdGFydCByb3cKK1NFTEVDVCBpZCwgdmFsLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVF LCBCIEFTIEZJUlNUKHZhbCwgMCkgPSAxMAorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250IAorLS0t LSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAgNgorICAyIHwgIDIwIHwgICAg fCAgIDAKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAgICB8ICAgMAorICA1IHwg IDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dzKQorCistLSBGSVJT VCh2YWwsIDEpOiBtYXRjaF9zdGFydCArIDEgcm93IChzZWNvbmQgcm93IG9mIG1hdGNoKQorLS0g bWF0Y2hfc3RhcnQ9MSgxMCk6IEZJUlNUKHZhbCwxKT0yMCwgQiBuZWVkcyB2YWw9MjAgLT4gaWQy KDIwKSBtYXRjaCwgaWQzKDMwKSBubworLS0gbWF0Y2hfc3RhcnQ9MygzMCk6IEZJUlNUKHZhbCwx KT0xMCwgQiBuZWVkcyB2YWw9MTAgLT4gaWQ0KDEwKSBtYXRjaAorU0VMRUNUIGlkLCB2YWwsIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00g cnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUs IEIgQVMgdmFsID0gRklSU1QodmFsLCAxKQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250IAorLS0t LSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAgMgorICAyIHwgIDIwIHwgICAg fCAgIDAKKyAgMyB8ICAzMCB8ICAzIHwgICAyCisgIDQgfCAgMTAgfCAgICB8ICAgMAorICA1IHwg IDUwIHwgIDUgfCAgIDIKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dzKQorCistLSBGSVJT VCh2YWwsIDk5KTogb2Zmc2V0IGJleW9uZCBtYXRjaCByYW5nZSAtPiBOVUxMLCBubyBtYXRjaAor U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1Qo dmFsLCA5OSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisg IDQgfCAgMTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDEwIHwgICAwCisoNiByb3dz KQorCistLSBMQVNUKHZhbCwgMCkgPSBMQVNUKHZhbCk6IGN1cnJlbnQgcm93CitTRUxFQ1QgaWQs IHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKHZhbCwgMCkgPiAxNQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250 IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAgMworICAyIHwgIDIw IHwgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAgNCB8ICAgMgor ICA1IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dzKQorCist LSBMQVNUKHZhbCwgMSk6IG9uZSByb3cgYmFjayBmcm9tIGN1cnJlbnQgKHByZXZpb3VzIG1hdGNo IHJvdykKKy0tIEF0IEIgZXZhbHVhdGlvbiBvbiBpZDI6IExBU1QodmFsLDEpID0gdmFsIGF0IGlk MSA9IDEwCistLSBCIG1hdGNoZXMgd2hlbiBwcmV2aW91cyByb3cgdmFsIDwgMzAKK1NFTEVDVCBp ZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIExBU1QodmFsLCAxKSA8IDMwCispOworIGlkIHwgdmFsIHwgbWYgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgICAzCisgIDIgfCAg MjAgfCAgICB8ICAgMAorICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAxMCB8ICA0IHwgICAy CisgIDUgfCAgNTAgfCAgICB8ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAKKyg2IHJvd3MpCisK Ky0tIExBU1QodmFsLCA5OSk6IG9mZnNldCBiZWZvcmUgbWF0Y2hfc3RhcnQgLT4gTlVMTAorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTEFTVCh2YWws IDk5KSBJUyBOT1QgTlVMTAorKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8 ICAxMCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgMTAgfCAgIDAKKyg2IHJvd3MpCisK Ky0tIEVycm9yOiBOVUxMIG9mZnNldAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgRklSU1QodmFsLCBOVUxMOjppbnQ4KSBJUyBOVUxMCispOworRVJS T1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBudWxsCistLSBF cnJvcjogbmVnYXRpdmUgb2Zmc2V0CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBMQVNUKHZhbCwgLTEpIElTIE5VTEwKKyk7CitFUlJPUjogIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCistLSBGSVJTVC9M QVNUIG91dHNpZGUgREVGSU5FIGNsYXVzZSAoZXJyb3IgY2FzZXMpCitTRUxFQ1QgZmlyc3QodmFs KSBGUk9NIHJwcl9uYXY7CitFUlJPUjogIGNhbm5vdCB1c2UgZmlyc3Qgb3V0c2lkZSBhIERFRklO RSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIGZpcnN0KHZhbCkgRlJPTSBycHJfbmF2OworICAgICAg ICAgICAgICAgXgorU0VMRUNUIGxhc3QodmFsKSBGUk9NIHJwcl9uYXY7CitFUlJPUjogIGNhbm5v dCB1c2UgbGFzdCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgbGFzdCh2 YWwpIEZST00gcnByX25hdjsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBmaXJzdCh2YWwsIDEp IEZST00gcnByX25hdjsKK0VSUk9SOiAgY2Fubm90IHVzZSBmaXJzdCBvdXRzaWRlIGEgREVGSU5F IGNsYXVzZQorTElORSAxOiBTRUxFQ1QgZmlyc3QodmFsLCAxKSBGUk9NIHJwcl9uYXY7CisgICAg ICAgICAgICAgICBeCistLSBGdW5jdGlvbmFsIG5vdGF0aW9uOiBzaG91bGQgYWNjZXNzIGNvbHVt biwgbm90IFJQUiBuYXZpZ2F0aW9uCitDUkVBVEUgVEVNUCBUQUJMRSBycHJfbmFtZXMgKHByZXYg aW50LCBuZXh0IGludCwgZmlyc3QgdGV4dCwgbGFzdCB0ZXh0KTsKK0lOU0VSVCBJTlRPIHJwcl9u YW1lcyBWQUxVRVMgKDEsIDIsICdKb2UnLCAnQmxvdycpOworU0VMRUNUIHByZXYoZiksIG5leHQo ZiksIGZpcnN0KGYpLCBsYXN0KGYpIEZST00gcnByX25hbWVzIGY7CisgcHJldiB8IG5leHQgfCBm aXJzdCB8IGxhc3QgCistLS0tLS0rLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgICAgMSB8ICAgIDIg fCBKb2UgICB8IEJsb3cKKygxIHJvdykKKworRFJPUCBUQUJMRSBycHJfbmFtZXM7CistLSBDb21w b3VuZCBuYXZpZ2F0aW9uOiBQUkVWKEZJUlNUKHZhbCksIE0pCistLSBycHJfbmF2OiAoMSwxMCks KDIsMjApLCgzLDMwKSwoNCwxMCksKDUsNTApLCg2LDEwKQorLS0gUFJFVihGSVJTVCh2YWwpLCAx KTogdGFyZ2V0ID0gbWF0Y2hfc3RhcnQgKyAwIC0gMSA9IG1hdGNoX3N0YXJ0IC0gMQorLS0gQXQg bWF0Y2hfc3RhcnQ9MTogdGFyZ2V0PTAgLT4gb3V0IG9mIHJhbmdlIC0+IE5VTEwKKy0tIEF0IG1h dGNoX3N0YXJ0PTM6IHRhcmdldD0yKHZhbD0yMCkgLT4gMjAgPiAwIC0+IHRydWUKK1NFTEVDVCBp ZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgMSkgPiAwCispOworIGlkIHwgdmFsIHwg bWYgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgIHwgICAwCisg IDIgfCAgMjAgfCAgMiB8ICAgNQorICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAxMCB8ICAg IHwgICAwCisgIDUgfCAgNTAgfCAgICB8ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAKKyg2IHJv d3MpCisKKy0tIE5FWFQoRklSU1QodmFsLCAxKSwgMSk6IHRhcmdldCA9IG1hdGNoX3N0YXJ0ICsg MSArIDEgPSBtYXRjaF9zdGFydCArIDIKKy0tIEF0IG1hdGNoX3N0YXJ0PTEsIEIgb24gaWQyOiB0 YXJnZXQ9MSsxKzE9Myh2YWw9MzApLCAzMD4wIC0+IHRydWUKK1NFTEVDVCBpZCwgdmFsLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJw cl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIE5FWFQoRklSU1QodmFsLCAxKSwgMSkgPiAwCispOworIGlkIHwgdmFsIHwgbWYgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgICA2CisgIDIgfCAgMjAg fCAgICB8ICAgMAorICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAxMCB8ICAgIHwgICAwCisg IDUgfCAgNTAgfCAgICB8ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAKKyg2IHJvd3MpCisKKy0t IFBSRVYoTEFTVCh2YWwpLCAyKTogdGFyZ2V0ID0gY3VycmVudHBvcyAtIDAgLSAyID0gY3VycmVu dHBvcyAtIDIKKy0tIFNhbWUgYmFja3dhcmQgcmVhY2ggYXMgUFJFVih2YWwsIDIpCitTRUxFQ1Qg aWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFT IGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5F IEEgQVMgVFJVRSwgQiBBUyBQUkVWKExBU1QodmFsKSwgMikgSVMgTk9UIE5VTEwKKyk7CisgaWQg fCB2YWwgfCBtZiB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAg fCAgIDAKKyAgMiB8ICAyMCB8ICAyIHwgICA1CisgIDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwg IDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAg MAorKDYgcm93cykKKworLS0gTkVYVChMQVNUKHZhbCwgMSksIDIpOiB0YXJnZXQgPSBjdXJyZW50 cG9zIC0gMSArIDIgPSBjdXJyZW50cG9zICsgMQorLS0gTG9va3MgMSByb3cgYWhlYWQ6IHNhbWUg YXMgTkVYVCh2YWwsIDEpCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhUKExBU1QodmFsLCAx KSwgMikgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgIDUKKyAgMiB8ICAyMCB8ICAgIHwgICAwCisg IDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1MCB8ICAg IHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93cykKKworLS0gQ29tcG91bmQ6IG91 dGVyIG9mZnNldCBiZXlvbmQgcGFydGl0aW9uIChQUkVWIGZhciBiYWNrKQorU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIg QVMgUFJFVihGSVJTVCh2YWwpLCA5OSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAz IHwgIDMwIHwgICAwCisgIDQgfCAgMTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDEw IHwgICAwCisoNiByb3dzKQorCistLSBDb21wb3VuZDogb3V0ZXIgb2Zmc2V0IGJleW9uZCBwYXJ0 aXRpb24gKE5FWFQgZmFyIGZvcndhcmQpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhUKEZJUlNUKHZhbCks IDk5KSBJUyBOT1QgTlVMTAorKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8 ICAxMCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgMTAgfCAgIDAKKyg2IHJvd3MpCisK Ky0tIENvbXBvdW5kOiBpbm5lciBvZmZzZXQgYmV5b25kIG1hdGNoIHJhbmdlIChGSVJTVCBvZmZz ZXQgdG9vIGxhcmdlKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZS T00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIr KQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2YWwsIDk5KSwgMSkgSVMg Tk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgMTAgfCAg IDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDEwIHwgICAwCisoNiByb3dzKQorCistLSBDb21w b3VuZDogaW5uZXIgb2Zmc2V0IGJleW9uZCBtYXRjaCByYW5nZSAoTEFTVCBvZmZzZXQgdG9vIGxh cmdlKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25h diBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERF RklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChMQVNUKHZhbCwgOTkpLCAxKSBJUyBOT1QgTlVMTAor KTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICAxMCB8ICAgMAorICA1IHwg IDUwIHwgICAwCisgIDYgfCAgMTAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5kOiBOVUxM IG91dGVyIG9mZnNldCAocnVudGltZSBlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QodmFsKSwgTlVMTDo6aW50OCkgSVMg TlVMTAorKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3Qg YmUgbnVsbAorLS0gQ29tcG91bmQ6IG5lZ2F0aXZlIG91dGVyIG9mZnNldCAocnVudGltZSBlcnJv cikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5F WFQoTEFTVCh2YWwpLCAtMSkgSVMgTlVMTAorKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKy0tIENvbXBvdW5kOiBkZWZhdWx0IG9m ZnNldHMgb24gYm90aCBzaWRlcworLS0gUFJFVihGSVJTVCh2YWwpKTogaW5uZXI9MCAobWF0Y2hf c3RhcnQpLCBvdXRlcj0xIC0+IHRhcmdldCA9IG1hdGNoX3N0YXJ0IC0gMQorU0VMRUNUIGlkLCB2 YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2YWwpKSBJUyBOT1QgTlVMTAorKTsKKyBpZCB8IHZhbCB8 IG1mIHwgY250IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgICB8ICAgMAor ICAyIHwgIDIwIHwgIDIgfCAgIDUKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAg ICB8ICAgMAorICA1IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiBy b3dzKQorCistLSBORVhUKExBU1QodmFsKSk6IGlubmVyPTAgKGN1cnJlbnRwb3MpLCBvdXRlcj0x IC0+IHRhcmdldCA9IGN1cnJlbnRwb3MgKyAxCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhU KExBU1QodmFsKSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgIDUKKyAgMiB8ICAyMCB8ICAgIHwg ICAwCisgIDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1 MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93cykKKworLS0gQ29tcG91 bmQ6IGlubmVyIE5VTEwgb2Zmc2V0IChydW50aW1lIGVycm9yKQorU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2YWwsIE5VTEw6Omlu dDgpLCAxKSBJUyBOVUxMCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNl dCBtdXN0IG5vdCBiZSBudWxsCistLSBDb21wb3VuZDogaW5uZXIgbmVnYXRpdmUgb2Zmc2V0IChy dW50aW1lIGVycm9yKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9u YXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgTkVYVChMQVNUKHZhbCwgLTEpLCAxKSBJUyBOVUxMCispOworRVJST1I6ICByb3cg cGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0gQ29tcG91 bmQgKyBob3N0IHZhcmlhYmxlIG9mZnNldHMKK1BSRVBBUkUgdGVzdF9jb21wb3VuZF9vZmZzZXQo aW50OCwgaW50OCkgQVMKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsLCAk MSksICQyKSBJUyBOT1QgTlVMTAorKTsKK0VYRUNVVEUgdGVzdF9jb21wb3VuZF9vZmZzZXQoMCwg MSk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tLQorICAxIHwg IDEwIHwgICAgfCAgIDAKKyAgMiB8ICAyMCB8ICAyIHwgICA1CisgIDMgfCAgMzAgfCAgICB8ICAg MAorICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgIHwgICAwCisgIDYgfCAgMTAg fCAgICB8ICAgMAorKDYgcm93cykKKworRVhFQ1VURSB0ZXN0X2NvbXBvdW5kX29mZnNldCgxLCAx KTsKKyBpZCB8IHZhbCB8IG1mIHwgY250IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgMSB8ICAgNgorICAyIHwgIDIwIHwgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgIHwgICAw CisgIDQgfCAgMTAgfCAgICB8ICAgMAorICA1IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8 ICAgIHwgICAwCisoNiByb3dzKQorCitERUFMTE9DQVRFIHRlc3RfY29tcG91bmRfb2Zmc2V0Owor LS0gQ29tcG91bmQgKyBTS0lQIFRPIE5FWFQgUk9XOiBvdmVybGFwcGluZyBtYXRjaGVzIHdpdGgg UFJFVihGSVJTVCgpKQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgMSkg PiAwCispOworIGlkIHwgdmFsIHwgbWYgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAg MSB8ICAxMCB8ICAgIHwgICAwCisgIDIgfCAgMjAgfCAgMiB8ICAgNQorICAzIHwgIDMwIHwgIDMg fCAgIDQKKyAgNCB8ICAxMCB8ICA0IHwgICAzCisgIDUgfCAgNTAgfCAgNSB8ICAgMgorICA2IHwg IDEwIHwgICAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5kICsgbXVsdGlwbGUgcGFydGl0 aW9ucworQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hdl9wYXJ0IChnaWQgaW50LCBpZCBpbnQsIHZh bCBpbnQpOworSU5TRVJUIElOVE8gcnByX25hdl9wYXJ0IFZBTFVFUworICAgICgxLDEsMTApLCgx LDIsMjApLCgxLDMsMzApLAorICAgICgyLDEsNDApLCgyLDIsNTApLCgyLDMsNjApOworU0VMRUNU IGdpZCwgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBycHJfbmF2X3BhcnQgV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBnaWQgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChGSVJTVCh2 YWwpLCAxKSA+IDAKKyk7CisgZ2lkIHwgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0tKy0tLS0r LS0tLS0rLS0tLSstLS0tLQorICAgMSB8ICAxIHwgIDEwIHwgIDEgfCAgIDMKKyAgIDEgfCAgMiB8 ICAyMCB8ICAgIHwgICAwCisgICAxIHwgIDMgfCAgMzAgfCAgICB8ICAgMAorICAgMiB8ICAxIHwg IDQwIHwgIDEgfCAgIDMKKyAgIDIgfCAgMiB8ICA1MCB8ICAgIHwgICAwCisgICAyIHwgIDMgfCAg NjAgfCAgICB8ICAgMAorKDYgcm93cykKKworRFJPUCBUQUJMRSBycHJfbmF2X3BhcnQ7CistLSBS ZXZlcnNlIG5lc3Rpbmc6IEZJUlNUIHdyYXBwaW5nIFBSRVYgaXMgcHJvaGliaXRlZAorU0VMRUNU IGlkLCB2YWwgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKFBSRVYodmFsKSkg PiAwCispOworRVJST1I6ICBGSVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5F WFQKK0xJTkUgNTogICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QoUFJFVih2YWwpKSA+ IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJF VihGSVJTVCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkp IGNvbXBvdW5kIGZvcm1zIGFyZSBhbGxvd2VkLgorLS0gUmV2ZXJzZSBuZXN0aW5nOiBMQVNUIHdy YXBwaW5nIE5FWFQgaXMgcHJvaGliaXRlZAorU0VMRUNUIGlkLCB2YWwgRlJPTSBycHJfbmF2IFdJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIExBU1QoTkVYVCh2YWwpKSA+IDAKKyk7CitFUlJPUjogIEZJUlNUIGFu ZCBMQVNUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVYVAorTElORSA1OiAgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKE5FWFQodmFsKSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwg TkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dl ZC4KK0RST1AgVEFCTEUgcnByX25hdjsKKy0tCistLSBTS0lQIFRPIC8gQmFja3RyYWNraW5nIC8g RnJhbWUgYm91bmRhcnkKKy0tCistLSBtYXRjaCBldmVyeXRoaW5nCitTRUxFQ1QgY29tcGFueSwg dGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21w YW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBJTklUSUFM CisgUEFUVEVSTiAoQSspCisgREVGSU5FCisgIEEgQVMgVFJVRQorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55 MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDEzMAorIGNvbXBh bnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAg fCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0gbnRoX3ZhbHVl IGJleW9uZCByZWR1Y2VkIGZyYW1lIChubyBJR05PUkUgTlVMTFMpCistLSBUZXN0cyBXaW5HZXRT bG90SW5GcmFtZS9XaW5HZXRGdW5jQXJnSW5GcmFtZSBvdXQtb2YtZnJhbWUgd2l0aCBSUFIKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgbnRoX3ZhbHVlKHByaWNlLCA1KSBPVkVSIHcg QVMgbnRoXzUKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAo U1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmlj ZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29t cGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBudGhfNSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAg ICAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgCisgY29tcGFueTEgfCAw Ny0wMy0yMDIzIHwgICAxNTAgfCAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgCisgY29tcGFu eTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8 ICAgMTEwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgCisg Y29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAt MjAyMyB8ICAgMTMwIHwgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAg ICAgCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgIAorIGNvbXBhbnkyIHwg MDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQw MCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgIAorIGNvbXBh bnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMg fCAgMTEwMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgIAor IGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAKKyBjb21wYW55MiB8IDA3LTEw LTIwMjMgfCAgMTMwMCB8ICAgICAgCisoMjAgcm93cykKKworLS0gYmFja3RyYWNraW5nIHdpdGgg cmVjbGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHRkYXRl KSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChBKyBCKykKKyBERUZJTkUKKyAg QSBBUyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA+IDEwMAorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55 MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0w Mi0yMDIzIHwgICAyMDAgfCAwNy0wMi0yMDIzICB8IDA3LTA1LTIwMjMKKyBjb21wYW55MSB8IDA3 LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNC0yMDIz IHwgICAxNDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUw IHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAg ICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAwNy0wNy0yMDIzICB8 IDA3LTEwLTIwMjMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAg IHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8IAorIGNv bXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8 IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMi0y MDIzIHwgIDIwMDAgfCAwNy0wMi0yMDIzICB8IDA3LTA1LTIwMjMKKyBjb21wYW55MiB8IDA3LTAz LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwg IDE0MDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwg ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAg ICAgIHwgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAwNy0wNy0yMDIzICB8IDA3 LTEwLTIwMjMKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwg CisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8IAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAKKygyMCByb3dzKQorCist LSBiYWNrdHJhY2tpbmcgd2l0aCByZWNsYXNzaWZpY2F0aW9uIG9mIHJvd3MKKy0tIHVzaW5nIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGZpcnN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBC WSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoQSsg QispCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPiAxMDAKKyk7 CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFs dWUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8IAor IGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgMDctMDItMjAyMyAgfCAwNy0wNS0yMDIz CisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAwNy0wMy0yMDIzICB8IDA3LTA1LTIw MjMKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8IDA3LTA0LTIwMjMgIHwgMDctMDUt MjAyMworIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTEg fCAwNy0wNy0yMDIzIHwgICAxMTAgfCAwNy0wNy0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55 MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8IDA3LTA4LTIwMjMgIHwgMDctMTAtMjAyMworIGNvbXBh bnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgMDctMDktMjAyMyAgfCAwNy0xMC0yMDIzCisgY29t cGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwg MDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAyLTIw MjMgfCAgMjAwMCB8IDA3LTAyLTIwMjMgIHwgMDctMDUtMjAyMworIGNvbXBhbnkyIHwgMDctMDMt MjAyMyB8ICAxNTAwIHwgMDctMDMtMjAyMyAgfCAwNy0wNS0yMDIzCisgY29tcGFueTIgfCAwNy0w NC0yMDIzIHwgIDE0MDAgfCAwNy0wNC0yMDIzICB8IDA3LTA1LTIwMjMKKyBjb21wYW55MiB8IDA3 LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIz IHwgICAgNjAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAw IHwgMDctMDctMjAyMyAgfCAwNy0xMC0yMDIzCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAwNy0wOC0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAg MTIwMCB8IDA3LTA5LTIwMjMgIHwgMDctMTAtMjAyMworIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8 ICAxMzAwIHwgICAgICAgICAgICAgfCAKKygyMCByb3dzKQorCistLSBTS0lQIFRPIE5FWFQgUk9X IHdpdGggbGltaXRlZCBmcmFtZSAoSXNoaWktc2FuJ3MgdGVzdCBjYXNlKQorLS0gRWFjaCByb3cg c2hvdWxkIHByb2R1Y2UgaXRzIG93biBtYXRjaCB3aXRoaW4gaXRzIGZyYW1lCitXSVRIIGRhdGEg QVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoJ0EnLCAxKSwgKCdBJywgMiksCisgICgn QicsIDMpLCAoJ0InLCA0KQorICkgQVMgdChnaWQsIGlkKQorKQorU0VMRUNUIGdpZCwgaWQsIGFy cmF5X2FnZyhpZCkgT1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04g QlkgZ2lkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBQQVRURVJOIChBKykKKyBERUZJTkUgQSBBUyBpZCA8 IDEwCispOworIGdpZCB8IGlkIHwgYXJyYXlfYWdnIAorLS0tLS0rLS0tLSstLS0tLS0tLS0tLQor IEEgICB8ICAxIHwgezEsMn0KKyBBICAgfCAgMiB8IHsyfQorIEIgICB8ICAzIHwgezMsNH0KKyBC ICAgfCAgNCB8IHs0fQorKDQgcm93cykKKworLS0gTGltaXRlZCBmcmFtZSB3aXRoIGFic29ycHRp b24gdGVzdAorLS0gUm93IDA6IGZyYW1lIFswLDJdLCBjYW4ndCBzZWUgQiBhdCByb3cgMyAtPiBu byBtYXRjaAorLS0gUm93IDE6IGZyYW1lIFsxLDNdLCBjYW4gc2VlIEEgQSBCIC0+IHNob3VsZCBt YXRjaCByb3dzIDEtMworV0lUSCBmcmFtZV9hYnNvcmJfdGVzdCBBUyAoCisgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICgwLCAnQScpLCAoMSwgJ0EnKSwgKDIsICdBJyksICgzLCAnQicpCisgKSBB UyB0KGlkLCBmbGFnKQorKQorU0VMRUNUIGlkLCBmbGFnLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IGZyYW1lX2Fic29yYl90ZXN0CitXSU5ET1cgdyBBUyAoCisgT1JERVIgQlkgaWQKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgUEFUVEVSTiAoQSsgQikKKyBERUZJTkUKKyAgQSBBUyBmbGFnID0gJ0EnLAor ICBCIEFTIGZsYWcgPSAnQicKKyk7CisgaWQgfCBmbGFnIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDAgfCBBICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMSB8IEEgICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMworICAyIHwgQSAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCBCICAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgb2Zmc2V0IEZPTExPV0lORworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgZmlyc3RfdmFsdWUodGRhdGUpIE9WRVIgdywgbGFzdF92YWx1ZSh0ZGF0ZSkgT1ZFUiB3LAor IGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgMiBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJO IChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHBy aWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKyBj b21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8 IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAwNy0w MS0yMDIzICB8IDA3LTAzLTIwMjMgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAg MjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAz LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAwNy0wNC0yMDIzICB8IDA3LTA2LTIwMjMgfCAgICAg MworIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAw Ny0wNy0yMDIzICB8IDA3LTA5LTIwMjMgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8 ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgMDctMDEtMjAyMyAgfCAwNy0w My0yMDIzIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAy MyB8ICAxNDAwIHwgMDctMDQtMjAyMyAgfCAwNy0wNi0yMDIzIHwgICAgIDMKKyBjb21wYW55MiB8 IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgMDctMDctMjAyMyAgfCAw Ny0wOS0yMDIzIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEy MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAt MjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dz KQorCistLQorLS0gQWdncmVnYXRlcworLS0KKy0tIHVzaW5nIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3LAorIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBtYXgocHJpY2UpIE9W RVIgdywKKyBtaW4ocHJpY2UpIE9WRVIgdywKKyBzdW0ocHJpY2UpIE9WRVIgdywKKyBhdmcocHJp Y2UpIE9WRVIgdywKKyBjb3VudChwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBB UyAoCitQQVJUSVRJT04gQlkgY29tcGFueQorUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCitBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKK0lOSVRJ QUwKK1BBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKK0RFRklORQorU1RBUlQgQVMgVFJVRSwKK1VQ IEFTIHByaWNlID4gUFJFVihwcmljZSksCitET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7 CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFs dWUgfCBtYXggIHwgbWluIHwgc3VtICB8ICAgICAgICAgIGF2ZyAgICAgICAgICB8IGNvdW50IAor LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBj b21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE0MCB8 ICAyMDAgfCAxMDAgfCAgNTkwIHwgIDE0Ny41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21w YW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAg fCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAg ICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAg fCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2 LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAgICAgIDEyMCB8ICAxMzAgfCAgOTAgfCAg NDUwIHwgIDExMi41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA3LTIw MjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMg fCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAg IDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEz MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8 ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDIwMDAgfCAgNTAgfCA0OTUwIHwgMTIzNy41MDAw MDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwg ICAgICAgMTIwMCB8IDEzMDAgfCAgNjAgfCAzNjYwIHwgIDkxNS4wMDAwMDAwMDAwMDAwMDAwIHwg ICAgIDQKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKygyMCBy b3dzKQorCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLAorIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbGFzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LAorIG1heChwcmljZSkgT1ZFUiB3LAorIG1pbihwcmljZSkgT1ZF UiB3LAorIHN1bShwcmljZSkgT1ZFUiB3LAorIGF2ZyhwcmljZSkgT1ZFUiB3LAorIGNvdW50KHBy aWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKK1BBUlRJVElPTiBCWSBjb21w YW55CitST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK0FG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKK0lOSVRJQUwKK1BBVFRFUk4gKFNUQVJUIFVQKyBE T1dOKykKK0RFRklORQorU1RBUlQgQVMgVFJVRSwKK1VQIEFTIHByaWNlID4gUFJFVihwcmljZSks CitET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAg IHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBtYXggIHwgbWluICB8IHN1bSAg fCAgICAgICAgICBhdmcgICAgICAgICAgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTQwIHwgIDIwMCB8ICAxMDAgfCAgNTkwIHwg IDE0Ny41MDAwMDAwMDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAg IDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAgICAxNDAgfCAgICAgICAgIDkwIHwgIDE1MCB8ICAgOTAgfCAgMzgwIHwgIDEyNi42 NjY2NjY2NjY2NjY2NjY3IHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICA5MCB8ICAgICAgICAxMjAgfCAgMTMwIHwgICA5MCB8ICA0NTAgfCAgMTEyLjUwMDAw MDAwMDAwMDAwMDAgfCAgICAgNAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAg ICAgICAxMTAgfCAgICAgICAgMTIwIHwgIDEzMCB8ICAxMTAgfCAgMzYwIHwgIDEyMC4wMDAwMDAw MDAwMDAwMDAwIHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUw IHwgICAgICAgMTQwMCB8IDIwMDAgfCAgIDUwIHwgNDk1MCB8IDEyMzcuNTAwMDAwMDAwMDAwMDAw MCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAxNDAwIHwgICAg ICAgICA2MCB8IDE1MDAgfCAgIDYwIHwgMjk2MCB8ICA5ODYuNjY2NjY2NjY2NjY2NjY2NyB8ICAg ICAzCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgNjAgfCAgICAgICAx MjAwIHwgMTMwMCB8ICAgNjAgfCAzNjYwIHwgIDkxNS4wMDAwMDAwMDAwMDAwMDAwIHwgICAgIDQK KyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAxMTAwIHwgICAgICAgMTIw MCB8IDEzMDAgfCAxMTAwIHwgMzYwMCB8IDEyMDAuMDAwMDAwMDAwMDAwMDAwMCB8ICAgICAzCisg Y29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93 cykKKworLS0gcm93X251bWJlcigpIHdpdGhpbiBSUFIgcmVkdWNlZCBmcmFtZQorU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgcm93X251bWJlcigpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3 CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNUQVJUIFVQ KyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgcm93X251bWJlciB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEt MjAyMyB8ICAgMTAwIHwgICAgICAgICAgMSB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wMi0yMDIz IHwgICAyMDAgfCAgICAgICAgICAyIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAg IDE1MCB8ICAgICAgICAgIDMgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAgICAgNCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAg ICAgICAgICA1IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAg ICAgIDYgfCAgICAgNAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAg NyB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICA4IHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgIDkgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAxMCB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAxIHwgICAgIDQKKyBjb21w YW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgIDIgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgMyB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICA0IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1 LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgIDUgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAy MyB8ICAgIDYwIHwgICAgICAgICAgNiB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwg IDExMDAgfCAgICAgICAgICA3IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMw MCB8ICAgICAgICAgIDggfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwg ICAgICAgICAgOSB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgIDEwIHwgICAgIDAKKygyMCByb3dzKQorCistLQorLS0gU1FMIEludGVncmF0aW9uOiBKT0lO LCBDVEUsIExBVEVSQUwKKy0tCistLSBKT0lOIGNhc2UKK0NSRUFURSBURU1QIFRBQkxFIHQxIChp IGludCwgdjEgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHQyIChqIGludCwgdjIgaW50KTsKK0lO U0VSVCBJTlRPIHQxIFZBTFVFUygxLDEwKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUygxLDExKTsK K0lOU0VSVCBJTlRPIHQxIFZBTFVFUygxLDEyKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDEw KTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygyLDExKTsKK0lOU0VSVCBJTlRPIHQyIFZBTFVFUygy LDEyKTsKK1NFTEVDVCAqIEZST00gdDEsIHQyIFdIRVJFIHQxLnYxIDw9IDExIEFORCB0Mi52MiA8 PSAxMTsKKyBpIHwgdjEgfCBqIHwgdjIgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAxMCB8IDIg fCAxMAorIDEgfCAxMCB8IDIgfCAxMQorIDEgfCAxMSB8IDIgfCAxMAorIDEgfCAxMSB8IDIgfCAx MQorKDQgcm93cykKKworU0VMRUNUICosIGNvdW50KCopIE9WRVIgdyBGUk9NIHQxLCB0MgorV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSB0MS5pCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKEEpCisgREVGSU5F CisgQSBBUyB2MSA8PSAxMSBBTkQgdjIgPD0gMTEKKyk7CisgaSB8IHYxIHwgaiB8IHYyIHwgY291 bnQgCistLS0rLS0tLSstLS0rLS0tLSstLS0tLS0tCisgMSB8IDEwIHwgMiB8IDEwIHwgICAgIDEK KyAxIHwgMTAgfCAyIHwgMTEgfCAgICAgMQorIDEgfCAxMCB8IDIgfCAxMiB8ICAgICAwCisgMSB8 IDExIHwgMiB8IDEwIHwgICAgIDEKKyAxIHwgMTEgfCAyIHwgMTEgfCAgICAgMQorIDEgfCAxMSB8 IDIgfCAxMiB8ICAgICAwCisgMSB8IDEyIHwgMiB8IDEwIHwgICAgIDAKKyAxIHwgMTIgfCAyIHwg MTEgfCAgICAgMAorIDEgfCAxMiB8IDIgfCAxMiB8ICAgICAwCisoOSByb3dzKQorCistLSBXSVRI IGNhc2UKK1dJVEggd3N0b2NrIEFTICgKKyAgU0VMRUNUICogRlJPTSBzdG9jayBXSEVSRSB0ZGF0 ZSA8ICcyMDIzLTA3LTA4JworKQorU0VMRUNUIHRkYXRlLCBwcmljZSwKK2ZpcnN0X3ZhbHVlKHRk YXRlKSBPVkVSIHcsCitjb3VudCgqKSBPVkVSIHcKKyBGUk9NIHdzdG9jaworIFdJTkRPVyB3IEFT ICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4g KFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJp Y2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyAwNy0wMS0yMDIzIHwgICAxMDAgfCAwNy0wMS0y MDIzICB8ICAgICA0CisgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgMAor IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgIDAKKyAwNy0wNC0yMDIzIHwg ICAxNDAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAg ICAgICAgfCAgICAgMAorIDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgIDAK KyAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDEtMjAyMyB8 ICAgIDUwIHwgMDctMDEtMjAyMyAgfCAgICAgNAorIDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAg ICAgICAgIHwgICAgIDAKKyAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAw CisgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgIDAKKyAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAg ICAgICAgICB8ICAgICAwCisgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAg MAorKDE0IHJvd3MpCisKKy0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4gZm9yY2VzIFdpbmRv d0FnZyByZXNjYW4gd2l0aCBSUFIKKy0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5kb3dBZ2cgY2xlYXJp bmcgbmF2X3Nsb3QKK1NFTEVDVCBnLngsIHN1Yi4qCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAy KSBnKHgpLAorTEFURVJBTCAoCisgIFNFTEVDVCBpZCwgcHJpY2UsIGNvdW50KCopIE9WRVIgdyBB UyBjCisgIEZST00gKFZBTFVFUyAoMSwgMTAwKSwgKDIsIDIwMCksICgzLCAxNTApKSBBUyB0KGlk LCBwcmljZSkKKyAgV0hFUkUgaWQgPD0gZy54ICsgMQorICBXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVGSU5FCisgICAgICBTVEFSVCBB UyBUUlVFLAorICAgICAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKQorICApCispIHN1YgorT1JE RVIgQlkgZy54LCBzdWIuaWQ7CisgeCB8IGlkIHwgcHJpY2UgfCBjIAorLS0tKy0tLS0rLS0tLS0t LSstLS0KKyAxIHwgIDEgfCAgIDEwMCB8IDIKKyAxIHwgIDIgfCAgIDIwMCB8IDAKKyAyIHwgIDEg fCAgIDEwMCB8IDIKKyAyIHwgIDIgfCAgIDIwMCB8IDAKKyAyIHwgIDMgfCAgIDE1MCB8IDAKKyg1 IHJvd3MpCisKKy0tIFBSRVYgaGFzIG11bHRpcGxlIGNvbHVtbiByZWZlcmVuY2UKK0NSRUFURSBU RU1QIFRBQkxFIHJwcjEgKGlkIElOVEVHRVIsIGkgU0VSSUFMLCBqIElOVEVHRVIpOworSU5TRVJU IElOVE8gcnByMShpZCwgaikgU0VMRUNUIDEsIGcqMiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MCkgQVMgZzsKK1NFTEVDVCBpZCwgaSwgaiwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBycHIxCisg V0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBpZAorIE9SREVSIEJZIGkKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgQ09ORCspCisgREVGSU5F CisgIFNUQVJUIEFTIFRSVUUsCisgIENPTkQgQVMgUFJFVihpICsgaiArIDEpIDwgMTAKKyk7Cisg aWQgfCBpICB8IGogIHwgY291bnQgCistLS0tKy0tLS0rLS0tLSstLS0tLS0tCisgIDEgfCAgMSB8 ICAyIHwgICAgIDMKKyAgMSB8ICAyIHwgIDQgfCAgICAgMAorICAxIHwgIDMgfCAgNiB8ICAgICAw CisgIDEgfCAgNCB8ICA4IHwgICAgIDAKKyAgMSB8ICA1IHwgMTAgfCAgICAgMAorICAxIHwgIDYg fCAxMiB8ICAgICAwCisgIDEgfCAgNyB8IDE0IHwgICAgIDAKKyAgMSB8ICA4IHwgMTYgfCAgICAg MAorICAxIHwgIDkgfCAxOCB8ICAgICAwCisgIDEgfCAxMCB8IDIwIHwgICAgIDAKKygxMCByb3dz KQorCistLQorLS0gTGFyZ2Utc2NhbGUgLyBzY2FsYWJpbGl0eSB0ZXN0cworLS0KKy0tIFNtb2tl IHRlc3QgZm9yIGxhcmdlciBwYXJ0aXRpb25zLgorV0lUSCBzIEFTICgKKyBTRUxFQ1QgdiwgY291 bnQoKikgT1ZFUiB3IEFTIGMKKyBGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHYpCisgV0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJ QUwKKyAgUEFUVEVSTiAoIHIrICkKKyAgREVGSU5FIHIgQVMgVFJVRQorICkKKykKKy0tIFNob3Vs ZCBiZSBleGFjdGx5IG9uZSBsb25nIG1hdGNoIGFjcm9zcyBhbGwgcm93cy4KK1NFTEVDVCAqIEZS T00gcyBXSEVSRSBjID4gMDsKKyB2IHwgIGMgICAKKy0tLSstLS0tLS0KKyAxIHwgNTAwMAorKDEg cm93KQorCitXSVRIIHMgQVMgKAorIFNFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYworIEZS T00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgdikKKyBXSU5ET1cgdyBBUyAoCisg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOICggciApCisg IERFRklORSByIEFTIFRSVUUKKyApCispCistLSBFdmVyeSByb3cgc2hvdWxkIGJlIGl0cyBvd24g bWF0Y2guCitTRUxFQ1QgY291bnQoKikgRlJPTSBzIFdIRVJFIGMgPiAwOworIGNvdW50IAorLS0t LS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIExhcmdlIHBhcnRpdGlvbiB0ZXN0OiAxMDBLIHJv d3Mgd2l0aCBBKyBCKiBDezEwMDAwLH0gcGF0dGVybgorLS0gVGVzdHMgdGhhdCBpbnQzMiBjb3Vu dCBkb2Vzbid0IG92ZXJmbG93IHdpdGggbGFyZ2UgcmVwZXRpdGlvbnMKK1dJVEggZGF0YSBBUyAo CisgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCAxMDAwMDApIEFTIHYKKyksCityZXN1bHQgQVMg KAorIFNFTEVDVCB2LAorICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAg ICAgICBmaXJzdF92YWx1ZSh2KSBPVkVSIHcgQVMgbWF0Y2hfZmlyc3QsCisgICAgICAgIGxhc3Rf dmFsdWUodikgT1ZFUiB3IEFTIG1hdGNoX2xhc3QKKyBGUk9NIGRhdGEKKyBXSU5ET1cgdyBBUyAo CisgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOIChBKyBC KiBDezEwMDAwLH0pCisgIERFRklORQorICAgQSBBUyB2IDwgMzMzMzMsCisgICBCIEFTIHYgPj0g MzMzMzMgQU5EIHYgPCA2NjY2NiwKKyAgIEMgQVMgdiA+PSA2NjY2NiBBTkQgdiA8IDk5OTk5Cisg KQorKQorLS0gU2hvdWxkIG1hdGNoOiBBICgzMzMzMyByb3dzKSArIEIgKDMzMzMzIHJvd3MpICsg QyAoMzMzMzMgcm93cykgPSA5OTk5OSByb3dzCitTRUxFQ1QgbWF0Y2hfZmlyc3QsIG1hdGNoX2xh c3QsIG1hdGNoX2xlbiBGUk9NIHJlc3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOworIG1hdGNoX2Zp cnN0IHwgbWF0Y2hfbGFzdCB8IG1hdGNoX2xlbiAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgICAgICAgICAgIDAgfCAgICAgIDk5OTk4IHwgICAgIDk5OTk5CisoMSBy b3cpCisKKy0tIEpJVCBQUkVWL05FWFQgbmF2aWdhdGlvbiB0ZXN0OiAxMDBLIHJvd3Mgd2l0aCBQ UkVWIGluIERFRklORS4KKy0tIEV4ZXJjaXNlcyBFRU9QX1JQUl9OQVZfU0VUL1JFU1RPUkUgSklU IGNvZGUgcGF0aHMgKGhhc19ycHJfbmF2IHJlbG9hZCkKKy0tIGF0IHNjYWxlLiBWLXNoYXBlOiBw cmljZSByaXNlcyB0aGVuIGZhbGxzLCByZXBlYXRlZCBhY3Jvc3MgcGFydGl0aW9uLgorU0VUIGpp dCA9IG9uOworU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1dJVEggZGF0YSBBUyAoCisgU0VMRUNU IGksIGFicyg1MDAwMCAtIGkpIEFTIHByaWNlCisgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MDAwKSBpCispLAorcmVzdWx0IEFTICgKKyBTRUxFQ1QgaSwgcHJpY2UsCisgICAgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBtYXRjaF9sZW4sCisgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVS IHcgQVMgbWF0Y2hfZmlyc3QKKyBGUk9NIGRhdGEKKyBXSU5ET1cgdyBBUyAoCisgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOIChET1dOKyBVUCspCisgIERF RklORQorICAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICAgVVAgQVMgcHJpY2UgPiBQ UkVWKHByaWNlKQorICkKKykKK1NFTEVDVCBjb3VudCgqKSBBUyBtYXRjaGVkX3Jvd3MsIG1heCht YXRjaF9sZW4pIEFTIGxvbmdlc3RfbWF0Y2gKK0ZST00gcmVzdWx0IFdIRVJFIG1hdGNoX2xlbiA+ IDA7CisgbWF0Y2hlZF9yb3dzIHwgbG9uZ2VzdF9tYXRjaCAKKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgMSB8ICAgICAgICAgOTk5OTkKKygxIHJvdykKKworUkVT RVQgaml0X2Fib3ZlX2Nvc3Q7CitSRVNFVCBqaXQ7CistLSBKSVQgY29tcG91bmQgbmF2aWdhdGlv biB0ZXN0CitTRVQgaml0ID0gb247CitTRVQgaml0X2Fib3ZlX2Nvc3QgPSAwOworU0VMRUNUIGNv dW50KCopIEFTIG1hdGNoZWRfcm93cworRlJPTSAoCisgU0VMRUNUIHYsIGNvdW50KCopIE9WRVIg dyBBUyBtYXRjaF9sZW4KKyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHYpCisg V0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIFBBVFRFUk4gKEEg QispCisgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgUFJFVihGSVJTVCh2KSwgMSkgPiAwCisgKQor KSBzdWIgV0hFUkUgbWF0Y2hfbGVuID4gMDsKKyBtYXRjaGVkX3Jvd3MgCistLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBqaXRfYWJvdmVfY29zdDsKK1JFU0VU IGppdDsKKy0tCistLSBJR05PUkUgTlVMTFMKKy0tCistLSBubyBOVUxMIHJvd3MgY2FzZS4gVGhl IHJlc3VsdCBzaG91bGQgYmUgaWRlbnRpY2FsIHdpdGggImJhc2ljIHRlc3QgdXNpbmcgUFJFViIK K1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBJR05PUkUg TlVMTFMgT1ZFUiB3LAorIGxhc3RfdmFsdWUocHJpY2UpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisg bnRoX3ZhbHVlKHRkYXRlLCAyKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBG Uk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBB VFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAg QVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCisp OworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3Zh bHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIz IHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFu eTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkw IHwgICAgICAgIDEyMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDEx MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8 ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOS0y MDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3 LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnky IHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwgMDctMDIt MjAyMworIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAg fCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAgfCAwNy0wNy0yMDIzCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8 IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBh bnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisg Y29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAKKygyMCByb3dzKQorCistLSBudGhfdmFsdWUgd2l0aCBJR05PUkUgTlVMTFMgb3B0aW9uIHdh bnRzIHRvIGZpbmQgdGhlIHNlY29uZCByb3cgYnV0CistLSBkdWUgdG8gYSBOVUxMIGluIHRoZSBt aWRkbGUsIGl0IHJldHVybnMgdGhlIHRoaXJkIHJvdy4KK1dJVEggZGF0YSBBUyAoCisgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICgxMCwgMSksICgxMSwgTlVMTCksICgxMiwgMyksICgxMywgNCkK KyAgKSBBUyB0KGdpZCwgaWQpKQorICBTRUxFQ1QgZ2lkLCBpZCwgbnRoX3ZhbHVlKGlkLCAyKSBJ R05PUkUgTlVMTFMgT1ZFUiB3IEFTIHNlY29uZF92YWwsCisgIGFycmF5X2FnZyhpZCkgT1ZFUiB3 CisgIEZST00gZGF0YQorICBXSU5ET1cgdyBBUyAoCisgICBPUkRFUiBCWSBnaWQKKyAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICBQQVRURVJOIChBKykKKyAgIERFRklORSBBIEFTIGdp ZCA8IDEzCisgICk7CisgZ2lkIHwgaWQgfCBzZWNvbmRfdmFsIHwgYXJyYXlfYWdnICAKKy0tLS0t Ky0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAxMCB8ICAxIHwgICAgICAgICAgMyB8 IHsxLE5VTEwsM30KKyAgMTEgfCAgICB8ICAgICAgICAgICAgfCAKKyAgMTIgfCAgMyB8ICAgICAg ICAgICAgfCAKKyAgMTMgfCAgNCB8ICAgICAgICAgICAgfCAKKyg0IHJvd3MpCisKKy0tIG50aF92 YWx1ZSB3aXRoIElHTk9SRSBOVUxMUyBvcHRpb24gd2FudHMgdG8gZmluZCB0aGUgdGhpcmQgcm93 IGJ1dAorLS0gZHVlIHRvIGEgTlVMTCBpbiB0aGUgbWlkZGxlLCBpdCByZWFjaGVzIHRoZSBlbmQg b2YgcmVkdWNlZCBmcmFtZSBhbmQKKy0tIHJldHVybnMgTlVMTAorV0lUSCBkYXRhIEFTICgKKyBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKDEwLCAxKSwgKDExLCBOVUxMKSwgKDEyLCAzKSwgKDEz LCA0KQorICApIEFTIHQoZ2lkLCBpZCkpCisgIFNFTEVDVCBnaWQsIGlkLCBudGhfdmFsdWUoaWQs IDMpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgdGhyaWRfdmFsLAorICBhcnJheV9hZ2coaWQpIE9W RVIgdworICBGUk9NIGRhdGEKKyAgV0lORE9XIHcgQVMgKAorICAgT1JERVIgQlkgZ2lkCisgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgUEFUVEVSTiAoQSspCisgICBERUZJTkUgQSBB UyBnaWQgPCAxMworICApOworIGdpZCB8IGlkIHwgdGhyaWRfdmFsIHwgYXJyYXlfYWdnICAKKy0t LS0tKy0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEwIHwgIDEgfCAgICAgICAgICAg fCB7MSxOVUxMLDN9CisgIDExIHwgICAgfCAgICAgICAgICAgfCAKKyAgMTIgfCAgMyB8ICAgICAg ICAgICB8IAorICAxMyB8ICA0IHwgICAgICAgICAgIHwgCisoNCByb3dzKQorCistLSBudGhfdmFs dWUgYmV5b25kIHJlZHVjZWQgZnJhbWUgd2l0aCBJR05PUkUgTlVMTFMKKy0tIFRlc3RzIGlnbm9y ZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lIGVhcmx5IG91dC1vZi1mcmFtZSBjaGVjaworU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyBudGhfdmFsdWUocHJpY2UsIDUpIElHTk9SRSBOVUxM UyBPVkVSIHcgQVMgbnRoXzVfaW4KK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJ T04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAor ICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmlj ZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBudGhfNV9pbiAKKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEt MjAyMyB8ICAgMTAwIHwgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8 ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgIAorIGNv bXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA1 LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAg fCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0w OS0yMDIzIHwgICAxMjAgfCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMw IHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDct MDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQw MCB8ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgIAor IGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgCisoMjAgcm93cykKKwor LS0gSUdOT1JFIE5VTExTICsgZmlyc3RfdmFsdWUgd2hlcmUgZmlyc3QgdmFsdWUgaW4gcmVkdWNl ZCBmcmFtZSBpcyBOVUxMCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAoMSwgTlVMTCksICgyLCBOVUxMKSwgKDMsIDMwKSwgKDQsIDQwKQorICkgQVMgdChpZCwgdmFs KSkKK1NFTEVDVCBpZCwgdmFsLAorIGZpcnN0X3ZhbHVlKHZhbCkgSUdOT1JFIE5VTExTIE9WRVIg dyBBUyBmdl9pZ251bGwsCisgY291bnQoKikgT1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFT ICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKEEr KQorIERFRklORSBBIEFTIFRSVUUKKyk7CisgaWQgfCB2YWwgfCBmdl9pZ251bGwgfCBjb3VudCAK Ky0tLS0rLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLQorICAxIHwgICAgIHwgICAgICAgIDMwIHwg ICAgIDQKKyAgMiB8ICAgICB8ICAgICAgICAgICB8ICAgICAwCisgIDMgfCAgMzAgfCAgICAgICAg ICAgfCAgICAgMAorICA0IHwgIDQwIHwgICAgICAgICAgIHwgICAgIDAKKyg0IHJvd3MpCisKKy0t IElHTk9SRSBOVUxMUyArIGFsbCB2YWx1ZXMgTlVMTCBpbiByZWR1Y2VkIGZyYW1lCitXSVRIIGRh dGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMSwgTlVMTCksICgyLCBOVUxMKSwg KDMsIE5VTEwpCisgKSBBUyB0KGlkLCB2YWwpKQorU0VMRUNUIGlkLCB2YWwsCisgZmlyc3RfdmFs dWUodmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGZ2X2lnbnVsbCwKKyBsYXN0X3ZhbHVlKHZh bCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsdl9pZ251bGwsCisgY291bnQoKikgT1ZFUiB3CitG Uk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworIFBBVFRFUk4gKEErKQorIERFRklORSBBIEFTIFRSVUUKKyk7CisgaWQgfCB2YWwg fCBmdl9pZ251bGwgfCBsdl9pZ251bGwgfCBjb3VudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLQorICAxIHwgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwg ICAgIDMKKyAgMiB8ICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAwCisgIDMgfCAg ICAgfCAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgMAorKDMgcm93cykKKworLS0KKy0tIGxh c3RfdmFsdWUgSUdOT1JFIE5VTExTIHdpdGggcmVkdWNlZCBmcmFtZSBjb250YWluaW5nIGFsbCBO VUxMcworLS0gRXhlcmNpc2VzIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lIFNFRUtfVEFJ TCBvdXQtb2YtZnJhbWUgcGF0aAorLS0gd2hlbiBub3RudWxsX3JlbHBvcyA+PSBudW1fcmVkdWNl ZF9mcmFtZS4KKy0tCitDUkVBVEUgVEVNUCBUQUJMRSBycHJfbnVsbHZhbCAoaWQgSU5ULCB2YWwg SU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9udWxsdmFsIFZBTFVFUyAoMSwgMTApLCAoMiwgTlVMTCks ICgzLCBOVUxMKSwgKDQsIDIwKTsKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIGxhc3RfdmFsdWUo dmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGx2X2lnbnVsbCwKKyAgICAgICBjb3VudCgqKSBP VkVSIHcgQVMgY250CitGUk9NIHJwcl9udWxsdmFsCitXSU5ET1cgdyBBUyAoCisgIE9SREVSIEJZ IGlkCisgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgUEFUVEVSTiAoQSBCKykKKyAgREVG SU5FCisgICAgQSBBUyB2YWwgSVMgTk9UIE5VTEwsCisgICAgQiBBUyB2YWwgSVMgTlVMTAorKTsK KyBpZCB8IHZhbCB8IGx2X2lnbnVsbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgICAgICAxMCB8ICAgMworICAyIHwgICAgIHwgICAgICAgICAgIHwg ICAwCisgIDMgfCAgICAgfCAgICAgICAgICAgfCAgIDAKKyAgNCB8ICAyMCB8ICAgICAgICAgICB8 ICAgMAorKDQgcm93cykKKworLS0KKy0tIE5VTEwgaGFuZGxpbmcKKy0tCitDUkVBVEUgVEVNUCBU QUJMRSBzdG9ja19udWxsIChjb21wYW55IFRFWFQsIHRkYXRlIERBVEUsIHByaWNlIElOVEVHRVIp OworSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScsICcyMDIzLTA3LTAxJywgMTAw KTsKK0lOU0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgnYzEnLCAnMjAyMy0wNy0wMicsIE5V TEwpOyAgLS0gTlVMTCBpbiBtaWRkbGUKK0lOU0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgn YzEnLCAnMjAyMy0wNy0wMycsIDIwMCk7CitJTlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAo J2MxJywgJzIwMjMtMDctMDQnLCAxNTApOworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwg Y291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2NvdW50CitGUk9NIHN0b2NrX251bGwKK1dJTkRPVyB3 IEFTICgKKyAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgT1JERVIgQlkgdGRhdGUKKyAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIFBBVFRFUk4gKFNU QVJUIFVQIERPV04pCisgIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBBUyBwcmljZSA+IFBSRVYo cHJpY2UpLCBET1dOIEFTIHByaWNlIDwKK1BSRVYocHJpY2UpCispOworIGNvbXBhbnkgfCAgIHRk YXRlICAgIHwgcHJpY2UgfCBtYXRjaF9jb3VudCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgYzEgICAgICB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgICAwCisgYzEgICAgICB8IDA3LTAyLTIwMjMgfCAgICAgICB8ICAgICAgICAgICAwCisgYzEg ICAgICB8IDA3LTAzLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAwCisgYzEgICAgICB8IDA3LTA0 LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAwCisoNCByb3dzKQorCistLSBDb25zZWN1dGl2ZSBO VUxMczogUFJFViBuYXZpZ2F0ZXMgdGhyb3VnaCBOVUxMIHZhbHVlcworQ1JFQVRFIFRFTVAgVEFC TEUgcnByX2NvbnNlY19udWxsIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2Nv bnNlY19udWxsIFZBTFVFUworICgxLCAxMDApLCAoMiwgTlVMTCksICgzLCBOVUxMKSwgKDQsIE5V TEwpLCAoNSwgMjAwKSwgKDYsIDMwMCk7CistLSBQUkVWKHZhbCkgSVMgTlVMTCBzdWNjZWVkcyBm b3IgYm90aCBudWxsX3Nsb3QgKGZpcnN0IHJvdykgYW5kIGFjdHVhbCBOVUxMCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY29uc2VjX251bGwKK1dJTkRP VyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRF Uk4gKEEgQisgQykKKyBERUZJTkUKKyAgQSBBUyB2YWwgSVMgTlVMTCwKKyAgQiBBUyB2YWwgSVMg TlVMTCBBTkQgUFJFVih2YWwpIElTIE5VTEwsCisgIEMgQVMgdmFsIElTIE5PVCBOVUxMCispOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgMTAwIHwgICAwCisgIDIg fCAgICAgfCAgIDQKKyAgMyB8ICAgICB8ICAgMAorICA0IHwgICAgIHwgICAwCisgIDUgfCAyMDAg fCAgIDAKKyAgNiB8IDMwMCB8ICAgMAorKDYgcm93cykKKworLS0gTkVYVCh2YWwpIHRocm91Z2gg Y29uc2VjdXRpdmUgTlVMTHMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CitGUk9NIHJwcl9jb25zZWNfbnVsbAorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoQSBCKyBDKQorIERFRklORQorICBBIEFT IHZhbCBJUyBOT1QgTlVMTCwKKyAgQiBBUyB2YWwgSVMgTlVMTCBBTkQgTkVYVCh2YWwpIElTIE5V TEwsCisgIEMgQVMgdmFsIElTIE5VTEwgQU5EIE5FWFQodmFsKSBJUyBOT1QgTlVMTAorKTsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8IDEwMCB8ICAgNAorICAyIHwg ICAgIHwgICAwCisgIDMgfCAgICAgfCAgIDAKKyAgNCB8ICAgICB8ICAgMAorICA1IHwgMjAwIHwg ICAwCisgIDYgfCAzMDAgfCAgIDAKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2NvbnNlY19u dWxsOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBTdG9jayBTY2VuYXJpbyBUZXN0cyAoMTYzMiByb3dzLCBwYXJ0aXRp b25lZCByZWdpb25zKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBDb25zZWN1dGl2ZSByaXNpbmcgZGF5czogZmluZCBz dHJlYWtzIG9mIDcrIGRheXMKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1 ZShybikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVS IHcgQVMgZW5kX3JuLAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZS T00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgcGFy dF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFVQezcsfSkKKyAgICAgICAgREVGSU5FIFVQIEFT IHByaWNlID4gUFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkg c3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBkYXlzIAorLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0KKyAgICAgICAyOSB8ICAgICAzNSB8ICAgIDcKKyAgICAgICAzOCB8ICAgICA0NCB8 ICAgIDcKKyAgICAgICA5NiB8ICAgIDEwMiB8ICAgIDcKKyAgICAgIDExOCB8ICAgIDEyNSB8ICAg IDgKKyAgICAgIDMwOCB8ICAgIDMxNyB8ICAgMTAKKyAgICAgIDMyOCB8ICAgIDMzNCB8ICAgIDcK KyAgICAgIDQ3NSB8ICAgIDQ4MSB8ICAgIDcKKyAgICAgIDQ5MSB8ICAgIDQ5NyB8ICAgIDcKKyAg ICAgIDUwOSB8ICAgIDUxNyB8ICAgIDkKKyAgICAgIDUzNiB8ICAgIDU0MiB8ICAgIDcKKyAgICAg IDU4NiB8ICAgIDU5MiB8ICAgIDcKKyAgICAgIDY0MyB8ICAgIDY1MCB8ICAgIDgKKyAgICAgIDc0 MCB8ICAgIDc0NiB8ICAgIDcKKyAgICAgIDc1MyB8ICAgIDc2MCB8ICAgIDgKKyAgICAgIDkwNCB8 ICAgIDkxMCB8ICAgIDcKKyAgICAgIDk1NiB8ICAgIDk2NSB8ICAgMTAKKyAgICAgIDk4NSB8ICAg IDk5MSB8ICAgIDcKKyAgICAgMTA5NSB8ICAgMTEwMSB8ICAgIDcKKyAgICAgMTEwNCB8ICAgMTEx MCB8ICAgIDcKKyAgICAgMTE4MSB8ICAgMTE4NyB8ICAgIDcKKyAgICAgMTIyMSB8ICAgMTIyOCB8 ICAgIDgKKyAgICAgMTI2MiB8ICAgMTI2OCB8ICAgIDcKKyAgICAgMTI3MiB8ICAgMTI3OCB8ICAg IDcKKyAgICAgMTM3MyB8ICAgMTM4MCB8ICAgIDgKKyAgICAgMTQzNCB8ICAgMTQ0MCB8ICAgIDcK KyAgICAgMTQ4NSB8ICAgMTQ5MSB8ICAgIDcKKyAgICAgMTU1MyB8ICAgMTU1OSB8ICAgIDcKKyAg ICAgMTU3NiB8ICAgMTU4MiB8ICAgIDcKKyAgICAgMTYyNCB8ICAgMTYzMSB8ICAgIDgKKygyOSBy b3dzKQorCistLSBWLXNoYXBlIHJlY292ZXJ5OiA0KyBkYXlzIGRlY2xpbmUgZm9sbG93ZWQgYnkg NCsgZGF5cyByaXNlCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4p IE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFT IGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9w cmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwK KyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jawor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAg T1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg ICAgICBQQVRURVJOIChERUNMSU5FezQsfSBSSVNFezQsfSkKKyAgICAgICAgREVGSU5FCisgICAg ICAgICAgICBERUNMSU5FIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgICAgICAgICAgICBSSVNF IEFTIHByaWNlID4gUFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIg Qlkgc3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9wcmlj ZSB8IGRheXMgCistLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tCisgICAgICAgODQgfCAgICAgOTMgfCAgICAgMzAxLjAwMCB8ICAgMzA5Ljc1MCB8ICAg MTAKKyAgICAgIDExNCB8ICAgIDEyNSB8ICAgICAzOTQuNTAwIHwgICA0MTguNzUwIHwgICAxMgor ICAgICAgMTczIHwgICAgMTgzIHwgICAgIDI2MC4wMDAgfCAgIDI4Mi4wMDAgfCAgIDExCisgICAg ICAyMDQgfCAgICAyMTQgfCAgICAgMTc5LjAwMCB8ICAgMTcxLjUwMCB8ICAgMTEKKyAgICAgIDI2 MiB8ICAgIDI3MSB8ICAgICAyNzcuNjI1IHwgICAyNzUuNTAwIHwgICAxMAorICAgICAgMzM3IHwg ICAgMzQ0IHwgICAgIDMwOC4yNTAgfCAgIDMwOC4xMjUgfCAgICA4CisgICAgICA0MzYgfCAgICA0 NDQgfCAgICAgIDU2LjYzMCB8ICAgIDYwLjI1MCB8ICAgIDkKKyAgICAgIDU2NyB8ICAgIDU3NSB8 ICAgICAxMjYuNTAwIHwgICAxMjcuNTAwIHwgICAgOQorICAgICAgNTk4IHwgICAgNjA3IHwgICAg IDExMi4yNTAgfCAgIDExNi41MDAgfCAgIDEwCisgICAgICA2NTMgfCAgICA2NjAgfCAgICAgMTI5 LjM3NSB8ICAgMTI4LjEyNSB8ICAgIDgKKyAgICAgIDY2MyB8ICAgIDY3MSB8ICAgICAxMjUuNjMw IHwgICAxMzAuMjUwIHwgICAgOQorICAgICAgNjg1IHwgICAgNjkzIHwgICAgIDEyMC4xMzAgfCAg IDEyNC4wMDAgfCAgICA5CisgICAgICA3MTAgfCAgICA3MTkgfCAgICAgMTQxLjEyNSB8ICAgMTQ0 LjEzMCB8ICAgMTAKKyAgICAgIDgzMyB8ICAgIDg0MSB8ICAgICAxMDYuNTAwIHwgICAxMTEuMTI1 IHwgICAgOQorICAgICAgODUzIHwgICAgODYyIHwgICAgIDEwNS4zNzUgfCAgIDEwNy43NTAgfCAg IDEwCisgICAgICA5MzAgfCAgICA5MzcgfCAgICAgIDkyLjM4MCB8ICAgIDk2LjM3NSB8ICAgIDgK KyAgICAgMTE4OCB8ICAgMTE5NyB8ICAgICAxMDUuMjUwIHwgICAxMDguMzgwIHwgICAxMAorICAg ICAxMTk4IHwgICAxMjA2IHwgICAgIDEwMC4xMjUgfCAgIDEwMC41NjIgfCAgICA5CisgICAgIDEy NTAgfCAgIDEyNTkgfCAgICAgMTMxLjQzNyB8ICAgMTMwLjg3NSB8ICAgMTAKKyAgICAgMTI4NSB8 ICAgMTI5NSB8ICAgICAxNzYuOTQwIHwgICAxODIuMTkwIHwgICAxMQorICAgICAxMjk4IHwgICAx MzA3IHwgICAgIDE4MS4wMDAgfCAgIDE3OC41NjIgfCAgIDEwCisgICAgIDEzMTAgfCAgIDEzMjIg fCAgICAgMTg2LjMxMCB8ICAgMjEyLjAwMCB8ICAgMTMKKyAgICAgMTQwNSB8ICAgMTQxMiB8ICAg ICAxMTcuODAwIHwgICAxMTcuNTAwIHwgICAgOAorICAgICAxNDY3IHwgICAxNDc0IHwgICAgICA3 MC40MDAgfCAgICA3MS44MzAgfCAgICA4CisgICAgIDE0OTQgfCAgIDE1MDIgfCAgICAgIDc5Ljc2 MCB8ICAgIDg2LjAwMCB8ICAgIDkKKyAgICAgMTYwMCB8ICAgMTYxOCB8ICAgICAgOTAuNDQwIHwg ICAgNzcuMDUwIHwgICAxOQorKDI2IHJvd3MpCisKKy0tIFctYm90dG9tOiBkZWNsaW5lLCBib3Vu Y2UsIHJlLWRlY2xpbmUsIHJlY292ZXJ5CitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmly c3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShy bikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIg dyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFT IGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9N IHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRf aWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgICAgICBQQVRURVJOIChERUNMSU5FezMsfSBCT1VOQ0V7Myx9IERJUHszLH0g UkVDT1ZFUnszLH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAgREVDTElORSBBUyBwcmlj ZSA8IFBSRVYocHJpY2UpLAorICAgICAgICAgICAgQk9VTkNFIEFTIHByaWNlID4gUFJFVihwcmlj ZSksCisgICAgICAgICAgICBESVAgQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgICAgICAgICAg IFJFQ09WRVIgQVMgcHJpY2UgPiBQUkVWKHByaWNlKQorICAgICkKKykgdCBXSEVSRSBkYXlzID4g MCBPUkRFUiBCWSBzdGFydF9ybjsKKyBzdGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3ByaWNlIHwg ZW5kX3ByaWNlIHwgZGF5cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0KKyAgICAgIDEzNiB8ICAgIDE1MyB8ICAgICA0NDQuMDAwIHwgICA0MzQu MjUwIHwgICAxOAorICAgICAgNDU2IHwgICAgNDY5IHwgICAgICA2NC41MDAgfCAgICA2NS4xMjUg fCAgIDE0CisgICAgICA1MjAgfCAgICA1MzQgfCAgICAgMTE1LjI1MCB8ICAgMTE1Ljc1MCB8ICAg MTUKKyAgICAgIDYxMCB8ICAgIDYyMyB8ICAgICAxMDcuMTI1IHwgICAxMDkuMDAwIHwgICAxNAor ICAgICAgNzkxIHwgICAgODAyIHwgICAgIDExMy41MDAgfCAgIDExOC4yNTAgfCAgIDEyCisgICAg ICA5NDIgfCAgICA5NTMgfCAgICAgIDkxLjI1MCB8ICAgIDg5Ljg3NSB8ICAgMTIKKyAgICAgMTE4 OCB8ICAgMTIwNiB8ICAgICAxMDUuMjUwIHwgICAxMDAuNTYyIHwgICAxOQorICAgICAxNTYwIHwg ICAxNTc0IHwgICAgICA4Ny40MjAgfCAgICA5MC4wMDAgfCAgIDE1CisoOCByb3dzKQorCistLSBW b2x1bWUgc3VyZ2Ugc3RyZWFrOiA2KyBjb25zZWN1dGl2ZSBkYXlzIG9mIGluY3JlYXNpbmcgdm9s dW1lCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBB UyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwK KyAgICAgICAgICAgZmlyc3RfdmFsdWUodm9sdW1lKSBPVkVSIHcgQVMgc3RhcnRfdm9sLAorICAg ICAgICAgICBsYXN0X3ZhbHVlKHZvbHVtZSkgT1ZFUiB3IEFTIGVuZF92b2wsCisgICAgICAgICAg IGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cg dyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJu CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVS TiAoSU5JVCBTVVJHRXs1LH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAgU1VSR0UgQVMg dm9sdW1lID4gUFJFVih2b2x1bWUpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZ IHN0YXJ0X3JuOworIHN0YXJ0X3JuIHwgZW5kX3JuIHwgc3RhcnRfdm9sIHwgZW5kX3ZvbCAgfCBk YXlzIAorLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLQor ICAgICAgMTg2IHwgICAgMTkxIHwgICAgIDI1MTAwIHwgICAgMzUzMDAgfCAgICA2CisgICAgICAy OTEgfCAgICAyOTYgfCAgICAgNTIyMDAgfCAgIDE4ODMwMCB8ICAgIDYKKyAgICAgIDQwOCB8ICAg IDQxMyB8ICAgIDE2MzMwMCB8ICAgNjEwMzAwIHwgICAgNgorICAgICAgNDM5IHwgICAgNDQ0IHwg ICAgNDM4NDAwIHwgIDEwODkyMDAgfCAgICA2CisgICAgICA1MDAgfCAgICA1MDYgfCAgICAzNzM3 MDAgfCAgMTExNDIwMCB8ICAgIDcKKyAgICAgIDU1MSB8ICAgIDU1OCB8ICAgIDY5MTEwMCB8ICAy MDk3NTAwIHwgICAgOAorICAgICAgNjM1IHwgICAgNjQwIHwgICAgNDE4MzAwIHwgIDEzODgxMDAg fCAgICA2CisgICAgICA3ODMgfCAgICA3ODggfCAgICA3NjkwMDAgfCAgMTU2NDkwMCB8ICAgIDYK KyAgICAgIDgyNCB8ICAgIDgzMCB8ICAgIDY4MjIwMCB8ICAyNDE4NzAwIHwgICAgNworICAgICAg OTY4IHwgICAgOTc0IHwgICAgOTkzMTAwIHwgIDIzNDEyMDAgfCAgICA3CisgICAgIDEwNzIgfCAg IDEwNzcgfCAgIDEyNTcyMDAgfCAgMjMyNzcwMCB8ICAgIDYKKyAgICAgMTA3OCB8ICAgMTA4NCB8 ICAgMTc0ODMwMCB8ICA1NTE0MzAwIHwgICAgNworICAgICAxMDkzIHwgICAxMDk4IHwgICAyNjY0 NDAwIHwgMTMxNDU5MDAgfCAgICA2CisgICAgIDEzMzQgfCAgIDEzMzkgfCAgIDMyMjA5MDAgfCAx MDU1MjYwMCB8ICAgIDYKKyAgICAgMTUyNCB8ICAgMTUzMCB8ICAgMzU2MjQwMCB8ICA3MDEyMTAw IHwgICAgNworICAgICAxNTMzIHwgICAxNTM4IHwgICAzNTQ4NTAwIHwgIDg1NjA4MDAgfCAgICA2 CisgICAgIDE1NzUgfCAgIDE1ODAgfCAgIDQyMjY1MDAgfCAgNjk1MjEwMCB8ICAgIDYKKygxNyBy b3dzKQorCistLSBWb2xhdGlsaXR5IHNxdWVlemU6IGNvbnNlY3V0aXZlIG5hcnJvd2luZyBvZiBk YWlseSBwcmljZSByYW5nZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVl KHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIg dyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKGhpZ2ggLSBsb3cpIE9WRVIgdyBB UyBzdGFydF9yYW5nZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShoaWdoIC0gbG93KSBPVkVSIHcg QVMgZW5kX3JhbmdlLAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZS T00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgcGFy dF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKElOSVQgTkFSUk9XezUsfSkKKyAgICAgICAgREVG SU5FCisgICAgICAgICAgICBOQVJST1cgQVMgKGhpZ2ggLSBsb3cpIDwgUFJFVihoaWdoKSAtIFBS RVYobG93KQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKyBz dGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3JhbmdlIHwgZW5kX3JhbmdlIHwgZGF5cyAKKy0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0KKyAgICAgIDEy OCB8ICAgIDEzMyB8ICAgICAgMTEuMDAwIHwgICAgIDMuMDAwIHwgICAgNgorICAgICAgMTcwIHwg ICAgMTc1IHwgICAgICAxMC4yNTAgfCAgICAgMi43NTAgfCAgICA2CisgICAgICAxOTQgfCAgICAy MDEgfCAgICAgIDEwLjAwMCB8ICAgICAxLjYyNSB8ICAgIDgKKyAgICAgIDI4MyB8ICAgIDI4OCB8 ICAgICAgIDcuMDAwIHwgICAgIDIuMzc1IHwgICAgNgorICAgICAgMzIwIHwgICAgMzI1IHwgICAg ICAgNC43NTAgfCAgICAgMi41MDAgfCAgICA2CisgICAgICA1NzggfCAgICA1ODMgfCAgICAgICAy Ljc1MCB8ICAgICAxLjEyNSB8ICAgIDYKKyAgICAgIDcyNSB8ICAgIDczMSB8ICAgICAgIDMuMzcw IHwgICAgIDEuMTI1IHwgICAgNworICAgICAgNzc1IHwgICAgNzgwIHwgICAgICAgNC41MDAgfCAg ICAgMC44NzUgfCAgICA2CisgICAgICA5MTMgfCAgICA5MTggfCAgICAgICAyLjg3MCB8ICAgICAx LjI1MCB8ICAgIDYKKyAgICAgMTEzMCB8ICAgMTEzNSB8ICAgICAgIDMuMDAwIHwgICAgIDEuMTI1 IHwgICAgNgorICAgICAxMzQ4IHwgICAxMzUzIHwgICAgICAgNi42MjAgfCAgICAgMS41NjIgfCAg ICA2CisoMTEgcm93cykKKworLS0gR2FwIHVwOiBvcGVuIHNpZ25pZmljYW50bHkgaGlnaGVyIHRo YW4gcHJldmlvdXMgY2xvc2UgKDUlKykKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJz dF92YWx1ZShybikgT1ZFUiB3IEFTIGdhcF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdyBBUyBwcmV2X2Nsb3NlLAorICAgICAgICAgICBsYXN0X3ZhbHVlKG9wZW4pIE9W RVIgdyBBUyBnYXBfb3BlbiwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAg IEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkg cGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFBSRVZfREFZIEdBUF9VUCkKKyAgICAgICAg REVGSU5FCisgICAgICAgICAgICBHQVBfVVAgQVMgb3BlbiA+IFBSRVYocHJpY2UpICogMS4wNQor ICAgICkKKykgdCBXSEVSRSBjbnQgPiAwIE9SREVSIEJZIGdhcF9ybjsKKyBnYXBfcm4gfCBwcmV2 X2Nsb3NlIHwgZ2FwX29wZW4gfCBjbnQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLQorICAgIDk4NiB8ICAgICA0OC44NzUgfCAgIDUyLjg3NSB8ICAgMgorICAgIDk5NCB8 ICAgICA0Mi4zNzUgfCAgIDQ0Ljg4MCB8ICAgMgorICAgMTAyOSB8ICAgICA1Mi4yNTAgfCAgIDU1 LjAwMCB8ICAgMgorICAgMTAzOSB8ICAgICA1NS44ODAgfCAgIDU5LjAwMCB8ICAgMgorICAgMTE3 NyB8ICAgIDE0Mi4zODAgfCAgMTUwLjUwMCB8ICAgMgorICAgMTIzOCB8ICAgIDEyMi4wMDAgfCAg MTI4LjI1MCB8ICAgMgorICAgMTMxOCB8ICAgIDE3MS44NzUgfCAgMTk3LjI1MCB8ICAgMgorICAg MTM4MyB8ICAgIDEwMy41MDAgfCAgMTEyLjAwMCB8ICAgMgorICAgMTM5MiB8ICAgICA5Ni42ODcg fCAgMTA0LjM3NSB8ICAgMgorICAgMTQwMSB8ICAgIDEwNi41MDAgfCAgMTEyLjAwMCB8ICAgMgor ICAgMTQ2NCB8ICAgICA2Ni40MDAgfCAgIDcwLjM3MCB8ICAgMgorICAgMTQ3NyB8ICAgICA1Ny41 ODAgfCAgIDYyLjAwMCB8ICAgMgorICAgMTQ3OSB8ICAgICA2My40MjAgfCAgIDY3Ljc1MCB8ICAg MgorICAgMTQ4MSB8ICAgICA2NC45MDAgfCAgIDcyLjgwMCB8ICAgMgorICAgMTUxNyB8ICAgICA5 MC4zMTAgfCAgIDk1LjA3MCB8ICAgMgorKDE1IHJvd3MpCisKKy0tIFByaWNlLXZvbHVtZSBkaXZl cmdlbmNlOiBwcmljZSByaXNpbmcgd2hpbGUgdm9sdW1lIGRlY2xpbmluZyAoYmVhcmlzaCBzaWdu YWwpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBB UyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwK KyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAg ICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAg ICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkg cm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRU RVJOIChJTklUIERJVkVSR0V7Myx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIERJVkVS R0UgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQgdm9sdW1lIDwgUFJFVih2b2x1bWUpCisgICAg KQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOworIHN0YXJ0X3JuIHwgZW5k X3JuIHwgc3RhcnRfcHJpY2UgfCBlbmRfcHJpY2UgfCBkYXlzIAorLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLQorICAgICAgIDEwIHwgICAgIDEzIHwg ICAgIDMzOC41MDAgfCAgIDM0OS43NTAgfCAgICA0CisgICAgICAgNDcgfCAgICAgNTAgfCAgICAg MzUyLjAwMCB8ICAgMzU4LjAwMCB8ICAgIDQKKyAgICAgICA1MyB8ICAgICA1NiB8ICAgICAzMTQu MDAwIHwgICAzMTkuMDAwIHwgICAgNAorICAgICAgIDYzIHwgICAgIDY2IHwgICAgIDI5NC41MDAg fCAgIDMwMS43NTAgfCAgICA0CisgICAgICAgOTkgfCAgICAxMDIgfCAgICAgNDAxLjAwMCB8ICAg NDA0LjAwMCB8ICAgIDQKKyAgICAgIDE3NyB8ICAgIDE4MCB8ICAgICAyNDguNTAwIHwgICAyNjEu NzUwIHwgICAgNAorICAgICAgMjA5IHwgICAgMjEyIHwgICAgIDE1Mi4wMDAgfCAgIDE2Ni41MDAg fCAgICA0CisgICAgICAyMzcgfCAgICAyNDAgfCAgICAgMjA3LjUwMCB8ICAgMjE1LjUwMCB8ICAg IDQKKyAgICAgIDI3NCB8ICAgIDI3NyB8ICAgICAyNTkuNTAwIHwgICAyNjQuNTAwIHwgICAgNAor ICAgICAgMzQ3IHwgICAgMzUwIHwgICAgIDMwNi43NTAgfCAgIDMxMi4wMDAgfCAgICA0CisgICAg ICA1MzEgfCAgICA1MzQgfCAgICAgMTExLjg3NSB8ICAgMTE1Ljc1MCB8ICAgIDQKKyAgICAgIDU0 NSB8ICAgIDU0OCB8ICAgICAxMTguMDAwIHwgICAxMjEuMDAwIHwgICAgNAorICAgICAgNTYxIHwg ICAgNTY0IHwgICAgIDEzMS4xMzAgfCAgIDEzNC4yNTAgfCAgICA0CisgICAgICA1ODYgfCAgICA1 ODkgfCAgICAgMTEwLjI1MCB8ICAgMTEyLjAwMCB8ICAgIDQKKyAgICAgIDY0NSB8ICAgIDY0OCB8 ICAgICAxMjkuNjMwIHwgICAxMzMuMjUwIHwgICAgNAorICAgICAgNjU2IHwgICAgNjYwIHwgICAg IDEyNC41MDAgfCAgIDEyOC4xMjUgfCAgICA1CisgICAgICA2NzkgfCAgICA2ODIgfCAgICAgMTI4 LjAwMCB8ICAgMTI5Ljc1MCB8ICAgIDQKKyAgICAgIDczNCB8ICAgIDczNyB8ICAgICAxMjEuMzgw IHwgICAxMjMuNzUwIHwgICAgNAorICAgICAgNzYzIHwgICAgNzY2IHwgICAgIDE1MC43NTAgfCAg IDE1Ni41MDAgfCAgICA0CisgICAgICA4NDQgfCAgICA4NDcgfCAgICAgMTA1LjUwMCB8ICAgMTA3 Ljg4MCB8ICAgIDQKKyAgICAgIDkyMSB8ICAgIDkyNCB8ICAgICAgOTcuMjUwIHwgICAxMDEuMjUw IHwgICAgNAorICAgICAgOTU2IHwgICAgOTU5IHwgICAgICA4NC44NzUgfCAgICA4Ny41MDAgfCAg ICA0CisgICAgICA5NjAgfCAgICA5NjMgfCAgICAgIDg4LjI1MCB8ICAgIDg5LjUwMCB8ICAgIDQK KyAgICAgIDk4NyB8ICAgIDk5MCB8ICAgICAgNDkuMDAwIHwgICAgNTEuNTAwIHwgICAgNAorICAg ICAxMDIzIHwgICAxMDI2IHwgICAgICA1My4yNTAgfCAgICA1NC42MjUgfCAgICA0CisgICAgIDEw MzMgfCAgIDEwMzYgfCAgICAgIDU3LjEyNSB8ICAgIDU4LjM4MCB8ICAgIDQKKyAgICAgMTA2MCB8 ICAgMTA2MyB8ICAgICAgODkuMDAwIHwgICAgOTMuNjI1IHwgICAgNAorICAgICAxMDY2IHwgICAx MDY5IHwgICAgICA4OS4xMzAgfCAgICA5My4wMDAgfCAgICA0CisgICAgIDEwODcgfCAgIDEwOTAg fCAgICAgIDg5LjM3NSB8ICAgIDkxLjc1MCB8ICAgIDQKKyAgICAgMTE2NSB8ICAgMTE2OCB8ICAg ICAxMzcuNjI1IHwgICAxNDYuODc1IHwgICAgNAorICAgICAxMjAyIHwgICAxMjA1IHwgICAgICA5 Ni41MDAgfCAgICA5OC43NTAgfCAgICA0CisgICAgIDEyMDkgfCAgIDEyMTIgfCAgICAgIDk2LjEy NSB8ICAgMTAwLjI1MCB8ICAgIDQKKyAgICAgMTIyMCB8ICAgMTIyMyB8ICAgICAxMDYuMTMwIHwg ICAxMTIuMDAwIHwgICAgNAorICAgICAxMjMxIHwgICAxMjM0IHwgICAgIDExNy4wNjIgfCAgIDEx OS42MjUgfCAgICA0CisgICAgIDEyNDQgfCAgIDEyNDcgfCAgICAgMTIyLjUwMCB8ICAgMTMwLjAw MCB8ICAgIDQKKyAgICAgMTMwNCB8ICAgMTMwNyB8ICAgICAxNjkuNTAwIHwgICAxNzguNTYyIHwg ICAgNAorICAgICAxMzQyIHwgICAxMzQ1IHwgICAgIDEyMi4wMDAgfCAgIDEyNC4wMDAgfCAgICA0 CisgICAgIDE0MTcgfCAgIDE0MjAgfCAgICAgMTAxLjk2MCB8ICAgMTA4LjUzMCB8ICAgIDQKKyAg ICAgMTQzMyB8ICAgMTQzNiB8ICAgICAgOTAuMDAwIHwgICAgOTMuNzcwIHwgICAgNAorICAgICAx NDM3IHwgICAxNDQwIHwgICAgICA5Ni45NTAgfCAgICA5OC41MDAgfCAgICA0CisgICAgIDE0NDMg fCAgIDE0NDYgfCAgICAgMTIwLjI1MCB8ICAgMTIyLjIwMCB8ICAgIDQKKyAgICAgMTQ0OSB8ICAg MTQ1MiB8ICAgICAgNzQuNjUwIHwgICAgNzcuMTQwIHwgICAgNAorICAgICAxNDU1IHwgICAxNDU4 IHwgICAgICA2Ny42MDAgfCAgICA3My41MDAgfCAgICA0CisgICAgIDE0OTcgfCAgIDE1MDAgfCAg ICAgIDc2LjI1MCB8ICAgIDgxLjY1MCB8ICAgIDQKKyAgICAgMTUwNSB8ICAgMTUwOCB8ICAgICAg NzUuODYwIHwgICAgNzkuNTEwIHwgICAgNAorICAgICAxNTExIHwgICAxNTE0IHwgICAgICA3OS43 NTAgfCAgICA4MS4wMjAgfCAgICA0CisgICAgIDE1MTggfCAgIDE1MjEgfCAgICAgIDk0LjAyMCB8 ICAgIDk3LjcwMCB8ICAgIDQKKyAgICAgMTU0MSB8ICAgMTU0NCB8ICAgICAgODMuNjUwIHwgICAg ODUuMjUwIHwgICAgNAorICAgICAxNTQ3IHwgICAxNTUwIHwgICAgICA4Mi4yMTAgfCAgICA4NC4w NDAgfCAgICA0CisgICAgIDE1ODUgfCAgIDE1ODggfCAgICAgIDkyLjcwMCB8ICAgIDkzLjU3MCB8 ICAgIDQKKyAgICAgMTU5NCB8ICAgMTU5NyB8ICAgICAgOTEuNjAwIHwgICAgOTIuNDEwIHwgICAg NAorICAgICAxNjEzIHwgICAxNjE2IHwgICAgICA3Mi4wMTAgfCAgICA3NC42MTAgfCAgICA0Ciso NTIgcm93cykKKworLS0gQ29uc29saWRhdGlvbiB0aGVuIGJyZWFrb3V0OiBzaWRld2F5cyBtb3Zl bWVudCBmb2xsb3dlZCBieSBzaGFycCByaXNlCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1Qg Zmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1 ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9W RVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBG Uk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBh cnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChGTEFUezUsfSBCUkVBS09VVCkKKyAgICAgICAg REVGSU5FCisgICAgICAgICAgICBGTEFUIEFTIHByaWNlIEJFVFdFRU4gUFJFVihwcmljZSkgKiAw Ljk4IEFORCBQUkVWKHByaWNlKSAqIDEuMDIsCisgICAgICAgICAgICBCUkVBS09VVCBBUyBwcmlj ZSA+IFBSRVYocHJpY2UpICogMS4wNQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBC WSBzdGFydF9ybjsKKyBzdGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3ByaWNlIHwgZW5kX3ByaWNl IHwgZGF5cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0KKyAgICAgICA2OSB8ICAgICA4MSB8ICAgICAyOTYuNzUwIHwgICAzMTQuMDAwIHwgICAx MworICAgICAgMjE0IHwgICAgMjI1IHwgICAgIDE3MS41MDAgfCAgIDE2NC4xMjUgfCAgIDEyCisg ICAgICAzNzEgfCAgICAzOTUgfCAgICAgIDcxLjYzMCB8ICAgIDcxLjI1MCB8ICAgMjUKKyAgICAg IDQxNiB8ICAgIDQyNCB8ICAgICAgNTQuMjUwIHwgICAgNTMuODc1IHwgICAgOQorICAgICAgNDg0 IHwgICAgNDk0IHwgICAgICA3NS41MDAgfCAgICA3OS4wMDAgfCAgIDExCisgICAgICA4NjUgfCAg ICA4OTIgfCAgICAgMTEyLjUwMCB8ICAgMTE1Ljc1MCB8ICAgMjgKKyAgICAgMTAwNyB8ICAgMTAy MCB8ICAgICAgNTkuNTAwIHwgICAgNTguNjMwIHwgICAxNAorICAgICAxMTEzIHwgICAxMTE4IHwg ICAgIDExMC43NTAgfCAgIDExNy42MjUgfCAgICA2CisgICAgIDExNDYgfCAgIDExNTIgfCAgICAg MTMzLjc1MCB8ICAgMTQ1LjAwMCB8ICAgIDcKKyAgICAgMTE3MSB8ICAgMTE3OCB8ICAgICAxMzcu ODgwIHwgICAxNTMuNjI1IHwgICAgOAorICAgICAxMzUwIHwgICAxMzU3IHwgICAgIDEwNi4xMjUg fCAgIDExMi4wMDAgfCAgICA4CisgICAgIDEzNjAgfCAgIDEzNzAgfCAgICAgMTA5LjEyNSB8ICAg MTE1LjYyNSB8ICAgMTEKKygxMiByb3dzKQorCistLSBEZWFkIGNhdCBib3VuY2U6IGRlY2xpbmUg Zm9sbG93ZWQgYnkgd2VhayByZWNvdmVyeSAoPDElIHBlciBkYXkpCitTRUxFQ1QgKiBGUk9NICgK KyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAg ICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShw cmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFT IGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFS VElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChERUNMSU5FezQsfSBCT1VO Q0V7Myx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIERFQ0xJTkUgQVMgcHJpY2UgPCBQ UkVWKHByaWNlKSwKKyAgICAgICAgICAgIEJPVU5DRSBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFO RCBwcmljZSA8IFBSRVYocHJpY2UpICogMS4wMQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBP UkRFUiBCWSBzdGFydF9ybjsKKyBzdGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3ByaWNlIHwgZW5k X3ByaWNlIHwgZGF5cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0KKyAgICAgICA1OSB8ICAgICA2NiB8ICAgICAzMTUuMDAwIHwgICAzMDEuNzUw IHwgICAgOAorICAgICAgMjYyIHwgICAgMjcxIHwgICAgIDI3Ny42MjUgfCAgIDI3NS41MDAgfCAg IDEwCisgICAgICAyODAgfCAgICAyODcgfCAgICAgMjcyLjAwMCB8ICAgMjYxLjI1MCB8ICAgIDgK KyAgICAgIDM2MSB8ICAgIDM2OCB8ICAgICAgNzUuMzc1IHwgICAgNzQuMTMwIHwgICAgOAorICAg ICAgNDI3IHwgICAgNDMzIHwgICAgICA2NS4xMzAgfCAgICA2NS41MDAgfCAgICA3CisgICAgICA0 NDcgfCAgICA0NTMgfCAgICAgIDU1LjUwMCB8ICAgIDU0LjYyNSB8ICAgIDcKKyAgICAgIDY1MyB8 ICAgIDY1OSB8ICAgICAxMjkuMzc1IHwgICAxMjYuNjI1IHwgICAgNworICAgICAgNjc0IHwgICAg NjgyIHwgICAgIDEzMi4zNzUgfCAgIDEyOS43NTAgfCAgICA5CisgICAgICA4MzMgfCAgICA4Mzkg fCAgICAgMTA2LjUwMCB8ICAgMTA3LjEyNSB8ICAgIDcKKyAgICAgMTQyMyB8ICAgMTQzMCB8ICAg ICAxMDguMTgwIHwgICAxMDYuMjAwIHwgICAgOAorICAgICAxNTkxIHwgICAxNTk3IHwgICAgICA5 Mi45MjAgfCAgICA5Mi40MTAgfCAgICA3CisoMTEgcm93cykKKworLS0gVXB0cmVuZDogNysgY29u c2VjdXRpdmUgZGF5cyBvZiBoaWdoZXIgaGlnaHMgQU5EIGhpZ2hlciBsb3dzCitTRUxFQ1QgKiBG Uk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAg ICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92 YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZF UiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAg ICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChVUFRSRU5Eezcs fSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBVUFRSRU5EIEFTIGhpZ2ggPiBQUkVWKGhp Z2gpIEFORCBsb3cgPiBQUkVWKGxvdykKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIg Qlkgc3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9wcmlj ZSB8IGRheXMgCistLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tCisgICAgICAxNTYgfCAgICAxNjIgfCAgICAgMzE3LjAwMCB8ICAgMzI5LjUwMCB8ICAg IDcKKyAgICAgIDI5OSB8ICAgIDMwNSB8ICAgICAyNjYuMDAwIHwgICAyNzMuNTAwIHwgICAgNwor ICAgICAgNjk2IHwgICAgNzAyIHwgICAgIDE0NC42MzAgfCAgIDE1Mi41MDAgfCAgICA3CisgICAg ICA3NDEgfCAgICA3NDcgfCAgICAgMTU1LjI1MCB8ICAgMTY2Ljc1MCB8ICAgIDcKKyAgICAgIDg5 NSB8ICAgIDkwMSB8ICAgICAxMTkuMjUwIHwgICAxMjYuNzUwIHwgICAgNworICAgICAxMTIxIHwg ICAxMTI3IHwgICAgIDEwMy42MzAgfCAgIDEwOC44NzUgfCAgICA3CisgICAgIDEyMTEgfCAgIDEy MTcgfCAgICAgIDk5LjEzMCB8ICAgMTAyLjg3NSB8ICAgIDcKKyAgICAgMTI3MSB8ICAgMTI3OCB8 ICAgICAxNjQuMzc1IHwgICAxODkuMjUwIHwgICAgOAorICAgICAxNjIxIHwgICAxNjI4IHwgICAg ICA4NC4wMDAgfCAgICA4OS44MjAgfCAgICA4CisoOSByb3dzKQorCistLSBQYW5pYyBhbmQgc25h cC1iYWNrOiAzJSsgZGFpbHkgZHJvcHMgZm9sbG93ZWQgYnkgMiUrIHJlYm91bmQKK1NFTEVDVCAq IEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShybikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAor ICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgZW5kX3JuLAorICAgICAgICAgICBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIHN0YXJ0X3ByaWNlLAorICAgICAgICAgICBsYXN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgZW5kX3ByaWNlLAorICAgICAgICAgICBjb3VudCgqKSBP VkVSIHcgQVMgZGF5cworICAgIEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAg ICAgICBQQVJUSVRJT04gQlkgcGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFBBTklDezIs fSBTTkFQKQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIFBBTklDIEFTIHByaWNlIDwgUFJF VihwcmljZSkgKiAwLjk3LAorICAgICAgICAgICAgU05BUCBBUyBwcmljZSA+IFBSRVYocHJpY2Up ICogMS4wMgorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKyBz dGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3ByaWNlIHwgZW5kX3ByaWNlIHwgZGF5cyAKKy0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0KKyAgICAgICAy NCB8ICAgICAyNiB8ICAgICAyMzAuNjI1IHwgICAyMjkuODc1IHwgICAgMworICAgICAgMTY1IHwg ICAgMTY3IHwgICAgIDI3Mi4wMDAgfCAgIDI3MC43NTAgfCAgICAzCisgICAgICAxNjkgfCAgICAx NzEgfCAgICAgMjYwLjAwMCB8ICAgMjU5LjUwMCB8ICAgIDMKKyAgICAgIDc2OSB8ICAgIDc3MiB8 ICAgICAxNDAuMTI1IHwgICAxMTUuMDAwIHwgICAgNAorICAgICAgOTc3IHwgICAgOTc5IHwgICAg ICA1Ni4xMzAgfCAgICA1My4wMDAgfCAgICAzCisgICAgICA5ODAgfCAgICA5ODIgfCAgICAgIDUx LjM3NSB8ICAgIDUxLjc1MCB8ICAgIDMKKyAgICAgMTM4NyB8ICAgMTM4OSB8ICAgICAgODYuMDAw IHwgICAgODkuMDAwIHwgICAgMworICAgICAxMzk2IHwgICAxMzk4IHwgICAgICA5OS4yOTAgfCAg ICA5OC4zOTAgfCAgICAzCisoOCByb3dzKQorCistLSBWb2x1bWUgY2xpbWF4IHJldmVyc2FsOiB1 cHRyZW5kLCB2b2x1bWUgc3Bpa2UgKDEuNXgpLCB0aGVuIGRlY2xpbmUKK1NFTEVDVCAqIEZST00g KAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShybikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAg ICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3IEFTIHN0YXJ0X3ByaWNlLAorICAgICAgICAgICBsYXN0X3ZhbHVl KHByaWNlKSBPVkVSIHcgQVMgZW5kX3ByaWNlLAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcg QVMgZGF5cworICAgIEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQ QVJUSVRJT04gQlkgcGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFJBTExZezMsfSBDTElN QVggU0VMTE9GRnsyLH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAgUkFMTFkgQVMgcHJp Y2UgPiBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgIENMSU1BWCBBUyB2b2x1bWUgPiBQUkVWKHZv bHVtZSkgKiAxLjUsCisgICAgICAgICAgICBTRUxMT0ZGIEFTIHByaWNlIDwgUFJFVihwcmljZSkK KyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRfcm47Cisgc3RhcnRfcm4g fCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9wcmljZSB8IGRheXMgCistLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tCisgICAgICAgIDIgfCAgICAg IDcgfCAgICAgMzY4LjI1MCB8ICAgMzY3Ljc1MCB8ICAgIDYKKyAgICAgICAxNiB8ICAgICAyMSB8 ICAgICAzNDkuMjUwIHwgICAzNDQuNTAwIHwgICAgNgorICAgICAgMTA1IHwgICAgMTExIHwgICAg IDM4OC41MDAgfCAgIDM5NC41MDAgfCAgICA3CisgICAgICAyMjggfCAgICAyMzQgfCAgICAgMTY0 LjI1MCB8ICAgMTYzLjI1MCB8ICAgIDcKKyAgICAgIDI0MyB8ICAgIDI0OCB8ICAgICAyMjMuMjUw IHwgICAyMjguNTAwIHwgICAgNgorICAgICAgMjUxIHwgICAgMjU5IHwgICAgIDI1MS4wMDAgfCAg IDI1My41MDAgfCAgICA5CisgICAgICAzNTIgfCAgICAzNTggfCAgICAgMzEwLjUwMCB8ICAgMzA5 LjAwMCB8ICAgIDcKKyAgICAgIDM5OCB8ICAgIDQwNSB8ICAgICAgNjUuMzgwIHwgICAgNjUuMDAw IHwgICAgOAorICAgICAgNDY2IHwgICAgNDcyIHwgICAgICA2NC4yNTAgfCAgICA2My44NzUgfCAg ICA3CisgICAgICA1ODYgfCAgICA1OTUgfCAgICAgMTEwLjI1MCB8ICAgMTEyLjI1MCB8ICAgMTAK KyAgICAgIDYyNiB8ICAgIDYzMiB8ICAgICAxMjUuNzUwIHwgICAxMjMuMjUwIHwgICAgNworICAg ICAgNzAwIHwgICAgNzA3IHwgICAgIDE1MC4yNTAgfCAgIDE1Mi43NTAgfCAgICA4CisgICAgICA3 MTQgfCAgICA3MjIgfCAgICAgMTM2LjEyNSB8ICAgMTM3LjAwMCB8ICAgIDkKKyAgICAgIDc0MCB8 ICAgIDc1MCB8ICAgICAxNTQuMjUwIHwgICAxNjMuMDAwIHwgICAxMQorICAgICAgODA1IHwgICAg ODExIHwgICAgIDExNi44NzUgfCAgIDExNi4wMDAgfCAgICA3CisgICAgICA4MTQgfCAgICA4MjEg fCAgICAgIDk5LjUwMCB8ICAgIDk3LjEzMCB8ICAgIDgKKyAgICAgIDg1MCB8ICAgIDg1NyB8ICAg ICAxMDcuODgwIHwgICAgOTkuMjUwIHwgICAgOAorICAgICAgOTIyIHwgICAgOTI3IHwgICAgICA5 OS43NTAgfCAgICA5OS44NzUgfCAgICA2CisgICAgICA5MzQgfCAgICA5MzkgfCAgICAgIDkyLjM3 NSB8ICAgIDkyLjg4MCB8ICAgIDYKKyAgICAgIDk5OCB8ICAgMTAwNCB8ICAgICAgNTIuMDAwIHwg ICAgNTMuMTMwIHwgICAgNworICAgICAxMDQzIHwgICAxMDQ5IHwgICAgICA3My4xMjUgfCAgICA3 My4wMDAgfCAgICA3CisgICAgIDEwNTIgfCAgIDEwNTcgfCAgICAgIDcyLjEzMCB8ICAgIDc0LjI1 MCB8ICAgIDYKKyAgICAgMTEzOCB8ICAgMTE0MyB8ICAgICAxMjcuNzUwIHwgICAxMjUuNjI1IHwg ICAgNgorICAgICAxMTU1IHwgICAxMTYyIHwgICAgIDE1OC4wMDAgfCAgIDE1NS42MjUgfCAgICA4 CisgICAgIDExODEgfCAgIDExOTEgfCAgICAgIDk5LjEzMCB8ICAgMTAwLjA2MiB8ICAgMTEKKyAg ICAgMTE5MiB8ICAgMTIwMiB8ICAgICAxMDAuMTMwIHwgICAgOTYuNTAwIHwgICAxMQorICAgICAx MjM2IHwgICAxMjQxIHwgICAgIDExOC4zODAgfCAgIDEyMy44ODAgfCAgICA2CisgICAgIDEyNzIg fCAgIDEyODIgfCAgICAgMTY2LjA2MiB8ICAgMTgzLjAwMCB8ICAgMTEKKyAgICAgMTMyNSB8ICAg MTMzMSB8ICAgICAyMTcuMjUwIHwgICAyMzcuNTAwIHwgICAgNworICAgICAxNDA5IHwgICAxNDE0 IHwgICAgIDExMi44OTAgfCAgIDExNi4xMDAgfCAgICA2CisgICAgIDE0NTYgfCAgIDE0NjEgfCAg ICAgIDY4LjU4MCB8ICAgIDY4Ljc2MCB8ICAgIDYKKygzMSByb3dzKQorCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2Jhc2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi40MTU0MTg5OGY1YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2Jhc2Uub3V0CkBAIC0wLDAgKzEsNzIzOCBAQAorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgQmFz ZSBUZXN0cworLS0gVGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIChJU08vSUVDIDE5 MDc1LTUpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tCistLSBQYXJzZXIgTGF5ZXI6CistLSAgIEtleXdvcmQgVXNhZ2Ug VGVzdHMKKy0tICAgREVGSU5FIENsYXVzZSBUZXN0cworLS0gICBGUkFNRSBPcHRpb25zIFRlc3Rz CistLSAgIFBBUlRJVElPTiBCWSArIEZSQU1FIFRlc3RzCistLSAgIFBBVFRFUk4gU3ludGF4IFRl c3RzCistLSAgIFF1YW50aWZpZXJzIFRlc3RzCistLSAgIE5hdmlnYXRpb24gRnVuY3Rpb25zIFRl c3RzCistLSAgIFNLSVAgVE8gLyBJTklUSUFMIFRlc3RzCistLSAgIFNlcmlhbGl6YXRpb24vRGVz ZXJpYWxpemF0aW9uIFRlc3RzCistLSAgIEdsdWVkIFF1YW50aWZpZXIgLyBBbHRlcm5hdGlvbiBU ZXN0cworLS0gICBFcnJvciBDYXNlcyBUZXN0cworLS0gICBXaW5kb3cgRGVkdXBsaWNhdGlvbiBU ZXN0cworLS0KKy0tIFBsYW5uZXIgTGF5ZXI6CistLSAgIFBhdHRlcm4gT3B0aW1pemF0aW9uIFRl c3RzCistLSAgIEFic29ycHRpb24gRmxhZyBEaXNwbGF5IFRlc3RzCistLSAgIEFic29ycHRpb24g QW5hbHlzaXMgVGVzdHMKKy0tICAgRWRnZSBDYXNlIFRlc3RzCistLSAgIE9wdGltaXphdGlvbiBG YWxsYmFjayBUZXN0cworLS0gICBQbGFubmVyIEludGVncmF0aW9uIFRlc3RzCistLSAgIFN1YnF1 ZXJ5IGFuZCBDVEUgVGVzdHMKKy0tICAgSk9JTiBUZXN0cworLS0gICBDb21wbGV4IEV4cHJlc3Np b24gVGVzdHMKKy0tICAgU2V0IE9wZXJhdGlvbnMgVGVzdHMKKy0tICAgU29ydGluZyBhbmQgR3Jv dXBpbmcgVGVzdHMKKy0tICAgU1FMIEZ1bmN0aW9uIElubGluaW5nIFRlc3RzCistLSAgIFN0cmVz cyBUZXN0cworLS0gICBFcnJvciBMaW1pdCBUZXN0cworLS0KKy0tIENvbnRyaWJ1dGVkIFRlc3Rz OgorLS0gICBCYXNpYyBQYXR0ZXJuIE1hdGNoaW5nCistLSAgIFBhdGhvbG9naWNhbCBQYXR0ZXJu cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEtleXdvcmQgVXNhZ2UgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIGtleXdvcmRzIGFzIGNvbHVtbiBu YW1lcworLS0gS2V5d29yZHM6IGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwgc2Vlawor Q1JFQVRFIFRBQkxFIHJwcl9rZXl3b3JkcyAoCisgICAgaWQgSU5ULAorICAgIGRlZmluZSBJTlQs ICAgICAgLS0gREVGSU5FIGtleXdvcmQKKyAgICBpbml0aWFsIElOVCwgICAgIC0tIElOSVRJQUwg a2V5d29yZAorICAgIHBhc3QgSU5ULCAgICAgICAgLS0gUEFTVCBrZXl3b3JkCisgICAgcGF0dGVy biBJTlQsICAgICAtLSBQQVRURVJOIGtleXdvcmQKKyAgICBzZWVrIElOVCwgICAgICAgIC0tIFNF RUsga2V5d29yZAorLS0gRVJST1I6IFNFRUsgaXMgbm90IHN1cHBvcnRlZAorICAgIHNraXAgSU5U ICAgICAgICAgLS0gU0tJUCBrZXl3b3JkIChwcmUtZXhpc3RpbmcpCispOworSU5TRVJUIElOVE8g cnByX2tleXdvcmRzIFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgNDAsIDUwLCA2MCk7CitTRUxFQ1Qg aWQsIGRlZmluZSwgaW5pdGlhbCwgcGFzdCwgcGF0dGVybiwgc2Vlaywgc2tpcAorRlJPTSBycHJf a2V5d29yZHMKK09SREVSIEJZIGlkOworIGlkIHwgZGVmaW5lIHwgaW5pdGlhbCB8IHBhc3QgfCBw YXR0ZXJuIHwgc2VlayB8IHNraXAgCistLS0tKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0rLS0t LS0tLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8ICAgICAxMCB8ICAgICAgMjAgfCAgIDMwIHwgICAg ICA0MCB8ICAgNTAgfCAgIDYwCisoMSByb3cpCisKK0RST1AgVEFCTEUgcnByX2tleXdvcmRzOwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBERUZJTkUgQ2xhdXNlIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBjb2x1bW4g cmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIHN0b2NrX3ByaWNlICgKKyAgICBkdCBEQVRFLAorICAg IHN5bWJvbCBURVhULAorICAgIHByaWNlIE5VTUVSSUMsCisgICAgdm9sdW1lIElOVAorKTsKK0lO U0VSVCBJTlRPIHN0b2NrX3ByaWNlIFZBTFVFUworICAgICgnMjAyNC0wMS0wMScsICdBQVBMJywg MTUwLCAxMDAwKSwKKyAgICAoJzIwMjQtMDEtMDInLCAnQUFQTCcsIDE1NSwgMTIwMCksCisgICAg KCcyMDI0LTAxLTAzJywgJ0FBUEwnLCAxNTIsIDkwMCksCisgICAgKCcyMDI0LTAxLTA0JywgJ0FB UEwnLCAxNjAsIDE1MDApLAorICAgICgnMjAyNC0wMS0wNScsICdBQVBMJywgMTU4LCAxMTAwKTsK Ky0tIFNpbXBsZSBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgZHQsIHByaWNlLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVVArKQorICAgIERFRklO RSBVUCBBUyBwcmljZSA+IDE1MAorKQorT1JERVIgQlkgZHQ7CisgICAgIGR0ICAgICB8IHByaWNl IHwgY250IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAwMS0wMS0yMDI0IHwgICAxNTAg fCAgIDAKKyAwMS0wMi0yMDI0IHwgICAxNTUgfCAgIDQKKyAwMS0wMy0yMDI0IHwgICAxNTIgfCAg IDAKKyAwMS0wNC0yMDI0IHwgICAxNjAgfCAgIDAKKyAwMS0wNS0yMDI0IHwgICAxNTggfCAgIDAK Kyg1IHJvd3MpCisKKy0tIE11bHRpcGxlIGNvbHVtbiByZWZlcmVuY2VzCitTRUxFQ1QgZHQsIHBy aWNlLCB2b2x1bWUsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChHT09EKykKKyAgICBERUZJTkUgR09PRCBBUyBwcmljZSA+IDE1MCBBTkQgdm9sdW1l ID4gMTAwMAorKQorT1JERVIgQlkgZHQ7CisgICAgIGR0ICAgICB8IHByaWNlIHwgdm9sdW1lIHwg Y250IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKyAwMS0wMS0yMDI0IHwg ICAxNTAgfCAgIDEwMDAgfCAgIDAKKyAwMS0wMi0yMDI0IHwgICAxNTUgfCAgIDEyMDAgfCAgIDEK KyAwMS0wMy0yMDI0IHwgICAxNTIgfCAgICA5MDAgfCAgIDAKKyAwMS0wNC0yMDI0IHwgICAxNjAg fCAgIDE1MDAgfCAgIDIKKyAwMS0wNS0yMDI0IHwgICAxNTggfCAgIDExMDAgfCAgIDAKKyg1IHJv d3MpCisKKy0tIEV4cHJlc3Npb24gaW4gREVGSU5FCitTRUxFQ1QgZHQsIHByaWNlLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoSElHSCspCisgICAg REVGSU5FIEhJR0ggQVMgcHJpY2UgKiAxLjEgPiAxNjUKKykKK09SREVSIEJZIGR0OworICAgICBk dCAgICAgfCBwcmljZSB8IGNudCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMDEtMDEt MjAyNCB8ICAgMTUwIHwgICAwCisgMDEtMDItMjAyNCB8ICAgMTU1IHwgICA0CisgMDEtMDMtMjAy NCB8ICAgMTUyIHwgICAwCisgMDEtMDQtMjAyNCB8ICAgMTYwIHwgICAwCisgMDEtMDUtMjAyNCB8 ICAgMTU4IHwgICAwCisoNSByb3dzKQorCistLSBBcml0aG1ldGljIGFuZCBmdW5jdGlvbnMKK1NF TEVDVCBkdCwgcHJpY2UsIHZvbHVtZSwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBzdG9j a19wcmljZQorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBzeW1ib2wKKyAgICBPUkRF UiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKENBTEMrKQorICAgIERFRklORSBDQUxDIEFTIChwcmljZSArIHZv bHVtZSAvIDEwMCkgPiAxNjAKKykKK09SREVSIEJZIGR0OworICAgICBkdCAgICAgfCBwcmljZSB8 IHZvbHVtZSB8IGNudCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisgMDEt MDEtMjAyNCB8ICAgMTUwIHwgICAxMDAwIHwgICAwCisgMDEtMDItMjAyNCB8ICAgMTU1IHwgICAx MjAwIHwgICA0CisgMDEtMDMtMjAyNCB8ICAgMTUyIHwgICAgOTAwIHwgICAwCisgMDEtMDQtMjAy NCB8ICAgMTYwIHwgICAxNTAwIHwgICAwCisgMDEtMDUtMjAyNCB8ICAgMTU4IHwgICAxMTAwIHwg ICAwCisoNSByb3dzKQorCitEUk9QIFRBQkxFIHN0b2NrX3ByaWNlOworLS0gQXV0by1nZW5lcmF0 ZWQgREVGSU5FCitDUkVBVEUgVEFCTEUgcnByX2F1dG8gKGlkIElOVCwgdmFsIElOVCk7CitJTlNF UlQgSU5UTyBycHJfYXV0byBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDE1 KTsKKy0tIE9uZSB2YXJpYWJsZSB1bmRlZmluZWQgKEIgYXV0by1nZW5lcmF0ZWQgYXMgIkIgSVMg VFJVRSIpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf YXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQiopCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDMKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDE1IHwgICAwCisoNCByb3dzKQorCistLSBNdWx0aXBsZSB1 bmRlZmluZWQgdmFyaWFibGVzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgIC0tIEIgYW5kIEMgYXV0by1n ZW5lcmF0ZWQgYXMgIkIgSVMgVFJVRSIsICJDIElTIFRSVUUiCispCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwg IDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICAxNSB8ICAgMAorKDQgcm93cykKKwor LS0gQWxsIHZhcmlhYmxlcyBkZWZpbmVkIGV4cGxpY2l0bHkKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9hdXRvCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChYIFkgWikKKyAgICBERUZJTkUKKyAgICAgICAgWCBBUyB2YWwg PiAxMCwKKyAgICAgICAgWSBBUyB2YWwgPiAyMCwKKyAgICAgICAgWiBBUyB2YWwgPCAyMAorKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMworICAzIHwgIDMwIHwgICAwCisgIDQgfCAgMTUgfCAg IDAKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2F1dG87CistLSBEdXBsaWNhdGUgdmFyaWFi bGUgbmFtZXMKK0NSRUFURSBUQUJMRSBycHJfZHVwIChpZCBJTlQpOworSU5TRVJUIElOVE8gcnBy X2R1cCBWQUxVRVMgKDEpLCAoMik7CistLSBEdXBsaWNhdGUgREVGSU5FIHZhcmlhYmxlIG5hbWUg aXMgbm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2R1cAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgaWQgPiAwLCBBIEFTIGlkIDwgMTAKKyk7CitFUlJPUjogIERFRklORSB2YXJpYWJsZSAiYSIg YXBwZWFycyBtb3JlIHRoYW4gb25jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgaWQgPiAwLCBB IEFTIGlkIDwgMTAKKyAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHJwcl9kdXA7Cist LSBCb29sZWFuIGNvZXJjaW9uCitDUkVBVEUgVEFCTEUgcnByX2Jvb2wgKGlkIElOVCwgZmxhZyBC T09MRUFOKTsKK0lOU0VSVCBJTlRPIHJwcl9ib29sIFZBTFVFUyAoMSwgdHJ1ZSksICgyLCBmYWxz ZSk7CistLSBERUZJTkUgY2xhdXNlIG11c3QgYmUgYSBib29sZWFuIGV4cHJlc3Npb24KK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Jvb2wKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIGlkCispOworRVJST1I6ICBh cmd1bWVudCBvZiBERUZJTkUgbXVzdCBiZSB0eXBlIGJvb2xlYW4sIG5vdCB0eXBlIGludGVnZXIK K0xJTkUgNzogICAgIERFRklORSBBIEFTIGlkCisgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBCb29sZWFuIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBpZCwgZmxhZywgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoVCspCisgICAgREVGSU5FIFQgQVMgZmxhZworKQorT1JERVIgQlkgaWQ7Cisg aWQgfCBmbGFnIHwgY250IAorLS0tLSstLS0tLS0rLS0tLS0KKyAgMSB8IHQgICAgfCAgIDEKKyAg MiB8IGYgICAgfCAgIDAKKygyIHJvd3MpCisKKy0tIE5VTEw6OmJvb2xlYW4KK1NFTEVDVCBpZCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoTispCisgICAgREVGSU5FIE4gQVMgTlVMTDo6Ym9vbGVh bgorKQorT1JERVIgQlkgaWQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDEgfCAgIDAKKyAg MiB8ICAgMAorKDIgcm93cykKKworLS0gSW1wbGljaXQgY2FzdCB0byBib29sZWFuIHZpYSBjdXN0 b20gdHlwZQorQ1JFQVRFIFRZUEUgdHJ1dGh5aW50IEFTICh2IGludCk7CitDUkVBVEUgRlVOQ1RJ T04gdHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5aW50KSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKKyAg U0VMRUNUICgkMSkudiA8PiAwOworJCQgTEFOR1VBR0UgU1FMIElNTVVUQUJMRSBTVFJJQ1Q7CitD UkVBVEUgQ0FTVCAodHJ1dGh5aW50IEFTIGJvb2xlYW4pCisgIFdJVEggRlVOQ1RJT04gdHJ1dGh5 aW50X3RvX2Jvb2wodHJ1dGh5aW50KQorICBBUyBBU1NJR05NRU5UOworQ1JFQVRFIFRBQkxFIHJw cl9jb2VyY2UgKGlkIGludCwgdmFsIHRydXRoeWludCk7CitJTlNFUlQgSU5UTyBycHJfY29lcmNl IFZBTFVFUyAoMSwgUk9XKDEpKSwgKDIsIFJPVygwKSksICgzLCBST1coNSkpLCAoNCwgUk9XKDAp KTsKK1NFTEVDVCBpZCwgdmFsLCBjbnQKK0ZST00gKFNFTEVDVCBpZCwgdmFsLAorICAgICAgICAg ICAgIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKKyAgICAgIEZST00gcnByX2NvZXJjZQorICAgICAg V0lORE9XIHcgQVMgKAorICAgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgUEFUVEVS TiAoQSspCisgICAgICAgICAgREVGSU5FIEEgQVMgdmFsCisgICAgICApCispIHMgT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAoMSkgfCAgIDEK KyAgMiB8ICgwKSB8ICAgMAorICAzIHwgKDUpIHwgICAxCisgIDQgfCAoMCkgfCAgIDAKKyg0IHJv d3MpCisKK0RST1AgVEFCTEUgcnByX2NvZXJjZTsKK0RST1AgQ0FTVCAodHJ1dGh5aW50IEFTIGJv b2xlYW4pOworRFJPUCBGVU5DVElPTiB0cnV0aHlpbnRfdG9fYm9vbCh0cnV0aHlpbnQpOworRFJP UCBUWVBFIHRydXRoeWludDsKK0RST1AgVEFCTEUgcnByX2Jvb2w7CistLSBDb21wbGV4IGV4cHJl c3Npb25zCitDUkVBVEUgVEFCTEUgcnByX2NvbXBsZXggKGlkIElOVCwgdmFsMSBJTlQsIHZhbDIg SU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9jb21wbGV4IFZBTFVFUyAoMSwgMTAsIDIwKSwgKDIsIDE1 LCAyNSksICgzLCAyMCwgMzApOworLS0gQ0FTRSBleHByZXNzaW9uCitTRUxFQ1QgaWQsIHZhbDEs IHZhbDIsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2NvbXBsZXgKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMrKQorICAgIERFRklORSBDIEFTIENB U0UgV0hFTiB2YWwxID4gMTAgVEhFTiB2YWwyID4gMjAgRUxTRSBmYWxzZSBFTkQKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsMSB8IHZhbDIgfCBjbnQgCistLS0tKy0tLS0tLSstLS0tLS0rLS0t LS0KKyAgMSB8ICAgMTAgfCAgIDIwIHwgICAwCisgIDIgfCAgIDE1IHwgICAyNSB8ICAgMgorICAz IHwgICAyMCB8ICAgMzAgfCAgIDAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2NvbXBsZXg7 CistLSBQYXR0ZXJuIHZhcmlhYmxlIG5vdCBpbiBQQVRURVJOIChzaG91bGQgYmUgaWdub3JlZCkK K0NSRUFURSBUQUJMRSBycHJfdW51c2VkIChpZCBJTlQpOworSU5TRVJUIElOVE8gcnByX3VudXNl ZCBWQUxVRVMgKDEpLCAoMik7CistLSBFeHRyYSBERUZJTkUgdmFyaWFibGUKK1NFTEVDVCBpZCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdW51c2VkCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAsIEIg QVMgaWQgPiA1ICAtLSBCIG5vdCBpbiBwYXR0ZXJuCispCitPUkRFUiBCWSBpZDsKK0VSUk9SOiAg REVGSU5FIHZhcmlhYmxlICJiIiBpcyBub3QgdXNlZCBpbiBQQVRURVJOCitMSU5FIDc6ICAgICBE RUZJTkUgQSBBUyBpZCA+IDAsIEIgQVMgaWQgPiA1ICAtLSBCIG5vdCBpbiBwYXR0ZXJuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgcnByX3VudXNlZDsKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gRlJBTUUgT3B0aW9ucyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX2Zy YW1lIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2ZyYW1lIFZBTFVFUworICAg ICgxLCAxMCksICgyLCAxMCksICgzLCAxMCksICAtLSBTYW1lIHZhbDogMTAKKyAgICAoNCwgMjAp LCAoNSwgMjApLCAgICAgICAgICAgLS0gU2FtZSB2YWw6IDIwCisgICAgKDYsIDMwKTsKKy0tIFZh bGlkIGZyYW1lIG9wdGlvbnMKKy0tIFJPV1M6IGNvdW50cyBwaHlzaWNhbCByb3dzICgxIEZPTExP V0lORyA9IG5leHQgMSBwaHlzaWNhbCByb3cpCistLSBFeHBlY3RlZCByZXN1bHQ6IEVhY2ggcm93 IGNhbiBzZWUgMSBwaHlzaWNhbCByb3cgYWhlYWQKKy0tIGlkPTEsMiwzICh2YWw9MTApOiBjYW4g c2VlIG5leHQgcm93IC0+IGNudD0yCistLSBpZD00LDUgKHZhbD0yMCk6IGNhbiBzZWUgbmV4dCBy b3cgLT4gY250PTIKKy0tIGlkPTYgKHZhbD0zMCk6IG5vIG5leHQgcm93IC0+IGNudD0xCistLSBS ZXN1bHQ6IFsyLDIsMiwyLDIsMV0KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHZhbAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCPykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAxMCB8ICAgMgorICAz IHwgIDEwIHwgICAyCisgIDQgfCAgMjAgfCAgIDIKKyAgNSB8ICAyMCB8ICAgMgorICA2IHwgIDMw IHwgICAxCisoNiByb3dzKQorCistLSBFUlJPUjogZnJhbWUgbXVzdCBzdGFydCBhdCBjdXJyZW50 IHJvdyB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJP UjogIEZSQU1FIG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1cgd2hlbiB1c2luZyByb3cgcGF0dGVy biByZWNvZ25pdGlvbgorTElORSA1OiAgICAgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgIF4KK0RFVEFJTDogIEN1cnJl bnQgZnJhbWUgc3RhcnRzIHdpdGggVU5CT1VOREVEIFBSRUNFRElORy4KK0hJTlQ6ICBVc2U6IFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uCistLSBFWENMVURFIG9wdGlvbnMKKy0tIEVY Q0xVREUgbm90IHBlcm1pdHRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJh bWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEVYQ0xVREUgQ1VSUkVOVCBST1cK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBj YW5ub3QgdXNlIEVYQ0xVREUgb3B0aW9ucyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitM SU5FIDY6ICAgICBFWENMVURFIENVUlJFTlQgUk9XCisgICAgICAgICAgICBeCitERVRBSUw6ICBG cmFtZSBkZWZpbml0aW9uIGluY2x1ZGVzIEVYQ0xVREUgQ1VSUkVOVCBST1cuCitISU5UOiAgUmVt b3ZlIHRoZSBFWENMVURFIGNsYXVzZSBmcm9tIHRoZSB3aW5kb3cgZGVmaW5pdGlvbi4KKy0tIEVY Q0xVREUgR1JPVVAgbm90IHBlcm1pdHRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEVYQ0xVREUgR1JPVVAK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBj YW5ub3QgdXNlIEVYQ0xVREUgb3B0aW9ucyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitM SU5FIDY6ICAgICBFWENMVURFIEdST1VQCisgICAgICAgICAgICBeCitERVRBSUw6ICBGcmFtZSBk ZWZpbml0aW9uIGluY2x1ZGVzIEVYQ0xVREUgR1JPVVAuCitISU5UOiAgUmVtb3ZlIHRoZSBFWENM VURFIGNsYXVzZSBmcm9tIHRoZSB3aW5kb3cgZGVmaW5pdGlvbi4KKy0tIEVYQ0xVREUgVElFUyBu b3QgcGVybWl0dGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgRVhDTFVERSBUSUVTCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBFWENM VURFIG9wdGlvbnMgd2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElORSA2OiAgICAgRVhD TFVERSBUSUVTCisgICAgICAgICAgICBeCitERVRBSUw6ICBGcmFtZSBkZWZpbml0aW9uIGluY2x1 ZGVzIEVYQ0xVREUgVElFUy4KK0hJTlQ6ICBSZW1vdmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZyb20g dGhlIHdpbmRvdyBkZWZpbml0aW9uLgorLS0gcmFuZ2UgZnJhbWUgaXMgbm90IGFsbG93ZWQgd2l0 aCBSUFIKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispOworRVJST1I6ICBjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBSQU5HRSB3 aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDU6ICAgICBSQU5HRSBCRVRXRUVOIFVO Qk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTi4uLgorICAgICAgICAgICAg XgorSElOVDogIFVzZSBST1dTIGluc3RlYWQuCistLSBHUk9VUFMgZnJhbWUgaXMgbm90IGFsbG93 ZWQgd2l0aCBSUFIKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQg UFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBGUkFNRSBvcHRpb24g R1JPVVBTIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAgIEdST1VQUyBC RVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJLi4uCisgICAg ICAgICAgICBeCitISU5UOiAgVXNlIFJPV1MgaW5zdGVhZC4KKy0tIEVSUk9SOiBmcmFtZSBtdXN0 IHN0YXJ0IGF0IGN1cnJlbnQgcm93IHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNl ZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiAxIFBSRUNFRElORyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CitFUlJPUjogIEZSQU1FIG11c3Qgc3RhcnQgYXQgQ1VSUkVOVCBST1cgd2hlbiB1c2luZyBy b3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElORSA1OiAgICAgUk9XUyBCRVRXRUVOIDEgUFJFQ0VE SU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitERVRBSUw6ICBDdXJy ZW50IGZyYW1lIHN0YXJ0cyB3aXRoIG9mZnNldCBQUkVDRURJTkcuCitISU5UOiAgVXNlOiBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIC4uLgorLS0gRVJST1I6IGZyYW1lIG11c3Qgc3RhcnQg YXQgY3VycmVudCByb3cgd2l0aCBSUFIKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g MSBGT0xMT1dJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBGUkFNRSBtdXN0IHN0YXJ0IGF0IENV UlJFTlQgUk9XIHdoZW4gdXNpbmcgcm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAg IFJPV1MgQkVUV0VFTiAxIEZPTExPV0lORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgXgorREVUQUlMOiAgQ3VycmVudCBmcmFtZSBzdGFydHMgd2l0aCBvZmZzZXQgRk9MTE9X SU5HLgorSElOVDogIFVzZTogUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAuLi4KKy0tIEVS Uk9SOiBlbmQgYmVmb3JlIHN0YXJ0OiBDVVJSRU5UIFJPVyBBTkQgMSBQUkVDRURJTkcKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgUFJFQ0VESU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgZnJh bWUgc3RhcnRpbmcgZnJvbSBjdXJyZW50IHJvdyBjYW5ub3QgaGF2ZSBwcmVjZWRpbmcgcm93cwor TElORSA1OiAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIFBSRUNFRElORworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogZW5kIGJl Zm9yZSBzdGFydDogQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBQUkVDRURJTkcKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBQUkVDRURJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6 ICBmcmFtZSBlbmQgY2Fubm90IGJlIFVOQk9VTkRFRCBQUkVDRURJTkcKK0xJTkUgNTogICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIFBSRUNFRElORworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTaW5nbGUgcm93IGZyYW1lOiBD VVJSRU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cgaXMgcmVqZWN0ZWQgKHRoZSBzdGFuZGFyZAorLS0g YWxsb3dzIG9ubHkgVU5CT1VOREVEIEZPTExPV0lORyBvciBhIHBvc2l0aXZlIG9mZnNldCBGT0xM T1dJTkcpLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIENVUlJFTlQgUk9XCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIg QlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2UgQ1VSUkVOVCBST1cgYXMgZnJhbWUgZW5kIHdpdGgg cm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgQ1VSUkVOVCBST1cKKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgVU5CT1VOREVE IEZPTExPV0lORyBvciBhIHBvc2l0aXZlIG9mZnNldCBGT0xMT1dJTkcuCistLSBaZXJvIG9mZnNl dDogQ1VSUkVOVCBST1cgQU5EIDAgRk9MTE9XSU5HIGRlbm90ZXMgdGhlIHNhbWUgb25lLXJvdyBm cmFtZQorLS0gYW5kIGlzIGxpa2V3aXNlIHJlamVjdGVkIChjYXVnaHQgYXQgZXhlY3V0aW9uIHRp bWUpLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2Zy YW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIDAgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkg aWQ7CitFUlJPUjogIGZyYW1lIGVuZGluZyBvZmZzZXQgbXVzdCBiZSBwb3NpdGl2ZSB3aXRoIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uCistLSBBIG5vbi1jb25zdGFudCBmcmFtZSBlbmQgb2Zmc2V0 IGlzIGFsbG93ZWQ7IGEgemVybyB2YWx1ZSBpcyBzdGlsbCByZWplY3RlZCwKKy0tIHRoaXMgdGlt ZSBhdCBleGVjdXRpb24gdGltZSAoYSBsaXRlcmFsIGNhbm5vdCBleGVyY2lzZSB0aGF0IHBhdGgp LgorUFJFUEFSRSBycHJfZW5kX29mZnNldChpbnQ4KSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EICQxIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworRVhFQ1VURSBycHJfZW5kX29mZnNl dCgyKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAg MQorICAyIHwgIDEwIHwgICAxCisgIDMgfCAgMTAgfCAgIDEKKyAgNCB8ICAyMCB8ICAgMQorICA1 IHwgIDIwIHwgICAxCisgIDYgfCAgMzAgfCAgIDEKKyg2IHJvd3MpCisKK0VYRUNVVEUgcnByX2Vu ZF9vZmZzZXQoMCk7CitFUlJPUjogIGZyYW1lIGVuZGluZyBvZmZzZXQgbXVzdCBiZSBwb3NpdGl2 ZSB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitERUFMTE9DQVRFIHJwcl9lbmRfb2Zmc2V0 OworLS0gTGFyZ2Ugb2Zmc2V0OiBDVVJSRU5UIFJPVyBBTkQgMTAwMCBGT0xMT1dJTkcKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCAxMDAwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNgorICAyIHwg IDEwIHwgICA1CisgIDMgfCAgMTAgfCAgIDQKKyAgNCB8ICAyMCB8ICAgMworICA1IHwgIDIwIHwg ICAyCisgIDYgfCAgMzAgfCAgIDEKKyg2IHJvd3MpCisKKy0tIE1heGltdW0gb2Zmc2V0OiBDVVJS RU5UIFJPVyBBTkQgMjE0NzQ4MzY0NiBGT0xMT1dJTkcgKElOVF9NQVggLSAxKQorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIx NDc0ODM2NDYgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA2CisgIDIg fCAgMTAgfCAgIDUKKyAgMyB8ICAxMCB8ICAgNAorICA0IHwgIDIwIHwgICAzCisgIDUgfCAgMjAg fCAgIDIKKyAgNiB8ICAzMCB8ICAgMQorKDYgcm93cykKKworLS0gaW50NjQgZnJhbWUtZW5kIG92 ZXJmbG93OiBhIGh1Z2UgRk9MTE9XSU5HIG9mZnNldCBtdXN0IGNsYW1wIHRvIHRoZQorLS0gcGFy dGl0aW9uIGVuZCAobWF0Y2hTdGFydFJvdyArIG9mZnNldCArIDEgb3ZlcmZsb3dzIGludDY0OyB0 aGUgY2xhbXAgbWFrZXMKKy0tIGl0IGJlaGF2ZSBsaWtlIFVOQk9VTkRFRCBGT0xMT1dJTkcpLiAg R3VhcmRzIGFnYWluc3Qgc2lnbmVkLWludGVnZXIgb3ZlcmZsb3cKKy0tIGluIHRoZSAiZnJhbWVP ZmZzZXQgKyAxIiBzdWJleHByZXNzaW9uICh1bmRlZmluZWQgYmVoYXZpb3IpLiAgVGhlIGNudCB2 YWx1ZXMKKy0tIG11c3QgbWF0Y2ggdGhlIFVOQk9VTkRFRCBGT0xMT1dJTkcgcmVzdWx0IGZvciB0 aGUgc2FtZSBkYXRhLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDkyMjMzNzIwMzY4NTQ3NzU4MDYgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA2CisgIDIgfCAgMTAgfCAgIDUKKyAgMyB8ICAxMCB8 ICAgNAorICA0IHwgIDIwIHwgICAzCisgIDUgfCAgMjAgfCAgIDIKKyAgNiB8ICAzMCB8ICAgMQor KDYgcm93cykKKworLS0gcmFuZ2UgZnJhbWUgaXMgbm90IGFsbG93ZWQgd2l0aCBSUFIKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBCIEFTIHZhbCA+PSAwCisp CitPUkRFUiBCWSBpZDsKK0VSUk9SOiAgY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gUkFOR0Ugd2l0 aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElORSA1OiAgICAgUkFOR0UgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitISU5UOiAgVXNlIFJPV1Mg aW5zdGVhZC4KKy0tIEdST1VQUyBmcmFtZSB3aXRoIFJQUiAobm90IHBlcm1pdHRlZCkKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIHZhbAorICAgIEdST1VQUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCAxIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBCIEFTIHZhbCA+PSAwCisp CitPUkRFUiBCWSBpZDsKK0VSUk9SOiAgY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gR1JPVVBTIHdp dGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAgIEdST1VQUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCAxIEZPTExPV0lORworICAgICAgICAgICAgXgorSElOVDogIFVzZSBST1dT IGluc3RlYWQuCitEUk9QIFRBQkxFIHJwcl9mcmFtZTsKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUEFSVElUSU9OIEJZ ICsgRlJBTUUgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCBQQVJUSVRJT04gQlkgd2l0aCBSUFIgdG8g ZW5zdXJlIHByb3BlciBwYXJ0aXRpb25pbmcgYmVoYXZpb3IKK0NSRUFURSBUQUJMRSBycHJfcGFy dGl0aW9uIChpZCBJTlQsIGdycCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BhcnRp dGlvbiBWQUxVRVMKKyAgICAoMSwgMSwgMTApLCAoMiwgMSwgMjApLCAoMywgMSwgMzApLAorICAg ICg0LCAyLCAxNSksICg1LCAyLCAyNSksICg2LCAyLCAzNSk7CistLSBQQVJUSVRJT04gQlkgd2l0 aCBST1dTIGZyYW1lCitTRUxFQ1QgaWQsIGdycCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9wYXJ0aXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgZ3Jw CisgICAgT1JERVIgQlkgdmFsCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+IDE1Cisp CitPUkRFUiBCWSBpZDsKKyBpZCB8IGdycCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAgMSB8ICAxMCB8ICAgMworICAyIHwgICAxIHwgIDIwIHwgICAyCisgIDMg fCAgIDEgfCAgMzAgfCAgIDAKKyAgNCB8ICAgMiB8ICAxNSB8ICAgMworICA1IHwgICAyIHwgIDI1 IHwgICAyCisgIDYgfCAgIDIgfCAgMzUgfCAgIDAKKyg2IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBQ YXR0ZXJuIG1hdGNoaW5nIHNob3VsZCByZXNldCBmb3IgZWFjaCBwYXJ0aXRpb24KKy0tIFBBUlRJ VElPTiBCWSB3aXRoIFJBTkdFIGZyYW1lCitTRUxFQ1QgaWQsIGdycCwgdmFsLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXJ0aXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBQQVJU SVRJT04gQlkgZ3JwCisgICAgT1JERVIgQlkgdmFsCisgICAgUkFOR0UgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+ PSAyMAorKQorT1JERVIgQlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIFJB TkdFIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNjogICAgIFJBTkdFIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORworICAgICAgICAgICAgXgorSElOVDogIFVz ZSBST1dTIGluc3RlYWQuCitEUk9QIFRBQkxFIHJwcl9wYXJ0aXRpb247CistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBB VFRFUk4gU3ludGF4IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSBycHJfcGF0dGVybiAoaWQg SU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wYXR0ZXJuIFZBTFVFUworICAgICgxLCA1 KSwgKDIsIDEwKSwgKDMsIDE1KSwgKDQsIDIwKSwgKDUsIDI1KSwKKyAgICAoNiwgMzApLCAoNywg MzUpLCAoOCwgNDApLCAoOSwgNDUpLCAoMTAsIDUwKTsKKy0tIEFsdGVybmF0aW9uICh8KQorLS0g TXVsdGlwbGUgYWx0ZXJuYXRpdmVzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSsgfCBCKyB8IEMrKQorICAgIERFRklORSBBIEFTIHZhbCA+IDM1LCBCIEFTIHZh bCBCRVRXRUVOIDE1IEFORCAzNSwgQyBBUyB2YWwgPCAxNQorKQorT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDUgfCAgIDIKKyAgMiB8ICAx MCB8ICAgMAorICAzIHwgIDE1IHwgICA1CisgIDQgfCAgMjAgfCAgIDAKKyAgNSB8ICAyNSB8ICAg MAorICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0MCB8ICAgMworICA5 IHwgIDQ1IHwgICAwCisgMTAgfCAgNTAgfCAgIDAKKygxMCByb3dzKQorCistLSBHcm91cGluZwor LS0gTmVzdGVkIGdyb3VwaW5nIHdpdGggcXVhbnRpZmllcgorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSBDKSspCisgICAgREVGSU5FIEEgQVMgdmFsID4g MTAsIEIgQVMgdmFsID4gMjAsIEMgQVMgdmFsID4gMzAKKykKK09SREVSIEJZIGlkOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgICA1IHwgICAwCisgIDIgfCAgMTAg fCAgIDAKKyAgMyB8ICAxNSB8ICAgMAorICA0IHwgIDIwIHwgICAwCisgIDUgfCAgMjUgfCAgIDYK KyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgNDAgfCAgIDAKKyAgOSB8 ICA0NSB8ICAgMAorIDEwIHwgIDUwIHwgICAwCisoMTAgcm93cykKKworLS0gU2VxdWVuY2UKKy0t IE11bHRpLWVsZW1lbnQgc2VxdWVuY2UKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsIDwgMTUs CisgICAgICAgIEIgQVMgdmFsIEJFVFdFRU4gMTUgQU5EIDI1LAorICAgICAgICBDIEFTIHZhbCBC RVRXRUVOIDI1IEFORCAzNSwKKyAgICAgICAgRCBBUyB2YWwgQkVUV0VFTiAzNSBBTkQgNDUsCisg ICAgICAgIEUgQVMgdmFsID49IDQ1CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAK Ky0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8ICAgMAorICAyIHwgIDEwIHwgICAwCisgIDMg fCAgMTUgfCAgIDAKKyAgNCB8ICAyMCB8ICAgMAorICA1IHwgIDI1IHwgICAwCisgIDYgfCAgMzAg fCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDQwIHwgICAwCisgIDkgfCAgNDUgfCAgIDAK KyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIENvbXBsZXggY29tYmluYXRpb25zCist LSBBbHRlcm5hdGlvbiB3aXRoIGdyb3VwaW5nCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoKEEgQikgfCAoQyBEKSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPCAyMCwg QiBBUyB2YWwgPj0gMjAsIEMgQVMgdmFsIDwgMzAsIEQgQVMgdmFsID49IDMwCispCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8ICAg MAorICAyIHwgIDEwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyMCB8ICAgMAorICA1 IHwgIDI1IHwgICAyCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDQw IHwgICAwCisgIDkgfCAgNDUgfCAgIDAKKyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisKKy0t IEFsdGVybmF0aW9uICsgc2VxdWVuY2UgKyBncm91cGluZworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKFNUQVJUIChVUHsyLH0gRE9XTj8gfCBGTEFUKykgRklOSVNI KQorICAgIERFRklORQorICAgICAgICBTVEFSVCBBUyB2YWwgPj0gMCwKKyAgICAgICAgVVAgQVMg dmFsID4gMjAsCisgICAgICAgIERPV04gQVMgdmFsIDw9IDMwLAorICAgICAgICBGTEFUIEFTIHZh bCBCRVRXRUVOIDI1IEFORCAzNSwKKyAgICAgICAgRklOSVNIIEFTIHZhbCA+IDQwCispCitPUkRF UiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8 ICAgMAorICAyIHwgIDEwIHwgICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyMCB8ICAgNwor ICA1IHwgIDI1IHwgICAwCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwg IDQwIHwgICAwCisgIDkgfCAgNDUgfCAgIDAKKyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisK Ky0tIE5lc3RlZCBhbHRlcm5hdGlvbiBpbiBncm91cHMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdmFs IDwgMTUsIEIgQVMgdmFsIEJFVFdFRU4gMTUgQU5EIDI1LCBDIEFTIHZhbCBCRVRXRUVOIDI1IEFO RCAzNSwgRCBBUyB2YWwgPiAzNQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCist LS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDUgfCAgIDAKKyAgMiB8ICAxMCB8ICAgMAorICAzIHwg IDE1IHwgICAwCisgIDQgfCAgMjAgfCAgIDIKKyAgNSB8ICAyNSB8ICAgMAorICA2IHwgIDMwIHwg ICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0MCB8ICAgMAorICA5IHwgIDQ1IHwgICAwCisg MTAgfCAgNTAgfCAgIDAKKygxMCByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9wYXR0ZXJuOworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBRdWFudGlmaWVycyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX3F1YW50 IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3F1YW50IFZBTFVFUworICAgICgx LCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCksICg1LCA1MCksCisgICAgKDYsIDYwKSwg KDcsIDcwKSwgKDgsIDgwKSwgKDksIDkwKSwgKDEwLCAxMDApOworLS0gQmFzaWMgZ3JlZWR5IHF1 YW50aWZpZXJzCistLSAqICh6ZXJvIG9yIG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEEqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEw CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUg fCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAg fCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0g KyAob25lIG9yIG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZh bCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwg ICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisg IDYgfCAgNjAgfCAgIDUKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAg OTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tID8gKHplcm8gb3Igb25l KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBPykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPSA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMw IHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMQorICA2IHwgIDYwIHwgICAw CisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAg fCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBFZGdlIGNhc2UgcXVhbnRpZmllcnMKKy0tIHsw fSBpcyBub3QgYWxsb3dlZCAobWluIG11c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXswfSBCKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAs IEIgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmQg bXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7 MH0gQikKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gezAsMH0gaXMgbm90IGFsbG93ZWQg KG1heCBtdXN0IGJlID49IDEpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7MCwwfSBCKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAsIEIgQVMgdmFsID4gMAor KQorT1JERVIgQlkgaWQ7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmRzIG11c3QgYmUgYmV0d2Vl biAwIGFuZCAyMTQ3NDgzNjQ2IHdpdGggbWF4ID49IDEKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7 MCwwfSBCKQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSB7MCwxfSAoZXF1aXZhbGVudCB0 byA/KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1 YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezAsMX0pCisg ICAgREVGSU5FIEEgQVMgdmFsID0gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDEKKyAgNiB8ICA2 MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAg MAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gRXhhY3QgcXVhbnRpZmllcnMge259 CistLSB7M30gKHJlcHJlc2VudGF0aXZlIGV4YWN0IHF1YW50aWZpZXIpCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7M30pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAg NDAgfCAgIDMKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAg IDMKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygx MCByb3dzKQorCistLSBSYW5nZSBxdWFudGlmaWVycyB7bix9CistLSB7Mix9IChyZXByZXNlbnRh dGl2ZSBuIG9yIG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7Mix9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDQwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8 IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIw IHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICA2 CisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkg fCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIFVwcGVyIGJvdW5k IHF1YW50aWZpZXJzIHssbX0KKy0tIHssM30gKHJlcHJlc2VudGF0aXZlIHVwIHRvIG0pCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDN9KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAg MAorICA0IHwgIDQwIHwgICAzCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3 IHwgIDcwIHwgICAzCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAw IHwgICAxCisoMTAgcm93cykKKworLS0gUmFuZ2UgcXVhbnRpZmllcnMge24sbX0KKy0tIHszLDd9 IChyZXByZXNlbnRhdGl2ZSByYW5nZSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXszLDd9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA3Cisg IDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAg NTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAg IDMKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworRFJPUCBU QUJMRSBycHJfcXVhbnQ7CistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcnMKK0NSRUFURSBUQUJMRSBy cHJfcmVsdWN0YW50IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3JlbHVjdGFu dCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKKy0tICo/ICh6ZXJvIG9yIG1vcmUs IHJlbHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0 Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSo/KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorICAgICAwCisoMyBy b3dzKQorCistLSArPyAob25lIG9yIG1vcmUsIHJlbHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFu dGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZS T00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSs/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisg ICAgIDEKKyAgICAgMQorICAgICAxCisoMyByb3dzKQorCistLSA/PyAoemVybyBvciBvbmUsIHJl bHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8/KQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorICAgICAwCisoMyByb3dz KQorCistLSB7bix9PyAobiBvciBtb3JlLCByZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRp ZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7Mix9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQor ICAgICAyCisgICAgIDAKKyAgICAgMAorKDMgcm93cykKKworLS0ge24sbX0/IChuIHRvIG0sIHJl bHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxLDN9PykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisgICAgIDEKKyAgICAgMQorKDMg cm93cykKKworLS0ge259PyAoZXhhY3RseSBuLCByZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVh bnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7Mn0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0t CisgICAgIDIKKyAgICAgMAorICAgICAwCisoMyByb3dzKQorCistLSB7LG19PyAodXAgdG8gbSwg cmVsdWN0YW50KSAtIENPTVBMRVRFTFkgVU5URVNURUQgUlVMRSEKKy0tIFJlbHVjdGFudCBxdWFu dGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZS T00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQXssM30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKyAgICAgMAorICAgICAwCisoMyByb3dzKQorCistLSB7Mn0rIChzaG91bGQgYmUg ezJ9PyBub3QgezJ9KykKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyfSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIg IisiCitMSU5FIDY6ICAgICBQQVRURVJOIChBezJ9KykKKyAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSB7Mix9KiAoc2hvdWxkIGJlIHsyLH0/IG5vdCB7Mix9KikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXsyLH0qKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJP UjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIqIgorTElORSA2OiAgICAgUEFUVEVSTiAoQXsy LH0qKQorICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSB7LDN9KiAoc2hvdWxkIGJlIHss M30/IG5vdCB7LDN9KikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssM30qKQorICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFy ICIqIgorTElORSA2OiAgICAgUEFUVEVSTiAoQXssM30qKQorICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSB7MSwzfSsgKHNob3VsZCBiZSB7MSwzfT8gbm90IHsxLDN9KykKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXsxLDN9KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKyIKK0xJTkUgNjogICAgIFBBVFRF Uk4gKEF7MSwzfSspCisgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBCb3VuZGFyeSBl cnJvcnMgaW4gcmVsdWN0YW50IHF1YW50aWZpZXJzCistLSBuZWdhdGl2ZSBib3VuZCBpcyBub3Qg YWxsb3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xfT8pCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCitM SU5FIDY6ICAgICBQQVRURVJOIChBey0xfT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2 NDYKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0N30/KQorICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBuZWdhdGl2ZSBsb3dlciBib3VuZCBpcyBub3QgYWxsb3dlZAorU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xLH0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorTElORSA2OiAgICAgUEFU VEVSTiAoQXstMSx9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6IHF1YW50 aWZpZXIgbG93ZXIgYm91bmQgZXhjZWVkcyBsaW1pdHMKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcK K0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQXsyMTQ3NDgzNjQ3LH0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJP UjogIHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIxNDc0ODM2NDYKK0xJ TkUgNjogICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nyx9PykKKyAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gemVybyB1cHBlciBib3VuZCBpcyBub3QgYWxsb3dlZAorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBeywwfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9S OiAgcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0NgorTElO RSA2OiAgICAgUEFUVEVSTiAoQXssMH0/KQorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6IHssMjE0NzQ4MzY0N30/ICh1cHBlciBib3VuZCBpbiByYW5nZSBleGNlZWRzIGxpbWl0 cykKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBi ZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2 NDd9PykKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiB7LTEsM30/IChuZWdh dGl2ZSBsb3dlciBib3VuZCBpbiByYW5nZSBpcyBub3QgYWxsb3dlZCkKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXstMSwzfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCitMSU5FIDY6ICAgICBQQVRURVJOIChB ey0xLDN9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6IHsxLDIxNDc0ODM2 NDd9PyAodXBwZXIgYm91bmQgaW4gcmFuZ2UgZXhjZWVkcyBsaW1pdHMpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEF7MSwyMTQ3NDgzNjQ3fT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKTsKK0VSUk9SOiAgcXVhbnRpZmllciBib3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIx NDc0ODM2NDYgd2l0aCBtYXggPj0gMQorTElORSA2OiAgICAgUEFUVEVSTiAoQXsxLDIxNDc0ODM2 NDd9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6IHs1LDN9PyAobWluID4g bWF4IGlzIG5vdCBhbGxvd2VkKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVs dWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezUsM30/ KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIgbWluaW11 bSBib3VuZCBtdXN0IG5vdCBleGNlZWQgbWF4aW11bQorTElORSA2OiAgICAgUEFUVEVSTiAoQXs1 LDN9PykKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gVG9rZW4tc2VwYXJhdGVkIHJlbHVj dGFudCBxdWFudGlmaWVycyAoc3BhY2UgYmV0d2VlbiBxdWFudGlmaWVyIGFuZCA/KQorLS0gVGhl c2UgbWF5IGJlIHRva2VuaXplZCBkaWZmZXJlbnRseSBieSB0aGUgbGV4ZXIKKy0tICogPyAodG9r ZW4gc2VwYXJhdGVkKQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBt YXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKiA/KQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorICAgICAwCiso MyByb3dzKQorCistLSArID8gKHRva2VuIHNlcGFyYXRlZCkKKy0tIFJlbHVjdGFudCBxdWFudGlm aWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSsgPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAg ICAxCisgICAgIDEKKyAgICAgMQorKDMgcm93cykKKworLS0gezIsfSA/ICh0b2tlbiBzZXBhcmF0 ZWQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9ID8pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMgorICAgICAwCisgICAgIDAKKygzIHJvd3Mp CisKKy0tICogKyAoaW52YWxpZCBjb21iaW5hdGlvbikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcK K0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSogKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBzeW50YXgg ZXJyb3IgYXQgb3IgbmVhciAiKyIKK0xJTkUgNjogICAgIFBBVFRFUk4gKEEqICspCisgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSArICogKGludmFsaWQgY29tYmluYXRpb24pCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErICopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIioiCitMSU5FIDY6ICAgICBQQVRURVJO IChBKyAqKQorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gPyA/IChwYXJzZWQgYXMgPz8g cmVsdWN0YW50IHF1YW50aWZpZXIpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNo b3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEE/ID8pCisgICAgREVG SU5FIEEgQVMgdmFsID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAgICAwCisg ICAgIDAKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX3JlbHVjdGFudDsKKy0tIFF1YW50aWZp ZXIgYm91bmRhcnkgY29uZGl0aW9ucworQ1JFQVRFIFRBQkxFIHJwcl9ib3VuZHMgKGlkIElOVCk7 CitJTlNFUlQgSU5UTyBycHJfYm91bmRzIFZBTFVFUyAoMSksICgyKTsKKy0tIEVSUk9SOiBxdWFu dGlmaWVyIGxvd2VyIGJvdW5kIG11c3Qgbm90IGV4Y2VlZCB1cHBlciBib3VuZAorU0VMRUNUIENP VU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBezUsM30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworRVJS T1I6ICBxdWFudGlmaWVyIG1pbmltdW0gYm91bmQgbXVzdCBub3QgZXhjZWVkIG1heGltdW0KK0xJ TkUgNjogICAgIFBBVFRFUk4gKEF7NSwzfSkKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g TGFyZ2UgYm91bmRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MTAwMCwyMDAwfSkKKyAg ICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAg MAorKDIgcm93cykKKworLS0gVmVyeSBsYXJnZSBib3VuZAorU0VMRUNUIENPVU5UKCopIE9WRVIg dworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBezEwMDAwMH0pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworIGNvdW50IAorLS0t LS0tLQorICAgICAwCisgICAgIDAKKygyIHJvd3MpCisKKy0tIElOVF9NQVggLSAxID0gMjE0NzQ4 MzY0NiAoYXQgbGltaXQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nn0p CisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisg ICAgIDAKKygyIHJvd3MpCisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIGJvdW5kIGV4Y2VlZHMgbGlt aXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0N30pCisgICAgREVGSU5F IEEgQVMgaWQgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2Vl biAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRURVJOIChBezIxNDc0ODM2NDd9KQor ICAgICAgICAgICAgICAgICAgICAgICBeCistLSB7bix9IGJvdW5kYXJ5IGVycm9ycworLS0gRVJS T1I6IG5lZ2F0aXZlIGxvd2VyIGJvdW5kIGluIHtuLH0gaXMgbm90IGFsbG93ZWQKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQXstMSx9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIi0iCitMSU5FIDY6ICAgICBQQVRURVJOIChB ey0xLH0pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiBxdWFudGlmaWVyIGxv d2VyIGJvdW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0 NzQ4MzY0Nyx9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKK0VSUk9SOiAgcXVhbnRpZmll ciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjE0NzQ4MzY0NgorTElORSA2OiAgICAgUEFU VEVSTiAoQXsyMTQ3NDgzNjQ3LH0pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHssbX0g Ym91bmRhcnkgZXJyb3JzCistLSBaZXJvIHVwcGVyIGJvdW5kIGluIHssbX0KK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXssMH0pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworRVJST1I6 ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5F IDY6ICAgICBQQVRURVJOIChBeywwfSkKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiBxdWFudGlmaWVyIHVwcGVyIGJvdW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2NDd9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsK K0VSUk9SOiAgcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0 NgorTElORSA2OiAgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30pCisgICAgICAgICAgICAgICAg ICAgICAgICBeCitEUk9QIFRBQkxFIHJwcl9ib3VuZHM7CistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE5hdmlnYXRpb24g RnVuY3Rpb25zIFRlc3RzIChQUkVWIC8gTkVYVCAvIEZJUlNUIC8gTEFTVCkKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JF QVRFIFRBQkxFIHJwcl9uYXYgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbmF2 IFZBTFVFUworICAgICgxLCAxMCksICgyLCAyMCksICgzLCAxNSksICg0LCAyNSksICg1LCAzMCk7 CistLSBQUkVWIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIHByZXZpb3VzIHJvdyBpbiBwYXR0ZXJuCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQor ICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgdmFsID4gUFJFVih2YWwpCispCitP UkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAx MCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDMKKyAgNCB8ICAyNSB8ICAg MAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBORVhUIGZ1bmN0aW9uIC0gcmVmZXJl bmNlIG5leHQgcm93IGluIHBhdHRlcm4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsIDwgTkVYVCh2YWwpLAor ICAgICAgICBCIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAor LS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8 ICAxNSB8ICAgMworICA0IHwgIDI1IHwgICAwCisgIDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisK Ky0tIENvbWJpbmVkIFBSRVYgYW5kIE5FWFQKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAg ICAgIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCB2YWwgPCBORVhUKHZhbCksCisgICAgICAgIEMg QVMgdmFsID4gUFJFVih2YWwpCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAg MTUgfCAgIDMKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCist LSBQUkVWIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxF Q1QgUFJFVihpZCksIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25h dgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFs KQorKQorT1JERVIgQlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2UgcHJldiBvdXRzaWRlIGEgREVG SU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgUFJFVihpZCksIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICAgICAgICAgICAgIF4KKy0tIE5FWFQgZnVuY3Rpb24gY2Fubm90IGJl IHVzZWQgb3RoZXIgdGhhbiBpbiBERUZJTkUKK1NFTEVDVCBORVhUKGlkKSwgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+ IDAsCisgICAgICAgIEIgQVMgdmFsID4gUFJFVih2YWwpCispCitPUkRFUiBCWSBpZDsKK0VSUk9S OiAgY2Fubm90IHVzZSBuZXh0IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlCitMSU5FIDE6IFNFTEVD VCBORVhUKGlkKSwgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgICAgICAgICAg ICAgXgorLS0gRklSU1QgZnVuY3Rpb24gLSByZWZlcmVuY2UgbWF0Y2hfc3RhcnQgcm93CitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAg ICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgdmFsID4gRklSU1QodmFsKQorKQorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDUKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUgfCAgIDAK KyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworLS0gTEFTVCBmdW5jdGlvbiB3aXRob3V0IG9m ZnNldCAtIGVxdWl2YWxlbnQgdG8gY3VycmVudCByb3cncyB2YWx1ZQorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2 YWwgPiAwLAorICAgICAgICBCIEFTIExBU1QodmFsKSA+IFBSRVYodmFsKQorKQorT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIK KyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8 ICAzMCB8ICAgMAorKDUgcm93cykKKworLS0gRklSU1QgYW5kIExBU1QgY29tYmluZWQKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgdmFsID4gMCwKKyAgICAgICAgQiBBUyB2YWwgPiBGSVJTVCh2YWwpIEFORCBMQVNU KHZhbCkgPiBQUkVWKHZhbCkKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0t LSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAx NSB8ICAgMworICA0IHwgIDI1IHwgICAwCisgIDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKKy0t IEZJUlNUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxF Q1QgRklSU1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsKK0VSUk9SOiAgY2Fubm90IHVzZSBm aXJzdCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgRklSU1QoaWQpLCBp ZCwgdmFsIEZST00gcnByX25hdjsKKyAgICAgICAgICAgICAgIF4KKy0tIExBU1QgZnVuY3Rpb24g Y2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBpbiBERUZJTkUKK1NFTEVDVCBMQVNUKGlkKSwgaWQs IHZhbCBGUk9NIHJwcl9uYXY7CitFUlJPUjogIGNhbm5vdCB1c2UgbGFzdCBvdXRzaWRlIGEgREVG SU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgTEFTVChpZCksIGlkLCB2YWwgRlJPTSBycHJfbmF2 OworICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBycHJfbmF2OworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTS0lQ IFRPIC8gSU5JVElBTCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX3NraXAgKGlkIElO VCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc2tpcCBWQUxVRVMKKyAgICAoMSwgMSksICgy LCAyKSwgKDMsIDMpLCAoNCwgNCksICg1LCA1KSwKKyAgICAoNiwgNiksICg3LCA3KSwgKDgsIDgp OworLS0gU0tJUCBUTyBORVhUIFJPVworLS0gU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NraXAKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMg dmFsID4gNAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgIDEgfCAgIDAKKyAgMiB8ICAgMiB8ICAgMAorICAzIHwgICAzIHwgICAzCisg IDQgfCAgIDQgfCAgIDMKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgICA2IHwgICAzCisgIDcgfCAg IDcgfCAgIDAKKyAgOCB8ICAgOCB8ICAgMAorKDggcm93cykKKworLS0gU0tJUCBQQVNUIExBU1Qg Uk9XCistLSBTS0lQIFBBU1QgTEFTVCBST1cKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9za2lwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAorKQorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDEg fCAgIDAKKyAgMiB8ICAgMiB8ICAgMAorICAzIHwgICAzIHwgICAzCisgIDQgfCAgIDQgfCAgIDAK KyAgNSB8ICAgNSB8ICAgMAorICA2IHwgICA2IHwgICAzCisgIDcgfCAgIDcgfCAgIDAKKyAgOCB8 ICAgOCB8ICAgMAorKDggcm93cykKKworLS0gRGVmYXVsdCBiZWhhdmlvciAoc2hvdWxkIGJlIFNL SVAgUEFTVCBMQVNUIFJPVykKKy0tIE5vIFNLSVAgVE8gY2xhdXNlIChkZWZhdWx0KQorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NraXAKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwLCBCIEFTIHZhbCA+IDEKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAor LS0tLSstLS0tLSstLS0tLQorICAxIHwgICAxIHwgICAyCisgIDIgfCAgIDIgfCAgIDAKKyAgMyB8 ICAgMyB8ICAgMgorICA0IHwgICA0IHwgICAwCisgIDUgfCAgIDUgfCAgIDIKKyAgNiB8ICAgNiB8 ICAgMAorICA3IHwgICA3IHwgICAyCisgIDggfCAgIDggfCAgIDAKKyg4IHJvd3MpCisKKy0tIENv bXBhcmUgZGVmYXVsdCB3aXRoIGV4cGxpY2l0IFBBU1QgTEFTVCBST1cKKy0tIFJlc3VsdHMgc2hv dWxkIGJlIGlkZW50aWNhbAorV0lUSCBkZWZhdWx0X3NraXAgQVMgKAorICAgIFNFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfc2tpcAorICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQiBDKQor ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAor ICAgICkKKyksCitleHBsaWNpdF9za2lwIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3NraXAKKyAgICBXSU5ET1cgdyBBUyAoCisg ICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICAgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAs IEIgQVMgdmFsID4gMiwgQyBBUyB2YWwgPiA0CisgICAgKQorKQorU0VMRUNUICdkZWZhdWx0JyBh cyB0eXBlLCAqIEZST00gZGVmYXVsdF9za2lwCitVTklPTiBBTEwKK1NFTEVDVCAnZXhwbGljaXQn IGFzIHR5cGUsICogRlJPTSBleHBsaWNpdF9za2lwCitPUkRFUiBCWSB0eXBlLCBpZDsKKyAgIHR5 cGUgICB8IGlkIHwgdmFsIHwgY250IAorLS0tLS0tLS0tLSstLS0tKy0tLS0tKy0tLS0tCisgZGVm YXVsdCAgfCAgMSB8ICAgMSB8ICAgMAorIGRlZmF1bHQgIHwgIDIgfCAgIDIgfCAgIDAKKyBkZWZh dWx0ICB8ICAzIHwgICAzIHwgICAzCisgZGVmYXVsdCAgfCAgNCB8ICAgNCB8ICAgMAorIGRlZmF1 bHQgIHwgIDUgfCAgIDUgfCAgIDAKKyBkZWZhdWx0ICB8ICA2IHwgICA2IHwgICAzCisgZGVmYXVs dCAgfCAgNyB8ICAgNyB8ICAgMAorIGRlZmF1bHQgIHwgIDggfCAgIDggfCAgIDAKKyBleHBsaWNp dCB8ICAxIHwgICAxIHwgICAwCisgZXhwbGljaXQgfCAgMiB8ICAgMiB8ICAgMAorIGV4cGxpY2l0 IHwgIDMgfCAgIDMgfCAgIDMKKyBleHBsaWNpdCB8ICA0IHwgICA0IHwgICAwCisgZXhwbGljaXQg fCAgNSB8ICAgNSB8ICAgMAorIGV4cGxpY2l0IHwgIDYgfCAgIDYgfCAgIDMKKyBleHBsaWNpdCB8 ICA3IHwgICA3IHwgICAwCisgZXhwbGljaXQgfCAgOCB8ICAgOCB8ICAgMAorKDE2IHJvd3MpCisK K0RST1AgVEFCTEUgcnByX3NraXA7CitDUkVBVEUgVEFCTEUgcnByX2luaXQgKGlkIElOVCwgdmFs IElOVCk7CitJTlNFUlQgSU5UTyBycHJfaW5pdCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMs IDMwKSwgKDQsIDQwKTsKKy0tIEV4cGxpY2l0IElOSVRJQUwKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9pbml0CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0t CisgIDEgfCAgMTAgfCAgIDQKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQg fCAgNDAgfCAgIDAKKyg0IHJvd3MpCisKKy0tIEltcGxpY2l0IElOSVRJQUwgKGRlZmF1bHQpCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfaW5pdAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAgMTAgfCAgIDQKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAw CisgIDQgfCAgNDAgfCAgIDAKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2luaXQ7CistLSBT RUVLCitDUkVBVEUgVEFCTEUgcnByX3NlZWsgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5U TyBycHJfc2VlayBWQUxVRVMgKDEsIDEwKTsKKy0tIFNFRUsga2V5d29yZCwgU0VFSyBtb2RlIGlz IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3NlZWsKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFNFRUsKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBTRUVLIGlzIG5vdCBzdXBwb3J0ZWQK K0xJTkUgNjogICAgIFNFRUsKKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgSU5JVElBTCBpbnN0 ZWFkLgorRFJPUCBUQUJMRSBycHJfc2VlazsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU2VyaWFsaXphdGlvbi9EZXNl cmlhbGl6YXRpb24gVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSLWRlZmluaW5nIHZpZXdzIGFuZCB0YWJs ZXMgaGVyZSBhcmUgaW50ZW50aW9uYWxseSBsZWZ0IGluIHBsYWNlIChub3QKKy0tIGRyb3BwZWQp IHNvIHRoYXQgcGdfZHVtcC9wZ191cGdyYWRlIGV4ZXJjaXNlIHRoZSBkZXBhcnNlLXRoZW4tcmUt cGFyc2UKKy0tIHJvdW5kLXRyaXAgb2YgdGhlIFJQUiB3aW5kb3cgY2xhdXNlLgorLS0gVmlldyBj cmVhdGlvbiBhbmQgZGVwYXJzaW5nCitDUkVBVEUgVEFCTEUgcnByX3NlcmlhbCAoaWQgSU5ULCB2 YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9zZXJpYWwgVkFMVUVTCisgICAgKDEsIDEwKSwgKDIs IDIwKSwgKDMsIDE1KSwgKDQsIDI1KSwgKDUsIDMwKTsKKy0tIFNpbXBsZSBwYXR0ZXJuCitDUkVB VEUgVklFVyBycHJfc2VyaWFsX3YxIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworLS0gVmVyaWZ5IHZp ZXcgd29ya3MgKHRlc3RzIGRlc2VyaWFsaXphdGlvbikKK1NFTEVDVCAqIEZST00gcnByX3Nlcmlh bF92MSBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8ICAxMCB8ICAgNQorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAy NSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBWZXJpZnkgZGVwYXJzaW5n CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjEnOjpyZWdjbGFzcyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg IEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhKykgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsID4gMCkgKTsKKygxIHJvdykKKworLS0g Q29tcGxleCBwYXR0ZXJuIHdpdGggYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxf djIgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9z ZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIHwgQiop CisgICAgREVGSU5FIEEgQVMgdmFsID4gMjAsIEIgQVMgdmFsIDw9IDIwCispOworU0VMRUNUICog RlJPTSBycHJfc2VyaWFsX3YyIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8 ICAgMAorICA0IHwgIDI1IHwgICAyCisgIDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKK1NFTEVD VCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92Mic6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY250ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBy cHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGErIHwgYiopICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5F ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAyMCksICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKHZhbCA8PSAyMCkg KTsKKygxIHJvdykKKworLS0gUGF0dGVybiB3aXRoIGdyb3VwaW5nIGFuZCBxdWFudGlmaWVycwor Q1JFQVRFIFZJRVcgcnByX3NlcmlhbF92MyBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoKEEgQil7Miw1fSB8IEMqKQorICAgIERFRklORQorICAgICAgICBBIEFT IHZhbCA+IDEwLAorICAgICAgICBCIEFTIHZhbCA+IDIwLAorICAgICAgICBDIEFTIHZhbCA8PSAx MAorKTsKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92MyBPUkRFUiBCWSBpZDsKKyBpZCB8IHZh bCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMQorICAyIHwgIDIwIHwg ICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCiso NSByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjMnOjpyZWdjbGFz cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxF Q1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZF UiB3IEFTIGNudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgIEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOICgoYSBi KXsyLDV9IHwgYyopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsID4gMTApLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBi IEFTICh2YWwgPiAyMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIGMgQVMgKHZhbCA8PSAxMCkgKTsKKygxIHJvdykKKworLS0g QWxsIGZlYXR1cmVzIGNvbWJpbmVkCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y0IEFTCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJUIChNSUR7MSwzfSB8IEFMVCspIEZJTklT SCkKKyAgICBERUZJTkUKKyAgICAgICAgU1RBUlQgQVMgdmFsID4gNSwKKyAgICAgICAgTUlEIEFT IHZhbCBCRVRXRUVOIDEwIEFORCAyNSwKKyAgICAgICAgQUxUIEFTIHZhbCA+IDI1LAorICAgICAg ICBGSU5JU0ggQVMgdmFsID4gMTUKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjQgT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDUKKyAgMiB8ICAyMCB8ICAgNAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUgfCAgIDAK KyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJf c2VyaWFsX3Y0Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgUEFUVEVSTiAoc3RhcnQgKG1pZHsxLDN9IHwgYWx0KykgZmluaXNoKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIHN0YXJ0 IEFTICh2YWwgPiA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgbWlkIEFTICgodmFsID49IDEwKSBBTkQgKHZhbCA8PSAyNSkpLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhbHQgQVMgKHZhbCA+IDI1 KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIGZpbmlzaCBBUyAodmFsID4gMTUpICk7CisoMSByb3cpCisKKy0tIEFkZGl0aW9uYWwg cXVhbnRpZmllcnMgZm9yIGRlcGFyc2luZyBjb3ZlcmFnZQorLS0gPyBxdWFudGlmaWVyICh6ZXJv IG9yIG9uZSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjUgQVMKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAs IEIgQVMgdmFsID4gMjAKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjUgT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAK KyAgMiB8ICAyMCB8ICAgMQorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8 ICAzMCB8ICAgMQorKDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFs X3Y1Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf dmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg IGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg UEFUVEVSTiAoYSBiPykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+ IDEwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgYiBBUyAodmFsID4gMjApICk7CisoMSByb3cpCisKKy0tIHtuLH0gcXVhbnRp ZmllciAobiBvciBtb3JlKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF92NiBBUworU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyLH0pCisgICAgREVGSU5FIEEgQVMg dmFsID4gMTUKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjYgT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUgfCAgIDIKKyAgNSB8ICAzMCB8 ICAgMAorKDUgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3Y2Jzo6 cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2Rl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAr CisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVS TiAoYXsyLH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+IDE1KSAp OworKDEgcm93KQorCistLSB7bn0gcXVhbnRpZmllciAoZXhhY3RseSBuKQorQ1JFQVRFIFZJRVcg cnByX3NlcmlhbF92NyBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQXszfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworU0VMRUNUICogRlJPTSBycHJf c2VyaWFsX3Y3IE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMAorICA0 IHwgIDI1IHwgICAwCisgIDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRf dmlld2RlZigncnByX3NlcmlhbF92Nyc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFs LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklU SUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGF7M30pICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBhIEFTICh2YWwgPiAwKSApOworKDEgcm93KQorCistLSBOZXN0ZWQgQUxUIHBhdHRl cm4gKHRlc3RzIGRlcGFyc2Ugb2YgY29tcGxleCBuZXN0ZWQgc3RydWN0dXJlKQorQ1JFQVRFIFZJ RVcgcnByX3NlcmlhbF92OCBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoKChBKyBCKSB8IEMpIEQgfCBBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMTUs IEIgQVMgdmFsIDw9IDI1LCBDIEFTIHZhbCA8PSAzMCwgRCBBUyB2YWwgPiAzMAorKTsKK1NFTEVD VCAqIEZST00gcnByX3NlcmlhbF92OCBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAg MTUgfCAgIDAKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCitT RUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjgnOjpyZWdjbGFzcyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZS T00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOICgoKGErIGIpIHwgYykgZCB8 IGEgYiBjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERF RklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsIDw9IDE1KSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTICh2YWwgPD0g MjUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGMgQVMgKHZhbCA8PSAzMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgZCBBUyAodmFsID4gMzApICk7CisoMSBy b3cpCisKKy0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogUFJFViB3aXRoIG9m ZnNldAorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXYxIEFTCitTRUxFQ1QgaWQsIHZhbCwgY291 bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyB2YWwgPiBQUkVWKHZhbCwgMikpOworU0VMRUNUIHBnX2dldF92aWV3ZGVm KCdycHJfc2VyaWFsX25hdjEnOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZhbCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gcnByX3NlcmlhbCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBQQVRURVJOIChhIGIrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgYSBBUyB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTICh2YWwgPiBQUkVWKHZhbCwgKDIpOjpiaWdp bnQpKSApOworKDEgcm93KQorCistLSBOYXZpZ2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb246 IEZJUlNUIGFuZCBMQVNUCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX25hdjIgQVMKK1NFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZhbCkgPCBMQVNUKHZhbCwgMSkpOworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX25hdjInOjpyZWdjbGFzcyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZS T00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhIGIrKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERF RklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgYSBBUyB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTIChGSVJTVCh2 YWwpIDwgTEFTVCh2YWwsICgxKTo6YmlnaW50KSkgKTsKKygxIHJvdykKKworLS0gTmF2aWdhdGlv biBmdW5jdGlvbiBzZXJpYWxpemF0aW9uOiBjb21wb3VuZCBQUkVWKEZJUlNUKCkpCitDUkVBVEUg VklFVyBycHJfc2VyaWFsX25hdjMgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcK K0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFT IFBSRVYoRklSU1QodmFsLCAxKSwgMikgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnBy X3NlcmlhbF9uYXYzJzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgUEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEg QVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgYiBBUyAoUFJFVihGSVJTVCh2YWwsICgxKTo6YmlnaW50KSwg KDIpOjpiaWdpbnQpID4gMCkgKTsKKygxIHJvdykKKworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBz ZXJpYWxpemF0aW9uOiBjb21wb3VuZCBORVhUKExBU1QoKSkKK0NSRUFURSBWSUVXIHJwcl9zZXJp YWxfbmF2NCBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2Vy aWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChMQVNUKHZh bCksIDIpIElTIE5PVCBOVUxMKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9u YXY0Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf dmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg IGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg UEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgdHJ1ZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgYiBBUyAoTkVYVChMQVNUKHZhbCksICgyKTo6YmlnaW50KSBJUyBOT1QgTlVM TCkgKTsKKygxIHJvdykKKworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBzZXJpYWxpemF0aW9uOiBj b21wb3VuZCBQUkVWKExBU1QoKSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfbmF2NSBBUworU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAg ICAgICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgUFJFVihMQVNUKHZhbCwgMSksIDIpID4gMCk7 CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfbmF2NSc6OnJlZ2NsYXNzKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMg Y291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGEgYispICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIHRydWUsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKFBS RVYoTEFTVCh2YWwsICgxKTo6YmlnaW50KSwgKDIpOjpiaWdpbnQpID4gMCkgKTsKKygxIHJvdykK KworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBzZXJpYWxpemF0aW9uOiBjb21wb3VuZCBORVhUKEZJ UlNUKCkpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX25hdjYgQVMKK1NFTEVDVCBpZCwgdmFsLCBj b3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk CisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIE5FWFQoRklSU1QodmFsKSwgMykgPiAwKTsKK1NFTEVDVCBwZ19nZXRf dmlld2RlZigncnByX3NlcmlhbF9uYXY2Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2 YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJp YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElO SVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGEgQVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAoTkVYVChGSVJTVCh2YWwpLCAo Myk6OmJpZ2ludCkgPiAwKSApOworKDEgcm93KQorCistLSBQcmV0dHkgZGVwYXJzZTogbmF2aWdh dGlvbiBjYWxscyBhcmUgZnVuY3Rpb24tbGlrZSBhbmQgdGFrZSBubyBleHRyYSBwYXJlbnMKK0NS RUFURSBWSUVXIHJwcl9uYXZfcHJldHR5X3YgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBUUlVF LAorICAgICAgICAgICAgICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKSBBTkQgUFJFVih2YWwp IElTIE5PVCBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIE5FWFQodmFsKSA+IEZJ UlNUKHZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBBTkQgUFJFVihGSVJTVCh2YWwpKSA+ IDApOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfbmF2X3ByZXR0eV92Jzo6cmVnY2xhc3Ms IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VM RUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIg dyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgUEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBE RUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgdHJ1 ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyB2YWwgPiBQUkVW KHZhbCkgQU5EIFBSRVYodmFsKSBJUyBOT1QgTlVMTCBBTkQgTkVYVCh2YWwpID4gRklSU1QodmFs KSBBTkQgUFJFVihGSVJTVCh2YWwpKSA+IDAgKTsKKygxIHJvdykKKworLS0gUmVsdWN0YW50IHsx fT8gcXVhbnRpZmllciBkZXBhcnNlIHRocm91Z2ggcnVsZXV0aWxzCitDUkVBVEUgVklFVyBycHJf cXVhbnRfcmVsdWN0YW50X3YgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgSU5JVElBTAorICAgICAgICAgICAgIFBBVFRFUk4gKEF7MX0/IEIpCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2Rl ZigncnByX3F1YW50X3JlbHVjdGFudF92Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2 YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJp YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElO SVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYXsxfT8gYikgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGEgQVMgKHZhbCA+IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAodmFsID4gMCkgKTsKKygxIHJv dykKKworLS0gUXVvdGVkIGlkZW50aWZpZXIgcm91bmQtdHJpcDogbWl4ZWQgY2FzZSBhbmQgcmVz ZXJ2ZWQgd29yZHMgbmVlZCBxdW90aW5nCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3F1b3RlZCBB UworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgiU3RhcnQi ICJVcCIrKQorICAgICAgICAgICAgIERFRklORSAiU3RhcnQiIEFTIFRSVUUsICJVcCIgQVMgdmFs ID4gUFJFVih2YWwpKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9xdW90ZWQn OjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291 bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgIEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H ICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRU RVJOICgiU3RhcnQiICJVcCIrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIlN0YXJ0IiBBUyB0cnVl LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAiVXAiIEFTICh2YWwgPiBQUkVWKHZhbCkpICk7CisoMSByb3cpCisKKy0tIElubGlu ZSBPVkVSIHJvdW5kLXRyaXA6IGlubGluZSB3aW5kb3cgc3BlYyAobm8gV0lORE9XIGFsaWFzKSBk ZXBhcnNlcyBpbnNpZGUgT1ZFUiAoLi4uKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9pbmxpbmVf b3ZlciBBUworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkg aWQKKyAgICAgICAgICAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICAgICAgICAgICBQQVRURVJOIChBIEIrKQor ICAgICAgICAgICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDEwLCBCIEFTIHZhbCA+IFBS RVYodmFsKSkgQVMgY250CitGUk9NIHJwcl9zZXJpYWw7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J3Jwcl9zZXJpYWxfaW5saW5lX292ZXInOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAr CisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICBQQVRURVJOIChhIGIrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBh IEFTICh2YWwgPiAxMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTICh2YWwgPiBQUkVWKHZhbCkpICkgQVMgY250 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJP TSBycHJfc2VyaWFsOworKDEgcm93KQorCistLSBNYXRlcmlhbGl6ZWQgdmlldyAoaWYgc3VwcG9y dGVkKQorQ1JFQVRFIFRBQkxFIHJwcl9tdmlldyAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJ TlRPIHJwcl9tdmlldyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKK0NSRUFURSBN QVRFUklBTElaRUQgVklFVyBycHJfbXZpZXdfdjEgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9tdmlldworV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK1NFTEVD VCAqIEZST00gcnByX212aWV3X3YxIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0t LSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAz MCB8ICAgMAorKDMgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfbXZpZXdfdjEn OjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291 bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgIEZST00gcnByX212aWV3ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H ICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRU RVJOIChhKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBBUyAodmFsID4gMCkg KTsKKygxIHJvdykKKworLS0gUmVmcmVzaCB0ZXN0CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVX IHJwcl9tdmlld192MTsKK1NFTEVDVCAqIEZST00gcnByX212aWV3X3YxIE9SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIg fCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorKDMgcm93cykKKworLS0gQ1JFQVRFIFRBQkxF IEFTIFNFTEVDVCB3aXRoIFJQUgorQ1JFQVRFIFRBQkxFIHJwcl9jdGFzIChpZCBJTlQsIHZhbCBJ TlQpOworSU5TRVJUIElOVE8gcnByX2N0YXMgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAx NSksICg0LCAyNSk7CitDUkVBVEUgVEFCTEUgcnByX2N0YXNfcmVzdWx0IEFTCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY3RhcworV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIHZhbCA+IFBSRVYodmFs KQorKTsKK1NFTEVDVCAqIEZST00gcnByX2N0YXNfcmVzdWx0IE9SREVSIEJZIGlkOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAg fCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisoNCByb3dzKQorCistLSBJ TlNFUlQgSU5UTyAuLi4gU0VMRUNUIHdpdGggUlBSCitDUkVBVEUgVEFCTEUgcnByX2luc2VydF90 YXJnZXQgKGlkIElOVCwgdmFsIElOVCwgY250IEJJR0lOVCk7CitJTlNFUlQgSU5UTyBycHJfaW5z ZXJ0X3RhcmdldAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfY3Rh cworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFT IHZhbCA+IFBSRVYodmFsKQorKTsKK1NFTEVDVCAqIEZST00gcnByX2luc2VydF90YXJnZXQgT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAK Kyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2N0YXNfcmVzdWx0OworRFJPUCBUQUJMRSBycHJf aW5zZXJ0X3RhcmdldDsKK0RST1AgVEFCTEUgcnByX2N0YXM7CistLSBQcmVwYXJlZCBzdGF0ZW1l bnRzICh0ZXN0cyBvdXRmdW5jcy5jIC8gcmVhZGZ1bmNzLmMpCitDUkVBVEUgVEFCTEUgcnByX3By ZXAgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcHJlcCBWQUxVRVMgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDMwKTsKKy0tIFNpbXBsZSBwcmVwYXJlZCBzdGF0ZW1lbnQKK1BSRVBB UkUgcnByX3ByZXBfc2ltcGxlIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcHJlcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CitFWEVD VVRFIHJwcl9wcmVwX3NpbXBsZTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKygzIHJv d3MpCisKK0VYRUNVVEUgcnByX3ByZXBfc2ltcGxlOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8 ICAgMAorKDMgcm93cykKKworREVBTExPQ0FURSBycHJfcHJlcF9zaW1wbGU7CistLSBQcmVwYXJl ZCBzdGF0ZW1lbnQgd2l0aCBwYXJhbWV0ZXJzCitQUkVQQVJFIHJwcl9wcmVwX3BhcmFtKGludCkg QVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wcmVw CitXSEVSRSBpZCA8PSAkMQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAKKykKK09SREVSIEJZIGlkOworRVhFQ1VU RSBycHJfcHJlcF9wYXJhbSgyKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAxCisoMiByb3dzKQorCitFWEVDVVRFIHJw cl9wcmVwX3BhcmFtKDMpOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAx IHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDIKKyAgMyB8ICAzMCB8ICAgMAorKDMgcm93cykK KworREVBTExPQ0FURSBycHJfcHJlcF9wYXJhbTsKKy0tIENvbXBsZXggcHJlcGFyZWQgc3RhdGVt ZW50CitQUkVQQVJFIHJwcl9wcmVwX2NvbXBsZXggQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wcmVwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQil7 MSwyfSB8IEMrKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDUsCisgICAgICAgIEIg QVMgdmFsID4gMTUsCisgICAgICAgIEMgQVMgdmFsIDw9IDE1CispCitPUkRFUiBCWSBpZDsKK0VY RUNVVEUgcnByX3ByZXBfY29tcGxleDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAyCisgIDMgfCAgMzAgfCAgIDAKKygz IHJvd3MpCisKK0VYRUNVVEUgcnByX3ByZXBfY29tcGxleDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAyCisgIDMgfCAg MzAgfCAgIDAKKygzIHJvd3MpCisKK0RFQUxMT0NBVEUgcnByX3ByZXBfY29tcGxleDsKK0RST1Ag VEFCTEUgcnByX3ByZXA7CistLSBDVEUgYW5kIFN1YnF1ZXJ5ICh0ZXN0cyBjb3B5ZnVuY3MuYykK K0NSRUFURSBUQUJMRSBycHJfY29weSAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJw cl9jb3B5IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApOworLS0gU2lt cGxlIENURQorV0lUSCBycHJfY3RlIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2NvcHkKKyAgICBXSU5ET1cgdyBBUyAoCisgICAg ICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEg QVMgdmFsID4gMAorICAgICkKKykKK1NFTEVDVCAqIEZST00gcnByX2N0ZSBPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNAorICAy IHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorKDQgcm93cykK KworLS0gQ1RFIHdpdGggbXVsdGlwbGUgcmVmZXJlbmNlcyAoZm9yY2VzIG5vZGUgY29weSkKK1dJ VEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKKyAgICBGUk9NIHJwcl9jb3B5CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBC WSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDE1 CisgICAgKQorKQorU0VMRUNUIGMxLmlkLCBjMS5jbnQgYXMgY250MSwgYzIuY250IGFzIGNudDIK K0ZST00gcnByX2N0ZSBjMQorSk9JTiBycHJfY3RlIGMyIE9OIGMxLmlkID0gYzIuaWQKK09SREVS IEJZIGMxLmlkOworIGlkIHwgY250MSB8IGNudDIgCistLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8 ICAgIDAgfCAgICAwCisgIDIgfCAgICAzIHwgICAgMworICAzIHwgICAgMCB8ICAgIDAKKyAgNCB8 ICAgIDAgfCAgICAwCisoNCByb3dzKQorCistLSBTdWJxdWVyeSBpbiBGUk9NIGNsYXVzZQorU0VM RUNUICoKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CisgICAgRlJPTSBycHJfY29weQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEEgQj8pCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDEw LCBCIEFTIHZhbCA+IDIwCisgICAgKQorKSBzdWIKK1dIRVJFIGNudCA+IDAKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAyIHwgIDIwIHwgICAyCisg IDQgfCAgNDAgfCAgIDEKKygyIHJvd3MpCisKKy0tIE5lc3RlZCBzdWJxdWVyaWVzCitTRUxFQ1Qg KgorRlJPTSAoCisgICAgU0VMRUNUICoKKyAgICBGUk9NICgKKyAgICAgICAgU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgRlJPTSBycHJfY29weQorICAgICAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICBQQVRURVJOIChBKykKKyAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+PSAxMAorICAgICAg ICApCisgICAgKSBpbm5lcl9zdWIKKyAgICBXSEVSRSBjbnQgPiAwCispIG91dGVyX3N1YgorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDQKKygxIHJvdykKKworRFJPUCBUQUJMRSBycHJfY29weTsKKy0tIERJU1RJTkNUIGFuZCBz ZXQgb3BlcmF0aW9ucyAodGVzdHMgZXF1YWxmdW5jcy5jKQorQ1JFQVRFIFRBQkxFIHJwcl9lcXVh bCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9lcXVhbCBWQUxVRVMgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDEwKSwgKDQsIDIwKTsKKy0tIERJU1RJTkNUIHdpdGggUlBSCitTRUxF Q1QgRElTVElOQ1QgY250CitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0lORE9XIHcgQVMgKAorICAgICAg ICBPUkRFUiBCWSB2YWwKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCisp IHN1YgorT1JERVIgQlkgY250OworIGNudCAKKy0tLS0tCisgICAxCisgICAyCisgICAzCisgICA0 CisoNCByb3dzKQorCistLSBVTklPTiB3aXRoIFJQUiBpbiBib3RoIHNpZGVzCitTRUxFQ1QgaWQs IHZhbCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBXSEVSRSB2YWwgPSAxMAorICAgIFdJTkRPVyB3 IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBzdWIxCitVTklPTgorU0VMRUNUIGlkLCB2 YWwsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgdmFsID0gMjAKKyAgICBXSU5ET1cgdyBB UyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAg REVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMgorT1JERVIgQlkgaWQ7CisgaWQgfCB2 YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8 ICAgMgorICAzIHwgIDEwIHwgICAwCisgIDQgfCAgMjAgfCAgIDAKKyg0IHJvd3MpCisKKy0tIFVO SU9OIEFMTAorU0VMRUNUIGlkLCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBP VkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBXSU5ET1cgdyBBUyAoCisgICAg ICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEg QVMgdmFsID4gMTAKKyAgICApCispIHN1YgorVU5JT04gQUxMCitTRUxFQ1QgaWQsIGNudCBGUk9N ICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9l cXVhbAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPD0gMTAKKyAgICApCispIHN1Ygor T1JERVIgQlkgaWQsIGNudDsKKyBpZCB8IGNudCAKKy0tLS0rLS0tLS0KKyAgMSB8ICAgMAorICAx IHwgICAxCisgIDIgfCAgIDAKKyAgMiB8ICAgMQorICAzIHwgICAwCisgIDMgfCAgIDEKKyAgNCB8 ICAgMAorICA0IHwgICAxCisoOCByb3dzKQorCistLSBJTlRFUlNFQ1QKK1NFTEVDVCBpZCwgY250 IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00g cnByX2VxdWFsCisgICAgV0hFUkUgaWQgPD0gMworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAg T1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCisgICAgKQorKSBzdWIxCitJTlRFUlNFQ1QKK1NFTEVDVCBpZCwgY250IEZST00gKAor ICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFs CisgICAgV0hFUkUgaWQgPj0gMgorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisg ICAgKQorKSBzdWIyCitPUkRFUiBCWSBpZDsKKyBpZCB8IGNudCAKKy0tLS0rLS0tLS0KKyAgMyB8 ICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIHJwcl9lcXVhbDsKKy0tIFZpZXcgd2l0aCBtdWx0 aXBsZSB3aW5kb3cgZGVmaW5pdGlvbnMKK0NSRUFURSBUQUJMRSBycHJfbXVsdGl3aW4gKGlkIElO VCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbXVsdGl3aW4gVkFMVUVTICgxLCAxMCksICgy LCAyMCksICgzLCAzMCk7CitDUkVBVEUgVklFVyBycHJfbXVsdGl3aW5fdiBBUworU0VMRUNUCisg ICAgaWQsCisgICAgdmFsLAorICAgIENPVU5UKCopIE9WRVIgdzEgYXMgY250MSwKKyAgICBDT1VO VCgqKSBPVkVSIHcyIGFzIGNudDIKK0ZST00gcnByX211bHRpd2luCitXSU5ET1cKKyAgICB3MSBB UyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAg REVGSU5FIEEgQVMgdmFsID4gMTUKKyAgICApLAorICAgIHcyIEFTICgKKyAgICAgICAgT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEIqKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPD0g MTUKKyAgICApOworU0VMRUNUICogRlJPTSBycHJfbXVsdGl3aW5fdiBPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudDEgfCBjbnQyIAorLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCAg MTAgfCAgICAwIHwgICAgMQorICAyIHwgIDIwIHwgICAgMiB8ICAgIDAKKyAgMyB8ICAzMCB8ICAg IDAgfCAgICAwCisoMyByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9tdWx0aXdp bl92Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Z19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3Vu dCgqKSBPVkVSIHcxIEFTIGNudDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcyIEFTIGNudDIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgIEZST00gcnByX211bHRpd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcxIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgICAgICAgICAgICAgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSspICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBB UyAodmFsID4gMTUpICksIHcyIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAo YiopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgYiBBUyAodmFsIDw9IDE1KSApOworKDEgcm93KQorCistLSB7bn0gcXVhbnRpZmllciBk aXNwbGF5IGluIHZpZXcKK0NSRUFURSBWSUVXIHJwcl9xdWFudF9uX3YgQVMKK1NFTEVDVCBpZCwg dmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgSU5JVElBTAorICAgICAgICAgICAgIFBBVFRFUk4g KEF7M30pCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMCk7CitTRUxFQ1QgcGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9xdWFudF9uX3YnOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZh bCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNvdW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gcnByX3Nlcmlh bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5J VElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhezN9KSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgYSBBUyAodmFsID4gMCkgKTsKKygxIHJvdykKKworLS0ge24sfSBxdWFudGlmaWVy IGRpc3BsYXkgaW4gdmlldworQ1JFQVRFIFZJRVcgcnByX3F1YW50X25fcGx1c192IEFTCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIElOSVRJQUwKKyAgICAgICAgICAgICBQ QVRURVJOIChBezIsfSkKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK1NFTEVD VCBwZ19nZXRfdmlld2RlZigncnByX3F1YW50X25fcGx1c192Jzo6cmVnY2xhc3MpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3Vu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBG Uk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYXsyLH0pICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBE RUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+IDApICk7CisoMSByb3cpCisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gR2x1ZWQgUXVhbnRpZmllciAvIEFsdGVybmF0aW9uIFRlc3RzCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFU RSBUQUJMRSBycHJfZ2x1ZSAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9nbHVl IFZBTFVFUyAoMSwgNSksICgyLCA4KSwgKDMsIDkpLCAoNCwgLTEpLCAoNSwgNiksICg2LCAtMik7 CistLSBRdWFudGlmaWVyIGdsdWVkIHRvIHRoZSBhbHRlcm5hdGlvbiBvcGVyYXRvciAnfCcgd2l0 aG91dCBhIHNwYWNlICgwMDU5KS4KKy0tIFRoZSBsZXhlciBnbHVlcyB0aGUgdHJhaWxpbmcgJ3wn IGludG8gb25lIE9wIHRva2VuOyB0aGUgZ3JhbW1hciByZWF0dGFjaGVzIGl0CistLSBhcyB0aGUg bG93ZXN0LXByZWNlZGVuY2UgYWx0ZXJuYXRpb24gb25jZSB0aGUgc3Vycm91bmRpbmcgc2VxdWVu Y2UgaXMgYnVpbHQuCistLSBEZXBhcnNlIGlzIGNhbm9uaWNhbCwgc28gdGhlIGdsdWVkLCBzcGFj ZWQsIGFuZCBtaXhlZC1zcGFjaW5nIGZvcm1zIGFsbAorLS0gcmVkdWNlIHRvIHRoZSBzYW1lIFBB VFRFUk4gLS0gb25lIGRlcGFyc2UgcGVyIHNoYXBlIHByb3ZlcyB0aGUgcGFyc2UgdHJlZS4KKy0t IE9wLWNoYXIgcXVhbnRpZmllcnMgKCosICssID8sICo/LCArPywgPz8pIGdsdWVkIHRvICd8Jy4K K0NSRUFURSBWSUVXIHJwcl9kcF9vcCBBUyBTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFT IHcxLCBjb3VudCgqKSBPVkVSIHcyIEFTIHcyLCBjb3VudCgqKSBPVkVSIHczIEFTIHczLAorICAg IGNvdW50KCopIE9WRVIgdzQgQVMgdzQsIGNvdW50KCopIE9WRVIgdzUgQVMgdzUsIGNvdW50KCop IE9WRVIgdzYgQVMgdzYKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4g KEEqfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHcyIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoQSt8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCks CisgICAgICAgdzMgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqP3xCKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NSBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4g KEErP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NiBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HIFBBVFRFUk4gKEE/P3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAw KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2RwX29wJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVS TiAoYSogfCBiKSAKKyAgIFBBVFRFUk4gKGErIHwgYikgCisgICBQQVRURVJOIChhPyB8IGIpIAor ICAgUEFUVEVSTiAoYSo/IHwgYikgCisgICBQQVRURVJOIChhKz8gfCBiKSAKKyAgIFBBVFRFUk4g KGE/PyB8IGIpIAorKDYgcm93cykKKworRFJPUCBWSUVXIHJwcl9kcF9vcDsKKy0tIFNwYWNlZCBy ZWZlcmVuY2U6IHRoZSBmdWxseS1zcGFjZWQgY2Fub25pY2FsIGZvcm1zLiAgSWRlbnRpY2FsIGRl cGFyc2UgdG8gdGhlCistLSBnbHVlZCBycHJfZHBfb3AgdzEvdzQgYWJvdmUgY29tcGxldGVzIHRo ZSBnbHVlZCA9IHNwYWNlZCA9IG1peGVkIGVxdWl2YWxlbmNlLgorQ1JFQVRFIFZJRVcgcnByX2Rw X3NwYyBBUyBTRUxFQ1QgY291bnQoKikgT1ZFUiB3MSBBUyB3MSwgY291bnQoKikgT1ZFUiB3MiBB UyB3MgorRlJPTSBycHJfZ2x1ZQorV0lORE9XIHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSogfCBCKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MiBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBB VFRFUk4gKEEqPyB8IEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZHBfc3BjJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg ICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSog fCBiKSAKKyAgIFBBVFRFUk4gKGEqPyB8IGIpIAorKDIgcm93cykKKworRFJPUCBWSUVXIHJwcl9k cF9zcGM7CistLSBSYW5nZSBxdWFudGlmaWVycyBnbHVlZCB0byAnfCc6IG5vbi1yZWx1Y3RhbnQg e259fCAofSArIGNoYXIgJ3wnKSBhbmQKKy0tIHJlbHVjdGFudCB7bn0/fCAofSArIE9wICI/fCIp LgorQ1JFQVRFIFZJRVcgcnByX2RwX3JuZyBBUyBTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcx IEFTIHcxLCBjb3VudCgqKSBPVkVSIHcyIEFTIHcyLCBjb3VudCgqKSBPVkVSIHczIEFTIHczLCBj b3VudCgqKSBPVkVSIHc0IEFTIHc0LAorICAgIGNvdW50KCopIE9WRVIgdzUgQVMgdzUsIGNvdW50 KCopIE9WRVIgdzYgQVMgdzYsIGNvdW50KCopIE9WRVIgdzcgQVMgdzcsIGNvdW50KCopIE9WRVIg dzggQVMgdzgKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn18 QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzIgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOIChBezIsfXxCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwK KyAgICAgICB3MyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7LDN9fEIpIERFRklORSBBIEFTIHZhbCA+IDAs IEIgQVMgdmFsIDw9IDApLAorICAgICAgIHc0IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLDN9fEIpIERF RklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHc1IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFU VEVSTiAoQXsyfT98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAg ICAgdzYgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBQQVRURVJOIChBezIsfT98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCksCisgICAgICAgdzcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBeywzfT98QikgREVGSU5F IEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzggQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJO IChBezIsM30/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZHBf cm5nJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAg ICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJO IChhezJ9IHwgYikgCisgICBQQVRURVJOIChhezIsfSB8IGIpIAorICAgUEFUVEVSTiAoYXswLDN9 IHwgYikgCisgICBQQVRURVJOIChhezIsM30gfCBiKSAKKyAgIFBBVFRFUk4gKGF7Mn0/IHwgYikg CisgICBQQVRURVJOIChhezIsfT8gfCBiKSAKKyAgIFBBVFRFUk4gKGF7MCwzfT8gfCBiKSAKKyAg IFBBVFRFUk4gKGF7MiwzfT8gfCBiKSAKKyg4IHJvd3MpCisKK0RST1AgVklFVyBycHJfZHBfcm5n OworLS0gTWl4ZWQgc3BhY2luZzogYSBzcGFjZSBpbnNpZGUgdGhlIHF1YW50aWZpZXIgd2l0aCAn fCcgc3RpbGwgZ2x1ZWQuCistLSAiQSogP3xCIiA9ICcqJyArIE9wIj98IiA9IHJlbHVjdGFudCAi QSo/IiBwbHVzIGFsdGVybmF0aW9uLgorQ1JFQVRFIFZJRVcgcnByX2RwX21peCBBUyBTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3MSBBUyB3MSwgY291bnQoKikgT1ZFUiB3MiBBUyB3MiwgY291bnQoKikg T1ZFUiB3MyBBUyB3MworRlJPTSBycHJfZ2x1ZQorV0lORE9XIHcxIEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QSogP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MiBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HIFBBVFRFUk4gKEErID98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0g MCksCisgICAgICAgdzMgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBPyA/fEIpIERFRklORSBBIEFTIHZhbCA+ IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZHBfbWl4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoYSo/IHwgYikgCisgICBQQVRURVJOIChhKz8gfCBiKSAKKyAg IFBBVFRFUk4gKGE/PyB8IGIpIAorKDMgcm93cykKKworRFJPUCBWSUVXIHJwcl9kcF9taXg7Cist LSBTdHJ1Y3R1cmU6IHByZWNlZGVuY2UgKHwgaXMgbG93ZXN0LCBzbyBpdHMgcmlnaHQgb3BlcmFu ZCBpcyB0aGUgd2hvbGUKKy0tIGZvbGxvd2luZyBzZXF1ZW5jZSksIGNoYWluaW5nLCBjb25jYXRl bmF0aW9uLCBhbmQgZ3JvdXBpbmcuCitDUkVBVEUgVklFVyBycHJfZHBfc3RydWN0IEFTIFNFTEVD VAorICAgIGNvdW50KCopIE9WRVIgdzEgQVMgdzEsIGNvdW50KCopIE9WRVIgdzIgQVMgdzIsIGNv dW50KCopIE9WRVIgdzMgQVMgdzMsCisgICAgY291bnQoKikgT1ZFUiB3NCBBUyB3NCwgY291bnQo KikgT1ZFUiB3NSBBUyB3NSwgY291bnQoKikgT1ZFUiB3NiBBUyB3NgorRlJPTSBycHJfZ2x1ZQor V0lORE9XIHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8QiBDKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA8PSAwLCBDIEFTIHZhbCA8IDEwMCksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJO IChBKnxCKnxDKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwLCBDIEFTIHZhbCA8 IDEwMCksCisgICAgICAgdzMgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBIEIqfEMgRCkgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPD0gMCwgQyBBUyB2YWwgPCAxMDAsIEQgQVMgdmFsID4gNSksCisg ICAgICAgdzQgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOICgoQSp8QikpIERFRklORSBBIEFTIHZhbCA+IDAsIEIg QVMgdmFsIDw9IDApLAorICAgICAgIHc1IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8KEJ8QykpIERFRklO RSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDAsIEMgQVMgdmFsIDwgMTAwKSwKKyAgICAgICB3 NiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKChBKnxCKSspIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFs IDw9IDApOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZHBfc3RydWN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEqIHwgYiBjKSAKKyAgIFBBVFRFUk4gKGEqIHwgYiogfCBj KSAKKyAgIFBBVFRFUk4gKGEgYiogfCBjIGQpIAorICAgUEFUVEVSTiAoKGEqIHwgYikpIAorICAg UEFUVEVSTiAoYSogfCAoYiB8IGMpKSAKKyAgIFBBVFRFUk4gKChhKiB8IGIpKykgCisoNiByb3dz KQorCitEUk9QIFZJRVcgcnByX2RwX3N0cnVjdDsKKy0tIEV4ZWN1dGlvbiBzZW1hbnRpY3MgKGRl cGFyc2UgY2Fubm90IHNob3cgcmVsdWN0YW50IHNob3J0ZXN0LW1hdGNoKS4gIFRoZQorLS0gcnBy X2dsdWUgcm93cyAtLSBhbiBBLXJ1biBmb2xsb3dlZCBieSBCIHJvd3MgLS0gbWFrZSB0aGUgJ3xC JyBhbHRlcm5hdGl2ZQorLS0gcmVhY2hhYmxlOiB3aXRoICIqIiB0aGUgZ3JlZWR5IGZvcm0gbWF0 Y2hlcyB0aGUgd2hvbGUgcnVuIHdoaWxlIHRoZQorLS0gcmVsdWN0YW50IGZvcm0gbWF0Y2hlcyBl bXB0eTsgd2l0aCAiKyIgdGhlIGdyZWVkeSBmb3JtIG1hdGNoZXMgdGhlIHJ1biBhbmQKKy0tIHRo ZSByZWx1Y3RhbnQgZm9ybSBtYXRjaGVzIG9uZSByb3csIGFuZCBvbiBhIEIgcm93ICh3aGVyZSAi QSsiIGZhaWxzKSB0aGUgQgorLS0gYWx0ZXJuYXRpdmUgZmlyZXMuCitTRUxFQ1QgaWQsIHZhbCwK KyAgICAgICBjb3VudCgqKSBPVkVSIGdzIEFTIGdzdGFyLCBjb3VudCgqKSBPVkVSIHJzIEFTIHJz dGFyLAorICAgICAgIGNvdW50KCopIE9WRVIgZ3AgQVMgZ3BsdXMsIGNvdW50KCopIE9WRVIgcnAg QVMgcnBsdXMKK0ZST00gcnByX2dsdWUKK1dJTkRPVyBncyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIp IERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHJzIEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg UEFUVEVSTiAoQSo/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAg ICAgIGdwIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSt8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2 YWwgPD0gMCksCisgICAgICAgcnAgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKz98QikgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPD0gMCkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgZ3N0YXIg fCByc3RhciB8IGdwbHVzIHwgcnBsdXMgCistLS0tKy0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0KKyAgMSB8ICAgNSB8ICAgICAzIHwgICAgIDAgfCAgICAgMyB8ICAgICAxCisg IDIgfCAgIDggfCAgICAgMCB8ICAgICAwIHwgICAgIDAgfCAgICAgMQorICAzIHwgICA5IHwgICAg IDAgfCAgICAgMCB8ICAgICAwIHwgICAgIDEKKyAgNCB8ICAtMSB8ICAgICAxIHwgICAgIDEgfCAg ICAgMSB8ICAgICAxCisgIDUgfCAgIDYgfCAgICAgMSB8ICAgICAwIHwgICAgIDEgfCAgICAgMQor ICA2IHwgIC0yIHwgICAgIDEgfCAgICAgMSB8ICAgICAxIHwgICAgIDEKKyg2IHJvd3MpCisKKy0t IFBhdHRlcm5zIHRoYXQgbXVzdCBzdGF5IHJlamVjdGVkLiAgIiYiIGlzIGFuIGludmFsaWQgb3A7 IGEgJ3wnIHdpdGggYW4gZW1wdHkKKy0tIHNpZGUgKGxlYWRpbmcsIHRyYWlsaW5nLCBkb3VibGVk LCBvciBhbG9uZSBpbiBhIGdyb3VwKSBoYXMgbm8gb3BlcmFuZDsgInx8IgorLS0gYW5kICIqfHwi IGFyZSBkb3VibGVkIHBpcGVzOyAiQSogKnxCIi8iQSogKj98QiIvIkF7Mn0qP3xCIiBhcmUgZG91 YmxlZAorLS0gcXVhbnRpZmllcnMuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ds dWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBJkIpIERFRklORSBBIEFTIHZhbCA+IDApOwor RVJST1I6ICB1bnN1cHBvcnRlZCBxdWFudGlmaWVyICImIgorTElORSAxOiAuLi5FRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSZCKSBERUZJTkUuLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitISU5UOiAgVmFsaWQgcXVhbnRpZmllcnMgYXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7 bn0sIHtuLH0sIHssbX0sIHtuLG19IGFuZCB0aGVpciByZWx1Y3RhbnQgdmVyc2lvbnMuCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJO IChBKnwpIERFRklORSBBIEFTIHZhbCA+IDApOworRVJST1I6ICBhbHRlcm5hdGlvbiBvcGVyYXRv ciAifCIgcmVxdWlyZXMgYSBwYXR0ZXJuIG9uIGJvdGggc2lkZXMKK0xJTkUgMTogLi4uV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnwpIERFRklOLi4u CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoQSp8IHxCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAw KTsKK0VSUk9SOiAgYWx0ZXJuYXRpb24gb3BlcmF0b3IgInwiIHJlcXVpcmVzIGEgcGF0dGVybiBv biBib3RoIHNpZGVzCitMSU5FIDE6IC4uLldFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgUEFUVEVSTiAoQSp8IHxCKSBERS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfHxCKSBERUZJ TkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgcXVh bnRpZmllciAiKnx8IgorTElORSAxOiAuLi5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgUEFUVEVSTiAoQSp8fEIpIERFRkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVmFsaWQgcXVh bnRpZmllcnMgYXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19 IGFuZCB0aGVpciByZWx1Y3RhbnQgdmVyc2lvbnMuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBfHxCKSBERUZJTkUgQSBBUyB2 YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgcXVhbnRpZmllciAi fHwiCitMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQ QVRURVJOIChBfHxCKSBERUZJTi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBxdWFudGlmaWVycyBh cmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRoZWly IHJlbHVjdGFudCB2ZXJzaW9ucy4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1 ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEJ8KSBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIikiCitMSU5F IDE6IC4uLkNVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEJ8 KSBERUZJTkUgQS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1 ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKHxBKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgInwiCitMSU5FIDE6IC4uLldFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAofEEpIERFRklORS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H IFBBVFRFUk4gKChBKnwpKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK0VSUk9SOiAgYWx0ZXJuYXRp b24gb3BlcmF0b3IgInwiIHJlcXVpcmVzIGEgcGF0dGVybiBvbiBib3RoIHNpZGVzCitMSU5FIDE6 IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOICgoQSp8 KSkgREVGSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqICp8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIioiIGFmdGVyICIqIiBxdWFudGlm aWVyCitMSU5FIDE6IC4uLk4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFU VEVSTiAoQSogKnxCKSBERUZJTi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1lYW4gIio/IiBm b3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnBy X2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKiAqP3xCKSBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgaW52YWxpZCB0b2tlbiAiKj8iIGFmdGVyICIq IiBxdWFudGlmaWVyCitMSU5FIDE6IC4uLk4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoQSogKj98QikgREVGSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1l YW4gIio/IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBPyAqP3xCKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgaW52YWxpZCBxdWFudGlmaWVy IGNvbWJpbmF0aW9uCitMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOIChBPyAqP3xCKSBERS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1l YW4gIj8/IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9Kj98QikgREVGSU5F IEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIio/ IiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitMSU5FIDE6IC4uLiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9Kj98QikgREVGSS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6 ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVyIHtufSB0byBtYWtlIGl0IHJlbHVjdGFudC4KK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRF Uk4gKEF7Mn0gKj98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJP UjogIGludmFsaWQgdG9rZW4gIio/IiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitMSU5FIDE6IC4u LkNVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn0gKj98Qikg REVGSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVyIHtufSB0byBt YWtlIGl0IHJlbHVjdGFudC4KKy0tIERvdWJsZWQgb3AtY2hhciBxdWFudGlmaWVycyBsZXggYXMg b25lIE9wIHRva2VuIGFuZCBhcmUgdW5zdXBwb3J0ZWQsIHdoZXRoZXIKKy0tIGdsdWVkIHRvICd8 JyAoIioqfCIsICIqK3wiLCAiPz8/fCIpIG9yIG9uIHRoZWlyIG93biAoIioqIikuCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChB Kip8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIHVuc3Vw cG9ydGVkIHF1YW50aWZpZXIgIioqfCIKK0xJTkUgMTogLi4uRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqKnxCKSBERUZJLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDog IFZhbGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259LCB7bix9LCB7 LG19LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLgorU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSorfEIpIERF RklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworRVJST1I6ICB1bnN1cHBvcnRlZCBx dWFudGlmaWVyICIqK3wiCitMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyBQQVRURVJOIChBKit8QikgREVGSS4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBx dWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24s bX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcg RlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEE/Pz98QikgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIHVuc3VwcG9ydGVkIHF1YW50aWZp ZXIgIj8/P3wiCitMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBQQVRURVJOIChBPz8/fEIpIERFRi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBxdWFudGlm aWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5k IHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBy cHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqKkIpIERFRklORSBBIEFTIHZhbCA+ IDApOworRVJST1I6ICB1bnN1cHBvcnRlZCBxdWFudGlmaWVyICIqKiIKK0xJTkUgMTogLi4uRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqKkIpIERFRklO Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIFZhbGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/ LCA/Pywge259LCB7bix9LCB7LG19LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25z LgorRFJPUCBUQUJMRSBycHJfZ2x1ZTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRXJyb3IgQ2FzZXMgVGVzdHMKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorRFJPUCBUQUJMRSBJRiBFWElTVFMgcnByX2VycjsKK0NSRUFURSBUQUJMRSBycHJfZXJy IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX2VyciBWQUxVRVMgKDEsIDEwKSwg KDIsIDIwKTsKKy0tIEludmFsaWQgcXVhbnRpZmllciBzeW50YXgKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSshKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHVuc3VwcG9y dGVkIHF1YW50aWZpZXIgIishIgorTElORSA2OiAgICAgUEFUVEVSTiAoQSshKQorICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8sICo/ LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJz aW9ucy4KKy0tIG5vbmUgb2YgdGhlIGZvbGxvd2luZyBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRl ZAorU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSsgISkgREVGSU5FIEEgQVMgVFJVRSk7CitF UlJPUjogIGludmFsaWQgdG9rZW4gIiEiIGFmdGVyICIrIiBxdWFudGlmaWVyCitMSU5FIDE6IC4u LlMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSsgISkgREVG SU5FIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1lYW4gIis/IiBmb3IgcmVsdWN0YW50IHF1 YW50aWZpZXI/CitTRUxFQ1QgRlJPTSBycHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBKyA/KykgREVGSU5FIEEgQVMg VFJVRSk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIj8rIiBhZnRlciAiKyIgcXVhbnRpZmllcgor TElORSAxOiAuLi5TIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4g KEErID8rKSBERUZJTkUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFuICIrPyIgZm9yIHJl bHVjdGFudCBxdWFudGlmaWVyPworU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSogPyspIERF RklORSBBIEFTIFRSVUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICI/KyIgYWZ0ZXIgIioiIHF1 YW50aWZpZXIKK0xJTkUgMTogLi4uUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lO RyBQQVRURVJOIChBKiA/KykgREVGSU5FLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIERpZCB5b3UgbWVhbiAi Kj8iIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8KK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9X IHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4g KEE/ID8/KSBERUZJTkUgQSBBUyBUUlVFKTsKK0VSUk9SOiAgaW52YWxpZCBxdWFudGlmaWVyIGNv bWJpbmF0aW9uCitMSU5FIDE6IC4uLk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExP V0lORyBQQVRURVJOIChBPyA/PykgREVGSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1lYW4g Ij8/IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CitTRUxFQ1QgRlJPTSBycHJfZXJyIFdJTkRP VyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJO IChBIHsxLDJ9Pz8pIERFRklORSBBIEFTIFRSVUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICI/ PyIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorTElORSAxOiAuLi5UV0VFTiBDVVJSRU5UIFJPVyBB TkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSB7MSwyfT8/KSBERUZJTkUuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5U OiAgT25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7bixtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4K Ky0tIG5vbmUgb2YgdGhlIGZvbGxvd2luZyA0IHJhbmdlLXF1YW50aWZpZXIgcXVlcmllcyBzaG91 bGQgYmUgYWNjZXB0ZWQKK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn0gISkgREVGSU5F IEEgQVMgVFJVRSk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIiEiIGFmdGVyIHJhbmdlIHF1YW50 aWZpZXIKK0xJTkUgMTogLi4uQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFU VEVSTiAoQXsyfSAhKSBERUZJTkUgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgIj8iIGlzIGFsbG93 ZWQgYWZ0ZXIge259IHRvIG1ha2UgaXQgcmVsdWN0YW50LgorU0VMRUNUIEZST00gcnByX2VyciBX SU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFU VEVSTiAoQXsyLH0gISkgREVGSU5FIEEgQVMgVFJVRSk7CitFUlJPUjogIGludmFsaWQgdG9rZW4g IiEiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIKK0xJTkUgMTogLi4uRVRXRUVOIENVUlJFTlQgUk9X IEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBezIsfSAhKSBERUZJTkUgLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElO VDogIE9ubHkgIj8iIGlzIGFsbG93ZWQgYWZ0ZXIge24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVs dWN0YW50LgorU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXssM30gISkgREVGSU5FIEEgQVMg VFJVRSk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIiEiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIK K0xJTkUgMTogLi4uRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChB eywzfSAhKSBERUZJTkUgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgIj8iIGlzIGFsbG93ZWQgYWZ0 ZXIge24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LgorU0VMRUNUIEZST00gcnByX2Vy ciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcg UEFUVEVSTiAoQXsyLDN9ICEpIERFRklORSBBIEFTIFRSVUUpOworRVJST1I6ICBpbnZhbGlkIHRv a2VuICIhIiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitMSU5FIDE6IC4uLlRXRUVOIENVUlJFTlQg Uk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBezIsM30gISkgREVGSU5FIC4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0hJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVyIHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0 YW50LgorLS0gVW5tYXRjaGVkIHBhcmVudGhlc2VzCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 IE5PVElDRTsKK0RPICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfZXJyIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEgQikgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPiAxMCknOworICAgIFJBSVNFIE5PVElDRSAnVW5tYXRjaGVk IHBhcmVudGhlc2VzOiBVTkVYUEVDVEVEIFNVQ0NFU1MnOworRVhDRVBUSU9OCisgICAgV0hFTiBz eW50YXhfZXJyb3IgVEhFTgorICAgICAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRo ZXNlczogRVhQRUNURUQgRVJST1IgLSAlJywgU1FMRVJSTTsKKyAgICBXSEVOIE9USEVSUyBUSEVO CisgICAgICAgIFJBSVNFIE5PVElDRSAnVW5tYXRjaGVkIHBhcmVudGhlc2VzOiBVTkVYUEVDVEVE IEVSUk9SIC0gJScsIFNRTEVSUk07CitFTkQgJCQ7CitOT1RJQ0U6ICBVbm1hdGNoZWQgcGFyZW50 aGVzZXM6IEVYUEVDVEVEIEVSUk9SIC0gc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkFTIgorU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworLS0gRVJST1I6IGVtcHR5IERFRklORSBu b3QgYWxsb3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyk7CitF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgorTElORSA4OiApOworICAgICAgICBe CistLSBFUlJPUjogZW1wdHkgUEFUVEVSTiBub3QgYWxsb3dlZAorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOICgpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9y IGF0IG9yIG5lYXIgIikiCitMSU5FIDY6ICAgICBQQVRURVJOICgpCisgICAgICAgICAgICAgICAg ICAgICBeCistLSBFUlJPUjogREVGSU5FIHdpdGhvdXQgUEFUVEVSTiAoUEFUVEVSTiBhbmQgREVG SU5FIG11c3QgYmUgdXNlZCB0b2dldGhlcikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIkRFRklORSIKK0xJTkUg NjogICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAgICAgICAgIF4KKy0tIFF1YWxpZmllZCBj b2x1bW4gcmVmZXJlbmNlcyAoTk9UIFNVUFBPUlRFRCkKKy0tIFBhdHRlcm4gdmFyaWFibGUgcXVh bGlmaWVkIG5hbWU6IG5vdCBzdXBwb3J0ZWQgKHZhbGlkIHBlciBJU08vSUVDIDE5MDc1LTUgNi4x NSAvIDQuMTYsIG5vdCB5ZXQgaW1wbGVtZW50ZWQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIEEudmFsID4gMAorKTsKK0VSUk9SOiAgcGF0dGVybiB2YXJpYWJs ZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAiYS52YWwiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5F IGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgQS52YWwgPiAwCisgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBQQVRURVJOLW9ubHkgdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5v dCBzdXBwb3J0ZWQgZXZlbiB3aXRob3V0IERFRklORSBlbnRyeQorU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyBCLnZhbCA+IDAKKyk7CitFUlJPUjogIHBhdHRl cm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gImIudmFsIiBpcyBub3Qgc3VwcG9ydGVk IGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIEIudmFsID4gMAorICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gREVGSU5FLW9ubHkgdmFyaWFibGUgcXVhbGlmaWVk IG5hbWU6IHN0aWxsIGEgcGF0dGVybiB2YXJpYWJsZSwgbm90IGEgcmFuZ2UgdmFyaWFibGUKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyBC LnZhbCA+IDAKKyk7CitFUlJPUjogIERFRklORSB2YXJpYWJsZSAiYiIgaXMgbm90IHVzZWQgaW4g UEFUVEVSTgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyBCLnZhbCA+IDAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEZST00tY2xhdXNlIHJhbmdl IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3QgYWxsb3dlZCAocHJvaGliaXRlZCBieSBJU08v SUVDIDE5MDc1LTUgNi41KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBycHJfZXJyLnZhbCA+IDAKKyk7CitFUlJPUjogIHJhbmdlIHZhcmlhYmxlIHF1YWxpZmll ZCBleHByZXNzaW9uICJycHJfZXJyLnZhbCIgaXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVz ZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcnByX2Vyci52YWwgPiAwCisgICAgICAgICAgICAg ICAgICAgICAgICBeCistLSBVbmtub3duIHF1YWxpZmllciAobmVpdGhlciBwYXR0ZXJuIHZhciBu b3IgcmFuZ2UgdmFyKTogdGhlIERFRklORSBwcmUtY2hlY2sKKy0tIG11c3QgZmFsbCB0aHJvdWdo IHNvIHRoYXQgbm9ybWFsIGNvbHVtbiByZXNvbHV0aW9uIHByb2R1Y2VzIGEgc2Vuc2libGUgZXJy b3IuCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIG5vc3VjaC52 YWwgPiAwCispOworRVJST1I6ICBtaXNzaW5nIEZST00tY2xhdXNlIGVudHJ5IGZvciB0YWJsZSAi bm9zdWNoIgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgbm9zdWNoLnZhbCA+IDAKKyAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFVucXVhbGlmaWVkIGNvbXBvc2l0ZSBmaWVsZCBhY2Nlc3Mg aW4gREVGSU5FIHdvcmtzOiBubyBxdWFsaWZpZXIgbWVhbnMgbm8KKy0tIHBhdHRlcm4vcmFuZ2Ut dmFyIG5hdmlnYXRpb24sIHNvIHRoZSBwcmUtY2hlY2sgc2tpcHMgYW5kIG5vcm1hbCByZXNvbHV0 aW9uCistLSBoYW5kbGVzICIoaXRlbXMpLmFtb3VudCIgdmlhIEFfSW5kaXJlY3Rpb24gb24gdGhl IGN1cnJlbnQgcm93LgorQ1JFQVRFIFRZUEUgcnByX2l0ZW0gQVMgKG5hbWUgVEVYVCwgYW1vdW50 IElOVCk7CitDUkVBVEUgVEVNUCBUQUJMRSBycHJfY29tcG9zaXRlIChpZCBpbnQsIGl0ZW1zIHJw cl9pdGVtKTsKK0lOU0VSVCBJTlRPIHJwcl9jb21wb3NpdGUgVkFMVUVTICgxLCBST1coJ2EnLDUp KSwgKDIsIFJPVygnYicsMTUpKSwgKDMsIFJPVygnYycsMjUpKTsKK1NFTEVDVCBpZCwgKGl0ZW1z KS5hbW91bnQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIChpdGVtcykuYW1vdW50ID4gMTAK Kyk7CisgaWQgfCBhbW91bnQgfCBjbnQgCistLS0tKy0tLS0tLS0tKy0tLS0tCisgIDEgfCAgICAg IDUgfCAgIDAKKyAgMiB8ICAgICAxNSB8ICAgMgorICAzIHwgICAgIDI1IHwgICAxCisoMyByb3dz KQorCistLSBFeHBlY3RlZDogcm93cyB3aGVyZSAoaXRlbXMpLmFtb3VudCA+IDEwIGZvcm0gbWF0 Y2hlczsgY291bnRzIHJlZmxlY3QgZnJhbWUgc2l6ZQorLS0gQ29tcG9zaXRlIHR5cGUgZmllbGQg c2VsZWN0aW9uIChxdWFsaWZpZWQgZm9ybXMpOiB0aGUgQ29sdW1uUmVmIHBvcnRpb24gKCJBLml0 ZW1zIiBvcgorLS0gInJwcl9jb21wb3NpdGUuaXRlbXMiKSBpcyB3aGF0IGdldHMgcXVvdGVkOyB0 aGUgdHJhaWxpbmcgIi5hbW91bnQiIGxpdmVzIGluCistLSB0aGUgc3Vycm91bmRpbmcgQV9JbmRp cmVjdGlvbiBub2RlIGFuZCBpcyBub3QgdmlzaWJsZSB0byB0aGUgcHJlLWNoZWNrLgorU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfY29tcG9zaXRlCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAoQS5pdGVtcykuYW1v dW50ID4gMTAKKyk7CitFUlJPUjogIHBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Np b24gImEuaXRlbXMiIGlzIG5vdCBzdXBwb3J0ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAg ICAgREVGSU5FIEEgQVMgKEEuaXRlbXMpLmFtb3VudCA+IDEwCisgICAgICAgICAgICAgICAgICAg ICAgICAgXgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfY29tcG9zaXRlCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyAocnByX2NvbXBvc2l0ZS5pdGVtcykuYW1vdW50ID4gMTAKKyk7CitFUlJPUjogIHJhbmdlIHZh cmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJycHJfY29tcG9zaXRlLml0ZW1zIiBpcyBub3Qg YWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyAocnByX2Nv bXBvc2l0ZS5pdGVtcykuYW1vdW50ID4gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCitE Uk9QIFRBQkxFIHJwcl9jb21wb3NpdGU7CitEUk9QIFRZUEUgcnByX2l0ZW07CistLSBFUlJPUjog dW5kZWZpbmVkIGNvbHVtbiBpbiBERUZJTkUKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgbm9uZXhpc3RlbnRfY29sdW1uID4gMAorKTsKK0VSUk9SOiAgY29sdW1u ICJub25leGlzdGVudF9jb2x1bW4iIGRvZXMgbm90IGV4aXN0CitMSU5FIDc6ICAgICBERUZJTkUg QSBBUyBub25leGlzdGVudF9jb2x1bW4gPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogdHlwZSBtaXNtYXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJf ZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAnc3RyaW5nJworKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgaW50ZWdlcjogInN0cmluZyIKK0xJTkUgNzogICAgIERFRklORSBBIEFTIHZh bCA+ICdzdHJpbmcnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjog YWdncmVnYXRlIGZ1bmN0aW9uIGluIERFRklORSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIENPVU5UKCopID4gMAorKTsKK0VSUk9S OiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FCitMSU5FIDc6 ICAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIEVSUk9SOiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9uIGluIERFRklORSBpcyBub3Qgc3VwcG9y dGVkCitTRUxFQ1QgRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIDEgPiBnZW5l cmF0ZV9zZXJpZXMoMSAsMikpOworRVJST1I6ICBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gREVGSU5FCitMSU5FIDI6IC4uLiBST1cgQU5EIDEgRk9MTE9XSU5HIFBB VFRFUk4gKEErKSBERUZJTkUgQSBBUyAxID4gZ2VuZXJhdGVfcy4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9S OiB3aW5kb3cgZnVuY3Rpb24gaW4gREVGSU5FIGlzIG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBGUk9N IHJwcl9lcnIKK1dJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZP TExPV0lORyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgMSA+IHJvd19udW1iZXIoKSBPVkVSICgp KTsKK0VSUk9SOiAgd2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FCitM SU5FIDI6IC4uLiBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyAx ID4gcm93X251bWJlci4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFN1YnF1ZXJ5IGluIERFRklORSBpcyBub3Qgc3Vw cG9ydGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IChTRUxFQ1QgbWF4KHZhbCkgRlJPTSBycHJfZXJyKQorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBz dWJxdWVyeSBpbiBERUZJTkUgZXhwcmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgdmFs ID4gKFNFTEVDVCBtYXgodmFsKSBGUk9NIHJwcl9lcnIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBQYXR0ZXJuIHZhcmlhYmxlIG5vdCB1c2VkIChzaG91bGQgd29yaywgZXh0 cmEgdmFycyBpZ25vcmVkKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiA1LCBDIEFTIHZhbCA+IDEw CispCitPUkRFUiBCWSBpZDsKK0VSUk9SOiAgREVGSU5FIHZhcmlhYmxlICJiIiBpcyBub3QgdXNl ZCBpbiBQQVRURVJOCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+ IDUsIEMgQVMgdmFsID4gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RS T1AgVEFCTEUgcnByX2VycjsKKy0tIE5VTEwgaGFuZGxpbmcKK0NSRUFURSBUQUJMRSBycHJfbnVs bCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9udWxsIFZBTFVFUyAoMSwgMTAp LCAoMiwgTlVMTCksICgzLCAzMCk7CistLSBOVUxMIGluIERFRklORSBleHByZXNzaW9uCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg dmFsID4gMTUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSst LS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMQor KDMgcm93cykKKworLS0gSVMgTlVMTCBpbiBERUZJTkUKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChOKykKKyAgICBERUZJTkUgTiBBUyB2YWwgSVMgTlVMTAorKQorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDAKKyAgMiB8ICAgICB8ICAgMQorICAzIHwgIDMwIHwgICAwCisoMyByb3dzKQorCistLSBJ UyBOT1QgTlVMTCBpbiBERUZJTkUKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9udWxsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChOTispCisgICAgREVGSU5FIE5OIEFTIHZhbCBJUyBOT1QgTlVMTAorKQorT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDEK KyAgMiB8ICAgICB8ICAgMAorICAzIHwgIDMwIHwgICAxCisoMyByb3dzKQorCitEUk9QIFRBQkxF IHJwcl9udWxsOworLS0gQ29tcG91bmQgbmF2aWdhdGlvbjogaW5uZXIgbmF2IG11c3QgYmUgZGly ZWN0IGFyZyAobm90IG5lc3RlZCBpbiBleHByZXNzaW9uKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodiArIEZJUlNUKHYpKSA+IDAKKyk7CitFUlJP UjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgYmUgYSBkaXJlY3QgYXJn dW1lbnQgb2YgdGhlIG91dGVyIG5hdmlnYXRpb24KK0xJTkUgNjogICAgIERFRklORSBBIEFTIFBS RVYodiArIEZJUlNUKHYpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBP bmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQo TEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIEZJUlNUL0xBU1Qgd3JhcHBp bmcgRklSU1QvTEFTVDogcHJvaGliaXRlZAorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIEZJUlNUKEZJUlNUKHYpKSA+IDAKKyk7CitFUlJPUjogIEZJUlNUIGFu ZCBMQVNUIGNhbm5vdCBjb250YWluIEZJUlNUIG9yIExBU1QKK0xJTkUgNjogICAgIERFRklORSBB IEFTIEZJUlNUKEZJUlNUKHYpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6 ICBPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5F WFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIFRyaXBsZSBuZXN0aW5n OiBwcm9oaWJpdGVkICgzLWxldmVsIGRlZXAgbmF2aWdhdGlvbikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKFBSRVYodikpKSA+IDAKKyk7 CitFUlJPUjogIGNhbm5vdCBuZXN0IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gbW9yZSB0aGFuIHR3 byBsZXZlbHMgZGVlcAorTElORSA2OiAgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVChQUkVWKHYp KSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgT25seSBQUkVWKEZJUlNU KCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91 bmQgZm9ybXMgYXJlIGFsbG93ZWQuCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFdpbmRvdyBEZWR1cGxpY2F0aW9uIFRl c3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIG5vbi1SUFIgYW5kIFJQUiB3aW5kb3dzIHdpdGggaWRlbnRpY2FsIGJh c2UgZnJhbWUgYXJlIGtlcHQgc2VwYXJhdGUuCitTRUxFQ1QgaWQsIHZhbCwKKyAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICkgQVMgZnZfbm9ybWFs LAorICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcxIEFTIGZ2X3JwcgorRlJPTSAoVkFMVUVTICgx LCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCkpIEFTIHQoaWQsIHZhbCkKK1dJTkRPVyB3 MSBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAxMAorKTsKKyBpZCB8IHZhbCB8IGZ2X25vcm1hbCB8IGZ2X3JwciAKKy0tLS0rLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAgICAgMSB8ICAgICAgIAorICAy IHwgIDIwIHwgICAgICAgICAyIHwgICAgICAyCisgIDMgfCAgMzAgfCAgICAgICAgIDMgfCAgICAg ICAKKyAgNCB8ICA0MCB8ICAgICAgICAgNCB8ICAgICAgIAorKDQgcm93cykKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBQYXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBmb3IgcGF0dGVy biBvcHRpbWl6YXRpb24KKy0tIFVzZSBFWFBMQUlOIHRvIHZlcmlmeSBvcHRpbWl6ZWQgcGF0dGVy biAoc2hvd24gYXMgIlBhdHRlcm46IC4uLiIpCitDUkVBVEUgVEFCTEUgcnByX3BsYW4gKGlkIElO VCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGxhbiBWQUxVRVMKKyAgICAoMSwgMTApLCAo MiwgMjApLCAoMywgMzApLCAoNCwgNDApLCAoNSwgNTApLAorICAgICg2LCA2MCksICg3LCA3MCks ICg4LCA4MCksICg5LCA5MCksICgxMCwgMTAwKTsKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTog QSBBIEEgLT4gYXszfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo QSBBIEEpIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhezN9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2U6IEF7Mn0gQXszfSAtPiBhezV9CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBezJ9IEF7M30pIERFRklO RSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh ezV9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQg S2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCist LSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2U6IEErIEEqIC0+IGErCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOIChBKyBBKikgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdl OiBBIEErIC0+IGF7Mix9CistLSB3aGVyZSBhIGZpbml0ZSBwcmV2IChBezEsMX0pIG1lZXRzIGFu IGluZmluaXRlIGNoaWxkIChBKykuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOIChBIEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYXsyLH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2UgYXQgdGhlIGJvdW5k YXJ5OiBBezEwNzM3NDE4MjMsfSBBezEwNzM3NDE4MjMsfSAtPgorLS0gYXsyMTQ3NDgzNjQ2LH0u ICBUaGUgbWluIHN1bSAyMTQ3NDgzNjQ2ID0gSU5UMzJfTUFYIC0gMSBpcyB0aGUgbGFyZ2VzdAor LS0gc3RpbGwtZmluaXRlIGJvdW5kLCBzbyB0aGUgbWVyZ2UgcHJvY2VlZHM7IGEgc3VtIG9mIGV4 YWN0bHkgSU5GIGluc3RlYWQKKy0tIGZhbGxzIGJhY2sgKHNlZSB0aGUgT3B0aW1pemF0aW9uIEZh bGxiYWNrIFRlc3RzKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KEF7MTA3Mzc0MTgyMyx9IEF7MTA3Mzc0MTgyMyx9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyMTQ3NDgzNjQ2LH0iCisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1 dGl2ZSBHUk9VUCBtZXJnZSB3aXRoIGZpbml0ZSBxdWFudGlmaWVyczogKChBIEIpezV9KSAoKEEg Qil7MTB9KSAtPiBtZXJnZWQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKCgoQSBCKXs1fSkgKChBIEIpezEwfSkpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2 YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIpezE1 fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0g Q29uc2VjdXRpdmUgR1JPVVAgbWVyZ2Ugd2l0aCB1bmJvdW5kZWQ6IChBIEIpKyAoQSBCKSsgLT4g KGEgYil7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBC KSsgKEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpezIsfSIKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIEdS T1VQIG1lcmdlOiAoQSBCKXsyfSAoQSBCKSsgLT4gKGEgYil7Myx9CistLSBXaGVyZSBhIGZpbml0 ZSBwcmV2ICgoQSBCKXsyLDJ9KSBtZWV0cyBhbiBpbmZpbml0ZSBjaGlsZCAoKEEgQikrKS4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpezJ9IChBIEIpKykg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKXszLH0iCisgICBOYXYgTWFyayBMb29rYmFjazog MAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSBh dCB0aGUgYm91bmRhcnk6IChBIEIpezEwNzM3NDE4MjMsfSAoQSBCKXsxMDczNzQxODIzLH0KKy0t IC0+IChhIGIpezIxNDc0ODM2NDYsfS4gIFRoZSBtaW4gc3VtIElOVDMyX01BWCAtIDEgaXMgc3Rp bGwgZmluaXRlLCBzbyB0aGUKKy0tIG1lcmdlIHByb2NlZWRzOyBhIHN1bSBvZiBleGFjdGx5IElO RiBpbnN0ZWFkIGZhbGxzIGJhY2sgKHNlZSB0aGUKKy0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBU ZXN0cykuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKXsx MDczNzQxODIzLH0gKEEgQil7MTA3Mzc0MTgyMyx9KSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIg QVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScg YicpezIxNDc0ODM2NDYsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg3IHJvd3MpCisKKy0tIFBSRUZJWCBtZXJnZTogQSBCIChBIEIpKyAtPiAoYSBiKXsyLH0KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiAoQSBCKSspIERFRklO RSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhJyBiJyl7Mix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGxhbgorKDcgcm93cykKKworLS0gUFJFRklYIGFuZCBTVUZGSVggbWVyZ2U6IEEgQiAo QSBCKSsgQSBCIC0+IChhIGIpezMsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoQSBCIChBIEIpKyBBIEIpIERFRklORSBBIEFTIHZhbCA8PSA0MCwgQiBBUyB2YWwg PiA0MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7Myx9 IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0g RmxhdHRlbiBuZXN0ZWQ6IEEgKChCKSAoQykpIC0+IGEgYiBjCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOIChBICgoQikgKEMpKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMw LCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGEgYiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSBEYXRhIGV4ZWN1dGlvbjogU0VRIGZsYXR0ZW4gcHJvZHVjZXMg Y29ycmVjdCByZXN1bHRzCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICAgICAgICAgICBQQVRURVJOIChBICgoQikgKEMpKSkgREVG SU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAy MCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAg MAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5 IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBBTFQgZmxhdHRl bjogKEEgfCAoQiB8IEMpKSsgLT4gKGEgfCBiIHwgYykrCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQSB8IChCIHwgQykpKykgREVGSU5FIEEgQVMgdmFsIDw9IDMw LCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhIHwgYiB8IGMpKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGxhbgorKDcgcm93cykKKworLS0gQUxUIGRlZHVwbGljYXRlOiAoQSB8IEIgfCBBKSAt PiAoYSB8IGIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8 IEIgfCBBKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikrCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBEYXRhIGV4ZWN1dGlvbjogQUxU IGRlZHVwIHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0cworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCop IE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgICAgICBQQVRURVJO ICgoQSB8IEIgfCBBKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMTAKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8 ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAor ICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBRdWFudGlm aWVyIG11bHRpcGx5OiAoQXsyfSl7M30gLT4gYXs2fQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXs2fQorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBs eTogcmVsdWN0YW50IEdST1VQIGNoaWxkICgoKEEgQil7Mn0/KXszfSkgc3RheXMgbmVzdGVkCist LSBhIHJlbHVjdGFudCBxdWFudGlmaWVyIG9uIGEgR1JPVVAgaXMgbm90IHN1YmplY3QgdG8gbXVs dGlwbGljYXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgo QSBCKXsyfT8pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEgYil7Mn0/KXszfQorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBt dWx0aXBseSBjb250cm9sOiBncmVlZHkgR1JPVVAgKCgoQSBCKXsyfSl7M30pIC0+IChhIGIpezZ9 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoKEEgQil7Mn0pezN9 KSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKXs2fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBtdWx0aXBseSB3aXRoIGNoaWxk IHJhbmdlOiAoQXsyLDN9KXszfSAtPiBhezYsOX0KKy0tIG91dGVyIGV4YWN0LCBjaGlsZCByYW5n ZSAtIG9wdGltaXphdGlvbiBhcHBsaWVzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQXsyLDN9KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Niw5fQorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBseTog KEF7Mn0pezIsM30gc3RheXMgYXMgKGF7Mn0pezIsM30KKy0tIG91dGVyIHJhbmdlIC0gZ2FwcyB3 b3VsZCBvY2N1ciAoNCw2IG5vdCA0LDUsNiksIG5vIG9wdGltaXphdGlvbgorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezIsM30pIERFRklORSBBIEFTIHZh bCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyfSl7Miwz fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0g UXVhbnRpZmllciBOTyBtdWx0aXBseTogKEF7Mn0pezIsfSBzdGF5cyBhcyAoYXsyfSl7Mix9Cist LSBvdXRlciB1bmJvdW5kZWQgLSBnYXBzIHdvdWxkIG9jY3VyICg0LDYsOCwuLi4gbm90IDQsNSw2 LC4uLiksIG5vIG9wdGltaXphdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEF7Mn0pezIsfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezJ9Jyl7Mix9IgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBtdWx0aXBseTog KEEpezIsfSAtPiBhezIsfQorLS0gY2hpbGQgZXhhY3QgMSAtIG5vIGdhcHMsIG9wdGltaXphdGlv biBhcHBsaWVzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSl7 Mix9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYXsyLH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBRdWFudGlmaWVyIG11bHRpcGx5OiAoQSkrIC0+IGErCistLSBjaGlsZCBl eGFjdCAxIC0gbm8gZ2Fwcywgb3B0aW1pemF0aW9uIGFwcGxpZXMKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIFBBVFRFUk4gKChBKSspIERFRklORSBBIEFTIHZhbCA+IDApOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZwor ICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2ti YWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlw bHk6IChBezJ9KXszLDV9IHN0YXlzIGFzIChhezJ9KXszLDV9CistLSBvdXRlciByYW5nZSwgY2hp bGQgZXhhY3QgPiAxIC0gZ2FwcyB3b3VsZCBvY2N1ciAoNiw4LDEwIG5vdCA2LDcsOCw5LDEwKQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezMsNX0pIERF RklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYXsyfSl7Myw1fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEF7MiwzfSl7MiwzfSAtPiBhezQsOX0K Ky0tIG91dGVyIHJhbmdlLCBjaGlsZCByYW5nZTogY291bnRzIFs0LDZdIFUgWzYsOV0gPSBbNCw5 XSBhcmUgY29udGlndW91cywgc28gaXQgZm9sZHMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBezIsM30pezIsM30pIERFRklORSBBIEFTIHZhbCA+IDApOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZwor ICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezQsOX0KKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVs dGlwbHk6IChBezQsNX0pezIsM30gc3RheXMgYXMgKGF7NCw1fSl7MiwzfQorLS0gb3V0ZXIgcmFu Z2UsIGNoaWxkIHJhbmdlIHdpdGggYSBnYXA6IFs4LDEwXSBVIFsxMiwxNV0gbWlzc2VzIDExCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXs0LDV9KXsyLDN9KSBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGF7NCw1fSl7MiwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0Cisg ICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgor KDcgcm93cykKKworLS0gTmVzdGVkIHVuYm91bmRlZDogKEEqKSogLT4gYSoKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBKikqKSBERUZJTkUgQSBBUyB2YWwgPiAw KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSoiCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBOZXN0ZWQgdW5ib3Vu ZGVkOiAoQSspKiAtPiBhKgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVS TiAoKEErKSopIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKiIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg3IHJvd3MpCisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKykrIC0+IGErCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspKykgREVGSU5FIEEgQVMgdmFsID4g MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUXVhbnRpZmllciBt dWx0aXBseSB3aXRoIGFuIHVuYm91bmRlZCBjaGlsZDogYW4gZXhhY3Qgb3V0ZXIgY291bnQgKG0g PT0gbikKKy0tIGFsd2F5cyBmb2xkcyByZWdhcmRsZXNzIG9mIHRoZSBjaGlsZCdzIG1heCAtIChB Kyl7M30gLT4gYXszLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KChBKyl7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhezMsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3Bs YW4KKyg3IHJvd3MpCisKKy0tIChBezIsfSl7M30gLT4gYXs2LH0gIChtID09IG4sIHVuYm91bmRl ZCBjaGlsZCB3aXRoIG1pbiAyKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEF7Mix9KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGF7Nix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGxhbgorKDcgcm93cykKKworLS0gKEErKXsyLDR9IC0+IGF7Mix9ICAob3V0ZXIgcmFu Z2UsIHVuYm91bmRlZCBjaGlsZDogZXZlcnkgaW50ZXJ2YWwgcmVhY2hlcyBJTkYsCistLSBzbyB0 aGV5IGFsd2F5cyB0b3VjaCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKChBKyl7Miw0fSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IGF7Mix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgorKDcgcm93cykKKworLS0gKEF7MiwzfSl7Miw0fSAtPiBhezQsMTJ9ICAob3V0ZXIg cmFuZ2UgeCBjaGlsZCByYW5nZSwgY29udGlndW91czoKKy0tIFs0LDZdIFUgWzYsOV0gVSBbOCwx Ml0gPSBbNCwxMl0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgo QXsyLDN9KXsyLDR9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYXs0LDEyfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgorKDcgcm93cykKKworLS0gU2tpcHBhYmxlIG91dGVyIChtaW4gMCkgZm9sZHMgb25s eSB3aGVuIHRoZSB6ZXJvIGNhc2UgY29ubmVjdHMgdG8gdGhlIGNoaWxkCistLSByYW5nZTogKEF7 MSwzfSk/IC0+IGF7MCwzfSAgKGNoaWxkIG1pbiA8PSAxLCBzbyB7MH0gVSBbMSwzXSA9IFswLDNd IGlzIGNvbnRpZ3VvdXMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO ICgoQXsxLDN9KT8pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiBhezAsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IChBezIsM30pPyBz dGF5cyBhcyAoYXsyLDN9KT8KKy0tIG1pbiAwIHdpdGggY2hpbGQgbWluID49IDI6IHswfSBVIFsy LDNdIGxlYXZlcyAxIHVucmVhY2hhYmxlIChpbnRlcnZhbHMgdG91Y2ggYnV0CistLSB0aGUgemVy byBjYXNlIGRvZXMgbm90IGNvbm5lY3QpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQXsyLDN9KT8pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93 OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyLDN9KT8KKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6 IChBezMsNH0pPyBzdGF5cyBhcyAoYXszLDR9KT8KKy0tIG1pbiAwIHdpdGggY2hpbGQgbWluID49 IDI6IHswfSBVIFszLDRdIGxlYXZlcyAxLDIgdW5yZWFjaGFibGUKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIFBBVFRFUk4gKChBezMsNH0pPykgREVGSU5FIEEgQVMgdmFsID4gMCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezMsNH0pPworICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gVW53cmFwIEdS T1VQezEsMX06IChBKSAtPiBhCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOICgoQSkpIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBVbndyYXAgR1JPVVB7MSwxfTogKEEgQikgLT4gYSBiCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSkgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNv cnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQor CistLSBDb21iaW5lZCBvcHRpbWl6YXRpb246IEEgQSAoQiBCKSsgQiBCIEMgQyBDIC0+IGF7Mn0g KGJ7Mn0pezIsfSBjezN9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO IChBIEEgKEIgQikrIEIgQiBDIEMgQykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0g MjAsIEIgQVMgdmFsID4gMjAgQU5EIHZhbCA8PSA3MCwgQyBBUyB2YWwgPiA3MCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Mn0gKGJ7Mn0pezIsfSBjezN9CisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1 dGl2ZSBHUk9VUCBtZXJnZSB3aXRoIHVuYm91bmRlZDogKEErKSAoQSspIC0+IGF7Mix9CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSspIChBKykpIERFRklORSBB IEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezIs fSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0t IENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIGZpbml0ZTogKEF7MTB9KXsyMH0gLT4gYXsyMDB9CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsxMH0pezIwfSkgREVG SU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGF7MjAwfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykK KworLS0gRGlmZmVyZW50IEdST1VQIHByZXZlbnRzIG1lcmdlOiAoQSBCKXsyfSAoQyBEKXszfQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQil7Mn0gKEMgRCl7 M30pCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFO RCB2YWwgPD0gNTAsCisgICAgICAgICAgICAgICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8 PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhIGIpezJ9IChjIGQpezN9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSBEaWZmZXJlbnQgY2hpbGRyZW4gY291bnQgcHJldmVudHMgbWVy Z2U6IChBIEIpKyAoQSBCIEMpKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoKEEgQikrIChBIEIgQykrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAz MywgQiBBUyB2YWwgPiAzMyBBTkQgdmFsIDw9IDY2LCBDIEFTIHZhbCA+IDY2KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKSsiIChhIGIgYykrCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBQUkVGSVggb25s eSBtZXJnZTogQSBCIChBIEIpKyAtPiAoYSBiKXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKEEgQiAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBB UyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBi Jyl7Mix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykK KworLS0gU1VGRklYIG9ubHkgbWVyZ2U6IChBIEIpKyBBIEIgLT4gKGEgYil7Mix9CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSsgQSBCKSBERUZJTkUgQSBB UyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiAoYScgYicpezIsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIE11bHRpcGxlIFNVRkZJWCBhYnNvcnB0aW9uIHdpdGggc2tp cFVudGlsOiAoQSBCKSsgQSBCIEEgQiBDCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQSBCKSsgQSBCIEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZh bCA8PSA1MCwgQiBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBDIEFTIHZhbCA+IDc1KTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKXszLH0iIGMKKyAgIE5h diBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFBSRUZJWCBt ZXJnZSB3aXRoIHJlbWFpbmluZyBwcmVmaXg6IEEgQiBDIEQgKEMgRCkrICAtPiBBIEIgKEMgRCkg ezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIEMgRCAo QyBEKSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1 IEFORCB2YWwgPD0gNTAsCisgICAgICAgICAgICAgICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZh bCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IGEgYiAoYyBkKXsyLH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3Bs YW4KKyg3IHJvd3MpCisKKy0tIGNhbm5vdCBtZXJnZSwgcHJlZml4IGlzIGRpZmZlcmVudAorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworUEFUVEVSTiAoQSBCIEMgRCBDIChDIEQpICspCitERUZJTkUgQSBB UyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUsCisgICAgICAgQyBBUyB2YWwgPiA1MCwgRCBBUyB2 YWwgPiA3NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjIGQg YyAoYyBkKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAg U29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3Mp CisKKy0tIFBSRUZJWCBtZXJnZSB3aXRoIHF1YW50aWZpZXJzOiBBIEIqIChBIEIqKSsgLT4gKGEg YiopezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKiAo QSBCKikrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1 MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIqKXsyLH0KKyAg IE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlk CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFBSRUZJ WCBtZXJnZSB3aXRoIG11bHRpcGxlIHF1YW50aWZpZXJzOiBBKyBCKiBDPyAoQSsgQiogQz8pKyAt PiAoYSsgYiogYz8pezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVS TiAoQSsgQiogQz8gKEErIEIqIEM/KSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSsiIGIqIGM/KXsyLH0KKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFNVRkZJWCBtZXJn ZSB3aXRoIHF1YW50aWZpZXJzOiAoQSBCKikrIEEgQiogLT4gKGEgYiopezIsfQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQiopKyBBIEIqKQorICAgICAgICAg ICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIqKXsyLH0KKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFVud3JhcCBHUk9VUHsxLDF9OiAoKEEg fCBCIHwgQykpIC0+IChhIHwgYiB8IGMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8 PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhIHwgYiB8IGMpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBEYXRhIGV4ZWN1dGlvbjogR1JPVVAgdW53cmFwIHByb2R1Y2VzIGNvcnJl Y3QgcmVzdWx0cworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykpIERFRklORSBB IEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAxCisgIDIgfCAgMjAgfCAg IDEKKyAgMyB8ICAzMCB8ICAgMQorICA0IHwgIDQwIHwgICAxCisgIDUgfCAgNTAgfCAgIDEKKyAg NiB8ICA2MCB8ICAgMQorICA3IHwgIDcwIHwgICAxCisgIDggfCAgODAgfCAgIDEKKyAgOSB8ICA5 MCB8ICAgMQorIDEwIHwgMTAwIHwgICAxCisoMTAgcm93cykKKworLS0gUmVsdWN0YW50IG9wdGlt aXphdGlvbiBieXBhc3M6IFZBUiBtZXJnZQorLS0gQSs/IEEgc3RheXMgYXMgYSs/IGEgKGdyZWVk eSBBKyBBIG1lcmdlcyB0byBhezIsfSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKEErPyBBKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogYSs/IGEKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBH Uk9VUCBtZXJnZQorLS0gKEEgQikrPyAoQSBCKSBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5IG1lcmdl cyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO ICgoQSBCKSs/IChBIEIpKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKSs/IGEgYgorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUmVsdWN0YW50 IG9wdGltaXphdGlvbiBieXBhc3M6IHF1YW50aWZpZXIgbXVsdGlwbHkgKG91dGVyIHJlbHVjdGFu dCkKKy0tIChBezJ9KXszfT8gc3RheXMgYXMgKGF7Mn0pezN9PyAoZ3JlZWR5IG1lcmdlcyB0byBh ezZ9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0pezN9 PykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IChhezJ9KXszfT8KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg3IHJvd3MpCisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBxdWFudGlmaWVy IG11bHRpcGx5IChpbm5lciByZWx1Y3RhbnQpCistLSAoQXsyfT8pezN9IHN0YXlzIGFzIChhezJ9 Pyl7M30gKGdyZWVkeSBtZXJnZXMgdG8gYXs2fSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBezJ9Pyl7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyfT8pezN9CisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1p emF0aW9uIGJ5cGFzczogUFJFRklYIG1lcmdlCistLSBBIEIgKEEgQikrPyBzdGF5cyBzZXBhcmF0 ZSAoZ3JlZWR5IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBQQVRURVJOIChBIEIgKEEgQikrPykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFT IHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiIChh IGIpKz8KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisK Ky0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBTVUZGSVggbWVyZ2UKKy0tIChBIEIp Kz8gQSBCIHN0YXlzIHNlcGFyYXRlIChncmVlZHkgbWVyZ2VzIHRvIChhIGIpezIsfSkKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKz8gQSBCKSBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYSBiKSs/IGEgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgorKDcgcm93cykKKworLS0gR1JPVVAgdW53cmFwIHdpdGggcXVhbnRpZmllciBwcm9w YWdhdGlvbjogKEEpPz8gQiAtPiBhPz8gYgorLS0gU2luZ2xlIFZBUiBjaGlsZCB7MSwxfSByZWNl aXZlcyBHUk9VUCdzIHF1YW50aWZpZXIgYW5kIHJlbHVjdGFudAorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgUEFUVEVSTiAoKEEpPz8gQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBC IEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYT8/ IGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0t IFJlbHVjdGFudCBwcmVzZXJ2ZWQgdGhyb3VnaCBBTFQgZmxhdHRlbgorLS0gKEEgfCAoQiB8IEMp KSs/IGZsYXR0ZW5zIHRvIChhIHwgYiB8IGMpKz8gLSBpbm5lciBBTFQgZmxhdHRlbmVkLCByZWx1 Y3RhbnQga2VwdAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEg fCAoQiB8IEMpKSs/KSBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFT IHZhbCA+IDYwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBi IHwgYykrPworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykK KworLS0gUmVsdWN0YW50IG9wdGltaXphdGlvbiBieXBhc3M6IGFic29ycHRpb24gZmxhZ3MKKy0t IEErPyB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyAtIG5vIGFic29ycHRpb24gbWFya2VycyAoZ3Jl ZWR5IEErIGdldHMgYSsiKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErPykgREVGSU5FIEEgQVMgdmFsID4g MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErPworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gRHVwbGljYXRlIEdS T1VQIHJlbW92YWw6ICgoQSB8IEIpKyB8IChBIHwgQikrKSAtPiAoYSB8IGIpKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBCKSsgfCAoQSB8IEIpKykgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgfCBiKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZSB3aXRoIHplcm8t bWluOiBBKiBBKyAtPiBhKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVS TiAoQSogQSspIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg3IHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZSAoNC1lbGVtZW50KTogQSBBezJ9 IEErIEF7M30gLT4gYXs3LH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKEEgQXsyfSBBKyBBezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogYXs3LH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBQUkVGSVgrU1VGRklYIG1lcmdlICg1LXdheSk6 IEEgQiBBIEIgKEEgQikrIEEgQiBBIEIgLT4gKGEgYil7NSx9CitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOIChBIEIgQSBCIChBIEIpKyBBIEIgQSBCKQorICAgICAgICAg ICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7NSx9IgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUFJFRklYK1NVRkZJWCBtZXJnZSAo NS13YXkpOiBCIEEgQiAoQSBCKSsgQSBCIEEgQiAtPiBiIChhIGIpezQsfQorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQiBBIEIgKEEgQikrIEEgQiBBIEIpCisgICAg ICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYiAoYSBiKXs0LH0KKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFVud3JhcCBzaW5nbGUtaXRl bSBBTFQgYWZ0ZXIgZGVkdXA6IChBIHwgQSkrIC0+IGErCistLSBBTFQgZGVkdXAgcmVkdWNlcyB0 byBzaW5nbGUtaXRlbSwgdGhlbiBHUk9VUCB1bndyYXAKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKChBIHwgQSkrKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBHUk9VUHsxLDF9IHRvIFNFUSB3aXRo IGZsYXR0ZW46ICgoQSBCKShDIEQpKSAtPiBhIGIgYyBkCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoKEEgQikoQyBEKSkpCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCisgICAgICAgICAgICAg ICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjIGQKKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIE5lc3RlZCBBTFQgcGF0dGVy bjogKChBIEIpIHwgQykgRCB8IEEgQiBDCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoKEEgQikgfCBDKSBEIHwgQSBCIEMpCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwgPD0gNTAsCisgICAgICAgICAgICAg ICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgRCBBUyB2YWwgPiA3NSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYSBiIHwgYykgZCB8IGEgYiBjKQor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTog aWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTmVz dGVkIEFMVCB3aXRoIHVuYm91bmRlZDogKChBKyBCKSB8IEMpIEQgfCBBIEIgQworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKChBKyBCKSB8IEMpIEQgfCBBIEIgQykK KyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUgQU5EIHZh bCA8PSA1MCwKKyAgICAgICAgICAgICAgICAgICAgQyBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1 LCBEIEFTIHZhbCA+IDc1KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog KChhKyIgYiB8IGMpIGQgfCBhIGIgYykKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVz dHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVGVzdHMgYWJzb3JwdGlvbiBtYXJrZXIgZGlzcGxheSBpbiBFWFBMQUlO IG91dHB1dAorLS0gTWFya2VyczogJyA9IGJyYW5jaCBlbGVtZW50LCAiID0ganVkZ21lbnQgcG9p bnQKKy0tIEZpbGVzOiBleHBsYWluLmMgKGFwcGVuZF9ycHJfcXVhbnRpZmllciwgZGVwYXJzZV9y cHJfcGF0dGVybikKKy0tIFNpbXBsZSBWQVI6IEErIC0+IGErIiAoanVkZ21lbnQgcG9pbnQpCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBi JykrIiAoYnJhbmNoICsganVkZ21lbnQpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgQikrKSBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYScgYicpKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIEFMVCBib3RoIGFic29yYmFibGU6IEErIHwgQisgLT4gKGEr IiB8IGIrIikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKyB8IEIrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAs IEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo YSsiIHwgYisiKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAg ICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93 cykKKworLS0gQUxUIG9uZSBhYnNvcmJhYmxlOiBBKyB8IEIgLT4gKGErIiB8IGIpCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cg UEFUVEVSTiAoQSsgfCBCKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSsiIHwgYikKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFNlcXVlbmNlIHdp dGggYWJzb3JiYWJsZSBzdGFydDogQSsgQiAtPiBhKyIgYgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErIEIp IERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9wbGFuCisoNyByb3dzKQorCistLSBDb21wbGV4IG5lc3RlZDogKChBKyBCKSB8IEMpIEQg fCBBIEIgQyAtIGRlZXBseSBuZXN0ZWQgQUxUCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKChBKyBCKSB8IEMp IEQgfCBBIEIgQykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFs IDw9IDYwLCBDIEFTIHZhbCA8PSA4MCwgRCBBUyB2YWwgPiA4MCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46ICgoYSsiIGIgfCBjKSBkIHwgYSBiIGMpCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBOZXN0ZWQgdW5ib3Vu ZGVkOiAoQSsgfCBCKSsgLT4gKGErIiB8IGIpKyAoZmlyc3QgaXRlcmF0aW9uIGFic29yYmFibGUp CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cgUEFUVEVSTiAoKEErIHwgQikrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZh bCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IChhKyIgfCBiKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K Kyg3IHJvd3MpCisKKy0tIEFMVCBpbnNpZGUgdW5ib3VuZGVkIEdST1VQOiAoQSsgQiB8IEEgQikq IC0+IChhKyIgYiB8IGEgYikqIChmaXJzdCBpdGVyYXRpb24gYWJzb3JiYWJsZSkKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQ QVRURVJOICgoQSsgQiB8IEEgQikqKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1 MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IChhKyIgYiB8IGEgYikqCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBGaXhlZC1sZW5ndGggZ3JvdXAgYWJzb3JiYWJsZTogKEF7Mn0gQnszfSkr IC0+IChhezJ9JyBiezN9Jyl7Mix9IgorLS0gQWxsIGNoaWxkcmVuIGhhdmUgbWluID09IG1heCwg ZXF1aXZhbGVudCB0byB1bnJvbGxpbmcgdG8gezEsMX0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQXsyfSBC ezN9KSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUw KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0nIGJ7M30nKSsi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBO ZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwOiAoQSAoQiBDKXsyfSBEKSsgLT4gYWJzb3JiYWJsZQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBB UyB2YWwgPD0gMjAsIEIgQVMgdmFsIDw9IDQwLCBDIEFTIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2 MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyAoYicgYycpezJ9 JyBkJykrIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykK KworLS0gTmVzdGVkIGZpeGVkLWxlbmd0aCB3aXRoIGlubmVyIHF1YW50aWZpZXI6ICgoQXsyfSBC ezN9KXsyfSkrIC0+IGFic29yYmFibGUKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoKEF7Mn0gQnszfSl7Mn0p KykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGF7Mn0nIGJ7M30nKXsyfScp KyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0t IE5vbi1hYnNvcmJhYmxlIGZpeGVkLWxlbmd0aDogKEEgQnsyLDV9KSsgLT4gbm8gbWFya2VycyAo bWluICE9IG1heCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSBCezIsNX0pKykKKyAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiezIsNX0pKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTm9uLWFic29yYmFibGUgZml4ZWQtbGVuZ3Ro OiAoQSBCPykrIC0+IG5vIG1hcmtlcnMgKG1pbiAhPSBtYXgpCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEEg Qj8pKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiPykrCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBOb24tYWJzb3Ji YWJsZSAodW5ib3VuZGVkIG5vdCBhdCBzdGFydCk6IEEgQisgLT4gYSBiKyAobm8gbWFya2VycykK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVyBQQVRURVJOIChBIEIrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBOb24tYWJzb3Ji YWJsZSAobm8gdW5ib3VuZGVkIGJyYW5jaCk6IChBIHwgQil7Mix9IC0+IChhIHwgYil7Mix9IChu byBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIHwgQil7Mix9KSBERUZJTkUgQSBBUyB2YWwg PD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYSB8IGIpezIsfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0Cisg ICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgor KDcgcm93cykKKworLS0gTm9uLWFic29yYmFibGUgKFNLSVAgVE8gTkVYVCBST1cpOiBBKyAtPiBh KyAobm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHZhbCA+IDApOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9v a2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTm9uLWFic29yYmFibGUgKGxp bWl0ZWQgZnJhbWUpOiBBKyAtPiBhKyAobm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgICAg ICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAnMTAnOjpiaWdpbnQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogYSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAg U29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3Mp CisKKy0tIFJlbHVjdGFudCB7MX0/IHF1YW50aWZpZXIgZGVwYXJzZQorLS0gQXsxfT8gaXMgYSBy ZWx1Y3RhbnQgezEsMX0gcXVhbnRpZmllci4gIFRoZSBkZXBhcnNlIGNvZGUgbXVzdAorLS0gb3V0 cHV0ICJ7MX0iIGV4cGxpY2l0bHkgdG8gZGlzYW1iaWd1YXRlIGZyb20gYSBiYXJlICI/IiBxdWFu dGlmaWVyCistLSAod2hpY2ggd291bGQgbWVhbiB7MCwxfSkuCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSB2YWwKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezF9PyBCKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAsIEIgQVMgdmFsID4gMAorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSB2YWwg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogYXsxfT8gYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogdmFsCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBBbmFseXNpcyBUZXN0cworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBUZXN0cyBjb250ZXh0IGFic29ycHRpb24gb3B0aW1pemF0aW9uIChPKG5eMikgLT4gTyhuKSkK Ky0tIEZpbGVzOiBycHIuYyAoY29tcHV0ZUFic29yYmFiaWxpdHkpCistLSBTaW1wbGUgQWJzb3Ji YWJsZSBQYXR0ZXJuOiBBKyBCCistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBWQVIK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBB UyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAgMTAgfCAgIDYKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAw CisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcg fCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAg fCAgIDAKKygxMCByb3dzKQorCistLSBBYnNvcmJhYmxlIEdST1VQIFBhdHRlcm46IChBIEIpKyBD CistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRlZCBHUk9VUAorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiAzMCBB TkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYg fCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAg fCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5vbi1BYnNvcmJhYmxlOiBV bmJvdW5kZWQgTm90IGF0IFN0YXJ0CistLSBQYXR0ZXJuOiBBIEIrICh1bmJvdW5kZWQgbm90IGF0 IHN0YXJ0KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAg MzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICA2CisgIDYgfCAgNjAgfCAg IDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAx MCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEFMVCB3aXRoIEFic29yYmFibGUgQnJhbmNo ZXMKKy0tIFBhdHRlcm46IChBKyB8IEIrKSBDIC0gYm90aCBicmFuY2hlcyBhYnNvcmJhYmxlCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKEErIHwgQispIEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMw LCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjAKKykKK09SREVSIEJZ IGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAw CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICA0CisgIDUg fCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAg fCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0g QUxUIHdpdGggTWl4ZWQgQnJhbmNoZXMKKy0tIFBhdHRlcm46IChBKyB8IEIgQykgLSBvbmx5IGZp cnN0IGJyYW5jaCBhYnNvcmJhYmxlCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgQiBDKSspCisg ICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAsIEMg QVMgdmFsID4gNjAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0t LSstLS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAg MAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMgorICA3 IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAw IHwgICAwCisoMTAgcm93cykKKworLS0gTm9uLUFic29yYmFibGU6IEFMVCBJbnNpZGUgR1JPVVAK Ky0tIFBhdHRlcm46IChBIHwgQil7Mix9IC0gQUxUIGluc2lkZSB1bmJvdW5kZWQgR1JPVVAKK1NF TEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIpezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAs IEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8 ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAor ICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwg MTAwIHwgICAwCisoMTAgcm93cykKKworLS0gTm9uLUFic29yYmFibGU6IE5lc3RlZCBVbmJvdW5k ZWQKKy0tIFBhdHRlcm46ICgoQSBCKSsgQykrIC0gbmVzdGVkIEdST1VQIHN0cnVjdHVyZQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKCgoQSBCKSsgQykrKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwg IDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwg ICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5v bi1BYnNvcmJhYmxlOiBVbmJvdW5kZWQgRWxlbWVudCBJbnNpZGUgR1JPVVAKKy0tIFBhdHRlcm46 IChBIEIrKXsyLH0gLSB1bmJvdW5kZWQgaW5zaWRlIEdST1VQCitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgQispezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykK K09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwg IDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwg ICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisg IDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93 cykKKworLS0gUnVudGltZSBDb25kaXRpb25zOiBTS0lQIFRPIE5FWFQgUk9XCistLSBBYnNvcnB0 aW9uIGRpc2FibGVkIHdpdGggU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDYK KyAgMiB8ICAyMCB8ICAgNQorICAzIHwgIDMwIHwgICA0CisgIDQgfCAgNDAgfCAgIDMKKyAgNSB8 ICA1MCB8ICAgMgorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8 ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBS dW50aW1lIENvbmRpdGlvbnM6IExpbWl0ZWQgRnJhbWUKKy0tIEFic29ycHRpb24gZGlzYWJsZWQg d2l0aCBsaW1pdGVkIGZyYW1lIGVuZAorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgNSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFT IHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDYKKyAgMiB8ICAyMCB8ICAgMAor ICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwg IDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwg ICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVkZ2UgQ2FzZSBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBUZXN0cyBib3VuZGFyeSBjb25kaXRpb25zIGFuZCBjb21wbGV4IHNj ZW5hcmlvcworLS0gRW1wdHkgTWF0Y2ggUHJldmVudGlvbgorLS0gUGF0dGVybiB0aGF0IGNvdWxk IG1hdGNoIGVtcHR5OiBBKgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwMDAgIC0tIE5ldmVyIG1hdGNoZXMKKykKK09S REVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEw IHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAw CisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDgg fCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykK KworLS0gQWxsIFJvd3MgTWF0Y2gKKy0tIFBhdHRlcm4gd2hlcmUgZXZlcnkgcm93IG1hdGNoZXMK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPj0gMCAgLS0gQWx3YXlzIHRydWUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAg IDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAg NiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5 MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gTGFyZ2UgUXVhbnRpZmll cnMKKy0tIFBhdHRlcm46IEF7MTAwfSAobGFyZ2UgZXhhY3QgcXVhbnRpZmllcikKK1NFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwMH0pCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisg IDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAg NzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAg IDAKKygxMCByb3dzKQorCistLSBQYXR0ZXJuOiBBezEwLDIwfSAobGFyZ2UgcmFuZ2UgcXVhbnRp ZmllcikKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwLDIwfSkK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNu dCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxMAorICAyIHwgIDIwIHwgICAwCisg IDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAg NjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAg IDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIENvbXBsZXggTXVsdGktTGV2ZWwg TmVzdGluZworLS0gUGF0dGVybjogKCgoQSBCKSB8IEMpKyBEKSsKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIEIpIHwgQykrIEQpKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPD0gMjAsIEIgQVMgdmFsID4gMjAgQU5EIHZhbCA8PSA0MCwKKyAgICAgICAgICAgQyBB UyB2YWwgPiA0MCBBTkQgdmFsIDw9IDYwLCBEIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAy IHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUw IHwgICAzCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAw CisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIExvbmcg QWx0ZXJuYXRpb24gQ2hhaW4KKy0tIFBhdHRlcm46IEEgfCBCIHwgQyB8IEQgfCBFICg1LXdheSBB TFQpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSB8IEIgfCBDIHwg RCB8IEUpCisgICAgREVGSU5FIEEgQVMgdmFsID0gMTAsIEIgQVMgdmFsID0gMzAsIEMgQVMgdmFs ID0gNTAsCisgICAgICAgICAgIEQgQVMgdmFsID0gNzAsIEUgQVMgdmFsID0gOTAKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICAxCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMQorICA0IHwgIDQwIHwgICAwCisg IDUgfCAgNTAgfCAgIDEKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAxCisgIDggfCAg ODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMQorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKwor LS0gTG9uZyBTZXF1ZW5jZQorLS0gUGF0dGVybjogQSBCIEMgRCBFIEYgRyBIICg4LWVsZW1lbnQg U0VRKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBG IEcgSCkKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFsID49IDIwLCBDIEFTIHZh bCA+PSAzMCwKKyAgICAgICAgICAgRCBBUyB2YWwgPj0gNDAsIEUgQVMgdmFsID49IDUwLCBGIEFT IHZhbCA+PSA2MCwKKyAgICAgICAgICAgRyBBUyB2YWwgPj0gNzAsIEggQVMgdmFsID49IDgwCisp CitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8ICAgOAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8 ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAor ICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJv d3MpCisKKy0tIEludGVybGVhdmVkIFF1YW50aWZpZXJzCistLSBQYXR0ZXJuOiBBezJ9IEIrIEN7 Myw1fSBEKiBFezEsfQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7 Mn0gQisgQ3szLDV9IEQqIEV7MSx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFs ID4gMCwgQyBBUyB2YWwgPiAwLAorICAgICAgICAgICBEIEFTIHZhbCA+IDAsIEUgQVMgdmFsID4g MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgMTAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAg NDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAg IDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygx MCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBUZXN0cworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBUZXN0cyBmb3Igb3B0aW1pemF0aW9uIGVkZ2UgY2FzZXMgYW5kIGZhbGxiYWNrIGJlaGF2 aW9yCitDUkVBVEUgVEFCTEUgcnByX2ZhbGxiYWNrIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJU IElOVE8gcnByX2ZhbGxiYWNrIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworLS0gVGVzdDogbWlu IHF1YW50aWZpZXIgb3ZlcmZsb3cgY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjayAobWluID09 IG1heCBjYXNlKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKEF7MjAwMDAwMDAwMH0pezJ9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezIwMDAwMDAwMDB9KXsyfQorICAg TmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQK KyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfZmFsbGJhY2sKKyg3IHJvd3MpCisKKy0tIEV4 cGVjdGVkOiBGYWxsYmFjayAtIHBhdHRlcm4gbm90IG1lcmdlZCBkdWUgdG8gbWluIG92ZXJmbG93 ICg0MDAwMDAwMDAwID4gSU5UMzJfTUFYKQorLS0gVGVzdDogbWF4LW9ubHkgcXVhbnRpZmllciBv dmVyZmxvdyBjYXVzZXMgb3B0aW1pemF0aW9uIGZhbGxiYWNrCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQXsxLDIwMDAwMDAwMDB9KXsyfSkKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYXsxLDIwMDAwMDAwMDB9KXsyfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfZmFsbGJhY2sKKyg3IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAtIG1pbiBPSyAo MioxPTIpLCBidXQgbWF4IG92ZXJmbG93ICgyKjIwMDAwMDAwMDAgPiBJTlQzMl9NQVgpCistLSBU ZXN0OiBtYXggcXVhbnRpZmllciBleGNlZWRzIHZhbGlkIHJhbmdlICgyMTQ3NDgzNjQ3ID0gSU5U X01BWCwgbGltaXQgaXMgMjE0NzQ4MzY0NikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKChBezIwMDAwMDAwMDAsMjE0NzQ4MzY0N30pezJ9KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmRzIG11c3QgYmUg YmV0d2VlbiAwIGFuZCAyMTQ3NDgzNjQ2IHdpdGggbWF4ID49IDEKK0xJTkUgNjogICAgIFBBVFRF Uk4gKChBezIwMDAwMDAwMDAsMjE0NzQ4MzY0N30pezJ9KQorICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gVGVzdDogbmVzdGVkIHVuYm91bmRlZCB3aXRoIGxhcmdlIG1pbiBjYXVzZXMgb3Zl cmZsb3cgZmFsbGJhY2sKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKChBezIwMDAwMDAwMDAsfSl7MjAwMDAwMDAwMCx9KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezIwMDAw MDAwMDAsfSIpezIwMDAwMDAwMDAsfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBT b3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf ZmFsbGJhY2sKKyg3IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAtIG1pbiBvdmVyZmxv dyAoMjAwMDAwMDAwMCAqIDIwMDAwMDAwMDAgPiBJTlQzMl9NQVgpCistLSBUZXN0OiBwcmVmaXgg bWlzbWF0Y2ggY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjaworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIChDIEQpKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwLCBCIEFTIHZhbCA+IDUsIEMgQVMgdmFsID4gMTAsIEQgQVMgdmFsID4gMTUKKyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiAoYyBkKSsKKyAgIE5h diBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ZhbGxiYWNrCisoNyByb3dzKQorCistLSBFeHBl Y3RlZDogRmFsbGJhY2sgLSBwcmVmaXggZWxlbWVudHMgZG9uJ3QgbWF0Y2ggR1JPVVAgY29udGVu dAorLS0gVGVzdDogY29uc2VjdXRpdmUgVkFSIG1lcmdlIHdob3NlIG1pbiBzdW0gaXMgZXhhY3Rs eSBJTkYgY2F1c2VzIGZhbGxiYWNrLgorLS0gMTA3Mzc0MTgyNCArIDEwNzM3NDE4MjMgPSAyMTQ3 NDgzNjQ3ID0gSU5UMzJfTUFYID0gUlBSX1FVQU5USVRZX0lORi4KKy0tIE1lcmdpbmcgd291bGQg eWllbGQgYSBWQVIgd2l0aCBtaW4gPT0gSU5GLCBzbyB0aGUgbWVyZ2UgbXVzdCBmYWxsIGJhY2sg YW5kCistLSBsZWF2ZSB0aGUgdHdvIFZBUnMgdW5tZXJnZWQgKG1pcnJvcnMgdGhlIG11bHRpcGx5 IHBhdGgncyA+PSBJTkYgZ3VhcmQpLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXsxMDczNzQxODI0LH0gQXsxMDczNzQxODIzLH0pCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog YXsxMDczNzQxODI0LH0iIGF7MTA3Mzc0MTgyMyx9CisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9mYWxsYmFjaworKDcgcm93cykKKworLS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gVkFS cyBub3QgbWVyZ2VkIChtaW4gc3VtIDIxNDc0ODM2NDcgPT0gSU5GKQorLS0gVGVzdDogY29uc2Vj dXRpdmUgR1JPVVAgbWVyZ2Ugd2hvc2UgbWluIHN1bSBpcyBleGFjdGx5IElORiBjYXVzZXMgZmFs bGJhY2suCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSBCKXsxMDczNzQxODI0LH0gKEEgQil7MTA3Mzc0MTgyMyx9KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsID4gNQorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogKGEnIGInKXsxMDczNzQxODI0LH0iIChhIGIpezEwNzM3NDE4MjMsfQorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfZmFsbGJhY2sKKyg3IHJvd3MpCisKKy0tIEV4cGVjdGVk OiBGYWxsYmFjayAtIEdST1VQcyBub3QgbWVyZ2VkIChtaW4gc3VtIDIxNDc0ODM2NDcgPT0gSU5G KQorRFJPUCBUQUJMRSBycHJfZmFsbGJhY2s7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBsYW5uZXIgSW50ZWdyYXRp b24gVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZnVsbCBwbGFubmluZyBwaXBlbGluZSBhbmQgV2lu ZG93QWdnIHBsYW4gbm9kZSBjcmVhdGlvbgorLS0gRmlsZXM6IHBsYW5uZXIuYywgY3JlYXRlcGxh bi5jCitDUkVBVEUgVEFCTEUgcnByX3BsYW5uZXIgKGlkIElOVCwgY2F0ZWdvcnkgVkFSQ0hBUigx MCksIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BsYW5uZXIgVkFMVUVTCisgICAgKDEsICdB JywgMTApLCAoMiwgJ0EnLCAyMCksICgzLCAnQScsIDMwKSwKKyAgICAoNCwgJ0InLCA0MCksICg1 LCAnQicsIDUwKSwgKDYsICdCJywgNjApLAorICAgICg3LCAnQycsIDcwKSwgKDgsICdDJywgODAp LCAoOSwgJ0MnLCA5MCk7CistLSBNdWx0aXBsZSBXaW5kb3cgRnVuY3Rpb25zIGluIFNhbWUgUXVl cnkKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcxIGFz IGNudDEsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MiBhcyBjbnQyCitGUk9NIHJwcl9wbGFubmVy CitXSU5ET1cgdzEgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdmFsID4gMAorKSwKK3cyIEFTICgKKyAgICBQQVJUSVRJT04gQlkgY2F0ZWdvcnkK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+PSA0 MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudDEgfCBjbnQyIAor LS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8IEEgICAgICAgIHwgIDEw IHwgICAgOSB8ICAgIDAKKyAgMiB8IEEgICAgICAgIHwgIDIwIHwgICAgMCB8ICAgIDAKKyAgMyB8 IEEgICAgICAgIHwgIDMwIHwgICAgMCB8ICAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAg MCB8ICAgIDMKKyAgNSB8IEIgICAgICAgIHwgIDUwIHwgICAgMCB8ICAgIDAKKyAgNiB8IEIgICAg ICAgIHwgIDYwIHwgICAgMCB8ICAgIDAKKyAgNyB8IEMgICAgICAgIHwgIDcwIHwgICAgMCB8ICAg IDMKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAgMCB8ICAgIDAKKyAgOSB8IEMgICAgICAgIHwg IDkwIHwgICAgMCB8ICAgIDAKKyg5IHJvd3MpCisKKy0tIFdpbmRvdyBGdW5jdGlvbiB3aXRoIFBB UlRJVElPTiBCWQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY2F0ZWdvcnkKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGNhdGVnb3J5LCBpZDsKKyBpZCB8IGNhdGVnb3J5 IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tCisgIDEgfCBBICAgICAg ICB8ICAxMCB8ICAgMworICAyIHwgQSAgICAgICAgfCAgMjAgfCAgIDAKKyAgMyB8IEEgICAgICAg IHwgIDMwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgMworICA1IHwgQiAgICAgICAg fCAgNTAgfCAgIDAKKyAgNiB8IEIgICAgICAgIHwgIDYwIHwgICAwCisgIDcgfCBDICAgICAgICB8 ICA3MCB8ICAgMworICA4IHwgQyAgICAgICAgfCAgODAgfCAgIDAKKyAgOSB8IEMgICAgICAgIHwg IDkwIHwgICAwCisoOSByb3dzKQorCistLSBXaW5kb3cgRnVuY3Rpb24gd2l0aCBDb21wbGV4IE9S REVSIEJZCitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcGxhbm5lcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGNh dGVnb3J5IERFU0MsIHZhbCBBU0MKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispCitPUkRFUiBCWSBjYXRlZ29yeSBERVNDLCB2YWwgQVNDOworIGlkIHwgY2F0ZWdvcnkg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0rLS0tLS0KKyAgNyB8IEMgICAgICAg IHwgIDcwIHwgICA5CisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwgQyAgICAgICAg fCAgOTAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAwCisgIDUgfCBCICAgICAgICB8 ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAgMSB8IEEgICAgICAgIHwg IDEwIHwgICAwCisgIDIgfCBBICAgICAgICB8ICAyMCB8ICAgMAorICAzIHwgQSAgICAgICAgfCAg MzAgfCAgIDAKKyg5IHJvd3MpCisKKy0tIE5hbWVkIFdpbmRvdyBSZWZlcmVuY2UKK1NFTEVDVCBp ZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJw cl9wbGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGNhdGVnb3J5 IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tCisgIDEgfCBBICAgICAg ICB8ICAxMCB8ICAgOQorICAyIHwgQSAgICAgICAgfCAgMjAgfCAgIDAKKyAgMyB8IEEgICAgICAg IHwgIDMwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgMAorICA1IHwgQiAgICAgICAg fCAgNTAgfCAgIDAKKyAgNiB8IEIgICAgICAgIHwgIDYwIHwgICAwCisgIDcgfCBDICAgICAgICB8 ICA3MCB8ICAgMAorICA4IHwgQyAgICAgICAgfCAgODAgfCAgIDAKKyAgOSB8IEMgICAgICAgIHwg IDkwIHwgICAwCisoOSByb3dzKQorCistLSBJbmxpbmUgV2luZG93IERlZmluaXRpb24KK1NFTEVD VCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSICgKKyAgICAgICAgICAg T1JERVIgQlkgaWQKKyAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCisgICAgICAgKSBhcyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK09SREVS IEJZIGlkOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8IEEgICAgICAgIHwgIDEwIHwgICA5CisgIDIgfCBBICAgICAgICB8ICAy MCB8ICAgMAorICAzIHwgQSAgICAgICAgfCAgMzAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQw IHwgICAwCisgIDUgfCBCICAgICAgICB8ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAg fCAgIDAKKyAgNyB8IEMgICAgICAgIHwgIDcwIHwgICAwCisgIDggfCBDICAgICAgICB8ICA4MCB8 ICAgMAorICA5IHwgQyAgICAgICAgfCAgOTAgfCAgIDAKKyg5IHJvd3MpCisKKy0tIFdpbmRvdyB3 aXRoIEFnZ3JlZ2F0ZSBGdW5jdGlvbnMKK1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgq KSBPVkVSIHcgYXMgd2luZG93X2NudCwKKyAgICAgICBDT1VOVCgqKSBhcyBhZ2dfY250CitGUk9N IHJwcl9wbGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5Cisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp CitHUk9VUCBCWSBjYXRlZ29yeQorT1JERVIgQlkgY2F0ZWdvcnk7CitFUlJPUjogIHN5bnRheCBl cnJvciBhdCBvciBuZWFyICJHUk9VUCIKK0xJTkUgMTI6IEdST1VQIEJZIGNhdGVnb3J5CisgICAg ICAgICBeCistLSAoR1JPVVAgQlkgYWZ0ZXIgV0lORE9XIGNsYXVzZSBpcyBub3QgdmFsaWQgU1FM IHN5bnRheCkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gU3VicXVlcnkgYW5kIENURSBUZXN0cworLS0gRmlsZXM6IHBs YW5uZXIuYywgcHJlcGpvaW50cmVlLmMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgUlBSIHdpdGggc3VicXVl cmllcyBhbmQgQ1RFcworLS0gUlBSIGluIFN1YnF1ZXJ5IChGUk9NIGNsYXVzZSkKK1NFTEVDVCAq IEZST00gKAorICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAo CisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVG SU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViCitXSEVSRSBjbnQgPiA1CitPUkRFUiBCWSBp ZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0t LS0tCisgIDEgfCBBICAgICAgICB8ICAxMCB8ICAgOQorKDEgcm93KQorCistLSBSUFIgd2l0aCBT dWJxdWVyeSBpbiBXSEVSRQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK1dIRVJFIHZhbCA+IChTRUxFQ1Qg QVZHKHZhbCkgRlJPTSBycHJfcGxhbm5lcikKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBp ZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0t LS0tCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgNAorICA3IHwgQyAgICAgICAgfCAgNzAgfCAg IDAKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAwCisgIDkgfCBDICAgICAgICB8ICA5MCB8ICAg MAorKDQgcm93cykKKworLS0gQ1RFIHdpdGggUlBSCitXSVRIIHJwcl9jdGUgQVMgKAorICAgIFNF TEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorICAgIEZST00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVS IEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4g MAorICAgICkKKykKK1NFTEVDVCAqIEZST00gcnByX2N0ZSBXSEVSRSBjbnQgPiA1IE9SREVSIEJZ IGlkOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8IEEgICAgICAgIHwgIDEwIHwgICA5CisoMSByb3cpCisKKy0tIE11bHRpcGxl IENURSBSZWZlcmVuY2VzCitXSVRIIHJwcl9jdGUgQVMgKAorICAgIFNFTEVDVCBpZCwgY2F0ZWdv cnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnBy X3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykKK1NF TEVDVCBjMS5pZCwgYzEuY250LCBjMi5jbnQgYXMgY250MgorRlJPTSBycHJfY3RlIGMxCitKT0lO IHJwcl9jdGUgYzIgT04gYzEuaWQgPSBjMi5pZAorT1JERVIgQlkgYzEuaWQ7CisgaWQgfCBjbnQg fCBjbnQyIAorLS0tLSstLS0tLSstLS0tLS0KKyAgMSB8ICAgOSB8ICAgIDkKKyAgMiB8ICAgMCB8 ICAgIDAKKyAgMyB8ICAgMCB8ICAgIDAKKyAgNCB8ICAgMCB8ICAgIDAKKyAgNSB8ICAgMCB8ICAg IDAKKyAgNiB8ICAgMCB8ICAgIDAKKyAgNyB8ICAgMCB8ICAgIDAKKyAgOCB8ICAgMCB8ICAgIDAK KyAgOSB8ICAgMCB8ICAgIDAKKyg5IHJvd3MpCisKKy0tIE5lc3RlZCBDVEVzCitXSVRIIGN0ZTEg QVMgKAorICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCBGUk9NIHJwcl9wbGFubmVyIFdIRVJF IHZhbCA+IDMwCispLAorY3RlMiBBUyAoCisgICAgU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAor ICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBjdGUxCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisg ICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCispCitTRUxFQ1QgKiBGUk9NIGN0ZTIg T1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0t LSstLS0tLSstLS0tLQorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDYKKyAgNSB8IEIgICAgICAg IHwgIDUwIHwgICAwCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgMAorICA3IHwgQyAgICAgICAg fCAgNzAgfCAgIDAKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAwCisgIDkgfCBDICAgICAgICB8 ICA5MCB8ICAgMAorKDYgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKT0lOIFRlc3RzCistLSBGaWxlczog cHJlcGpvaW50cmVlLmMsIHNldHJlZnMuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBSUFIgd2l0aCBKT0lO cyBhbmQgbXVsdGlwbGUgdGFibGUgcmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIHJwcl9qb2luMSAo aWQgSU5ULCB2YWwxIElOVCk7CitDUkVBVEUgVEFCTEUgcnByX2pvaW4yIChpZCBJTlQsIHZhbDIg SU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9qb2luMSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMs IDMwKSwgKDQsIDQwKSwgKDUsIDUwKTsKK0lOU0VSVCBJTlRPIHJwcl9qb2luMiBWQUxVRVMgKDEs IDEwMCksICgyLCAyMDApLCAoMywgMzAwKSwgKDQsIDQwMCksICg1LCA1MDApOworLS0gUlBSIEFm dGVyIElOTkVSIEpPSU4KK1NFTEVDVCB0MS5pZCwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9qb2luMSB0MQorSU5ORVIgSk9JTiBycHJf am9pbjIgdDIgT04gdDEuaWQgPSB0Mi5pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHQx LmlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsMSArIHZhbDIgPiAxMDAKKykK K09SREVSIEJZIHQxLmlkOworIGlkIHwgdmFsMSB8IHZhbDIgfCBjbnQgCistLS0tKy0tLS0tLSst LS0tLS0rLS0tLS0KKyAgMSB8ICAgMTAgfCAgMTAwIHwgICA1CisgIDIgfCAgIDIwIHwgIDIwMCB8 ICAgMAorICAzIHwgICAzMCB8ICAzMDAgfCAgIDAKKyAgNCB8ICAgNDAgfCAgNDAwIHwgICAwCisg IDUgfCAgIDUwIHwgIDUwMCB8ICAgMAorKDUgcm93cykKKworLS0gUlBSIEFmdGVyIExFRlQgSk9J TgorU0VMRUNUIHQxLmlkLCB0MS52YWwxLCB0Mi52YWwyLAorICAgICAgIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX2pvaW4xIHQxCitMRUZUIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQx LmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbDEgPiAwCispCitPUkRFUiBCWSB0MS5pZDsKKyBpZCB8 IHZhbDEgfCB2YWwyIHwgY250IAorLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tCisgIDEgfCAgIDEw IHwgIDEwMCB8ICAgNQorICAyIHwgICAyMCB8ICAyMDAgfCAgIDAKKyAgMyB8ICAgMzAgfCAgMzAw IHwgICAwCisgIDQgfCAgIDQwIHwgIDQwMCB8ICAgMAorICA1IHwgICA1MCB8ICA1MDAgfCAgIDAK Kyg1IHJvd3MpCisKKy0tIFJQUiB3aXRoIE11bHRpcGxlIFRhYmxlcyBpbiBERUZJTkUKK1NFTEVD VCB0MS5pZCwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9qb2luMSB0MQorSU5ORVIgSk9JTiBycHJfam9pbjIgdDIgT04gdDEuaWQgPSB0 Mi5pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHQxLmlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2YWwxID4gMjAsCisgICAgICAgICAgIEIgQVMgdmFsMiA+IDIwMAor KQorT1JERVIgQlkgdDEuaWQ7CisgaWQgfCB2YWwxIHwgdmFsMiB8IGNudCAKKy0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLQorICAxIHwgICAxMCB8ICAxMDAgfCAgIDAKKyAgMiB8ICAgMjAgfCAgMjAw IHwgICAwCisgIDMgfCAgIDMwIHwgIDMwMCB8ICAgMworICA0IHwgICA0MCB8ICA0MDAgfCAgIDAK KyAgNSB8ICAgNTAgfCAgNTAwIHwgICAwCisoNSByb3dzKQorCistLSBSUFIgQWZ0ZXIgQ3Jvc3Mg Sm9pbgorU0VMRUNUIHQxLmlkIGFzIGlkMSwgdDIuaWQgYXMgaWQyLCB0MS52YWwxLCB0Mi52YWwy LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2pvaW4xIHQxCitDUk9T UyBKT0lOIHJwcl9qb2luMiB0MgorV0hFUkUgdDEuaWQgPD0gMiBBTkQgdDIuaWQgPD0gMgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHQxLmlkLCB0Mi5pZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHZhbDEgKyB2YWwyID4gMAorKQorT1JERVIgQlkgdDEuaWQsIHQyLmlkOwor IGlkMSB8IGlkMiB8IHZhbDEgfCB2YWwyIHwgY250IAorLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t LSstLS0tLQorICAgMSB8ICAgMSB8ICAgMTAgfCAgMTAwIHwgICA0CisgICAxIHwgICAyIHwgICAx MCB8ICAyMDAgfCAgIDAKKyAgIDIgfCAgIDEgfCAgIDIwIHwgIDEwMCB8ICAgMAorICAgMiB8ICAg MiB8ICAgMjAgfCAgMjAwIHwgICAwCisoNCByb3dzKQorCistLSBTZWxmLUpvaW4gd2l0aCBSUFIK K1NFTEVDVCBpZCwgdmFsMSwgdmFsMV9uZXh0LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gKFNFTEVDVCBhLmlkLCBhLnZhbDEsIGIudmFsMSBhcyB2YWwxX25leHQKKyAgICAg IEZST00gcnByX2pvaW4xIGEKKyAgICAgIElOTkVSIEpPSU4gcnByX2pvaW4xIGIgT04gYS5pZCAr IDEgPSBiLmlkKSBzdWIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KFgrKQorICAgIERFRklORSBYIEFTIHZhbDEgPCB2YWwxX25leHQKKykKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsMSB8IHZhbDFfbmV4dCB8IGNudCAKKy0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tCisgIDEgfCAgIDEwIHwgICAgICAgIDIwIHwgICA0CisgIDIgfCAgIDIwIHwgICAgICAgIDMw IHwgICAwCisgIDMgfCAgIDMwIHwgICAgICAgIDQwIHwgICAwCisgIDQgfCAgIDQwIHwgICAgICAg IDUwIHwgICAwCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9qb2luMSwgcnByX2pvaW4yOwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBDb21wbGV4IEV4cHJlc3Npb24gVGVzdHMKKy0tIEZpbGVzOiBjcmVhdGVwbGFu LmMsIHNldHJlZnMuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBjb21wbGV4IHRhcmdldCBsaXN0IGV4cHJl c3Npb25zCitDUkVBVEUgVEFCTEUgcnByX3RhcmdldCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VS VCBJTlRPIHJwcl90YXJnZXQgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0 MCksICg1LCA1MCk7CistLSBFeHByZXNzaW9ucyBpbiBUYXJnZXQgTGlzdAorU0VMRUNUIGlkLAor ICAgICAgIHZhbCAqIDIgYXMgZG91YmxlZCwKKyAgICAgICB2YWwgKyAxMCBhcyBhZGRlZCwKKyAg ICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgZG91YmxlZCB8IGFkZGVkIHwgY250IAorLS0tLSst LS0tLS0tLS0rLS0tLS0tLSstLS0tLQorICAxIHwgICAgICAyMCB8ICAgIDIwIHwgICA1CisgIDIg fCAgICAgIDQwIHwgICAgMzAgfCAgIDAKKyAgMyB8ICAgICAgNjAgfCAgICA0MCB8ICAgMAorICA0 IHwgICAgICA4MCB8ICAgIDUwIHwgICAwCisgIDUgfCAgICAgMTAwIHwgICAgNjAgfCAgIDAKKyg1 IHJvd3MpCisKKy0tIENBU0UgRXhwcmVzc2lvbiBpbiBUYXJnZXQgTGlzdAorU0VMRUNUIGlkLCB2 YWwsCisgICAgICAgQ0FTRQorICAgICAgICAgICBXSEVOIHZhbCA8IDMwIFRIRU4gJ2xvdycKKyAg ICAgICAgICAgV0hFTiB2YWwgPCA1MCBUSEVOICdtZWRpdW0nCisgICAgICAgICAgIEVMU0UgJ2hp Z2gnCisgICAgICAgRU5EIGFzIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjYXRlZ29yeSB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLSstLS0tLQorICAx IHwgIDEwIHwgbG93ICAgICAgfCAgIDUKKyAgMiB8ICAyMCB8IGxvdyAgICAgIHwgICAwCisgIDMg fCAgMzAgfCBtZWRpdW0gICB8ICAgMAorICA0IHwgIDQwIHwgbWVkaXVtICAgfCAgIDAKKyAgNSB8 ICA1MCB8IGhpZ2ggICAgIHwgICAwCisoNSByb3dzKQorCistLSBTdWJxdWVyeSBpbiBUYXJnZXQg TGlzdAorU0VMRUNUIGlkLCB2YWwsCisgICAgICAgKFNFTEVDVCBNQVgodmFsKSBGUk9NIHJwcl90 YXJnZXQpIGFzIG1heF92YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IG1h eF92YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAg ICA1MCB8ICAgNQorICAyIHwgIDIwIHwgICAgICA1MCB8ICAgMAorICAzIHwgIDMwIHwgICAgICA1 MCB8ICAgMAorICA0IHwgIDQwIHwgICAgICA1MCB8ICAgMAorICA1IHwgIDUwIHwgICAgICA1MCB8 ICAgMAorKDUgcm93cykKKworLS0gRnVuY3Rpb24gQ2FsbHMgaW4gVGFyZ2V0IExpc3QKK1NFTEVD VCBpZCwgdmFsLAorICAgICAgIENPQUxFU0NFKHZhbCwgMCkgYXMgY29hbGVzY2VkLAorICAgICAg IEFCUyh2YWwgLSAzMCkgYXMgZGlzdGFuY2UsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8 IHZhbCB8IGNvYWxlc2NlZCB8IGRpc3RhbmNlIHwgY250IAorLS0tLSstLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgICAgICAgMTAgfCAgICAgICAyMCB8ICAg NQorICAyIHwgIDIwIHwgICAgICAgIDIwIHwgICAgICAgMTAgfCAgIDAKKyAgMyB8ICAzMCB8ICAg ICAgICAzMCB8ICAgICAgICAwIHwgICAwCisgIDQgfCAgNDAgfCAgICAgICAgNDAgfCAgICAgICAx MCB8ICAgMAorICA1IHwgIDUwIHwgICAgICAgIDUwIHwgICAgICAgMjAgfCAgIDAKKyg1IHJvd3Mp CisKKy0tIENvbHVtbiBBbGlhc2VzIGFuZCBSZWZlcmVuY2VzCitTRUxFQ1QgaWQgYXMgcm93X2lk LAorICAgICAgIHZhbCBhcyB2YWx1ZSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIHJvd19pZDsKKyByb3df aWQgfCB2YWx1ZSB8IGNudCAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAgICAgIDEgfCAgICAx MCB8ICAgNQorICAgICAgMiB8ICAgIDIwIHwgICAwCisgICAgICAzIHwgICAgMzAgfCAgIDAKKyAg ICAgIDQgfCAgICA0MCB8ICAgMAorICAgICAgNSB8ICAgIDUwIHwgICAwCisoNSByb3dzKQorCitE Uk9QIFRBQkxFIHJwcl90YXJnZXQ7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNldCBPcGVyYXRpb25zIFRlc3RzCist LSBGaWxlczogcGxhbm5lci5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQUiB3aXRoIFVOSU9OLCBJTlRF UlNFQ1QsIEVYQ0VQVAorQ1JFQVRFIFRBQkxFIHJwcl9zZXQxIChpZCBJTlQsIHZhbCBJTlQpOwor Q1JFQVRFIFRBQkxFIHJwcl9zZXQyIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnBy X3NldDEgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CitJTlNFUlQgSU5UTyBycHJf c2V0MiBWQUxVRVMgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKTsKKy0tIFVOSU9OIHdpdGggUlBS CisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQx CisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAg IERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorVU5JT04KKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDIKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9S REVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkp CitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDIgfCAgMjAgfCAgIDMKKyAgMyB8ICAzMCB8 ICAgMAorICA0IHwgIDQwIHwgICAwCisoNSByb3dzKQorCistLSBVTklPTiBBTEwgd2l0aCBSUFIK KyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDEK KyBXSU5ET1cgdyBBUyAoCisgICAgIE9SREVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAg REVGSU5FIEEgQVMgdmFsID4gMAorICkpCitVTklPTiBBTEwKKyhTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDIKKyBXSU5ET1cgdyBBUyAoCisgICAg IE9SREVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAor ICkpCitPUkRFUiBCWSBpZCwgdmFsOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMworICAz IHwgIDMwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorKDYgcm93cykK KworLS0gSU5URVJTRUNUIHdpdGggUlBSCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBp ZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorSU5URVJT RUNUCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9z ZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisg ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDMgfCAgMzAgfCAgIDAKKygxIHJvdykKKworLS0gRVhD RVBUIHdpdGggUlBSCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBG Uk9NIHJwcl9zZXQxCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVS TiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorRVhDRVBUCisoU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQyCisgV0lORE9XIHcg QVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyApKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorKDIgcm93cykKKworRFJP UCBUQUJMRSBycHJfc2V0MSwgcnByX3NldDI7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNvcnRpbmcgYW5kIEdyb3Vw aW5nIFRlc3RzCistLSBGaWxlczogcGxhbm5lci5jLCBjcmVhdGVwbGFuLmMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g VGVzdHMgUlBSIGludGVyYWN0aW9uIHdpdGggc29ydGluZyBhbmQgZ3JvdXBpbmcKK0NSRUFURSBU QUJMRSBycHJfc29ydCAoaWQgSU5ULCBjYXRlZ29yeSBWQVJDSEFSKDEwKSwgdmFsIElOVCk7CitJ TlNFUlQgSU5UTyBycHJfc29ydCBWQUxVRVMKKyAgICAoMSwgJ0EnLCAzMCksICgyLCAnQicsIDIw KSwgKDMsICdBJywgMTApLAorICAgICg0LCAnQicsIDQwKSwgKDUsICdBJywgNTApLCAoNiwgJ0In LCA2MCk7CistLSBSUFIgd2l0aCBHUk9VUCBCWSAoYWdncmVnYXRlIGluIERFRklORSAtPiBFUlJP UiBiZWZvcmUgR1JPVVAgQlkgaW50ZXJhY3Rpb24pCitTRUxFQ1QgY2F0ZWdvcnksCisgICAgICAg Q09VTlQoKikgYXMgZ3JvdXBfY250LAorICAgICAgIE1BWCh2YWwpIGFzIG1heF92YWwsCisgICAg ICAgQ09VTlQoKikgT1ZFUiB3IGFzIHdpbmRvd19jbnQKK0ZST00gcnByX3NvcnQKK0dST1VQIEJZ IGNhdGVnb3J5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgY2F0ZWdvcnkKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKykKK09SREVSIEJZIGNhdGVnb3J5 OworRVJST1I6ICBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUK K0xJTkUgMTE6ICAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKyAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBSUFIgd2l0aCBIQVZJTkcgKHNhbWUgYWdncmVnYXRlLWluLURFRklORSBl cnJvcikKK1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBhcyBncm91cF9jbnQsCisg ICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIHdpbmRvd19jbnQKK0ZST00gcnByX3NvcnQKK0dST1VQ IEJZIGNhdGVnb3J5CitIQVZJTkcgQ09VTlQoKikgPiAyCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgY2F0ZWdvcnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+ IDAKKykKK09SREVSIEJZIGNhdGVnb3J5OworRVJST1I6ICBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBERUZJTkUKK0xJTkUgMTE6ICAgICBERUZJTkUgQSBBUyBDT1VOVCgq KSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBSUFIgd2l0aCBESVNUSU5DVAor U0VMRUNUIERJU1RJTkNUIGNhdGVnb3J5LAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY2F0ZWdvcnkK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGNhdGVnb3J5OworIGNhdGVnb3J5IHwgY250IAorLS0tLS0tLS0tLSstLS0t LQorIEEgICAgICAgIHwgICAzCisgQSAgICAgICAgfCAgIDAKKyBCICAgICAgICB8ICAgMAorIEIg ICAgICAgIHwgICAzCisoNCByb3dzKQorCistLSBSUFIgd2l0aCBPUkRFUiBCWSAoZGlmZmVyZW50 IGZyb20gd2luZG93IE9SREVSIEJZKQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NvcnQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykK K09SREVSIEJZIHZhbCBERVNDOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0t LS0tLS0tLS0rLS0tLS0rLS0tLS0KKyAgNiB8IEIgICAgICAgIHwgIDYwIHwgICAwCisgIDUgfCBB ICAgICAgICB8ICA1MCB8ICAgMAorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDAKKyAgMSB8IEEg ICAgICAgIHwgIDMwIHwgICA2CisgIDIgfCBCICAgICAgICB8ICAyMCB8ICAgMAorICAzIHwgQSAg ICAgICAgfCAgMTAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIFJQUiB3aXRoIExJTUlUIGFuZCBPRkZT RVQKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZAorTElNSVQg MyBPRkZTRVQgMTsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0t Ky0tLS0tKy0tLS0tCisgIDIgfCBCICAgICAgICB8ICAyMCB8ICAgMAorICAzIHwgQSAgICAgICAg fCAgMTAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAwCisoMyByb3dzKQorCitEUk9Q IFRBQkxFIHJwcl9zb3J0OworLS0gU1FMIGZ1bmN0aW9uIGlubGluaW5nOiAkMSBpbiBERUZJTkUg bXVzdCBiZSBzdWJzdGl0dXRlZCBieQorLS0gc3Vic3RpdHV0ZV9hY3R1YWxfcGFyYW1ldGVyc19p bl9mcm9tIHZpYSBxdWVyeV90cmVlX211dGF0b3IuCitDUkVBVEUgVEFCTEUgcnByX3NyZl90ICh2 IGludCk7CitJTlNFUlQgSU5UTyBycHJfc3JmX3QgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1 KTsKK0NSRUFURSBGVU5DVElPTiBycHJfc3JmX2YodGhyZXNob2xkIGludCkKK1JFVFVSTlMgVEFC TEUgKHYgaW50LCBjbnQgYmlnaW50KQorTEFOR1VBR0Ugc3FsIFNUQUJMRSBBUyAkJAorICAgIFNF TEVDVCB2OjppbnQsIGNvdW50KCopIE9WRVIgdworICAgIEZST00gcnByX3NyZl90CisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAg ICAgICAgREVGSU5FIEEgQVMgdiA+ICQxCisgICAgKQorJCQ7CitTRUxFQ1QgdiwgY250IEZST00g cnByX3NyZl9mKDMpIE9SREVSIEJZIHY7CisgdiB8IGNudCAKKy0tLSstLS0tLQorIDEgfCAgIDAK KyAyIHwgICAwCisgMyB8ICAgMAorIDQgfCAgIDIKKyA1IHwgICAwCisoNSByb3dzKQorCitEUk9Q IFRBQkxFIHJwcl9zcmZfdDsKK0RST1AgRlVOQ1RJT04gcnByX3NyZl9mKGludCk7CitEUk9QIFRB QkxFIHJwcl9wbGFubmVyOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdHJlc3MgVGVzdHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRWRn ZSBjYXNlcyBhbmQgc3RyZXNzIHNjZW5hcmlvcworQ1JFQVRFIFRBQkxFIHJwcl9zdHJlc3MgKGlk IElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfc3RyZXNzIFNFTEVDVCBpLCBpICogMTAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGk7CistLSBWZXJ5IExvbmcgUXVlcnkgd2l0aCBN YW55IFdpbmRvd3MKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdzEgYXMg Y250MSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIsCisgICAgICAgQ09VTlQoKikg T1ZFUiB3MyBhcyBjbnQzCitGUk9NIHJwcl9zdHJlc3MKK1dJTkRPVyB3MSBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispLAordzIg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gNTAKKyksCit3MyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDKykKKyAgICBE RUZJTkUgQyBBUyB2YWwgPiAxMDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250MSB8 IGNudDIgfCBjbnQzIAorLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwgIDEw IHwgICAyMCB8ICAgIDAgfCAgICAwCisgIDIgfCAgMjAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAg MyB8ICAzMCB8ICAgIDAgfCAgICAwIHwgICAgMAorICA0IHwgIDQwIHwgICAgMCB8ICAgIDAgfCAg ICAwCisgIDUgfCAgNTAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAgNiB8ICA2MCB8ICAgIDAgfCAg IDE1IHwgICAgMAorICA3IHwgIDcwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgIDggfCAgODAgfCAg ICAwIHwgICAgMCB8ICAgIDAKKyAgOSB8ICA5MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDEwIHwg MTAwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMTEgfCAxMTAgfCAgICAwIHwgICAgMCB8ICAgMTAK KyAxMiB8IDEyMCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDEzIHwgMTMwIHwgICAgMCB8ICAgIDAg fCAgICAwCisgMTQgfCAxNDAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAxNSB8IDE1MCB8ICAgIDAg fCAgICAwIHwgICAgMAorIDE2IHwgMTYwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMTcgfCAxNzAg fCAgICAwIHwgICAgMCB8ICAgIDAKKyAxOCB8IDE4MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDE5 IHwgMTkwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMjAgfCAyMDAgfCAgICAwIHwgICAgMCB8ICAg IDAKKygyMCByb3dzKQorCistLSBEZWVwbHkgTmVzdGVkIFN1YnF1ZXJpZXMgd2l0aCBSUFIKK1NF TEVDVCAqIEZST00gKAorICAgIFNFTEVDVCAqIEZST00gKAorICAgICAgICBTRUxFQ1QgKiBGUk9N ICgKKyAgICAgICAgICAgIFNFTEVDVCBpZCwgdmFsLAorICAgICAgICAgICAgICAgICAgIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgICAgIEZST00gcnByX3N0cmVzcworICAgICAgICAg ICAgV0lORE9XIHcgQVMgKAorICAgICAgICAgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgICAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgICAgICAgICAgREVGSU5FIEEgQVMg dmFsID4gMAorICAgICAgICAgICAgKQorICAgICAgICApIHN1YjEKKyAgICApIHN1YjIKKykgc3Vi MworV0hFUkUgY250ID4gMTAKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDIwCisoMSByb3cpCisKKy0tIENvbXBsZXggRXhwcmVz c2lvbiBpbiBERUZJTkUgQ2xhdXNlCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgKHZhbCAlIDMgPSAwIE9SIHZh bCAlIDUgPSAwKSwKKyAgICAgICAgICAgQiBBUyAodmFsICogMiA+IDEwMCBBTkQgdmFsIC8gMiA8 IDEwMCkKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgIDE5CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0 IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcw IHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAw CisgMTEgfCAxMTAgfCAgIDAKKyAxMiB8IDEyMCB8ICAgMAorIDEzIHwgMTMwIHwgICAwCisgMTQg fCAxNDAgfCAgIDAKKyAxNSB8IDE1MCB8ICAgMAorIDE2IHwgMTYwIHwgICAwCisgMTcgfCAxNzAg fCAgIDAKKyAxOCB8IDE4MCB8ICAgMAorIDE5IHwgMTkwIHwgICAwCisgMjAgfCAyMDAgfCAgIDAK KygyMCByb3dzKQorCistLSBXaW5kb3cgd2l0aCBObyBNYXRjaGluZyBSb3dzCitTRUxFQ1QgaWQs IHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dI RVJFIHZhbCA+IDEwMDAgIC0tIE5vIHJvd3MgbWF0Y2gKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorKDAgcm93cykKKwor LS0gV2luZG93IG9uIFNpbmdsZSBSb3cKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3N0cmVzcworV0hFUkUgaWQgPSAxMAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0t CisgMTAgfCAxMDAgfCAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBycHJfc3RyZXNzOworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBFcnJvciBMaW1pdCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBmb3IgZXJyb3IgY29u ZGl0aW9ucyBpbiBycHIuYworQ1JFQVRFIFRBQkxFIHJwcl9lcnJvcnMgKGlkIElOVCwgdmFsIElO VCk7CitJTlNFUlQgSU5UTyBycHJfZXJyb3JzIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworLS0g VGVzdDogREVGSU5FIHZhcmlhYmxlIG5vdCBpbiBQQVRURVJOIChlcnJvcikKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgQiBBUyBUUlVFCisp OworRVJST1I6ICBERUZJTkUgdmFyaWFibGUgImIiIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4KK0xJ TkUgNzogICAgICAgQiBBUyBUUlVFCisgICAgICAgICAgICAgIF4KKy0tIEV4cGVjdGVkOiBFcnJv ciAtIEIgaXMgbm90IHVzZWQgaW4gUEFUVEVSTgorLS0gVGVzdDogMjQwIHZhcmlhYmxlcyBpbiBQ QVRURVJOIGFuZCBERUZJTkUgKGJvdW5kYXJ5IC0gc2hvdWxkIHN1Y2NlZWQpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQgVjUgVjYgVjcgVjggVjkgVjEwIFYxMSBWMTIgVjEz IFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYyMCBWMjEgVjIyIFYyMyBWMjQgVjI1IFYyNiBWMjcg VjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3IFYzOCBWMzkgVjQwIFY0MSBW NDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDggVjQ5IFY1MCBWNTEgVjUyIFY1MyBWNTQgVjU1IFY1 NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBWNjMgVjY0IFY2NSBWNjYgVjY3IFY2OCBWNjkgVjcw IFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3NyBWNzggVjc5IFY4MCBWODEgVjgyIFY4MyBWODQg Vjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBW OTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0IFYxMDUgVjEwNiBWMTA3IFYxMDggVjEwOSBWMTEw IFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBWMTE2IFYxMTcgVjExOCBWMTE5IFYxMjAgVjEyMSBW MTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEyNyBWMTI4IFYxMjkgVjEzMCBWMTMxIFYxMzIgVjEz MyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzggVjEzOSBWMTQwIFYxNDEgVjE0MiBWMTQzIFYxNDQg VjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYxNTAgVjE1MSBWMTUyIFYxNTMgVjE1NCBWMTU1IFYx NTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYxIFYxNjIgVjE2MyBWMTY0IFYxNjUgVjE2NiBWMTY3 IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBWMTczIFYxNzQgVjE3NSBWMTc2IFYxNzcgVjE3OCBW MTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4NCBWMTg1IFYxODYgVjE4NyBWMTg4IFYxODkgVjE5 MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUgVjE5NiBWMTk3IFYxOTggVjE5OSBWMjAwIFYyMDEg VjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIwOCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYy MTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkgVjIyMCBWMjIxIFYyMjIgVjIyMyBWMjI0 IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBWMjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBW MjM2IFYyMzcgVjIzOCBWMjM5IFYyNDApCisgICAgREVGSU5FCisgICAgVjEgQVMgdmFsID4gMCwg VjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFsID4gMCwgVjUgQVMgdmFsID4g MCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMgdmFsID4gMCwgVjkgQVMgdmFs ID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+IDAsIFYxMiBBUyB2YWwgPiAw LCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBBUyB2YWwgPiAwLCBWMTYgQVMg dmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAwLCBWMTkgQVMgdmFsID4gMCwg VjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYyMiBBUyB2YWwgPiAwLCBWMjMg QVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwgPiAwLCBWMjYgQVMgdmFsID4g MCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkgQVMgdmFsID4gMCwgVjMwIEFT IHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2YWwgPiAwLCBWMzMgQVMgdmFs ID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBWMzYgQVMgdmFsID4gMCwgVjM3 IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFsID4gMCwgVjQwIEFTIHZhbCA+ IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAwLCBWNDMgQVMgdmFsID4gMCwg VjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMgdmFsID4gMCwgVjQ3IEFTIHZh bCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwgVjUwIEFTIHZhbCA+IDAsCisg ICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMgQVMgdmFsID4gMCwgVjU0IEFT IHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4gMCwgVjU3IEFTIHZhbCA+IDAs IFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFTIHZhbCA+IDAsCisgICAgVjYx IEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFsID4gMCwgVjY0IEFTIHZhbCA+ IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3IEFTIHZhbCA+IDAsIFY2OCBB UyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+IDAsCisgICAgVjcxIEFTIHZh bCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwgVjc0IEFTIHZhbCA+IDAsIFY3 NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZhbCA+IDAsIFY3OCBBUyB2YWwg PiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisgICAgVjgxIEFTIHZhbCA+IDAs IFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFTIHZhbCA+IDAsIFY4NSBBUyB2 YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAsIFY4OCBBUyB2YWwgPiAwLCBW ODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkxIEFTIHZhbCA+IDAsIFY5MiBB UyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+IDAsIFY5NSBBUyB2YWwgPiAw LCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBBUyB2YWwgPiAwLCBWOTkgQVMg dmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMgdmFsID4gMCwgVjEwMiBBUyB2 YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4gMCwgVjEwNSBBUyB2YWwgPiAw LCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEwOCBBUyB2YWwgPiAwLCBWMTA5 IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTExIEFTIHZhbCA+IDAsIFYxMTIg QVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZhbCA+IDAsIFYxMTUgQVMgdmFs ID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAsIFYxMTggQVMgdmFsID4gMCwg VjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAgVjEyMSBBUyB2YWwgPiAwLCBW MTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBBUyB2YWwgPiAwLCBWMTI1IEFT IHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwgPiAwLCBWMTI4IEFTIHZhbCA+ IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAorICAgIFYxMzEgQVMgdmFsID4g MCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYxMzQgQVMgdmFsID4gMCwgVjEz NSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMgdmFsID4gMCwgVjEzOCBBUyB2 YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4gMCwKKyAgICBWMTQxIEFTIHZh bCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAwLCBWMTQ0IEFTIHZhbCA+IDAs IFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3IEFTIHZhbCA+IDAsIFYxNDgg QVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZhbCA+IDAsCisgICAgVjE1MSBB UyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFsID4gMCwgVjE1NCBBUyB2YWwg PiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwgVjE1NyBBUyB2YWwgPiAwLCBW MTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBBUyB2YWwgPiAwLAorICAgIFYx NjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFTIHZhbCA+IDAsIFYxNjQgQVMg dmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+IDAsIFYxNjcgQVMgdmFsID4g MCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYxNzAgQVMgdmFsID4gMCwKKyAg ICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3MyBBUyB2YWwgPiAwLCBWMTc0 IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2YWwgPiAwLCBWMTc3IEFTIHZh bCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAwLCBWMTgwIEFTIHZhbCA+IDAs CisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAsIFYxODMgQVMgdmFsID4gMCwg VjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYgQVMgdmFsID4gMCwgVjE4NyBB UyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFsID4gMCwgVjE5MCBBUyB2YWwg PiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwgPiAwLCBWMTkzIEFTIHZhbCA+ IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBWMTk2IEFTIHZhbCA+IDAsIFYx OTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFTIHZhbCA+IDAsIFYyMDAgQVMg dmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMgdmFsID4gMCwgVjIwMyBBUyB2 YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4gMCwgVjIwNiBBUyB2YWwgPiAw LCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIwOSBBUyB2YWwgPiAwLCBWMjEw IEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEyIEFTIHZhbCA+IDAsIFYyMTMg QVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZhbCA+IDAsIFYyMTYgQVMgdmFs ID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAsIFYyMTkgQVMgdmFsID4gMCwg VjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwgVjIyMiBBUyB2YWwgPiAwLCBW MjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBBUyB2YWwgPiAwLCBWMjI2IEFT IHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwgPiAwLCBWMjI5IEFTIHZhbCA+ IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+IDAsIFYyMzIgQVMgdmFsID4g MCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYyMzUgQVMgdmFsID4gMCwgVjIz NiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMgdmFsID4gMCwgVjIzOSBBUyB2 YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAg ICAgMAorKDIgcm93cykKKworLS0gRXhwZWN0ZWQ6IFN1Y2Nlc3MgLSBleGFjdGx5IGF0IFJQUl9W QVJJRF9NQVggYm91bmRhcnkKKy0tIEVSUk9SOiAyNDEgdmFyaWFibGVzIGluIFBBVFRFUk4sIDI0 MCBpbiBERUZJTkUgKGV4Y2VlZHMgbGltaXQgd2l0aCBpbXBsaWNpdCBUUlVFKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0IFY1IFY2IFY3IFY4IFY5IFYxMCBWMTEgVjEyIFYx MyBWMTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBWMjAgVjIxIFYyMiBWMjMgVjI0IFYyNSBWMjYgVjI3 IFYyOCBWMjkgVjMwIFYzMSBWMzIgVjMzIFYzNCBWMzUgVjM2IFYzNyBWMzggVjM5IFY0MCBWNDEg VjQyIFY0MyBWNDQgVjQ1IFY0NiBWNDcgVjQ4IFY0OSBWNTAgVjUxIFY1MiBWNTMgVjU0IFY1NSBW NTYgVjU3IFY1OCBWNTkgVjYwIFY2MSBWNjIgVjYzIFY2NCBWNjUgVjY2IFY2NyBWNjggVjY5IFY3 MCBWNzEgVjcyIFY3MyBWNzQgVjc1IFY3NiBWNzcgVjc4IFY3OSBWODAgVjgxIFY4MiBWODMgVjg0 IFY4NSBWODYgVjg3IFY4OCBWODkgVjkwIFY5MSBWOTIgVjkzIFY5NCBWOTUgVjk2IFY5NyBWOTgg Vjk5IFYxMDAgVjEwMSBWMTAyIFYxMDMgVjEwNCBWMTA1IFYxMDYgVjEwNyBWMTA4IFYxMDkgVjEx MCBWMTExIFYxMTIgVjExMyBWMTE0IFYxMTUgVjExNiBWMTE3IFYxMTggVjExOSBWMTIwIFYxMjEg VjEyMiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYxMjcgVjEyOCBWMTI5IFYxMzAgVjEzMSBWMTMyIFYx MzMgVjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4IFYxMzkgVjE0MCBWMTQxIFYxNDIgVjE0MyBWMTQ0 IFYxNDUgVjE0NiBWMTQ3IFYxNDggVjE0OSBWMTUwIFYxNTEgVjE1MiBWMTUzIFYxNTQgVjE1NSBW MTU2IFYxNTcgVjE1OCBWMTU5IFYxNjAgVjE2MSBWMTYyIFYxNjMgVjE2NCBWMTY1IFYxNjYgVjE2 NyBWMTY4IFYxNjkgVjE3MCBWMTcxIFYxNzIgVjE3MyBWMTc0IFYxNzUgVjE3NiBWMTc3IFYxNzgg VjE3OSBWMTgwIFYxODEgVjE4MiBWMTgzIFYxODQgVjE4NSBWMTg2IFYxODcgVjE4OCBWMTg5IFYx OTAgVjE5MSBWMTkyIFYxOTMgVjE5NCBWMTk1IFYxOTYgVjE5NyBWMTk4IFYxOTkgVjIwMCBWMjAx IFYyMDIgVjIwMyBWMjA0IFYyMDUgVjIwNiBWMjA3IFYyMDggVjIwOSBWMjEwIFYyMTEgVjIxMiBW MjEzIFYyMTQgVjIxNSBWMjE2IFYyMTcgVjIxOCBWMjE5IFYyMjAgVjIyMSBWMjIyIFYyMjMgVjIy NCBWMjI1IFYyMjYgVjIyNyBWMjI4IFYyMjkgVjIzMCBWMjMxIFYyMzIgVjIzMyBWMjM0IFYyMzUg VjIzNiBWMjM3IFYyMzggVjIzOSBWMjQwIFYyNDEpCisgICAgREVGSU5FCisgICAgVjEgQVMgdmFs ID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4gMCwgVjQgQVMgdmFsID4gMCwgVjUgQVMg dmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFsID4gMCwgVjggQVMgdmFsID4gMCwgVjkg QVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCisgICAgVjExIEFTIHZhbCA+IDAsIFYxMiBBUyB2 YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZhbCA+IDAsIFYxNSBBUyB2YWwgPiAwLCBW MTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYxOCBBUyB2YWwgPiAwLCBWMTkgQVMgdmFs ID4gMCwgVjIwIEFTIHZhbCA+IDAsCisgICAgVjIxIEFTIHZhbCA+IDAsIFYyMiBBUyB2YWwgPiAw LCBWMjMgQVMgdmFsID4gMCwgVjI0IEFTIHZhbCA+IDAsIFYyNSBBUyB2YWwgPiAwLCBWMjYgQVMg dmFsID4gMCwgVjI3IEFTIHZhbCA+IDAsIFYyOCBBUyB2YWwgPiAwLCBWMjkgQVMgdmFsID4gMCwg VjMwIEFTIHZhbCA+IDAsCisgICAgVjMxIEFTIHZhbCA+IDAsIFYzMiBBUyB2YWwgPiAwLCBWMzMg QVMgdmFsID4gMCwgVjM0IEFTIHZhbCA+IDAsIFYzNSBBUyB2YWwgPiAwLCBWMzYgQVMgdmFsID4g MCwgVjM3IEFTIHZhbCA+IDAsIFYzOCBBUyB2YWwgPiAwLCBWMzkgQVMgdmFsID4gMCwgVjQwIEFT IHZhbCA+IDAsCisgICAgVjQxIEFTIHZhbCA+IDAsIFY0MiBBUyB2YWwgPiAwLCBWNDMgQVMgdmFs ID4gMCwgVjQ0IEFTIHZhbCA+IDAsIFY0NSBBUyB2YWwgPiAwLCBWNDYgQVMgdmFsID4gMCwgVjQ3 IEFTIHZhbCA+IDAsIFY0OCBBUyB2YWwgPiAwLCBWNDkgQVMgdmFsID4gMCwgVjUwIEFTIHZhbCA+ IDAsCisgICAgVjUxIEFTIHZhbCA+IDAsIFY1MiBBUyB2YWwgPiAwLCBWNTMgQVMgdmFsID4gMCwg VjU0IEFTIHZhbCA+IDAsIFY1NSBBUyB2YWwgPiAwLCBWNTYgQVMgdmFsID4gMCwgVjU3IEFTIHZh bCA+IDAsIFY1OCBBUyB2YWwgPiAwLCBWNTkgQVMgdmFsID4gMCwgVjYwIEFTIHZhbCA+IDAsCisg ICAgVjYxIEFTIHZhbCA+IDAsIFY2MiBBUyB2YWwgPiAwLCBWNjMgQVMgdmFsID4gMCwgVjY0IEFT IHZhbCA+IDAsIFY2NSBBUyB2YWwgPiAwLCBWNjYgQVMgdmFsID4gMCwgVjY3IEFTIHZhbCA+IDAs IFY2OCBBUyB2YWwgPiAwLCBWNjkgQVMgdmFsID4gMCwgVjcwIEFTIHZhbCA+IDAsCisgICAgVjcx IEFTIHZhbCA+IDAsIFY3MiBBUyB2YWwgPiAwLCBWNzMgQVMgdmFsID4gMCwgVjc0IEFTIHZhbCA+ IDAsIFY3NSBBUyB2YWwgPiAwLCBWNzYgQVMgdmFsID4gMCwgVjc3IEFTIHZhbCA+IDAsIFY3OCBB UyB2YWwgPiAwLCBWNzkgQVMgdmFsID4gMCwgVjgwIEFTIHZhbCA+IDAsCisgICAgVjgxIEFTIHZh bCA+IDAsIFY4MiBBUyB2YWwgPiAwLCBWODMgQVMgdmFsID4gMCwgVjg0IEFTIHZhbCA+IDAsIFY4 NSBBUyB2YWwgPiAwLCBWODYgQVMgdmFsID4gMCwgVjg3IEFTIHZhbCA+IDAsIFY4OCBBUyB2YWwg PiAwLCBWODkgQVMgdmFsID4gMCwgVjkwIEFTIHZhbCA+IDAsCisgICAgVjkxIEFTIHZhbCA+IDAs IFY5MiBBUyB2YWwgPiAwLCBWOTMgQVMgdmFsID4gMCwgVjk0IEFTIHZhbCA+IDAsIFY5NSBBUyB2 YWwgPiAwLCBWOTYgQVMgdmFsID4gMCwgVjk3IEFTIHZhbCA+IDAsIFY5OCBBUyB2YWwgPiAwLCBW OTkgQVMgdmFsID4gMCwgVjEwMCBBUyB2YWwgPiAwLAorICAgIFYxMDEgQVMgdmFsID4gMCwgVjEw MiBBUyB2YWwgPiAwLCBWMTAzIEFTIHZhbCA+IDAsIFYxMDQgQVMgdmFsID4gMCwgVjEwNSBBUyB2 YWwgPiAwLCBWMTA2IEFTIHZhbCA+IDAsIFYxMDcgQVMgdmFsID4gMCwgVjEwOCBBUyB2YWwgPiAw LCBWMTA5IEFTIHZhbCA+IDAsIFYxMTAgQVMgdmFsID4gMCwKKyAgICBWMTExIEFTIHZhbCA+IDAs IFYxMTIgQVMgdmFsID4gMCwgVjExMyBBUyB2YWwgPiAwLCBWMTE0IEFTIHZhbCA+IDAsIFYxMTUg QVMgdmFsID4gMCwgVjExNiBBUyB2YWwgPiAwLCBWMTE3IEFTIHZhbCA+IDAsIFYxMTggQVMgdmFs ID4gMCwgVjExOSBBUyB2YWwgPiAwLCBWMTIwIEFTIHZhbCA+IDAsCisgICAgVjEyMSBBUyB2YWwg PiAwLCBWMTIyIEFTIHZhbCA+IDAsIFYxMjMgQVMgdmFsID4gMCwgVjEyNCBBUyB2YWwgPiAwLCBW MTI1IEFTIHZhbCA+IDAsIFYxMjYgQVMgdmFsID4gMCwgVjEyNyBBUyB2YWwgPiAwLCBWMTI4IEFT IHZhbCA+IDAsIFYxMjkgQVMgdmFsID4gMCwgVjEzMCBBUyB2YWwgPiAwLAorICAgIFYxMzEgQVMg dmFsID4gMCwgVjEzMiBBUyB2YWwgPiAwLCBWMTMzIEFTIHZhbCA+IDAsIFYxMzQgQVMgdmFsID4g MCwgVjEzNSBBUyB2YWwgPiAwLCBWMTM2IEFTIHZhbCA+IDAsIFYxMzcgQVMgdmFsID4gMCwgVjEz OCBBUyB2YWwgPiAwLCBWMTM5IEFTIHZhbCA+IDAsIFYxNDAgQVMgdmFsID4gMCwKKyAgICBWMTQx IEFTIHZhbCA+IDAsIFYxNDIgQVMgdmFsID4gMCwgVjE0MyBBUyB2YWwgPiAwLCBWMTQ0IEFTIHZh bCA+IDAsIFYxNDUgQVMgdmFsID4gMCwgVjE0NiBBUyB2YWwgPiAwLCBWMTQ3IEFTIHZhbCA+IDAs IFYxNDggQVMgdmFsID4gMCwgVjE0OSBBUyB2YWwgPiAwLCBWMTUwIEFTIHZhbCA+IDAsCisgICAg VjE1MSBBUyB2YWwgPiAwLCBWMTUyIEFTIHZhbCA+IDAsIFYxNTMgQVMgdmFsID4gMCwgVjE1NCBB UyB2YWwgPiAwLCBWMTU1IEFTIHZhbCA+IDAsIFYxNTYgQVMgdmFsID4gMCwgVjE1NyBBUyB2YWwg PiAwLCBWMTU4IEFTIHZhbCA+IDAsIFYxNTkgQVMgdmFsID4gMCwgVjE2MCBBUyB2YWwgPiAwLAor ICAgIFYxNjEgQVMgdmFsID4gMCwgVjE2MiBBUyB2YWwgPiAwLCBWMTYzIEFTIHZhbCA+IDAsIFYx NjQgQVMgdmFsID4gMCwgVjE2NSBBUyB2YWwgPiAwLCBWMTY2IEFTIHZhbCA+IDAsIFYxNjcgQVMg dmFsID4gMCwgVjE2OCBBUyB2YWwgPiAwLCBWMTY5IEFTIHZhbCA+IDAsIFYxNzAgQVMgdmFsID4g MCwKKyAgICBWMTcxIEFTIHZhbCA+IDAsIFYxNzIgQVMgdmFsID4gMCwgVjE3MyBBUyB2YWwgPiAw LCBWMTc0IEFTIHZhbCA+IDAsIFYxNzUgQVMgdmFsID4gMCwgVjE3NiBBUyB2YWwgPiAwLCBWMTc3 IEFTIHZhbCA+IDAsIFYxNzggQVMgdmFsID4gMCwgVjE3OSBBUyB2YWwgPiAwLCBWMTgwIEFTIHZh bCA+IDAsCisgICAgVjE4MSBBUyB2YWwgPiAwLCBWMTgyIEFTIHZhbCA+IDAsIFYxODMgQVMgdmFs ID4gMCwgVjE4NCBBUyB2YWwgPiAwLCBWMTg1IEFTIHZhbCA+IDAsIFYxODYgQVMgdmFsID4gMCwg VjE4NyBBUyB2YWwgPiAwLCBWMTg4IEFTIHZhbCA+IDAsIFYxODkgQVMgdmFsID4gMCwgVjE5MCBB UyB2YWwgPiAwLAorICAgIFYxOTEgQVMgdmFsID4gMCwgVjE5MiBBUyB2YWwgPiAwLCBWMTkzIEFT IHZhbCA+IDAsIFYxOTQgQVMgdmFsID4gMCwgVjE5NSBBUyB2YWwgPiAwLCBWMTk2IEFTIHZhbCA+ IDAsIFYxOTcgQVMgdmFsID4gMCwgVjE5OCBBUyB2YWwgPiAwLCBWMTk5IEFTIHZhbCA+IDAsIFYy MDAgQVMgdmFsID4gMCwKKyAgICBWMjAxIEFTIHZhbCA+IDAsIFYyMDIgQVMgdmFsID4gMCwgVjIw MyBBUyB2YWwgPiAwLCBWMjA0IEFTIHZhbCA+IDAsIFYyMDUgQVMgdmFsID4gMCwgVjIwNiBBUyB2 YWwgPiAwLCBWMjA3IEFTIHZhbCA+IDAsIFYyMDggQVMgdmFsID4gMCwgVjIwOSBBUyB2YWwgPiAw LCBWMjEwIEFTIHZhbCA+IDAsCisgICAgVjIxMSBBUyB2YWwgPiAwLCBWMjEyIEFTIHZhbCA+IDAs IFYyMTMgQVMgdmFsID4gMCwgVjIxNCBBUyB2YWwgPiAwLCBWMjE1IEFTIHZhbCA+IDAsIFYyMTYg QVMgdmFsID4gMCwgVjIxNyBBUyB2YWwgPiAwLCBWMjE4IEFTIHZhbCA+IDAsIFYyMTkgQVMgdmFs ID4gMCwgVjIyMCBBUyB2YWwgPiAwLAorICAgIFYyMjEgQVMgdmFsID4gMCwgVjIyMiBBUyB2YWwg PiAwLCBWMjIzIEFTIHZhbCA+IDAsIFYyMjQgQVMgdmFsID4gMCwgVjIyNSBBUyB2YWwgPiAwLCBW MjI2IEFTIHZhbCA+IDAsIFYyMjcgQVMgdmFsID4gMCwgVjIyOCBBUyB2YWwgPiAwLCBWMjI5IEFT IHZhbCA+IDAsIFYyMzAgQVMgdmFsID4gMCwKKyAgICBWMjMxIEFTIHZhbCA+IDAsIFYyMzIgQVMg dmFsID4gMCwgVjIzMyBBUyB2YWwgPiAwLCBWMjM0IEFTIHZhbCA+IDAsIFYyMzUgQVMgdmFsID4g MCwgVjIzNiBBUyB2YWwgPiAwLCBWMjM3IEFTIHZhbCA+IDAsIFYyMzggQVMgdmFsID4gMCwgVjIz OSBBUyB2YWwgPiAwLCBWMjQwIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHRvbyBtYW55IHBhdHRl cm4gdmFyaWFibGVzCitMSU5FIDU6IC4uLlYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYy MzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgTWF4aW11 bSBpcyAyNDAuCistLSBUZXN0OiBQYXR0ZXJuIG5lc3RpbmcgYXQgbWF4aW11bSBkZXB0aCAoZGVw dGggMjUzKQorLS0gTm90ZTogMjUzIG5lc3RlZCBHUk9VUHszLDd9PyBxdWFudGlmaWVyczsgcmVs dWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QKKy0tIHN1YmplY3QgdG8gcXVhbnRpZmllciBtdWx0 aXBsaWNhdGlvbiwgc28gdGhlIG5lc3RpbmcgKGFuZCBkZXB0aCAyNTMpIGlzCistLSBwcmVzZXJ2 ZWQgYWZ0ZXIgb3B0aW1pemF0aW9uLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKChBezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9PykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworIGlkIHwgdmFsIHwgY291bnQgCistLS0tKy0tLS0tKy0tLS0tLS0KKyAgMSB8 ICAxMCB8ICAgICAwCisgIDIgfCAgMjAgfCAgICAgMAorKDIgcm93cykKKworLS0gRXhwZWN0ZWQ6 IFNob3VsZCBzdWNjZWVkCistLSBUZXN0OiBQYXR0ZXJuIG5lc3RpbmcgZGVwdGggZXhjZWVkcyBt YXhpbXVtIChkZXB0aCAyNTQpCistLSBOb3RlOiAyNTQgbmVzdGVkIEdST1VQezMsN30/IHF1YW50 aWZpZXJzOyByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdAorLS0gc3ViamVjdCB0byBxdWFu dGlmaWVyIG11bHRpcGxpY2F0aW9uLCBzbyB0aGUgbmVzdGluZyByZWFjaGVzIGRlcHRoIDI1NCBh bmQKKy0tIGV4Y2VlZHMgdGhlIGxpbWl0LgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHBhdHRlcm4gbmVzdGluZyB0b28gZGVlcAor REVUQUlMOiAgUGF0dGVybiBuZXN0aW5nIGRlcHRoIDI1NCBleGNlZWRzIG1heGltdW0gMjUzLgor RFJPUCBUQUJMRSBycHJfZXJyb3JzOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCYXNpYyBQYXR0ZXJuIE1hdGNoaW5n CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3Q6IEE/IChvcHRpb25hbCwgZ3JlZWR5KQorU0VMRUNUIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAorKTsKKyBpZCB8IHZhbCB8IGMgCistLS0t Ky0tLS0tKy0tLQorICAxIHwgIDEwIHwgMAorICAyIHwgIDIwIHwgMAorICAzIHwgIDMwIHwgMAor ICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYwIHwgMQorICA3IHwgIDcwIHwg MQorICA4IHwgIDgwIHwgMQorICA5IHwgIDkwIHwgMQorIDEwIHwgMTAwIHwgMQorKDEwIHJvd3Mp CisKKy0tIFRlc3Q6IEF7Mn0gKGV4YWN0IGNvdW50KQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCop IE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezJ9KQor ICAgIERFRklORSBBIEFTIHZhbCA8PSA1MAorKTsKKyBpZCB8IHZhbCB8IGMgCistLS0tKy0tLS0t Ky0tLQorICAxIHwgIDEwIHwgMgorICAyIHwgIDIwIHwgMAorICAzIHwgIDMwIHwgMgorICA0IHwg IDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYwIHwgMAorICA3IHwgIDcwIHwgMAorICA4 IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwgMTAwIHwgMAorKDEwIHJvd3MpCisKKy0t IFRlc3Q6IEF7MSwzfSAoYm91bmRlZCByYW5nZSwgZ3JlZWR5KQorU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB ezEsM30pCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwCispOworIGlkIHwgdmFsIHwgYyAKKy0t LS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAzCisgIDIgfCAgMjAgfCAwCisgIDMgfCAgMzAgfCAw CisgIDQgfCAgNDAgfCAyCisgIDUgfCAgNTAgfCAwCisgIDYgfCAgNjAgfCAwCisgIDcgfCAgNzAg fCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAwCisgMTAgfCAxMDAgfCAwCisoMTAgcm93 cykKKworLS0gVGVzdDogQSB8IEIgKHNpbXBsZSBhbHRlcm5hdGlvbikKK1NFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSB8IEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDcwCispOwor IGlkIHwgdmFsIHwgYyAKKy0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAxCisgIDIgfCAgMjAg fCAxCisgIDMgfCAgMzAgfCAxCisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAg NjAgfCAwCisgIDcgfCAgNzAgfCAwCisgIDggfCAgODAgfCAxCisgIDkgfCAgOTAgfCAxCisgMTAg fCAxMDAgfCAxCisoMTAgcm93cykKKworLS0gVGVzdDogQSB8IEIgfCBDICh0aHJlZS13YXkgYWx0 ZXJuYXRpb24pCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgfCBCIHwgQykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPD0gMjAsIEIgQVMgdmFsIEJFVFdFRU4gNDAgQU5EIDYwLCBDIEFTIHZhbCA+IDgwCispOwor IGlkIHwgdmFsIHwgYyAKKy0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAxCisgIDIgfCAgMjAg fCAxCisgIDMgfCAgMzAgfCAwCisgIDQgfCAgNDAgfCAxCisgIDUgfCAgNTAgfCAxCisgIDYgfCAg NjAgfCAxCisgIDcgfCAgNzAgfCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAxCisgMTAg fCAxMDAgfCAxCisoMTAgcm93cykKKworLS0gVGVzdDogQSBCIEMgKGNvbmNhdGVuYXRpb24pCitT RUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2 YWwgQkVUV0VFTiAzMSBBTkQgNjAsIEMgQVMgdmFsID4gNjAKKyk7CisgaWQgfCB2YWwgfCBjIAor LS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDAKKyAgMiB8ICAyMCB8IDAKKyAgMyB8ICAzMCB8 IDAKKyAgNCB8ICA0MCB8IDAKKyAgNSB8ICA1MCB8IDAKKyAgNiB8ICA2MCB8IDAKKyAgNyB8ICA3 MCB8IDAKKyAgOCB8ICA4MCB8IDAKKyAgOSB8ICA5MCB8IDAKKyAxMCB8IDEwMCB8IDAKKygxMCBy b3dzKQorCistLSBUZXN0OiBBIEI/IEMgKG9wdGlvbmFsIG1pZGRsZSkKK1NFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCPyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgQkVUV0VFTiAz MSBBTkQgNjAsIEMgQVMgdmFsID4gNjAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSstLS0tLSst LS0KKyAgMSB8ICAxMCB8IDAKKyAgMiB8ICAyMCB8IDAKKyAgMyB8ICAzMCB8IDAKKyAgNCB8ICA0 MCB8IDAKKyAgNSB8ICA1MCB8IDAKKyAgNiB8ICA2MCB8IDAKKyAgNyB8ICA3MCB8IDAKKyAgOCB8 ICA4MCB8IDAKKyAgOSB8ICA5MCB8IDAKKyAxMCB8IDEwMCB8IDAKKygxMCByb3dzKQorCistLSBU ZXN0OiAoQSBCKSsgKGdyb3VwZWQgcXVhbnRpZmllcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikr KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKTsKKyBpZCB8IHZh bCB8IGMgCistLS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMAorICAyIHwgIDIwIHwgMAorICAz IHwgIDMwIHwgMAorICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMgorICA2IHwgIDYwIHwgMAor ICA3IHwgIDcwIHwgMAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwgMTAwIHwg MAorKDEwIHJvd3MpCisKKy0tIFRlc3Q6IChBIHwgQikrIEMgKGFsdGVybmF0aW9uIHdpdGggcXVh bnRpZmllcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPD0gMzAsIEIgQVMgdmFsIEJFVFdFRU4gMzEgQU5EIDYwLCBDIEFTIHZhbCA+IDgwCispOwor IGlkIHwgdmFsIHwgYyAKKy0tLS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAwCisgIDIgfCAgMjAg fCAwCisgIDMgfCAgMzAgfCAwCisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAg NjAgfCAwCisgIDcgfCAgNzAgfCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAwCisgMTAg fCAxMDAgfCAwCisoMTAgcm93cykKKworLS0gVGVzdDogKEErIHwgKEEgfCBCKSspKiAtIG5lc3Rl ZCBhbHRlcm5hdGlvbiBpbnNpZGUgcXVhbnRpZmllZCBncm91cAorLS0gUHJldmlvdXNseSBjYXVz ZWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIGFsdGVybmF0aW9uIGhhbmRsaW5nIHdoZW4gdGhlIGlu bmVyCistLSBCRUdJTigrKSdzIHNraXAganVtcCB3YXMgZm9sbG93ZWQgYXMgYW4gQUxUIGJyYW5j aCBwb2ludGVyLgorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSAoVkFM VUVTCisgICAgKDEsIEFSUkFZWydBJywgJ0InXSksCisgICAgKDIsIEFSUkFZWydCJ10pLAorICAg ICgzLCBBUlJBWVsnQyddKQorKSBBUyB0KGlkLCBmbGFncykKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KChBKyB8IChBIHwgQikrKSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoMyByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBhdGhvbG9naWNhbCBQYXR0ZXJucwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBUaGVzZSBwYXR0ZXJucyBwcmV2aW91c2x5IGNhdXNlZCBpc3N1ZXMuIE5vdyBv cHRpbWl6ZWQgb3IgaGFuZGxlZCBzYWZlbHkuCistLSBUZXN0OiAoQSopKiAtIG5lc3RlZCB1bmJv dW5kZWQgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYwor RlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgo QSopKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYgfCBjIAorLS0tKy0tLQorIDEgfCA1 CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1IHJvd3MpCisKKy0tIFRlc3Q6IChB KikrIC0gaW5uZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgq KSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwK KyAgICBQQVRURVJOICgoQSopKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYgfCBjIAor LS0tKy0tLQorIDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisgNSB8IDAKKyg1IHJvd3Mp CisKKy0tIFRlc3Q6IChBKykqIC0gb3V0ZXIgbnVsbGFibGUgKG9wdGltaXplZCB0byBBKikKK1NF TEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygxLCA1KSB2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgoQSspKikKKyAgICBERUZJTkUgQSBBUyBUUlVF CispOworIHYgfCBjIAorLS0tKy0tLQorIDEgfCA1CisgMiB8IDAKKyAzIHwgMAorIDQgfCAwCisg NSB8IDAKKyg1IHJvd3MpCisKKy0tIFRlc3Q6IChBKykrIC0gYm90aCByZXF1aXJlIG1hdGNoIChv cHRpbWl6ZWQgdG8gQSspCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEErKSspCisg ICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQorIDIgfCAw CisgMyB8IDAKKyA0IHwgMAorIDUgfCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoKChBKSopKikq ICAtIHRyaXBsZSBuZXN0ZWQgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBP VkVSIHcgQVMgYworRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAzKSB2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAg ICBQQVRURVJOICgoKChBKSopKikqKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CisgdiB8IGMg CistLS0rLS0tCisgMSB8IDMKKyAyIHwgMAorIDMgfCAwCisoMyByb3dzKQorCistLSBPcHRpb25h bCBncm91cCB3aXRoIGFsdGVybmF0aW9uOiBBICgoQiB8IEMpIChEIHwgRSkpKiBGPworLS0gV2hl biBvbmx5IEEgbWF0Y2hlcywgdGhlICogZ3JvdXAgbWF0Y2hlcyAwIHRpbWVzIGFuZCBGPyBtYXRj aGVzIDAgdGltZXMKK1NFTEVDVCBpZCwgdmFsLCBtYXRjaF9sZW4KK0ZST00gKFNFTEVDVCBpZCwg dmFsLAorICAgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBBUyBtYXRjaF9sZW4KKyAgICAgIEZS T00gKFZBTFVFUyAoMSwgMSksICgyLCA5OSkpIEFTIHQoaWQsIHZhbCkKKyAgICAgIFdJTkRPVyB3 IEFTICgKKyAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgICAgICAgIFBBVFRFUk4gKEEgKChCIHwgQykgKEQgfCBFKSkq IEY/KQorICAgICAgICAgIERFRklORSBBIEFTIHZhbCA9IDEsCisgICAgICAgICAgICAgICAgIEIg QVMgdmFsID0gMiwgQyBBUyB2YWwgPSAzLAorICAgICAgICAgICAgICAgICBEIEFTIHZhbCA9IDQs IEUgQVMgdmFsID0gNSwKKyAgICAgICAgICAgICAgICAgRiBBUyB2YWwgPSA2CisgICAgICApCisp IHM7CisgaWQgfCB2YWwgfCBtYXRjaF9sZW4gCistLS0tKy0tLS0tKy0tLS0tLS0tLS0tCisgIDEg fCAgIDEgfCAgICAgICAgIDEKKyAgMiB8ICA5OSB8ICAgICAgICAgMAorKDIgcm93cykKKworRFJP UCBUQUJMRSBycHJfcGxhbjsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5jYzg2ZDBhYWUzMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC0wLDAgKzEsNjA3NSBAQAorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBSUFIgRVhQTEFJTiBUZXN0cworLS0gVGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0 aW9uIEVYUExBSU4gb3V0cHV0CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBWaWV3cyBhbmQgdGFibGVzIGluIHRo aXMgZmlsZSBhcmUgaW50ZW50aW9uYWxseSBub3QgZHJvcHBlZCwKKy0tIHNvIHRoYXQgcGdfdXBn cmFkZS9wZ19kdW1wIGNhbiB0ZXN0IFJQUiBzeW50YXggc2VyaWFsaXphdGlvbi4KKy0tCistLSBU aGlzIHRlc3Qgc3VpdGUgdmFsaWRhdGVzIEVYUExBSU4gb3V0cHV0IGZvciBSUFIgcXVlcmllcywK Ky0tIGluY2x1ZGluZyBORkEgc3RhdGlzdGljcyBzaG93biBpbiBFWFBMQUlOIEFOQUxZWkU6Cist LSAgIC0gTkZBIFN0YXRlczogcGVhaywgdG90YWwsIG1lcmdlZAorLS0gICAtIE5GQSBDb250ZXh0 czogcGVhaywgdG90YWwsIHBydW5lZAorLS0gICAtIE5GQTogbWF0Y2hlZCAobGVuIG1pbi9tYXgv YXZnKSwgbWlzbWF0Y2hlZCAobGVuIG1pbi9tYXgvYXZnKQorLS0gICAtIE5GQTogYWJzb3JiZWQg KGxlbiBtaW4vbWF4L2F2ZyksIHNraXBwZWQgKGxlbiBtaW4vbWF4L2F2ZykKKy0tICAgLSBQYXR0 ZXJuIGRlcGFyc2UgZm9ybWF0dGluZworLS0gICAtIE11bHRpcGxlIG91dHB1dCBmb3JtYXRzICh0 ZXh0LCBKU09OLCBYTUwpCistLQorLS0gVGVzdCBDb3ZlcmFnZToKKy0tICAgQmFzaWMgTkZBIFN0 YXRpc3RpY3MgVGVzdHMKKy0tICAgU3RhdGUgU3RhdGlzdGljcyBUZXN0cworLS0gICBDb250ZXh0 IFN0YXRpc3RpY3MgVGVzdHMKKy0tICAgTWF0Y2ggTGVuZ3RoIFN0YXRpc3RpY3MgVGVzdHMKKy0t ICAgTWlzbWF0Y2ggTGVuZ3RoIFN0YXRpc3RpY3MgVGVzdHMKKy0tICAgSlNPTiBGb3JtYXQgVGVz dHMKKy0tICAgWE1MIEZvcm1hdCBUZXN0cworLS0gICBNdWx0aXBsZSBQYXJ0aXRpb25zIFRlc3Rz CistLSAgIEVkZ2UgQ2FzZXMKKy0tICAgQ29tcGxleCBQYXR0ZXJuIFRlc3RzCistLSAgIFJlYWwt d29ybGQgUGF0dGVybiBFeGFtcGxlcworLS0gICBQZXJmb3JtYW5jZS1vcmllbnRlZCBUZXN0cwor LS0gICBJTklUSUFMIHZzIG5vIElOSVRJQUwgY29tcGFyaXNvbgorLS0gICBRdWFudGlmaWVyIFZh cmlhdGlvbnMKKy0tICAgUmVncmVzc2lvbiBUZXN0cyBmb3IgU3RhdGlzdGljcyBBY2N1cmFjeQor LS0gICBBbHRlcm5hdGlvbiBQYXR0ZXJuIFRlc3RzCistLSAgIEdyb3VwIFBhdHRlcm4gVGVzdHMK Ky0tICAgV2luZG93IEZ1bmN0aW9uIENvbWJpbmF0aW9ucworLS0gICBERUZJTkUgRXhwcmVzc2lv biBWYXJpYXRpb25zCistLSAgIExhcmdlIFNjYWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCist LSAgIE5hdiBNYXJrIExvb2tiYWNrL0xvb2thaGVhZCAodHVwbGVzdG9yZSB0cmltKQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBGaWx0ZXIgZnVuY3Rpb24gdG8gbm9ybWFsaXplIHBsYXRmb3JtLWRlcGVuZGVudCBtZW1v cnkgdmFsdWVzIChub3QgTkZBIHN0YXRpc3RpY3MpLgorLS0gTkZBIHN0YXRpc3RpY3Mgc2hvdWxk IG5vdCBjaGFuZ2UgYmV0d2VlbiBwbGF0Zm9ybXM7IGlmIHRoZXkgZG8sIGl0IGNvdWxkCistLSBp bmRpY2F0ZSBpc3N1ZXMgc3VjaCBhcyB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuCistLSBX b3JrcyBmb3IgdGV4dCwgSlNPTiwgYW5kIFhNTCBmb3JtYXRzLgorY3JlYXRlIGZ1bmN0aW9uIHJw cl9leHBsYWluX2ZpbHRlcih0ZXh0KSByZXR1cm5zIHNldG9mIHRleHQKK2xhbmd1YWdlIHBscGdz cWwgYXMKKyQkCitkZWNsYXJlCisgICAgbG4gdGV4dDsKK2JlZ2luCisgICAgZm9yIGxuIGluIGV4 ZWN1dGUgJDEKKyAgICBsb29wCisgICAgICAgIC0tIE5vcm1hbGl6ZSBwbGF0Zm9ybS1kZXBlbmRl bnQgbWVtb3J5IHZhbHVlcworICAgICAgICAtLSBLZWVwIE5GQSBzdGF0aXN0aWNzIG51bWJlcnMg dW5jaGFuZ2VkICh0aGV5IGFyZSB0ZXN0IGFzc2VydGlvbnMpCisKKyAgICAgICAgLS0gVGV4dCBm b3JtYXQ6ICJTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogMThrQiIKKyAgICAgICAg aWYgbG4gfiAnU3RvcmFnZTouKk1heGltdW0gU3RvcmFnZTonIHRoZW4KKyAgICAgICAgICAgIGxu IDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnXG1cZCtrQicsICdOa0InLCAnZycpOworICAgICAgICBl bmQgaWY7CisKKyAgICAgICAgLS0gSlNPTiBmb3JtYXQ6ICJNYXhpbXVtIFN0b3JhZ2UiOiAxNyAo bnVtYmVyIGluIGtCIHVuaXRzKQorICAgICAgICBpZiBsbiB+ICciTWF4aW11bSBTdG9yYWdlIjon IHRoZW4KKyAgICAgICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnIk1heGltdW0gU3Rv cmFnZSI6IFxkKycsICciTWF4aW11bSBTdG9yYWdlIjogMCcsICdnJyk7CisgICAgICAgIGVuZCBp ZjsKKworICAgICAgICAtLSBYTUwgZm9ybWF0OiA8TWF4aW11bS1TdG9yYWdlPjE3PC9NYXhpbXVt LVN0b3JhZ2U+IChudW1iZXIgaW4ga0IgdW5pdHMpCisgICAgICAgIGlmIGxuIH4gJzxNYXhpbXVt LVN0b3JhZ2U+JyB0aGVuCisgICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJzxN YXhpbXVtLVN0b3JhZ2U+XGQrPC9NYXhpbXVtLVN0b3JhZ2U+JywgJzxNYXhpbXVtLVN0b3JhZ2U+ MDwvTWF4aW11bS1TdG9yYWdlPicsICdnJyk7CisgICAgICAgIGVuZCBpZjsKKworICAgICAgICAt LSBTb3J0IE1ldGhvZCBtZW1vcnkgaXMgcGxhdGZvcm0tZGVwZW5kZW50ICgzMi1iaXQgdnMgNjQt Yml0KQorICAgICAgICBpZiBsbiB+ICdTb3J0IE1ldGhvZDouKk1lbW9yeTonIHRoZW4KKyAgICAg ICAgICAgIGxuIDo9IHJlZ2V4cF9yZXBsYWNlKGxuLCAnTWVtb3J5OiBcZCtrQicsICdNZW1vcnk6 IE5rQicpOworICAgICAgICBlbmQgaWY7CisKKyAgICAgICAgcmV0dXJuIG5leHQgbG47CisgICAg ZW5kIGxvb3A7CitlbmQ7CiskJDsKKy0tIFNldHVwOiBDcmVhdGUgdGVzdCB0YWJsZXMKK0NSRUFU RSBUQUJMRSBycHJfbmZhX3Rlc3QgKAorICAgIGlkIHNlcmlhbCwKKyAgICB2IGludCwKKyAgICBj YXQgY2hhcigxKQorKTsKKy0tIEluc2VydCB0ZXN0IGRhdGE6IDEwMCByb3dzIHdpdGggcHJlZGlj dGFibGUgcGF0dGVybgorSU5TRVJUIElOVE8gcnByX25mYV90ZXN0ICh2LCBjYXQpCitTRUxFQ1Qg aSwKKyAgICAgICBDQVNFCisgICAgICAgICAgIFdIRU4gaSAlIDUgPSAxIFRIRU4gJ0EnCisgICAg ICAgICAgIFdIRU4gaSAlIDUgPSAyIFRIRU4gJ0InCisgICAgICAgICAgIFdIRU4gaSAlIDUgPSAz IFRIRU4gJ0MnCisgICAgICAgICAgIFdIRU4gaSAlIDUgPSA0IFRIRU4gJ0QnCisgICAgICAgICAg IEVMU0UgJ0UnCisgICAgICAgRU5ECitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGk7Cist LSBBZGRpdGlvbmFsIHRlc3QgdGFibGUgd2l0aCBtb3JlIGNvbXBsZXggcGF0dGVybnMKK0NSRUFU RSBUQUJMRSBycHJfbmZhX2NvbXBsZXggKAorICAgIGlkIHNlcmlhbCwKKyAgICBwcmljZSBpbnQs CisgICAgdHJlbmQgY2hhcigxKSAgLS0gVT11cCwgRD1kb3duLCBTPXN0YWJsZQorKTsKK0lOU0VS VCBJTlRPIHJwcl9uZmFfY29tcGxleCAocHJpY2UsIHRyZW5kKQorVkFMVUVTCisgICAgKDEwMCwg J1MnKSwgKDEwNSwgJ1UnKSwgKDExMCwgJ1UnKSwgKDEwOCwgJ0QnKSwgKDExMiwgJ1UnKSwKKyAg ICAoMTE1LCAnVScpLCAoMTEzLCAnRCcpLCAoMTExLCAnRCcpLCAoMTA5LCAnRCcpLCAoMTEwLCAn VScpLAorICAgICgxMjAsICdVJyksICgxMjUsICdVJyksICgxMzAsICdVJyksICgxMjgsICdEJyks ICgxMjYsICdEJyksCisgICAgKDEyNCwgJ0QnKSwgKDEyMiwgJ0QnKSwgKDEyMCwgJ0QnKSwgKDEx OCwgJ0QnKSwgKDExOSwgJ1UnKSwKKyAgICAoMTIxLCAnVScpLCAoMTIzLCAnVScpLCAoMTI1LCAn VScpLCAoMTI3LCAnVScpLCAoMTI5LCAnVScpLAorICAgICgxMzEsICdVJyksICgxMzMsICdVJyks ICgxMzAsICdEJyksICgxMjcsICdEJyksICgxMjQsICdEJyk7CistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJhc2ljIE5G QSBTdGF0aXN0aWNzIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBwYXR0ZXJuIC0gc2hvdWxkIHNo b3cgYmFzaWMgc3RhdGlzdGljcworQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX3NpbXBsZSBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAg REVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJworKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX3Np bXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBs aW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIpIAorKDEgcm93 KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMg Y2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycKKyknKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAyIHBlYWssIDEwMSB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDYwIHBydW5l ZAorICAgTkZBOiAyMCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZB OiAwIGFic29yYmVkLCAyMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBv biBycHJfbmZhX3Rlc3QgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisK Ky0tIFBhdHRlcm4gd2l0aCBubyBtYXRjaGVzIC0gMCBtYXRjaGVkCitDUkVBVEUgVklFVyBycHJf ZXZfYmFzaWNfbm9tYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZh X3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChYIFkgWikKKyAgICBERUZJTkUgWCBBUyBjYXQgPSAnWCcsIFkgQVMgY2F0ID0g J1knLCBaIEFTIGNhdCA9ICdaJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX25vbWF0Y2gnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKHggeSB6KSAKKygxIHJvdykKKworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoWCBZIFopCisgICAgREVGSU5FIFggQVMgY2F0ID0gJydY JycsIFkgQVMgY2F0ID0gJydZJycsIFogQVMgY2F0ID0gJydaJycKKyk7Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogeCB5IHoKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAxIHBl YWssIDEwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDEgdG90 YWwsIDEwMCBwcnVuZWQKKyAgIE5GQTogMCBtYXRjaGVkLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfbmZhX3Rlc3QgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkg cm93cykKKworLS0gUGF0dGVybiBtYXRjaGluZyBldmVyeSByb3cgLSBoaWdoIG1hdGNoIGNvdW50 CitDUkVBVEUgVklFVyBycHJfZXZfYmFzaWNfYWxscm93cyBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChSKQorICAgIERFRklORSBSIEFTIFRSVUUKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9iYXNpY19hbGxyb3dzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgbGluZSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo cikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFIpCisgICAgREVG SU5FIFIgQVMgVFJVRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiByCisg ICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDIgcGVhaywgMTAxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxMDAgbWF0 Y2hlZCAobGVuIDEvMS8xLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBTZXEgU2NhbiBvbiBycHJf bmZhX3Rlc3QgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0gUmVn cmVzc2lvbiB0ZXN0OiBTcGFjZSBiZWZvcmUgcGFyZW50aGVzaXMgaW4gcGF0dGVybiBkZXBhcnNl CistLSBWZXJpZmllcyB0aGF0ICJBIChCIHwgQykiIGNvcnJlY3RseSBvdXRwdXRzIGFzICJhIChi IHwgYykiIHdpdGggc3BhY2UKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19kZXBhcnNlX3NwYWNl IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgfCBDKSkKKyAgICBERUZJTkUg QSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2Jhc2ljX2RlcGFyc2Vfc3BhY2UnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoYSAoYiB8IGMpKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiB8 IEMpKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAl IDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSAoYiB8 IGMpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAzNSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAyMSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTogNyBt YXRjaGVkIChsZW4gMi8yLzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA3 IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUmVn cmVzc2lvbiB0ZXN0OiBTZXF1ZW50aWFsIGFsdGVybmF0aW9ucyBhdCBzYW1lIGRlcHRoCistLSBW ZXJpZmllcyB0aGF0ICIoKEIgfCBDKSAoRCB8IEUpKSIgY29ycmVjdGx5IG91dHB1dHMgYXMgIihi IHwgYykgKGQgfCBlKSIKKy0tIFByZXZpb3VzbHkgZmFpbGVkIGR1ZSB0byBtaXNzaW5nIHBhcmVu dGhlc2VzIG9uIEFMVCBkZXB0aCBkZWNyZWFzZQorQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX2Rl cGFyc2Vfc2VxYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKChCIHwgQykg KEQgfCBFKSkqKQorICAgIERFRklORSBBIEFTIHYgJSA1ID0gMSwgQiBBUyB2ICUgNSA9IDIsIEMg QVMgdiAlIDUgPSAzLCBEIEFTIHYgJSA1ID0gNCwgRSBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9i YXNpY19kZXBhcnNlX3NlcWFsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSAoKGIgfCBjKSAoZCB8IGUpKSop IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIChEIHwgRSkpKikKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFTIHYgJSA1ID0gMywgRCBBUyB2 ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSAoKGIgfCBjKSAoZCB8IGUpKSoKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiA0IHBlYWssIDYxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDMx IHRvdGFsLCAyNCBwcnVuZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDAgbWlz bWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVh bCByb3dzPTMwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBSZWdyZXNzaW9uIHRlc3Q6IFF1 b3RlZCBpZGVudGlmaWVycyBpbiBFWFBMQUlOIHBhdHRlcm4gZGVwYXJzZQorLS0gTWl4ZWQgY2Fz ZSBuYW1lcyBtdXN0IGJlIHF1b3RlZCB0byBwcmVzZXJ2ZSByb3VuZC10cmlwIHNhZmV0eQorU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKCJTdGFydCIgIlVwIispCisgICAgREVGSU5FICJTdGFydCIgQVMg VFJVRSwgIlVwIiBBUyB2ID4gUFJFVih2KQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg IHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogIlN0YXJ0IiAiVXAiKworICAgTmF2 IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzCisoNSByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMgKHBlYWss IHRvdGFsLCBtZXJnZWQpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBxdWFudGlmaWVyIHBhdHRlcm4gLSBB KyB3aXRoIHNob3J0IG1hdGNoZXMgKG5vIG1lcmdpbmcpCitDUkVBVEUgVklFVyBycHJfZXZfc3Rh dGVfc2ltcGxlX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgJSAyID0g MQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X3N0YXRlX3NpbXBsZV9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgIGxpbmUgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoYSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEKKyk7Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01 MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBO RkEgU3RhdGVzOiAzIHBlYWssIDc2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAz IHBlYWssIDUxIHRvdGFsLCAyNSBwcnVuZWQKKyAgIE5GQTogMjUgbWF0Y2hlZCAobGVuIDEvMS8x LjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0gQWx0ZXJuYXRp b24gcGF0dGVybiAtIG11bHRpcGxlIHN0YXRlIGJyYW5jaGVzCitDUkVBVEUgVklFVyBycHJfZXZf c3RhdGVfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIHwgQiB8IEMpIChEIHwgRSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0g J0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCisgICAgICAgIEQgQVMgY2F0ID0g J0QnLCBFIEFTIGNhdCA9ICdFJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChh IHwgYiB8IGMpIChkIHwgZSkpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIgfCBDKSAoRCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9 ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnLAorICAgICAgICBEIEFT IGNhdCA9ICcnRCcnLCBFIEFTIGNhdCA9ICcnRScnCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IChhIHwgYiB8IGMpIChkIHwgZSkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiA2IHBlYWssIDUyNCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAx MDEgdG90YWwsIDIwIHBydW5lZAorICAgTkZBOiAyMCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDQw IG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBycHJfbmZhX3Rlc3QgKGFjdHVhbCBy b3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIENvbXBsZXggcGF0dGVybiB3aXRo IGhpZ2ggc3RhdGUgY291bnQKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9jb21wbGV4IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKiBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMyA9IDEsCisg ICAgICAgIEIgQVMgdiAlIDMgPSAyLAorICAgICAgICBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X3N0YXRlX2NvbXBsZXgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKGErIGIqIGMrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIqIEMrKQorICAgIERFRklORQorICAgICAgICBBIEFT IHYgJSAzID0gMSwKKyAgICAgICAgQiBBUyB2ICUgMyA9IDIsCisgICAgICAgIEMgQVMgdiAlIDMg PSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIq IGMrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCAyMzUgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCAzNCBwcnVuZWQKKyAgIE5GQTog MzMgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJl ZCwgMzMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gR3JvdXBlZCBwYXR0ZXJuIHdpdGggcXVhbnRpZmllciAtIHN0YXRlIGNvdW50IHdpdGggZ3Jv dXBpbmcKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9ncm91cF9xdWFudCBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X3N0YXRlX2dyb3VwX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChhIGIpKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEs IEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGEnIGInKSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA5MSB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMCBwcnVuZWQKKyAg IE5GQTogMSBtYXRjaGVkIChsZW4gNjAvNjAvNjAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAy OSBhYnNvcmJlZCAobGVuIDIvMi8yLjApLCAzMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBs b29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFN0YXRlIGV4cGxvc2lvbiBwYXR0ZXJuIC0gbWFueSBh bHRlcm5hdGlvbnMKKy0tIFBhdHRlcm4gKEF8QikoQXxCKShBfEIpKEF8QikgY2FuIGNyZWF0ZSBt YW55IHBhcmFsbGVsIHN0YXRlcworQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2V4cGxvc2lvbiBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwg QikgKEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUg MiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9leHBsb3Npb24nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8 IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIpKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAg ICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgfCBiKXs4fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDE3 IHBlYWssIDk5NSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogOCBwZWFrLCAxMDEg dG90YWwsIDEgcHJ1bmVkCisgICBORkE6IDEyIG1hdGNoZWQgKGxlbiA4LzgvOC4wKSwgMyBtaXNt YXRjaGVkIChsZW4gMi80LzMuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgODQgc2tpcHBlZCAobGVu IDEvNy80LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0 dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQ29uc2VjdXRpdmUgQUxU IG1lcmdlIGZvbGxvd2VkIGJ5IGRpZmZlcmVudCBBTFQKKy0tICgoQSB8IEIpIChBIHwgQikgKEMg fCBEKSkgLT4gKEF8Qil7Mn0gKEN8RCkKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfbWVy Z2VfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0 ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X3N0YXRlX2FsdF9tZXJnZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KChhIHwgYikgKGEgfCBiKSAoYyB8IGQpKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChDIHwgRCkpCisg ICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIs IEQgQVMgdiAlIDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGEgfCBiKXsyfSAoYyB8IGQpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNyBwZWFrLCAx ODEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90YWwsIDEy IHBydW5lZAorICAgTkZBOiA5IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChs ZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMTggc2tpcHBlZCAobGVuIDEvMi8xLjUp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBDb25zZWN1dGl2ZSBBTFQgbWVyZ2UgZm9s bG93ZWQgYnkgbm9uLUFMVCBlbGVtZW50CistLSAoKEEgfCBCKSAoQSB8IEIpIEMpIC0+IChBfEIp ezJ9IEMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfbWVyZ2Vfbm9uYWx0IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIHwgQikgKEEgfCBCKSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2 ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X21lcmdlX25vbmFs dCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAg ICAgbGluZSAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoKGEgfCBiKSAoYSB8IGIpIGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTQwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYil7Mn0gYwor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMTc3IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDQxIHRvdGFsLCAyIHBydW5lZAorICAgTkZBOiAxMiBtYXRj aGVkIChsZW4gMy8zLzMuMCksIDIgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAg YWJzb3JiZWQsIDI0IHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0gQUxUIHByZWZpeC9zdWZmaXggYWJzb3JiZWQgaW50byBHUk9VUDogKEF8QikgKEF8 QikrIChBfEIpIC0+IChBfEIpezMsfQorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9hYnNv cmJfZ3JvdXAgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpKyAoQSB8IEIpKQorICAgIERFRklO RSBBIEFTIHYgJSAyID0gMCwgQiBBUyB2ICUgMiA9IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfYWJz b3JiX2dyb3VwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSsgKGEgfCBi KSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgKEEgfCBCKSsgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9 IDAsIEIgQVMgdiAlIDIgPSAxCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogKGEgfCBiKXszLH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDI0MyB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gNDAvNDAvNDAuMCksIDAgbWlzbWF0Y2hlZAorICAg TkZBOiAwIGFic29yYmVkLCAzOSBza2lwcGVkIChsZW4gMS8yLzEuMCkKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQor KDEwIHJvd3MpCisKKy0tIEhpZ2ggc3RhdGUgY291bnQgLSBhbHRlcm5hdGlvbiB3aXRoIHBsdXMg cXVhbnRpZmllcgorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9wbHVzIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSB8IEIgfCBDKSsgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQg PSAyLCBDIEFTIHYgJSA0ID0gMywgRCBBUyB2ICUgNCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRf cGx1cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg ICAgIGxpbmUgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoKGEgfCBiIHwgYykrIGQpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykrIEQpCisgICAgREVGSU5F IEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMsIEQgQVMgdiAl IDQgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEg fCBiIHwgYykrIGQKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAxNiBwZWFrLCAxMDA0IHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQK KyAgIE5GQTogMjUgbWF0Y2hlZCAobGVuIDQvNC80LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTog MCBhYnNvcmJlZCwgNzUgc2tpcHBlZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAg cm93cykKKworLS0gRWFybHkgdGVybWluYXRpb246IGZpcnN0IEFMVCBicmFuY2ggKEEpIHJlYWNo ZXMgRklOIGltbWVkaWF0ZWx5LAorLS0gcHJ1bmluZyBzZWNvbmQgYnJhbmNoIChBIEIrKSBiZWZv cmUgaXQgY2FuIGFjY3VtdWxhdGUgQiByZXBldGl0aW9ucy4KK0NSRUFURSBWSUVXIHJwcl9ldl9z dGF0ZV9hbHRfcHJ1bmUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQSBCKSspCisgICAgREVGSU5FIEEgQVMg diA9IDEsIEIgQVMgdiA+IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfcHJ1bmUnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGEgYikrKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KChBIHwgQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA+IDEKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEw MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGEgYikrCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5r QgorICAgTkZBIFN0YXRlczogNiBwZWFrLCAzMDYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA5OSBwcnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChs ZW4gMS8xLzEuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0g TmVzdGVkIHF1YW50aWZpZXJzIGNhdXNpbmcgc3RhdGUgZ3Jvd3RoCitDUkVBVEUgVklFVyBycHJf ZXZfc3RhdGVfbmVzdGVkX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIHwgQikrKSspCisgICAgREVG SU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX25lc3Rl ZF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAoKChhIHwgYikrKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIpKykrKQorICAgIERFRklORSBBIEFTIHYg JSAzID0gMSwgQiBBUyB2ICUgMyA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwMC4wMCBsb29wcz0xKQorICAgV2lu ZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0 b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVh aywgNTAwNCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDAxIHRv dGFsLCAzMzMgcHJ1bmVkCisgICBORkE6IDMzNCBtYXRjaGVkIChsZW4gMS8yLzIuMCksIDAgbWlz bWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAzMzMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAw MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIChBezIsfSkqIG11c3QgTk9UIGZsYXR0ZW4g dG8gYSogKEgtMSk6IGNvdW50cyB7MH0gVU5JT04gWzIsIElORikgbGVhdmUgMQorLS0gdW5yZWFj aGFibGUuICBUaGUgcGxhbm5lciBrZWVwcyBpdCBhcyAoYXsyLH0pKiwgbm90IGEqLgorQ1JFQVRF IFZJRVcgcnByX2V2X25lc3RlZF9xdWFudF9ub19mbGF0dGVuIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEF7Mix9KSop CisgICAgREVGSU5FIEEgQVMgdiAlIDMgPD4gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25lc3RlZF9xdWFudF9ub19m bGF0dGVuJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg ICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgo YXsyLH0pKikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2KSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEF7Mix9KSopCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPD4gMAorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02LjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezIsfSIpKgorICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAg IE5GQSBTdGF0ZXM6IDUgcGVhaywgMTggdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6 IDMgcGVhaywgNyB0b3RhbCwgMiBwcnVuZWQKKyAgIE5GQTogMiBtYXRjaGVkIChsZW4gMi8yLzIu MCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDAgc2tp cHBlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCBy b3dzPTYuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbnRleHQgU3RhdGlz dGljcyBUZXN0cyAocGVhaywgdG90YWwsIHBydW5lZCArIGFic29yYmVkL3NraXBwZWQpCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIENvbnRleHQgYWJzb3JwdGlvbiB3aXRoIHVuYm91bmRlZCBxdWFudGlmaWVyIGF0IHN0 YXJ0CitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl91bmJvdW5kZWQgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2N0eF9hYnNvcmJfdW5ib3VuZGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh KyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOTEgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEw IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDMwIGFic29yYmVk IChsZW4gMS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCiso MTAgcm93cykKKworLS0gTm8gYWJzb3JwdGlvbiAtIGJvdW5kZWQgcXVhbnRpZmllcgorQ1JFQVRF IFZJRVcgcnByX2V2X2N0eF9ub19hYnNvcmIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVG SU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfbm9fYWJz b3JiJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAg bGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhezIs NH0gYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEF7Miw0fSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAl IDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyLDR9 IGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDEwMSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogNSBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAg bWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwg NDAgc2tpcHBlZCAobGVuIDEvNC8yLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBD b250ZXh0cyBza2lwcGVkIGJ5IFNLSVAgUEFTVCBMQVNUIFJPVworQ1JFQVRFIFZJRVcgcnByX2V2 X2N0eF9za2lwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAx LCBCIEFTIHYgJSAxMCA9IDIsIEMgQVMgdiAlIDEwID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9za2lwJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIgYykgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAxMCA9IDIsIEMgQVMgdiAl IDEwID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEg YiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA4MCBwcnVuZWQKKyAgIE5GQTog MTAgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJl ZCwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gSGlnaCBjb250ZXh0IGFic29ycHRpb24gLSB1bmJvdW5kZWQgZ3JvdXAKK0NSRUFURSBWSUVX IHJwcl9ldl9jdHhfYWJzb3JiX2dyb3VwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsgQykKKyAgICBERUZJ TkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2N0eF9hYnNvcmJfZ3JvdXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKChhIGIpKyBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHYg JSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKSsiIGMKKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBO RkEgU3RhdGVzOiAzIHBlYWssIDEzNCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog MyBwZWFrLCAxMDEgdG90YWwsIDM0IHBydW5lZAorICAgTkZBOiAzMyBtYXRjaGVkIChsZW4gMy8z LzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAzMyBza2lwcGVkIChsZW4g MS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBGaXhlZC1sZW5ndGggZ3Jv dXAgYWJzb3JwdGlvbjogKEEgQiBCKSsgQworLS0gQiBCIG1lcmdlZCB0byBCezJ9OyBhYnNvcmJh YmxlIHdpdGggZml4ZWQtbGVuZ3RoIGNoZWNrCistLSBzdGVwX3NpemU9MyAoQSArIEIgKyBCKTsg diAlIDcgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zIHBlciBtYXRjaAorQ1JFQVRFIFZJRVcgcnBy X2V2X2N0eF9hYnNvcmJfZml4ZWR2YXIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDcwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQiBCKSsgQykKKyAgICBERUZJ TkUgQSBBUyB2ICUgNyBJTiAoMSwgNCksIEIgQVMgdiAlIDcgSU4gKDIsIDMsIDUsIDYpLCBDIEFT IHYgJSA3ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZml4ZWR2YXInKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSBiIGIpKyBjKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDcwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg QiBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNyBJTiAoMSwgNCksIEIgQVMgdiAlIDcgSU4g KDIsIDMsIDUsIDYpLCBDIEFTIHYgJSA3ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTcwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhJyBiezJ9JykrIiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog MyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCA3MSB0 b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA3LzcvNy4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDEwIGFic29yYmVkIChsZW4gMy8zLzMuMCksIDEwIHNraXBwZWQgKGxl biAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTcwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTmVzdGVkIGZpeGVkLWxl bmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoQiBDKXsyfSBEKSsgRQorLS0gc3RlcF9zaXplID0g MSArICgxKzEpKjIgKyAxID0gNjsgdiAlIDEzIGN5Y2xlIGdpdmVzIDIgaXRlcmF0aW9ucyArIEUK K0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfYWJzb3JiX25lc3RlZCBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjUpIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoQiBD KXsyfSBEKSsgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMTMgSU4gKDEsIDcpLCBCIEFTIHYgJSAx MyBJTiAoMiwgNCwgOCwgMTApLAorICAgICAgICAgICBDIEFTIHYgJSAxMyBJTiAoMywgNSwgOSwg MTEpLCBEIEFTIHYgJSAxMyBJTiAoNiwgMTIpLAorICAgICAgICAgICBFIEFTIHYgJSAxMyA9IDAK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX25lc3RlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgKGIgYyl7Mn0gZCkrIGUp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjUpIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSAoQiBDKXsyfSBEKSsgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMTMgSU4gKDEsIDcp LCBCIEFTIHYgJSAxMyBJTiAoMiwgNCwgOCwgMTApLAorICAgICAgICAgICBDIEFTIHYgJSAxMyBJ TiAoMywgNSwgOSwgMTEpLCBEIEFTIHYgJSAxMyBJTiAoNiwgMTIpLAorICAgICAgICAgICBFIEFT IHYgJSAxMyA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz02NS4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo YScgKGInIGMnKXsyfScgZCcpKyIgZQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3Jh Z2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywg NzYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjYgdG90YWwsIDUw IHBydW5lZAorICAgTkZBOiA1IG1hdGNoZWQgKGxlbiAxMy8xMy8xMy4wKSwgMCBtaXNtYXRjaGVk CisgICBORkE6IDUgYWJzb3JiZWQgKGxlbiA2LzYvNi4wKSwgNSBza2lwcGVkIChsZW4gMS8xLzEu MCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93 cz02NS4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIERvdWJseSBuZXN0ZWQgZml4ZWQtbGVu Z3RoIGdyb3VwIGFic29ycHRpb246IChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRgorLS0gc3Rl cF9zaXplID0gMSArICgoMSszKSoyKzEpKjIgKyAxID0gMjA7IHYgJSA0MSBjeWNsZSBnaXZlcyAy IGl0ZXJhdGlvbnMgKyBGCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9kZWVwIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4MikgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBICgoQiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FIEEgQVMgdiAl IDQxIElOICgxLCAyMSksCisgICAgICAgICAgIEIgQVMgdiAlIDQxIElOICgyLCA2LCAxMSwgMTUs IDIyLCAyNiwgMzEsIDM1KSwKKyAgICAgICAgICAgQyBBUyB2ICUgNDEgSU4gKDMsNCw1LCA3LDgs OSwgMTIsMTMsMTQsIDE2LDE3LDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMsMjQs MjUsIDI3LDI4LDI5LCAzMiwzMywzNCwgMzYsMzcsMzgpLAorICAgICAgICAgICBEIEFTIHYgJSA0 MSBJTiAoMTAsIDE5LCAzMCwgMzkpLAorICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAoMjAsIDQw KSwKKyAgICAgICAgICAgRiBBUyB2ICUgNDEgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9kZWVw JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAg ICAgICAgIGxpbmUgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgKChiIGMgYyBjKXsyfSBkKXsyfSBl KSsgZikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4MikgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBICgoQiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FIEEgQVMg diAlIDQxIElOICgxLCAyMSksCisgICAgICAgICAgIEIgQVMgdiAlIDQxIElOICgyLCA2LCAxMSwg MTUsIDIyLCAyNiwgMzEsIDM1KSwKKyAgICAgICAgICAgQyBBUyB2ICUgNDEgSU4gKDMsNCw1LCA3 LDgsOSwgMTIsMTMsMTQsIDE2LDE3LDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMs MjQsMjUsIDI3LDI4LDI5LCAzMiwzMywzNCwgMzYsMzcsMzgpLAorICAgICAgICAgICBEIEFTIHYg JSA0MSBJTiAoMTAsIDE5LCAzMCwgMzkpLAorICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAoMjAs IDQwKSwKKyAgICAgICAgICAgRiBBUyB2ICUgNDEgPSAwCispOycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9ODIuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGEnICgoYicgY3szfScpezJ9JyBkJyl7Mn0nIGUnKSsiIGYK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDg3IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiA0IHBlYWssIDgzIHRvdGFsLCA3NiBwcnVuZWQKKyAgIE5GQTogMiBtYXRj aGVkIChsZW4gNDEvNDEvNDEuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyIGFic29yYmVkIChs ZW4gMjAvMjAvMjAuMCksIDIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9ODIuMDAgbG9vcHM9MSkKKygx MCByb3dzKQorCistLSAzLWxldmVsIEVORCBjaGFpbiBhYnNvcnB0aW9uOiAoKEEgKEIgQyl7Mn0p ezJ9KSsKKy0tIHN0ZXBfc2l6ZSA9ICgxICsgKDErMSkqMikgKiAyID0gMTA7IHYgJSAyMSBjeWNs ZSBnaXZlcyAyIGl0ZXJhdGlvbnMKKy0tIEVORCBjaGFpbjogRU5EKEJDezJ9KSAtPiBFTkQoQS4u ezJ9KSAtPiBFTkQoKywgQUJTT1JCQUJMRSkKK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfYWJzb3Ji X2VuZGNoYWluIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA0MikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSAoQiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUgQSBB UyB2ICUgMjEgSU4gKDEsIDYsIDExLCAxNiksCisgICAgICAgICAgIEIgQVMgdiAlIDIxIElOICgy LCA0LCA3LCA5LCAxMiwgMTQsIDE3LCAxOSksCisgICAgICAgICAgIEMgQVMgdiAlIDIxIElOICgz LCA1LCA4LCAxMCwgMTMsIDE1LCAxOCwgMjApCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9lbmRjaGFp bicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAg ICAgbGluZSAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICBQQVRURVJOICgoKGEgKGIgYyl7Mn0pezJ9KSspIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDIpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgKEIgQyl7Mn0pezJ9KSsp CisgICAgREVGSU5FIEEgQVMgdiAlIDIxIElOICgxLCA2LCAxMSwgMTYpLAorICAgICAgICAgICBC IEFTIHYgJSAyMSBJTiAoMiwgNCwgNywgOSwgMTIsIDE0LCAxNywgMTkpLAorICAgICAgICAgICBD IEFTIHYgJSAyMSBJTiAoMywgNSwgOCwgMTAsIDEzLCAxNSwgMTgsIDIwKQorKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQyLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYScgKGInIGMnKXsyfScpezJ9JykrIgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNDcgdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDUgcGVhaywgNDMgdG90YWwsIDMwIHBydW5lZAorICAgTkZBOiAyIG1hdGNo ZWQgKGxlbiAyMC8yMC8yMC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDIgYWJzb3JiZWQgKGxl biAxMC8xMC8xMC4wKSwgOCBza2lwcGVkIChsZW4gMS81LzMuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00Mi4wMCBsb29wcz0xKQorKDEw IHJvd3MpCisKKy0tIE5vIGFic29ycHRpb24gd2hlbiBERUZJTkUgdXNlcyBGSVJTVCAobWF0Y2hf c3RhcnQtZGVwZW5kZW50KQorLS0gU2FtZSBwYXR0ZXJuIGFzIHJwcl9ldl9jdHhfYWJzb3JiX3Vu Ym91bmRlZCBidXQgd2l0aCBGSVJTVCBpbiBERUZJTkUuCistLSBDb21wYXJlOiBhYnNvcmJlZCBj b3VudCBzaG91bGQgYmUgMCBoZXJlIHZzID4wIGFib3ZlLgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0 eF9ub19hYnNvcmJfZmlyc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBBTkQgdiA+IEZJUlNUKHYpCispOworU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X25v X2Fic29yYl9maXJzdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEr IGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAw IEFORCB2ID4gRklSU1QodikKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiBhKyBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgTmF2IE1hcmsgTG9va2FoZWFk OiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3Rh dGVzOiA5IHBlYWssIDE1MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNSBwZWFr LCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAw IG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNDAgc2tpcHBlZCAobGVuIDEvNC8yLjUp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NTAuMDAgbG9vcHM9MSkKKygxMSByb3dzKQorCistLSBBYnNvcnB0aW9uIHByZXNlcnZlZCB3aGVu IERFRklORSB1c2VzIG9ubHkgTEFTVCB3aXRob3V0IG9mZnNldAorLS0gTEFTVCh2KSBpcyBtYXRj aF9zdGFydC1pbmRlcGVuZGVudCAoYWx3YXlzIGN1cnJlbnRwb3MpLCBzbyBhYnNvcnB0aW9uCist LSByZW1haW5zIGFjdGl2ZS4gIENvbXBhcmU6IGFic29yYmVkIGNvdW50IHNob3VsZCBiZSA+MCwg bGlrZSB0aGUKKy0tIFBSRVYtb25seSBjYXNlIGFib3ZlLgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0 eF9hYnNvcmJfbGFzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+ IDAsIEIgQVMgTEFTVCh2KSAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9sYXN0JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyBMQVNUKHYpICUgNSA9IDAKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBT dGF0ZXM6IDMgcGVhaywgOTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVh aywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwg MCBtaXNtYXRjaGVkCisgICBORkE6IDMwIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEwIHNraXBw ZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVz IHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTm8gYWJzb3Jw dGlvbiB3aXRoIGNvbXBvdW5kIFBSRVYoRklSU1QoKSkgKG1hdGNoX3N0YXJ0LWRlcGVuZGVudCkK K0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfbm9fYWJzb3JiX2NvbXBvdW5kIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAgQU5EIFBSRVYo RklSU1QodiksIDEpIElTIE5PVCBOVUxMCispOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBC IEFTIHYgJSA1ID0gMCBBTkQgUFJFVihGSVJTVCh2KSwgMSkgSVMgTk9UIE5VTEwKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyBiCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgTmF2IE1hcmsgTG9va2FoZWFkOiAtMQorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogOSBwZWFrLCAxNTEgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDUgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBO RkE6IDEwIG1hdGNoZWQgKGxlbiA0LzUvNC45KSwgMSBtaXNtYXRjaGVkIChsZW4gNS81LzUuMCkK KyAgIE5GQTogMCBhYnNvcmJlZCwgMzkgc2tpcHBlZCAobGVuIDEvNC8yLjUpCisgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9 MSkKKygxMSByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3Rz CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEZpeGVkIGxlbmd0aCBtYXRjaGVzIC0gYWxsIHNhbWUgbGVuZ3RoCitDUkVB VEUgVklFVyBycHJfZXZfbWxlbl9maXhlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg Y2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCisgICAgICAgIEQgQVMg Y2F0ID0gJ0QnLCBFIEFTIGNhdCA9ICdFJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5fZml4ZWQnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMgZCBlKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERF RklORQorICAgICAgICBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNh dCA9ICcnQycnLAorICAgICAgICBEIEFTIGNhdCA9ICcnRCcnLCBFIEFTIGNhdCA9ICcnRScnCisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjIGQgZQorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMTAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgNjAgcHJ1bmVkCisgICBORkE6IDIwIG1hdGNoZWQgKGxl biA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQg KGxlbiAxLzEvMS4wKQorICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9uZmFfdGVzdCAoYWN0dWFsIHJv d3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gVmFyaWFibGUgbGVuZ3RoIG1hdGNo ZXMgLSBtaW4vbWF4L2F2ZyBkaWZmZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX3ZhcmlhYmxl IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYg JSAxMCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX3ZhcmlhYmxlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAx MCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg IHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTkx IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBw cnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDEwLzEwLzEwLjApLCAwIG1pc21hdGNoZWQK KyAgIE5GQTogODAgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gVmVyeSBsb25nIG1hdGNoZXMKK0NS RUFURSBWSUVXIHJwcl9ldl9tbGVuX2xvbmcgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F IEEgQVMgdiA8PSAxOTUsIEIgQVMgdiA+IDE5NQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5fbG9uZycpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBE RUZJTkUgQSBBUyB2IDw9IDE5NSwgQiBBUyB2ID4gMTk1CispOycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMDAuMDAgbG9vcHM9MSkK KyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisg ICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAz IHBlYWssIDM5NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAyMDEg dG90YWwsIDQgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDE5Ni8xOTYvMTk2LjApLCAw IG1pc21hdGNoZWQKKyAgIE5GQTogMTk0IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEgc2tpcHBl ZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9MjAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gVW5pZm9ybSBt YXRjaCBsZW5ndGggd2l0aCBtaXNtYXRjaGVzIGZyb20gZ2FwIHJvd3MgKHYlMjAgPSAxMS4uMTUp CitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl93aXRoX21pc21hdGNoIEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORQorICAgICAgICBBIEFTICh2ICUgMjAgPD4gMCkgQU5EICh2ICUgMjAgPD0g MTAgT1IgdiAlIDIwID4gMTUpLAorICAgICAgICBCIEFTIHYgJSAyMCA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9t bGVuX3dpdGhfbWlzbWF0Y2gnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJO IChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgKHYgJSAyMCA8PiAw KSBBTkQgKHYgJSAyMCA8PSAxMCBPUiB2ICUgMjAgPiAxNSksCisgICAgICAgIEIgQVMgdiAlIDIw ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxNzEgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCAyNSBwcnVuZWQKKyAgIE5GQTogNSBt YXRjaGVkIChsZW4gNS81LzUuMCksIDUgbWlzbWF0Y2hlZCAobGVuIDExLzExLzExLjApCisgICBO RkE6IDYwIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDUgc2tpcHBlZCAobGVuIDEvMS8xLjApCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNaXNtYXRjaCBMZW5ndGggU3Rh dGlzdGljcyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBQYXR0ZXJuIHdpdGggY29tcGxldGUgbWF0Y2ggZXZl cnkgY3ljbGU6IDAgbWlzbWF0Y2hlZAorLS0gQSgxLDIsMykgQig0LDUpIEMoNikgcmVwZWF0cyBw ZXJmZWN0bHk7IFggcm93cyBhcmUgcHJ1bmVkLCBub3QgbWlzbWF0Y2hlZAorQ1JFQVRFIFZJRVcg cnByX2V2X21sZW5fbm9fbWlzbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g KAorICAgIFNFTEVDVCB2LAorICAgICAgICAgICBDQVNFIFdIRU4gdiAlIDEwIElOICgxLDIsMykg VEhFTiAnQScKKyAgICAgICAgICAgICAgICBXSEVOIHYgJSAxMCBJTiAoNCw1KSBUSEVOICdCJwor ICAgICAgICAgICAgICAgIFdIRU4gdiAlIDEwID0gNiBUSEVOICdDJworICAgICAgICAgICAgICAg IEVMU0UgJ1gnIEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFT IGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX25vX21pc21hdGNoJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgbGluZSAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYisgYykgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgdiwKKyAgICAgICAgICAgQ0FTRSBX SEVOIHYgJSAxMCBJTiAoMSwyLDMpIFRIRU4gJydBJycKKyAgICAgICAgICAgICAgICBXSEVOIHYg JSAxMCBJTiAoNCw1KSBUSEVOICcnQicnCisgICAgICAgICAgICAgICAgV0hFTiB2ICUgMTAgPSA2 IFRIRU4gJydDJycKKyAgICAgICAgICAgICAgICBFTFNFICcnWCcnIEVORCBBUyBjYXQKKyAgICBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKKykgdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisg ICAgREVGSU5FIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0g JydDJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIg YisgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTUxIHRvdGFsLCAwIG1lcmdl ZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgNjAgcHJ1bmVkCisgICBORkE6 IDEwIG1hdGNoZWQgKGxlbiA2LzYvNi4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDIwIGFic29y YmVkIChsZW4gMS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0x KQorKDEwIHJvd3MpCisKKy0tIExvbmcgcGFydGlhbCBtYXRjaGVzIHRoYXQgZmFpbAorQ1JFQVRF IFZJRVcgcnByX2V2X21sZW5fbG9uZ19wYXJ0aWFsIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NICgKKyAgICBTRUxFQ1QgaSBBUyB2LAorICAgICAgICAgICBDQVNFCisgICAgICAgICAg ICAgICBXSEVOIGkgPD0gMjAgVEhFTiAnQScKKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSAyNSBU SEVOICdCJworICAgICAgICAgICAgICAgV0hFTiBpID0gMjYgVEhFTiAnWCcgIC0tIGJyZWFrcyB0 aGUgcGF0dGVybgorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDUwIFRIRU4gJ0EnCisgICAgICAg ICAgICAgICBXSEVOIGkgPD0gNTUgVEhFTiAnQicKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDU2 IFRIRU4gJ0MnICAtLSBjb21wbGV0ZXMgcGF0dGVybgorICAgICAgICAgICAgICAgRUxTRSAnWScK KyAgICAgICAgICAgRU5EIEFTIGNhdAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBp CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKyBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQg PSAnQicsIEMgQVMgY2F0ID0gJ0MnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxlbl9sb25nX3BhcnRpYWwnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICBsaW5lICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKyBjKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBpIEFTIHYsCisgICAgICAgICAgIENBU0UK KyAgICAgICAgICAgICAgIFdIRU4gaSA8PSAyMCBUSEVOICcnQScnCisgICAgICAgICAgICAgICBX SEVOIGkgPD0gMjUgVEhFTiAnJ0InJworICAgICAgICAgICAgICAgV0hFTiBpID0gMjYgVEhFTiAn J1gnJyAgLS0gYnJlYWtzIHRoZSBwYXR0ZXJuCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gNTAg VEhFTiAnJ0EnJworICAgICAgICAgICAgICAgV0hFTiBpIDw9IDU1IFRIRU4gJydCJycKKyAgICAg ICAgICAgICAgIFdIRU4gaSA9IDU2IFRIRU4gJydDJycgIC0tIGNvbXBsZXRlcyBwYXR0ZXJuCisg ICAgICAgICAgICAgICBFTFNFICcnWScnCisgICAgICAgICAgIEVORCBBUyBjYXQKKyAgICBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA2MCkgaQorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUg QSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJworKTsn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dz PTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiKyBjCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5r QgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxMTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDE1IHBydW5lZAorICAgTkZBOiAxIG1hdGNoZWQgKGxl biAzMC8zMC8zMC4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMjYvMjYvMjYuMCkKKyAgIE5GQTogNDIg YWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBpIChhY3R1YWwgcm93cz02MC4wMCBsb29w cz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTiBGb3JtYXQgVGVzdHMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gSlNPTiBmb3JtYXQgb3V0cHV0IHdpdGggYWxsIHN0YXRpc3RpY3MKK0NSRUFURSBWSUVXIHJw cl9ldl9qc29uX2Jhc2ljIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrKQorICAgIERFRklORSBBIEFTIHYgJSAz ID0gMSwgQiBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9qc29uX2Jhc2ljJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKykgCisoMSByb3cpCisKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCispJyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICJQbGFuIjogeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5vZGUg VHlwZSI6ICJXaW5kb3dBZ2ciLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgIlBhcmFsbGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxz ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg IkFjdHVhbCBSb3dzIjogNTAuMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgIkFjdHVhbCBMb29wcyI6IDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIkRpc2FibGVkIjogZmFs c2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgIldpbmRvdyI6ICJ3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpIiwrCisgICAgICAgIlBhdHRlcm4iOiAiYStcIiBiKyIsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5hdiBNYXJr IExvb2tiYWNrIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgIlN0b3JhZ2UiOiAiTWVtb3J5IiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk1heGltdW0gU3RvcmFnZSI6IDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5G QSBTdGF0ZXMgUGVhayI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMgVG90YWwiOiA4NSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMgTWVyZ2Vk IjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgIk5GQSBDb250ZXh0cyBQZWFrIjogMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBUb3RhbCI6IDUxLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0 cyBBYnNvcmJlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgIk5GQSBDb250ZXh0cyBTa2lwcGVkIjogMTcsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBQcnVuZWQiOiAxNiwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBN YXRjaGVkIjogMTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgIk5GQSBNaXNtYXRjaGVkIjogMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5ndGggTWlu IjogMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg Ik5GQSBNYXRjaCBMZW5ndGggTWF4IjogMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5ndGggQXZnIjogMi4wLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExl bmd0aCBNaW4iOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgIk5GQSBTa2lwcGVkIExlbmd0aCBNYXgiOiAxLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExlbmd0aCBBdmciOiAxLjAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIlBsYW5zIjog WyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJOb2RlIFR5cGUiOiAiRnVuY3Rp b24gU2NhbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICJQYXJlbnQgUmVsYXRpb25zaGlwIjogIk91dGVyIiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJBc3luYyBDYXBhYmxl IjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgICJGdW5jdGlvbiBOYW1lIjogImdlbmVyYXRlX3NlcmllcyIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICAgICJBbGlhcyI6ICJzIiwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJBY3R1YWwg Um93cyI6IDUwLjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJEaXNhYmxlZCI6IGZhbHNlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJU cmlnZ2VycyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICB9ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg XQorKDEgcm93KQorCistLSBKU09OIGZvcm1hdCB3aXRoIG1hdGNoIGxlbmd0aCBzdGF0aXN0aWNz CitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9tYXRjaGxlbiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfanNv bl9tYXRjaGxlbicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAg ICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JN QVQgSlNPTikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIg QVMgdiAlIDEwID0gMAorKScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiUGxh biI6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJOb2RlIFR5cGUiOiAiV2luZG93QWdnIiwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJQYXJhbGxlbCBBd2FyZSI6 IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJBc3luYyBDYXBhYmxlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJBY3R1YWwgUm93cyI6IDEwMC4wMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJBY3R1YWwgTG9v cHMiOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJEaXNhYmxlZCI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJXaW5kb3ciOiAidyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSIsKworICAgICAgICJQYXR0 ZXJuIjogImErXCIgYiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJOYXYgTWFyayBMb29rYmFjayI6IDAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJTdG9yYWdlIjogIk1lbW9yeSIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJNYXhpbXVtIFN0b3JhZ2UiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFBlYWsiOiAzLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFRv dGFsIjogMTkxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJORkEgU3RhdGVzIE1lcmdlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgUGVhayI6IDIsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29u dGV4dHMgVG90YWwiOiAxMDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJORkEgQ29udGV4dHMgQWJzb3JiZWQiOiA4MCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgU2tpcHBlZCI6 IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO RkEgQ29udGV4dHMgUHJ1bmVkIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2hlZCI6IDEwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWlzbWF0Y2hlZCI6 IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1pbiI6IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1heCI6IDEwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2gg TGVuZ3RoIEF2ZyI6IDEwLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJORkEgQWJzb3JiZWQgTGVuZ3RoIE1pbiI6IDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQWJzb3JiZWQgTGVuZ3RoIE1heCI6 IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEg QWJzb3JiZWQgTGVuZ3RoIEF2ZyI6IDEuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggTWluIjogMSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGgg TWF4IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJORkEgU2tpcHBlZCBMZW5ndGggQXZnIjogMS4wLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJQbGFucyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAiTm9kZSBUeXBlIjogIkZ1bmN0aW9uIFNjYW4iLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJP dXRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiUGFy YWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiRnVuY3Rpb24gTmFtZSI6ICJn ZW5lcmF0ZV9zZXJpZXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAiQWxpYXMiOiAicyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIFJvd3MiOiAxMDAuMDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIExvb3Bz IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIF0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAiVHJpZ2dlcnMiOiBbICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBdICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIF0KKygxIHJvdykKKworLS0gSlNPTiBmb3Jt YXQgd2l0aCBtaXNtYXRjaCBzdGF0aXN0aWNzCistLSBQYXR0ZXJuIEEgQiBDIGV4cGVjdHMgMSwy LDMgYnV0IGdldHMgMSwyLDQgdHdpY2UgY2F1c2luZyBtaXNtYXRjaGVzCitDUkVBVEUgVklFVyBy cHJfZXZfanNvbl9taXNtYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoVkFM VUVTICgxKSwoMiksKDQpLCAoMSksKDIpLCg0KSwgKDEpLCgyKSwoMykpIEFTIHQodikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB IEIgQykKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBBUyB2ID0gMworKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2pzb25fbWlzbWF0Y2gnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKGEgYiBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRiwgRk9STUFUIEpTT04pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIChWQUxV RVMgKDEpLCgyKSwoNCksICgxKSwoMiksKDQpLCAoMSksKDIpLCgzKSkgQVMgdCh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg QiBDKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAzCispJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJQbGFuIjogeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg Ik5vZGUgVHlwZSI6ICJXaW5kb3dBZ2ciLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgIlBhcmFsbGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIkFzeW5jIENhcGFibGUi OiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgIkFjdHVhbCBSb3dzIjogOS4wMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgIkFjdHVhbCBMb29wcyI6IDEsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIkRpc2FibGVk IjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgIldpbmRvdyI6ICJ3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpIiwrCisgICAgICAgIlBhdHRlcm4iOiAiYSBiIGMiLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5h diBNYXJrIExvb2tiYWNrIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgIlN0b3JhZ2UiOiAiTWVtb3J5IiwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk1heGltdW0gU3RvcmFnZSI6 IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgIk5GQSBTdGF0ZXMgUGVhayI6IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMgVG90YWwiOiAxMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMg TWVyZ2VkIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgIk5GQSBDb250ZXh0cyBQZWFrIjogMywgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBUb3RhbCI6IDEwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBD b250ZXh0cyBBYnNvcmJlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBTa2lwcGVkIjogMSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBQcnVuZWQi OiA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg Ik5GQSBNYXRjaGVkIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgIk5GQSBNaXNtYXRjaGVkIjogMiwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5n dGggTWluIjogMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgIk5GQSBNYXRjaCBMZW5ndGggTWF4IjogMywgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5ndGggQXZnIjogMy4wLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNaXNt YXRjaCBMZW5ndGggTWluIjogMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgIk5GQSBNaXNtYXRjaCBMZW5ndGggTWF4IjogMywgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNaXNtYXRjaCBMZW5ndGggQXZn IjogMy4wLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5G QSBTa2lwcGVkIExlbmd0aCBNaW4iOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExlbmd0aCBNYXgiOiAxLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExlbmd0 aCBBdmciOiAxLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgIlBsYW5zIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJOb2RlIFR5 cGUiOiAiVmFsdWVzIFNjYW4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgICJQYXJlbnQgUmVsYXRpb25zaGlwIjogIk91dGVyIiwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNl LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJB c3luYyBDYXBhYmxlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgICAgICJBbGlhcyI6ICIqVkFMVUVTKiIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJBY3R1YWwgUm93cyI6IDku MDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICJEaXNhYmxlZCI6IGZhbHNlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJUcmlnZ2VycyI6 IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgXQorKDEgcm93 KQorCistLSBKU09OIGZvcm1hdCB3aXRoIHNraXBwZWQgY29udGV4dCBzdGF0aXN0aWNzCistLSBB bHRlcm5hdGlvbiBwYXR0ZXJuIHdpdGggU0tJUCBQQVNUIExBU1QgUk9XIGNhdXNlcyBtYW55IGNv bnRleHRzIHRvIGJlIHNraXBwZWQKK0NSRUFURSBWSUVXIHJwcl9ldl9qc29uX3NraXAgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChB IHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfanNvbl9za2lwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIp IChhIHwgYikgKGEgfCBiKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwg QikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBB IEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyknKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgIlBsYW4iOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTm9kZSBUeXBlIjogIldpbmRvd0Fn ZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi UGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiQWN0dWFsIFJvd3MiOiAx MDAuMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiV2luZG93Ijog IncgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyki LCsKKyAgICAgICAiUGF0dGVybiI6ICIoYSB8IGIpezh9IiwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTmF2IE1hcmsgTG9va2JhY2siOiAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3Rv cmFnZSI6ICJNZW1vcnkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTWF4aW11bSBTdG9yYWdlIjogMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBQZWFrIjog MTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAiTkZBIFN0YXRlcyBUb3RhbCI6IDk5NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBNZXJnZWQiOiAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRz IFBlYWsiOiA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAiTkZBIENvbnRleHRzIFRvdGFsIjogMTAxLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIEFic29yYmVkIjogMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENv bnRleHRzIFNraXBwZWQiOiA4NCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFBydW5lZCI6IDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoZWQiOiAxMiwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi TkZBIE1pc21hdGNoZWQiOiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0aCBNaW4iOiA4LCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0 aCBNYXgiOiA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiTkZBIE1hdGNoIExlbmd0aCBBdmciOiA4LjAsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBNaW4iOiAyLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21h dGNoIExlbmd0aCBNYXgiOiA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAiTkZBIE1pc21hdGNoIExlbmd0aCBBdmciOiAzLjAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1pbiI6 IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZB IFNraXBwZWQgTGVuZ3RoIE1heCI6IDcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIEF2ZyI6IDQuMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiUGxhbnMiOiBbICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgIk5vZGUgVHlwZSI6ICJGdW5jdGlvbiBTY2FuIiwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmVudCBS ZWxhdGlvbnNoaXAiOiAiT3V0ZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAgICAgIlBhcmFsbGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkZ1 bmN0aW9uIE5hbWUiOiAiZ2VuZXJhdGVfc2VyaWVzIiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgIkFsaWFzIjogInMiLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMTAw LjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAg ICAgIkFjdHVhbCBMb29wcyI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAgICAgIkRpc2FibGVkIjogZmFsc2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgIlRyaWdnZXJzIjog WyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBdCisoMSByb3cp CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gWE1MIEZvcm1hdCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBYTUwgZm9ybWF0IG91 dHB1dAorQ1JFQVRFIFZJRVcgcnByX2V2X3htbF9iYXNpYyBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3htbF9iYXNp YycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5l ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIpIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgWE1MKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKScp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgPGV4 cGxhaW4geG1sbnM9Imh0dHA6Ly93d3cucG9zdGdyZXNxbC5vcmcvMjAwOS9leHBsYWluIj4gICAg ICAgICAgICAgICAgICAgICAgKworICAgPFF1ZXJ5PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgPFBsYW4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgPE5vZGUtVHlwZT5XaW5kb3dBZ2c8L05vZGUtVHlwZT4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxQYXJhbGxlbC1B d2FyZT5mYWxzZTwvUGFyYWxsZWwtQXdhcmU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICA8QXN5bmMtQ2FwYWJsZT5mYWxzZTwvQXN5bmMtQ2FwYWJsZT4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPEFjdHVhbC1Sb3dzPjMwLjAw PC9BY3R1YWwtUm93cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgIDxBY3R1YWwtTG9vcHM+MTwvQWN0dWFsLUxvb3BzPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8RGlzYWJsZWQ+ZmFsc2U8L0Rpc2FibGVk PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg PFdpbmRvdz53IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpPC9XaW5kb3c+KworICAgICAgIDxQYXR0ZXJuPmEgYjwvUGF0dGVybj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TmF2LU1h cmstTG9va2JhY2s+MDwvTmF2LU1hcmstTG9va2JhY2s+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgPFN0b3JhZ2U+TWVtb3J5PC9TdG9yYWdlPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxNYXhpbXVtLVN0b3Jh Z2U+MDwvTWF4aW11bS1TdG9yYWdlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICA8TkZBLVN0YXRlcy1QZWFrPjI8L05GQS1TdGF0ZXMtUGVhaz4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1TdGF0ZXMtVG90YWw+MzE8 L05GQS1TdGF0ZXMtVG90YWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgIDxORkEtU3RhdGVzLU1lcmdlZD4wPC9ORkEtU3RhdGVzLU1lcmdlZD4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLUNvbnRleHRzLVBlYWs+MjwvTkZBLUNv bnRleHRzLVBlYWs+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5G QS1Db250ZXh0cy1Ub3RhbD4zMTwvTkZBLUNvbnRleHRzLVRvdGFsPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgIDxORkEtQ29udGV4dHMtQWJzb3JiZWQ+MDwvTkZBLUNvbnRl eHRzLUFic29yYmVkPiAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLUNvbnRl eHRzLVNraXBwZWQ+MTU8L05GQS1Db250ZXh0cy1Ta2lwcGVkPiAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgPE5GQS1Db250ZXh0cy1QcnVuZWQ+MDwvTkZBLUNvbnRleHRzLVBydW5l ZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtTWF0Y2hlZD4xNTwv TkZBLU1hdGNoZWQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICA8TkZBLU1pc21hdGNoZWQ+MDwvTkZBLU1pc21hdGNoZWQ+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1NYXRjaC1MZW5ndGgtTWluPjI8 L05GQS1NYXRjaC1MZW5ndGgtTWluPiAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg IDxORkEtTWF0Y2gtTGVuZ3RoLU1heD4yPC9ORkEtTWF0Y2gtTGVuZ3RoLU1heD4gICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLU1hdGNoLUxlbmd0aC1Bdmc+Mi4wPC9ORkEt TWF0Y2gtTGVuZ3RoLUF2Zz4gICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1T a2lwcGVkLUxlbmd0aC1NaW4+MTwvTkZBLVNraXBwZWQtTGVuZ3RoLU1pbj4gICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgIDxORkEtU2tpcHBlZC1MZW5ndGgtTWF4PjE8L05GQS1Ta2lwcGVk LUxlbmd0aC1NYXg+ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLVNraXBwZWQt TGVuZ3RoLUF2Zz4xLjA8L05GQS1Ta2lwcGVkLUxlbmd0aC1Bdmc+ICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgPFBsYW5zPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgPFBsYW4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgPE5vZGUtVHlwZT5GdW5jdGlvbiBTY2FuPC9Ob2RlLVR5cGU+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgIDxQYXJlbnQtUmVsYXRpb25zaGlwPk91 dGVyPC9QYXJlbnQtUmVsYXRpb25zaGlwPiAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICA8UGFyYWxsZWwtQXdhcmU+ZmFsc2U8L1BhcmFsbGVsLUF3YXJlPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgICAgPEFzeW5jLUNhcGFibGU+ZmFsc2U8L0FzeW5jLUNh cGFibGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgIDxGdW5j dGlvbi1OYW1lPmdlbmVyYXRlX3NlcmllczwvRnVuY3Rpb24tTmFtZT4gICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICA8QWxpYXM+czwvQWxpYXM+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgPEFjdHVhbC1Sb3dz PjMwLjAwPC9BY3R1YWwtUm93cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgICAgIDxBY3R1YWwtTG9vcHM+MTwvQWN0dWFsLUxvb3BzPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICA8RGlzYWJsZWQ+ZmFsc2U8L0Rp c2FibGVkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgIDwvUGxhbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgPC9QbGFucz4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICA8L1BsYW4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgPFRyaWdnZXJzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIDwvVHJpZ2dlcnM+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgPC9RdWVyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyA8L2V4cGxhaW4+CisoMSByb3cpCisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gTXVsdGlwbGUgUGFydGl0aW9ucyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdGF0aXN0aWNz IGFjcm9zcyBtdWx0aXBsZSBwYXJ0aXRpb25zCitDUkVBVEUgVklFVyBycHJfZXZfcGFydF9tdWx0 aSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNUIHAsIHYKKyAg ICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBwLAorICAgICAgICAgZ2VuZXJhdGVfc2VyaWVz KDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F IEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wYXJ0X211bHRpJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgcCwgdgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMpIHAsCisgICAgICAgICBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9X IHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBwCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFT IHYgJSA1ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz05MC4wMCBsb29wcz0x KQorICAgV2luZG93OiB3IEFTIChQQVJUSVRJT04gQlkgcC5wIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5r QgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAxNjUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgOTMgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDE4IG1hdGNoZWQgKGxl biA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDU0IGFic29yYmVkIChsZW4gMS8xLzEu MCksIDE4IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIFNvcnQgKGFjdHVhbCByb3dzPTkw LjAwIGxvb3BzPTEpCisgICAgICAgICBTb3J0IEtleTogcC5wCisgICAgICAgICBTb3J0IE1ldGhv ZDogcXVpY2tzb3J0ICBNZW1vcnk6IE5rQgorICAgICAgICAgLT4gIE5lc3RlZCBMb29wIChhY3R1 YWwgcm93cz05MC4wMCBsb29wcz0xKQorICAgICAgICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHAgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyAgICAgICAg ICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyB2IChhY3R1YWwgcm93 cz0zMC4wMCBsb29wcz0zKQorKDE1IHJvd3MpCisKKy0tIERpZmZlcmVudCBwYXR0ZXJuIGJlaGF2 aW9yIHBlciBwYXJ0aXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9wYXJ0X2RpZmYgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVAorICAgICAgICBDQVNFIFdIRU4g diA8PSAyNSBUSEVOIDEgRUxTRSAyIEVORCBBUyBwLAorICAgICAgICB2ICUgMTAgQVMgdmFsCisg ICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBwCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPCA1LCBCIEFTIHZhbCA+PSA1CispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfcGFydF9kaWZmJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo YSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FT RSBXSEVOIHYgPD0gMjUgVEhFTiAxIEVMU0UgMiBFTkQgQVMgcCwKKyAgICAgICAgdiAlIDEwIEFT IHZhbAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSB2CispIHQKK1dJTkRPVyB3IEFT ICgKKyAgICBQQVJUSVRJT04gQlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDwgNSwgQiBBUyB2YWwgPj0g NQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAu MDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIChDQVNFIFdIRU4gKHYu diA8PSAyNSkgVEhFTiAxIEVMU0UgMiBFTkQpIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZB IFN0YXRlczogMyBwZWFrLCA3NyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBw ZWFrLCA1MiB0b3RhbCwgMjEgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDUvNi81Ljgp LCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNSBza2lw cGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0x KQorICAgICAgICAgU29ydCBLZXk6IChDQVNFIFdIRU4gKHYudiA8PSAyNSkgVEhFTiAxIEVMU0Ug MiBFTkQpCisgICAgICAgICBTb3J0IE1ldGhvZDogcXVpY2tzb3J0ICBNZW1vcnk6IE5rQgorICAg ICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHYgKGFjdHVhbCByb3dz PTUwLjAwIGxvb3BzPTEpCisoMTMgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdlIENhc2VzCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEVtcHR5IHJlc3VsdCBzZXQKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfZWRnZV9lbXB0eScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICBsaW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMgorKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0wLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0w LjAwIGxvb3BzPTEpCisoNSByb3dzKQorCistLSBFbXB0eSBtYXRjaGVzIChsZW5ndGggMCk6IG1p cnJvciB0aGUgdGVzdF83MjhfKiBjYXNlcyBpbiBycHJfbmZhLnNxbC4KKy0tIFdpbmRvdyBhZ2dy ZWdhdGVzIG92ZXIgYSBsZW5ndGgtMCBmcmFtZSByZXR1cm4gMCAvIE5VTEwsIHNvIHRoZSBTRUxF Q1QKKy0tIHJlc3VsdCBhbG9uZSBjYW5ub3QgZGlzdGluZ3Vpc2ggIm5vIG1hdGNoIiBmcm9tICJl bXB0eSBtYXRjaCI7IHRoZQorLS0gIk5GQTogTiBtYXRjaGVkIChsZW4gMC8wLzAuMCkiIGxpbmUg aW4gRVhQTEFJTiBpcyB0aGUgb25seSBvYnNlcnZhYmxlCistLSBwcm9vZiB0aGF0IHRoZSBlbXB0 eSBtYXRjaGVzIHdlcmUgZm91bmQuCistLSAoQT8pezAsM306IG1pbj0wLCBBIG5ldmVyIG1hdGNo ZXMgLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9t YXRjaF9taW4wIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKChBPyl7MCwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICBQQVRURVJOICgoYT8pezAsM30pIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezAsM30pCisgICAgREVGSU5F IEEgQVMgRkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5f ZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezAs M30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDggdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRj aGVkIChsZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisK Ky0tIChBPyl7MSwzfTogbWluPTEsIG9uZSBlbXB0eSBpdGVyYXRpb24gc2F0aXNmaWVzIG1pbiAt PiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNo X21pbjEgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoKEE/KXsxLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4xJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MSwzfSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUgQSBB UyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7MCwzfQor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogMiBwZWFrLCA0IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAzIG1hdGNoZWQg KGxlbiAwLzAvMC4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0g KEE/KXsyLDN9OiBtaW49MiAoSVNPL0lFQyAxOTA3NS01IDcuMi44IFNUUjA2ID0gU1RSRSBTVFJF KSAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21h dGNoX21pbjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4yJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyl7MiwzfSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUg QSBBUyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn IChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7MCwz fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOCB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogMiBwZWFrLCA0IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAzIG1hdGNo ZWQgKGxlbiAwLzAvMC4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorKDkgcm93cykKKwor LS0gKEE/KXsyLDN9IG1peGVkOiByb3dzIDEtMiBtYXRjaCBBIChyZWFsKSwgcm93cyAzLTQgZmFs bCBiYWNrIHRvIGVtcHR5CitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taXhl ZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMgdiA8PSAyCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf ZWRnZV9lbXB0eV9tYXRjaF9taXhlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoYT8pezIsM30pIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEgQVMg diA8PSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFj dHVhbCByb3dzPTQuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXswLDN9Cisg ICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCAxMyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogNCBwZWFrLCA1IHRvdGFsLCAxIHBydW5lZAorICAgTkZBOiAzIG1hdGNoZWQg KGxlbiAwLzIvMS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0g KEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IG11bHRpLWVsZW1lbnQgYm9keSAtPiAzIGxlbmd0aC0w IG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX211bHRpIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBPyBCPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbXVsdGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGE/IGI/KXsyLDN9KSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9 KQorICAgIERFRklORSBBIEFTIEZBTFNFLCBCIEFTIEZBTFNFCispOycpOworICAgICAgICAgICAg ICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGE/IGI/KXsyLDN9CisgICBOYXYgTWFyayBMb29rYmFjazog MAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogNiBwZWFrLCAyMCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA0 IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAzIG1hdGNoZWQgKGxlbiAwLzAvMC4wKSwgMCBtaXNt YXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFs IHJvd3M9My4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0gU2luZ2xlIHJvdworQ1JFQVRFIFZJ RVcgcnByX2V2X2VkZ2Vfc2luZ2xlX3JvdyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg VFJVRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2VkZ2Vfc2luZ2xlX3JvdycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgIGxpbmUgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKGEpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xLjAwIGxvb3BzPTEp CisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAyIHBl YWssIDIgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMiB0b3RhbCwg MCBwcnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDAgbWlzbWF0Y2hlZAor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEu MDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFBhdHRlcm4gbG9uZ2VyIHRoYW4gZGF0YQorQ1JF QVRFIFZJRVcgcnByX2V2X2VkZ2VfcGF0dGVybl9sb25nZXIgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUg RiBHIEggSSBKKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBD IEFTIHYgPSAzLCBEIEFTIHYgPSA0LCBFIEFTIHYgPSA1LAorICAgICAgICBGIEFTIHYgPSA2LCBH IEFTIHYgPSA3LCBIIEFTIHYgPSA4LCBJIEFTIHYgPSA5LCBKIEFTIHYgPSAxMAorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2VkZ2VfcGF0dGVybl9sb25nZXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIgYyBkIGUgZiBnIGggaSBqKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBIEIgQyBEIEUgRiBHIEggSSBKKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgPSAxLCBC IEFTIHYgPSAyLCBDIEFTIHYgPSAzLCBEIEFTIHYgPSA0LCBFIEFTIHYgPSA1LAorICAgICAgICBG IEFTIHYgPSA2LCBHIEFTIHYgPSA3LCBIIEFTIHYgPSA4LCBJIEFTIHYgPSA5LCBKIEFTIHYgPSAx MAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz01LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjIGQgZSBmIGcg aCBpIGoKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGlt dW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAyIHBlYWssIDYgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNiB0b3RhbCwgNCBwcnVuZWQKKyAgIE5GQTogMCBt YXRjaGVkLCAxIG1pc21hdGNoZWQgKGxlbiA1LzUvNS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUuMDAgbG9vcHM9MSkKKyg5IHJvd3Mp CisKKy0tIEFsbCByb3dzIG1hdGNoIGFzIHNpbmdsZSBtYXRjaAorQ1JFQVRFIFZJRVcgcnByX2V2 X2VkZ2Vfc2luZ2xlX21hdGNoIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFRSVUUK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9lZGdlX3NpbmdsZV9tYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgIGxpbmUgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazog MAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogMyBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywg NTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDUwLzUwLzUwLjApLCAw IG1pc21hdGNoZWQKKyAgIE5GQTogNDkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMCBza2lwcGVk CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbXBsZXggUGF0dGVybiBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBOZXN0ZWQgZ3JvdXBzCitDUkVBVEUgVklFVyBycHJfZXZfY3B4X25l c3RlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwg QiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X25lc3RlZCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgoYSBiKSBj KSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUg MyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEnIGInIGMnKSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA4 MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCA2MSB0b3RhbCwgMjAg cHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDYwLzYwLzYwLjApLCAwIG1pc21hdGNoZWQK KyAgIE5GQTogMTkgYWJzb3JiZWQgKGxlbiAzLzMvMy4wKSwgMjAgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9NjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBNdWx0aXBsZSBhbHRlcm5hdGlvbnMK K0NSRUFURSBWSUVXIHJwcl9ldl9jcHhfbXVsdGlfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEMgfCBEIHwgRSkpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAn QycsCisgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFTIGNhdCA9ICdFJworKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Nw eF9tdWx0aV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIChjIHwgZCB8IGUpKSAKKygxIHJvdykK KworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQgfCBFKSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBB UyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0Un JworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dz PTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpIChjIHwgZCB8 IGUpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA0MjMgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA0MCBwcnVuZWQKKyAgIE5GQTog MjAgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCAyMCBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAg IE5GQTogMCBhYnNvcmJlZCwgMjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNj YW4gb24gcnByX25mYV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dz KQorCistLSBPcHRpb25hbCBlbGVtZW50cworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9vcHRpb25h bCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEI/IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYg JSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhfb3B0aW9uYWwnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiPyBjKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCPyBDKQor ICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAz CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFs IHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiPyBjCisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA2NCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMyBwZWFrLCA1MSB0b3RhbCwgMjUgcHJ1bmVkCisgICBORkE6IDEyIG1hdGNoZWQg KGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNv cmJlZCwgMTIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQor CistLSBCb3VuZGVkIHF1YW50aWZpZXJzCitDUkVBVEUgVklFVyBycHJfZXZfY3B4X2JvdW5kZWQg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEF7Miw1fSBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFT IHYgJSAxMCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhfYm91bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYXsyLDV9IGIpIAorKDEgcm93KQorCitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDV9IEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Miw1fSBiCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZB IFN0YXRlczogOSBwZWFrLCAzMTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDcg cGVhaywgMTAxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gNi82LzYu MCksIDQwIG1pc21hdGNoZWQgKGxlbiA2LzYvNi4wKQorICAgTkZBOiAwIGFic29yYmVkLCA1MCBz a2lwcGVkIChsZW4gMS81LzMuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBTdGFy IHF1YW50aWZpZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9jcHhfc3RhciBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIq IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUgMTAgSU4gKDIsMyw0LDUs Niw3LDgpLCBDIEFTIHYgJSAxMCA9IDkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhfc3RhcicpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIqIGMpIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIqIEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUgMTAgSU4gKDIsMyw0LDUsNiw3LDgpLCBD IEFTIHYgJSAxMCA9IDkKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhIGIqIGMKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1h eGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDkxIHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDUxIHRvdGFsLCA0MCBwcnVuZWQKKyAgIE5G QTogNSBtYXRjaGVkIChsZW4gOS85LzkuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29y YmVkLCA1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBSZWFsLXdvcmxkIFBhdHRlcm4gRXhhbXBsZXMKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RvY2sg cHJpY2UgcGF0dGVybiAtIFYtc2hhcGUgKGRvd24gdGhlbiB1cCkKK0NSRUFURSBWSUVXIHJwcl9l dl9yZWFsX3ZzaGFwZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX2Nv bXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChEKyBVKykKKyAgICBERUZJTkUgRCBBUyB0cmVuZCA9ICdEJywgVSBBUyB0cmVu ZCA9ICdVJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3JlYWxfdnNoYXBlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOIChkKyB1KykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFf Y29tcGxleAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEQrIFUrKQorICAgIERFRklORSBEIEFTIHRyZW5kID0gJydEJycsIFUgQVMg dHJlbmQgPSAnJ1UnJworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGQrIiB1 KworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNTggdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDMgcHJ1bmVkCisgICBORkE6IDMgbWF0 Y2hlZCAobGVuIDMvMTQvOC4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMy8zLzMuMCkKKyAgIE5GQTog OSBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxNCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ ICBTZXEgU2NhbiBvbiBycHJfbmZhX2NvbXBsZXggKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEp CisoMTAgcm93cykKKworLS0gU3RvY2sgcHJpY2UgcGF0dGVybiAtIHBlYWsgKHVwLCBzdGFibGUs IGRvd24pCitDUkVBVEUgVklFVyBycHJfZXZfcmVhbF9wZWFrIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIHJwcl9uZmFfY29tcGxleAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFUrIFMqIEQrKQorICAgIERFRklORSBV IEFTIHRyZW5kID0gJ1UnLCBTIEFTIHRyZW5kID0gJ1MnLCBEIEFTIHRyZW5kID0gJ0QnCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfcmVhbF9wZWFrJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOICh1KyBzKiBkKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfY29tcGxl eAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKFUrIFMqIEQrKQorICAgIERFRklORSBVIEFTIHRyZW5kID0gJydVJycsIFMgQVMgdHJl bmQgPSAnJ1MnJywgRCBBUyB0cmVuZCA9ICcnRCcnCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogdSsiIHMqIGQrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA3 NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAzMSB0b3RhbCwgMSBw cnVuZWQKKyAgIE5GQTogNCBtYXRjaGVkIChsZW4gMy8xMS83LjIpLCAwIG1pc21hdGNoZWQKKyAg IE5GQTogMTIgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMTMgc2tpcHBlZCAobGVuIDEvMS8xLjAp CisgICAtPiAgU2VxIFNjYW4gb24gcnByX25mYV9jb21wbGV4IChhY3R1YWwgcm93cz0zMC4wMCBs b29wcz0xKQorKDEwIHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIGluY3JlYXNpbmcgdmFsdWVzICh1 c2luZyBQUkVWKQorQ1JFQVRFIFZJRVcgcnByX2V2X3JlYWxfaW5jcmVhc2luZyBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBezMsfSkKKyAgICBERUZJTkUgQSBBUyB2ID4gUFJFVih2KSBPUiBQUkVWKHYpIElTIE5VTEwK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9yZWFsX2luY3JlYXNpbmcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKGF7Myx9KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXszLH0pCisgICAgREVGSU5FIEEgQVMgdiA+IFBSRVYo dikgT1IgUFJFVih2KSBJUyBOVUxMCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYXszLH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5OSB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQK KyAgIE5GQTogMSBtYXRjaGVkIChsZW4gNTAvNTAvNTAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZB OiA0OSBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAwIHNraXBwZWQKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDEw IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gUGVyZm9ybWFuY2Utb3JpZW50ZWQgVGVzdHMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gTGFyZ2UgZGF0YXNldCB3aXRoIHNpbXBsZSBwYXR0ZXJuCitDUkVBVEUgVklFVyBycHJfZXZf cGVyZl9sYXJnZV9zaW1wbGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAl IDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfbGFyZ2Vfc2ltcGxlJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYikgCisoMSByb3cpCisKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERF RklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7Jyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwMC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiAyIHBlYWssIDEwMDEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywg MTAwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogNTAwIG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwg MCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDUwMCBza2lwcGVkIChsZW4gMS8xLzEu MCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93 cz0xMDAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTGFyZ2UgZGF0YXNldCB3aXRoIGFi c29ycHRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9wZXJmX2xhcmdlX2Fic29yYiBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwMCA8PiAwLCBCIEFTIHYgJSAxMDAgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfcGVyZl9sYXJnZV9hYnNvcmInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMDAg PD4gMCwgQiBBUyB2ICUgMTAwID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAx OTkxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDEwMDEgdG90YWws IDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAxMDAvMTAwLzEwMC4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDk4MCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxMCBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChh Y3R1YWwgcm93cz0xMDAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gSGlnaCBzdGF0ZSBt ZXJnZSByYXRpbworQ1JFQVRFIFZJRVcgcnByX2V2X3BlcmZfaGlnaF9tZXJnZSBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAy LCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfaGlnaF9tZXJnZScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikrIGMpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBD IEFTIHYgJSAzID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxh aW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhIHwgYikrIGMKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA5IHBlYWssIDMwMDYgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNTAxIHRvdGFsLCAxIHBydW5l ZAorICAgTkZBOiAxNjYgbWF0Y2hlZCAobGVuIDMvMy8zLjApLCAxIG1pc21hdGNoZWQgKGxlbiAy LzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAzMzIgc2tpcHBlZCAobGVuIDEvMi8xLjUpCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBJTklUSUFMIHZzIG5vIElOSVRJ QUwgY29tcGFyaXNvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBXaXRoIElOSVRJQUwga2V5d29yZAorQ1JFQVRFIFZJ RVcgcnByX2V2X2luaXRpYWxfd2l0aCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2luaXRp YWxfd2l0aCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAor KDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFM CisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYg JSA1ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0 Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMzAgYWJzb3JiZWQgKGxl biAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLSBXaXRob3V0IElOSVRJQUwga2V5d29yZCAoc2FtZSBiZWhhdmlvciBjdXJyZW50 bHkpCitDUkVBVEUgVklFVyBycHJfZXZfaW5pdGlhbF93aXRob3V0IEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9p bml0aWFsX3dpdGhvdXQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChh KyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVh bCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAo bGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMzAgYWJzb3JiZWQgKGxlbiAxLzEv MS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFF1YW50aWZpZXIgVmFyaWF0aW9ucworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQbHVzIHF1YW50 aWZpZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9wbHVzIEFTCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHYgJSA0IDw+IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9wbHVzJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgbGluZSAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYg JSA0IDw+IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2Zp bHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn IChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDcxIHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDQxIHRvdGFsLCAxMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0 Y2hlZCAobGVuIDMvMy8zLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMjAgYWJzb3JiZWQgKGxl biAxLzEvMS4wKSwgMCBza2lwcGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9z ZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBTdGFy IHF1YW50aWZpZXIgKHplcm8gb3IgbW9yZSkKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9zdGFy IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEEqIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgSU4gKDEsIDIpLCBCIEFT IHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X3N0YXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOIChhKiBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSogQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNCBJ TiAoMSwgMiksIEIgQVMgdiAlIDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSoiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDEwMiB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA0MSB0b3RhbCwgMTAgcHJ1 bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBO RkE6IDEwIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUXVlc3Rpb24gbWFyayAoemVybyBvciBvbmUp CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfcXVlc3Rpb24gQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQT8gQiBDKQor ICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAz CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfcXVhbnRfcXVlc3Rpb24nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoYT8gYiBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQT8gQiBDKQorICAgIERFRklORSBBIEFTIHYgJSA0 ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzCispOycpOworICAgICAgICAgICAg ICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkK KyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogYT8gYiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog NCBwZWFrLCA4MiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0 b3RhbCwgMTAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQwLjAw IGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gRXhhY3QgY291bnQge259CitDUkVBVEUgVklFVyBy cHJfZXZfcXVhbnRfZXhhY3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXszfSBCKQorICAgIERFRklORSBBIEFTIHYg JSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfZXhhY3QnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYXszfSBiKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXszfSBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXszfSBiCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0 YXRlczogNCBwZWFrLCA1MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNSBwZWFr LCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDQvNC80LjApLCAx MCBtaXNtYXRjaGVkIChsZW4gNC80LzQuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzAgc2tpcHBl ZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBSYW5nZSB7bixt fQorQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3JhbmdlIEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Miw0fSBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVh bnRfcmFuZ2UnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KGF7Miw0fSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh ezIsNH0gYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4 aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDcgcGVhaywgMTAxIHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiA1IHBlYWssIDUxIHRvdGFsLCAwIHBydW5lZAorICAgTkZB OiAxMCBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29y YmVkLCA0MCBza2lwcGVkIChsZW4gMS80LzIuNSkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisK Ky0tIEF0IGxlYXN0IHtuLH0KK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9hdGxlYXN0IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEF7Myx9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEw ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X3F1YW50X2F0bGVhc3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICBQQVRURVJOIChhezMsfSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXszLH0gQikKKyAgICBERUZJTkUgQSBB UyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYXszLH0iIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBl YWssIDg2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDUxIHRvdGFs LCAwIHBydW5lZAorICAgTkZBOiA1IG1hdGNoZWQgKGxlbiAxMC8xMC8xMC4wKSwgMCBtaXNtYXRj aGVkCisgICBORkE6IDQwIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDUgc2tpcHBlZCAobGVuIDEv MS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFs IHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJlZ3Jlc3Npb24g VGVzdHMgZm9yIFN0YXRpc3RpY3MgQWNjdXJhY3kKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHN0YXRlIGNv dW50IGFjY3VyYWN5CistLSBQYXR0ZXJuIEErIEIgd2l0aCAyMCByb3dzIHNob3VsZCBzaG93IHBy ZWRpY3RhYmxlIHN0YXRlIGJlaGF2aW9yCitDUkVBVEUgVklFVyBycHJfZXZfcmVnX3N0YXRlX2Nv dW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAy MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2 ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfc3RhdGVfY291bnQnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCAzNyB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAyMSB0b3RhbCwgMCBwcnVuZWQK KyAgIE5GQTogNCBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAx MiBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA0IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4g IEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxv b3BzPTEpCisoMTAgcm93cykKKworLS0gVmVyaWZ5IGNvbnRleHQgY291bnQgd2l0aCBrbm93biBh YnNvcnB0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfcmVnX2N0eF9hYnNvcmIgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCBJTiAoMSwyLDMsNCw1LDYsNyksIEIgQVMg diAlIDEwID0gOCwgQyBBUyB2ICUgMTAgPSA5CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcmVnX2N0eF9hYnNvcmInKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYiBjKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg QiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCBJTiAoMSwyLDMsNCw1LDYsNyksIEIgQVMgdiAl IDEwID0gOCwgQyBBUyB2ICUgMTAgPSA5CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSsiIGIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNTIg dG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDYgcHJ1 bmVkCisgICBORkE6IDMgbWF0Y2hlZCAobGVuIDkvOS85LjApLCAwIG1pc21hdGNoZWQKKyAgIE5G QTogMTggYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMyBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4w MCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFZlcmlmeSBtYXRjaCBsZW5ndGggd2l0aCBmaXhl ZC1sZW5ndGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19tYXRjaGxlbiBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBD IEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlZ19tYXRjaGxlbicpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBB UyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiBjCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0 YXRlczogMiBwZWFrLCAzMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFr LCAzMSB0b3RhbCwgMTAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwg MCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4w KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dz PTMwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBQYXR0 ZXJuIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBhbHRlcm5hdGlvbgorQ1JFQVRFIFZJRVcgcnBy X2V2X2FsdF9zaW1wbGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90 ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBCKSBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQg PSAnQicsIEMgQVMgY2F0ID0gJ0MnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X3NpbXBsZScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIGMpIAorKDEgcm93 KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIEMpCisgICAgREVGSU5F IEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7 Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAu MDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSBjCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgor ICAgTkZBIFN0YXRlczogNCBwZWFrLCAzMDMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4 dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA0MCBwcnVuZWQKKyAgIE5GQTogMjAgbWF0Y2hlZCAobGVu IDIvMi8yLjApLCAyMCBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJl ZCwgMjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNjYW4gb24gcnByX25mYV90 ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBNdWx0aXBs ZSBpdGVtcyBpbiBhbHRlcm5hdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9tdWx0aV9pdGVt IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwg QiB8IEMgfCBEKSBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBj YXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBj YXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbXVsdGlfaXRlbScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiIHwgYyB8 IGQpIGUpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIg fCBDIHwgRCkgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBj YXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywg RSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo YSB8IGIgfCBjIHwgZCkgZQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1l bW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgNTA1IHRv dGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgMCBwcnVu ZWQKKyAgIE5GQTogMjAgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCA2MCBtaXNtYXRjaGVkIChsZW4g Mi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisg ICAtPiAgU2VxIFNjYW4gb24gcnByX25mYV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9 MSkKKygxMCByb3dzKQorCistLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzCitDUkVBVEUg VklFVyBycHJfZXZfYWx0X3dpdGhfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBE RUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2FsdF93aXRoX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSsgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpKyBjCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgor ICAgTkZBIFN0YXRlczogOSBwZWFrLCAzMDYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4 dHM6IDMgcGVhaywgNTEgdG90YWwsIDEgcHJ1bmVkCisgICBORkE6IDE2IG1hdGNoZWQgKGxlbiAz LzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwg MzIgc2tpcHBlZCAobGVuIDEvMi8xLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBN dWx0aXBsZSBhbHRlcm5hdGl2ZXMgKDQrKQorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9mb3VyX3Bs dXMgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgfCBCIHwgQyB8IEQgfCBFKQor ICAgIERFRklORSBBIEFTIHYgJSA1ID0gMCwgQiBBUyB2ICUgNSA9IDEsIEMgQVMgdiAlIDUgPSAy LCBEIEFTIHYgJSA1ID0gMywgRSBBUyB2ICUgNSA9IDQKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZm91cl9wbHVz JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAg ICBsaW5lICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOIChhIHwgYiB8IGMgfCBkIHwgZSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB IHwgQiB8IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUg PSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93 cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiIHwgYyB8IGQg fCBlKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDcgcGVhaywgNjA2IHRvdGFsLCAwIG1lcmdl ZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTog MTAwIG1hdGNoZWQgKGxlbiAxLzEvMS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCiso OSByb3dzKQorCistLSBBbHRlcm5hdGlvbiBhdCBzdGFydAorQ1JFQVRFIFZJRVcgcnByX2V2X2Fs dF9hdF9zdGFydCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgRCkK KyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0g MiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfYXRfc3RhcnQnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikgYyBkKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQg PSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 NjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSBjIGQKKyAgIE5h diBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTog TmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDE4MyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMTYgcHJ1bmVkCisgICBORkE6IDE1IG1hdGNoZWQg KGxlbiAzLzMvMy4wKSwgMTQgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJz b3JiZWQsIDE1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisoMTAgcm93cykK KworLS0gTXVsdGlwbGUgc2VxdWVudGlhbCBhbHRlcm5hdGlvbnMKK0NSRUFURSBWSUVXIHJwcl9l dl9hbHRfc2VxdWVudGlhbCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBC KSBDIChEIHwgRSkgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAx LCBDIEFTIHYgJSA2ID0gMiwgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYg JSA2ID0gNQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2FsdF9zZXF1ZW50aWFsJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSBj IChkIHwgZSkgZikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgKEQgfCBFKSBG KQorICAgIERFRklORSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYg PSAyLCBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93 cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSBjIChkIHwg ZSkgZgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgMzM3IHRvdGFsLCAwIG1lcmdl ZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgNjcgcHJ1bmVkCisgICBORkE6 IDAgbWF0Y2hlZCwgMzMgbWlzbWF0Y2hlZCAobGVuIDIvNC8zLjApCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCiso OSByb3dzKQorCistLSBRdWFudGlmaWVkIGFsdGVybmF0aXZlcworQ1JFQVRFIFZJRVcgcnByX2V2 X2FsdF9xdWFudGlmaWVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBKyB8IEIr KSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAl IDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYWx0X3F1YW50aWZpZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhKyB8IGIrKSBjKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoKEErIHwgQispIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFT IHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYSsiIHwgYisiKSBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAg U3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBw ZWFrLCAyMjMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90 YWwsIDEgcHJ1bmVkCisgICBORkE6IDIwIG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgMTkgbWlzbWF0 Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAx LzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVh bCByb3dzPTYwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQWx0ZXJuYXRpb24gYXQgZW5k CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2F0X2VuZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAl IDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfYXRf ZW5kJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAg ICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJO IChhIGIgKGMgfCBkKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiAoQyB8IEQpKQorICAg IERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBE IEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxh aW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGEgYiAoYyB8IGQpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA4OSB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwgMzIgcHJ1bmVkCisg ICBORkE6IDE0IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAg YWJzb3JiZWQsIDE0IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0gTmVzdGVkIEFMVCBhdCBzdGFydCBvZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAor LS0gUGF0dGVybjogKEEgKChCIHwgQykgRCB8IEUpKSAtIHByZWNlZGluZyBWQVIgKyBpbm5lciBB TFQgYXMgZmlyc3QgYnJhbmNoIGVsZW1lbnQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbmVzdGVk X3N0YXJ0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKChCIHwgQykgRCB8IEUp KQorICAgIERFRklORSBBIEFTIHYgJSA1ID0gMCwgQiBBUyB2ICUgNSA9IDEsIEMgQVMgdiAlIDUg PSAyLCBEIEFTIHYgJSA1ID0gMywgRSBBUyB2ICUgNSA9IDQKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbmVzdGVk X3N0YXJ0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg ICAgICAgICBsaW5lICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOIChhICgoYiB8IGMpIGQgfCBlKSkgCisoMSByb3cpCisKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEgKChCIHwgQykgRCB8IEUpKQorICAgIERFRklORSBBIEFTIHYgJSA1ID0gMCwgQiBBUyB2 ICUgNSA9IDEsIEMgQVMgdiAlIDUgPSAyLCBEIEFTIHYgJSA1ID0gMywgRSBBUyB2ICUgNSA9IDQK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhICgoYiB8IGMpIGQg fCBlKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgMzcgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDE3IHBydW5lZAorICAgTkZBOiAw IG1hdGNoZWQsIDMgbWlzbWF0Y2hlZCAobGVuIDMvMy8zLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJv d3MpCisKKy0tIE5lc3RlZCBBTFQgYXQgZW5kIG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCist LSBQYXR0ZXJuOiAoQyAoQSB8IEIpIHwgRCkgLSBpbm5lciBBTFQgaXMgbGFzdCBlbGVtZW50IGlu IG91dGVyIGJyYW5jaAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9uZXN0ZWRfZW5kIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgKEEgfCBCKSB8IEQpCisgICAgREVGSU5FIEEgQVMg diAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAz CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfYWx0X25lc3RlZF9lbmQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChjIChhIHwgYikgfCBkKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQyAoQSB8IEIpIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIg QVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYyAoYSB8IGIpIHwgZCkKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA1IHBlYWssIDczIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxMCBwcnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4g MS8xLzEuMCksIDUgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJv d3MpCisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJyYW5j aAorLS0gUGF0dGVybjogKChBIEIpKyB8IEMpIC0gbGVhZGluZyBncm91cCBicmFuY2ggbXVzdCBv cGVuIHRoZSBlbmNsb3NpbmcgcGFyZW4KK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2ZpcnN0 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8IEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9hbHRfZ3JwX2ZpcnN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoKGEgYikrIHwgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8 IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUg NCA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEnIGIn KSsiIHwgYykKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1h eGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDY3IHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCA3IHBydW5lZAorICAgTkZB OiA5IG1hdGNoZWQgKGxlbiAxLzIvMS40KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3Ji ZWQsIDQgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCist LSBRdWFudGlmaWVkIGdyb3VwIGFzIHRoZSBsYXN0IGFsdGVybmF0aW9uIGJyYW5jaAorLS0gUGF0 dGVybjogKEMgfCAoQSBCKSspIC0gdHJhaWxpbmcgZ3JvdXAgYnJhbmNoLCBubyBzZXBhcmF0b3Ig Zm9sbG93cworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfbGFzdCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChDIHwgKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwg QiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9sYXN0Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYyB8IChh IGIpKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSspCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYyB8IChhJyBiJykrIikKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA1IHBlYWssIDY3IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDIxIHRvdGFsLCA3IHBydW5lZAorICAgTkZBOiA5IG1hdGNoZWQgKGxlbiAx LzIvMS40KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQgc2tpcHBlZCAobGVu IDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0 dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBRdWFudGlmaWVkIGdyb3Vw IGFzIHRoZSBtaWRkbGUgYnJhbmNoIG9mIGEgdGhyZWUtd2F5IGFsdGVybmF0aW9uCistLSBQYXR0 ZXJuOiAoQyB8IChBIEIpKyB8IEQpIC0gc2VwYXJhdG9yIGJlZm9yZSBEIG11c3Qgc3Vydml2ZSB0 aGUgZ3JvdXAgYnJhbmNoCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9taWQgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyB8IEQpCisgICAgREVGSU5FIEEgQVMg diAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAz CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfYWx0X2dycF9taWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGMgfCAoYSBiKSsgfCBkKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQyB8IChBIEIpKyB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBC IEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAg bG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGMgfCAoYScgYicpKyIgfCBkKQorICAg TmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdl OiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgODggdG90YWwsIDAgbWVyZ2VkCisgICBORkEg Q29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDIgcHJ1bmVkCisgICBORkE6IDE0IG1hdGNoZWQg KGxlbiAxLzIvMS4zKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQgc2tpcHBl ZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBRdWFudGlmaWVk IGdyb3VwIGFzIHRoZSBmaXJzdCBicmFuY2ggb2YgYSB0aHJlZS13YXkgYWx0ZXJuYXRpb24KKy0t IFBhdHRlcm46ICgoQSBCKSsgfCBDIHwgRCkgLSBsZWFkaW5nIGdyb3VwIGJyYW5jaCB3aXRoIHR3 byBmb2xsb3dpbmcgYnJhbmNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2ZpcnN0MyBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCBDIHwgRCkKKyAgICBERUZJ TkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2 ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2ZpcnN0MycpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgYikrIHwgYyB8IGQpIAor KDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCBDIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEnIGInKSsiIHwg YyB8IGQpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA4OCB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMiBwcnVuZWQKKyAgIE5GQTog MTQgbWF0Y2hlZCAobGVuIDEvMi8xLjMpLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJl ZCwgNCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVy YXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t IEJvdW5kZWQtcXVhbnRpZmllciBncm91cCBhcyB0aGUgZmlyc3QgYWx0ZXJuYXRpb24gYnJhbmNo CistLSBQYXR0ZXJuOiAoKEEgQil7Mn0gfCBDKSAtIGxlYWRpbmcgZ3JvdXAgYnJhbmNoIHdpdGgg YSByYW5nZSBxdWFudGlmaWVyCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9ib3VuZGVkIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpezJ9IHwgQykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2FsdF9ncnBfYm91bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoYSBiKXsyfSB8IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSBCKXsyfSB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwg QyBBUyB2ICUgNCA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoKGEgYil7Mn0gfCBjKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1l bW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNjMgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDExIHBydW5l ZAorICAgTkZBOiA1IG1hdGNoZWQgKGxlbiAxLzEvMS4wKSwgNCBtaXNtYXRjaGVkIChsZW4gMy8z LzMuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz0yMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0gVHdvIHF1YW50aWZpZWQgZ3JvdXBz IGluIG9uZSBhbHRlcm5hdGlvbgorLS0gUGF0dGVybjogKChBIEIpKyB8IChDIEQpKykgLSBib3Ro IGJyYW5jaGVzIGFyZSBncm91cHMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2JvdGggQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwgKEMgRCkrKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYg JSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfYm90aCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSBiKSsgfCAoYyBkKSspIAor KDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCAoQyBEKSspCisgICAgREVGSU5FIEEgQVMg diAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAz CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFs IHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhJyBiJykrIiB8 IChjJyBkJykrIikKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDcyIHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAyIHBydW5lZAorICAg TkZBOiA5IG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJz b3JiZWQsIDkgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQor CistLSBMZWFkaW5nIGdyb3VwIGJyYW5jaCBpbiBhbiBhbHRlcm5hdGlvbiBuZXN0ZWQgaW4gYSBz ZXF1ZW5jZQorLS0gUGF0dGVybjogKCgoQSBCKSsgfCBDKSBEKSAtIGlubmVyIGFsdGVybmF0aW9u IG9wZW5zIHdpdGggYSBncm91cCBicmFuY2gKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX3Nl cV9oZWFkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSsgfCBDKSBEKQor ICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAy LCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfc2VxX2hlYWQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgoYSBiKSsg fCBjKSBkKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpKyB8IEMpIEQpCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMg diAlIDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChh JyBiJykrIiB8IGMpIGQKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDY3IHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCA2IHBydW5lZAor ICAgTkZBOiA1IG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgNCBtaXNtYXRjaGVkIChsZW4gMy8zLzMu MCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgNSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29w cz0xKQorKDEwIHJvd3MpCisKKy0tIFRyYWlsaW5nIGdyb3VwIGJyYW5jaCBpbiBhbiBhbHRlcm5h dGlvbiBuZXN0ZWQgaW4gYSBzZXF1ZW5jZQorLS0gUGF0dGVybjogKChDIHwgKEEgQikrKSBEKSAt IGdyb3VwIGFzIGxhc3QgYnJhbmNoLCB0aGVuIGEgc2VxdWVuY2UgZWxlbWVudAorQ1JFQVRFIFZJ RVcgcnByX2V2X2FsdF9ncnBfc2VxX3RhaWwgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKEMgfCAoQSBCKSspIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0 ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9z ZXFfdGFpbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgICAgIGxpbmUgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoKGMgfCAoYSBiKSspIGQpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQyB8 IChBIEIpKykgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBD IEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2lu ZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiAoYyB8IChhJyBiJykrIikgZAorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDUgcGVhaywgNjcgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywg MjEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCA0IG1p c21hdGNoZWQgKGxlbiAzLzMvMy4wKQorICAgTkZBOiAwIGFic29yYmVkLCA1IHNraXBwZWQgKGxl biAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUXVhbnRpZmllZCBhbHRl cm5hdGlvbiB3aG9zZSBmaXJzdCBicmFuY2ggaXMgYSBxdWFudGlmaWVkIGdyb3VwCistLSBQYXR0 ZXJuOiAoKChBIEIpezJ9IHwgQykrKSAtIHNpbmdsZS1BTFQgZ3JvdXAgd3JhcHMgYSBsZWFkaW5n IGdyb3VwIGJyYW5jaAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfcXVhbnQgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpezJ9IHwgQykrKQorICAgIERFRklORSBBIEFT IHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0 X2dycF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAg ICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoKGEgYil7Mn0gfCBjKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO ICgoKEEgQil7Mn0gfCBDKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0 ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJw cl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiAoKGEgYil7Mn0gfCBjKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWss IDc4IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAx MSBwcnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDQgbWlzbWF0Y2hlZCAo bGVuIDMvMy8zLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAo YWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFVuaXQgKDEsMSkgZ3Jv dXAgYXMgYW4gYWx0ZXJuYXRpb24gYnJhbmNoIChlbWl0cyBubyBCRUdJTi9FTkQpCistLSBQYXR0 ZXJuOiAoKEEgQikgfCBDKSAtIGNvbnRyb2w6IHRha2VzIHRoZSB2YXJpYWJsZSBwYXRoLCBub3Qg ZGVwYXJzZV9ycHJfZ3JvdXAKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX3VuaXQgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikgfCBDKQorICAgIERFRklORSBBIEFTIHYg JSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dy cF91bml0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg ICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KChhIGIpIHwgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAy MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpIHwgQykKKyAgICBERUZJ TkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIgfCBjKQorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNjMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4 dHM6IDIgcGVhaywgMjEgdG90YWwsIDcgcHJ1bmVkCisgICBORkE6IDkgbWF0Y2hlZCAobGVuIDEv Mi8xLjQpLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNCBza2lwcGVkIChsZW4g MS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFF1YW50aWZpZWQgdmFyaWFi bGUgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJyYW5jaAorLS0gUGF0dGVybjogKEErIHwgQykg LSBjb250cm9sOiBkZXBhcnNlX3Jwcl92YXIgYWxyZWFkeSBvcGVucyB0aGUgbGVhZGluZyBwYXJl bgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF92YXJfZmlyc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSsgfCBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQyBBUyB2ICUg NCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdmFyX2ZpcnN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKGErIHwgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIHwg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEMgQVMgdiAlIDQgPSAyCispOycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAg bG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGErIiB8IGMpCisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAg TkZBIFN0YXRlczogNSBwZWFrLCA2OCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog MyBwZWFrLCAyMSB0b3RhbCwgMTAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAxLzEv MS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJp ZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFF1YW50aWZp ZWQgZ3JvdXAgYXMgdGhlIGxhc3QgYnJhbmNoIG9mIGEgdGhyZWUtd2F5IGFsdGVybmF0aW9uCist LSBQYXR0ZXJuOiAoQyB8IEQgfCAoQSBCKSspIC0gY29udHJvbDogdHJhaWxpbmcgZ3JvdXAgbmVl ZHMgbm8gc2VwYXJhdG9yCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9sYXN0MyBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIHwgRCB8IChBIEIpKykKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2xhc3QzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChjIHwgZCB8IChhIGIpKykgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEMgfCBEIHwgKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChjIHwgZCB8IChhJyBiJykrIikK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDg4IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAyIHBydW5lZAorICAgTkZBOiAxNCBtYXRj aGVkIChsZW4gMS8yLzEuMyksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA0IHNr aXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2Vy aWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQWx0ZXJu YXRpb24gbmVzdGVkIGluIGEgbGVhZGluZyBicmFuY2ggbXVzdCBub3Qgc3dhbGxvdyB0aGUgdHJh aWxpbmcgYnJhbmNoCistLSBQYXR0ZXJuOiAoRCAoQSB8IEIpIHwgRSkgLSBpbmhlcml0ZWQgbGlt aXQgYm91bmRzIHRoZSBpbm5lciBhbHRlcm5hdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9p bm5lcl9ib3VuZGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEQgKEEgfCBCKSB8 IEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgRCBBUyB2ICUg NSA9IDIsIEUgQVMgdiAlIDUgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2lubmVyX2JvdW5kZWQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChkIChh IHwgYikgfCBlKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoRCAoQSB8IEIpIHwgRSkKKyAgICBE RUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBEIEFTIHYgJSA1ID0gMiwgRSBB UyB2ICUgNSA9IDMKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo ZCAoYSB8IGIpIHwgZSkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDcxIHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxMiBwcnVuZWQK KyAgIE5GQTogNCBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDQgbWlzbWF0Y2hlZCAobGVuIDIvMi8y LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIEdyb3VwIG1pZC1icmFuY2ggZm9sbG93 ZWQgYnkgYSBzZXF1ZW5jZSBlbGVtZW50IG5lZWRzIG5vIHNlcGFyYXRvciBiZWZvcmUgaXQKKy0t IFBhdHRlcm46IChDIHwgKEEgQikrIEQpIC0gcmVsYXRpdmUtbmV4dCBibG9ja3MgYSBzcHVyaW91 cyBzZXBhcmF0b3IgYXQgRAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfdGhlbl9zZXEgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyBEKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0 ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2FsdF9ncnBfdGhlbl9zZXEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYyB8IChhIGIpKyBkKSAKKygxIHJvdykK KworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwg QiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChjIHwgKGEnIGInKSsiIGQpCisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6 IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA4OCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAo bGVuIDEvMS8xLjApLCA0IG1pc21hdGNoZWQgKGxlbiAzLzMvMy4wKQorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCiso OSByb3dzKQorCistLSBRdWFudGlmaWVkIGdyb3VwIHdyYXBwaW5nIGEgbG9uZSBhbHRlcm5hdGlv bjogdGhlIEFMVCBzdXBwbGllcyB0aGUgcGFyZW5zCistLSBQYXR0ZXJuOiAoKEEgfCBCKSspIC0g bG9uZUFsdCBwYXRoLCBzaW5nbGUgcGFpciBvZiBwYXJlbnMKK0NSRUFURSBWSUVXIHJwcl9ldl9n cnBfbG9uZV9hbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSspCisg ICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9s b25lX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo KGEgfCBiKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgfCBiKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBl YWssIDkzIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFs LCAxMCBwcnVuZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gMS8yLzEuNyksIDAgbWlzbWF0Y2hl ZAorICAgTkZBOiAwIGFic29yYmVkLCA0IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3Bz PTEpCisoMTAgcm93cykKKworLS0gUXVhbnRpZmllZCBncm91cCB3cmFwcGluZyBhIHNlcXVlbmNl IHdob3NlIGxhc3QgZWxlbWVudCBpcyBhbiBhbHRlcm5hdGlvbgorLS0gUGF0dGVybjogKChBIChC IHwgQykpKykgLSBncm91cCBwYXJlbiBwbHVzIGEgbmVzdGVkIGFsdGVybmF0aW9uIHBhcmVuCitD UkVBVEUgVklFVyBycHJfZXZfZ3JwX3NlcV9hbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoKEEgKEIgfCBDKSkrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUg NCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX3NlcV9hbHQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgKGIgfCBjKSkr KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgfCBDKSkrKQorICAgIERFRklORSBBIEFT IHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgKGIgfCBjKSkrCisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAg TkZBIFN0YXRlczogMyBwZWFrLCAzNSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog MyBwZWFrLCAyMSB0b3RhbCwgMTIgcHJ1bmVkCisgICBORkE6IDQgbWF0Y2hlZCAobGVuIDIvMi8y LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNCBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgd3Jh cHBpbmcgYSBzZXF1ZW5jZSB3aG9zZSBmaXJzdCBlbGVtZW50IGlzIGFuIGFsdGVybmF0aW9uCist LSBQYXR0ZXJuOiAoKChBIHwgQikgQykrKSAtIGxlYWRpbmcgbmVzdGVkIGFsdGVybmF0aW9uIGlu c2lkZSBhIGdyb3VwIHNlcXVlbmNlCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2FsdF9zZXEgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIHwgQikgQykrKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf Z3JwX2FsdF9zZXEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgICAgIGxpbmUgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoKChhIHwgYikgYykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIHwg QikgQykrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMg diAlIDQgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChh IHwgYikgYykrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA3OCB0b3RhbCwgMCBt ZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5G QTogNSBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDQgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisg ICBORkE6IDAgYWJzb3JiZWQsIDUgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkK KygxMCByb3dzKQorCistLSBBbHRlcm5hdGlvbiBub24tbGFzdCBpbiBhIG5vbi1sYXN0IGJyYW5j aCwgc3RhY2tlZCB0aHJlZSBkZWVwOiBlYWNoIGxldmVsJ3MKKy0tIGluaGVyaXRlZCBsaW1pdCBt dXN0IGJvdW5kIHRoZSBpbm5lciBhbHRlcm5hdGlvbiBhZ2FpbnN0IHRoZSBuZXh0IGJyYW5jaAor LS0gUGF0dGVybjogKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikgLSB0aHJlZSBuZXN0ZWQgaW5oZXJp dGVkLWxpbWl0IGJvdW5kYXJpZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfc3RhY2szIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikKKyAgICBE RUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAg ICAgICAgICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2FsdF9zdGFjazMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKChhIHwgYikgYyB8IGQpIGUg fCBmKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIHwgQikgQyB8IEQpIEUgfCBGKQorICAg IERFRklORSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLAor ICAgICAgICAgICBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1 CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFs IHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKCgoYSB8IGIpIGMg fCBkKSBlIHwgZikKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDE0NyB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNCBwcnVuZWQKKyAg IE5GQTogNiBtYXRjaGVkIChsZW4gMS8yLzEuNSksIDcgbWlzbWF0Y2hlZCAobGVuIDIvMy8yLjQp CisgICBORkE6IDAgYWJzb3JiZWQsIDMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9 MSkKKygxMCByb3dzKQorCistLSBTYW1lIGludGVyYWN0aW9uIHN0YWNrZWQgZm91ciBkZWVwLCB0 byBleGVyY2lzZSB0aGUgaW5kdWN0aW9uIG9uZSBzdGVwIGZ1cnRoZXIKKy0tIFBhdHRlcm46ICgo KChBIHwgQikgQyB8IEQpIEUgfCBGKSBHIHwgSCkgLSBmb3VyIG5lc3RlZCBpbmhlcml0ZWQtbGlt aXQgYm91bmRhcmllcworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zdGFjazQgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikgRyB8IEgpCisgICAg REVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQg QVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUs IEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9zdGFjazQnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICAg ICAgIGxpbmUgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgoKGEgfCBiKSBjIHwgZCkgZSB8IGYpIGcg fCBoKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikgRyB8 IEgpCisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUg OCA9IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2 ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoKChhIHwgYikgYyB8IGQpIGUgfCBmKSBnIHwg aCkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDE4OSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTogNCBt YXRjaGVkIChsZW4gMS8yLzEuNSksIDggbWlzbWF0Y2hlZCAobGVuIDIvMy8yLjYpCisgICBORkE6 IDAgYWJzb3JiZWQsIDIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLSBUaHJlZS1kZWVwIHN0YWNrIHdob3NlIGlubmVybW9zdCBicmFuY2ggaXMgYSBx dWFudGlmaWVkIGdyb3VwOiB0aGUgZ3JvdXAncworLS0gc2tpcC10YXJnZXQganVtcCBtdXN0IG5v dCBiZSBtaXN0YWtlbiBmb3IgYSBicmFuY2ggc2VwYXJhdG9yIGF0IGFueSBkZXB0aAorLS0gUGF0 dGVybjogKCgoQSB8IEIpKyBDIHwgRCkgRSB8IEYpIC0gaW5oZXJpdGVkIGxpbWl0IHBsdXMgbG9u ZUFsdCBhdCB0aGUgYmFzZQorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zdGFjazNfZ3JwIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpKyBDIHwgRCkgRSB8IEYpCisgICAg REVGSU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisg ICAgICAgICAgIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9hbHRfc3RhY2szX2dycCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgoYSB8IGIpKyBj IHwgZCkgZSB8IGYpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgfCBCKSsgQyB8IEQpIEUg fCBGKQorICAgIERFRklORSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAl IDYgPSAyLAorICAgICAgICAgICBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMg diAlIDYgPSA1CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKCgo YSB8IGIpKyBjIHwgZCkgZSB8IGYpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMTEgcGVhaywg MTc3IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDIxIHRvdGFsLCA0 IHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiAxLzIvMS41KSwgNyBtaXNtYXRjaGVkIChs ZW4gMi80LzMuMSkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMyBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0y MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEFsdGVybmF0aW9uIHRyYWlsaW5nIGEgcGFy ZW4tbGVzcyBzZXF1ZW5jZSAobGFzdCBlbGVtZW50IG9mIGEgbm9uLWxhc3QKKy0tIGJyYW5jaCwg bm8gc2FtZS1kZXB0aCBzaWJsaW5nIHRvIGJvdW5kIGl0KSwgbmVzdGVkIHRocmVlIGRlZXAKKy0t IFBhdHRlcm46IChBIChCIChDIHwgRCkgfCBFKSB8IEYpIC0gZWFjaCBpbm5lciBhbHRlcm5hdGlv biBpcyBicmFuY2gtdGFpbAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF90YWlsMyBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIHwgRCkgfCBFKSB8IEYpCisgICAgREVGSU5F IEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAgICAg ICAgIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9hbHRfdGFpbDMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSAoYiAoYyB8IGQpIHwgZSkgfCBmKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyB8IEQpIHwgRSkgfCBGKQorICAgIERFRklO RSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLAorICAgICAg ICAgICBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgKGIgKGMgfCBkKSB8IGUp IHwgZikKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGlt dW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDc1IHRvdGFsLCAwIG1lcmdl ZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxMSBwcnVuZWQKKyAgIE5GQTog NiBtYXRjaGVkIChsZW4gMS8zLzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVk LCAzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0g U2FtZSBicmFuY2gtdGFpbCBhbHRlcm5hdGlvbiBuZXN0ZWQgZm91ciBkZWVwCistLSBQYXR0ZXJu OiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHKSB8IEgpIC0gYnJhbmNoLXRhaWwgYWx0ZXJuYXRp b24geDQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfdGFpbDQgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHKSB8IEgpCisgICAgREVGSU5FIEEg QVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQgQVMgdiAlIDgg PSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAl IDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF90YWlsNCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgICAgICAgbGluZSAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoYSAoYiAoYyAoZCB8IGUpIHwgZikgfCBnKSB8IGgpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIChEIHwgRSkgfCBGKSB8IEcpIHwgSCkKKyAgICBE RUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0gMiwgRCBB UyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4ID0gNSwg RyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDggPSA3CispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgKGIgKGMgKGQgfCBlKSB8IGYpIHwgZykgfCBoKQorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNzUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDE0IHBydW5lZAorICAgTkZBOiA0IG1hdGNoZWQgKGxl biAxLzQvMi41KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDIgc2tpcHBlZCAo bGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAo YWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBBIG5lc3RlZCBhbHRl cm5hdGlvbiB0YWlsIG5laWdoYm91cmluZyBhIG11bHRpLWVsZW1lbnQgc2VxdWVuY2UgYnJhbmNo OiB0aGUKKy0tIGJyYW5jaCBib3VuZGFyeSBtdXN0IHNwbGl0ICIuLi5icmFuY2gtdGFpbCBBTFQi IGZyb20gYSBwbGFpbiAiRyBBIiBzZXF1ZW5jZQorLS0gUGF0dGVybjogKEEgKEIgKEMgKEQgfCBF KSB8IEYpIHwgRyBBKSB8IEgpIC0gc2VxIGJyYW5jaCBiZXNpZGUgYW4gQUxUIHRhaWwKK0NSRUFU RSBWSUVXIHJwcl9ldl9hbHRfdGFpbF9zZXFicmFuY2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHIEEpIHwgSCkKKyAgICBERUZJTkUgQSBB UyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9 IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUg OCA9IDYsIEggQVMgdiAlIDggPSA3CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X3RhaWxfc2VxYnJhbmNoJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICAg ICAgbGluZSAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSAoYiAoYyAoZCB8IGUpIHwgZikgfCBn IGEpIHwgaCkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwg RyBBKSB8IEgpCisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBB UyB2ICUgOCA9IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwg RiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsnKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIChiIChjIChkIHwgZSkgfCBmKSB8 IGcgYSkgfCBoKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNzUgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDE0IHBydW5lZAorICAg TkZBOiA0IG1hdGNoZWQgKGxlbiAxLzQvMi41KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJz b3JiZWQsIDIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQor CistLSBBIG5lc3RlZCBhbHRlcm5hdGlvbiB0aGF0IGlzIHNpYmxpbmctYm91bmRlZCBieSBhIHRy YWlsaW5nIHNlcXVlbmNlIGVsZW1lbnQKKy0tIGF0IHRoZSBvdXRlciBsZXZlbCAodGhlIEFMVCBp cyBub3QgdGhlIGJyYW5jaCB0YWlsOyBHIGZvbGxvd3MgaXQgaW4tYnJhbmNoKQorLS0gUGF0dGVy bjogKChBIChCIChDIHwgRCkgfCBFKSB8IEYpIEcgfCBIKSAtIEFMVCBib3VuZGVkIGJ5IGEgZm9s bG93aW5nIGVsZW1lbnQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbWlkX3NlcXRhaWwgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikgRyB8IEgp CisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9 IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUg OCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9taWRf c2VxdGFpbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgKGIgKGMgfCBkKSB8 IGUpIHwgZikgZyB8IGgpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSAoQiAoQyB8IEQpIHwg RSkgfCBGKSBHIHwgSCkKKyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAx LCBDIEFTIHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDgg PSA0LCBGIEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDggPSA3CispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhIChiIChjIHwgZCkgfCBl KSB8IGYpIGcgfCBoKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMTEzIHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxMiBwcnVuZWQK KyAgIE5GQTogNCBtYXRjaGVkIChsZW4gMS8yLzEuNSksIDIgbWlzbWF0Y2hlZCAobGVuIDQvNC80 LjApCisgICBORkE6IDAgYWJzb3JiZWQsIDIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9v cHM9MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEdyb3VwIFBhdHRlcm4gVGVzdHMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gU2ltcGxlIGdyb3VwCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX3NpbXBsZSBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2dycF9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoKGEgYikrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwg QiBBUyB2ICUgMiA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYScgYicpKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDYxIHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDQxIHRvdGFsLCAwIHBydW5lZAorICAg TkZBOiAxIG1hdGNoZWQgKGxlbiA0MC80MC80MC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDE5 IGFic29yYmVkIChsZW4gMi8yLzIuMCksIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4g IEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQwLjAwIGxv b3BzPTEpCisoMTAgcm93cykKKworLS0gR3JvdXAgd2l0aCBib3VuZGVkIHF1YW50aWZpZXIKK0NS RUFURSBWSUVXIHJwcl9ldl9ncnBfYm91bmRlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsyLDR9KQorICAg IERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfYm91 bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg ICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KChhIGIpezIsNH0pIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSBCKXsyLDR9KQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwg QiBBUyB2ICUgMiA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYSBiKXsyLDR9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA1MSB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgNSBwcnVuZWQKKyAg IE5GQTogNSBtYXRjaGVkIChsZW4gOC84LzguMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFi c29yYmVkLCAzMCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorKDEwIHJvd3Mp CisKKy0tIE5lc3RlZCBncm91cHMKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfbmVzdGVkIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKCgoQSBCKXsyfSkrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUg MiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfbmVzdGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoKGEgYil7Mn0pKykgCisoMSByb3cpCisKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSkrKQor ICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEnIGInKXsyfScpKyIKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisg ICBORkEgU3RhdGVzOiA1IHBlYWssIDc2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRz OiA0IHBlYWssIDYxIHRvdGFsLCAxNSBwcnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gNjAv NjAvNjAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxNCBhYnNvcmJlZCAobGVuIDQvNC80LjAp LCAzMCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVy YXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t IERlZXAgbmVzdGluZyAoMysgbGV2ZWxzKQorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9kZWVwIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoKEEgfCBCKSspKykrKQorICAgIERFRklO RSBBIEFTIHYgJSAyID0gMCwgQiBBUyB2ICUgMiA9IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfZGVlcCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgIGxpbmUg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo KCgoYSB8IGIpKykrKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIHwgQikrKSspKykK KyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSsKKyAgIE5hdiBNYXJrIExvb2ti YWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEg U3RhdGVzOiA2IHBlYWssIDI0MyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBw ZWFrLCA0MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4gNDAvNDAvNDAu MCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAzOSBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz00MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEJvdW5kZWQgcXVhbnRpZmllciBv biBhbHRlcm5hdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9ib3VuZGVkX2FsdCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpezIsM30gQykKKyAgICBERUZJTkUgQSBB UyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dy cF9ib3VuZGVkX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKXsyLDN9IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO ICgoQSB8IEIpezIsM30gQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMg PSAxLCBDIEFTIHYgJSAzID0gMgorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnBy X2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IChhIHwgYil7MiwzfSBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogOCBwZWFrLCAz MjAgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDIg cHJ1bmVkCisgICBORkE6IDE5IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChs ZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzggc2tpcHBlZCAobGVuIDEvMi8xLjUp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBOZXN0ZWQgZ3JvdXBzIHdpdGggcXVhbnRp ZmllcnMKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfbmVzdGVkX3F1YW50IEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKCgoQSBCKSsgQykqKQorICAgIERFRklORSBBIEFTIHYgJSAzID0g MCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX25lc3RlZF9x dWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg ICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVS TiAoKChhIGIpKyBjKSopIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikrIEMpKikKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYScgYicpKyIgYykq CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogOSBwZWFrLCAxNzggdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIwIHBydW5lZAorICAgTkZBOiAzIG1h dGNoZWQgKGxlbiAwLzU3LzE5LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwg Mzcgc2tpcHBlZCAobGVuIDEvMy8yLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBQ YXJ0aWFsIG5lc3RlZCBxdWFudGlmaWNhdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9wYXJ0 aWFsX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIEMpKykqKQor ICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAy CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfZ3JwX3BhcnRpYWxfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIChiIGMpKykqKSAKKygxIHJvdykKKworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoKEEgKEIgQykrKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYg JSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg IHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiAoYSAoYiBjKSspKgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3Jh Z2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDcgcGVhaywg MTYwIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDYxIHRvdGFsLCAy MCBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVkIChsZW4gMC81Ny8xOS4wKSwgMCBtaXNtYXRjaGVk CisgICBORkE6IDAgYWJzb3JiZWQsIDM3IHNraXBwZWQgKGxlbiAxLzMvMi4wKQorICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3Bz PTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBXaW5kb3cgRnVuY3Rpb24gQ29tYmluYXRpb25z CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIGNvdW50KCopIHdpdGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3dm bl9jb3VudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIg QVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX2NvdW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJw cl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNTUgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMzEgdG90YWwsIDAgcHJ1bmVkCisg ICBORkE6IDYgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTgg YWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNiBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29w cz0xKQorKDEwIHJvd3MpCisKKy0tIGZpcnN0X3ZhbHVlIHdpdGggcGF0dGVybgorQ1JFQVRFIFZJ RVcgcnByX2V2X3dmbl9maXJzdF92YWx1ZSBBUworU0VMRUNUIGZpcnN0X3ZhbHVlKHYpIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX2ZpcnN0 X3ZhbHVlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg IGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Zmlyc3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz0zMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgMzEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVu IDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTggYWJzb3JiZWQgKGxlbiAxLzEvMS4w KSwgNiBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVy YXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t IGxhc3RfdmFsdWUgd2l0aCBwYXR0ZXJuCitDUkVBVEUgVklFVyBycHJfZXZfd2ZuX2xhc3RfdmFs dWUgQVMKK1NFTEVDVCBsYXN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIg QVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX2xhc3RfdmFsdWUnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBsYXN0X3ZhbHVlKHYpIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBB IEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdp bmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWss IDU1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDMxIHRvdGFsLCAw IHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisg ICBORkE6IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDYgc2tpcHBlZCAobGVuIDEvMS8xLjAp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 MzAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBNdWx0aXBsZSB3aW5kb3cgZnVuY3Rpb25z CitDUkVBVEUgVklFVyBycHJfZXZfd2ZuX211bHRpIEFTCitTRUxFQ1QKKyAgICBjb3VudCgqKSBP VkVSIHcsCisgICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFsdWUodikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5fbXVs dGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGlu ZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVAorICAg IGNvdW50KCopIE9WRVIgdywKKyAgICBmaXJzdF92YWx1ZSh2KSBPVkVSIHcsCisgICAgbGFzdF92 YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAg TkZBIFN0YXRlczogMyBwZWFrLCA1NSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog MiBwZWFrLCAzMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gNS81LzUu MCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxOCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA2IHNr aXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2Vy aWVzIHMgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBERUZJTkUgRXhwcmVzc2lvbiBWYXJpYXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbXBsZXggYm9vbGVh biBleHByZXNzaW9ucworQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9jb21wbGV4X2Jvb2wgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDUgPD4gMCkgQU5EICh2 ICUgMyA8PiAwKSwKKyAgICAgICAgQiBBUyAodiAlIDUgPSAwKSBPUiAodiAlIDMgPSAwKQorKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X2RlZl9jb21wbGV4X2Jvb2wnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDUg PD4gMCkgQU5EICh2ICUgMyA8PiAwKSwKKyAgICAgICAgQiBBUyAodiAlIDUgPSAwKSBPUiAodiAl IDMgPSAwKQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA3OCB0b3RhbCwgMCBtZXJnZWQKKyAg IE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgNiBwcnVuZWQKKyAgIE5GQTogMTcgbWF0 Y2hlZCAobGVuIDIvMy8yLjYpLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTAgYWJzb3JiZWQgKGxl biAxLzEvMS4wKSwgMTcgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLSBVc2luZyBQUkVWIGZ1bmN0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfZGVmX3By ZXYgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoUyBVKyBEKykKKyAgICBERUZJTkUKKyAgICAgICAgUyBBUyBUUlVFLAor ICAgICAgICBVIEFTIHYgPiBQUkVWKHYpLAorICAgICAgICBEIEFTIHYgPCBQUkVWKHYpCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfZGVmX3ByZXYnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRU RVJOIChzIHUrIGQrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoUyBVKyBEKykKKyAgICBERUZJTkUKKyAgICAgICAgUyBBUyBUUlVF LAorICAgICAgICBVIEFTIHYgPiBQUkVWKHYpLAorICAgICAgICBEIEFTIHYgPCBQUkVWKHYpCisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogcyB1KyBkKworICAgTmF2 IE1hcmsgTG9va2JhY2s6IDEKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDYwIHBlYWssIDQ2NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBD b250ZXh0czogMzEgcGVhaywgMzEgdG90YWwsIDEgcHJ1bmVkCisgICBORkE6IDAgbWF0Y2hlZCwg MjkgbWlzbWF0Y2hlZCAobGVuIDIvMzAvMTYuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorKDkgcm93cykKKwor LS0gVXNpbmcgMS1hcmcgUFJFViAoaW1wbGljaXQgb2Zmc2V0IDEpCitDUkVBVEUgVklFVyBycHJf ZXZfbmF2X3ByZXYxIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg VFJVRSwKKyAgICAgICAgQiBBUyB2ID4gUFJFVih2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25hdl9wcmV2MScpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVWfE5FWFQnOwor ICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSBiKykgCisgICBERUZJTkUKKyAgIGIgQVMgKHYgPiBQUkVWKHYpKSApOworKDMg cm93cykKKworLS0gVXNpbmcgMS1hcmcgTkVYVCAoaW1wbGljaXQgb2Zmc2V0IDEpCitDUkVBVEUg VklFVyBycHJfZXZfbmF2X25leHQxIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2IDwgTkVYVCh2KQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25hdl9u ZXh0MScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVW fE5FWFQnOworICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYSBiKykgCisgICBERUZJTkUKKyAgIGIgQVMgKHYgPCBORVhUKHYp KSApOworKDMgcm93cykKKworLS0gVXNpbmcgMi1hcmcgUFJFViAoZXhwbGljaXQgb2Zmc2V0KQor Q1JFQVRFIFZJRVcgcnByX2V2X25hdl9wcmV2MiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA+IFBSRVYodiwgMikKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9uYXZfcHJldjInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxE RUZJTkV8UFJFVnxORVhUJzsKKyAgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBi KykgCisgICBERUZJTkUKKyAgIGIgQVMgKHYgPiBQUkVWKHYsICgyKTo6YmlnaW50KSkgKTsKKygz IHJvd3MpCisKKy0tIFVzaW5nIDItYXJnIE5FWFQgKGV4cGxpY2l0IG9mZnNldCkKK0NSRUFURSBW SUVXIHJwcl9ldl9uYXZfbmV4dDIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPCBORVhUKHYsIDIpCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbmF2 X25leHQyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBS RVZ8TkVYVCc7CisgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYispIAorICAg REVGSU5FCisgICBiIEFTICh2IDwgTkVYVCh2LCAoMik6OmJpZ2ludCkpICk7CisoMyByb3dzKQor CistLSBVc2luZyBOVUxMIGNvbXBhcmlzb25zCitDUkVBVEUgVklFVyBycHJfZXZfZGVmX251bGwg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBDQVNFIFdIRU4g diAlIDUgPSAwIFRIRU4gTlVMTCBFTFNFIHYgRU5EIEFTIHYKKyAgICBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAzMCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2IElTIE5PVCBO VUxMLCBCIEFTIHYgSVMgTlVMTAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2RlZl9udWxsJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgK KyAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2 CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiBJUyBOT1QgTlVMTCwgQiBBUyB2IElTIE5VTEwKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDMgcGVhaywgNTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywg MzEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1p c21hdGNoZWQKKyAgIE5GQTogMTggYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNiBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyB2IChh Y3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTGFyZ2Ug U2NhbGUgU3RhdGlzdGljcyBWZXJpZmljYXRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gNTAwIHJvd3MgLSB2ZXJp Znkgc3RhdGlzdGljcyBzY2FsZSBjb3JyZWN0bHkKK0NSRUFURSBWSUVXIHJwcl9ldl9zY2FsZV81 MDByb3dzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDwgNywg QiBBUyB2ICUgMTAgPSA3LCBDIEFTIHYgJSAxMCA9IDgKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zY2FsZV81MDByb3dz JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5l ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIgYykgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDwgNywgQiBBUyB2ICUgMTAgPSA3LCBD IEFTIHYgJSAxMCA9IDgKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBs YWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiBhKyIgYiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA4NTEgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNTAxIHRvdGFsLCAxMDEgcHJ1bmVk CisgICBORkE6IDUwIG1hdGNoZWQgKGxlbiA4LzkvOS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6 IDI5OSBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA1MCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MDAu MDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCitD UkVBVEUgVklFVyBycHJfZXZfc2NhbGVfaGlnaF9tYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAg IERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zY2FsZV9o aWdoX21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgIGxpbmUgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYikgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 NTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYgorICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAg IE5GQSBTdGF0ZXM6IDIgcGVhaywgNTAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRz OiAyIHBlYWssIDUwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMjUwIG1hdGNoZWQgKGxlbiAy LzIvMi4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDI1MCBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChh Y3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBIaWdoIHNraXAgY291 bnQgc2NlbmFyaW8KK0NSRUFURSBWSUVXIHJwcl9ldl9zY2FsZV9oaWdoX3NraXAgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ICUgMTAwID0gMSwKKyAg ICAgICAgQiBBUyB2ICUgMTAwID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMTAwID0gMywKKyAgICAg ICAgRCBBUyB2ICUgMTAwID0gNCwKKyAgICAgICAgRSBBUyB2ICUgMTAwID0gNQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X3NjYWxlX2hpZ2hfc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOIChhIGIgYyBkIGUpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAgICAg ICBBIEFTIHYgJSAxMDAgPSAxLAorICAgICAgICBCIEFTIHYgJSAxMDAgPSAyLAorICAgICAgICBD IEFTIHYgJSAxMDAgPSAzLAorICAgICAgICBEIEFTIHYgJSAxMDAgPSA0LAorICAgICAgICBFIEFT IHYgJSAxMDAgPSA1CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSBiIGMgZCBlCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCA1MDEgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNTAxIHRvdGFsLCA0OTAgcHJ1bmVk CisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTog MCBhYnNvcmJlZCwgNSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2Fu IG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLQorLS0gUGxhbm5lciBvcHRpbWl6YXRpb246IG9wdGltaXplX3dpbmRvd19jbGF1 c2VzIG11c3Qgbm90IGFsdGVyIFJQUiBmcmFtZQorLS0KKy0tIG9wdGltaXplX3dpbmRvd19jbGF1 c2VzKCkgcmVwbGFjZXMgZnJhbWUgb3B0aW9ucyB2aWEgcHJvc3VwcG9ydCBmdW5jdGlvbnMuCist LSBBZmZlY3RlZCBmdW5jdGlvbnM6IHJvd19udW1iZXIsIHJhbmssIGRlbnNlX3JhbmssIHBlcmNl bnRfcmFuaywgY3VtZV9kaXN0LAorLS0gbnRpbGUuICBBbGwgd291bGQgY2hhbmdlIHRoZSBmcmFt ZSB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcsIGJyZWFraW5nCistLSBSUFIncyByZXF1aXJl ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcuCistLSBU ZXN0IHdpdGggcm93X251bWJlcigpIGFzIHJlcHJlc2VudGF0aXZlIGNhc2UuCistLQorLS0gV2l0 aG91dCBSUFI6IHJvd19udW1iZXIoKSBmcmFtZSBpcyBvcHRpbWl6ZWQgdG8gUk9XUyBVTkJPVU5E RUQgUFJFQ0VESU5HCitDUkVBVEUgVklFVyBycHJfZXZfb3B0X25vX3JwciBBUworU0VMRUNUIHJv d19udW1iZXIoKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdgorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBycHJfZXZfb3B0X25vX3JwcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4g b24gcnByX2V2X29wdF9ub19ycHIKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgcy52IFJPV1MgVU5CT1VOREVEIFBSRUNFRElORykKKyAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcy52CisgICAgICAgICAgICAgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDYgcm93cykKKworLS0gV2l0aCBS UFI6IGZyYW1lIG11c3QgcmVtYWluIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworQ1JFQVRFIFZJRVcgcnByX2V2X29wdF93aXRoX3JwciBBUworU0VMRUNU IHJvd19udW1iZXIoKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdgorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEIgQVMgdiA+ IFBSRVYodikKKyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2X29w dF93aXRoX3JwcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gcnByX2V2X29wdF93aXRoX3Jwcgor ICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBzLnYgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAg UGF0dGVybjogYSBiKworICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcy52CisgICAgICAgICAgICAgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDggcm93cykKKworLS0KKy0tIFBs YW5uZXIgb3B0aW1pemF0aW9uOiBub24tUlBSIGFuZCBSUFIgd2luZG93cyB0aGF0IHNoYXJlIHRo ZSBzYW1lIGJhc2UgZnJhbWUKKy0tIGFmdGVyIGZyYW1lIG9wdGltaXphdGlvbiBhcmUga2VwdCBh cyBzZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuCistLQorQ1JFQVRFIFZJRVcgcnByX2V2X29wdF9t aXhlZCBBUworU0VMRUNUCisgICAgcm93X251bWJlcigpIE9WRVIgd19ub3JtYWwgQVMgcm5fbm9y bWFsLAorICAgIHJvd19udW1iZXIoKSBPVkVSIHdfcnByIEFTIHJuX3JwcgorRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSkgQVMgcyh2KQorV0lORE9XCisgICAgd19ub3JtYWwgQVMgKE9SREVSIEJZ IHYgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyksCisg ICAgd19ycHIgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykK KyAgICAgICAgREVGSU5FIEEgQVMgdiA+IDEKKyAgICApOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHJwcl9ldl9vcHRfbWl4ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNj YW4gb24gcnByX2V2X29wdF9taXhlZAorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93 OiB3X3JwciBBUyAoT1JERVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGErIgorICAgICAgICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgICAgICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgICAgICAgIFdp bmRvdzogd19ub3JtYWwgQVMgKE9SREVSIEJZIHMudiBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcp CisgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6 IHMudgorICAgICAgICAgICAgICAgICAgICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMKKygxMCByb3dzKQorCistLQorLS0gUGxhbm5lciBvcHRpbWl6YXRpb246IGZpbmRf d2luZG93X3J1bl9jb25kaXRpb25zIG11c3Qgbm90IHB1c2ggZG93bgorLS0gUlBSIHdpbmRvdyBm dW5jdGlvbiByZXN1bHRzIGFzIFJ1biBDb25kaXRpb25zLgorLS0KKy0tIGZpbmRfd2luZG93X3J1 bl9jb25kaXRpb25zKCkgcHVzaGVzIFdIRVJFIGZpbHRlcnMgb24gbW9ub3RvbmljIHdpbmRvdwor LS0gZnVuY3Rpb25zIGludG8gV2luZG93QWdnIGFzIFJ1biBDb25kaXRpb25zIGZvciBlYXJseSB0 ZXJtaW5hdGlvbi4KKy0tIFdpdGggUlBSJ3MgcmVxdWlyZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVECistLSBGT0xMT1dJTkcpLCB0aGUgbW9ub3RvbmljIGRp cmVjdGlvbiBkZXRlcm1pbmVzIHdoaWNoIG9wZXJhdG9ycyB0cmlnZ2VyCistLSBSdW4gQ29uZGl0 aW9uIHB1c2hkb3duOgorLS0gICBJTkNSRUFTSU5HICg8PSk6IHJvd19udW1iZXIsIHJhbmssIGRl bnNlX3JhbmssIHBlcmNlbnRfcmFuaywKKy0tICAgICAgICAgICAgICAgICAgICBjdW1lX2Rpc3Qs IG50aWxlCistLSAgIERFQ1JFQVNJTkcgKD4pOiAgY291bnQoKikgKHZpYSBpbnQ4aW5jLCBFTkRf VU5CT1VOREVEX0ZPTExPV0lORykKKy0tIFJQUiB3aW5kb3cgZnVuY3Rpb24gcmVzdWx0cyBhcmUg bWF0Y2gtZGVwZW5kZW50LCBub3QgbW9ub3RvbmljLgorLS0gVGVzdCB3aXRoIGNvdW50KCopID4g MCBhcyByZXByZXNlbnRhdGl2ZSBjYXNlLgorLS0KKy0tIFdpdGhvdXQgUlBSOiBjb3VudCgqKSA+ IDAgaXMgcHVzaGVkIGRvd24gYXMgUnVuIENvbmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorICAgIFdJTkRPVyB3IEFTICgKKyAg ICAgICAgT1JERVIgQlkgdgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICApCispIHQgV0hFUkUgY250ID4gMDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1 ZXJ5IFNjYW4gb24gdAorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChP UkRFUiBCWSBzLnYgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgICAgICAgUnVuIENvbmRpdGlvbjogKGNvdW50KCopIE9WRVIgdyA+IDApCisgICAg ICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHMudgorICAgICAgICAgICAg ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg3IHJvd3MpCisKKy0t IFdpdGggUlBSOiBjb3VudCgqKSA+IDAgbXVzdCBub3QgYmUgcHVzaGVkIGRvd24gYXMgUnVuIENv bmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNU IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkg QVMgcyh2KQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgdgorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKEEgQispCisg ICAgICAgIERFRklORQorICAgICAgICAgICAgQiBBUyB2ID4gUFJFVih2KQorICAgICkKKykgdCBX SEVSRSBjbnQgPiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB0CisgICBGaWx0ZXI6ICh0LmNu dCA+IDApCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZ IHMudiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMQorICAg ICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBzLnYKKyAgICAgICAgICAg ICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoOSByb3dzKQorCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIE5hdiBNYXJrIExvb2tiYWNrL0xvb2thaGVhZCBUZXN0cworLS0gVmVyaWZpZXMg cGxhbm5lci1jb21wdXRlZCBuYXZpZ2F0aW9uIG9mZnNldHMgZm9yIHR1cGxlc3RvcmUgdHJpbS4K Ky0tIExvb2tiYWNrOiBob3cgZmFyIGJhY2sgZnJvbSBjdXJyZW50cG9zIChQUkVWLCBMQVNULCBj b21wb3VuZCBQUkVWX0xBU1QvTkVYVF9MQVNUKS4KKy0tIExvb2thaGVhZDogaG93IGZhciBmb3J3 YXJkIGZyb20gbWF0Y2hfc3RhcnQgKEZJUlNULCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklS U1QpLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBQcmVwYXJlIHN0YXRlbWVudCBmb3IgaG9zdCB2YXJpYWJsZSBvZmZz ZXQgdGVzdCBiZWxvdworUFJFUEFSRSBycHJfbmF2X29mZnNldF9wcmVwKGludDgpIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA+IFBSRVYodiwgJDEp CispOworLS0gTm8gbmF2aWdhdGlvbiBmdW5jdGlvbjogb2Zmc2V0IDAKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPiAw CispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gTkVYVCBvbmx5OiBubyBiYWNr d2FyZCBuYXZpZ2F0aW9uLCBvZmZzZXQgMAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA8IE5FWFQodikKKyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEr IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVy YXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBQUkVWKHYpOiBpbXBsaWNpdCBvZmZzZXQgMQor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdiA+IFBSRVYodikKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDEK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCist LSBQUkVWKHYsIDMpOiBleHBsaWNpdCBjb25zdGFudCBvZmZzZXQgMworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA+IFBS RVYodiwgMykKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDMKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBUd28gUFJFViB3 aXRoIGRpZmZlcmVudCBvZmZzZXRzOiBtYXgoMSwgNSkgPSA1CitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYsIDEp IDwgdiBBTkQgUFJFVih2LCA1KSA8IHYKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDUKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQor CistLSBIb3N0IHZhcmlhYmxlIG9mZnNldDogY3VzdG9tIHBsYW4gcmVzb2x2ZXMgJDE9MiB0byBj b25zdGFudCAyCitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcnByX25hdl9vZmZzZXRfcHJl cCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMgorICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg1IHJvd3MpCisKKy0tIEZvcmNlIGdlbmVyaWMgcGxh bjogb2Zmc2V0IGJlY29tZXMgInJ1bnRpbWUiIChQYXJhbSBub2RlKQorU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBy cHJfbmF2X29mZnNldF9wcmVwKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiBydW50 aW1lCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykK KworUkVTRVQgcGxhbl9jYWNoZV9tb2RlOworREVBTExPQ0FURSBycHJfbmF2X29mZnNldF9wcmVw OworLS0gRklSU1Qodik6IHJldGFpbiBhbGwgKHJlZmVyZW5jZXMgbWF0Y2hfc3RhcnQgcm93KQor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdiA+IEZJUlNUKHYpCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIE5hdiBNYXJrIExvb2thaGVhZDogMAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMKKyg2IHJvd3MpCisKKy0tIExBU1QodiwgMSk6IGJhY2t3YXJkIHJlYWNoIDEs IHNhbWUgYXMgUFJFVih2LCAxKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTEFTVCh2LCAxKSA+IDAKKyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErCisg ICBOYXYgTWFyayBMb29rYmFjazogMQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMKKyg1IHJvd3MpCisKKy0tIExBU1Qodikgd2l0aG91dCBvZmZzZXQgKyBQUkVWKHYp OiBubyBtYXRjaF9zdGFydCBkZXBlbmRlbmN5LCBvZmZzZXQgMQorRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTEFTVCh2KSA+ IFBSRVYodikKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBDb21wb3VuZCBQ UkVWKEZJUlNUKHZhbCwgMSksIDIpOiBsb29rYmFjayBmcm9tIG1hdGNoX3N0YXJ0LCBmaXJzdE9m ZnNldCA9IDEtMiA9IC0xCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKHYsIDEpLCAyKSA+IDAKKyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGErCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgTmF2IE1hcmsgTG9va2FoZWFkOiAtMQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg2IHJvd3MpCisKKy0t IENvbXBvdW5kIE5FWFQoRklSU1QodmFsKSwgMyk6IGZpcnN0T2Zmc2V0ID0gMCszID0gMworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgTkVYVChGSVJTVCh2KSwgMykgPiAwCispOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIE5hdiBNYXJrIExvb2thaGVhZDogMworICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5kIFBSRVYoTEFTVCh2YWwp LCAyKTogbG9va2JhY2sgPSAwKzIgPSAyCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QodiksIDIpID4gMAor KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMgorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg1IHJvd3MpCisKKy0tIENvbXBvdW5kIE5FWFQoTEFTVCh2 YWwsIDEpLCAzKTogbG9va2JhY2sgPSBtYXgoMS0zLCAwKSA9IDAKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoTEFT VCh2LCAxKSwgMykgPiAwCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZwor ICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBDb21w b3VuZCBQUkVWKExBU1QodmFsLCBOKSwgTSk6IGNvbnN0YW50IG5lYXItb3ZlcmZsb3cgKE4rTSBq dXN0IGZpdHMgaW50NjQpCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QodiwgNDYxMTY4NjAxODQyNzM4Nzkw MyksIDQ2MTE2ODYwMTg0MjczODc5MDMpIElTIE5PVCBOVUxMCispOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1h cmsgTG9va2JhY2s6IDkyMjMzNzIwMzY4NTQ3NzU4MDYKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBDb21wb3VuZCBQUkVWKExBU1QodmFs LCBOKSwgTSk6IGNvbnN0YW50IG92ZXJmbG93IC0+IHJldGFpbiBhbGwKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYo TEFTVCh2LCA0NjExNjg2MDE4NDI3Mzg3OTA0KSwgNDYxMTY4NjAxODQyNzM4NzkwNCkgSVMgTk9U IE5VTEwKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IGErCisgICBOYXYgTWFyayBMb29rYmFjazogcmV0YWluIGFsbAorICAgLT4g IEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg1IHJvd3MpCisKKy0tIENvbXBv dW5kIE5FWFQoRklSU1QodmFsLCBOKSwgTSk6IGNvbnN0YW50IGxvb2thaGVhZCBvdmVyZmxvdyAt PiBpbmZpbml0ZQorLS0gTiArIE0gb3ZlcmZsb3dzIGludDY0OyBmb3J3YXJkIHJlYWNoIGlzIHVu Ym91bmRlZCwgZGlzcGxheWVkIGFzIGluZmluaXRlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChGSVJTVCh2LCA0 NjExNjg2MDE4NDI3Mzg3OTA0KSwgNDYxMTY4NjAxODQyNzM4NzkwNCkgSVMgTk9UIE5VTEwKKyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IGErCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgTmF2IE1hcmsgTG9va2FoZWFkOiBp bmZpbml0ZQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg2IHJv d3MpCisKKy0tIENvbXBvdW5kIFBSRVYoTEFTVCh2YWwsICQxKSwgJDIpOiBwYXJhbWV0ZXIgbG9v a2JhY2sgb3ZlcmZsb3cgLT4gcmV0YWluIGFsbAorLS0gRVhQTEFJTiBzaG93cyAicnVudGltZSIg KHBsYW4tbGV2ZWwpOyBFWFBMQUlOIEFOQUxZWkUgc2hvd3MgInJldGFpbiBhbGwiCistLSAoZXhl Y3V0b3ItcmVzb2x2ZWQpLgorUFJFUEFSRSB0ZXN0X292ZXJmbG93X2xvb2tiYWNrKGludDgsIGlu dDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJF VihMQVNUKHYsICQxKSwgJDIpIElTIE5PVCBOVUxMCispOworU0VUIHBsYW5fY2FjaGVfbW9kZSA9 IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSB0ZXN0X292 ZXJmbG93X2xvb2tiYWNrKDQ2MTE2ODYwMTg0MjczODc5MDQsIDQ2MTE2ODYwMTg0MjczODc5MDQp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IHJ1bnRpbWUKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYs IEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorICAgIEVYRUNVVEUgdGVzdF9vdmVy Zmxvd19sb29rYmFjayg0NjExNjg2MDE4NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3OTA0KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErCisgICBOYXYgTWFyayBMb29r YmFjazogcmV0YWluIGFsbAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDE3 a0IKKyAgIE5GQSBTdGF0ZXM6IDEgcGVhaywgMTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgMTEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAwIG1hdGNoZWQsIDAg bWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTEwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCitSRVNFVCBwbGFuX2NhY2hlX21v ZGU7CitERUFMTE9DQVRFIHRlc3Rfb3ZlcmZsb3dfbG9va2JhY2s7CistLSBDb21wb3VuZCBORVhU KEZJUlNUKHZhbCwgJDEpLCAkMik6IHBhcmFtZXRlciBsb29rYWhlYWQgb3ZlcmZsb3cgLT4gaW5m aW5pdGUKK1BSRVBBUkUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQoaW50OCwgaW50OCkgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKEZJUlNUKHYs ICQxKSwgJDIpIElTIE5PVCBOVUxMCispOworU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dl bmVyaWNfcGxhbjsKK0VYUExBSU4gKENPU1RTIE9GRiwgQU5BTFlaRSwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCisgICAgRVhFQ1VURSB0ZXN0X292ZXJmbG93X2xvb2thaGVhZCg0NjExNjg2MDE4 NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3OTA0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6 IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IGErCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgTmF2IE1hcmsgTG9v a2FoZWFkOiBpbmZpbml0ZQorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDE3 a0IKKyAgIE5GQSBTdGF0ZXM6IDEgcGVhaywgMTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgMTEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAwIG1hdGNoZWQsIDAg bWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTEwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworUkVTRVQgcGxhbl9jYWNoZV9t b2RlOworREVBTExPQ0FURSB0ZXN0X292ZXJmbG93X2xvb2thaGVhZDsKKy0tIFBSRVYodikgKyBQ UkVWKHYsICQxKTogTkVFRFNfRVZBTCBwYXRoIG11c3QgYWNjb3VudCBmb3IgaW1wbGljaXQgbG9v a2JhY2s9MQorLS0gUHJldmlvdXNseSwgZXZhbF9uYXZfbWF4X29mZnNldF93YWxrZXIgc2tpcHBl ZCBQUkVWKHYpIHdoZW4gb2Zmc2V0X2FyZyB3YXMKKy0tIE5VTEwsIGNhdXNpbmcgbWF4T2Zmc2V0 PTAgd2hlbiAkMT0wLCB3aGljaCB3b3VsZCB0cmltIHRoZSByb3cgbmVlZGVkIGJ5CistLSBQUkVW KHYpLiAgVmVyaWZ5IHRoaXMgZXhlY3V0ZXMgd2l0aG91dCAiY2Fubm90IGZldGNoIHJvdyBiZWZv cmUgbWFyayIgZXJyb3IuCitQUkVQQVJFIHRlc3RfcHJldl9pbXBsaWNpdF9vZmZzZXQoaW50OCkg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYp IElTIE5PVCBOVUxMIEFORCBQUkVWKHYsICQxKSBJUyBOT1QgTlVMTAorKTsKK0VYRUNVVEUgdGVz dF9wcmV2X2ltcGxpY2l0X29mZnNldCgwKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAg ICA5CisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAg IDAKKyAgICAgMAorKDEwIHJvd3MpCisKK0RFQUxMT0NBVEUgdGVzdF9wcmV2X2ltcGxpY2l0X29m ZnNldDsKKy0tIFJ1bnRpbWUgZXJyb3I6IG5lZ2F0aXZlIG9mZnNldCBhdCBleGVjdXRpb24gdGlt ZQorUFJFUEFSRSB0ZXN0X3J1bnRpbWVfbmVnX29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodiwgJDEpIElTIE5PVCBOVUxM CispOworRVhFQ1VURSB0ZXN0X3J1bnRpbWVfbmVnX29mZnNldCgtMSk7CitFUlJPUjogIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCitERUFMTE9DQVRF IHRlc3RfcnVudGltZV9uZWdfb2Zmc2V0OworLS0gUnVudGltZSBlcnJvcjogbnVsbCBvZmZzZXQg YXQgZXhlY3V0aW9uIHRpbWUKK1BSRVBBUkUgdGVzdF9ydW50aW1lX251bGxfb2Zmc2V0KGludDgp IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2 LCAkMSkgSVMgTk9UIE5VTEwKKyk7CitFWEVDVVRFIHRlc3RfcnVudGltZV9udWxsX29mZnNldChO VUxMKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUg bnVsbAorREVBTExPQ0FURSB0ZXN0X3J1bnRpbWVfbnVsbF9vZmZzZXQ7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjgwYTMyY2NhOWFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CkBAIC0wLDAgKzEsMTUyMSBA QAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBSUFIgSW50ZWdyYXRpb24gVGVzdHMKKy0tIFBsYW5uZXIgb3B0aW1pemF0 aW9uIGludGVyYWN0aW9uIHRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbgorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLQorLS0gVmVyaWZpZXMgdGhhdCBlYWNoIHBsYW5uZXIgb3B0aW1pemF0aW9uIGNvcnJlY3Rs eSBoYW5kbGVzIFJQUiB3aW5kb3dzLgorLS0gRXZlbiBpZiBpbmRpdmlkdWFsIG9wdGltaXphdGlv bnMgYXJlIHRlc3RlZCBlbHNld2hlcmUsIHRoaXMgZmlsZQorLS0gcHJvdmlkZXMgYSBzaW5nbGUg Y2hlY2twb2ludCBmb3IgYWxsIHBsYW5uZXIvUlBSIGludGVyYWN0aW9ucy4KKy0tCistLSBBLiBQ bGFubmVyIE9wdGltaXphdGlvbiBQcm90ZWN0aW9uIFRlc3RzCistLSAgICBBMS4gRnJhbWUgb3B0 aW1pemF0aW9uIGJ5cGFzcworLS0gICAgQTIuIFJ1biBjb25kaXRpb24gcHVzaGRvd24gYnlwYXNz CistLSAgICBBMy4gV2luZG93IGRlZHVwIHByZXZlbnRpb24gKFJQUiB2cyBub24tUlBSKQorLS0g ICAgQTQuIFdpbmRvdyBkZWR1cCBwcmV2ZW50aW9uIChzYW1lIFBBVFRFUk4sIGRpZmZlcmVudCBE RUZJTkUpCistLSAgICBBNS4gVW51c2VkIHdpbmRvdyByZW1vdmFsIHByZXZlbnRpb24KKy0tICAg IEE2LiBJbnZlcnNlIHRyYW5zaXRpb24gYnlwYXNzCistLSAgICBBNy4gQ29zdCBlc3RpbWF0aW9u IFJQUiBhd2FyZW5lc3MKKy0tICAgIEE4LiBTdWJxdWVyeSBmbGF0dGVuaW5nIHByZXZlbnRpb24K Ky0tICAgIEE5LiBERUZJTkUgZXhwcmVzc2lvbiBub24tcHJvcGFnYXRpb24KKy0tICAgIEExMC4g UlBSICsgTElNSVQKKy0tCistLSBCLiBJbnRlZ3JhdGlvbiBTY2VuYXJpbyBUZXN0cworLS0gICAg QjEuIFJQUiArIENURQorLS0gICAgQjIuIFJQUiArIEpPSU4KKy0tICAgIEIzLiBSUFIgKyBTZXQg b3BlcmF0aW9ucworLS0gICAgQjQuIFJQUiArIFByZXBhcmVkIHN0YXRlbWVudHMKKy0tICAgIEI1 LiBSUFIgKyBQYXJ0aXRpb25lZCB0YWJsZQorLS0gICAgQjYuIFJQUiArIExBVEVSQUwKKy0tICAg IEI3LiBSUFIgKyBSZWN1cnNpdmUgQ1RFCistLSAgICBCOC4gUlBSICsgSW5jcmVtZW50YWwgc29y dAorLS0gICAgQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQorLS0gICAgQjEw LiBSUFIgKyBDb3JyZWxhdGVkIHN1YnF1ZXJ5CistLQorQ1JFQVRFIFRBQkxFIHJwcl9pbnRlZyAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9pbnRlZyBWQUxVRVMKKyAgICAoMSwg MTApLCAoMiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgNSksCisgICAgKDYsIDMwKSwgKDcs IDM1KSwgKDgsIDIwKSwgKDksIDQwKSwgKDEwLCA0NSk7CistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEExLiBGcmFtZSBv cHRpbWl6YXRpb24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IG9wdGltaXplX3dpbmRv d19jbGF1c2VzKCkgZG9lcyBub3QgYXBwbHkgZnJhbWUKKy0tIG9wdGltaXphdGlvbiB0byBSUFIg d2luZG93cy4gIEJvdGggcXVlcmllcyBiZWxvdyB1c2UgdGhlIHNhbWUgaW5wdXQKKy0tIGZyYW1l IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIHdpdGgK Ky0tIHJvd19udW1iZXIoKSwgd2hvc2UgcHJvc3VwcG9ydCBoYW5kbGVzCistLSBTdXBwb3J0UmVx dWVzdE9wdGltaXplV2luZG93Q2xhdXNlIGFuZCB0cmlnZ2VycyBmcmFtZSByZXdyaXRpbmcuCist LSBJbiB0aGUgbm9uLVJQUiBiYXNlbGluZSB0aGUgcGxhbm5lciByZXdyaXRlcyB0aGUgZnJhbWUg dG8gUk9XUworLS0gVU5CT1VOREVEIFBSRUNFRElORywgd2hpbGUgaW4gdGhlIFJQUiBjYXNlIHRo ZSBndWFyZCBpbgorLS0gb3B0aW1pemVfd2luZG93X2NsYXVzZXMoKSBibG9ja3MgdGhlIHJld3Jp dGUgYW5kIHRoZSBmcmFtZSBpcworLS0gcHJlc2VydmVkIGFzIHNwZWNpZmllZC4KKy0tIE5vbi1S UFIgYmFzZWxpbmU6IHRoZSBwbGFubmVyIHJld3JpdGVzIHRoZSBmcmFtZSB0byBST1dTIFVOQk9V TkRFRCBQUkVDRURJTkcuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgcm93X251bWJlcigp IE9WRVIgdyBGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKTsKKyAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBVTkJPVU5ERUQgUFJFQ0VESU5H KQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9pbnRlZworKDUgcm93cykKKworLS0gUlBSIGNhc2U6IHRoZSBmcmFtZSBpcyBw cmVzZXJ2ZWQgYXMgc3BlY2lmaWVkLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHJvd19u dW1iZXIoKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiKworICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDEKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfaW50ZWcKKyg3IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTIuIFJ1biBjb25k aXRpb24gcHVzaGRvd24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IGZpbmRfd2luZG93 X3J1bl9jb25kaXRpb25zKCkgZG9lcyBub3QgcHVzaCBhIG1vbm90b25pYworLS0gZmlsdGVyIGRv d24gYXMgYSBSdW4gQ29uZGl0aW9uIG9uIFJQUiB3aW5kb3dzLiAgUlBSIG1hdGNoIGNvdW50cyBh cmUKKy0tIGRldGVybWluZWQgYnkgcGF0dGVybiBtYXRjaGluZyByYXRoZXIgdGhhbiBieSBhIG1v bm90b25pYworLS0gYWNjdW11bGF0aW9uIG92ZXIgdGhlIGZyYW1lLCBzbyBhIGZpbHRlciBzdWNo IGFzICJjbnQgPiAwIiBjYW5ub3QgYmUKKy0tIHVzZWQgdG8gc3RvcCBldmFsdWF0aW5nIHRoZSB3 aW5kb3cgZnVuY3Rpb24gZWFybHkuCistLSBOb24tUlBSIGJhc2VsaW5lOiB0aGUgZmlsdGVyIGlz IGV4cGVjdGVkIHRvIGFwcGVhciBhcyBhIFJ1biBDb25kaXRpb24uCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGNudAor ICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKykgdCBX SEVSRSBjbnQgPiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB0 CisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9p bnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICAgICAgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3ID4gMCkKKyAgICAgICAg IC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcnByX2ludGVnLmlkCisgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoNyByb3dzKQorCistLSBSUFIgY2Fz ZTogdGhlIGZpbHRlciBtdXN0IGFwcGVhciBhcyBhIEZpbHRlciBhYm92ZSB0aGUgV2luZG93QWdn LAorLS0gbm90IGFzIGEgUnVuIENvbmRpdGlvbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCAqIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBy cHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4g KEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBj bnQgPiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB0CisgICBG aWx0ZXI6ICh0LmNudCA+IDApCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICBOYXYg TWFyayBMb29rYmFjazogMQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQg S2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50 ZWcKKyg5IHJvd3MpCisKKy0tIFZlcmlmeSB0aGF0IHRoZSBSUFIgcXVlcnkgc3RpbGwgcmV0dXJu cyBldmVyeSByb3cgd2hvc2UgbWF0Y2ggY291bnQgaXMKKy0tIGdyZWF0ZXIgdGhhbiB6ZXJvLCBj b25maXJtaW5nIHRoZSBmaWx0ZXIgaXMgZXZhbHVhdGVkIGFib3ZlIHRoZQorLS0gV2luZG93QWdn IHJhdGhlciB0aGFuIGN1dHRpbmcgb2ZmIHBhdHRlcm4gbWF0Y2hpbmcgcHJlbWF0dXJlbHkuCitT RUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkp CispIHQgV0hFUkUgY250ID4gMAorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMyB8ICAxNSB8ICAgMgorICA1IHwgICA1 IHwgICAzCisgIDggfCAgMjAgfCAgIDMKKyg0IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTMuIFdpbmRv dyBkZWR1cCBwcmV2ZW50aW9uIChSUFIgdnMgbm9uLVJQUikKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRo YXQgUG9zdGdyZVNRTCBkb2VzIG5vdCBtZXJnZSBhbiBSUFIgd2luZG93IHdpdGggYSBub24tUlBS CistLSB3aW5kb3cgZXZlbiB3aGVuIGJvdGggc2hhcmUgdGhlIHNhbWUgT1JERVIgQlkgYW5kIGZy YW1lCistLSBzcGVjaWZpY2F0aW9uLiAgUlBSIHBhdHRlcm4gbWF0Y2hpbmcgcHJvZHVjZXMgcmVz dWx0cyB0aGF0IGFyZQorLS0gc2VtYW50aWNhbGx5IGRpZmZlcmVudCBmcm9tIGEgcGxhaW4gZnJh bWUtYmFzZWQgYWdncmVnYXRlLCBzbyB0aGUKKy0tIHR3byB3aW5kb3dzIG11c3QgcmVtYWluIGFz IHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4gIElubGluZSB3aW5kb3cKKy0tIHNwZWNzIGFyZSB1 c2VkIHRocm91Z2hvdXQgdGhpcyBzZWN0aW9uIGJlY2F1c2Ugb25seSBpbmxpbmUgd2luZG93cwor LS0gYXJlIHN1YmplY3QgdG8gdGhlIGRlZHVwIHBhdGg7IGRpc3RpbmN0IG5hbWVkIHdpbmRvd3Mg YXJlIGFsd2F5cworLS0ga2VwdCBzZXBhcmF0ZSByZWdhcmRsZXNzIG9mIGVxdWl2YWxlbmNlLgor LS0gTm9uLVJQUiBiYXNlbGluZTogdHdvIGlubGluZSB3aW5kb3dzIHdpdGggaWRlbnRpY2FsIHNw ZWMgYXJlCistLSBkZWR1cGVkIGJ5IHRoZSBwbGFubmVyIGludG8gYSBzaW5nbGUgV2luZG93QWdn IG5vZGUsIGNvbmZpcm1pbmcKKy0tIHRoYXQgdGhlIGRlZHVwIHBhdGggaXMgYWN0aXZlIGZvciBu b24tUlBSIHdpbmRvd3MuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgq KSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpIEFTIGNudCwKKyAgICBzdW0odmFsKSAgT1ZFUiAoT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKSBBUyB0b3RhbAorRlJPTSBycHJfaW50ZWc7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfaW50ZWcKKyg1IHJvd3MpCisKKy0tIEFuIGlubGluZSBSUFIgd2luZG93 IGFuZCBhbiBpbmxpbmUgbm9uLVJQUiB3aW5kb3cgc2hhcmUgdGhlIHNhbWUKKy0tIE9SREVSIEJZ IGFuZCBmcmFtZSBidXQgbXVzdCByZW1haW4gYXMgZGlzdGluY3QgV2luZG93QWdnIG5vZGVzLgor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBS RVYodmFsKSkgQVMgcnByX2NudCwKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAg ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIEFT IG5vcm1hbF9jbnQKK0ZST00gcnByX2ludGVnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6 IHcyIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcxIEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICBOYXYgTWFyayBMb29rYmFjazog MQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDkgcm93cykKKworLS0gVmVyaWZ5 IHRoYXQgdGhlIHR3byB3aW5kb3dzIHJldHVybiBpbmRlcGVuZGVudCBjb3VudHMgcGVyIHJvdywK Ky0tIGNvbmZpcm1pbmcgdGhleSB3ZXJlIG5vdCBtZXJnZWQgaW50byBhIHNpbmdsZSBXaW5kb3dB Z2cuCitTRUxFQ1QKKyAgICBpZCwgdmFsLAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpIEFTIHJwcl9jbnQsCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSBBUyBu b3JtYWxfY250CitGUk9NIHJwcl9pbnRlZworT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBycHJf Y250IHwgbm9ybWFsX2NudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAx IHwgIDEwIHwgICAgICAgMiB8ICAgICAgICAgMTAKKyAgMiB8ICAyMCB8ICAgICAgIDAgfCAgICAg ICAgICA5CisgIDMgfCAgMTUgfCAgICAgICAyIHwgICAgICAgICAgOAorICA0IHwgIDI1IHwgICAg ICAgMCB8ICAgICAgICAgIDcKKyAgNSB8ICAgNSB8ICAgICAgIDMgfCAgICAgICAgICA2CisgIDYg fCAgMzAgfCAgICAgICAwIHwgICAgICAgICAgNQorICA3IHwgIDM1IHwgICAgICAgMCB8ICAgICAg ICAgIDQKKyAgOCB8ICAyMCB8ICAgICAgIDMgfCAgICAgICAgICAzCisgIDkgfCAgNDAgfCAgICAg ICAwIHwgICAgICAgICAgMgorIDEwIHwgIDQ1IHwgICAgICAgMCB8ICAgICAgICAgIDEKKygxMCBy b3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEE0LiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoc2FtZSBQQVRU RVJOLCBkaWZmZXJlbnQgREVGSU5FKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBpbmxpbmUtd2lu ZG93IGRlZHVwIGRvZXMgbm90IG1lcmdlIHR3byBSUFIgd2luZG93cworLS0gdGhhdCBzaGFyZSB0 aGUgc2FtZSBQQVRURVJOIHN0cnVjdHVyZSBidXQgaGF2ZSBkaWZmZXJlbnQgREVGSU5FCistLSBj b25kaXRpb25zLiAgRXZlbiB0aG91Z2ggdGhlIE9SREVSIEJZLCBmcmFtZSwgYW5kIFBBVFRFUk4g Y29pbmNpZGUsCistLSB0aGUgZGlmZmVyaW5nIERFRklORSBleHByZXNzaW9ucyBjbGFzc2lmeSBy b3dzIGRpZmZlcmVudGx5IGFuZAorLS0gbXVzdCB0aGVyZWZvcmUgeWllbGQgdHdvIHNlcGFyYXRl IFdpbmRvd0FnZyBub2Rlcy4gIElubGluZSBzcGVjcworLS0gYXJlIHVzZWQgaGVyZSBiZWNhdXNl IGRlZHVwIG9ubHkgYXBwbGllcyB0byBpbmxpbmUgd2luZG93cy4KKy0tIEJhc2VsaW5lOiB0d28g aW5saW5lIFJQUiB3aW5kb3dzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwKKy0tIChz YW1lIE9SREVSIEJZLCBmcmFtZSwgUEFUVEVSTiwgYW5kIERFRklORSkgYXJlIGRlZHVwZWQgYnkg dGhlCistLSBwYXJzZXIgaW50byBhIHNpbmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29uZmlybWluZyB0 aGF0IHBhcnNlci1sZXZlbAorLS0gZGVkdXAgaXMgYWN0aXZlIGZvciBSUFIgd2luZG93cyB3aG9z ZSBERUZJTkUgbWF0Y2hlcy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50 KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBE RUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpIEFTIGNudCwKKyAgICBzdW0odmFsKSAgT1ZFUiAo T1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFT IHZhbCA+IFBSRVYodmFsKSkgQVMgdG90YWwKK0ZST00gcnByX2ludGVnOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcxIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazog MQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9pbnRlZworKDcgcm93cykKKworLS0gVHdvIGlubGluZSBSUFIgd2luZG93cyB3 aXRoIHRoZSBzYW1lIFBBVFRFUk4gYnV0IG9wcG9zaXRlIERFRklORQorLS0gY29uZGl0aW9ucyBt dXN0IHJlbWFpbiBhcyBzZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBjbnRf dXAsCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA8IFBSRVYodmFsKSkgQVMgY250X2Rvd24KK0ZS T00gcnByX2ludGVnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcyIEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgLT4gIFdpbmRvd0Fn ZworICAgICAgICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSBiKwor ICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAg ICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf aW50ZWcKKygxMSByb3dzKQorCistLSBWZXJpZnkgdGhhdCB0aGUgdHdvIHdpbmRvd3MgcmV0dXJu IGRpZmZlcmVudCBjb3VudHMgcGVyIHJvdywKKy0tIGNvbmZpcm1pbmcgdGhlIERFRklORSBjb25k aXRpb25zIHdlcmUgbm90IGNvbGxhcHNlZCBieSBkZWR1cC4KK1NFTEVDVAorICAgIGlkLCB2YWws CisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgY250X3VwLAorICAgIGNv dW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAg ICBERUZJTkUgQiBBUyB2YWwgPCBQUkVWKHZhbCkpIEFTIGNudF9kb3duCitGUk9NIHJwcl9pbnRl ZworT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnRfdXAgfCBjbnRfZG93biAKKy0tLS0rLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLQorICAxIHwgIDEwIHwgICAgICAyIHwgICAgICAgIDAKKyAg MiB8ICAyMCB8ICAgICAgMCB8ICAgICAgICAyCisgIDMgfCAgMTUgfCAgICAgIDIgfCAgICAgICAg MAorICA0IHwgIDI1IHwgICAgICAwIHwgICAgICAgIDIKKyAgNSB8ICAgNSB8ICAgICAgMyB8ICAg ICAgICAwCisgIDYgfCAgMzAgfCAgICAgIDAgfCAgICAgICAgMAorICA3IHwgIDM1IHwgICAgICAw IHwgICAgICAgIDIKKyAgOCB8ICAyMCB8ICAgICAgMyB8ICAgICAgICAwCisgIDkgfCAgNDAgfCAg ICAgIDAgfCAgICAgICAgMAorIDEwIHwgIDQ1IHwgICAgICAwIHwgICAgICAgIDAKKygxMCByb3dz KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEE1LiBVbnVzZWQgd2luZG93IHJlbW92YWwgcHJldmVudGlvbgorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBWZXJpZnkgdGhhdCByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoKSBkb2Vz IG5vdCBkcm9wIGFuIFJQUgorLS0gd2luZG93IGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgb3V0ZXIg cXVlcnkgZG9lcyBub3QgcmVmZXJlbmNlIGl0cworLS0gcmVzdWx0LiAgVGhlIFJQUiBXaW5kb3dB Z2cgbm9kZSBpcyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWluZyBwYXR0ZXJuCistLSBtYXRjaGlu Zywgc28gcmVtb3ZpbmcgdGhlIHdpbmRvdyBmdW5jdGlvbiB3b3VsZCBzaWxlbnRseSBza2lwIHRo ZQorLS0gcGF0dGVybiBtYXRjaCBldmVuIHRob3VnaCB0aGUgc3Vycm91bmRpbmcgcXVlcnkgc3Rp bGwgZGVwZW5kcyBvbgorLS0gUlBSIHNlbWFudGljcy4KKy0tIFRoZSBvdXRlciBxdWVyeSBpZ25v cmVzIHRoZSBwZXItcm93IHdpbmRvdyByZXN1bHQsIHlldCBwYXR0ZXJuCistLSBtYXRjaGluZyBt dXN0IHN0aWxsIGV4ZWN1dGUuICBUaGUgcGxhbiBtdXN0IHN0aWxsIGNvbnRhaW4gYQorLS0gV2lu ZG93QWdnIG5vZGUgYmVsb3cgdGhlIG91dGVyIEFnZ3JlZ2F0ZTsgaWYgdGhlIHdpbmRvdyB3ZXJl CistLSByZW1vdmVkLCBvbmx5IEFnZ3JlZ2F0ZSArIFNlcSBTY2FuIHdvdWxkIGFwcGVhci4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NICgKKyAgICBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBX aW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSsiCisgICAgICAg ICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRl ZworKDYgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworIGNv dW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKKy0tIFRoZSBERUZJTkUgZXhwcmVzc2lv biByZWZlcmVuY2VzIFBSRVYodmFsKSwgc28gdGhlIHdpbmRvdyBtdXN0IGJlCistLSBwcmVzZXJ2 ZWQgZXZlbiBpZiB0aGUgb3V0ZXIgcXVlcnkgb25seSBhZ2dyZWdhdGVzIG92ZXIgdGhlIGNvdW50 LgorLS0gVGhlIHBsYW4gbXVzdCBzdGlsbCBjb250YWluIGEgV2luZG93QWdnIHdpdGggdGhlIFBB VFRFUk4vREVGSU5FCistLSBpbnRhY3QuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291 bnQoKiksIHN1bShjKSBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGMgRlJP TSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAg ICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFdpbmRvd0FnZworICAgICAg ICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiBhKyIKKyAgICAgICAgIE5hdiBNYXJrIExvb2ti YWNrOiAxCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoNiByb3dzKQorCitT RUxFQ1QgY291bnQoKiksIHN1bShjKSBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworIGNvdW50 IHwgc3VtIAorLS0tLS0tLSstLS0tLQorICAgIDEwIHwgICA2CisoMSByb3cpCisKKy0tIFRoZSBE RUZJTkUgZXhwcmVzc2lvbiBjb250YWlucyBubyBuYXZpZ2F0aW9uLCBidXQgdGhlIFJQUiB3aW5k b3cKKy0tIG11c3Qgc3RpbGwgYmUgcHJlc2VydmVkIGJlY2F1c2UgdGhlIG1hdGNoIHN0cnVjdHVy ZSBpdHNlbGYgYWZmZWN0cworLS0gdGhlIGNvdW50LiAgVGhlIHBsYW4gbXVzdCByZXRhaW4gdGhl IFdpbmRvd0FnZy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSwgc3VtKGMp IEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgYyBGUk9NIHJwcl9pbnRlZwor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUg QSBBUyBUUlVFKQorKSB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFn Z3JlZ2F0ZQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0 ZXJuOiBhKyIKKyAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX2ludGVnCisoNiByb3dzKQorCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBG Uk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEg QVMgVFJVRSkKKykgdDsKKyBjb3VudCB8IHN1bSAKKy0tLS0tLS0rLS0tLS0KKyAgICAxMCB8ICAx MAorKDEgcm93KQorCistLSBYWFg6ICJ2YWwiIGlzIG5vbi1yZXNqdW5rIGluIHRoZSBzdWJxdWVy eSBvdXRwdXQgYW5kIGlzIG5vdAorLS0gcmVmZXJlbmNlZCBieSB0aGUgb3V0ZXIgcXVlcnkuICBX aXRob3V0IGEgZ3VhcmQsCistLSByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoKSB3b3Vs ZCByZXBsYWNlIGl0IHdpdGggTlVMTCBpbgorLS0gdGhlIHN1YnF1ZXJ5IG91dHB1dCwgYW5kIHRo YXQgcmVwbGFjZW1lbnQgcHJvcGFnYXRlcyB0byB0aGUKKy0tIHNjYW4ncyB0YXJnZXRsaXN0IC0t IERFRklORSB3b3VsZCB0aGVuIGV2YWx1YXRlIHdpdGggTlVMTAorLS0gaW5wdXRzLiAgVGhlIHRh cmdldGxpc3QgaGFzIG5vIHdheSB0byBkaXN0aW5ndWlzaCAiZXhwb3NlZCB0bworLS0gdGhlIG91 dGVyIHF1ZXJ5IiBmcm9tICJyZWZlcmVuY2VkIG9ubHkgYnkgREVGSU5FIiwgc28gdGhlCistLSBv cHRpbWl6YXRpb24gY2Fubm90IGJlIGFwcGxpZWQgc2VsZWN0aXZlbHkuICBUaGUgY29sdW1uIGd1 YXJkCistLSBpbiBhbGxwYXRocy5jIGJsb2NrcyB0aGlzIHJlcGxhY2VtZW50IGZvciBhbnkgY29s dW1uIHJlZmVyZW5jZWQKKy0tIGJ5IGFuIFJQUiBERUZJTkUgY2xhdXNlLCBrZWVwaW5nIHRoZSBX aW5kb3dBZ2cgd2l0aCBERUZJTkUKKy0tIGFjdGl2ZSBpbiB0aGUgcGxhbi4KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NICgKKyAgICBTRUxFQ1QgdmFsLCBjb3VudCgq KSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFs KSkKKykgdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFdpbmRv d0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBycHJfaW50ZWcuaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0 dGVybjogYSBiKworICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcnByX2ludGVnLmlkCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoOCByb3dzKQorCitTRUxFQ1QgY291bnQoKikg RlJPTSAoCisgICAgU0VMRUNUIHZhbCwgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisg ICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAg ICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQ7CisgY291bnQgCistLS0tLS0t CisgICAgMTAKKygxIHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBNi4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5 cGFzcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBSUFIgd2luZG93cyBkbyBub3QgdXNlIHRoZSBt b3ZpbmcgYWdncmVnYXRlIChpbnZlcnNlCistLSB0cmFuc2l0aW9uKSBvcHRpbWl6YXRpb24uICBN b3ZpbmcgYWdncmVnYXRlcyBtYWludGFpbiBzdGF0ZSBieQorLS0gYWRkaW5nIGFycml2aW5nIHJv d3MgYW5kIHN1YnRyYWN0aW5nIGxlYXZpbmcgcm93cywgYnV0IGFuIFJQUgorLS0gcmVkdWNlZCBm cmFtZSBpcyBub3QgYSBzbGlkaW5nIHdpbmRvdzsgdGhlIHNldCBvZiByb3dzIGluY2x1ZGVkIGlu CistLSB0aGUgZnJhbWUgaXMgZGV0ZXJtaW5lZCBieSBwYXR0ZXJuIG1hdGNoaW5nIGFuZCBjYW5u b3QgYmUgZGVyaXZlZAorLS0gaW5jcmVtZW50YWxseSBmcm9tIHRoZSBwcmV2aW91cyBmcmFtZS4K Ky0tIHN1bSgpIHdvdWxkIG5vcm1hbGx5IGJlIGVsaWdpYmxlIGZvciB0aGUgbW92aW5nIGFnZ3Jl Z2F0ZQorLS0gb3B0aW1pemF0aW9uOyB1bmRlciBSUFIgaXQgbXVzdCBiZSBjb21wdXRlZCBmcm9t IHNjcmF0Y2ggb3ZlciBlYWNoCistLSByZWR1Y2VkIGZyYW1lLCBhbmQgdGhlIHJldHVybmVkIHZh bHVlcyBtdXN0IG1hdGNoIHRoZSBwYXR0ZXJuLgorLS0gTm90ZTogaW52ZXJzZS10cmFuc2l0aW9u IHNlbGVjdGlvbiBpcyBub3QgZXhwb3NlZCBpbiB0aGUgcGxhbiwgc28KKy0tIHRoZXJlIGlzIG5v IGRpcmVjdCBFWFBMQUlOIGFzc2VydGlvbiBmb3IgaXQuICBUaGUgc3RydWN0dXJhbAorLS0gZ3Vh cmFudGVlIGlzIHRoYXQgUlBSIHVzZXMgaXRzIG93biBuYXZpZ2F0aW9uIG1hcmssIGRpc3RpbmN0 IGZyb20KKy0tIHRoZSBtb3ZpbmctYWdncmVnYXRlIG1hcmssIHNvIHRoZSBpbnZlcnNlLXRyYW5z aXRpb24gcGF0aCBpcworLS0gbmV2ZXIgcmVhY2hlZCBvbiB0aGUgUlBSIHNpZGUuICBUaGlzIHRl c3QgdmVyaWZpZXMgdGhhdAorLS0gc2VwYXJhdGlvbiBpbmRpcmVjdGx5OiBpZiBpbnZlcnNlIHRy YW5zaXRpb24gbGVha2VkIGludG8gdGhlIFJQUgorLS0gcGF0aCwgc3RhdGUgd291bGQgbWl4IGFj cm9zcyBtYXRjaCBib3VuZGFyaWVzIGFuZCBwYXR0ZXJuX3N1bQorLS0gd291bGQgZGl2ZXJnZSBm cm9tIHRoZSBleHBlY3RlZCBvdXRwdXQsIGZhaWxpbmcgdGhlIHJlZ3Jlc3Npb24uCitTRUxFQ1Qg aWQsIHZhbCwKKyAgICBzdW0odmFsKSBPVkVSIHcgQVMgcGF0dGVybl9zdW0KK0ZST00gcnByX2lu dGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgcGF0dGVy bl9zdW0gCistLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAgICAgIDMw CisgIDIgfCAgMjAgfCAgICAgICAgICAgIAorICAzIHwgIDE1IHwgICAgICAgICAgNDAKKyAgNCB8 ICAyNSB8ICAgICAgICAgICAgCisgIDUgfCAgIDUgfCAgICAgICAgICA3MAorICA2IHwgIDMwIHwg ICAgICAgICAgICAKKyAgNyB8ICAzNSB8ICAgICAgICAgICAgCisgIDggfCAgMjAgfCAgICAgICAg IDEwNQorICA5IHwgIDQwIHwgICAgICAgICAgICAKKyAxMCB8ICA0NSB8ICAgICAgICAgICAgCiso MTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBBNy4gQ29zdCBlc3RpbWF0aW9uIFJQUiBhd2FyZW5lc3MK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gY29zdF93aW5kb3dhZ2coKSBtdXN0IGFjY291bnQgZm9yIERFRklORSBleHBy ZXNzaW9uIGV2YWx1YXRpb24gY29zdC4KKy0tIFZlcmlmeSBSUFIgV2luZG93QWdnIGNvc3QgPiBu b24tUlBSIFdpbmRvd0FnZyBjb3N0LgorQ1JFQVRFIEZVTkNUSU9OIGdldF93aW5kb3dhZ2dfY29z dChxdWVyeSB0ZXh0KSBSRVRVUk5TIG51bWVyaWMgQVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuIGpz b247CisgICAgY29zdCBudW1lcmljOworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChGT1JN QVQgSlNPTikgJyB8fCBxdWVyeSBJTlRPIHBsYW47CisgICAgY29zdCA6PSAocGxhbi0+MC0+J1Bs YW4nLT4+J1RvdGFsIENvc3QnKTo6bnVtZXJpYzsKKyAgICBSRVRVUk4gY29zdDsKK0VORDsKKyQk IExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgZ2V0X3dpbmRvd2FnZ19jb3N0KAorICAgICdTRUxF Q1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgIFdJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICAgICAgIFBBVFRFUk4gKEEgQisgQyspIERFRklORSBCIEFTIHZhbCA+IFBS RVYodmFsKSwgQyBBUyB2YWwgPCBQUkVWKHZhbCkpJykKKyAgICA+CisgICAgZ2V0X3dpbmRvd2Fn Z19jb3N0KAorICAgICdTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisgICAg IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpJykKKyAgICBBUyBycHJfY29zdF9pc19oaWdoZXI7CisgcnByX2Nv c3RfaXNfaGlnaGVyIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1Ag RlVOQ1RJT04gZ2V0X3dpbmRvd2FnZ19jb3N0KHRleHQpOworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBOC4gU3VicXVl cnkgZmxhdHRlbmluZyBwcmV2ZW50aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IGEgc3VicXVl cnkgY29udGFpbmluZyBhbiBSUFIgd2luZG93IGlzIG5vdCBmbGF0dGVuZWQKKy0tIGludG8gdGhl IG91dGVyIHF1ZXJ5LiAgaXNfc2ltcGxlX3N1YnF1ZXJ5KCkgYWxyZWFkeSBibG9ja3MgcHVsbHVw CistLSBmb3Igc3VicXVlcmllcyB3aXRoIHdpbmRvdyBmdW5jdGlvbnMgaW4gZ2VuZXJhbDsgdGhp cyB0ZXN0IGNvbmZpcm1zCistLSB0aGUgcnVsZSBjb250aW51ZXMgdG8gYXBwbHkgdG8gUlBSIHdp bmRvd3MsIHNvIEVYUExBSU4gbXVzdCBzdGlsbAorLS0gc2hvdyBhIFN1YnF1ZXJ5IFNjYW4gYWJv dmUgdGhlIFJQUiBXaW5kb3dBZ2cuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9N ICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00g cnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHN1YgorV0hF UkUgY250ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gc3Vi CisgICBGaWx0ZXI6IChzdWIuY250ID4gMCkKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAg ICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAg ICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9pbnRlZworKDkgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBOS4gREVGSU5FIGV4cHJlc3Npb24g bm9uLXByb3BhZ2F0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IERFRklORSBleHByZXNzaW9u cyBhcmUgbm90IHByb3BhZ2F0ZWQgaW50byB0aGUKKy0tIHRhcmdldGxpc3Qgb2YgYW55IHVwcGVy IFdpbmRvd0FnZyBub2RlLiAgT25seSB0aGUgY29sdW1uIHJlZmVyZW5jZXMKKy0tIGNvbnN1bWVk IGJ5IERFRklORSBzaG91bGQgYmUgcGFzc2VkIHVwOyB0aGUgZnVsbCBERUZJTkUgZXhwcmVzc2lv bgorLS0gaXMgbWVhbmluZ2Z1bCBvbmx5IGluc2lkZSB0aGUgUlBSIFdpbmRvd0FnZyB0aGF0IG93 bnMgaXQuCistLSBFWFBMQUlOIFZFUkJPU0UgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIHNob3cg YSBjbGVhbiB0YXJnZXRsaXN0IG9uCistLSB0aGUgb3V0ZXIgV2luZG93QWdnLCB3aXRoIG5vIERF RklORS1kZXJpdmVkIGV4cHJlc3Npb24gbGVha2luZyBpbi4KKy0tIE5vdGU6IGNvbHVtbnMgcmVm ZXJlbmNlZCBieSBERUZJTkUgKGUuZy4sICJ2YWwiKSBtYXkgYXBwZWFyIGFzCistLSByZXNqdW5r IGVudHJpZXMgaW4gdXBwZXIgV2luZG93QWdnIHRhcmdldGxpc3RzIC0tIHRoYXQgaXMgYQorLS0g aGFybWxlc3MgYnlwcm9kdWN0IG9mIHRoZSBjb2x1bW4gZ3VhcmQncyBicm9hZCBzY29wZSBhbmQg ZG9lcyBub3QKKy0tIGFmZmVjdCBjbGllbnQgb3V0cHV0LiAgVGhlIGNsYWltIGhlcmUgaXMgbGlt aXRlZCB0byB0aGUgZnVsbAorLS0gREVGSU5FIGJvb2xlYW4gZXhwcmVzc2lvbi4KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMg cnByX2NudCwKKyAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZST00g cnByX2ludGVnCitXSU5ET1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisgICAg d19ub3JtYWwgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgT3V0cHV0OiAoY291bnQoKikgT1ZFUiB3X3JwciksIGNvdW50KCop IE9WRVIgd19ub3JtYWwsIGlkLCB2YWwKKyAgIFdpbmRvdzogd19ub3JtYWwgQVMgKE9SREVSIEJZ IHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBPdXRwdXQ6IGlkLCB2YWwsIGNvdW50 KCopIE9WRVIgd19ycHIKKyAgICAgICAgIFdpbmRvdzogd19ycHIgQVMgKE9SREVSIEJZIHJwcl9p bnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMQor ICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIE91dHB1dDogaWQsIHZhbAorICAgICAg ICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5ycHJfaW50ZWcKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogaWQs IHZhbAorKDEzIHJvd3MpCisKKy0tIEV4ZWN1dGluZyB0aGUgc2FtZSBxdWVyeSBzaG93cyB0aGUg Y2xpZW50IHJlc3VsdCBpcyBsaW1pdGVkIHRvCistLSB0aGUgdHdvIHByb2plY3RlZCBjb2x1bW5z OyAiaWQiIGFuZCAidmFsIiB0aGF0IGFwcGVhcmVkIGluIHRoZQorLS0gdXBwZXIgV2luZG93QWdn IE91dHB1dCBsaW5lIGFyZSByZXNqdW5rLW9ubHkgYW5kIGRvIG5vdCByZWFjaAorLS0gdGhlIGNs aWVudC4KK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnByX2NudCwKKyAgICBj b3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2ludGVnCitXSU5E T1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisg ICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisgICAgd19ub3JtYWwgQVMgKE9S REVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKK09SREVSIEJZIHJwcl9jbnQgREVTQywgbm9ybWFsX2NudCBERVNDOworIHJw cl9jbnQgfCBub3JtYWxfY250IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgIDMgfCAg ICAgICAgICA2CisgICAgICAgMyB8ICAgICAgICAgIDMKKyAgICAgICAyIHwgICAgICAgICAxMAor ICAgICAgIDIgfCAgICAgICAgICA4CisgICAgICAgMCB8ICAgICAgICAgIDkKKyAgICAgICAwIHwg ICAgICAgICAgNworICAgICAgIDAgfCAgICAgICAgICA1CisgICAgICAgMCB8ICAgICAgICAgIDQK KyAgICAgICAwIHwgICAgICAgICAgMgorICAgICAgIDAgfCAgICAgICAgICAxCisoMTAgcm93cykK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBBMTAuIFJQUiArIExJTUlUCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIExJTUlUIG11c3Qgbm90 IGludGVyZmVyZSB3aXRoIFJQUiBwYXR0ZXJuIG1hdGNoaW5nLiAgVGhlIExpbWl0CistLSBub2Rl IG11c3Qgc2l0IGFib3ZlIHRoZSBXaW5kb3dBZ2cgc28gdGhhdCBwYXR0ZXJuIG1hdGNoaW5nIHJ1 bnMKKy0tIG9uIHRoZSBmdWxsIHBhcnRpdGlvbiBmaXJzdDsgdGhlIHJlc3VsdCBpcyB0aGVuIGEg cHJlZml4IG9mIHRoZQorLS0gdW4tTElNSVRlZCBvdXRwdXQuICBQdXNoaW5nIExpbWl0IGJlbG93 IHRoZSBXaW5kb3dBZ2cgd291bGQKKy0tIHRydW5jYXRlIGlucHV0IGJlZm9yZSBtYXRjaGluZyBh bmQgc2lsZW50bHkgZHJvcCB2YWxpZCBtYXRjaGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZh bCA+IFBSRVYodmFsKSkKK0xJTUlUIDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTGltaXQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAg ICAgICAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAg ICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAg ICBTb3J0IEtleTogaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcK Kyg4IHJvd3MpCisKKy0tIFJlZmVyZW5jZTogdW4tTElNSVRlZCByZXN1bHQgYWdhaW5zdCB3aGlj aCB0aGUgTElNSVQgNSByZXN1bHQgaXMKKy0tIGNvbXBhcmVkLgorU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkK K09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwg IDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwg ICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisg IDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93 cykKKworLS0gTElNSVQgNSBjYXNlOyB0aGUgZmlyc3QgZml2ZSByb3dzIG11c3QgbWF0Y2ggdGhl IHJlZmVyZW5jZSBhYm92ZS4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBC KykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitMSU1JVCA1OworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAg IDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyg1 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQjEuIFJQUiArIENURQorLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhh dCBhbiBSUFIgd2luZG93IGVtYmVkZGVkIGluc2lkZSBhIENURSBiZWhhdmVzIHRoZSBzYW1lIGFz CistLSBhIGRpcmVjdCBSUFIgcXVlcnk6CistLSAgICgxKSBBIHNpbmdsZS1yZWZlcmVuY2UgQ1RF IGlzIGlubGluZWQgYnkgdGhlIHBsYW5uZXIgYW5kIHlpZWxkcworLS0gICAgICAgcGVyLXJvdyBy ZXN1bHRzIGlkZW50aWNhbCB0byB0aGUgZGlyZWN0IFJQUiBxdWVyeS4KKy0tICAgKDIpIEEgbXVs dGktcmVmZXJlbmNlIENURSBpcyBtYXRlcmlhbGl6ZWQgKENURSBTY2FuIGFwcGVhcnMgaW4KKy0t ICAgICAgIHRoZSBwbGFuKSBzbyBwYXR0ZXJuIG1hdGNoaW5nIHJ1bnMgb25jZSwgYW5kIGV2ZXJ5 IHJlZmVyZW5jZQorLS0gICAgICAgb2JzZXJ2ZXMgdGhlIHNhbWUgbWF0Y2ggcmVzdWx0cy4KKy0t IEJhc2VsaW5lOiBkaXJlY3QgUlBSIHByb2R1Y2VzIHRoZSBwZXItcm93IHJlZmVyZW5jZSBvdXRw dXQuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50 ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5F IEIgQVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCist LS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwg IDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwg ICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAwCisg MTAgfCAgNDUgfCAgIDAKKygxMCByb3dzKQorCistLSBTaW5nbGUtcmVmZXJlbmNlIENURTogcGxh biBoYXMgbm8gIkNURSBycHJfcmVzdWx0IiBzY29wZSwgc2hvd2luZworLS0gdGhlIENURSB3YXMg aW5saW5lZCBpbnRvIHRoZSBzdXJyb3VuZGluZyBxdWVyeS4KK0VYUExBSU4gKENPU1RTIE9GRikK K1dJVEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIg dyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJF Vih2YWwpKQorKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NIHJwcl9yZXN1bHQgT1JERVIgQlkg aWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgcnBy X2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGEgYisKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9pbnRlZworKDcgcm93cykKKworLS0gUmVzdWx0IG11c3QgbWF0Y2ggdGhlIGJhc2Vs aW5lIHJvdy1mb3Itcm93LgorV0lUSCBycHJfcmVzdWx0IEFTICgKKyAgICBTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJ TkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispCitTRUxFQ1QgaWQsIHZhbCwgY250IEZST00gcnBy X3Jlc3VsdCBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8 ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8 ICAgMAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAor KDEwIHJvd3MpCisKKy0tIE11bHRpLXJlZmVyZW5jZSBDVEUgKHNlbGYtam9pbik6IHBsYW4gaGFz IGEgIkNURSBycHJfcmVzdWx0IiBzY29wZQorLS0gYW5kIENURSBTY2FuIG5vZGVzIG9uIGJvdGgg c2lkZXMsIHNob3dpbmcgdGhlIENURSB3YXMgbWF0ZXJpYWxpemVkCistLSBhbmQgcGF0dGVybiBt YXRjaGluZyByYW4gb25seSBvbmNlLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorV0lUSCBycHJfcmVz dWx0IEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAg IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQ QVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispCitT RUxFQ1QgcjEuaWQsIHIxLmNudAorRlJPTSBycHJfcmVzdWx0IHIxCitKT0lOIHJwcl9yZXN1bHQg cjIgT04gcjEuaWQgPSByMi5pZCBBTkQgcjEuY250ID0gcjIuY250CitXSEVSRSByMS5jbnQgPiAw CitPUkRFUiBCWSByMS5pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBKb2lu CisgICBNZXJnZSBDb25kOiAoKHIyLmlkID0gcjEuaWQpIEFORCAocjIuY250ID0gcjEuY250KSkK KyAgIENURSBycHJfcmVzdWx0CisgICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgICAgV2luZG93 OiB3IEFTIChPUkRFUiBCWSBycHJfaW50ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAg ICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9pbnRlZworICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgIFNvcnQg S2V5OiByMi5pZCwgcjIuY250CisgICAgICAgICBQcmVzb3J0ZWQgS2V5OiByMi5pZAorICAgICAg ICAgLT4gIENURSBTY2FuIG9uIHJwcl9yZXN1bHQgcjIKKyAgIC0+ICBTb3J0CisgICAgICAgICBT b3J0IEtleTogcjEuaWQsIHIxLmNudAorICAgICAgICAgLT4gIENURSBTY2FuIG9uIHJwcl9yZXN1 bHQgcjEKKyAgICAgICAgICAgICAgIEZpbHRlcjogKGNudCA+IDApCisoMTggcm93cykKKworLS0g UmVzdWx0OiBib3RoIHJlZmVyZW5jZXMgc2VlIHRoZSBzYW1lIG1hdGNoIGNvdW50cywgc28gdGhl IHNlbGYtam9pbgorLS0gcHJlc2VydmVzIGFsbCBtYXRjaGVkIHJvd3MgZnJvbSB0aGUgYmFzZWxp bmUuCitXSVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+ IFBSRVYodmFsKSkKKykKK1NFTEVDVCByMS5pZCwgcjEuY250CitGUk9NIHJwcl9yZXN1bHQgcjEK K0pPSU4gcnByX3Jlc3VsdCByMiBPTiByMS5pZCA9IHIyLmlkIEFORCByMS5jbnQgPSByMi5jbnQK K1dIRVJFIHIxLmNudCA+IDAKK09SREVSIEJZIHIxLmlkOworIGlkIHwgY250IAorLS0tLSstLS0t LQorICAxIHwgICAyCisgIDMgfCAgIDIKKyAgNSB8ICAgMworICA4IHwgICAzCisoNCByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEIyLiBSUFIgKyBKT0lOCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IGFuIFJQ UiBzdWJxdWVyeSBjYW4gYmUgam9pbmVkIHdpdGggYW5vdGhlciByZWxhdGlvbi4KKy0tIFR3byBh c3BlY3RzIGFyZSBjaGVja2VkIGFnYWluc3QgYSBub24tUlBSIGJhc2VsaW5lOgorLS0gICAoMSkg RmxhdHRlbmluZzogYSBub24tUlBSIHN1YnF1ZXJ5IGlzIHB1bGxlZCB1cCBieSB0aGUgcGxhbm5l cgorLS0gICAgICAgKG5vIFN1YnF1ZXJ5IFNjYW4gaW4gdGhlIHBsYW4pOyBhbiBSUFIgc3VicXVl cnkgaXMga2VwdAorLS0gICAgICAgdW4tZmxhdHRlbmVkIChTdWJxdWVyeSBTY2FuIGFib3ZlIFdp bmRvd0FnZykuCistLSAgICgyKSBKb2luIGNvcnJlY3RuZXNzOiB0aGUgam9pbiBhbGlnbnMgZWFj aCBSUFIgbWF0Y2ggcm93IHdpdGgKKy0tICAgICAgIHRoZSBkaW1lbnNpb24tdGFibGUgcm93IG9u IHRoZSBzYW1lIGtleS4KK0NSRUFURSBUQUJMRSBycHJfaW50ZWcyIChpZCBJTlQsIGxhYmVsIFRF WFQpOworSU5TRVJUIElOVE8gcnByX2ludGVnMiBWQUxVRVMKKyAgICAoMSwgJ2EnKSwgKDIsICdi JyksICgzLCAnYycpLCAoNCwgJ2QnKSwgKDUsICdlJyksCisgICAgKDYsICdmJyksICg3LCAnZycp LCAoOCwgJ2gnKSwgKDksICdpJyksICgxMCwgJ2onKTsKKy0tIEJhc2VsaW5lOiBhIG5vbi1SUFIg c3VicXVlcnkgaXMgZmxhdHRlbmVkIGJ5IHRoZSBwbGFubmVyLiAgTm8KKy0tIFN1YnF1ZXJ5IFNj YW4gbm9kZSBhcHBlYXJzOyB0aGUgaW5uZXIgU0VMRUNUIGlzIG1lcmdlZCBpbnRvIHRoZQorLS0g b3V0ZXIgam9pbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCByLmlkLCByLnZhbCwgai5s YWJlbAorRlJPTSAoU0VMRUNUIGlkLCB2YWwgRlJPTSBycHJfaW50ZWcpIHIKK0pPSU4gcnByX2lu dGVnMiBqIE9OIHIuaWQgPSBqLmlkCitPUkRFUiBCWSByLmlkOworICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgTWVyZ2UgSm9pbgorICAgTWVyZ2UgQ29uZDogKGouaWQgPSBycHJfaW50ZWcuaWQpCisg ICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGouaWQKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfaW50ZWcyIGoKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcnByX2lu dGVnLmlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoOCByb3dzKQorCist LSBSUFIgc3VicXVlcnkgSk9JTjogdGhlIFN1YnF1ZXJ5IFNjYW4gaXMgcHJlc2VydmVkIGFib3Zl IHRoZQorLS0gV2luZG93QWdnLCBjb25maXJtaW5nIHRoZSBSUFIgc3VicXVlcnkgaXMgbm90IGZs YXR0ZW5lZC4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCByLmlkLCByLmNudCwgai5sYWJl bAorRlJPTSAoCisgICAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJP TSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRF Uk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgcgorSk9J TiBycHJfaW50ZWcyIGogT04gci5pZCA9IGouaWQKK1dIRVJFIHIuY250ID4gMAorT1JERVIgQlkg ci5pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEpvaW4KKyAg IE1lcmdlIENvbmQ6IChyLmlkID0gai5pZCkKKyAgIC0+ICBTdWJxdWVyeSBTY2FuIG9uIHIKKyAg ICAgICAgIEZpbHRlcjogKHIuY250ID4gMCkKKyAgICAgICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAg ICAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgICAgICAgIFBh dHRlcm46IGEgYisKKyAgICAgICAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAg ICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRl Zy5pZAorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBqLmlkCisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcnByX2ludGVnMiBqCisoMTQgcm93cykKKworLS0gUmVzdWx0OiBtYXRjaGVkIFJQUiByb3dz IGFsaWduIHdpdGggZGltZW5zaW9uIHJvd3Mgb24gaWQsIHNob3dpbmcKKy0tIHRoZSBqb2luIGNv cnJlY3RseSBwYWlycyBwZXItcm93IG1hdGNoIGNvdW50cyB3aXRoIHRoZWlyIGxhYmVscy4KK1NF TEVDVCByLmlkLCByLmNudCwgai5sYWJlbAorRlJPTSAoCisgICAgU0VMRUNUIGlkLCBjb3VudCgq KSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZh bCA+IFBSRVYodmFsKSkKKykgcgorSk9JTiBycHJfaW50ZWcyIGogT04gci5pZCA9IGouaWQKK1dI RVJFIHIuY250ID4gMAorT1JERVIgQlkgci5pZDsKKyBpZCB8IGNudCB8IGxhYmVsIAorLS0tLSst LS0tLSstLS0tLS0tCisgIDEgfCAgIDIgfCBhCisgIDMgfCAgIDIgfCBjCisgIDUgfCAgIDMgfCBl CisgIDggfCAgIDMgfCBoCisoNCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEIzLiBSUFIgKyBTZXQgb3Bl cmF0aW9ucworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBSUFIgcmVzdWx0cyBjb21iaW5lIGNvcnJl Y3RseSB3aXRoIG5vbi1SUFIgcmVzdWx0cworLS0gdW5kZXIgYSBVTklPTiBBTEwuICBUaGUgcGxh biBtdXN0IHNob3cgYW4gQXBwZW5kIG5vZGUgd2l0aCB0d28KKy0tIGluZGVwZW5kZW50IGNoaWxk IHBsYW5zOiB0aGUgUlBSIGJyYW5jaCB3aXRoIFBhdHRlcm4vREVGSU5FIGFjdGl2ZSwKKy0tIGFu ZCB0aGUgbm9uLVJQUiBicmFuY2ggd2l0aCBhIHBsYWluIFdpbmRvd0FnZy4gIEVhY2ggY2hpbGQg c2NhbnMKKy0tIHRoZSBiYXNlIHJlbGF0aW9uIG9uIGl0cyBvd24gYW5kIGNvbnRyaWJ1dGVzIGl0 cyByb3dzIHRvIHRoZQorLS0gdW5pb25lZCBvdXRwdXQuCistLSBQbGFuOiBBcHBlbmQgd2l0aCB0 d28gaW5kZXBlbmRlbnQgY2hpbGRyZW4uICBUaGUgUlBSIGJyYW5jaCBoYXMgYQorLS0gV2luZG93 QWdnIGNhcnJ5aW5nIFBhdHRlcm4vTmF2IE1hcmsgTG9va2JhY2s7IHRoZSBub24tUlBSIGJyYW5j aAorLS0gaGFzIGEgcGxhaW4gV2luZG93QWdnIHdpdGggbm8gcGF0dGVybiBtZXRhZGF0YS4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBpZCwgY250LCAncnByJyBBUyBzb3VyY2UgRlJPTSAo CisgICAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50 ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAw CitVTklPTiBBTEwKK1NFTEVDVCBpZCwgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQpIEFTIGNu dCwgJ25vcm1hbCcgQVMgc291cmNlCitGUk9NIHJwcl9pbnRlZworT1JERVIgQlkgc291cmNlLCBp ZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQK KyAgIFNvcnQgS2V5OiAoJ3Jwcic6OnRleHQpLCB0LmlkCisgICAtPiAgQXBwZW5kCisgICAgICAg ICAtPiAgU3VicXVlcnkgU2NhbiBvbiB0CisgICAgICAgICAgICAgICBGaWx0ZXI6ICh0LmNudCA+ IDApCisgICAgICAgICAgICAgICAtPiAgV2luZG93QWdnCisgICAgICAgICAgICAgICAgICAgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICAgICAgICAgICAgICBQYXR0ZXJu OiBhIGIrCisgICAgICAgICAgICAgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfaW50ZWcKKyAgICAgICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgICAgICAgIFdp bmRvdzogdzEgQVMgKE9SREVSIEJZIHJwcl9pbnRlZ18xLmlkKQorICAgICAgICAgICAgICAgLT4g IFNvcnQKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWdfMS5pZAorICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZyBycHJfaW50ZWdfMQor KDE3IHJvd3MpCisKKy0tIFJlc3VsdDogcm93cyBmcm9tIGJvdGggYnJhbmNoZXMgYXJlIHByZXNl bnQgaW4gdGhlIHVuaW9uZWQgb3V0cHV0LgorLS0gVGhlIFJQUiBicmFuY2ggZW1pdHMgb25seSBt YXRjaGVkIHJvd3MgKGNudCA+IDApLCB3aGlsZSB0aGUKKy0tIG5vbi1SUFIgYnJhbmNoIGVtaXRz IGFsbCByb3dzIHdpdGggaXRzIG93biBjb3VudCB2YWx1ZXMuCitTRUxFQ1QgaWQsIGNudCwgJ3Jw cicgQVMgc291cmNlIEZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkp CispIHQgV0hFUkUgY250ID4gMAorVU5JT04gQUxMCitTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIg KE9SREVSIEJZIGlkKSBBUyBjbnQsICdub3JtYWwnIEFTIHNvdXJjZQorRlJPTSBycHJfaW50ZWcK K09SREVSIEJZIHNvdXJjZSwgaWQ7CisgaWQgfCBjbnQgfCBzb3VyY2UgCistLS0tKy0tLS0tKy0t LS0tLS0tCisgIDEgfCAgIDEgfCBub3JtYWwKKyAgMiB8ICAgMiB8IG5vcm1hbAorICAzIHwgICAz IHwgbm9ybWFsCisgIDQgfCAgIDQgfCBub3JtYWwKKyAgNSB8ICAgNSB8IG5vcm1hbAorICA2IHwg ICA2IHwgbm9ybWFsCisgIDcgfCAgIDcgfCBub3JtYWwKKyAgOCB8ICAgOCB8IG5vcm1hbAorICA5 IHwgICA5IHwgbm9ybWFsCisgMTAgfCAgMTAgfCBub3JtYWwKKyAgMSB8ICAgMiB8IHJwcgorICAz IHwgICAyIHwgcnByCisgIDUgfCAgIDMgfCBycHIKKyAgOCB8ICAgMyB8IHJwcgorKDE0IHJvd3Mp CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQjQuIFJQUiArIFByZXBhcmVkIHN0YXRlbWVudHMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g VmVyaWZ5IHRoYXQgUlBSIHF1ZXJpZXMgc3Vydml2ZSB0aGUgcHJlcGFyZWQtc3RhdGVtZW50IHBh dGggYnkKKy0tIGV4ZXJjaXNpbmcgYm90aCBwbGFuY2FjaGUgbW9kZXMgd2l0aCBhIHBhcmFtZXRl ciB0aGF0IGZlZWRzIGludG8KKy0tIFJQUidzIG5hdmlnYXRpb24gb2Zmc2V0IChQUkVWKHZhbCwg JDEpKS4gIFRoZSBwYXJhbWV0ZXIgc3VyZmFjZXMKKy0tIHRoZSBSUFItc3BlY2lmaWMgcGxhbmNh Y2hlIGRpZmZlcmVuY2U6CistLSAgIC0gY3VzdG9tIHBsYW46ICJOYXYgTWFyayBMb29rYmFjayIg aXMgcmVzb2x2ZWQgdG8gdGhlIGxpdGVyYWwKKy0tICAgICBwYXJhbWV0ZXIgdmFsdWUgYXQgcGxh biB0aW1lIChlLmcuLCAiTmF2IE1hcmsgTG9va2JhY2s6IDEiKS4KKy0tICAgLSBnZW5lcmljIHBs YW46ICJOYXYgTWFyayBMb29rYmFjayIgaXMgZGVmZXJyZWQgdG8gZXhlY3V0aW9uIGFuZAorLS0g ICAgIGFwcGVhcnMgYXMgIk5hdiBNYXJrIExvb2tiYWNrOiBydW50aW1lIiBpbiB0aGUgcGxhbi4K Ky0tIFRoZSByZXN1bHQgbXVzdCBiZSBpZGVudGljYWwgdW5kZXIgYm90aCBtb2Rlcy4KKy0tIFJl Z2lzdGVyIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQ7IERFRklORSB1c2VzIFBSRVYodmFsLCAkMSkg c28gdGhlCistLSBwYXJhbWV0ZXIgcmVhY2hlcyBSUFIncyBuYXZpZ2F0aW9uIG1hY2hpbmVyeS4K K1BSRVBBUkUgcnByX3ByZXYoaW50KSBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIg dyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsLCAkMSkpCitPUkRFUiBC WSBpZDsKKy0tIEN1c3RvbSBwbGFuOiBOYXYgTWFyayBMb29rYmFjayByZXNvbHZlZCB0byB0aGUg bGl0ZXJhbCAxLgorU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2N1c3RvbV9wbGFuOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHJwcl9wcmV2KDEpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9pbnRlZworKDcgcm93cykKKworRVhFQ1VURSBycHJfcHJldigxKTsKKyBpZCB8IHZhbCB8IGNu dCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisg IDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYgfCAg MzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAg IDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEdlbmVyaWMgcGxhbjogTmF2IE1h cmsgTG9va2JhY2sgZGVmZXJyZWQgdG8gZXhlY3V0aW9uLCBzaG93biBhcworLS0gInJ1bnRpbWUi IGluIHRoZSBwbGFuLiAgUmVzdWx0IG11c3QgbWF0Y2ggdGhlIGN1c3RvbS1wbGFuIHJlc3VsdAor LS0gZXhhY3RseS4KK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcnByX3ByZXYoMSk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGEgYisKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiBydW50aW1l CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcnByX2ludGVnCisoNyByb3dzKQorCitFWEVDVVRFIHJwcl9wcmV2KDEpOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAg fCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMK KyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8 ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93cykKKworUkVTRVQgcGxhbl9jYWNo ZV9tb2RlOworREVBTExPQ0FURSBycHJfcHJldjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjUuIFJQUiArIFBhcnRp dGlvbmVkIHRhYmxlCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IFJQUiBwYXR0ZXJuIG1hdGNoaW5n IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRoZSBzb3VyY2UKKy0tIHJlbGF0aW9uIGlzIHBhcnRpdGlv bmVkLiAgVGhlIHBsYW5uZXIgbXVzdCBnYXRoZXIgcm93cyBmcm9tIGV2ZXJ5CistLSBwYXJ0aXRp b24gaW50byBhIHNpbmdsZSBvcmRlcmVkIHN0cmVhbSBiZWZvcmUgUlBSIGNhbiBzZWUgdGhlbSwK Ky0tIGJlY2F1c2UgcGF0dGVybiBtYXRjaGluZyBpcyBzZXF1ZW50aWFsIGFjcm9zcyB0aGUgZW50 aXJlCistLSBwYXJ0aXRpb24tYnkgZ3JvdXAgYW5kIGNhbm5vdCBiZSBwZXJmb3JtZWQgaW5kZXBl bmRlbnRseSBvbiBlYWNoCistLSB0YWJsZSBwYXJ0aXRpb24uCitDUkVBVEUgVEFCTEUgcnByX3Bh cnQgKGlkIElOVCwgdmFsIElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFC TEUgcnByX3BhcnRfMSBQQVJUSVRJT04gT0YgcnByX3BhcnQgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoNik7CitDUkVBVEUgVEFCTEUgcnByX3BhcnRfMiBQQVJUSVRJT04gT0YgcnByX3BhcnQgRk9S IFZBTFVFUyBGUk9NICg2KSBUTyAoMTEpOworSU5TRVJUIElOVE8gcnByX3BhcnQgU0VMRUNUIGlk LCB2YWwgRlJPTSBycHJfaW50ZWc7CistLSBQbGFuOiBwYXJ0aXRpb24gc2NhbnMgYXJlIGNvbWJp bmVkIHdpdGggQXBwZW5kIChvciBNZXJnZSBBcHBlbmQpLAorLS0gc29ydGVkIGludG8gYSBzaW5n bGUgb3JkZXJlZCBzdHJlYW0sIGFuZCBmZWQgaW50byBvbmUgV2luZG93QWdnCistLSB0aGF0IHBl cmZvcm1zIFJQUiBwYXR0ZXJuIG1hdGNoaW5nIGFjcm9zcyB0aGUgY29tYmluZWQgc3RyZWFtLgor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBj bnQKK0ZST00gcnByX3BhcnQKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9wYXJ0LmlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IGEgYisKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAtPiAgU29ydAorICAgICAgICAg U29ydCBLZXk6IHJwcl9wYXJ0LmlkCisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX3BhcnRfMQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9wYXJ0XzIKKyg5IHJvd3MpCisKKy0tIEJhc2VsaW5lOiB0aGUgc2FtZSBxdWVyeSBh Z2FpbnN0IHRoZSBub24tcGFydGl0aW9uZWQgcnByX2ludGVnCistLSBwcm9kdWNlcyB0aGUgcGVy LXJvdyByZWZlcmVuY2Ugb3V0cHV0LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOwor IGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIg fCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUg fCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgMjAgfCAgIDMK KyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93cykKKworLS0gUmVzdWx0 IGFnYWluc3QgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIG11c3QgbWF0Y2ggdGhlIGJhc2VsaW5lCist LSByb3ctZm9yLXJvdy4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitG Uk9NIHJwcl9wYXJ0CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAg IDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAg NiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0 MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93cykKKworRFJPUCBUQUJMRSBycHJfcGFy dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQjYuIFJQUiArIExBVEVSQUwKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIGluc2lkZSBh IExBVEVSQUwgc3VicXVlcnkuICBRdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZXMgZnJvbQorLS0g dGhlIG91dGVyIHF1ZXJ5IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBERUZJTkUsIHNvIHRoaXMg dGVzdHMKKy0tIHRoZSBiYXNpYyBjYXNlIHdoZXJlIExBVEVSQUwgcHJvdmlkZXMgdGhlIGNvcnJl bGF0aW9uIGZpbHRlcgorLS0gKFdIRVJFIGlkIDw9IG8uaWQpIGFuZCBERUZJTkUgdXNlcyBvbmx5 IGxvY2FsIGNvbHVtbnMuICBUaGUgcGxhbgorLS0gbXVzdCBzaG93IGEgTmVzdGVkIExvb3AgZHJp dmluZyB0aGUgb3V0ZXIgcmVsYXRpb24gaW50byB0aGUgaW5uZXIKKy0tIHN1YnF1ZXJ5IHNjYW4s IHdpdGggdGhlIFJQUiBXaW5kb3dBZ2cgcmUtZXhlY3V0ZWQgZm9yIGVhY2ggb3V0ZXIKKy0tIHJv dyBhbmQgdGhlIGNvcnJlbGF0aW9uIHN1cmZhY2luZyBhcyBhIHNjYW4tbGV2ZWwgRmlsdGVyIG9u CistLSAiaWQgPD0gby5pZCIuCistLSBQbGFuOiBOZXN0ZWQgTG9vcCB3aXRoIHRoZSBSUFIgV2lu ZG93QWdnIGluIHRoZSBpbm5lciBsZWcsIGRyaXZlbgorLS0gYnkgdGhlIGZpbHRlcmVkIG91dGVy IHJvd3MgKG8uaWQgSU4gKDUsIDEwKSkuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgby5p ZCBBUyBvdXRlcl9pZCwgci5pZCwgci5jbnQKK0ZST00gcnByX2ludGVnIG8sCitMQVRFUkFMICgK KyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRl ZworICAgIFdIRVJFIGlkIDw9IG8uaWQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAg ICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFs KSkKKykgcgorV0hFUkUgci5jbnQgPiAwIEFORCBvLmlkIElOICg1LCAxMCkKK09SREVSIEJZIG8u aWQsIHIuaWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTb3J0CisgICBTb3J0IEtleTogby5pZCwgci5pZAorICAgLT4gIE5lc3RlZCBMb29wCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnIG8KKyAgICAgICAgICAgICAgIEZpbHRlcjog KGlkID0gQU5ZICgnezUsMTB9Jzo6aW50ZWdlcltdKSkKKyAgICAgICAgIC0+ICBTdWJxdWVyeSBT Y2FuIG9uIHIKKyAgICAgICAgICAgICAgIEZpbHRlcjogKHIuY250ID4gMCkKKyAgICAgICAgICAg ICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgICAgICAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORykKKyAgICAgICAgICAgICAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAgICAg ICAgICAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAgICAgICAgICAgICAt PiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5p ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoaWQgPD0gby5pZCkKKygx NSByb3dzKQorCistLSBSZXN1bHQ6IGZvciBlYWNoIG9mIHRoZSB0d28gb3V0ZXIgaWRzICg1IGFu ZCAxMCksIHRoZSBMQVRFUkFMCistLSBzdWJxdWVyeSBwcm9kdWNlcyBSUFIgbWF0Y2ggY291bnRz IG92ZXIgdGhlIHJlc3RyaWN0ZWQgaW5wdXQuCitTRUxFQ1Qgby5pZCBBUyBvdXRlcl9pZCwgci5p ZCwgci5jbnQKK0ZST00gcnByX2ludGVnIG8sCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgaWQsIGNv dW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdIRVJFIGlkIDw9 IG8uaWQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgcgorV0hFUkUgci5j bnQgPiAwIEFORCBvLmlkIElOICg1LCAxMCkKK09SREVSIEJZIG8uaWQsIHIuaWQ7Cisgb3V0ZXJf aWQgfCBpZCB8IGNudCAKKy0tLS0tLS0tLS0rLS0tLSstLS0tLQorICAgICAgICA1IHwgIDEgfCAg IDIKKyAgICAgICAgNSB8ICAzIHwgICAyCisgICAgICAgMTAgfCAgMSB8ICAgMgorICAgICAgIDEw IHwgIDMgfCAgIDIKKyAgICAgICAxMCB8ICA1IHwgICAzCisgICAgICAgMTAgfCAgOCB8ICAgMwor KDYgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBWZXJpZnkgdGhhdCBSUFIgaXMgcmVqZWN0ZWQgaW5zaWRlIGEgcmVjdXJzaXZlIHF1ZXJ5Lgor LS0gSVNPL0lFQyAxOTA3NS01IDYuMTcuNSAoUjAyMCkgYW5kIDQuMTguNSAoUjAxMCkgY2l0ZSBD UkVBVEUKKy0tIFJFQ1VSU0lWRSBWSUVXIGV4YW1wbGVzIGFuZCBzdGF0ZSB0aGF0ICJyb3cgcGF0 dGVybiBtYXRjaGluZworLS0gaXMgcHJvaGliaXRlZCBpbiByZWN1cnNpdmUgcXVlcmllcyIuICBU aGUgZm9ybWFsIHJ1bGUgbGl2ZXMgaW4KKy0tIElTTy9JRUMgOTA3NS0yOjIwMTYgNy4xNyBTeW50 YXggUnVsZSAzKWYpOiBhIHBvdGVudGlhbGx5CistLSByZWN1cnNpdmUgPHdpdGggbGlzdCBlbGVt ZW50PiBzaGFsbCBub3QgY29udGFpbiBhIDxyb3cgcGF0dGVybgorLS0gbWVhc3VyZXM+IG9yIDxy b3cgcGF0dGVybiBjb21tb24gc3ludGF4Pi4gIFBlciAzKWUpLCBldmVyeQorLS0gPHdpdGggbGlz dCBlbGVtZW50PiB1bmRlciBXSVRIIFJFQ1VSU0lWRSBpcyAicG90ZW50aWFsbHkKKy0tIHJlY3Vy c2l2ZSIsIHNvIHRoZSByZWplY3Rpb24gY292ZXJzIHRoZSBiYXNlIChub24tcmVjdXJzaXZlKQor LS0gbGVnIHRvbywgbm90IGp1c3QgdGhlIHNlbGYtcmVmZXJlbmNpbmcgbGVnLgorLS0gV0lUSCBS RUNVUlNJVkU6IFJQUiBpbiB0aGUgYmFzZSBsZWcgaXMgcmVqZWN0ZWQgZXZlbiB0aG91Z2ggdGhl CistLSBiYXNlIGxlZyBuZXZlciByZWZlcmVuY2VzIHRoZSByZWN1cnNpdmUgQ1RFIG5hbWUuCitX SVRIIFJFQ1VSU0lWRSBzZXEgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVS IHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBS RVYodmFsKSkKKyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgaWQgKyAxMDAsIHZhbCwgY250IEZS T00gc2VxIFdIRVJFIGlkIDwgMworKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NIHNlcSBPUkRF UiBCWSBpZDsKK0VSUk9SOiAgY2Fubm90IHVzZSByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpbiBh IHJlY3Vyc2l2ZSBxdWVyeQorTElORSA2OiAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAg ICAgICAgICAgXgorLS0gQ1JFQVRFIFJFQ1VSU0lWRSBWSUVXOiByZXdyaXR0ZW4gYnkgbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoKQorLS0gaW50byBXSVRIIFJFQ1VSU0lWRSwgc28gdGhlIHNhbWUg cmVqZWN0aW9uIGFwcGxpZXMuICBUaGlzIGlzCistLSB0aGUgZm9ybSBJU08vSUVDIDE5MDc1LTUg Ni4xNy41IGNpdGVzIHZlcmJhdGltLgorQ1JFQVRFIFJFQ1VSU0lWRSBWSUVXIHJwcl9yZWN2KGlk LCB2YWwsIGNudCkgQVMKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CisgICAg RlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CitFUlJP UjogIGNhbm5vdCB1c2Ugcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaW4gYSByZWN1cnNpdmUgcXVl cnkKK0xJTkUgNjogICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICAgICAgICAgIF4KKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gQjguIFJQUiArIEluY3JlbWVudGFsIHNvcnQKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRo YXQgUlBSIHBhdHRlcm4gbWF0Y2hpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gdGhlIGlucHV0Cist LSB0byBXaW5kb3dBZ2cgYXJyaXZlcyB2aWEgYW4gaW5jcmVtZW50YWwgc29ydC4gIFRoZSBpbmRl eCBvbiAoaWQpCistLSBwcm92aWRlcyBwcmVzb3J0ZWQgaW5wdXQgZm9yIHRoZSBmaXJzdCBPUkRF UiBCWSBrZXksIHNvCistLSAiT1JERVIgQlkgaWQsIHZhbCIgbGV0cyB0aGUgcGxhbm5lciB1c2Ug SW5jcmVtZW50YWwgU29ydCB0byBvcmRlcgorLS0gb25seSBvbiB0aGUgc2Vjb25kIGtleS4gIFRo ZSBwbGFuIG11c3Qgc2hvdyBJbmNyZW1lbnRhbCBTb3J0CistLSBiZWxvdyB0aGUgUlBSIFdpbmRv d0FnZywgYW5kIFJQUiBtdXN0IHByb2R1Y2UgdGhlIHNhbWUgcGVyLXJvdworLS0gbWF0Y2ggY291 bnRzIGFzIGl0IHdvdWxkIHdpdGggYSBwbGFpbiBTb3J0LgorQ1JFQVRFIElOREVYIHJwcl9pbnRl Z19pZF9pZHggT04gcnByX2ludGVnIChpZCk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7Cist LSBQbGFuOiBSUFIgV2luZG93QWdnIGFib3ZlIGFuIEluY3JlbWVudGFsIFNvcnQgYWJvdmUgYW4g SW5kZXggU2Nhbi4KKy0tIFRoZSBJbmNyZW1lbnRhbCBTb3J0IGRlY2xhcmVzICJQcmVzb3J0ZWQg S2V5OiBpZCIgYW5kIHNvcnRzIG9ubHkKKy0tIG9uIHZhbCB3aXRoaW4gZWFjaCBpZCBncm91cC4K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkLCB2YWwKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCwgdmFsIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYisKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAxCisgICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGlkLCB2YWwKKyAgICAgICAgIFByZXNvcnRlZCBLZXk6IGlkCisgICAgICAgICAtPiAgSW5k ZXggU2NhbiB1c2luZyBycHJfaW50ZWdfaWRfaWR4IG9uIHJwcl9pbnRlZworKDggcm93cykKKwor LS0gUmVzdWx0OiBSUFIgb3ZlciB0aGUgaW5jcmVtZW50YWxseSBzb3J0ZWQgc3RyZWFtIHByb2R1 Y2VzIG1hdGNoCistLSBjb3VudHMgcGVyIHJvdy4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkLCB2 YWwKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09S REVSIEJZIGlkLCB2YWw7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUg fCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAK KyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAgfCAgNDUgfCAgIDAKKygxMCBy b3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgSU5ERVggcnByX2ludGVnX2lkX2lk eDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBWb2xhdGlsZSBmdW5jdGlvbnMgaW4gREVGSU5FIGFyZSByZWplY3RlZCBpbiB0aGUg cGxhbm5lci4gIFVuZGVyCistLSBSUFIncyBORkEgZW5naW5lIHRoZSBzYW1lIHJvdydzIERFRklO RSBwcmVkaWNhdGUgbWF5IGJlIGV2YWx1YXRlZAorLS0gbXVsdGlwbGUgdGltZXMgKGJhY2t0cmFj a2luZywgUFJFVi9ORVhUIG5hdmlnYXRpb24pLCBzbyBhIHZvbGF0aWxlCistLSByZXN1bHQgd291 bGQgbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIG5vbi1kZXRlcm1pbmlzdGljLiAgU1RBQkxFIGFuZAor LS0gSU1NVVRBQkxFIGNhbGxlZXMgYXJlIGFjY2VwdGVkLgorLS0gQmFzZWxpbmU6IFNUQUJMRSAo dG9fY2hhcikgYW5kIElNTVVUQUJMRSAobGVuZ3RoKSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KK1NF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2 YWwgPiBQUkVWKHZhbCkKKyAgICAgICAgICAgICAgICBBTkQgbGVuZ3RoKCd4JykgPSAxCisgICAg ICAgICAgICAgICAgQU5EIHRvX2NoYXIoZGF0ZSAnMjAyNi0wMS0wMScsICdZWVlZJykgPSAnMjAy NicpCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAg MSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAy NSB8ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAg MAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEw IHJvd3MpCisKKy0tIFZvbGF0aWxlIChyYW5kb20pIGlzIHJlamVjdGVkLgorU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYo dmFsKSBBTkQgcmFuZG9tKCkgPj0gMC4wKQorT1JERVIgQlkgaWQ7CitFUlJPUjogIHZvbGF0aWxl IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA2OiAgICAg REVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCByYW5kb20oKSA+PSAwLjApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjEwLiBS UFIgKyBDb3JyZWxhdGVkIHN1YnF1ZXJ5IGluIFdIRVJFCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0 IGFuIFJQUiB3aW5kb3cgcGxhY2VkIGluc2lkZSBhIGNvcnJlbGF0ZWQgc2NhbGFyCistLSBzdWJx dWVyeSBpcyBleGVjdXRlZCBvbmNlIHBlciBvdXRlciByb3cuICBERUZJTkUgc3RpbGwgcmVmZXJl bmNlcworLS0gb25seSBsb2NhbCBjb2x1bW5zIChxdWFsaWZpZWQgcmVmcyBmcm9tIHRoZSBvdXRl ciBxdWVyeSBhcmUgbm90CistLSBzdXBwb3J0ZWQgaW4gREVGSU5FKTsgdGhlIGNvcnJlbGF0aW9u IGxpdmVzIGluIHRoZSBzdWJxdWVyeSdzCistLSBXSEVSRSBjbGF1c2UgYXMgImkuaWQgPD0gby5p ZCIuICBUaGUgcGxhbiBtdXN0IHNob3cgYSBTdWJQbGFuCistLSBhdHRhY2hlZCB0byB0aGUgb3V0 ZXIgc2Nhbiwgd2l0aCB0aGUgUlBSIFdpbmRvd0FnZyBkcml2ZW4gYnkgYQorLS0gcGVyLXJvdyBz Y2FuIGZpbHRlciBjYXJyeWluZyB0aGUgY29ycmVsYXRpb24gcHJlZGljYXRlLgorLS0gUGxhbjog U3ViUGxhbiBhdHRhY2hlZCB0byB0aGUgb3V0ZXIgU2VxIFNjYW47IHRoZSBpbm5lciBzY2FuCist LSBjYXJyaWVzICJGaWx0ZXI6IChpZCA8PSBvLmlkKSIsIGNvbmZpcm1pbmcgdGhlIGNvcnJlbGF0 aW9uIGlzCistLSBldmFsdWF0ZWQgcGVyIG91dGVyIHJvdy4KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBvLmlkLCBvLnZhbCwKKyAgICAoU0VMRUNUIGNvdW50KCopIE9WRVIgdworICAgICBG Uk9NIHJwcl9pbnRlZyBpCisgICAgIFdIRVJFIGkuaWQgPD0gby5pZAorICAgICBXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQKKyAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgTElNSVQgMSkg QVMgZmlyc3RfY250CitGUk9NIHJwcl9pbnRlZyBvCitPUkRFUiBCWSBvLmlkOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgU29ydCBLZXk6IG8uaWQKKyAgIC0+ ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcgbworICAgICAgICAgU3ViUGxhbiBleHByXzEKKyAgICAg ICAgICAgLT4gIExpbWl0CisgICAgICAgICAgICAgICAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAg ICAgICAgICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpLmlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgICAgICAgICAgICAg ICAgUGF0dGVybjogYSBiKworICAgICAgICAgICAgICAgICAgICAgICBOYXYgTWFyayBMb29rYmFj azogMQorICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogaS5pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcnByX2ludGVnIGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRmlsdGVyOiAoaWQgPD0gby5pZCkKKygxMyByb3dzKQorCistLSBSZXN1bHQ6IGVhY2gg b3V0ZXIgcm93IHJlY2VpdmVzIHRoZSBmaXJzdF9jbnQgZnJvbSBpdHMgb3duCistLSBjb3JyZWxh dGVkIFJQUiBzdWJxdWVyeS4KK1NFTEVDVCBvLmlkLCBvLnZhbCwKKyAgICAoU0VMRUNUIGNvdW50 KCopIE9WRVIgdworICAgICBGUk9NIHJwcl9pbnRlZyBpCisgICAgIFdIRVJFIGkuaWQgPD0gby5p ZAorICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgUEFUVEVSTiAoQSBC KykKKyAgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKyAgICAgT1JERVIgQlkg aWQKKyAgICAgTElNSVQgMSkgQVMgZmlyc3RfY250CitGUk9NIHJwcl9pbnRlZyBvCitPUkRFUiBC WSBvLmlkOworIGlkIHwgdmFsIHwgZmlyc3RfY250IAorLS0tLSstLS0tLSstLS0tLS0tLS0tLQor ICAxIHwgIDEwIHwgICAgICAgICAwCisgIDIgfCAgMjAgfCAgICAgICAgIDIKKyAgMyB8ICAxNSB8 ICAgICAgICAgMgorICA0IHwgIDI1IHwgICAgICAgICAyCisgIDUgfCAgIDUgfCAgICAgICAgIDIK KyAgNiB8ICAzMCB8ICAgICAgICAgMgorICA3IHwgIDM1IHwgICAgICAgICAyCisgIDggfCAgMjAg fCAgICAgICAgIDIKKyAgOSB8ICA0MCB8ICAgICAgICAgMgorIDEwIHwgIDQ1IHwgICAgICAgICAy CisoMTAgcm93cykKKworLS0gQSBjb2x1bW4gcmVmZXJlbmNlZCBvbmx5IGJ5IERFRklORSBtdXN0 IG5vdCBrZWVwIGFuIHVucmVsYXRlZCBjb2x1bW4gdGhhdAorLS0gbWVyZWx5IHNoYXJlcyBpdHMg YXR0cmlidXRlIG51bWJlci4gIERFRklORSByZWZlcmVuY2VzIGEgKHJwcl9vdmVyMSk7IGMKKy0t IChycHJfb3ZlcjIpIGhhcyB0aGUgc2FtZSBhdHRubyBidXQgaXMgdW51c2VkLCBzbyBpdCBtdXN0 IGJlIGRyb3BwZWQuCitDUkVBVEUgVEFCTEUgcnByX292ZXIxIChhIGludCk7CitDUkVBVEUgVEFC TEUgcnByX292ZXIyIChjIGludCk7CitJTlNFUlQgSU5UTyBycHJfb3ZlcjEgVkFMVUVTICgxKSwo MiksKDMpOworSU5TRVJUIElOVE8gcnByX292ZXIyIFZBTFVFUyAoMSksKDIpLCgzKTsKK0VYUExB SU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBjbnQgRlJPTSAoCisgIFNFTEVDVCBhIEFT IG9hLCBjIEFTIG9jLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgIEZST00gcnByX292ZXIxIENS T1NTIEpPSU4gcnByX292ZXIyCisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBhIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgICAgUEFU VEVSTiAoWCspIERFRklORSBYIEFTIGEgPiAwKQorKSBzOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFN1YnF1ZXJ5IFNjYW4gb24gcworICAgT3V0cHV0OiBzLmNudAorICAgLT4gIFdpbmRvd0FnZwor ICAgICAgICAgT3V0cHV0OiBycHJfb3ZlcjEuYSwgTlVMTDo6aW50ZWdlciwgY291bnQoKikgT1ZF UiB3CisgICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9vdmVyMS5hIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRl cm46IHgrIgorICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgICAgICAgIC0+ICBTb3J0 CisgICAgICAgICAgICAgICBPdXRwdXQ6IHJwcl9vdmVyMS5hCisgICAgICAgICAgICAgICBTb3J0 IEtleTogcnByX292ZXIxLmEKKyAgICAgICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBycHJfb3ZlcjEuYQorICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5ycHJfb3ZlcjEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogcnByX292ZXIxLmEKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBNYXRlcmlh bGl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5y cHJfb3ZlcjIKKygxNiByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9vdmVyMSwgcnByX292ZXIyOwor LS0gQ2xlYW51cAorRFJPUCBUQUJMRSBycHJfaW50ZWc7CitEUk9QIFRBQkxFIHJwcl9pbnRlZzI7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMWZjODVhMzY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CkBAIC0wLDAgKzEsNDkxNiBAQAorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBSUFIgTkZBIFRlc3RzCistLSBUZXN0cyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRpb24g TkZBIFJ1bnRpbWUgRXhlY3V0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBUaGlzIHRlc3Qgc3VpdGUgdmFs aWRhdGVzIHRoZSBORkEgKE5vbi1kZXRlcm1pbmlzdGljIEZpbml0ZQorLS0gQXV0b21hdG9uKSBy dW50aW1lIGV4ZWN1dGlvbiBlbmdpbmUgaW4gbm9kZVdpbmRvd0FnZy5jLAorLS0gZm9jdXNpbmcg b24gdXBkYXRlX3JlZHVjZWRfZnJhbWUgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgorLS0KKy0tIFRl c3QgU3RyYXRlZ3k6CistLSAgIERpYWdvbmFsIHBhdHRlcm4gc3R5bGUgdXNpbmcgQVJSQVkgZmxh Z3MgdG8gZXhwbGljaXRseQorLS0gICBjb250cm9sIHdoaWNoIHBhdHRlcm4gdmFyaWFibGVzIG1h dGNoIGF0IGVhY2ggcm93LgorLS0KKy0tIFRlc3QgQ292ZXJhZ2U6CistLSAgIEJhc2ljIE5GQSBG bG93IChtYXRjaC0+YWJzb3JiLT5hZHZhbmNlKQorLS0gICBBYnNvcnB0aW9uIE9wdGltaXphdGlv bgorLS0gICBDb250ZXh0IExpZmVjeWNsZSBNYW5hZ2VtZW50CistLSAgIEFkdmFuY2UgUGhhc2Ug KEVwc2lsb24gVHJhbnNpdGlvbnMpCistLSAgIE1hdGNoIFBoYXNlIChWYXJpYWJsZSBNYXRjaGlu ZykKKy0tICAgRnJhbWUgQm91bmRhcnkgSGFuZGxpbmcKKy0tICAgU3RhdGUgTWFuYWdlbWVudCAo RGVkdXBsaWNhdGlvbikKKy0tICAgU3RhdGlzdGljcyBhbmQgRGlhZ25vc3RpY3MKKy0tICAgUXVh bnRpZmllciBSdW50aW1lIEJlaGF2aW9yCistLSAgIFBhdGhvbG9naWNhbCBQYXR0ZXJuIFByb3Rl Y3Rpb24KKy0tICAgQWx0ZXJuYXRpb24gUnVudGltZSBCZWhhdmlvcgorLS0gICBEZWVwIE5lc3Rl ZCBHcm91cHMKKy0tICAgU0tJUCBPcHRpb25zIChSdW50aW1lKQorLS0gICBJTklUSUFMIE1vZGUg KFJ1bnRpbWUpCistLSAgIEZyYW1lIEJvdW5kYXJ5IFZhcmlhdGlvbnMKKy0tICAgU3BlY2lhbCBQ YXJ0aXRpb24gQ2FzZXMKKy0tICAgREVGSU5FIFNwZWNpYWwgQ2FzZXMKKy0tICAgQWJzb3JwdGlv biBEeW5hbWljIEZsYWdzCistLSAgIFplcm8tQ29uc3VtcHRpb24gQ3ljbGUgRGV0ZWN0aW9uCist LQorLS0gUmVzcG9uc2liaWxpdHk6CistLSAgIC0gTkZBIHJ1bnRpbWUgZXhlY3V0aW9uIHBhdGhz CistLSAgIC0gQ29udGV4dC9TdGF0ZSBsaWZlY3ljbGUgbWFuYWdlbWVudAorLS0gICAtIFJ1bnRp bWUgYm91bmRhcnkgY29uZGl0aW9ucyBhbmQgcHJvdGVjdGlvbnMKKy0tCistLSBOT1QgdGVzdGVk IGhlcmUgKGNvdmVyZWQgaW4gb3RoZXIgZmlsZXMpOgorLS0gICAtIFBhdHRlcm4gcGFyc2luZy9v cHRpbWl6YXRpb24gKHJwcl9iYXNlLnNxbCkKKy0tICAgLSBFWFBMQUlOIG91dHB1dCAocnByX2V4 cGxhaW4uc3FsKQorLS0gICAtIFBSRVYvTkVYVCBzZW1hbnRpY3MgKHJwci5zcWwpCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQmFzaWMgTkZBIEZsb3cKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU2ltcGxlIHNlcXVlbnRpYWwg cGF0dGVybgorV0lUSCB0ZXN0X3NlcXVlbnRpYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAg ICAgICg1LCBBUlJBWVsnXyddKSAgLS0gTm8gbWF0Y2gKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9zZXF1ZW50aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8 ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7RH0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7X30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoNSByb3dzKQorCistLSBRdWFudGlmaWVkIHBhdHRlcm4gKEErIEIrIEMrKQor V0lUSCB0ZXN0X3F1YW50aWZpZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydDJ10pLAorICAgICAgICAoNywgQVJSQVlb J0MnXSksCisgICAgICAgICg4LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X3F1YW50aWZpZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKyBDKykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNworICAyIHwg e0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNworICAzIHwge0F9ICAgfCAgICAgICAgICAg MyB8ICAgICAgICAgNworICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA4IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDggcm93cykKKworLS0gT3B0 aW9uYWwgcGF0dGVybiAoQSBCPyBDKQorV0lUSCB0ZXN0X29wdGlvbmFsIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0MnXSksICAtLSBCIHNraXBwZWQKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwgIC0tIEIgbWF0 Y2hlZAorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9vcHRpb25hbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNQorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge199ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorKDYgcm93cykKKworLS0gQWx0ZXJuYXRpb24gcGF0dGVybiAoQSAoQnxDKSBE KQorV0lUSCB0ZXN0X2FsdGVybmF0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksICAtLSBG aXJzdCBicmFuY2gKKyAgICAgICAgKDMsIEFSUkFZWydEJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwgIC0tIFNlY29uZCBicmFuY2gKKyAgICAg ICAgKDYsIEFSUkFZWydEJ10pLAorICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9hbHRlcm5hdGlvbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgKEIg fCBDKSBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAgNSB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg3IHJvd3Mp CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBPcHRpbWl6YXRpb24KKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3Ji YWJsZSBwYXR0ZXJuIChBKykKK1dJVEggdGVzdF9hYnNvcmJhYmxlIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydB J10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQg fCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAx IHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAg ICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAor ICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge199ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gTWl4ZWQgYWJzb3JiYWJsZS9ub24t YWJzb3JiYWJsZSAoKEErKSB8IEIpCitXSVRIIHRlc3RfbWl4ZWRfYWJzb3JwdGlvbiBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0 LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfbWl4ZWRfYWJzb3JwdGlvbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKykg fCBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAg MiB8ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0 IHwge0J9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gU3RhdGUgY292ZXJhZ2UgKHNhbWUgZWxl bUlkeCwgZGlmZmVyZW50IGNvdW50KQorV0lUSCB0ZXN0X3N0YXRlX2NvdmVyYWdlIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9zdGF0ZV9jb3ZlcmFnZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7Mix9IEIp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBB UyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0g ICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwg ICAgICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7X30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBSZWx1Y3RhbnQgcGF0dGVybiAoQSs/KSAtIG5v dCBhYnNvcmJhYmxlCistLSBDb21wYXJlIHdpdGggZ3JlZWR5IEErIGFib3ZlOiByZWx1Y3RhbnQg ZXhjbHVkZWQgZnJvbSBhYnNvcnB0aW9uLgorLS0gRWFjaCBjb250ZXh0IHByb2R1Y2VzIG1pbmlt dW0gbWF0Y2ggaW5kZXBlbmRlbnRseS4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfYWJzb3JwdGlvbiBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2Fic29ycHRpb24KK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBKz8pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAgMQorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge0F9ICAg fCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAg ICAgICAgNAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykK KworLS0gQWJzb3JwdGlvbiB3aXRoIGZpeGVkIHN1ZmZpeDogQSsgQgorV0lUSCB0ZXN0X2Fic29y Yl9zdWZmaXggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB J10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfYWJzb3JiX3N1ZmZpeAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8 ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAg ICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoNSByb3dzKQorCistLSBQZXItYnJhbmNoIGFic29ycHRpb24gd2l0aCBBTFQ6 IEIrIEMgfCBCKyBECitXSVRIIHRlc3RfYWJzb3JiX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwK KyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfYWx0CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQisgQyB8IEIrIEQpCisgICAgREVGSU5FCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBE IEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtC fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIg fCAgICAgICAgIDQKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8 IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtYfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE5vbi1hYnNvcmJhYmxlOiBBIEIrICh1bmJv dW5kZWQgbm90IGluIGZpcnN0IHBvc2l0aW9uKQorV0lUSCB0ZXN0X25vX2Fic29yYiBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0 LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9u b19hYnNvcmIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAgNAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA1IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykK KworLS0gR1JPVVAgbWVyZ2UgZW5hYmxlcyBhYnNvcnB0aW9uOiAoQSBCKSAoQSBCKSsgb3B0aW1p emVkIHRvIChBIEIpezIsfQorV0lUSCB0ZXN0X2Fic29yYl9ncm91cCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSks CisgICAgICAgICg3LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2dyb3VwCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEEgQikgKEEgQikrKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg NgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNgorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDcgcm93cykKKworLS0gVHdvIGNvbnNlY3V0aXZlIHVuYm91bmRlZCBncm91cHM6 IChBIEIpKyAoQyBEKSsKKy0tIFRoZSBsZWFkaW5nIGdyb3VwIChBIEIpKyBpcyBhYnNvcmJhYmxl ICh1bmJvdW5kZWQgbXVsdGktZWxlbWVudCk7IChDIEQpKyBpcworLS0gYSBkaXN0aW5jdCBzaWJs aW5nIGdyb3VwIHRoYXQgZG9lcyBub3QgbWVyZ2Ugd2l0aCBpdC4gIFdoZW4gdGhlIGxlYWRpbmcg Z3JvdXAKKy0tIGV4aXRzIGludG8gdGhlIHNpYmxpbmcsIGl0cyBib2R5IGxlYWYtVkFSIGNvdW50 IG11c3QgYmUgY2xlYXJlZCBzbyBpdCBkb2VzCistLSBub3QgbGVhayBpbnRvIHRoZSBzaWJsaW5n J3Mgc2hhcmVkIGRlcHRoIHNsb3QuCitXSVRIIHRlc3RfYWJzb3JiX3R3b19ncm91cHMgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFS UkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0MnXSksCisgICAgICAgICg4LCBBUlJBWVsn RCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX3R3b19ncm91cHMKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpKyAoQyBEKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAy IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgOAorICA2IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA4IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDggcm93cykKKworLS0g Rml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIEJ7Mn0pKyBDCistLSBCezJ9IGhhcyBt aW4gPT0gbWF4LCBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0byAoQSBCIEIpKyBDCitXSVRIIHRl c3RfYWJzb3JiX2ZpeGVkbGVuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsICBB UlJBWVsnQSddKSwKKyAgICAgICAgKDgsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJB WVsnQiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDExLCBBUlJBWVsn WCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2ZpeGVkbGVuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSBCezJ9KSsgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAg ICAgMSB8ICAgICAgICAxMAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA4IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA5IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEwIHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDExIHwge1h9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDExIHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIHZhcnMgbWVyZ2VkIHRvIGZpeGVk LWxlbmd0aDogKEEgQiBCKSsgLT4gKEEgQnsyfSkrCitXSVRIIHRlc3RfYWJzb3JiX2NvbnNlY3V0 aXZlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsICBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBBUlJBWVsnQidd KSwKKyAgICAgICAgKDQsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsICBBUlJBWVsnQiddKSwK KyAgICAgICAgKDYsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsICBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDgsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDEwLCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2NvbnNlY3V0aXZlCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSBCIEIpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDkK KyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtYfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKygxMCByb3dzKQorCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29y cHRpb246IChBIChCIEMpezJ9IEQpKyBFCistLSBJbm5lciBncm91cCB7Mn0gaGFzIG1pbiA9PSBt YXg7IGFic29yYmFibGUgdmlhIHJlY3Vyc2l2ZSBjaGVjaworLS0gc3RlcF9zaXplID0gMSArICgx KzEpKjIgKyAxID0gNgorV0lUSCB0ZXN0X2Fic29yYl9uZXN0ZWRfZml4ZWRsZW4gQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydDJ10pLAorICAgICAgICAo NCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwg IEFSUkFZWydEJ10pLAorICAgICAgICAoNywgIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgIEFS UkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydDJ10pLAorICAgICAgICAoMTAsIEFSUkFZ WydCJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydDJ10pLAorICAgICAgICAoMTIsIEFSUkFZWydE J10pLAorICAgICAgICAoMTMsIEFSUkFZWydFJ10pLAorICAgICAgICAoMTQsIEFSUkFZWydYJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfbmVzdGVkX2ZpeGVkbGVuCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSAoQiBDKXsyfSBEKSsgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgMTMKKyAgMiB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAxMCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMSB8IHtDfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAxMyB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxNCB8IHtYfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygxNCByb3dzKQorCistLSBEb3VibHkgbmVzdGVk IGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoKEIgQ3szfSl7Mn0gRCl7Mn0gRSkr IEYKKy0tIHN0ZXBfc2l6ZSA9IDEgKyAoKDErMykqMisxKSoyICsgMSA9IDIwOyAyIGl0ZXJhdGlv bnMgKyBGID0gNDEgcm93cworV0lUSCB0ZXN0X2Fic29yYl9kb3VibHlfbmVzdGVkIEFTICgKKyAg ICBTRUxFQ1QgdiBBUyBpZCwgQVJSQVlbCisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4g diAlIDQxIElOICgxLCAyMSkgIFRIRU4gJ0EnCisgICAgICAgICAgICBXSEVOIHYgJSA0MSBJTiAo MiwgNiwgMTEsIDE1LCAyMiwgMjYsIDMxLCAzNSkgVEhFTiAnQicKKyAgICAgICAgICAgIFdIRU4g diAlIDQxIElOICgzLDQsNSwgNyw4LDksIDEyLDEzLDE0LCAxNiwxNywxOCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAyMywyNCwyNSwgMjcsMjgsMjksIDMyLDMzLDM0LCAzNiwzNywzOCkg VEhFTiAnQycKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgxMCwgMTksIDMwLCAzOSkgVEhF TiAnRCcKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgyMCwgNDApIFRIRU4gJ0UnCisgICAg ICAgICAgICBXSEVOIHYgJSA0MSA9IDAgVEhFTiAnRicKKyAgICAgICAgICAgIEVMU0UgJ1gnCisg ICAgICAgIEVORAorICAgIF0gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4 MikgQVMgcyh2KQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2Fic29yYl9kb3VibHlfbmVzdGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoKEIgQyBD IEMpezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUg QVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg IDQxCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAgfCB7RH0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgMTEgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTIg fCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTMgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgMTQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg MTUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTYgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgMTcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMTggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTkgfCB7RH0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMjAgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMjEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjIgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgMjQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjUgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMjcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjggfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjkgfCB7Q30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgMzAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzEg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzIgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgMzMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg MzQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzUgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgMzYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMzcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzggfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMzkgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgNDAgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDEgfCB7Rn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDIgfCB7QX0gICB8ICAgICAgICAgIDQyIHwgICAg ICAgIDgyCisgNDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDQgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgNDYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDcgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDggfCB7Q30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgNDkgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTAg fCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTEgfCB7RH0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgNTIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg NTMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTQgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgNTUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgNTYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTcgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgNTggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgNTkgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjAgfCB7RH0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjEgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgNjIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjMgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjQgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgNjUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjYgfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjcgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgNjggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjkg fCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzAgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgNzEgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg NzIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzMgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgNzQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgNzUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzYgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgNzcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgNzggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzkgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgODAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgODEgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgODIgfCB7Rn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoODIgcm93cykKKworLS0gMy1sZXZlbCBFTkQg Y2hhaW46ICgoQSAoQiBDKXsyfSl7Mn0pKworLS0gVGVzdHMgRU5EKEJDezJ9KSAtPiBFTkQoQS4u ezJ9KSAtPiBFTkQoKykgY2hhaW5pbmcKKy0tIDIgaXRlcmF0aW9ucyBvZiArLCBlYWNoIDEwIHJv d3M6IChBIEIgQyBCIEMpKEEgQiBDIEIgQykKK1dJVEggdGVzdF9hYnNvcmJfM2xldmVsX2VuZCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSks ICAtLSAxc3QgKyBpdGVyLCAxc3QgezJ9LCBBCisgICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCAgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCAgQVJSQVlbJ0InXSksCisgICAg ICAgICg1LCAgQVJSQVlbJ0MnXSksICAtLSAxc3QgKEJDKXsyfSBkb25lCisgICAgICAgICg2LCAg QVJSQVlbJ0EnXSksICAtLSAxc3QgKyBpdGVyLCAybmQgezJ9LCBBCisgICAgICAgICg3LCAgQVJS QVlbJ0InXSksCisgICAgICAgICg4LCAgQVJSQVlbJ0MnXSksCisgICAgICAgICg5LCAgQVJSQVlb J0InXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0MnXSksICAtLSAybmQgKEJDKXsyfSBkb25lLCAx c3QgezJ9IGRvbmUsIDFzdCArIGl0ZXIgZG9uZQorICAgICAgICAoMTEsIEFSUkFZWydBJ10pLCAg LS0gMm5kICsgaXRlciwgMXN0IHsyfSwgQQorICAgICAgICAoMTIsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMTMsIEFSUkFZWydDJ10pLAorICAgICAgICAoMTQsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMTUsIEFSUkFZWydDJ10pLAorICAgICAgICAoMTYsIEFSUkFZWydBJ10pLCAgLS0gMm5kICsg aXRlciwgMm5kIHsyfSwgQQorICAgICAgICAoMTcsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTgs IEFSUkFZWydDJ10pLAorICAgICAgICAoMTksIEFSUkFZWydCJ10pLAorICAgICAgICAoMjAsIEFS UkFZWydDJ10pLCAgLS0gMm5kICsgaXRlciBkb25lCisgICAgICAgICgyMSwgQVJSQVlbJ1gnXSkg ICAtLSBubyBtYXRjaCwgKyBlbmRzCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfM2xldmVsX2VuZAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkrKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRj aF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgIDIwCisgIDIgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDcgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDggfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgMTAgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTEg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTIgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgMTMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg MTQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTUgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgMTYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMTcgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTggfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMTkgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMjAgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjEgfCB7WH0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMjEgcm93cykKKworLS0gTXVsdGlwbGUgdW5ib3Vu ZGVkOiBBKyBCKyAoZmlyc3QgZWxlbWVudCB1bmJvdW5kZWQgZW5hYmxlcyBhYnNvcnB0aW9uKQor V0lUSCB0ZXN0X211bHRpX3VuYm91bmRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0aV91bmJvdW5kZWQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAg IHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtY fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29u dGV4dCBMaWZlY3ljbGUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gTXVsdGlwbGUgb3ZlcmxhcHBpbmcgY29udGV4dHMg KFNLSVAgVE8gTkVYVCBST1cpCitXSVRIIHRlc3Rfb3ZlcmxhcHBpbmdfY29udGV4dHMgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X292ZXJsYXBwaW5nX2NvbnRleHRzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg IDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtffSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIEZhaWxlZCBjb250ZXh0IGNsZWFudXAg KGVhcmx5IGZhaWx1cmUpCitXSVRIIHRlc3RfY29udGV4dF9jbGVhbnVwIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLCAgLS0gUHJ1bmVkIGF0 IGZpcnN0IHJvdworICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsn XyddKSwgIC0tIE1pc21hdGNoZWQgYWZ0ZXIgcm93IDIKKyAgICAgICAgKDQsIEFSUkFZWydBJ10p LAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9jb250ZXh0X2NsZWFudXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7X30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAg ICA0IHwgICAgICAgICA1CisgIDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiso NSByb3dzKQorCistLSBQYXJ0aXRpb24gZW5kIChpbmNvbXBsZXRlIGNvbnRleHRzKQorV0lUSCB0 ZXN0X3BhcnRpdGlvbl9lbmQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pCisgICAgICAgIC0tIFBhdHRlcm4gcmVxdWlyZXMgQiwgYnV0IHBhcnRpdGlv biBlbmRzCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcGFydGl0aW9uX2VuZAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoMyByb3dzKQorCistLSBDb21wbGV0ZWQgY29udGV4dCBlbmNvdW50ZXJl ZCBkdXJpbmcgcHJvY2Vzc2luZworLS0gUGF0dGVybiAoQSB8IEIgQyBEKTogQ3R4MSB0YWtlcyBs b25nIEItPkMtPkQgcGF0aCwgd2hpbGUgQ3R4MiB0YWtlcworLS0gc2hvcnQgQSBwYXRoIGFuZCBj b21wbGV0ZXMgZmlyc3QuIE5leHQgcm93IHNlZXMgQ3R4MgorLS0gd2l0aCBzdGF0ZXM9TlVMTCBh bmQgc2tpcHMgaXQuCitXSVRIIHRlc3RfY29tcGxldGVkX2N0eCBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0MnLCAnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydEJywgJ18nXSksCisgICAgICAg ICg0LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY29t cGxldGVkX2N0eAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgfCBCIEMgRCkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBB TlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QixffSB8ICAgICAg ICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QyxBfSB8ICAgICAgICAgICAyIHwgICAgICAgICAy CisgIDMgfCB7RCxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7XyxffSB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBSZWx1Y3RhbnQgY29udGV4dCBs aWZlY3ljbGUgKEErPyBCIHdpdGggU0tJUCBUTyBORVhUIFJPVykKKy0tIEErPyBleGl0cyBlYXJs eSBidXQgaWYgQiBub3QgYXZhaWxhYmxlLCBmYWxscyBiYWNrIHRvIGxvb3AuCistLSBDb250ZXh0 cyBub3QgYWJzb3JiZWQgKHJlbHVjdGFudCksIHNvIG11bHRpcGxlIHN1cnZpdmUuCitXSVRIIHRl c3RfcmVsdWN0YW50X2NvbnRleHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfY29udGV4dAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEr PyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAg MiB8ICAgICAgICAgMworICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBBZHZhbmNlIFBoYXNlIChFcHNpbG9uIFRyYW5zaXRpb25zKQorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBOZXN0ZWQg Z3JvdXBzICgoQSBCKSspCitXSVRIIHRlc3RfbmVzdGVkX2dyb3VwcyBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSks CisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X25lc3RlZF9ncm91cHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICA2CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA2CisgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2Cisg IDYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7X30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNyByb3dzKQorCistLSBNdWx0aXBsZSBhbHRlcm5hdGlvbiBi cmFuY2hlcyAoQSAoQnxDfEQpIEUpCitXSVRIIHRlc3RfbXVsdGlfYWx0IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnRSdd KSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0QnXSksCisg ICAgICAgICg5LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X211 bHRpX2FsdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgKEIgfCBDIHwgRCkgRSkKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcg PSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBm bGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAg MiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtFfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYK KyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtFfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAgICAgICAgIDcgfCAgICAgICAg IDkKKyAgOCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtFfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyg5IHJvd3MpCisKKy0tIE9wdGlvbmFsIFZBUiBhdCBz dGFydCAoQT8gQiBDKQorV0lUSCB0ZXN0X29wdGlvbmFsX3ZhciBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwgIC0tIEEgc2tpcHBlZAorICAg ICAgICAoMiwgQVJSQVlbJ0MnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwgIC0tIEEgbWF0 Y2hlZAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29wdGlvbmFsX3ZhcgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEE/IEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0J9ICAgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMgorICAyIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNQorICA0IHwge0J9ICAgfCAgICAg ICAgICAgNCB8ICAgICAgICAgNQorICA1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorKDUgcm93cykKKworLS0gTmVzdGVkIGFsdGVybmF0aW9uICgoQXxCKSAoQ3xEKSkKK1dJVEgg dGVzdF9uZXN0ZWRfYWx0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0MnXSksICAtLSBBIEMKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksICAtLSBBIEQKKyAg ICAgICAgKDUsIEFSUkFZWydCJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0MnXSksICAtLSBCIEMK KyAgICAgICAgKDcsIEFSUkFZWydCJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0QnXSkgICAtLSBC IEQKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfYWx0CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBB UyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDIKKyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtCfSAgIHwgICAgICAgICAgIDcgfCAg ICAgICAgIDgKKyAgOCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg4IHJvd3Mp CisKKy0tIE1peGVkIGdyZWVkeS9yZWx1Y3RhbnQgc2VxdWVuY2U6IEErPyBCKyAocmVsdWN0YW50 IEEsIGdyZWVkeSBCKQorLS0gQSBleGl0cyBhcyBlYXJseSBhcyBwb3NzaWJsZSwgQiBjb25zdW1l cyB0aGUgcmVzdCBncmVlZGlseQorV0lUSCB0ZXN0X21peGVkX3JlbHVjdGFudCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X21peGVkX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/ IEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNQorICAyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge0EsQn0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gT3B0aW9uYWwgcmVsdWN0YW50IGdyb3Vw OiAoQSBCKT8/IEMKKy0tIFJlbHVjdGFudCBncm91cCBlbnRyeSB0cmllcyBza2lwIGZpcnN0LCBi dXQgdGhlIHNraXAgcGF0aCBuZWVkcyBDCistLSBhdCByb3cgMSB3aGljaCBpcyBBIC0+IHNraXAg ZmFpbHMuIEVudGVyIHBhdGggc3VjY2VlZHM6IEEoMSkgQigyKSBDKDMpLgorV0lUSCB0ZXN0X29w dGlvbmFsX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywK KyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vcHRpb25hbF9yZWx1 Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpPz8gQykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0J9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDMgcm93cykKKworLS0gTm9uLWxlYWRpbmcgcmVsdWN0YW50IG9wdGlvbmFsIFZBUjog KEIgQT8/IEMpCistLSBSZWx1Y3RhbnQgQT8/IHNob3VsZCBwcmVmZXIgdG8gc2tpcCwgbWF0Y2hp bmcgQigxKSBDKDIpIHdpdGggQSBsZWZ0CistLSB1bm1hdGNoZWQgKG1hdGNoX2VuZCAyKS4gIFRo ZSBsZWFkaW5nL2dyb3VwIHJlbHVjdGFudCBjYXNlcyBhYm92ZSBnbyB0aHJvdWdoCistLSB0aGUg YmVnaW4gcGF0aDsgdGhpcyBleGVyY2lzZXMgdGhlIG5vbi1sZWFkaW5nIHNraXAgcGF0aCwKKy0t IHdoaWNoIG11c3QgaG9ub3IgcmVsdWN0YW50IG9yZGVyaW5nIHRvby4KK1dJVEggdGVzdF9ub25s ZWFkaW5nX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywgJ0MnXSksCisgICAgICAg ICgzLCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25vbmxlYWRp bmdfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChCIEE/PyBDKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7Qn0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QSxD fSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgb3V0ZXIgcXVhbnRpZmllciBvdmVy IGEgbnVsbGFibGUgcmVsdWN0YW50IGJvZHk6IFNRTC9SUFIKKy0tIHNlbWFudGljcyBjYWxsIGZv ciB0aGUgc2hvcnRlc3QgKGVtcHR5KSBtYXRjaC4gIEluIHRoZSBjb3VudDxtaW4gY2FzZQorLS0g dGhlIGVuZ2luZSBtdXN0IHByZWZlciB0aGUgZmFzdC1mb3J3YXJkIChleGl0KSBwYXRoIGZvciBy ZWx1Y3RhbnQKKy0tIGdyb3VwcyBhbmQgc3VwcHJlc3MgbG9uZ2VyIG1hdGNoZXMgb25jZSBleGl0 IHJlYWNoZXMgRklOLCBtaXJyb3JpbmcgdGhlCistLSBzaWJsaW5nIG1pbjw9Y291bnQ8bWF4IGJy YW5jaC4gIFRoZSAyLWxldmVsIGdyZWVkeS9yZWx1Y3RhbnQgbWF0cml4IHBsdXMgYQorLS0gbWlu Pj0yIGJvdW5kYXJ5IGFuZCBzaW5nbGUtcXVhbnRpZmllciBjb250cm9scyBsb2NhbGl6ZSB0aGUg YmVoYXZpb3VyOiBvbmx5CistLSB0aGUgYWxsLXJlbHVjdGFudCBjYXNlIChycikgc2hvdWxkIGRp ZmZlci4KK1dJVEggdChpZCwgaXNhKSBBUyAoVkFMVUVTICgxLCB0cnVlKSwgKDIsIHRydWUpLCAo MywgdHJ1ZSksICg0LCBmYWxzZSkpCitTRUxFQ1QgaWQsCisgICAgICAgY291bnQoKikgT1ZFUiBn ZyAgQVMgZ2csICAgICAtLSAoQT8pKyAgICAgIGdyZWVkeSAvIGdyZWVkeQorICAgICAgIGNvdW50 KCopIE9WRVIgZ3IgIEFTIGdyLCAgICAgLS0gKEE/PykrICAgICBncmVlZHkgLyByZWx1Y3RhbnQK KyAgICAgICBjb3VudCgqKSBPVkVSIHJnICBBUyByZywgICAgIC0tIChBPykrPyAgICAgcmVsdWN0 YW50IC8gZ3JlZWR5CisgICAgICAgY291bnQoKikgT1ZFUiByciAgQVMgcnIsICAgICAtLSAoQT8/ KSs/ICAgIHJlbHVjdGFudCAvIHJlbHVjdGFudAorICAgICAgIGNvdW50KCopIE9WRVIgcnIyIEFT IHJyMiwgICAgLS0gKEE/Pyl7Mix9PyByZWx1Y3RhbnQsIG1pbj49MiBib3VuZGFyeQorICAgICAg IGNvdW50KCopIE9WRVIgY2EgIEFTIGNhLCAgICAgLS0gQT8/ICAgICAgICBzaW5nbGUgcmVsdWN0 YW50IGNvbnRyb2wKKyAgICAgICBjb3VudCgqKSBPVkVSIGNzICBBUyBjcyAgICAgIC0tIEEqPyAg ICAgICAgc2luZ2xlIHJlbHVjdGFudCBjb250cm9sCitGUk9NIHQKK1dJTkRPVyBnZyAgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOICgoQT8pKykgICAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIGdyICBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKChBPz8pKykgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAgcmcgIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoKEE/KSs/KSAgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICByciAg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOICgoQT8/KSs/KSAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIHJy MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKChBPz8pezIsfT8pIERFRklORSBBIEFTIGlzYSksCisgICAgICAg Y2EgIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQT8/KSAgICAgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAg ICBjcyAgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBQQVRURVJOIChBKj8pICAgICAgICBERUZJTkUgQSBBUyBpc2EpCitPUkRF UiBCWSBpZDsKKyBpZCB8IGdnIHwgZ3IgfCByZyB8IHJyIHwgcnIyIHwgY2EgfCBjcyAKKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tLSstLS0tKy0tLS0KKyAgMSB8ICAzIHwgIDMgfCAgMSB8 ICAwIHwgICAwIHwgIDAgfCAgMAorICAyIHwgIDAgfCAgMCB8ICAxIHwgIDAgfCAgIDAgfCAgMCB8 ICAwCisgIDMgfCAgMCB8ICAwIHwgIDEgfCAgMCB8ICAgMCB8ICAwIHwgIDAKKyAgNCB8ICAwIHwg IDAgfCAgMCB8ICAwIHwgICAwIHwgIDAgfCAgMAorKDQgcm93cykKKworLS0gTm9uLWxlYWRpbmcg cmVsdWN0YW50IG9wdGlvbmFsIEdST1VQIHdpdGggYSBmb2xsb3dlcjogKEIgKEEgWCk/PyBDKQor LS0gTGlrZSB0aGUgVkFSIGNhc2UgYWJvdmUgYnV0IGEgbXVsdGktZWxlbWVudCBncm91cDsgaXQg Z29lcyB0aHJvdWdoIHRoZQorLS0gYmVnaW4gcGF0aCwgd2hpY2ggYWxyZWFkeSBob25vcnMgcmVs dWN0YW50IG9yZGVyaW5nLgorLS0gUmVsdWN0YW50IChBIFgpPz8gc2hvdWxkIHNraXAsIG1hdGNo aW5nIEIoMSkgQygyKSwgd2l0aCB0aGUgZ3JvdXAgc2tpcHBlZAorLS0gdG8gdGhlIGZvbGxvd2lu ZyBDIChub3QgdG8gRklOKS4KK1dJVEggdGVzdF9ub25sZWFkaW5nX3JlbHVjdGFudF9ncm91cCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJywgJ0MnXSksCisgICAgICAgICgzLCBBUlJBWVsnWCddKSwK KyAgICAgICAgKDQsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf bm9ubGVhZGluZ19yZWx1Y3RhbnRfZ3JvdXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEIgKEEgWCk/ PyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IFggQVMgJ1gnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtCfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtBLEN9IHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNCB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0t IEdyZWVkeS9yZWx1Y3RhbnQgc2VxdWVuY2U6IEErIEIrPyAoZ3JlZWR5IEEsIHJlbHVjdGFudCBC IGF0IGVuZCkKKy0tIEEgY29uc3VtZXMgZ3JlZWRpbHksIEIrPyBleGl0cyB0byBGSU4gYWZ0ZXIg bWluaW11bSBtYXRjaAorV0lUSCB0ZXN0X2dyZWVkeV90aGVuX3JlbHVjdGFudCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ncmVlZHlfdGhl bl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrPykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDMKKyAgMiB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFJlbHVjdGFudCBvcHRpb25hbCBncm91cCBz a2lwLXRvLUZJTgorLS0gV2hlbiBhIHJlbHVjdGFudCBvcHRpb25hbCBncm91cCdzIHNraXAgcGF0 aCByZWFjaGVzIEZJTiwgdGhlIGdyb3VwCistLSBlbnRyeSBwYXRoIGlzIGFiYW5kb25lZC4KKy0t IFBhdHRlcm46IEMgKEEgQik/PyAtLSBhZnRlciBDIG1hdGNoZXMsIHRoZSByZWx1Y3RhbnQgZ3Jv dXAgKEEgQik/PworLS0gcHJlZmVycyB0byBza2lwLiAgU2tpcCBnb2VzIHRvIEZJTiAoZ3JvdXAg aXMgbGFzdCBlbGVtZW50KSwgc28KKy0tIHRoZSBtYXRjaCBjb21wbGV0ZXMgd2l0aCBqdXN0IEMu CitXSVRIIHRlc3RfYmVnaW5fc2tpcF9maW4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0MnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnLCdBJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9iZWdp bl9za2lwX2ZpbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEMgKEEgQik/PykKKyAgICBERUZJTkUKKyAg ICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0N9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA0IHwge0MsQX0gfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNYXRj aCBQaGFzZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBTaW1wbGUgVkFSIHdpdGggRU5EIG5leHQgKEEgQiBDIGFsbCBt aW49bWF4PTEpCitXSVRIIHRlc3Rfc2ltcGxlX3ZhciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NpbXBsZV92YXIKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO IChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMworICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge199ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gVkFSIG1heCBleGNlZWRlZCAoQXsyLDN9KQor V0lUSCB0ZXN0X21heF9leGNlZWRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksICAtLSBNYXggPSAzCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwg IC0tIEV4Y2VlZHMgbWF4LCBzdGF0ZSByZW1vdmVkCisgICAgICAgICg1LCBBUlJBWVsnQiddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21heF9leGNlZWRlZAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEF7MiwzfSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0F9ICAg fCAgICAgICAgICAgMiB8ICAgICAgICAgNQorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAg ICAgICAgNQorICA0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gTm9uLW1hdGNoaW5n IFZBUiAoREVGSU5FIGZhbHNlKQorV0lUSCB0ZXN0X25vbl9tYXRjaGluZyBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydfJ10pLCAgLS0gQiBub3QgbWF0Y2hlZCAoREVGSU5FIGZhbHNlKQorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIEIgbWF0Y2hlZAor ICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9u b25fbWF0Y2hpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge199ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNQorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBGcmFtZSBC b3VuZGFyeSBIYW5kbGluZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBMaW1pdGVkIGZyYW1lIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HKQorV0lUSCB0ZXN0X2xpbWl0ZWRfZnJhbWUgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0InXSksICAtLSBXaXRoaW4gMyBGT0xMT1dJTkcKKyAgICAgICAgKDUsIEFS UkFZWydCJ10pLCAgLS0gQmV5b25kIDMgRk9MTE9XSU5HIGZyb20gcm93IDEKKyAgICAgICAgKDYs IEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGltaXRlZF9mcmFt ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCAzIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwg e0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge199ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorKDYgcm93cykKKworLS0gVW5ib3VuZGVkIGZyYW1lIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCitXSVRIIHRlc3RfdW5ib3Vu ZGVkX2ZyYW1lIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSks CisgICAgICAgICg2LCBBUlJBWVsnQiddKSAgLS0gRmFyIGZyb20gc3RhcnQsIGJ1dCB1bmJvdW5k ZWQKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF91bmJvdW5kZWRfZnJhbWUKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNgorICAyIHwge0F9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNgorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNgorICA1IHwg e0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgNgorICA2IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorKDYgcm93cykKKworLS0gTWF0Y2ggZXhjZWVkcyBmcmFtZSBib3VuZGFy eQorV0lUSCB0ZXN0X2ZyYW1lX2V4Y2VlZGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQSddKQorICAgICAgICAtLSBGcmFtZSBlbmRzIGF0IHJvdyAzICgy IEZPTExPV0lORyksIEIgbmV2ZXIgYXBwZWFycworICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2ZyYW1lX2V4Y2VlZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSBGcmFtZSBib3VuZGFy eSBmb3JjZWQgbWlzbWF0Y2gKKy0tIExpbWl0ZWQgZnJhbWUgd2l0aCBlbm91Z2ggcm93cyBzbyB0 aGF0IGEgY29udGV4dCdzIGZyYW1lIGJvdW5kYXJ5CistLSBpcyBleGNlZWRlZCB3aGlsZSBzdGls bCBwcm9jZXNzaW5nLgorV0lUSCB0ZXN0X2ZyYW1lX2JvdW5kYXJ5IEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydB J10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2ZyYW1lX2JvdW5kYXJ5CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8 IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA2CisgIDUgfCB7QX0gICB8ICAgICAg ICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoNiByb3dzKQorCistLSBSZWx1Y3RhbnQgd2l0aCBsaW1pdGVkIGZyYW1lIChBKz8gQiB3aXRo IDIgRk9MTE9XSU5HKQorLS0gUmVsdWN0YW50IGV4aXRzIGVhcmx5LCBCIG11c3QgYmUgd2l0aGlu IGZyYW1lIGJvdW5kYXJ5CitXSVRIIHRlc3RfcmVsdWN0YW50X2ZyYW1lIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2ZyYW1lCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIDIgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAg fCAgICAgICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA0IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBTdGF0ZSBNYW5hZ2VtZW50CistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIER1cGxpY2F0ZSBzdGF0 ZSBjcmVhdGlvbgorV0lUSCB0ZXN0X2R1cGxpY2F0ZV9zdGF0ZXMgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCAnQiddKSwgIC0tIEJvdGggQSBh bmQgQiBtYXRjaCAoY3JlYXRlcyBkdXBsaWNhdGUgc3RhdGVzIHZpYSBkaWZmZXJlbnQgcGF0aHMp CisgICAgICAgICgyLCBBUlJBWVsnQycsICdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0QnLCAn XyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2R1cGxpY2F0ZV9zdGF0ZXMKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAg IEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAgICAxIHwgICAg ICAgICAzCisgIDIgfCB7QyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7RCxf fSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgZHVw bGljYXRlIHN0YXRlIGhhbmRsaW5nCistLSAoQSs/IHwgQis/KSBjcmVhdGVzIGV4aXQgYW5kIGxv b3Agc3RhdGVzOyBleGl0IHBhdGhzIG1heSBjb252ZXJnZQorV0lUSCB0ZXN0X3JlbHVjdGFudF9k ZWR1cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJB WVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9kZWR1cAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKChBKz8gfCBCKz8pKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAg MQorICAyIHwge0EsQn0gfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge199ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gTGFyZ2UgcGF0dGVybiAoc3Ry ZXNzIGZyZWUgbGlzdCkKK1dJVEggdGVzdF9sYXJnZV9wYXR0ZXJuIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydE J10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSksCisgICAgICAgICg2LCBBUlJBWVsnRiddKSwK KyAgICAgICAgKDcsIEFSUkFZWydHJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0gnXSksCisgICAg ICAgICg5LCBBUlJBWVsnSSddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsnSiddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X2xhcmdlX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB IEIgQyBEIEUgRiBHIEggSSBKKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUg QVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBHIEFTICdHJyA9IEFOWShmbGFncyksCisgICAgICAgIEggQVMgJ0gnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgSSBBUyAnSScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBKIEFTICdKJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAg ICAgIDEgfCAgICAgICAgMTAKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtEfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtHfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtIfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgOSB8IHtJfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtKfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygxMCByb3dzKQorCistLSBSZWR1Y2VkIGZyYW1l IG1hcCByZWFsbG9jYXRpb24gKD4gMTAyNCByb3dzKQorV0lUSCB0ZXN0X21hcF9yZWFsbG9jIEFT ICgKKyAgICBTRUxFQ1QgaWQsIENBU0UgV0hFTiBpZCAlIDIgPSAxIFRIRU4gQVJSQVlbJ0EnXSBF TFNFIEFSUkFZWydCJ10gRU5EIEFTIGZsYWdzCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTEwMCkgQVMgaWQKKykKK1NFTEVDVCBjb3VudCgqKSwgbWluKG1hdGNoX3N0YXJ0KSwgbWF4KG1h dGNoX2VuZCkKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKKyAgICBGUk9NIHRlc3RfbWFwX3JlYWxsb2MKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgICAgIFBBVFRFUk4gKEEgQikKKyAgICAgICAgREVGSU5FCisg ICAgICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyAgICApCispIHN1YjsKKyBjb3VudCB8IG1pbiB8IG1heCAgCistLS0tLS0t Ky0tLS0tKy0tLS0tLQorICAxMTAwIHwgICAxIHwgMTEwMAorKDEgcm93KQorCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFN0YXRpc3RpY3MgYW5kIERpYWdub3N0aWNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1hdGNoZWQgY29udGV4dHMK K1dJVEggdGVzdF9tYXRjaGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfbWF0Y2hlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFBydW5lZCBjb250ZXh0cyAoZmFp bGVkIGF0IGZpcnN0IHJvdykKK1dJVEggdGVzdF9wcnVuZWQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBQcnVuZWQKKyAgICAgICAg KDIsIEFSUkFZWydfJ10pLCAgLS0gUHJ1bmVkCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcHJ1 bmVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8 IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorICAxIHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAyIHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAg ICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorKDQgcm93cykKKworLS0gTWlzbWF0Y2hlZCBjb250ZXh0cyAoZmFpbGVkIGFmdGVyIG11bHRp cGxlIHJvd3MpCitXSVRIIHRlc3RfbWlzbWF0Y2hlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10p LAorICAgICAgICAoMywgQVJSQVlbJ18nXSksICAtLSBNaXNtYXRjaGVkIGFmdGVyIDIgcm93cwor ICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21pc21hdGNoZWQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNQorICA1IHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gUmVsdWN0YW50IG5vdCBhYnNvcmJlZCAo QSs/IHdpdGggU0tJUCBUTyBORVhUIFJPVykKKy0tIENvbXBhcmUgd2l0aCBncmVlZHkgQSsgYmVs b3c6IHJlbHVjdGFudCBpcyBub3QgYWJzb3JiYWJsZSwKKy0tIHNvIGFsbCBjb250ZXh0cyBzdXJ2 aXZlIGluZGVwZW5kZW50bHkuCitXSVRIIHRlc3RfcmVsdWN0YW50X3N0YXRzIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9yZWx1Y3RhbnRfc3RhdHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0F9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMworICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwg e199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gQWJzb3JiZWQg Y29udGV4dHMKK1dJVEggdGVzdF9hYnNvcmJlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3Ji ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAK Ky0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAg ICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAg ICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7QX0gICB8 ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisoNSByb3dzKQorCistLSBTa2lwcGVkIGNvbnRleHRzIChTS0lQIFRPIE5FWFQgUk9X KQorV0lUSCB0ZXN0X3NraXBwZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkgIC0tIENvbXBsZXRlcyBt YXRjaCBzdGFydGluZyBhdCByb3cgMQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3Nr aXBwZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg NAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAg ICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBRdWFudGlmaWVyIFJ1bnRpbWUgQmVoYXZpb3IK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gTGFyZ2UgY291bnQgaGFuZGxpbmcgKEF7MTAwfSkKK1dJVEggdGVzdF9sYXJn ZV9jb3VudCBBUyAoCisgICAgU0VMRUNUIGkgQVMgaWQsIEFSUkFZWydBJ10gQVMgZmxhZ3MKKyAg ICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDUpIGkKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGFyZ2VfY291bnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBezEwMH0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKQorKTsKKyBpZCAgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAor LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgIDEwMAorICAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAg ICAxMDEKKyAgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgMTAyCisgICA0IHwge0F9 ICAgfCAgICAgICAgICAgNCB8ICAgICAgIDEwMworICAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUg fCAgICAgICAxMDQKKyAgIDYgfCB7QX0gICB8ICAgICAgICAgICA2IHwgICAgICAgMTA1CisgICA3 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAgOCB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgIDkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDEwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAxMSB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDEzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAxNCB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTUgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDE2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAx NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTggfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDE5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICAyMCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMjEgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICAyMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMjQgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDI1IHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAyNiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MjcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDI4IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICAyOSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMzAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMxIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgMzMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDM0IHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzNSB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMzYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDM3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzOCB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMzkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDQwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0MSB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDQzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0NCB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDUgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDQ2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA0NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDggfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDQ5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA1MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNTEgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUyIHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA1MyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNTQg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDU1IHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA1NiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNTcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDU4IHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA1OSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNjAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYxIHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2MiB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNjMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDY0 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2NSB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNjYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDY3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2OCB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDcwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3MSB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzIgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDczIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3 NCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzUgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDc2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA3NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzggfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDc5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA4MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgODEgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDgyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA4MyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg ODQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDg1IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA4NiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgODcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDg4IHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4OSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgOTAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkxIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5MiB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgOTMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDk0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5NSB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgOTYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDk3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5OCB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTkgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMTAwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEwMSB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMDIgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgMTAzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDEwNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMDUgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoMTA1IHJvd3MpCisKKy0tIFVubGltaXRlZCBxdWFudGlm aWVyIChBezEwLH0pCitXSVRIIHRlc3RfdW5saW1pdGVkIEFTICgKKyAgICBTRUxFQ1QgaSBBUyBp ZCwgQVJSQVlbJ0EnXSBBUyBmbGFncworICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDE1KSBp CisgICAgVU5JT04gQUxMCisgICAgU0VMRUNUIDE2LCBBUlJBWVsnQiddCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3VubGlt aXRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKEF7MTAsfSBCKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAxNgorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAxNgorICAzIHwge0F9ICAg fCAgICAgICAgICAgMyB8ICAgICAgICAxNgorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAg ICAgICAxNgorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAxNgorICA2IHwge0F9 ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAxNgorICA3IHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA4IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5IHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEwIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDExIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEy IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDE0IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDE1IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE2IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDE2IHJvd3MpCisKKy0tIE1pbiBib3VuZGFyeSAoQXszLDV9 KQorV0lUSCB0ZXN0X21pbl9ib3VuZGFyeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBNaW49MyByZWFjaGVkLCBleGl0IHBhdGggYXZhaWxh YmxlCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwgIC0tIE1hdGNoIGVuZHMgYXQgbWluCisgICAg ICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAorICAgICAgICAo NywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDksIEFS UkFZWydBJ10pLCAgLS0gQ291bnQ9NSwgbWF4IHJlYWNoZWQKKyAgICAgICAgKDEwLCBBUlJBWVsn QiddKSAgLS0gTWF0Y2ggZW5kcyBhdCBtYXgKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9taW5fYm91bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezMsNX0gQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgMTAK KyAgNiB8IHtBfSAgIHwgICAgICAgICAgIDYgfCAgICAgICAgMTAKKyAgNyB8IHtBfSAgIHwgICAg ICAgICAgIDcgfCAgICAgICAgMTAKKyAgOCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgOSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKygxMCByb3dzKQorCistLSBNYXggYm91bmRhcnkgZXhj ZWVkZWQgKEF7Myw1fSkKK1dJVEggdGVzdF9tYXhfYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0En XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLCAg LS0gQ291bnQ9NiA+IG1heD01LCByb3cgMSBjb250ZXh0IHJlbW92ZWQKKyAgICAgICAgKDcsIEFS UkFZWydCJ10pICAgLS0gUm93IDEgY29udGV4dDogbm8gbWF0Y2ggKGV4Y2VlZGVkIG1heCkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tYXhfYm91bmRhcnkKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBezMsNX0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDcKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDcKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDcKKyAgNSB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg3IHJvd3Mp CisKKy0tIEdyZWVkeSB2cyByZWx1Y3RhbnQ6IEErIG1hdGNoZXMgYWxsIHJvd3MsIEErPyBtYXRj aGVzIG1pbmltdW0KK1dJVEggdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dy ZWVkeV92c19yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxffSB8ICAgICAgICAg ICAxIHwgICAgICAgICA0CisgIDIgfCB7QSxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDMgfCB7QSxCfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QixffSB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBTYW1lIGRhdGEsIHJlbHVjdGFudCBB Kz8gZXhpdHMgYXQgcm93IDMgd2hlcmUgQiBpcyBmaXJzdCBhdmFpbGFibGUKK1dJVEggdGVzdF9n cmVlZHlfdnNfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dyZWVkeV92c19yZWx1Y3RhbnQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0EsX30gfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwg e0EsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0EsQn0gfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA0IHwge0IsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQg cm93cykKKworLS0gUmVsdWN0YW50IGdyb3VwOiAoQSBCKSs/IG1hdGNoZXMgbWluaW11bSAxIGl0 ZXJhdGlvbgorV0lUSCB0ZXN0X3JlbHVjdGFudF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9ncm91cAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgQikrPykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMg fCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJv d3MpCisKKy0tIEErPyBCIChyZWx1Y3RhbnQgcGx1cyk6IGV4aXRzIEEgYXQgZmlyc3QgQiBhdmFp bGFiaWxpdHkKKy0tIChTYW1lIHNjZW5hcmlvIGFzIGdyZWVkeS12cy1yZWx1Y3RhbnQgY29tcGFy aXNvbiBhYm92ZTsgcmV0YWluZWQgZm9yCistLSBzdGFuZGFsb25lIHF1YW50aWZpZXIgY292ZXJh Z2UgYWxvbmdzaWRlIEF7MSwzfT8gYW5kIEF7MiwzfT8gYmVsb3cpCitXSVRIIHRlc3RfcmVsdWN0 YW50X3BsdXMgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9yZWx1Y3RhbnRfcGx1cworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxffSB8ICAgICAg ICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QSxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDMgfCB7QSxCfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QixffSB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBBezEsM30/IEIgKHJlbHVjdGFu dCBib3VuZGVkKTogc2FtZSBkYXRhLCBib3VuZGVkIHF1YW50aWZpZXIKK1dJVEggdGVzdF9yZWx1 Y3RhbnRfYm91bmRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAg ICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQicsJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3JlbHVjdGFudF9ib3VuZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezEsM30/ IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QSxffSB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QSxffSB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7QSxCfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQg fCB7QixffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBBezMsNX0/ IEIgKHJlbHVjdGFudCBib3VuZGVkIG1pZC1iYW5kKTogdGhlIFZBUi1sZXZlbCBjb3VudAorLS0g Y3ljbGVzIHRocm91Z2ggMywgNCwgNSB3aXRoaW4gYSBzaW5nbGUgbWF0Y2ggYXR0ZW1wdC4gIEV4 ZXJjaXNlcworLS0gYSByZWx1Y3RhbnQgYm91bmRlZCBxdWFudGlmaWVyIHRoYXQgYWJzb3JiYWJp bGl0eSBhbmFseXNpcyBleGNsdWRlcworLS0gKHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbmV2 ZXIgYWJzb3JiYWJsZSwgc28gQSBzdGF5cworLS0gbm9uLWFic29yYmFibGUpLgorV0lUSCB0ZXN0 X3JlbHVjdGFudF9taWRfYmFuZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFS UkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9yZWx1Y3RhbnRfbWlkX2JhbmQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myw1 fT8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK Kyg2IHJvd3MpCisKKy0tIE5lc3RlZCBxdWFudGlmaWVyIGZsYXR0ZW5pbmcgbXVzdCBub3Qgd2lk ZW4gdGhlIG1hdGNoaW5nIGxhbmd1YWdlIChILTEpLgorLS0gKEF7ayx9KSogd2l0aCBrID49IDIg cmVhY2hlcyByZXBldGl0aW9uIGNvdW50cyB7MH0gVU5JT04gW2ssIElORik7IHRoZSBnYXAKKy0t IDEuLmstMSBpcyB1bnJlYWNoYWJsZSwgc28gaXQgbXVzdCBOT1QgY29sbGFwc2UgdG8gQSouICBB biBpc29sYXRlZCBzaW5nbGUgQQorLS0gbXVzdCB5aWVsZCBhbiBFTVBUWSBtYXRjaCAoY291bnQg MCksIG5vdCBhIGxlbmd0aC0xIG1hdGNoLgorV0lUSCB0ZXN0X25lc3RlZF9xdWFudF92YXIgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksICAt LSBpc29sYXRlZCBBOiAoQXsyLH0pKiBtYXRjaGVzIGVtcHR5IGhlcmUsIG5vdCAxCisgICAgICAg ICgyLCBBUlJBWVsnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0EnXSksICAtLSBydW4gb2YgMjogbWF0Y2hlZAorICAgICAgICAoNSwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQsCisgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNo X2NvdW50CitGUk9NIHRlc3RfbmVzdGVkX3F1YW50X3ZhcgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEF7Mix9KSopCisgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgfCBtYXRjaF9jb3VudCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgMAorICAyIHwge199ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAwCisgIDMgfCB7QX0gICB8ICAgICAgICAg ICAzIHwgICAgICAgICA0IHwgICAgICAgICAgIDIKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAgfCAgICAgICAgICAgMAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICB8ICAgICAgICAgICAwCisoNSByb3dzKQorCistLSBTYW1lIGZvciBhIEdST1VQIGNo aWxkOiAoKEEgQil7Mix9KSogbXVzdCBub3QgY29sbGFwc2UgdG8gKEEgQikqLgorLS0gQW4gaXNv bGF0ZWQgc2luZ2xlIChBIEIpIHBhaXIgbXVzdCB5aWVsZCBhbiBFTVBUWSBtYXRjaCAoY291bnQg MCkuCitXSVRIIHRlc3RfbmVzdGVkX3F1YW50X2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLCAgLS0gaXNvbGF0ZWQgKEEgQikgcGFp cjogbWF0Y2hlcyBlbXB0eSBoZXJlCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydfJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAorICAgICAgICAoNywgQVJSQVlb J0InXSksICAtLSBydW4gb2YgMiBwYWlyczogbWF0Y2hlZAorICAgICAgICAoOCwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQsCisgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNo X2NvdW50CitGUk9NIHRlc3RfbmVzdGVkX3F1YW50X2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoKEEgQil7Mix9KSopCisgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCB8IG1hdGNoX2NvdW50IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgICAwCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgIDAKKyAgMyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAg MAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNyB8ICAgICAgICAgICA0Cisg IDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIDAKKyAgNiB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgMAorICA3IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAwCisgIDggfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIDAKKyg4IHJvd3MpCisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gUGF0aG9sb2dpY2FsIFBhdHRlcm4gUnVudGltZSBQcm90ZWN0aW9uCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IENvbXBsZXggbmVzdGVkIG51bGxhYmxlICgoQSogQiopKikgLSBSdW50aW1lIHByb3RlY3Rpb24K K1dJVEggdGVzdF9jb21wbGV4X25lc3RlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDUsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY29tcGxleF9u ZXN0ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSogQiopKikKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtCfSAg IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgIDQgfCAg ICAgICAgIDQKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3Mp CisKKy0tIE5lc3RlZCBudWxsYWJsZSB3aXRoIHF1YW50aWZpZXIgKChBezAsM30pKikKK1dJVEgg dGVzdF9uZXN0ZWRfcXVhbnRpZmllciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9xdWFudGlmaWVyCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEF7MCwzfSkqKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAgMyB8IHtBfSAg IHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFJlbHVjdGFudCBudWxsYWJsZTogQSo/IChwcmVmZXJz IDAgbWF0Y2hlcykKKy0tIEEqPyBhbHdheXMgdGFrZXMgc2tpcCBwYXRoICgwIGl0ZXJhdGlvbnMg cHJlZmVycmVkKQorV0lUSCB0ZXN0X3JlbHVjdGFudF9udWxsYWJsZSBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn XyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9udWxsYWJsZQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKEEqPyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAy IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA0IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBBbHRlcm5hdGlvbiBSdW50aW1lIEJlaGF2aW9yCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIE11bHRpLWJyYW5jaCBhbHRlcm5hdGlvbiAoQSAoQnxDfER8RSkgRikKK1dJVEggdGVz dF9tdWx0aV9icmFuY2ggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydGJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsn QyddKSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSks CisgICAgICAgICg4LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDksIEFSUkFZWydGJ10pLAorICAg ICAgICAoMTAsIEFSUkFZWydBJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydFJ10pLAorICAgICAg ICAoMTIsIEFSUkFZWydGJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVsdGlf YnJhbmNoCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSAoQiB8IEMgfCBEIHwgRSkgRikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAg IEYgQVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNgorICA1IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA2IHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA3IHwge0F9ICAgfCAgICAgICAgICAgNyB8ICAgICAgICAgOQorICA4IHwge0R9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA5IHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDEwIHwge0F9ICAgfCAgICAgICAgICAxMCB8ICAgICAgICAxMgorIDExIHwge0V9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIDEyIHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDEyIHJvd3MpCisKKy0tIEFsdGVybmF0aW9uIHdpdGggcXVhbnRpZmllcnMgKEErIHwg QisgfCBDKykKK1dJVEggdGVzdF9hbHRfcXVhbnRpZmllcnMgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSks CisgICAgICAgICg1LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydDJ10pLAorICAg ICAgICAoNywgQVJSQVlbJ0MnXSksCisgICAgICAgICg4LCBBUlJBWVsnQyddKSwKKyAgICAgICAg KDksIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3F1YW50 aWZpZXJzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgfCBCKyB8IEMrKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRj aF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QX0gICB8 ICAgICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAg ICAgICAzCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA1CisgIDUgfCB7Qn0g ICB8ICAgICAgICAgICA1IHwgICAgICAgICA1CisgIDYgfCB7Q30gICB8ICAgICAgICAgICA2IHwg ICAgICAgICA5CisgIDcgfCB7Q30gICB8ICAgICAgICAgICA3IHwgICAgICAgICA5CisgIDggfCB7 Q30gICB8ICAgICAgICAgICA4IHwgICAgICAgICA5CisgIDkgfCB7Q30gICB8ICAgICAgICAgICA5 IHwgICAgICAgICA5CisoOSByb3dzKQorCistLSBhbHRQcmlvcml0eSByZXBsYWNlbWVudCAoQSBC IEMgfCBEKQorLS0gRCBicmFuY2ggKGhpZ2hlciBhbHRQcmlvcml0eSkgbWF0Y2hlcyBmaXJzdCBh dCByb3cgMSwKKy0tIHRoZW4gQSBCIEMgYnJhbmNoIChsb3dlciBhbHRQcmlvcml0eSkgcmVwbGFj ZXMgaXQgYXQgcm93IDMuCitXSVRIIHRlc3RfYWx0X3JlcGxhY2UgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCAnRCddKSwKKyAgICAgICAgKDIs IEFSUkFZWydCJywgJ18nXSksCisgICAgICAgICgzLCBBUlJBWVsnQycsICdfJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ18nLCAnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fs dF9yZXBsYWNlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgfCBEKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLER9IHwgICAgICAg ICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMyB8IHtDLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtfLF99IHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIEFMVCBsZXhpY2FsIG9yZGVyIHRh a2VzIHByaW9yaXR5IG92ZXIgZ3JlZWR5IChsb25nZXIgbWF0Y2gpLgorLS0gUm93IDEgbWF0Y2hl cyBib3RoIEEgYW5kIEI7IEEgd2lucyBieSBsZXhpY2FsIG9yZGVyIChtYXRjaCAxLTEpLgorV0lU SCB0ZXN0X2FsdF9sZXhpY2FsX29yZGVyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwgIC0tIEEgYW5kIEIgYm90aCBtYXRjaAorICAg ICAgICAoMiwgQVJSQVlbJ18nLCdDJ10pICAgLS0gb25seSBDIG1hdGNoZXMgKHdvdWxkIGNvbnRp bnVlIEIgQykKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfbGV4aWNhbF9vcmRl cgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIEMpKykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisg ICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3Rh cnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor ICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge18sQ30gfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDIgcm93cykKKworLS0gQUxUIHdpdGggcmVsdWN0YW50OiAo QSs/IHwgQispIC0gQSBicmFuY2ggaXMgcmVsdWN0YW50LCBCIGlzIGdyZWVkeS4KKy0tIFJvdyAx IG1hdGNoZXMgYm90aCBBIGFuZCBCLiBBKz8gZXhpdHMgaW1tZWRpYXRlbHkgKG1hdGNoIDEtMSku CitXSVRIIHRlc3RfYWx0X3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsJ18n XSksCisgICAgICAgICgzLCBBUlJBWVsnQicsJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9hbHRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSs/IHwgQispKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0g fCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0IsX30gfCAgICAgICAgICAgMiB8ICAg ICAgICAgMworICAzIHwge0IsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykK KworLS0gT3B0aW9uYWwgZmlyc3QgYnJhbmNoIGluIEFMVCB3aXRoIHF1YW50aWZpZXI6IChBPyB8 IEIpezEsMn0KKy0tIEZpcnN0IGJyYW5jaCBBPyBleGl0IHBhdGggbWF5IGxvb3AgYmFjayB0byBB TFQgYW5kIHRyaWdnZXIgY3ljbGUKKy0tIGRldGVjdGlvbiBkdXJpbmcgREZTLiAgQWxsIGJyYW5j aGVzIG11c3QgcmVjZWl2ZSBjb3JyZWN0IGNvdW50cy4KK1dJVEggdGVzdF9hbHRfb3B0X2ZpcnN0 IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9vcHRfZmlyc3QKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOICgoKEE/IHwgQil7MSwyfSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7Qn0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7 Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAz IHwgICAgICAgICAzCisoMyByb3dzKQorCistLSBNaXhlZCBBL0Igcm93cyBhY3Jvc3MgaXRlcmF0 aW9ucyBvZiAoQT8gfCBCKXsxLDJ9CitXSVRIIHRlc3RfYWx0X29wdF9taXhlZCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X29wdF9taXhlZAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgo QT8gfCBCKXsxLDJ9KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgIDMgfCAgICAg ICAgIDMKKygzIHJvd3MpCisKKy0tIFJlbHVjdGFudCB2YXJpYW50OiAoQT8/IHwgQil7MSwyfQor V0lUSCB0ZXN0X2FsdF9vcHRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fs dF9vcHRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBPz8gfCBCKXsxLDJ9KSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDMKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKygzIHJvd3MpCisK Ky0tIE92ZXJsYXBwaW5nIG1hdGNoOiBBIEIgQyBEIEUgfCBCIEMgRCB8IEMgRCBFIEYgKFNLSVAg UEFTVCBMQVNUIFJPVykKK1dJVEggdGVzdF9vdmVybGFwMSBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwK KyAgICAgICAgKDUsIEFSUkFZWydFJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0YnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X292ZXJsYXAxCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgfCBCIEMg RCB8IEMgRCBFIEYpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBm bGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAg MiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNSB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtGfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIFNhbWUgd2l0aCBTS0lQIFRPIE5F WFQgUk9XOiB0aHJlZSBvdmVybGFwcGluZyBtYXRjaGVzCitXSVRIIHRlc3Rfb3ZlcmxhcDEgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDYs IEFSUkFZWydGJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMQorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEEgQiBDIEQgRSB8IEIgQyBEIHwgQyBEIEUgRikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAg IEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYgQVMgJ0YnID0gQU5ZKGZs YWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAg MSB8ICAgICAgICAgNQorICAyIHwge0J9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAz IHwge0N9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNgorICA0IHwge0R9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA1IHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA2IHwge0Z9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDYgcm93cykKKworLS0gTG9u Z2VyIHBhdHRlcm4gZmFpbHMsIHNob3J0ZXIgc3Vydml2ZXM6IEErIEIgQyBEIEUgfCBCKyBDCitX SVRIIHRlc3Rfb3ZlcmxhcDFiIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXAxYgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQiBDIEQgRSB8IEIrIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBB UyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwg ICAgICAgICAzCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7 RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBMb25nIEIgc2VxdWVuY2Ugd2l0aCBkaWZmZXJl bnQgZW5kaW5nczogQSBCKyBDIHwgQisgRAorV0lUSCB0ZXN0X292ZXJsYXAyIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsICBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsICBB UlJBWVsnQyddKSwKKyAgICAgICAgKDcsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDgsICBBUlJB WVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsn RCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIrIEMg fCBCKyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNyB8IHtCfSAgIHwgICAgICAgICAgIDcgfCAgICAgICAgMTAKKyAgOCB8IHtC fSAgIHwgICAgICAgICAgIDggfCAgICAgICAgMTAKKyAgOSB8IHtCfSAgIHwgICAgICAgICAgIDkg fCAgICAgICAgMTAKKyAxMCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygxMCBy b3dzKQorCistLSBHcmVlZHkgd2l0aCBsYXRlIGZhaWx1cmUgKCJiZXRyYXlhbCIpOiBBIEIgQysg RCB8IEEgQgorV0lUSCB0ZXN0X2JldHJheWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnRSddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfYmV0cmF5YWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKyBEIHwgQSBCKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFT ICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hf ZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAg IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtD fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNiB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJv d3MpCisKKy0tIE11bHRpcGxlIFRSVUUgcGVyIHJvdzogb3ZlcmxhcHBpbmcgcGF0dGVybiB2YXJp YWJsZXMKK1dJVEggdGVzdF9tdWx0aV90cnVlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJywn QyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJywnRCddKSwKKyAgICAgICAgKDQsIEFSUkFZWydE JywnRSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydFJywnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVs dGlfdHJ1ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFO WShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgNQorICAyIHwg e0IsQ30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0MsRH0gfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA0IHwge0QsRX0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1 IHwge0UsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gRGlhZ29u YWwgcGF0dGVybiB3aXRoIHNoaWZ0ZWQgbXVsdGktVFJVRSBvdmVybGFwCitXSVRIIHRlc3RfZGlh Z29uYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlb J0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InLCdBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0MnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnLCdDJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ18nLCdEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kaWFnb25hbAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKEEgQiBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0EsX30gfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0Is QX0gfCAgICAgICAgICAgMiB8ICAgICAgICAgNQorICAzIHwge0MsQn0gfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA0IHwge0QsQ30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwg e18sRH0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gKChBIHwgQikg QykrIC0gYWx0ZXJuYXRpb24gaW5zaWRlIGdyb3VwIHdpdGggb3V0ZXIgcXVhbnRpZmllcgorV0lU SCB0ZXN0X2FsdF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfZ3JvdXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgo QSB8IEIpIEMpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAg MSB8ICAgICAgICAgNAorICAyIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAz IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA1IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDUgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBEZWVwIE5lc3RlZCBHcm91cHMKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGhy ZWUtbGV2ZWwgbmVzdGluZyAoKCgoQSBCKSspKykrKQorV0lUSCB0ZXN0X2RlZXBfbmVzdGluZyBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAo NiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X2RlZXBfbmVzdGluZworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoKEEgQikr KSspKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDYKKyAg NCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAg ICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg3IHJvd3MpCisKKy0tIE11 bHRpcGxlIGdyb3VwcyBpbiBuZXN0aW5nICgoKEEgQikgKEMgRCkpKykKK1dJVEggdGVzdF9uZXN0 ZWRfc2VxdWVudGlhbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydB J10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQyddKSwK KyAgICAgICAgKDgsIEFSUkFZWydEJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfc2VxdWVudGlhbAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKCgoQSBCKSAoQyBEKSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAn QycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDgK KyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDgKKyAgNiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgOCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg5IHJvd3MpCisKKy0tIE5lc3RlZCBFTkQtPkVO RCBtYXggcmVhY2hlZAorLS0gSW5uZXIgZ3JvdXAgKEEgQil7Mn0gcmVhY2hlcyBtYXg9MiAtPiBl eGl0cyB0byBvdXRlciBFTkQKK1dJVEggdGVzdF9lbmRfbmVzdGVkX21heCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0In XSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydCJ10pLAor ICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9l bmRfbmVzdGVkX21heAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSkrKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAg ICAgMSB8ICAgICAgICAgOAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNgorICA0IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAg OAorICA2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA4IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA5IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDkgcm93cykKKwor LS0gTmVzdGVkIEVORC0+RU5EIGJldHdlZW4gbWluL21heAorLS0gSW5uZXIgZ3JvdXAgKEEgQil7 MSwzfSBleGl0cyBiZXR3ZWVuIG1pbi9tYXggLT4gb3V0ZXIgRU5EIGNvdW50KysKK1dJVEggdGVz dF9lbmRfbmVzdGVkX21pZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDgsIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9lbmRfbmVzdGVkX21pZAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKCgoQSBCKXsxLDN9KSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA4CisgIDIgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAz IHwgICAgICAgICA4CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUg fCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA4CisgIDYgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICA3IHwgICAgICAgICA4Cisg IDggfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7X30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoOSByb3dzKQorCistLSBOZXN0ZWQgcmVsdWN0YW50IGdyb3Vw ICgoQSBCKSs/KSB3aXRoIGZvbGxvd2luZyBlbGVtZW50IEMKKy0tIElubmVyIGdyb3VwIGV4aXRz IGFmdGVyIG1pbmltdW0gMSBpdGVyYXRpb24KK1dJVEggdGVzdF9uZXN0ZWRfcmVsdWN0YW50IEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEEgQikrPyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICA1CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA1CisgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiso NSByb3dzKQorCistLSAoQSBCKXsyfSAtIGdyb3VwIHdpdGggZXhhY3QgcXVhbnRpZmllcgorV0lU SCB0ZXN0X2dyb3VwX2V4YWN0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dyb3VwX2V4YWN0CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSBCKXsyfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtYfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE5lc3RlZCBFTkQtPkVORCBm YXN0LWZvcndhcmQKKy0tIFdoZW4gYW4gaW5uZXIgZ3JvdXAgaGFzIGEgbnVsbGFibGUgYm9keSBh bmQgY291bnQgPCBtaW4sIHRoZQorLS0gZmFzdC1mb3J3YXJkIHBhdGggZXhpdHMgdGhyb3VnaCB0 aGUgb3V0ZXIgRU5ELCBpbmNyZW1lbnRpbmcKKy0tIHRoZSBvdXRlciBncm91cCdzIGNvdW50Lgor LS0gUGF0dGVybjogKChBPyl7MiwzfSl7MiwzfSAtLSBuZXN0ZWQgZ3JvdXBzLCBuZWl0aGVyIGNv bGxhcHNlcworLS0gYmVjYXVzZSB0aGUgb3B0aW1pemVyIGNhbm5vdCBzYWZlbHkgbXVsdGlwbHkg bm9uLWV4YWN0IHF1YW50aWZpZXJzLgorLS0gRGF0YSBoYXMgbm8gQSByb3dzLCBmb3JjaW5nIGFs bC1lbXB0eSBpdGVyYXRpb25zIHZpYSBmYXN0LWZvcndhcmQuCitXSVRIIHRlc3RfbmVzdGVkX2Zm IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9mZgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KCgoQT8pezIsM30pezIsM30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAz IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBTS0lQIE9wdGlvbnMgKFJ1bnRpbWUpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNLSVAgUEFTVCBMQVNUIFJPVyAo bm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMpCitXSVRIIHRlc3Rfc2tpcF9wYXN0IEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9za2lwX3Bhc3QKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFNLSVAgVE8gTkVYVCBS T1cgKG92ZXJsYXBwaW5nIG1hdGNoZXMpCitXSVRIIHRlc3Rfc2tpcF9uZXh0IEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9za2lwX25leHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAg ICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAg ICA0CisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBTS0lQIGRpZmZlcmVuY2Ug dmVyaWZpY2F0aW9uCitXSVRIIHRlc3Rfc2tpcF9kaWZmIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCAnU0tJUCBQQVNUJyBBUyBtb2RlLCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2tpcF9k aWZmCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispCitVTklP TiBBTEwKK1NFTEVDVCAnU0tJUCBORVhUJyBBUyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2tpcF9kaWZmCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKQorT1JERVIgQlkgbW9kZSwgaWQ7CisgICBt b2RlICAgIHwgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLS0tLS0t LS0rLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBTS0lQIE5FWFQgfCAg MSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyBTS0lQIE5FWFQgfCAgMiB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyBTS0lQIE5FWFQgfCAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDQKKyBTS0lQIE5FWFQgfCAgNCB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyBTS0lQIFBBU1QgfCAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDIKKyBTS0lQIFBBU1QgfCAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyBTS0lQIFBBU1QgfCAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQK KyBTS0lQIFBBU1QgfCAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg4IHJv d3MpCisKKy0tIFJlbHVjdGFudCBTS0lQIGNvbXBhcmlzb246IEErPyB3aXRoIFNLSVAgUEFTVCB2 cyBTS0lQIE5FWFQKK1dJVEggdGVzdF9yZWx1Y3RhbnRfc2tpcCBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgJ1NLSVAgUEFTVCcgQVMgbW9kZSwg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3Jl bHVjdGFudF9za2lwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKQorVU5JT04gQUxMCitTRUxFQ1QgJ1NLSVAgTkVY VCcgQVMgbW9kZSwgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3JlbHVjdGFudF9za2lwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSs/KQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKykKK09SREVSIEJZIG1vZGUsIGlk OworICAgbW9kZSAgICB8IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0t LS0tLS0tLS0tKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgU0tJUCBO RVhUIHwgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisgU0tJUCBORVhUIHwg IDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgU0tJUCBORVhUIHwgIDMgfCB7 QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgU0tJUCBORVhUIHwgIDQgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgU0tJUCBQQVNUIHwgIDEgfCB7QX0gICB8ICAgICAg ICAgICAxIHwgICAgICAgICAxCisgU0tJUCBQQVNUIHwgIDIgfCB7QX0gICB8ICAgICAgICAgICAy IHwgICAgICAgICAyCisgU0tJUCBQQVNUIHwgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAg ICAgICAzCisgU0tJUCBQQVNUIHwgIDQgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoOCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIElOSVRJQUwgTW9kZSAoUnVudGltZSkKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gRXhwbGljaXQgSU5JVElBTCAoYWZ0ZXIgQUZURVIgTUFUQ0ggU0tJUCwgcGVyIHRoZSBncmFt bWFyKTsgc2FtZSBhcyB0aGUgZGVmYXVsdAorV0lUSCB0ZXN0X2luaXRpYWxfbW9kZSBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwgIC0tIFVu bWF0Y2hlZAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkCisgICAgICAgICg1LCBB UlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2luaXRpYWxfbW9kZQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAy IHwgICAgICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQg fCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAg ICA1IHwgICAgICAgICA1CisoNSByb3dzKQorCistLSBEZWZhdWx0IG1vZGUgKGluY2x1ZGUgYWxs IHJvd3MpCitXSVRIIHRlc3RfZGVmYXVsdF9tb2RlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLCAgLS0gVW5tYXRjaGVkLCBidXQgaW5jbHVk ZWQKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisg ICAgICAgICg0LCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZCwgYnV0IGluY2x1ZGVkCisgICAg ICAgICg1LCBBUlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2RlZmF1 bHRfbW9kZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hf ZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDMKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtf fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUg fCAgICAgICAgIDUKKyg1IHJvd3MpCisKKy0tIE1vZGUgZXF1aXZhbGVuY2UgdmVyaWZpY2F0aW9u OiBleHBsaWNpdCBJTklUSUFMIGVxdWFscyB0aGUgZGVmYXVsdCBtb2RlCitXSVRIIHRlc3RfbW9k ZV9kaWZmIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgJ0lOSVRJQUwnIEFTIG1vZGUsIENP VU5UKCopIEFTIHJvd19jb3VudAorRlJPTSAoCisgICAgU0VMRUNUIGlkIEZST00gdGVzdF9tb2Rl X2RpZmYKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgICAgIElOSVRJQUwKKyAgICAgICAgUEFU VEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorICAgICkKKykg c3ViCitVTklPTiBBTEwKK1NFTEVDVCAnREVGQVVMVCcgQVMgbW9kZSwgQ09VTlQoKikgQVMgcm93 X2NvdW50CitGUk9NICgKKyAgICBTRUxFQ1QgaWQgRlJPTSB0ZXN0X21vZGVfZGlmZgorICAgIFdJ TkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMg J0EnID0gQU5ZKGZsYWdzKQorICAgICkKKykgc3ViCitPUkRFUiBCWSBtb2RlOworICBtb2RlICAg fCByb3dfY291bnQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBERUZBVUxUIHwgICAgICAgICAz CisgSU5JVElBTCB8ICAgICAgICAgMworKDIgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBGcmFtZSBCb3Vu ZGFyeSBWYXJpYXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcnkgbGltaXRlZCBmcmFtZSAoMSBGT0xMT1dJ TkcpCitXSVRIIHRlc3Rfb25lX2ZvbGxvd2luZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLCAg LS0gV2l0aGluIDEgRk9MTE9XSU5HCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwgIC0tIEJleW9u ZCAxIEZPTExPV0lORyBmcm9tIHJvdyAxCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29uZV9mb2xsb3dpbmcKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAg fCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gTWVkaXVtIGZyYW1l ICgxMCBGT0xMT1dJTkcpCitXSVRIIHRlc3RfdGVuX2ZvbGxvd2luZyBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0EnXSks CisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydBJ10pLAorICAg ICAgICAoOSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgxMSwgQVJSQVlbJ0InXSksICAtLSBXaXRoaW4gMTAgRk9MTE9XSU5HIGZyb20gcm93IDEKKyAg ICAgICAgKDEyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDEzLCBBUlJBWVsnQiddKSAgIC0tIEJl eW9uZCAxMCBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X3Rlbl9mb2xsb3dpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAg ICAgIDExCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgIDExCisgIDMgfCB7QX0g ICB8ICAgICAgICAgICAzIHwgICAgICAgIDExCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwg ICAgICAgIDExCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgIDExCisgIDYgfCB7 QX0gICB8ICAgICAgICAgICA2IHwgICAgICAgIDExCisgIDcgfCB7QX0gICB8ICAgICAgICAgICA3 IHwgICAgICAgIDExCisgIDggfCB7QX0gICB8ICAgICAgICAgICA4IHwgICAgICAgIDExCisgIDkg fCB7QX0gICB8ICAgICAgICAgICA5IHwgICAgICAgIDExCisgMTAgfCB7QX0gICB8ICAgICAgICAg IDEwIHwgICAgICAgIDExCisgMTEgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg MTIgfCB7QX0gICB8ICAgICAgICAgIDEyIHwgICAgICAgIDEzCisgMTMgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoMTMgcm93cykKKworLS0gRXhhY3QgYm91bmRhcnkgbWF0Y2gK K1dJVEggdGVzdF9leGFjdF9ib3VuZGFyeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDUsIEFSUkFZWydCJ10pICAgLS0gRXhhY3RseSBhdCA0IEZPTExPV0lORyAoZnJhbWUgZW5kKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2V4YWN0X2JvdW5kYXJ5CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8 IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEg fCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA1CisgIDIgfCB7QX0gICB8ICAgICAgICAg ICAyIHwgICAgICAgICA1CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA1Cisg IDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA1CisgIDUgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBOIEZPTExPV0lORyArIFNLSVAgVE8g TkVYVCBST1c6IG92ZXJsYXBwaW5nIG1hdGNoZXMgYm91bmRlZCBieSBmcmFtZQorLS0gUm93IDE6 IGZyYW1lIFsxLDRdLCBBKDEtMykgQig0KSAtPiBtYXRjaAorLS0gUm93IDI6IGZyYW1lIFsyLDVd LCBBKDItMykgQig0KSAtPiBtYXRjaAorLS0gUm93IDM6IGZyYW1lIFszLDZdLCBBKDMpIEIoNCkg LT4gbWF0Y2gKKy0tIFJvdyA1OiBmcmFtZSBbNSw2XSwgQSg1KSBCKDYpIC0+IG1hdGNoCitXSVRI IHRlc3Rfbl9za2lwX25leHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3Rfbl9za2lwX25leHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMyBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtB fSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIEZyYW1lIGV4 YWN0bHkgMSByb3cgc2hvcnQgb2YgcG90ZW50aWFsIG1hdGNoCistLSBGcm9tIHJvdyAxOiBBIEEg QSBCIG5lZWRzIDQgcm93cyBidXQgZnJhbWUgaG9sZHMgMyAtPiBubyBtYXRjaAorLS0gRnJvbSBy b3cgMjogQSBBIEIgZml0cyBpbiAzLXJvdyBmcmFtZSAtPiBtYXRjaAorV0lUSCB0ZXN0X2ZyYW1l X29uZV9zaG9ydCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9mcmFtZV9vbmVfc2hvcnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAg IHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3Bl Y2lhbCBQYXJ0aXRpb24gQ2FzZXMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRW1wdHkgcGFydGl0aW9uICgwIHJvd3Mp CitXSVRIIHRlc3RfZW1wdHlfcGFydGl0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgMiwgQVJSQVlbJ18n XSkgIC0tIERpZmZlcmVudCBwYXJ0aXRpb24KKyAgICApIEFTIHQoaWQsIHBhcnQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBwYXJ0LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9lbXB0eV9wYXJ0aXRpb24KK1dIRVJFIHBhcnQgPSA5OSAgLS0gTm8gcm93 cyBtYXRjaAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBwYXJ0CisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgcGFydCB8 IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIFNpbmdsZSByb3cgcGFydGl0 aW9uCitXSVRIIHRlc3Rfc2luZ2xlX3JvdyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X3NpbmdsZV9yb3cKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKygxIHJvdykKKworLS0gQWxsIHJvd3MgZmFp bCBtYXRjaGluZyAoYWxsIERFRklORSBmYWxzZSkKK1dJVEggdGVzdF9hbGxfZmFpbCBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9hbGxfZmFpbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORQorICAgICAgICBBIEFTIGZhbHNlICAtLSBBbGwgcm93cyBmYWlsCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSBQYXJ0aXRpb24gZW5kIHdpdGggYWJz b3JiYWJsZSBwYXR0ZXJuCistLSBTS0lQIFBBU1QgTEFTVCBST1cgKyB1bmJvdW5kZWQgZnJhbWUg KyBhbGwgcm93cyBtYXRjaCBBCistLSBUcmlnZ2VycyBhYnNvcmIgaW4gIXJvd0V4aXN0cyBwYXRo IGF0IHBhcnRpdGlvbiBib3VuZGFyeS4KK1dJVEggdGVzdF9hYnNvcmJfcGFydGl0aW9uX2VuZCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX3BhcnRpdGlvbl9lbmQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDUKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3Mp CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gREVGSU5FIFNwZWNpYWwgQ2FzZXMKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVW5kZWZpbmVk IHZhcmlhYmxlIGluIERFRklORQorV0lUSCB0ZXN0X3VuZGVmaW5lZF92YXIgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnWCddKSwgIC0tIEIgbm90IGRlZmluZWQsIGRlZmF1bHRzIHRvIFRSVUUKKyAgICAg ICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1 LCBBUlJBWVsnXyddKSwgIC0tIEIgZGVmYXVsdHMgdG8gVFJVRSwgYnV0IG5vIGZsYWdzCisgICAg ICAgICg2LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3VuZGVm aW5lZF92YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAtLSBCIGlzIHVuZGVmaW5lZCwgZGVmYXVs dHMgdG8gVFJVRQorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8 IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAg NSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtDfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWJzb3JwdGlvbiBEeW5h bWljIEZsYWdzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIFBhcnRpYWwgYWJzb3JiYWJsZSBwYXR0ZXJuICgoQSspIEIp CitXSVRIIHRlc3RfcGFydGlhbF9hYnNvcmJhYmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9wYXJ0 aWFsX2Fic29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSspIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMg fCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDUgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiso NSByb3dzKQorCistLSBEeW5hbWljIGZsYWcgdXBkYXRlICgoQSspIHwgQikKK1dJVEggdGVzdF9k eW5hbWljX2ZsYWdzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0En XSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2R5bmFtaWNfZmxhZ3MKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSspIHwgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDMK KyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtCfSAgIHwgICAg ICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAg IDUKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgIDYgfCAgICAgICAgIDYKKyg2IHJvd3MpCisKKy0t IE5vbi1hYnNvcmJhYmxlIGNvbnRleHQgZHVyaW5nIGFic29ycHRpb24KKy0tIFBhdHRlcm4gKEEg QikrIEM6IEEsQiBpbiBhYnNvcmJhYmxlIGdyb3VwLCBDIGlzIG5vdC4KKy0tIFdoZW4gRU5EIGV4 aXRzIHRvIEMsIHRoZSBjbG9uZWQgY29udGV4dCBiZWNvbWVzIG5vbi1hYnNvcmJhYmxlLgorV0lU SCB0ZXN0X25vbl9hYnNvcmJhYmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X25vbl9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsg QykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAgNQorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge199 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDYgcm93cykKKworLS0gQWJzb3JwdGlvbiBz a2lwcGVkIHdoZW4gbm8gYWJzb3JiYWJsZSBzdGF0ZSByZW1haW5zCistLSBQYXR0ZXJuIChBIEIp KyBDIEQgd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cKKy0tIEFmdGVyIHJlYWNoaW5nIEMgKG5vbi1h YnNvcmJhYmxlKSwgbm8gYWJzb3JiYWJsZSBzdGF0ZSByZW1haW5zLgorLS0gT24gbmV4dCByb3cg KEQpLCB0aGUgZWFybHkgcmV0dXJuIGZpcmVzLgorV0lUSCB0ZXN0X2Fic29ycHRpb25fZWFybHlf cmV0dXJuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksCisg ICAgICAgICg2LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JwdGlvbl9lYXJseV9yZXR1cm4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIEIpKyBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFT ICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg NgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0R9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge199ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDcgcm93cykKKworLS0gQ292ZXJhZ2UgZmFpbHVyZTogb2xkZXIgY2FuJ3QgY292 ZXIgbmV3ZXIncyBzdGF0ZXMKKy0tIFBhdHRlcm4gQSsgfCBCKyB3aXRoIFNLSVAgUEFTVCBMQVNU IFJPVy4KKy0tIFJvdyAxOiBvbmx5IEEgLT4gQ3R4MSB0YWtlcyBBIGJyYW5jaCBvbmx5IChCIGZh aWxzKS4KKy0tIFJvdyAyOiBBIGFuZCBCIC0+IEN0eDIgdGFrZXMgYm90aCBicmFuY2hlcy4KKy0t IEFic29ycHRpb246IEN0eDEgaGFzIEEgYnV0IG5vIEIgLT4gY2FuJ3QgY292ZXIgQ3R4MidzIEIg c3RhdGUgLT4gZmFpbHMuCitXSVRIIHRlc3RfY292ZXJhZ2VfZmFpbCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsICdfJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnLCAnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywgJ18nXSksCisgICAg ICAgICg0LCBBUlJBWVsnQScsICdfJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nLCAnXyddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvdmVyYWdlX2ZhaWwKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErIHwgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7QSxffSB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QSxC fSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QSxffSB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDQgfCB7QSxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7 XyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBBYnNvcmIgc2tp cHMgY29tcGxldGVkIGNvbnRleHQgKG9sZGVyLT5zdGF0ZXM9PU5VTEwpCistLSBQYXR0ZXJuIEEr IHwgQisgd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cuCistLSBSb3cgMTogQSBvbmx5IC0+IEN0eDEg dGFrZXMgQSBicmFuY2guIFJvdyAyOiBCIG9ubHkgLT4gQ3R4MSBBIGZhaWxzIChjb21wbGV0ZWQp LgorLS0gQ3R4MiB0YWtlcyBCIGJyYW5jaC4gQWJzb3JwdGlvbjogQ3R4MSBzdGF0ZXM9PU5VTEwg LT4gc2tpcC4KK1dJVEggdGVzdF9vbGRlcl9jb21wbGV0ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vbGRlcl9jb21wbGV0ZWQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEErIHwgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisgIDIgfCB7 Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDQgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCBy b3dzKQorCistLSBBYnNvcmIgc2tpcHMgYSBjb250ZXh0IHdpdGggbm8gYWJzb3JiYWJsZSBzdGF0 ZQorLS0gUGF0dGVybiBBKyB8IEIgQyB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyAob25seSBBKyBi cmFuY2ggYWJzb3JiYWJsZSkuCistLSBSb3cgMTogQiBvbmx5IC0+IEN0eDEgdGFrZXMgQiBicmFu Y2ggKG5vbi1hYnNvcmJhYmxlKSwgYWR2YW5jZXMgdG8gQy4KKy0tIFJvdyAyOiBDLEEgLT4gQ3R4 MSBDIG1hdGNoZXMgKG5vIGFic29yYmFibGUgc3RhdGUpLiBDdHgyIHRha2VzIEEgKGFic29yYmFi bGUpLgorLS0gQWJzb3JwdGlvbjogQ3R4MSBoYXMgbm8gYWJzb3JiYWJsZSBzdGF0ZSAtPiBza2lw LgorV0lUSCB0ZXN0X29sZGVyX25vbl9hYnNvcmJhYmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJywgJ18nXSksCisgICAgICAgICgyLCBBUlJB WVsnQycsICdBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ18nLCAnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vbGRlcl9u b25fYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgfCBCIEMpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtCLF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtD LEF9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtfLEF9IHwgICAgICAgICAgIDMg fCAgICAgICAgIDMKKyAgNCB8IHtfLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJv d3MpCisKKy0tIFJlbHVjdGFudCBicmFuY2ggaW4gQUxUIG5vdCBhYnNvcmJhYmxlOiAoQSs/KSB8 IEIKKy0tIEErPyBpcyByZWx1Y3RhbnQgc28gbm90IGFic29yYmFibGUuIENvbXBhcmUgd2l0aCBn cmVlZHkgKEErKSB8IEIgYWJvdmUuCitXSVRIIHRlc3RfcmVsdWN0YW50X2FsdF9hYnNvcnB0aW9u IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfYWx0X2Fic29ycHRpb24KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOICgoQSs/KSB8IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisgIDIgfCB7 QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAz IHwgICAgICAgICAzCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0CisgIDUg fCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFplcm8tQ29uc3VtcHRpb24gQ3ljbGUgRGV0ZWN0aW9uCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEN5Y2xlIHByZXZl bnRpb24gYXQgY291bnQgPiAwOiAoQSopKiBpbm5lciBza2lwIGN5Y2xlcyBhdCBjb3VudD0zCitX SVRIIHRlc3RfY3ljbGVfbm9uemVybyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSAgLS0gSW5uZXIgQSog bWF0Y2hlcyAwLCBjeWNsZXMgYXQgY291bnQ9MworICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2N5Y2xlX25vbnplcm8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSopKikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7QX0gICB8ICAg ICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAg ICAzCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCist LSBDeWNsZSB3aXRoIG1peGVkIG51bGxhYmxlczogKEEqIEIqKSogbXVsdGlwbGUgbnVsbGFibGUg cGF0aHMKK1dJVEggdGVzdF9jeWNsZV9taXhlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2N5Y2xlX21peGVkCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEEqIEIqKSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7Qn0gICB8ICAgICAg ICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAz CisgIDQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFN0YW5kYXJkIENsYXVzZSA3OiBGb3JtYWwgUGF0dGVybiBNYXRjaGluZyBSdWxlcwor LS0gSVNPL0lFQyAxOTA3NS01LCBDbGF1c2UgNworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMi4yIEFs dGVybmF0aW9uOiBmaXJzdCBhbHRlcm5hdGl2ZSBpcyBwcmVmZXJyZWQKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gKEEg fCBCKTogQSBwcmVmZXJyZWQgb3ZlciBCIHdoZW4gYm90aCBjb3VsZCBtYXRjaAorLS0gUm93IDEg aGFzIGJvdGggQSBhbmQgQiBmbGFnczogQSBzaG91bGQgYmUgY2hvc2VuIChmaXJzdCBhbHRlcm5h dGl2ZSkKK1dJVEggdGVzdF9hbHRfcHJlZmVyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9hbHRfcHJlZmVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEg fCAgICAgICAgIDEKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8 IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKygzIHJvd3MpCisKKy0tIChBezEsMn0g fCBCezIsM30pOiBhbGwgQS1tYXRjaGVzIGJlZm9yZSBhbGwgQi1tYXRjaGVzCistLSBTdGFuZGFy ZCBleGFtcGxlOiBwcmVmZXJtZW50IG9yZGVyIGlzIEFBLCBBLCBCQkIsIEJCCistLSBSb3dzIDEt MiBoYXZlIGJvdGggQSBhbmQgQjogZ3JlZWR5IEF7MSwyfSBzaG91bGQgbWF0Y2ggMS0yCitXSVRI IHRlc3RfYWx0X3F1YW50aWZpZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3F1 YW50aWZpZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQXsxLDJ9IHwgQnsyLDN9KSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0t LSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAg ICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtBLEJ9IHwgICAgICAgICAgIDIgfCAgICAgICAgIDIK KyAgMyB8IHtCfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDUKKyAgNCB8IHtCfSAgIHwgICAg ICAgICAgIDQgfCAgICAgICAgIDUKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyg1IHJvd3MpCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4yLjMgQ29uY2F0ZW5hdGlvbjogbGV4aWNvZ3Jh cGhpYyBvcmRlcmluZworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAoKEEgfCBCKSAoQyB8IEQpKTogcHJlZmVybWVudCBv cmRlciBpcyBBQywgQUQsIEJDLCBCRAorLS0gUm93IDEgbWF0Y2hlcyBBIGFuZCBCLCBSb3cgMiBt YXRjaGVzIEMgYW5kIEQKKy0tIFByZWZlcnJlZCBtYXRjaDogQSB0aGVuIEMgKGZpcnN0IGFsdGVy bmF0aXZlcyBpbiBib3RoIHBvc2l0aW9ucykKK1dJVEggdGVzdF9jb25jYXRfbGV4IEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydDJywnRCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X2NvbmNhdF9sZXgKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEMgfCBEKSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBB UyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxC fSB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QyxEfSB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoMiByb3dzKQorCistLSAoKEEgfCBCKSBDKTogZmlyc3QgYWx0IChBKSBmYWls cywgc2Vjb25kIGFsdCAoQikgc3VjY2VlZHMKKy0tIFRlc3RzIGJhY2t0cmFja2luZzogcm93IDEg aGFzIG9ubHkgQiwgcm93IDIgaGFzIEMKK1dJVEggdGVzdF9jb25jYXRfYmFja3RyYWNrIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0MnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDQsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY29uY2F0X2Jh Y2t0cmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgQykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0J9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNAorICA0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSA3LjIuNCBRdWFudGlmaWNhdGlvbjogZ3JlZWR5L3JlbHVjdGFudCwgbGV4aWNv Z3JhcGhpYyA+IGxlbmd0aAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBWezIsNH0gZ3JlZWR5OiBsb25nZXIgbWF0Y2gg cHJlZmVycmVkCitXSVRIIHRlc3RfcXVhbnRfZ3JlZWR5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcXVhbnRfZ3JlZWR5CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBezIsNH0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gVnsyLDR9PyByZWx1Y3RhbnQ6IHNob3J0ZXIg bWF0Y2ggcHJlZmVycmVkCitXSVRIIHRlc3RfcXVhbnRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcXVhbnRfcmVsdWN0YW50CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBezIsNH0/KQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tICgoQXxCKXsxLDJ9KSBn cmVlZHk6IGxleGljb2dyYXBoaWMgPiBsZW5ndGgKKy0tIFN0YW5kYXJkIGV4YW1wbGU6IHByZWZl cm1lbnQgQUEsIEFCLCBBLCBCQSwgQkIsIEIKKy0tIFNpbmdsZSBBIHByZWZlcnJlZCBvdmVyIEIt c3RhcnRpbmcgbG9uZ2VyIG1hdGNoCitXSVRIIHRlc3RfcXVhbnRfbGV4X2dyZWVkeSBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisg ICAgICAgICgyLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1 YW50X2xleF9ncmVlZHkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIpezEsMn0pKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAg ICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDIgcm93cykKKworLS0gKChBfEIpezEsMn0/KSByZWx1Y3RhbnQ6IGxleGljb2dyYXBo aWMgPiBsZW5ndGgKKy0tIFN0YW5kYXJkIGV4YW1wbGU6IHByZWZlcm1lbnQgQSwgQUEsIEFCLCBC LCBCQSwgQkIKKy0tIFNpbmdsZSBBIHByZWZlcnJlZCBvdmVyIGFueSBCLXN0YXJ0aW5nIG1hdGNo CitXSVRIIHRlc3RfcXVhbnRfbGV4X3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsn QiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50X2xleF9yZWx1Y3RhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIpezEsMn0/KSkKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKygyIHJvd3Mp CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gNy4yLjYgQW5jaG9ycyAobm90IHlldCBpbXBsZW1lbnRlZCAtIHN5bnRh eCBlcnJvciBleHBlY3RlZCkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gXiBhbmNob3I6IG5vdCB5ZXQgc3VwcG9ydGVk CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gKFNFTEVDVCAxIEFTIHYpIHQKK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSB2IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKF4gQSkgREVGSU5FIEEgQVMgVFJVRSk7CitFUlJPUjogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICJeIgorTElORSAzOiAgICAgUEFUVEVSTiAoXiBBKSBERUZJ TkUgQSBBUyBUUlVFKTsKKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tICQgYW5jaG9yOiBub3Qg eWV0IHN1cHBvcnRlZAorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIChTRUxFQ1QgMSBBUyB2 KSB0CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgdiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICQpIERFRklORSBBIEFTIFRSVUUp OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJCIKK0xJTkUgMzogICAgIFBBVFRF Uk4gKEEgJCkgREVGSU5FIEEgQVMgVFJVRSk7CisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gNy4yLjggSW5maW5pdGUgcmVwZXRpdGlvbnMgb2YgZW1wdHkgbWF0Y2hlcworLS0g KFBlcmwgbG93ZXItYm91bmQgc3RvcHBpbmcgcnVsZSkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gU3RhbmRhcmQgZXhh bXBsZXMgZnJvbSA3LjIuODoKKy0tICAgKEE/KXswLDN9OiBhbGxvd2VkIHN0cmluZ3MgaW5jbHVk ZSBTVFIwMD0oKSwgU1RSMDE9KEEpLCBTVFIwMj0oZW1wdHkpLAorLS0gICAgICAgICAgICAgIFNU UjAzPShBQSksIFNUUjA0PShBLGVtcHR5KSwgU1RSMDc9KEFBQSksIFNUUjA4PShBQSxlbXB0eSkK Ky0tICAgKEE/KXsxLDN9OiBzYW1lIGFzIHswLDN9IGJ1dCBTVFIwMCBleGNsdWRlZCAobWluPTEg bm90IG1ldCkKKy0tICAgKEE/KXsyLDN9OiBTVFIwMy0wNiAobGVuIDIpIGFuZCBTVFIwNywwOCwx MSwxMiAobGVuIDMpIGFyZSB2YWxpZAorLS0gICAgICAgICAgICAgIFNUUjA2PShTVFJFLFNUUkUp IElTIHZhbGlkIGJlY2F1c2Ugbm9uLWZpbmFsIFNUUkUgYXQKKy0tICAgICAgICAgICAgICBwb3Np dGlvbiAxIGZpbGxzIHRoZSBsb3dlciBib3VuZAorLS0gKEE/PykqQjogU3RhbmRhcmQgNy4yLjgg aW50cm9kdWN0b3J5IGV4YW1wbGUKKy0tICJtYXRjaGVkIGFnYWluc3QgYSBzZXF1ZW5jZSBvZiBy b3dzIGZvciB3aGljaCB0aGUgb25seSBmZWFzaWJsZQorLS0gIG1hdGNoaW5nIGlzOiBCIgorLS0g QT8/IGlzIHJlbHVjdGFudCwgcHJlZmVycyBlbXB0eS4gKiBpcyBncmVlZHkgYnV0IFBlcmwgcnVs ZSBzdG9wcworLS0gYWZ0ZXIgZW1wdHkgbWF0Y2ggd2l0aCBtaW4oPTApIHNhdGlzZmllZC4KKy0t IEV4cGVjdGVkOiBlYWNoIEIgcm93IG1hdGNoZXMgYWxvbmUgKEE/PyBlbXB0eSwgKiBzdG9wcywg QiBtYXRjaGVzKQorV0lUSCB0ZXN0X2VtcHR5X3JlbHVjdGFudF9zdGFyIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2VtcHR5X3JlbHVjdGFudF9zdGFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/ PykqIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8 IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEg fCB7Qn0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisgIDIgfCB7Qn0gICB8ICAgICAgICAg ICAyIHwgICAgICAgICAyCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiso MyByb3dzKQorCistLSAoQT8pezAsM306IG1pbj0wLCBudWxsYWJsZSBpbm5lci4KKy0tIEEgbmV2 ZXIgbWF0Y2hlcyBidXQgQT8gbWF0Y2hlcyBlbXB0eSwgc2F0aXNmeWluZyBtaW49MCBpbW1lZGlh dGVseS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlcyAob25lIHBlciByb3cpOyBm aXJzdF92YWx1ZSAvIGxhc3RfdmFsdWUKKy0tIGFyZSBOVUxMIGJlY2F1c2UgdGhlIHdpbmRvdyBm cmFtZSBmb3IgYW4gZW1wdHkgbWF0Y2ggaGFzIG5vIHJvd3MuCitXSVRIIHRlc3RfNzI4X21pbjAg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X21pbjAKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgo QT8pezAsM30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gKEE/KXsxLDN9OiBtaW49 MSwgbnVsbGFibGUgaW5uZXIuCistLSBBIG5ldmVyIG1hdGNoZXM7IG9uZSBlbXB0eSBpdGVyYXRp b24gc2F0aXNmaWVzIG1pbj0xLgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzOyBm aXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4KK1dJVEggdGVzdF83MjhfbWlu MSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbWluMQorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KChBPyl7MSwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCistLSAoQT8pezIsM306IG1p bj0yLCBudWxsYWJsZSBpbm5lci4gIFBlciBJU08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYgPSAo U1RSRSBTVFJFKQorLS0gaXMgdmFsaWQ6IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWlu PTIuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUg TlVMTCBvdmVyIGVtcHR5IGZyYW1lLgorV0lUSCB0ZXN0XzcyOF9taW4yIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0XzcyOF9taW4yCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIChBPyl7MiwzfSBtaXhlZDogc29tZSByb3dzIG1h dGNoIEEsIHNvbWUgZG9uJ3QKKy0tIFJvd3MgMS0yOiBBIG1hdGNoZXMsIGdyZWVkeSB0YWtlcyAy IC0+IG1pbiBzYXRpc2ZpZWQgKHJlYWwgbWF0Y2gpCistLSBSb3cgMzogQSBkb2Vzbid0IG1hdGNo LCB0d28gZW1wdHkgaXRlcmF0aW9ucyBzYXRpc2Z5IG1pbj0yIChsZW5ndGgtMCBtYXRjaCkKKy0t IFJvdyA0OiBBIG1hdGNoZXMgMSByZWFsIGl0ZXIgKyAxIGZmIGVtcHR5IGV4aXQgLT4gbWF0Y2gg NC00CitXSVRIIHRlc3RfNzI4X21pbjJfbWl4ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbWluMl9taXhlZAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp CispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwg ICAgICAgICAyCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0 IHwgICAgICAgICA0CisoNCByb3dzKQorCistLSAoQT8gQj8pezIsM306IG11bHRpLWVsZW1lbnQg bnVsbGFibGUgYm9keSB3aXRoIHJlYWwgbWF0Y2hlcworLS0gQm9keSBBPyBCPyBpcyBudWxsYWJs ZSAoYm90aCBvcHRpb25hbCksIGJ1dCBBIGFuZCBCIERPIG1hdGNoIHJvd3MuCistLSBSZWFsIChu b24tZW1wdHkpIGl0ZXJhdGlvbnMgbG9vcCBiYWNrIG5vcm1hbGx5OyBmYXN0LWZvcndhcmQgb25s eQorLS0gZmlyZXMgYXMgYSBwYXJhbGxlbCBleGl0IHBhdGggKEVYSVQgT05MWSwgbm8gZ3JlZWR5 L3JlbHVjdGFudCBsb29wKS4KKy0tIERhdGE6IGFsdGVybmF0aW5nIEEsIEIgcm93cyAoNiByb3dz KQorLS0gR3JlZWR5OiBlYWNoIHJvdyBnZXRzIHRoZSBsb25nZXN0IG1hdGNoIGZyb20gaXRzIHN0 YXJ0aW5nIHBvc2l0aW9uLgorLS0gUm93IDE6IDMgaXRlcnMgKEFAMSxCQDIpKEFAMyxCQDQpKEFA NSxCQDYpIC0+IDEtNgorLS0gUm93IDU6IDEgcmVhbCBpdGVyICsgMSBmZiBlbXB0eSBleGl0IC0+ IDUtNgorV0lUSCB0ZXN0XzcyOF9tdWx0aV9ib2R5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0XzcyOF9tdWx0aV9ib2R5CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEE/IEI/KXsyLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyks CisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNgorICAyIHwge0J9ICAgfCAg ICAgICAgICAgMiB8ICAgICAgICAgNgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAg ICAgNgorICA0IHwge0J9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNgorICA1IHwge0F9ICAg fCAgICAgICAgICAgNSB8ICAgICAgICAgNgorICA2IHwge0J9ICAgfCAgICAgICAgICAgNiB8ICAg ICAgICAgNgorKDYgcm93cykKKworLS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IGJvZHkgKG5v dGhpbmcgbWF0Y2hlcyBBIG9yIEIpLgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVz OyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4KK1dJVEggdGVzdF83Mjhf bXVsdGlfZW1wdHkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0MnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X211bHRpX2VtcHR5CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICAyIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gKEE/IEI/KXsyLDN9OiBtaXhl ZCByZWFsIGFuZCBlbXB0eSBpdGVyYXRpb25zCistLSBSb3cgMTogaXRlcjEgcmVhbCAoQUAxLEJA MiksIGl0ZXIyIGF0IHJvdyAzIGVtcHR5IC0+IGZmIGV4aXQsIG1hdGNoIDEtMgorLS0gUm93IDM6 IEMgZG9lc24ndCBtYXRjaCBBIG9yIEIgLT4gTlVMTAorLS0gUm93IDQ6IGl0ZXIxIHJlYWwgKEFA NCxCQDUpLCBpdGVyMiBhdCBlbmQgZW1wdHkgLT4gZmYgZXhpdCwgbWF0Y2ggNC01CitXSVRIIHRl c3RfNzI4X211bHRpX21peGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbXVsdGlfbWl4ZWQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg ICAyCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAg ICAgICA1CisgIDUgfCB7Qn0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA1CisoNSByb3dzKQor CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDcuMyBQYXR0ZXJuIG1hdGNoaW5nIGluIHRoZW9yeSBhbmQgcHJhY3RpY2UK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gU3RhbmRhcmQncyB3b3JrZWQgZXhhbXBsZTogQT8gQisgd2l0aCBzcGVjaWZp YyBkYXRhCistLSBQcmVmZXJtZW50IG9yZGVyOiAoQSkoQkJCKSwgKEEpKEJCKSwgKEEpKEIpLCAo KShCQkIpLCAoKShCQiksICgpKEIpCistLSBSb3cgMTogQSBjb25kaXRpb24gKHByaWNlPjEwMCkg aXMgZmFsc2UgLT4gQSBmYWlscworLS0gQmFja3RyYWNrOiBlbXB0eSBBPywgdGhlbiBCKyBmcm9t IHJvdyAxCistLSBFeHBlY3RlZDogcm93cyAxLTMgbWF0Y2ggYXMgQiAoQT8gdGFrZXMgZW1wdHkg bWF0Y2gpCitXSVRIIHRlc3RfNzNfZXhhbXBsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCA2MCksCisgICAgICAgICgyLCA3MCksCisgICAgICAgICgzLCA0MCkK KyAgICApIEFTIHQoaWQsIHByaWNlKQorKQorU0VMRUNUIGlkLCBwcmljZSwKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83M19leGFtcGxlCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBPyBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBwcmljZSA+IDEwMCwKKyAg ICAgICAgQiBBUyBUUlVFCispOworIGlkIHwgcHJpY2UgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCAgICA2MCB8 ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCAgICA3MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDMgfCAgICA0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQor Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v49-0009-Row-pattern-recognition-patch-typedefs.list.patch" Content-Disposition: attachment; filename="v49-0009-Row-pattern-recognition-patch-typedefs.list.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlj6m8 RnJvbSBjNWFlMzU5ZjQ2YjA4NmFlYjI2MGM1NmIxYzI2OGIzMjY0OWFlNWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBGcmksIDE5IEp1biAyMDI2IDIwOjE4OjQ1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAg MDkvMjldIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIHBhdGNoICh0eXBlZGVmcy5saXN0KS4KCi0t LQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgfCAyNCArKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCBjNWRiNmNhNjcwNS4uYmQ2NjI3NTdlZWMgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC01MzMsNiArNTMzLDcgQEAgQ29uc3RyYWludAogQ29uc3RyYWludENh dGVnb3J5CiBDb25zdHJhaW50SW5mbwogQ29uc3RyYWludHNTZXRTdG10CitDb250YWluUlBSQ29u dGV4dAogQ29udHJvbERhdGEKIENvbnRyb2xGaWxlRGF0YQogQ29udkluZm8KQEAgLTY2Miw3ICs2 NjMsMTAgQEAgRGVjb2RpbmdXb3JrZXJTaGFyZWQKIERlZkVsZW0KIERlZkVsZW1BY3Rpb24KIERl ZmF1bHRBQ0xJbmZvCitEZWZpbmVNZXRhZGF0YUNvbnRleHQKK0RlZmluZVBoYXNlCiBEZWZpbmVT dG10CitEZWZpbmVXYWxrQ3R4CiBEZWZuRHVtcGVyUHRyCiBEZWxldGVTdG10CiBEZXBlbmRlbmNp ZXNQYXJzZVN0YXRlCkBAIC03NjEsNiArNzY1LDcgQEAgRXJyb3JEYXRhCiBFcnJvclNhdmVDb250 ZXh0CiBFc3RpbWF0ZURTTUZvcmVpZ25TY2FuX2Z1bmN0aW9uCiBFc3RpbWF0aW9uSW5mbworRXZh bERlZmluZU9mZnNldHNDb250ZXh0CiBFdmVudFRyaWdnZXJDYWNoZUVudHJ5CiBFdmVudFRyaWdn ZXJDYWNoZUl0ZW0KIEV2ZW50VHJpZ2dlckNhY2hlU3RhdGVUeXBlCkBAIC0xODMxLDYgKzE4MzYs OCBAQCBOYW1lZExXTG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1cGxlc3RvcmVTY2FuCiBOYW1l ZFR1cGxlc3RvcmVTY2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KK05hdlRyYXZlcnNhbAorTmF2Vmlz aXRGbgogTmVzdExvb3AKIE5lc3RMb29wUGFyYW0KIE5lc3RMb29wU3RhdGUKQEAgLTE4NDAsNiAr MTg0Nyw3IEBAIE5ld0NvbnN0cmFpbnQKIE5leHRTYW1wbGVCbG9ja19mdW5jdGlvbgogTmV4dFNh bXBsZVR1cGxlX2Z1bmN0aW9uCiBOZXh0VmFsdWVFeHByCitORkFMZW5ndGhTdGF0cwogTm9kZQog Tm9kZUluc3RydW1lbnRhdGlvbgogTm9kZVRhZwpAQCAtMjUyMiw2ICsyNTMwLDIyIEBAIFJJX0Nv bnN0cmFpbnRJbmZvCiBSSV9GYXN0UGF0aEVudHJ5CiBSSV9RdWVyeUhhc2hFbnRyeQogUklfUXVl cnlLZXkKK1JQQ29tbW9uU3ludGF4CitSUFJEZXB0aAorUlBSRWxlbUZsYWdzCitSUFJFbGVtSWR4 CitSUFJORkFDb250ZXh0CitSUFJORkFTdGF0ZQorUlBSTmF2RXhwcgorUlBSTmF2S2luZAorUlBS TmF2T2Zmc2V0S2luZAorUlBSUGF0dGVybgorUlBSUGF0dGVybkVsZW1lbnQKK1JQUlBhdHRlcm5O b2RlCitSUFJQYXR0ZXJuTm9kZVR5cGUKK1JQUlF1YW50aXR5CitSUFJWYXJJZAorUlBTa2lwVG8K IFJURUtpbmQKIFJURVBlcm1pc3Npb25JbmZvCiBSV0NvbmZsaWN0Ci0tIAoyLjUwLjEgKEFwcGxl IEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0001-drop-blank-line-churn.patch" Content-Disposition: attachment; filename="v50-0001-drop-blank-line-churn.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlm0a9 RnJvbSBiNjk3MWZmNTljNzI5ZDAxM2M3NTAwNmRmNzUxNWY3NWU5MWJhYjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDE2IEp1biAyMDI2IDIzOjI2OjE2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTAv MjldIFJlbW92ZSBibGFuay1saW5lIGNoYW5nZXMgdW5yZWxhdGVkIHRvIHJvdyBwYXR0ZXJuCiBy ZWNvZ25pdGlvbgoKVGhlIFJQUiBwYXRjaCBhZGRlZCBvciBkcm9wcGVkIGJsYW5rIGxpbmVzIGlu IGZpdmUgZXhpc3RpbmcgZmlsZXMgd2l0aCBubwpyZWxhdGVkIGNvZGUgY2hhbmdlLiAgUmV2ZXJ0 IHRoZW0gc28gdGhlIGZpbGVzIGRpZmZlciBmcm9tIHRoZSBiYXNlIG9ubHkKd2hlcmUgUlBSIGFj dHVhbGx5IHRvdWNoZXMgdGhlbS4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMgfCAyIC0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgfCAxICsK IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICB8IDEgKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgIHwgMSAtCiBzcmMvYmFja2VuZC91dGlscy9hZHQvd2lu ZG93ZnVuY3MuYyAgfCAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dB Z2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCBjYjZhNDg0 YjdkZS4uNWIyMzg1ZjFkOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAg LTE3Nyw3ICsxNzcsNiBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dTdGF0ZVBlckFnZ0RhdGEKIAli b29sCQlyZXN0YXJ0OwkJLyogbmVlZCB0byByZXN0YXJ0IHRoaXMgYWdnIGluIHRoaXMgY3ljbGU/ ICovCiB9IFdpbmRvd1N0YXRlUGVyQWdnRGF0YTsKIAotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXpl X3dpbmRvd2FnZ3JlZ2F0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsCiAJCQkJCQkJCQkgICBX aW5kb3dTdGF0ZVBlckZ1bmMgcGVyZnVuY3N0YXRlLAogCQkJCQkJCQkJICAgV2luZG93U3RhdGVQ ZXJBZ2cgcGVyYWdnc3RhdGUpOwpAQCAtMTA4Niw3ICsxMDg1LDYgQEAgbmV4dF90dXBsZToKIAkJ RXhlY0NsZWFyVHVwbGUoYWdnX3Jvd19zbG90KTsKIAl9CiAKLQogCS8qIFRoZSBmcmFtZSdzIGVu ZCBpcyBub3Qgc3VwcG9zZWQgdG8gbW92ZSBiYWNrd2FyZHMsIGV2ZXIgKi8KIAlBc3NlcnQoYWdn cmVnYXRlZHVwdG9fbm9ucmVzdGFydGVkIDw9IHdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0byk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA4MTNhMzI2YmQ3OC4uNmU0ZjNm ZDYxZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTIxNCw2ICsyMTQs NyBAQCBzdGF0aWMgTGlzdCAqc2V0X3dpbmRvd2FnZ19ydW5jb25kaXRpb25fcmVmZXJlbmNlcyhQ bGFubmVySW5mbyAqcm9vdCwKIHN0YXRpYyB2b2lkIHJlY29yZF9lbGlkZWRfbm9kZShQbGFubmVy R2xvYmFsICpnbG9iLCBpbnQgcGxhbl9ub2RlX2lkLAogCQkJCQkJCSAgIE5vZGVUYWcgZWxpZGVk X3R5cGUsIEJpdG1hcHNldCAqcmVsaWRzKTsKIAorCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAq CiAgKgkJU1VCUExBTiBSRUZFUkVOQ0VTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKaW5kZXgg NTUwZWE0ZWI5YzAuLjhlYjM2N2FhNTc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBA IC0xMDIsNiArMTAyLDcgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9ybUZyYW1lT2Zmc2V0KFBhcnNl U3RhdGUgKnBzdGF0ZSwgaW50IGZyYW1lT3B0aW9ucywKIAkJCQkJCQkJICBPaWQgcmFuZ2VvcGZh bWlseSwgT2lkIHJhbmdlb3BjaW50eXBlLCBPaWQgKmluUmFuZ2VGdW5jLAogCQkJCQkJCQkgIE5v ZGUgKmNsYXVzZSk7CiAKKwogLyoKICAqIHRyYW5zZm9ybUZyb21DbGF1c2UgLQogICoJICBQcm9j ZXNzIHRoZSBGUk9NIGNsYXVzZSBhbmQgYWRkIGl0ZW1zIHRvIHRoZSBxdWVyeSdzIHJhbmdlIHRh YmxlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDQxNWRhNjQxN2Q0Li40ZWI3ZTM1 YmVlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNzMxMSw3ICs3MzExLDYgQEAg Z2V0X3J1bGVfd2luZG93c3BlYyhXaW5kb3dDbGF1c2UgKndjLCBMaXN0ICp0YXJnZXRMaXN0LAog CQlnZXRfcnVsZV9vcmRlcmJ5KHdjLT5vcmRlckNsYXVzZSwgdGFyZ2V0TGlzdCwgZmFsc2UsIGNv bnRleHQpOwogCQluZWVkc3BhY2UgPSB0cnVlOwogCX0KLQogCS8qIGZyYW1pbmcgY2xhdXNlIGlz IG5ldmVyIGluaGVyaXRlZCwgc28gcHJpbnQgdW5sZXNzIGl0J3MgZGVmYXVsdCAqLwogCWlmICh3 Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fTk9OREVGQVVMVCkKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC93aW5kb3dmdW5jcy5jCmluZGV4IDM4NjlmNmM4OTk0Li5kMTVhYTBjNzVkYiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKQEAgLTQxLDYgKzQxLDcgQEAgc3RhdGljIGJvb2wg cmFua191cChXaW5kb3dPYmplY3Qgd2lub2JqKTsKIHN0YXRpYyBEYXR1bSBsZWFkbGFnX2NvbW1v bihGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQlib29sIGZvcndhcmQsIGJvb2wgd2l0 aG9mZnNldCwgYm9vbCB3aXRoZGVmYXVsdCk7CiAKKwogLyoKICAqIHV0aWxpdHkgcm91dGluZSBm b3IgKl9yYW5rIGZ1bmN0aW9ucy4KICAqLwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0002-drop-unused-includes.patch" Content-Disposition: attachment; filename="v50-0002-drop-unused-includes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlp4910 RnJvbSAxMzZiYzgxNGM4YWUzMGU0ZTg0ZmRlNDMxZjNjNTNjYjQxZTFmODk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDA4OjE2OjU3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTEv MjldIFJlbW92ZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcyBmcm9tIHRoZSByb3cgcGF0dGVybgogcmVj b2duaXRpb24gcGF0Y2gKCkRyb3AgaW5jbHVkZXMgdGhhdCBhcmUgdW51c2VkIG9yIGNvdmVyZWQg YnkgZXhpc3RpbmcgZm9yd2FyZCB0eXBlZGVmczoKY29uZGl0aW9uX3ZhcmlhYmxlLmgsIGhzZWFy Y2guaCwgcXVlcnllbnZpcm9ubWVudC5oIGZyb20gZXhlY25vZGVzLmg7CjxsaW1pdHMuaD4gZnJv bSBycHIuYzsgd2luZG93YXBpLmggZnJvbSBleGVjUlBSLmguICBTd2l0Y2ggcnByLmggZnJvbQpw YXJzZW5vZGVzLmggdG8gcHJpbW5vZGVzLmgsIHdoZXJlIFJQUk5hdkV4cHIgaXMgYWN0dWFsbHkg ZGVmaW5lZC4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyB8IDIgLS0KIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaCAgIHwgMSAtCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICB8IDMgLS0tCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggICAgICB8 IDcgKysrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwppbmRleCAxNzU3NzdhOGZmYy4uNTBiY2E1OTQ1 MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCkBAIC0zNyw4ICszNyw2IEBACiAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KICNpbmNsdWRlICJjYXRh bG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oCmluZGV4IDdiMmIwZmViYjc2Li5mYjdkYzYzYTRj NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmluZSBFWEVD UlBSX0gKIAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgotI2luY2x1ZGUgIndpbmRvd2Fw aS5oIgogCiAvKiBORkEgY29udGV4dCBtYW5hZ2VtZW50ICovCiBleHRlcm4gUlBSTkZBQ29udGV4 dCAqRXhlY1JQUlN0YXJ0Q29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IDc5MmFhM2YwZDA1Li44MDYwYjAxOGVmOCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTM4LDkgKzM4LDYgQEAKICNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKICNp bmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5o IgotI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCi0jaW5jbHVkZSAidXRp bHMvaHNlYXJjaC5oIgotI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKICNpbmNs dWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3Jwci5oCmluZGV4IDgwMmQyZjFkZDY5Li5iNGY4N2Q4Y2FhNCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9y cHIuaApAQCAtMTAsMTEgKzEwLDEyIEBACiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLSNp Zm5kZWYgT1BUSU1JWkVSX1JQUl9ICi0jZGVmaW5lIE9QVElNSVpFUl9SUFJfSAorI2lmbmRlZiBS UFJfSAorI2RlZmluZSBSUFJfSAogCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2lu Y2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgog CiAvKiBMaW1pdHMgYW5kIHNwZWNpYWwgdmFsdWVzICovCiAvKgpAQCAtOTYsNCArOTcsNCBAQCB0 eXBlZGVmIHN0cnVjdCBOYXZUcmF2ZXJzYWwKIAogZXh0ZXJuIGJvb2wgbmF2X3RyYXZlcnNhbF93 YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY3R4KTsKIAotI2VuZGlmCQkJCQkJCS8qIE9QVElNSVpF Ul9SUFJfSCAqLworI2VuZGlmCQkJCQkJCS8qIFJQUl9IICovCi0tIAoyLjUwLjEgKEFwcGxlIEdp dC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0003-nav-by-name.patch" Content-Disposition: attachment; filename="v50-0003-nav-by-name.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlrbk11 RnJvbSA5MmMzZGZlMGRkMjcwMTJlMGU4ZDM4YTM2YjVjN2QwYTkyOGU1YzM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDE1IEp1biAyMDI2IDE1OjI5OjU5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTIv MjldIFJlY29nbml6ZSByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMgYnkgbmFtZQog aW4gREVGSU5FCgpQUkVWLCBORVhULCBGSVJTVCwgYW5kIExBU1Qgd2VyZSBwbGFjZWhvbGRlciBm dW5jdGlvbnMgaW4gcGdfcHJvYyB0aGF0CnBvbGx1dGVkIHRoZSBvcmRpbmFyeSBmdW5jdGlvbiBu YW1lc3BhY2UgYW5kIGNvdWxkIGJlIHNpbGVudGx5IG1pc2JvdW5kIHRvCnNhbWUtbmFtZWQgdXNl ciBmdW5jdGlvbnMuICBSZWNvZ25pemUgdGhlbSBieSBuYW1lIGluc2lkZSBhIERFRklORSBjbGF1 c2UKYW5kIGRyb3AgdGhlIHBsYWNlaG9sZGVyczsgYW4gdW5xdWFsaWZpZWQgY2FsbCBpcyBhbHdh eXMgbmF2aWdhdGlvbiwgd2hpbGUKYSBzY2hlbWEtcXVhbGlmaWVkIGNhbGwgc3RpbGwgcmVhY2hl cyBhbiBvcmRpbmFyeSBmdW5jdGlvbi4gIEFsc28gcmVqZWN0IGEKbmF2aWdhdGlvbiBvcGVyYXRp b24gaW5zaWRlIGEgbmF2aWdhdGlvbiBvZmZzZXQsIHdoaWNoIG11c3QgYmUgYSBydW4tdGltZQpj b25zdGFudCBhbmQgcHJldmlvdXNseSBjb3VsZCBjcmFzaCB0aGUgcGxhbm5lci4KClJlY29nbml0 aW9uIGhhcHBlbnMgaW4gdHdvIHN0ZXBzIGluIFBhcnNlRnVuY09yQ29sdW1uOiBub3RlIHRoZSBt YXRjaGVkCm5hbWUgdXAgZnJvbnQsIHNraXAgdGhlIGNhdGFsb2cgbG9va3VwIGJ5IHRyZWF0aW5n IGl0IGFzIEZVTkNERVRBSUxfTk9STUFMLApsZXQgdGhlIGNvbW1vbiBkZWNvcmF0aW9uIGFuZCB3 cm9uZy1raW5kLW9mLXJvdXRpbmUgY2hlY2tzIHJ1biwgYW5kIG9ubHkKdGhlbiByb3V0ZSB0byBQ YXJzZVJQUk5hdkNhbGwgdG8gYnVpbGQgdGhlIFJQUk5hdkV4cHIuICBQYXJzZVJQUk5hdkNhbGwK dGhlcmVmb3JlIGRvZXMgbm90IGR1cGxpY2F0ZSB0aGUgYWdncmVnYXRlL3dpbmRvdyBkZWNvcmF0 aW9uIGNoZWNrcwooYWdnX3N0YXIsIERJU1RJTkNULCBXSVRISU4gR1JPVVAsIE9SREVSIEJZLCBG SUxURVIsIE9WRVIpOyB0aGUgY29tbW9uIHBhdGgKcGVyZm9ybXMgdGhlbSB3aXRoIGlkZW50aWNh bCBtZXNzYWdlcy4KCkRvY3VtZW50IHRoaXMgaW4gZnVuYy13aW5kb3cuc2dtbC4KLS0tCiBkb2Mv c3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICB8IDI5NiArKysrKysrKysrLS0tLS0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9ycHIuYyAgICAgICAgIHwgIDE1ICstCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgICAgICB8ICA1NSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93 aW5kb3dmdW5jcy5jICAgIHwgMTE4IC0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCAgICAgICAgfCAgMjQgLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAg ICAgIHwgIDMyIC0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCB8IDQ5 MiArKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3Fs ICAgICAgICAgICB8ICAxNSAtCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAg ICB8IDI1MSArKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxMDA3IGluc2VydGlvbnMo KyksIDI5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5j LXdpbmRvdy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbAppbmRleCBh YjQ2OWI1NmZkNy4uMTA3OWI2YWJiNmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtd2luZG93LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbApA QCAtMjgyLDYgKzI4MiwxMCBAQCBJR05PUkUgTlVMTFMKICAgIFJvdyBQYXR0ZXJuIFJlY29nbml0 aW9uIG5hdmlnYXRpb24gZnVuY3Rpb25zIGFyZSBsaXN0ZWQgaW4KICAgIDx4cmVmIGxpbmtlbmQ9 ImZ1bmN0aW9ucy1ycHItbmF2aWdhdGlvbi10YWJsZSIvPi4gIFRoZXNlIGZ1bmN0aW9ucwogICAg Y2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIERFRklORSBjbGF1c2Ugb2YgUm93IFBhdHRlcm4g UmVjb2duaXRpb24uCisgICBUaGUgbmFtZXMgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPiwgPGZ1 bmN0aW9uPk5FWFQ8L2Z1bmN0aW9uPiwKKyAgIDxmdW5jdGlvbj5GSVJTVDwvZnVuY3Rpb24+LCBh bmQgPGZ1bmN0aW9uPkxBU1Q8L2Z1bmN0aW9uPiBhcmUKKyAgIHJlY29nbml6ZWQgYXMgbmF2aWdh dGlvbiBmdW5jdGlvbnMgb25seSBpbiBhbiB1bnF1YWxpZmllZCBjYWxsOyBhCisgICBzY2hlbWEt cXVhbGlmaWVkIGNhbGwgaXMgcmVzb2x2ZWQgYXMgYW4gb3JkaW5hcnkgZnVuY3Rpb24gaW5zdGVh ZC4KICAgPC9wYXJhPgogCiAgICA8dGFibGUgaWQ9ImZ1bmN0aW9ucy1ycHItbmF2aWdhdGlvbi10 YWJsZSI+CkBAIC0zOTcsNiArNDAxLDggQEAgSUdOT1JFIE5VTExTCiAgICAgcGVybWl0dGVkLiBT YW1lLWNhdGVnb3J5IG5lc3RpbmcgKGUuZy4sCiAgICAgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9u PiBpbnNpZGUgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPikgaXMgYWxzbwogICAgIHByb2hpYml0 ZWQuCisgICAgVGhlIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IGFyZ3VtZW50IG11c3Qg YmUgYSBydW4tdGltZSBjb25zdGFudDoKKyAgICBpdCBjYW5ub3QgcmVmZXJlbmNlIGNvbHVtbnMg b3IgY29udGFpbiBhIG5hdmlnYXRpb24gb3BlcmF0aW9uLgogICAgPC9wYXJhPgogCiAgIDxub3Rl PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggMWY2YzhmYTRmYjIuLmYzYjM3YWE5OTJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgotI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApA QCAtNDksNiArNDgsOSBAQCBzdGF0aWMgdm9pZCB1bmlmeV9oeXBvdGhldGljYWxfYXJncyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlMaXN0ICpmYXJncywgaW50IG51bUFnZ3JlZ2F0ZWRB cmdzLAogCQkJCQkJCQkJT2lkICphY3R1YWxfYXJnX3R5cGVzLCBPaWQgKmRlY2xhcmVkX2FyZ190 eXBlcyk7CiBzdGF0aWMgT2lkCUZ1bmNOYW1lQXNUeXBlKExpc3QgKmZ1bmNuYW1lKTsKK3N0YXRp YyBOb2RlICpQYXJzZVJQUk5hdkNhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFt ZSwKKwkJCQkJCQkgTGlzdCAqZmFyZ3MsIExpc3QgKmFyZ25hbWVzLCBGdW5jQ2FsbCAqZm4sCisJ CQkJCQkJIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqUGFyc2VDb21wbGV4UHJvamVjdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAogCQkJCQkJCQkJTm9k ZSAqZmlyc3RfYXJnLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE9pZAlMb29rdXBGdW5jTmFtZUlu dGVybmFsKE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqZnVuY25hbWUsCkBAIC0xMjIsNiArMTI0 LDcgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFt ZSwgTGlzdCAqZmFyZ3MsCiAJaW50CQkJZmdjX2ZsYWdzOwogCWNoYXIJCWFnZ2tpbmQgPSAwOwog CVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsKKwlib29sCQljb3VsZF9iZV9ycHJfbmF2ID0g ZmFsc2U7CiAKIAkvKgogCSAqIElmIHRoZXJlJ3MgYW4gYWdncmVnYXRlIGZpbHRlciwgdHJhbnNm b3JtIGl0IHVzaW5nIHRyYW5zZm9ybVdoZXJlQ2xhdXNlCkBAIC0yMTgsNiArMjIxLDI4IEBAIFBh cnNlRnVuY09yQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3Qg KmZhcmdzLAogCQlBc3NlcnQoZmlyc3RfYXJnICE9IE5VTEwpOwogCX0KIAorCS8qCisJICogSW5z aWRlIGFuIFJQUiBERUZJTkUgY2xhdXNlLCBhbiB1bnF1YWxpZmllZCBjYWxsIHRvIG9uZSBvZiB0 aGUgcm93CisJICogcGF0dGVybiBuYXZpZ2F0aW9uIG5hbWVzIFBSRVYvTkVYVC9GSVJTVC9MQVNU IGRlbm90ZXMgdGhlIG5hdmlnYXRpb24KKwkgKiBvcGVyYXRpb24sIG5vdCBhbiBvcmRpbmFyeSBm dW5jdGlvbi4gIEp1c3Qgbm90ZSB0aGF0IGhlcmU7IHRoZSBjYXRhbG9nCisJICogbG9va3VwIGlz IHNraXBwZWQgYW5kIHRoZSBSUFJOYXZFeHByIGlzIGJ1aWx0IGF0IHRoZSBlbmQsIGFmdGVyIHRo ZQorCSAqIGNvbW1vbiBkZWNvcmF0aW9uIGNoZWNrcyBoYXZlIHJ1biAoc2VlIHRoZSBjb3VsZF9i ZV9ycHJfbmF2IGhhbmRsaW5nCisJICogYmVsb3cpLiAgQSBzY2hlbWEtcXVhbGlmaWVkIGNhbGwg aXMgdGhlIGV4cGxpY2l0IHdheSB0byByZWFjaCBhbgorCSAqIG9yZGluYXJ5IGZ1bmN0aW9uIG9m IG9uZSBvZiB0aGVzZSBuYW1lcy4KKwkgKi8KKwlpZiAoIWlzX2NvbHVtbiAmJiAhcHJvY19jYWxs ICYmCisJCXBzdGF0ZS0+cF9leHByX2tpbmQgPT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUgJiYKKwkJ bGlzdF9sZW5ndGgoZnVuY25hbWUpID09IDEpCisJeworCQljb25zdCBjaGFyICpuYW1lID0gc3Ry VmFsKGxpbml0aWFsKGZ1bmNuYW1lKSk7CisKKwkJaWYgKHN0cmNtcChuYW1lLCAicHJldiIpID09 IDAgfHwKKwkJCXN0cmNtcChuYW1lLCAibmV4dCIpID09IDAgfHwKKwkJCXN0cmNtcChuYW1lLCAi Zmlyc3QiKSA9PSAwIHx8CisJCQlzdHJjbXAobmFtZSwgImxhc3QiKSA9PSAwKQorCQkJY291bGRf YmVfcnByX25hdiA9IHRydWU7CisJfQorCiAJLyoKIAkgKiBEZWNpZGUgd2hldGhlciBpdCdzIGxl Z2l0aW1hdGUgdG8gY29uc2lkZXIgdGhlIGNvbnN0cnVjdCB0byBiZSBhIGNvbHVtbgogCSAqIHBy b2plY3Rpb24uICBGb3IgdGhhdCwgdGhlcmUgaGFzIHRvIGJlIGEgc2luZ2xlIGFyZ3VtZW50IG9m IGNvbXBsZXgKQEAgLTI2NiwxNyArMjkxLDMyIEBAIFBhcnNlRnVuY09yQ29sdW1uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCSAqIHdpdGggZGVmYXVs dCBhcmd1bWVudHMuCiAJICovCiAKLQlzZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2so JnBjYnN0YXRlLCBwc3RhdGUsIGxvY2F0aW9uKTsKKwlpZiAoIWNvdWxkX2JlX3Jwcl9uYXYpCisJ eworCQlzZXR1cF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlLCBwc3RhdGUs IGxvY2F0aW9uKTsKKworCQlmZHJlc3VsdCA9IGZ1bmNfZ2V0X2RldGFpbChmdW5jbmFtZSwgZmFy Z3MsIGFyZ25hbWVzLCBuYXJncywKKwkJCQkJCQkJICAgYWN0dWFsX2FyZ190eXBlcywKKwkJCQkJ CQkJICAgIWZ1bmNfdmFyaWFkaWMsIHRydWUsIHByb2NfY2FsbCwKKwkJCQkJCQkJICAgJmZnY19m bGFncywKKwkJCQkJCQkJICAgJmZ1bmNpZCwgJnJldHR5cGUsICZyZXRzZXQsCisJCQkJCQkJCSAg ICZudmFyZ3MsICZ2YXR5cGUsCisJCQkJCQkJCSAgICZkZWNsYXJlZF9hcmdfdHlwZXMsICZhcmdk ZWZhdWx0cyk7CiAKLQlmZHJlc3VsdCA9IGZ1bmNfZ2V0X2RldGFpbChmdW5jbmFtZSwgZmFyZ3Ms IGFyZ25hbWVzLCBuYXJncywKLQkJCQkJCQkgICBhY3R1YWxfYXJnX3R5cGVzLAotCQkJCQkJCSAg ICFmdW5jX3ZhcmlhZGljLCB0cnVlLCBwcm9jX2NhbGwsCi0JCQkJCQkJICAgJmZnY19mbGFncywK LQkJCQkJCQkgICAmZnVuY2lkLCAmcmV0dHlwZSwgJnJldHNldCwKLQkJCQkJCQkgICAmbnZhcmdz LCAmdmF0eXBlLAotCQkJCQkJCSAgICZkZWNsYXJlZF9hcmdfdHlwZXMsICZhcmdkZWZhdWx0cyk7 CisJCWNhbmNlbF9wYXJzZXJfZXJycG9zaXRpb25fY2FsbGJhY2soJnBjYnN0YXRlKTsKKwl9CisJ ZWxzZQorCXsKKwkJLyoKKwkJICogQSByZWNvZ25pemVkIG5hdmlnYXRpb24gbmFtZSBza2lwcyBj YXRhbG9nIGxvb2t1cCBlbnRpcmVseS4gIFRyZWF0CisJCSAqIGl0IGFzIGFuIG9yZGluYXJ5IGZ1 bmN0aW9uIHNvIHRoZSBjb21tb24gd3Jvbmcta2luZC1vZi1yb3V0aW5lIGFuZAorCQkgKiBkZWNv cmF0aW9uIGNoZWNrcyBiZWxvdyBydW4gd2l0aCB0aGUgZXhpc3RpbmcgbWVzc2FnZXMsIHRoZW4g cm91dGUKKwkJICogdG8gUGFyc2VSUFJOYXZDYWxsIHRvIGJ1aWxkIHRoZSBSUFJOYXZFeHByLgor CQkgKi8KKwkJQXNzZXJ0KCFwcm9jX2NhbGwpOwogCi0JY2FuY2VsX3BhcnNlcl9lcnJwb3NpdGlv bl9jYWxsYmFjaygmcGNic3RhdGUpOworCQlmZHJlc3VsdCA9IEZVTkNERVRBSUxfTk9STUFMOwor CX0KIAogCS8qCiAJICogQ2hlY2sgZm9yIHZhcmlvdXMgd3Jvbmcta2luZC1vZi1yb3V0aW5lIGNh c2VzLgpAQCAtNjUzLDYgKzY5MywxNSBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwogCX0KIAorCS8qCisJICogQSByZWNvZ25pemVkIG5h dmlnYXRpb24gbmFtZSBoYXMgbm93IHBhc3NlZCB0aGUgY29tbW9uIGRlY29yYXRpb24gYW5kCisJ ICogd3Jvbmcta2luZCBjaGVja3MgYWJvdmU7IGJ1aWxkIHRoZSBSUFJOYXZFeHByLiAgTm8gZmFs bGJhY2sgdG8gZnVuY3Rpb24KKwkgKiByZXNvbHV0aW9uIGV2ZXIgaGFwcGVucyBoZXJlLgorCSAq LworCWlmIChjb3VsZF9iZV9ycHJfbmF2KQorCQlyZXR1cm4gUGFyc2VSUFJOYXZDYWxsKHBzdGF0 ZSwgZnVuY25hbWUsIGZhcmdzLCBhcmduYW1lcywgZm4sCisJCQkJCQkJICAgbG9jYXRpb24pOwor CiAJLyoKIAkgKiBJZiB0aGVyZSBhcmUgZGVmYXVsdCBhcmd1bWVudHMsIHdlIGhhdmUgdG8gaW5j bHVkZSB0aGVpciB0eXBlcyBpbgogCSAqIGFjdHVhbF9hcmdfdHlwZXMgZm9yIHRoZSBwdXJwb3Nl IG9mIGNoZWNraW5nIGdlbmVyaWMgdHlwZSBjb25zaXN0ZW5jeS4KQEAgLTc1OSw4OCArODA4LDgg QEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwg TGlzdCAqZmFyZ3MsCiAJaWYgKHJldHNldCkKIAkJY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KHBz dGF0ZSwgbGFzdF9zcmYsIGxvY2F0aW9uKTsKIAotCS8qCi0JICogUlBSIG5hdmlnYXRpb24gZnVu Y3Rpb25zIChQUkVWL05FWFQvRklSU1QvTEFTVCkgYXJlIG9ubHkgbWVhbmluZ2Z1bAotCSAqIGlu c2lkZSBhIFdJTkRPVyBERUZJTkUgY2xhdXNlLgotCSAqCi0JICogT3V0c2lkZSBERUZJTkUsIHRo ZXNlIHBvbHltb3JwaGljIHBsYWNlaG9sZGVycyBjYW4gc2hhZG93IGNvbHVtbiBhY2Nlc3MKLQkg KiB2aWEgZnVuY3Rpb25hbCBub3RhdGlvbiAoZS5nLiwgbGFzdChmKSBtZWFuaW5nIGYubGFzdCku IEZvciB0aGUgMS1hcmcKLQkgKiBmb3JtLCB0cnkgY29sdW1uIHByb2plY3Rpb24gZmlyc3Q7IGlm IHRoYXQgc3VjY2VlZHMsIHVzZSBpdCBpbnN0ZWFkLgotCSAqIE90aGVyd2lzZSwgcmVwb3J0IGEg Y2xlYXIgcGFyc2VyIGVycm9yLgotCSAqLwotCWlmIChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05P Uk1BTCAmJgotCQlwc3RhdGUtPnBfZXhwcl9raW5kICE9IEVYUFJfS0lORF9SUFJfREVGSU5FICYm Ci0JCShmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllF TEVNRU5UIHx8Ci0JCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQg PT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCB8fAotCQkgZnVuY2lkID09IEZfRklSU1RfQU5ZRUxF TUVOVCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVMRU1FTlQgfHwKLQkJIGZ1bmNpZCA9PSBGX0ZJ UlNUX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVMRU1FTlRfSU5UOCkp Ci0JewotCQkvKiAxLWFyZyBmb3JtOiB0cnkgY29sdW1uIHByb2plY3Rpb24gYmVmb3JlIGVycm9y aW5nIG91dCAqLwotCQlpZiAobmFyZ3MgPT0gMSAmJiAhYWdnX3N0YXIgJiYgIWFnZ19kaXN0aW5j dCAmJiBvdmVyID09IE5VTEwgJiYKLQkJCWxpc3RfbGVuZ3RoKGZ1bmNuYW1lKSA9PSAxKQotCQl7 Ci0JCQlOb2RlCSAgICpwcm9qZWN0aW9uOwotCi0JCQlwcm9qZWN0aW9uID0gUGFyc2VDb21wbGV4 UHJvamVjdGlvbihwc3RhdGUsCi0JCQkJCQkJCQkJCQlzdHJWYWwobGluaXRpYWwoZnVuY25hbWUp KSwKLQkJCQkJCQkJCQkJCWxpbml0aWFsKGZhcmdzKSwKLQkJCQkJCQkJCQkJCWxvY2F0aW9uKTsK LQkJCWlmIChwcm9qZWN0aW9uKQotCQkJCXJldHVybiBwcm9qZWN0aW9uOwotCQl9Ci0KLQkJLyog Tm90IGEgY29sdW1uIHByb2plY3Rpb24gLS0gcmVwb3J0IGVycm9yICovCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJZXJybXNnKCJjYW5u b3QgdXNlICVzIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIiwKLQkJCQkJICAgTmFtZUxpc3RUb1N0 cmluZyhmdW5jbmFtZSkpLAotCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u KSk7Ci0JfQotCiAJLyogYnVpbGQgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBzdHJ1Y3R1cmUgKi8K LQlpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgJiYKLQkJcHN0YXRlLT5wX2V4cHJf a2luZCA9PSBFWFBSX0tJTkRfUlBSX0RFRklORSAmJgotCQkoZnVuY2lkID09IEZfUFJFVl9BTllF TEVNRU5UIHx8IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVCB8fAotCQkgZnVuY2lkID09IEZf UFJFVl9BTllFTEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgg fHwKLQkJIGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTEFTVF9B TllFTEVNRU5UIHx8Ci0JCSBmdW5jaWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UX0lOVDggfHwgZnVu Y2lkID09IEZfTEFTVF9BTllFTEVNRU5UX0lOVDgpKQotCXsKLQkJLyoKLQkJICogUlBSIG5hdmln YXRpb24gZnVuY3Rpb25zIChQUkVWL05FWFQvRklSU1QvTEFTVCkgYXJlIGNvbXBpbGVkIGludG8K LQkJICogRUVPUF9SUFJfTkFWX1NFVCAvIEVFT1BfUlBSX05BVl9SRVNUT1JFIG9wY29kZXMgaW5z dGVhZCBvZiBhIG5vcm1hbAotCQkgKiBmdW5jdGlvbiBjYWxsLiAgUmVwcmVzZW50IHRoZW0gYXMg UlBSTmF2RXhwciBub2RlcyBzbyB0aGF0IGxhdGVyCi0JCSAqIHN0YWdlcyBjYW4gaWRlbnRpZnkg dGhlbSB3aXRob3V0IHJlbHlpbmcgb24gZnVuY2lkIGNvbXBhcmlzb25zLgotCQkgKi8KLQkJUlBS TmF2S2luZAlraW5kOwotCQlib29sCQloYXNfb2Zmc2V0OwotCQlSUFJOYXZFeHByICpuYXZleHBy OwotCi0JCWlmIChmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfUFJF Vl9BTllFTEVNRU5UX0lOVDgpCi0JCQlraW5kID0gUlBSX05BVl9QUkVWOwotCQllbHNlIGlmIChm dW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5U X0lOVDgpCi0JCQlraW5kID0gUlBSX05BVl9ORVhUOwotCQllbHNlIGlmIChmdW5jaWQgPT0gRl9G SVJTVF9BTllFTEVNRU5UIHx8IGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCkKLQkJ CWtpbmQgPSBSUFJfTkFWX0ZJUlNUOwotCQllbHNlCi0JCQlraW5kID0gUlBSX05BVl9MQVNUOwot Ci0JCWhhc19vZmZzZXQgPSAoZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDggfHwKLQkJ CQkJICBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCB8fAotCQkJCQkgIGZ1bmNpZCA9 PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCB8fAotCQkJCQkgIGZ1bmNpZCA9PSBGX0xBU1RfQU5Z RUxFTUVOVF9JTlQ4KTsKLQotCQluYXZleHByID0gbWFrZU5vZGUoUlBSTmF2RXhwcik7Ci0KLQkJ bmF2ZXhwci0+a2luZCA9IGtpbmQ7Ci0JCW5hdmV4cHItPmFyZyA9IChFeHByICopIGxpbml0aWFs KGZhcmdzKTsKLQkJbmF2ZXhwci0+b2Zmc2V0X2FyZyA9IGhhc19vZmZzZXQgPyAoRXhwciAqKSBs c2Vjb25kKGZhcmdzKSA6IE5VTEw7Ci0JCW5hdmV4cHItPnJlc3VsdHR5cGUgPSByZXR0eXBlOwot CQkvKiByZXN1bHRjb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCi0JCW5h dmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247Ci0KLQkJcmV0dmFsID0gKE5vZGUgKikgbmF2ZXhw cjsKLQl9Ci0JZWxzZSBpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgfHwgZmRyZXN1 bHQgPT0gRlVOQ0RFVEFJTF9QUk9DRURVUkUpCisJaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxf Tk9STUFMIHx8IGZkcmVzdWx0ID09IEZVTkNERVRBSUxfUFJPQ0VEVVJFKQogCXsKIAkJRnVuY0V4 cHIgICAqZnVuY2V4cHIgPSBtYWtlTm9kZShGdW5jRXhwcik7CiAKQEAgLTIxMTEsNiArMjA4MCwx NTEgQEAgRnVuY05hbWVBc1R5cGUoTGlzdCAqZnVuY25hbWUpCiAJcmV0dXJuIHJlc3VsdDsKIH0K IAorLyoKKyAqIFBhcnNlUlBSTmF2Q2FsbAorICoJCVJlY29nbml6ZSBhIHJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb3BlcmF0aW9uIGluIGEgREVGSU5FIGNsYXVzZS4KKyAqCisgKiBJbnNpZGUgYW4g RVhQUl9LSU5EX1JQUl9ERUZJTkUgY2xhdXNlIGFuIHVucXVhbGlmaWVkIGNhbGwgdG8gb25lIG9m IHRoZQorICogbmFtZXMgUFJFVi9ORVhUL0ZJUlNUL0xBU1QgZGVub3RlcyB0aGUgY29ycmVzcG9u ZGluZyByb3cgcGF0dGVybiBuYXZpZ2F0aW9uCisgKiBvcGVyYXRpb24gKElTTy9JRUMgMTkwNzUt NSBTdWJjbGF1c2UgNS42KSwgbm90IGFuIG9yZGluYXJ5IGZ1bmN0aW9uIGNhbGwuCisgKiBUaGUg bmFtZSBpcyBtYXRjaGVkIGhlcmUsIGJlZm9yZSBhbnkgY2F0YWxvZyBsb29rdXAsIHdpdGggbm8g ZmFsbGJhY2sgdG8KKyAqIGZ1bmN0aW9uIHJlc29sdXRpb246IG9uY2UgaXQgbWF0Y2hlcywgZGVj b3JhdGlvbiBhbmQgYXJndW1lbnQtY291bnQKKyAqIHZpb2xhdGlvbnMgYXJlIGRlZGljYXRlZCBl cnJvcnMgcmF0aGVyIHRoYW4gbGV0dGluZyBhbiBvcmRpbmFyeSBmdW5jdGlvbiBvZgorICogdGhl IHNhbWUgbmFtZSB0YWtlIG92ZXIuICBBIHNjaGVtYS1xdWFsaWZpZWQgY2FsbCAodGhlIGNhbGxl ciByZXN0cmljdHMgdXMKKyAqIHRvIHVucXVhbGlmaWVkIG5hbWVzKSBpcyB0aGUgZG9jdW1lbnRl ZCB3YXkgdG8gcmVhY2ggc3VjaCBhIGZ1bmN0aW9uCisgKiBpbnN0ZWFkLgorICoKKyAqIFRoZSBj YWxsZXIgcm91dGVzIGhlcmUgb25seSBhZnRlciB0aGUgbmFtZSBoYXMgbWF0Y2hlZCBvbmUgb2Yg dGhlIGZvdXIKKyAqIG5hdmlnYXRpb24gbmFtZXMgYW5kIHRoZSBjb21tb24gZGVjb3JhdGlvbi93 cm9uZy1raW5kIGNoZWNrcyBpbgorICogUGFyc2VGdW5jT3JDb2x1bW4gaGF2ZSBydW4sIHNvIHRo aXMgYWx3YXlzIHJldHVybnMgYW4gUlBSTmF2RXhwci4KKyAqLworc3RhdGljIE5vZGUgKgorUGFy c2VSUFJOYXZDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZh cmdzLAorCQkJCUxpc3QgKmFyZ25hbWVzLCBGdW5jQ2FsbCAqZm4sIGludCBsb2NhdGlvbikKK3sK Kwljb25zdCBjaGFyICpuYW1lID0gc3RyVmFsKGxpbml0aWFsKGZ1bmNuYW1lKSk7CisJUlBSTmF2 S2luZAlraW5kOworCWNvbnN0IGNoYXIgKm5hdm5hbWU7CisJaW50CQkJbmFyZ3MgPSBsaXN0X2xl bmd0aChmYXJncyk7CisJTm9kZQkgICAqYXJnOworCVJQUk5hdkV4cHIgKm5hdmV4cHI7CisKKwkv KiBtYXRjaCB0aGUgcGFyc2VyLWRvd25jYXNlZCBpZGVudGlmaWVyOyBvdGhlcndpc2Ugbm90IGEg bmF2aWdhdGlvbiBuYW1lICovCisJaWYgKHN0cmNtcChuYW1lLCAicHJldiIpID09IDApCisJewor CQlraW5kID0gUlBSX05BVl9QUkVWOworCQluYXZuYW1lID0gIlBSRVYiOworCX0KKwllbHNlIGlm IChzdHJjbXAobmFtZSwgIm5leHQiKSA9PSAwKQorCXsKKwkJa2luZCA9IFJQUl9OQVZfTkVYVDsK KwkJbmF2bmFtZSA9ICJORVhUIjsKKwl9CisJZWxzZSBpZiAoc3RyY21wKG5hbWUsICJmaXJzdCIp ID09IDApCisJeworCQlraW5kID0gUlBSX05BVl9GSVJTVDsKKwkJbmF2bmFtZSA9ICJGSVJTVCI7 CisJfQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCAibGFzdCIpID09IDApCisJeworCQlraW5kID0g UlBSX05BVl9MQVNUOworCQluYXZuYW1lID0gIkxBU1QiOworCX0KKwllbHNlCisJeworCQkvKiB0 aGUgY2FsbGVyIG9ubHkgcm91dGVzIGhlcmUgYWZ0ZXIgbWF0Y2hpbmcgb25lIG9mIHRoZSBmb3Vy IG5hbWVzICovCisJCXBnX3VucmVhY2hhYmxlKCk7CisJCXJldHVybiBOVUxMOworCX0KKworCS8q CisJICogT25jZSB0aGUgbmFtZSBtYXRjaGVzIHdlIG5ldmVyIGZhbGwgYmFjayB0byBmdW5jdGlv biByZXNvbHV0aW9uLCBzbyBhbnkKKwkgKiBkZWNvcmF0aW9uIHRoYXQgZG9lcyBub3QgbWFrZSBz ZW5zZSBmb3IgYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBpcyBhCisJICogaGFyZCBlcnJvci4gIFRo ZSBhZ2dyZWdhdGUvd2luZG93IGRlY29yYXRpb25zIChhZ2dfc3RhciwgRElTVElOQ1QsCisJICog V0lUSElOIEdST1VQLCBPUkRFUiBCWSwgRklMVEVSLCBPVkVSLCBSRVNQRUNUL0lHTk9SRSBOVUxM UykgYXJlIGFscmVhZHkKKwkgKiByZWplY3RlZCBieSB0aGUgY29tbW9uIHBhdGggaW4gUGFyc2VG dW5jT3JDb2x1bW4sIHdoaWNoIHRyZWF0ZWQgdGhlCisJICogcmVjb2duaXplZCBuYW1lIGFzIGFu IG9yZGluYXJ5IGZ1bmN0aW9uOyB3aGF0IHJlbWFpbnMgYXJlIHRoZQorCSAqIGRlY29yYXRpb25z IHRoYXQgcGF0aCBhY2NlcHRzIGZvciBhIHBsYWluIGZ1bmN0aW9uIGJ1dCBhIG5hdmlnYXRpb24K KwkgKiBvcGVyYXRpb24gbXVzdCBzdGlsbCByZWplY3QuCisJICovCisJaWYgKGZuLT5mdW5jX3Zh cmlhZGljKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIFZBUklBRElDIHdpdGggcm93IHBhdHRlcm4g bmF2aWdhdGlvbiBmdW5jdGlvbiAlcyIsCisJCQkJCQluYXZuYW1lKSwKKwkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJaWYgKGFyZ25hbWVzICE9IE5JTCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJIGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb25zIGNhbm5v dCB1c2UgbmFtZWQgYXJndW1lbnRzIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IGxvY2F0aW9uKSkpOworCS8qIHRha2VzIGEgdmFsdWUgZXhwcmVzc2lvbiBhbmQgYW4gb3B0aW9u YWwgb2Zmc2V0ICovCisJaWYgKG5hcmdzID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coInRvbyBmZXcgYXJndW1l bnRzIGZvciByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIGZ1bmN0aW9uICVzIiwKKwkJCQkJCW5hdm5h bWUpLAorCQkJCSBlcnJkZXRhaWwoIiVzIHRha2VzIGEgdmFsdWUgZXhwcmVzc2lvbiBhbmQgYW4g b3B0aW9uYWwgb2Zmc2V0IGFyZ3VtZW50LiIsCisJCQkJCQkgICBuYXZuYW1lKSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJaWYgKG5hcmdzID4gMikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ IGVycm1zZygidG9vIG1hbnkgYXJndW1lbnRzIGZvciByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIGZ1 bmN0aW9uICVzIiwKKwkJCQkJCW5hdm5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIiVzIHRha2VzIGEg dmFsdWUgZXhwcmVzc2lvbiBhbmQgYW4gb3B0aW9uYWwgb2Zmc2V0IGFyZ3VtZW50LiIsCisJCQkJ CQkgICBuYXZuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24p KSk7CisKKwkvKgorCSAqIFJlc29sdmUgYSBzdGlsbC11bmtub3duIGZpcnN0IGFyZ3VtZW50IHRv IHRleHQsIHRoZSBzYW1lIHdheSB0aGUKKwkgKiBhbnljb21wYXRpYmxlIGZhbWlseSBkb2VzLiAg QSBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBpcyBub3QgYSBwb2x5bW9ycGhpYworCSAqIGZ1bmN0aW9u LCBzbyB0aGUgb2xkICJjb3VsZCBub3QgZGV0ZXJtaW5lIHBvbHltb3JwaGljIHR5cGUiIGVycm9y IGRvZXMKKwkgKiBub3QgYXBwbHk7IGFuIHVua25vd24gbGl0ZXJhbCBjYW5ub3QgY29udGFpbiBh IGNvbHVtbiByZWZlcmVuY2UsIHNvIHRoZQorCSAqIHdhbGtlciBzdGlsbCByZWplY3RzIGl0IGxh dGVyLgorCSAqLworCWFyZyA9IGxpbml0aWFsKGZhcmdzKTsKKwlpZiAoZXhwclR5cGUoYXJnKSA9 PSBVTktOT1dOT0lEKQorCQlhcmcgPSBjb2VyY2VfdG9fY29tbW9uX3R5cGUocHN0YXRlLCBhcmcs IFRFWFRPSUQsIG5hdm5hbWUpOworCisJbmF2ZXhwciA9IG1ha2VOb2RlKFJQUk5hdkV4cHIpOwor CW5hdmV4cHItPmtpbmQgPSBraW5kOworCW5hdmV4cHItPmFyZyA9IChFeHByICopIGFyZzsKKwor CS8qIGFuIGV4cGxpY2l0IG9mZnNldCBpcyBjb2VyY2VkIHRvIGludDgsIHdoaWNoIHRoZSBleGVj dXRvciByZWFkcyAqLworCWlmIChuYXJncyA9PSAyKQorCXsKKwkJTm9kZQkgICAqb2Zmc2V0ID0g bHNlY29uZChmYXJncyk7CisJCU9pZAkJCW9mZnR5cGUgPSBleHByVHlwZShvZmZzZXQpOworCisJ CWlmIChvZmZ0eXBlICE9IElOVDhPSUQpCisJCXsKKwkJCU5vZGUJICAgKm5ld29mZnNldDsKKwor CQkJbmV3b2Zmc2V0ID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgb2Zmc2V0LCBvZmZ0 eXBlLAorCQkJCQkJCQkJCQkgIElOVDhPSUQsIC0xLCBDT0VSQ0lPTl9JTVBMSUNJVCwKKwkJCQkJ CQkJCQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FTVCwgLTEpOworCQkJaWYgKG5ld29mZnNldCA9PSBO VUxMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkJCSBlcnJtc2coIm9mZnNldCBhcmd1bWVudCBvZiAlcyBtdXN0IGJl IHR5cGUgJXMsIG5vdCB0eXBlICVzIiwKKwkJCQkJCQkJbmF2bmFtZSwgImJpZ2ludCIsIGZvcm1h dF90eXBlX2JlKG9mZnR5cGUpKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBl eHByTG9jYXRpb24ob2Zmc2V0KSkpKTsKKwkJCW9mZnNldCA9IG5ld29mZnNldDsKKwkJfQorCQlu YXZleHByLT5vZmZzZXRfYXJnID0gKEV4cHIgKikgb2Zmc2V0OworCX0KKwllbHNlCisJCW5hdmV4 cHItPm9mZnNldF9hcmcgPSBOVUxMOworCisJLyogY29tcG91bmRfb2Zmc2V0X2FyZyBzdGF5cyBO VUxMOyBkZWZpbmVfd2Fsa2VyIGZsYXR0ZW5pbmcgZmlsbHMgaXQgaW4gKi8KKwluYXZleHByLT5y ZXN1bHR0eXBlID0gZXhwclR5cGUoYXJnKTsKKwkvKiByZXN1bHRjb2xsaWQgd2lsbCBiZSBzZXQg YnkgcGFyc2VfY29sbGF0ZS5jICovCisJbmF2ZXhwci0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwor CXJldHVybiAoTm9kZSAqKSBuYXZleHByOworfQorCiAvKgogICogUGFyc2VDb21wbGV4UHJvamVj dGlvbiAtCiAgKgkgIGhhbmRsZXMgZnVuY3Rpb24gY2FsbHMgd2l0aCBhIHNpbmdsZSBhcmd1bWVu dCB0aGF0IGlzIG9mIGNvbXBsZXggdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCAzZWFl YTJiZTc1MC4uOGVkMDFiYjhmMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTQ3Miw2ICs0 NzIsNyBAQCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dD bGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKICAqICAgICAqIFBSRVYvTkVYVCB3cmFwcGlu ZyBGSVJTVC9MQVNUIGZsYXR0ZW5zIHRvIGEgY29tcG91bmQga2luZAogICogICAgICogT3RoZXIg bmVzdGluZ3MgYXJlIHJlamVjdGVkIChGSVJTVChQUkVWKCkpLCBQUkVWKFBSRVYoKSksIC4uLikK ICAqICAgICAqIG9mZnNldF9hcmcgLyBjb21wb3VuZF9vZmZzZXRfYXJnIG11c3Qgbm90IGNvbnRh aW4gY29sdW1uIHJlZnMKKyAqICAgICAgIG9yIG5lc3RlZCBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMK ICAqCiAgKiBWb2xhdGlsZSBjYWxsZWVzIChhbmQgc2VxdWVuY2Ugb3BlcmF0aW9ucykgYXJlIHJl amVjdGVkIGxhdGVyIGluIHRoZQogICogcGxhbm5lciB2aWEgdmFsaWRhdGVfcnByX2RlZmluZV92 b2xhdGlsaXR5KCk7IHNlZSBvcHRpbWl6ZXIvcGxhbi9ycHIuYy4KQEAgLTQ4Miw3ICs0ODMsNyBA QCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2Ug KndjLCBXaW5kb3dEZWYgKndpbmRlZiwKICAqIHdhbGtzIG5hdi5hcmcgaW4gUEhBU0VfTkFWX0FS RyB0byBjb2xsZWN0IG5lc3RpbmcvY29sdW1uLXJlZiBzdGF0ZSwKICAqIGFwcGxpZXMgY29tcG91 bmQgZmxhdHRlbiBvciByYWlzZXMgYSBuZXN0aW5nIGVycm9yLCB0aGVuIHdhbGtzIHRoZQogICog KHBvc3QtZmxhdHRlbikgb2Zmc2V0KHMpIGluIFBIQVNFX05BVl9PRkZTRVQgdG8gZW5mb3JjZSB0 aGUKLSAqIGNvbnN0YW50LW9mZnNldCBydWxlLiAgTm8gc3VidHJlZSBpcyB3YWxrZWQgdHdpY2Uu CisgKiBjb25zdGFudC1vZmZzZXQgYW5kIG5vLW5lc3RlZC1uYXYgcnVsZXMuICBObyBzdWJ0cmVl IGlzIHdhbGtlZCB0d2ljZS4KICAqLwogCiAvKgpAQCAtNDk4LDYgKzQ5OSw3IEBAIHRyYW5zZm9y bURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRv d0RlZiAqd2luZGVmLAogICoJCQkJUFJFVihQUkVWKCkpLCBGSVJTVChGSVJTVCgpKSwgdGhyZWUt b3ItbW9yZSBkZWVwKQogICoJCSAgWzJdIGZvciBlYWNoIG5hdiBvZmZzZXQgKFBIQVNFX05BVl9P RkZTRVQpOgogICoJCQkgIC0gbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IChubyBjb2x1bW4g cmVmZXJlbmNlcykKKyAqCQkJICAtIG11c3Qgbm90IGNvbnRhaW4gYSByb3cgcGF0dGVybiBuYXZp Z2F0aW9uIG9wZXJhdGlvbgogICoKICAqIFZhciBzaWdodGluZ3MgZmVlZCB0aGUgY29sdW1uLXJl ZiBydWxlIGZvciB0aGUgZW5jbG9zaW5nIG5hdiBzY29wZTsKICAqIFJQUk5hdkV4cHIgc2lnaHRp bmdzIGluc2lkZSBQSEFTRV9OQVZfQVJHIGZlZWQgdGhlIG5lc3RpbmcgZGVjaXNpb24uCkBAIC01 MzgsMTEgKzU0MCwxNCBAQCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQp CiAJCWlmIChjdHgtPnBoYXNlID09IERFRklORV9QSEFTRV9OQVZfT0ZGU0VUKQogCQl7CiAJCQkv KgotCQkJICogTmF2cyBpbnNpZGUgb2Zmc2V0X2FyZyBhcmUgdW51c3VhbCBidXQgbm90IGRpcmVj dGx5IGJhbm5lZDsgdGhlCi0JCQkgKiBjb25zdGFudC1vZmZzZXQgcnVsZSB3aWxsIGNhdGNoIGFu eSBWYXIgb3Igdm9sYXRpbGUgdGhleQotCQkJICogY29udGFpbi4KKwkJCSAqIEEgbmF2aWdhdGlv biBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50LCBzbyBpdCBjYW5ub3QKKwkJCSAq IGNvbnRhaW4gYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbi4KIAkJCSAqLwotCQkJcmV0dXJuIGV4cHJl c3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2co InJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IGNhbm5vdCBjb250YWluIGEgcm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvcGVyYXRpb24iKSwKKwkJCQkJZXJyZGV0YWlsKCJBIG5hdmlnYXRpb24g b2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudC4iKSwKKwkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CiAJCX0KIAogCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDRlYjdlMzViZWU0Li4yYjdmZDczNjdmMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTI3LDYgKzEyNyw3IEBAIHR5cGVkZWYgc3RydWN0 CiAJYm9vbAkJdmFycHJlZml4OwkJLyogdHJ1ZSB0byBwcmludCBwcmVmaXhlcyBvbiBWYXJzICov CiAJYm9vbAkJY29sTmFtZXNWaXNpYmxlOwkvKiBkbyB3ZSBjYXJlIGFib3V0IG91dHB1dCBjb2x1 bW4gbmFtZXM/ICovCiAJYm9vbAkJaW5Hcm91cEJ5OwkJLyogZGVwYXJzaW5nIEdST1VQIEJZIGNs YXVzZT8gKi8KKwlib29sCQlpblJQUkRlZmluZTsJLyogZGVwYXJzaW5nIGFuIFJQUiBERUZJTkUg Y2xhdXNlPyAqLwogCWJvb2wJCXZhckluT3JkZXJCeTsJLyogZGVwYXJzaW5nIHNpbXBsZSBWYXIg aW4gT1JERVIgQlk/ICovCiAJQml0bWFwc2V0ICAqYXBwZW5kcGFyZW50czsJLyogaWYgbm90IG51 bGwsIG1hcCBjaGlsZCBWYXJzIG9mIHRoZXNlIHJlbGlkcwogCQkJCQkJCQkgKiBiYWNrIHRvIHRo ZSBwYXJlbnQgcmVsICovCkBAIC01NDUsNyArNTQ2LDcgQEAgc3RhdGljIGNoYXIgKmdlbmVyYXRl X3F1YWxpZmllZF9yZWxhdGlvbl9uYW1lKE9pZCByZWxpZCk7CiBzdGF0aWMgY2hhciAqZ2VuZXJh dGVfZnVuY3Rpb25fbmFtZShPaWQgZnVuY2lkLCBpbnQgbmFyZ3MsCiAJCQkJCQkJCQlMaXN0ICph cmduYW1lcywgT2lkICphcmd0eXBlcywKIAkJCQkJCQkJCWJvb2wgaGFzX3ZhcmlhZGljLCBib29s ICp1c2VfdmFyaWFkaWNfcCwKLQkJCQkJCQkJCWJvb2wgaW5Hcm91cEJ5KTsKKwkJCQkJCQkJCWJv b2wgaW5Hcm91cEJ5LCBib29sIGluUlBSRGVmaW5lKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9v cGVyYXRvcl9uYW1lKE9pZCBvcGVyaWQsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiBzdGF0aWMgdm9p ZCBhZGRfY2FzdF90byhTdHJpbmdJbmZvIGJ1ZiwgT2lkIHR5cGlkKTsKIHN0YXRpYyBjaGFyICpn ZW5lcmF0ZV9xdWFsaWZpZWRfdHlwZV9uYW1lKE9pZCB0eXBpZCk7CkBAIC0xMTMxLDYgKzExMzIs NyBAQCBwZ19nZXRfdHJpZ2dlcmRlZl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpCiAJ CWNvbnRleHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1REOwogCQljb250ZXh0LmNvbE5h bWVzVmlzaWJsZSA9IHRydWU7CiAJCWNvbnRleHQuaW5Hcm91cEJ5ID0gZmFsc2U7CisJCWNvbnRl eHQuaW5SUFJEZWZpbmUgPSBmYWxzZTsKIAkJY29udGV4dC52YXJJbk9yZGVyQnkgPSBmYWxzZTsK IAkJY29udGV4dC5hcHBlbmRwYXJlbnRzID0gTlVMTDsKIApAQCAtMTE0Miw3ICsxMTQ0LDcgQEAg cGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KQogCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIkVYRUNVVEUgRlVOQ1RJT04gJXMoIiwKIAkJCQkJIGdlbmVyYXRl X2Z1bmN0aW9uX25hbWUodHJpZ3JlYy0+dGdmb2lkLCAwLAogCQkJCQkJCQkJCQlOSUwsIE5VTEws Ci0JCQkJCQkJCQkJCWZhbHNlLCBOVUxMLCBmYWxzZSkpOworCQkJCQkJCQkJCQlmYWxzZSwgTlVM TCwgZmFsc2UsIGZhbHNlKSk7CiAKIAlpZiAodHJpZ3JlYy0+dGduYXJncyA+IDApCiAJewpAQCAt MzQwMSw3ICszNDAzLDcgQEAgcGdfZ2V0X2Z1bmN0aW9uZGVmKFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIiBTVVBQT1JUICVzIiwKIAkJCQkJCSBnZW5lcmF0ZV9m dW5jdGlvbl9uYW1lKHByb2MtPnByb3N1cHBvcnQsIDEsCiAJCQkJCQkJCQkJCQlOSUwsIGFyZ3R5 cGVzLAotCQkJCQkJCQkJCQkJZmFsc2UsIE5VTEwsIGZhbHNlKSk7CisJCQkJCQkJCQkJCQlmYWxz ZSwgTlVMTCwgZmFsc2UsIGZhbHNlKSk7CiAJfQogCiAJaWYgKG9sZGxlbiAhPSBidWYubGVuKQpA QCAtNDA1NCw2ICs0MDU2LDcgQEAgZGVwYXJzZV9leHByZXNzaW9uX3ByZXR0eShOb2RlICpleHBy LCBMaXN0ICpkcGNvbnRleHQsCiAJY29udGV4dC5pbmRlbnRMZXZlbCA9IHN0YXJ0SW5kZW50Owog CWNvbnRleHQuY29sTmFtZXNWaXNpYmxlID0gdHJ1ZTsKIAljb250ZXh0LmluR3JvdXBCeSA9IGZh bHNlOworCWNvbnRleHQuaW5SUFJEZWZpbmUgPSBmYWxzZTsKIAljb250ZXh0LnZhckluT3JkZXJC eSA9IGZhbHNlOwogCWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5VTEw7CiAKQEAgLTU4NDksNiAr NTg1Miw3IEBAIG1ha2VfcnVsZWRlZihTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHJ1bGV0dXAs IFR1cGxlRGVzYyBydWxldHRjLAogCQljb250ZXh0LmluZGVudExldmVsID0gUFJFVFRZSU5ERU5U X1NURDsKIAkJY29udGV4dC5jb2xOYW1lc1Zpc2libGUgPSB0cnVlOwogCQljb250ZXh0LmluR3Jv dXBCeSA9IGZhbHNlOworCQljb250ZXh0LmluUlBSRGVmaW5lID0gZmFsc2U7CiAJCWNvbnRleHQu dmFySW5PcmRlckJ5ID0gZmFsc2U7CiAJCWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5VTEw7CiAK QEAgLTYwNDEsNiArNjA0NSw3IEBAIGdldF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBTdHJpbmdJ bmZvIGJ1ZiwgTGlzdCAqcGFyZW50bmFtZXNwYWNlLAogCWNvbnRleHQuaW5kZW50TGV2ZWwgPSBz dGFydEluZGVudDsKIAljb250ZXh0LmNvbE5hbWVzVmlzaWJsZSA9IGNvbE5hbWVzVmlzaWJsZTsK IAljb250ZXh0LmluR3JvdXBCeSA9IGZhbHNlOworCWNvbnRleHQuaW5SUFJEZWZpbmUgPSBmYWxz ZTsKIAljb250ZXh0LnZhckluT3JkZXJCeSA9IGZhbHNlOwogCWNvbnRleHQuYXBwZW5kcGFyZW50 cyA9IE5VTEw7CiAKQEAgLTcyMjAsMTUgKzcyMjUsMjUgQEAgZ2V0X3J1bGVfZGVmaW5lKExpc3Qg KmRlZmluZUNsYXVzZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQogewogCVN0cmluZ0luZm8J YnVmID0gY29udGV4dC0+YnVmOwogCWNvbnN0IGNoYXIgKnNlcDsKKwlib29sCQlzYXZlX2lucnBy ZGVmaW5lID0gY29udGV4dC0+aW5SUFJEZWZpbmU7CiAKIAlzZXAgPSAiICAiOwogCisJLyoKKwkg KiBXaXRoaW4gdGhlIERFRklORSBjbGF1c2UgYW4gdW5xdWFsaWZpZWQgcHJldi9uZXh0L2ZpcnN0 L2xhc3QgaXMgYQorCSAqIG5hdmlnYXRpb24gb3BlcmF0aW9uLCBzbyBhIHVzZXIgZnVuY3Rpb24g b2Ygb25lIG9mIHRob3NlIG5hbWVzIG11c3QgYmUKKwkgKiBzY2hlbWEtcXVhbGlmaWVkIHRvIHN1 cnZpdmUgYSByZXBhcnNlOyBzZWUgZ2VuZXJhdGVfZnVuY3Rpb25fbmFtZSgpLgorCSAqLworCWNv bnRleHQtPmluUlBSRGVmaW5lID0gdHJ1ZTsKKwogCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwg dGUsIGRlZmluZUNsYXVzZSkKIAl7CiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlcyBBUyAi LCBzZXAsIHF1b3RlX2lkZW50aWZpZXIodGUtPnJlc25hbWUpKTsKIAkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSB0ZS0+ZXhwciwgY29udGV4dCwgZmFsc2UpOwogCQlzZXAgPSAiLFxuICAiOwogCX0K KworCWNvbnRleHQtPmluUlBSRGVmaW5lID0gc2F2ZV9pbnJwcmRlZmluZTsKIH0KIAogLyoKQEAg LTc0NTksNiArNzQ3NCw3IEBAIGdldF93aW5kb3dfZnJhbWVfb3B0aW9uc19mb3JfZXhwbGFpbihp bnQgZnJhbWVPcHRpb25zLAogCWNvbnRleHQuaW5kZW50TGV2ZWwgPSAwOwogCWNvbnRleHQuY29s TmFtZXNWaXNpYmxlID0gdHJ1ZTsKIAljb250ZXh0LmluR3JvdXBCeSA9IGZhbHNlOworCWNvbnRl eHQuaW5SUFJEZWZpbmUgPSBmYWxzZTsKIAljb250ZXh0LnZhckluT3JkZXJCeSA9IGZhbHNlOwog CWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5VTEw7CiAKQEAgLTExNjkxLDcgKzExNzA3LDggQEAg Z2V0X2Z1bmNfZXhwcihGdW5jRXhwciAqZXhwciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkJCQlhcmduYW1lcywgYXJndHlwZXMsCiAJCQkJCQkJCQkJCWV4cHItPmZ1bmN2YXJp YWRpYywKIAkJCQkJCQkJCQkJJnVzZV92YXJpYWRpYywKLQkJCQkJCQkJCQkJY29udGV4dC0+aW5H cm91cEJ5KSk7CisJCQkJCQkJCQkJCWNvbnRleHQtPmluR3JvdXBCeSwKKwkJCQkJCQkJCQkJY29u dGV4dC0+aW5SUFJEZWZpbmUpKTsKIAluYXJncyA9IDA7CiAJZm9yZWFjaChsLCBleHByLT5hcmdz KQogCXsKQEAgLTExNzYxLDcgKzExNzc4LDggQEAgZ2V0X2FnZ19leHByX2hlbHBlcihBZ2dyZWYg KmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQlmdW5jbmFtZSA9IGdlbmVyYXRl X2Z1bmN0aW9uX25hbWUoYWdncmVmLT5hZ2dmbm9pZCwgbmFyZ3MsIE5JTCwKIAkJCQkJCQkJCQkg IGFyZ3R5cGVzLCBhZ2dyZWYtPmFnZ3ZhcmlhZGljLAogCQkJCQkJCQkJCSAgJnVzZV92YXJpYWRp YywKLQkJCQkJCQkJCQkgIGNvbnRleHQtPmluR3JvdXBCeSk7CisJCQkJCQkJCQkJICBjb250ZXh0 LT5pbkdyb3VwQnksCisJCQkJCQkJCQkJICBjb250ZXh0LT5pblJQUkRlZmluZSk7CiAKIAkvKiBQ cmludCB0aGUgYWdncmVnYXRlIG5hbWUsIHNjaGVtYS1xdWFsaWZpZWQgaWYgbmVlZGVkICovCiAJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyglcyIsIGZ1bmNuYW1lLApAQCAtMTE5MDIsNyArMTE5 MjAsOCBAQCBnZXRfd2luZG93ZnVuY19leHByX2hlbHBlcihXaW5kb3dGdW5jICp3ZnVuYywgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LAogCWlmICghZnVuY25hbWUpCiAJCWZ1bmNuYW1lID0gZ2Vu ZXJhdGVfZnVuY3Rpb25fbmFtZSh3ZnVuYy0+d2luZm5vaWQsIG5hcmdzLCBhcmduYW1lcywKIAkJ CQkJCQkJCQkgIGFyZ3R5cGVzLCBmYWxzZSwgTlVMTCwKLQkJCQkJCQkJCQkgIGNvbnRleHQtPmlu R3JvdXBCeSk7CisJCQkJCQkJCQkJICBjb250ZXh0LT5pbkdyb3VwQnksCisJCQkJCQkJCQkJICBj b250ZXh0LT5pblJQUkRlZmluZSk7CiAKIAlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzKCIsIGZ1 bmNuYW1lKTsKIApAQCAtMTM3NDMsNyArMTM3NjIsNyBAQCBnZXRfdGFibGVzYW1wbGVfZGVmKFRh YmxlU2FtcGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQog CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiIFRBQkxFU0FNUExFICVzICgiLAogCQkJCQkgZ2VuZXJh dGVfZnVuY3Rpb25fbmFtZSh0YWJsZXNhbXBsZS0+dHNtaGFuZGxlciwgMSwKIAkJCQkJCQkJCQkJ TklMLCBhcmd0eXBlcywKLQkJCQkJCQkJCQkJZmFsc2UsIE5VTEwsIGZhbHNlKSk7CisJCQkJCQkJ CQkJCWZhbHNlLCBOVUxMLCBmYWxzZSwgZmFsc2UpKTsKIAogCW5hcmdzID0gMDsKIAlmb3JlYWNo KGwsIHRhYmxlc2FtcGxlLT5hcmdzKQpAQCAtMTQxNTcsMTIgKzE0MTc2LDE0IEBAIGdlbmVyYXRl X3F1YWxpZmllZF9yZWxhdGlvbl9uYW1lKE9pZCByZWxpZCkKICAqCiAgKiBpbkdyb3VwQnkgbXVz dCBiZSB0cnVlIGlmIHdlJ3JlIGRlcGFyc2luZyBhIEdST1VQIEJZIGNsYXVzZS4KICAqCisgKiBp blJQUkRlZmluZSBtdXN0IGJlIHRydWUgaWYgd2UncmUgZGVwYXJzaW5nIGFuIFJQUiBERUZJTkUg Y2xhdXNlLgorICoKICAqIFRoZSByZXN1bHQgaW5jbHVkZXMgYWxsIG5lY2Vzc2FyeSBxdW90aW5n IGFuZCBzY2hlbWEtcHJlZml4aW5nLgogICovCiBzdGF0aWMgY2hhciAqCiBnZW5lcmF0ZV9mdW5j dGlvbl9uYW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsIE9pZCAqYXJn dHlwZXMsCiAJCQkJCSAgIGJvb2wgaGFzX3ZhcmlhZGljLCBib29sICp1c2VfdmFyaWFkaWNfcCwK LQkJCQkJICAgYm9vbCBpbkdyb3VwQnkpCisJCQkJCSAgIGJvb2wgaW5Hcm91cEJ5LCBib29sIGlu UlBSRGVmaW5lKQogewogCWNoYXIJICAgKnJlc3VsdDsKIAlIZWFwVHVwbGUJcHJvY3R1cDsKQEAg LTE0MTk2LDYgKzE0MjE3LDI0IEBAIGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1bmNpZCwg aW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywgT2lkICphcmd0eXBlcywKIAkJCWZvcmNlX3F1YWxp ZnkgPSB0cnVlOwogCX0KIAorCS8qCisJICogSW5zaWRlIGEgcm93IHBhdHRlcm4gREVGSU5FIGNs YXVzZSwgdGhlIHBhcnNlciBiaW5kcyBhbiB1bnF1YWxpZmllZAorCSAqIHByZXYvbmV4dC9maXJz dC9sYXN0IHRvIGEgbmF2aWdhdGlvbiBvcGVyYXRpb24gYmVmb3JlIGFueSBjYXRhbG9nCisJICog bG9va3VwLCBzbyBhbiB1bnF1YWxpZmllZCBjYWxsIHRvIGEgdXNlciBmdW5jdGlvbiBvZiBvbmUg b2YgdGhvc2UgbmFtZXMKKwkgKiB3b3VsZCBjaGFuZ2UgbWVhbmluZyBhY3Jvc3MgYSBkZXBhcnNl L3JlcGFyc2UgY3ljbGUuICBGb3JjZSBzY2hlbWEKKwkgKiBxdWFsaWZpY2F0aW9uOyB0aGUgcXVh bGlmaWVkIGZvcm0gaXMgdGhlIGRvY3VtZW50ZWQgZXNjYXBlIGhhdGNoLiAgT25seQorCSAqIHRo ZSBleGFjdCBsb3dlci1jYXNlIG5hbWVzIGFyZSBhdCByaXNrOiBhIG1peGVkLWNhc2UgcHJvbmFt ZSBkZXBhcnNlcworCSAqIHF1b3RlZCBhbmQgY2Fubm90IG1hdGNoIHRoZSBwYXJzZXIncyBkb3du Y2FzZWQgY29tcGFyaXNvbi4KKwkgKi8KKwlpZiAoaW5SUFJEZWZpbmUpCisJeworCQlpZiAoc3Ry Y21wKHByb25hbWUsICJwcmV2IikgPT0gMCB8fAorCQkJc3RyY21wKHByb25hbWUsICJuZXh0Iikg PT0gMCB8fAorCQkJc3RyY21wKHByb25hbWUsICJmaXJzdCIpID09IDAgfHwKKwkJCXN0cmNtcChw cm9uYW1lLCAibGFzdCIpID09IDApCisJCQlmb3JjZV9xdWFsaWZ5ID0gdHJ1ZTsKKwl9CisKIAkv KgogCSAqIERldGVybWluZSB3aGV0aGVyIFZBUklBRElDIHNob3VsZCBiZSBwcmludGVkLiAgV2Ug bXVzdCBkbyB0aGlzIGZpcnN0CiAJICogc2luY2UgaXQgYWZmZWN0cyB0aGUgbG9va3VwIHJ1bGVz IGluIGZ1bmNfZ2V0X2RldGFpbCgpLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3dpbmRvd2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYwppbmRl eCBkMTVhYTBjNzVkYi4uNzhiN2YwNWFiYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC93aW5kb3dmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5j cy5jCkBAIC03MjQsMTIxICs3MjQsMyBAQCB3aW5kb3dfbnRoX3ZhbHVlKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKIH0KLQotLyoKLSAqIHByZXYKLSAqIENh dGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIFBSRVYgbmF2aWdhdGlvbiBvcGVyYXRvci4KLSAq Ci0gKiBUaGUgcGFyc2VyIHRyYW5zZm9ybXMgcHJldigpIGNhbGxzIGluc2lkZSBERUZJTkUgaW50 byBSUFJOYXZFeHByIG5vZGVzLAotICogc28gdGhpcyBmdW5jdGlvbiBpcyBuZXZlciByZWFjaGVk IGR1cmluZyBub3JtYWwgUlBSIGV4ZWN1dGlvbi4gIEl0IGV4aXN0cwotICogb25seSBzbyB0aGF0 IHRoZSBwYXJzZXIgY2FuIHJlc29sdmUgdGhlIGZ1bmN0aW9uIG5hbWUgZnJvbSBwZ19wcm9jLgot ICogQ2FsbHMgb3V0c2lkZSBERUZJTkUgYXJlIHJlamVjdGVkIGJ5IHBhcnNlX2Z1bmMuYyAoRVhQ Ul9LSU5EX1JQUl9ERUZJTkUKLSAqIGNoZWNrKS4gIFRoZSBlcnJvciBiZWxvdyBpcyBhIGRlZmVu c2l2ZSBtZWFzdXJlIGluIGNhc2UgdGhhdCBjaGVjayBpcwotICogYnlwYXNzZWQgKGUuZy4sIGRp cmVjdCBDLWxldmVsIGZ1bmN0aW9uIGludm9jYXRpb24pLgotICovCi1EYXR1bQotd2luZG93X3By ZXYoUEdfRlVOQ1RJT05fQVJHUykKLXsKLQllcmVwb3J0KEVSUk9SLAotCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQllcnJtc2coImNhbm5vdCB1c2UgUFJFVigp IG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikpOwotCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90 IHJlYWNoZWQgKi8KLX0KLQotLyoKLSAqIG5leHQKLSAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9y IFJQUidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRvci4KLSAqIFNlZSB3aW5kb3dfcHJldigpIGZv ciBkZXRhaWxzLgotICovCi1EYXR1bQotd2luZG93X25leHQoUEdfRlVOQ1RJT05fQVJHUykKLXsK LQllcmVwb3J0KEVSUk9SLAotCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQllcnJtc2coImNhbm5vdCB1c2UgTkVYVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNl IikpOwotCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KLX0KLQotLyoKLSAq IHByZXYodmFsdWUsIG9mZnNldCkKLSAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIFBS RVYgbmF2aWdhdGlvbiBvcGVyYXRvciB3aXRoIG9mZnNldC4KLSAqIFNlZSB3aW5kb3dfcHJldigp IGZvciBkZXRhaWxzLgotICovCi1EYXR1bQotd2luZG93X3ByZXZfb2Zmc2V0KFBHX0ZVTkNUSU9O X0FSR1MpCi17Ci0JZXJlcG9ydChFUlJPUiwKLQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAotCQkJZXJybXNnKCJjYW5ub3QgdXNlIFBSRVYoKSBvdXRzaWRlIGEgREVG SU5FIGNsYXVzZSIpKTsKLQlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCi19 Ci0KLS8qCi0gKiBuZXh0KHZhbHVlLCBvZmZzZXQpCi0gKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZv ciBSUFIncyBORVhUIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0aCBvZmZzZXQuCi0gKiBTZWUgd2lu ZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KLSAqLwotRGF0dW0KLXdpbmRvd19uZXh0X29mZnNldChQ R19GVU5DVElPTl9BUkdTKQotewotCWVyZXBvcnQoRVJST1IsCi0JCQllcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCWVycm1zZygiY2Fubm90IHVzZSBORVhUKCkgb3V0 c2lkZSBhIERFRklORSBjbGF1c2UiKSk7Ci0JUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVh Y2hlZCAqLwotfQotCi0vKgotICogZmlyc3QKLSAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQ UidzIEZJUlNUIG5hdmlnYXRpb24gb3BlcmF0b3IuCi0gKiBTZWUgd2luZG93X3ByZXYoKSBmb3Ig ZGV0YWlscy4KLSAqLwotRGF0dW0KLXdpbmRvd19maXJzdChQR19GVU5DVElPTl9BUkdTKQotewot CWVyZXBvcnQoRVJST1IsCi0JCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKLQkJCWVycm1zZygiY2Fubm90IHVzZSBGSVJTVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNl IikpOwotCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KLX0KLQotLyoKLSAq IGxhc3QKLSAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIExBU1QgbmF2aWdhdGlvbiBv cGVyYXRvci4KLSAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgotICovCi1EYXR1bQot d2luZG93X2xhc3QoUEdfRlVOQ1RJT05fQVJHUykKLXsKLQllcmVwb3J0KEVSUk9SLAotCQkJZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQllcnJtc2coImNhbm5vdCB1 c2UgTEFTVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikpOwotCVBHX1JFVFVSTl9OVUxMKCk7 CQkJLyogbm90IHJlYWNoZWQgKi8KLX0KLQotLyoKLSAqIGZpcnN0KHZhbHVlLCBvZmZzZXQpCi0g KiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBGSVJTVCBuYXZpZ2F0aW9uIG9wZXJhdG9y IHdpdGggb2Zmc2V0LgotICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCi0gKi8KLURh dHVtCi13aW5kb3dfZmlyc3Rfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCi17Ci0JZXJlcG9ydChF UlJPUiwKLQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJZXJy bXNnKCJjYW5ub3QgdXNlIEZJUlNUKCkgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiKSk7Ci0JUEdf UkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwotfQotCi0vKgotICogbGFzdCh2YWx1 ZSwgb2Zmc2V0KQotICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgTEFTVCBuYXZpZ2F0 aW9uIG9wZXJhdG9yIHdpdGggb2Zmc2V0LgotICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFp bHMuCi0gKi8KLURhdHVtCi13aW5kb3dfbGFzdF9vZmZzZXQoUEdfRlVOQ1RJT05fQVJHUykKLXsK LQllcmVwb3J0KEVSUk9SLAotCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQllcnJtc2coImNhbm5vdCB1c2UgTEFTVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNl IikpOwotCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KLX0KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGIzYWE0MmZjNjZlLi5iZTE1N2E1ZmJlOSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0xMDk2NywzMCArMTA5NjcsNiBAQAogeyBvaWQgPT4gJzMxMTQnLCBk ZXNjciA9PiAnZmV0Y2ggdGhlIE50aCByb3cgdmFsdWUnLAogICBwcm9uYW1lID0+ICdudGhfdmFs dWUnLCBwcm9raW5kID0+ICd3JywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2Fy Z3R5cGVzID0+ICdhbnllbGVtZW50IGludDQnLCBwcm9zcmMgPT4gJ3dpbmRvd19udGhfdmFsdWUn IH0sCi17IG9pZCA9PiAnODEyNicsIGRlc2NyID0+ICdmZXRjaCB0aGUgcHJlY2VkaW5nIHJvdyB2 YWx1ZScsCi0gIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5 cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsIHByb3Ny YyA9PiAnd2luZG93X3ByZXYnIH0sCi17IG9pZCA9PiAnODEyOCcsIGRlc2NyID0+ICdmZXRjaCB0 aGUgTnRoIHByZWNlZGluZyByb3cgdmFsdWUnLAotICBwcm9uYW1lID0+ICdwcmV2JywgcHJvdm9s YXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1l bnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3JjID0+ICd3aW5k b3dfcHJldl9vZmZzZXQnIH0sCi17IG9pZCA9PiAnODEyNycsIGRlc2NyID0+ICdmZXRjaCB0aGUg Zm9sbG93aW5nIHJvdyB2YWx1ZScsCi0gIHByb25hbWUgPT4gJ25leHQnLCBwcm92b2xhdGlsZSA9 PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55 ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X25leHQnIH0sCi17IG9pZCA9PiAnODEyOScsIGRl c2NyID0+ICdmZXRjaCB0aGUgTnRoIGZvbGxvd2luZyByb3cgdmFsdWUnLAotICBwcm9uYW1lID0+ ICduZXh0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5 cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4Jywg cHJvc3JjID0+ICd3aW5kb3dfbmV4dF9vZmZzZXQnIH0sCi17IG9pZCA9PiAnODEzMCcsIGRlc2Ny ID0+ICdmZXRjaCB0aGUgZmlyc3Qgcm93IHZhbHVlIHdpdGhpbiBtYXRjaCcsCi0gIHByb25hbWUg PT4gJ2ZpcnN0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50 JywKLSAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ3dpbmRvd19maXJz dCcgfSwKLXsgb2lkID0+ICc4MTMyJywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBOdGggcm93IHZhbHVl IHdpdGhpbiBtYXRjaCcsCi0gIHByb25hbWUgPT4gJ2ZpcnN0JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9h cmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3JjID0+ICd3aW5kb3dfZmlyc3Rfb2Zm c2V0JyB9LAoteyBvaWQgPT4gJzgxMzEnLCBkZXNjciA9PiAnZmV0Y2ggdGhlIGxhc3Qgcm93IHZh bHVlIHdpdGhpbiBtYXRjaCcsCi0gIHByb25hbWUgPT4gJ2xhc3QnLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAotICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxl bWVudCcsIHByb3NyYyA9PiAnd2luZG93X2xhc3QnIH0sCi17IG9pZCA9PiAnODEzMycsIGRlc2Ny ID0+ICdmZXRjaCB0aGUgTnRoLWZyb20tbGFzdCByb3cgdmFsdWUgd2l0aGluIG1hdGNoJywKLSAg cHJvbmFtZSA9PiAnbGFzdCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2Yn LCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKLSAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1l bnQgaW50OCcsIHByb3NyYyA9PiAnd2luZG93X2xhc3Rfb2Zmc2V0JyB9LAogCiAjIGZ1bmN0aW9u cyBmb3IgcmFuZ2UgdHlwZXMKIHsgb2lkID0+ICczODMyJywgZGVzY3IgPT4gJ0kvTycsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwci5vdXQKaW5kZXggYzAyYzlkNzVhOWEuLmRjNTE0MGZlY2M5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHIub3V0CkBAIC0xMDIxLDE2ICsxMDIxLDYgQEAgV0lORE9XIHcg QVMgKAogLS0KIC0tIEVycm9yIGNhc2VzOiBQUkVWL05FWFQgdXNhZ2UgcmVzdHJpY3Rpb25zCiAt LQotLS0gUFJFViBvdXRzaWRlIERFRklORSBjbGF1c2UKLVNFTEVDVCBwcmV2KHByaWNlKSBGUk9N IHN0b2NrOwotRVJST1I6ICBjYW5ub3QgdXNlIHByZXYgb3V0c2lkZSBhIERFRklORSBjbGF1c2UK LUxJTkUgMTogU0VMRUNUIHByZXYocHJpY2UpIEZST00gc3RvY2s7Ci0gICAgICAgICAgICAgICBe Ci0tLSBORVhUIG91dHNpZGUgREVGSU5FIGNsYXVzZQotU0VMRUNUIG5leHQocHJpY2UpIEZST00g c3RvY2s7Ci1FUlJPUjogIGNhbm5vdCB1c2UgbmV4dCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQot TElORSAxOiBTRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKLSAgICAgICAgICAgICAgIF4K IC0tIE5lc3RlZCBQUkVWCiBTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawogV0lORE9XIHcgQVMgKApA QCAtMTU5OCwxNSArMTU4OCw2IEBAIFdJTkRPVyB3IEFTICgKICBjb21wYW55MiB8IDA3LTEwLTIw MjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCiAoMjAgcm93cykK IAotLS0gMi1hcmcgUFJFVi9ORVhUIG91dHNpZGUgREVGSU5FIGNsYXVzZQotU0VMRUNUIHByZXYo cHJpY2UsIDIpIEZST00gc3RvY2s7Ci1FUlJPUjogIGNhbm5vdCB1c2UgcHJldiBvdXRzaWRlIGEg REVGSU5FIGNsYXVzZQotTElORSAxOiBTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9jazsK LSAgICAgICAgICAgICAgIF4KLVNFTEVDVCBuZXh0KHByaWNlLCAyKSBGUk9NIHN0b2NrOwotRVJS T1I6ICBjYW5ub3QgdXNlIG5leHQgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKLUxJTkUgMTogU0VM RUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7Ci0gICAgICAgICAgICAgICBeCiAtLSAyLWFy ZyBQUkVWL05FWFQ6IG5lZ2F0aXZlIG9mZnNldAogU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdwogRlJPTSBzdG9jawpAQCAtMjEzNCwxOSArMjEx NSw2IEBAIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRP VyB3IEFTICgKICAgICBERUZJTkUgQSBBUyBMQVNUKHZhbCwgLTEpIElTIE5VTEwKICk7CiBFUlJP UjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCi0t LSBGSVJTVC9MQVNUIG91dHNpZGUgREVGSU5FIGNsYXVzZSAoZXJyb3IgY2FzZXMpCi1TRUxFQ1Qg Zmlyc3QodmFsKSBGUk9NIHJwcl9uYXY7Ci1FUlJPUjogIGNhbm5vdCB1c2UgZmlyc3Qgb3V0c2lk ZSBhIERFRklORSBjbGF1c2UKLUxJTkUgMTogU0VMRUNUIGZpcnN0KHZhbCkgRlJPTSBycHJfbmF2 OwotICAgICAgICAgICAgICAgXgotU0VMRUNUIGxhc3QodmFsKSBGUk9NIHJwcl9uYXY7Ci1FUlJP UjogIGNhbm5vdCB1c2UgbGFzdCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQotTElORSAxOiBTRUxF Q1QgbGFzdCh2YWwpIEZST00gcnByX25hdjsKLSAgICAgICAgICAgICAgIF4KLVNFTEVDVCBmaXJz dCh2YWwsIDEpIEZST00gcnByX25hdjsKLUVSUk9SOiAgY2Fubm90IHVzZSBmaXJzdCBvdXRzaWRl IGEgREVGSU5FIGNsYXVzZQotTElORSAxOiBTRUxFQ1QgZmlyc3QodmFsLCAxKSBGUk9NIHJwcl9u YXY7Ci0gICAgICAgICAgICAgICBeCiAtLSBGdW5jdGlvbmFsIG5vdGF0aW9uOiBzaG91bGQgYWNj ZXNzIGNvbHVtbiwgbm90IFJQUiBuYXZpZ2F0aW9uCiBDUkVBVEUgVEVNUCBUQUJMRSBycHJfbmFt ZXMgKHByZXYgaW50LCBuZXh0IGludCwgZmlyc3QgdGV4dCwgbGFzdCB0ZXh0KTsKIElOU0VSVCBJ TlRPIHJwcl9uYW1lcyBWQUxVRVMgKDEsIDIsICdKb2UnLCAnQmxvdycpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRleCA0MTU0MTg5OGY1YS4uY2YxNThlMWMwNDMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CkBAIC0xNzA5LDkgKzE3MDksMTAg QEAgV0lORE9XIHcgQVMgKAogICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQogKQogT1JERVIg QlkgaWQ7Ci1FUlJPUjogIGNhbm5vdCB1c2UgcHJldiBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQor RVJST1I6ICBmdW5jdGlvbiBwcmV2KGludGVnZXIpIGRvZXMgbm90IGV4aXN0CiBMSU5FIDE6IFNF TEVDVCBQUkVWKGlkKSwgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAogICAgICAgICAg ICAgICAgXgorREVUQUlMOiAgVGhlcmUgaXMgbm8gZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgogLS0g TkVYVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERFRklORQogU0VMRUNU IE5FWFQoaWQpLCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CiBGUk9NIHJwcl9uYXYK QEAgLTE3MjQsOSArMTcyNSwxMCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgdmFsID4g UFJFVih2YWwpCiApCiBPUkRFUiBCWSBpZDsKLUVSUk9SOiAgY2Fubm90IHVzZSBuZXh0IG91dHNp ZGUgYSBERUZJTkUgY2xhdXNlCitFUlJPUjogIGZ1bmN0aW9uIG5leHQoaW50ZWdlcikgZG9lcyBu b3QgZXhpc3QKIExJTkUgMTogU0VMRUNUIE5FWFQoaWQpLCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CiAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlv biBvZiB0aGF0IG5hbWUuCiAtLSBGSVJTVCBmdW5jdGlvbiAtIHJlZmVyZW5jZSBtYXRjaF9zdGFy dCByb3cKIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CiBGUk9NIHJwcl9u YXYKQEAgLTE3OTIsMTUgKzE3OTQsMzc2IEBAIE9SREVSIEJZIGlkOwogCiAtLSBGSVJTVCBmdW5j dGlvbiBjYW5ub3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERFRklORQogU0VMRUNUIEZJUlNUKGlk KSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7Ci1FUlJPUjogIGNhbm5vdCB1c2UgZmlyc3Qgb3V0c2lk ZSBhIERFRklORSBjbGF1c2UKK0VSUk9SOiAgZnVuY3Rpb24gZmlyc3QoaW50ZWdlcikgZG9lcyBu b3QgZXhpc3QKIExJTkUgMTogU0VMRUNUIEZJUlNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7 CiAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0 IG5hbWUuCiAtLSBMQVNUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVG SU5FCiBTRUxFQ1QgTEFTVChpZCksIGlkLCB2YWwgRlJPTSBycHJfbmF2OwotRVJST1I6ICBjYW5u b3QgdXNlIGxhc3Qgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKK0VSUk9SOiAgZnVuY3Rpb24gbGFz dChpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgTEFTVChpZCksIGlkLCB2 YWwgRlJPTSBycHJfbmF2OwogICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhlcmUgaXMgbm8g ZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgogRFJPUCBUQUJMRSBycHJfbmF2OworLS0gTmFtZS1zcGFj ZTogcHJldi9uZXh0L2ZpcnN0L2xhc3QgYXJlIG5hdmlnYXRpb24gZnVuY3Rpb25zLCBub3Qgb3Jk aW5hcnkgZnVuY3Rpb25zCitDUkVBVEUgU0NIRU1BIHJwcl9uYXZuczsKK1NFVCBzZWFyY2hfcGF0 aCBUTyBycHJfbmF2bnMsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSBudCAoZyB0ZXh0LCBpZCBpbnQs IHZhbCBpbnQpOworSU5TRVJUIElOVE8gbnQgVkFMVUVTICgneCcsIDEsIDEwMCksICgneCcsIDIs IDIwMCksICgneCcsIDMsIDE1MCksCisgICAgICAgICAgICAgICAgICAgICAgKCd4JywgNCwgMTQw KSwgKCd4JywgNSwgMTUwKTsKKy0tIE91dHNpZGUgREVGSU5FIHRoZXNlIGFyZSBvcmRpbmFyeSBp ZGVudGlmaWVycyBhbmQgcmVzb2x2ZSB0byBub3RoaW5nCitTRUxFQ1QgcHJldih2YWwpIEZST00g bnQ7CitFUlJPUjogIGZ1bmN0aW9uIHByZXYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg MTogU0VMRUNUIHByZXYodmFsKSBGUk9NIG50OworICAgICAgICAgICAgICAgXgorREVUQUlMOiAg VGhlcmUgaXMgbm8gZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgorU0VMRUNUIG5leHQodmFsKSBGUk9N IG50OworRVJST1I6ICBmdW5jdGlvbiBuZXh0KGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IFNFTEVDVCBuZXh0KHZhbCkgRlJPTSBudDsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDog IFRoZXJlIGlzIG5vIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZS4KK1NFTEVDVCBwcmV2KHZhbCwgMikg RlJPTSBudDsKK0VSUk9SOiAgZnVuY3Rpb24gcHJldihpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5v dCBleGlzdAorTElORSAxOiBTRUxFQ1QgcHJldih2YWwsIDIpIEZST00gbnQ7CisgICAgICAgICAg ICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlvbiBvZiB0aGF0IG5hbWUuCitTRUxF Q1QgbmV4dCh2YWwsIDIpIEZST00gbnQ7CitFUlJPUjogIGZ1bmN0aW9uIG5leHQoaW50ZWdlciwg aW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIG5leHQodmFsLCAyKSBGUk9N IG50OworICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhlcmUgaXMgbm8gZnVuY3Rpb24gb2Yg dGhhdCBuYW1lLgorU0VMRUNUIGZpcnN0KHZhbCkgRlJPTSBudDsKK0VSUk9SOiAgZnVuY3Rpb24g Zmlyc3QoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIGZpcnN0KHZhbCkg RlJPTSBudDsKKyAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFRoZXJlIGlzIG5vIGZ1bmN0aW9u IG9mIHRoYXQgbmFtZS4KK1NFTEVDVCBsYXN0KHZhbCkgRlJPTSBudDsKK0VSUk9SOiAgZnVuY3Rp b24gbGFzdChpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgbGFzdCh2YWwp IEZST00gbnQ7CisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBUaGVyZSBpcyBubyBmdW5jdGlv biBvZiB0aGF0IG5hbWUuCitTRUxFQ1QgZmlyc3QodmFsLCAxKSBGUk9NIG50OworRVJST1I6ICBm dW5jdGlvbiBmaXJzdChpbnRlZ2VyLCBpbnRlZ2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAxOiBT RUxFQ1QgZmlyc3QodmFsLCAxKSBGUk9NIG50OworICAgICAgICAgICAgICAgXgorREVUQUlMOiAg VGhlcmUgaXMgbm8gZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgorLS0gQSBzY2hlbWEtcXVhbGlmaWVk IGNhbGwgaXMgYWxzbyBhIHBsYWluIChmYWlsaW5nKSBmdW5jdGlvbiBsb29rdXAKK1NFTEVDVCBw Z19jYXRhbG9nLnByZXYodmFsKSBGUk9NIG50OworRVJST1I6ICBmdW5jdGlvbiBwZ19jYXRhbG9n LnByZXYoaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUIHBnX2NhdGFsb2cu cHJldih2YWwpIEZST00gbnQ7CisgICAgICAgICAgICAgICBeCistLSBPdXRzaWRlIERFRklORSwg YSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2YgdGhhdCBuYW1lIGlzIGNhbGxhYmxlCitDUkVBVEUg RlVOQ1RJT04gbmV4dChudW1lcmljKSBSRVRVUk5TIG51bWVyaWMgQVMgJ1NFTEVDVCAtOTk5Ojpu dW1lcmljJworICBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworU0VMRUNUIG5leHQoMTApOworIG5l eHQgCistLS0tLS0KKyAtOTk5CisoMSByb3cpCisKKy0tIEluc2lkZSBERUZJTkUsIHVucXVhbGlm aWVkIFBSRVYgaXMgbmF2IHdoZXRoZXIgb3Igbm90IGEgdXNlciBwcmV2KCkgZXhpc3RzCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJUIFVQKykKKyAgICBERUZJTkUgU1RBUlQg QVMgVFJVRSwgVVAgQVMgdmFsID4gUFJFVih2YWwpKQorICBPUkRFUiBCWSBpZDsKKyBpZCB8IHZh bCB8IGNudCB8IGxhc3RfaWQgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAxIHwgMTAw IHwgICAyIHwgICAgICAgMgorICAyIHwgMjAwIHwgICAwIHwgICAgICAgIAorICAzIHwgMTUwIHwg ICAwIHwgICAgICAgIAorICA0IHwgMTQwIHwgICAyIHwgICAgICAgNQorICA1IHwgMTUwIHwgICAw IHwgICAgICAgIAorKDUgcm93cykKKworLS0gQSBxdWFsaWZpZWQgY2FsbCBpbnZva2VzIHRoZSBm dW5jdGlvbiwgc28gaXRzIHZvbGF0aWxpdHkgc3RpbGwgbWF0dGVycworLS0gVk9MQVRJTEU6IHVu cXVhbGlmaWVkIGlzIG5hdjsgcXVhbGlmaWVkIGlzIHJlamVjdGVkIGFzIGEgdm9sYXRpbGUgZnVu Y3Rpb24KK0NSRUFURSBGVU5DVElPTiBwcmV2KGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAn U0VMRUNUIC05OTknCisgIExBTkdVQUdFIHNxbCBWT0xBVElMRTsKK1NFTEVDVCBpZCwgdmFsLCBj b3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbGFzdF9pZAor ICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFM CisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBB UyB2YWwgPiBQUkVWKHZhbCkpCisgIE9SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IHwgbGFz dF9pZCAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgIDEgfCAxMDAgfCAgIDIgfCAgICAg ICAyCisgIDIgfCAyMDAgfCAgIDAgfCAgICAgICAgCisgIDMgfCAxNTAgfCAgIDAgfCAgICAgICAg CisgIDQgfCAxNDAgfCAgIDIgfCAgICAgICA1CisgIDUgfCAxNTAgfCAgIDAgfCAgICAgICAgCiso NSByb3dzKQorCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFS VElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHJwcl9uYXZucy5wcmV2KHZhbCkgPSAtOTk5KQorICBPUkRFUiBCWSBpZDsKK0VSUk9S OiAgdm9sYXRpbGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitM SU5FIDY6ICAgICBERUZJTkUgQSBBUyBycHJfbmF2bnMucHJldih2YWwpID0gLTk5OSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RST1AgRlVOQ1RJT04gcHJldihpbnRlZ2VyKTsKKy0tIElN TVVUQUJMRTogdW5xdWFsaWZpZWQgaXMgbmF2OyBxdWFsaWZpZWQgaXMgdGhlIGVzY2FwZSBoYXRj aCBhbmQgc3VjY2VlZHMKK0NSRUFURSBGVU5DVElPTiBwcmV2KGludGVnZXIpIFJFVFVSTlMgaW50 ZWdlciBBUyAnU0VMRUNUIC05OTknCisgIExBTkdVQUdFIHNxbCBJTU1VVEFCTEU7CitTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJUIFVQKykKKyAgICBERUZJTkUgU1RBUlQgQVMg VFJVRSwgVVAgQVMgdmFsID4gUFJFVih2YWwpKQorICBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCB8IGxhc3RfaWQgCistLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAxIHwgMTAwIHwg ICAyIHwgICAgICAgMgorICAyIHwgMjAwIHwgICAwIHwgICAgICAgIAorICAzIHwgMTUwIHwgICAw IHwgICAgICAgIAorICA0IHwgMTQwIHwgICAyIHwgICAgICAgNQorICA1IHwgMTUwIHwgICAwIHwg ICAgICAgIAorKDUgcm93cykKKworLS0gKHZhbCkucHJldiBpcyBhdHRyaWJ1dGUgbm90YXRpb24s IHNvIGl0IGNhbGxzIHRoZSBvcmRpbmFyeSBmdW5jdGlvbiBwcmV2KHZhbCkKKy0tICh0aGUgSU1N VVRBQkxFIHVzZXIgcHJldiBoZXJlKSwgdGhlIHNhbWUgYXMgdGhlIHNjaGVtYS1xdWFsaWZpZWQg Y2FsbCBiZWxvdworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBsYXN0X2lkCisgIEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBB UlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyAodmFsKS5wcmV2ID0gLTk5OSkKKyAgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgfCBsYXN0X2lkIAorLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgMSB8IDEwMCB8ICAg NSB8ICAgICAgIDUKKyAgMiB8IDIwMCB8ICAgMCB8ICAgICAgICAKKyAgMyB8IDE1MCB8ICAgMCB8 ICAgICAgICAKKyAgNCB8IDE0MCB8ICAgMCB8ICAgICAgICAKKyAgNSB8IDE1MCB8ICAgMCB8ICAg ICAgICAKKyg1IHJvd3MpCisKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3 IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgcnByX25hdm5zLnByZXYodmFsKSA9IC05OTkpCisgIE9SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IHwgbGFzdF9pZCAKKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0t CisgIDEgfCAxMDAgfCAgIDUgfCAgICAgICA1CisgIDIgfCAyMDAgfCAgIDAgfCAgICAgICAgCisg IDMgfCAxNTAgfCAgIDAgfCAgICAgICAgCisgIDQgfCAxNDAgfCAgIDAgfCAgICAgICAgCisgIDUg fCAxNTAgfCAgIDAgfCAgICAgICAgCisoNSByb3dzKQorCistLSBaZXJvIG9yIG1vcmUgdGhhbiB0 d28gYXJndW1lbnRzIGlzIGFuIGVycm9yLCB3aXRoIG5vIGZ1bmN0aW9uIGZhbGxiYWNrCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBn IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVigpIElT IE5VTEwpOworRVJST1I6ICB0b28gZmV3IGFyZ3VtZW50cyBmb3Igcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBmdW5jdGlvbiBQUkVWCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg UFJFVigpIElTIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0RFVEFJTDogIFBSRVYgdGFrZXMgYSB2YWx1ZSBleHByZXNzaW9uIGFuZCBhbiBvcHRpb25hbCBv ZmZzZXQgYXJndW1lbnQuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9X IHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykg REVGSU5FIEEgQVMgUFJFVih2YWwsIDEsIDIpIElTIE5VTEwpOworRVJST1I6ICB0b28gbWFueSBh cmd1bWVudHMgZm9yIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gZnVuY3Rpb24gUFJFVgorTElORSA0 OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsLCAxLCAyKSBJUyBOVUxMKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQUkVWIHRh a2VzIGEgdmFsdWUgZXhwcmVzc2lvbiBhbmQgYW4gb3B0aW9uYWwgb2Zmc2V0IGFyZ3VtZW50Lgor LS0gdGhlIGVycm9yIHN0YW5kcyBldmVuIHdoZW4gYSB1c2VyIGZ1bmN0aW9uIG9mIHRoYXQgZXhh Y3QgYXJpdHkgZXhpc3RzCitDUkVBVEUgRlVOQ1RJT04gcHJldihpbnRlZ2VyLCBpbnRlZ2VyLCBp bnRlZ2VyKSBSRVRVUk5TIGludGVnZXIKKyAgQVMgJ1NFTEVDVCAtOTk5JyBMQU5HVUFHRSBzcWwg SU1NVVRBQkxFOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFT IChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklO RSBBIEFTIFBSRVYodmFsLCAxLCAyKSBJUyBOVUxMKTsKK0VSUk9SOiAgdG9vIG1hbnkgYXJndW1l bnRzIGZvciByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIGZ1bmN0aW9uIFBSRVYKK0xJTkUgNDogICAg IFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCwgMSwgMikgSVMgTlVMTCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgUFJFViB0YWtlcyBh IHZhbHVlIGV4cHJlc3Npb24gYW5kIGFuIG9wdGlvbmFsIG9mZnNldCBhcmd1bWVudC4KK0RST1Ag RlVOQ1RJT04gcHJldihpbnRlZ2VyLCBpbnRlZ2VyLCBpbnRlZ2VyKTsKKy0tIFN5bnRhY3RpYyBk ZWNvcmF0aW9uIGlzIHJlamVjdGVkCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgUFJFVigqKSBJUyBOVUxMKTsKK0VSUk9SOiAgcHJldigqKSBzcGVj aWZpZWQsIGJ1dCBwcmV2IGlzIG5vdCBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24KK0xJTkUgNDogICAg IFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCopIElTIE5VTEwpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBu dAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBB VFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKERJU1RJTkNUIHZhbCkgSVMgTlVMTCk7CitFUlJP UjogIERJU1RJTkNUIHNwZWNpZmllZCwgYnV0IHByZXYgaXMgbm90IGFuIGFnZ3JlZ2F0ZSBmdW5j dGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoRElTVElOQ1Qg dmFsKSBJUyBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBC WSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2 YWwgT1JERVIgQlkgdmFsKSBJUyBOVUxMKTsKK0VSUk9SOiAgT1JERVIgQlkgc3BlY2lmaWVkLCBi dXQgcHJldiBpcyBub3QgYW4gYWdncmVnYXRlIGZ1bmN0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwgT1JERVIgQlkgdmFsKSBJUyBOVUxMKS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElB TAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCkgRklMVEVSIChXSEVSRSB0 cnVlKSBJUyBOVUxMKTsKK0VSUk9SOiAgRklMVEVSIHNwZWNpZmllZCwgYnV0IHByZXYgaXMgbm90 IGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBB IEFTIFBSRVYodmFsKSBGSUxURVIgKFdIRVJFIHRydWUpIEkuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwpIFdJVEhJTiBHUk9VUCAoT1JERVIgQlkgdmFsKSBJ UyBOVUxMKTsKK0VSUk9SOiAgV0lUSElOIEdST1VQIHNwZWNpZmllZCwgYnV0IHByZXYgaXMgbm90 IGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBB IEFTIFBSRVYodmFsKSBXSVRISU4gR1JPVVAgKE9SREVSIEIuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAg V0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgUFJFVih2YWwpIE9WRVIgKCkgSVMgTlVMTCk7CitFUlJPUjogIE9W RVIgc3BlY2lmaWVkLCBidXQgcHJldiBpcyBub3QgYSB3aW5kb3cgZnVuY3Rpb24gbm9yIGFuIGFn Z3JlZ2F0ZSBmdW5jdGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBS RVYodmFsKSBPVkVSICgpIElTIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAo UEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBQUkVWKFZBUklBRElDIEFSUkFZW3ZhbF0pIElTIE5VTEwpOworRVJST1I6ICBjYW5ub3Qg dXNlIFZBUklBRElDIHdpdGggcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBmdW5jdGlvbiBQUkVWCitM SU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihWQVJJQURJQyBBUlJBWVt2 YWxdKSBJUyBOVS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZ IGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmV2KHgg PT4gdmFsKSBJUyBOVUxMKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRp b25zIGNhbm5vdCB1c2UgbmFtZWQgYXJndW1lbnRzCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykg REVGSU5FIEEgQVMgcHJldih4ID0+IHZhbCkgSVMgTlVMTCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJ TkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAo QSspIERFRklORSBBIEFTIFBSRVYodmFsKSBJR05PUkUgTlVMTFMgSVMgTlVMTCk7CitFUlJPUjog IG9ubHkgd2luZG93IGZ1bmN0aW9ucyBhY2NlcHQgUkVTUEVDVC9JR05PUkUgTlVMTFMKK0xJTkUg NDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCkgSUdOT1JFIE5VTExTIElT IE5VTEwpLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUXVv dGluZyBkb2VzIG5vdCBlc2NhcGU6ICJwcmV2IiBpcyBuYXYsICJQUkVWIiBpcyBhbiBvcmRpbmFy eSBuYW1lCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICBGUk9NIG50 CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFU VEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBBUyB2YWwgPiAi cHJldiIodmFsKSkKKyAgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCAxMDAgfCAgIDIKKyAgMiB8IDIwMCB8ICAgMAorICAzIHwgMTUwIHwgICAw CisgIDQgfCAxNDAgfCAgIDIKKyAgNSB8IDE1MCB8ICAgMAorKDUgcm93cykKKworU0VMRUNUIGNv dW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTICJQUkVWIih2YWwpIElT IE5VTEwpOworRVJST1I6ICBmdW5jdGlvbiBQUkVWKGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitM SU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgIlBSRVYiKHZhbCkgSVMgTlVMTCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgVGhlcmUg aXMgbm8gZnVuY3Rpb24gb2YgdGhhdCBuYW1lLgorLS0gQSB2aWV3IHJvdW5kLXRyaXBzOiBiYXJl IFBSRVYgc3RheXMgYSBuYXZpZ2F0aW9uIGZ1bmN0aW9uLCBhbmQgYSBxdWFsaWZpZWQKKy0tIHVz ZXIgcHJldigpIHN0YXlzIHNjaGVtYS1xdWFsaWZpZWQgc28gaXQgZG9lcyBub3QgcmVwYXJzZSBh cyBuYXZpZ2F0aW9uCitDUkVBVEUgVklFVyBuYXZuc19uYXYgQVMKKyAgU0VMRUNUIGlkLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBn IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChTVEFSVCBVUCspIERFRklORSBTVEFSVCBB UyBUUlVFLCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpOworQ1JFQVRFIFZJRVcgbmF2bnNfZm4gQVMK KyAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250IEZST00gbnQKKyAgV0lORE9XIHcg QVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVG SU5FIEEgQVMgcnByX25hdm5zLnByZXYodmFsKSA9IC05OTkpOworU0VMRUNUIHBnX2dldF92aWV3 ZGVmKCduYXZuc19uYXYnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgIEZST00gbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFS VElUSU9OIEJZIGcgT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChzdGFydCB1 cCspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgc3RhcnQgQVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICB1cCBBUyAodmFsID4gUFJF Vih2YWwpKSApOworKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ25hdm5zX2ZuJyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIG50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAr CisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSspICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHJwcl9uYXZu cy5wcmV2KHZhbCkgPSAnLTk5OSc6OmludGVnZXIpICk7CisoMSByb3cpCisKK0RST1AgVklFVyBu YXZuc19uYXYsIG5hdm5zX2ZuOworLS0gQXR0cmlidXRlIG5vdGF0aW9uIGlzIGZpZWxkIHNlbGVj dGlvbiBvbmx5LCBuZXZlciBhIGZ1bmN0aW9uIGZhbGxiYWNrCitDUkVBVEUgVFlQRSBycHJfbmF2 bnNfcGFpciBBUyAoZmlyc3QgaW50LCBsYXN0IGludCk7CitDUkVBVEUgVEFCTEUgY3QgKGlkIGlu dCwgcCBycHJfbmF2bnNfcGFpcik7CitJTlNFUlQgSU5UTyBjdCBWQUxVRVMgKDEsICgxMCwgMjAp KSwgKDIsICgzMCwgNDApKTsKK1NFTEVDVCAocCkubGFzdCBGUk9NIGN0IE9SREVSIEJZIGlkOwor IGxhc3QgCistLS0tLS0KKyAgIDIwCisgICA0MAorKDIgcm93cykKKworU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIGN0CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFU VEVSTiAoQSspIERFRklORSBBIEFTIChwKS5sYXN0ID4gMCk7CisgY291bnQgCistLS0tLS0tCisg ICAgIDIKKyAgICAgMAorKDIgcm93cykKKworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIGN0 CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklO RSBBIEFTIChwKS5wcmV2ID4gMCk7CitFUlJPUjogIGNvbHVtbiAicHJldiIgbm90IGZvdW5kIGlu IGRhdGEgdHlwZSBycHJfbmF2bnNfcGFpcgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklO RSBBIEFTIChwKS5wcmV2ID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIE5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGNvbnRhaW4gYSBuYXZpZ2F0aW9u IG9wZXJhdGlvbgorU0VMRUNUIGlkLCB2YWwKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFS VElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIFBSRVYodmFsLCBGSVJTVCgxKSkgPiAwKQorICBPUkRFUiBCWSBpZDsKK0VSUk9SOiAg cm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgY2Fubm90IGNvbnRhaW4gYSByb3cgcGF0dGVy biBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorTElORSA2OiAgICAgREVGSU5FIEEgQVMgUFJFVih2YWws IEZJUlNUKDEpKSA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVU QUlMOiAgQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQuCitE Uk9QIFNDSEVNQSBycHJfbmF2bnMgQ0FTQ0FERTsKK1JFU0VUIHNlYXJjaF9wYXRoOwogLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLSBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zNjU1LDYgKzQwMTgsMTI3 IEBAIEVSUk9SOiAgY2Fubm90IG5lc3Qgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBtb3JlIHRoYW4g dHdvIGxldmVscyBkZWVwCiBMSU5FIDY6ICAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKFBSRVYo dikpKSA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBPbmx5IFBSRVYoRklS U1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21w b3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBh IHJ1bi10aW1lIGNvbnN0YW50LCBub3QgYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHYsIEZJUlNUKDEpKSA+IDApOworRVJST1I6 ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBjYW5ub3QgY29udGFpbiBhIHJvdyBwYXR0 ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5F IEEgQVMgUFJFVih2LCBGSVJTVCgxKSkgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBi ZSBhIHJ1bi10aW1lIGNvbnN0YW50LgorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBB UyBQUkVWKHYsIEZJUlNUKDEpICsgMSkgPiAwKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBvZmZzZXQgY2Fubm90IGNvbnRhaW4gYSByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJh dGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1Qo MSkgKyAxKSA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorREVUQUlMOiAgQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29u c3RhbnQuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgTkVYVCgx LCAwKSkgPiAwKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgY2Fubm90 IGNvbnRhaW4gYSByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorTElORSA0OiAgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgTkVYVCgxLCAwKSkgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEEgbmF2 aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50LgorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKHYpLCBMQVNUKDEpKSA+IDApOworRVJS T1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBjYW5ub3QgY29udGFpbiBhIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVG SU5FIEEgQVMgUFJFVihGSVJTVCh2KSwgTEFTVCgxKSkgPiAwKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBBIG5hdmlnYXRp b24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudC4KK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBGSVJTVCh2KSkgPiAwKTsKK0VSUk9SOiAgcm93IHBh dHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgY2Fubm90IGNvbnRhaW4gYSByb3cgcGF0dGVybiBuYXZp Z2F0aW9uIG9wZXJhdGlvbgorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBS RVYodiwgRklSU1QodikpID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitERVRBSUw6ICBBIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4t dGltZSBjb25zdGFudC4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgTkVYVCh2 LCBQUkVWKHYsIDEpKSA+IDApOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNl dCBjYW5ub3QgY29udGFpbiBhIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uCitMSU5F IDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgTkVYVCh2LCBQUkVWKHYsIDEpKSA+IDAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgQSBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQuCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5E T1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoRklSU1QodiwgTEFTVCgxKSksIDIp ID4gMCk7CitFUlJPUjogIGNhbm5vdCBuZXN0IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gbW9yZSB0 aGFuIHR3byBsZXZlbHMgZGVlcAorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFT IFBSRVYoRklSU1QodiwgTEFTVCgxKSksIDIpID4gMCkuLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitISU5UOiAgT25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1Qo KSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFs bG93ZWQuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1Qo MTo6YmlnaW50KSkgPiAwKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQg Y2Fubm90IGNvbnRhaW4gYSByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorTElORSA0 OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1QoMTo6YmlnaW50KSkg PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50Lgor LS0gQW4gdW5rbm93biBsaXRlcmFsIGFyZ3VtZW50IHJlc29sdmVzIHRvIHRleHQ7IGl0IG11c3Qg c3RpbGwgcmVmZXJlbmNlIGEgY29sdW1uCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEg QVMgUFJFVignZm9vJykgPSAnYmFyJyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJu IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJl ZmVyZW5jZQorTElORSA0OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoJ2Zvbycp ID0gJ2JhcicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgcyh2KQorV0lORE9X IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCdmb28nKSk7CitFUlJPUjogIGFyZ3Vt ZW50IG9mIERFRklORSBtdXN0IGJlIHR5cGUgYm9vbGVhbiwgbm90IHR5cGUgdGV4dAorTElORSA0 OiAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoJ2ZvbycpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5F IEEgQVMgUFJFVihOVUxMKSBJUyBOVUxMKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4g cmVmZXJlbmNlCitMSU5FIDQ6ICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihOVUxM KSBJUyBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitQUkVQ QVJFIHJwcl9uYXZhcmcgQVMgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSw1KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYo JDEpIElTIE5VTEwpOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9u IG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJ TkUgNDogICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCQxKSBJUyBOVUxMKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBBbiBpbnQyIG9mZnNldCBp cyBjb2VyY2VkIHRvIGludDggbGlrZSBhbnkgaW1wbGljaXQgY2FzdCAoc2FtZSBhcyBwbGFpbiAw KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBzKHYp CitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgMDo6c21hbGxpbnQp ID0gdik7CisgY291bnQgCistLS0tLS0tCisgICAgIDUKKyAgICAgMAorICAgICAwCisgICAgIDAK KyAgICAgMAorKDUgcm93cykKKworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSw1KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBS RVYodiwgMCkgPSB2KTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNQorICAgICAwCisgICAgIDAK KyAgICAgMAorICAgICAwCisoNSByb3dzKQorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIFdpbmRvdyBEZWR1cGxpY2F0 aW9uIFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCmluZGV4IGIxNWIzMGM4NWFjLi5lM2U5 ZGU3ODlkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCkBAIC00NDQsMTIgKzQ0NCw2IEBAIFdJTkRPVyB3 IEFTICgKIC0tIEVycm9yIGNhc2VzOiBQUkVWL05FWFQgdXNhZ2UgcmVzdHJpY3Rpb25zCiAtLQog Ci0tLSBQUkVWIG91dHNpZGUgREVGSU5FIGNsYXVzZQotU0VMRUNUIHByZXYocHJpY2UpIEZST00g c3RvY2s7Ci0KLS0tIE5FWFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCi1TRUxFQ1QgbmV4dChwcmlj ZSkgRlJPTSBzdG9jazsKLQogLS0gTmVzdGVkIFBSRVYKIFNFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CiBXSU5ET1cgdyBBUyAoCkBAIC04MzEsMTAgKzgyNSw2IEBAIFdJTkRPVyB3IEFTICgKICAgICBE RUZJTkUgQSBBUyBQUkVWKHByaWNlLCAwKSA9IHByaWNlCiApOwogCi0tLSAyLWFyZyBQUkVWL05F WFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCi1TRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9j azsKLVNFTEVDVCBuZXh0KHByaWNlLCAyKSBGUk9NIHN0b2NrOwotCiAtLSAyLWFyZyBQUkVWL05F WFQ6IG5lZ2F0aXZlIG9mZnNldAogU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdwogRlJPTSBzdG9jawpAQCAtMTEyNCwxMSArMTExNCw2IEBAIFNF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgK ICAgICBERUZJTkUgQSBBUyBMQVNUKHZhbCwgLTEpIElTIE5VTEwKICk7CiAKLS0tIEZJUlNUL0xB U1Qgb3V0c2lkZSBERUZJTkUgY2xhdXNlIChlcnJvciBjYXNlcykKLVNFTEVDVCBmaXJzdCh2YWwp IEZST00gcnByX25hdjsKLVNFTEVDVCBsYXN0KHZhbCkgRlJPTSBycHJfbmF2OwotU0VMRUNUIGZp cnN0KHZhbCwgMSkgRlJPTSBycHJfbmF2OwotCiAtLSBGdW5jdGlvbmFsIG5vdGF0aW9uOiBzaG91 bGQgYWNjZXNzIGNvbHVtbiwgbm90IFJQUiBuYXZpZ2F0aW9uCiBDUkVBVEUgVEVNUCBUQUJMRSBy cHJfbmFtZXMgKHByZXYgaW50LCBuZXh0IGludCwgZmlyc3QgdGV4dCwgbGFzdCB0ZXh0KTsKIElO U0VSVCBJTlRPIHJwcl9uYW1lcyBWQUxVRVMgKDEsIDIsICdKb2UnLCAnQmxvdycpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2Jhc2Uuc3FsCmluZGV4IGZjZWZkNTlkZTRhLi5lNzFmMGRkMzY4MCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbApAQCAtMTMwOSw2ICsxMzA5LDE5NSBAQCBTRUxFQ1QgTEFT VChpZCksIGlkLCB2YWwgRlJPTSBycHJfbmF2OwogCiBEUk9QIFRBQkxFIHJwcl9uYXY7CiAKKy0t IE5hbWUtc3BhY2U6IHByZXYvbmV4dC9maXJzdC9sYXN0IGFyZSBuYXZpZ2F0aW9uIGZ1bmN0aW9u cywgbm90IG9yZGluYXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFNDSEVNQSBycHJfbmF2bnM7CitTRVQg c2VhcmNoX3BhdGggVE8gcnByX25hdm5zLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgbnQgKGcgdGV4 dCwgaWQgaW50LCB2YWwgaW50KTsKK0lOU0VSVCBJTlRPIG50IFZBTFVFUyAoJ3gnLCAxLCAxMDAp LCAoJ3gnLCAyLCAyMDApLCAoJ3gnLCAzLCAxNTApLAorICAgICAgICAgICAgICAgICAgICAgICgn eCcsIDQsIDE0MCksICgneCcsIDUsIDE1MCk7CisKKy0tIE91dHNpZGUgREVGSU5FIHRoZXNlIGFy ZSBvcmRpbmFyeSBpZGVudGlmaWVycyBhbmQgcmVzb2x2ZSB0byBub3RoaW5nCitTRUxFQ1QgcHJl dih2YWwpIEZST00gbnQ7CitTRUxFQ1QgbmV4dCh2YWwpIEZST00gbnQ7CitTRUxFQ1QgcHJldih2 YWwsIDIpIEZST00gbnQ7CitTRUxFQ1QgbmV4dCh2YWwsIDIpIEZST00gbnQ7CitTRUxFQ1QgZmly c3QodmFsKSBGUk9NIG50OworU0VMRUNUIGxhc3QodmFsKSBGUk9NIG50OworU0VMRUNUIGZpcnN0 KHZhbCwgMSkgRlJPTSBudDsKKy0tIEEgc2NoZW1hLXF1YWxpZmllZCBjYWxsIGlzIGFsc28gYSBw bGFpbiAoZmFpbGluZykgZnVuY3Rpb24gbG9va3VwCitTRUxFQ1QgcGdfY2F0YWxvZy5wcmV2KHZh bCkgRlJPTSBudDsKKworLS0gT3V0c2lkZSBERUZJTkUsIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9u IG9mIHRoYXQgbmFtZSBpcyBjYWxsYWJsZQorQ1JFQVRFIEZVTkNUSU9OIG5leHQobnVtZXJpYykg UkVUVVJOUyBudW1lcmljIEFTICdTRUxFQ1QgLTk5OTo6bnVtZXJpYycKKyAgTEFOR1VBR0Ugc3Fs IElNTVVUQUJMRTsKK1NFTEVDVCBuZXh0KDEwKTsKKworLS0gSW5zaWRlIERFRklORSwgdW5xdWFs aWZpZWQgUFJFViBpcyBuYXYgd2hldGhlciBvciBub3QgYSB1c2VyIHByZXYoKSBleGlzdHMKK1NF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORSBTVEFS VCBBUyBUUlVFLCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpCisgIE9SREVSIEJZIGlkOworCistLSBB IHF1YWxpZmllZCBjYWxsIGludm9rZXMgdGhlIGZ1bmN0aW9uLCBzbyBpdHMgdm9sYXRpbGl0eSBz dGlsbCBtYXR0ZXJzCistLSBWT0xBVElMRTogdW5xdWFsaWZpZWQgaXMgbmF2OyBxdWFsaWZpZWQg aXMgcmVqZWN0ZWQgYXMgYSB2b2xhdGlsZSBmdW5jdGlvbgorQ1JFQVRFIEZVTkNUSU9OIHByZXYo aW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICdTRUxFQ1QgLTk5OScKKyAgTEFOR1VBR0Ugc3Fs IFZPTEFUSUxFOworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBsYXN0X2lkCisgIEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBB UlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChTVEFSVCBVUCspCisg ICAgREVGSU5FIFNUQVJUIEFTIFRSVUUsIFVQIEFTIHZhbCA+IFBSRVYodmFsKSkKKyAgT1JERVIg QlkgaWQ7CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudCwgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElU SU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHJwcl9uYXZucy5wcmV2KHZhbCkgPSAtOTk5KQorICBPUkRFUiBCWSBpZDsKK0RST1AgRlVO Q1RJT04gcHJldihpbnRlZ2VyKTsKKy0tIElNTVVUQUJMRTogdW5xdWFsaWZpZWQgaXMgbmF2OyBx dWFsaWZpZWQgaXMgdGhlIGVzY2FwZSBoYXRjaCBhbmQgc3VjY2VlZHMKK0NSRUFURSBGVU5DVElP TiBwcmV2KGludGVnZXIpIFJFVFVSTlMgaW50ZWdlciBBUyAnU0VMRUNUIC05OTknCisgIExBTkdV QUdFIHNxbCBJTU1VVEFCTEU7CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIGxhc3RfaWQKKyAgRlJPTSBudAorICBXSU5ET1cg dyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKFNUQVJU IFVQKykKKyAgICBERUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgdmFsID4gUFJFVih2YWwpKQor ICBPUkRFUiBCWSBpZDsKKy0tICh2YWwpLnByZXYgaXMgYXR0cmlidXRlIG5vdGF0aW9uLCBzbyBp dCBjYWxscyB0aGUgb3JkaW5hcnkgZnVuY3Rpb24gcHJldih2YWwpCistLSAodGhlIElNTVVUQUJM RSB1c2VyIHByZXYgaGVyZSksIHRoZSBzYW1lIGFzIHRoZSBzY2hlbWEtcXVhbGlmaWVkIGNhbGwg YmVsb3cKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbGFzdF9pZAorICBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJ T04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgKHZhbCkucHJldiA9IC05OTkpCisgIE9SREVSIEJZIGlkOworU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdyBBUyBjbnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBsYXN0X2lkCisg IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBycHJfbmF2bnMucHJldih2YWwpID0g LTk5OSkKKyAgT1JERVIgQlkgaWQ7CisKKy0tIFplcm8gb3IgbW9yZSB0aGFuIHR3byBhcmd1bWVu dHMgaXMgYW4gZXJyb3IsIHdpdGggbm8gZnVuY3Rpb24gZmFsbGJhY2sKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg SU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCkgSVMgTlVMTCk7CitT RUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBC WSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2 YWwsIDEsIDIpIElTIE5VTEwpOworLS0gdGhlIGVycm9yIHN0YW5kcyBldmVuIHdoZW4gYSB1c2Vy IGZ1bmN0aW9uIG9mIHRoYXQgZXhhY3QgYXJpdHkgZXhpc3RzCitDUkVBVEUgRlVOQ1RJT04gcHJl dihpbnRlZ2VyLCBpbnRlZ2VyLCBpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIKKyAgQVMgJ1NFTEVD VCAtOTk5JyBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisg ICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsLCAxLCAyKSBJUyBOVUxMKTsKK0RS T1AgRlVOQ1RJT04gcHJldihpbnRlZ2VyLCBpbnRlZ2VyLCBpbnRlZ2VyKTsKKworLS0gU3ludGFj dGljIGRlY29yYXRpb24gaXMgcmVqZWN0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBu dAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBB VFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKCopIElTIE5VTEwpOworU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJ TklUSUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoRElTVElOQ1QgdmFsKSBJ UyBOVUxMKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAo UEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBQUkVWKHZhbCBPUkRFUiBCWSB2YWwpIElTIE5VTEwpOworU0VMRUNUIGNvdW50KCopIE9W RVIgdyBGUk9NIG50CisgIFdJTkRPVyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklU SUFMCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodmFsKSBGSUxURVIgKFdIRVJF IHRydWUpIElTIE5VTEwpOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIG50CisgIFdJTkRP VyB3IEFTIChQQVJUSVRJT04gQlkgZyBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBJTklUSUFMCisgICAgUEFUVEVSTiAoQSsp IERFRklORSBBIEFTIFBSRVYodmFsKSBXSVRISU4gR1JPVVAgKE9SREVSIEJZIHZhbCkgSVMgTlVM TCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJ VElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg UFJFVih2YWwpIE9WRVIgKCkgSVMgTlVMTCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00g bnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQ QVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVihWQVJJQURJQyBBUlJBWVt2YWxdKSBJUyBOVUxM KTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElU SU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBw cmV2KHggPT4gdmFsKSBJUyBOVUxMKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBudAor ICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRF Uk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHZhbCkgSUdOT1JFIE5VTExTIElTIE5VTEwpOworCist LSBRdW90aW5nIGRvZXMgbm90IGVzY2FwZTogInByZXYiIGlzIG5hdiwgIlBSRVYiIGlzIGFuIG9y ZGluYXJ5IG5hbWUKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgIEZS T00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAg ICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVGSU5FIFNUQVJUIEFTIFRSVUUsIFVQIEFTIHZh bCA+ICJwcmV2Iih2YWwpKQorICBPUkRFUiBCWSBpZDsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcg RlJPTSBudAorICBXSU5ET1cgdyBBUyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAor ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyAiUFJFViIodmFsKSBJUyBOVUxMKTsKKworLS0g QSB2aWV3IHJvdW5kLXRyaXBzOiBiYXJlIFBSRVYgc3RheXMgYSBuYXZpZ2F0aW9uIGZ1bmN0aW9u LCBhbmQgYSBxdWFsaWZpZWQKKy0tIHVzZXIgcHJldigpIHN0YXlzIHNjaGVtYS1xdWFsaWZpZWQg c28gaXQgZG9lcyBub3QgcmVwYXJzZSBhcyBuYXZpZ2F0aW9uCitDUkVBVEUgVklFVyBuYXZuc19u YXYgQVMKKyAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250IEZST00gbnQKKyAgV0lO RE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChT VEFSVCBVUCspIERFRklORSBTVEFSVCBBUyBUUlVFLCBVUCBBUyB2YWwgPiBQUkVWKHZhbCkpOwor Q1JFQVRFIFZJRVcgbmF2bnNfZm4gQVMKKyAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250IEZST00gbnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJ QUwKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgcnByX25hdm5zLnByZXYodmFsKSA9IC05 OTkpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCduYXZuc19uYXYnKTsKK1NFTEVDVCBwZ19nZXRf dmlld2RlZignbmF2bnNfZm4nKTsKK0RST1AgVklFVyBuYXZuc19uYXYsIG5hdm5zX2ZuOworCist LSBBdHRyaWJ1dGUgbm90YXRpb24gaXMgZmllbGQgc2VsZWN0aW9uIG9ubHksIG5ldmVyIGEgZnVu Y3Rpb24gZmFsbGJhY2sKK0NSRUFURSBUWVBFIHJwcl9uYXZuc19wYWlyIEFTIChmaXJzdCBpbnQs IGxhc3QgaW50KTsKK0NSRUFURSBUQUJMRSBjdCAoaWQgaW50LCBwIHJwcl9uYXZuc19wYWlyKTsK K0lOU0VSVCBJTlRPIGN0IFZBTFVFUyAoMSwgKDEwLCAyMCkpLCAoMiwgKDMwLCA0MCkpOworU0VM RUNUIChwKS5sYXN0IEZST00gY3QgT1JERVIgQlkgaWQ7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 IEZST00gY3QKKyAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQQVRURVJOIChB KykgREVGSU5FIEEgQVMgKHApLmxhc3QgPiAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJP TSBjdAorICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBE RUZJTkUgQSBBUyAocCkucHJldiA+IDApOworCistLSBOYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5v dCBjb250YWluIGEgbmF2aWdhdGlvbiBvcGVyYXRpb24KK1NFTEVDVCBpZCwgdmFsCisgIEZST00g bnQKKyAgV0lORE9XIHcgQVMgKFBBUlRJVElPTiBCWSBnIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIElOSVRJQUwKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHZhbCwgRklSU1QoMSkpID4gMCkKKyAg T1JERVIgQlkgaWQ7CisKK0RST1AgU0NIRU1BIHJwcl9uYXZucyBDQVNDQURFOworUkVTRVQgc2Vh cmNoX3BhdGg7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0gU0tJUCBUTyAvIElOSVRJQUwgVGVzdHMKIC0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpA QCAtMjQyMCw2ICsyNjA5LDY4IEBAIFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyBQUkVW KEZJUlNUKFBSRVYodikpKSA+IDAKICk7CiAKKy0tIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBi ZSBhIHJ1bi10aW1lIGNvbnN0YW50LCBub3QgYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbgorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9X IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHYsIEZJUlNUKDEpKSA+IDApOworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lO RE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKHYsIEZJUlNUKDEpICsgMSkgPiAw KTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCBORVhUKDEsIDAp KSA+IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwx MCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKHYp LCBMQVNUKDEpKSA+IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBQUkVW KHYsIEZJUlNUKHYpKSA+IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBO RVhUKHYsIFBSRVYodiwgMSkpID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBB IEFTIFBSRVYoRklSU1QodiwgTEFTVCgxKSksIDIpID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspIERFRklORSBBIEFTIFBSRVYodiwgRklSU1QoMTo6YmlnaW50KSkgPiAwKTsKKworLS0gQW4g dW5rbm93biBsaXRlcmFsIGFyZ3VtZW50IHJlc29sdmVzIHRvIHRleHQ7IGl0IG11c3Qgc3RpbGwg cmVmZXJlbmNlIGEgY29sdW1uCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJF VignZm9vJykgPSAnYmFyJyk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDUpIHModikKK1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJF VignZm9vJykpOworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSw1KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYoTlVMTCkg SVMgTlVMTCk7CitQUkVQQVJFIHJwcl9uYXZhcmcgQVMgU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBzKHYpCitXSU5ET1cgdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspIERF RklORSBBIEFTIFBSRVYoJDEpIElTIE5VTEwpOworCistLSBBbiBpbnQyIG9mZnNldCBpcyBjb2Vy Y2VkIHRvIGludDggbGlrZSBhbnkgaW1wbGljaXQgY2FzdCAoc2FtZSBhcyBwbGFpbiAwKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBzKHYpCitXSU5E T1cgdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIFBSRVYodiwgMDo6c21hbGxpbnQpID0gdik7 CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIHModikK K1dJTkRPVyB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgUFJFVih2LCAwKSA9IHYpOworCiAt LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tIFdpbmRvdyBEZWR1cGxpY2F0aW9uIFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gCjIuNTAuMSAo QXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0004-dedicated-define-exprcontext.patch" Content-Disposition: attachment; filename="v50-0004-dedicated-define-exprcontext.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqltr012 RnJvbSAwYjdhNzRjYzliOWFiNDM2Nzg0M2JmNjAyMmVmNDI0MGFhZGVmMTI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDE1IEp1biAyMDI2IDE2OjU0OjEzICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTMv MjldIFVzZSBhIGRlZGljYXRlZCBFeHByQ29udGV4dCBmb3IgUlBSIERFRklORSBjbGF1c2UKIGV2 YWx1YXRpb24KCkRFRklORSBjbGF1c2VzIHdlcmUgZXZhbHVhdGVkIGluIHRoZSBwZXItb3V0cHV0 LXR1cGxlIGNvbnRleHQuICBCZWNhdXNlCkVFT1BfUlBSX05BVl9SRVNUT1JFIGNvcGllcyBwYXNz LWJ5LXJlZmVyZW5jZSBuYXZpZ2F0aW9uIHJlc3VsdHMgaW50byB0aGF0CmNvbnRleHQsIHJlc2V0 dGluZyBpdCBwZXIgcm93IGZyZWVkIHdpbmRvdyBmdW5jdGlvbiByZXN1bHRzIGJlZm9yZQpFeGVj UHJvamVjdCAoYSB1c2UtYWZ0ZXItZnJlZSksIHdoaWxlIG5vdCByZXNldHRpbmcgaXQgbGVha2Vk IGFjcm9zcyB0aGUKcGFydGl0aW9uLiAgdG1wY29udGV4dCBjYW5ub3QgYmUgcmV1c2VkIGVpdGhl ciwgYXMgRXhlY1F1YWxBbmRSZXNldCgpIHJlc2V0cwppdCBtaWQtZXhwcmVzc2lvbiB3aGVuIE5F WFQgcmUtZW50ZXJzIHNwb29sX3R1cGxlcy4gIFVzZSBhIHRoaXJkIEV4cHJDb250ZXh0LApyZXNl dCBvbmNlIHBlciByb3cgYW5kIHNlcGFyYXRlIGZyb20gYm90aC4KLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUlBSLmMgICAgICAgfCAgNSArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAyNyBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwppbmRleCBi MzI2YTU4YmJmNS4uZGU3OGIwNmQyNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKQEAgLTE1OTIs MTAgKzE1OTIsMTMgQEAgc3RhdGljIHZvaWQKIG5mYV9yZWV2YWx1YXRlX2RlcGVuZGVudF92YXJz KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQkJCQkJCSAg aW50NjQgY3VycmVudFBvcykKIHsKLQlFeHByQ29udGV4dCAqZWNvbnRleHQgPSB3aW5zdGF0ZS0+ c3MucHMucHNfRXhwckNvbnRleHQ7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUt PnJwckNvbnRleHQ7CiAJaW50NjQJCXNhdmVkX21hdGNoX3N0YXJ0ID0gd2luc3RhdGUtPm5hdl9t YXRjaF9zdGFydDsKIAlpbnQ2NAkJc2F2ZWRfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7CiAK KwkvKiBSZWxlYXNlIHRoZSBwcmV2aW91cyBldmFsdWF0aW9uJ3MgREVGSU5FIGV4cHJlc3Npb24g bWVtb3J5ICovCisJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CisKIAkvKiBUZW1wb3Jhcmls eSBzZXQgbmF2X21hdGNoX3N0YXJ0IGFuZCBjdXJyZW50cG9zIGZvciBGSVJTVC9MQVNUICovCiAJ d2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCA9IGN0eC0+bWF0Y2hTdGFydFJvdzsKIAl3aW5zdGF0 ZS0+Y3VycmVudHBvcyA9IGN1cnJlbnRQb3M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKaW5kZXggNWIyMzg1ZjFkOGQuLjkwZjMzYmRlZTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVdpbmRvd0FnZy5jCkBAIC0yNzQyLDEyICsyNzQyLDI4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKgogCSAqIENy ZWF0ZSBleHByZXNzaW9uIGNvbnRleHRzLiAgV2UgbmVlZCB0d28sIG9uZSBmb3IgcGVyLWlucHV0 LXR1cGxlCi0JICogcHJvY2Vzc2luZyBhbmQgb25lIGZvciBwZXItb3V0cHV0LXR1cGxlIHByb2Nl c3NpbmcuICBXZSBjaGVhdCBhIGxpdHRsZQotCSAqIGJ5IHVzaW5nIEV4ZWNBc3NpZ25FeHByQ29u dGV4dCgpIHRvIGJ1aWxkIGJvdGguCisJICogcHJvY2Vzc2luZyBhbmQgb25lIGZvciBwZXItb3V0 cHV0LXR1cGxlIHByb2Nlc3NpbmcsIHBsdXMgYW4gb3B0aW9uYWwKKwkgKiB0aGlyZCBmb3Igcm93 IHBhdHRlcm4gcmVjb2duaXRpb24gREVGSU5FIGV2YWx1YXRpb24gKGJ1aWx0IGp1c3QgYmVsb3cK KwkgKiB3aGVuIGEgREVGSU5FIGNsYXVzZSBpcyBwcmVzZW50KS4gIFdlIGNoZWF0IGEgbGl0dGxl IGJ5IHVzaW5nCisJICogRXhlY0Fzc2lnbkV4cHJDb250ZXh0KCkgdG8gYnVpbGQgdGhlbSBhbGwu ICBFYWNoIGNhbGwgb3ZlcndyaXRlcworCSAqIHBzX0V4cHJDb250ZXh0LCBzbyB0aGUgbGFzdCBj YWxsIG11c3QgZXN0YWJsaXNoIHRoZSBvdXRwdXQgY29udGV4dC4KIAkgKi8KIAlFeGVjQXNzaWdu RXhwckNvbnRleHQoZXN0YXRlLCAmd2luc3RhdGUtPnNzLnBzKTsKIAl0bXBjb250ZXh0ID0gd2lu c3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXdpbnN0YXRlLT50bXBjb250ZXh0ID0gdG1w Y29udGV4dDsKKworCS8qCisJICogUm93IHBhdHRlcm4gcmVjb2duaXRpb24gZXZhbHVhdGVzIERF RklORSBjbGF1c2VzIGluIGEgdGhpcmQgY29udGV4dCwKKwkgKiByZXNldCBiZWZvcmUgZWFjaCBE RUZJTkUgZXZhbHVhdGlvbiBwYXNzLiAgSXQgbXVzdCBiZSBkaXN0aW5jdCBmcm9tCisJICogdG1w Y29udGV4dCBhbmQgcHNfRXhwckNvbnRleHQgc28gaXRzIHJlc2V0IGZyZWVzIG5laXRoZXIgaW5w dXQgbm9yCisJICogb3V0cHV0IHR1cGxlIG1lbW9yeS4KKwkgKi8KKwlpZiAobm9kZS0+ZGVmaW5l Q2xhdXNlICE9IE5JTCkKKwl7CisJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZ3aW5z dGF0ZS0+c3MucHMpOworCQl3aW5zdGF0ZS0+cnByQ29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5w c19FeHByQ29udGV4dDsKKwl9CisKIAlFeGVjQXNzaWduRXhwckNvbnRleHQoZXN0YXRlLCAmd2lu c3RhdGUtPnNzLnBzKTsKIAogCS8qIENyZWF0ZSBsb25nLWxpdmVkIGNvbnRleHQgZm9yIHN0b3Jh Z2Ugb2YgcGFydGl0aW9uLWxvY2FsIG1lbW9yeSBldGMgKi8KQEAgLTQ1NzIsMTIgKzQ1ODgsMTUg QEAgc3RhdGljIGJvb2wKIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50 NjQgcG9zLCBib29sICp2YXJNYXRjaGVkKQogewogCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9 IHdpbm9iai0+d2luc3RhdGU7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnNz LnBzLnBzX0V4cHJDb250ZXh0OworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHdpbnN0YXRlLT5y cHJDb250ZXh0OwogCWludAkJCW51bURlZmluZVZhcnMgPSBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ ZGVmaW5lVmFyaWFibGVMaXN0KTsKIAlpbnQJCQl2YXJJZHggPSAwOwogCVR1cGxlVGFibGVTbG90 ICpzbG90OwogCWludDY0CQlzYXZlZF9wb3M7CiAKKwkvKiBSZWxlYXNlIHRoZSBwcmV2aW91cyBy b3cncyBERUZJTkUgZXZhbHVhdGlvbiBtZW1vcnkgKi8KKwlSZXNldEV4cHJDb250ZXh0KGVjb250 ZXh0KTsKKwogCS8qIEZldGNoIGN1cnJlbnQgcm93IGludG8gdGVtcF9zbG90XzEgKi8KIAlzbG90 ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOwogCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5v YmosIHBvcywgc2xvdCkpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDgwNjBiMDE4ZWY4Li41YjRh YzhhNmMzMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI2OTgsNiArMjY5OCw3IEBAIHR5cGVk ZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRlCiAJTWVtb3J5Q29udGV4dCBhZ2djb250ZXh0OwkvKiBz aGFyZWQgY29udGV4dCBmb3IgYWdncmVnYXRlIHdvcmtpbmcgZGF0YSAqLwogCU1lbW9yeUNvbnRl eHQgY3VyYWdnY29udGV4dDsJLyogY3VycmVudCBhZ2dyZWdhdGUncyB3b3JraW5nIGRhdGEgKi8K IAlFeHByQ29udGV4dCAqdG1wY29udGV4dDsJLyogc2hvcnQtdGVybSBldmFsdWF0aW9uIGNvbnRl eHQgKi8KKwlFeHByQ29udGV4dCAqcnByQ29udGV4dDsJLyogREVGSU5FIGNsYXVzZSBldmFsdWF0 aW9uIGNvbnRleHQgKi8KIAogCWJvb2wJCWFsbF9maXJzdDsJCS8qIHRydWUgaWYgdGhlIHNjYW4g aXMgc3RhcnRpbmcgKi8KIAlib29sCQlwYXJ0aXRpb25fc3Bvb2xlZDsJLyogdHJ1ZSBpZiBhbGwg dHVwbGVzIGluIGN1cnJlbnQgcGFydGl0aW9uCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0005-match-once-per-row.patch" Content-Disposition: attachment; filename="v50-0005-match-once-per-row.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlvl313 RnJvbSA5ZDYzYWM5MzM5NmVjNjU4MDk5NGM0YTFlYWExM2NkZDllMDFlZGNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDE2IEp1biAyMDI2IDEzOjAyOjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTQv MjldIERyaXZlIFJQUiByb3cgcGF0dGVybiBtYXRjaGluZyBvbmNlIHBlciByb3cKClJvdyBwYXR0 ZXJuIG1hdGNoaW5nIG9ubHkgYWR2YW5jZWQgd2hlbiBhIHdpbmRvdyBmdW5jdGlvbiByZWFkIHRo ZSBmcmFtZSwKc28gYSByb3cgd2hvc2Ugb25seSB3aW5kb3cgZnVuY3Rpb24gc2tpcHMgdGhlIGZy YW1lIChlLmcuIG50aF92YWx1ZSgpIHdpdGgKYSBOVUxMIG9mZnNldCkgbGVmdCB0aGUgbWF0Y2gg c3RhdGUgYmVoaW5kIHRoZSBjdXJyZW50IHJvdywgcHJvZHVjaW5nCnNpbGVudGx5IHdyb25nIHJl c3VsdHMgYW5kIGEgc3B1cmlvdXMgImNhbm5vdCBmZXRjaCByb3cgYmVmb3JlIG1hcmsKcG9zaXRp b24iIGVycm9yLgoKQWR2YW5jZSB0aGUgbWF0Y2ggb25jZSBwZXIgcm93LCBiZWZvcmUgdGhlIHdp bmRvdyBmdW5jdGlvbnMgcnVuLCBzbyBpdAp0cmFja3MgdGhlIHJvdyBzY2FuIHJhdGhlciB0aGFu IGZyYW1lIGFjY2Vzcy4gIEV4dHJhY3QgdGhlIHJlZHVjZWQtZnJhbWUKbG9vcCBpbnRvIGFkdmFu Y2VfcmVkdWNlZF9mcmFtZV9uZmEoKSBhbmQgdGhlIG1hcmsgYWR2YW5jZSBpbnRvCmFkdmFuY2Vf bmF2X21hcmsoKSwgYWR2YW5jaW5nIHRoZSBuYXZpZ2F0aW9uIG1hcmsgZnJvbSB0aGUgZnJvbnRp ZXIgdGhlCm1hdGNoIHJlYWNoZWQgcmF0aGVyIHRoYW4gZnJvbSB0aGUgb3V0cHV0IHJvdywgc28g dHVwbGVzdG9yZV90cmltKCkgZnJlZXMKcm93cyBzb29uZXIuCgpBZGQgcmVncmVzc2lvbiBjb3Zl cmFnZSBmb3IgdGhlIGZyYW1lLXNraXBwaW5nIGFuZCBQUkVWLW9ubHkgZGVmZXJyZWQtZnJhbWUK Y2FzZXMsIGFuZCBhc3NlcnQgdGhlIGNvbnRleHRzJyBub25kZWNyZWFzaW5nIG1hdGNoU3RhcnRS b3cgb3JkZXJpbmcuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jICAgICAgIHwg ICA4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgfCAyNTQgKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQg ICAgfCAxNDkgKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCAg ICAgICAgIHwgIDc1ICsrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM4NSBpbnNlcnRpb25zKCsp LCAxMDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGRlNzhiMDZkMjc3 Li5jZWE3ZTBiMjk3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMTY2Niw3ICsxNjY2LDEz IEBAIEV4ZWNSUFJTdGFydENvbnRleHQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBz dGFydFBvcykKIAkJY3R4LT5zdGF0ZXMtPmlzQWJzb3JiYWJsZSA9IGZhbHNlOwogCX0KIAotCS8q IEFkZCB0byB0YWlsIG9mIGFjdGl2ZSBjb250ZXh0IGxpc3QgKGRvdWJseS1saW5rZWQsIG9sZGVz dC1maXJzdCkgKi8KKwkvKgorCSAqIEFkZCB0byB0YWlsIG9mIGFjdGl2ZSBjb250ZXh0IGxpc3Qg KGRvdWJseS1saW5rZWQsIG9sZGVzdC1maXJzdCkuCisJICogbWF0Y2hTdGFydFJvdyBpcyBub25k ZWNyZWFzaW5nIGFsb25nIHRoZSBsaXN0LCBzbyB0aGUgaGVhZCBob2xkcyB0aGUKKwkgKiBzbWFs bGVzdCAtLSBhbiBvcmRlcmluZyBvdGhlciBjb2RlIHJlbGllcyBvbi4KKwkgKi8KKwlBc3NlcnQo d2luc3RhdGUtPm5mYUNvbnRleHRUYWlsID09IE5VTEwgfHwKKwkJICAgc3RhcnRQb3MgPj0gd2lu c3RhdGUtPm5mYUNvbnRleHRUYWlsLT5tYXRjaFN0YXJ0Um93KTsKIAljdHgtPnByZXYgPSB3aW5z dGF0ZS0+bmZhQ29udGV4dFRhaWw7CiAJY3R4LT5uZXh0ID0gTlVMTDsKIAlpZiAod2luc3RhdGUt Pm5mYUNvbnRleHRUYWlsICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMK aW5kZXggOTBmMzNiZGVlNDAuLjJkOTc3MTBkYThhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jCkBAIC0yMzksNiArMjM5LDEwIEBAIHN0YXRpYyBpbnQ2NCByb3dfaXNfaW5fcmVk dWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpOwogCiBzdGF0aWMgdm9p ZCBjbGVhcl9yZWR1Y2VkX2ZyYW1lKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7CiBzdGF0aWMg aW50CWdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGlu dDY0IHBvcyk7CitzdGF0aWMgdm9pZCBhZHZhbmNlX25hdl9tYXJrKFdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZSwgaW50NjQgY3VycmVudFBvcyk7CitzdGF0aWMgdm9pZCBhZHZhbmNlX3JlZHVjZWRf ZnJhbWVfbmZhKFdpbmRvd09iamVjdCB3aW5vYmosCisJCQkJCQkJCQkgIFJQUk5GQUNvbnRleHQg KnRhcmdldEN0eCwgaW50NjQgcG9zLAorCQkJCQkJCQkJICBib29sIGhhc0xpbWl0ZWRGcmFtZSwg aW50NjQgZnJhbWVPZmZzZXQpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlZHVjZWRfZnJhbWUoV2lu ZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMg LSBORkEgcm93IGV2YWx1YXRpb24gKi8KQEAgLTI1MjEsNiArMjUyNSwxNiBAQCBFeGVjV2luZG93 QWdnKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJewogCQkJCWlmICh3aW5zdGF0ZS0+cnBTa2lwVG8g PT0gU1RfTkVYVF9ST1cpCiAJCQkJCWNsZWFyX3JlZHVjZWRfZnJhbWUod2luc3RhdGUpOworCisJ CQkJLyoKKwkJCQkgKiBEcml2ZSB0aGUgcm93IHBhdHRlcm4gbWF0Y2ggZXZlcnkgcm93LCBzbyBp dCB0cmFja3MgdGhlIHJvdworCQkJCSAqIHNjYW4gcmF0aGVyIHRoYW4gZnJhbWUgYWNjZXNzOiBh IHdpbmRvdyBmdW5jdGlvbiB0aGF0IHNraXBzCisJCQkJICogdGhlIGZyYW1lIChlLmcuIG50aF92 YWx1ZSgpIHdpdGggYSBOVUxMIG9mZnNldCkgbXVzdCBub3QKKwkJCQkgKiBsZWF2ZSB0aGUgbWF0 Y2ggc3RhdGUgYmVoaW5kIGN1cnJlbnRwb3MuCisJCQkJICovCisJCQkJQXNzZXJ0KHdpbnN0YXRl LT5uYXZfd2lub2JqICE9IE5VTEwpOworCQkJCSh2b2lkKSByb3dfaXNfaW5fcmVkdWNlZF9mcmFt ZSh3aW5zdGF0ZS0+bmF2X3dpbm9iaiwKKwkJCQkJCQkJCQkJICAgd2luc3RhdGUtPmN1cnJlbnRw b3MpOwogCQkJfQogCiAJCQkvKgpAQCAtMjU2Miw0MyArMjU3Niw2IEBAIEV4ZWNXaW5kb3dBZ2co UGxhblN0YXRlICpwc3RhdGUpCiAJCWlmICh3aW5zdGF0ZS0+Z3JvdXB0YWlsX3B0ciA+PSAwKQog CQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3aW5zdGF0ZSk7CiAKLQkJLyoKLQkJICogQWR2YW5jZSBS UFIgbmF2aWdhdGlvbiBtYXJrIHBvaW50ZXIgaWYgcG9zc2libGUsIHNvIHRoYXQKLQkJICogdHVw bGVzdG9yZV90cmltKCkgY2FuIGZyZWUgcm93cyBubyBsb25nZXIgcmVhY2hhYmxlIGJ5IG5hdmln YXRpb24uCi0JCSAqLwotCQlpZiAod2luc3RhdGUtPm5hdl93aW5vYmogJiYKLQkJCXdpbnN0YXRl LT5ycFBhdHRlcm4gIT0gTlVMTCAmJgotCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPT0g UlBSX05BVl9PRkZTRVRfRklYRUQpCi0JCXsKLQkJCWludDY0CQluYXZtYXJrcG9zOwotCi0JCQkv KiBCYWNrd2FyZCByZWFjaCBmcm9tIFBSRVYvTEFTVC9jb21wb3VuZCBQUkVWX0xBU1QvTkVYVF9M QVNUICovCi0JCQlpZiAod2luc3RhdGUtPmN1cnJlbnRwb3MgPiB3aW5zdGF0ZS0+bmF2TWF4T2Zm c2V0KQotCQkJCW5hdm1hcmtwb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvcyAtIHdpbnN0YXRlLT5u YXZNYXhPZmZzZXQ7Ci0JCQllbHNlCi0JCQkJbmF2bWFya3BvcyA9IDA7Ci0KLQkJCS8qCi0JCQkg KiBJZiBGSVJTVCBpcyB1c2VkLCBhbHNvIGNvbnNpZGVyIG1hdGNoX3N0YXJ0ICsgbmF2Rmlyc3RP ZmZzZXQuCi0JCQkgKiBUaGUgb2xkZXN0IGFjdGl2ZSBjb250ZXh0IChuZmFDb250ZXh0KSBoYXMg dGhlIHNtYWxsZXN0Ci0JCQkgKiBtYXRjaFN0YXJ0Um93LgotCQkJICovCi0JCQlpZiAod2luc3Rh dGUtPmhhc0ZpcnN0TmF2ICYmCi0JCQkJd2luc3RhdGUtPm5hdkZpcnN0T2Zmc2V0S2luZCA9PSBS UFJfTkFWX09GRlNFVF9GSVhFRCAmJgotCQkJCXdpbnN0YXRlLT5uZmFDb250ZXh0ICE9IE5VTEwp Ci0JCQl7Ci0JCQkJaW50NjQJCWZpcnN0cmVhY2g7Ci0KLQkJCQlpZiAoIXBnX2FkZF9zNjRfb3Zl cmZsb3cod2luc3RhdGUtPm5mYUNvbnRleHQtPm1hdGNoU3RhcnRSb3csCi0JCQkJCQkJCQkJIHdp bnN0YXRlLT5uYXZGaXJzdE9mZnNldCwKLQkJCQkJCQkJCQkgJmZpcnN0cmVhY2gpKQotCQkJCQlu YXZtYXJrcG9zID0gTWluKG5hdm1hcmtwb3MsIE1heChmaXJzdHJlYWNoLCAwKSk7Ci0JCQl9Ci0K LQkJCWlmIChuYXZtYXJrcG9zID4gd2luc3RhdGUtPm5hdl93aW5vYmotPm1hcmtwb3MpCi0JCQkJ V2luU2V0TWFya1Bvc2l0aW9uKHdpbnN0YXRlLT5uYXZfd2lub2JqLCBuYXZtYXJrcG9zKTsKLQkJ fQotCiAJCS8qCiAJCSAqIFRydW5jYXRlIGFueSBuby1sb25nZXItbmVlZGVkIHJvd3MgZnJvbSB0 aGUgdHVwbGVzdG9yZS4KIAkJICovCkBAIC00MzgyLDYgKzQzNTksMTQzIEBAIGdldF9yZWR1Y2Vk X2ZyYW1lX3N0YXR1cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcykKIAlyZXR1 cm4gUkZfU0tJUFBFRDsKIH0KIAorLyoKKyAqIGFkdmFuY2VfbmF2X21hcmsKKyAqCQlBZHZhbmNl IHRoZSBSUFIgbmF2aWdhdGlvbiBtYXJrLCBkZXJpdmVkIGZyb20gdGhlIE5GQSBmcm9udGllcgor ICoJCShjdXJyZW50UG9zKSBidXQgaGVsZCBiYWNrIGJ5IHRoZSBuYXZpZ2F0aW9uJ3MgYmFja3dh cmQgcmVhY2gsIHNvCisgKgkJdHVwbGVzdG9yZV90cmltKCkgY2FuIGZyZWUgcm93cyBubyBsb25n ZXIgcmVhY2hhYmxlIGJ5IG5hdmlnYXRpb24uCisgKgorICogVGhlIG5hdiByZWFkIHBvaW50ZXIg aXMgaW5kZXBlbmRlbnQgb2YgdGhlIGFnZ3JlZ2F0ZSBhbmQgcGVyLWZ1bmN0aW9uIHJlYWQKKyAq IHBvaW50ZXJzLCBzbyBtb3ZpbmcgaXRzIG1hcmsgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGZldGNo ZXM7IGl0IG9ubHkgYm91bmRzCisgKiB0aGUgREVGSU5FIGNsYXVzZSdzIG93biBQUkVWL0xBU1Qv RklSU1QgbG9va3Vwcy4gIEJhY2t3YXJkIHJlYWNoIChQUkVWL0xBU1QpCisgKiBpcyBtZWFzdXJl ZCBmcm9tIHRoZSBmcm9udGllci4gIEZJUlNUIHJlYWNoZXMgYmFjayBmcm9tIHRoZSBoZWFkIGNv bnRleHQncworICogbWF0Y2hTdGFydFJvdyBpbnN0ZWFkLCBzbyBpdCBpcyBib3VuZGVkIHNlcGFy YXRlbHk7IHdpdGhvdXQgRklSU1QgdGhlIG1hcmsKKyAqIGNhbiBmb2xsb3cgdGhlIGZyb250aWVy IGZyZWVseS4KKyAqLworc3RhdGljIHZvaWQKK2FkdmFuY2VfbmF2X21hcmsoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBjdXJyZW50UG9zKQoreworCWludDY0CQluYXZtYXJrcG9zOwor CisJLyogTm8gUlBSIG5hdmlnYXRpb24gcmVhZCBwb2ludGVyOiBub3RoaW5nIHRvIGFkdmFuY2Ug Ki8KKwlpZiAod2luc3RhdGUtPm5hdl93aW5vYmogPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyog UkVUQUlOX0FMTCBkaXNhYmxlcyB0cmltIGZvciB0aGUgYmFja3dhcmQgKFBSRVYvTEFTVCkgZGlt ZW5zaW9uICovCisJaWYgKHdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZG U0VUX1JFVEFJTl9BTEwpCisJCXJldHVybjsKKworCS8qIG5hdk1heCBpcyBGSVhFRCBoZXJlOiBO RUVEU19FVkFMIHJlc29sdmVkLCBSRVRBSU5fQUxMIHJldHVybmVkICovCisJQXNzZXJ0KHdpbnN0 YXRlLT5uYXZNYXhPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEKTsKKworCWlmIChj dXJyZW50UG9zID4gd2luc3RhdGUtPm5hdk1heE9mZnNldCkKKwkJbmF2bWFya3BvcyA9IGN1cnJl bnRQb3MgLSB3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0OworCWVsc2UKKwkJbmF2bWFya3BvcyA9IDA7 CisKKwlpZiAod2luc3RhdGUtPmhhc0ZpcnN0TmF2ICYmIHdpbnN0YXRlLT5uZmFDb250ZXh0ICE9 IE5VTEwpCisJeworCQlpbnQ2NAkJZmlyc3RyZWFjaDsKKworCQkvKiBuYXZGaXJzdCBpcyBhbHdh eXMgRklYRUQ7IGl0IG5ldmVyIHRha2VzIFJFVEFJTl9BTEwgKi8KKwkJQXNzZXJ0KHdpbnN0YXRl LT5uYXZGaXJzdE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfRklYRUQpOworCisJCS8qCisJ CSAqIEhlYWQgY29udGV4dCBoYXMgdGhlIHNtYWxsZXN0IG1hdGNoU3RhcnRSb3cgKGNvbnRleHRz IGFwcGVuZGVkIGluCisJCSAqIG5vbmRlY3JlYXNpbmcgb3JkZXIpLCBzbyBib3VuZGluZyBieSBp dCBjb3ZlcnMgZXZlcnkgRklSU1QgcmVhY2guCisJCSAqLworCQlpZiAoIXBnX2FkZF9zNjRfb3Zl cmZsb3cod2luc3RhdGUtPm5mYUNvbnRleHQtPm1hdGNoU3RhcnRSb3csCisJCQkJCQkJCSB3aW5z dGF0ZS0+bmF2Rmlyc3RPZmZzZXQsCisJCQkJCQkJCSAmZmlyc3RyZWFjaCkpCisJCQluYXZtYXJr cG9zID0gTWluKG5hdm1hcmtwb3MsIE1heChmaXJzdHJlYWNoLCAwKSk7CisJfQorCisJaWYgKG5h dm1hcmtwb3MgPiB3aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcykKKwkJV2luU2V0TWFya1Bv c2l0aW9uKHdpbnN0YXRlLT5uYXZfd2lub2JqLCBuYXZtYXJrcG9zKTsKK30KKworLyoKKyAqIGFk dmFuY2VfcmVkdWNlZF9mcmFtZV9uZmEKKyAqCQlEcml2ZSB0aGUgTkZBIGZvcndhcmQgdW50aWwg dGFyZ2V0Q3R4IGNvbXBsZXRlcyBvciB0aGUgcGFydGl0aW9uIGVuZHMuCisgKgorICogVGhpcyBp cyB0aGUgbWF0Y2ggZHJpdmVyLCBleHRyYWN0ZWQgZnJvbSB1cGRhdGVfcmVkdWNlZF9mcmFtZSgp LCB3aGljaCBjYWxscworICogaXQgdG8gYWR2YW5jZSB0aGUgbWF0Y2ggYW5kIHRoZW4gcmVjb3Jk cyB0aGUgcmVzb2x2ZWQgcmVzdWx0LiAgUm93CisgKiBldmFsdWF0aW9ucyBhcmUgc2hhcmVkIGFj cm9zcyBhbGwgYWN0aXZlIGNvbnRleHRzLgorICovCitzdGF0aWMgdm9pZAorYWR2YW5jZV9yZWR1 Y2VkX2ZyYW1lX25mYShXaW5kb3dPYmplY3Qgd2lub2JqLCBSUFJORkFDb250ZXh0ICp0YXJnZXRD dHgsCisJCQkJCQkgIGludDY0IHBvcywgYm9vbCBoYXNMaW1pdGVkRnJhbWUsIGludDY0IGZyYW1l T2Zmc2V0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7 CisJaW50NjQJCWN1cnJlbnRQb3M7CisJaW50NjQJCXN0YXJ0UG9zOworCisJLyoKKwkgKiBEZXRl cm1pbmUgd2hlcmUgdG8gc3RhcnQgcHJvY2Vzc2luZy4gVXN1YWxseSBuZmFMYXN0UHJvY2Vzc2Vk Um93KzEgPj0KKwkgKiBwb3Mgc2luY2UgY29udGV4dHMgYXJlIGNyZWF0ZWQgYXQgY3VycmVudFBv cysxIGR1cmluZyBwcm9jZXNzaW5nLgorCSAqIEhvd2V2ZXIsIHBvcyBjYW4gZXhjZWVkIHRoaXMg d2hlbiByb3dzIGFyZSBza2lwcGVkIChlLmcuLCB1bm1hdGNoZWQKKwkgKiByb3dzIGRvbid0IHVw ZGF0ZSBuZmFMYXN0UHJvY2Vzc2VkUm93KS4KKwkgKi8KKwlzdGFydFBvcyA9IE1heChwb3MsIHdp bnN0YXRlLT5uZmFMYXN0UHJvY2Vzc2VkUm93ICsgMSk7CisKKwkvKgorCSAqIFByb2Nlc3Mgcm93 cyB1bnRpbCB0YXJnZXQgY29udGV4dCBjb21wbGV0ZXMgb3Igd2UgaGl0IGJvdW5kYXJpZXMuIEVh Y2gKKwkgKiByb3cgZXZhbHVhdGlvbiBpcyBzaGFyZWQgYWNyb3NzIGFsbCBhY3RpdmUgY29udGV4 dHMuCisJICovCisJZm9yIChjdXJyZW50UG9zID0gc3RhcnRQb3M7IHRhcmdldEN0eC0+c3RhdGVz ICE9IE5VTEw7IGN1cnJlbnRQb3MrKykKKwl7CisJCWJvb2wJCXJvd0V4aXN0czsKKworCQkvKgor CQkgKiBFdmFsdWF0ZSB2YXJpYWJsZXMgZm9yIHRoaXMgcm93IC0gZG9uZSBvbmx5IG9uY2UsIHNo YXJlZCBieSBhbGwKKwkJICogY29udGV4dHMuCisJCSAqCisJCSAqIFNldCBuYXZfbWF0Y2hfc3Rh cnQgdG8gdGhlIGhlYWQgY29udGV4dCdzIG1hdGNoU3RhcnRSb3cgZm9yCisJCSAqIEZJUlNUL0xB U1QgbmF2aWdhdGlvbi4gIE1hdGNoX3N0YXJ0LWRlcGVuZGVudCB2YXJpYWJsZXMgKEZJUlNULAor CQkgKiBMQVNULXdpdGgtb2Zmc2V0KSBhcmUgcmUtZXZhbHVhdGVkIHBlci1jb250ZXh0IGluIEV4 ZWNSUFJQcm9jZXNzUm93CisJCSAqIHdoZW4gbWF0Y2hTdGFydFJvdyBkaWZmZXJzLgorCQkgKi8K KwkJd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCA9IHRhcmdldEN0eC0+bWF0Y2hTdGFydFJvdzsK KwkJcm93RXhpc3RzID0gbmZhX2V2YWx1YXRlX3Jvdyh3aW5vYmosIGN1cnJlbnRQb3MsIHdpbnN0 YXRlLT5uZmFWYXJNYXRjaGVkKTsKKworCQkvKiBObyBtb3JlIHJvd3MgaW4gcGFydGl0aW9uPyBG aW5hbGl6ZSBhbGwgY29udGV4dHMgKi8KKwkJaWYgKCFyb3dFeGlzdHMpCisJCXsKKwkJCUV4ZWNS UFJGaW5hbGl6ZUFsbENvbnRleHRzKHdpbnN0YXRlLCBjdXJyZW50UG9zIC0gMSk7CisJCQkvKiBD bGVhbiB1cCBkZWFkIGNvbnRleHRzIGZyb20gZmluYWxpemF0aW9uICovCisJCQlFeGVjUlBSQ2xl YW51cERlYWRDb250ZXh0cyh3aW5zdGF0ZSwgdGFyZ2V0Q3R4KTsKKwkJCWJyZWFrOworCQl9CisK KwkJLyogVXBkYXRlIGxhc3QgcHJvY2Vzc2VkIHJvdyAqLworCQl3aW5zdGF0ZS0+bmZhTGFzdFBy b2Nlc3NlZFJvdyA9IGN1cnJlbnRQb3M7CisKKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCQkgKiBQcm9jZXNzIGFsbCBjb250ZXh0cyBmb3IgdGhpcyByb3c6CisJCSAqICAgMS4gTWF0 Y2ggYWxsIChjb252ZXJnZW5jZSkKKwkJICogICAyLiBBYnNvcmIgcmVkdW5kYW50CisJCSAqICAg My4gQWR2YW5jZSBhbGwgKGRpdmVyZ2VuY2UpCisJCSAqLworCQlFeGVjUlBSUHJvY2Vzc1Jvdyh3 aW5zdGF0ZSwgY3VycmVudFBvcywgaGFzTGltaXRlZEZyYW1lLCBmcmFtZU9mZnNldCk7CisKKwkJ LyoKKwkJICogQ3JlYXRlIGEgbmV3IGNvbnRleHQgZm9yIHRoZSBuZXh0IHBvdGVudGlhbCBzdGFy dCBwb3NpdGlvbi4gVGhpcworCQkgKiBlbmFibGVzIG92ZXJsYXBwaW5nIG1hdGNoIGRldGVjdGlv biBmb3IgU0tJUCBUTyBORVhUIFJPVy4KKwkJICovCisJCUV4ZWNSUFJTdGFydENvbnRleHQod2lu c3RhdGUsIGN1cnJlbnRQb3MgKyAxKTsKKworCQkvKgorCQkgKiBDbGVhbiB1cCBkZWFkIGNvbnRl eHRzIChmYWlsZWQgd2l0aCBubyBhY3RpdmUgc3RhdGVzIGFuZCBubyBtYXRjaCkuCisJCSAqIFRo aXMgcmVtb3ZlcyBjb250ZXh0cyB0aGF0IGZhaWxlZCBkdXJpbmcgcHJvY2Vzc2luZyBhbmQgY291 bnRzIHRoZW0KKwkJICogYXBwcm9wcmlhdGVseSBhcyBwcnVuZWQgb3IgbWlzbWF0Y2hlZC4KKwkJ ICovCisJCUV4ZWNSUFJDbGVhbnVwRGVhZENvbnRleHRzKHdpbnN0YXRlLCB0YXJnZXRDdHgpOwor CisJCS8qIEFkdmFuY2UgdGhlIG5hdiBtYXJrIHRvIHRoZSBmcm9udGllciBzbyB0cmltIGNhbiBm cmVlIG9sZCByb3dzLiAqLworCQlhZHZhbmNlX25hdl9tYXJrKHdpbnN0YXRlLCBjdXJyZW50UG9z KTsKKwl9Cit9CisKIC8qCiAgKiB1cGRhdGVfcmVkdWNlZF9mcmFtZQogICoJCVVwZGF0ZSByZWR1 Y2VkIGZyYW1lIGluZm8gdXNpbmcgbXVsdGktY29udGV4dCBORkEgcGF0dGVybiBtYXRjaGluZy4K QEAgLTQ0MDEsOCArNDUxNSw2IEBAIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3 aW5vYmosIGludDY0IHBvcykKIHsKIAlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUgPSB3aW5vYmot PndpbnN0YXRlOwogCVJQUk5GQUNvbnRleHQgKnRhcmdldEN0eDsKLQlpbnQ2NAkJY3VycmVudFBv czsKLQlpbnQ2NAkJc3RhcnRQb3M7CiAJaW50CQkJZnJhbWVPcHRpb25zID0gd2luc3RhdGUtPmZy YW1lT3B0aW9uczsKIAlib29sCQloYXNMaW1pdGVkRnJhbWU7CiAJaW50NjQJCWZyYW1lT2Zmc2V0 ID0gMDsKQEAgLTQ0NjgsNjcgKzQ1ODAsOSBAQCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dP YmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpCiAJCWdvdG8gcmVnaXN0ZXJfcmVzdWx0OwogCX0KIAot CS8qCi0JICogRGV0ZXJtaW5lIHdoZXJlIHRvIHN0YXJ0IHByb2Nlc3NpbmcuIFVzdWFsbHkgbmZh TGFzdFByb2Nlc3NlZFJvdysxID49Ci0JICogcG9zIHNpbmNlIGNvbnRleHRzIGFyZSBjcmVhdGVk IGF0IGN1cnJlbnRQb3MrMSBkdXJpbmcgcHJvY2Vzc2luZy4KLQkgKiBIb3dldmVyLCBwb3MgY2Fu IGV4Y2VlZCB0aGlzIHdoZW4gcm93cyBhcmUgc2tpcHBlZCAoZS5nLiwgdW5tYXRjaGVkCi0JICog cm93cyBkb24ndCB1cGRhdGUgbmZhTGFzdFByb2Nlc3NlZFJvdykuCi0JICovCi0Jc3RhcnRQb3Mg PSBNYXgocG9zLCB3aW5zdGF0ZS0+bmZhTGFzdFByb2Nlc3NlZFJvdyArIDEpOwotCi0JLyoKLQkg KiBQcm9jZXNzIHJvd3MgdW50aWwgdGFyZ2V0IGNvbnRleHQgY29tcGxldGVzIG9yIHdlIGhpdCBi b3VuZGFyaWVzLiBFYWNoCi0JICogcm93IGV2YWx1YXRpb24gaXMgc2hhcmVkIGFjcm9zcyBhbGwg YWN0aXZlIGNvbnRleHRzLgotCSAqLwotCWZvciAoY3VycmVudFBvcyA9IHN0YXJ0UG9zOyB0YXJn ZXRDdHgtPnN0YXRlcyAhPSBOVUxMOyBjdXJyZW50UG9zKyspCi0JewotCQlib29sCQlyb3dFeGlz dHM7Ci0KLQkJLyoKLQkJICogRXZhbHVhdGUgdmFyaWFibGVzIGZvciB0aGlzIHJvdyAtIGRvbmUg b25seSBvbmNlLCBzaGFyZWQgYnkgYWxsCi0JCSAqIGNvbnRleHRzLgotCQkgKgotCQkgKiBTZXQg bmF2X21hdGNoX3N0YXJ0IHRvIHRoZSBoZWFkIGNvbnRleHQncyBtYXRjaFN0YXJ0Um93IGZvcgot CQkgKiBGSVJTVC9MQVNUIG5hdmlnYXRpb24uICBNYXRjaF9zdGFydC1kZXBlbmRlbnQgdmFyaWFi bGVzIChGSVJTVCwKLQkJICogTEFTVC13aXRoLW9mZnNldCkgYXJlIHJlLWV2YWx1YXRlZCBwZXIt Y29udGV4dCBpbiBFeGVjUlBSUHJvY2Vzc1JvdwotCQkgKiB3aGVuIG1hdGNoU3RhcnRSb3cgZGlm ZmVycy4KLQkJICovCi0JCXdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQgPSB0YXJnZXRDdHgtPm1h dGNoU3RhcnRSb3c7Ci0JCXJvd0V4aXN0cyA9IG5mYV9ldmFsdWF0ZV9yb3cod2lub2JqLCBjdXJy ZW50UG9zLCB3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZCk7Ci0KLQkJLyogTm8gbW9yZSByb3dzIGlu IHBhcnRpdGlvbj8gRmluYWxpemUgYWxsIGNvbnRleHRzICovCi0JCWlmICghcm93RXhpc3RzKQot CQl7Ci0JCQlFeGVjUlBSRmluYWxpemVBbGxDb250ZXh0cyh3aW5zdGF0ZSwgY3VycmVudFBvcyAt IDEpOwotCQkJLyogQ2xlYW4gdXAgZGVhZCBjb250ZXh0cyBmcm9tIGZpbmFsaXphdGlvbiAqLwot CQkJRXhlY1JQUkNsZWFudXBEZWFkQ29udGV4dHMod2luc3RhdGUsIHRhcmdldEN0eCk7Ci0JCQli cmVhazsKLQkJfQotCi0JCS8qIFVwZGF0ZSBsYXN0IHByb2Nlc3NlZCByb3cgKi8KLQkJd2luc3Rh dGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgPSBjdXJyZW50UG9zOwotCi0JCS8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLQkJICogUHJvY2VzcyBhbGwgY29udGV4dHMgZm9yIHRoaXMgcm93Ogot CQkgKiAgIDEuIE1hdGNoIGFsbCAoY29udmVyZ2VuY2UpCi0JCSAqICAgMi4gQWJzb3JiIHJlZHVu ZGFudAotCQkgKiAgIDMuIEFkdmFuY2UgYWxsIChkaXZlcmdlbmNlKQotCQkgKi8KLQkJRXhlY1JQ UlByb2Nlc3NSb3cod2luc3RhdGUsIGN1cnJlbnRQb3MsIGhhc0xpbWl0ZWRGcmFtZSwgZnJhbWVP ZmZzZXQpOwotCi0JCS8qCi0JCSAqIENyZWF0ZSBhIG5ldyBjb250ZXh0IGZvciB0aGUgbmV4dCBw b3RlbnRpYWwgc3RhcnQgcG9zaXRpb24uIFRoaXMKLQkJICogZW5hYmxlcyBvdmVybGFwcGluZyBt YXRjaCBkZXRlY3Rpb24gZm9yIFNLSVAgVE8gTkVYVCBST1cuCi0JCSAqLwotCQlFeGVjUlBSU3Rh cnRDb250ZXh0KHdpbnN0YXRlLCBjdXJyZW50UG9zICsgMSk7Ci0KLQkJLyoKLQkJICogQ2xlYW4g dXAgZGVhZCBjb250ZXh0cyAoZmFpbGVkIHdpdGggbm8gYWN0aXZlIHN0YXRlcyBhbmQgbm8gbWF0 Y2gpLgotCQkgKiBUaGlzIHJlbW92ZXMgY29udGV4dHMgdGhhdCBmYWlsZWQgZHVyaW5nIHByb2Nl c3NpbmcgYW5kIGNvdW50cyB0aGVtCi0JCSAqIGFwcHJvcHJpYXRlbHkgYXMgcHJ1bmVkIG9yIG1p c21hdGNoZWQuCi0JCSAqLwotCQlFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cyh3aW5zdGF0ZSwg dGFyZ2V0Q3R4KTsKLQl9CisJLyogRHJpdmUgdGhlIE5GQSBmb3J3YXJkIHVudGlsIHBvcydzIG1h dGNoIGlzIHJlc29sdmVkLiAqLworCWFkdmFuY2VfcmVkdWNlZF9mcmFtZV9uZmEod2lub2JqLCB0 YXJnZXRDdHgsIHBvcywgaGFzTGltaXRlZEZyYW1lLAorCQkJCQkJCSAgZnJhbWVPZmZzZXQpOwog CiByZWdpc3Rlcl9yZXN1bHQ6CiAJQXNzZXJ0KHBvcyA9PSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRS b3cpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IGRjNTE0MGZlY2M5Li42YWQ4MzBi OWUzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMzI5Nyw2ICszMjk3LDE1NSBA QCBXSU5ET1cgdyBBUyAoCiAgIDQgfCAgMjAgfCAgICAgICAgICAgfCAgIDAKICg0IHJvd3MpCiAK Ky0tCistLSBudGhfdmFsdWUgd2l0aCBhIE5VTEwgb2Zmc2V0CistLQorQ1JFQVRFIFRBQkxFIHJw cl9kb3JtYW50IChpZCBpbnQsIHByaWNlIGludCk7CitJTlNFUlQgSU5UTyBycHJfZG9ybWFudCBT RUxFQ1QgZywgZyoxMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDYwKSBnOworLS0gcmVmZXJlbmNl OiBmaXJzdF92YWx1ZShpZCkgaXMgdGhlIHN0YXJ0IHJvdyBvZiB0aGUgbWF0Y2ggYmVnaW5uaW5n IGF0IHRoZQorLS0gY3VycmVudCByb3csIGNvdW50KCopIGlzIHRoYXQgbWF0Y2gncyBsZW5ndGgg b3ZlciB0aGUgcmVkdWNlZCBmcmFtZQorU0VMRUNUICogRlJPTSAoCisgIFNFTEVDVCBpZCwgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgY291bnQoKikgT1ZFUiB3IEFTIG1h dGNoX2xlbgorICBGUk9NIHJwcl9kb3JtYW50CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg cHJpY2UgPiBQUkVWKEZJUlNUKHByaWNlKSwgNTApKQorKSBzIFdIRVJFIGlkID4gNTAgT1JERVIg QlkgaWQ7CisgaWQgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2xlbiAKKy0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIDUxIHwgICAgICAgICAgNTEgfCAgICAgICAgMTAKKyA1MiB8ICAgICAg ICAgICAgIHwgICAgICAgICAwCisgNTMgfCAgICAgICAgICAgICB8ICAgICAgICAgMAorIDU0IHwg ICAgICAgICAgICAgfCAgICAgICAgIDAKKyA1NSB8ICAgICAgICAgICAgIHwgICAgICAgICAwCisg NTYgfCAgICAgICAgICAgICB8ICAgICAgICAgMAorIDU3IHwgICAgICAgICAgICAgfCAgICAgICAg IDAKKyA1OCB8ICAgICAgICAgICAgIHwgICAgICAgICAwCisgNTkgfCAgICAgICAgICAgICB8ICAg ICAgICAgMAorIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgIDAKKygxMCByb3dzKQorCistLSBu dGhfdmFsdWUgd2l0aCBhIE5VTEwgb2Zmc2V0OyBGSVJTVCBuYXZpZ2F0aW9uIGluIERFRklORSwg U0tJUCBQQVNUIExBU1QgUk9XCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBGUk9N ICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhF TiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBBUyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAg ICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoRklSU1QocHJpY2Up LCA1MCkpCisgICkgcworKSB0IFdIRVJFIGlkID4gNTAgT1JERVIgQlkgaWQ7CisgaWQgfCBudiAg CistLS0tKy0tLS0tCisgNTEgfCA1MTAKKyA1MiB8ICAgIAorIDUzIHwgICAgCisgNTQgfCAgICAK KyA1NSB8ICAgIAorIDU2IHwgICAgCisgNTcgfCAgICAKKyA1OCB8ICAgIAorIDU5IHwgICAgCisg NjAgfCAgICAKKygxMCByb3dzKQorCistLSB0aGUgc2FtZSB3aW5kb3cgd2l0aCBmaXJzdF92YWx1 ZSBhbmQgY291bnQgYWxvbmdzaWRlIG50aF92YWx1ZQorU0VMRUNUICogRlJPTSAoCisgIFNFTEVD VCBpZCwgbnYsIGZ2LCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBudGhfdmFsdWUocHJpY2Us IENBU0UgV0hFTiBpZCA8IDUwIFRIRU4gTlVMTCBFTFNFIDEgRU5EKSBPVkVSIHcgQVMgbnYsCisg ICAgICAgICAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIGZ2LCBjb3VudCgqKSBPVkVS IHcgQVMgY250CisgICAgRlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFUVEVSTiAoQSspIERF RklORSBBIEFTIHByaWNlID4gUFJFVihGSVJTVChwcmljZSksIDUwKSkKKyAgKSBzCispIHQgV0hF UkUgaWQgPiA1MCBPUkRFUiBCWSBpZDsKKyBpZCB8IG52ICB8IGZ2IHwgY250IAorLS0tLSstLS0t LSstLS0tKy0tLS0tCisgNTEgfCA1MTAgfCA1MSB8ICAxMAorIDUyIHwgICAgIHwgICAgfCAgIDAK KyA1MyB8ICAgICB8ICAgIHwgICAwCisgNTQgfCAgICAgfCAgICB8ICAgMAorIDU1IHwgICAgIHwg ICAgfCAgIDAKKyA1NiB8ICAgICB8ICAgIHwgICAwCisgNTcgfCAgICAgfCAgICB8ICAgMAorIDU4 IHwgICAgIHwgICAgfCAgIDAKKyA1OSB8ICAgICB8ICAgIHwgICAwCisgNjAgfCAgICAgfCAgICB8 ICAgMAorKDEwIHJvd3MpCisKKy0tIHRoZSBzYW1lIG50aF92YWx1ZSB3aXRoIGEgbm9uLW5hdmln YXRpb24gREVGSU5FCitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBGUk9NICgKKyAg ICBTRUxFQ1QgaWQsIG50aF92YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxM IEVMU0UgMSBFTkQpIE9WRVIgdyBBUyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAg IFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmljZSA+IDApCisgICkgcworKSB0IFdIRVJFIGlk ID4gNTAgT1JERVIgQlkgaWQ7CisgaWQgfCBudiAKKy0tLS0rLS0tLQorIDUxIHwgICAKKyA1MiB8 ICAgCisgNTMgfCAgIAorIDU0IHwgICAKKyA1NSB8ICAgCisgNTYgfCAgIAorIDU3IHwgICAKKyA1 OCB8ICAgCisgNTkgfCAgIAorIDYwIHwgICAKKygxMCByb3dzKQorCistLSB0aGUgc2FtZSBudGhf dmFsdWUgd2l0aCBhIFBSRVYtb25seSBERUZJTkUgKG5vIEZJUlNUIG5hdmlnYXRpb24pCitTRUxF Q1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92 YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIg dyBBUyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgIFBBVFRFUk4gKEErKSBERUZJ TkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDUwKSkKKyAgKSBzCispIHQgV0hFUkUgaWQgPiA1 MCBPUkRFUiBCWSBpZDsKKyBpZCB8IG52ICAKKy0tLS0rLS0tLS0KKyA1MSB8IDUxMAorIDUyIHwg ICAgCisgNTMgfCAgICAKKyA1NCB8ICAgIAorIDU1IHwgICAgCisgNTYgfCAgICAKKyA1NyB8ICAg IAorIDU4IHwgICAgCisgNTkgfCAgICAKKyA2MCB8ICAgIAorKDEwIHJvd3MpCisKKy0tIG50aF92 YWx1ZSB3aXRoIGEgTlVMTCBvZmZzZXQgYmFuZCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwYXJ0aXRp b24KK1NFTEVDVCAqIEZST00gKAorICBTRUxFQ1QgaWQsIG52IEZST00gKAorICAgIFNFTEVDVCBp ZCwgbnRoX3ZhbHVlKHByaWNlLCBDQVNFIFdIRU4gaWQgQkVUV0VFTiAyMCBBTkQgNDAgVEhFTiBO VUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBBUyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICAgIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoRklSU1QocHJpY2UpLCA1 MCkpCisgICkgcworKSB0IFdIRVJFIGlkIEJFVFdFRU4gMzggQU5EIDQ2IE9SREVSIEJZIGlkOwor IGlkIHwgbnYgCistLS0tKy0tLS0KKyAzOCB8ICAgCisgMzkgfCAgIAorIDQwIHwgICAKKyA0MSB8 ICAgCisgNDIgfCAgIAorIDQzIHwgICAKKyA0NCB8ICAgCisgNDUgfCAgIAorIDQ2IHwgICAKKyg5 IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX2Rvcm1hbnQ7CiAtLQogLS0gTlVMTCBoYW5kbGluZwog LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHIuc3FsCmluZGV4IGUzZTlkZTc4OWRiLi4zMzYzNjkxYzA0MSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9ycHIuc3FsCkBAIC0xODEyLDYgKzE4MTIsODEgQEAgV0lORE9XIHcgQVMgKAogICAgIEIg QVMgdmFsIElTIE5VTEwKICk7CiAKKy0tCistLSBudGhfdmFsdWUgd2l0aCBhIE5VTEwgb2Zmc2V0 CistLQorCitDUkVBVEUgVEFCTEUgcnByX2Rvcm1hbnQgKGlkIGludCwgcHJpY2UgaW50KTsKK0lO U0VSVCBJTlRPIHJwcl9kb3JtYW50IFNFTEVDVCBnLCBnKjEwIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNjApIGc7CisKKy0tIHJlZmVyZW5jZTogZmlyc3RfdmFsdWUoaWQpIGlzIHRoZSBzdGFydCBy b3cgb2YgdGhlIG1hdGNoIGJlZ2lubmluZyBhdCB0aGUKKy0tIGN1cnJlbnQgcm93LCBjb3VudCgq KSBpcyB0aGF0IG1hdGNoJ3MgbGVuZ3RoIG92ZXIgdGhlIHJlZHVjZWQgZnJhbWUKK1NFTEVDVCAq IEZST00gKAorICBTRUxFQ1QgaWQsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9sZW4KKyAgRlJPTSBycHJfZG9ybWFudAorICBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByaWNlID4gUFJFVihGSVJTVChwcmljZSksIDUwKSkK KykgcyBXSEVSRSBpZCA+IDUwIE9SREVSIEJZIGlkOworCistLSBudGhfdmFsdWUgd2l0aCBhIE5V TEwgb2Zmc2V0OyBGSVJTVCBuYXZpZ2F0aW9uIGluIERFRklORSwgU0tJUCBQQVNUIExBU1QgUk9X CitTRUxFQ1QgKiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBGUk9NICgKKyAgICBTRUxFQ1QgaWQs IG50aF92YWx1ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQp IE9WRVIgdyBBUyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgIFBBVFRFUk4gKEEr KSBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoRklSU1QocHJpY2UpLCA1MCkpCisgICkgcworKSB0 IFdIRVJFIGlkID4gNTAgT1JERVIgQlkgaWQ7CisKKy0tIHRoZSBzYW1lIHdpbmRvdyB3aXRoIGZp cnN0X3ZhbHVlIGFuZCBjb3VudCBhbG9uZ3NpZGUgbnRoX3ZhbHVlCitTRUxFQ1QgKiBGUk9NICgK KyAgU0VMRUNUIGlkLCBudiwgZnYsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1 ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBB UyBudiwKKyAgICAgICAgICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgZnYsIGNvdW50 KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9kb3JtYW50CisgICAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICBQQVRURVJO IChBKykgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKEZJUlNUKHByaWNlKSwgNTApKQorICApIHMK KykgdCBXSEVSRSBpZCA+IDUwIE9SREVSIEJZIGlkOworCistLSB0aGUgc2FtZSBudGhfdmFsdWUg d2l0aCBhIG5vbi1uYXZpZ2F0aW9uIERFRklORQorU0VMRUNUICogRlJPTSAoCisgIFNFTEVDVCBp ZCwgbnYgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBudGhfdmFsdWUocHJpY2UsIENBU0UgV0hFTiBp ZCA8IDUwIFRIRU4gTlVMTCBFTFNFIDEgRU5EKSBPVkVSIHcgQVMgbnYKKyAgICBGUk9NIHJwcl9k b3JtYW50CisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgICBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgcHJpY2UgPiAwKQorICAp IHMKKykgdCBXSEVSRSBpZCA+IDUwIE9SREVSIEJZIGlkOworCistLSB0aGUgc2FtZSBudGhfdmFs dWUgd2l0aCBhIFBSRVYtb25seSBERUZJTkUgKG5vIEZJUlNUIG5hdmlnYXRpb24pCitTRUxFQ1Qg KiBGUk9NICgKKyAgU0VMRUNUIGlkLCBudiBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIG50aF92YWx1 ZShwcmljZSwgQ0FTRSBXSEVOIGlkIDwgNTAgVEhFTiBOVUxMIEVMU0UgMSBFTkQpIE9WRVIgdyBB UyBudgorICAgIEZST00gcnByX2Rvcm1hbnQKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDUwKSkKKyAgKSBzCispIHQgV0hFUkUgaWQgPiA1MCBP UkRFUiBCWSBpZDsKKworLS0gbnRoX3ZhbHVlIHdpdGggYSBOVUxMIG9mZnNldCBiYW5kIGluIHRo ZSBtaWRkbGUgb2YgdGhlIHBhcnRpdGlvbgorU0VMRUNUICogRlJPTSAoCisgIFNFTEVDVCBpZCwg bnYgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBudGhfdmFsdWUocHJpY2UsIENBU0UgV0hFTiBpZCBC RVRXRUVOIDIwIEFORCA0MCBUSEVOIE5VTEwgRUxTRSAxIEVORCkgT1ZFUiB3IEFTIG52CisgICAg RlJPTSBycHJfZG9ybWFudAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIHByaWNl ID4gUFJFVihGSVJTVChwcmljZSksIDUwKSkKKyAgKSBzCispIHQgV0hFUkUgaWQgQkVUV0VFTiAz OCBBTkQgNDYgT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2Rvcm1hbnQ7CisKIC0tCiAt LSBOVUxMIGhhbmRsaW5nCiAtLQotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0006-tidy-plumbing.patch" Content-Disposition: attachment; filename="v50-0006-tidy-plumbing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqlx4v14 RnJvbSBmMmZkMjUxYjIzNjliNTZiYjE3NDAzNGM3YWQ1MTA5ODRjOGQ3NmE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDEzOjEyOjM2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTUv MjldIFRpZHkgdXAgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gcGx1bWJpbmcKClNldmVyYWwgYmVo YXZpb3ItbmV1dHJhbCBjbGVhbnVwcyB0byB0aGUgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gY29k ZSwKd2l0aCBubyBjaGFuZ2UgdG8gcGxhbm5lciBvciBleGVjdXRvciBvdXRwdXQ6CgotIFJlbW92 ZSB0aGUgZGVhZCBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcygpIGFuZCBidWlsZERlZmluZVZhcmlh YmxlTGlzdCgpCiAgaGVscGVycy4gIFRoZSBwYXJzZXIgYWxyZWFkeSBndWFyYW50ZWVzIHRoYXQg ZXZlcnkgREVGSU5FIHZhcmlhYmxlCiAgYXBwZWFycyBpbiBQQVRURVJOLCBzbyBjcmVhdGVfd2lu ZG93YWdnX3BsYW4oKSBhbmQgY29zdF93aW5kb3dhZ2coKSB3YWxrCiAgdGhlIERFRklORSBjbGF1 c2UgZGlyZWN0bHkgaW5zdGVhZC4KCi0gRHJvcCB0aGUgcmVkdW5kYW50IHJwU2tpcFRvIGFuZCBk ZWZpbmVDbGF1c2UgYXJndW1lbnRzIG9mCiAgbWFrZV93aW5kb3dhZ2coKTsgYm90aCBhcmUgcmVh ZCBmcm9tIHRoZSBXaW5kb3dDbGF1c2UuCgotIE1hcmsgUlBSTmF2RXhwci5yZXN1bHR0eXBlIGFz IHF1ZXJ5X2p1bWJsZV9pZ25vcmUsIG1hdGNoaW5nIHRoZSBvdGhlcgogIGRlcml2ZWQgcmVzdWx0 LXR5cGUgZmllbGRzLgoKLSBSZW5hbWUgV2luZG93QWdnU3RhdGUuZGVmaW5lQ2xhdXNlTGlzdCB0 byBkZWZpbmVDbGF1c2VFeHBycyB0byByZWZsZWN0CiAgdGhhdCBpdCBzdG9yZXMgRXhwclN0YXRl IG5vZGVzLgoKLSBSZXBsYWNlIGEgcG9zdC1sb29wIExpc3RDZWxsIE5VTEwgdGVzdCBpbiByZW1v dmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoKQogIHdpdGggYSBib29sZWFuIGZsYWcsIGZsYXR0 ZW4gdGhlIG5lc3RlZCBibG9jayBpbiBzaG93X3dpbmRvd19kZWYoKSwgYW5kCiAgZmxhdHRlbiB0 aGUgREVGSU5FIGluaXQgbG9vcCBpbiBFeGVjSW5pdFdpbmRvd0FnZygpLgoKLSBNaW5vciByZWdy ZXNzaW9uLXRlc3QgY29tbWVudCBjbGVhbnVwLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyAgICAgICAgICAgICAgICB8IDk0ICsrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIgICAgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUlBSLmMgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgICAgIHwgNDEgKysrKy0tLS0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgICAgICAgICB8IDEzICsrLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgICAgIHwgMjIgKy0tLS0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8IDI0ICsrKy0tCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyAgICAgICAgICAgICAgfCA3NyAtLS0tLS0tLS0tLS0t LS0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMyArLQog c3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oICAgICAgICAgICAgICAgICAgIHwgIDMgLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IHwgMjkgKystLS0tCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsICAgICAgfCAzMSArKy0tLS0K IDEzIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCAyMzYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDcwZmQ3ZjM4NmEwLi42OTZiZGI5YzhiNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtMzIxMiw3NyArMzIxMiw3MyBAQCBzaG93X3dpbmRvd19kZWYo V2luZG93QWdnU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUg KmVzKQogCS8qIFNob3cgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gcGF0dGVybiBpZiBwcmVzZW50 ICovCiAJaWYgKHdhZ2ctPnJwUGF0dGVybiAhPSBOVUxMKQogCXsKKwkJUlBSTmF2T2Zmc2V0S2lu ZCBtYXhLaW5kID0gd2FnZy0+bmF2TWF4T2Zmc2V0S2luZDsKKwkJaW50NjQJCW1heE9mZnNldCA9 IHdhZ2ctPm5hdk1heE9mZnNldDsKKwkJUlBSTmF2T2Zmc2V0S2luZCBmaXJzdEtpbmQgPSB3YWdn LT5uYXZGaXJzdE9mZnNldEtpbmQ7CisJCWludDY0CQlmaXJzdE9mZnNldCA9IHdhZ2ctPm5hdkZp cnN0T2Zmc2V0OworCiAJCWNoYXIJICAgKnBhdHRlcm5TdHIgPSBkZXBhcnNlX3Jwcl9wYXR0ZXJu KHdhZ2ctPnJwUGF0dGVybik7CiAKLQkJaWYgKHBhdHRlcm5TdHIgIT0gTlVMTCkKLQkJewotCQkJ RXhwbGFpblByb3BlcnR5VGV4dCgiUGF0dGVybiIsIHBhdHRlcm5TdHIsIGVzKTsKLQkJCXBmcmVl KHBhdHRlcm5TdHIpOwotCQl9CisJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIlBhdHRlcm4iLCBwYXR0 ZXJuU3RyLCBlcyk7CisKKwkJcGZyZWUocGF0dGVyblN0cik7CiAKIAkJLyoKIAkJICogU2hvdyBu YXZpZ2F0aW9uIG9mZnNldHMgZm9yIHR1cGxlc3RvcmUgdHJpbS4gIEZvciBFWFBMQUlOIEFOQUxZ WkUsCiAJCSAqIHVzZSB0aGUgZXhlY3V0b3ItcmVzb2x2ZWQgdmFsdWVzICh3aGljaCBtYXkgZGlm ZmVyIGZyb20gdGhlIHBsYW4KIAkJICogd2hlbiBORUVEU19FVkFMIHdhcyByZXNvbHZlZCB0byBG SVhFRCBvciBSRVRBSU5fQUxMIGF0IGluaXQpLgogCQkgKi8KKwkJaWYgKGVzLT5hbmFseXplKQog CQl7Ci0JCQlSUFJOYXZPZmZzZXRLaW5kIG1heEtpbmQgPSB3YWdnLT5uYXZNYXhPZmZzZXRLaW5k OwotCQkJaW50NjQJCW1heE9mZnNldCA9IHdhZ2ctPm5hdk1heE9mZnNldDsKLQkJCVJQUk5hdk9m ZnNldEtpbmQgZmlyc3RLaW5kID0gd2FnZy0+bmF2Rmlyc3RPZmZzZXRLaW5kOwotCQkJaW50NjQJ CWZpcnN0T2Zmc2V0ID0gd2FnZy0+bmF2Rmlyc3RPZmZzZXQ7CisJCQltYXhLaW5kID0gcGxhbnN0 YXRlLT5uYXZNYXhPZmZzZXRLaW5kOworCQkJbWF4T2Zmc2V0ID0gcGxhbnN0YXRlLT5uYXZNYXhP ZmZzZXQ7CisJCQlmaXJzdEtpbmQgPSBwbGFuc3RhdGUtPm5hdkZpcnN0T2Zmc2V0S2luZDsKKwkJ CWZpcnN0T2Zmc2V0ID0gcGxhbnN0YXRlLT5uYXZGaXJzdE9mZnNldDsKKwkJfQogCi0JCQlpZiAo ZXMtPmFuYWx5emUpCi0JCQl7Ci0JCQkJbWF4S2luZCA9IHBsYW5zdGF0ZS0+bmF2TWF4T2Zmc2V0 S2luZDsKLQkJCQltYXhPZmZzZXQgPSBwbGFuc3RhdGUtPm5hdk1heE9mZnNldDsKLQkJCQlmaXJz dEtpbmQgPSBwbGFuc3RhdGUtPm5hdkZpcnN0T2Zmc2V0S2luZDsKLQkJCQlmaXJzdE9mZnNldCA9 IHBsYW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXQ7Ci0JCQl9CisJCXN3aXRjaCAobWF4S2luZCkKKwkJ eworCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMOgorCQkJCUV4cGxhaW5Qcm9wZXJ0 eVRleHQoIk5hdiBNYXJrIExvb2tiYWNrIiwgInJ1bnRpbWUiLCBlcyk7CisJCQkJYnJlYWs7CisJ CQljYXNlIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9BTEw6CisJCQkJRXhwbGFpblByb3BlcnR5VGV4 dCgiTmF2IE1hcmsgTG9va2JhY2siLCAicmV0YWluIGFsbCIsIGVzKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgUlBSX05BVl9PRkZTRVRfRklYRUQ6CisJCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi TmF2IE1hcmsgTG9va2JhY2siLCBOVUxMLAorCQkJCQkJCQkJICAgbWF4T2Zmc2V0LCBlcyk7CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgUlBS IG5hdiBvZmZzZXQga2luZDogJWQiLAorCQkJCQkgbWF4S2luZCk7CisJCQkJYnJlYWs7CisJCX0K IAotCQkJc3dpdGNoIChtYXhLaW5kKQorCQlpZiAod2FnZy0+aGFzRmlyc3ROYXYpCisJCXsKKwkJ CXN3aXRjaCAoZmlyc3RLaW5kKQogCQkJewogCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfTkVFRFNf RVZBTDoKLQkJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiTmF2IE1hcmsgTG9va2JhY2siLCAicnVu dGltZSIsIGVzKTsKKwkJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiTmF2IE1hcmsgTG9va2FoZWFk IiwgInJ1bnRpbWUiLAorCQkJCQkJCQkJCWVzKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBSUFJf TkFWX09GRlNFVF9SRVRBSU5fQUxMOgotCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFy ayBMb29rYmFjayIsICJyZXRhaW4gYWxsIiwgZXMpOworCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0 KCJOYXYgTWFyayBMb29rYWhlYWQiLCAicmV0YWluIGFsbCIsCisJCQkJCQkJCQkJZXMpOwogCQkJ CQlicmVhazsKIAkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOgotCQkJCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJOYXYgTWFyayBMb29rYmFjayIsIE5VTEwsCi0JCQkJCQkJCQkJICAgbWF4 T2Zmc2V0LCBlcyk7CisJCQkJCWlmIChmaXJzdE9mZnNldCA9PSBQR19JTlQ2NF9NQVgpCisJCQkJ CQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAiaW5maW5pdGUiLAor CQkJCQkJCQkJCQllcyk7CisJCQkJCWVsc2UKKwkJCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIo Ik5hdiBNYXJrIExvb2thaGVhZCIsIE5VTEwsCisJCQkJCQkJCQkJCSAgIGZpcnN0T2Zmc2V0LCBl cyk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgUlBSIG5hdiBvZmZzZXQga2luZDogJWQiLAotCQkJCQkJIG1heEtpbmQpOworCQkJCQkJ IGZpcnN0S2luZCk7CiAJCQkJCWJyZWFrOwogCQkJfQotCi0JCQlpZiAod2FnZy0+aGFzRmlyc3RO YXYpCi0JCQl7Ci0JCQkJc3dpdGNoIChmaXJzdEtpbmQpCi0JCQkJewotCQkJCQljYXNlIFJQUl9O QVZfT0ZGU0VUX05FRURTX0VWQUw6Ci0JCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFy ayBMb29rYWhlYWQiLCAicnVudGltZSIsCi0JCQkJCQkJCQkJCWVzKTsKLQkJCQkJCWJyZWFrOwot CQkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9BTEw6Ci0JCQkJCQlFeHBsYWluUHJvcGVy dHlUZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAicmV0YWluIGFsbCIsCi0JCQkJCQkJCQkJCWVz KTsKLQkJCQkJCWJyZWFrOwotCQkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOgotCQkJCQkJ aWYgKGZpcnN0T2Zmc2V0ID09IFBHX0lOVDY0X01BWCkKLQkJCQkJCQlFeHBsYWluUHJvcGVydHlU ZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAiaW5maW5pdGUiLAotCQkJCQkJCQkJCQkJZXMpOwot CQkJCQkJZWxzZQotCQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5hdiBNYXJrIExvb2th aGVhZCIsIE5VTEwsCi0JCQkJCQkJCQkJCQkgICBmaXJzdE9mZnNldCwgZXMpOwotCQkJCQkJYnJl YWs7Ci0JCQkJCWRlZmF1bHQ6Ci0JCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFJQUiBu YXYgb2Zmc2V0IGtpbmQ6ICVkIiwKLQkJCQkJCQkgZmlyc3RLaW5kKTsKLQkJCQkJCWJyZWFrOwot CQkJCX0KLQkJCX0KIAkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRS5ycHIgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUucnByCmluZGV4IDAwYWY4 NjY4MWI4Li43MTNhZDg0ZTFkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FLnJwcgorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUucnByCkBAIC0xODgsNyAr MTg4LDYgQEAgQ2hhcHRlciBJViAgQ29tcGlsYXRpb24gUGhhc2UKIElWLTEuIEVudHJ5IFBvaW50 CiAKICAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKCkgKGNyZWF0ZXBsYW4uYykKLSAgICArLS0gYnVp bGREZWZpbmVWYXJpYWJsZUxpc3QoKSAgICBCdWlsZCB2YXJpYWJsZSBuYW1lIGxpc3QgZnJvbSBE RUZJTkUKICAgICArLS0gYnVpbGRSUFJQYXR0ZXJuKCkgICAgICAgICAgIE5GQSBjb21waWxhdGlv biAoNiBwaGFzZXMpCiAKIElWLTIuIFRoZSA2IFBoYXNlcyBvZiBidWlsZFJQUlBhdHRlcm4oKQpA QCAtMTQ2OCw4ICsxNDY3LDYgQEAgQXBwZW5kaXggQS4gS2V5IEZ1bmN0aW9uIEluZGV4CiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgIHRyYW5zZm9ybVJQUiAgICAgICAgICAgICAgICAgIHBhcnNlX3Jw ci5jICAgICAgICAgICBQYXJzZXIgZW50cnkgcG9pbnQKICAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNl ICAgICAgICAgcGFyc2VfcnByLmMgICAgICAgICAgIERFRklORSB0cmFuc2Zvcm1hdGlvbgotICBj b2xsZWN0UGF0dGVyblZhcmlhYmxlcyAgICAgICBycHIuYyAgICAgICAgICAgICAgICAgVmFyaWFi bGUgY29sbGVjdGlvbgotICBidWlsZERlZmluZVZhcmlhYmxlTGlzdCAgICAgICBycHIuYyAgICAg ICAgICAgICAgICAgREVGSU5FIHZhcmlhYmxlIGxpc3QKICAgYnVpbGRSUFJQYXR0ZXJuICAgICAg ICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIE5GQSBjb21waWxhdGlvbiBtYWluCiAgIG9w dGltaXplUlBSUGF0dGVybiAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBBU1Qgb3B0 aW1pemF0aW9uCiAgIGZpbGxSUFJQYXR0ZXJuICAgICAgICAgICAgICAgIHJwci5jICAgICAgICAg ICAgICAgICBORkEgZWxlbWVudCBnZW5lcmF0aW9uCkBAIC0xNTM4LDcgKzE1MzUsNyBAQCBBcHBl bmRpeCBCLiBEYXRhIFN0cnVjdHVyZSBSZWxhdGlvbnNoaXAgRGlhZ3JhbQogICAgIHwtLS0gcnBT a2lwVG86IFJQU2tpcFRvIChBRlRFUiBNQVRDSCBTS0lQIG1vZGUpCiAgICAgfC0tLSBycFBhdHRl cm46IFJQUlBhdHRlcm4qIChjb3BpZWQgZnJvbSBwbGFuKQogICAgIHwtLS0gZGVmaW5lVmFyaWFi bGVMaXN0OiBMaXN0PFN0cmluZz4gKHZhcmlhYmxlIG5hbWVzLCBERUZJTkUgb3JkZXIpCi0gICAg fC0tLSBkZWZpbmVDbGF1c2VMaXN0OiBMaXN0PEV4cHJTdGF0ZT4KKyAgICB8LS0tIGRlZmluZUNs YXVzZUV4cHJzOiBMaXN0PEV4cHJTdGF0ZT4KICAgICB8LS0tIG5mYVZhck1hdGNoZWQ6IGJvb2xb XSAocGVyLXJvdyBjYWNoZSkKICAgICB8LS0tIGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQ6IEJp dG1hcHNldCogKG1hdGNoX3N0YXJ0X2RlcGVuZGVudAogICAgIHwgICAgICAgIERFRklORSB2YXJz OyBzZWUgVkktNCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwppbmRleCBjZWE3ZTBiMjk3My4uZGVmMGI4 NDIzYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKQEAgLTE2MDYsNyArMTYwNiw3IEBAIG5mYV9y ZWV2YWx1YXRlX2RlcGVuZGVudF92YXJzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LAogCS8qIEludmFsaWRhdGUgbmF2X3Nsb3QgY2FjaGUgc2luY2UgbWF0Y2hf c3RhcnQgY2hhbmdlZCAqLwogCXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsKIAotCWZvcmVh Y2hfcHRyKEV4cHJTdGF0ZSwgZXhwclN0YXRlLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlTGlzdCkK Kwlmb3JlYWNoX3B0cihFeHByU3RhdGUsIGV4cHJTdGF0ZSwgd2luc3RhdGUtPmRlZmluZUNsYXVz ZUV4cHJzKQogCXsKIAkJaW50CQkJdmFySWR4ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGV4cHJT dGF0ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCAyZDk3NzEwZGE4 YS4uNWQ0ODMyZDFkYjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTMw NjcsMjcgKzMwNjcsMjYgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNvZ25p dGlvbiBERUZJTkUgY2xhdXNlICovCiAJd2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9IE5J TDsKLQl3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlTGlzdCA9IE5JTDsKLQlpZiAobm9kZS0+ZGVmaW5l Q2xhdXNlICE9IE5JTCkKKwl3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlRXhwcnMgPSBOSUw7CisKKwkv KgorCSAqIENvbXBpbGUgREVGSU5FIGNsYXVzZSBleHByZXNzaW9ucy4gIFBSRVYvTkVYVCBuYXZp Z2F0aW9uIGlzIGhhbmRsZWQgYnkKKwkgKiBFRU9QX1JQUl9OQVZfU0VUL1JFU1RPUkUgb3Bjb2Rl cyBlbWl0dGVkIGR1cmluZyBFeGVjSW5pdEV4cHIsIHNvIG5vCisJICogdmFybm8gcmV3cml0aW5n IGlzIG5lZWRlZCBoZXJlLgorCSAqLworCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIG5v ZGUtPmRlZmluZUNsYXVzZSkKIAl7Ci0JCS8qCi0JCSAqIENvbXBpbGUgREVGSU5FIGNsYXVzZSBl eHByZXNzaW9ucy4gIFBSRVYvTkVYVCBuYXZpZ2F0aW9uIGlzIGhhbmRsZWQKLQkJICogYnkgRUVP UF9SUFJfTkFWX1NFVC9SRVNUT1JFIG9wY29kZXMgZW1pdHRlZCBkdXJpbmcgRXhlY0luaXRFeHBy LCBzbwotCQkgKiBubyB2YXJubyByZXdyaXRpbmcgaXMgbmVlZGVkIGhlcmUuCi0JCSAqLwotCQlm b3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRlLCBub2RlLT5kZWZpbmVDbGF1c2UpCi0JCXsKLQkJ CWNoYXIJICAgKm5hbWUgPSB0ZS0+cmVzbmFtZTsKLQkJCUV4cHIJICAgKmV4cHIgPSB0ZS0+ZXhw cjsKLQkJCUV4cHJTdGF0ZSAgKmV4cHM7Ci0KLQkJCXdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxp c3QgPQotCQkJCWxhcHBlbmQod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCwKLQkJCQkJCW1h a2VTdHJpbmcocHN0cmR1cChuYW1lKSkpOwotCQkJZXhwcyA9IEV4ZWNJbml0RXhwcihleHByLCAo UGxhblN0YXRlICopIHdpbnN0YXRlKTsKLQkJCXdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0ID0K LQkJCQlsYXBwZW5kKHdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0LCBleHBzKTsKLQkJfQorCQlj aGFyCSAgICpuYW1lID0gdGUtPnJlc25hbWU7CisJCUV4cHJTdGF0ZSAgKmV4cHJzdGF0ZTsKKwor CQl3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0ID0KKwkJCWxhcHBlbmQod2luc3RhdGUtPmRl ZmluZVZhcmlhYmxlTGlzdCwKKwkJCQkJbWFrZVN0cmluZyhwc3RyZHVwKG5hbWUpKSk7CisKKwkJ ZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKHRlLT5leHByLCAoUGxhblN0YXRlICopIHdpbnN0YXRl KTsKKworCQl3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlRXhwcnMgPQorCQkJbGFwcGVuZCh3aW5zdGF0 ZS0+ZGVmaW5lQ2xhdXNlRXhwcnMsIGV4cHJzdGF0ZSk7CiAJfQogCiAJLyogSW5pdGlhbGl6ZSBO RkEgZnJlZSBsaXN0cyBmb3Igcm93IHBhdHRlcm4gbWF0Y2hpbmcgKi8KQEAgLTQ2NjksNyArNDY2 OCw3IEBAIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBi b29sICp2YXJNYXRjaGVkKQogCS8qIEludmFsaWRhdGUgbmF2X3Nsb3QgY2FjaGUgc28gUFJFVi9O RVhUIHJlLWZldGNoIGZvciBuZXcgcm93ICovCiAJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0x OwogCi0JZm9yZWFjaF9wdHIoRXhwclN0YXRlLCBleHByU3RhdGUsIHdpbnN0YXRlLT5kZWZpbmVD bGF1c2VMaXN0KQorCWZvcmVhY2hfcHRyKEV4cHJTdGF0ZSwgZXhwclN0YXRlLCB3aW5zdGF0ZS0+ ZGVmaW5lQ2xhdXNlRXhwcnMpCiAJewogCQlEYXR1bQkJcmVzdWx0OwogCQlib29sCQlpc251bGw7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCBmM2M5ZjNjMGJkNi4uNDQ4 NjRiMzYzNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhz LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNDgwNywy MCArNDgwNywxOSBAQCByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoUXVlcnkgKnN1YnF1 ZXJ5LCBSZWxPcHRJbmZvICpyZWwsCiAJCSAqLwogCQlpZiAoSXNBKHRleHByLCBXaW5kb3dGdW5j KSkKIAkJeworCQkJYm9vbAkJaXNfcnByID0gZmFsc2U7CiAJCQlXaW5kb3dGdW5jICp3ZnVuYyA9 IChXaW5kb3dGdW5jICopIHRleHByOwotCQkJTGlzdENlbGwgICAqd2xjOwogCi0JCQlmb3JlYWNo KHdsYywgc3VicXVlcnktPndpbmRvd0NsYXVzZSkKKwkJCWZvcmVhY2hfbm9kZShXaW5kb3dDbGF1 c2UsIHdjLCBzdWJxdWVyeS0+d2luZG93Q2xhdXNlKQogCQkJewotCQkJCVdpbmRvd0NsYXVzZSAq d2MgPSBsZmlyc3Rfbm9kZShXaW5kb3dDbGF1c2UsIHdsYyk7Ci0KLQkJCQlpZiAod2MtPndpbnJl ZiA9PSB3ZnVuYy0+d2lucmVmICYmCi0JCQkJCXdjLT5kZWZpbmVDbGF1c2UgIT0gTklMKQorCQkJ CWlmICh3Yy0+d2lucmVmID09IHdmdW5jLT53aW5yZWYgJiYgd2MtPmRlZmluZUNsYXVzZSAhPSBO SUwpCiAJCQkJeworCQkJCQlpc19ycHIgPSB0cnVlOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9 Ci0JCQlpZiAod2xjICE9IE5VTEwpCisKKwkJCWlmIChpc19ycHIpCiAJCQkJY29udGludWU7CiAJ CX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggODI0NzJjM2ZlOTYu LjMyYTRiMTcyZTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0 c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTMy MzEsMzAgKzMyMzEsMTggQEAgY29zdF93aW5kb3dhZ2coUGF0aCAqcGF0aCwgUGxhbm5lckluZm8g KnJvb3QsCiAJICogc28gd2UnbGwganVzdCBkbyB0aGlzIGZvciBub3cuCiAJICoKIAkgKiBNb3Jl b3ZlciwgaWYgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZCwgd2UgY2hhcmdlIHRoZSBE RUZJTkUKLQkgKiBleHByZXNzaW9ucyBvbmNlIHBlciB0dXBsZSBmb3IgZWFjaCB2YXJpYWJsZSB0 aGF0IGFwcGVhcnMgaW4gUEFUVEVSTi4KKwkgKiBleHByZXNzaW9ucyBvbmNlIHBlciB0dXBsZSBm b3IgZWFjaCBERUZJTkUgdmFyaWFibGUuCiAJICovCiAJaWYgKHdpbmNsYXVzZS0+cnBQYXR0ZXJu KQogCXsKLQkJTGlzdAkgICAqcGF0dGVybl92YXJzOwogCQlRdWFsQ29zdAlkZWZjb3N0czsKIAot CQlwYXR0ZXJuX3ZhcnMgPSBjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyh3aW5jbGF1c2UtPnJwUGF0 dGVybik7Ci0KLQkJZm9yZWFjaF9ub2RlKFN0cmluZywgcHYsIHBhdHRlcm5fdmFycykKKwkJZm9y ZWFjaF9ub2RlKFRhcmdldEVudHJ5LCBkZWYsIHdpbmNsYXVzZS0+ZGVmaW5lQ2xhdXNlKQogCQl7 Ci0JCQljaGFyCSAgICpwdG5hbWUgPSBzdHJWYWwocHYpOwotCi0JCQlmb3JlYWNoX25vZGUoVGFy Z2V0RW50cnksIGRlZiwgd2luY2xhdXNlLT5kZWZpbmVDbGF1c2UpCi0JCQl7Ci0JCQkJaWYgKCFz dHJjbXAocHRuYW1lLCBkZWYtPnJlc25hbWUpKQotCQkJCXsKLQkJCQkJY29zdF9xdWFsX2V2YWxf bm9kZSgmZGVmY29zdHMsIChOb2RlICopIGRlZi0+ZXhwciwgcm9vdCk7Ci0JCQkJCXN0YXJ0dXBf Y29zdCArPSBkZWZjb3N0cy5zdGFydHVwOwotCQkJCQl0b3RhbF9jb3N0ICs9IGRlZmNvc3RzLnBl cl90dXBsZSAqIGlucHV0X3R1cGxlczsKLQkJCQl9Ci0JCQl9CisJCQljb3N0X3F1YWxfZXZhbF9u b2RlKCZkZWZjb3N0cywgKE5vZGUgKikgZGVmLT5leHByLCByb290KTsKKwkJCXN0YXJ0dXBfY29z dCArPSBkZWZjb3N0cy5zdGFydHVwOworCQkJdG90YWxfY29zdCArPSBkZWZjb3N0cy5wZXJfdHVw bGUgKiBpbnB1dF90dXBsZXM7CiAJCX0KLQkJbGlzdF9mcmVlX2RlZXAocGF0dGVybl92YXJzKTsK IAl9CiAKIAlmb3JlYWNoKGxjLCB3aW5kb3dGdW5jcykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2NyZWF0ZXBsYW4uYwppbmRleCBjY2E0MTI2ZTUxMS4uZDk2ZTc2YjAyMjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTI5MCw5ICsyOTAsOCBAQCBzdGF0aWMg TWVtb2l6ZSAqbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBPaWQgKmhhc2hvcGVyYXRvcnMs CiBzdGF0aWMgV2luZG93QWdnICptYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xh dXNlICp3YywKIAkJCQkJCQkJIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENvbElk eCwgT2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAogCQkJCQkJCQkgaW50 IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9p ZCAqb3JkQ29sbGF0aW9ucywKLQkJCQkJCQkJIExpc3QgKnJ1bkNvbmRpdGlvbiwgUlBTa2lwVG8g cnBTa2lwVG8sCisJCQkJCQkJCSBMaXN0ICpydW5Db25kaXRpb24sCiAJCQkJCQkJCSBSUFJQYXR0 ZXJuICpjb21waWxlZFBhdHRlcm4sCi0JCQkJCQkJCSBMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkJ CQkJCSBCaXRtYXBzZXQgKmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQsCiAJCQkJCQkJCSBSUFJO YXZPZmZzZXRLaW5kIG5hdk1heE9mZnNldEtpbmQsIGludDY0IG5hdk1heE9mZnNldCwKIAkJCQkJ CQkJIGJvb2wgaGFzRmlyc3ROYXYsCkBAIC0yODIyLDcgKzI4MjEsNiBAQCBjcmVhdGVfd2luZG93 YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAlP aWQJCSAgICpvcmRDb2xsYXRpb25zOwogCUxpc3RDZWxsICAgKmxjOwogCUxpc3QJICAgKmRlZmlu ZVZhcmlhYmxlTGlzdCA9IE5JTDsKLQlMaXN0CSAgICpmaWx0ZXJlZERlZmluZUNsYXVzZSA9IE5J TDsKIAlSUFJQYXR0ZXJuICpjb21waWxlZFBhdHRlcm4gPSBOVUxMOwogCUJpdG1hcHNldCAgKm1h dGNoU3RhcnREZXBlbmRlbnQgPSBOVUxMOwogCVJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0 S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOwpAQCAtMjg4OSw4ICsyODg3LDkgQEAgY3JlYXRl X3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3Bh dGgpCiAJCSAqIHJlamVjdHMgREVGSU5FIHZhcmlhYmxlcyBub3QgdXNlZCBpbiBQQVRURVJOLCBz byBubyBmaWx0ZXJpbmcgaXMKIAkJICogbmVlZGVkLgogCQkgKi8KLQkJYnVpbGREZWZpbmVWYXJp YWJsZUxpc3Qod2MtPmRlZmluZUNsYXVzZSwgJmRlZmluZVZhcmlhYmxlTGlzdCk7Ci0JCWZpbHRl cmVkRGVmaW5lQ2xhdXNlID0gd2MtPmRlZmluZUNsYXVzZTsKKwkJZm9yZWFjaF9ub2RlKFRhcmdl dEVudHJ5LCB0ZSwgd2MtPmRlZmluZUNsYXVzZSkKKwkJCWRlZmluZVZhcmlhYmxlTGlzdCA9IGxh cHBlbmQoZGVmaW5lVmFyaWFibGVMaXN0LAorCQkJCQkJCQkJCSBtYWtlU3RyaW5nKHBzdHJkdXAo dGUtPnJlc25hbWUpKSk7CiAKIAkJLyoKIAkJICogV2FsayBERUZJTkUgb25jZTogY29sbGVjdCBu YXYgb2Zmc2V0cyAoZm9yIHR1cGxlc3RvcmUgdHJpbSkgYW5kIHRoZQpAQCAtMjkyMywxMyArMjky MiwxMyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0Fn Z1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCSAgb3JkT3BlcmF0b3JzLAogCQkJCQkJICBvcmRDb2xs YXRpb25zLAogCQkJCQkJICBiZXN0X3BhdGgtPnJ1bkNvbmRpdGlvbiwKLQkJCQkJCSAgd2MtPnJw U2tpcFRvLAogCQkJCQkJICBjb21waWxlZFBhdHRlcm4sCi0JCQkJCQkgIGZpbHRlcmVkRGVmaW5l Q2xhdXNlLAogCQkJCQkJICBtYXRjaFN0YXJ0RGVwZW5kZW50LAotCQkJCQkJICBuYXZNYXhPZmZz ZXRLaW5kLCBuYXZNYXhPZmZzZXQsCisJCQkJCQkgIG5hdk1heE9mZnNldEtpbmQsCisJCQkJCQkg IG5hdk1heE9mZnNldCwKIAkJCQkJCSAgaGFzRmlyc3ROYXYsCi0JCQkJCQkgIG5hdkZpcnN0T2Zm c2V0S2luZCwgbmF2Rmlyc3RPZmZzZXQsCisJCQkJCQkgIG5hdkZpcnN0T2Zmc2V0S2luZCwKKwkJ CQkJCSAgbmF2Rmlyc3RPZmZzZXQsCiAJCQkJCQkgIGJlc3RfcGF0aC0+cXVhbCwKIAkJCQkJCSAg YmVzdF9wYXRoLT50b3B3aW5kb3csCiAJCQkJCQkgIHN1YnBsYW4pOwpAQCAtNzAwMCw5ICs2OTk5 LDggQEAgc3RhdGljIFdpbmRvd0FnZyAqCiBtYWtlX3dpbmRvd2FnZyhMaXN0ICp0bGlzdCwgV2lu ZG93Q2xhdXNlICp3YywKIAkJCSAgIGludCBwYXJ0TnVtQ29scywgQXR0ck51bWJlciAqcGFydENv bElkeCwgT2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRDb2xsYXRpb25zLAogCQkJICAgaW50 IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwgT2lkICpvcmRPcGVyYXRvcnMsIE9p ZCAqb3JkQ29sbGF0aW9ucywKLQkJCSAgIExpc3QgKnJ1bkNvbmRpdGlvbiwgUlBTa2lwVG8gcnBT a2lwVG8sCisJCQkgICBMaXN0ICpydW5Db25kaXRpb24sCiAJCQkgICBSUFJQYXR0ZXJuICpjb21w aWxlZFBhdHRlcm4sCi0JCQkgICBMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkgICBCaXRtYXBzZXQg KmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQsCiAJCQkgICBSUFJOYXZPZmZzZXRLaW5kIG5hdk1h eE9mZnNldEtpbmQsIGludDY0IG5hdk1heE9mZnNldCwKIAkJCSAgIGJvb2wgaGFzRmlyc3ROYXYs CkBAIC03MDM0LDEyICs3MDMyLDEyIEBAIG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5k b3dDbGF1c2UgKndjLAogCW5vZGUtPmluUmFuZ2VBc2MgPSB3Yy0+aW5SYW5nZUFzYzsKIAlub2Rl LT5pblJhbmdlTnVsbHNGaXJzdCA9IHdjLT5pblJhbmdlTnVsbHNGaXJzdDsKIAlub2RlLT50b3BX aW5kb3cgPSB0b3BXaW5kb3c7Ci0Jbm9kZS0+cnBTa2lwVG8gPSBycFNraXBUbzsKKwlub2RlLT5y cFNraXBUbyA9IHdjLT5ycFNraXBUbzsKIAogCS8qIFN0b3JlIGNvbXBpbGVkIHBhdHRlcm4gZm9y IE5GQSBleGVjdXRpb24gKi8KIAlub2RlLT5ycFBhdHRlcm4gPSBjb21waWxlZFBhdHRlcm47CiAK LQlub2RlLT5kZWZpbmVDbGF1c2UgPSBkZWZpbmVDbGF1c2U7CisJbm9kZS0+ZGVmaW5lQ2xhdXNl ID0gd2MtPmRlZmluZUNsYXVzZTsKIAogCS8qIFN0b3JlIHByZS1jb21wdXRlZCBtYXRjaF9zdGFy dCBkZXBlbmRlbmN5IGJpdG1hcHNldCAqLwogCW5vZGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRl bnQgPSBkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwpp bmRleCA1MGJjYTU5NDUxZi4uNDhiNzZhODQyZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5j CkBAIC05Niw5ICs5Niw2IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJz aXZlKFJQUlBhdHRlcm4gKnBhdHRlcm4sCiAJCQkJCQkJCQkJICBib29sICpoYXNBYnNvcmJhYmxl KTsKIHN0YXRpYyB2b2lkIGNvbXB1dGVBYnNvcmJhYmlsaXR5KFJQUlBhdHRlcm4gKnBhdHRlcm4p OwogCi1zdGF0aWMgdm9pZCBjb2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShSUFJQYXR0 ZXJuTm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJIExpc3QgKip2YXJOYW1lcyk7Ci0KIC8qCiAgKiBy cHJQYXR0ZXJuRXF1YWwKICAqCQlDb21wYXJlIHR3byBSUFJQYXR0ZXJuTm9kZSB0cmVlcyBmb3Ig ZXF1YWxpdHkuCkBAIC0xODI0LDU5ICsxODIxLDYgQEAgY29tcHV0ZUFic29yYmFiaWxpdHkoUlBS UGF0dGVybiAqcGF0dGVybikKIAlwYXR0ZXJuLT5pc0Fic29yYmFibGUgPSBoYXNBYnNvcmJhYmxl OwogfQogCi0vKgotICogY29sbGVjdFBhdHRlcm5WYXJpYWJsZXNSZWN1cnNpdmUKLSAqCQlSZWN1 cnNpdmVseSBjb2xsZWN0IHZhcmlhYmxlIG5hbWVzIGZyb20gcGF0dGVybiBBU1QuCi0gKi8KLXN0 YXRpYyB2b2lkCi1jb2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9k ZSAqbm9kZSwgTGlzdCAqKnZhck5hbWVzKQotewotCUFzc2VydChub2RlICE9IE5VTEwpOwotCi0J Y2hlY2tfc3RhY2tfZGVwdGgoKTsKLQotCXN3aXRjaCAobm9kZS0+bm9kZVR5cGUpCi0JewotCQlj YXNlIFJQUl9QQVRURVJOX1ZBUjoKLQkJCS8qIEFkZCB2YXJpYWJsZSBpZiBub3QgYWxyZWFkeSBp biBsaXN0ICovCi0JCQlmb3JlYWNoX25vZGUoU3RyaW5nLCB2YXJuYW1lLCAqdmFyTmFtZXMpCi0J CQl7Ci0JCQkJaWYgKHN0cmNtcChzdHJWYWwodmFybmFtZSksIG5vZGUtPnZhck5hbWUpID09IDAp Ci0JCQkJCXJldHVybjsJCS8qIEFscmVhZHkgY29sbGVjdGVkICovCi0JCQl9Ci0JCQkqdmFyTmFt ZXMgPSBsYXBwZW5kKCp2YXJOYW1lcywgbWFrZVN0cmluZyhwc3RyZHVwKG5vZGUtPnZhck5hbWUp KSk7Ci0JCQlicmVhazsKLQotCQljYXNlIFJQUl9QQVRURVJOX1NFUToKLQkJY2FzZSBSUFJfUEFU VEVSTl9BTFQ6Ci0JCWNhc2UgUlBSX1BBVFRFUk5fR1JPVVA6Ci0JCQlmb3JlYWNoX25vZGUoUlBS UGF0dGVybk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJlbikKLQkJCXsKLQkJCQljb2xsZWN0UGF0 dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShjaGlsZCwgdmFyTmFtZXMpOwotCQkJfQotCQkJYnJlYWs7 Ci0JfQotfQotCi0vKgotICogY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMKLSAqCQlDb2xsZWN0IHVu aXF1ZSB2YXJpYWJsZSBuYW1lcyB1c2VkIGluIFBBVFRFUk4gY2xhdXNlLgotICoKLSAqIFJldHVy bnMgYSBsaXN0IG9mIFN0cmluZyBub2RlcyBjb250YWluaW5nIHZhcmlhYmxlIG5hbWVzLgotICog VXNlZCB0byBmaWx0ZXIgZGVmaW5lQ2xhdXNlIGJlZm9yZSB2YXJJZCBhc3NpZ25tZW50LgotICov Ci1MaXN0ICoKLWNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJu KQotewotCUxpc3QJICAgKnZhck5hbWVzID0gTklMOwotCi0JLyogQ2FsbGVyIGVuc3VyZXMgcGF0 dGVybiBpcyBub3QgTlVMTCAqLwotCUFzc2VydChwYXR0ZXJuICE9IE5VTEwpOwotCi0JY29sbGVj dFBhdHRlcm5WYXJpYWJsZXNSZWN1cnNpdmUocGF0dGVybiwgJnZhck5hbWVzKTsKLQlyZXR1cm4g dmFyTmFtZXM7Ci19Ci0KIC8qCiAgKiBycHJfdm9sYXRpbGVfZnVuY19jaGVja2VyCiAgKgkJY2hl Y2tfZnVuY3Rpb25zX2luX25vZGUgY2FsbGJhY2s6IHRydWUgaWYgZnVuY2lkIGlzIFZPTEFUSUxF LgpAQCAtMTk1MywyNyArMTg5Nyw2IEBAIHZhbGlkYXRlX3Jwcl9kZWZpbmVfdm9sYXRpbGl0eShM aXN0ICpkZWZpbmVDbGF1c2UpCiAJfQogfQogCi0vKgotICogYnVpbGREZWZpbmVWYXJpYWJsZUxp c3QKLSAqCQlCdWlsZCBkZWZpbmVWYXJpYWJsZUxpc3QgZnJvbSBkZWZpbmVDbGF1c2UuCi0gKgot ICogVGhlIHBhcnNlciBhbHJlYWR5IGVuc3VyZXMgdGhhdCBhbGwgREVGSU5FIHZhcmlhYmxlcyBh cHBlYXIgaW4gUEFUVEVSTiwKLSAqIHNvIG5vIGZpbHRlcmluZyBpcyBuZWVkZWQgaGVyZS4KLSAq Ci0gKiBTZXRzICpkZWZpbmVWYXJpYWJsZUxpc3QgdG8gbGlzdCBvZiB2YXJpYWJsZSBuYW1lcyAo U3RyaW5nIG5vZGVzKS4KLSAqLwotdm9pZAotYnVpbGREZWZpbmVWYXJpYWJsZUxpc3QoTGlzdCAq ZGVmaW5lQ2xhdXNlLCBMaXN0ICoqZGVmaW5lVmFyaWFibGVMaXN0KQotewotCSpkZWZpbmVWYXJp YWJsZUxpc3QgPSBOSUw7Ci0KLQlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVD bGF1c2UpCi0JewotCQkqZGVmaW5lVmFyaWFibGVMaXN0ID0gbGFwcGVuZCgqZGVmaW5lVmFyaWFi bGVMaXN0LAotCQkJCQkJCQkJICBtYWtlU3RyaW5nKHBzdHJkdXAodGUtPnJlc25hbWUpKSk7Ci0J fQotfQotCiAvKgogICogYnVpbGRSUFJQYXR0ZXJuCiAgKgkJQ29tcGlsZSBwYXR0ZXJuIEFTVCB0 byBmbGF0IGJ5dGVjb2RlIGFycmF5LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA1YjRhYzhhNmMz My4uNTliODY1NmM4NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0yNjU0LDcgKzI2NTQsNyBA QCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCXN0cnVjdCBSUFJQYXR0ZXJuICpycFBh dHRlcm47CS8qIGNvbXBpbGVkIHBhdHRlcm4gZm9yIE5GQSBleGVjdXRpb24gKi8KIAlMaXN0CSAg ICpkZWZpbmVWYXJpYWJsZUxpc3Q7IC8qIGxpc3Qgb2Ygcm93IHBhdHRlcm4gZGVmaW5pdGlvbgog CQkJCQkJCQkJICogdmFyaWFibGVzIChsaXN0IG9mIFN0cmluZykgKi8KLQlMaXN0CSAgICpkZWZp bmVDbGF1c2VMaXN0OwkvKiBleHByZXNzaW9uIGZvciByb3cgcGF0dGVybiBkZWZpbml0aW9uCisJ TGlzdAkgICAqZGVmaW5lQ2xhdXNlRXhwcnM7CS8qIGV4cHJlc3Npb24gZm9yIHJvdyBwYXR0ZXJu IGRlZmluaXRpb24KIAkJCQkJCQkJCSAqIHNlYXJjaCBjb25kaXRpb25zIEV4cHJTdGF0ZSBsaXN0 ICovCiAJUlBSTkZBQ29udGV4dCAqbmZhQ29udGV4dDsJLyogYWN0aXZlIG1hdGNoaW5nIGNvbnRl eHRzIChoZWFkKSAqLwogCVJQUk5GQUNvbnRleHQgKm5mYUNvbnRleHRUYWlsOwkvKiB0YWlsIG9m IGFjdGl2ZSBjb250ZXh0cyAoZm9yIHJldmVyc2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggN2Mx YjNkMWJiMDcuLjg1NzZhM2M5YzViIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNjg3LDcgKzY4 Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFJQUk5hdkV4cHIKIAlFeHByCSAgICpvZmZzZXRfYXJnOwkJ Lyogb2Zmc2V0IGV4cHJlc3Npb24sIG9yIE5VTEwgZm9yIGRlZmF1bHQgKi8KIAlFeHByCSAgICpj b21wb3VuZF9vZmZzZXRfYXJnOwkvKiBvdXRlciBvZmZzZXQgZm9yIGNvbXBvdW5kIG5hdiwgb3IK IAkJCQkJCQkJCQkgKiBOVUxMIGlmIHNpbXBsZSAqLwotCU9pZAkJCXJlc3VsdHR5cGU7CQkvKiBy ZXN1bHQgdHlwZSAoc2FtZSBhcyBhcmcncyB0eXBlKSAqLworCS8qIHJlc3VsdCB0eXBlIChzYW1l IGFzIGFyZydzIHR5cGUpICovCisJT2lkCQkJcmVzdWx0dHlwZSBwZ19ub2RlX2F0dHIocXVlcnlf anVtYmxlX2lnbm9yZSk7CiAJLyogT0lEIG9mIGNvbGxhdGlvbiBvZiByZXN1bHQgKi8KIAlPaWQJ CQlyZXN1bHRjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcnByLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKaW5kZXggYjRm ODdkOGNhYTQuLjIzNzYzNDQyYjY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cnByLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCkBAIC02NywxMCArNjcsNyBA QAogI2RlZmluZSBSUFJFbGVtSXNGaW4oZSkJCQkoKGUpLT52YXJJZCA9PSBSUFJfVkFSSURfRklO KQogI2RlZmluZSBSUFJFbGVtQ2FuU2tpcChlKQkJKChlKS0+bWluID09IDApCiAKLWV4dGVybiBM aXN0ICpjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyhSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CiBl eHRlcm4gdm9pZCB2YWxpZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0aWxpdHkoTGlzdCAqZGVmaW5lQ2xh dXNlKTsKLWV4dGVybiB2b2lkIGJ1aWxkRGVmaW5lVmFyaWFibGVMaXN0KExpc3QgKmRlZmluZUNs YXVzZSwKLQkJCQkJCQkJCUxpc3QgKipkZWZpbmVWYXJpYWJsZUxpc3QpOwogZXh0ZXJuIFJQUlBh dHRlcm4gKmJ1aWxkUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybiwgTGlzdCAqZGVm aW5lVmFyaWFibGVMaXN0LAogCQkJCQkJCQkgICBSUFNraXBUbyBycFNraXBUbywgaW50IGZyYW1l T3B0aW9ucywKIAkJCQkJCQkJICAgYm9vbCBoYXNNYXRjaFN0YXJ0RGVwZW5kZW50KTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dAppbmRleCA4MGEzMmNj YTlhYi4uNjUyOTg5OTI3ZDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnByX2ludGVncmF0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9p bnRlZ3JhdGlvbi5vdXQKQEAgLTI0MCw5ICsyNDAsOSBAQCBPUkRFUiBCWSBpZDsKIC0tIG11c3Qg dGhlcmVmb3JlIHlpZWxkIHR3byBzZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuICBJbmxpbmUgc3Bl Y3MKIC0tIGFyZSB1c2VkIGhlcmUgYmVjYXVzZSBkZWR1cCBvbmx5IGFwcGxpZXMgdG8gaW5saW5l IHdpbmRvd3MuCiAtLSBCYXNlbGluZTogdHdvIGlubGluZSBSUFIgd2luZG93cyB0aGF0IGFyZSBz dHJ1Y3R1cmFsbHkgaWRlbnRpY2FsCi0tLSAoc2FtZSBPUkRFUiBCWSwgZnJhbWUsIFBBVFRFUk4s IGFuZCBERUZJTkUpIGFyZSBkZWR1cGVkIGJ5IHRoZQotLS0gcGFyc2VyIGludG8gYSBzaW5nbGUg V2luZG93QWdnIG5vZGUsIGNvbmZpcm1pbmcgdGhhdCBwYXJzZXItbGV2ZWwKLS0tIGRlZHVwIGlz IGFjdGl2ZSBmb3IgUlBSIHdpbmRvd3Mgd2hvc2UgREVGSU5FIG1hdGNoZXMuCistLSAoc2FtZSBQ QVJUSVRJT04gQlksIE9SREVSIEJZLCBmcmFtZSwgUEFUVEVSTiwgYW5kIERFRklORSkgYXJlIGRl ZHVwZWQgYnkgdGhlCistLSBwYXJzZXIgaW50byBhIHNpbmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29u ZmlybWluZyB0aGF0IHBhcnNlci1sZXZlbCBkZWR1cCBpcworLS0gYWN0aXZlIGZvciBSUFIgd2lu ZG93cyB3aG9zZSBERUZJTkUgbWF0Y2hlcy4KIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVAog ICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCkBAIC0zMjUsMTUgKzMyNSwxMCBAQCBPUkRF UiBCWSBpZDsKIC0tIEE1LiBVbnVzZWQgd2luZG93IHJlbW92YWwgcHJldmVudGlvbgogLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLSBWZXJpZnkgdGhhdCByZW1vdmVfdW51c2VkX3N1YnF1ZXJ5X291dHB1dHMoKSBkb2VzIG5v dCBkcm9wIGFuIFJQUgotLS0gd2luZG93IGZ1bmN0aW9uIGV2ZW4gd2hlbiB0aGUgb3V0ZXIgcXVl cnkgZG9lcyBub3QgcmVmZXJlbmNlIGl0cwotLS0gcmVzdWx0LiAgVGhlIFJQUiBXaW5kb3dBZ2cg bm9kZSBpcyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWluZyBwYXR0ZXJuCi0tLSBtYXRjaGluZywg c28gcmVtb3ZpbmcgdGhlIHdpbmRvdyBmdW5jdGlvbiB3b3VsZCBzaWxlbnRseSBza2lwIHRoZQot LS0gcGF0dGVybiBtYXRjaCBldmVuIHRob3VnaCB0aGUgc3Vycm91bmRpbmcgcXVlcnkgc3RpbGwg ZGVwZW5kcyBvbgotLS0gUlBSIHNlbWFudGljcy4KLS0tIFRoZSBvdXRlciBxdWVyeSBpZ25vcmVz IHRoZSBwZXItcm93IHdpbmRvdyByZXN1bHQsIHlldCBwYXR0ZXJuCi0tLSBtYXRjaGluZyBtdXN0 IHN0aWxsIGV4ZWN1dGUuICBUaGUgcGxhbiBtdXN0IHN0aWxsIGNvbnRhaW4gYQotLS0gV2luZG93 QWdnIG5vZGUgYmVsb3cgdGhlIG91dGVyIEFnZ3JlZ2F0ZTsgaWYgdGhlIHdpbmRvdyB3ZXJlCi0t LSByZW1vdmVkLCBvbmx5IEFnZ3JlZ2F0ZSArIFNlcSBTY2FuIHdvdWxkIGFwcGVhci4KKy0tIHdp bmRvdyBmdW5jdGlvbiB3aGVuIHRoZSBvdXRlciBxdWVyeSBkb2VzIG5vdCByZWZlcmVuY2UgaXRz IHJlc3VsdC4KKy0tIFRoZSBXaW5kb3dBZ2cgbm9kZSBwZXJmb3JtcyB0aGUgcGF0dGVybiBtYXRj aCBpdHNlbGY7IHdpdGhvdXQgaXQsCistLSB0aGUgbWF0Y2ggd291bGQgYmUgc2lsZW50bHkgc2tp cHBlZC4gIFRoZSBwbGFuIG11c3QgY29udGFpbiBhCistLSBXaW5kb3dBZ2cgbm9kZSBiZW5lYXRo IHRoZSBvdXRlciBBZ2dyZWdhdGUuCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgY291bnQo KikgRlJPTSAoCiAgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZwpAQCAt NTg3LDEwICs1ODIsOCBAQCBXSEVSRSBjbnQgPiAwOwogLS0gRVhQTEFJTiBWRVJCT1NFIGlzIHRo ZXJlZm9yZSBleHBlY3RlZCB0byBzaG93IGEgY2xlYW4gdGFyZ2V0bGlzdCBvbgogLS0gdGhlIG91 dGVyIFdpbmRvd0FnZywgd2l0aCBubyBERUZJTkUtZGVyaXZlZCBleHByZXNzaW9uIGxlYWtpbmcg aW4uCiAtLSBOb3RlOiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgREVGSU5FIChlLmcuLCAidmFsIikg bWF5IGFwcGVhciBhcwotLS0gcmVzanVuayBlbnRyaWVzIGluIHVwcGVyIFdpbmRvd0FnZyB0YXJn ZXRsaXN0cyAtLSB0aGF0IGlzIGEKLS0tIGhhcm1sZXNzIGJ5cHJvZHVjdCBvZiB0aGUgY29sdW1u IGd1YXJkJ3MgYnJvYWQgc2NvcGUgYW5kIGRvZXMgbm90Ci0tLSBhZmZlY3QgY2xpZW50IG91dHB1 dC4gIFRoZSBjbGFpbSBoZXJlIGlzIGxpbWl0ZWQgdG8gdGhlIGZ1bGwKLS0tIERFRklORSBib29s ZWFuIGV4cHJlc3Npb24uCistLSByZXNqdW5rIGVudHJpZXMgaW4gdXBwZXIgV2luZG93QWdnIHRh cmdldGxpc3RzIC0tIGJ1dCB0aGF0IGlzIGhhcm1sZXNzLgorLS0gVGhlIGNsYWltIGhlcmUgaXMg bGltaXRlZCB0byB0aGUgZnVsbCBERUZJTkUgYm9vbGVhbiBleHByZXNzaW9uLgogRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQogU0VMRUNUCiAgICAgY291bnQoKikgT1ZFUiB3X3JwciBBUyBy cHJfY250LApAQCAtNjIwLDEwICs2MTMsNiBAQCBXSU5ET1cKICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogaWQsIHZhbAogKDEzIHJvd3MpCiAKLS0tIEV4ZWN1dGluZyB0aGUgc2FtZSBxdWVy eSBzaG93cyB0aGUgY2xpZW50IHJlc3VsdCBpcyBsaW1pdGVkIHRvCi0tLSB0aGUgdHdvIHByb2pl Y3RlZCBjb2x1bW5zOyAiaWQiIGFuZCAidmFsIiB0aGF0IGFwcGVhcmVkIGluIHRoZQotLS0gdXBw ZXIgV2luZG93QWdnIE91dHB1dCBsaW5lIGFyZSByZXNqdW5rLW9ubHkgYW5kIGRvIG5vdCByZWFj aAotLS0gdGhlIGNsaWVudC4KIFNFTEVDVAogICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnBy X2NudCwKICAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCmluZGV4IDFkNjA3NTI2NWJiLi4yYjk5MGIy NDcwNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCkBAIC0xNjYs OSArMTY2LDkgQEAgT1JERVIgQlkgaWQ7CiAtLSBhcmUgdXNlZCBoZXJlIGJlY2F1c2UgZGVkdXAg b25seSBhcHBsaWVzIHRvIGlubGluZSB3aW5kb3dzLgogCiAtLSBCYXNlbGluZTogdHdvIGlubGlu ZSBSUFIgd2luZG93cyB0aGF0IGFyZSBzdHJ1Y3R1cmFsbHkgaWRlbnRpY2FsCi0tLSAoc2FtZSBP UkRFUiBCWSwgZnJhbWUsIFBBVFRFUk4sIGFuZCBERUZJTkUpIGFyZSBkZWR1cGVkIGJ5IHRoZQot LS0gcGFyc2VyIGludG8gYSBzaW5nbGUgV2luZG93QWdnIG5vZGUsIGNvbmZpcm1pbmcgdGhhdCBw YXJzZXItbGV2ZWwKLS0tIGRlZHVwIGlzIGFjdGl2ZSBmb3IgUlBSIHdpbmRvd3Mgd2hvc2UgREVG SU5FIG1hdGNoZXMuCistLSAoc2FtZSBQQVJUSVRJT04gQlksIE9SREVSIEJZLCBmcmFtZSwgUEFU VEVSTiwgYW5kIERFRklORSkgYXJlIGRlZHVwZWQgYnkgdGhlCistLSBwYXJzZXIgaW50byBhIHNp bmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29uZmlybWluZyB0aGF0IHBhcnNlci1sZXZlbCBkZWR1cCBp cworLS0gYWN0aXZlIGZvciBSUFIgd2luZG93cyB3aG9zZSBERUZJTkUgbWF0Y2hlcy4KIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVAogICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCkBA IC0yMTQsMTYgKzIxNCwxMCBAQCBPUkRFUiBCWSBpZDsKIC0tIEE1LiBVbnVzZWQgd2luZG93IHJl bW92YWwgcHJldmVudGlvbgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBWZXJpZnkgdGhhdCByZW1vdmVfdW51c2VkX3N1 YnF1ZXJ5X291dHB1dHMoKSBkb2VzIG5vdCBkcm9wIGFuIFJQUgotLS0gd2luZG93IGZ1bmN0aW9u IGV2ZW4gd2hlbiB0aGUgb3V0ZXIgcXVlcnkgZG9lcyBub3QgcmVmZXJlbmNlIGl0cwotLS0gcmVz dWx0LiAgVGhlIFJQUiBXaW5kb3dBZ2cgbm9kZSBpcyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWlu ZyBwYXR0ZXJuCi0tLSBtYXRjaGluZywgc28gcmVtb3ZpbmcgdGhlIHdpbmRvdyBmdW5jdGlvbiB3 b3VsZCBzaWxlbnRseSBza2lwIHRoZQotLS0gcGF0dGVybiBtYXRjaCBldmVuIHRob3VnaCB0aGUg c3Vycm91bmRpbmcgcXVlcnkgc3RpbGwgZGVwZW5kcyBvbgotLS0gUlBSIHNlbWFudGljcy4KLQot LS0gVGhlIG91dGVyIHF1ZXJ5IGlnbm9yZXMgdGhlIHBlci1yb3cgd2luZG93IHJlc3VsdCwgeWV0 IHBhdHRlcm4KLS0tIG1hdGNoaW5nIG11c3Qgc3RpbGwgZXhlY3V0ZS4gIFRoZSBwbGFuIG11c3Qg c3RpbGwgY29udGFpbiBhCi0tLSBXaW5kb3dBZ2cgbm9kZSBiZWxvdyB0aGUgb3V0ZXIgQWdncmVn YXRlOyBpZiB0aGUgd2luZG93IHdlcmUKLS0tIHJlbW92ZWQsIG9ubHkgQWdncmVnYXRlICsgU2Vx IFNjYW4gd291bGQgYXBwZWFyLgorLS0gd2luZG93IGZ1bmN0aW9uIHdoZW4gdGhlIG91dGVyIHF1 ZXJ5IGRvZXMgbm90IHJlZmVyZW5jZSBpdHMgcmVzdWx0LgorLS0gVGhlIFdpbmRvd0FnZyBub2Rl IHBlcmZvcm1zIHRoZSBwYXR0ZXJuIG1hdGNoIGl0c2VsZjsgd2l0aG91dCBpdCwKKy0tIHRoZSBt YXRjaCB3b3VsZCBiZSBzaWxlbnRseSBza2lwcGVkLiAgVGhlIHBsYW4gbXVzdCBjb250YWluIGEK Ky0tIFdpbmRvd0FnZyBub2RlIGJlbmVhdGggdGhlIG91dGVyIEFnZ3JlZ2F0ZS4KIEVYUExBSU4g KENPU1RTIE9GRikKIFNFTEVDVCBjb3VudCgqKSBGUk9NICgKICAgICBTRUxFQ1QgY291bnQoKikg T1ZFUiB3IEZST00gcnByX2ludGVnCkBAIC0zOTksMTEgKzM5Myw4IEBAIFdIRVJFIGNudCA+IDA7 CiAtLSBFWFBMQUlOIFZFUkJPU0UgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIHNob3cgYSBjbGVh biB0YXJnZXRsaXN0IG9uCiAtLSB0aGUgb3V0ZXIgV2luZG93QWdnLCB3aXRoIG5vIERFRklORS1k ZXJpdmVkIGV4cHJlc3Npb24gbGVha2luZyBpbi4KIC0tIE5vdGU6IGNvbHVtbnMgcmVmZXJlbmNl ZCBieSBERUZJTkUgKGUuZy4sICJ2YWwiKSBtYXkgYXBwZWFyIGFzCi0tLSByZXNqdW5rIGVudHJp ZXMgaW4gdXBwZXIgV2luZG93QWdnIHRhcmdldGxpc3RzIC0tIHRoYXQgaXMgYQotLS0gaGFybWxl c3MgYnlwcm9kdWN0IG9mIHRoZSBjb2x1bW4gZ3VhcmQncyBicm9hZCBzY29wZSBhbmQgZG9lcyBu b3QKLS0tIGFmZmVjdCBjbGllbnQgb3V0cHV0LiAgVGhlIGNsYWltIGhlcmUgaXMgbGltaXRlZCB0 byB0aGUgZnVsbAotLS0gREVGSU5FIGJvb2xlYW4gZXhwcmVzc2lvbi4KLQorLS0gcmVzanVuayBl bnRyaWVzIGluIHVwcGVyIFdpbmRvd0FnZyB0YXJnZXRsaXN0cyAtLSBidXQgdGhhdCBpcyBoYXJt bGVzcy4KKy0tIFRoZSBjbGFpbSBoZXJlIGlzIGxpbWl0ZWQgdG8gdGhlIGZ1bGwgREVGSU5FIGJv b2xlYW4gZXhwcmVzc2lvbi4KIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVAog ICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnByX2NudCwKQEAgLTQxNywxMCArNDA4LDYgQEAg V0lORE9XCiAgICAgd19ub3JtYWwgQVMgKE9SREVSIEJZIGlkCiAgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyk7CiAKLS0tIEV4ZWN1dGluZyB0 aGUgc2FtZSBxdWVyeSBzaG93cyB0aGUgY2xpZW50IHJlc3VsdCBpcyBsaW1pdGVkIHRvCi0tLSB0 aGUgdHdvIHByb2plY3RlZCBjb2x1bW5zOyAiaWQiIGFuZCAidmFsIiB0aGF0IGFwcGVhcmVkIGlu IHRoZQotLS0gdXBwZXIgV2luZG93QWdnIE91dHB1dCBsaW5lIGFyZSByZXNqdW5rLW9ubHkgYW5k IGRvIG5vdCByZWFjaAotLS0gdGhlIGNsaWVudC4KIFNFTEVDVAogICAgIGNvdW50KCopIE9WRVIg d19ycHIgQVMgcnByX2NudCwKICAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9j bnQKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0007-tidy-plumbing-more.patch" Content-Disposition: attachment; filename="v50-0007-tidy-plumbing-more.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqm1hl15 RnJvbSBlN2U0ZTFiMTY0ZTI4MDA0ZTVhNmFlMmY4ZDljZDFkMjEwMGM0MjcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDE0OjA1OjI1ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTYv MjldIEZ1cnRoZXIgdGlkeSB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwbHVtYmluZwoKTW9y ZSBiZWhhdmlvci1uZXV0cmFsIGNsZWFudXBzIHRvIHRoZSByb3cgcGF0dGVybiByZWNvZ25pdGlv biBjb2RlLApjb250aW51aW5nIHRoZSBwcmV2aW91cyB0aWR5LXVwIGFuZCB3aXRoIG5vIGNoYW5n ZSB0byBwbGFubmVyIG9yCmV4ZWN1dG9yIG91dHB1dDoKCi0gRHJvcCB0aGUgbm93LXVudXNlZCBX aW5kb3dDbGF1c2UgYXJndW1lbnQgb2YgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKCkKICBhbmQgZmxh dHRlbiB0aGUgcmVkdW5kYW50IG5lc3RlZCBibG9jayBpbiBpdHMgREVGSU5FLXZhcmlhYmxlIGxv b3AuCgotIFJlcGxhY2UgbWFudWFsIExpc3RDZWxsIGl0ZXJhdGlvbiBhbmQgaW5kZXggYm9va2tl ZXBpbmcgd2l0aAogIGZvcmVhY2hfbm9kZSgpL2ZvcmVhY2hfY3VycmVudF9pbmRleCgpIGluCiAg dmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5KCkgYW5kIG5mYV9ldmFsdWF0ZV9yb3coKSwg YW5kIGRyb3AgdGhlCiAgcmVkdW5kYW50IGVuZC1vZi1saXN0IGJyZWFrIHRlc3RzIGluIG5mYV9l dmFsdWF0ZV9yb3coKSBhbmQKICBuZmFfcmVldmFsdWF0ZV9kZXBlbmRlbnRfdmFycygpIG5vdyB0 aGF0IHRoZSBsb29wcyB3YWxrCiAgZGVmaW5lQ2xhdXNlRXhwcnMgZGlyZWN0bHkuCgotIFRlc3Qg d2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCBhZ2FpbnN0IE5JTCBpbnN0ZWFkIG9mCiAgbGlz dF9sZW5ndGgoKSA+IDAgaW4gRXhlY0luaXRXaW5kb3dBZ2coKS4KCi0gUmVtb3ZlIHRoZSBub3ct dW51c2VkIG1ha2VmdW5jcy5oIGluY2x1ZGUgZnJvbSBwbGFuL3Jwci5jLgoKLSBGaXggdGhlIHN0 YWxlIHN0cnVjdCBuYW1lIGluIHRoZSBSUENvbW1vblN5bnRheCBoZWFkZXIgY29tbWVudC4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgICAgICAgfCAgMyAtCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgfCAgOSArLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3Jwci5jICAgICB8ICA3ICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5j ICAgICAgIHwgODQgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgIDIgKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0 aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGRlZjBi ODQyM2IzLi4wOTliODFhZWI4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMTYxOCw5ICsx NjE4LDYgQEAgbmZhX3JlZXZhbHVhdGVfZGVwZW5kZW50X3ZhcnMoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJCQlyZXN1bHQgPSBFeGVjRXZhbEV4cHIoZXhw clN0YXRlLCBlY29udGV4dCwgJmlzbnVsbCk7CiAJCQl3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZFt2 YXJJZHhdID0gKCFpc251bGwgJiYgRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCQl9Ci0KLQkJaWYg KHZhcklkeCArIDEgPj0gbGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCkp Ci0JCQlicmVhazsKIAl9CiAKIAkvKiBSZXN0b3JlIG9yaWdpbmFsIG1hdGNoX3N0YXJ0LCBjdXJy ZW50cG9zLCBhbmQgaW52YWxpZGF0ZSBjYWNoZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCmluZGV4IDVkNDgzMmQxZGI5Li44MTlhZDgxNGJmNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYwpAQCAtMzEwMyw3ICszMTAzLDcgQEAgRXhlY0luaXRXaW5kb3dBZ2co V2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcmRlcmlu ZyAoREVGSU5FIG9yZGVyIGZpcnN0KSwgdmFySWQgPT0gZGVmaW5lSWR4IGZvciBhbGwgZGVmaW5l ZAogCSAqIHZhcmlhYmxlcywgc28gbm8gbWFwcGluZyBpcyBuZWVkZWQuCiAJICovCi0JaWYgKGxp c3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QpID4gMCkKKwlpZiAod2luc3Rh dGUtPmRlZmluZVZhcmlhYmxlTGlzdCAhPSBOSUwpCiAJCXdpbnN0YXRlLT5uZmFWYXJNYXRjaGVk ID0gcGFsbG9jMChzaXplb2YoYm9vbCkgKgogCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgod2luc3Rh dGUtPmRlZmluZVZhcmlhYmxlTGlzdCkpOwogCWVsc2UKQEAgLTQ2NDIsOCArNDY0Miw2IEBAIG5m YV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJN YXRjaGVkKQogewogCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7 CiAJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnJwckNvbnRleHQ7Ci0JaW50CQkJ bnVtRGVmaW5lVmFycyA9IGxpc3RfbGVuZ3RoKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3Qp OwotCWludAkJCXZhcklkeCA9IDA7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJaW50NjQJCXNh dmVkX3BvczsKIApAQCAtNDY3MCw2ICs0NjY4LDcgQEAgbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dP YmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpCiAKIAlmb3JlYWNoX3B0 cihFeHByU3RhdGUsIGV4cHJTdGF0ZSwgd2luc3RhdGUtPmRlZmluZUNsYXVzZUV4cHJzKQogCXsK KwkJaW50CQkJdmFySWR4ID0gZm9yZWFjaF9jdXJyZW50X2luZGV4KGV4cHJTdGF0ZSk7CiAJCURh dHVtCQlyZXN1bHQ7CiAJCWJvb2wJCWlzbnVsbDsKIApAQCAtNDY3NywxMCArNDY3Niw2IEBAIG5m YV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJN YXRjaGVkKQogCQlyZXN1bHQgPSBFeGVjRXZhbEV4cHIoZXhwclN0YXRlLCBlY29udGV4dCwgJmlz bnVsbCk7CiAKIAkJdmFyTWF0Y2hlZFt2YXJJZHhdID0gKCFpc251bGwgJiYgRGF0dW1HZXRCb29s KHJlc3VsdCkpOwotCi0JCXZhcklkeCsrOwotCQlpZiAodmFySWR4ID49IG51bURlZmluZVZhcnMp Ci0JCQlicmVhazsKIAl9CiAKIAl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IHNhdmVkX3BvczsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcnByLmMKaW5kZXggNDhiNzZhODQyZWQuLjU5N2E5NjZjN2IxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCi0jaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKQEAgLTE4ODcsMTIgKzE4ODYsOCBAQCByZWplY3Rfdm9sYXRpbGVfaW5fZGVmaW5l X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogdm9pZAogdmFsaWRhdGVfcnByX2Rl ZmluZV92b2xhdGlsaXR5KExpc3QgKmRlZmluZUNsYXVzZSkKIHsKLQlMaXN0Q2VsbCAgICpsYzsK LQotCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKKwlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnks IHRlLCBkZWZpbmVDbGF1c2UpCiAJewotCQlUYXJnZXRFbnRyeSAqdGUgPSBsZmlyc3Rfbm9kZShU YXJnZXRFbnRyeSwgbGMpOwotCiAJCSh2b2lkKSByZWplY3Rfdm9sYXRpbGVfaW5fZGVmaW5lX3dh bGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwgTlVMTCk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5j CmluZGV4IDhlZDAxYmI4ZjI4Li4zZTZiMmU1NzlhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpA QCAtNTQsOCArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMg Ki8KIHN0YXRpYyB2b2lkIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBz dGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgICBMaXN0ICpycERlZnMsIExp c3QgKip2YXJOYW1lcyk7Ci1zdGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywKLQkJCQkJCQkJICAgV2luZG93RGVmICp3 aW5kZWYsIExpc3QgKip0YXJnZXRsaXN0KTsKK3N0YXRpYyBMaXN0ICp0cmFuc2Zvcm1EZWZpbmVD bGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dEZWYgKndpbmRlZiwKKwkJCQkJCQkJICAg TGlzdCAqKnRhcmdldGxpc3QpOwogc3RhdGljIGJvb2wgZGVmaW5lX3dhbGtlcihOb2RlICpub2Rl LCB2b2lkICpjb250ZXh0KTsKIAogLyoKQEAgLTE3OCw3ICsxNzgsNyBAQCB0cmFuc2Zvcm1SUFIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwK IAl3Yy0+aW5pdGlhbCA9IHdpbmRlZi0+cnBDb21tb25TeW50YXgtPmluaXRpYWw7CiAKIAkvKiBU cmFuc2Zvcm0gREVGSU5FIGNsYXVzZSBpbnRvIGxpc3Qgb2YgVGFyZ2V0RW50cnkncyAqLwotCXdj LT5kZWZpbmVDbGF1c2UgPSB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UocHN0YXRlLCB3Yywgd2luZGVm LCB0YXJnZXRsaXN0KTsKKwl3Yy0+ZGVmaW5lQ2xhdXNlID0gdHJhbnNmb3JtRGVmaW5lQ2xhdXNl KHBzdGF0ZSwgd2luZGVmLCB0YXJnZXRsaXN0KTsKIAogCS8qIFN0b3JlIFBBVFRFUk4gQVNUIGZv ciBkZXBhcnNpbmcgKi8KIAl3Yy0+cnBQYXR0ZXJuID0gd2luZGVmLT5ycENvbW1vblN5bnRheC0+ cnBQYXR0ZXJuOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAgKiBwYXJzZV9leHBy LmMgdmlhIHRoZSBwX3Jwcl9wYXR0ZXJuX3ZhcnMgY2hlY2suCiAgKi8KIHN0YXRpYyBMaXN0ICoK LXRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAq d2MsIFdpbmRvd0RlZiAqd2luZGVmLAordHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgV2luZG93RGVmICp3aW5kZWYsCiAJCQkJCSAgTGlzdCAqKnRhcmdldGxpc3QpCiB7 CiAJTGlzdAkgICAqcmVzdGFyZ2V0czsKQEAgLTM0NSw2ICszNDUsOCBAQCB0cmFuc2Zvcm1EZWZp bmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYg KndpbmRlZiwKIAlmb3JlYWNoX25vZGUoUmVzVGFyZ2V0LCByZXN0YXJnZXQsIHdpbmRlZi0+cnBD b21tb25TeW50YXgtPnJwRGVmcykKIAl7CiAJCVRhcmdldEVudHJ5ICp0ZURlZmluZTsKKwkJTm9k ZQkgICAqZXhwcjsKKwkJTGlzdAkgICAqdmFyczsKIAogCQluYW1lID0gcmVzdGFyZ2V0LT5uYW1l OwogCkBAIC0zNzQsNTQgKzM3Niw0OCBAQCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkJICogdGhl IGluZGl2aWR1YWwgVmFyIG5vZGVzIGl0IHJlZmVyZW5jZXMgYXJlIHByZXNlbnQgaW4gdGhlCiAJ CSAqIHRhcmdldGxpc3QsIHNvIHRoZSBwbGFubmVyIGNhbiBwcm9wYWdhdGUgdGhlIHJlZmVyZW5j ZWQgY29sdW1ucy4KIAkJICovCi0JCXsKLQkJCU5vZGUJICAgKmV4cHI7Ci0JCQlMaXN0CSAgICp2 YXJzOworCQlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHJlc3RhcmdldC0+dmFsLAorCQkJ CQkJCSBFWFBSX0tJTkRfUlBSX0RFRklORSk7CiAKLQkJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgcmVzdGFyZ2V0LT52YWwsCi0JCQkJCQkJCSBFWFBSX0tJTkRfUlBSX0RFRklORSk7CisJ CS8qCisJCSAqIFB1bGwgb3V0IFZhciBub2RlcyBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByZXNz aW9uIGFuZCBlbnN1cmUgZWFjaAorCQkgKiBvbmUgaXMgcHJlc2VudCBpbiB0aGUgdGFyZ2V0bGlz dC4gIFRoaXMgaXMgbmVlZGVkIHNvIHRoZSBwbGFubmVyCisJCSAqIHByb3BhZ2F0ZXMgdGhlIHJl ZmVyZW5jZWQgY29sdW1ucyB0aHJvdWdoIHRoZSBwbGFuIHRyZWUsIG1ha2luZworCQkgKiB0aGVt IGF2YWlsYWJsZSB0byB0aGUgV2luZG93QWdnJ3MgREVGSU5FIGV2YWx1YXRpb24uCisJCSAqLwor CQl2YXJzID0gcHVsbF92YXJfY2xhdXNlKGV4cHIsIDApOworCQlmb3JlYWNoX25vZGUoVmFyLCB2 YXIsIHZhcnMpCisJCXsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAKLQkJCS8qCi0JCQkgKiBQ dWxsIG91dCBWYXIgbm9kZXMgZnJvbSB0aGUgdHJhbnNmb3JtZWQgZXhwcmVzc2lvbiBhbmQgZW5z dXJlCi0JCQkgKiBlYWNoIG9uZSBpcyBwcmVzZW50IGluIHRoZSB0YXJnZXRsaXN0LiAgVGhpcyBp cyBuZWVkZWQgc28gdGhlCi0JCQkgKiBwbGFubmVyIHByb3BhZ2F0ZXMgdGhlIHJlZmVyZW5jZWQg Y29sdW1ucyB0aHJvdWdoIHRoZSBwbGFuCi0JCQkgKiB0cmVlLCBtYWtpbmcgdGhlbSBhdmFpbGFi bGUgdG8gdGhlIFdpbmRvd0FnZydzIERFRklORQotCQkJICogZXZhbHVhdGlvbi4KLQkJCSAqLwot CQkJdmFycyA9IHB1bGxfdmFyX2NsYXVzZShleHByLCAwKTsKLQkJCWZvcmVhY2hfbm9kZShWYXIs IHZhciwgdmFycykKKwkJCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGxlLCAqdGFyZ2V0bGlz dCkKIAkJCXsKLQkJCQlib29sCQlmb3VuZCA9IGZhbHNlOwotCi0JCQkJZm9yZWFjaF9ub2RlKFRh cmdldEVudHJ5LCB0bGUsICp0YXJnZXRsaXN0KQorCQkJCWlmIChJc0EodGxlLT5leHByLCBWYXIp ICYmCisJCQkJCSgoVmFyICopIHRsZS0+ZXhwciktPnZhcm5vID09IHZhci0+dmFybm8gJiYKKwkJ CQkJKChWYXIgKikgdGxlLT5leHByKS0+dmFyYXR0bm8gPT0gdmFyLT52YXJhdHRubykKIAkJCQl7 Ci0JCQkJCWlmIChJc0EodGxlLT5leHByLCBWYXIpICYmCi0JCQkJCQkoKFZhciAqKSB0bGUtPmV4 cHIpLT52YXJubyA9PSB2YXItPnZhcm5vICYmCi0JCQkJCQkoKFZhciAqKSB0bGUtPmV4cHIpLT52 YXJhdHRubyA9PSB2YXItPnZhcmF0dG5vKQotCQkJCQl7Ci0JCQkJCQlmb3VuZCA9IHRydWU7Ci0J CQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQkJCQlpZiAoIWZvdW5kKQotCQkJCXsKLQkJCQkJ VGFyZ2V0RW50cnkgKm5ld3RsZTsKLQotCQkJCQluZXd0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgY29weU9iamVjdCh2YXIpLAotCQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoKnRhcmdldGxp c3QpICsgMSwKLQkJCQkJCQkJCQkJIE5VTEwsCi0JCQkJCQkJCQkJCSB0cnVlKTsKLQkJCQkJKnRh cmdldGxpc3QgPSBsYXBwZW5kKCp0YXJnZXRsaXN0LCBuZXd0bGUpOworCQkJCQlmb3VuZCA9IHRy dWU7CisJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KLQkJCWxpc3RfZnJlZSh2YXJzKTsKKwkJCWlm ICghZm91bmQpCisJCQl7CisJCQkJVGFyZ2V0RW50cnkgKm5ld3RsZTsKIAotCQkJLyogQnVpbGQg dGhlIGRlZmluZUNsYXVzZSBlbnRyeSBkaXJlY3RseSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHBy ICovCi0JCQl0ZURlZmluZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSBleHByLAotCQkJCQkJ CQkJICAgbGlzdF9sZW5ndGgoZGVmaW5lQ2xhdXNlKSArIDEsCi0JCQkJCQkJCQkgICBwc3RyZHVw KG5hbWUpLAotCQkJCQkJCQkJICAgdHJ1ZSk7CisJCQkJbmV3dGxlID0gbWFrZVRhcmdldEVudHJ5 KChFeHByICopIGNvcHlPYmplY3QodmFyKSwKKwkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoKnRhcmdl dGxpc3QpICsgMSwKKwkJCQkJCQkJCQkgTlVMTCwKKwkJCQkJCQkJCQkgdHJ1ZSk7CisJCQkJKnRh cmdldGxpc3QgPSBsYXBwZW5kKCp0YXJnZXRsaXN0LCBuZXd0bGUpOworCQkJfQogCQl9CisJCWxp c3RfZnJlZSh2YXJzKTsKKworCQkvKiBCdWlsZCB0aGUgZGVmaW5lQ2xhdXNlIGVudHJ5IGRpcmVj dGx5IGZyb20gdGhlIHRyYW5zZm9ybWVkIGV4cHIgKi8KKwkJdGVEZWZpbmUgPSBtYWtlVGFyZ2V0 RW50cnkoKEV4cHIgKikgZXhwciwKKwkJCQkJCQkJICAgbGlzdF9sZW5ndGgoZGVmaW5lQ2xhdXNl KSArIDEsCisJCQkJCQkJCSAgIHBzdHJkdXAobmFtZSksCisJCQkJCQkJCSAgIHRydWUpOwogCiAJ CS8qIGJ1aWxkIHRyYW5zZm9ybWVkIERFRklORSBjbGF1c2UgKGxpc3Qgb2YgVGFyZ2V0RW50cnkp ICovCiAJCWRlZmluZUNsYXVzZSA9IGxhcHBlbmQoZGVmaW5lQ2xhdXNlLCB0ZURlZmluZSk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTMwOWRmYmRiNjYuLjk0N2U2NjgwMjBlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCkBAIC02NDQsNyArNjQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUlBSUGF0 dGVybk5vZGUKIH0gUlBSUGF0dGVybk5vZGU7CiAKIC8qCi0gKiBSb3dQYXR0ZXJuQ29tbW9uU3lu dGF4IC0gcmF3IHJlcHJlc2VudGF0aW9uIG9mIHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50YXgKKyAq IFJQQ29tbW9uU3ludGF4IC0gcmF3IHJlcHJlc2VudGF0aW9uIG9mIHJvdyBwYXR0ZXJuIGNvbW1v biBzeW50YXgKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUlBDb21tb25TeW50YXgKIHsKLS0gCjIuNTAu MSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0008-refactor-define.patch" Content-Disposition: attachment; filename="v50-0008-refactor-define.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqm4px16 RnJvbSA2MDkzOWEyMjc4ZGNiMWQ2YTY2ZWY5MDYyNTRhZTlmMWFiYjE1OTg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDE0OjU1OjUxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTcv MjldIFJlZmFjdG9yIHRyYW5zZm9ybURlZmluZUNsYXVzZSBpbiByb3cgcGF0dGVybgogcmVjb2du aXRpb24KClR3byByZWxhdGVkIGNsZWFudXBzIHRvIERFRklORSBjbGF1c2UgcGFyc2UgYW5hbHlz aXMsIHdpdGggbm8gY2hhbmdlIHRvCnBsYW5uZXIgb3IgZXhlY3V0b3Igb3V0cHV0IGJleW9uZCBv bmUgZXJyb3ItY3Vyc29yIHBvc2l0aW9uOgoKLSBIb2lzdCB0aGUgIkRFRklORSB2YXJpYWJsZSBu b3QgdXNlZCBpbiBQQVRURVJOIiBjcm9zcy1jaGVjayBvdXQgb2YgdGhlCiAgcmVjdXJzaXZlIHZh bGlkYXRlUlBSUGF0dGVyblZhckNvdW50KCkgaW50byBpdHMgY2FsbGVyLiAgVGhlIGNoZWNrIG9u bHkKICBuZWVkcyB0byBydW4gb25jZSwgc28gdGhlIHJwRGVmcyBhcmd1bWVudCBhbmQgaXRzIE5V TEwtc2VudGluZWwgZ2F0aW5nCiAgYXJlIGdvbmUsIGFuZCB0aGUgcmVjdXJzaXZlIHJvdXRpbmUg bm93IG9ubHkgY291bnRzIHBhdHRlcm4gdmFyaWFibGVzLgoKLSBSZW9yZGVyIHBlci12YXJpYWJs ZSBERUZJTkUgcHJvY2Vzc2luZyB0byB0cmFuc2Zvcm1FeHByIC0+CiAgY29lcmNlX3RvX2Jvb2xl YW4gLT4gcHVsbF92YXJfY2xhdXNlIGFuZCBkcm9wIHRoZSBzZXBhcmF0ZSBzZWNvbmQKICBjb2Vy Y2lvbiBwYXNzLCBzbyBwdWxsX3Zhcl9jbGF1c2UgYWx3YXlzIG9wZXJhdGVzIG9uIHRoZSBmaW5h bCBjb2VyY2VkCiAgZXhwcmVzc2lvbiBhbmQgYSB0eXBlIG1pc21hdGNoIGlzIHJlcG9ydGVkIGJl Zm9yZSB0aGUgdGFyZ2V0bGlzdCBpcwogIHRvdWNoZWQuICBUaGUgZHVwbGljYXRlLXZhcmlhYmxl IGNoZWNrIG1vdmVzIHRvIGl0cyBvd24gbGVhZGluZyBsb29wCiAgYW5kIG5vdyByZXBvcnRzIGF0 IHRoZSBsYXRlciAoZHVwbGljYXRlKSBkZWZpbml0aW9uLgoKQWRkIHJlZ3Jlc3Npb24gY292ZXJh Z2UgZm9yIERFRklORSBjb2VyY2lvbiBhbmQgVmFyIHByb3BhZ2F0aW9uOiBhCmJvb2xlYW4tZG9t YWluIHByZWRpY2F0ZSAodGhlIG9uZSBjYXNlIHdoZXJlIGNvZXJjZV90b19ib29sZWFuIGlzIG5v dCBhCm5vLW9wKSwgYSBWYXIgcmVmZXJlbmNlZCBvbmx5IGluc2lkZSBhIG5hdmlnYXRpb24gb3Bl cmF0aW9uLCBhbmQKcmVqZWN0aW9uIG9mIGEgbm9uLWJvb2xlYW4gREVGSU5FIGV4cHJlc3Npb24u Ci0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jICAgICAgICAgfCAxNjMgKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5v dXQgfCAgNzggKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwg ICAgICB8ICA1OSArKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyks IDkxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCAzZTZiMmU1NzlhMy4u MTE2Y2QyMDZlMzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTUzLDcgKzUzLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyB2b2lkIHZh bGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5v ZGUgKm5vZGUsCi0JCQkJCQkJCQkgICBMaXN0ICpycERlZnMsIExpc3QgKip2YXJOYW1lcyk7CisJ CQkJCQkJCQkgICBMaXN0ICoqdmFyTmFtZXMpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybURlZmlu ZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0RlZiAqd2luZGVmLAogCQkJCQkJCQkg ICBMaXN0ICoqdGFyZ2V0bGlzdCk7CiBzdGF0aWMgYm9vbCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5v ZGUsIHZvaWQgKmNvbnRleHQpOwpAQCAtMTkyLDE1ICsxOTIsMTQgQEAgdHJhbnNmb3JtUlBSKFBh cnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAg KiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIG51bWJlciBvZiB1bmlxdWUgdmFyaWFibGVzIHdvdWxk IHJlcXVpcmUgYSB2YXJJZAogICogZ3JlYXRlciB0aGFuIFJQUl9WQVJJRF9NQVguCiAgKgotICog SWYgcnBEZWZzIGlzIG5vbi1OVUxMLCBlYWNoIERFRklORSB2YXJpYWJsZSBuYW1lIGlzIGFsc28g dmFsaWRhdGVkIGFnYWluc3QKLSAqIHZhck5hbWVzOyBhbnkgREVGSU5FIG5hbWUgbm90IHByZXNl bnQgaW4gUEFUVEVSTiBpcyByZWplY3RlZCB3aXRoIGFuIGVycm9yLgotICogdmFyTmFtZXMgaXRz ZWxmIGlzIG5vdCBleHRlbmRlZCBieSB0aGlzIHN0ZXAgLS0gaXQgY2FycmllcyBvbmx5IFBBVFRF Uk4KLSAqIHZhcmlhYmxlIG5hbWVzLCB3aGljaCBpcyB3aGF0IHRyYW5zZm9ybUNvbHVtblJlZiBj aGVja3MgdmlhCi0gKiBwX3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gaWRlbnRpZnkgcGF0dGVybiB2YXJp YWJsZSBxdWFsaWZpZXJzLgorICogdmFyTmFtZXMgY29sbGVjdHMgdGhlIHVuaXF1ZSBQQVRURVJO IHZhcmlhYmxlIG5hbWVzLCB3aGljaCBpcyB3aGF0CisgKiB0cmFuc2Zvcm1Db2x1bW5SZWYgY2hl Y2tzIHZpYSBwX3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gaWRlbnRpZnkgcGF0dGVybgorICogdmFyaWFi bGUgcXVhbGlmaWVycy4gIENyb3NzLWNoZWNraW5nIERFRklORSB2YXJpYWJsZSBuYW1lcyBhZ2Fp bnN0IHRoaXMKKyAqIGxpc3QgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LCBzaW5jZSBp dCBvbmx5IG5lZWRzIHRvIHJ1biBvbmNlLgogICovCiBzdGF0aWMgdm9pZAogdmFsaWRhdGVSUFJQ YXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAqbm9kZSwK LQkJCQkJCSAgIExpc3QgKnJwRGVmcywgTGlzdCAqKnZhck5hbWVzKQorCQkJCQkJICAgTGlzdCAq KnZhck5hbWVzKQogewogCS8qIFBhdHRlcm4gbm9kZSBtdXN0IGV4aXN0IC0gcGFyc2VyIGFsd2F5 cyBwcm92aWRlcyBub24tTlVMTCByb290ICovCiAJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CkBAIC0y NTUsMzkgKzI1NCwxMCBAQCB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpw c3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAogCQkJLyogUmVjdXJzZSBpbnRvIGNoaWxkcmVu ICovCiAJCQlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJl bikKIAkJCXsKLQkJCQl2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChwc3RhdGUsIGNoaWxkLCBO VUxMLCB2YXJOYW1lcyk7CisJCQkJdmFsaWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQocHN0YXRlLCBj aGlsZCwgdmFyTmFtZXMpOwogCQkJfQogCQkJYnJlYWs7CiAJfQotCi0JLyoKLQkgKiBBZnRlciB0 aGUgdG9wLWxldmVsIGNhbGwsIHZhbGlkYXRlIHRoYXQgZXZlcnkgREVGSU5FIHZhcmlhYmxlIG5h bWUgaXMKLQkgKiBwcmVzZW50IGluIHRoZSBQQVRURVJOIHZhcmlhYmxlIGxpc3Q7IHJlamVjdCBu YW1lcyBub3QgdXNlZCBpbiBQQVRURVJOLgotCSAqIFRoaXMgaXMgb25seSBkb25lIG9uY2UgYXQg dGhlIG91dGVybW9zdCByZWN1cnNpb24gbGV2ZWwsIGRldGVjdGVkIGJ5Ci0JICogcnBEZWZzIGJl aW5nIG5vbi1OVUxMIChyZWN1cnNpdmUgY2FsbHMgcGFzcyBOVUxMKS4KLQkgKi8KLQlpZiAocnBE ZWZzKQotCXsKLQkJZm9yZWFjaF9ub2RlKFJlc1RhcmdldCwgcnQsIHJwRGVmcykKLQkJewotCQkJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKLQotCQkJZm9yZWFjaF9ub2RlKFN0cmluZywgdmFybmFtZSwg KnZhck5hbWVzKQotCQkJewotCQkJCWlmIChzdHJjbXAoc3RyVmFsKHZhcm5hbWUpLCBydC0+bmFt ZSkgPT0gMCkKLQkJCQl7Ci0JCQkJCWZvdW5kID0gdHJ1ZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQot CQkJfQotCQkJaWYgKCFmb3VuZCkKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQllcnJtc2coIkRFRklORSB2YXJpYWJsZSBcIiVz XCIgaXMgbm90IHVzZWQgaW4gUEFUVEVSTiIsCi0JCQkJCQkJICAgcnQtPm5hbWUpLAotCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcnQtPmxvY2F0aW9uKSk7Ci0JCX0KLQl9CiB9CiAK IC8qCkBAIC0yOTYsMTQgKzI2NiwxNiBAQCB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJz ZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAogICoKICAqIEZpcnN0OgogICog ICAxLiBWYWxpZGF0ZXMgUEFUVEVSTiB2YXJpYWJsZSBjb3VudCBhbmQgY29sbGVjdHMgUlBSIHZh cmlhYmxlIG5hbWVzCisgKiAgIDIuIFJlamVjdHMgREVGSU5FIHZhcmlhYmxlcyBub3QgdXNlZCBp biBQQVRURVJOCisgKiAgIDMuIENoZWNrcyBmb3IgZHVwbGljYXRlIHZhcmlhYmxlIG5hbWVzIGlu IERFRklORSBjbGF1c2UKICAqCiAgKiBUaGVuIGZvciBlYWNoIERFRklORSB2YXJpYWJsZToKLSAq ICAgMi4gQ2hlY2tzIGZvciBkdXBsaWNhdGUgdmFyaWFibGUgbmFtZXMgaW4gREVGSU5FIGNsYXVz ZQotICogICAzLiBUcmFuc2Zvcm1zIGV4cHJlc3Npb24gdmlhIHRyYW5zZm9ybUV4cHIoKSBhbmQg ZW5zdXJlcyByZWZlcmVuY2VkCi0gKiAgICAgIFZhciBub2RlcyBhcmUgcHJlc2VudCBpbiB0aGUg cXVlcnkgdGFyZ2V0bGlzdCAodmlhIHB1bGxfdmFyX2NsYXVzZSkKLSAqICAgNC4gQ3JlYXRlcyBk ZWZpbmVDbGF1c2UgZW50cnkgd2l0aCBwcm9wZXIgcmVzbmFtZSAocGF0dGVybiB2YXJpYWJsZSBu YW1lKQotICogICA1LiBDb2VyY2VzIGV4cHJlc3Npb25zIHRvIGJvb2xlYW4gdHlwZQotICogICA2 LiBNYXJrcyBjb2x1bW4gb3JpZ2lucyBhbmQgYXNzaWducyBjb2xsYXRpb24gaW5mb3JtYXRpb24K KyAqICAgNC4gVHJhbnNmb3JtcyBleHByZXNzaW9uIHZpYSB0cmFuc2Zvcm1FeHByKCkgYW5kIGNv ZXJjZXMgaXQgdG8gYm9vbGVhbgorICogICA1LiBDcmVhdGVzIGRlZmluZUNsYXVzZSBlbnRyeSB3 aXRoIHByb3BlciByZXNuYW1lIChwYXR0ZXJuIHZhcmlhYmxlIG5hbWUpCisgKiAgIDYuIEVuc3Vy ZXMgcmVmZXJlbmNlZCBWYXIgbm9kZXMgYXJlIHByZXNlbnQgaW4gdGhlIHF1ZXJ5IHRhcmdldGxp c3QgKHZpYQorICogICAgICBwdWxsX3Zhcl9jbGF1c2UpCisgKgorICogRmluYWxseSBtYXJrcyBj b2x1bW4gb3JpZ2lucyBhbmQgYXNzaWducyBjb2xsYXRpb24gaW5mb3JtYXRpb24uCiAgKgogICog Tm90ZTogVmFyaWFibGVzIG5vdCBpbiBERUZJTkUgYXJlIGV2YWx1YXRlZCBhcyBUUlVFIGJ5IHRo ZSBleGVjdXRvci4KICAqIFZhcmlhYmxlcyBpbiBERUZJTkUgYnV0IG5vdCBpbiBQQVRURVJOIGFy ZSByZWplY3RlZCBhcyBhbiBlcnJvci4KQEAgLTMxNiw5ICsyODgsNyBAQCBzdGF0aWMgTGlzdCAq CiB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dEZWYgKndp bmRlZiwKIAkJCQkJICBMaXN0ICoqdGFyZ2V0bGlzdCkKIHsKLQlMaXN0CSAgICpyZXN0YXJnZXRz OwogCUxpc3QJICAgKmRlZmluZUNsYXVzZSA9IE5JTDsKLQljaGFyCSAgICpuYW1lOwogCUxpc3QJ ICAgKnBhdHRlcm5WYXJOYW1lcyA9IE5JTDsKIAogCS8qCkBAIC0zMjgsNTYgKzI5OCw4NiBAQCB0 cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dEZWYgKndpbmRl ZiwKIAlBc3NlcnQod2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzICE9IE5VTEwpOwogCiAJ LyoKLQkgKiBWYWxpZGF0ZSBQQVRURVJOIHZhcmlhYmxlIGNvdW50LCByZWplY3QgREVGSU5FIHZh cmlhYmxlcyBub3QgdXNlZCBpbgotCSAqIFBBVFRFUk4sIGFuZCBjb2xsZWN0IFBBVFRFUk4gdmFy aWFibGUgbmFtZXMgZm9yIHRyYW5zZm9ybUNvbHVtblJlZi4KKwkgKiBWYWxpZGF0ZSBQQVRURVJO IHZhcmlhYmxlIGNvdW50IGFuZCBjb2xsZWN0IHRoZSBQQVRURVJOIHZhcmlhYmxlIG5hbWVzCisJ ICogZm9yIHRyYW5zZm9ybUNvbHVtblJlZi4KIAkgKi8KIAl2YWxpZGF0ZVJQUlBhdHRlcm5WYXJD b3VudChwc3RhdGUsIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwUGF0dGVybiwKLQkJCQkJCQkg ICB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMsCiAJCQkJCQkJICAgJnBhdHRlcm5WYXJO YW1lcyk7CiAJcHN0YXRlLT5wX3Jwcl9wYXR0ZXJuX3ZhcnMgPSBwYXR0ZXJuVmFyTmFtZXM7CiAK KwkvKgorCSAqIFJlamVjdCBhbnkgREVGSU5FIHZhcmlhYmxlIHdob3NlIG5hbWUgZG9lcyBub3Qg YXBwZWFyIGluIFBBVFRFUk4uICBUaGlzCisJICogY3Jvc3MtY2hlY2sgb25seSBuZWVkcyB0byBy dW4gb25jZSwgc28gaXQgbGl2ZXMgaGVyZSBpbiB0aGUgY2FsbGVyCisJICogcmF0aGVyIHRoYW4g aW4gdGhlIHJlY3Vyc2l2ZSB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudCgpLgorCSAqLworCWZv cmVhY2hfbm9kZShSZXNUYXJnZXQsIHJ0LCB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMp CisJeworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCWZvcmVhY2hfbm9kZShTdHJpbmcsIHZh cm5hbWUsIHBhdHRlcm5WYXJOYW1lcykKKwkJeworCQkJaWYgKHN0cmNtcChzdHJWYWwodmFybmFt ZSksIHJ0LT5uYW1lKSA9PSAwKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsK KwkJCX0KKwkJfQorCQlpZiAoIWZvdW5kKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiREVGSU5FIHZhcmlhYmxlIFwi JXNcIiBpcyBub3QgdXNlZCBpbiBQQVRURVJOIiwKKwkJCQkJCSAgIHJ0LT5uYW1lKSwKKwkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcnQtPmxvY2F0aW9uKSk7CisJfQorCiAJLyoKIAkg KiBDaGVjayBmb3IgZHVwbGljYXRlIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24gdmFyaWFibGVzLiAg VGhlIHN0YW5kYXJkCiAJICogcmVxdWlyZXMgdGhhdCBubyB0d28gcm93IHBhdHRlcm4gZGVmaW5p dGlvbiB2YXJpYWJsZSBuYW1lcyBzaGFsbCBiZQotCSAqIGVxdWl2YWxlbnQuCisJICogZXF1aXZh bGVudC4gIFJlcG9ydCB0aGUgZXJyb3IgYXQgdGhlIGxhdGVyIChkdXBsaWNhdGUpIGRlZmluaXRp b24uCiAJICovCi0JcmVzdGFyZ2V0cyA9IE5JTDsKIAlmb3JlYWNoX25vZGUoUmVzVGFyZ2V0LCBy ZXN0YXJnZXQsIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwRGVmcykKIAl7Ci0JCVRhcmdldEVu dHJ5ICp0ZURlZmluZTsKLQkJTm9kZQkgICAqZXhwcjsKLQkJTGlzdAkgICAqdmFyczsKLQotCQlu YW1lID0gcmVzdGFyZ2V0LT5uYW1lOwotCi0JCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHIsIHJl c3RhcmdldHMpCisJCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHByaW9yLCB3aW5kZWYtPnJwQ29t bW9uU3ludGF4LT5ycERlZnMpCiAJCXsKLQkJCWNoYXIJICAgKm47Ci0KLQkJCW4gPSByLT5uYW1l OwotCi0JCQlpZiAoIXN0cmNtcChuLCBuYW1lKSkKKwkJCWlmIChwcmlvciA9PSByZXN0YXJnZXQp CisJCQkJYnJlYWs7CisJCQlpZiAoc3RyY21wKHByaW9yLT5uYW1lLCByZXN0YXJnZXQtPm5hbWUp ID09IDApCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAogCQkJCQkJZXJybXNnKCJERUZJTkUgdmFyaWFibGUgXCIlc1wiIGFwcGVhcnMgbW9y ZSB0aGFuIG9uY2UiLAotCQkJCQkJCSAgIG5hbWUpLAotCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIHIpKSk7CisJCQkJCQkJICAgcmVzdGFyZ2V0 LT5uYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJICAg ZXhwckxvY2F0aW9uKChOb2RlICopIHJlc3RhcmdldCkpKTsKIAkJfQorCX0KIAotCQlyZXN0YXJn ZXRzID0gbGFwcGVuZChyZXN0YXJnZXRzLCByZXN0YXJnZXQpOworCWZvcmVhY2hfbm9kZShSZXNU YXJnZXQsIHJlc3RhcmdldCwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzKQorCXsKKwkJ VGFyZ2V0RW50cnkgKnRlRGVmaW5lOworCQlOb2RlCSAgICpleHByOworCQlMaXN0CSAgICp2YXJz OwogCiAJCS8qCi0JCSAqIFRyYW5zZm9ybSB0aGUgREVGSU5FIGV4cHJlc3Npb24uICBXZSBtdXN0 IE5PVCBhZGQgdGhlIHdob2xlCi0JCSAqIGV4cHJlc3Npb24gdG8gdGhlIHF1ZXJ5IHRhcmdldGxp c3QsIGJlY2F1c2UgaXQgbWF5IGNvbnRhaW4KLQkJICogUlBSTmF2RXhwciBub2RlcyAoUFJFVi9O RVhUL0ZJUlNUL0xBU1QpIHRoYXQgY2FuIG9ubHkgYmUgZXZhbHVhdGVkCi0JCSAqIGluc2lkZSB0 aGUgb3duaW5nIFdpbmRvd0FnZy4KLQkJICoKLQkJICogSW5zdGVhZCwgd2UgdHJhbnNmb3JtIHRo ZSBleHByZXNzaW9uIGRpcmVjdGx5IGFuZCBvbmx5IGVuc3VyZSB0aGF0Ci0JCSAqIHRoZSBpbmRp dmlkdWFsIFZhciBub2RlcyBpdCByZWZlcmVuY2VzIGFyZSBwcmVzZW50IGluIHRoZQotCQkgKiB0 YXJnZXRsaXN0LCBzbyB0aGUgcGxhbm5lciBjYW4gcHJvcGFnYXRlIHRoZSByZWZlcmVuY2VkIGNv bHVtbnMuCisJCSAqIFRyYW5zZm9ybSB0aGUgREVGSU5FIGV4cHJlc3Npb24gYW5kIGNvZXJjZSBp dCB0byBib29sZWFuLiAgV2UgbXVzdAorCQkgKiBOT1QgYWRkIHRoZSB3aG9sZSBleHByZXNzaW9u IHRvIHRoZSBxdWVyeSB0YXJnZXRsaXN0LCBiZWNhdXNlIGl0CisJCSAqIG1heSBjb250YWluIFJQ Uk5hdkV4cHIgbm9kZXMgKFBSRVYvTkVYVC9GSVJTVC9MQVNUKSB0aGF0IGNhbiBvbmx5CisJCSAq IGJlIGV2YWx1YXRlZCBpbnNpZGUgdGhlIG93bmluZyBXaW5kb3dBZ2cuICBDb2VyY2luZyBoZXJl LCBiZWZvcmUKKwkJICogcHVsbF92YXJfY2xhdXNlLCBrZWVwcyBwdWxsX3Zhcl9jbGF1c2Ugb3Bl cmF0aW5nIG9uIHRoZSBmaW5hbAorCQkgKiBleHByZXNzaW9uIGZvcm0gYW5kIHN1cmZhY2VzIGEg dHlwZSBtaXNtYXRjaCBiZWZvcmUgdGhlIHRhcmdldGxpc3QKKwkJICogaXMgdG91Y2hlZC4KIAkJ ICovCiAJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgcmVzdGFyZ2V0LT52YWwsCiAJCQkJ CQkJIEVYUFJfS0lORF9SUFJfREVGSU5FKTsKKwkJZXhwciA9IGNvZXJjZV90b19ib29sZWFuKHBz dGF0ZSwgZXhwciwgIkRFRklORSIpOworCisJCS8qIEJ1aWxkIHRoZSBkZWZpbmVDbGF1c2UgZW50 cnkgZGlyZWN0bHkgZnJvbSB0aGUgdHJhbnNmb3JtZWQgZXhwciAqLworCQl0ZURlZmluZSA9IG1h a2VUYXJnZXRFbnRyeSgoRXhwciAqKSBleHByLAorCQkJCQkJCQkgICBsaXN0X2xlbmd0aChkZWZp bmVDbGF1c2UpICsgMSwKKwkJCQkJCQkJICAgcHN0cmR1cChyZXN0YXJnZXQtPm5hbWUpLAorCQkJ CQkJCQkgICB0cnVlKTsKKworCQkvKiBidWlsZCB0cmFuc2Zvcm1lZCBERUZJTkUgY2xhdXNlIChs aXN0IG9mIFRhcmdldEVudHJ5KSAqLworCQlkZWZpbmVDbGF1c2UgPSBsYXBwZW5kKGRlZmluZUNs YXVzZSwgdGVEZWZpbmUpOwogCiAJCS8qCiAJCSAqIFB1bGwgb3V0IFZhciBub2RlcyBmcm9tIHRo ZSB0cmFuc2Zvcm1lZCBleHByZXNzaW9uIGFuZCBlbnN1cmUgZWFjaApAQCAtNDEyLDI2ICs0MTIs OSBAQCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dEZWYg KndpbmRlZiwKIAkJCX0KIAkJfQogCQlsaXN0X2ZyZWUodmFycyk7Ci0KLQkJLyogQnVpbGQgdGhl IGRlZmluZUNsYXVzZSBlbnRyeSBkaXJlY3RseSBmcm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByICov Ci0JCXRlRGVmaW5lID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIGV4cHIsCi0JCQkJCQkJCSAg IGxpc3RfbGVuZ3RoKGRlZmluZUNsYXVzZSkgKyAxLAotCQkJCQkJCQkgICBwc3RyZHVwKG5hbWUp LAotCQkJCQkJCQkgICB0cnVlKTsKLQotCQkvKiBidWlsZCB0cmFuc2Zvcm1lZCBERUZJTkUgY2xh dXNlIChsaXN0IG9mIFRhcmdldEVudHJ5KSAqLwotCQlkZWZpbmVDbGF1c2UgPSBsYXBwZW5kKGRl ZmluZUNsYXVzZSwgdGVEZWZpbmUpOwogCX0KLQlsaXN0X2ZyZWUocmVzdGFyZ2V0cyk7CiAJcHN0 YXRlLT5wX3Jwcl9wYXR0ZXJuX3ZhcnMgPSBOSUw7CiAKLQkvKgotCSAqIE1ha2Ugc3VyZSB0aGF0 IHRoZSByb3cgcGF0dGVybiBkZWZpbml0aW9uIHNlYXJjaCBjb25kaXRpb24gaXMgYSBib29sZWFu Ci0JICogZXhwcmVzc2lvbi4KLQkgKi8KLQlmb3JlYWNoX3B0cihUYXJnZXRFbnRyeSwgdGUsIGRl ZmluZUNsYXVzZSkKLQkJdGUtPmV4cHIgPSAoRXhwciAqKSBjb2VyY2VfdG9fYm9vbGVhbihwc3Rh dGUsIChOb2RlICopIHRlLT5leHByLCAiREVGSU5FIik7Ci0KIAkvKgogCSAqIFZhbGlkYXRlIERF RklORSBleHByZXNzaW9uczogbmVzdGVkIFBSRVYvTkVYVCwgY29sdW1uIHJlZmVyZW5jZXMsCiAJ ICogY29tcG91bmQgZmxhdHRlbiwgdm9sYXRpbGUgY2FsbGVlcyAtLSBhbGwgaW4gYSBzaW5nbGUg d2FsayBwZXIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggY2YxNThl MWMwNDMuLjgwZmFiZGU1MTRjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91 dApAQCAtMjM2LDcgKzIzNiw3IEBAIFdJTkRPVyB3IEFTICgKICk7CiBFUlJPUjogIERFRklORSB2 YXJpYWJsZSAiYSIgYXBwZWFycyBtb3JlIHRoYW4gb25jZQogTElORSA3OiAgICAgREVGSU5FIEEg QVMgaWQgPiAwLCBBIEFTIGlkIDwgMTAKLSAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KIERST1AgVEFCTEUgcnByX2R1cDsKIC0tIEJvb2xlYW4g Y29lcmNpb24KIENSRUFURSBUQUJMRSBycHJfYm9vbCAoaWQgSU5ULCBmbGFnIEJPT0xFQU4pOwpA QCAtMzE5LDYgKzMxOSw4MiBAQCBEUk9QIENBU1QgKHRydXRoeWludCBBUyBib29sZWFuKTsKIERS T1AgRlVOQ1RJT04gdHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5aW50KTsKIERST1AgVFlQRSB0cnV0 aHlpbnQ7CiBEUk9QIFRBQkxFIHJwcl9ib29sOworLS0gQ29lcmNpb24gb3ZlciBhIGJvb2xlYW4g ZG9tYWluIGlzIG5vdCBhIG5vLW9wOyB0aGUgd3JhcHBlZCBWYXIgbXVzdCBzdGlsbAorLS0gcHJv cGFnYXRlIHdoZW4gcmVmZXJlbmNlZCBvbmx5IGluIERFRklORSAoZmxhZyBpcyBub3QgaW4gdGhl IHNlbGVjdCBsaXN0KQorQ1JFQVRFIERPTUFJTiBib29saXNoIEFTIGJvb2xlYW47CitDUkVBVEUg VEFCTEUgcnByX2RvbWFpbiAoaWQgaW50LCBmbGFnIGJvb2xpc2gpOworSU5TRVJUIElOVE8gcnBy X2RvbWFpbiBWQUxVRVMgKDEsIHRydWUpLCAoMiwgZmFsc2UpLCAoMywgdHJ1ZSk7CitTRUxFQ1Qg aWQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2RvbWFpbgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgZmxhZwor KQorT1JERVIgQlkgaWQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDEgfCAgIDEKKyAgMiB8 ICAgMAorICAzIHwgICAxCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9kb21haW47CitEUk9Q IERPTUFJTiBib29saXNoOworLS0gQSBWYXIgcmVmZXJlbmNlZCBvbmx5IGluc2lkZSBhIG5hdmln YXRpb24gb3BlcmF0aW9uIG11c3Qgc3RpbGwgcHJvcGFnYXRlCistLSAodmFsIGFwcGVhcnMgb25s eSBpbnNpZGUgUFJFVigpLCBub3QgYXMgYSBiYXJlIG9wZXJhbmQgb3IgaW4gdGhlIHNlbGVjdCBs aXN0KQorQ1JFQVRFIFRBQkxFIHJwcl9uYXYgKGlkIGludCwgdmFsIGludCk7CitJTlNFUlQgSU5U TyBycHJfbmF2IFZBTFVFUyAoMSwgMCksICgyLCAxKSwgKDMsIDApLCAoNCwgMik7CitTRUxFQ1Qg aWQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVVArKQorICAgIERFRklORSBVUCBBUyBpZCA+IFBS RVYodmFsKQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDEgfCAg IDAKKyAgMiB8ICAgMworICAzIHwgICAwCisgIDQgfCAgIDAKKyg0IHJvd3MpCisKK0RST1AgVEFC TEUgcnByX25hdjsKKy0tIEEgbm9uLWJvb2xlYW4gREVGSU5FIGV4cHJlc3Npb24gaXMgcmVqZWN0 ZWQKK0NSRUFURSBUQUJMRSBycHJfbm9uY29lcmNlIChpZCBpbnQsIG4gaW50KTsKK0lOU0VSVCBJ TlRPIHJwcl9ub25jb2VyY2UgVkFMVUVTICgxLCAxKTsKK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBycHJfbm9uY29lcmNlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBuCispOworRVJST1I6ICBhcmd1 bWVudCBvZiBERUZJTkUgbXVzdCBiZSB0eXBlIGJvb2xlYW4sIG5vdCB0eXBlIGludGVnZXIKK0xJ TkUgNzogICAgIERFRklORSBBIEFTIG4KKyAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1Ag VEFCTEUgcnByX25vbmNvZXJjZTsKKy0tIEEgbm9uLWJvb2xlYW4gbGF0ZXIgREVGSU5FIGlzIHJl amVjdGVkIGF0IGl0cyBvd24gZGVmaW5pdGlvbiBldmVuIHdoZW4gYW4KKy0tIGVhcmxpZXIgREVG SU5FIHZhcmlhYmxlIGlzIHZhbGlkCitDUkVBVEUgVEFCTEUgcnByX25vbmNvZXJjZTIgKGlkIGlu dCwgbiBpbnQpOworSU5TRVJUIElOVE8gcnByX25vbmNvZXJjZTIgVkFMVUVTICgxLCAxKTsKK1NF TEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbm9uY29lcmNlMgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QSBBUyBpZCA+IDAsIEIgQVMgbgorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2YgREVGSU5FIG11c3Qg YmUgdHlwZSBib29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDc6ICAgICBERUZJTkUgQSBB UyBpZCA+IDAsIEIgQVMgbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K K0RST1AgVEFCTEUgcnByX25vbmNvZXJjZTI7CiAtLSBDb21wbGV4IGV4cHJlc3Npb25zCiBDUkVB VEUgVEFCTEUgcnByX2NvbXBsZXggKGlkIElOVCwgdmFsMSBJTlQsIHZhbDIgSU5UKTsKIElOU0VS VCBJTlRPIHJwcl9jb21wbGV4IFZBTFVFUyAoMSwgMTAsIDIwKSwgKDIsIDE1LCAyNSksICgzLCAy MCwgMzApOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCmluZGV4IGU3MWYwZGQzNjgwLi4yMTg0 MGFhNzdiZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbApAQCAtMjYxLDYgKzI2MSw2NSBA QCBEUk9QIFRZUEUgdHJ1dGh5aW50OwogCiBEUk9QIFRBQkxFIHJwcl9ib29sOwogCistLSBDb2Vy Y2lvbiBvdmVyIGEgYm9vbGVhbiBkb21haW4gaXMgbm90IGEgbm8tb3A7IHRoZSB3cmFwcGVkIFZh ciBtdXN0IHN0aWxsCistLSBwcm9wYWdhdGUgd2hlbiByZWZlcmVuY2VkIG9ubHkgaW4gREVGSU5F IChmbGFnIGlzIG5vdCBpbiB0aGUgc2VsZWN0IGxpc3QpCitDUkVBVEUgRE9NQUlOIGJvb2xpc2gg QVMgYm9vbGVhbjsKK0NSRUFURSBUQUJMRSBycHJfZG9tYWluIChpZCBpbnQsIGZsYWcgYm9vbGlz aCk7CitJTlNFUlQgSU5UTyBycHJfZG9tYWluIFZBTFVFUyAoMSwgdHJ1ZSksICgyLCBmYWxzZSks ICgzLCB0cnVlKTsKK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJf ZG9tYWluCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyBmbGFnCispCitPUkRFUiBCWSBpZDsKK0RST1AgVEFCTEUgcnByX2RvbWFp bjsKK0RST1AgRE9NQUlOIGJvb2xpc2g7CisKKy0tIEEgVmFyIHJlZmVyZW5jZWQgb25seSBpbnNp ZGUgYSBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IHN0aWxsIHByb3BhZ2F0ZQorLS0gKHZhbCBh cHBlYXJzIG9ubHkgaW5zaWRlIFBSRVYoKSwgbm90IGFzIGEgYmFyZSBvcGVyYW5kIG9yIGluIHRo ZSBzZWxlY3QgbGlzdCkKK0NSRUFURSBUQUJMRSBycHJfbmF2IChpZCBpbnQsIHZhbCBpbnQpOwor SU5TRVJUIElOVE8gcnByX25hdiBWQUxVRVMgKDEsIDApLCAoMiwgMSksICgzLCAwKSwgKDQsIDIp OworU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFVQKykKKyAgICBERUZJTkUgVVAg QVMgaWQgPiBQUkVWKHZhbCkKKykKK09SREVSIEJZIGlkOworRFJPUCBUQUJMRSBycHJfbmF2Owor CistLSBBIG5vbi1ib29sZWFuIERFRklORSBleHByZXNzaW9uIGlzIHJlamVjdGVkCitDUkVBVEUg VEFCTEUgcnByX25vbmNvZXJjZSAoaWQgaW50LCBuIGludCk7CitJTlNFUlQgSU5UTyBycHJfbm9u Y29lcmNlIFZBTFVFUyAoMSwgMSk7CitTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX25vbmNvZXJjZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgbgorKTsKK0RST1AgVEFCTEUgcnByX25vbmNvZXJj ZTsKKworLS0gQSBub24tYm9vbGVhbiBsYXRlciBERUZJTkUgaXMgcmVqZWN0ZWQgYXQgaXRzIG93 biBkZWZpbml0aW9uIGV2ZW4gd2hlbiBhbgorLS0gZWFybGllciBERUZJTkUgdmFyaWFibGUgaXMg dmFsaWQKK0NSRUFURSBUQUJMRSBycHJfbm9uY29lcmNlMiAoaWQgaW50LCBuIGludCk7CitJTlNF UlQgSU5UTyBycHJfbm9uY29lcmNlMiBWQUxVRVMgKDEsIDEpOworU0VMRUNUIGlkLCBDT1VOVCgq KSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9ub25jb2VyY2UyCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIGlkID4gMCwgQiBB UyBuCispOworRFJPUCBUQUJMRSBycHJfbm9uY29lcmNlMjsKKwogLS0gQ29tcGxleCBleHByZXNz aW9ucwogQ1JFQVRFIFRBQkxFIHJwcl9jb21wbGV4IChpZCBJTlQsIHZhbDEgSU5ULCB2YWwyIElO VCk7CiBJTlNFUlQgSU5UTyBycHJfY29tcGxleCBWQUxVRVMgKDEsIDEwLCAyMCksICgyLCAxNSwg MjUpLCAoMywgMjAsIDMwKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0009-define-walker-else.patch" Content-Disposition: attachment; filename="v50-0009-define-walker-else.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqm86517 RnJvbSA4MDI3MmI1N2RjODdmZmE5Zjg3YTc0ZjYxNzM2MTQ2YmY3M2NjMzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDE3IEp1biAyMDI2IDIwOjQzOjAxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTgv MjldIFJlcGxhY2UgYSBiYXJlIGJsb2NrIHdpdGggYW4gZWxzZSBpbiB0aGUgUlBSIERFRklORQog Y2xhdXNlIHdhbGtlcgoKZGVmaW5lX3dhbGtlcigpIGVuZGVkIGl0cyBwaGFzZSBoYW5kbGluZyB3 aXRoIGEgYmFyZSBicmFjZWQgYmxvY2sgZm9yCnRoZSBERUZJTkUtYm9keSBjYXNlLCBmb2xsb3dp bmcgdHdvIGlmIGJsb2NrcyB0aGF0IHJlc3BlY3RpdmVseSByZXR1cm4KYW5kIHJhaXNlIGFuIGVy cm9yLiAgVHVybiBpdCBpbnRvIHRoZSBlbHNlIGJyYW5jaCBvZiBhbiBpZiAvIGVsc2UgaWYgLwpl bHNlIGNoYWluLiAgTm8gYmVoYXZpb3IgY2hhbmdlLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ycHIuYyB8IDE1ICsrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0 aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfcnByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5kZXggMTE2Y2Qy MDZlMzkuLjdjMjAxZDU1MTY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cnByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC01MTUsOCArNTE1 LDcgQEAgZGVmaW5lX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJY3R4LT5u YXZfY291bnQrKzsKIAkJCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGRlZmlu ZV93YWxrZXIsIGN0eCk7CiAJCX0KLQotCQlpZiAoY3R4LT5waGFzZSA9PSBERUZJTkVfUEhBU0Vf TkFWX09GRlNFVCkKKwkJZWxzZSBpZiAoY3R4LT5waGFzZSA9PSBERUZJTkVfUEhBU0VfTkFWX09G RlNFVCkKIAkJewogCQkJLyoKIAkJCSAqIEEgbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBiZSBhIHJ1 bi10aW1lIGNvbnN0YW50LCBzbyBpdCBjYW5ub3QKQEAgLTUyOCwxMyArNTI3LDEzIEBAIGRlZmlu ZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJCQkJZXJyZGV0YWlsKCJBIG5h dmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudC4iKSwKIAkJCQkJcGFy c2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CiAJCX0KLQotCQkv KgotCQkgKiBQSEFTRV9CT0RZOiB0aGlzIGlzIGFuIG91dGVyIG5hdiBhdCB0b3AgbGV2ZWwuICBX YWxrIGFyZyBmaXJzdCB0bwotCQkgKiBjb2xsZWN0IG5lc3RpbmcgLyBjb2x1bW4tcmVmIHN0YXRl LCB0aGVuIHZhbGlkYXRlIGFuZCAoZm9yIGNvbXBvdW5kCi0JCSAqIGZvcm1zKSBmbGF0dGVuLCB0 aGVuIHdhbGsgb2Zmc2V0KHMpLgotCQkgKi8KKwkJZWxzZQogCQl7CisJCQkvKgorCQkJICogUEhB U0VfQk9EWTogdGhpcyBpcyBhbiBvdXRlciBuYXYgYXQgdG9wIGxldmVsLiAgV2FsayBhcmcgZmly c3QKKwkJCSAqIHRvIGNvbGxlY3QgbmVzdGluZyAvIGNvbHVtbi1yZWYgc3RhdGUsIHRoZW4gdmFs aWRhdGUgYW5kIChmb3IKKwkJCSAqIGNvbXBvdW5kIGZvcm1zKSBmbGF0dGVuLCB0aGVuIHdhbGsg b2Zmc2V0KHMpLgorCQkJICovCiAJCQlEZWZpbmVXYWxrQ3R4IHNhdmVkID0gKmN0eDsKIAkJCWJv b2wJCW91dGVyX3BoeXMgPSAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFViB8fAogCQkJCQkJCQkJ ICBuYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkK Cg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0010-rename-deparse-vars.patch" Content-Disposition: attachment; filename="v50-0010-rename-deparse-vars.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqm9vo18 RnJvbSBhOThiMmMzYjk0NDIzOTgyNGNkNjA0ZGM3Njg0YjI0ZDQ1NjNmNTBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDExOjMwOjQwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMTkv MjldIFJlbmFtZSBsb29wIGluZGV4IHZhcmlhYmxlcyBpbiByb3cgcGF0dGVybiBkZXBhcnNlCiBo ZWxwZXJzCgpHaXZlIHRoZSBpbmRleCBwYXJhbWV0ZXJzIGFuZCBsb29wIHZhcmlhYmxlcyBpbiB0 aGUgUlBSIHBhdHRlcm4gZGVwYXJzZQpoZWxwZXJzIG1vcmUgZGVzY3JpcHRpdmUgbmFtZXM6IHRo ZSBjb25zdHJ1Y3QtaW5kZXggcGFyYW1ldGVyIGJlY29tZXMKaWR4LCB0aGUgYnJhbmNoLW51bWJl ciBwYXJhbWV0ZXIgYmVjb21lcyBibm8sIGFuZCBlYWNoIGhlbHBlcidzIHNvbGUKbG9vcCB2YXJp YWJsZSBiZWNvbWVzIGkuICBBZGp1c3QgdGhlIGFjY29tcGFueWluZyBjb21tZW50cyB0byBtYXRj aC4KClRoaXMgaXMgYSBjb3NtZXRpYyBjaGFuZ2Ugd2l0aCBubyBlZmZlY3Qgb24gdGhlIGRlcGFy c2VkIG91dHB1dC4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgfCA2OCArKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0 aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDY5NmJk YjljOGI1Li40MjNjZjM1MjEyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTI0LDExICsx MjQsMTEgQEAgc3RhdGljIHZvaWQgYXBwZW5kX3Jwcl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVm LCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSk7CiBzdGF0aWMgY2hhciAqZGVwYXJzZV9ycHJfcGF0 dGVybihSUFJQYXR0ZXJuICpwYXR0ZXJuKTsKIHN0YXRpYyBpbnQJZGVwYXJzZV9ycHJfc2VxKFJQ UlBhdHRlcm4gKnBhdHRlcm4sIGludCBzdGFydCwgaW50IGxpbWl0LAogCQkJCQkJCVN0cmluZ0lu Zm8gYnVmKTsKLXN0YXRpYyBpbnQJZGVwYXJzZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJu LCBpbnQgaSwgaW50IGxpbWl0LAorc3RhdGljIGludAlkZXBhcnNlX3Jwcl9ub2RlKFJQUlBhdHRl cm4gKnBhdHRlcm4sIGludCBpZHgsIGludCBsaW1pdCwKIAkJCQkJCQkgU3RyaW5nSW5mbyBidWYp Owogc3RhdGljIGludAlycHJfbWF0Y2hfZW5kKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBiZWdp bklkeCk7Ci1zdGF0aWMgaW50CXJwcl9hbHRfc2NvcGVfZW5kKFJQUlBhdHRlcm4gKnBhdHRlcm4s IGludCBpKTsKLXN0YXRpYyBpbnQJcnByX25leHRfYnJhbmNoKFJQUlBhdHRlcm4gKnBhdHRlcm4s IGludCBiLCBpbnQgYWx0RW5kKTsKK3N0YXRpYyBpbnQJcnByX2FsdF9zY29wZV9lbmQoUlBSUGF0 dGVybiAqcGF0dGVybiwgaW50IGlkeCk7CitzdGF0aWMgaW50CXJwcl9uZXh0X2JyYW5jaChSUFJQ YXR0ZXJuICpwYXR0ZXJuLCBpbnQgYm5vLCBpbnQgYWx0RW5kKTsKIHN0YXRpYyB2b2lkIHNob3df c3RvcmFnZV9pbmZvKGNoYXIgKm1heFN0b3JhZ2VUeXBlLCBpbnQ2NCBtYXhTcGFjZVVzZWQsCiAJ CQkJCQkJICBFeHBsYWluU3RhdGUgKmVzKTsKIHN0YXRpYyB2b2lkIHNob3dfdGFibGVzYW1wbGUo VGFibGVTYW1wbGVDbGF1c2UgKnRzYywgUGxhblN0YXRlICpwbGFuc3RhdGUsCkBAIC0zMDE0LDgg KzMwMTQsOCBAQCBkZXBhcnNlX3Jwcl9zZXEoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IHN0YXJ0 LCBpbnQgbGltaXQsIFN0cmluZ0luZm8gYnVmKQogfQogCiAvKgotICogRGVwYXJzZSB0aGUgc2lu Z2xlIGNvbnN0cnVjdCBzdGFydGluZyBhdCBpbmRleCBpLCBib3VuZGVkIGJ5IHRoZSBpbmhlcml0 ZWQKLSAqIGxpbWl0LiAgUmV0dXJucyB0aGUgaW5kZXgganVzdCBwYXN0IHRoZSBjb25zdHJ1Y3Qu CisgKiBEZXBhcnNlIHRoZSBzaW5nbGUgY29uc3RydWN0IHN0YXJ0aW5nIGF0IGluZGV4IGlkeCwg Ym91bmRlZCBieSB0aGUKKyAqIGluaGVyaXRlZCBsaW1pdC4gIFJldHVybnMgdGhlIGluZGV4IGp1 c3QgcGFzdCB0aGUgY29uc3RydWN0LgogICoKICAqIEEgVkFSIGlzIGl0cyBuYW1lIHBsdXMgcXVh bnRpZmllci4gIEEgQkVHSU4gb3BlbnMgYSBncm91cCBzcGFubmluZyB0byBpdHMKICAqIG1hdGNo aW5nIEVORCAocnByX21hdGNoX2VuZCk7IHdoZW4gdGhlIGdyb3VwJ3Mgc29sZSBjaGlsZCBpcyBh biBBTFQgdGhhdApAQCAtMzAyNiw5ICszMDI2LDkgQEAgZGVwYXJzZV9ycHJfc2VxKFJQUlBhdHRl cm4gKnBhdHRlcm4sIGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmdJbmZvIGJ1ZikKICAqIGhh bmRlZCBkb3duIGJ5IHJwcl9uZXh0X2JyYW5jaC4KICAqLwogc3RhdGljIGludAotZGVwYXJzZV9y cHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSwgaW50IGxpbWl0LCBTdHJpbmdJbmZv IGJ1ZikKK2RlcGFyc2VfcnByX25vZGUoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGlkeCwgaW50 IGxpbWl0LCBTdHJpbmdJbmZvIGJ1ZikKIHsKLQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZw YXR0ZXJuLT5lbGVtZW50c1tpXTsKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0ZXJu LT5lbGVtZW50c1tpZHhdOwogCiAJaWYgKFJQUkVsZW1Jc1ZhcihlbGVtKSkKIAl7CkBAIC0zMDM2 LDI3ICszMDM2LDI3IEBAIGRlcGFyc2VfcnByX25vZGUoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50 IGksIGludCBsaW1pdCwgU3RyaW5nSW5mbyBidWYpCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco YnVmLAogCQkJCQkJCSAgIHF1b3RlX2lkZW50aWZpZXIocGF0dGVybi0+dmFyTmFtZXNbZWxlbS0+ dmFySWRdKSk7CiAJCWFwcGVuZF9ycHJfcXVhbnRpZmllcihidWYsIGVsZW0pOwotCQlyZXR1cm4g aSArIDE7CisJCXJldHVybiBpZHggKyAxOwogCX0KIAogCWlmIChSUFJFbGVtSXNCZWdpbihlbGVt KSkKIAl7Ci0JCWludAkJCWVuZCA9IHJwcl9tYXRjaF9lbmQocGF0dGVybiwgaSk7CisJCWludAkJ CWVuZCA9IHJwcl9tYXRjaF9lbmQocGF0dGVybiwgaWR4KTsKIAkJYm9vbAkJbG9uZUFsdDsKIAot CQlsb25lQWx0ID0gKGkgKyAxIDwgZW5kICYmCi0JCQkJICAgUlBSRWxlbUlzQWx0KCZwYXR0ZXJu LT5lbGVtZW50c1tpICsgMV0pICYmCi0JCQkJICAgcnByX2FsdF9zY29wZV9lbmQocGF0dGVybiwg aSArIDEpID09IGVuZCk7CisJCWxvbmVBbHQgPSAoaWR4ICsgMSA8IGVuZCAmJgorCQkJCSAgIFJQ UkVsZW1Jc0FsdCgmcGF0dGVybi0+ZWxlbWVudHNbaWR4ICsgMV0pICYmCisJCQkJICAgcnByX2Fs dF9zY29wZV9lbmQocGF0dGVybiwgaWR4ICsgMSkgPT0gZW5kKTsKIAogCQlpZiAobG9uZUFsdCkK IAkJewogCQkJLyogVGhlIEFMVCBjaGlsZCBhbHJlYWR5IHBhcmVudGhlc2l6ZXMgdGhlIHdob2xl IGdyb3VwIGJvZHkuICovCi0JCQkodm9pZCkgZGVwYXJzZV9ycHJfbm9kZShwYXR0ZXJuLCBpICsg MSwgZW5kLCBidWYpOworCQkJKHZvaWQpIGRlcGFyc2VfcnByX25vZGUocGF0dGVybiwgaWR4ICsg MSwgZW5kLCBidWYpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIo YnVmLCAnKCcpOwotCQkJKHZvaWQpIGRlcGFyc2VfcnByX3NlcShwYXR0ZXJuLCBpICsgMSwgZW5k LCBidWYpOworCQkJKHZvaWQpIGRlcGFyc2VfcnByX3NlcShwYXR0ZXJuLCBpZHggKyAxLCBlbmQs IGJ1Zik7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CiAJCX0KIAkJYXBwZW5k X3Jwcl9xdWFudGlmaWVyKGJ1ZiwgJnBhdHRlcm4tPmVsZW1lbnRzW2VuZF0pOwpAQCAtMzA2NSw3 ICszMDY1LDcgQEAgZGVwYXJzZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSwg aW50IGxpbWl0LCBTdHJpbmdJbmZvIGJ1ZikKIAogCUFzc2VydChSUFJFbGVtSXNBbHQoZWxlbSkp OwogCXsKLQkJaW50CQkJYWx0RW5kID0gcnByX2FsdF9zY29wZV9lbmQocGF0dGVybiwgaSk7CisJ CWludAkJCWFsdEVuZCA9IHJwcl9hbHRfc2NvcGVfZW5kKHBhdHRlcm4sIGlkeCk7CiAJCWludAkJ CWI7CiAJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKIApAQCAtMzA3Myw3ICszMDczLDcgQEAgZGVwYXJz ZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSwgaW50IGxpbWl0LCBTdHJpbmdJ bmZvIGJ1ZikKIAkJCWFsdEVuZCA9IGxpbWl0OwogCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1 ZiwgJygnKTsKLQkJYiA9IGkgKyAxOworCQliID0gaWR4ICsgMTsKIAkJd2hpbGUgKGIgPCBhbHRF bmQpCiAJCXsKIAkJCWludAkJCW5iID0gcnByX25leHRfYnJhbmNoKHBhdHRlcm4sIGIsIGFsdEVu ZCk7CkBAIC0zMDk3LDQxICszMDk3LDQxIEBAIHN0YXRpYyBpbnQKIHJwcl9tYXRjaF9lbmQoUlBS UGF0dGVybiAqcGF0dGVybiwgaW50IGJlZ2luSWR4KQogewogCVJQUkRlcHRoCWQgPSBwYXR0ZXJu LT5lbGVtZW50c1tiZWdpbklkeF0uZGVwdGg7Ci0JaW50CQkJajsKKwlpbnQJCQlpOwogCi0JZm9y IChqID0gYmVnaW5JZHggKyAxOyBqIDwgcGF0dGVybi0+bnVtRWxlbWVudHM7IGorKykKKwlmb3Ig KGkgPSBiZWdpbklkeCArIDE7IGkgPCBwYXR0ZXJuLT5udW1FbGVtZW50czsgaSsrKQogCXsKLQkJ UlBSUGF0dGVybkVsZW1lbnQgKmUgPSAmcGF0dGVybi0+ZWxlbWVudHNbal07CisJCVJQUlBhdHRl cm5FbGVtZW50ICplID0gJnBhdHRlcm4tPmVsZW1lbnRzW2ldOwogCiAJCWlmIChSUFJFbGVtSXNF bmQoZSkgJiYgZS0+ZGVwdGggPT0gZCkKLQkJCXJldHVybiBqOworCQkJcmV0dXJuIGk7CiAJfQog CXBnX3VucmVhY2hhYmxlKCk7CQkJLyogYSBCRUdJTiBhbHdheXMgaGFzIGEgbWF0Y2hpbmcgRU5E ICovCiB9CiAKIC8qCi0gKiBTY29wZSBlbmQgb2YgdGhlIGNvbnN0cnVjdCBhdCBpbmRleCBpOiB0 aGUgZmlyc3QgZm9sbG93aW5nIGVsZW1lbnQgd2hvc2UKLSAqIGRlcHRoIGlzIG5vIGdyZWF0ZXIg dGhhbiBpJ3Mgb3duLiAgRm9yIGFuIEFMVCBtYXJrZXIgdGhpcyBpcyB0aGUgaW5kZXgganVzdAot ICogcGFzdCBpdHMgbGFzdCBicmFuY2gsIHNpbmNlIGRlcHRoIHN0YXlzIGNvbnN0YW50IGFjcm9z cyBicmFuY2ggYm91bmRhcmllcy4KLSAqIEZJTiBzaXRzIGF0IGRlcHRoIDAsIHNvIGEgdG9wLWxl dmVsIEFMVCBzdG9wcyB0aGVyZS4KKyAqIFNjb3BlIGVuZCBvZiB0aGUgY29uc3RydWN0IGF0IGlu ZGV4IGlkeDogdGhlIGZpcnN0IGZvbGxvd2luZyBlbGVtZW50IHdob3NlCisgKiBkZXB0aCBpcyBu byBncmVhdGVyIHRoYW4gaWR4J3Mgb3duLiAgRm9yIGFuIEFMVCBtYXJrZXIgdGhpcyBpcyB0aGUg aW5kZXgKKyAqIGp1c3QgcGFzdCBpdHMgbGFzdCBicmFuY2gsIHNpbmNlIGRlcHRoIHN0YXlzIGNv bnN0YW50IGFjcm9zcyBicmFuY2gKKyAqIGJvdW5kYXJpZXMuICBGSU4gc2l0cyBhdCBkZXB0aCAw LCBzbyBhIHRvcC1sZXZlbCBBTFQgc3RvcHMgdGhlcmUuCiAgKi8KIHN0YXRpYyBpbnQKLXJwcl9h bHRfc2NvcGVfZW5kKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBpKQorcnByX2FsdF9zY29wZV9l bmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGlkeCkKIHsKLQlSUFJEZXB0aAlkID0gcGF0dGVy bi0+ZWxlbWVudHNbaV0uZGVwdGg7Ci0JaW50CQkJazsKKwlSUFJEZXB0aAlkID0gcGF0dGVybi0+ ZWxlbWVudHNbaWR4XS5kZXB0aDsKKwlpbnQJCQlpOwogCi0JZm9yIChrID0gaSArIDE7IGsgPCBw YXR0ZXJuLT5udW1FbGVtZW50czsgaysrKQorCWZvciAoaSA9IGlkeCArIDE7IGkgPCBwYXR0ZXJu LT5udW1FbGVtZW50czsgaSsrKQogCXsKLQkJaWYgKHBhdHRlcm4tPmVsZW1lbnRzW2tdLmRlcHRo IDw9IGQpCi0JCQlyZXR1cm4gazsKKwkJaWYgKHBhdHRlcm4tPmVsZW1lbnRzW2ldLmRlcHRoIDw9 IGQpCisJCQlyZXR1cm4gaTsKIAl9CiAJcmV0dXJuIHBhdHRlcm4tPm51bUVsZW1lbnRzOwogfQog CiAvKgotICogQm91bmRhcnkgb2YgdGhlIGFsdGVybmF0aW9uIGJyYW5jaCBzdGFydGluZyBhdCBi IChpLmUuIHRoZSBzdGFydCBvZiB0aGUgbmV4dAotICogYnJhbmNoLCBvciBhbHRFbmQgaWYgYiBp cyB0aGUgbGFzdCBicmFuY2gpLgorICogQm91bmRhcnkgb2YgdGhlIGFsdGVybmF0aW9uIGJyYW5j aCBzdGFydGluZyBhdCBibm8gKGkuZS4gdGhlIHN0YXJ0IG9mIHRoZQorICogbmV4dCBicmFuY2gs IG9yIGFsdEVuZCBpZiBibm8gaXMgdGhlIGxhc3QgYnJhbmNoKS4KICAqCiAgKiBUaGUgYnJhbmNo LXN0YXJ0IGVsZW1lbnQncyBqdW1wIHBvaW50cyBhdCB0aGUgbmV4dCBicmFuY2ggd2hlbiB0aGlz IGlzIG5vdAogICogdGhlIGxhc3QgYnJhbmNoLiAganVtcCBpcyBvdmVybG9hZGVkIChhIGdyb3Vw IEJFR0lOIGFsc28gdXNlcyBpdCBmb3IgaXRzCkBAIC0zMTQwLDkgKzMxNDAsOSBAQCBycHJfYWx0 X3Njb3BlX2VuZChSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSkKICAqIG5leHQgcmVkaXJlY3Rl ZCBwYXN0IHRoZSBhbHRlcm5hdGlvbiwgc28gaXQgZG9lcyBub3QgcG9pbnQgYXQgai4KICAqLwog c3RhdGljIGludAotcnByX25leHRfYnJhbmNoKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBiLCBp bnQgYWx0RW5kKQorcnByX25leHRfYnJhbmNoKFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBibm8s IGludCBhbHRFbmQpCiB7Ci0JaW50CQkJaiA9IHBhdHRlcm4tPmVsZW1lbnRzW2JdLmp1bXA7CisJ aW50CQkJaiA9IHBhdHRlcm4tPmVsZW1lbnRzW2Jub10uanVtcDsKIAogCWlmIChqICE9IFJQUl9F TEVNSURYX0lOVkFMSUQgJiYgaiA8IGFsdEVuZCAmJgogCQlwYXR0ZXJuLT5lbGVtZW50c1tqIC0g MV0ubmV4dCAhPSBqKQotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0011-comparison-point-wording.patch" Content-Disposition: attachment; filename="v50-0011-comparison-point-wording.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmbjo19 RnJvbSA1YmQ2MDgyODljNmZiOTEyYzEzMjdkZjcyODBjOGUwNjAyNGE3YzlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDEzOjA0OjAwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjAv MjldIFJlbmFtZSBhYnNvcnB0aW9uICJqdWRnbWVudCBwb2ludCIgdG8gImNvbXBhcmlzb24KIHBv aW50IiBpbiBjb21tZW50cwoKVGhlIGFic29ycHRpb24gYW5hbHlzaXMgY29tbWVudHMgZGVzY3Jp YmVkIHRoZSBBQlNPUkJBQkxFIGVsZW1lbnQgZmxhZwphcyBhICJqdWRnbWVudCBwb2ludCIuICBV c2UgImNvbXBhcmlzb24gcG9pbnQiIGluc3RlYWQsIHdoaWNoIHNheXMgbW9yZQpkaXJlY3RseSB3 aGF0IGhhcHBlbnMgdGhlcmU6IHdoZXJlIGNvbnNlY3V0aXZlIGl0ZXJhdGlvbnMgYXJlIGNvbXBh cmVkLgpUaGlzIHRvdWNoZXMgY29tbWVudHMgYW5kIHRoZSBleGVjdXRvciBSRUFETUUgb25seSwg YWNyb3NzIHRoZSBwbGFubmVyLApleGVjdXRvciwgYW5kIEVYUExBSU4gZGVwYXJzZSwgcGx1cyB0 aGUgcnByX2Jhc2UgdGVzdCBjb21tZW50czsgdGhlCiJlcXVpdmFsZW5jZSBqdWRnbWVudCIgd29y ZGluZyBhbmQgYWxsIGlkZW50aWZpZXJzIGFyZSB1bmNoYW5nZWQuCgpObyBjaGFuZ2UgdG8gYmVo YXZpb3Igb3IgdG8gcXVlcnkgb3V0cHV0LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIgICAg ICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jICAgICAgICAgfCAy OSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cnByLmMgICAgICAgfCAxNCArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnBy LmggICAgICAgICAgICB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNl Lm91dCB8ICA2ICsrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsICAgICAg fCAgNiArKystLS0KIDcgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDQyM2NmMzUyMTI1Li5iM2ZjMzI0NzE4 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMjkzNyw3ICsyOTM3LDcgQEAgYXBwZW5kX3Jw cl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSkKIAkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnPycpOwogCX0KIAotCS8qIEFwcGVuZCBhYnNvcnB0 aW9uIG1hcmtlcnM6ICIgZm9yIGp1ZGdtZW50IHBvaW50LCAnIGZvciBicmFuY2ggb25seSAqLwor CS8qIEFwcGVuZCBhYnNvcnB0aW9uIG1hcmtlcnM6ICIgZm9yIGNvbXBhcmlzb24gcG9pbnQsICcg Zm9yIGJyYW5jaCBvbmx5ICovCiAJaWYgKFJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkpCiAJewog CQlBc3NlcnQoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwciBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURN RS5ycHIKaW5kZXggNzEzYWQ4NGUxZDkuLjUwZDFmZjg3ZjdlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9SRUFETUUucnByCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURN RS5ycHIKQEAgLTI4NSw3ICsyODUsNyBAQCBFbGVtZW50IGZsYWdzICgxIGJ5dGUsIGJpdG1hc2sp OgogICAgICAgICBhYnNvcnB0aW9uLgogCiAgIDB4MDggIFJQUl9FTEVNX0FCU09SQkFCTEUgICAg ICAgICAoVkFSLCBFTkQpCi0gICAgICAgIEFic29ycHRpb24ganVkZ21lbnQgcG9pbnQuICBXaGVy ZSB0byBjb21wYXJlIGNvbnNlY3V0aXZlCisgICAgICAgIEFic29ycHRpb24gY29tcGFyaXNvbiBw b2ludC4gIFdoZXJlIHRvIGNvbXBhcmUgY29uc2VjdXRpdmUKICAgICAgICAgaXRlcmF0aW9ucyBm b3IgYWJzb3JwdGlvbi4KICAgICAgICAgICAtIFNpbXBsZSB1bmJvdW5kZWQgVkFSIChBKyk6IHNl dCBvbiB0aGUgVkFSIGl0c2VsZgogICAgICAgICAgIC0gVW5ib3VuZGVkIEdST1VQICgoQSBCKSsp OiBzZXQgb24gdGhlIEVORCBlbGVtZW50IG9ubHkKQEAgLTEzOTMsNyArMTM5Myw3IEBAIFhJSS01 LiBFeGVjdXRpb24gT3B0aW1pemF0aW9uIFN1bW1hcnkKICAgICBjb3VudHMpIGNvbWJpbmF0aW9u IHRocm91Z2ggbXVsdGlwbGUgcGF0aHMuIEFkZGl0aW9uYWxseSwgZm9yCiAgICAgZ3JvdXAgYWJz b3JwdGlvbiwgbmZhX21hdGNoIHBlcmZvcm1zIGlubGluZSBhZHZhbmNlIGZyb20gYm91bmRlZAog ICAgIFZBUnMgKGNvdW50ID49IG1heCkgd2l0aGluIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbiAoQUJT T1JCQUJMRV9CUkFOQ0gpCi0gICAgdGhyb3VnaCBFTkQgY2hhaW5zIHRvIHJlYWNoIHRoZSBqdWRn bWVudCBwb2ludCAoQUJTT1JCQUJMRSBFTkQpLgorICAgIHRocm91Z2ggRU5EIGNoYWlucyB0byBy ZWFjaCB0aGUgY29tcGFyaXNvbiBwb2ludCAoQUJTT1JCQUJMRSBFTkQpLgogICAgIFRoaXMgcHJv Y2VzcyBjYW4gYWxzbyBwcm9kdWNlIGR1cGxpY2F0ZSBzdGF0ZXMgcmVhY2hpbmcgdGhlIHNhbWUg RU5ELgogICAgIG5mYV9hZGRfc3RhdGVfdW5pcXVlKCkgYmxvY2tzIGR1cGxpY2F0ZSBhZGRpdGlv biBvZiBpZGVudGljYWwgc3RhdGVzCiAgICAgaW4gYm90aCBjYXNlcy4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS UFIuYwppbmRleCAwOTliODFhZWI4MS4uOTBlM2EwNjhmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBS LmMKQEAgLTU3OCw3ICs1NzgsNyBAQCBuZmFfdXBkYXRlX2Fic29ycHRpb25fZmxhZ3MoUlBSTkZB Q29udGV4dCAqY3R4KQogCS8qCiAJICogSXRlcmF0ZSB0aHJvdWdoIGFsbCBzdGF0ZXMgdG8gY2hl Y2sgYWJzb3JwdGlvbiBzdGF0dXMuIFVzZXMKIAkgKiBzdGF0ZS0+aXNBYnNvcmJhYmxlIHdoaWNo IHRyYWNrcyBpZiBzdGF0ZSBpcyBpbiBhYnNvcmJhYmxlIHJlZ2lvbi4gVGhpcwotCSAqIGlzIGRp ZmZlcmVudCBmcm9tIFJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkgd2hpY2ggY2hlY2tzIGp1ZGdt ZW50CisJICogaXMgZGlmZmVyZW50IGZyb20gUlBSRWxlbUlzQWJzb3JiYWJsZShlbGVtKSB3aGlj aCBjaGVja3MgY29tcGFyaXNvbgogCSAqIHBvaW50LgogCSAqLwogCWZvciAoc3RhdGUgPSBjdHgt PnN0YXRlczsgc3RhdGUgIT0gTlVMTDsgc3RhdGUgPSBzdGF0ZS0+bmV4dCkKQEAgLTYyNSw4ICs2 MjUsOCBAQCBuZmFfc3RhdGVzX2NvdmVyZWQoUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSTkZBQ29u dGV4dCAqb2xkZXIsIFJQUk5GQUNvbnRleHQgKm5ldwogCQlkZXB0aCA9IGVsZW0tPmRlcHRoOwog CiAJCS8qCi0JCSAqIE9ubHkgY29tcGFyZSBhdCBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50cyAo UlBSX0VMRU1fQUJTT1JCQUJMRSkuCi0JCSAqIEp1ZGdtZW50IHBvaW50cyBhcmUgd2hlcmUgY291 bnQtZG9taW5hbmNlIGd1YXJhbnRlZXMgdGhlIG5ld2VyCisJCSAqIE9ubHkgY29tcGFyZSBhdCBh YnNvcnB0aW9uIGNvbXBhcmlzb24gcG9pbnRzIChSUFJfRUxFTV9BQlNPUkJBQkxFKS4KKwkJICog Q29tcGFyaXNvbiBwb2ludHMgYXJlIHdoZXJlIGNvdW50LWRvbWluYW5jZSBndWFyYW50ZWVzIHRo ZSBuZXdlcgogCQkgKiBjb250ZXh0J3MgZnV0dXJlIG1hdGNoZXMgYXJlIGEgc3Vic2V0IG9mIHRo ZSBvbGRlcidzLgogCQkgKi8KIAkJaWYgKCFSUFJFbGVtSXNBYnNvcmJhYmxlKGVsZW0pKQpAQCAt NzgyLDcgKzc4Miw4IEBAIG5mYV9ldmFsX3Zhcl9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAogICogICAgIHByZXZpb3VzIGFkdmFuY2Ugd2hl biBjb3VudCA+PSBtaW4gd2FzIHNhdGlzZmllZCkKICAqCiAgKiBGb3IgVkFScyB0aGF0IHJlYWNo ZWQgbWF4IGNvdW50IGZvbGxvd2VkIGJ5IEVORDoKLSAqICAgLSBBZHZhbmNlIHRocm91Z2ggdGhl IEVORC1lbGVtZW50IGNoYWluIHRvIHRoZSBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50CisgKiAg IC0gQWR2YW5jZSB0aHJvdWdoIHRoZSBFTkQtZWxlbWVudCBjaGFpbiB0byB0aGUgYWJzb3JwdGlv bgorICogICAgIGNvbXBhcmlzb24gcG9pbnQKICAqICAgLSBPbmx5IGRldGVybWluaXN0aWMgZXhp dHMgKGNvdW50ID49IG1heCwgbWF4ICE9IElORikgYXJlIGhhbmRsZWQKICAqICAgLSBDaGFpbnMg dGhyb3VnaCBFTkQgZWxlbWVudHMgd2hpbGUgY291bnQgPj0gbWF4IChtdXN0LWV4aXQgcGF0aCkK ICAqCkBAIC04MDAsNyArODAxLDcgQEAgbmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQogCS8qCiAJICogRXZhbHVh dGUgVkFSIGVsZW1lbnRzIGFnYWluc3QgY3VycmVudCByb3cuIEZvciBWQVJzIHRoYXQgcmVhY2gg bWF4CiAJICogY291bnQgd2l0aCBFTkQgbmV4dCwgYWR2YW5jZSB0aHJvdWdoIHRoZSBjaGFpbiBv ZiBFTkQgZWxlbWVudHMgaW5saW5lCi0JICogc28gYWJzb3JiIHBoYXNlIGNhbiBjb21wYXJlIHN0 YXRlcyBhdCBqdWRnbWVudCBwb2ludHMuCisJICogc28gYWJzb3JiIHBoYXNlIGNhbiBjb21wYXJl IHN0YXRlcyBhdCBjb21wYXJpc29uIHBvaW50cy4KIAkgKi8KIAlmb3IgKHN0YXRlID0gY3R4LT5z dGF0ZXM7IHN0YXRlICE9IE5VTEw7IHN0YXRlID0gbmV4dFN0YXRlKQogCXsKQEAgLTgzMSw3ICs4 MzIsNyBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0 ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAKIAkJCQkvKgogCQkJCSAqIEZvciBWQVIgYXQgbWF4 IGNvdW50IHdpdGggRU5EIG5leHQsIGFkdmFuY2UgdGhyb3VnaCBFTkQKLQkJCQkgKiBjaGFpbiB0 byByZWFjaCB0aGUgYWJzb3JwdGlvbiBqdWRnbWVudCBwb2ludC4gIE9ubHkKKwkJCQkgKiBjaGFp biB0byByZWFjaCB0aGUgYWJzb3JwdGlvbiBjb21wYXJpc29uIHBvaW50LiAgT25seQogCQkJCSAq IGRldGVybWluaXN0aWMgZXhpdHMgKGNvdW50ID49IG1heCwgbWF4IGZpbml0ZSkgYXJlIGhhbmRs ZWQ7CiAJCQkJICogdW5ib3VuZGVkIFZBUnMgc3RheSBmb3IgYWR2YW5jZSBwaGFzZS4KIAkJCQkg KgpAQCAtODQxLDEwICs4NDIsMTAgQEAgbmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQogCQkJCSAqIHRvIHRoZSBu ZXh0IG91dGVyIEVORC4gIFRoZSBsb29wIGJlbG93IHdhbGtzIHRoaXMgY2hhaW4uCiAJCQkJICoK IAkJCQkgKiBBQlNPUkJBQkxFX0JSQU5DSCBtYXJrcyBlbGVtZW50cyBpbnNpZGUgdGhlIGFic29y YmFibGUKLQkJCQkgKiByZWdpb247IEFCU09SQkFCTEUgbWFya3MgdGhlIG91dGVybW9zdCBqdWRn bWVudCBwb2ludCB3aGVyZQotCQkJCSAqIGNvdW50LWRvbWluYW5jZSBpcyBldmFsdWF0ZWQuICBX ZSBjaGFpbiB0aHJvdWdoIEJSQU5DSAotCQkJCSAqIGVsZW1lbnRzIHVudGlsIHJlYWNoaW5nIHRo ZSBBQlNPUkJBQkxFIHBvaW50IG9yIGFuIGVsZW1lbnQKLQkJCQkgKiB0aGF0IGNhbiBzdGlsbCBs b29wIChjb3VudCA8IG1heCkuCisJCQkJICogcmVnaW9uOyBBQlNPUkJBQkxFIG1hcmtzIHRoZSBv dXRlcm1vc3QgY29tcGFyaXNvbiBwb2ludAorCQkJCSAqIHdoZXJlIGNvdW50LWRvbWluYW5jZSBp cyBldmFsdWF0ZWQuICBXZSBjaGFpbiB0aHJvdWdoCisJCQkJICogQlJBTkNIIGVsZW1lbnRzIHVu dGlsIHJlYWNoaW5nIHRoZSBBQlNPUkJBQkxFIHBvaW50IG9yIGFuCisJCQkJICogZWxlbWVudCB0 aGF0IGNhbiBzdGlsbCBsb29wIChjb3VudCA8IG1heCkuCiAJCQkJICovCiAJCQkJaWYgKFJQUkVs ZW1Jc0Fic29yYmFibGVCcmFuY2goZWxlbSkgJiYKIAkJCQkJIVJQUkVsZW1Jc0Fic29yYmFibGUo ZWxlbSkgJiYKQEAgLTg3Niw3ICs4NzcsNyBAQCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCiAKIAkJCQkJLyoK IAkJCQkJICogQ2hhaW4gdGhyb3VnaCBFTkQgZWxlbWVudHMgd2l0aGluIHRoZSBhYnNvcmJhYmxl IHJlZ2lvbgotCQkJCQkgKiAoQUJTT1JCQUJMRV9CUkFOQ0gpIHVudGlsIHJlYWNoaW5nIHRoZSBq dWRnbWVudCBwb2ludAorCQkJCQkgKiAoQUJTT1JCQUJMRV9CUkFOQ0gpIHVudGlsIHJlYWNoaW5n IHRoZSBjb21wYXJpc29uIHBvaW50CiAJCQkJCSAqIChBQlNPUkJBQkxFKS4gIENvbnRpbnVlIG9u bHkgb24gbXVzdC1leGl0IHBhdGggKGNvdW50CiAJCQkJCSAqID49IG1heCkgd2l0aCBFTkQgbmV4 dC4KIAkJCQkJICovCkBAIC04OTIsOSArODkzLDkgQEAgbmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQogCQkJCQkJ LyoKIAkJCQkJCSAqIEV4aXQgdGhpcyBpbnRlcm1lZGlhdGUgZ3JvdXA6IGNsZWFyIGl0cyBvd24g Y291bnQKIAkJCQkJCSAqIChjb3VudC1jbGVhciBwb2xpY3kpLiAgSXQgc2l0cyBiZWxvdyB0aGUg YWJzb3JiYWJsZQotCQkJCQkJICoganVkZ21lbnQgcG9pbnQsIHNvIGl0IGlzIGV4Y2x1ZGVkIGZy b20gdGhlCi0JCQkJCQkgKiBkb21pbmFuY2UgY29tcGFyaXNvbjsgdGhlIGp1ZGdtZW50IHBvaW50 IHdoZXJlIHRoZQotCQkJCQkJICogY2hhaW4gc3RvcHMga2VlcHMgaXRzIGNvdW50LgorCQkJCQkJ ICogY29tcGFyaXNvbiBwb2ludCwgc28gaXQgaXMgZXhjbHVkZWQgZnJvbSB0aGUKKwkJCQkJCSAq IGRvbWluYW5jZSBjb21wYXJpc29uOyB0aGUgY29tcGFyaXNvbiBwb2ludCB3aGVyZQorCQkJCQkJ ICogdGhlIGNoYWluIHN0b3BzIGtlZXBzIGl0cyBjb3VudC4KIAkJCQkJCSAqLwogCQkJCQkJc3Rh dGUtPmNvdW50c1tlbmREZXB0aF0gPSAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9ycHIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCmluZGV4 IDU5N2E5NjZjN2IxLi5lYmJhOGU1MGIxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAg LTE5LDcgKzE5LDcgQEAKICAqICAgY29tcGxleGl0eSBmcm9tIE8obl4yKSB0byBPKG4pIGZvciBw YXR0ZXJucyBsaWtlIEErIEIuCiAgKgogICogICBUaGUgYWJzb3JwdGlvbiBhbmFseXNpcyB1c2Vz IHR3byBlbGVtZW50IGZsYWdzOgotICogICAtIFJQUl9FTEVNX0FCU09SQkFCTEU6IG1hcmtzIFdI RVJFIHRvIGNvbXBhcmUgKGp1ZGdtZW50IHBvaW50KQorICogICAtIFJQUl9FTEVNX0FCU09SQkFC TEU6IG1hcmtzIFdIRVJFIHRvIGNvbXBhcmUgKGNvbXBhcmlzb24gcG9pbnQpCiAgKiAgIC0gUlBS X0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0g6IG1hcmtzIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbgogICoK ICAqICAgU2VlIGNvbXB1dGVBYnNvcmJhYmlsaXR5KCkgYW5kIHRoZSBkZXRhaWxlZCBjb21tZW50 cyBiZWZvcmUKQEAgLTE0ODQsNyArMTQ4NCw3IEBAIGZpbmFsaXplUlBSUGF0dGVybihSUFJQYXR0 ZXJuICpyZXN1bHQpCiAgKiAgIHRoYW4gQ3R4MidzIG1hdGNoICgxIHRvIGN1cnJlbnQpLiBTbyBD dHgyIGNhbiBiZSBzYWZlbHkgZWxpbWluYXRlZC4KICAqCiAgKiBUd28gRmxhZ3M6Ci0gKiAgIDEu IFJQUl9FTEVNX0FCU09SQkFCTEUgLSAiQWJzb3JwdGlvbiBqdWRnbWVudCBwb2ludCIKKyAqICAg MS4gUlBSX0VMRU1fQUJTT1JCQUJMRSAtICJBYnNvcnB0aW9uIGNvbXBhcmlzb24gcG9pbnQiCiAg KiAgICAgIFdIRVJFIGNvbnRleHRzIGNhbiBiZSBjb21wYXJlZCBmb3IgYWJzb3JwdGlvbi4KICAq ICAgICAgLSBTaW1wbGUgdW5ib3VuZGVkIFZBUiAoQSspOiB0aGUgVkFSIGVsZW1lbnQgaXRzZWxm CiAgKiAgICAgIC0gVW5ib3VuZGVkIEdST1VQICgoQSBCKSspOiB0aGUgRU5EIGVsZW1lbnQgb25s eQpAQCAtMTUwNiwyMCArMTUwNiwyMCBAQCBmaW5hbGl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVybiAq cmVzdWx0KQogICogICAgICAgICAgICAgICAgLT4gQm90aCBhdCBFTkQsIGNvbXBhcmFibGUhIEN0 eDEgYWJzb3JicyBDdHgyLgogICoKICAqICAgQ29udGV4dHMgc3luY2hyb25pemUgYXQgRU5EIGV2 ZXJ5IGdyb3VwLWxlbmd0aCByb3dzLiBUaGVyZWZvcmU6Ci0gKiAgIC0gQUJTT1JCQUJMRSBtYXJr cyBFTkQgYXMganVkZ21lbnQgcG9pbnQgKHdoZXJlIHRvIGNvbXBhcmUpCisgKiAgIC0gQUJTT1JC QUJMRSBtYXJrcyBFTkQgYXMgY29tcGFyaXNvbiBwb2ludCAod2hlcmUgdG8gY29tcGFyZSkKICAq ICAgLSBBQlNPUkJBQkxFX0JSQU5DSCBrZWVwcyBzdGF0ZS5pc0Fic29yYmFibGU9dHJ1ZSB0aHJv dWdoIEEtPkItPkVORAogICoKICAqIFBhdHRlcm4gRXhhbXBsZXM6CiAgKgogICogICBQYXR0ZXJu OiBBKyBCCi0gKiAgIEVsZW1lbnQgMCAoQSk6IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5D SCAgPC0ganVkZ21lbnQgcG9pbnQKKyAqICAgRWxlbWVudCAwIChBKTogQUJTT1JCQUJMRSB8IEFC U09SQkFCTEVfQlJBTkNIICA8LSBjb21wYXJpc29uIHBvaW50CiAgKiAgIEVsZW1lbnQgMSAoQik6 IChub25lKQogICogICAtPiBDb21wYXJlIGF0IEEgZXZlcnkgcm93LiBXaGVuIGNvbnRleHRzIG1v dmUgdG8gQiwgYWJzb3JwdGlvbiBzdG9wcy4KICAqCiAgKiAgIFBhdHRlcm46IChBIEIpKyBDCiAg KiAgIEVsZW1lbnQgMCAoQSk6IEFCU09SQkFCTEVfQlJBTkNICiAgKiAgIEVsZW1lbnQgMSAoQik6 IEFCU09SQkFCTEVfQlJBTkNICi0gKiAgIEVsZW1lbnQgMiAoRU5EKTogQUJTT1JCQUJMRSB8IEFC U09SQkFCTEVfQlJBTkNIICA8LSBqdWRnbWVudCBwb2ludAorICogICBFbGVtZW50IDIgKEVORCk6 IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCAgPC0gY29tcGFyaXNvbiBwb2ludAogICog ICBFbGVtZW50IDMgKEMpOiAobm9uZSkKICAqICAgLT4gQ29tcGFyZSBhdCBFTkQgZXZlcnkgMiBy b3dzLiBXaGVuIGNvbnRleHRzIG1vdmUgdG8gQywgYWJzb3JwdGlvbiBzdG9wcy4KICAqCkBAIC0x NjI5LDcgKzE2MjksNyBAQCBpc0ZpeGVkTGVuZ3RoQ2hpbGRyZW4oUlBSUGF0dGVybiAqcGF0dGVy biwgUlBSRWxlbUlkeCBpZHgsIFJQUkRlcHRoIHNjb3BlRGVwdGgpCiAgKiAgICAgIEFsbCBjaGls ZHJlbiBtdXN0IGhhdmUgbWluID09IG1heCAocmVjdXJzaXZlbHkgZm9yIG5lc3RlZCBzdWJncm91 cHMpLgogICogICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIHsxLDF9IFZB UnMsIGUuZy4sIChBIEIgQikrIEMuCiAgKiAgICAgIEFsbCBlbGVtZW50cyB3aXRoaW4gdGhlIGdy b3VwIGdldCBBQlNPUkJBQkxFX0JSQU5DSC4KLSAqICAgICAgT25seSB0aGUgdW5ib3VuZGVkIEVO RCBnZXRzIEFCU09SQkFCTEUgKGp1ZGdtZW50IHBvaW50KS4KKyAqICAgICAgT25seSB0aGUgdW5i b3VuZGVkIEVORCBnZXRzIEFCU09SQkFCTEUgKGNvbXBhcmlzb24gcG9pbnQpLgogICogICAgICBF eGFtcGxlczoKICAqICAgICAgICAoQSBCezJ9KSsgQyAgICAgICAgICAtIEJ7Mn0gaGFzIG1pbj09 bWF4LCBzdGVwPTMKICAqICAgICAgICAoQSAoQiBDKXsyfSBEKSsgRSAgICAtIG5lc3RlZCB7Mn0g c3ViZ3JvdXAsIHN0ZXA9NgpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgY29tcHV0ZUFic29yYmFiaWxp dHlSZWN1cnNpdmUoUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBzdGFydElkeCwKICAq IGRlY3JlYXNlIHByb3BlcnR5IHJlcXVpcmVkIGZvciBzYWZlIGFic29ycHRpb24uCiAgKgogICog VGhpcyBmdW5jdGlvbiBzZXRzIHR3byBmbGFnczoKLSAqICAgUlBSX0VMRU1fQUJTT1JCQUJMRTog QWJzb3JwdGlvbiBqdWRnbWVudCBwb2ludAorICogICBSUFJfRUxFTV9BQlNPUkJBQkxFOiBBYnNv cnB0aW9uIGNvbXBhcmlzb24gcG9pbnQKICAqICAgICAtIFNpbXBsZSB1bmJvdW5kZWQgVkFSOiB0 aGUgVkFSIGl0c2VsZiAoZS5nLiwgQSBpbiBBKykKICAqICAgICAtIFVuYm91bmRlZCBHUk9VUDog dGhlIEVORCBlbGVtZW50IChlLmcuLCBFTkQgaW4gKEEgQikrKQogICogICBSUFJfRUxFTV9BQlNP UkJBQkxFX0JSQU5DSDogQWxsIGVsZW1lbnRzIGluIGFic29yYmFibGUgcmVnaW9uCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cnByLmgKaW5kZXggMjM3NjM0NDJiNjUuLjgzZDNjZDI5YjA3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcnByLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCkBA IC01Myw3ICs1Myw3IEBACiAgKiBvcHRpbWl6ZXIvcGxhbi9ycHIuYy4KICAqLwogI2RlZmluZSBS UFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSAkweDA0CS8qIGVsZW1lbnQgaW4gYWJzb3JiYWJsZSBy ZWdpb24gKi8KLSNkZWZpbmUgUlBSX0VMRU1fQUJTT1JCQUJMRQkJCTB4MDgJLyogYWJzb3JwdGlv biBqdWRnbWVudCBwb2ludCAqLworI2RlZmluZSBSUFJfRUxFTV9BQlNPUkJBQkxFCQkJMHgwOAkv KiBhYnNvcnB0aW9uIGNvbXBhcmlzb24gcG9pbnQgKi8KIAogLyogQWNjZXNzb3IgbWFjcm9zIGZv ciBSUFJQYXR0ZXJuRWxlbWVudCAqLwogI2RlZmluZSBSUFJFbGVtSXNSZWx1Y3RhbnQoZSkJCQko KChlKS0+ZmxhZ3MgJiBSUFJfRUxFTV9SRUxVQ1RBTlQpICE9IDApCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2Jhc2Uub3V0CmluZGV4IDgwZmFiZGU1MTRjLi5iMzg1ZTk3MmU3ZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKQEAgLTU0NzIsOSArNTQ3Miw5IEBAIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKIC0tIEFic29ycHRpb24gRmxhZyBEaXNwbGF5IFRlc3RzCiAtLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tIFRlc3RzIGFic29ycHRpb24gbWFya2VyIGRpc3BsYXkgaW4gRVhQTEFJTiBvdXRwdXQKLS0t IE1hcmtlcnM6ICcgPSBicmFuY2ggZWxlbWVudCwgIiA9IGp1ZGdtZW50IHBvaW50CistLSBNYXJr ZXJzOiAnID0gYnJhbmNoIGVsZW1lbnQsICIgPSBjb21wYXJpc29uIHBvaW50CiAtLSBGaWxlczog ZXhwbGFpbi5jIChhcHBlbmRfcnByX3F1YW50aWZpZXIsIGRlcGFyc2VfcnByX3BhdHRlcm4pCi0t LSBTaW1wbGUgVkFSOiBBKyAtPiBhKyIgKGp1ZGdtZW50IHBvaW50KQorLS0gU2ltcGxlIFZBUjog QSsgLT4gYSsiIChjb21wYXJpc29uIHBvaW50KQogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCiBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBAIC01NDkw LDcgKzU0OTAsNyBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KICg3IHJvd3MpCiAKLS0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBi JykrIiAoYnJhbmNoICsganVkZ21lbnQpCistLSBHUk9VUCB1bmJvdW5kZWQ6IChBIEIpKyAtPiAo YScgYicpKyIgKGJyYW5jaCArIGNvbXBhcmlzb24pCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9iYXNlLnNxbAppbmRleCAyMTg0MGFhNzdiZS4uYWY0OThmZmZiNjYgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKQEAgLTMyNTQsMTYgKzMyNTQsMTYgQEAgV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORwogLS0gQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVzdHMKIC0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gVGVz dHMgYWJzb3JwdGlvbiBtYXJrZXIgZGlzcGxheSBpbiBFWFBMQUlOIG91dHB1dAotLS0gTWFya2Vy czogJyA9IGJyYW5jaCBlbGVtZW50LCAiID0ganVkZ21lbnQgcG9pbnQKKy0tIE1hcmtlcnM6ICcg PSBicmFuY2ggZWxlbWVudCwgIiA9IGNvbXBhcmlzb24gcG9pbnQKIC0tIEZpbGVzOiBleHBsYWlu LmMgKGFwcGVuZF9ycHJfcXVhbnRpZmllciwgZGVwYXJzZV9ycHJfcGF0dGVybikKIAotLS0gU2lt cGxlIFZBUjogQSsgLT4gYSsiIChqdWRnbWVudCBwb2ludCkKKy0tIFNpbXBsZSBWQVI6IEErIC0+ IGErIiAoY29tcGFyaXNvbiBwb2ludCkKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgogV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogICAgICAgICAgICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMg dmFsID4gMCk7CiAKLS0tIEdST1VQIHVuYm91bmRlZDogKEEgQikrIC0+IChhJyBiJykrIiAoYnJh bmNoICsganVkZ21lbnQpCistLSBHUk9VUCB1bmJvdW5kZWQ6IChBIEIpKyAtPiAoYScgYicpKyIg KGJyYW5jaCArIGNvbXBhcmlzb24pCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKLS0gCjIuNTAuMSAoQXBw bGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0012-comment-doc-clarity.patch" Content-Disposition: attachment; filename="v50-0012-comment-doc-clarity.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqme8w20 RnJvbSAyMGRlNGY4ZWM4ZWMxOGE5MTk4ZGE3OTdmYjU1NjQ5Y2QzNzk3YjQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDEzOjQzOjU4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjEv MjldIEltcHJvdmUgY29tbWVudHMsIGRvY3VtZW50YXRpb24sIGFuZCBuYW1pbmcgZm9yIHJvdwog cGF0dGVybiByZWNvZ25pdGlvbgoKQSBiYXRjaCBvZiBjbGFyaXR5IGNsZWFudXBzIGZvciByb3cg cGF0dGVybiByZWNvZ25pdGlvbiwgbm9uZSBvZiB3aGljaApjaGFuZ2UgYmVoYXZpb3Igb3IgcXVl cnkgb3V0cHV0OgoKLSBDYWxsIHRoZSBwYXJzZXItYnVpbHQgUEFUVEVSTiBzdHJ1Y3R1cmUgYSAi cGFyc2UgdHJlZSIgcmF0aGVyIHRoYW4gYW4KICAiQVNUIiwgd2hpY2ggaXMgbm90IFBvc3RncmVT UUwncyB1c3VhbCB0ZXJtIChwYXJzZW5vZGVzLmgsIHBhcnNlX3Jwci5jLAogIHBsYW4vcnByLmMs IGFuZCB0aGUgZXhlY3V0b3IgUkVBRE1FKS4KLSBUcmltIHRoZSB0cmFuc2Zvcm1EZWZpbmVDbGF1 c2UgaGVhZGVyIGNvbW1lbnQsIHdob3NlIHN0ZXAgbGlzdCBtZXJlbHkKICBkdXBsaWNhdGVkIHRo ZSBpbmxpbmUgY29tbWVudHMuCi0gRHJvcCBhIGR1cGxpY2F0ZWQgc3RhbmRhcmQtY2l0YXRpb24g c2VudGVuY2UgZnJvbSB0aGUgY29udGFpbl9ycHJfd2Fsa2VyCiAgaGVhZGVyOyB0cmFuc2Zvcm1X aXRoQ2xhdXNlIGFscmVhZHkgY2FycmllcyBpdC4KLSBGaXggYSBzdGFsZSAiQUxUX1NUQVJUIiBy ZWZlcmVuY2UgdG8gbmFtZSB0aGUgQUxUIG1hcmtlciwgYW5kIG5vcm1hbGl6ZQogIGFuICJvciAt MSIgUGFyc2VMb2MgY29tbWVudCB0byB0aGUgdXN1YWwgIm9yIC0xIGlmIHVua25vd24iLgotIE1v dmUgdGhlIEVNUFRZLWFsdGVybmF0aXZlIGV4cGxhbmF0aW9uIGluIHJvd19wYXR0ZXJuX3F1YW50 aWZpZXJfb3B0CiAgaW50byB0aGUgYWN0aW9uIGJsb2NrLCBrZWVwaW5nIHRoZSAvKkVNUFRZKi8g bWFya2VyLgotIFJld29yZCB0aGUgUnVuIENvbmRpdGlvbiBwdXNoZG93biB0ZXN0IGNvbW1lbnQg dG8gZXhwbGFpbiBpbiBTUUwgdGVybXMKICB3aHkgY291bnQoKikgaXMgREVDUkVBU0lORyBvdmVy IHRoZSByZXF1aXJlZCBmcmFtZS4KLSBSZW5hbWUgUlBSX0NPVU5UX01BWCB0byBSUFJfQ09VTlRf SU5GLCBkZWZpbmVkIGZyb20gUlBSX1FVQU5USVRZX0lORi4KICBUaGUgb2xkICJNQVgiIG5hbWUg c3VnZ2VzdGVkIGEgY29uZmlndXJhYmxlIHJlcGV0aXRpb24gbGltaXQgLS0gdGhhdCBpcwogIGVs ZW0tPm1heCwgYSBkaWZmZXJlbnQgdGhpbmcgLS0gd2hpY2ggbGVkIHRvIHF1ZXN0aW9ucyBhYm91 dCBlcnJvcmluZwogIHdoZW4gYSBjb3VudCByZWFjaGVzIGl0LiAgVGhlIHZhbHVlIGlzIHRoZSBp bnQzMiBzYXR1cmF0aW9uIGNlaWxpbmcsIGFuZAogIGEgc2F0dXJhdGVkIGNvdW50IHJlYWRzIGFz ICJ1bmJvdW5kZWQiLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIgICAgICAg ICAgIHwgNDQgKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSUFIuYyAgICAgICAgICAgIHwgMjMgKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9ycHIuYyAgICAgICAgICB8IDIzICsrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY3RlLmMgICAgICAgICAgICB8ICA0ICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3Jwci5jICAgICAgICAgICAgfCAxOSArKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggICAgICAgICAgICB8IDEyICsrKy0tLS0KIHNyYy9pbmNsdWRlL29wdGltaXplci9y cHIuaCAgICAgICAgICAgICAgIHwgIDkgKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnByX2V4cGxhaW4ub3V0IHwgMTIgKysrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4 cGxhaW4uc3FsICAgICAgfCAxMiArKysrLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRp b25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9SRUFETUUucnByIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwcgppbmRleCA1MGQx ZmY4N2Y3ZS4uOTI3NWUyNjVkNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRS5ycHIKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLnJwcgpAQCAtOTYsMTYg Kzk2LDE2IEBAIENoYXB0ZXIgSUkgIE92ZXJhbGwgUHJvY2Vzc2luZyBQaXBlbGluZQogCiBSUFIg cHJvY2Vzc2luZyBpcyBkaXZpZGVkIGludG8gdGhyZWUgcGhhc2VzOgogCi0gICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIHwg IDEuIFBhcnNpbmcgKFBhcnNlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8Ci0gIHwgICAgIFNRTCB0ZXh0IC0+IFBBVFRFUk4gQVNUICsgREVGSU5FIGV4cHJlc3Npb24g dHJlZSAgICAgICB8Ci0gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Ci0gIHwgIDIuIENvbXBpbGF0aW9uIChPcHRpbWl6ZXIvUGxh bm5lcikgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gIHwgICAgIFBBVFRFUk4gQVNUIC0+IG9w dGltaXphdGlvbiAtPiBmbGF0IE5GQSBlbGVtZW50IGFycmF5ICB8Ci0gIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gIHwgIDMu IEV4ZWN1dGlvbiAoRXhlY3V0b3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 Ci0gIHwgICAgIFJvdy1ieS1yb3cgbWF0Y2hpbmcgdmlhIE5GQSBzaW11bGF0aW9uICAgICAgICAg ICAgICAgICB8Ci0gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCAgMS4gUGFyc2luZyAoUGFyc2VyKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICBTUUwgdGV4 dCAtPiBQQVRURVJOIHBhcnNlIHRyZWUgKyBERUZJTkUgZXhwcmVzc2lvbiB0cmVlICB8CisgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKKyAgfCAgMi4gQ29tcGlsYXRpb24gKE9wdGltaXplci9QbGFubmVyKSAgICAgICAgICAg ICAgICAgICAgICAgICAgfAorICB8ICAgICBQQVRURVJOIHBhcnNlIHRyZWUgLT4gb3B0aW1pemF0 aW9uIC0+IGZsYXQgTkZBIGVsZW1lbnRzICB8CisgIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgMy4gRXhlY3V0aW9u IChFeGVjdXRvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAg ICBSb3ctYnktcm93IG1hdGNoaW5nIHZpYSBORkEgc2ltdWxhdGlvbiAgICAgICAgICAgICAgICAg ICB8CisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKIAogRWFjaCBwaGFzZSB1c2VzIGluZGVwZW5kZW50IGRhdGEgc3RydWN0 dXJlcywgYW5kIHRoZSBpbnRlcmZhY2VzIGJldHdlZW4KIHBoYXNlcyBhcmUgd2VsbC1kZWZpbmVk OgpAQCAtMTM3LDcgKzEzNyw3IEBAIGZvbGxvd2luZzoKIAogICAoMykgREVGSU5FIGNsYXVzZSB0 cmFuc2Zvcm1hdGlvbiAodHJhbnNmb3JtRGVmaW5lQ2xhdXNlKQogCi1JSUktMi4gUEFUVEVSTiBB U1QgKEFic3RyYWN0IFN5bnRheCBUcmVlKQorSUlJLTIuIFBBVFRFUk4gcGFyc2UgdHJlZQogCiBU aGUgcGFyc2VyIHRyYW5zZm9ybXMgdGhlIFBBVFRFUk4gY2xhdXNlIGludG8gYW4gUlBSUGF0dGVy bk5vZGUgdHJlZS4KIEVhY2ggbm9kZSBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm91ciB0eXBl czoKQEAgLTE5MiwxNiArMTkyLDE2IEBAIElWLTEuIEVudHJ5IFBvaW50CiAKIElWLTIuIFRoZSA2 IFBoYXNlcyBvZiBidWlsZFJQUlBhdHRlcm4oKQogCi0gIFBoYXNlIDE6IEFTVCBvcHRpbWl6YXRp b24gKG9wdGltaXplUlBSUGF0dGVybikKKyAgUGhhc2UgMTogcGFyc2UgdHJlZSBvcHRpbWl6YXRp b24gKG9wdGltaXplUlBSUGF0dGVybikKICAgUGhhc2UgMjogU3RhdGlzdGljcyBjb2xsZWN0aW9u IChzY2FuUlBSUGF0dGVybikKICAgUGhhc2UgMzogTWVtb3J5IGFsbG9jYXRpb24gKG1ha2VSUFJQ YXR0ZXJuKQogICBQaGFzZSA0OiBORkEgZWxlbWVudCBmaWxsIChmaWxsUlBSUGF0dGVybikKICAg UGhhc2UgNTogRmluYWxpemF0aW9uIChmaW5hbGl6ZVJQUlBhdHRlcm4pCiAgIFBoYXNlIDY6IEFi c29yYmFiaWxpdHkgYW5hbHlzaXMgKGNvbXB1dGVBYnNvcmJhYmlsaXR5KQogCi1JVi0zLiBQaGFz ZSAxOiBBU1QgT3B0aW1pemF0aW9uCitJVi0zLiBQaGFzZSAxOiBQYXJzZSBUcmVlIE9wdGltaXph dGlvbgogCi1BZnRlciBjb3B5aW5nIHRoZSBwYXJzZXItZ2VuZXJhdGVkIEFTVCwgdGhlIGZvbGxv d2luZyBvcHRpbWl6YXRpb25zIGFyZQorQWZ0ZXIgY29weWluZyB0aGUgcGFyc2VyLWdlbmVyYXRl ZCBwYXJzZSB0cmVlLCB0aGUgZm9sbG93aW5nIG9wdGltaXphdGlvbnMgYXJlCiBhcHBsaWVkOgog CiAgIChhKSBTRVEgZmxhdHRlbmluZzogVW53cmFwIG5lc3RlZCBTRVEgbm9kZXMKQEAgLTIzNiw3 ICsyMzYsNyBAQCBhcHBsaWVkOgogCiBJVi00LiBQaGFzZSA0OiBORkEgRWxlbWVudCBBcnJheSBH ZW5lcmF0aW9uCiAKLVRyYW5zZm9ybXMgdGhlIG9wdGltaXplZCBBU1QgaW50byBhIGZsYXQgYXJy YXkgb2YgUlBSUGF0dGVybkVsZW1lbnQuCitUcmFuc2Zvcm1zIHRoZSBvcHRpbWl6ZWQgcGFyc2Ug dHJlZSBpbnRvIGEgZmxhdCBhcnJheSBvZiBSUFJQYXR0ZXJuRWxlbWVudC4KIFRoaXMgaXMgdGhl IGNvcmUgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBmb3IgTkZBIHNpbXVsYXRpb24gYXQgcnVudGltZS4K IAogUlBSUGF0dGVybkVsZW1lbnQgc3RydWN0ICgxNiBieXRlcyk6CkBAIC0yOTgsNyArMjk4LDcg QEAgRWxlbWVudCBmbGFncyAoMSBieXRlLCBiaXRtYXNrKToKIAogRXhhbXBsZTogUEFUVEVSTiAo QSsgQiB8IEMpCiAKLSAgQVNUOiBBTFQoU0VRKFZBUihBLDEsSU5GKSwgVkFSKEIsMSwxKSksIFZB UihDLDEsMSkpCisgIFBhcnNlIHRyZWU6IEFMVChTRVEoVkFSKEEsMSxJTkYpLCBWQVIoQiwxLDEp KSwgVkFSKEMsMSwxKSkKIAogICBDb21waWxhdGlvbiByZXN1bHQ6CiAKQEAgLTM0NSw5ICszNDUs OSBAQCBFeGFtcGxlOiBQQVRURVJOICgoQSBCKSspCiAKIElWLTRhLiBSZWx1Y3RhbnQgRmxhZyAo UlBSX0VMRU1fUkVMVUNUQU5UKQogCi1UaGUgcmVsdWN0YW50IGZsYWcgaXMgc2V0IGR1cmluZyBQ aGFzZSA0IChmaWxsUlBSUGF0dGVybikgd2hlbiB0aGUgQVNUIG5vZGUKLWhhcyByZWx1Y3RhbnQg PT0gdHJ1ZS4gSXQgcmV2ZXJzZXMgdGhlIHByaW9yaXR5IG9mIHF1YW50aWZpZXIgZXhwYW5zaW9u IGF0Ci1ydW50aW1lOgorVGhlIHJlbHVjdGFudCBmbGFnIGlzIHNldCBkdXJpbmcgUGhhc2UgNCAo ZmlsbFJQUlBhdHRlcm4pIHdoZW4gdGhlIHBhcnNlCit0cmVlIG5vZGUgaGFzIHJlbHVjdGFudCA9 PSB0cnVlLiBJdCByZXZlcnNlcyB0aGUgcHJpb3JpdHkgb2YgcXVhbnRpZmllcgorZXhwYW5zaW9u IGF0IHJ1bnRpbWU6CiAKICAgR3JlZWR5IChkZWZhdWx0KTogIHRyeSBsb29wLWJhY2sgZmlyc3Qs IHRoZW4gZXhpdCAgKHByZWZlciBsb25nZXIgbWF0Y2gpCiAgIFJlbHVjdGFudDogICAgICAgICB0 cnkgZXhpdCBmaXJzdCwgdGhlbiBsb29wLWJhY2sgICAocHJlZmVyIHNob3J0ZXIgbWF0Y2gpCkBA IC0xMzYzLDkgKzEzNjMsOSBAQCBYSUktNS4gRXhlY3V0aW9uIE9wdGltaXphdGlvbiBTdW1tYXJ5 CiAKICAgLS0gQ29tcGlsZS10aW1lIC0tCiAKLSAgKDEpIEFTVCBPcHRpbWl6YXRpb24gKElWLTMp CisgICgxKSBQYXJzZSBUcmVlIE9wdGltaXphdGlvbiAoSVYtMykKIAotICAgIFNpbXBsaWZpZXMg dGhlIEFTVCBiZWZvcmUgY29udmVydGluZyB0aGUgcGF0dGVybiB0byBhbiBORkEuCisgICAgU2lt cGxpZmllcyB0aGUgcGFyc2UgdHJlZSBiZWZvcmUgY29udmVydGluZyB0aGUgcGF0dGVybiB0byBh biBORkEuCiAgICAgUmVkdWNlcyB0aGUgbnVtYmVyIG9mIE5GQSBlbGVtZW50cyB0aHJvdWdoIGNv bnNlY3V0aXZlIHZhcmlhYmxlCiAgICAgbWVyZ2luZyAoQSBBIC0+IEF7Mn0pLCBTRVEgZmxhdHRl bmluZywgcXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbiwKICAgICBhbmQgb3RoZXIgdHJhbnNmb3Jt YXRpb25zLgpAQCAtMTQ2OCw3ICsxNDY4LDcgQEAgQXBwZW5kaXggQS4gS2V5IEZ1bmN0aW9uIElu ZGV4CiAgIHRyYW5zZm9ybVJQUiAgICAgICAgICAgICAgICAgIHBhcnNlX3Jwci5jICAgICAgICAg ICBQYXJzZXIgZW50cnkgcG9pbnQKICAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlICAgICAgICAgcGFy c2VfcnByLmMgICAgICAgICAgIERFRklORSB0cmFuc2Zvcm1hdGlvbgogICBidWlsZFJQUlBhdHRl cm4gICAgICAgICAgICAgICBycHIuYyAgICAgICAgICAgICAgICAgTkZBIGNvbXBpbGF0aW9uIG1h aW4KLSAgb3B0aW1pemVSUFJQYXR0ZXJuICAgICAgICAgICAgcnByLmMgICAgICAgICAgICAgICAg IEFTVCBvcHRpbWl6YXRpb24KKyAgb3B0aW1pemVSUFJQYXR0ZXJuICAgICAgICAgICAgcnByLmMg ICAgICAgICAgICAgICAgIHBhcnNlIHRyZWUgb3B0aW1pemF0aW9uCiAgIGZpbGxSUFJQYXR0ZXJu ICAgICAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBORkEgZWxlbWVudCBnZW5lcmF0 aW9uCiAgIGZpbmFsaXplUlBSUGF0dGVybiAgICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAg ICBGaW5hbGl6YXRpb24KICAgY29tcHV0ZUFic29yYmFiaWxpdHkgICAgICAgICAgcnByLmMgICAg ICAgICAgICAgICAgIEFic29ycHRpb24gYW5hbHlzaXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwppbmRl eCA5MGUzYTA2OGYwNC4uZTVlMzBkNzlmMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKQEAgLTgy MSw4ICs4MjEsMTEgQEAgbmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LCBib29sICp2YXJNYXRjaGVkKQogCiAJCQlpZiAobWF0Y2hlZCkKIAkJCXsK LQkJCQkvKiBJbmNyZW1lbnQgY291bnQgKi8KLQkJCQlpZiAoY291bnQgPCBSUFJfQ09VTlRfTUFY KQorCQkJCS8qCisJCQkJICogSW5jcmVtZW50IGNvdW50LCBzYXR1cmF0aW5nIGF0IFJQUl9DT1VO VF9JTkYgdG8gYXZvaWQgaW50MzIKKwkJCQkgKiBvdmVyZmxvdzsgYSBzYXR1cmF0ZWQgY291bnQg dGhlbiBjb21wYXJlcyBhcyAidW5ib3VuZGVkIi4KKwkJCQkgKi8KKwkJCQlpZiAoY291bnQgPCBS UFJfQ09VTlRfSU5GKQogCQkJCQljb3VudCsrOwogCiAJCQkJLyogTWF4IGNvbnN0cmFpbnQgc2hv dWxkIG5vdCBiZSBleGNlZWRlZCAqLwpAQCAtODU3LDcgKzg2MCw3IEBAIG5mYV9tYXRjaChXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgYm9vbCAqdmFyTWF0Y2hl ZCkKIAkJCQkJaW50MzIJCWVuZENvdW50ID0gc3RhdGUtPmNvdW50c1tlbmREZXB0aF07CiAKIAkJ CQkJLyogSW5jcmVtZW50IGdyb3VwIGNvdW50ICovCi0JCQkJCWlmIChlbmRDb3VudCA8IFJQUl9D T1VOVF9NQVgpCisJCQkJCWlmIChlbmRDb3VudCA8IFJQUl9DT1VOVF9JTkYpCiAJCQkJCQllbmRD b3VudCsrOwogCQkJCQlBc3NlcnQoZW5kRWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwK IAkJCQkJCSAgIGVuZENvdW50IDw9IGVuZEVsZW0tPm1heCk7CkBAIC05MDAsNyArOTAzLDcgQEAg bmZhX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBi b29sICp2YXJNYXRjaGVkKQogCQkJCQkJc3RhdGUtPmNvdW50c1tlbmREZXB0aF0gPSAwOwogCiAJ CQkJCQkvKiBJbmNyZW1lbnQgb3V0ZXIgZ3JvdXAgY291bnQgKi8KLQkJCQkJCWlmIChvdXRlckNv dW50IDwgUlBSX0NPVU5UX01BWCkKKwkJCQkJCWlmIChvdXRlckNvdW50IDwgUlBSX0NPVU5UX0lO RikKIAkJCQkJCQlvdXRlckNvdW50Kys7CiAJCQkJCQlBc3NlcnQob3V0ZXJFbmQtPm1heCA9PSBS UFJfUVVBTlRJVFlfSU5GIHx8CiAJCQkJCQkJICAgb3V0ZXJDb3VudCA8PSBvdXRlckVuZC0+bWF4 KTsKQEAgLTExODAsNyArMTE4Myw3IEBAIG5mYV9hZHZhbmNlX2VuZChXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKIAogCQkJLyogRU5ELT5FTkQ6IGluY3JlbWVu dCBvdXRlciBFTkQncyBjb3VudCAqLwogCQkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkgJiYK LQkJCQlmZlN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJ CQkJZmZTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJ CWZmU3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdKys7CiAJCX0KIApAQCAtMTIzNSw3ICsx MjM4LDcgQEAgbmZhX2FkdmFuY2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LAogCQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0RWxlbSk7CiAK IAkJLyogRU5ELT5FTkQ6IGluY3JlbWVudCBvdXRlciBFTkQncyBjb3VudCAqLwotCQlpZiAoUlBS RWxlbUlzRW5kKG5leHRFbGVtKSAmJiBzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBS UFJfQ09VTlRfTUFYKQorCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJiBzdGF0ZS0+Y291 bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfSU5GKQogCQkJc3RhdGUtPmNvdW50c1tu ZXh0RWxlbS0+ZGVwdGhdKys7CiAKIAkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwg c3RhdGUsIG5leHRFbGVtLCBjdXJyZW50UG9zKTsKQEAgLTEyNjIsNyArMTI2NSw3IEBAIG5mYV9h ZHZhbmNlX2VuZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwK IAkJbmV4dEVsZW0gPSAmZWxlbWVudHNbZXhpdFN0YXRlLT5lbGVtSWR4XTsKIAogCQkvKiBFTkQt PkVORDogaW5jcmVtZW50IG91dGVyIEVORCdzIGNvdW50ICovCi0JCWlmIChSUFJFbGVtSXNFbmQo bmV4dEVsZW0pICYmIGV4aXRTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09V TlRfTUFYKQorCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJiBleGl0U3RhdGUtPmNvdW50 c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX0lORikKIAkJCWV4aXRTdGF0ZS0+Y291bnRz W25leHRFbGVtLT5kZXB0aF0rKzsKIAogCQkvKiBQcmVwYXJlIGxvb3Agc3RhdGUgKi8KQEAgLTEz NTUsNyArMTM1OCw3IEBAIG5mYV9hZHZhbmNlX3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IFJQUk5GQUNvbnRleHQgKmN0eCwKIAkJCS8qIFdoZW4gZXhpdGluZyBkaXJlY3RseSB0byBhbiBv dXRlciBFTkQsIGluY3JlbWVudCBpdHMgY291bnQgKi8KIAkJCWlmIChSUFJFbGVtSXNFbmQobmV4 dEVsZW0pKQogCQkJewotCQkJCWlmIChjbG9uZVN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRo XSA8IFJQUl9DT1VOVF9NQVgpCisJCQkJaWYgKGNsb25lU3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ ZGVwdGhdIDwgUlBSX0NPVU5UX0lORikKIAkJCQkJY2xvbmVTdGF0ZS0+Y291bnRzW25leHRFbGVt LT5kZXB0aF0rKzsKIAkJCX0KIApAQCAtMTQwNCw3ICsxNDA3LDcgQEAgbmZhX2FkdmFuY2VfdmFy KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQkJICovCiAJ CQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSkKIAkJCXsKLQkJCQlpZiAoc3RhdGUtPmNvdW50 c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCQlpZiAoc3RhdGUtPmNvdW50 c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX0lORikKIAkJCQkJc3RhdGUtPmNvdW50c1tu ZXh0RWxlbS0+ZGVwdGhdKys7CiAJCQl9CiAKQEAgLTE0MzgsNyArMTQ0MSw3IEBAIG5mYV9hZHZh bmNlX3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKIAkJ LyogU2VlIGNvbW1lbnQgYWJvdmU6IGluY3JlbWVudCBvdXRlciBFTkQgY291bnQgZm9yIHF1YW50 aWZpZWQgVkFScyAqLwogCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSkKIAkJewotCQkJaWYg KHN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQlpZiAo c3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX0lORikKIAkJCQlzdGF0 ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jw ci5jCmluZGV4IGViYmE4ZTUwYjFkLi42MjI5MjUwOGFhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcnByLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v cnByLmMKQEAgLTMsMTMgKzMsMTMgQEAKICAqIHJwci5jCiAgKgkgIFJvdyBQYXR0ZXJuIFJlY29n bml0aW9uIHBhdHRlcm4gY29tcGlsYXRpb24gZm9yIHBsYW5uZXIKICAqCi0gKiBUaGlzIGZpbGUg Y29udGFpbnMgZnVuY3Rpb25zIGZvciBvcHRpbWl6aW5nIFJQUiBwYXR0ZXJuIEFTVCBhbmQKKyAq IFRoaXMgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIG9wdGltaXppbmcgdGhlIFJQUiBwYXR0 ZXJuIHBhcnNlIHRyZWUgYW5kCiAgKiBjb21waWxpbmcgaXQgdG8gYSBmbGF0IGVsZW1lbnQgYXJy YXkgZm9yIE5GQSBleGVjdXRpb24gYnkgV2luZG93QWdnLgogICoKICAqIEtleSBjb21wb25lbnRz OgogICogICAxLiBQYXR0ZXJuIE9wdGltaXphdGlvbjogU2ltcGxpZmllcyBwYXR0ZXJucyBiZWZv cmUgY29tcGlsYXRpb24KICAqICAgICAgKGUuZy4sIGZsYXR0ZW4gbmVzdGVkIFNFUS9BTFQsIG1l cmdlIGNvbnNlY3V0aXZlIHZhcnMpCi0gKiAgIDIuIFBhdHRlcm4gQ29tcGlsYXRpb246IENvbnZl cnRzIEFTVCB0byBmbGF0IGVsZW1lbnQgYXJyYXkgZm9yIE5GQQorICogICAyLiBQYXR0ZXJuIENv bXBpbGF0aW9uOiBDb252ZXJ0cyBwYXJzZSB0cmVlIHRvIGZsYXQgZWxlbWVudCBhcnJheSBmb3Ig TkZBCiAgKiAgIDMuIEFic29ycHRpb24gQW5hbHlzaXM6IENvbXB1dGVzIGZsYWdzIGZvciBPKG5e MiktPk8obikgb3B0aW1pemF0aW9uCiAgKgogICogQ29udGV4dCBBYnNvcnB0aW9uIE9wdGltaXph dGlvbjoKQEAgLTk5NSw3ICs5OTUsNyBAQCBjb2xsZWN0RGVmaW5lVmFyaWFibGVzKExpc3QgKmRl ZmluZVZhcmlhYmxlTGlzdCwgY2hhciAqKnZhck5hbWVzKQogCiAvKgogICogc2NhblJQUlBhdHRl cm5SZWN1cnNpdmUKLSAqCQlSZWN1cnNpdmVseSBzY2FuIHBhdHRlcm4gQVNUIChwYXNzIDEgaW50 ZXJuYWwpLgorICoJCVJlY3Vyc2l2ZWx5IHNjYW4gcGF0dGVybiBwYXJzZSB0cmVlIChwYXNzIDEg aW50ZXJuYWwpLgogICoKICAqIENvbGxlY3RzIHVuaXF1ZSB2YXJpYWJsZSBuYW1lcyBhbmQgY291 bnRzIGVsZW1lbnRzIHdoaWxlIHRyYWNraW5nIGRlcHRoLgogICogVmFyaWFibGVzIGZyb20gREVG SU5FIGNsYXVzZSBhcmUgYWxyZWFkeSBpbiB2YXJOYW1lczsgdGhpcyBhZGRzIGFueQpAQCAtMTA5 Miw3ICsxMDkyLDcgQEAgc2NhblJQUlBhdHRlcm5SZWN1cnNpdmUoUlBSUGF0dGVybk5vZGUgKm5v ZGUsIGNoYXIgKip2YXJOYW1lcywgaW50ICpudW1WYXJzLAogCiAvKgogICogc2NhblJQUlBhdHRl cm4KLSAqCQlTY2FuIHBhdHRlcm4gQVNUIChwYXNzIDEgZW50cnkgcG9pbnQpLgorICoJCVNjYW4g cGF0dGVybiBwYXJzZSB0cmVlIChwYXNzIDEgZW50cnkgcG9pbnQpLgogICoKICAqIENvbGxlY3Rz IHVuaXF1ZSB2YXJpYWJsZSBuYW1lcyAoYXBwZW5kaW5nIHRvIHRob3NlIGZyb20gREVGSU5FIGNs YXVzZSksCiAgKiBjb3VudHMgdG90YWwgZWxlbWVudHMgKGluY2x1ZGluZyBGSU4gbWFya2VyKSwg YW5kIHRyYWNrcyBtYXhpbXVtIGRlcHRoLgpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgZmlsbFJQUlBh dHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LCBpbnQgKmlk eCwgUlBSRGVwdGggZGUKICAqIGZpbGxSUFJQYXR0ZXJuQWx0CiAgKgkJRmlsbCBhbiBBTFQgcGF0 dGVybiBhbmQgaXRzIGFsdGVybmF0aXZlcy4KICAqCi0gKiBDcmVhdGVzIEFMVF9TVEFSVCBtYXJr ZXIsIGZpbGxzIGVhY2ggYWx0ZXJuYXRpdmUgYXQgaW5jcmVhc2VkIGRlcHRoLAorICogQ3JlYXRl cyB0aGUgQUxUIG1hcmtlciwgZmlsbHMgZWFjaCBhbHRlcm5hdGl2ZSBhdCBpbmNyZWFzZWQgZGVw dGgsCiAgKiBzZXRzIGp1bXAgcG9pbnRlcnMgZm9yIGJhY2t0cmFja2luZywgYW5kIG5leHQgcG9p bnRlcnMgZm9yIHN1Y2Nlc3NmdWwgcGF0aHMuCiAgKgogICogUmV0dXJucyB0cnVlIGlmIGFueSBi cmFuY2ggaXMgbnVsbGFibGUgKE9SIHNlbWFudGljczogb25lIG51bGxhYmxlCkBAIC0xMzgzLDkg KzEzODMsMTAgQEAgZmlsbFJQUlBhdHRlcm5BbHQoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBh dHRlcm4gKnBhdCwgaW50ICppZHgsIFJQUkRlcHRoIGRlcHQKIAogLyoKICAqIGZpbGxSUFJQYXR0 ZXJuCi0gKgkJRmlsbCBwYXR0ZXJuIGVsZW1lbnRzIGFycmF5IGZyb20gQVNUIChwYXNzIDIpLgor ICoJCUZpbGwgcGF0dGVybiBlbGVtZW50cyBhcnJheSBmcm9tIHBhcnNlIHRyZWUgKHBhc3MgMiku CiAgKgotICogUmVjdXJzaXZlbHkgdHJhdmVyc2VzIEFTVCBhbmQgcG9wdWxhdGVzIHByZS1hbGxv Y2F0ZWQgZWxlbWVudHMgYXJyYXkuCisgKiBSZWN1cnNpdmVseSB0cmF2ZXJzZXMgdGhlIHBhcnNl IHRyZWUgYW5kIHBvcHVsYXRlcyBwcmUtYWxsb2NhdGVkIGVsZW1lbnRzCisgKiBhcnJheS4KICAq IERpc3BhdGNoZXMgdG8gdHlwZS1zcGVjaWZpYyBmaWxsIGZ1bmN0aW9ucy4KICAqCiAgKiBSZXR1 cm5zIHRydWUgaWYgdGhlIHBhdHRlcm4gaXMgbnVsbGFibGUgKGNhbiBtYXRjaCB6ZXJvIHJvd3Mp LgpAQCAtMTc2Nyw3ICsxNzY4LDcgQEAgY29tcHV0ZUFic29yYmFiaWxpdHlSZWN1cnNpdmUoUlBS UGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBzdGFydElkeCwKIAl9CiAJZWxzZQogCXsKLQkJ LyogU2hvdWxkIG5ldmVyIHJlYWNoIEVORCAtIHN0cnVjdHVyYWwgaW52YXJpYW50IG9mIHBhdHRl cm4gQVNUICovCisJCS8qIFNob3VsZCBuZXZlciByZWFjaCBFTkQgLSBzdHJ1Y3R1cmFsIGludmFy aWFudCBvZiBwYXR0ZXJuIHBhcnNlIHRyZWUgKi8KIAkJQXNzZXJ0KCFSUFJFbGVtSXNFbmQoZWxl bSkpOwogCiAJCS8qIE5vbi1BTFQsIG5vbi1CRUdJTjogY2hlY2sgaWYgdW5ib3VuZGVkIHN0YXJ0 ICovCkBAIC0xODk0LDEzICsxODk1LDEzIEBAIHZhbGlkYXRlX3Jwcl9kZWZpbmVfdm9sYXRpbGl0 eShMaXN0ICpkZWZpbmVDbGF1c2UpCiAKIC8qCiAgKiBidWlsZFJQUlBhdHRlcm4KLSAqCQlDb21w aWxlIHBhdHRlcm4gQVNUIHRvIGZsYXQgYnl0ZWNvZGUgYXJyYXkuCisgKgkJQ29tcGlsZSBwYXR0 ZXJuIHBhcnNlIHRyZWUgdG8gZmxhdCBieXRlY29kZSBhcnJheS4KICAqCiAgKiBDb21waWxhdGlv biBwaGFzZXM6Ci0gKiAgIDEuIE9wdGltaXplIEFTVCAoZmxhdHRlbiwgbWVyZ2UsIGRlZHVwbGlj YXRlKQorICogICAxLiBPcHRpbWl6ZSBwYXJzZSB0cmVlIChmbGF0dGVuLCBtZXJnZSwgZGVkdXBs aWNhdGUpCiAgKiAgIDIuIFNjYW46IGNvbGxlY3QgdmFyaWFibGVzLCBjb3VudCBlbGVtZW50cyAo cGFzcyAxKQogICogICAzLiBBbGxvY2F0ZSByZXN1bHQgc3RydWN0dXJlCi0gKiAgIDQuIEZpbGwg ZWxlbWVudHMgZnJvbSBBU1QgKHBhc3MgMikKKyAqICAgNC4gRmlsbCBlbGVtZW50cyBmcm9tIHBh cnNlIHRyZWUgKHBhc3MgMikKICAqICAgNS4gRmluYWxpemUgcGF0dGVybiBzdHJ1Y3R1cmUKICAq ICAgNi4gQ29tcHV0ZSBjb250ZXh0IGFic29ycHRpb24gZWxpZ2liaWxpdHkKICAqCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCA0YWU5NTFhYWViYS4uNmViMDFlYTdmMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTc3MzQs OSArMTc3MzQsMTIgQEAgcm93X3BhdHRlcm5fcHJpbWFyeToKIAkJOwogCiByb3dfcGF0dGVybl9x dWFudGlmaWVyX29wdDoKLQkJCS8qIEVNUFRZIC0gbm8gcXVhbnRpZmllciBtZWFucyBleGFjdGx5 IG9uY2U7IEAkIGlzIHVudXNlZCBzaW5jZQotCQkJICogbWluPW1heD0xIG5ldmVyIHByb2R1Y2Vz IGFuIGVycm9yICovCisJCQkvKkVNUFRZKi8KIAkJCQl7CisJCQkJCS8qCisJCQkJCSAqIG5vIHF1 YW50aWZpZXIgbWVhbnMgZXhhY3RseSBvbmNlOyBAJCBpcyB1bnVzZWQgc2luY2UKKwkJCQkJICog bWluPW1heD0xIG5ldmVyIHByb2R1Y2VzIGFuIGVycm9yCisJCQkJCSAqLwogCQkJCQkkJCA9IChO b2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIDEsIGZhbHNlLCBAJCk7CiAJCQkJfQogCQkJfCAn KicKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jdGUuYwppbmRleCAzZTQ5M2JlYmEwYi4uYzM1ZmVlYWU2ZmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfY3RlLmMKQEAgLTEzMDMsOSArMTMwMyw3IEBAIGNoZWNrV2VsbEZvcm1l ZFNlbGVjdFN0bXQoU2VsZWN0U3RtdCAqc3RtdCwgQ3RlU3RhdGUgKmNzdGF0ZSkKIC8qCiAgKiBj b250YWluX3Jwcl93YWxrZXIKICAqCSAgUmV0dXJucyB0cnVlIGlmIHRoZSByYXcgcGFyc2UgdHJl ZSBjb250YWlucyBhbnkgPHJvdyBwYXR0ZXJuIGNvbW1vbgotICoJICBzeW50YXg+IC0tIGkuZS4s IGFueSBXaW5kb3dEZWYgd2l0aCBQQVRURVJOL0RFRklORSBhdHRhY2hlZC4gIFVzZWQKLSAqCSAg YnkgdHJhbnNmb3JtV2l0aENsYXVzZSgpIHRvIGVuZm9yY2UgSVNPL0lFQyA5MDc1LTI6MjAxNiA3 LjE3IFNSIDMpZikKLSAqCSAgb24gV0lUSCBSRUNVUlNJVkUgZWxlbWVudHMuCisgKgkgIHN5bnRh eD4gLS0gaS5lLiwgYW55IFdpbmRvd0RlZiB3aXRoIFBBVFRFUk4vREVGSU5FIGF0dGFjaGVkLgog ICovCiBzdGF0aWMgYm9vbAogY29udGFpbl9ycHJfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNv bnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5kZXggN2MyMDFkNTUxNjQuLmVkMTIxOTBjYjA2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC04LDcgKzgsNyBAQAogICogICAtIFZhbGlkYXRl cyBmcmFtZSBvcHRpb25zIChtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XLCBubyBFWENMVURFKQog ICogICAtIFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNvdW50IChtYXggUlBSX1ZBUklEX01B WCArIDEpCiAgKiAgIC0gVHJhbnNmb3JtcyBERUZJTkUgY2xhdXNlCi0gKiAgIC0gU3RvcmVzIHRo ZSBQQVRURVJOIEFTVCBhbmQgdGhlIFNLSVAgVE8vSU5JVElBTCBmbGFncworICogICAtIFN0b3Jl cyB0aGUgUEFUVEVSTiBwYXJzZSB0cmVlIGFuZCB0aGUgU0tJUCBUTy9JTklUSUFMIGZsYWdzCiAg KgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0 aWMgYm9vbCBkZWZpbmVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogICogICAt IFNldCBBRlRFUiBNQVRDSCBTS0lQIFRPIGZsYWcKICAqICAgLSBTZXQgU0VFSy9JTklUSUFMIGZs YWcKICAqICAgLSBUcmFuc2Zvcm1zIERFRklORSBjbGF1c2UgaW50byBUYXJnZXRFbnRyeSBsaXN0 Ci0gKiAgIC0gU3RvcmVzIFBBVFRFUk4gQVNUIGZvciBkZXBhcnNpbmcgKG9wdGltaXphdGlvbiBo YXBwZW5zIGluIHBsYW5uZXIpCisgKiAgIC0gU3RvcmVzIFBBVFRFUk4gcGFyc2UgdHJlZSBmb3Ig ZGVwYXJzaW5nIChvcHRpbWl6YXRpb24gaGFwcGVucyBpbiBwbGFubmVyKQogICoKICAqIFJldHVy bnMgZWFybHkgaWYgd2luZGVmIGhhcyBubyBycENvbW1vblN5bnRheCAobm9uLVJQUiB3aW5kb3cp LgogICovCkBAIC0xODAsNyArMTgwLDcgQEAgdHJhbnNmb3JtUlBSKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAJLyogVHJhbnNmb3JtIERF RklORSBjbGF1c2UgaW50byBsaXN0IG9mIFRhcmdldEVudHJ5J3MgKi8KIAl3Yy0+ZGVmaW5lQ2xh dXNlID0gdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKHBzdGF0ZSwgd2luZGVmLCB0YXJnZXRsaXN0KTsK IAotCS8qIFN0b3JlIFBBVFRFUk4gQVNUIGZvciBkZXBhcnNpbmcgKi8KKwkvKiBTdG9yZSBQQVRU RVJOIHBhcnNlIHRyZWUgZm9yIGRlcGFyc2luZyAqLwogCXdjLT5ycFBhdHRlcm4gPSB3aW5kZWYt PnJwQ29tbW9uU3ludGF4LT5ycFBhdHRlcm47CiB9CiAKQEAgLTI2NCwxOSArMjY0LDYgQEAgdmFs aWRhdGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9k ZSAqbm9kZSwKICAqIHRyYW5zZm9ybURlZmluZUNsYXVzZQogICoJCVByb2Nlc3MgREVGSU5FIGNs YXVzZSBhbmQgdHJhbnNmb3JtIFJlc1RhcmdldCBpbnRvIGxpc3Qgb2YgVGFyZ2V0RW50cnkuCiAg KgotICogRmlyc3Q6Ci0gKiAgIDEuIFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNvdW50IGFu ZCBjb2xsZWN0cyBSUFIgdmFyaWFibGUgbmFtZXMKLSAqICAgMi4gUmVqZWN0cyBERUZJTkUgdmFy aWFibGVzIG5vdCB1c2VkIGluIFBBVFRFUk4KLSAqICAgMy4gQ2hlY2tzIGZvciBkdXBsaWNhdGUg dmFyaWFibGUgbmFtZXMgaW4gREVGSU5FIGNsYXVzZQotICoKLSAqIFRoZW4gZm9yIGVhY2ggREVG SU5FIHZhcmlhYmxlOgotICogICA0LiBUcmFuc2Zvcm1zIGV4cHJlc3Npb24gdmlhIHRyYW5zZm9y bUV4cHIoKSBhbmQgY29lcmNlcyBpdCB0byBib29sZWFuCi0gKiAgIDUuIENyZWF0ZXMgZGVmaW5l Q2xhdXNlIGVudHJ5IHdpdGggcHJvcGVyIHJlc25hbWUgKHBhdHRlcm4gdmFyaWFibGUgbmFtZSkK LSAqICAgNi4gRW5zdXJlcyByZWZlcmVuY2VkIFZhciBub2RlcyBhcmUgcHJlc2VudCBpbiB0aGUg cXVlcnkgdGFyZ2V0bGlzdCAodmlhCi0gKiAgICAgIHB1bGxfdmFyX2NsYXVzZSkKLSAqCi0gKiBG aW5hbGx5IG1hcmtzIGNvbHVtbiBvcmlnaW5zIGFuZCBhc3NpZ25zIGNvbGxhdGlvbiBpbmZvcm1h dGlvbi4KLSAqCiAgKiBOb3RlOiBWYXJpYWJsZXMgbm90IGluIERFRklORSBhcmUgZXZhbHVhdGVk IGFzIFRSVUUgYnkgdGhlIGV4ZWN1dG9yLgogICogVmFyaWFibGVzIGluIERFRklORSBidXQgbm90 IGluIFBBVFRFUk4gYXJlIHJlamVjdGVkIGFzIGFuIGVycm9yLgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAppbmRleCA5NDdlNjY4MDIwZS4uZjI4MjE1YjhlODMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKQEAgLTYyMSw3ICs2MjEsNyBAQCB0eXBlZGVmIGVudW0gUlBSUGF0dGVybk5vZGVUeXBlCiB9 IFJQUlBhdHRlcm5Ob2RlVHlwZTsKIAogLyoKLSAqIFJQUlBhdHRlcm5Ob2RlIC0gUm93IFBhdHRl cm4gUmVjb2duaXRpb24gcGF0dGVybiBBU1Qgbm9kZQorICogUlBSUGF0dGVybk5vZGUgLSBSb3cg UGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIHBhcnNlIHRyZWUgbm9kZQogICovCiB0eXBlZGVm IHN0cnVjdCBSUFJQYXR0ZXJuTm9kZQogewpAQCAtNjMwLDcgKzYzMCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFJQUlBhdHRlcm5Ob2RlCiAJaW50MzIJCW1pbjsJCQkvKiBtaW5pbXVtIHJlcGV0aXRpb25z ICgwIGZvciAqLCA/KSAqLwogCWludDMyCQltYXg7CQkJLyogbWF4aW11bSByZXBldGl0aW9ucyAo UEdfSU5UMzJfTUFYIGZvciAqLCArKSAqLwogCWJvb2wJCXJlbHVjdGFudDsJCS8qIHRydWUgZm9y IHJlbHVjdGFudCAobm9uLWdyZWVkeSkgKi8KLQlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2Vu IGxvY2F0aW9uLCBvciAtMSAqLworCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRp b24sIG9yIC0xIGlmIHVua25vd24gKi8KIAljaGFyCSAgICp2YXJOYW1lOwkJLyogVkFSOiB2YXJp YWJsZSBuYW1lICovCiAJTGlzdAkgICAqY2hpbGRyZW47CQkvKiBTRVEsIEFMVCwgR1JPVVA6IGNo aWxkIG5vZGVzICovCiAKQEAgLTY1MiwxMCArNjUyLDEwIEBAIHR5cGVkZWYgc3RydWN0IFJQQ29t bW9uU3ludGF4CiAJUlBTa2lwVG8JcnBTa2lwVG87CQkvKiBSb3cgUGF0dGVybiBBRlRFUiBNQVRD SCBTS0lQIHR5cGUgKi8KIAlib29sCQlpbml0aWFsOwkJLyogdHJ1ZSBpZiA8cm93IHBhdHRlcm4g aW5pdGlhbCBvciBzZWVrPiBpcwogCQkJCQkJCQkgKiBpbml0aWFsICovCi0JUlBSUGF0dGVybk5v ZGUgKnJwUGF0dGVybjsJLyogUEFUVEVSTiBjbGF1c2UgQVNUICovCisJUlBSUGF0dGVybk5vZGUg KnJwUGF0dGVybjsJLyogUEFUVEVSTiBwYXJzZSB0cmVlICovCiAJTGlzdAkgICAqcnBEZWZzOwkJ CS8qIHJvdyBwYXR0ZXJuIGRlZmluaXRpb25zIGNsYXVzZSAobGlzdCBvZgogCQkJCQkJCQkgKiBS ZXNUYXJnZXQpICovCi0JUGFyc2VMb2MJbG9jYXRpb247CQkvKiBQQVRURVJOIGtleXdvcmQgbG9j YXRpb24sIG9yIC0xICovCisJUGFyc2VMb2MJbG9jYXRpb247CQkvKiBQQVRURVJOIGtleXdvcmQg bG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUlBDb21tb25TeW50YXg7CiAKIC8qCkBA IC0xNzI3LDcgKzE3MjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBHcm91cGluZ1NldAogICogb3B0aW9u cyBhcmUgbmV2ZXIgY29waWVkLCBwZXIgc3BlYy4KICAqICJkZWZpbmVDbGF1c2UiIGlzIFJvdyBQ YXR0ZXJuIFJlY29nbml0aW9uIERFRklORSBjbGF1c2UgKGxpc3Qgb2YKICAqIFRhcmdldEVudHJ5 KS4gVGFyZ2V0RW50cnkucmVzbmFtZSByZXByZXNlbnRzIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24K LSAqIHZhcmlhYmxlIG5hbWUuICJycFBhdHRlcm4iIHJlcHJlc2VudHMgUEFUVEVSTiBjbGF1c2Ug YXMgYW4gQVNUIHRyZWUKKyAqIHZhcmlhYmxlIG5hbWUuICJycFBhdHRlcm4iIHJlcHJlc2VudHMg dGhlIFBBVFRFUk4gY2xhdXNlIGFzIGEgcGFyc2UgdHJlZQogICogKFJQUlBhdHRlcm5Ob2RlKS4K ICAqCiAgKi8KQEAgLTE3NjMsNyArMTc2Myw3IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0NsYXVz ZQogCQkJCQkJCQkgKiBpbml0aWFsICovCiAJLyogUm93IFBhdHRlcm4gREVGSU5FIGNsYXVzZSAo bGlzdCBvZiBUYXJnZXRFbnRyeSkgKi8KIAlMaXN0CSAgICpkZWZpbmVDbGF1c2U7Ci0JLyogUm93 IFBhdHRlcm4gUEFUVEVSTiBjbGF1c2UgQVNUICovCisJLyogUm93IFBhdHRlcm4gUEFUVEVSTiBw YXJzZSB0cmVlICovCiAJUlBSUGF0dGVybk5vZGUgKnJwUGF0dGVybjsKIH0gV2luZG93Q2xhdXNl OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvcnByLmgKaW5kZXggODNkM2NkMjliMDcuLmY1NDYyYWIyYTdjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3Jwci5oCkBAIC0yNyw4ICsyNywxNSBAQAogICogYmVmb3JlIHJlbGVhc2UuCiAgKi8KICNk ZWZpbmUgUlBSX1ZBUklEX01BWAkJMHhFRgkvKiBwYXR0ZXJuIHZhcmlhYmxlcyBhcmUgMCB0byAw eEVGICovCisKKy8qCisgKiBSUFJfQ09VTlRfSU5GIGlzIHRoZSB2YWx1ZSBhIHJ1bnRpbWUgcmVw ZXRpdGlvbiBjb3VudCBzYXR1cmF0ZXMgYXQgdG8gYXZvaWQKKyAqIGludDMyIG92ZXJmbG93IChz ZWUgdGhlIGNvdW50KysgZ3VhcmQgaW4gbmZhX21hdGNoKS4gIEl0IGlzIGRlZmluZWQgYXMKKyAq IFJQUl9RVUFOVElUWV9JTkYgc28gdGhhdCBhIHNhdHVyYXRlZCBjb3VudCBjb21wYXJlcyBhcyAi dW5ib3VuZGVkIiwganVzdAorICogbGlrZSBhbiB1bmJvdW5kZWQgcXVhbnRpZmllcidzIG1heC4K KyAqLwogI2RlZmluZSBSUFJfUVVBTlRJVFlfSU5GCVBHX0lOVDMyX01BWAkvKiB1bmJvdW5kZWQg cXVhbnRpZmllciAqLwotI2RlZmluZSBSUFJfQ09VTlRfTUFYCQlQR19JTlQzMl9NQVgJLyogbWF4 IHJ1bnRpbWUgY291bnQgKE5GQSBzdGF0ZSkgKi8KKyNkZWZpbmUgUlBSX0NPVU5UX0lORgkJUlBS X1FVQU5USVRZX0lORgogI2RlZmluZSBSUFJfRUxFTUlEWF9NQVgJCVBHX0lOVDE2X01BWAkvKiBt YXggcGF0dGVybiBlbGVtZW50cyAqLwogI2RlZmluZSBSUFJfRUxFTUlEWF9JTlZBTElECSgoUlBS RWxlbUlkeCkgLTEpCS8qIGludmFsaWQgaW5kZXggKi8KICNkZWZpbmUgUlBSX0RFUFRIX01BWAkJ KFBHX1VJTlQ4X01BWCAtIDEpCS8qIG1heCBwYXR0ZXJuIG5lc3RpbmcgZGVwdGg6CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IGNjODZkMGFhZTMwLi44Njcy YjRjMzA1NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFp bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAg LTU1OTgsMTMgKzU1OTgsMTUgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldl9vcHRfbWl4ZWQ7CiAtLSBmaW5kX3dpbmRvd19ydW5fY29uZGl0aW9ucygpIHB1c2hlcyBX SEVSRSBmaWx0ZXJzIG9uIG1vbm90b25pYyB3aW5kb3cKIC0tIGZ1bmN0aW9ucyBpbnRvIFdpbmRv d0FnZyBhcyBSdW4gQ29uZGl0aW9ucyBmb3IgZWFybHkgdGVybWluYXRpb24uCiAtLSBXaXRoIFJQ UidzIHJlcXVpcmVkIGZyYW1lIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RAotLS0gRk9MTE9XSU5HKSwgdGhlIG1vbm90b25pYyBkaXJlY3Rpb24gZGV0ZXJtaW5lcyB3aGlj aCBvcGVyYXRvcnMgdHJpZ2dlcgotLS0gUnVuIENvbmRpdGlvbiBwdXNoZG93bjoKKy0tIEZPTExP V0lORyksIHRoZSBtb25vdG9uaWMgZGlyZWN0aW9uIG9mIHRoZSB3aW5kb3cgZnVuY3Rpb24gZGV0 ZXJtaW5lcworLS0gd2hpY2ggY29tcGFyaXNvbiBvcGVyYXRvcnMgYWxsb3cgcHVzaGRvd246CiAt LSAgIElOQ1JFQVNJTkcgKDw9KTogcm93X251bWJlciwgcmFuaywgZGVuc2VfcmFuaywgcGVyY2Vu dF9yYW5rLAogLS0gICAgICAgICAgICAgICAgICAgIGN1bWVfZGlzdCwgbnRpbGUKLS0tICAgREVD UkVBU0lORyAoPik6ICBjb3VudCgqKSAodmlhIGludDhpbmMsIEVORF9VTkJPVU5ERURfRk9MTE9X SU5HKQotLS0gUlBSIHdpbmRvdyBmdW5jdGlvbiByZXN1bHRzIGFyZSBtYXRjaC1kZXBlbmRlbnQs IG5vdCBtb25vdG9uaWMuCi0tLSBUZXN0IHdpdGggY291bnQoKikgPiAwIGFzIHJlcHJlc2VudGF0 aXZlIGNhc2UuCistLSAgIERFQ1JFQVNJTkcgKD4pOiAgY291bnQoKikuICBBcyB0aGUgY3VycmVu dCByb3cgYWR2YW5jZXMsIHRoZSBmcmFtZQorLS0gICAgICAgICAgICAgICAgICAgICh3aGljaCBl bmRzIGF0IFVOQk9VTkRFRCBGT0xMT1dJTkcpIHNocmlua3MsIHNvIHRoZQorLS0gICAgICAgICAg ICAgICAgICAgIGNvdW50IGRlY3JlYXNlcy4KKy0tIFJQUiB3aW5kb3cgZnVuY3Rpb24gcmVzdWx0 cyBhcmUgbWF0Y2gtZGVwZW5kZW50LCBub3QgbW9ub3RvbmljLCBzbyB0aGlzCistLSBwdXNoZG93 biBkb2VzIG5vdCBhcHBseS4gIFRlc3Qgd2l0aCBjb3VudCgqKSA+IDAgYXMgYSByZXByZXNlbnRh dGl2ZSBjYXNlLgogLS0KIC0tIFdpdGhvdXQgUlBSOiBjb3VudCgqKSA+IDAgaXMgcHVzaGVkIGRv d24gYXMgUnVuIENvbmRpdGlvbgogRVhQTEFJTiAoQ09TVFMgT0ZGKQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX2V4cGxhaW4uc3FsCmluZGV4IDI5N2NhNzhkNTRiLi4xMTU0MDJlMzA0ZCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbApAQCAtMzE3NCwxMyArMzE3NCwxNSBAQCBFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2X29wdF9taXhlZDsKIC0tIGZpbmRfd2lu ZG93X3J1bl9jb25kaXRpb25zKCkgcHVzaGVzIFdIRVJFIGZpbHRlcnMgb24gbW9ub3RvbmljIHdp bmRvdwogLS0gZnVuY3Rpb25zIGludG8gV2luZG93QWdnIGFzIFJ1biBDb25kaXRpb25zIGZvciBl YXJseSB0ZXJtaW5hdGlvbi4KIC0tIFdpdGggUlBSJ3MgcmVxdWlyZWQgZnJhbWUgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVECi0tLSBGT0xMT1dJTkcpLCB0aGUgbW9ub3Rv bmljIGRpcmVjdGlvbiBkZXRlcm1pbmVzIHdoaWNoIG9wZXJhdG9ycyB0cmlnZ2VyCi0tLSBSdW4g Q29uZGl0aW9uIHB1c2hkb3duOgorLS0gRk9MTE9XSU5HKSwgdGhlIG1vbm90b25pYyBkaXJlY3Rp b24gb2YgdGhlIHdpbmRvdyBmdW5jdGlvbiBkZXRlcm1pbmVzCistLSB3aGljaCBjb21wYXJpc29u IG9wZXJhdG9ycyBhbGxvdyBwdXNoZG93bjoKIC0tICAgSU5DUkVBU0lORyAoPD0pOiByb3dfbnVt YmVyLCByYW5rLCBkZW5zZV9yYW5rLCBwZXJjZW50X3JhbmssCiAtLSAgICAgICAgICAgICAgICAg ICAgY3VtZV9kaXN0LCBudGlsZQotLS0gICBERUNSRUFTSU5HICg+KTogIGNvdW50KCopICh2aWEg aW50OGluYywgRU5EX1VOQk9VTkRFRF9GT0xMT1dJTkcpCi0tLSBSUFIgd2luZG93IGZ1bmN0aW9u IHJlc3VsdHMgYXJlIG1hdGNoLWRlcGVuZGVudCwgbm90IG1vbm90b25pYy4KLS0tIFRlc3Qgd2l0 aCBjb3VudCgqKSA+IDAgYXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KKy0tICAgREVDUkVBU0lORyAo Pik6ICBjb3VudCgqKS4gIEFzIHRoZSBjdXJyZW50IHJvdyBhZHZhbmNlcywgdGhlIGZyYW1lCist LSAgICAgICAgICAgICAgICAgICAgKHdoaWNoIGVuZHMgYXQgVU5CT1VOREVEIEZPTExPV0lORykg c2hyaW5rcywgc28gdGhlCistLSAgICAgICAgICAgICAgICAgICAgY291bnQgZGVjcmVhc2VzLgor LS0gUlBSIHdpbmRvdyBmdW5jdGlvbiByZXN1bHRzIGFyZSBtYXRjaC1kZXBlbmRlbnQsIG5vdCBt b25vdG9uaWMsIHNvIHRoaXMKKy0tIHB1c2hkb3duIGRvZXMgbm90IGFwcGx5LiAgVGVzdCB3aXRo IGNvdW50KCopID4gMCBhcyBhIHJlcHJlc2VudGF0aXZlIGNhc2UuCiAtLQogCiAtLSBXaXRob3V0 IFJQUjogY291bnQoKikgPiAwIGlzIHB1c2hlZCBkb3duIGFzIFJ1biBDb25kaXRpb24KLS0gCjIu NTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0013-doc-nav-offset.patch" Content-Disposition: attachment; filename="v50-0013-doc-nav-offset.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmfvz21 RnJvbSA0YWJmMTVmOTM1NGI0ODU3YTcwNDc3MmQ5ZTFlZGYxNjdiYzA1ODZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDE5IEp1biAyMDI2IDE0OjE3OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjIv MjldIERvY3VtZW50IGV2YWxfbmF2X29mZnNldF9oZWxwZXIncyBOVUxML25lZ2F0aXZlCiBvZmZz ZXQgaGFuZGxpbmcKCmV2YWxfbmF2X29mZnNldF9oZWxwZXIgcHJlLWV2YWx1YXRlcyBhIG5hdmln YXRpb24gb2Zmc2V0IGF0IGV4ZWN1dG9yIGluaXQKdG8gc2l6ZSB0aGUgZnJhbWUgdHJpbSwgcmV0 dXJuaW5nIDAgZm9yIGEgTlVMTCBvciBuZWdhdGl2ZSBvZmZzZXQgcmF0aGVyCnRoYW4gcmVqZWN0 aW5nIGl0LiAgVGhlIGNvbW1lbnQgZGlkIG5vdCBzYXkgd2h5LCBsZWF2aW5nIHRoZSBwdXJwb3Nl IG9mIHRoZQpmdW5jdGlvbiBhbmQgb2YgdGhvc2UgYnJhbmNoZXMgdW5jbGVhci4KCkV4cGxhaW4g dGhhdCBhIE5VTEwgb3IgbmVnYXRpdmUgb2Zmc2V0IGlzIGNhdWdodCBwZXIgcm93IG9uIHRoZSBu YXZpZ2F0aW9uCnBhdGggdGhhdCBjb25zdW1lcyBpdCwgd2hpY2ggZXJyb3JzIG91dCBiZWZvcmUg bmF2aWdhdGlvbiBwcm9kdWNlcyBhbnkKcmVzdWx0LCBzbyB0aGUgdHJpbSB2YWx1ZSBjb21wdXRl ZCBoZXJlIGlzIG5ldmVyIHVzZWQuICBUaGUgYnJhbmNoZXMgYXJlCnJlYWNoYWJsZSAtLSBhIG5h dmlnYXRpb24gb2Zmc2V0IGNhbiBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IHN1Y2ggYXMgYSBQYXJh bQotLSBhbmQgYXJlIGFscmVhZHkgY292ZXJlZCBieSB0aGUgUFJFVihwcmljZSwgJDEpIHRlc3Rz IGluIHJwci5zcWwsIHNvIHRoZXkKbmVlZCBuZWl0aGVyIGEgbmV3IHRlc3Qgbm9yIGFuIGFzc2Vy dGlvbi4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgfCAxMyArKysr KysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA4MTlhZDgxNGJmNS4uZWIx ZDYxNmI0OWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTM5ODUsMTAg KzM5ODUsMTUgQEAgcHV0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBw b3MsIGludCBhcmdubywgYm9vbCBpc251bGwpCiAKIC8qCiAgKiBldmFsX25hdl9vZmZzZXRfaGVs cGVyCi0gKgkJRXZhbHVhdGUgYW4gb2Zmc2V0IGV4cHJlc3Npb24gYXQgZXhlY3V0b3IgaW5pdCB0 aW1lIGZvciB0cmltCi0gKgkJb3B0aW1pemF0aW9uLiAgUmV0dXJucyB0aGUgb2Zmc2V0IHZhbHVl LCBvciAwIGZvciBOVUxML25lZ2F0aXZlCi0gKgkJKHRoZXNlIHdpbGwgY2F1c2UgYSBydW50aW1l IGVycm9yIGR1cmluZyBhY3R1YWwgbmF2aWdhdGlvbiwgc28gdGhlCi0gKgkJdHJpbSB2YWx1ZSBp cyBpcnJlbGV2YW50KS4KKyAqCQlQcmUtZXZhbHVhdGUgYSBuYXZpZ2F0aW9uIG9mZnNldCBleHBy ZXNzaW9uIGF0IGV4ZWN1dG9yIGluaXQgdGltZSwgdG8KKyAqCQlib3VuZCBob3cgZmFyIG5hdmln YXRpb24gY2FuIHJlYWNoICh3aGljaCBzaXplcyB0aGUgZnJhbWUgdHJpbSkuCisgKgkJUmV0dXJu cyB0aGUgb2Zmc2V0IHZhbHVlLCBvciAwIGZvciBhIE5VTEwgb3IgbmVnYXRpdmUgb2Zmc2V0Lgor ICoKKyAqIFRoZSBvZmZzZXQgaXMgbm90IHZhbGlkYXRlZCBoZXJlLiAgQSBOVUxMIG9yIG5lZ2F0 aXZlIHZhbHVlIGlzIGNhdWdodCBsYXRlciwKKyAqIHBlciByb3csIG9uIHRoZSBuYXZpZ2F0aW9u IHBhdGggdGhhdCBjb25zdW1lcyBpdCAoc2VlIEVFT1BfUlBSX05BVl9TRVQgaW4KKyAqIGV4ZWNF eHBySW50ZXJwLmMpLCB3aGljaCBlcnJvcnMgb3V0IGJlZm9yZSBuYXZpZ2F0aW9uIHByb2R1Y2Vz IGFueSByZXN1bHQ7CisgKiB0aGUgdHJpbSBzaXppbmcgY29tcHV0ZWQgZnJvbSBzdWNoIGFuIG9m ZnNldCBpcyB0aGVyZWZvcmUgbmV2ZXIgdXNlZCwgYW5kIDAKKyAqIGlzIHJldHVybmVkIGFzIGEg aGFybWxlc3MgcGxhY2Vob2xkZXIuCiAgKi8KIHN0YXRpYyBpbnQ2NAogZXZhbF9uYXZfb2Zmc2V0 X2hlbHBlcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIEV4cHIgKm9mZnNldF9leHByLAotLSAK Mi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0014-unbounded-quantifier-sentinel.patch" Content-Disposition: attachment; filename="v50-0014-unbounded-quantifier-sentinel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmhvy22 RnJvbSBkNTFmMmY1NWQ0ZGE5MmZiNGY0YzZlMDg4MGVlNDkzNjFiNDhlMTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDIyIEp1biAyMDI2IDIyOjQ2OjI2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjMv MjldIFRpZHkgdXAgdGhlIHJvdyBwYXR0ZXJuIHVuYm91bmRlZC1xdWFudGlmaWVyCiBzZW50aW5l bAoKVGhlIGdyYW1tYXIgYW5kIHBsYW5uZXIgc3BlbGxlZCB0aGUgdW5ib3VuZGVkIHF1YW50aWZp ZXIgYm91bmQgYXMgYSBiYXJlClBHX0lOVDMyX01BWCwgd2hpbGUgdGhlIGV4ZWN1dG9yIGFscmVh ZHkgdXNlZCBSUFJfUVVBTlRJVFlfSU5GIGZvciB0aGUKc2FtZSB2YWx1ZS4gIFVzZSBSUFJfUVVB TlRJVFlfSU5GIG9uIHRoZSBwYXJzZXIgYW5kIHBsYW5uZXIgc2lkZSBhcyB3ZWxsCnNvIGV2ZXJ5 IHN0YWdlIHNoYXJlcyBvbmUgc2VudGluZWw7IGdyYW0ueSBrZWVwcyBhIGxvY2FsIGNvcHkgb2Yg dGhlCm1hY3JvIHRvIGF2b2lkIGluY2x1ZGluZyB0aGUgcGxhbm5lciBoZWFkZXIuCgpXaXRoIHRo ZSBwYXJzZXIgZW1pdHRpbmcgUlBSX1FVQU5USVRZX0lORiBkaXJlY3RseSwgdGhlIGV4cGxpY2l0 ClBHX0lOVDMyX01BWC10by1SUFJfUVVBTlRJVFlfSU5GIG1hcHBpbmcgaW4gZmlsbFJQUlBhdHRl cm4qIGJlY29tZXMgYW4KaWRlbnRpdHkgYW5kIGlzIHJlbW92ZWQsIGFuZCB0aGUgYWRqYWNlbnQg cXVhbnRpZmllci1yYW5nZSBBc3NlcnRzIGFyZQpzaW1wbGlmaWVkIGFjY29yZGluZ2x5LgoKQWxz byByZXdyaXRlIHNwbGl0UlBSVHJhaWxpbmdBbHQncyBsb29wIHdpdGggZm9yZWFjaF9ub2RlKCkg YW5kCmZvcmVhY2hfY3VycmVudF9pbmRleCgpLCBhbmQgYWRkIGEgY29tbWVudCB0byBtYWtlUlBS UXVhbnRpZmllci4KCkJhc2VkIG9uIGEgcGF0Y2ggYnkgSmlhbiBIZS4KLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYyB8IDI0ICsrKystLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDIg ZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9ycHIuYwppbmRleCA2MjI5MjUwOGFhZC4uM2Q3NzUyYmQ1ZWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3Jwci5jCkBAIC0xMTg3LDEwICsxMTg3LDkgQEAgZmlsbFJQUlBhdHRlcm5W YXIoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBhdHRlcm4gKnBhdCwgaW50ICppZHgsIFJQUkRl cHRoIGRlcHQKIAllbGVtLT52YXJJZCA9IGdldFZhcklkRnJvbVBhdHRlcm4ocGF0LCBub2RlLT52 YXJOYW1lKTsKIAllbGVtLT5kZXB0aCA9IGRlcHRoOwogCWVsZW0tPm1pbiA9IG5vZGUtPm1pbjsK LQllbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IFBHX0lOVDMyX01BWCkgPyBSUFJfUVVBTlRJVFlf SU5GIDogbm9kZS0+bWF4OworCWVsZW0tPm1heCA9IG5vZGUtPm1heDsKIAlBc3NlcnQoZWxlbS0+ bWluID49IDAgJiYgZWxlbS0+bWluIDwgUlBSX1FVQU5USVRZX0lORiAmJgotCQkgICBlbGVtLT5t YXggPj0gMSAmJgotCQkgICAoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwgZWxlbS0+ bWluIDw9IGVsZW0tPm1heCkpOworCQkgICBlbGVtLT5tYXggPj0gMSAmJiBlbGVtLT5taW4gPD0g ZWxlbS0+bWF4KTsKIAllbGVtLT5uZXh0ID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKIAllbGVtLT5q dW1wID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsKIAlpZiAobm9kZS0+cmVsdWN0YW50KQpAQCAtMTIz OSwxMCArMTIzOCw5IEBAIGZpbGxSUFJQYXR0ZXJuR3JvdXAoUlBSUGF0dGVybk5vZGUgKm5vZGUs IFJQUlBhdHRlcm4gKnBhdCwgaW50ICppZHgsIFJQUkRlcHRoIGRlCiAJCWVsZW0tPnZhcklkID0g UlBSX1ZBUklEX0JFR0lOOwogCQllbGVtLT5kZXB0aCA9IGRlcHRoOwogCQllbGVtLT5taW4gPSBu b2RlLT5taW47Ci0JCWVsZW0tPm1heCA9IChub2RlLT5tYXggPT0gUEdfSU5UMzJfTUFYKSA/IFJQ Ul9RVUFOVElUWV9JTkYgOiBub2RlLT5tYXg7CisJCWVsZW0tPm1heCA9IG5vZGUtPm1heDsKIAkJ QXNzZXJ0KGVsZW0tPm1pbiA+PSAwICYmIGVsZW0tPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgJiYK LQkJCSAgIGVsZW0tPm1heCA+PSAxICYmCi0JCQkgICAoZWxlbS0+bWF4ID09IFJQUl9RVUFOVElU WV9JTkYgfHwgZWxlbS0+bWluIDw9IGVsZW0tPm1heCkpOworCQkJICAgZWxlbS0+bWF4ID49IDEg JiYgZWxlbS0+bWluIDw9IGVsZW0tPm1heCk7CiAJCWVsZW0tPm5leHQgPSBSUFJfRUxFTUlEWF9J TlZBTElEOwkvKiBzZXQgYnkgZmluYWxpemUgKi8KIAkJZWxlbS0+anVtcCA9IFJQUl9FTEVNSURY X0lOVkFMSUQ7CS8qIHNldCBhZnRlciBFTkQgKi8KIAkJaWYgKG5vZGUtPnJlbHVjdGFudCkKQEAg LTEyNjcsMTkgKzEyNjUsMTggQEAgZmlsbFJQUlBhdHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAq bm9kZSwgUlBSUGF0dGVybiAqcGF0LCBpbnQgKmlkeCwgUlBSRGVwdGggZGUKIAkJZW5kRWxlbS0+ dmFySWQgPSBSUFJfVkFSSURfRU5EOwogCQllbmRFbGVtLT5kZXB0aCA9IGRlcHRoOwogCQllbmRF bGVtLT5taW4gPSBub2RlLT5taW47Ci0JCWVuZEVsZW0tPm1heCA9IChub2RlLT5tYXggPT0gUEdf SU5UMzJfTUFYKSA/IFJQUl9RVUFOVElUWV9JTkYgOiBub2RlLT5tYXg7CisJCWVuZEVsZW0tPm1h eCA9IG5vZGUtPm1heDsKIAkJQXNzZXJ0KGVuZEVsZW0tPm1pbiA+PSAwICYmIGVuZEVsZW0tPm1p biA8IFJQUl9RVUFOVElUWV9JTkYgJiYKLQkJCSAgIGVuZEVsZW0tPm1heCA+PSAxICYmCi0JCQkg ICAoZW5kRWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwgZW5kRWxlbS0+bWluIDw9IGVu ZEVsZW0tPm1heCkpOworCQkJICAgZW5kRWxlbS0+bWF4ID49IDEgJiYgZW5kRWxlbS0+bWluIDw9 IGVuZEVsZW0tPm1heCk7CiAJCWVuZEVsZW0tPm5leHQgPSBSUFJfRUxFTUlEWF9JTlZBTElEOwog CQllbmRFbGVtLT5qdW1wID0gZ3JvdXBTdGFydElkeDsJLyogbG9vcCB0byBmaXJzdCBjaGlsZCAq LwogCQlpZiAobm9kZS0+cmVsdWN0YW50KQogCQkJZW5kRWxlbS0+ZmxhZ3MgfD0gUlBSX0VMRU1f UkVMVUNUQU5UOwogCiAJCS8qCi0JCSAqIElmIHRoZSBncm91cCBib2R5IGlzIG51bGxhYmxlIChh bGwgcGF0aHMgY2FuIG1hdGNoIGVtcHR5KSwgbWFyayB0aGUKLQkJICogRU5EIGVsZW1lbnQgc28g dGhhdCBuZmFfYWR2YW5jZV9lbmQgY2FuIGZhc3QtZm9yd2FyZCB0aGUgaXRlcmF0aW9uCi0JCSAq IGNvdW50IHRvIG1pbiB3aGVuIHJlYWNoZWQgdmlhIGVtcHR5LW1hdGNoIHNraXAgcGF0aHMuCisJ CSAqIElmIHRoZSBncm91cCBib2R5IGlzIG51bGxhYmxlLCBtYXJrIHRoZSBFTkQgZWxlbWVudCBz byB0aGF0CisJCSAqIG5mYV9hZHZhbmNlX2VuZCBjYW4gZmFzdC1mb3J3YXJkIHRoZSBpdGVyYXRp b24gY291bnQgdG8gbWluIHdoZW4KKwkJICogcmVhY2hlZCB2aWEgZW1wdHktbWF0Y2ggc2tpcCBw YXRocy4KIAkJICovCiAJCWlmIChib2R5TnVsbGFibGUpCiAJCQllbmRFbGVtLT5mbGFncyB8PSBS UFJfRUxFTV9FTVBUWV9MT09QOwpAQCAtMTQ1NSw4ICsxNDUyLDcgQEAgZmluYWxpemVSUFJQYXR0 ZXJuKFJQUlBhdHRlcm4gKnJlc3VsdCkKIAogCQkvKiBWZXJpZnkgcXVhbnRpZmllciByYW5nZSBp cyB2YWxpZCAqLwogCQlBc3NlcnQoZWxlbS0+bWluID49IDAgJiYgZWxlbS0+bWluIDwgUlBSX1FV QU5USVRZX0lORiAmJgotCQkJICAgZWxlbS0+bWF4ID49IDEgJiYKLQkJCSAgIChlbGVtLT5tYXgg PT0gUlBSX1FVQU5USVRZX0lORiB8fCBlbGVtLT5taW4gPD0gZWxlbS0+bWF4KSk7CisJCQkgICBl bGVtLT5tYXggPj0gMSAmJiBlbGVtLT5taW4gPD0gZWxlbS0+bWF4KTsKIAl9CiAKIAkvKiBBZGQg RklOIG1hcmtlciBhdCB0aGUgZW5kICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA2ZWIwMWVhN2YwYi4uNzMx YjAxZWI3NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTUxLDYgKzE1MSw5IEBAIHR5cGVkZWYgc3RydWN0 IEtleUFjdGlvbnMKICNkZWZpbmUgcGFyc2VyX3l5ZXJyb3IobXNnKSAgc2Nhbm5lcl95eWVycm9y KG1zZywgeXlzY2FubmVyKQogI2RlZmluZSBwYXJzZXJfZXJycG9zaXRpb24ocG9zKSAgc2Nhbm5l cl9lcnJwb3NpdGlvbihwb3MsIHl5c2Nhbm5lcikKIAorLyogdW5ib3VuZGVkIHF1YW50aWZpZXI7 IG11c3QgbWF0Y2ggUlBSX1FVQU5USVRZX0lORiBpbiBvcHRpbWl6ZXIvcnByLmggKi8KKyNkZWZp bmUgUlBSX1FVQU5USVRZX0lORglQR19JTlQzMl9NQVgKKwogc3RhdGljIHZvaWQgYmFzZV95eWVy cm9yKFlZTFRZUEUgKnl5bGxvYywgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIsCiAJCQkJCQkgY29u c3QgY2hhciAqbXNnKTsKIHN0YXRpYyBSYXdTdG10ICptYWtlUmF3U3RtdChOb2RlICpzdG10LCBp bnQgc3RtdF9sb2NhdGlvbik7CkBAIC0xNzc0NCwxMSArMTc3NDcsMTEgQEAgcm93X3BhdHRlcm5f cXVhbnRpZmllcl9vcHQ6CiAJCQkJfQogCQkJfCAnKicKIAkJCQl7Ci0JCQkJCSQkID0gKE5vZGUg KikgbWFrZVJQUlF1YW50aWZpZXIoMCwgUEdfSU5UMzJfTUFYLCBmYWxzZSwgQDEpOworCQkJCQkk JCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFJQUl9RVUFOVElUWV9JTkYsIGZhbHNl LCBAMSk7CiAJCQkJfQogCQkJfCAnKycKIAkJCQl7Ci0JCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQ UlF1YW50aWZpZXIoMSwgUEdfSU5UMzJfTUFYLCBmYWxzZSwgQDEpOworCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIFJQUl9RVUFOVElUWV9JTkYsIGZhbHNlLCBAMSk7CiAJ CQkJfQogCQkJfCBPcAogCQkJCXsKQEAgLTE3NzU2LDE5ICsxNzc1OSwxOSBAQCByb3dfcGF0dGVy bl9xdWFudGlmaWVyX29wdDoKIAkJCQkJaWYgKHN0cmNtcCgkMSwgIj8iKSA9PSAwKQogCQkJCQkJ JCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCBmYWxzZSwgQDEpOwogCQkJCQll bHNlIGlmIChzdHJjbXAoJDEsICIqPyIpID09IDApCi0JCQkJCQkkJCA9IChOb2RlICopIG1ha2VS UFJRdWFudGlmaWVyKDAsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQkJJCQgPSAoTm9k ZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCBSUFJfUVVBTlRJVFlfSU5GLCB0cnVlLCBAMSk7CiAJ CQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIis/IikgPT0gMCkKLQkJCQkJCSQkID0gKE5vZGUgKikg bWFrZVJQUlF1YW50aWZpZXIoMSwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCQkkJCA9 IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIFJQUl9RVUFOVElUWV9JTkYsIHRydWUsIEAx KTsKIAkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiPz8iKSA9PSAwKQogCQkJCQkJJCQgPSAoTm9k ZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCB0cnVlLCBAMSk7CiAJCQkJCWVsc2UgaWYgKHN0 cmNtcCgkMSwgIip8IikgPT0gMCkKIAkJCQkJewotCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBS UXVhbnRpZmllcigwLCBQR19JTlQzMl9NQVgsIGZhbHNlLCBAMSk7CisJCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFJQUl9RVUFOVElUWV9JTkYsIGZhbHNlLCBAMSk7CiAJ CQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKIAkJCQkJ fQogCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICIrfCIpID09IDApCiAJCQkJCXsKLQkJCQkJCSQk ID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMSwgUEdfSU5UMzJfTUFYLCBmYWxzZSwgQDEp OworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigxLCBSUFJfUVVBTlRJVFlf SU5GLCBmYWxzZSwgQDEpOwogCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5n X2FsdCA9IHRydWU7CiAJCQkJCX0KIAkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiP3wiKSA9PSAw KQpAQCAtMTc3NzgsMTIgKzE3NzgxLDEyIEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0Ogog CQkJCQl9CiAJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIio/fCIpID09IDApCiAJCQkJCXsKLQkJ CQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgUEdfSU5UMzJfTUFYLCB0cnVl LCBAMSk7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFJQUl9RVUFO VElUWV9JTkYsIHRydWUsIEAxKTsKIAkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFp bGluZ19hbHQgPSB0cnVlOwogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIis/fCIp ID09IDApCiAJCQkJCXsKLQkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMSwg UEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFu dGlmaWVyKDEsIFJQUl9RVUFOVElUWV9JTkYsIHRydWUsIEAxKTsKIAkJCQkJCSgoUlBSUGF0dGVy bk5vZGUgKikgJCQpLT50cmFpbGluZ19hbHQgPSB0cnVlOwogCQkJCQl9CiAJCQkJCWVsc2UgaWYg KHN0cmNtcCgkMSwgIj8/fCIpID09IDApCkBAIC0xNzgwMiwxMSArMTc4MDUsMTEgQEAgcm93X3Bh dHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQl8ICcqJyBPcAogCQkJCXsKIAkJCQkJaWYgKHN0cmNt cCgkMiwgIj8iKSA9PSAwKQotCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigw LCBQR19JTlQzMl9NQVgsIHRydWUsIEAxKTsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1 YW50aWZpZXIoMCwgUlBSX1FVQU5USVRZX0lORiwgdHJ1ZSwgQDEpOwogCQkJCQllbHNlIGlmIChz dHJjbXAoJDIsICI/fCIpID09IDApCiAJCQkJCXsKIAkJCQkJCS8qICJBKiA/fEIiID0gcmVsdWN0 YW50ICJBKj8iIHBsdXMgYWx0ZXJuYXRpb24gKi8KLQkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQ UlF1YW50aWZpZXIoMCwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFJQUl9RVUFOVElUWV9JTkYsIHRydWUsIEAxKTsKIAkJ CQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFpbGluZ19hbHQgPSB0cnVlOwogCQkJCQl9 CiAJCQkJCWVsc2UKQEAgLTE3ODE5LDExICsxNzgyMiwxMSBAQCByb3dfcGF0dGVybl9xdWFudGlm aWVyX29wdDoKIAkJCXwgJysnIE9wCiAJCQkJewogCQkJCQlpZiAoc3RyY21wKCQyLCAiPyIpID09 IDApCi0JCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIFBHX0lOVDMyX01B WCwgdHJ1ZSwgQDEpOworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigxLCBS UFJfUVVBTlRJVFlfSU5GLCB0cnVlLCBAMSk7CiAJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMiwgIj98 IikgPT0gMCkKIAkJCQkJewogCQkJCQkJLyogIkErID98QiIgPSByZWx1Y3RhbnQgIkErPyIgcGx1 cyBhbHRlcm5hdGlvbiAqLwotCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigx LCBQR19JTlQzMl9NQVgsIHRydWUsIEAxKTsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1 YW50aWZpZXIoMSwgUlBSX1FVQU5USVRZX0lORiwgdHJ1ZSwgQDEpOwogCQkJCQkJKChSUFJQYXR0 ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CiAJCQkJCX0KIAkJCQkJZWxzZQpA QCAtMTc4NTksMzcgKzE3ODYyLDM3IEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJ Lyoge259LCB7bix9LCB7LG19LCB7bixtfSBxdWFudGlmaWVycyAqLwogCQkJfCAneycgSWNvbnN0 ICd9JwogCQkJCXsKLQkJCQkJaWYgKCQyIDw9IDAgfHwgJDIgPj0gUEdfSU5UMzJfTUFYKQorCQkJ CQlpZiAoJDIgPD0gMCB8fCAkMiA+PSBSUFJfUVVBTlRJVFlfSU5GKQogCQkJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCWVy cm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQiLCBQR19JTlQz Ml9NQVggLSAxKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0 d2VlbiAxIGFuZCAlZCIsIFJQUl9RVUFOVElUWV9JTkYgLSAxKSwKIAkJCQkJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKEAyKSk7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIs ICQyLCBmYWxzZSwgQDEpOwogCQkJCX0KIAkJCXwgJ3snIEljb25zdCAnLCcgJ30nCiAJCQkJewot CQkJCQlpZiAoJDIgPCAwIHx8ICQyID49IFBHX0lOVDMyX01BWCkKKwkJCQkJaWYgKCQyIDwgMCB8 fCAkMiA+PSBSUFJfUVVBTlRJVFlfSU5GKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCWVycm1zZygicXVhbnRpZmll ciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQiLCBQR19JTlQzMl9NQVggLSAxKSwKKwkJ CQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIs IFJQUl9RVUFOVElUWV9JTkYgLSAxKSwKIAkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7 Ci0JCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsIFBHX0lOVDMyX01BWCwg ZmFsc2UsIEAxKTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigkMiwgUlBS X1FVQU5USVRZX0lORiwgZmFsc2UsIEAxKTsKIAkJCQl9CiAJCQl8ICd7JyAnLCcgSWNvbnN0ICd9 JwogCQkJCXsKLQkJCQkJaWYgKCQzIDw9IDAgfHwgJDMgPj0gUEdfSU5UMzJfTUFYKQorCQkJCQlp ZiAoJDMgPD0gMCB8fCAkMyA+PSBSUFJfUVVBTlRJVFlfSU5GKQogCQkJCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCWVycm1z ZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQiLCBQR19JTlQzMl9N QVggLSAxKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2Vl biAxIGFuZCAlZCIsIFJQUl9RVUFOVElUWV9JTkYgLSAxKSwKIAkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKEAzKSk7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgJDMs IGZhbHNlLCBAMSk7CiAJCQkJfQogCQkJfCAneycgSWNvbnN0ICcsJyBJY29uc3QgJ30nCiAJCQkJ ewotCQkJCQlpZiAoJDIgPCAwIHx8ICQ0IDw9IDAgfHwgJDIgPj0gUEdfSU5UMzJfTUFYIHx8ICQ0 ID49IFBHX0lOVDMyX01BWCkKKwkJCQkJaWYgKCQyIDwgMCB8fCAkNCA8PSAwIHx8ICQyID49IFJQ Ul9RVUFOVElUWV9JTkYgfHwgJDQgPj0gUlBSX1FVQU5USVRZX0lORikKIAkJCQkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQll cnJtc2coInF1YW50aWZpZXIgYm91bmRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCB3aXRoIG1h eCA+PSAxIiwgUEdfSU5UMzJfTUFYIC0gMSksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBi b3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIHdpdGggbWF4ID49IDEiLCBSUFJfUVVBTlRJ VFlfSU5GIC0gMSksCiAJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOwogCQkJCQlpZiAo JDIgPiAkNCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNzkwNywxMCArMTc5MTAsMTAgQEAg cm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJCQkJCWVycm1zZygiaW52YWxpZCB0b2tl biBcIiVzXCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIsIHJwcl9pbnZhbGlkX3F1YW50aWZpZXJf dG9rZW4oJDQpKSwKIAkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVy IHtufSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKIAkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KEA0KSk7Ci0JCQkJCWlmICgkMiA8PSAwIHx8ICQyID49IFBHX0lOVDMyX01BWCkKKwkJCQkJaWYg KCQyIDw9IDAgfHwgJDIgPj0gUlBSX1FVQU5USVRZX0lORikKIAkJCQkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkJCQllcnJtc2co InF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICVkIiwgUEdfSU5UMzJfTUFY IC0gMSksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4g MSBhbmQgJWQiLCBSUFJfUVVBTlRJVFlfSU5GIC0gMSksCiAJCQkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihAMikpOwogCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkMiwg dHJ1ZSwgQDEpOwogCQkJCQlpZiAoc3RyY21wKCQ0LCAiP3wiKSA9PSAwKQpAQCAtMTc5MjQsMTIg KzE3OTI3LDEyIEBAIHJvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgogCQkJCQkJCQllcnJtc2co ImludmFsaWQgdG9rZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCBycHJfaW52YWxp ZF9xdWFudGlmaWVyX3Rva2VuKCQ1KSksCiAJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMg YWxsb3dlZCBhZnRlciB7bix9IG9yIHssbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCiAJCQkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOwotCQkJCQlpZiAoJDIgPCAwIHx8ICQyID49IFBH X0lOVDMyX01BWCkKKwkJCQkJaWYgKCQyIDwgMCB8fCAkMiA+PSBSUFJfUVVBTlRJVFlfSU5GKQog CQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBh bmQgJWQiLCBQR19JTlQzMl9NQVggLSAxKSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJv dW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsIFJQUl9RVUFOVElUWV9JTkYgLSAxKSwKIAkJ CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7Ci0JCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQ UlF1YW50aWZpZXIoJDIsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQkkJCA9IChOb2Rl ICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCBSUFJfUVVBTlRJVFlfSU5GLCB0cnVlLCBAMSk7CiAJ CQkJCWlmIChzdHJjbXAoJDUsICI/fCIpID09IDApCiAJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICop ICQkKS0+dHJhaWxpbmdfYWx0ID0gdHJ1ZTsKIAkJCQl9CkBAIC0xNzk0MSwxMCArMTc5NDQsMTAg QEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJCQkJCWVycm1zZygiaW52YWxpZCB0 b2tlbiBcIiVzXCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIsIHJwcl9pbnZhbGlkX3F1YW50aWZp ZXJfdG9rZW4oJDUpKSwKIAkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFm dGVyIHtuLH0gb3IgeyxtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKIAkJCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKEA1KSk7Ci0JCQkJCWlmICgkMyA8PSAwIHx8ICQzID49IFBHX0lOVDMyX01B WCkKKwkJCQkJaWYgKCQzIDw9IDAgfHwgJDMgPj0gUlBSX1FVQU5USVRZX0lORikKIAkJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJ CQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kICVkIiwg UEdfSU5UMzJfTUFYIC0gMSksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0 IGJlIGJldHdlZW4gMSBhbmQgJWQiLCBSUFJfUVVBTlRJVFlfSU5GIC0gMSksCiAJCQkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihAMykpOwogCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlm aWVyKDAsICQzLCB0cnVlLCBAMSk7CiAJCQkJCWlmIChzdHJjbXAoJDUsICI/fCIpID09IDApCkBA IC0xNzk1OCwxMCArMTc5NjEsMTAgQEAgcm93X3BhdHRlcm5fcXVhbnRpZmllcl9vcHQ6CiAJCQkJ CQkJCWVycm1zZygiaW52YWxpZCB0b2tlbiBcIiVzXCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIs IHJwcl9pbnZhbGlkX3F1YW50aWZpZXJfdG9rZW4oJDYpKSwKIAkJCQkJCQkJZXJyaGludCgiT25s eSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtuLG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAog CQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDYpKTsKLQkJCQkJaWYgKCQyIDwgMCB8fCAkNCA8 PSAwIHx8ICQyID49IFBHX0lOVDMyX01BWCB8fCAkNCA+PSBQR19JTlQzMl9NQVgpCisJCQkJCWlm ICgkMiA8IDAgfHwgJDQgPD0gMCB8fCAkMiA+PSBSUFJfUVVBTlRJVFlfSU5GIHx8ICQ0ID49IFJQ Ul9RVUFOVElUWV9JTkYpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kcyBt dXN0IGJlIGJldHdlZW4gMCBhbmQgJWQgd2l0aCBtYXggPj0gMSIsIFBHX0lOVDMyX01BWCAtIDEp LAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmRzIG11c3QgYmUgYmV0d2VlbiAwIGFu ZCAlZCB3aXRoIG1heCA+PSAxIiwgUlBSX1FVQU5USVRZX0lORiAtIDEpLAogCQkJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oQDIpKTsKIAkJCQkJaWYgKCQyID4gJDQpCiAJCQkJCQllcmVwb3J0KEVS Uk9SLApAQCAtMjE0MDcsNiArMjE0MTAsOCBAQCBtYWtlUlBSUXVhbnRpZmllcihpbnQzMiBtaW4s IGludDMyIG1heCwgYm9vbCByZWx1Y3RhbnQsIGludCBsb2NhdGlvbikKIAluLT5tYXggPSBtYXg7 CiAJbi0+cmVsdWN0YW50ID0gcmVsdWN0YW50OwogCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisK KwkvKiBPdGhlciBmaWVsZHMgYXJlIGlycmVsZXZhbnQgZm9yIGEgcXVhbnRpZmllciBub2RlICov CiAJcmV0dXJuIG47CiB9CiAKQEAgLTIxNDQyLDkgKzIxNDQ3LDYgQEAgbWFrZVJQUlNlcU9yU2lu Z2xlKExpc3QgKmNoaWxkcmVuLCBpbnQgbG9jYXRpb24pCiBzdGF0aWMgUlBSUGF0dGVybk5vZGUg Kgogc3BsaXRSUFJUcmFpbGluZ0FsdChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY29yZV95eXNjYW5f dCB5eXNjYW5uZXIpCiB7Ci0JTGlzdENlbGwgICAqbGM7Ci0JaW50CQkJaSA9IDA7Ci0KIAlpZiAo bm9kZS0+bm9kZVR5cGUgIT0gUlBSX1BBVFRFUk5fU0VRKQogCXsKIAkJaWYgKG5vZGUtPnRyYWls aW5nX2FsdCkKQEAgLTIxNDU4LDE0ICsyMTQ2MCwxMyBAQCBzcGxpdFJQUlRyYWlsaW5nQWx0KFJQ UlBhdHRlcm5Ob2RlICpub2RlLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJcmV0dXJuIG5v ZGU7CiAJfQogCi0JZm9yZWFjaChsYywgbm9kZS0+Y2hpbGRyZW4pCisJZm9yZWFjaF9ub2RlKFJQ UlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCiAJewotCQlSUFJQYXR0ZXJuTm9k ZSAqY2hpbGQgPSAoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0KGxjKTsKLQogCQlpZiAoY2hpbGQt PnRyYWlsaW5nX2FsdCkKIAkJewotCQkJTGlzdAkgICAqbGVmdGhhbGYgPSBsaXN0X2NvcHlfaGVh ZChub2RlLT5jaGlsZHJlbiwgaSArIDEpOwotCQkJTGlzdAkgICAqcmlnaHRoYWxmID0gbGlzdF9j b3B5X3RhaWwobm9kZS0+Y2hpbGRyZW4sIGkgKyAxKTsKKwkJCWludAkJCXNwbGl0SWR4ID0gZm9y ZWFjaF9jdXJyZW50X2luZGV4KGNoaWxkKTsKKwkJCUxpc3QJICAgKmxlZnRoYWxmID0gbGlzdF9j b3B5X2hlYWQobm9kZS0+Y2hpbGRyZW4sIHNwbGl0SWR4ICsgMSk7CisJCQlMaXN0CSAgICpyaWdo dGhhbGYgPSBsaXN0X2NvcHlfdGFpbChub2RlLT5jaGlsZHJlbiwgc3BsaXRJZHggKyAxKTsKIAkJ CVJQUlBhdHRlcm5Ob2RlICphbHRuOwogCQkJUlBSUGF0dGVybk5vZGUgKnJpZ2h0bm9kZTsKIApA QCAtMjE0OTAsNyArMjE0OTEsNiBAQCBzcGxpdFJQUlRyYWlsaW5nQWx0KFJQUlBhdHRlcm5Ob2Rl ICpub2RlLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJCWFsdG4tPmxvY2F0aW9uID0gbm9k ZS0+bG9jYXRpb247CiAJCQlyZXR1cm4gYWx0bjsKIAkJfQotCQlpKys7CiAJfQogCXJldHVybiBu b2RlOwogfQotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0015-pass-windowclause.patch" Content-Disposition: attachment; filename="v50-0015-pass-windowclause.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmjw123 RnJvbSBkNTk4ZjdiYzYxZTJmYzgyOGZmNWE5MmNmMTZmYzAwMDI4NGJmNDkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDIyIEp1biAyMDI2IDIzOjI4OjUzICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjQv MjldIFNpbXBsaWZ5IHJvdyBwYXR0ZXJuIGNvbXBpbGF0aW9uIGJ5IHBhc3NpbmcgdGhlCiBXaW5k b3dDbGF1c2UKCmJ1aWxkUlBSUGF0dGVybigpIHRvb2sgcnBQYXR0ZXJuLCBycFNraXBUbywgZnJh bWVPcHRpb25zLCBhbmQgYQpwcmUtYnVpbHQgZGVmaW5lVmFyaWFibGVMaXN0IGFzIHNlcGFyYXRl IGFyZ3VtZW50cy4gIFBhc3MgdGhlCldpbmRvd0NsYXVzZSBkaXJlY3RseSBpbnN0ZWFkOiBpdCBj YXJyaWVzIGFsbCBvZiB0aGVzZSwgYW5kCmJ1aWxkUlBSUGF0dGVybiBjYW4gd2FsayB3Yy0+ZGVm aW5lQ2xhdXNlIGl0c2VsZiB0byBjb2xsZWN0IHRoZSBERUZJTkUKdmFyaWFibGUgbmFtZXMuICBU aGlzIHJlbW92ZXMgdGhlIGludGVybWVkaWF0ZSBMaXN0IHRoYXQKY3JlYXRlX3dpbmRvd2FnZ19w bGFuIGJ1aWx0IG9ubHkgdG8gaGFuZCBvZmYsIGFsb25nIHdpdGggdGhlCmNvbGxlY3REZWZpbmVW YXJpYWJsZXMoKSBoZWxwZXIgdGhhdCB1bnBhY2tlZCBpdC4KCkFsc28gaW5saW5lIHRyeVVud3Jh cFNpbmdsZUNoaWxkKCkgaW50byBpdHMgdHdvIGNhbGxlcnMKKG9wdGltaXplU2VxUGF0dGVybiBh bmQgb3B0aW1pemVBbHRQYXR0ZXJuKTsgaXQgd2FzIGEgdHJpdmlhbCBvbmUtbGluZXIuCgpCYXNl ZCBvbiBhIHBhdGNoIGJ5IEppYW4gSGUuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jIHwgMTggKy0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5j ICAgICAgICB8IDkyICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL29wdGlt aXplci9ycHIuaCAgICAgICAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oICAgICAgICAgfCAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCsp LCA3OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMK aW5kZXggZDk2ZTc2YjAyMjEuLmQ4NjBmYjk3MTFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vY3JlYXRlcGxhbi5jCkBAIC0yODIwLDcgKzI4MjAsNiBAQCBjcmVhdGVfd2luZG93YWdnX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAlPaWQJCSAg ICpvcmRPcGVyYXRvcnM7CiAJT2lkCQkgICAqb3JkQ29sbGF0aW9uczsKIAlMaXN0Q2VsbCAgICps YzsKLQlMaXN0CSAgICpkZWZpbmVWYXJpYWJsZUxpc3QgPSBOSUw7CiAJUlBSUGF0dGVybiAqY29t cGlsZWRQYXR0ZXJuID0gTlVMTDsKIAlCaXRtYXBzZXQgICptYXRjaFN0YXJ0RGVwZW5kZW50ID0g TlVMTDsKIAlSUFJOYXZPZmZzZXRLaW5kIG5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNF VF9GSVhFRDsKQEAgLTI4NzksMTggKzI4NzgsOSBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJb3JkTnVtQ29scysr OwogCX0KIAotCS8qIEJ1aWxkIFJQUiBwYXR0ZXJuIGFuZCBkZWZpbmVWYXJpYWJsZUxpc3QgKi8K KwkvKiBCdWlsZCBSUFIgcGF0dGVybiAqLwogCWlmICh3Yy0+cnBQYXR0ZXJuKQogCXsKLQkJLyoK LQkJICogQnVpbGQgZGVmaW5lVmFyaWFibGVMaXN0IGZyb20gZGVmaW5lQ2xhdXNlLiAgVGhlIHBh cnNlciBhbHJlYWR5Ci0JCSAqIHJlamVjdHMgREVGSU5FIHZhcmlhYmxlcyBub3QgdXNlZCBpbiBQ QVRURVJOLCBzbyBubyBmaWx0ZXJpbmcgaXMKLQkJICogbmVlZGVkLgotCQkgKi8KLQkJZm9yZWFj aF9ub2RlKFRhcmdldEVudHJ5LCB0ZSwgd2MtPmRlZmluZUNsYXVzZSkKLQkJCWRlZmluZVZhcmlh YmxlTGlzdCA9IGxhcHBlbmQoZGVmaW5lVmFyaWFibGVMaXN0LAotCQkJCQkJCQkJCSBtYWtlU3Ry aW5nKHBzdHJkdXAodGUtPnJlc25hbWUpKSk7Ci0KIAkJLyoKIAkJICogV2FsayBERUZJTkUgb25j ZTogY29sbGVjdCBuYXYgb2Zmc2V0cyAoZm9yIHR1cGxlc3RvcmUgdHJpbSkgYW5kIHRoZQogCQkg KiBiaXRtYXBzZXQgb2YgbWF0Y2hfc3RhcnQtZGVwZW5kZW50IHZhcmlhYmxlcyAoZm9yIGFic29y cHRpb24KQEAgLTI5MDMsMTEgKzI4OTMsNyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5l ckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCQkJJm1hdGNoU3Rh cnREZXBlbmRlbnQpOwogCiAJCS8qIENvbXBpbGUgYW5kIG9wdGltaXplIFJQUiBwYXR0ZXJucyAq LwotCQljb21waWxlZFBhdHRlcm4gPSBidWlsZFJQUlBhdHRlcm4od2MtPnJwUGF0dGVybiwKLQkJ CQkJCQkJCQkgIGRlZmluZVZhcmlhYmxlTGlzdCwKLQkJCQkJCQkJCQkgIHdjLT5ycFNraXBUbywK LQkJCQkJCQkJCQkgIHdjLT5mcmFtZU9wdGlvbnMsCi0JCQkJCQkJCQkJICAhYm1zX2lzX2VtcHR5 KG1hdGNoU3RhcnREZXBlbmRlbnQpKTsKKwkJY29tcGlsZWRQYXR0ZXJuID0gYnVpbGRSUFJQYXR0 ZXJuKHdjLCAhYm1zX2lzX2VtcHR5KG1hdGNoU3RhcnREZXBlbmRlbnQpKTsKIAl9CiAKIAkvKiBB bmQgZmluYWxseSB3ZSBjYW4gbWFrZSB0aGUgV2luZG93QWdnIG5vZGUgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMKaW5kZXggM2Q3NzUyYmQ1ZWQuLjFjNTllOGE3MGEwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9ycHIuYwpAQCAtNDgsOSArNDgsNiBAQAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMg Ki8KIHN0YXRpYyBib29sIHJwclBhdHRlcm5FcXVhbChSUFJQYXR0ZXJuTm9kZSAqYSwgUlBSUGF0 dGVybk5vZGUgKmIpOwogc3RhdGljIGJvb2wgcnByUGF0dGVybkNoaWxkcmVuRXF1YWwoTGlzdCAq YSwgTGlzdCAqYik7Ci0KLXN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqdHJ5VW53cmFwU2luZ2xlQ2hp bGQoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOwotCiBzdGF0aWMgTGlzdCAqZmxhdHRlblNlcUNo aWxkcmVuKExpc3QgKmNoaWxkcmVuKTsKIHN0YXRpYyBMaXN0ICptZXJnZUNvbnNlY3V0aXZlVmFy cyhMaXN0ICpjaGlsZHJlbik7CiBzdGF0aWMgTGlzdCAqbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyhM aXN0ICpjaGlsZHJlbik7CkBAIC02Nyw4ICs2NCw2IEBAIHN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAq dHJ5VW53cmFwR3JvdXAoUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOwogc3RhdGljIFJQUlBhdHRl cm5Ob2RlICpvcHRpbWl6ZUdyb3VwUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CiAK IHN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqb3B0aW1pemVSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2Rl ICpwYXR0ZXJuKTsKLQotc3RhdGljIGludAljb2xsZWN0RGVmaW5lVmFyaWFibGVzKExpc3QgKmRl ZmluZVZhcmlhYmxlTGlzdCwgY2hhciAqKnZhck5hbWVzKTsKIHN0YXRpYyB2b2lkIHNjYW5SUFJQ YXR0ZXJuUmVjdXJzaXZlKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsCiAJ CQkJCQkJCQlpbnQgKm51bVZhcnMsIGludCAqbnVtRWxlbWVudHMsCiAJCQkJCQkJCQlSUFJEZXB0 aCBkZXB0aCwgUlBSRGVwdGggKm1heERlcHRoKTsKQEAgLTE1NSwyNyArMTUwLDYgQEAgcnByUGF0 dGVybkNoaWxkcmVuRXF1YWwoTGlzdCAqYSwgTGlzdCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAot LyoKLSAqIHRyeVVud3JhcFNpbmdsZUNoaWxkCi0gKgkJVHJ5IHRvIHVud3JhcCBwYXR0ZXJuIG5v ZGUgd2l0aCBzaW5nbGUgY2hpbGQuCi0gKgotICogRXhhbXBsZXMgKGludGVybmFsIG5vZGUgcmVw cmVzZW50YXRpb24pOgotICogICBTRVFbQV0gLT4gQSAgICAoc2luZ2xlLWVsZW1lbnQgc2VxdWVu Y2UgYmVjb21lcyB0aGUgZWxlbWVudCkKLSAqICAgQUxUW0FdIC0+IEEgICAgKHNpbmdsZS1hbHRl cm5hdGl2ZSBiZWNvbWVzIHRoZSBhbHRlcm5hdGl2ZSkKLSAqCi0gKiBJZiBwYXR0ZXJuIGhhcyBl eGFjdGx5IG9uZSBjaGlsZCwgcmV0dXJuIHRoZSBjaGlsZCBkaXJlY3RseS4KLSAqIE90aGVyd2lz ZSByZXR1cm5zIHRoZSBwYXR0ZXJuIHVuY2hhbmdlZC4KLSAqIFVzZWQgYnkgYm90aCBTRVEgYW5k IEFMVCBvcHRpbWl6YXRpb24uCi0gKi8KLXN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCi10cnlVbndy YXBTaW5nbGVDaGlsZChSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybikKLXsKLQlpZiAobGlzdF9sZW5n dGgocGF0dGVybi0+Y2hpbGRyZW4pID09IDEpCi0JCXJldHVybiAoUlBSUGF0dGVybk5vZGUgKikg bGluaXRpYWwocGF0dGVybi0+Y2hpbGRyZW4pOwotCi0JcmV0dXJuIHBhdHRlcm47Ci19Ci0KIC8q CiAgKiBmbGF0dGVuU2VxQ2hpbGRyZW4KICAqCQlSZWN1cnNpdmVseSBvcHRpbWl6ZSBjaGlsZHJl biBhbmQgZmxhdHRlbiBuZXN0ZWQgU0VRLgpAQCAtNjY5LDggKzY0MywxMSBAQCBvcHRpbWl6ZVNl cVBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pCiAJLyogTWVyZ2UgcHJlZml4L3N1ZmZp eCBpbnRvIEdST1VQIHdpdGggbWF0Y2hpbmcgY2hpbGRyZW4gKi8KIAlwYXR0ZXJuLT5jaGlsZHJl biA9IG1lcmdlR3JvdXBQcmVmaXhTdWZmaXgocGF0dGVybi0+Y2hpbGRyZW4pOwogCi0JLyogVW53 cmFwIHNpbmdsZS1pdGVtIFNFUSAqLwotCXJldHVybiB0cnlVbndyYXBTaW5nbGVDaGlsZChwYXR0 ZXJuKTsKKwkvKiBVbndyYXAgc2luZ2xlLWl0ZW0gU0VROiBTRVFbQV0gLT4gQSAqLworCWlmIChs aXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJlbikgPT0gMSkKKwkJcmV0dXJuIChSUFJQYXR0ZXJu Tm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwlyZXR1cm4gcGF0dGVybjsK IH0KIAogLyoKQEAgLTc1NCw4ICs3MzEsMTEgQEAgb3B0aW1pemVBbHRQYXR0ZXJuKFJQUlBhdHRl cm5Ob2RlICpwYXR0ZXJuKQogCS8qIFJlbW92ZSBkdXBsaWNhdGUgYWx0ZXJuYXRpdmVzICovCiAJ cGF0dGVybi0+Y2hpbGRyZW4gPSByZW1vdmVEdXBsaWNhdGVBbHRlcm5hdGl2ZXMocGF0dGVybi0+ Y2hpbGRyZW4pOwogCi0JLyogVW53cmFwIHNpbmdsZS1pdGVtIEFMVCAqLwotCXJldHVybiB0cnlV bndyYXBTaW5nbGVDaGlsZChwYXR0ZXJuKTsKKwkvKiBVbndyYXAgc2luZ2xlLWl0ZW0gQUxUOiBB TFRbQV0gLT4gQSAqLworCWlmIChsaXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJlbikgPT0gMSkK KwkJcmV0dXJuIChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGlsZHJlbik7 CisKKwlyZXR1cm4gcGF0dGVybjsKIH0KIAogLyoKQEAgLTk2OSwzMCArOTQ5LDYgQEAgb3B0aW1p emVSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQogCXJldHVybiBwYXR0ZXJuOwog fQogCi0vKgotICogY29sbGVjdERlZmluZVZhcmlhYmxlcwotICoJCUNvbGxlY3QgdmFyaWFibGUg bmFtZXMgZnJvbSBERUZJTkUgY2xhdXNlLgotICoKLSAqIFBvcHVsYXRlcyB2YXJOYW1lcyBhcnJh eSB3aXRoIHZhcmlhYmxlIG5hbWVzIGluIERFRklORSBvcmRlci4KLSAqIFRoaXMgZW5zdXJlcyB2 YXJJZCA9PSBkZWZpbmVJZHgsIGVsaW1pbmF0aW5nIHJ1bnRpbWUgbWFwcGluZy4KLSAqIFJldHVy bnMgdGhlIG51bWJlciBvZiB2YXJpYWJsZXMgY29sbGVjdGVkLgotICovCi1zdGF0aWMgaW50Ci1j b2xsZWN0RGVmaW5lVmFyaWFibGVzKExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwgY2hhciAqKnZh ck5hbWVzKQotewotCWludAkJCW51bVZhcnMgPSAwOwotCi0JZm9yZWFjaF9ub2RlKFN0cmluZywg dmFybmFtZSwgZGVmaW5lVmFyaWFibGVMaXN0KQotCXsKLQkJLyogUGFyc2VyIGFscmVhZHkgY2hl Y2tlZCB0aGlzIGxpbWl0IGluIHRyYW5zZm9ybURlZmluZUNsYXVzZSAqLwotCQlBc3NlcnQobnVt VmFycyA8PSBSUFJfVkFSSURfTUFYKTsKLQotCQl2YXJOYW1lc1tudW1WYXJzKytdID0gc3RyVmFs KHZhcm5hbWUpOwotCX0KLQotCXJldHVybiBudW1WYXJzOwotfQotCiAvKgogICogc2NhblJQUlBh dHRlcm5SZWN1cnNpdmUKICAqCQlSZWN1cnNpdmVseSBzY2FuIHBhdHRlcm4gcGFyc2UgdHJlZSAo cGFzcyAxIGludGVybmFsKS4KQEAgLTE5MDQsOSArMTg2MCw3IEBAIHZhbGlkYXRlX3Jwcl9kZWZp bmVfdm9sYXRpbGl0eShMaXN0ICpkZWZpbmVDbGF1c2UpCiAgKiBDYWxsZWQgZnJvbSBjcmVhdGVw bGFuLmMgZHVyaW5nIHBsYW4gY3JlYXRpb24uCiAgKi8KIFJQUlBhdHRlcm4gKgotYnVpbGRSUFJQ YXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3Qs Ci0JCQkJUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMsCi0JCQkJYm9vbCBoYXNN YXRjaFN0YXJ0RGVwZW5kZW50KQorYnVpbGRSUFJQYXR0ZXJuKFdpbmRvd0NsYXVzZSAqd2MsIGJv b2wgaGFzTWF0Y2hTdGFydERlcGVuZGVudCkKIHsKIAlSUFJQYXR0ZXJuICpyZXN1bHQ7CiAJUlBS UGF0dGVybk5vZGUgKm9wdGltaXplZDsKQEAgLTE5MTUsNiArMTg2OSw5IEBAIGJ1aWxkUlBSUGF0 dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybiwgTGlzdCAqZGVmaW5lVmFyaWFibGVMaXN0LAog CWludAkJCW51bUVsZW1lbnRzOwogCVJQUkRlcHRoCW1heERlcHRoOwogCWludAkJCWlkeDsKKwlS UFJQYXR0ZXJuTm9kZSAqcGF0dGVybiA9IHdjLT5ycFBhdHRlcm47CisJUlBTa2lwVG8JcnBTa2lw VG8gPSB3Yy0+cnBTa2lwVG87CisJaW50CQkJZnJhbWVPcHRpb25zID0gd2MtPmZyYW1lT3B0aW9u czsKIAogCS8qIENhbGxlciBtdXN0IGNoZWNrIGZvciBOVUxMIHBhdHRlcm4gYmVmb3JlIGNhbGxp bmcgKi8KIAlBc3NlcnQocGF0dGVybiAhPSBOVUxMKTsKQEAgLTE5MjQsMTIgKzE4ODEsMjkgQEAg YnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJp YWJsZUxpc3QsCiAJLyogT3B0aW1pemUgdGhlIHBhdHRlcm4gdHJlZSAqLwogCW9wdGltaXplZCA9 IG9wdGltaXplUlBSUGF0dGVybihjb3B5T2JqZWN0KHBhdHRlcm4pKTsKIAotCS8qIENvbGxlY3Qg dmFyaWFibGUgbmFtZXMgZnJvbSBERUZJTkUgY2xhdXNlICovCi0JbnVtVmFycyA9IGNvbGxlY3RE ZWZpbmVWYXJpYWJsZXMoZGVmaW5lVmFyaWFibGVMaXN0LCB2YXJOYW1lc1N0YWNrKTsKKwludW1W YXJzID0gMDsKKworCS8qCisJICogUG9wdWxhdGUgdmFyTmFtZXNTdGFjayB3aXRoIHRoZSBERUZJ TkUgdmFyaWFibGUgbmFtZXMgaW4gREVGSU5FIG9yZGVyLgorCSAqIFRoaXMgZW5zdXJlcyB2YXJJ ZCA9PSBkZWZpbmVDbGF1c2UgaW5kZXgsIGVsaW1pbmF0aW5nIHJ1bnRpbWUgbWFwcGluZy4KKwkg Ki8KKwlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRlLCB3Yy0+ZGVmaW5lQ2xhdXNlKQorCXsK KwkJLyogUGFyc2VyIGFsd2F5cyBhc3NpZ25zIGEgbmFtZSB0byBlYWNoIERFRklORSBlbnRyeSAq LworCQlBc3NlcnQodGUtPnJlc25hbWUgIT0gTlVMTCk7CisKKwkJdmFyTmFtZXNTdGFja1tudW1W YXJzKytdID0gcHN0cmR1cCh0ZS0+cmVzbmFtZSk7CisJfQogCiAJLyogU2NhbiBwYXR0ZXJuOiBj b2xsZWN0IHZhcmlhYmxlcywgY291bnQgZWxlbWVudHMsIHZhbGlkYXRlIGxpbWl0cyAqLwogCXNj YW5SUFJQYXR0ZXJuKG9wdGltaXplZCwgdmFyTmFtZXNTdGFjaywgJm51bVZhcnMsICZudW1FbGVt ZW50cywgJm1heERlcHRoKTsKIAorCS8qCisJICogbnVtVmFycyBtYXkgcmVhY2ggUlBSX1ZBUklE X01BWCArIDEgKHZhbGlkIHZhcklkcyBhcmUgMCAuLgorCSAqIFJQUl9WQVJJRF9NQVgpCisJICov CisJQXNzZXJ0KG51bVZhcnMgPD0gUlBSX1ZBUklEX01BWCArIDEpOworCiAJLyogQWxsb2NhdGUg cmVzdWx0IHN0cnVjdHVyZSAqLwogCXJlc3VsdCA9IG1ha2VSUFJQYXR0ZXJuKG51bVZhcnMsIG51 bUVsZW1lbnRzLCBtYXhEZXB0aCwgdmFyTmFtZXNTdGFjayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL29wdGltaXplci9ycHIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaAppbmRl eCBmNTQ2MmFiMmE3Yy4uMWRlN2Y4NmY4NjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGlt aXplci9ycHIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKQEAgLTc1LDkgKzc1 LDcgQEAKICNkZWZpbmUgUlBSRWxlbUNhblNraXAoZSkJCSgoZSktPm1pbiA9PSAwKQogCiBleHRl cm4gdm9pZCB2YWxpZGF0ZV9ycHJfZGVmaW5lX3ZvbGF0aWxpdHkoTGlzdCAqZGVmaW5lQ2xhdXNl KTsKLWV4dGVybiBSUFJQYXR0ZXJuICpidWlsZFJQUlBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBh dHRlcm4sIExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwKLQkJCQkJCQkJICAgUlBTa2lwVG8gcnBT a2lwVG8sIGludCBmcmFtZU9wdGlvbnMsCi0JCQkJCQkJCSAgIGJvb2wgaGFzTWF0Y2hTdGFydERl cGVuZGVudCk7CitleHRlcm4gUlBSUGF0dGVybiAqYnVpbGRSUFJQYXR0ZXJuKFdpbmRvd0NsYXVz ZSAqd2MsIGJvb2wgaGFzTWF0Y2hTdGFydERlcGVuZGVudCk7CiAKIC8qCiAgKiBTaGFyZWQgdHJh dmVyc2FsIHdhbGtlciBmb3IgREVGSU5FIGNsYXVzZSBSUFJOYXZFeHByIGNvbGxlY3Rpb24uCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBjYjlkMDJjMDBjNC4uNzhjNmNhOWZiNWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0cnVjdCBQYXJzZVN0YXRl CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpwX2dyb3VwaW5nX25zaXRlbTsJLyogTlNJdGVtIGZvciBn cm91cGluZywgb3IgTlVMTCAqLwogCUxpc3QJICAgKnBfd2luZG93ZGVmczsJLyogcmF3IHJlcHJl c2VudGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNlcyAqLwogCVBhcnNlRXhwcktpbmQgcF9leHByX2tp bmQ7CS8qIHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlJ3JlIHBhcnNpbmcgKi8KLQlMaXN0CSAg ICpwX3Jwcl9wYXR0ZXJuX3ZhcnM7IC8qIFJQUiB2YXJpYWJsZSBuYW1lcyBmb3IgREVGSU5FIGNs YXVzZSAqLworCUxpc3QJICAgKnBfcnByX3BhdHRlcm5fdmFyczsgLyogUm93IHBhdHRlcm4gdmFy aWFibGUgbmFtZXMgKi8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0bGlzdCBy ZXNubyB0byBhc3NpZ24gKi8KIAlMaXN0CSAgICpwX211bHRpYXNzaWduX2V4cHJzOwkvKiBqdW5r IHRsaXN0IGVudHJpZXMgZm9yIG11bHRpYXNzaWduICovCiAJTGlzdAkgICAqcF9sb2NraW5nX2Ns YXVzZTsJLyogcmF3IEZPUiBVUERBVEUvRk9SIFNIQVJFIGluZm8gKi8KLS0gCjIuNTAuMSAoQXBw bGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0016-variable-limit-error.patch" Content-Disposition: attachment; filename="v50-0016-variable-limit-error.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmlx424 RnJvbSBhZGUwNWM1NjAxZTI4ZDE3NDBiOWY2M2U2MmY4MmY5MGU5MzAyNWQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDIyIEp1biAyMDI2IDIzOjM1OjEwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjUv MjldIFJld29yZCB0aGUgcm93IHBhdHRlcm4gdmFyaWFibGUtbGltaXQgZXJyb3IKClRoZSBlcnJv ciBmb3IgZXhjZWVkaW5nIHRoZSBwYXR0ZXJuLXZhcmlhYmxlIGxpbWl0IHNhaWQgInRvbyBtYW55 CnBhdHRlcm4gdmFyaWFibGVzIiB3aXRoICJNYXhpbXVtIGlzIE4uIiBhcyBkZXRhaWwuICBTcGVs bCBvdXQgInJvdwpwYXR0ZXJuIiBpbiBib3RoLCBzbyB0aGUgbWVzc2FnZSBpcyB1bmFtYmlndW91 cyBpbiB0aGUgUlBSIGNvbnRleHQuCgpKaWFuIEhlIHByb3Bvc2VkIG1lcmdpbmcgdGhlIG1heGlt dW0gaW50byBhIHNpbmdsZSBwcmltYXJ5IG1lc3NhZ2U7IHRoaXMKa2VlcHMgdGhlIHByaW1hcnkt bWVzc2FnZSAvIGVycmRldGFpbCBzcGxpdCBwZXIgUG9zdGdyZVNRTCBjb252ZW50aW9uLgotLS0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyAgICAgICAgIHwgNCArKy0tCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCB8IDQgKystLQogMiBmaWxlcyBjaGFuZ2Vk LCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmlu ZGV4IGVkMTIxOTBjYjA2Li40NzUzODI1ZmViZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAt MjM4LDggKzIzOCw4IEBAIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBz dGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQkJCWlmIChsaXN0X2xlbmd0aCgqdmFyTmFt ZXMpID4gUlBSX1ZBUklEX01BWCkKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9QUk9HUkFNX0xJTUlUX0VYQ0VFREVEKSwKLQkJCQkJCQkJZXJybXNnKCJ0b28g bWFueSBwYXR0ZXJuIHZhcmlhYmxlcyIpLAotCQkJCQkJCQllcnJkZXRhaWwoIk1heGltdW0gaXMg JWQuIiwgUlBSX1ZBUklEX01BWCArIDEpLAorCQkJCQkJCQllcnJtc2coInRvbyBtYW55IHJvdyBw YXR0ZXJuIHZhcmlhYmxlcyIpLAorCQkJCQkJCQllcnJkZXRhaWwoIlRoZSBtYXhpbXVtIG51bWJl ciBvZiByb3cgcGF0dGVybiB2YXJpYWJsZXMgaXMgJWQuIiwgUlBSX1ZBUklEX01BWCArIDEpLAog CQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAogCQkJCQkJCQkJCQkJICAgZXhwckxv Y2F0aW9uKChOb2RlICopIG5vZGUpKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFz ZS5vdXQKaW5kZXggYjM4NWU5NzJlN2YuLmEwZmUxM2UwM2MxIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtNzM5NCwxMCArNzM5NCwxMCBAQCBXSU5ET1cgdyBBUyAo CiAgICAgVjIyMSBBUyB2YWwgPiAwLCBWMjIyIEFTIHZhbCA+IDAsIFYyMjMgQVMgdmFsID4gMCwg VjIyNCBBUyB2YWwgPiAwLCBWMjI1IEFTIHZhbCA+IDAsIFYyMjYgQVMgdmFsID4gMCwgVjIyNyBB UyB2YWwgPiAwLCBWMjI4IEFTIHZhbCA+IDAsIFYyMjkgQVMgdmFsID4gMCwgVjIzMCBBUyB2YWwg PiAwLAogICAgIFYyMzEgQVMgdmFsID4gMCwgVjIzMiBBUyB2YWwgPiAwLCBWMjMzIEFTIHZhbCA+ IDAsIFYyMzQgQVMgdmFsID4gMCwgVjIzNSBBUyB2YWwgPiAwLCBWMjM2IEFTIHZhbCA+IDAsIFYy MzcgQVMgdmFsID4gMCwgVjIzOCBBUyB2YWwgPiAwLCBWMjM5IEFTIHZhbCA+IDAsIFYyNDAgQVMg dmFsID4gMAogKTsKLUVSUk9SOiAgdG9vIG1hbnkgcGF0dGVybiB2YXJpYWJsZXMKK0VSUk9SOiAg dG9vIG1hbnkgcm93IHBhdHRlcm4gdmFyaWFibGVzCiBMSU5FIDU6IC4uLlYyMzAgVjIzMSBWMjMy IFYyMzMgVjIzNCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgotREVUQUlMOiAgTWF4aW11bSBpcyAyNDAuCitERVRBSUw6ICBUaGUgbWF4aW11bSBudW1iZXIg b2Ygcm93IHBhdHRlcm4gdmFyaWFibGVzIGlzIDI0MC4KIC0tIFRlc3Q6IFBhdHRlcm4gbmVzdGlu ZyBhdCBtYXhpbXVtIGRlcHRoIChkZXB0aCAyNTMpCiAtLSBOb3RlOiAyNTMgbmVzdGVkIEdST1VQ ezMsN30/IHF1YW50aWZpZXJzOyByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdAogLS0gc3Vi amVjdCB0byBxdWFudGlmaWVyIG11bHRpcGxpY2F0aW9uLCBzbyB0aGUgbmVzdGluZyAoYW5kIGRl cHRoIDI1MykgaXMKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0017-reformat-tests.patch" Content-Disposition: attachment; filename="v50-0017-reformat-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmot325 RnJvbSAyMGVjY2Q2N2QyMTcxZjRlMjYyZTYzODM5N2E1ZThiM2QzZjQwY2JmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBNb24sIDIyIEp1biAyMDI2IDIzOjQ0OjMyICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjYv MjldIFJlZm9ybWF0IHJvdyBwYXR0ZXJuIHJlZ3Jlc3Npb24gdGVzdHMgZm9yCiByZWFkYWJpbGl0 eQoKQ29sbGFwc2UgdGhlIHBlci1yb3cgSU5TRVJUcyB0aGF0IHBvcHVsYXRlIHRoZSBzdG9jayB0 YWJsZSBpbnRvIGEgc2luZ2xlCm11bHRpLXZhbHVlIElOU0VSVCwgYW5kIGJyZWFrIHRoZSAyNDAv MjQxLXZhcmlhYmxlIFBBVFRFUk4gbGlzdHMgKG92ZXIKMjAwMCBjaGFyYWN0ZXJzIG9uIG9uZSBs aW5lKSBpbnRvIDIwLXZhcmlhYmxlIGxpbmVzLiAgUHVyZSB0ZXN0CmNvc21ldGljczogcXVlcnkg cmVzdWx0cyBhcmUgdW5jaGFuZ2VkOyBvbmx5IGVjaG9lZCBTUUwgYW5kIHRoZSBjYXJldApsaW5l IG9mIHRoZSB2YXJpYWJsZS1saW1pdCBlcnJvciBtb3ZlLgoKQmFzZWQgb24gYSBwYXRjaCBieSBK aWFuIEhlLgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICAgIHwgMzcg KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2Jhc2Uub3V0IHwgMzEgKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHIuc3FsICAgICAgICAgICB8IDM3ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICB8IDI3ICsrKysrKysrKysrKysrKysr LS0KIDQgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IDZhZDgzMGI5ZTM2Li5kYzVhYzk4MWZlYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMjAsMzEgKzIwLDE4IEBAIENSRUFURSBU QUJMRSBycHJfc3RvY2sgKAogXHNldCBmaWxlbmFtZSA6YWJzX3NyY2RpciAnL2RhdGEvc3RvY2su ZGF0YScKIENPUFkgcnByX3N0b2NrIEZST00gOidmaWxlbmFtZSc7CiBBTkFMWVpFIHJwcl9zdG9j azsKLUNSRUFURSBURU1QIFRBQkxFIHN0b2NrICgKLSAgICAgICBjb21wYW55IFRFWFQsCi0gICAg ICAgdGRhdGUgREFURSwKLSAgICAgICBwcmljZSBJTlRFR0VSCi0pOwotSU5TRVJUIElOVE8gc3Rv Y2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMScsIDEwMCk7Ci1JTlNFUlQgSU5UTyBz dG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAyJywgMjAwKTsKLUlOU0VSVCBJTlRP IHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDMnLCAxNTApOwotSU5TRVJUIElO VE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNCcsIDE0MCk7Ci1JTlNFUlQg SU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA1JywgMTUwKTsKLUlOU0VS VCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDYnLCA5MCk7Ci1JTlNF UlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA3JywgMTEwKTsKLUlO U0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDgnLCAxMzApOwot SU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wOScsIDEyMCk7 Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTEwJywgMTMw KTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDEnLCA1 MCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTAyJywg MjAwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3LTAz JywgMTUwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIzLTA3 LTA0JywgMTQwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIz LTA3LTA1JywgMTUwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcy MDIzLTA3LTA2JywgNjApOwotSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAn MjAyMy0wNy0wNycsIDExMDApOwotSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTIn LCAnMjAyMy0wNy0wOCcsIDEzMDApOwotSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFu eTInLCAnMjAyMy0wNy0wOScsIDEyMDApOwotSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29t cGFueTInLCAnMjAyMy0wNy0xMCcsIDEzMDApOworQ1JFQVRFIFRFTVAgVEFCTEUgc3RvY2sgKGNv bXBhbnkgVEVYVCwgdGRhdGUgREFURSwgcHJpY2UgSU5URUdFUik7CitJTlNFUlQgSU5UTyBzdG9j ayBWQUxVRVMKKygnY29tcGFueTEnLCAnMjAyMy0wNy0wMScsIDEwMCksICgnY29tcGFueTEnLCAn MjAyMy0wNy0wMicsIDIwMCksCisoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDMnLCAxNTApLCAoJ2Nv bXBhbnkxJywgJzIwMjMtMDctMDQnLCAxNDApLAorKCdjb21wYW55MScsICcyMDIzLTA3LTA1Jywg MTUwKSwgKCdjb21wYW55MScsICcyMDIzLTA3LTA2JywgOTApLAorKCdjb21wYW55MScsICcyMDIz LTA3LTA3JywgMTEwKSwgKCdjb21wYW55MScsICcyMDIzLTA3LTA4JywgMTMwKSwKKygnY29tcGFu eTEnLCAnMjAyMy0wNy0wOScsIDEyMCksICgnY29tcGFueTEnLCAnMjAyMy0wNy0xMCcsIDEzMCks CisoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDEnLCA1MCksICgnY29tcGFueTInLCAnMjAyMy0wNy0w MicsIDIwMDApLAorKCdjb21wYW55MicsICcyMDIzLTA3LTAzJywgMTUwMCksICgnY29tcGFueTIn LCAnMjAyMy0wNy0wNCcsIDE0MDApLAorKCdjb21wYW55MicsICcyMDIzLTA3LTA1JywgMTUwMCks ICgnY29tcGFueTInLCAnMjAyMy0wNy0wNicsIDYwKSwKKygnY29tcGFueTInLCAnMjAyMy0wNy0w NycsIDExMDApLCAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDgnLCAxMzAwKSwKKygnY29tcGFueTIn LCAnMjAyMy0wNy0wOScsIDEyMDApLCAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMTAnLCAxMzAwKTsK IFNFTEVDVCAqIEZST00gc3RvY2s7CiAgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgCiAt LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnBy X2Jhc2Uub3V0CmluZGV4IGEwZmUxM2UwM2MxLi4zY2VlMTVjN2JkMyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKQEAgLTczMjgsNyArNzMyOCwxOCBAQCBTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycwogV0lORE9XIHcgQVMgKAogICAgIE9SREVSIEJZ IGlkCiAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H Ci0gICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQgVjUgVjYgVjcgVjggVjkgVjEwIFYxMSBWMTIgVjEz IFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYyMCBWMjEgVjIyIFYyMyBWMjQgVjI1IFYyNiBWMjcg VjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3IFYzOCBWMzkgVjQwIFY0MSBW NDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDggVjQ5IFY1MCBWNTEgVjUyIFY1MyBWNTQgVjU1IFY1 NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBWNjMgVjY0IFY2NSBWNjYgVjY3IFY2OCBWNjkgVjcw IFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3NyBWNzggVjc5IFY4MCBWODEgVjgyIFY4MyBWODQg Vjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBW OTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0IFYxMDUgVjEwNiBWMTA3IFYxMDggVjEwOSBWMTEw IFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBWMTE2IFYxMTcgVjExOCBWMTE5IFYxMjAgVjEyMSBW MTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEyNyBWMTI4IFYxMjkgVjEzMCBWMTMxIFYxMzIgVjEz MyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzggVjEzOSBWMTQwIFYxNDEgVjE0MiBWMTQzIFYxNDQg VjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYxNTAgVjE1MSBWMTUyIFYxNTMgVjE1NCBWMTU1IFYx NTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYxIFYxNjIgVjE2MyBWMTY0IFYxNjUgVjE2NiBWMTY3 IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBWMTczIFYxNzQgVjE3NSBWMTc2IFYxNzcgVjE3OCBW MTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4NCBWMTg1IFYxODYgVjE4NyBWMTg4IFYxODkgVjE5 MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUgVjE5NiBWMTk3IFYxOTggVjE5OSBWMjAwIFYyMDEg VjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIwOCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYy MTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkgVjIyMCBWMjIxIFYyMjIgVjIyMyBWMjI0 IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBWMjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBW MjM2IFYyMzcgVjIzOCBWMjM5IFYyNDApCisgICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQgVjUgVjYg VjcgVjggVjkgVjEwIFYxMSBWMTIgVjEzIFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYyMAorICAg ICAgICAgICAgIFYyMSBWMjIgVjIzIFYyNCBWMjUgVjI2IFYyNyBWMjggVjI5IFYzMCBWMzEgVjMy IFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBWNDAKKyAgICAgICAgICAgICBWNDEgVjQyIFY0 MyBWNDQgVjQ1IFY0NiBWNDcgVjQ4IFY0OSBWNTAgVjUxIFY1MiBWNTMgVjU0IFY1NSBWNTYgVjU3 IFY1OCBWNTkgVjYwCisgICAgICAgICAgICAgVjYxIFY2MiBWNjMgVjY0IFY2NSBWNjYgVjY3IFY2 OCBWNjkgVjcwIFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3NyBWNzggVjc5IFY4MAorICAgICAg ICAgICAgIFY4MSBWODIgVjgzIFY4NCBWODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5 MyBWOTQgVjk1IFY5NiBWOTcgVjk4IFY5OSBWMTAwCisgICAgICAgICAgICAgVjEwMSBWMTAyIFYx MDMgVjEwNCBWMTA1IFYxMDYgVjEwNyBWMTA4IFYxMDkgVjExMCBWMTExIFYxMTIgVjExMyBWMTE0 IFYxMTUgVjExNiBWMTE3IFYxMTggVjExOSBWMTIwCisgICAgICAgICAgICAgVjEyMSBWMTIyIFYx MjMgVjEyNCBWMTI1IFYxMjYgVjEyNyBWMTI4IFYxMjkgVjEzMCBWMTMxIFYxMzIgVjEzMyBWMTM0 IFYxMzUgVjEzNiBWMTM3IFYxMzggVjEzOSBWMTQwCisgICAgICAgICAgICAgVjE0MSBWMTQyIFYx NDMgVjE0NCBWMTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0 IFYxNTUgVjE1NiBWMTU3IFYxNTggVjE1OSBWMTYwCisgICAgICAgICAgICAgVjE2MSBWMTYyIFYx NjMgVjE2NCBWMTY1IFYxNjYgVjE2NyBWMTY4IFYxNjkgVjE3MCBWMTcxIFYxNzIgVjE3MyBWMTc0 IFYxNzUgVjE3NiBWMTc3IFYxNzggVjE3OSBWMTgwCisgICAgICAgICAgICAgVjE4MSBWMTgyIFYx ODMgVjE4NCBWMTg1IFYxODYgVjE4NyBWMTg4IFYxODkgVjE5MCBWMTkxIFYxOTIgVjE5MyBWMTk0 IFYxOTUgVjE5NiBWMTk3IFYxOTggVjE5OSBWMjAwCisgICAgICAgICAgICAgVjIwMSBWMjAyIFYy MDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjExIFYyMTIgVjIxMyBWMjE0 IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwCisgICAgICAgICAgICAgVjIyMSBWMjIyIFYy MjMgVjIyNCBWMjI1IFYyMjYgVjIyNyBWMjI4IFYyMjkgVjIzMCBWMjMxIFYyMzIgVjIzMyBWMjM0 IFYyMzUgVjIzNiBWMjM3IFYyMzggVjIzOSBWMjQwKQogICAgIERFRklORQogICAgIFYxIEFTIHZh bCA+IDAsIFYyIEFTIHZhbCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFT IHZhbCA+IDAsIFY2IEFTIHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5 IEFTIHZhbCA+IDAsIFYxMCBBUyB2YWwgPiAwLAogICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMg dmFsID4gMCwgVjEzIEFTIHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwg VjE2IEFTIHZhbCA+IDAsIFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZh bCA+IDAsIFYyMCBBUyB2YWwgPiAwLApAQCAtNzM2Nyw3ICs3Mzc4LDE5IEBAIFNFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCiBXSU5ET1cgdyBBUyAoCiAgICAgT1JERVIgQlkg aWQKICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK LSAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjExIFYxMiBWMTMg VjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUgVjI2IFYyNyBW MjggVjI5IFYzMCBWMzEgVjMyIFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBWNDAgVjQxIFY0 MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2 IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4IFY2OSBWNzAg VjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwIFY4MSBWODIgVjgzIFY4NCBW ODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBWOTcgVjk4IFY5 OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBWMTA5IFYxMTAg VjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEyMCBWMTIxIFYx MjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3IFYxMjggVjEyOSBWMTMwIFYxMzEgVjEzMiBWMTMz IFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYxNDMgVjE0NCBW MTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0IFYxNTUgVjE1 NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcg VjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYx NzkgVjE4MCBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3IFYxODggVjE4OSBWMTkw IFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYyMDAgVjIwMSBW MjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjExIFYyMTIgVjIx MyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwIFYyMjEgVjIyMiBWMjIzIFYyMjQg VjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYy MzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxKQorICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0IFY1 IFY2IFY3IFY4IFY5IFYxMCBWMTEgVjEyIFYxMyBWMTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBWMjAK KyAgICAgICAgICAgICBWMjEgVjIyIFYyMyBWMjQgVjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMx IFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3IFYzOCBWMzkgVjQwCisgICAgICAgICAgICAgVjQxIFY0 MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2 IFY1NyBWNTggVjU5IFY2MAorICAgICAgICAgICAgIFY2MSBWNjIgVjYzIFY2NCBWNjUgVjY2IFY2 NyBWNjggVjY5IFY3MCBWNzEgVjcyIFY3MyBWNzQgVjc1IFY3NiBWNzcgVjc4IFY3OSBWODAKKyAg ICAgICAgICAgICBWODEgVjgyIFY4MyBWODQgVjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5 MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBWOTkgVjEwMAorICAgICAgICAgICAgIFYxMDEgVjEw MiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBWMTA5IFYxMTAgVjExMSBWMTEyIFYxMTMg VjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEyMAorICAgICAgICAgICAgIFYxMjEgVjEy MiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYxMjcgVjEyOCBWMTI5IFYxMzAgVjEzMSBWMTMyIFYxMzMg VjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4IFYxMzkgVjE0MAorICAgICAgICAgICAgIFYxNDEgVjE0 MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYxNTAgVjE1MSBWMTUyIFYxNTMg VjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkgVjE2MAorICAgICAgICAgICAgIFYxNjEgVjE2 MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcgVjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMg VjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYxNzkgVjE4MAorICAgICAgICAgICAgIFYxODEgVjE4 MiBWMTgzIFYxODQgVjE4NSBWMTg2IFYxODcgVjE4OCBWMTg5IFYxOTAgVjE5MSBWMTkyIFYxOTMg VjE5NCBWMTk1IFYxOTYgVjE5NyBWMTk4IFYxOTkgVjIwMAorICAgICAgICAgICAgIFYyMDEgVjIw MiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIwOCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYyMTMg VjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkgVjIyMAorICAgICAgICAgICAgIFYyMjEgVjIy MiBWMjIzIFYyMjQgVjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMg VjIzNCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkgVjI0MAorICAgICAgICAgICAgIFYyNDEpCiAg ICAgREVGSU5FCiAgICAgVjEgQVMgdmFsID4gMCwgVjIgQVMgdmFsID4gMCwgVjMgQVMgdmFsID4g MCwgVjQgQVMgdmFsID4gMCwgVjUgQVMgdmFsID4gMCwgVjYgQVMgdmFsID4gMCwgVjcgQVMgdmFs ID4gMCwgVjggQVMgdmFsID4gMCwgVjkgQVMgdmFsID4gMCwgVjEwIEFTIHZhbCA+IDAsCiAgICAg VjExIEFTIHZhbCA+IDAsIFYxMiBBUyB2YWwgPiAwLCBWMTMgQVMgdmFsID4gMCwgVjE0IEFTIHZh bCA+IDAsIFYxNSBBUyB2YWwgPiAwLCBWMTYgQVMgdmFsID4gMCwgVjE3IEFTIHZhbCA+IDAsIFYx OCBBUyB2YWwgPiAwLCBWMTkgQVMgdmFsID4gMCwgVjIwIEFTIHZhbCA+IDAsCkBAIC03Mzk1LDgg Kzc0MTgsOCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgVjIzMSBBUyB2YWwgPiAwLCBWMjMyIEFTIHZh bCA+IDAsIFYyMzMgQVMgdmFsID4gMCwgVjIzNCBBUyB2YWwgPiAwLCBWMjM1IEFTIHZhbCA+IDAs IFYyMzYgQVMgdmFsID4gMCwgVjIzNyBBUyB2YWwgPiAwLCBWMjM4IEFTIHZhbCA+IDAsIFYyMzkg QVMgdmFsID4gMCwgVjI0MCBBUyB2YWwgPiAwCiApOwogRVJST1I6ICB0b28gbWFueSByb3cgcGF0 dGVybiB2YXJpYWJsZXMKLUxJTkUgNTogLi4uVjIzMCBWMjMxIFYyMzIgVjIzMyBWMjM0IFYyMzUg VjIzNiBWMjM3IFYyMzggVjIzOSBWMjQwIFYyNDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitMSU5FIDE3OiAgICAg ICAgICAgICAgVjI0MSkKKyAgICAgICAgICAgICAgICAgICAgICBeCiBERVRBSUw6ICBUaGUgbWF4 aW11bSBudW1iZXIgb2Ygcm93IHBhdHRlcm4gdmFyaWFibGVzIGlzIDI0MC4KIC0tIFRlc3Q6IFBh dHRlcm4gbmVzdGluZyBhdCBtYXhpbXVtIGRlcHRoIChkZXB0aCAyNTMpCiAtLSBOb3RlOiAyNTMg bmVzdGVkIEdST1VQezMsN30/IHF1YW50aWZpZXJzOyByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJl IG5vdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggMzM2MzY5MWMwNDEuLjU5Y2UzZDAyMDBmIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwci5zcWwKQEAgLTI0LDMxICsyNCwxOCBAQCBDUkVBVEUgVEFCTEUgcnByX3N0b2Nr ICgKIENPUFkgcnByX3N0b2NrIEZST00gOidmaWxlbmFtZSc7CiBBTkFMWVpFIHJwcl9zdG9jazsK IAotQ1JFQVRFIFRFTVAgVEFCTEUgc3RvY2sgKAotICAgICAgIGNvbXBhbnkgVEVYVCwKLSAgICAg ICB0ZGF0ZSBEQVRFLAotICAgICAgIHByaWNlIElOVEVHRVIKLSk7Ci1JTlNFUlQgSU5UTyBzdG9j ayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAxJywgMTAwKTsKLUlOU0VSVCBJTlRPIHN0 b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDInLCAyMDApOwotSU5TRVJUIElOVE8g c3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMycsIDE1MCk7Ci1JTlNFUlQgSU5U TyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA0JywgMTQwKTsKLUlOU0VSVCBJ TlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDUnLCAxNTApOwotSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNicsIDkwKTsKLUlOU0VS VCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDcnLCAxMTApOwotSU5T RVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wOCcsIDEzMCk7Ci1J TlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA5JywgMTIwKTsK LUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMTAnLCAxMzAp OwotSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMScsIDUw KTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDInLCAy MDAwKTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDMn LCAxNTAwKTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDct MDQnLCAxNDAwKTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMt MDctMDUnLCAxNTAwKTsKLUlOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIw MjMtMDctMDYnLCA2MCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcy MDIzLTA3LTA3JywgMTEwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55Mics ICcyMDIzLTA3LTA4JywgMTMwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55 MicsICcyMDIzLTA3LTA5JywgMTIwMCk7Ci1JTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21w YW55MicsICcyMDIzLTA3LTEwJywgMTMwMCk7CitDUkVBVEUgVEVNUCBUQUJMRSBzdG9jayAoY29t cGFueSBURVhULCB0ZGF0ZSBEQVRFLCBwcmljZSBJTlRFR0VSKTsKK0lOU0VSVCBJTlRPIHN0b2Nr IFZBTFVFUworKCdjb21wYW55MScsICcyMDIzLTA3LTAxJywgMTAwKSwgKCdjb21wYW55MScsICcy MDIzLTA3LTAyJywgMjAwKSwKKygnY29tcGFueTEnLCAnMjAyMy0wNy0wMycsIDE1MCksICgnY29t cGFueTEnLCAnMjAyMy0wNy0wNCcsIDE0MCksCisoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDUnLCAx NTApLCAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDYnLCA5MCksCisoJ2NvbXBhbnkxJywgJzIwMjMt MDctMDcnLCAxMTApLCAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDgnLCAxMzApLAorKCdjb21wYW55 MScsICcyMDIzLTA3LTA5JywgMTIwKSwgKCdjb21wYW55MScsICcyMDIzLTA3LTEwJywgMTMwKSwK KygnY29tcGFueTInLCAnMjAyMy0wNy0wMScsIDUwKSwgKCdjb21wYW55MicsICcyMDIzLTA3LTAy JywgMjAwMCksCisoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDMnLCAxNTAwKSwgKCdjb21wYW55Mics ICcyMDIzLTA3LTA0JywgMTQwMCksCisoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDUnLCAxNTAwKSwg KCdjb21wYW55MicsICcyMDIzLTA3LTA2JywgNjApLAorKCdjb21wYW55MicsICcyMDIzLTA3LTA3 JywgMTEwMCksICgnY29tcGFueTInLCAnMjAyMy0wNy0wOCcsIDEzMDApLAorKCdjb21wYW55Mics ICcyMDIzLTA3LTA5JywgMTIwMCksICgnY29tcGFueTInLCAnMjAyMy0wNy0xMCcsIDEzMDApOwog CiBTRUxFQ1QgKiBGUk9NIHN0b2NrOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKaW5kZXgg YWY0OThmZmZiNjYuLmU3N2U1ODEzYjllIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCkBA IC00NDIwLDcgKzQ0MjAsMTggQEAgU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJv cnMKIFdJTkRPVyB3IEFTICgKICAgICBPUkRFUiBCWSBpZAogICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0 IFY1IFY2IFY3IFY4IFY5IFYxMCBWMTEgVjEyIFYxMyBWMTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBW MjAgVjIxIFYyMiBWMjMgVjI0IFYyNSBWMjYgVjI3IFYyOCBWMjkgVjMwIFYzMSBWMzIgVjMzIFYz NCBWMzUgVjM2IFYzNyBWMzggVjM5IFY0MCBWNDEgVjQyIFY0MyBWNDQgVjQ1IFY0NiBWNDcgVjQ4 IFY0OSBWNTAgVjUxIFY1MiBWNTMgVjU0IFY1NSBWNTYgVjU3IFY1OCBWNTkgVjYwIFY2MSBWNjIg VjYzIFY2NCBWNjUgVjY2IFY2NyBWNjggVjY5IFY3MCBWNzEgVjcyIFY3MyBWNzQgVjc1IFY3NiBW NzcgVjc4IFY3OSBWODAgVjgxIFY4MiBWODMgVjg0IFY4NSBWODYgVjg3IFY4OCBWODkgVjkwIFY5 MSBWOTIgVjkzIFY5NCBWOTUgVjk2IFY5NyBWOTggVjk5IFYxMDAgVjEwMSBWMTAyIFYxMDMgVjEw NCBWMTA1IFYxMDYgVjEwNyBWMTA4IFYxMDkgVjExMCBWMTExIFYxMTIgVjExMyBWMTE0IFYxMTUg VjExNiBWMTE3IFYxMTggVjExOSBWMTIwIFYxMjEgVjEyMiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYx MjcgVjEyOCBWMTI5IFYxMzAgVjEzMSBWMTMyIFYxMzMgVjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4 IFYxMzkgVjE0MCBWMTQxIFYxNDIgVjE0MyBWMTQ0IFYxNDUgVjE0NiBWMTQ3IFYxNDggVjE0OSBW MTUwIFYxNTEgVjE1MiBWMTUzIFYxNTQgVjE1NSBWMTU2IFYxNTcgVjE1OCBWMTU5IFYxNjAgVjE2 MSBWMTYyIFYxNjMgVjE2NCBWMTY1IFYxNjYgVjE2NyBWMTY4IFYxNjkgVjE3MCBWMTcxIFYxNzIg VjE3MyBWMTc0IFYxNzUgVjE3NiBWMTc3IFYxNzggVjE3OSBWMTgwIFYxODEgVjE4MiBWMTgzIFYx ODQgVjE4NSBWMTg2IFYxODcgVjE4OCBWMTg5IFYxOTAgVjE5MSBWMTkyIFYxOTMgVjE5NCBWMTk1 IFYxOTYgVjE5NyBWMTk4IFYxOTkgVjIwMCBWMjAxIFYyMDIgVjIwMyBWMjA0IFYyMDUgVjIwNiBW MjA3IFYyMDggVjIwOSBWMjEwIFYyMTEgVjIxMiBWMjEzIFYyMTQgVjIxNSBWMjE2IFYyMTcgVjIx OCBWMjE5IFYyMjAgVjIyMSBWMjIyIFYyMjMgVjIyNCBWMjI1IFYyMjYgVjIyNyBWMjI4IFYyMjkg VjIzMCBWMjMxIFYyMzIgVjIzMyBWMjM0IFYyMzUgVjIzNiBWMjM3IFYyMzggVjIzOSBWMjQwKQor ICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0IFY1IFY2IFY3IFY4IFY5IFYxMCBWMTEgVjEyIFYxMyBW MTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBWMjAKKyAgICAgICAgICAgICBWMjEgVjIyIFYyMyBWMjQg VjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0IFYzNSBWMzYgVjM3IFYzOCBW MzkgVjQwCisgICAgICAgICAgICAgVjQxIFY0MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkg VjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2IFY1NyBWNTggVjU5IFY2MAorICAgICAgICAgICAg IFY2MSBWNjIgVjYzIFY2NCBWNjUgVjY2IFY2NyBWNjggVjY5IFY3MCBWNzEgVjcyIFY3MyBWNzQg Vjc1IFY3NiBWNzcgVjc4IFY3OSBWODAKKyAgICAgICAgICAgICBWODEgVjgyIFY4MyBWODQgVjg1 IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkxIFY5MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBWOTkg VjEwMAorICAgICAgICAgICAgIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEw OCBWMTA5IFYxMTAgVjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkg VjEyMAorICAgICAgICAgICAgIFYxMjEgVjEyMiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYxMjcgVjEy OCBWMTI5IFYxMzAgVjEzMSBWMTMyIFYxMzMgVjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4IFYxMzkg VjE0MAorICAgICAgICAgICAgIFYxNDEgVjE0MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0 OCBWMTQ5IFYxNTAgVjE1MSBWMTUyIFYxNTMgVjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkg VjE2MAorICAgICAgICAgICAgIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcgVjE2 OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYxNzkg VjE4MAorICAgICAgICAgICAgIFYxODEgVjE4MiBWMTgzIFYxODQgVjE4NSBWMTg2IFYxODcgVjE4 OCBWMTg5IFYxOTAgVjE5MSBWMTkyIFYxOTMgVjE5NCBWMTk1IFYxOTYgVjE5NyBWMTk4IFYxOTkg VjIwMAorICAgICAgICAgICAgIFYyMDEgVjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYyMDcgVjIw OCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYyMTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4IFYyMTkg VjIyMAorICAgICAgICAgICAgIFYyMjEgVjIyMiBWMjIzIFYyMjQgVjIyNSBWMjI2IFYyMjcgVjIy OCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYyMzYgVjIzNyBWMjM4IFYyMzkg VjI0MCkKICAgICBERUZJTkUKICAgICBWMSBBUyB2YWwgPiAwLCBWMiBBUyB2YWwgPiAwLCBWMyBB UyB2YWwgPiAwLCBWNCBBUyB2YWwgPiAwLCBWNSBBUyB2YWwgPiAwLCBWNiBBUyB2YWwgPiAwLCBW NyBBUyB2YWwgPiAwLCBWOCBBUyB2YWwgPiAwLCBWOSBBUyB2YWwgPiAwLCBWMTAgQVMgdmFsID4g MCwKICAgICBWMTEgQVMgdmFsID4gMCwgVjEyIEFTIHZhbCA+IDAsIFYxMyBBUyB2YWwgPiAwLCBW MTQgQVMgdmFsID4gMCwgVjE1IEFTIHZhbCA+IDAsIFYxNiBBUyB2YWwgPiAwLCBWMTcgQVMgdmFs ID4gMCwgVjE4IEFTIHZhbCA+IDAsIFYxOSBBUyB2YWwgPiAwLCBWMjAgQVMgdmFsID4gMCwKQEAg LTQ0NTQsNyArNDQ2NSwxOSBAQCBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9y cwogV0lORE9XIHcgQVMgKAogICAgIE9SREVSIEJZIGlkCiAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCi0gICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQg VjUgVjYgVjcgVjggVjkgVjEwIFYxMSBWMTIgVjEzIFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYy MCBWMjEgVjIyIFYyMyBWMjQgVjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0 IFYzNSBWMzYgVjM3IFYzOCBWMzkgVjQwIFY0MSBWNDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDgg VjQ5IFY1MCBWNTEgVjUyIFY1MyBWNTQgVjU1IFY1NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBW NjMgVjY0IFY2NSBWNjYgVjY3IFY2OCBWNjkgVjcwIFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3 NyBWNzggVjc5IFY4MCBWODEgVjgyIFY4MyBWODQgVjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkx IFY5MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBWOTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0 IFYxMDUgVjEwNiBWMTA3IFYxMDggVjEwOSBWMTEwIFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBW MTE2IFYxMTcgVjExOCBWMTE5IFYxMjAgVjEyMSBWMTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEy NyBWMTI4IFYxMjkgVjEzMCBWMTMxIFYxMzIgVjEzMyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzgg VjEzOSBWMTQwIFYxNDEgVjE0MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYx NTAgVjE1MSBWMTUyIFYxNTMgVjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYx IFYxNjIgVjE2MyBWMTY0IFYxNjUgVjE2NiBWMTY3IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBW MTczIFYxNzQgVjE3NSBWMTc2IFYxNzcgVjE3OCBWMTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4 NCBWMTg1IFYxODYgVjE4NyBWMTg4IFYxODkgVjE5MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUg VjE5NiBWMTk3IFYxOTggVjE5OSBWMjAwIFYyMDEgVjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYy MDcgVjIwOCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYyMTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4 IFYyMTkgVjIyMCBWMjIxIFYyMjIgVjIyMyBWMjI0IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBW MjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBWMjM2IFYyMzcgVjIzOCBWMjM5IFYyNDAgVjI0 MSkKKyAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjExIFYxMiBW MTMgVjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwCisgICAgICAgICAgICAgVjIxIFYyMiBWMjMg VjI0IFYyNSBWMjYgVjI3IFYyOCBWMjkgVjMwIFYzMSBWMzIgVjMzIFYzNCBWMzUgVjM2IFYzNyBW MzggVjM5IFY0MAorICAgICAgICAgICAgIFY0MSBWNDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDgg VjQ5IFY1MCBWNTEgVjUyIFY1MyBWNTQgVjU1IFY1NiBWNTcgVjU4IFY1OSBWNjAKKyAgICAgICAg ICAgICBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4IFY2OSBWNzAgVjcxIFY3MiBWNzMg Vjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwCisgICAgICAgICAgICAgVjgxIFY4MiBWODMgVjg0 IFY4NSBWODYgVjg3IFY4OCBWODkgVjkwIFY5MSBWOTIgVjkzIFY5NCBWOTUgVjk2IFY5NyBWOTgg Vjk5IFYxMDAKKyAgICAgICAgICAgICBWMTAxIFYxMDIgVjEwMyBWMTA0IFYxMDUgVjEwNiBWMTA3 IFYxMDggVjEwOSBWMTEwIFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBWMTE2IFYxMTcgVjExOCBW MTE5IFYxMjAKKyAgICAgICAgICAgICBWMTIxIFYxMjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3 IFYxMjggVjEyOSBWMTMwIFYxMzEgVjEzMiBWMTMzIFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBW MTM5IFYxNDAKKyAgICAgICAgICAgICBWMTQxIFYxNDIgVjE0MyBWMTQ0IFYxNDUgVjE0NiBWMTQ3 IFYxNDggVjE0OSBWMTUwIFYxNTEgVjE1MiBWMTUzIFYxNTQgVjE1NSBWMTU2IFYxNTcgVjE1OCBW MTU5IFYxNjAKKyAgICAgICAgICAgICBWMTYxIFYxNjIgVjE2MyBWMTY0IFYxNjUgVjE2NiBWMTY3 IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBWMTczIFYxNzQgVjE3NSBWMTc2IFYxNzcgVjE3OCBW MTc5IFYxODAKKyAgICAgICAgICAgICBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3 IFYxODggVjE4OSBWMTkwIFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBW MTk5IFYyMDAKKyAgICAgICAgICAgICBWMjAxIFYyMDIgVjIwMyBWMjA0IFYyMDUgVjIwNiBWMjA3 IFYyMDggVjIwOSBWMjEwIFYyMTEgVjIxMiBWMjEzIFYyMTQgVjIxNSBWMjE2IFYyMTcgVjIxOCBW MjE5IFYyMjAKKyAgICAgICAgICAgICBWMjIxIFYyMjIgVjIyMyBWMjI0IFYyMjUgVjIyNiBWMjI3 IFYyMjggVjIyOSBWMjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBWMjM2IFYyMzcgVjIzOCBW MjM5IFYyNDAKKyAgICAgICAgICAgICBWMjQxKQogICAgIERFRklORQogICAgIFYxIEFTIHZhbCA+ IDAsIFYyIEFTIHZhbCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFTIHZh bCA+IDAsIFY2IEFTIHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5IEFT IHZhbCA+IDAsIFYxMCBBUyB2YWwgPiAwLAogICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMgdmFs ID4gMCwgVjEzIEFTIHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwgVjE2 IEFTIHZhbCA+IDAsIFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZhbCA+ IDAsIFYyMCBBUyB2YWwgPiAwLAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0018-coverage-tests.patch" Content-Disposition: attachment; filename="v50-0018-coverage-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmrvk26 RnJvbSAyMGVmNzNkYzQ1NjRmZDcxYzJmN2MxZWIyMDRjMTYzNzZhZWNhNzRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDIzIEp1biAyMDI2IDE0OjMxOjIxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjcv MjldIEFkZCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBjb3ZlcmFnZSB0ZXN0cyBhbmQgdGlkeQog dW5yZWFjaGFibGUgY29kZQoKRXh0ZW5kIHRoZSBSUFIgcmVncmVzc2lvbiBzdWl0ZSB0byBleGVy Y2lzZSBwYXRocyB0aGF0IGhhZCBubyBjb3ZlcmFnZToKaW50NjQgb3ZlcmZsb3cgaW4gbmF2aWdh dGlvbiBvZmZzZXRzIChORVhUL05FWFQoRklSU1QpL05FWFQoTEFTVCkpLApleGVjdXRvci1zaWRl IE5FRURTX0VWQUwgb2Zmc2V0IGV2YWx1YXRpb24gaW4gdmlzaXRfbmF2X2V4ZWMgKGJhcmUgTEFT VCwKY29tcG91bmQgTkVYVChMQVNUKS9QUkVWKEZJUlNUKSwgc2ltcGxlIEZJUlNUKSwgdGhlIHJ1 bnRpbWUgIk5hdiBNYXJrCkxvb2thaGVhZCIgcGxhbiBvdXRwdXQsIGEgdHlwbW9kIGNvZXJjaW9u IGFwcGxpZWQgdG8gYSBuYXZpZ2F0aW9uIHJlc3VsdCwKdGhlIHBhdHRlcm4gZWxlbWVudC1jb3Vu dCBsaW1pdCBpbiBzY2FuUlBSUGF0dGVybiwgYW5kIGFuIEVYQ0xVREUgVElFUwpudGhfdmFsdWUv bGFzdF92YWx1ZSBmcmFtZSBjYXNlLgoKVGlkeSB0aGUgZGVmZW5zaXZlIGNvZGUgdGhlc2UgdGVz dHMgY2Fubm90IHJlYWNoLCB3aXRoIG5vIGJlaGF2aW9yYWwgY2hhbmdlCmZvciB2YWxpZCBpbnB1 dDoKCi0gQ29udmVydCB0aGUgcHJvdmFibHkgbm9uLXVuZGVyZmxvd2luZyBhcml0aG1ldGljIGd1 YXJkcyBpbgogIEV4ZWNFdmFsUlBSTmF2U2V0IChQUkVWIC8gUFJFVl9GSVJTVCAvIFBSRVZfTEFT VCkgdG8gYXNzZXJ0aW9ucy4KCi0gUlBSUGF0dGVybiBpcyBhIHBsYW4vZXhlYy1vbmx5IG5vZGUg dGhhdCBlcXVhbCgpIG5ldmVyIGNvbXBhcmVzLCBzbyBtYXJrCiAgaXQgbm9fZXF1YWwgYW5kIGRy b3AgdGhlIGhhbmQtd3JpdHRlbiBfZXF1YWxSUFJQYXR0ZXJuLgoKLSBSZXBsYWNlIHRoZSB1bnJl YWNoYWJsZSBhbHRlcm5hdGlvbiBzY29wZS1lbmQgY2xhbXAgaW4gZGVwYXJzZV9ycHJfbm9kZQog IHdpdGggYW4gYXNzZXJ0aW9uLCBkcm9wIHRoZSBkZWFkIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9B TEwgbG9va2FoZWFkIGFybSwKICBzaW1wbGlmeSB0aGUgc3ltbWV0cmljIF9vdXRSUFJQYXR0ZXJu L19yZWFkUlBSUGF0dGVybiBlbGVtZW50LWFycmF5CiAgaGFuZGxpbmcsIGFuZCBtYWtlIHRoZSBJ R05PUkUgTlVMTFMgZnVuY25hbWUgZ3VhcmQgYSBzYWZlIGZhbGxiYWNrLgotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgICAgIHwgIDI3ICsrKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jICAgICAgICAgICAgICAgIHwgIDM0IC0tLS0tCiBzcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICAgICAgICAgICAgfCAgMzIgKystLQogc3JjL2Jh Y2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKy0tLS0t LQogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICAgICAgICAgICAgfCAgODQgKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0ICAgICAgICB8 ICAzOSArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgICAg IHwgMTM3ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf aW50ZWdyYXRpb24ub3V0IHwgICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25m YS5vdXQgICAgICAgICB8ICA1NSArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp bmRvdy5vdXQgICAgICAgICAgfCAgMzYgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5z cWwgICAgICAgICAgICAgICAgICB8ICA0OSArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfYmFzZS5zcWwgICAgICAgICAgICAgfCAgMzAgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX2V4cGxhaW4uc3FsICAgICAgICAgIHwgIDc3ICsrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9ycHJfbmZhLnNxbCAgICAgICAgICAgICAgfCAgNDIgKysrKysrCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC93aW5kb3cuc3FsICAgICAgICAgICAgICAgfCAgIDggKwogMTkgZmlsZXMgY2hhbmdl ZCwgNjU0IGluc2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKaW5kZXggYjNmYzMyNDcxOGQuLmFlYjE3YzFmNzkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC0zMDY5LDggKzMwNjksOCBAQCBkZXBhcnNlX3Jwcl9ub2RlKFJQUlBhdHRlcm4gKnBhdHRl cm4sIGludCBpZHgsIGludCBsaW1pdCwgU3RyaW5nSW5mbyBidWYpCiAJCWludAkJCWI7CiAJCWJv b2wJCWZpcnN0ID0gdHJ1ZTsKIAotCQlpZiAoYWx0RW5kID4gbGltaXQpCi0JCQlhbHRFbmQgPSBs aW1pdDsKKwkJLyogYW4gYWx0ZXJuYXRpb24ncyBkZXB0aC1kZXJpdmVkIHNjb3BlIGVuZCBuZXZl ciBleGNlZWRzIHRoZSBsaW1pdCAqLworCQlBc3NlcnQoYWx0RW5kIDw9IGxpbWl0KTsKIAogCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAJCWIgPSBpZHggKyAxOwpAQCAtMzI2Miwx MCArMzI2Miw2IEBAIHNob3dfd2luZG93X2RlZihXaW5kb3dBZ2dTdGF0ZSAqcGxhbnN0YXRlLCBM aXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRl eHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJydW50aW1lIiwKIAkJCQkJCQkJCQllcyk7CiAJCQkJ CWJyZWFrOwotCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTDoKLQkJCQkJRXhwbGFp blByb3BlcnR5VGV4dCgiTmF2IE1hcmsgTG9va2FoZWFkIiwgInJldGFpbiBhbGwiLAotCQkJCQkJ CQkJCWVzKTsKLQkJCQkJYnJlYWs7CiAJCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9GSVhFRDoKIAkJ CQkJaWYgKGZpcnN0T2Zmc2V0ID09IFBHX0lOVDY0X01BWCkKIAkJCQkJCUV4cGxhaW5Qcm9wZXJ0 eVRleHQoIk5hdiBNYXJrIExvb2thaGVhZCIsICJpbmZpbml0ZSIsCkBAIC0zMjc1LDYgKzMyNzEs NyBAQCBzaG93X3dpbmRvd19kZWYoV2luZG93QWdnU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5j ZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQogCQkJCQkJCQkJCQkgICBmaXJzdE9mZnNldCwgZXMp OwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgorCQkJCQkvKiBSUFJfTkFWX09GRlNFVF9SRVRB SU5fQUxMIGlzIGxvb2tiYWNrLW9ubHksIG5ldmVyIGhlcmUgKi8KIAkJCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBSUFIgbmF2IG9mZnNldCBraW5kOiAlZCIsCiAJCQkJCQkgZmlyc3RLaW5k KTsKIAkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCA4 MDVjODU4M2ZiMi4uNWI2MjgxZTllMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYwpAQCAtNjA5OCw4ICs2MDk4LDE0IEBAIEV4ZWNFdmFsUlBSTmF2U2V0KEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIAlzd2l0Y2gg KG9wLT5kLnJwcl9uYXYua2luZCkKIAl7CiAJCWNhc2UgUlBSX05BVl9QUkVWOgotCQkJaWYgKHBn X3N1Yl9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9mZnNldCwgJnRhcmdldF9w b3MpKQotCQkJCXRhcmdldF9wb3MgPSAtMTsKKworCQkJLyoKKwkJCSAqIGN1cnJlbnRwb3MgYW5k IG9mZnNldCBhcmUgYm90aCBub24tbmVnYXRpdmUsIHNvIHRoZSBzdWJ0cmFjdGlvbgorCQkJICog Y2Fubm90IHVuZGVyZmxvdzsgYXNzZXJ0IHRoZSBpbnZhcmlhbnQgcmF0aGVyIHRoYW4gZ3VhcmRp bmcgYW4KKwkJCSAqIHVucmVhY2hhYmxlIG92ZXJmbG93LgorCQkJICovCisJCQlBc3NlcnQoIXBn X3N1Yl9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9mZnNldCwgJnRhcmdldF9w b3MpKTsKKwkJCXRhcmdldF9wb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvcyAtIG9mZnNldDsKIAkJ CWJyZWFrOwogCQljYXNlIFJQUl9OQVZfTkVYVDoKIAkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93 KHdpbnN0YXRlLT5jdXJyZW50cG9zLCBvZmZzZXQsICZ0YXJnZXRfcG9zKSkKQEAgLTYxNDQsOCAr NjE1MCwxMiBAQCBFeGVjRXZhbFJQUk5hdlNldChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0 ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCQkJLyogQXBwbHkgb3V0ZXI6IFBSRVYg c3VidHJhY3RzLCBORVhUIGFkZHMgKi8KIAkJCQlpZiAob3AtPmQucnByX25hdi5raW5kID09IFJQ Ul9OQVZfUFJFVl9GSVJTVCkKIAkJCQl7Ci0JCQkJCWlmIChwZ19zdWJfczY0X292ZXJmbG93KGlu bmVyX3BvcywgY29tcG91bmRfb2Zmc2V0LCAmdGFyZ2V0X3BvcykpCi0JCQkJCQl0YXJnZXRfcG9z ID0gLTE7CisJCQkJCS8qCisJCQkJCSAqIGlubmVyX3BvcyBpcyBpbiBbMCwgY3VycmVudHBvc10g YW5kIGNvbXBvdW5kX29mZnNldCBpcworCQkJCQkgKiBub24tbmVnYXRpdmUsIHNvIHRoaXMgY2Fu bm90IHVuZGVyZmxvdy4KKwkJCQkJICovCisJCQkJCUFzc2VydCghcGdfc3ViX3M2NF9vdmVyZmxv dyhpbm5lcl9wb3MsIGNvbXBvdW5kX29mZnNldCwgJnRhcmdldF9wb3MpKTsKKwkJCQkJdGFyZ2V0 X3BvcyA9IGlubmVyX3BvcyAtIGNvbXBvdW5kX29mZnNldDsKIAkJCQl9CiAJCQkJZWxzZQogCQkJ CXsKQEAgLTYxNzksOCArNjE4OSwxMyBAQCBFeGVjRXZhbFJQUk5hdlNldChFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCQkJLyogQXBw bHkgb3V0ZXI6IFBSRVYgc3VidHJhY3RzLCBORVhUIGFkZHMgKi8KIAkJCQlpZiAob3AtPmQucnBy X25hdi5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUKQogCQkJCXsKLQkJCQkJaWYgKHBnX3N1Yl9z NjRfb3ZlcmZsb3coaW5uZXJfcG9zLCBjb21wb3VuZF9vZmZzZXQsICZ0YXJnZXRfcG9zKSkKLQkJ CQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQkJLyoKKwkJCQkJICogaW5uZXJfcG9zIGlzIGluIFtu YXZfbWF0Y2hfc3RhcnQsIGN1cnJlbnRwb3NdICg+PSAwKQorCQkJCQkgKiBhbmQgY29tcG91bmRf b2Zmc2V0IGlzIG5vbi1uZWdhdGl2ZSwgc28gdGhpcyBjYW5ub3QKKwkJCQkJICogdW5kZXJmbG93 LgorCQkJCQkgKi8KKwkJCQkJQXNzZXJ0KCFwZ19zdWJfczY0X292ZXJmbG93KGlubmVyX3Bvcywg Y29tcG91bmRfb2Zmc2V0LCAmdGFyZ2V0X3BvcykpOworCQkJCQl0YXJnZXRfcG9zID0gaW5uZXJf cG9zIC0gY29tcG91bmRfb2Zmc2V0OwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IGViMWQ2MTZiNDlhLi5hZTBmYjAzNjg2NyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtNDkzOCwxMiArNDkzOCwxMSBAQCBX aW5DaGVja0FuZEluaXRpYWxpemVOdWxsVHJlYXRtZW50KFdpbmRvd09iamVjdCB3aW5vYmosCiAJ ewogCQljb25zdCBjaGFyICpmdW5jbmFtZSA9IGdldF9mdW5jX25hbWUoZmNpbmZvLT5mbGluZm8t PmZuX29pZCk7CiAKLQkJaWYgKCFmdW5jbmFtZSkKLQkJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg Z2V0IGZ1bmN0aW9uIG5hbWUiKTsKKwkJLyogdGhlIGV4ZWN1dGluZyBmdW5jdGlvbidzIG5hbWUg YWx3YXlzIHJlc29sdmVzOyBzdGF5IHNhZmUgcmVnYXJkbGVzcyAqLwogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJy bXNnKCJmdW5jdGlvbiAlcyBkb2VzIG5vdCBhbGxvdyBSRVNQRUNUL0lHTk9SRSBOVUxMUyIsCi0J CQkJCQlmdW5jbmFtZSkpKTsKKwkJCQkJCWZ1bmNuYW1lID8gZnVuY25hbWUgOiAiPyIpKSk7CiAJ fQogCWVsc2UgaWYgKHdpbm9iai0+aWdub3JlX251bGxzID09IFBBUlNFUl9JR05PUkVfTlVMTFMp CiAJCXdpbm9iai0+aWdub3JlX251bGxzID0gSUdOT1JFX05VTExTOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jCmluZGV4IDMyODE5OTkxOGI4Li4xYmJkYTlhZDM2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YwpAQCAtMTUwLDQwICsxNTAsNiBAQCBfZXF1YWxCaXRtYXBzZXQoY29uc3QgQml0bWFwc2V0ICph LCBjb25zdCBCaXRtYXBzZXQgKmIpCiAJcmV0dXJuIGJtc19lcXVhbChhLCBiKTsKIH0KIAotc3Rh dGljIGJvb2wKLV9lcXVhbFJQUlBhdHRlcm4oY29uc3QgUlBSUGF0dGVybiAqYSwgY29uc3QgUlBS UGF0dGVybiAqYikKLXsKLQlDT01QQVJFX1NDQUxBUl9GSUVMRChudW1WYXJzKTsKLQlDT01QQVJF X1NDQUxBUl9GSUVMRChtYXhEZXB0aCk7Ci0JQ09NUEFSRV9TQ0FMQVJfRklFTEQobnVtRWxlbWVu dHMpOwotCi0JLyogQ29tcGFyZSB2YXJOYW1lcyBhcnJheSAqLwotCWlmIChhLT5udW1WYXJzID4g MCkKLQl7Ci0JCWlmIChhLT52YXJOYW1lcyA9PSBOVUxMIHx8IGItPnZhck5hbWVzID09IE5VTEwp Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgYS0+bnVtVmFyczsgaSsr KQotCQl7Ci0JCQlpZiAoc3RyY21wKGEtPnZhck5hbWVzW2ldLCBiLT52YXJOYW1lc1tpXSkgIT0g MCkKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQl9Ci0KLQkvKiBDb21wYXJlIGVsZW1lbnRzIGFy cmF5ICovCi0JaWYgKGEtPm51bUVsZW1lbnRzID4gMCkKLQl7Ci0JCWlmIChhLT5lbGVtZW50cyA9 PSBOVUxMIHx8IGItPmVsZW1lbnRzID09IE5VTEwpCi0JCQlyZXR1cm4gZmFsc2U7Ci0JCWlmICht ZW1jbXAoYS0+ZWxlbWVudHMsIGItPmVsZW1lbnRzLAotCQkJCSAgIGEtPm51bUVsZW1lbnRzICog c2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSkgIT0gMCkKLQkJCXJldHVybiBmYWxzZTsKLQl9Ci0K LQlDT01QQVJFX1NDQUxBUl9GSUVMRChpc0Fic29yYmFibGUpOwotCi0JcmV0dXJuIHRydWU7Ci19 Ci0KIC8qCiAgKiBMaXN0cyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkKICAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKaW5kZXggZTZlYTljZTIyZDkuLjBiMTQ1MzI5Y2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAg LTc1MywyNyArNzUzLDIzIEBAIF9vdXRSUFJQYXR0ZXJuKFN0cmluZ0luZm8gc3RyLCBjb25zdCBS UFJQYXR0ZXJuICpub2RlKQogCWVsc2UKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIg PD4iKTsKIAotCS8qIFdyaXRlIGVsZW1lbnRzIGFycmF5ICovCisJLyogV3JpdGUgZWxlbWVudHMg YXJyYXkgKG1ha2VSUFJQYXR0ZXJuIGd1YXJhbnRlZXMgbnVtRWxlbWVudHMgPj0gMikgKi8KIAlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6ZWxlbWVudHMiKTsKLQlpZiAobm9kZS0+bnVt RWxlbWVudHMgPiAwICYmIG5vZGUtPmVsZW1lbnRzICE9IE5VTEwpCisJQXNzZXJ0KG5vZGUtPm51 bUVsZW1lbnRzID4gMCAmJiBub2RlLT5lbGVtZW50cyAhPSBOVUxMKTsKKwlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihzdHIsICcgJyk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBub2RlLT5udW1FbGVtZW50 czsgaSsrKQogCXsKLQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnICcpOwotCQlmb3IgKGlu dCBpID0gMDsgaSA8IG5vZGUtPm51bUVsZW1lbnRzOyBpKyspCi0JCXsKLQkJCWNvbnN0IFJQUlBh dHRlcm5FbGVtZW50ICplbGVtID0gJm5vZGUtPmVsZW1lbnRzW2ldOwotCi0JCQlhcHBlbmRTdHJp bmdJbmZvKHN0ciwgIiglZCAlZCAldSAlZCAlZCAlZCAlZCkiLAotCQkJCQkJCSAoaW50KSBlbGVt LT52YXJJZCwKLQkJCQkJCQkgKGludCkgZWxlbS0+ZGVwdGgsCi0JCQkJCQkJICh1bnNpZ25lZCkg ZWxlbS0+ZmxhZ3MsCi0JCQkJCQkJIChpbnQpIGVsZW0tPm1pbiwKLQkJCQkJCQkgKGludCkgZWxl bS0+bWF4LAotCQkJCQkJCSAoaW50KSBlbGVtLT5uZXh0LAotCQkJCQkJCSAoaW50KSBlbGVtLT5q dW1wKTsKLQkJfQorCQljb25zdCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZub2RlLT5lbGVt ZW50c1tpXTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiglZCAlZCAldSAlZCAlZCAlZCAl ZCkiLAorCQkJCQkJIChpbnQpIGVsZW0tPnZhcklkLAorCQkJCQkJIChpbnQpIGVsZW0tPmRlcHRo LAorCQkJCQkJICh1bnNpZ25lZCkgZWxlbS0+ZmxhZ3MsCisJCQkJCQkgKGludCkgZWxlbS0+bWlu LAorCQkJCQkJIChpbnQpIGVsZW0tPm1heCwKKwkJCQkJCSAoaW50KSBlbGVtLT5uZXh0LAorCQkJ CQkJIChpbnQpIGVsZW0tPmp1bXApOwogCX0KLQllbHNlCi0JCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoc3RyLCAiIDw+Iik7CiAKIAlXUklURV9CT09MX0ZJRUxEKGlzQWJzb3JiYWJsZSk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL3JlYWRmdW5jcy5jCmluZGV4IDZjMzljNmZlMDZkLi5lODNlM2QyZjc4NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv cmVhZGZ1bmNzLmMKQEAgLTU5Nyw1NCArNTk3LDQ5IEBAIF9yZWFkUlBSUGF0dGVybih2b2lkKQog CiAJLyogUmVhZCBlbGVtZW50cyBhcnJheSAqLwogCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgp OyAvKiBza2lwIDplbGVtZW50cyAqLwotCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBn ZXQgJygnIG9yICc8PicgKi8KLQlpZiAobG9jYWxfbm9kZS0+bnVtRWxlbWVudHMgPiAwICYmIHRv a2VuWzBdID09ICcoJykKLQl7Ci0JCWxvY2FsX25vZGUtPmVsZW1lbnRzID0gcGFsbG9jMF9hcnJh eShSUFJQYXR0ZXJuRWxlbWVudCwgbG9jYWxfbm9kZS0+bnVtRWxlbWVudHMpOwotCQlmb3IgKGlu dCBpID0gMDsgaSA8IGxvY2FsX25vZGUtPm51bUVsZW1lbnRzOyBpKyspCi0JCXsKLQkJCVJQUlBh dHRlcm5FbGVtZW50ICplbGVtID0gJmxvY2FsX25vZGUtPmVsZW1lbnRzW2ldOwotCQkJaW50CQkJ dmFySWQsCi0JCQkJCQlmbGFncywKLQkJCQkJCWRlcHRoLAotCQkJCQkJbWluLAotCQkJCQkJbWF4 LAotCQkJCQkJbmV4dCwKLQkJCQkJCWp1bXA7Ci0KLQkJCS8qIFBhcnNlICIodmFySWQgZGVwdGgg ZmxhZ3MgbWluIG1heCBuZXh0IGp1bXApIiAqLwotCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0 aCk7Ci0JCQl2YXJJZCA9IGF0b2kodG9rZW4pOwotCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0 aCk7Ci0JCQlkZXB0aCA9IGF0b2kodG9rZW4pOwotCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0 aCk7Ci0JCQlmbGFncyA9IGF0b2kodG9rZW4pOwotCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0 aCk7Ci0JCQltaW4gPSBhdG9pKHRva2VuKTsKLQkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgp OwotCQkJbWF4ID0gYXRvaSh0b2tlbik7Ci0JCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsK LQkJCW5leHQgPSBhdG9pKHRva2VuKTsKLQkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwot CQkJanVtcCA9IGF0b2kodG9rZW4pOwotCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7IC8q IHNraXAgJyknICovCi0KLQkJCWVsZW0tPnZhcklkID0gKFJQUlZhcklkKSB2YXJJZDsKLQkJCWVs ZW0tPmZsYWdzID0gKFJQUkVsZW1GbGFncykgZmxhZ3M7Ci0JCQllbGVtLT5kZXB0aCA9IChSUFJE ZXB0aCkgZGVwdGg7Ci0JCQllbGVtLT5taW4gPSAoUlBSUXVhbnRpdHkpIG1pbjsKLQkJCWVsZW0t Pm1heCA9IChSUFJRdWFudGl0eSkgbWF4OwotCQkJZWxlbS0+bmV4dCA9IChSUFJFbGVtSWR4KSBu ZXh0OwotCQkJZWxlbS0+anVtcCA9IChSUFJFbGVtSWR4KSBqdW1wOwotCi0JCQkvKiBSZWFkIG5l eHQgZWxlbWVudCdzICcoJyBvciBlbmQgKi8KLQkJCWlmIChpIDwgbG9jYWxfbm9kZS0+bnVtRWxl bWVudHMgLSAxKQotCQkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBnZXQgJygnICov Ci0JCX0KLQl9Ci0JZWxzZQorCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBnZXQgJygn ICovCisJLyogb3V0IGFsd2F5cyBlbWl0cyB0aGUgYXJyYXkgKG1ha2VSUFJQYXR0ZXJuIGd1YXJh bnRlZXMgbnVtRWxlbWVudHMgPj0gMikgKi8KKwlBc3NlcnQobG9jYWxfbm9kZS0+bnVtRWxlbWVu dHMgPiAwICYmIHRva2VuWzBdID09ICcoJyk7CisJbG9jYWxfbm9kZS0+ZWxlbWVudHMgPSBwYWxs b2MwX2FycmF5KFJQUlBhdHRlcm5FbGVtZW50LCBsb2NhbF9ub2RlLT5udW1FbGVtZW50cyk7CisJ Zm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbF9ub2RlLT5udW1FbGVtZW50czsgaSsrKQogCXsKLQkJ bG9jYWxfbm9kZS0+ZWxlbWVudHMgPSBOVUxMOworCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9 ICZsb2NhbF9ub2RlLT5lbGVtZW50c1tpXTsKKwkJaW50CQkJdmFySWQsCisJCQkJCWZsYWdzLAor CQkJCQlkZXB0aCwKKwkJCQkJbWluLAorCQkJCQltYXgsCisJCQkJCW5leHQsCisJCQkJCWp1bXA7 CisKKwkJLyogUGFyc2UgIih2YXJJZCBkZXB0aCBmbGFncyBtaW4gbWF4IG5leHQganVtcCkiICov CisJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQl2YXJJZCA9IGF0b2kodG9rZW4pOwor CQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsKKwkJZGVwdGggPSBhdG9pKHRva2VuKTsKKwkJ dG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCWZsYWdzID0gYXRvaSh0b2tlbik7CisJCXRv a2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQltaW4gPSBhdG9pKHRva2VuKTsKKwkJdG9rZW4g PSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCW1heCA9IGF0b2kodG9rZW4pOworCQl0b2tlbiA9IHBn X3N0cnRvaygmbGVuZ3RoKTsKKwkJbmV4dCA9IGF0b2kodG9rZW4pOworCQl0b2tlbiA9IHBnX3N0 cnRvaygmbGVuZ3RoKTsKKwkJanVtcCA9IGF0b2kodG9rZW4pOworCQl0b2tlbiA9IHBnX3N0cnRv aygmbGVuZ3RoKTsgLyogc2tpcCAnKScgKi8KKworCQllbGVtLT52YXJJZCA9IChSUFJWYXJJZCkg dmFySWQ7CisJCWVsZW0tPmZsYWdzID0gKFJQUkVsZW1GbGFncykgZmxhZ3M7CisJCWVsZW0tPmRl cHRoID0gKFJQUkRlcHRoKSBkZXB0aDsKKwkJZWxlbS0+bWluID0gKFJQUlF1YW50aXR5KSBtaW47 CisJCWVsZW0tPm1heCA9IChSUFJRdWFudGl0eSkgbWF4OworCQllbGVtLT5uZXh0ID0gKFJQUkVs ZW1JZHgpIG5leHQ7CisJCWVsZW0tPmp1bXAgPSAoUlBSRWxlbUlkeCkganVtcDsKKworCQkvKiBS ZWFkIG5leHQgZWxlbWVudCdzICcoJyBvciBlbmQgKi8KKwkJaWYgKGkgPCBsb2NhbF9ub2RlLT5u dW1FbGVtZW50cyAtIDEpCisJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyogZ2V0ICco JyAqLwogCX0KIAogCVJFQURfQk9PTF9GSUVMRChpc0Fic29yYmFibGUpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaAppbmRleCBkNDVkOTNkNzlhMi4uN2M0ZWFjZGY4MmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o CkBAIC0xMjgyLDcgKzEyODIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUlBSUGF0dGVybkVsZW1lbnQK ICAqLwogdHlwZWRlZiBzdHJ1Y3QgUlBSUGF0dGVybgogewotCXBnX25vZGVfYXR0cihjdXN0b21f Y29weV9lcXVhbCwgY3VzdG9tX3JlYWRfd3JpdGUpCisJLyoKKwkgKiBSUFJQYXR0ZXJuIGlzIGEg cGxhbi9leGVjLW9ubHkgbm9kZSB3aXRoIGFycmF5cyB0aGF0IG5lZWQgYQorCSAqIGhhbmQtd3Jp dHRlbiBjb3B5IChjdXN0b21fY29weV9lcXVhbCksIGJ1dCBpdCBpcyBuZXZlciBjb21wYXJlZCBi eQorCSAqIGVxdWFsKCkgLS0gaXQgZG9lcyBub3QgYXBwZWFyIGluIHBhcnNlL3Jld3JpdGUgdHJl ZXMsIGFuZCBlcXVhbCgpIGhhcworCSAqIG5vIFBsYW4tbm9kZSByb3V0aW5lcyAtLSBzbyBlcXVh bCBzdXBwb3J0IGlzIHN1cHByZXNzZWQgd2l0aCBub19lcXVhbC4KKwkgKi8KKwlwZ19ub2RlX2F0 dHIoY3VzdG9tX2NvcHlfZXF1YWwsIGN1c3RvbV9yZWFkX3dyaXRlLCBub19lcXVhbCkKIAogCU5v ZGVUYWcJCXR5cGU7CQkJLyogVF9SUFJQYXR0ZXJuICovCiAJaW50CQkJbnVtVmFyczsJCS8qIG51 bWJlciBvZiBwYXR0ZXJuIHZhcmlhYmxlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0Cmlu ZGV4IGRjNWFjOTgxZmVjLi41MmJlNTQwMzllNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91 dApAQCAtMTg1Miw2ICsxODUyLDI3IEBAIFdJTkRPVyB3IEFTICgKICBjb21wYW55MiB8IDA3LTEw LTIwMjMgfCAgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAogKDIwIHJv d3MpCiAKKy0tIFR5cG1vZCBjb2VyY2lvbiBvdmVyIGEgbmF2aWdhdGlvbiByZXN1bHQ6IGNhc3Rp bmcgUFJFVihwKSAoYSBudW1lcmljKDEwLDMpCistLSBjb2x1bW4pIHRvIGEgbmFycm93ZXIgbnVt ZXJpYyg4LDIpIGluc2lkZSBERUZJTkUgZm9yY2VzIGNvZXJjZV90eXBlX3R5cG1vZCwKKy0tIHdo aWNoIGNhbGxzIGV4cHJUeXBtb2QoKSBvbiB0aGUgUlBSTmF2RXhwci4KK0NSRUFURSBURU1QIFRB QkxFIHJwcl90eXBtb2QgKGlkIGludCwgcCBudW1lcmljKDEwLDMpKTsKK0lOU0VSVCBJTlRPIHJw cl90eXBtb2QgVkFMVUVTICgxLCAxLjUpLCAoMiwgMi41KSwgKDMsIDMuNSk7CitTRUxFQ1QgaWQs IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX3R5cG1vZAorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIENBU1QoUFJFVihwKSBBUyBudW1lcmljKDgsMikpID4gMAorKTsKKyBpZCB8IGNudCAKKy0t LS0rLS0tLS0KKyAgMSB8ICAgMworICAyIHwgICAwCisgIDMgfCAgIDAKKygzIHJvd3MpCisKK0RS T1AgVEFCTEUgcnByX3R5cG1vZDsKIC0tCiAtLSBGSVJTVC9MQVNUIG5hdmlnYXRpb24KIC0tCkBA IC0yMjgzLDYgKzIzMDQsNTkgQEAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIE5FWFQoTEFTVCh2YWwpLCAt MSkgSVMgTlVMTAogKTsKIEVSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVz dCBub3QgYmUgbmVnYXRpdmUKKy0tIE91dGVyIG9mZnNldCBvdmVyZmxvd3MgaW50NjQ6IHRhcmdl dCBwb3NpdGlvbiBvdXQgb2YgcmFuZ2UgLT4gTlVMTC4KKy0tIFBsYWluIE5FWFQodmFsLCBJTlQ2 NF9NQVgpOiBjdXJyZW50cG9zICsgSU5UNjRfTUFYIG92ZXJmbG93cy4KK1NFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQodmFsLCA5MjIzMzcyMDM2 ODU0Nzc1ODA3KSBJUyBOVUxMCispOworIGlkIHwgdmFsIHwgY291bnQgCistLS0tKy0tLS0tKy0t LS0tLS0KKyAgMSB8ICAxMCB8ICAgICA2CisgIDIgfCAgMjAgfCAgICAgMAorICAzIHwgIDMwIHwg ICAgIDAKKyAgNCB8ICAxMCB8ICAgICAwCisgIDUgfCAgNTAgfCAgICAgMAorICA2IHwgIDEwIHwg ICAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5kIE5FWFQoRklSU1QoKSk6IG91dGVyIG9mZnNl dCBvdmVyZmxvdy4gIElubmVyIG9mZnNldCAxIGZvcmNlcworLS0gaW5uZXJfcG9zID49IDEsIHNv IGlubmVyX3BvcyArIElOVDY0X01BWCBvdmVyZmxvd3MgYXQgZXZlcnkgbWF0Y2guCitTRUxFQ1Qg aWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMg TkVYVChGSVJTVCh2YWwsIDEpLCA5MjIzMzcyMDM2ODU0Nzc1ODA3KSBJUyBOVUxMCispOworIGlk IHwgdmFsIHwgY291bnQgCistLS0tKy0tLS0tKy0tLS0tLS0KKyAgMSB8ICAxMCB8ICAgICA2Cisg IDIgfCAgMjAgfCAgICAgMAorICAzIHwgIDMwIHwgICAgIDAKKyAgNCB8ICAxMCB8ICAgICAwCisg IDUgfCAgNTAgfCAgICAgMAorICA2IHwgIDEwIHwgICAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBv dW5kIE5FWFQoTEFTVCgpKTogb3V0ZXIgb2Zmc2V0IG92ZXJmbG93LgorU0VMRUNUIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKHZhbCksIDkyMjMz NzIwMzY4NTQ3NzU4MDcpIElTIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjb3VudCAKKy0tLS0rLS0t LS0rLS0tLS0tLQorICAxIHwgIDEwIHwgICAgIDYKKyAgMiB8ICAyMCB8ICAgICAwCisgIDMgfCAg MzAgfCAgICAgMAorICA0IHwgIDEwIHwgICAgIDAKKyAgNSB8ICA1MCB8ICAgICAwCisgIDYgfCAg MTAgfCAgICAgMAorKDYgcm93cykKKwogLS0gQ29tcG91bmQ6IGRlZmF1bHQgb2Zmc2V0cyBvbiBi b3RoIHNpZGVzCiAtLSBQUkVWKEZJUlNUKHZhbCkpOiBpbm5lcj0wIChtYXRjaF9zdGFydCksIG91 dGVyPTEgLT4gdGFyZ2V0ID0gbWF0Y2hfc3RhcnQgLSAxCiBTRUxFQ1QgaWQsIHZhbCwgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudApAQCAtMjMzOCw2 ICsyNDEyLDE2IEBAIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyBORVhUKExBU1QodmFsLCAtMSksIDEpIElT IE5VTEwKICk7CiBFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90 IGJlIG5lZ2F0aXZlCistLSBPZmZzZXQgYXJndW1lbnQgd2hvc2UgdHlwZSBoYXMgbm8gaW1wbGlj aXQgY2FzdCB0byBiaWdpbnQgKHBhcnNlIGVycm9yKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCop IE9WRVIgdyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIHZhbCA+IFBSRVYodmFsLCAx LjUpCispOworRVJST1I6ICBvZmZzZXQgYXJndW1lbnQgb2YgUFJFViBtdXN0IGJlIHR5cGUgYmln aW50LCBub3QgdHlwZSBudW1lcmljCitMSU5FIDU6ICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFT IHZhbCA+IFBSRVYodmFsLCAxLjUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCiAtLSBDb21wb3VuZCArIGhvc3QgdmFyaWFibGUgb2Zmc2V0cwog UFJFUEFSRSB0ZXN0X2NvbXBvdW5kX29mZnNldChpbnQ4LCBpbnQ4KSBBUwogU0VMRUNUIGlkLCB2 YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggM2NlZTE1YzdiZDMuLjMz ZmNiNDBiMWE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNl Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMTcw Myw2ICsxNzAzLDIxIEBAIEVSUk9SOiAgcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4g MSBhbmQgMjE0NzQ4MzY0NgogTElORSA2OiAgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30pCiAg ICAgICAgICAgICAgICAgICAgICAgICBeCiBEUk9QIFRBQkxFIHJwcl9ib3VuZHM7CistLSBQYXR0 ZXJuIGVsZW1lbnQtY291bnQgYm91bmRhcnkgYXQgUlBSX0VMRU1JRFhfTUFYICgzMjc2NykuICBB bHRlcm5hdGluZworLS0gZGlzdGluY3QgdmFyaWFibGVzIHN0b3AgdGhlIG9wdGltaXplciBmcm9t IG1lcmdpbmcgY29uc2VjdXRpdmUgZWxlbWVudHMsIHNvCistLSBlYWNoICJBIEIiIHBhaXIgY29u dHJpYnV0ZXMgdHdvIGVsZW1lbnRzOyBzY2FuUlBSUGF0dGVybiBhZGRzIG9uZSBGSU4gbWFya2Vy LgorLS0gRUNITyBpcyBzaWxlbmNlZCBzbyB0aGUgZ2VuZXJhdGVkIG11bHRpLXRob3VzYW5kLXRv a2VuIHBhdHRlcm5zIGRvIG5vdCBmbG9vZAorLS0gdGhlIGV4cGVjdGVkIG91dHB1dC4KKy0tICAg MTYzODMgcGFpcnMgICAgICAgICAtPiAzMjc2NiArIDEgRklOID0gMzI3NjcgPSBtYXhpbXVtLCBh Y2NlcHRlZC4KKy0tICAgMTYzODMgcGFpcnMgKyBvbmUgQSAtPiAzMjc2NyArIDEgRklOID0gMzI3 NjggPiBtYXhpbXVtLCByZWplY3RlZC4KK1xzZXQgRUNITyBub25lCisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworRVJST1I6ICBwYXR0ZXJuIHRvbyBjb21wbGV4CitERVRBSUw6 ICBQYXR0ZXJuIGhhcyAzMjc2OCBlbGVtZW50cywgbWF4aW11bSBpcyAzMjc2Ny4KIC0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog LS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYgLyBORVhUIC8gRklSU1QgLyBMQVNU KQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkBAIC0yMTk4LDYgKzIyMTMsMzAgQEAgU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdu YXZuc19mbicpOwogKDEgcm93KQogCiBEUk9QIFZJRVcgbmF2bnNfbmF2LCBuYXZuc19mbjsKKy0t IEEgcXVhbGlmaWVkIGxhc3QoKSBpbiBERUZJTkUgbXVzdCBzdGF5IHNjaGVtYS1xdWFsaWZpZWQg b24gZGVwYXJzZSBzbyB0aGF0CistLSBpdCBkb2VzIG5vdCByZXBhcnNlIGFzIHRoZSBMQVNUIG5h dmlnYXRpb24gZnVuY3Rpb24gKGZvcmNlLXF1YWxpZnkgcGF0aCkKK0NSRUFURSBGVU5DVElPTiBy cHJfbmF2bnMubGFzdChpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIgQVMgJ1NFTEVDVCAtOTk5JyBM QU5HVUFHRSBzcWwgSU1NVVRBQkxFOworQ1JFQVRFIFZJRVcgbmF2bnNfZm5fbGFzdCBBUworICBT RUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgRlJPTSBudAorICBXSU5ET1cgdyBBUyAo UEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJTkUg QSBBUyBycHJfbmF2bnMubGFzdCh2YWwpID0gLTk5OSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J25hdm5zX2ZuX2xhc3QnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgIEZST00gbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoUEFS VElUSU9OIEJZIGcgT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhKykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgYSBBUyAocnByX25hdm5zLmxhc3QodmFsKSA9ICctOTk5Jzo6aW50ZWdlcikgKTsKKygxIHJv dykKKworRFJPUCBWSUVXIG5hdm5zX2ZuX2xhc3Q7CitEUk9QIEZVTkNUSU9OIHJwcl9uYXZucy5s YXN0KGludGVnZXIpOwogLS0gQXR0cmlidXRlIG5vdGF0aW9uIGlzIGZpZWxkIHNlbGVjdGlvbiBv bmx5LCBuZXZlciBhIGZ1bmN0aW9uIGZhbGxiYWNrCiBDUkVBVEUgVFlQRSBycHJfbmF2bnNfcGFp ciBBUyAoZmlyc3QgaW50LCBsYXN0IGludCk7CiBDUkVBVEUgVEFCTEUgY3QgKGlkIGludCwgcCBy cHJfbmF2bnNfcGFpcik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jw cl9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0 CmluZGV4IDg2NzJiNGMzMDU1Li5kODM0M2M5YWNjYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAgLTYwMjMsNiArNjAyMywzMSBAQCBFWFBMQUlOIChDT1NU UyBPRkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogCiBSRVNFVCBwbGFuX2Nh Y2hlX21vZGU7CiBERUFMTE9DQVRFIHRlc3Rfb3ZlcmZsb3dfbG9va2FoZWFkOworLS0gUnVudGlt ZSAobm9uLW92ZXJmbG93KSBsb29rYWhlYWQ6IGEgc21hbGwgcGFyYW1ldGVyIG9mZnNldCB1bmRl ciBhIGdlbmVyaWMKKy0tIHBsYW4ga2VlcHMgdGhlIEZJUlNUIG9mZnNldCB1bnJlc29sdmVkIGF0 IHBsYW4gdGltZSwgc28gRVhQTEFJTiByZXBvcnRzCistLSAiTmF2IE1hcmsgTG9va2FoZWFkOiBy dW50aW1lIiByYXRoZXIgdGhhbiBhIGNvbmNyZXRlIHZhbHVlLgorUFJFUEFSRSBwX2ZpcnN0X3J1 bnRpbWUoaW50OCwgaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBORVhUKEZJUlNUKHYsICQxKSwgJDIpIElTIE5PVCBOVUxMCispOworU0VUIHBs YW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBwX2ZpcnN0X3J1bnRpbWUoMSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgTmF2IE1hcmsgTG9va2FoZWFkOiBydW50aW1lCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDYgcm93cykKKworUkVTRVQgcGxhbl9jYWNoZV9tb2Rl OworREVBTExPQ0FURSBwX2ZpcnN0X3J1bnRpbWU7CiAtLSBQUkVWKHYpICsgUFJFVih2LCAkMSk6 IE5FRURTX0VWQUwgcGF0aCBtdXN0IGFjY291bnQgZm9yIGltcGxpY2l0IGxvb2tiYWNrPTEKIC0t IFByZXZpb3VzbHksIGV2YWxfbmF2X21heF9vZmZzZXRfd2Fsa2VyIHNraXBwZWQgUFJFVih2KSB3 aGVuIG9mZnNldF9hcmcgd2FzCiAtLSBOVUxMLCBjYXVzaW5nIG1heE9mZnNldD0wIHdoZW4gJDE9 MCwgd2hpY2ggd291bGQgdHJpbSB0aGUgcm93IG5lZWRlZCBieQpAQCAtNjA1MSw2ICs2MDc2LDEx OCBAQCBFWEVDVVRFIHRlc3RfcHJldl9pbXBsaWNpdF9vZmZzZXQoMCk7CiAoMTAgcm93cykKIAog REVBTExPQ0FURSB0ZXN0X3ByZXZfaW1wbGljaXRfb2Zmc2V0OworLS0gTkVFRFNfRVZBTCBleGVj dXRvciBvZmZzZXQgcGF0aHM6IGEgUGFyYW0gbmF2IG9mZnNldCBzdGF5cyBub24tQ29uc3QgdW5k ZXIgYQorLS0gZ2VuZXJpYyBwbGFuLCBzbyB0aGUgcGxhbm5lciBtYXJrcyB0aGUgb2Zmc2V0IE5F RURTX0VWQUwgYW5kIHRoZSBleGVjdXRvcgorLS0gcmVzb2x2ZXMgaXQgYXQgaW5pdCB2aWEgZXZh bF9kZWZpbmVfb2Zmc2V0cyAtPiB2aXNpdF9uYXZfZXhlYy4gIEVhY2ggcXVlcnkKKy0tIGJlbG93 IGV4ZXJjaXNlcyBhIGRpZmZlcmVudCBuYXZpZ2F0aW9uIGFybSBvZiB0aGF0IHdhbGtlci4KKy0t IFNpbXBsZSBGSVJTVCh2LCAkMSk6IGZvcndhcmQtcmVhY2ggRklSU1QgYXJtLgorUFJFUEFSRSB0 ZXN0X2V2YWxfZmlyc3QoaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyBGSVJTVCh2LCAkMSkgSVMgTk9UIE5VTEwKKyk7CitTRVQgcGxhbl9jYWNo ZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhFQ1VURSB0ZXN0X2V2YWxfZmlyc3QoMSk7 CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAg MAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKygxMCByb3dzKQorCitS RVNFVCBwbGFuX2NhY2hlX21vZGU7CitERUFMTE9DQVRFIHRlc3RfZXZhbF9maXJzdDsKKy0tIEJh cmUgTEFTVCh2LCAkMSk6IGJhY2t3YXJkLXJlYWNoIExBU1Qtd2l0aC1vZmZzZXQgYXJtLgorUFJF UEFSRSB0ZXN0X2V2YWxfbGFzdChpbnQ4KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIExBU1QodiwgJDEpID49IDAKKyk7CitTRVQgcGxhbl9jYWNoZV9t b2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhFQ1VURSB0ZXN0X2V2YWxfbGFzdCgxKTsKKyBj b3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisg ICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorKDEwIHJvd3MpCisKK1JFU0VU IHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgdGVzdF9ldmFsX2xhc3Q7CistLSBDb21wb3Vu ZCBORVhUKExBU1QodiwgJDEpLCAkMik6IGJhY2t3YXJkLXJlYWNoIE5FWFRfTEFTVCBhcm0uCitQ UkVQQVJFIHRlc3RfZXZhbF9uZXh0bGFzdChpbnQ4LCBpbnQ4KSBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoTEFTVCh2LCAkMSksICQyKSA+IDAK Kyk7CitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhFQ1VURSB0 ZXN0X2V2YWxfbmV4dGxhc3QoMSwgMSk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAg MAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAw CisgICAgIDAKKygxMCByb3dzKQorCitSRVNFVCBwbGFuX2NhY2hlX21vZGU7CitERUFMTE9DQVRF IHRlc3RfZXZhbF9uZXh0bGFzdDsKKy0tIENvbXBvdW5kIFBSRVYoRklSU1QodiwgJDEpLCAkMik6 IGZvcndhcmQtcmVhY2ggUFJFVl9GSVJTVCBhcm0uCitQUkVQQVJFIHRlc3RfZXZhbF9wcmV2Zmly c3QoaW50OCwgaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyBQUkVWKEZJUlNUKHYsICQxKSwgJDIpIElTIE5PVCBOVUxMCispOworU0VUIHBsYW5f Y2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYRUNVVEUgdGVzdF9ldmFsX3ByZXZm aXJzdCgxLCAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAgICAwCisgICAgIDAKKyAg ICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorKDEw IHJvd3MpCisKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgdGVzdF9ldmFsX3By ZXZmaXJzdDsKIC0tIFJ1bnRpbWUgZXJyb3I6IG5lZ2F0aXZlIG9mZnNldCBhdCBleGVjdXRpb24g dGltZQogUFJFUEFSRSB0ZXN0X3J1bnRpbWVfbmVnX29mZnNldChpbnQ4KSBBUwogU0VMRUNUIGNv dW50KCopIE9WRVIgdwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf aW50ZWdyYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRp b24ub3V0CmluZGV4IDY1Mjk4OTkyN2Q3Li41NDFhZDM1ZGU0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dApAQCAtMTA5OCw2ICsxMDk4LDEwIEBA IEVYRUNVVEUgcnByX3ByZXYoMSk7CiAgMTAgfCAgNDUgfCAgIDAKICgxMCByb3dzKQogCistLSBO ZWdhdGl2ZSBydW50aW1lIG5hdiBvZmZzZXQgdW5kZXIgdGhlIGdlbmVyaWMgcGxhbjogaW5pdCBj bGFtcHMgaXQgdG8gMCBmb3IKKy0tIHRyaW0gc2l6aW5nLCBidXQgdGhlIHBlci1yb3cgbmF2aWdh dGlvbiByZWplY3RzIHRoZSBuZWdhdGl2ZSBvZmZzZXQuCitFWEVDVVRFIHJwcl9wcmV2KC0xKTsK K0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRp dmUKIFJFU0VUIHBsYW5fY2FjaGVfbW9kZTsKIERFQUxMT0NBVEUgcnByX3ByZXY7CiAtLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CmluZGV4IDFmYzg1YTM2NWY2Li4yMmQy NDQ3MDdjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CkBAIC0xMjg3LDYg KzEyODcsMjcgQEAgT1JERVIgQlkgaWQ7CiAgIDQgfCAgMCB8ICAwIHwgIDAgfCAgMCB8ICAgMCB8 ICAwIHwgIDAKICg0IHJvd3MpCiAKKy0tIERvdWJseS1uZXN0ZWQgcmVsdWN0YW50IG51bGxhYmxl IGdyb3VwOiAoKChBPz8pezIsfT8pezIsfT8pLiAgUmVsdWN0YW50CistLSBxdWFudGlmaWVycyBk aXNhYmxlIG9wdGltaXplciBmbGF0dGVuaW5nLCBzbyBib3RoIGxldmVscyBzdXJ2aXZlIGFuZCB0 aGUKKy0tIGlubmVyIGdyb3VwJ3MgRU5ELT5uZXh0IGxhbmRzIG9uIHRoZSBvdXRlciBFTkQuICBU aGlzIGV4ZXJjaXNlcyB0aGUKKy0tIEVORC0+RU5EIGNvdW50IGluY3JlbWVudCBpbiB0aGUgRU1Q VFlfTE9PUCBmYXN0LWZvcndhcmQgKGNvdW50IDwgbWluKS4KK1dJVEggdChpZCwgaXNhKSBBUyAo VkFMVUVTICgxLCB0cnVlKSwgKDIsIHRydWUpLCAoMywgZmFsc2UpKQorU0VMRUNUIGlkLCBjb3Vu dCgqKSBPVkVSIHcgQVMgYworRlJPTSB0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOICgoKEE/Pyl7Mix9Pyl7Mix9PykKKyAgICBERUZJTkUgQSBBUyBpc2EKKykKK09S REVSIEJZIGlkOworIGlkIHwgYyAKKy0tLS0rLS0tCisgIDEgfCAwCisgIDIgfCAwCisgIDMgfCAw CisoMyByb3dzKQorCiAtLSBOb24tbGVhZGluZyByZWx1Y3RhbnQgb3B0aW9uYWwgR1JPVVAgd2l0 aCBhIGZvbGxvd2VyOiAoQiAoQSBYKT8/IEMpCiAtLSBMaWtlIHRoZSBWQVIgY2FzZSBhYm92ZSBi dXQgYSBtdWx0aS1lbGVtZW50IGdyb3VwOyBpdCBnb2VzIHRocm91Z2ggdGhlCiAtLSBiZWdpbiBw YXRoLCB3aGljaCBhbHJlYWR5IGhvbm9ycyByZWx1Y3RhbnQgb3JkZXJpbmcuCkBAIC0xMzIzLDYg KzEzNDQsNDAgQEAgV0lORE9XIHcgQVMgKAogICA0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAogKDQgcm93cykKIAorLS0gUmVsdWN0YW50IG51bGxhYmxlIGdyb3VwIHdpdGggYSBy ZXF1aXJlZCBmb2xsb3dlcjogKChBPz8pezIsfT8gQikuCistLSBtaW49MiBmb3JjZXMgdGhlIHJl bHVjdGFudCBmYXN0LWZvcndhcmQgdG8gbG9vcCBiYWNrIChpdCBjYW5ub3QgZXhpdCB0bworLS0g RklOIHVudGlsIEIgbWF0Y2hlcyksIGV4ZXJjaXNpbmcgdGhlIGxvb3AtYmFjayByb3V0ZV90b19l bGVtIHNlY29uZCBjYWxsCistLSBzaXRlIGluIG5mYV9hZHZhbmNlX2VuZC4gIEIgZmFpbHMgYXQg dGhlIGdyb3VwJ3MgZXhpdCByb3csIHNvIG9ubHkgdGhlCistLSBmaXJzdCBtYXRjaCBzdXJ2aXZl cy4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGVfZm9sbG93ZXIgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlb J1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGVf Zm9sbG93ZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBPz8pezIsfT8gQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtYfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKIC0tIEdyZWVkeS9yZWx1Y3RhbnQgc2VxdWVu Y2U6IEErIEIrPyAoZ3JlZWR5IEEsIHJlbHVjdGFudCBCIGF0IGVuZCkKIC0tIEEgY29uc3VtZXMg Z3JlZWRpbHksIEIrPyBleGl0cyB0byBGSU4gYWZ0ZXIgbWluaW11bSBtYXRjaAogV0lUSCB0ZXN0 X2dyZWVkeV90aGVuX3JlbHVjdGFudCBBUyAoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3dpbmRvdy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5v dXQKaW5kZXggNTljM2RmOGNmMGEuLjA3MWNmMmZlMmY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aW5kb3cub3V0CkBAIC0xMDM3LDYgKzEwMzcsNDIgQEAgRlJPTSB0ZW5rMSBXSEVSRSB1bmlx dWUxIDwgMTA7CiAgICAgICAgICAgNyB8ICAgICAgIDcgfCAgICAzCiAoMTAgcm93cykKIAorU0VM RUNUIG50aF92YWx1ZSh1bmlxdWUxLDIpIG92ZXIgKE9SREVSIEJZIGZvdXIgcm93cyBiZXR3ZWVu IGN1cnJlbnQgcm93IGFuZCAzIGZvbGxvd2luZyBleGNsdWRlIHRpZXMpLAorCXVuaXF1ZTEsIGZv dXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworIG50aF92YWx1ZSB8IHVuaXF1ZTEg fCBmb3VyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLQorICAgICAgICAgNSB8ICAgICAg IDAgfCAgICAwCisgICAgICAgICA1IHwgICAgICAgOCB8ICAgIDAKKyAgICAgICAgIDUgfCAgICAg ICA0IHwgICAgMAorICAgICAgICAgNiB8ICAgICAgIDUgfCAgICAxCisgICAgICAgICA2IHwgICAg ICAgOSB8ICAgIDEKKyAgICAgICAgIDYgfCAgICAgICAxIHwgICAgMQorICAgICAgICAgMyB8ICAg ICAgIDYgfCAgICAyCisgICAgICAgICAzIHwgICAgICAgMiB8ICAgIDIKKyAgICAgICAgICAgfCAg ICAgICAzIHwgICAgMworICAgICAgICAgICB8ICAgICAgIDcgfCAgICAzCisoMTAgcm93cykKKwor U0VMRUNUIGxhc3RfdmFsdWUodW5pcXVlMSkgb3ZlciAoT1JERVIgQlkgZm91ciByb3dzIGJldHdl ZW4gMSBmb2xsb3dpbmcgYW5kIDIgZm9sbG93aW5nIGV4Y2x1ZGUgdGllcyksCisJdW5pcXVlMSwg Zm91cgorRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxIDwgMTIgT1JERVIgQlkgZm91ciwgdW5pcXVl MTsKKyBsYXN0X3ZhbHVlIHwgdW5pcXVlMSB8IGZvdXIgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLQorICAgICAgICAgIDEgfCAgICAgICAwIHwgICAgMAorICAgICAgICAgICAgfCAgICAg ICA0IHwgICAgMAorICAgICAgICAgIDUgfCAgICAgICA4IHwgICAgMAorICAgICAgICAgIDYgfCAg ICAgICAxIHwgICAgMQorICAgICAgICAgICAgfCAgICAgICA1IHwgICAgMQorICAgICAgICAgMTAg fCAgICAgICA5IHwgICAgMQorICAgICAgICAgIDMgfCAgICAgICAyIHwgICAgMgorICAgICAgICAg ICAgfCAgICAgICA2IHwgICAgMgorICAgICAgICAgIDcgfCAgICAgIDEwIHwgICAgMgorICAgICAg ICAgICAgfCAgICAgICAzIHwgICAgMworICAgICAgICAgICAgfCAgICAgICA3IHwgICAgMworICAg ICAgICAgICAgfCAgICAgIDExIHwgICAgMworKDEyIHJvd3MpCisKIFNFTEVDVCBzdW0odW5pcXVl MSkgb3ZlciAocm93cyBiZXR3ZWVuIDIgcHJlY2VkaW5nIGFuZCAxIHByZWNlZGluZyksCiAJdW5p cXVlMSwgZm91cgogRlJPTSB0ZW5rMSBXSEVSRSB1bmlxdWUxIDwgMTA7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNx bAppbmRleCA1OWNlM2QwMjAwZi4uMjAxM2YzOTliMzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwci5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbApAQCAt OTQ4LDYgKzk0OCwyMSBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgUFJFVihwcmljZTo6 bnVtZXJpYywgMSkgPiBQUkVWKHByaWNlOjpudW1lcmljLCAyKQogKTsKIAorLS0gVHlwbW9kIGNv ZXJjaW9uIG92ZXIgYSBuYXZpZ2F0aW9uIHJlc3VsdDogY2FzdGluZyBQUkVWKHApIChhIG51bWVy aWMoMTAsMykKKy0tIGNvbHVtbikgdG8gYSBuYXJyb3dlciBudW1lcmljKDgsMikgaW5zaWRlIERF RklORSBmb3JjZXMgY29lcmNlX3R5cGVfdHlwbW9kLAorLS0gd2hpY2ggY2FsbHMgZXhwclR5cG1v ZCgpIG9uIHRoZSBSUFJOYXZFeHByLgorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX3R5cG1vZCAoaWQg aW50LCBwIG51bWVyaWMoMTAsMykpOworSU5TRVJUIElOVE8gcnByX3R5cG1vZCBWQUxVRVMgKDEs IDEuNSksICgyLCAyLjUpLCAoMywgMy41KTsKK1NFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFT IGNudAorRlJPTSBycHJfdHlwbW9kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgQ0FTVChQUkVWKHApIEFT IG51bWVyaWMoOCwyKSkgPiAwCispOworRFJPUCBUQUJMRSBycHJfdHlwbW9kOworCiAtLQogLS0g RklSU1QvTEFTVCBuYXZpZ2F0aW9uCiAtLQpAQCAtMTIwNiw2ICsxMjIxLDMyIEBAIFNFTEVDVCBp ZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKICAgICBE RUZJTkUgQSBBUyBORVhUKExBU1QodmFsKSwgLTEpIElTIE5VTEwKICk7CiAKKy0tIE91dGVyIG9m ZnNldCBvdmVyZmxvd3MgaW50NjQ6IHRhcmdldCBwb3NpdGlvbiBvdXQgb2YgcmFuZ2UgLT4gTlVM TC4KKy0tIFBsYWluIE5FWFQodmFsLCBJTlQ2NF9NQVgpOiBjdXJyZW50cG9zICsgSU5UNjRfTUFY IG92ZXJmbG93cy4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIE5FWFQodmFsLCA5MjIzMzcyMDM2ODU0Nzc1ODA3KSBJUyBOVUxMCispOworCistLSBD b21wb3VuZCBORVhUKEZJUlNUKCkpOiBvdXRlciBvZmZzZXQgb3ZlcmZsb3cuICBJbm5lciBvZmZz ZXQgMSBmb3JjZXMKKy0tIGlubmVyX3BvcyA+PSAxLCBzbyBpbm5lcl9wb3MgKyBJTlQ2NF9NQVgg b3ZlcmZsb3dzIGF0IGV2ZXJ5IG1hdGNoLgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIg dyBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoRklSU1QodmFsLCAxKSwgOTIy MzM3MjAzNjg1NDc3NTgwNykgSVMgTlVMTAorKTsKKworLS0gQ29tcG91bmQgTkVYVChMQVNUKCkp OiBvdXRlciBvZmZzZXQgb3ZlcmZsb3cuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 IEZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyBORVhUKExBU1QodmFsKSwgOTIyMzM3MjAzNjg1NDc3NTgwNykg SVMgTlVMTAorKTsKKwogLS0gQ29tcG91bmQ6IGRlZmF1bHQgb2Zmc2V0cyBvbiBib3RoIHNpZGVz CiAtLSBQUkVWKEZJUlNUKHZhbCkpOiBpbm5lcj0wIChtYXRjaF9zdGFydCksIG91dGVyPTEgLT4g dGFyZ2V0ID0gbWF0Y2hfc3RhcnQgLSAxCiBTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudApAQCAtMTI0Myw2ICsxMjg0LDE0 IEBAIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3 IEFTICgKICAgICBERUZJTkUgQSBBUyBORVhUKExBU1QodmFsLCAtMSksIDEpIElTIE5VTEwKICk7 CiAKKy0tIE9mZnNldCBhcmd1bWVudCB3aG9zZSB0eXBlIGhhcyBubyBpbXBsaWNpdCBjYXN0IHRv IGJpZ2ludCAocGFyc2UgZXJyb3IpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIr KQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgdmFsID4gUFJFVih2YWwsIDEuNSkKKyk7CisK IC0tIENvbXBvdW5kICsgaG9zdCB2YXJpYWJsZSBvZmZzZXRzCiBQUkVQQVJFIHRlc3RfY29tcG91 bmRfb2Zmc2V0KGludDgsIGludDgpIEFTCiBTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jh c2Uuc3FsCmluZGV4IGU3N2U1ODEzYjllLi42MWE1YmNmMGI4YyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9iYXNlLnNxbApAQCAtMTI0Nyw2ICsxMjQ3LDI0IEBAIFdJTkRPVyB3IEFTICgKIAogRFJPUCBU QUJMRSBycHJfYm91bmRzOwogCistLSBQYXR0ZXJuIGVsZW1lbnQtY291bnQgYm91bmRhcnkgYXQg UlBSX0VMRU1JRFhfTUFYICgzMjc2NykuICBBbHRlcm5hdGluZworLS0gZGlzdGluY3QgdmFyaWFi bGVzIHN0b3AgdGhlIG9wdGltaXplciBmcm9tIG1lcmdpbmcgY29uc2VjdXRpdmUgZWxlbWVudHMs IHNvCistLSBlYWNoICJBIEIiIHBhaXIgY29udHJpYnV0ZXMgdHdvIGVsZW1lbnRzOyBzY2FuUlBS UGF0dGVybiBhZGRzIG9uZSBGSU4gbWFya2VyLgorLS0gRUNITyBpcyBzaWxlbmNlZCBzbyB0aGUg Z2VuZXJhdGVkIG11bHRpLXRob3VzYW5kLXRva2VuIHBhdHRlcm5zIGRvIG5vdCBmbG9vZAorLS0g dGhlIGV4cGVjdGVkIG91dHB1dC4KKy0tICAgMTYzODMgcGFpcnMgICAgICAgICAtPiAzMjc2NiAr IDEgRklOID0gMzI3NjcgPSBtYXhpbXVtLCBhY2NlcHRlZC4KKy0tICAgMTYzODMgcGFpcnMgKyBv bmUgQSAtPiAzMjc2NyArIDEgRklOID0gMzI3NjggPiBtYXhpbXVtLCByZWplY3RlZC4KK1xzZXQg RUNITyBub25lCitTRUxFQ1QgZm9ybWF0KCQkU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIChT RUxFQ1QgMSBpKSB0CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBJTklUSUFMIFBBVFRFUk4gKCVzKSBE RUZJTkUgQSBBUyBUUlVFLCBCIEFTIFRSVUUpJCQsCisgIHJlcGVhdCgnQSBCICcsIDE2MzgzKSkg XGdleGVjCitTRUxFQ1QgZm9ybWF0KCQkU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIChTRUxF Q1QgMSBpKSB0CisgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBJTklUSUFMIFBBVFRFUk4gKCVzIEEpIERF RklORSBBIEFTIFRSVUUsIEIgQVMgVFJVRSkkJCwKKyAgcmVwZWF0KCdBIEIgJywgMTYzODMpKSBc Z2V4ZWMKK1xzZXQgRUNITyBhbGwKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBOYXZpZ2F0aW9uIEZ1bmN0aW9ucyBU ZXN0cyAoUFJFViAvIE5FWFQgLyBGSVJTVCAvIExBU1QpCiAtLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1MzEsNiArMTU0 OSwxOCBAQCBTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ25hdm5zX25hdicpOwogU0VMRUNUIHBnX2dl dF92aWV3ZGVmKCduYXZuc19mbicpOwogRFJPUCBWSUVXIG5hdm5zX25hdiwgbmF2bnNfZm47CiAK Ky0tIEEgcXVhbGlmaWVkIGxhc3QoKSBpbiBERUZJTkUgbXVzdCBzdGF5IHNjaGVtYS1xdWFsaWZp ZWQgb24gZGVwYXJzZSBzbyB0aGF0CistLSBpdCBkb2VzIG5vdCByZXBhcnNlIGFzIHRoZSBMQVNU IG5hdmlnYXRpb24gZnVuY3Rpb24gKGZvcmNlLXF1YWxpZnkgcGF0aCkKK0NSRUFURSBGVU5DVElP TiBycHJfbmF2bnMubGFzdChpbnRlZ2VyKSBSRVRVUk5TIGludGVnZXIgQVMgJ1NFTEVDVCAtOTk5 JyBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFOworQ1JFQVRFIFZJRVcgbmF2bnNfZm5fbGFzdCBBUwor ICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgRlJPTSBudAorICBXSU5ET1cgdyBB UyAoUEFSVElUSU9OIEJZIGcgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKSBERUZJ TkUgQSBBUyBycHJfbmF2bnMubGFzdCh2YWwpID0gLTk5OSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdk ZWYoJ25hdm5zX2ZuX2xhc3QnKTsKK0RST1AgVklFVyBuYXZuc19mbl9sYXN0OworRFJPUCBGVU5D VElPTiBycHJfbmF2bnMubGFzdChpbnRlZ2VyKTsKKwogLS0gQXR0cmlidXRlIG5vdGF0aW9uIGlz IGZpZWxkIHNlbGVjdGlvbiBvbmx5LCBuZXZlciBhIGZ1bmN0aW9uIGZhbGxiYWNrCiBDUkVBVEUg VFlQRSBycHJfbmF2bnNfcGFpciBBUyAoZmlyc3QgaW50LCBsYXN0IGludCk7CiBDUkVBVEUgVEFC TEUgY3QgKGlkIGludCwgcCBycHJfbmF2bnNfcGFpcik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhw bGFpbi5zcWwKaW5kZXggMTE1NDAyZTMwNGQuLjNjZDk0YWY2YmI4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByX2V4cGxhaW4uc3FsCkBAIC0zNDA2LDYgKzM0MDYsMjIgQEAgRVhQTEFJTiAoQ09TVFMg T0ZGLCBBTkFMWVpFLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFJFU0VUIHBsYW5fY2FjaGVf bW9kZTsKIERFQUxMT0NBVEUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQ7CiAKKy0tIFJ1bnRpbWUg KG5vbi1vdmVyZmxvdykgbG9va2FoZWFkOiBhIHNtYWxsIHBhcmFtZXRlciBvZmZzZXQgdW5kZXIg YSBnZW5lcmljCistLSBwbGFuIGtlZXBzIHRoZSBGSVJTVCBvZmZzZXQgdW5yZXNvbHZlZCBhdCBw bGFuIHRpbWUsIHNvIEVYUExBSU4gcmVwb3J0cworLS0gIk5hdiBNYXJrIExvb2thaGVhZDogcnVu dGltZSIgcmF0aGVyIHRoYW4gYSBjb25jcmV0ZSB2YWx1ZS4KK1BSRVBBUkUgcF9maXJzdF9ydW50 aW1lKGludDgsIGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgTkVYVChGSVJTVCh2LCAkMSksICQyKSBJUyBOT1QgTlVMTAorKTsKK1NFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYpIEVY RUNVVEUgcF9maXJzdF9ydW50aW1lKDEsIDEpOworUkVTRVQgcGxhbl9jYWNoZV9tb2RlOworREVB TExPQ0FURSBwX2ZpcnN0X3J1bnRpbWU7CisKIC0tIFBSRVYodikgKyBQUkVWKHYsICQxKTogTkVF RFNfRVZBTCBwYXRoIG11c3QgYWNjb3VudCBmb3IgaW1wbGljaXQgbG9va2JhY2s9MQogLS0gUHJl dmlvdXNseSwgZXZhbF9uYXZfbWF4X29mZnNldF93YWxrZXIgc2tpcHBlZCBQUkVWKHYpIHdoZW4g b2Zmc2V0X2FyZyB3YXMKIC0tIE5VTEwsIGNhdXNpbmcgbWF4T2Zmc2V0PTAgd2hlbiAkMT0wLCB3 aGljaCB3b3VsZCB0cmltIHRoZSByb3cgbmVlZGVkIGJ5CkBAIC0zNDIxLDYgKzM0MzcsNjcgQEAg V0lORE9XIHcgQVMgKAogRVhFQ1VURSB0ZXN0X3ByZXZfaW1wbGljaXRfb2Zmc2V0KDApOwogREVB TExPQ0FURSB0ZXN0X3ByZXZfaW1wbGljaXRfb2Zmc2V0OwogCistLSBORUVEU19FVkFMIGV4ZWN1 dG9yIG9mZnNldCBwYXRoczogYSBQYXJhbSBuYXYgb2Zmc2V0IHN0YXlzIG5vbi1Db25zdCB1bmRl ciBhCistLSBnZW5lcmljIHBsYW4sIHNvIHRoZSBwbGFubmVyIG1hcmtzIHRoZSBvZmZzZXQgTkVF RFNfRVZBTCBhbmQgdGhlIGV4ZWN1dG9yCistLSByZXNvbHZlcyBpdCBhdCBpbml0IHZpYSBldmFs X2RlZmluZV9vZmZzZXRzIC0+IHZpc2l0X25hdl9leGVjLiAgRWFjaCBxdWVyeQorLS0gYmVsb3cg ZXhlcmNpc2VzIGEgZGlmZmVyZW50IG5hdmlnYXRpb24gYXJtIG9mIHRoYXQgd2Fsa2VyLgorCist LSBTaW1wbGUgRklSU1QodiwgJDEpOiBmb3J3YXJkLXJlYWNoIEZJUlNUIGFybS4KK1BSRVBBUkUg dGVzdF9ldmFsX2ZpcnN0KGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgRklSU1QodiwgJDEpIElTIE5PVCBOVUxMCispOworU0VUIHBsYW5fY2Fj aGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKK0VYRUNVVEUgdGVzdF9ldmFsX2ZpcnN0KDEp OworUkVTRVQgcGxhbl9jYWNoZV9tb2RlOworREVBTExPQ0FURSB0ZXN0X2V2YWxfZmlyc3Q7CisK Ky0tIEJhcmUgTEFTVCh2LCAkMSk6IGJhY2t3YXJkLXJlYWNoIExBU1Qtd2l0aC1vZmZzZXQgYXJt LgorUFJFUEFSRSB0ZXN0X2V2YWxfbGFzdChpbnQ4KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIExBU1QodiwgJDEpID49IDAKKyk7CitTRVQgcGxhbl9j YWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhFQ1VURSB0ZXN0X2V2YWxfbGFzdCgx KTsKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgdGVzdF9ldmFsX2xhc3Q7CisK Ky0tIENvbXBvdW5kIE5FWFQoTEFTVCh2LCAkMSksICQyKTogYmFja3dhcmQtcmVhY2ggTkVYVF9M QVNUIGFybS4KK1BSRVBBUkUgdGVzdF9ldmFsX25leHRsYXN0KGludDgsIGludDgpIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKHYsICQx KSwgJDIpID4gMAorKTsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47 CitFWEVDVVRFIHRlc3RfZXZhbF9uZXh0bGFzdCgxLCAxKTsKK1JFU0VUIHBsYW5fY2FjaGVfbW9k ZTsKK0RFQUxMT0NBVEUgdGVzdF9ldmFsX25leHRsYXN0OworCistLSBDb21wb3VuZCBQUkVWKEZJ UlNUKHYsICQxKSwgJDIpOiBmb3J3YXJkLXJlYWNoIFBSRVZfRklSU1QgYXJtLgorUFJFUEFSRSB0 ZXN0X2V2YWxfcHJldmZpcnN0KGludDgsIGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2LCAkMSksICQyKSBJUyBOT1QgTlVM TAorKTsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitFWEVDVVRF IHRlc3RfZXZhbF9wcmV2Zmlyc3QoMSwgMSk7CitSRVNFVCBwbGFuX2NhY2hlX21vZGU7CitERUFM TE9DQVRFIHRlc3RfZXZhbF9wcmV2Zmlyc3Q7CisKIC0tIFJ1bnRpbWUgZXJyb3I6IG5lZ2F0aXZl IG9mZnNldCBhdCBleGVjdXRpb24gdGltZQogUFJFUEFSRSB0ZXN0X3J1bnRpbWVfbmVnX29mZnNl dChpbnQ4KSBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9pbnRlZ3JhdGlvbi5zcWwKaW5kZXggMmI5OTBiMjQ3MDQuLjIzMTY0NDczZDBiIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKQEAgLTY3MCw2ICs2NzAsMTAgQEAg U0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBycHJfcHJldigxKTsKIEVYRUNVVEUgcnByX3ByZXYoMSk7CiAKKy0tIE5l Z2F0aXZlIHJ1bnRpbWUgbmF2IG9mZnNldCB1bmRlciB0aGUgZ2VuZXJpYyBwbGFuOiBpbml0IGNs YW1wcyBpdCB0byAwIGZvcgorLS0gdHJpbSBzaXppbmcsIGJ1dCB0aGUgcGVyLXJvdyBuYXZpZ2F0 aW9uIHJlamVjdHMgdGhlIG5lZ2F0aXZlIG9mZnNldC4KK0VYRUNVVEUgcnByX3ByZXYoLTEpOwor CiBSRVNFVCBwbGFuX2NhY2hlX21vZGU7CiBERUFMTE9DQVRFIHJwcl9wcmV2OwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jwcl9uZmEuc3FsCmluZGV4IGM4MmI4MzQwOTc3Li43OWY5OTkyMjg3MCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX25mYS5zcWwKQEAgLTkxMiw2ICs5MTIsMjEgQEAgV0lORE9XIGdnICBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H IFBBVFQKICAgICAgICBjcyAgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKj8pICAgICAgICBERUZJTkUgQSBB UyBpc2EpCiBPUkRFUiBCWSBpZDsKIAorLS0gRG91Ymx5LW5lc3RlZCByZWx1Y3RhbnQgbnVsbGFi bGUgZ3JvdXA6ICgoKEE/Pyl7Mix9Pyl7Mix9PykuICBSZWx1Y3RhbnQKKy0tIHF1YW50aWZpZXJz IGRpc2FibGUgb3B0aW1pemVyIGZsYXR0ZW5pbmcsIHNvIGJvdGggbGV2ZWxzIHN1cnZpdmUgYW5k IHRoZQorLS0gaW5uZXIgZ3JvdXAncyBFTkQtPm5leHQgbGFuZHMgb24gdGhlIG91dGVyIEVORC4g IFRoaXMgZXhlcmNpc2VzIHRoZQorLS0gRU5ELT5FTkQgY291bnQgaW5jcmVtZW50IGluIHRoZSBF TVBUWV9MT09QIGZhc3QtZm9yd2FyZCAoY291bnQgPCBtaW4pLgorV0lUSCB0KGlkLCBpc2EpIEFT IChWQUxVRVMgKDEsIHRydWUpLCAoMiwgdHJ1ZSksICgzLCBmYWxzZSkpCitTRUxFQ1QgaWQsIGNv dW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKCgoQT8/KXsyLH0/KXsyLH0/KQorICAgIERFRklORSBBIEFTIGlzYQorKQor T1JERVIgQlkgaWQ7CisKIC0tIE5vbi1sZWFkaW5nIHJlbHVjdGFudCBvcHRpb25hbCBHUk9VUCB3 aXRoIGEgZm9sbG93ZXI6IChCIChBIFgpPz8gQykKIC0tIExpa2UgdGhlIFZBUiBjYXNlIGFib3Zl IGJ1dCBhIG11bHRpLWVsZW1lbnQgZ3JvdXA7IGl0IGdvZXMgdGhyb3VnaCB0aGUKIC0tIGJlZ2lu IHBhdGgsIHdoaWNoIGFscmVhZHkgaG9ub3JzIHJlbHVjdGFudCBvcmRlcmluZy4KQEAgLTk0MSw2 ICs5NTYsMzMgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykK ICk7CiAKKy0tIFJlbHVjdGFudCBudWxsYWJsZSBncm91cCB3aXRoIGEgcmVxdWlyZWQgZm9sbG93 ZXI6ICgoQT8/KXsyLH0/IEIpLgorLS0gbWluPTIgZm9yY2VzIHRoZSByZWx1Y3RhbnQgZmFzdC1m b3J3YXJkIHRvIGxvb3AgYmFjayAoaXQgY2Fubm90IGV4aXQgdG8KKy0tIEZJTiB1bnRpbCBCIG1h dGNoZXMpLCBleGVyY2lzaW5nIHRoZSBsb29wLWJhY2sgcm91dGVfdG9fZWxlbSBzZWNvbmQgY2Fs bAorLS0gc2l0ZSBpbiBuZmFfYWR2YW5jZV9lbmQuICBCIGZhaWxzIGF0IHRoZSBncm91cCdzIGV4 aXQgcm93LCBzbyBvbmx5IHRoZQorLS0gZmlyc3QgbWF0Y2ggc3Vydml2ZXMuCitXSVRIIHRlc3Rf cmVsdWN0YW50X251bGxhYmxlX2ZvbGxvd2VyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydYJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X251bGxhYmxlX2ZvbGxvd2VyCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQT8/KXsyLH0/IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCiAt LSBHcmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKyBCKz8gKGdyZWVkeSBBLCByZWx1Y3RhbnQg QiBhdCBlbmQpCiAtLSBBIGNvbnN1bWVzIGdyZWVkaWx5LCBCKz8gZXhpdHMgdG8gRklOIGFmdGVy IG1pbmltdW0gbWF0Y2gKIFdJVEggdGVzdF9ncmVlZHlfdGhlbl9yZWx1Y3RhbnQgQVMgKApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpbmRvdy5zcWwKaW5kZXggMTcyNjExMzVkYzMuLmU4NDRlYzEwZDFhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpbmRvdy5zcWwKQEAgLTIzNSw2ICsyMzUsMTQgQEAgU0VMRUNUIGxhc3RfdmFsdWUo dW5pcXVlMSkgb3ZlciAoT1JERVIgQlkgZm91ciByb3dzIGJldHdlZW4gY3VycmVudCByb3cgYW5k IDIgZm8KIAl1bmlxdWUxLCBmb3VyCiBGUk9NIHRlbmsxIFdIRVJFIHVuaXF1ZTEgPCAxMDsKIAor U0VMRUNUIG50aF92YWx1ZSh1bmlxdWUxLDIpIG92ZXIgKE9SREVSIEJZIGZvdXIgcm93cyBiZXR3 ZWVuIGN1cnJlbnQgcm93IGFuZCAzIGZvbGxvd2luZyBleGNsdWRlIHRpZXMpLAorCXVuaXF1ZTEs IGZvdXIKK0ZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOworCitTRUxFQ1QgbGFzdF92YWx1 ZSh1bmlxdWUxKSBvdmVyIChPUkRFUiBCWSBmb3VyIHJvd3MgYmV0d2VlbiAxIGZvbGxvd2luZyBh bmQgMiBmb2xsb3dpbmcgZXhjbHVkZSB0aWVzKSwKKwl1bmlxdWUxLCBmb3VyCitGUk9NIHRlbmsx IFdIRVJFIHVuaXF1ZTEgPCAxMiBPUkRFUiBCWSBmb3VyLCB1bmlxdWUxOworCiBTRUxFQ1Qgc3Vt KHVuaXF1ZTEpIG92ZXIgKHJvd3MgYmV0d2VlbiAyIHByZWNlZGluZyBhbmQgMSBwcmVjZWRpbmcp LAogCXVuaXF1ZTEsIGZvdXIKIEZST00gdGVuazEgV0hFUkUgdW5pcXVlMSA8IDEwOwotLSAKMi41 MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0019-valgrind-pfree.patch" Content-Disposition: attachment; filename="v50-0019-valgrind-pfree.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmtm327 RnJvbSAwOTNlMmE1YTA3MGFjYTViZjhmMGQwNTUxYTQ4YjJjNTViOTY2MzFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDIzIEp1biAyMDI2IDE1OjEzOjI3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjgv MjldIEZyZWUgUlBSIE5GQSBzdGF0ZXMgd2l0aCBwZnJlZSgpIHVuZGVyIFVTRV9WQUxHUklORAoK ZXhlY1JQUi5jIHJlY3ljbGVzIGZyZWVkIFJQUk5GQVN0YXRlIG5vZGVzIHRocm91Z2ggYSBmcmVl IGxpc3QKKG5mYV9zdGF0ZV9mcmVlIHBvcHVsYXRlcyBpdDsgbmZhX3N0YXRlX21ha2UgcmV1c2Vz IGZyb20gaXQpLiAgVGhhdApyZWN5Y2xpbmcgaGlkZXMgdXNlLWFmdGVyLWZyZWUgYnVnczogYSBz dGFsZSByZWZlcmVuY2UgdG8gYSBmcmVlZCBzdGF0ZQprZWVwcyBwb2ludGluZyBhdCBhIGxpdmUs IHJldXNlZCBub2RlLCBzbyBWYWxncmluZCBuZXZlciBzZWVzIGEgcHJvYmxlbS4KClVuZGVyIFVT RV9WQUxHUklORCwgaGFuZCB0aGUgbm9kZSBiYWNrIHRvIHRoZSBhbGxvY2F0b3Igd2l0aCBwZnJl ZSgpCmluc3RlYWQgb2YgcHVzaGluZyBpdCBvbnRvIHRoZSBmcmVlIGxpc3QsIHNvIG1lbWNoZWNr IGNhbiBjYXRjaCBhbnkgc3RyYXkKYWNjZXNzIHRvIGEgZnJlZWQgc3RhdGUuICBuZmFfc3RhdGVf ZnJlZSBpcyB0aGUgb25seSBwbGFjZSB0aGF0IGZpbGxzIHRoZQpmcmVlIGxpc3QsIHNvIHRoaXMg c2luZ2xlIGd1YXJkIHN1ZmZpY2VzOyBub24tVmFsZ3JpbmQgYnVpbGRzIGtlZXAgdGhlCnJlY3lj bGluZyBwYXRoIHVuY2hhbmdlZC4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMg fCA1ICsrKysrCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JQUi5jCmluZGV4IGU1ZTMwZDc5ZjAxLi5hODVhYjU2M2FiYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS UFIuYwpAQCAtMjQzLDggKzI0MywxMyBAQCBzdGF0aWMgdm9pZAogbmZhX3N0YXRlX2ZyZWUoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqc3RhdGUpCiB7CiAJd2luc3RhdGUt Pm5mYVN0YXRlc0FjdGl2ZS0tOworI2lmZGVmIFVTRV9WQUxHUklORAorCS8qIHJlYWwgZnJlZSBz byBWYWxncmluZCBjYXRjaGVzIHVzZS1hZnRlci1mcmVlIGluc3RlYWQgb2YgcmVjeWNsaW5nICov CisJcGZyZWUoc3RhdGUpOworI2Vsc2UKIAlzdGF0ZS0+bmV4dCA9IHdpbnN0YXRlLT5uZmFTdGF0 ZUZyZWU7CiAJd2luc3RhdGUtPm5mYVN0YXRlRnJlZSA9IHN0YXRlOworI2VuZGlmCiB9CiAKIC8q Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43 Content-Type: application/octet-stream; name="v50-0020-clarify-step-no_equal.patch" Content-Disposition: attachment; filename="v50-0020-clarify-step-no_equal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqqqmv7y28 RnJvbSA1OTA1MmEwYmViM2E3NDg5YjAyNmRlZTJlODEyYWUzMWRiNjg1OGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDIzIEp1biAyMDI2IDIxOjM5OjM2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NTAgMjkv MjldIENsYXJpZnkgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gY29tbWVudHMgb24gInN0ZXAiCiBh bmQgbm9fZXF1YWwKCkRlZmluZSAic3RlcCIgaW4gaXNVbmJvdW5kZWRTdGFydCgpJ3MgZXhhbXBs ZXMgYXMgdGhlIG51bWJlciBvZiBWQVJzIGluCm9uZSBmdWxseSB1bnJvbGxlZCBpdGVyYXRpb24g b2YgdGhlIGdyb3VwLCBhbmQgcmV3b3JkIHRoZSBSUFJQYXR0ZXJuCmNvbW1lbnQgb24gd2h5IGVx dWFsKCkgc3VwcG9ydCBpcyBzdXBwcmVzc2VkOiBlcXVhbCgpIHJvdXRpbmVzIGFyZQpnZW5lcmF0 ZWQgb25seSBmb3IgcGFyc2UvcmV3cml0ZSBub2Rlcywgbm90IHBsYW4gbm9kZXMuICBDb21tZW50 LW9ubHkuCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgfCAzICsrKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgfCA3ICsrKystLS0KIDIgZmlsZXMgY2hhbmdl ZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnBy LmMKaW5kZXggMWM1OWU4YTcwYTAuLmZhYzNkN2JjZjM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9y cHIuYwpAQCAtMTU4Myw2ICsxNTgzLDkgQEAgaXNGaXhlZExlbmd0aENoaWxkcmVuKFJQUlBhdHRl cm4gKnBhdHRlcm4sIFJQUkVsZW1JZHggaWR4LCBSUFJEZXB0aCBzY29wZURlcHRoKQogICogICAg ICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIHsxLDF9IFZBUnMsIGUuZy4sIChB IEIgQikrIEMuCiAgKiAgICAgIEFsbCBlbGVtZW50cyB3aXRoaW4gdGhlIGdyb3VwIGdldCBBQlNP UkJBQkxFX0JSQU5DSC4KICAqICAgICAgT25seSB0aGUgdW5ib3VuZGVkIEVORCBnZXRzIEFCU09S QkFCTEUgKGNvbXBhcmlzb24gcG9pbnQpLgorICoKKyAqICAgICAgSW4gdGhlIGV4YW1wbGVzIGJl bG93LCAic3RlcCIgaXMgdGhlIG51bWJlciBvZiBWQVJzIGluIG9uZSBmdWxseQorICogICAgICB1 bnJvbGxlZCBpdGVyYXRpb24gb2YgdGhlIGdyb3VwIChpdHMgZml4ZWQgcGVyLWl0ZXJhdGlvbiBs ZW5ndGgpLgogICogICAgICBFeGFtcGxlczoKICAqICAgICAgICAoQSBCezJ9KSsgQyAgICAgICAg ICAtIEJ7Mn0gaGFzIG1pbj09bWF4LCBzdGVwPTMKICAqICAgICAgICAoQSAoQiBDKXsyfSBEKSsg RSAgICAtIG5lc3RlZCB7Mn0gc3ViZ3JvdXAsIHN0ZXA9NgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRl eCA3YzRlYWNkZjgyZC4uMmIzN2M4ZjIyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMjg0 LDkgKzEyODQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUlBSUGF0dGVybgogewogCS8qCiAJICogUlBS UGF0dGVybiBpcyBhIHBsYW4vZXhlYy1vbmx5IG5vZGUgd2l0aCBhcnJheXMgdGhhdCBuZWVkIGEK LQkgKiBoYW5kLXdyaXR0ZW4gY29weSAoY3VzdG9tX2NvcHlfZXF1YWwpLCBidXQgaXQgaXMgbmV2 ZXIgY29tcGFyZWQgYnkKLQkgKiBlcXVhbCgpIC0tIGl0IGRvZXMgbm90IGFwcGVhciBpbiBwYXJz ZS9yZXdyaXRlIHRyZWVzLCBhbmQgZXF1YWwoKSBoYXMKLQkgKiBubyBQbGFuLW5vZGUgcm91dGlu ZXMgLS0gc28gZXF1YWwgc3VwcG9ydCBpcyBzdXBwcmVzc2VkIHdpdGggbm9fZXF1YWwuCisJICog aGFuZC13cml0dGVuIGNvcHkgKGN1c3RvbV9jb3B5X2VxdWFsKS4gIEl0IGlzIG5ldmVyIGNvbXBh cmVkIHdpdGgKKwkgKiBlcXVhbCgpOiBlcXVhbCgpIHJvdXRpbmVzIGFyZSBnZW5lcmF0ZWQgb25s eSBmb3IgcGFyc2UvcmV3cml0ZS1sZXZlbAorCSAqIG5vZGVzLCBub3QgZm9yIHBsYW4gbm9kZXMs IHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gY29tcGFyZSBpdCBhZ2FpbnN0CisJICogYW5kIGVxdWFs IHN1cHBvcnQgaXMgc3VwcHJlc3NlZCB3aXRoIG5vX2VxdWFsLgogCSAqLwogCXBnX25vZGVfYXR0 cihjdXN0b21fY29weV9lcXVhbCwgY3VzdG9tX3JlYWRfd3JpdGUsIG5vX2VxdWFsKQogCi0tIAoy LjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000002081130654ec8f43--