<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>44518</bug_id>
          
          <creation_ts>2010-08-24 05:53:39 -0700</creation_ts>
          <short_desc>Web Inspector: add audits support to extension API</short_desc>
          <delta_ts>2010-08-31 07:48:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Kosyakov">caseq</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>peter</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268500</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-24 05:53:39 -0700</bug_when>
    <thetext>Add support for adding audit categories from WebInspector extensions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268508</commentid>
    <comment_count>1</comment_count>
      <attachid>65263</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-24 06:17:21 -0700</bug_when>
    <thetext>Created attachment 65263
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269106</commentid>
    <comment_count>2</comment_count>
      <attachid>65263</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-25 02:23:16 -0700</bug_when>
    <thetext>Comment on attachment 65263
patch

Overall looks good, few nits below. r- for naming + formatter.

LayoutTests/inspector/extensions-audits-expected.txt:16
 +      cancel : &lt;function&gt;
cancel -&gt; done

LayoutTests/inspector/extensions-audits.html:11
 +      function onStartAuditCategory(auditRun)
auditRun -&gt; testResult

WebCore/inspector/front-end/AuditLauncherView.js:138
 +              insertBefore &lt; this._sortedCategories.length &amp;&amp; this._compareCategories(category, this._sortedCategories[insertBefore]) &gt;= 0;
Please fix indentation.

WebCore/inspector/front-end/AuditLauncherView.js:142
 +              this._categoriesElement.insertBefore(categoryElement, this._categoriesElement.children[insertBefore]);
insertBefore undefined will do appendChild, no need to fork the code.

WebCore/inspector/front-end/AuditLauncherView.js:130
 +          categoryElement.firstChild.addEventListener(&quot;click&quot;, this._boundCategoryClickListener, false);
you could encapsulate this listener addition into the _createCategoryElement in order not to be involved with the internal structure here.

WebCore/inspector/front-end/AuditLauncherView.js:137
 +          for (var insertBefore = 0;
I just found indexOfObjectInListSortedByFunction in the utilities.js

WebCore/inspector/front-end/ExtensionAPI.js:50
 +          if (typeof callback != &quot;function&quot;)
!==

WebCore/inspector/front-end/ExtensionAuditCategory.js:55
 +      runRules: function(resources, callback)
runRules -&gt; run ?

WebCore/inspector/front-end/ExtensionAuditCategory.js:83
 +      addRuleResult: function(ruleDisplayName, severity, violationCount, details)
addResult ?

LayoutTests/inspector/extensions-audits.html:24
 +              type: webInspector.audits.nodeType.text,
I&apos;d suggest that we use the following form text parameters:
[&quot;Foo bar %h&quot;, &quot;http://link&quot;].
&quot;children&quot; should still be there in order to organize a very common tree structure.
We could come up with more formatters as we go:
%s for string
%t for tree
%T for table and such...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269218</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-25 06:57:25 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; LayoutTests/inspector/extensions-audits.html:24
&gt;  +              type: webInspector.audits.nodeType.text,
&gt; I&apos;d suggest that we use the following form text parameters:
&gt; [&quot;Foo bar %h&quot;, &quot;http://link&quot;].
&gt; &quot;children&quot; should still be there in order to organize a very common tree structure.
&gt; We could come up with more formatters as we go:
&gt; %s for string
&gt; %t for tree
&gt; %T for table and such...

I realize this may be handy, but still don&apos;t like this: it&apos;s not readable, is not localizable (unless we add parameter numbering there), not quite extensible and does not quite suit to a case when rendering one entity requires multiple values (e.g. URL could have two: a href value and a text within the tag).

I suggest we either define named formatter classes, e.g.

webInspector.audit.formatters.url(href, text)
webInspector.audit.formatters.snippet(text)
webInspector.audit.formatters.subtree(expanded, root, children) etc.

or go for imperative interface, e.g.

results.addChild(webInspector.audit.resultNodes.url(href, text))

The latter is pretty close to the way we have it in Audits now, but keeps type away from method names (i.e. we don&apos;t have AddFoo for every type Foo -- rather have Foo constructors and generic AddChild method).

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269226</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-25 07:11:55 -0700</bug_when>
    <thetext>&gt; webInspector.audit.formatters.url(href, text)
&gt; webInspector.audit.formatters.snippet(text)
&gt; webInspector.audit.formatters.subtree(expanded, root, children) etc.
&gt; 

I don&apos;t see how this addresses disadvantages pointed out + it does not handle mixed content such as text with links well. I don&apos;t see a point in additional &apos;formatters&apos; object, i&apos;d rather add methods on results:

var result = auditResults.addResult();
result.title = &quot;Leverage browser caching&quot;;
result.details = [&quot;See more info %h&quot;, [&quot;http://foo&quot;, &quot;here&quot;]];
var childResult = result.addChild();
childResult.title = [&quot;Number foo %d&quot;, 1];

addResult and addChild can have optional title and details parameters for shorter notation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269863</commentid>
    <comment_count>5</comment_count>
      <attachid>65557</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-26 07:00:02 -0700</bug_when>
    <thetext>Created attachment 65557
patch

- Renamed AuditRun to AuditResult
- Replaced node types with formatters in AuditResult
- Added support for concatenating different formatters and simplified passing text-only values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269867</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-26 07:18:31 -0700</bug_when>
    <thetext>Attachment 65557 did not build on qt:
Build output: http://queues.webkit.org/results/3793419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269880</commentid>
    <comment_count>7</comment_count>
      <attachid>65557</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-26 07:44:56 -0700</bug_when>
    <thetext>Comment on attachment 65557
patch

LayoutTests/inspector/extensions-audits.html:15
 +          results.addResult(&quot;Passed rule&quot;, &quot;this rule always passes ok&quot;, webInspector.audits.severity.info);
webInspector.audits.severity.info - too many letters! result.Severity.Info ?

WebCore/inspector/front-end/AuditsPanel.js:59
 +          this._launcherView.addCategory(this.categoriesById[id]);
indent.

WebCore/inspector/front-end/AuditsPanel.js:163
 +              category.run(resources, ruleResultReadyCallback.bind(null, result));
bind(null) looks strange.

LayoutTests/inspector/extensions-audits-expected.txt:13
 +  category.onAuditStarted fired, results dump follows:
It&apos;d be great to dump APIs to a separate expectations file for better readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269919</commentid>
    <comment_count>8</comment_count>
      <attachid>65573</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-26 09:12:50 -0700</bug_when>
    <thetext>Created attachment 65573
patch

- Added missing file
- Moved webInspector.audits.severity -&gt; AuditResult.Severity
- Split audit tests into API dump and tests per se</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269923</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-26 09:17:43 -0700</bug_when>
    <thetext>Attachment 65573 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/inspector/front-end/AuditFormatters.js:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 86 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269925</commentid>
    <comment_count>10</comment_count>
      <attachid>65575</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-26 09:26:12 -0700</bug_when>
    <thetext>Created attachment 65575
patch

- Capitalized severity constants
- Fixed EOLs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270104</commentid>
    <comment_count>11</comment_count>
      <attachid>65575</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-08-26 14:01:07 -0700</bug_when>
    <thetext>Comment on attachment 65575
patch

Lets land manually to be on the safe side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270478</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 07:04:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66218 might have broken Qt Linux Release minimal, Qt Linux ARMv5 Release, Qt Linux ARMv7 Release, and Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270486</commentid>
    <comment_count>13</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-27 07:22:48 -0700</bug_when>
    <thetext>Manually committed r66218: http://trac.webkit.org/changeset/66218
Build fix committed as r66220: http://trac.webkit.org/changeset/66220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270653</commentid>
    <comment_count>14</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-27 12:19:00 -0700</bug_when>
    <thetext>Reverted as r66239 due to GTK &amp; Snow Leopard test failures:
http://trac.webkit.org/changeset/66239</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271979</commentid>
    <comment_count>15</comment_count>
      <attachid>66022</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-31 01:39:19 -0700</bug_when>
    <thetext>Created attachment 66022
patch

- Migrated tests to use inspector-test2.js
- Fixed dispatching messages from front-end to extension in test
- Added InspectorTest.enableResourceTracking() &amp; InspectorTest.disableResourceTracking()
- Log exceptions in test initialization functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272036</commentid>
    <comment_count>16</comment_count>
      <attachid>66022</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-31 04:43:45 -0700</bug_when>
    <thetext>Comment on attachment 66022
patch

&gt; LayoutTests/inspector/extensions-audits-tests.js:39
&gt; +test = function()
var test =

&gt; LayoutTests/inspector/extensions-audits.html:14
&gt; +        log(&quot;category.onAuditStarted fired&quot;);
Why is it not just output?

&gt; LayoutTests/inspector/extensions-test.js:11
&gt; +        if (/^extension_/.exec(symbol) &amp;&amp; typeof window[symbol] === &quot;function&quot;)
Should be test() since you don&apos;t use result array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272065</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-31 06:18:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66477 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272091</commentid>
    <comment_count>18</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2010-08-31 07:48:26 -0700</bug_when>
    <thetext>Manually committed r66477: http://trac.webkit.org/changeset/66477
Qt test fix committed as r66480: http://trac.webkit.org/changeset/66480</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65263</attachid>
            <date>2010-08-24 06:17:21 -0700</date>
            <delta_ts>2010-08-26 07:00:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extension-audits.patch</filename>
            <type>text/plain</type>
            <size>46300</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MWY2ZTIwLi5iYzAwMzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgt
MjQgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVk
aXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMt
cGFuZWwtZnVuY3Rpb25hbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtdGVzdHMu
anM6IEFkZGVkLgorICAgICAgICAoZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cyk6CisgICAg
ICAgIChmcm9udGVuZF9jb2xsZWN0VGV4dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9l
eHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2V4dGVu
c2lvbnMtYXVkaXRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3Jp
cHQzLmpzOiBSZW1vdmVkLgorCiAyMDEwLTA4LTI0ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemlt
bWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwK
aW5kZXggNzE1MzdmNC4uZTdhMjgwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKQEAgLTcsMTIgKzcsMTIgQEAKIH0KIDwvc3R5
bGU+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CiAK
IDwhLS0gVGhlc2Ugc2NyaXB0cyBhcmUgbmVlZGVkIHRvIHJlc3VsdCBpbiBhIHZpb2xhdGlvbiBv
ZiB0aGUgbWF4IEpTIHJlc291cmNlIGNvdW50IGZyb20gdGhlIHNhbWUgZG9tYWluIC0tPgogPHNj
cmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qcyI+PC9zY3JpcHQ+CiA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyIgdHlwZT0i
dGV4dC9jc3MiPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQpAQCAtNTAsMTQgKzUwLDcgQEAgZnVuY3Rp
b24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9sbGVyKQogCiAgICAgICAgIHRlc3RDb250
cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAvLyBBdWRpdHMgYXJlIGRvbmUsIGNoZWNrIHJlc3VsdHMuCi0gICAgICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0
cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRzKTsKLSAgICAgICAg
ICAgIHZhciBsaUVsZW1lbnRzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMudmlzaWJsZVZp
ZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKLSAgICAgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAg
IGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBsaUVs
ZW1lbnRzW2pdLnRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdmFyIG91dHB1dCA9IFtdOwotICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVjdFRleHRDb250
ZW50KFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVsZW1lbnQsIDAsIG91
dHB1dCk7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVz
dWx0cygpOwogICAgICAgICAgICAgLy8gQXZvaWQgaW5mbHVlbmNpbmcgdGVzdHMgdGhhdCByZXF1
aXJlIHJlc291cmNlIHRyYWNraW5nIHRvIGJlIGRpc2FibGVkLgogICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7CiAgICAgICAgICAgICB0
ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgewpAQCAt
NjksMjkgKzYyLDYgQEAgZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9sbGVy
KQogICAgIH0KIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KGVsZW1l
bnQsIGxldmVsLCBvdXRwdXQpCi17Ci0gICAgdmFyIG5vZGVPdXRwdXQgPSAiIjsKLSAgICB2YXIg
Y2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAg
IGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKLSAgICAgICAgICAgICAgICBub2RlT3V0cHV0
ICs9ICIgIjsKLSAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0gY2hpbGQubm9kZVZhbHVlOwotICAg
ICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgewot
ICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7Ci0gICAgICAgICAgICAgICAgb3V0
cHV0LnB1c2gobm9kZU91dHB1dCk7Ci0gICAgICAgICAgICAgICAgbm9kZU91dHB1dCA9ICIiOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KGNo
aWxkLCBsZXZlbCArIDEsIG91dHB1dCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2hpbGQgPSBjaGls
ZC5uZXh0U2libGluZzsKLSAgICB9Ci0gICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKQotICAgICAg
ICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKLSAgICByZXR1cm47Ci19Ci0KIDwvc2NyaXB0Pgog
PC9oZWFkPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXRlc3Rz
LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDJjNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpAQCAtMCwwICsxLDM1IEBACitmdW5jdGlv
biBmcm9udGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IucGFu
ZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hdWRpdFJl
c3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRzKTsKKyAgICB2YXIgbGlFbGVtZW50
cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVsZW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImxpIik7CisgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaUVsZW1lbnRz
Lmxlbmd0aDsgKytqKSB7CisgICAgICAgIGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQor
ICAgICAgICAgICAgbGlFbGVtZW50c1tqXS50cmVlRWxlbWVudC5leHBhbmQoKTsKKyAgICB9Cisg
ICAgdmFyIG91dHB1dCA9IFtdOworICAgIGZyb250ZW5kX2NvbGxlY3RUZXh0Q29udGVudChXZWJJ
bnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5lbGVtZW50LCAwLCBvdXRwdXQpOwor
ICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2NvbGxlY3RUZXh0Q29u
dGVudChlbGVtZW50LCBsZXZlbCwgb3V0cHV0KQoreworICAgIHZhciBub2RlT3V0cHV0ID0gIiI7
CisgICAgdmFyIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkOworCisgICAgd2hpbGUgKGNoaWxk
KSB7CisgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKKyAgICAgICAgICAgICAg
ICBub2RlT3V0cHV0ICs9ICIgIjsKKyAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0gY2hpbGQubm9k
ZVZhbHVlOworICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1F
TlRfTk9ERSkgeworICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7CisgICAgICAg
ICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7CisgICAgICAgICAgICAgICAgbm9kZU91
dHB1dCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVjdFRl
eHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7CisgICAgICAgIH0KKyAgICAgICAg
Y2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKKyAgICB9CisgICAgaWYgKG5vZGVPdXRwdXQgIT09
ICIiKQorICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CmluZGV4IDM1YTk5ZDIu
LjlhN2MwYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFw
aS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBp
LWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDE5IEBAIFN0YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmlu
ZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEFQSQogeworICAgIGF1ZGl0
cyA6IHsKKyAgICAgICAgc2V2ZXJpdHkgOiB7CisgICAgICAgICAgICBpbmZvIDogImluZm8iCisg
ICAgICAgICAgICB3YXJuaW5nIDogIndhcm5pbmciCisgICAgICAgICAgICBzZXZlcmUgOiAic2V2
ZXJlIgorICAgICAgICB9CisgICAgICAgIG5vZGVUeXBlIDogeworICAgICAgICAgICAgdXJsIDog
InVybCIKKyAgICAgICAgICAgIHRleHQgOiAidGV4dCIKKyAgICAgICAgICAgIHNuaXBwZXQgOiAi
c25pcHBldCIKKyAgICAgICAgfQorICAgICAgICBhZGRDYXRlZ29yeSA6IDxmdW5jdGlvbj4KKyAg
ICB9CiAgICAgaW5zcGVjdGVkV2luZG93IDogewogICAgICAgICBvbkxvYWRlZCA6IHsKICAgICAg
ICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZTIxN2U0NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBA
QAorVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCisK
K1N0YXJ0ZWQgZXh0ZW5zaW9uLgorUnVubmluZyB0ZXN0cy4uLgorUlVOTklORyBURVNUOiBleHRl
bnNpb25fdGVzdEF1ZGl0cworQWRkZWQgYXVkaXQgY2F0ZWdvcnksIHJlc3VsdCBkdW1wIGZvbGxv
d3M6Cit7CisgICAgb25BdWRpdFN0YXJ0ZWQgOiB7CisgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1
bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICB9Cit9Citj
YXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgYXVkaXRSdW4gZHVtcCBmb2xsb3dzOgorewor
ICAgIGFkZFJlc3VsdCA6IDxmdW5jdGlvbj4KKyAgICBjYW5jZWwgOiA8ZnVuY3Rpb24+Cit9Citm
YWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhyb3dpbmcgZXhjZXB0aW9uCitB
dWRpdHMgY29tcGxldGU6CisgIEV4dGVuc2lvbiBhdWRpdHMKKyAgICBGYWlsZWQgcnVsZSAoNDIp
CisgICAgIHRoaXMgcnVsZSBhbHdheXMgZmFpbHMKKyAgICBSdWxlIHdpdGggZGV0YWlscyBzdWJ0
cmVlICgxKQorICAgICBUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRldGFpbHMKKyAgICAgICB3d3cu
Z29vZ2xlLmNvbQorICAgICAgZnVuY3Rpb24gcmFuZCgpCit7CisgICAgcmV0dXJuIDQ7Cit9Cisg
ICAgICBtb3JlIGRldGFpbHMKKyAgICAgICAgd3d3LndlYmtpdC5vcmcKKyAgICAgICBtb3JlIHRl
eHQKKyAgICBQYXNzZWQgcnVsZQorICAgICB0aGlzIHJ1bGUgYWx3YXlzIHBhc3NlcyBvaworICBF
eHRlbnNpb24gYXVkaXRzIHRoYXQgZmFpbAorQWxsIHRlc3RzIGRvbmUuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMC4uNmI5OWU2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sCkBAIC0wLDAgKzEsMTIxIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJleHRlbnNpb25zLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9ImF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RBdWRpdHMo
bmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0Q2F0ZWdvcnkoYXVkaXRSdW4p
CisgICAgeworICAgICAgICBsb2coImNhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCBhdWRp
dFJ1biBkdW1wIGZvbGxvd3M6Iik7CisgICAgICAgIGR1bXBPYmplY3QoYXVkaXRSdW4pOworICAg
ICAgICBhdWRpdFJ1bi5hZGRSZXN1bHQoIlBhc3NlZCBydWxlIiwgd2ViSW5zcGVjdG9yLmF1ZGl0
cy5zZXZlcml0eS5pbmZvLCAwLCB7CisgICAgICAgICAgICB0eXBlOiB3ZWJJbnNwZWN0b3IuYXVk
aXRzLm5vZGVUeXBlLnRleHQsCisgICAgICAgICAgICB0ZXh0OiAidGhpcyBydWxlIGFsd2F5cyBw
YXNzZXMgb2siCisgICAgICAgIH0pOworICAgICAgICBhdWRpdFJ1bi5hZGRSZXN1bHQoIkZhaWxl
ZCBydWxlIiwgd2ViSW5zcGVjdG9yLmF1ZGl0cy5zZXZlcml0eS5zZXZlcmUsIDQyLCB7CisgICAg
ICAgICAgICB0eXBlOiB3ZWJJbnNwZWN0b3IuYXVkaXRzLm5vZGVUeXBlLnRleHQsCisgICAgICAg
ICAgICB0ZXh0OiAidGhpcyBydWxlIGFsd2F5cyBmYWlscyIKKyAgICAgICAgfSk7CisgICAgICAg
IGF1ZGl0UnVuLmFkZFJlc3VsdCgiUnVsZSB3aXRoIGRldGFpbHMgc3VidHJlZSIsIHdlYkluc3Bl
Y3Rvci5hdWRpdHMuc2V2ZXJpdHkud2FybmluZywgMSwgeworICAgICAgICAgICAgdHlwZTogd2Vi
SW5zcGVjdG9yLmF1ZGl0cy5ub2RlVHlwZS50ZXh0LAorICAgICAgICAgICAgdGV4dDogIlRoaXMg
cnVsZSBoYXMgYSBsb3Qgb2YgZGV0YWlscyIsCisgICAgICAgICAgICBjaGlsZHJlbjogWworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZTogd2ViSW5zcGVjdG9yLmF1
ZGl0cy5ub2RlVHlwZS51cmwsCisgICAgICAgICAgICAgICAgICAgIHRleHQ6ICJodHRwOi8vd3d3
Lmdvb2dsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHR5cGU6IHdlYkluc3BlY3Rvci5hdWRpdHMubm9kZVR5cGUuc25pcHBl
dCwKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogImZ1bmN0aW9uIHJhbmQoKVxue1xuICAgIHJl
dHVybiA0O1xufSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgdHlwZTogd2ViSW5zcGVjdG9yLmF1ZGl0cy5ub2RlVHlwZS50ZXh0LAor
ICAgICAgICAgICAgICAgICAgICB0ZXh0OiAibW9yZSBkZXRhaWxzIiwKKyAgICAgICAgICAgICAg
ICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlOiB3ZWJJbnNwZWN0b3IuYXVkaXRzLm5vZGVUeXBlLnVybCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAiaHR0cDovL3d3dy53ZWJraXQub3Jn
IgorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB3ZWJJbnNwZWN0b3IuYXVkaXRzLm5v
ZGVUeXBlLnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogIm1vcmUgdGV4
dCIKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSk7CisgICAgICAgIC8vIEF1
ZGl0IG5vcm1hbGx5IHRlcm1pbmF0ZXMgd2hlbiBudW1iZXIgb2YgYWRkZWQgcnVsZSByZXN1bHRz
IGlzIGVxdWFsIHRvCisgICAgICAgIC8vIHRoZSBydWxlIGNvdW50IGRlY2xhcmVkIHdoZW4gYWRk
aW5nIGEgY2F0ZWdvcnkuIGNhbmNlbFJ1bigpIGlzIG9ubHkgZm9yCisgICAgICAgIC8vIGVtZXJn
ZW5jeSBjYXNlcywgd2hlbiB3ZSBrbm93IHdlIHdvbid0IGJlIGFibGUgdG8gcnVuIHRoZSByZXN0
IG9mIHRoZSBydWxlcy4KKyAgICAgICAgYXVkaXRSdW4uY2FuY2VsKCk7CisgICAgfQorICAgIGZ1
bmN0aW9uIG9uU3RhcnRBdWRpdEZhaWxlZENhdGVnb3J5KCkKKyAgICB7CisgICAgICAgIGxvZygi
ZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQsIHRocm93aW5nIGV4Y2VwdGlvbiIp
OworICAgICAgICB0aHJvdyAib29wcyEiOworICAgIH0KKyAgICBmdW5jdGlvbiBvblN0YXJ0QXVk
aXREaXNhYmxlZENhdGVnb3J5KGF1ZGl0UnVuKQorICAgIHsKKyAgICAgICAgbG9nKCJGQUlMOiBm
YWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCIpOworICAgICAgICBhdWRpdFJ1bi5j
YW5jZWwoKTsKKyAgICB9CisKKyAgICB2YXIgY2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRz
LmFkZENhdGVnb3J5KCJFeHRlbnNpb24gYXVkaXRzIiwgMjApOworICAgIGNhdGVnb3J5Lm9uQXVk
aXRTdGFydGVkLmFkZExpc3RlbmVyKG9uU3RhcnRBdWRpdENhdGVnb3J5KTsKKyAgICBsb2coIkFk
ZGVkIGF1ZGl0IGNhdGVnb3J5LCByZXN1bHQgZHVtcCBmb2xsb3dzOiIpOworICAgIGR1bXBPYmpl
Y3QoY2F0ZWdvcnkpOworCisgICAgdmFyIGZhaWxlZENhdGVnb3J5ID0gd2ViSW5zcGVjdG9yLmF1
ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9uIGF1ZGl0cyB0aGF0IGZhaWwiLCAyKTsKKyAgICBm
YWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXRGYWls
ZWRDYXRlZ29yeSk7CisKKyAgICB2YXIgZGlzYWJsZWRDYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5h
dWRpdHMuYWRkQ2F0ZWdvcnkoIkRpc2FibGVkIGV4dGVuc2lvbiBhdWRpdHMiLCAyKTsKKyAgICBk
aXNhYmxlZENhdGVnb3J5Lm9uQXVkaXRTdGFydGVkLmFkZExpc3RlbmVyKG9uU3RhcnRBdWRpdERp
c2FibGVkQ2F0ZWdvcnkpOworCisgICAgZnVuY3Rpb24gb25NZXNzYWdlKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJhdWRpdC10ZXN0cy1kb25lIikKKyAgICAgICAg
ICAgIG5leHRUZXN0KCk7CisgICAgfQorICAgIHRvcC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
Iiwgb25NZXNzYWdlLCBmYWxzZSk7CisgICAgd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5l
dmFsdWF0ZSgicnVuQXVkaXRzKCkiKTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRz
KHRlc3RDb250cm9sbGVyKQoreworICAgIGNvbnN0IGxhdW5jaGVyVmlldyA9IFdlYkluc3BlY3Rv
ci5wYW5lbHMuYXVkaXRzLl9sYXVuY2hlclZpZXc7CisgICAgbGF1bmNoZXJWaWV3Ll9zZWxlY3RB
bGxDbGlja2VkKGZhbHNlKTsKKyAgICBsYXVuY2hlclZpZXcuX2F1ZGl0UHJlc2VudFN0YXRlRWxl
bWVudC5jaGVja2VkID0gdHJ1ZTsKKworICAgIHZhciBleHRlbnNpb25DYXRlZ29yaWVzID0gZG9j
dW1lbnQuZXZhbHVhdGUoImxhYmVsW3N0YXJ0cy13aXRoKC4sJ0V4dGVuc2lvbiAnKV0vaW5wdXRb
QHR5cGU9J2NoZWNrYm94J10iLAorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5f
bGF1bmNoZXJWaWV3Ll9jYXRlZ29yaWVzRWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuT1JERVJF
RF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
eHRlbnNpb25DYXRlZ29yaWVzLnNuYXBzaG90TGVuZ3RoOyArK2kpCisgICAgICAgIGV4dGVuc2lv
bkNhdGVnb3JpZXMuc25hcHNob3RJdGVtKGkpLmNsaWNrKCk7CisKKyAgICBmdW5jdGlvbiBvbkF1
ZGl0c0RvbmUoKQorICAgIHsKKyAgICAgICAgdmFyIG91dHB1dCA9IGZyb250ZW5kX2NvbGxlY3RB
dWRpdFJlc3VsdHMoKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0RGVmYXVsdCgp
LmV2YWx1YXRlKCJsb2codW5lc2NhcGUoJyIgKyBlc2NhcGUoIkF1ZGl0cyBjb21wbGV0ZTpcbiIg
KyBvdXRwdXQuam9pbigiXG4iKSkgKyAiJykpOyIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dG9wLnBvc3RNZXNzYWdlKCJhdWRpdC10ZXN0cy1kb25lIiwgIioiKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnJvbnRlbmRfYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0
cywgIl9hdWRpdEZpbmlzaGVkQ2FsbGJhY2siLCBvbkF1ZGl0c0RvbmUsIHRydWUpOworICAgIGxh
dW5jaGVyVmlldy5fbGF1bmNoQnV0dG9uQ2xpY2tlZCgpOworfQorCitmdW5jdGlvbiBydW5BdWRp
dHMoKQoreworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1bkF1ZGl0cyIp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+
VGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJPC9wPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhw
ZWN0ZWQudHh0CmluZGV4IDM5MjRhNmEuLjk5MzRmNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgcmVzb3VyY2U6
IC4uLi90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKIHJlc291cmNlOiAuLi4vTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwogcmVzb3VyY2U6IC4uLi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lv
bl90ZXN0R2V0SW52YWxpZFJlc291cmNlCi1BdHRlbXB0ZWQgdG8gcmV0cmlldmUgaW52YWxpZCBy
ZXNvdXJjZTogeyJjb2RlIjoiRV9OT1RGT1VORCIsImRlc2NyaXB0aW9uIjoiT2JqZWN0IG5vdCBm
b3VuZCAoJXMpIiwiZGV0YWlscyI6WzIxMjg1MDZdLCJpc0Vycm9yIjp0cnVlfQorQXR0ZW1wdGVk
IHRvIHJldHJpZXZlIGludmFsaWQgcmVzb3VyY2U6IHsiY29kZSI6IkVfTk9URk9VTkQiLCJkZXNj
cmlwdGlvbiI6Ik9iamVjdCBub3QgZm91bmQ6ICVzIiwiZGV0YWlscyI6WzIxMjg1MDZdLCJpc0Vy
cm9yIjp0cnVlfQogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdFJlc291cmNlTm90aWZpY2F0
aW9uCiBSZXNvdXJjZSBmaW5pc2hlZDogLi4uL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9u
LW1haW4uaHRtbAogQWxsIHRlc3RzIGRvbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0My5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggZmQ2MDUwNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2F1ZGl0cy1zY3JpcHQzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1mdW5jdGlv
biBmb28zKCkKLXsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAzYmVhNzRkLi42NjlmYjM4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0y
MDAsNiArMjAwLDcgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11
bHRpLmh0bWwgPSBGQUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L01lc3Nh
Z2VQb3J0L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQuaHRtbCA9IEZBSUwKIFdPTlRGSVggU0tJUCA6
IGluc3BlY3Rvci9leHRlbnNpb25zLmh0bWwgPSBGQUlMCiBXT05URklYIFNLSVAgOiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGkuaHRtbCA9IEZBSUwKK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9l
eHRlbnNpb25zLWF1ZGl0cy5odG1sID0gRkFJTAogCiAvLyBJbXBsZW1lbnQgamF2YSB0ZXN0aW5n
IGhhcm5lc3MuCiBCVUczNjY4MSBERUZFUiBTS0lQIDogamF2YSA9IFRFWFQKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE5NzU1Zi4uMGJm
ZTQ5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2OSBAQAorMjAxMC0wOC0yNCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBhdWRpdHMgc3VwcG9ydCB0byBleHRlbnNpb24gQVBJ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDUxOAor
CisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sCisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLmFkZENhdGVnb3J5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2xhdW5jaEJ1dHRv
bkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3Rv
dHlwZS5fc2VsZWN0QWxsQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVu
Y2hlclZpZXcucHJvdG90eXBlLl9jYXRlZ29yeUNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fY3JlYXRlTGF1bmNoZXJVSSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl91cGRhdGVCdXR0
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5f
Y29tcGFyZUNhdGVnb3JpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRz
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLmdldENhdGVnb3J5KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5q
ZWN0ZWRFeHRlbnNpb25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuYWRkTGlzdGVuZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2lua0ltcGwu
cHJvdG90eXBlLl9maXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lv
bkFQSS5FdmVudFNpbmtJbXBsLnByb3RvdHlwZS5fZGlzcGF0Y2gpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2luayk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdG9yRXh0ZW5zaW9uQVBJKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0cy5wcm90b3R5cGUuYWRkQ2F0
ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0
Q2F0ZWdvcnkuY3VzdG9tRGlzcGF0Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVk
RXh0ZW5zaW9uQVBJLkF1ZGl0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVj
dGVkRXh0ZW5zaW9uQVBJLkF1ZGl0Q2F0ZWdvcnlJbXBsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdENhdGVnb3J5UnVuKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdENhdGVnb3J5UnVuSW1wbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRDYXRlZ29yeVJ1bklt
cGwucHJvdG90eXBlLmFkZFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRF
eHRlbnNpb25BUEkuQXVkaXRDYXRlZ29yeVJ1bkltcGwucHJvdG90eXBlLmNhbmNlbCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5nZXQgaWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBl
LmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRD
YXRlZ29yeS5wcm90b3R5cGUuZ2V0IHJ1bGVDb3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVuUnVsZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSdW4pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSdW4ucHJvdG90eXBlLmdldCBjb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJ1bi5wcm90b3R5cGUu
Y2FuY2VsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UnVu
LnByb3RvdHlwZS5hZGRSdWxlUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25BdWRpdENhdGVnb3J5UnVuLnByb3RvdHlwZS5fYWRkTm9kZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJ1bi5wcm90b3R5cGUuX2FkZFJlc3VsdCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24uanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmNvbW1vbkV4dGVuc2lvblN5bWJvbHMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZS5zdGFydEF1ZGl0UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLnN0b3BBdWRpdFJ1bik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25BZGRBdWRpdENhdGVnb3J5KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFkZEF1ZGl0
UnVsZVJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3Rv
dHlwZS5fb25DYW5jZWxBdWRpdENhdGVnb3J5UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9hZGRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9idWlsZEV4dGVuc2lvbkFQSUluamVj
dGVkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAxMC0wOC0y
NCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDMxYmQxNjQuLjQ4MDM2MWEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00
MTc0LDYgKzQxNzQsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvbkFQSS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BdWRpdENhdGVnb3J5LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvbkNvbW1vbi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25QYW5lbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25SZWdpc3RyeVN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDVhZTM5MjcuLmVjOTcwOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNTIwODAsNiArNTIwODAsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJ
CTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRXh0ZW5z
aW9uQXVkaXRDYXRlZ29yeS5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEV4dGVuc2lvblBhbmVs
LmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCmluZGV4IDMzZDM4NzIuLjRmNTFiMzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcwor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKQEAg
LTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BdWRp
dExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKGNhdGVnb3JpZXNCeUlkLCBydW5uZXJDYWxsYmFjaykK
K1dlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNr
KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fY2F0ZWdv
cmllc0J5SWQgPSBjYXRlZ29yaWVzQnlJZDsKICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayA9IHJ1
bm5lckNhbGxiYWNrOwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVmaXggPSAiYXVkaXQtY2F0ZWdv
cnktaXRlbS0iOwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZhbHNlOwpAQCAtNDEsMjcgKzQw
LDE2IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKGNhdGVnb3Jp
ZXNCeUlkLCBydW5uZXJDYWxsYmFjaykKICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNz
TmFtZSA9ICJhdWRpdC1sYXVuY2hlci12aWV3LWNvbnRlbnQiOwogICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CisgICAgdGhpcy5fYm91bmRDYXRlZ29y
eUNsaWNrTGlzdGVuZXIgPSB0aGlzLl9jYXRlZ29yeUNsaWNrZWQuYmluZCh0aGlzKTsKIAogICAg
IHRoaXMuX3Jlc2V0UmVzb3VyY2VDb3VudCgpOwogCi0gICAgZnVuY3Rpb24gY2F0ZWdvcnlTb3J0
RnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBhVGl0bGUgPSBhLmRpc3BsYXlOYW1l
IHx8ICIiOwotICAgICAgICB2YXIgYlRpdGxlID0gYi5kaXNwbGF5TmFtZSB8fCAiIjsKLSAgICAg
ICAgcmV0dXJuIGFUaXRsZS5sb2NhbGVDb21wYXJlKGJUaXRsZSk7Ci0gICAgfQotICAgIHZhciBz
b3J0ZWRDYXRlZ29yaWVzID0gW107Ci0gICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fY2F0ZWdvcmll
c0J5SWQpCi0gICAgICAgIHNvcnRlZENhdGVnb3JpZXMucHVzaCh0aGlzLl9jYXRlZ29yaWVzQnlJ
ZFtpZF0pOwotICAgIHNvcnRlZENhdGVnb3JpZXMuc29ydChjYXRlZ29yeVNvcnRGdW5jdGlvbik7
CisgICAgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcyA9IFtdOwogCi0gICAgaWYgKCFzb3J0ZWRDYXRl
Z29yaWVzLmxlbmd0aCkgewotICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaDEiKTsKLSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFzc05h
bWUgPSAibm8tYXVkaXRzIjsKLSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gYXVkaXRzIHRvIHJ1biIpOwotICAgICAgICB0
aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgdGhpcy5fY3JlYXRlTGF1bmNoZXJVSShzb3J0ZWRDYXRlZ29yaWVz
KTsKKyAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEi
KTsKKyAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJuby1hdWRpdHMiOworICAg
IHRoaXMuX2hlYWRlckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik5vIGF1ZGl0cyB0byBydW4iKTsKKyAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJW
aWV3LnByb3RvdHlwZSA9IHsKQEAgLTEzMyw2ICsxMjEsMzEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0
TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzZXRSZXNvdXJjZUNv
dW50KCk7CiAgICAgfSwKIAorICAgIGFkZENhdGVnb3J5OiBmdW5jdGlvbihjYXRlZ29yeSkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGgpCisgICAgICAg
ICAgICB0aGlzLl9jcmVhdGVMYXVuY2hlclVJKCk7CisKKyAgICAgICAgdmFyIGNhdGVnb3J5RWxl
bWVudCA9IHRoaXMuX2NyZWF0ZUNhdGVnb3J5RWxlbWVudChjYXRlZ29yeS5kaXNwbGF5TmFtZSwg
Y2F0ZWdvcnkuaWQpOworICAgICAgICBjYXRlZ29yeUVsZW1lbnQuZmlyc3RDaGlsZC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyLCBmYWxz
ZSk7CisgICAgICAgIGNhdGVnb3J5Ll9jaGVja2JveEVsZW1lbnQgPSBjYXRlZ29yeUVsZW1lbnQu
Zmlyc3RDaGlsZDsKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdEFsbENoZWNrYm94RWxlbWVudC5j
aGVja2VkKSB7CisgICAgICAgICAgICBjYXRlZ29yeS5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQg
PSB0cnVlOworICAgICAgICAgICAgKyt0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50OworICAg
ICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaW5zZXJ0QmVmb3JlID0gMDsKKyAgICAgICAgICAg
IGluc2VydEJlZm9yZSA8IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoICYmIHRoaXMuX2Nv
bXBhcmVDYXRlZ29yaWVzKGNhdGVnb3J5LCB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2luc2VydEJl
Zm9yZV0pID49IDA7CisgICAgICAgICAgICArK2luc2VydEJlZm9yZSk7CisKKyAgICAgICAgaWYg
KGluc2VydEJlZm9yZSA8IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoKQorICAgICAgICAg
ICAgdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKGNhdGVnb3J5RWxlbWVudCwg
dGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2hpbGRyZW5baW5zZXJ0QmVmb3JlXSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50LmFwcGVuZENoaWxkKGNh
dGVnb3J5RWxlbWVudCk7CisgICAgICAgIHRoaXMuX3NvcnRlZENhdGVnb3JpZXMuc3BsaWNlKGlu
c2VydEJlZm9yZSwgMCwgY2F0ZWdvcnkpOworICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsK
KyAgICB9LAorCiAgICAgX3NldEF1ZGl0UnVubmluZzogZnVuY3Rpb24oYXVkaXRSdW5uaW5nKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2F1ZGl0UnVubmluZyA9PT0gYXVkaXRSdW5uaW5nKQpA
QCAtMTQ2LDEwICsxNTksMTEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBjYXRJZHMgPSBbXTsKICAgICAgICAgdmFyIGNo
aWxkTm9kZXMgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzOwotICAgICAgICBm
b3IgKHZhciBpZCBpbiB0aGlzLl9jYXRlZ29yaWVzQnlJZCkgewotICAgICAgICAgICAgaWYgKHRo
aXMuX2NhdGVnb3JpZXNCeUlkW2lkXS5fY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpCi0gICAgICAg
ICAgICAgICAgY2F0SWRzLnB1c2goaWQpOworICAgICAgICBmb3IgKHZhciBjYXRlZ29yeSA9IDA7
IGNhdGVnb3J5IDwgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsrY2F0ZWdvcnkpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2NhdGVnb3J5XS5fY2hlY2ti
b3hFbGVtZW50LmNoZWNrZWQpCisgICAgICAgICAgICAgICAgY2F0SWRzLnB1c2godGhpcy5fc29y
dGVkQ2F0ZWdvcmllc1tjYXRlZ29yeV0uaWQpOwogICAgICAgICB9CisKICAgICAgICAgdGhpcy5f
c2V0QXVkaXRSdW5uaW5nKHRydWUpOwogICAgICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayhjYXRJ
ZHMsIHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVja2VkLCB0aGlzLl9zZXRBdWRp
dFJ1bm5pbmcuYmluZCh0aGlzLCBmYWxzZSkpOwogICAgIH0sCkBAIC0xNTksMTQgKzE3MywxNCBA
QCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgY2hpbGROb2RlcyA9IHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50LmNoaWxkTm9kZXM7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aDsgaSA8IGxlbmd0
aDsgKytpKQogICAgICAgICAgICAgY2hpbGROb2Rlc1tpXS5maXJzdENoaWxkLmNoZWNrZWQgPSBj
aGVja0NhdGVnb3JpZXM7Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPSBj
aGVja0NhdGVnb3JpZXMgPyB0aGlzLl90b3RhbENhdGVnb3JpZXNDb3VudCA6IDA7CisgICAgICAg
IHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPSBjaGVja0NhdGVnb3JpZXMgPyB0aGlzLl9z
b3J0ZWRDYXRlZ29yaWVzLmxlbmd0aCA6IDA7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigp
OwogICAgIH0sCiAKICAgICBfY2F0ZWdvcnlDbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgKz0gZXZlbnQudGFyZ2V0LmNo
ZWNrZWQgPyAxIDogLTE7Ci0gICAgICAgIHRoaXMuX3NlbGVjdEFsbENoZWNrYm94RWxlbWVudC5j
aGVja2VkID0gdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9PT0gdGhpcy5fdG90YWxDYXRl
Z29yaWVzQ291bnQ7CisgICAgICAgIHRoaXMuX3NlbGVjdEFsbENoZWNrYm94RWxlbWVudC5jaGVj
a2VkID0gdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9PT0gdGhpcy5fc29ydGVkQ2F0ZWdv
cmllcy5sZW5ndGg7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigpOwogICAgIH0sCiAKQEAg
LTE4MywxMCArMTk3LDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBsYWJlbEVsZW1lbnQ7CiAgICAgfSwKIAotICAgIF9jcmVh
dGVMYXVuY2hlclVJOiBmdW5jdGlvbihzb3J0ZWRDYXRlZ29yaWVzKQorICAgIF9jcmVhdGVMYXVu
Y2hlclVJOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVu
dC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0IGF1ZGl0cyB0byBy
dW4iKTsKKworICAgICAgICBmb3IgKHZhciBjaGlsZCA9IDA7IGNoaWxkIDwgdGhpcy5fY29udGVu
dEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyArK2NoaWxkKQorICAgICAgICAgICAgdGhpcy5fY29u
dGVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQuY2hpbGRyZW5bY2hp
bGRdKTsKKwogICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9o
ZWFkZXJFbGVtZW50KTsKIAogICAgICAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhl
dmVudCkKQEAgLTIwNCwxNiArMjIyLDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2xhc3NOYW1l
ID0gImF1ZGl0LWNhdGVnb3JpZXMtY29udGFpbmVyIjsKICAgICAgICAgdGhpcy5fY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQpOwogCi0gICAgICAgIHZh
ciBib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciA9IHRoaXMuX2NhdGVnb3J5Q2xpY2tlZC5iaW5k
KHRoaXMpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ydGVkQ2F0ZWdvcmllcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY2F0ZWdvcnlFbGVtZW50ID0gdGhpcy5fY3JlYXRl
Q2F0ZWdvcnlFbGVtZW50KHNvcnRlZENhdGVnb3JpZXNbaV0uZGlzcGxheU5hbWUsIHNvcnRlZENh
dGVnb3JpZXNbaV0uaWQpOwotICAgICAgICAgICAgY2F0ZWdvcnlFbGVtZW50LmZpcnN0Q2hpbGQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciwgZmFs
c2UpOwotICAgICAgICAgICAgc29ydGVkQ2F0ZWdvcmllc1tpXS5fY2hlY2tib3hFbGVtZW50ID0g
Y2F0ZWdvcnlFbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgICAgICAgICB0aGlzLl9jYXRlZ29yaWVz
RWxlbWVudC5hcHBlbmRDaGlsZChjYXRlZ29yeUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5fdG90YWxDYXRlZ29yaWVzQ291bnQgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5j
aGlsZE5vZGVzLmxlbmd0aDsKICAgICAgICAgdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9
IDA7CiAKICAgICAgICAgdmFyIGZsZXhpYmxlU3BhY2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CkBAIC0yNzgsNiArMjg2LDEzIEBAIFdlYkluc3BlY3Rvci5BdWRpdExh
dW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3VwZGF0ZUJ1dHRvbjogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgdGhpcy5fbGF1bmNoQnV0dG9uLmRpc2FibGVkID0gIXRoaXMuX2N1cnJl
bnRDYXRlZ29yaWVzQ291bnQgfHwgdGhpcy5fYXVkaXRSdW5uaW5nOworICAgIH0sCisKKyAgICBf
Y29tcGFyZUNhdGVnb3JpZXM6IGZ1bmN0aW9uKGEsIGIpCisgICAgeworICAgICAgICB2YXIgYVRp
dGxlID0gYS5kaXNwbGF5TmFtZSB8fCAiIjsKKyAgICAgICAgdmFyIGJUaXRsZSA9IGIuZGlzcGxh
eU5hbWUgfHwgIiI7CisgICAgICAgIHJldHVybiBhVGl0bGUubG9jYWxlQ29tcGFyZShiVGl0bGUp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1
ZGl0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpz
CmluZGV4IGJjN2YzYjMuLjA0ZTY0Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRzUGFuZWwuanMKQEAgLTMyLDggKzMyLDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
ID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJhdWRp
dHMiKTsKIAotICAgIHRoaXMuX2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKLQogICAgIHRoaXMuY3Jl
YXRlU2lkZWJhcigpOwogICAgIHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQoIiIsIHt9LCB0cnVlKTsKICAgICB0aGlzLnNp
ZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQpOwpAQCAtNTQsNyAr
NTIsMTEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMu
dmlld3NDb250YWluZXJFbGVtZW50LmlkID0gImF1ZGl0LXZpZXdzIjsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQpOwogCi0gICAgdGhpcy5f
bGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmNh
dGVnb3JpZXNCeUlkLCB0aGlzLmluaXRpYXRlQXVkaXQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5f
Y29uc3RydWN0Q2F0ZWdvcmllcygpOworCisgICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmluaXRpYXRlQXVkaXQuYmluZCh0aGlz
KSk7CisgICAgZm9yIChpZCBpbiB0aGlzLmNhdGVnb3JpZXNCeUlkKQorICAgICAgICB0aGlzLl9s
YXVuY2hlclZpZXcuYWRkQ2F0ZWdvcnkodGhpcy5jYXRlZ29yaWVzQnlJZFtpZF0pOwogfQogCiBX
ZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewpAQCAtMTA0LDYgKzEwNiwxNyBA
QCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9s
YXVuY2hlclZpZXcucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CiAgICAgfSwKIAorICAgIGFk
ZENhdGVnb3J5OiBmdW5jdGlvbihjYXRlZ29yeSkKKyAgICB7CisgICAgICAgIHRoaXMuY2F0ZWdv
cmllc0J5SWRbY2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnk7CisgICAgICAgIHRoaXMuX2xhdW5jaGVy
Vmlldy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7CisgICAgfSwKKworICAgIGdldENhdGVnb3J5OiBm
dW5jdGlvbihpZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXNCeUlkW2lk
XTsKKyAgICB9LAorCiAgICAgX2NvbnN0cnVjdENhdGVnb3JpZXM6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2F1ZGl0Q2F0ZWdvcmllc0J5SWQgPSB7fTsKQEAgLTIyMCw3ICsyMzMs
NyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdGhpcy52aXNpYmxlVmlldyA9IHRoaXMuX2xhdW5jaGVyVmlldzsKICAgICB9LAotICAgIAor
CiAgICAgZ2V0IHZpc2libGVWaWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aXNp
YmxlVmlldzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25BUEkuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmlu
ZGV4IGE4OWRjZjEuLjhiZWQzNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvbkFQSS5qcwpAQCAtMjgsNyArMjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi12
YXIgaW5qZWN0ZWRFeHRlbnNpb25BUEkgPSBmdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGlu
c3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCkKK1dlYkluc3BlY3Rvci5pbmplY3RlZEV4
dGVuc2lvbkFQSSA9IGZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93
LCBpbmplY3RlZFNjcmlwdElkKQogewogCiAvLyBIZXJlIGFuZCBiZWxvdywgYWxsIGNvbnN0cnVj
dG9ycyBhcmUgcHJpdmF0ZSB0byBBUEkgaW1wbGVtZW50YXRpb24uCkBAIC0zNywxOSArMzcsMjIg
QEAgdmFyIGluamVjdGVkRXh0ZW5zaW9uQVBJID0gZnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0
LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGUKIC8vIGJ5IEZvbyBjb25zdXRyY3RvciB0byByZS1i
aW5kIHB1YmxpY2x5IGV4cG9ydGVkIG1lbWJlcnMgdG8gYW4gaW5zdGFuY2UKIC8vIG9mIEZvby4K
IAotZnVuY3Rpb24gRXZlbnRTaW5rSW1wbCh0eXBlKQorZnVuY3Rpb24gRXZlbnRTaW5rSW1wbCh0
eXBlLCBjdXN0b21EaXNwYXRjaCkKIHsKICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICB0aGlz
Ll9saXN0ZW5lcnMgPSBbXTsKKyAgICB0aGlzLl9jdXN0b21EaXNwYXRjaCA9IGN1c3RvbURpc3Bh
dGNoOwogfQogCiBFdmVudFNpbmtJbXBsLnByb3RvdHlwZSA9IHsKICAgICBhZGRMaXN0ZW5lcjog
ZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgeworICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9
ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgImFkZExpc3RlbmVyOiBjYWxsYmFj
ayBpcyBub3QgYSBmdW5jdGlvbiI7CiAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lcnMubGVuZ3Ro
ID09PSAwKQogICAgICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFu
ZDogInN1YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgICAgIHRoaXMuX2xpc3Rl
bmVycy5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnJlZ2lzdGVySGFu
ZGxlcigibm90aWZ5LSIgKyB0aGlzLl90eXBlLCBiaW5kKHRoaXMuX2ZpcmUsIHRoaXMpKTsKKyAg
ICAgICAgZXh0ZW5zaW9uU2VydmVyLnJlZ2lzdGVySGFuZGxlcigibm90aWZ5LSIgKyB0aGlzLl90
eXBlLCBiaW5kKHRoaXMuX2Rpc3BhdGNoLCB0aGlzKSk7CiAgICAgfSwKIAogICAgIHJlbW92ZUxp
c3RlbmVyOiBmdW5jdGlvbihjYWxsYmFjaykKQEAgLTY2LDI2ICs2OSwzNiBAQCBFdmVudFNpbmtJ
bXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVz
dCh7IGNvbW1hbmQ6ICJ1bnN1YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgfSwK
IAotICAgIF9maXJlOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIF9maXJlOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzLnNsaWNlKCk7CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KG51bGwsIHJlcXVlc3QuYXJndW1lbnRzKTsKKyAgICAg
ICAgICAgIGxpc3RlbmVyc1tpXS5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgIH0sCisKKyAg
ICBfZGlzcGF0Y2g6IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICAgaWYgKHRoaXMu
X2N1c3RvbURpc3BhdGNoKQorICAgICAgICAgICAgIHRoaXMuX2N1c3RvbURpc3BhdGNoLmNhbGwo
dGhpcywgcmVxdWVzdCk7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgdGhpcy5fZmlyZS5h
cHBseSh0aGlzLCByZXF1ZXN0LmFyZ3VtZW50cyk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBFdmVu
dFNpbmsodHlwZSkKK2Z1bmN0aW9uIEV2ZW50U2luayh0eXBlLCBjdXN0b21EaXNwYXRjaCkKIHsK
LSAgICB2YXIgaW1wbCA9IG5ldyBFdmVudFNpbmtJbXBsKHR5cGUpOworICAgIHZhciBpbXBsID0g
bmV3IEV2ZW50U2lua0ltcGwodHlwZSwgY3VzdG9tRGlzcGF0Y2gpOwogICAgIHRoaXMuYWRkTGlz
dGVuZXIgPSBiaW5kKGltcGwuYWRkTGlzdGVuZXIsIGltcGwpOwogICAgIHRoaXMucmVtb3ZlTGlz
dGVuZXIgPSBiaW5kKGltcGwucmVtb3ZlTGlzdGVuZXIsIGltcGwpOwogfQogCiBmdW5jdGlvbiBJ
bnNwZWN0b3JFeHRlbnNpb25BUEkoKQogeworICAgIHRoaXMuYXVkaXRzID0gbmV3IEF1ZGl0cygp
OwogICAgIHRoaXMuaW5zcGVjdGVkV2luZG93ID0gbmV3IEluc3BlY3RlZFdpbmRvdygpOwogICAg
IHRoaXMucGFuZWxzID0gbmV3IFBhbmVscygpOwogICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IFJl
c291cmNlcygpOworCiAgICAgdGhpcy5vblJlc2V0ID0gbmV3IEV2ZW50U2luaygicmVzZXQiKTsK
IH0KIApAQCAtMTI1LDcgKzEzOCw3IEBAIGZ1bmN0aW9uIFBhbmVscygpCiAgICAgewogICAgICAg
ICByZXR1cm4gcGFuZWxzW25hbWVdOwogICAgIH0KLSAgICAKKwogICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgd2VsbEtub3duUGFuZWxOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICB2YXIgbmFt
ZSA9IHdlbGxLbm93blBhbmVsTmFtZXNbaV07CiAgICAgICAgIHBhbmVsc1tuYW1lXSA9IG5ldyBQ
YW5lbChuYW1lKTsKQEAgLTE1MSw3ICsxNjQsNyBAQCBQYW5lbHMucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICAgbGFiZWw6IGxhYmVsLAogICAgICAgICAgICAg
dXJsOiBleHBhbmRVUkwocGFnZVVSTCksCi0gICAgICAgICAgICBpY29uOiBleHBhbmRVUkwoaWNv
blVSTCkgCisgICAgICAgICAgICBpY29uOiBleHBhbmRVUkwoaWNvblVSTCkKICAgICAgICAgfTsK
ICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHJlcXVlc3QsIGNhbGxiYWNrICYm
IGJpbmQoY2FsbGJhY2tXcmFwcGVyLCB0aGlzKSk7CiAgICAgfQpAQCAtMjE5LDYgKzIzMiw3MyBA
QCBmdW5jdGlvbiBFeHRlbnNpb25TaWRlYmFyUGFuZShpZCkKICAgICB0aGlzLnNldEV4cGFuZGVk
ID0gYmluZChpbXBsLnNldEV4cGFuZGVkLCBpbXBsKTsKIH0KIAorZnVuY3Rpb24gQXVkaXRzKCkK
K3sKK30KKworQXVkaXRzLnByb3RvdHlwZSA9IHsKKyAgICBhZGRDYXRlZ29yeTogZnVuY3Rpb24o
ZGlzcGxheU5hbWUsIHJ1bGVDb3VudCkKKyAgICB7CisgICAgICAgIHZhciBpZCA9ICJleHRlbnNp
b24tYXVkaXQtY2F0ZWdvcnktIiArIGV4dGVuc2lvblNlcnZlci5uZXh0T2JqZWN0SWQoKTsKKyAg
ICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogImFkZEF1ZGl0Q2F0
ZWdvcnkiLCBpZDogaWQsIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSwgcnVsZUNvdW50OiBydWxl
Q291bnQgfSk7CisgICAgICAgIHJldHVybiBuZXcgQXVkaXRDYXRlZ29yeShpZCk7CisgICAgfQor
fQorCitmdW5jdGlvbiBBdWRpdENhdGVnb3J5KGlkKQoreworICAgIGZ1bmN0aW9uIGN1c3RvbURp
c3BhdGNoKHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSdW4gPSBuZXcgQXVkaXRD
YXRlZ29yeVJ1bihyZXF1ZXN0LmFyZ3VtZW50c1swXSk7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICB0aGlzLl9maXJlKGF1ZGl0UnVuKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGV4dGVuc2lvbiBhdWRp
dCBldmVudCBoYW5kbGVyOiAiICsgZSk7CisgICAgICAgICAgICBhdWRpdFJ1bi5jYW5jZWwoKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB2YXIgaW1wbCA9IG5ldyBBdWRpdENhdGVnb3J5SW1wbChp
ZCk7CisgICAgdGhpcy5vbkF1ZGl0U3RhcnRlZCA9IG5ldyBFdmVudFNpbmsoImF1ZGl0LXN0YXJ0
ZWQtIiArIGlkLCBjdXN0b21EaXNwYXRjaCk7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdvcnlJ
bXBsKGlkKQoreworICAgIHRoaXMuX2lkID0gaWQ7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdv
cnlSdW4oaWQpCit7CisgICAgdmFyIGltcGwgPSBuZXcgQXVkaXRDYXRlZ29yeVJ1bkltcGwoaWQp
OworCisgICAgdGhpcy5hZGRSZXN1bHQgPSBiaW5kKGltcGwuYWRkUmVzdWx0LCBpbXBsKTsKKyAg
ICB0aGlzLmNhbmNlbCA9IGJpbmQoaW1wbC5jYW5jZWwsIGltcGwpOworfQorCitmdW5jdGlvbiBB
dWRpdENhdGVnb3J5UnVuSW1wbChpZCkKK3sKKyAgICB0aGlzLl9pZCA9IGlkOworfQorCitBdWRp
dENhdGVnb3J5UnVuSW1wbC5wcm90b3R5cGUgPSB7CisgICAgYWRkUmVzdWx0OiBmdW5jdGlvbihy
dWxlRGlzcGxheU5hbWUsIHNldmVyaXR5LCB2aW9sYXRpb25Db3VudCwgZGV0YWlscykKKyAgICB7
CisgICAgICAgIHZhciByZXF1ZXN0ID0geworICAgICAgICAgICAgY29tbWFuZDogImFkZEF1ZGl0
UnVsZVJlc3VsdCIsCisgICAgICAgICAgICBydW5JZDogdGhpcy5faWQsCisgICAgICAgICAgICBy
dWxlRGlzcGxheU5hbWU6IHJ1bGVEaXNwbGF5TmFtZSwKKyAgICAgICAgICAgIHNldmVyaXR5OiBz
ZXZlcml0eSwKKyAgICAgICAgICAgIHZpb2xhdGlvbkNvdW50OiB2aW9sYXRpb25Db3VudCwKKyAg
ICAgICAgICAgIGRldGFpbHM6IGRldGFpbHMKKyAgICAgICAgfTsKKyAgICAgICAgZXh0ZW5zaW9u
U2VydmVyLnNlbmRSZXF1ZXN0KHJlcXVlc3QpOworICAgIH0sCisKKyAgICBjYW5jZWw6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1h
bmQ6ICJjYW5jZWxBdWRpdENhdGVnb3J5UnVuIiwgcnVuSWQ6IHRoaXMuX2lkIH0pOworICAgIH0K
K30KKwogZnVuY3Rpb24gSW5zcGVjdGVkV2luZG93KCkKIHsKICAgICB0aGlzLm9uTG9hZGVkID0g
bmV3IEV2ZW50U2luaygiaW5zcGVjdGVkUGFnZUxvYWRlZCIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODEyYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKQEAgLTAs
MCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeSA9IGZ1bmN0aW9u
KGlkLCBkaXNwbGF5TmFtZSwgcnVsZUNvdW50KQoreworICAgIHRoaXMuX2lkID0gaWQ7CisgICAg
dGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICB0aGlzLl9ydWxlQ291bnQgID0g
cnVsZUNvdW50OworfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90
b3R5cGUgPSB7CisgICAgLy8gQXVkaXRDYXRlZ29yeSBpbnRlcmZhY2UKKyAgICBnZXQgaWQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAgICBnZXQgZGlzcGxh
eU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOworICAgIH0s
CisKKyAgICBnZXQgcnVsZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ydWxl
Q291bnQ7CisgICAgfSwKKworICAgIHJ1blJ1bGVzOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVn
b3J5UnVuKHRoaXMsIGNhbGxiYWNrKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5FeHRlbnNp
b25BdWRpdENhdGVnb3J5UnVuID0gZnVuY3Rpb24oY2F0ZWdvcnksIGNhbGxiYWNrKQoreworICAg
IHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgdGhpcy5fcGVuZGluZ1J1bGVzID0gY2F0
ZWdvcnkucnVsZUNvdW50OworICAgIHRoaXMuX3J1bGVDb21wbGV0aW9uQ2FsbGJhY2sgPSBjYWxs
YmFjazsKKworICAgIHRoaXMuaWQgPSBjYXRlZ29yeS5pZCArICItIiArICsrV2ViSW5zcGVjdG9y
LkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSdW4uX2xhc3RJZDsKKyAgICBXZWJJbnNwZWN0b3IuZXh0
ZW5zaW9uU2VydmVyLnN0YXJ0QXVkaXRSdW4oY2F0ZWdvcnksIHRoaXMpOworfQorCitXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJ1bi5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGNv
bXBsZXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhdGhpcy5fcGVuZGluZ1J1bGVzOworICAg
IH0sCisKKyAgICBjYW5jZWw6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHdoaWxlICghdGhp
cy5jb21wbGV0ZSkKKyAgICAgICAgICAgIHRoaXMuX2FkZFJlc3VsdChudWxsKTsKKyAgICB9LAor
CisgICAgYWRkUnVsZVJlc3VsdDogZnVuY3Rpb24ocnVsZURpc3BsYXlOYW1lLCBzZXZlcml0eSwg
dmlvbGF0aW9uQ291bnQsIGRldGFpbHMpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3
IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQocnVsZURpc3BsYXlOYW1lKTsKKyAgICAgICAg
cmVzdWx0LnNldmVyaXR5ID0gc2V2ZXJpdHk7CisgICAgICAgIHJlc3VsdC52aW9sYXRpb25Db3Vu
dCA9IHZpb2xhdGlvbkNvdW50OworICAgICAgICBpZiAoZGV0YWlscykKKyAgICAgICAgICAgIHRo
aXMuX2FkZE5vZGUocmVzdWx0LCBkZXRhaWxzKTsKKyAgICAgICAgdGhpcy5fYWRkUmVzdWx0KHJl
c3VsdCk7CisgICAgfSwKKworICAgIF9hZGROb2RlOiBmdW5jdGlvbihwYXJlbnQsIG5vZGUpCisg
ICAgeworICAgICAgICB2YXIgYWRkZWROb2RlOworICAgICAgICBzd2l0Y2ggKG5vZGUudHlwZSkg
eworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLmF1ZGl0cy5ub2Rl
VHlwZS50ZXh0OgorICAgICAgICAgICAgICAgIGFkZGVkTm9kZSA9IHBhcmVudC5hZGRDaGlsZChu
b2RlLnRleHQsIG5vZGUuZXhwYW5kZWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuYXVkaXRzLm5vZGVUeXBlLnVy
bDoKKyAgICAgICAgICAgICAgICBhZGRlZE5vZGUgPSBwYXJlbnQuYWRkVVJMKG5vZGUudGV4dCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LmV4dGVuc2lvbkFQSS5hdWRpdHMubm9kZVR5cGUuc25pcHBldDoKKyAgICAgICAgICAgICAgICBh
ZGRlZE5vZGUgPSBwYXJlbnQuYWRkU25pcHBldChub2RlLnRleHQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IFdl
Ykluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIuX3N0YXR1cy5FX0JBREFSRygibm9kZS50eXBlIiwg
bm9kZS50eXBlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWRkZWROb2RlICYmIG5vZGUuY2hp
bGRyZW4pIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGROb2RlKGFkZGVkTm9kZSwgbm9k
ZS5jaGlsZHJlbltpXSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2FkZFJlc3VsdDogZnVu
Y3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAgdGhpcy5fcnVsZUNvbXBsZXRpb25DYWxsYmFj
ayhyZXN1bHQpOworICAgICAgICB0aGlzLl9wZW5kaW5nUnVsZXMtLTsKKyAgICAgICAgaWYgKCF0
aGlzLl9wZW5kaW5nUnVsZXMpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2Vy
dmVyLnN0b3BBdWRpdFJ1bihhdWRpdFJ1bik7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeVJ1bi5fbGFzdElkID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24uanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmEwZWJlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3Iu
Y29tbW9uRXh0ZW5zaW9uU3ltYm9scyA9IGZ1bmN0aW9uKG5hbWVzcGFjZSkKK3sKKyAgICBpZiAo
IW5hbWVzcGFjZS5hdWRpdHMpCisgICAgICAgIG5hbWVzcGFjZS5hdWRpdHMgPSB7fTsKKworICAg
IG5hbWVzcGFjZS5hdWRpdHMuc2V2ZXJpdHkgPSB7CisgICAgICAgIGluZm86ICJpbmZvIiwKKyAg
ICAgICAgd2FybmluZzogIndhcm5pbmciLAorICAgICAgICBzZXZlcmU6ICJzZXZlcmUiCisgICAg
fTsKKyAgICBuYW1lc3BhY2UuYXVkaXRzLm5vZGVUeXBlID0geworICAgICAgICB1cmw6ICJ1cmwi
LAorICAgICAgICB0ZXh0OiAidGV4dCIsCisgICAgICAgIHNuaXBwZXQ6ICJzbmlwcGV0IgorICAg
IH07Cit9CisKK1dlYkluc3BlY3Rvci5leHRlbnNpb25BUEkgPSB7fTsKKworV2ViSW5zcGVjdG9y
LmNvbW1vbkV4dGVuc2lvblN5bWJvbHMoV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwppbmRleCA5NWYz
NzNmLi43ZDNiNDIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMKQEAgLTQwLDExICs0MCwxNSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2Vy
dmVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiZ2V0UmVzb3VyY2Vz
IiwgdGhpcy5fb25HZXRSZXNvdXJjZXMuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJI
YW5kbGVyKCJjcmVhdGVQYW5lbCIsIHRoaXMuX29uQ3JlYXRlUGFuZWwuYmluZCh0aGlzKSk7CiAg
ICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVTaWRlYmFyUGFuZSIsIHRoaXMuX29uQ3Jl
YXRlU2lkZWJhci5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImxvZyIs
IHRoaXMuX29uTG9nLmJpbmQodGhpcykpOyAKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImxv
ZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigi
ZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9vbkV2YWx1YXRlT25JbnNwZWN0ZWRQYWdl
LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0U2lkZWJhckhlaWdo
dCIsIHRoaXMuX29uU2V0U2lkZWJhckhlaWdodC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdp
c3RlckhhbmRsZXIoInNldFNpZGViYXJFeHBhbmRlZCIsIHRoaXMuX29uU2V0U2lkZWJhckV4cGFu
c2lvbi5iaW5kKHRoaXMpKTsKIAorICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiYWRkQXVkaXRD
YXRlZ29yeSIsIHRoaXMuX29uQWRkQXVkaXRDYXRlZ29yeS5iaW5kKHRoaXMpKTsKKyAgICB0aGlz
Ll9yZWdpc3RlckhhbmRsZXIoImFkZEF1ZGl0UnVsZVJlc3VsdCIsIHRoaXMuX29uQWRkQXVkaXRS
dWxlUmVzdWx0LmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigiY2FuY2Vs
QXVkaXRDYXRlZ29yeVJ1biIsIHRoaXMuX29uQ2FuY2VsQXVkaXRDYXRlZ29yeVJ1bi5iaW5kKHRo
aXMpKTsKKwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25X
aW5kb3dNZXNzYWdlLmJpbmQodGhpcyksIGZhbHNlKTsKIH0KIApAQCAtODQsNiArODgsMTcgQEAg
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3Bvc3ROb3RpZmljYXRpb24oInJlc2V0Iik7CiAgICAgfSwKIAorICAgIHN0YXJ0QXVkaXRSdW46
IGZ1bmN0aW9uKGNhdGVnb3J5LCBhdWRpdFJ1bikKKyAgICB7CisgICAgICAgIHRoaXMuX2NsaWVu
dE9iamVjdHNbYXVkaXRSdW4uaWRdID0gYXVkaXRSdW47CisgICAgICAgIHRoaXMuX3Bvc3ROb3Rp
ZmljYXRpb24oImF1ZGl0LXN0YXJ0ZWQtIiArIGNhdGVnb3J5LmlkLCBhdWRpdFJ1bi5pZCk7Cisg
ICAgfSwKKworICAgIHN0b3BBdWRpdFJ1bjogZnVuY3Rpb24oYXVkaXRSdW4pCisgICAgeworICAg
ICAgICBkZWxldGUgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF07CisgICAgfSwKKwog
ICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHsKQEAgLTEwMCw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSB7CiAgICAgICAgICAgICBjb21tYW5kOiAibm90aWZ5LSIgKyB0eXBlLAotICAgICAgICAgICAg
YXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpIAorICAg
ICAgICAgICAgYXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMs
IDEpCiAgICAgICAgIH07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2NyaWJlcnMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBzdWJzY3JpYmVyc1tpXS5wb3N0TWVzc2FnZShtZXNz
YWdlKTsKQEAgLTI0OCw2ICsyNjMsMzYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsKICAgICB9LAogCisgICAgX29u
QWRkQXVkaXRDYXRlZ29yeTogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICB7CisgICAgICAgIHZhciBj
YXRlZ29yeSA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeShyZXF1ZXN0
LmlkLCByZXF1ZXN0LmRpc3BsYXlOYW1lLCByZXF1ZXN0LnJ1bGVDb3VudCk7CisgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5nZXRDYXRlZ29yeShjYXRlZ29yeS5pZCkpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRVhJU1RTKGNhdGVnb3J5LmlkKTsKKyAg
ICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LmlkXSA9IGNhdGVnb3J5OworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7CisgICAg
fSwKKworICAgIF9vbkFkZEF1ZGl0UnVsZVJlc3VsdDogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICB7
CisgICAgICAgIHZhciBhdWRpdFJ1biA9IHRoaXMuX2NsaWVudE9iamVjdHNbcmVxdWVzdC5ydW5J
ZF07CisgICAgICAgIGlmICghYXVkaXRSdW4pCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Rh
dHVzLkVfTk9URk9VTkQocmVxdWVzdC5ydW5JZCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBhdWRpdFJ1bi5hZGRSdWxlUmVzdWx0KHJlcXVlc3QucnVsZURpc3BsYXlOYW1lLCByZXF1ZXN0
LnNldmVyaXR5LCByZXF1ZXN0LnZpb2xhdGlvbkNvdW50LCByZXF1ZXN0LmRldGFpbHMpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9LKCk7CisgICAgfSwKKworICAgIF9vbkNhbmNlbEF1
ZGl0Q2F0ZWdvcnlSdW46IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgYXVk
aXRSdW4gPSB0aGlzLl9jbGllbnRPYmplY3RzW3JlcXVlc3QucnVuSWRdOworICAgICAgICBpZiAo
IWF1ZGl0UnVuKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHJl
cXVlc3QucnVuSWQpOworICAgICAgICBhdWRpdFJ1bi5jYW5jZWwoKTsKKyAgICB9LAorCiAgICAg
aW5pdEV4dGVuc2lvbnM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvckV4dGVu
c2lvblJlZ2lzdHJ5LmdldEV4dGVuc2lvbnNBc3luYygpOwpAQCAtMjU1LDcgKzMwMCw4IEBAIFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX2FkZEV4dGVu
c2lvbnM6IGZ1bmN0aW9uKGV4dGVuc2lvbnMpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Quc2V0RXh0ZW5zaW9uQVBJKCIoIiArIGluamVjdGVkRXh0ZW5zaW9uQVBJLnRvU3Ry
aW5nKCkgKyAiKSIpOyAvLyBTZWUgRXh0ZW5zaW9uQVBJLmpzIGZvciBkZXRhaWxzLgorICAgICAg
ICAvLyBTZWUgRXh0ZW5zaW9uQVBJLmpzIGFuZCBFeHRlbnNpb25Db21tb24uanMgZm9yIGRldGFp
bHMuCisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRFeHRlbnNpb25BUEkodGhpcy5f
YnVpbGRFeHRlbnNpb25BUElJbmplY3RlZFNjcmlwdCgpKTsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBleHRlbnNpb25zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXh0ZW5z
aW9uID0gZXh0ZW5zaW9uc1tpXTsKICAgICAgICAgICAgIHRyeSB7CkBAIC0yNzEsNiArMzE3LDE0
IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAorICAgIF9idWlsZEV4dGVuc2lvbkFQSUluamVjdGVkU2NyaXB0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gIihmdW5jdGlvbigpeyAiICsKKyAgICAgICAgICAg
ICIoIiArIFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS50b1N0cmluZygpICsgIiku
YXBwbHkodGhpcywgYXJndW1lbnRzKTsiICsKKyAgICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rv
ci5jb21tb25FeHRlbnNpb25TeW1ib2xzLnRvU3RyaW5nKCkgKyAiKSh3ZWJJbnNwZWN0b3IpOyIg
KworICAgICAgICAgICAgIn0pIjsKKyAgICB9LAorCiAgICAgX29uV2luZG93TWVzc2FnZTogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gInJlZ2lzdGVy
RXh0ZW5zaW9uIikKQEAgLTMwMCwxMiArMzU0LDE0IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25T
ZXJ2ZXIucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNl
cnZlci5fc3RhdHVzZXMgPSAKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2Vz
ID0KIHsKICAgICBPSzogIiIsCi0gICAgRV9OT1RGT1VORDogIk9iamVjdCBub3QgZm91bmQgKCVz
KSIsCi0gICAgRV9OT1RTVVBQT1JURUQ6ICJPYmplY3QgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0
ZWQgb3BlcmF0aW9uICglcykiLAotICAgIEVfRVhJU1RTOiAiT2JqZWN0IGFscmVhZHkgZXhpc3Rz
ICglcykiCisgICAgRV9FWElTVFM6ICJPYmplY3QgYWxyZWFkeSBleGlzdHM6ICVzIiwKKyAgICBF
X0JBREFSRzogIkludmFsaWQgYXJndW1lbnQgJXM6ICVzIiwKKyAgICBFX0JBREFSR1RZUEU6ICJJ
bnZhbGlkIHR5cGUgZm9yIGFyZ3VtZW50ICVzOiBnb3QgJXMsIGV4cGVjdGVkICVzIiwKKyAgICBF
X05PVEZPVU5EOiAiT2JqZWN0IG5vdCBmb3VuZDogJXMiLAorICAgIEVfTk9UU1VQUE9SVEVEOiAi
T2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJhdGlvbjogJXMiLAogfQogCiBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU3RhdHVzID0gZnVuY3Rpb24oKQpAQCAtMzE5LDcgKzM3NSw3
IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TdGF0dXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAg
ICBzdGF0dXMuaXNFcnJvciA9IHRydWU7CiAgICAgICAgICAgICBjb25zb2xlLmxvZygiRXh0ZW5z
aW9uIHNlcnZlciBlcnJvcjogIiArIFN0cmluZy52c3ByaW50ZihkZXNjcmlwdGlvbiwgZGV0YWls
cykpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0dXM7IAorICAgICAgICByZXR1cm4g
c3RhdHVzOwogICAgIH0KICAgICBmb3IgKHN0YXR1cyBpbiBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLl9zdGF0dXNlcykKICAgICAgICAgdGhpc1tzdGF0dXNdID0gbWFrZVN0YXR1cy5iaW5k
KG51bGwsIHN0YXR1cyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4
IDQ5MDE4NTcuLjJkOWNjYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
CkBAIC0zNSw2ICszNSw4IEBACiAgICAgPGZpbGU+RWxlbWVudHNUcmVlT3V0bGluZS5qczwvZmls
ZT4KICAgICA8ZmlsZT5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxm
aWxlPkV4dGVuc2lvbkFQSS5qczwvZmlsZT4KKyAgICA8ZmlsZT5FeHRlbnNpb25BdWRpdENhdGVn
b3J5LmpzPC9maWxlPgorICAgIDxmaWxlPkV4dGVuc2lvbkNvbW1vbi5qczwvZmlsZT4KICAgICA8
ZmlsZT5FeHRlbnNpb25QYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25SZWdpc3Ry
eVN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDE0ZTJjZGMuLjkz
OTU3OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAg
LTk4LDYgKzk4LDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJQcm9maWxlc1BhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJDb25zb2xlUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvbkFQSS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQXVkaXRD
YXRlZ29yeS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRXh0ZW5zaW9uQ29tbW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25TZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvblBhbmVsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdHNQYW5l
bC5qcyI+PC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="53997"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65557</attachid>
            <date>2010-08-26 07:00:02 -0700</date>
            <delta_ts>2010-08-26 07:44:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extension-audits.patch</filename>
            <type>text/plain</type>
            <size>51744</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NGU2ZjA5Li5iMDVhZTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDgt
MjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVk
aXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMt
cGFuZWwtZnVuY3Rpb25hbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtdGVzdHMu
anM6IEFkZGVkLgorICAgICAgICAoZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cyk6CisgICAg
ICAgIChmcm9udGVuZF9jb2xsZWN0VGV4dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9l
eHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2V4dGVu
c2lvbnMtYXVkaXRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3Jp
cHQzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKwogMjAxMC0wOC0yNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1h
bm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIFVwZGF0ZSBndGsgc3BlY2lmaWMg
cmVzdWx0IGFmdGVyIHI2NjA5My4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9h
dWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKaW5kZXggNzE1MzdmNC4uZTdhMjgwNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKQEAg
LTcsMTIgKzcsMTIgQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImF1ZGl0
cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CiAKIDwhLS0gVGhlc2Ugc2NyaXB0cyBhcmUgbmVlZGVkIHRv
IHJlc3VsdCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgbWF4IEpTIHJlc291cmNlIGNvdW50IGZyb20g
dGhlIHNhbWUgZG9tYWluIC0tPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0
MS5qcyI+PC9zY3JpcHQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9h
dWRpdHMtc3R5bGUxLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9hdWRpdHMtc2NyaXB0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1
ZGl0cy1zY3JpcHQzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQpA
QCAtNTAsMTQgKzUwLDcgQEAgZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9s
bGVyKQogCiAgICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMo
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBBdWRpdHMgYXJlIGRvbmUsIGNoZWNrIHJlc3Vs
dHMuCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhX
ZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJl
blswXS5yZXN1bHRzKTsKLSAgICAgICAgICAgIHZhciBsaUVsZW1lbnRzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5hdWRpdHMudmlzaWJsZVZpZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
bGkiKTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7
ICsraikgewotICAgICAgICAgICAgICAgIGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQot
ICAgICAgICAgICAgICAgICAgICBsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50LmV4cGFuZCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG91dHB1dCA9IFtdOwotICAgICAgICAgICAg
ZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZp
c2libGVWaWV3LmVsZW1lbnQsIDAsIG91dHB1dCk7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0g
ZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cygpOwogICAgICAgICAgICAgLy8gQXZvaWQgaW5m
bHVlbmNpbmcgdGVzdHMgdGhhdCByZXF1aXJlIHJlc291cmNlIHRyYWNraW5nIHRvIGJlIGRpc2Fi
bGVkLgogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kaXNhYmxlUmVzb3VyY2VUcmFja2lu
ZyhmYWxzZSk7CiAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNw
YXRjaGVzKGZ1bmN0aW9uKCkgewpAQCAtNjksMjkgKzYyLDYgQEAgZnVuY3Rpb24gZnJvbnRlbmRf
cnVuQXVkaXRzKHRlc3RDb250cm9sbGVyKQogICAgIH0KIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRf
Y29sbGVjdFRleHRDb250ZW50KGVsZW1lbnQsIGxldmVsLCBvdXRwdXQpCi17Ci0gICAgdmFyIG5v
ZGVPdXRwdXQgPSAiIjsKLSAgICB2YXIgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAg
d2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhU
X05PREUpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKLSAg
ICAgICAgICAgICAgICBub2RlT3V0cHV0ICs9ICIgIjsKLSAgICAgICAgICAgIG5vZGVPdXRwdXQg
Kz0gY2hpbGQubm9kZVZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09
PSBOb2RlLkVMRU1FTlRfTk9ERSkgewotICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIi
KSB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Ci0gICAgICAgICAg
ICAgICAgbm9kZU91dHB1dCA9ICIiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJvbnRl
bmRfY29sbGVjdFRleHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7Ci0gICAgICAg
IH0KLSAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKLSAgICB9Ci0gICAgaWYgKG5v
ZGVPdXRwdXQgIT09ICIiKQotICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKLSAgICBy
ZXR1cm47Ci19Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvYXVkaXRzLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
cy10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDJjNmI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpA
QCAtMCwwICsxLDM1IEBACitmdW5jdGlvbiBmcm9udGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCkK
K3sKKyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0
b3IucGFuZWxzLmF1ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1
bHRzKTsKKyAgICB2YXIgbGlFbGVtZW50cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZp
c2libGVWaWV3LmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpIik7CisgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBsaUVsZW1lbnRzLmxlbmd0aDsgKytqKSB7CisgICAgICAgIGlmIChsaUVs
ZW1lbnRzW2pdLnRyZWVFbGVtZW50KQorICAgICAgICAgICAgbGlFbGVtZW50c1tqXS50cmVlRWxl
bWVudC5leHBhbmQoKTsKKyAgICB9CisgICAgdmFyIG91dHB1dCA9IFtdOworICAgIGZyb250ZW5k
X2NvbGxlY3RUZXh0Q29udGVudChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmll
dy5lbGVtZW50LCAwLCBvdXRwdXQpOworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9u
IGZyb250ZW5kX2NvbGxlY3RUZXh0Q29udGVudChlbGVtZW50LCBsZXZlbCwgb3V0cHV0KQorewor
ICAgIHZhciBub2RlT3V0cHV0ID0gIiI7CisgICAgdmFyIGNoaWxkID0gZWxlbWVudC5maXJzdENo
aWxkOworCisgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9
PT0gTm9kZS5URVhUX05PREUpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2
ZWw7ICsraSkKKyAgICAgICAgICAgICAgICBub2RlT3V0cHV0ICs9ICIgIjsKKyAgICAgICAgICAg
IG5vZGVPdXRwdXQgKz0gY2hpbGQubm9kZVZhbHVlOworICAgICAgICB9IGVsc2UgaWYgKGNoaWxk
Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgaWYgKG5vZGVP
dXRwdXQgIT09ICIiKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7
CisgICAgICAgICAgICAgICAgbm9kZU91dHB1dCA9ICIiOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1
dCk7CisgICAgICAgIH0KKyAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKKyAgICB9
CisgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKQorICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0
cHV0KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFw
aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhw
ZWN0ZWQudHh0CmluZGV4IDM1YTk5ZDIuLmZmYmRjYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDE0IEBAIFN0
YXJ0ZWQgZXh0ZW5zaW9uLgogUnVubmluZyB0ZXN0cy4uLgogUlVOTklORyBURVNUOiBleHRlbnNp
b25fdGVzdEFQSQogeworICAgIGF1ZGl0cyA6IHsKKyAgICAgICAgc2V2ZXJpdHkgOiB7CisgICAg
ICAgICAgICBpbmZvIDogImluZm8iCisgICAgICAgICAgICB3YXJuaW5nIDogIndhcm5pbmciCisg
ICAgICAgICAgICBzZXZlcmUgOiAic2V2ZXJlIgorICAgICAgICB9CisgICAgICAgIGFkZENhdGVn
b3J5IDogPGZ1bmN0aW9uPgorICAgIH0KICAgICBpbnNwZWN0ZWRXaW5kb3cgOiB7CiAgICAgICAg
IG9uTG9hZGVkIDogewogICAgICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmY3NzU4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQzIEBACitUZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0
b3IgRXh0ZW5zaW9ucyBBUEkKKworU3RhcnRlZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4u
CitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QXVkaXRzCitBZGRlZCBhdWRpdCBjYXRlZ29y
eSwgcmVzdWx0IGR1bXAgZm9sbG93czoKK3sKKyAgICBvbkF1ZGl0U3RhcnRlZCA6IHsKKyAgICAg
ICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1
bmN0aW9uPgorICAgIH0KK30KK2NhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCByZXN1bHRz
IGR1bXAgZm9sbG93czoKK3sKKyAgICBhZGRSZXN1bHQgOiA8ZnVuY3Rpb24+CisgICAgY3JlYXRl
UmVzdWx0IDogPGZ1bmN0aW9uPgorICAgIGRvbmUgOiA8ZnVuY3Rpb24+CisgICAgdXJsIDogPGZ1
bmN0aW9uPgorICAgIHNuaXBwZXQgOiA8ZnVuY3Rpb24+CisgICAgdGV4dCA6IDxmdW5jdGlvbj4K
K30KK2ZhaWxlZENhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCB0aHJvd2luZyBleGNlcHRp
b24KK0F1ZGl0cyBjb21wbGV0ZToKKyAgRXh0ZW5zaW9uIGF1ZGl0cworICAgIEZhaWxlZCBydWxl
ICg0MikKKyAgICAgdGhpcyBydWxlIGFsd2F5cyBmYWlscworICAgIFJ1bGUgd2l0aCBkZXRhaWxz
IHN1YnRyZWUgKDEpCisgICAgIFRoaXMgcnVsZSBoYXMgYSBsb3Qgb2YgZGV0YWlscworICAgICAg
U3VidHJlZQorICAgICAgIFNvbWUgdXJsOiAKKyAgICAgICAgV2ViS2l0CisgICAgICAgIG1vcmUg
dGV4dCAKKyAgICAgICAgaHR0cDovL3d3dy5nb29nbGUuY29tCisgICAgICAgLi4uIGFuZCBhIHNu
aXBwZXQKKyAgICAgICAgIGZ1bmN0aW9uIHJhbmQoKQorICAgICAgICAgeworICAgICAgICAgICAg
IHJldHVybiA0OworICAgICAgICAgfQorICAgIFBhc3NlZCBydWxlCisgICAgIHRoaXMgcnVsZSBh
bHdheXMgcGFzc2VzIG9rCisgIEV4dGVuc2lvbiBhdWRpdHMgdGhhdCBmYWlsCitBbGwgdGVzdHMg
ZG9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVk
aXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYmU1MjMyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKQEAgLTAs
MCArMSw5NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZXh0ZW5z
aW9ucy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGV4
dGVuc2lvbl90ZXN0QXVkaXRzKG5leHRUZXN0KQoreworICAgIGZ1bmN0aW9uIG9uU3RhcnRBdWRp
dENhdGVnb3J5KHJlc3VsdHMpCisgICAgeworICAgICAgICBsb2coImNhdGVnb3J5Lm9uQXVkaXRT
dGFydGVkIGZpcmVkLCByZXN1bHRzIGR1bXAgZm9sbG93czoiKTsKKyAgICAgICAgZHVtcE9iamVj
dChyZXN1bHRzKTsKKyAgICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIlBhc3NlZCBydWxlIiwgInRo
aXMgcnVsZSBhbHdheXMgcGFzc2VzIG9rIiwgd2ViSW5zcGVjdG9yLmF1ZGl0cy5zZXZlcml0eS5p
bmZvKTsKKyAgICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIkZhaWxlZCBydWxlICg0MikiLCAidGhp
cyBydWxlIGFsd2F5cyBmYWlscyIsIHdlYkluc3BlY3Rvci5hdWRpdHMuc2V2ZXJpdHkuc2V2ZXJl
KTsKKworICAgICAgICB2YXIgbm9kZSA9IHJlc3VsdHMuY3JlYXRlUmVzdWx0KCJTdWJ0cmVlIik7
CisgICAgICAgIG5vZGUuYWRkQ2hpbGQoIlNvbWUgdXJsOiAiLCByZXN1bHRzLnVybCgiaHR0cDov
L3d3dy53ZWJraXQub3JnIiwgIldlYktpdCIpLCAiIG1vcmUgdGV4dCAiLCByZXN1bHRzLnVybCgi
aHR0cDovL3d3dy5nb29nbGUuY29tIikpOworICAgICAgICB2YXIgbmVzdGVkTm9kZSA9IG5vZGUu
YWRkQ2hpbGQoIi4uLiBhbmQgYSBzbmlwcGV0Iik7CisgICAgICAgIG5lc3RlZE5vZGUuZXhwYW5k
ZWQgPSB0cnVlOworICAgICAgICBuZXN0ZWROb2RlLmFkZENoaWxkKHJlc3VsdHMuc25pcHBldCgi
ZnVuY3Rpb24gcmFuZCgpXG57XG4gICAgcmV0dXJuIDQ7XG59IikpOworCisgICAgICAgIHJlc3Vs
dHMuYWRkUmVzdWx0KCJSdWxlIHdpdGggZGV0YWlscyBzdWJ0cmVlICgxKSIsICJUaGlzIHJ1bGUg
aGFzIGEgbG90IG9mIGRldGFpbHMiLCB3ZWJJbnNwZWN0b3IuYXVkaXRzLnNldmVyaXR5Lndhcm5p
bmcsIG5vZGUpOworICAgICAgICAvLyBBdWRpdCBub3JtYWxseSB0ZXJtaW5hdGVzIHdoZW4gbnVt
YmVyIG9mIGFkZGVkIHJ1bGUgcmVzdWx0cyBpcyBlcXVhbCB0bworICAgICAgICAvLyB0aGUgcnVs
ZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNhdGVnb3J5LiBkb25lKCkgaXMgb25seSBm
b3IKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhc2VzLCB3aGVuIHdlIGtub3cgd2Ugd29uJ3QgYmUg
YWJsZSB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHJ1bGVzLgorICAgICAgICByZXN1bHRzLmRvbmUo
KTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnkoKQorICAg
IHsKKyAgICAgICAgbG9nKCJmYWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhy
b3dpbmcgZXhjZXB0aW9uIik7CisgICAgICAgIHRocm93ICJvb3BzISI7CisgICAgfQorICAgIGZ1
bmN0aW9uIG9uU3RhcnRBdWRpdERpc2FibGVkQ2F0ZWdvcnkocmVzdWx0cykKKyAgICB7CisgICAg
ICAgIGxvZygiRkFJTDogZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQiKTsKKyAg
ICAgICAgcmVzdWx0cy5kb25lKCk7CisgICAgfQorCisgICAgdmFyIGNhdGVnb3J5ID0gd2ViSW5z
cGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9uIGF1ZGl0cyIsIDIwKTsKKyAgICBj
YXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXRDYXRlZ29yeSk7
CisgICAgbG9nKCJBZGRlZCBhdWRpdCBjYXRlZ29yeSwgcmVzdWx0IGR1bXAgZm9sbG93czoiKTsK
KyAgICBkdW1wT2JqZWN0KGNhdGVnb3J5KTsKKworICAgIHZhciBmYWlsZWRDYXRlZ29yeSA9IHdl
Ykluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4dGVuc2lvbiBhdWRpdHMgdGhhdCBmYWls
IiwgMik7CisgICAgZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQuYWRkTGlzdGVuZXIob25T
dGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnkpOworCisgICAgdmFyIGRpc2FibGVkQ2F0ZWdvcnkgPSB3
ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5KCJEaXNhYmxlZCBleHRlbnNpb24gYXVkaXRz
IiwgMik7CisgICAgZGlzYWJsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihv
blN0YXJ0QXVkaXREaXNhYmxlZENhdGVnb3J5KTsKKworICAgIGZ1bmN0aW9uIG9uTWVzc2FnZShl
dmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiYXVkaXQtdGVzdHMtZG9u
ZSIpCisgICAgICAgICAgICBuZXh0VGVzdCgpOworICAgIH0KKyAgICB0b3AuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIG9uTWVzc2FnZSwgZmFsc2UpOworICAgIHdlYkluc3BlY3Rvci5pbnNw
ZWN0ZWRXaW5kb3cuZXZhbHVhdGUoInJ1bkF1ZGl0cygpIik7Cit9CisKK2Z1bmN0aW9uIGZyb250
ZW5kX3J1bkF1ZGl0cyh0ZXN0Q29udHJvbGxlcikKK3sKKyAgICBjb25zdCBsYXVuY2hlclZpZXcg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5fbGF1bmNoZXJWaWV3OworICAgIGxhdW5jaGVy
Vmlldy5fc2VsZWN0QWxsQ2xpY2tlZChmYWxzZSk7CisgICAgbGF1bmNoZXJWaWV3Ll9hdWRpdFBy
ZXNlbnRTdGF0ZUVsZW1lbnQuY2hlY2tlZCA9IHRydWU7CisKKyAgICB2YXIgZXh0ZW5zaW9uQ2F0
ZWdvcmllcyA9IGRvY3VtZW50LmV2YWx1YXRlKCJsYWJlbFtzdGFydHMtd2l0aCguLCdFeHRlbnNp
b24gJyldL2lucHV0W0B0eXBlPSdjaGVja2JveCddIiwKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5hdWRpdHMuX2xhdW5jaGVyVmlldy5fY2F0ZWdvcmllc0VsZW1lbnQsIG51bGwsIFhQYXRo
UmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZXh0ZW5zaW9uQ2F0ZWdvcmllcy5zbmFwc2hvdExlbmd0aDsgKytpKQorICAg
ICAgICBleHRlbnNpb25DYXRlZ29yaWVzLnNuYXBzaG90SXRlbShpKS5jbGljaygpOworCisgICAg
ZnVuY3Rpb24gb25BdWRpdHNEb25lKCkKKyAgICB7CisgICAgICAgIHZhciBvdXRwdXQgPSBmcm9u
dGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCk7CisgICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNz
LmdldERlZmF1bHQoKS5ldmFsdWF0ZSgibG9nKHVuZXNjYXBlKCciICsgZXNjYXBlKCJBdWRpdHMg
Y29tcGxldGU6XG4iICsgb3V0cHV0LmpvaW4oIlxuIikpICsgIicpKTsiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiYXVkaXQtdGVzdHMtZG9uZSIsICIqIik7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LnBhbmVscy5hdWRpdHMsICJfYXVkaXRGaW5pc2hlZENhbGxiYWNrIiwgb25BdWRpdHNEb25lLCB0
cnVlKTsKKyAgICBsYXVuY2hlclZpZXcuX2xhdW5jaEJ1dHRvbkNsaWNrZWQoKTsKK30KKworZnVu
Y3Rpb24gcnVuQXVkaXRzKCkKK3sKKyAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVu
ZF9ydW5BdWRpdHMiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9u
bG9hZCgpIj4KKzxwPlRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRlbnNp
b25zIEFQSTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRleCAzOTI0YTZhLi45OTM0ZjUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CkBAIC0zMSw3ICszMSw3
IEBAIHJlc291cmNlOiAuLi4vdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCiByZXNv
dXJjZTogLi4uL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKIHJlc291
cmNlOiAuLi4vTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMuaHRtbAogUlVOTklORyBU
RVNUOiBleHRlbnNpb25fdGVzdEdldEludmFsaWRSZXNvdXJjZQotQXR0ZW1wdGVkIHRvIHJldHJp
ZXZlIGludmFsaWQgcmVzb3VyY2U6IHsiY29kZSI6IkVfTk9URk9VTkQiLCJkZXNjcmlwdGlvbiI6
Ik9iamVjdCBub3QgZm91bmQgKCVzKSIsImRldGFpbHMiOlsyMTI4NTA2XSwiaXNFcnJvciI6dHJ1
ZX0KK0F0dGVtcHRlZCB0byByZXRyaWV2ZSBpbnZhbGlkIHJlc291cmNlOiB7ImNvZGUiOiJFX05P
VEZPVU5EIiwiZGVzY3JpcHRpb24iOiJPYmplY3Qgbm90IGZvdW5kOiAlcyIsImRldGFpbHMiOlsy
MTI4NTA2XSwiaXNFcnJvciI6dHJ1ZX0KIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RSZXNv
dXJjZU5vdGlmaWNhdGlvbgogUmVzb3VyY2UgZmluaXNoZWQ6IC4uLi9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2V4dGVuc2lvbi1tYWluLmh0bWwKIEFsbCB0ZXN0cyBkb25lLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0My5qcyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDMuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IGZkNjA1MDQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0My5qcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAs
MCBAQAotZnVuY3Rpb24gZm9vMygpCi17Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggODExODNjYS4uN2M1NjFjNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApAQCAtMjAwLDYgKzIwMCw3IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL21l
c3NhZ2UtcG9ydC1tdWx0aS5odG1sID0gRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9z
ZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWwgPSBGQUlMCiBX
T05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sID0gRkFJTAogV09OVEZJWCBT
S0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLmh0bWwgPSBGQUlMCitXT05URklYIFNLSVAg
OiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbCA9IEZBSUwKIAogLy8gSW1wbGVtZW50
IGphdmEgdGVzdGluZyBoYXJuZXNzLgogQlVHMzY2ODEgREVGRVIgU0tJUCA6IGphdmEgPSBURVhU
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGVjMzI5YjguLmFkZjY3ZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMTAtMDgtMjYgIEFuZHJleSBLb3N5
YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVkaXRzIHN1cHBvcnQgdG8g
ZXh0ZW5zaW9uIEFQSQorICAgICAgICBFeHBvc2VkIChsYXRlKSBhZGRpbmcgb2YgY2F0ZWdvcmll
cyBmcm9tIEF1ZGl0UGFuZWwuCisgICAgICAgIFJlbW92ZWQgaW5kZXhPZk9iamVjdEluTGlzdFNv
cnRlZEJ5RnVuY3Rpb24gaW4gZmF2b3Igb2YKKyAgICAgICAgaW5zZXJ0aW9uSW5kZXhGb3JPYmpl
Y3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uICh0aGUgZm9ybWVyIGhhZAorICAgICAgICB3ZWlyZCBp
bnRlcmZhY2UgYWx3YXlzIHJldHVybmluZyBuZWdhdGl2ZSBudW1iZXJzIGFuZCB3YXMgb25seSB1
c2VkIGluCisgICAgICAgIHRoZSBsYXR0ZXIpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZXh0
ZW5zaW9ucy1hdWRpdHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRM
YXVuY2hlclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnBy
b3RvdHlwZS5hZGRDYXRlZ29yeS5jb21wYXJlQ2F0ZWdvcmllcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLmFkZENhdGVnb3J5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2xhdW5jaEJ1dHRvbkNs
aWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlw
ZS5fc2VsZWN0QWxsQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hl
clZpZXcucHJvdG90eXBlLl9jYXRlZ29yeUNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fY3JlYXRlQ2F0ZWdvcnlFbGVtZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2NyZWF0ZUxh
dW5jaGVyVUkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHRQYW5lLnByb3Rv
dHlwZS5fYXBwZW5kUmVzdWx0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0
c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuYWRkQ2F0ZWdvcnkpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5nZXRDYXRlZ29yeSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLl9leGVjdXRlQXVkaXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlLnJ1bik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlu
amVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2lua0ltcGwucHJvdG90eXBlLmFkZExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5FdmVudFNpbmtJbXBs
LnByb3RvdHlwZS5fZmlyZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNp
b25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuX2Rpc3BhdGNoKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5FdmVudFNpbmspOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3RvckV4dGVuc2lvbkFQSSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuUGFuZWxzLnByb3RvdHlwZS5j
cmVhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRzLnBy
b3RvdHlwZS5hZGRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRl
bnNpb25BUEkuQXVkaXRDYXRlZ29yeS5jdXN0b21EaXNwYXRjaCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRDYXRlZ29yeUltcGwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0SW1w
bC5wcm90b3R5cGUuYWRkUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4
dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLmNyZWF0ZVJlc3VsdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHRJbXBsLnBy
b3RvdHlwZS5kb25lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQ
SS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLl9ub2RlRmFjdG9yeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHROb2RlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdE5vZGUucHJvdG90
eXBlLmFkZENoaWxkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1
ZGl0Q2F0ZWdvcnkuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1
ZGl0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnkucHJvdG90eXBlLmdldCBpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVk
aXRDYXRlZ29yeS5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5nZXQgcnVsZUNvdW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5ydW4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90
b3R5cGUuZ2V0IGNvbXBsZXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRp
dENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuY2FuY2VsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuYWRkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5
cGUuX2FkZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnlSZXN1bHRzLnByb3RvdHlwZS5fYWRkUmVzdWx0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0V4dGVuc2lvbkNvbW1vbi5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Y29tbW9uRXh0ZW5zaW9uU3ltYm9scyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLnN0YXJ0
QXVkaXRSdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5
cGUuc3RvcEF1ZGl0UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9wb3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFkZEF1ZGl0Q2F0ZWdvcnkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uQWRkQXVkaXRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uU3RvcEF1
ZGl0Q2F0ZWdvcnlSdW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUuX2FkZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lv
blNlcnZlci5wcm90b3R5cGUuX2J1aWxkRXh0ZW5zaW9uQVBJSW5qZWN0ZWRTY3JpcHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblN0YXR1cyk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6
CisgICAgICAgICgpOgorCiAyMDEwLTA4LTI2ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCAwZjE1OTc3Li5iZjQ4N2Y0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDE0NCw2ICs0MTQ0LDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Fic3RyYWN0VGltZWxpbmVQYW5lbC5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Q2F0ZWdvcmllcy5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdEZvcm1hdHRlcnMuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMnLApAQCAtNDE3NSw2ICs0
MTc2LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25BUEkuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
QXVkaXRDYXRlZ29yeS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRl
bnNpb25Db21tb24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
UmVnaXN0cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvblNlcnZlci5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBj
MjgwN2YyLi4zODU5ZWQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTUxOTg4LDYgKzUxOTg4LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEF1ZGl0Rm9ybWF0dGVy
cy5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEF1ZGl0TGF1bmNoZXJWaWV3LmpzIg0KIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQpAQCAtNTIxMDgsNiArNTIxMTIsMTQgQEAKIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0K
KwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEV4
dGVuc2lvbkNvbW1vbi5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEV4dGVuc2lvblBhbmVsLmpz
Ig0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCmluZGV4IDMzZDM4NzIuLjE4ZGFlZTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKQEAgLTI4
LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BdWRpdExh
dW5jaGVyVmlldyA9IGZ1bmN0aW9uKGNhdGVnb3JpZXNCeUlkLCBydW5uZXJDYWxsYmFjaykKK1dl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrKQog
ewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7Ci0gICAgdGhpcy5fY2F0ZWdvcmll
c0J5SWQgPSBjYXRlZ29yaWVzQnlJZDsKICAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayA9IHJ1bm5l
ckNhbGxiYWNrOwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVmaXggPSAiYXVkaXQtY2F0ZWdvcnkt
aXRlbS0iOwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZhbHNlOwpAQCAtNDEsMjcgKzQwLDE2
IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKGNhdGVnb3JpZXNC
eUlkLCBydW5uZXJDYWxsYmFjaykKICAgICB0aGlzLl9jb250ZW50RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTmFt
ZSA9ICJhdWRpdC1sYXVuY2hlci12aWV3LWNvbnRlbnQiOwogICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CisgICAgdGhpcy5fYm91bmRDYXRlZ29yeUNs
aWNrTGlzdGVuZXIgPSB0aGlzLl9jYXRlZ29yeUNsaWNrZWQuYmluZCh0aGlzKTsKIAogICAgIHRo
aXMuX3Jlc2V0UmVzb3VyY2VDb3VudCgpOwogCi0gICAgZnVuY3Rpb24gY2F0ZWdvcnlTb3J0RnVu
Y3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBhVGl0bGUgPSBhLmRpc3BsYXlOYW1lIHx8
ICIiOwotICAgICAgICB2YXIgYlRpdGxlID0gYi5kaXNwbGF5TmFtZSB8fCAiIjsKLSAgICAgICAg
cmV0dXJuIGFUaXRsZS5sb2NhbGVDb21wYXJlKGJUaXRsZSk7Ci0gICAgfQotICAgIHZhciBzb3J0
ZWRDYXRlZ29yaWVzID0gW107Ci0gICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fY2F0ZWdvcmllc0J5
SWQpCi0gICAgICAgIHNvcnRlZENhdGVnb3JpZXMucHVzaCh0aGlzLl9jYXRlZ29yaWVzQnlJZFtp
ZF0pOwotICAgIHNvcnRlZENhdGVnb3JpZXMuc29ydChjYXRlZ29yeVNvcnRGdW5jdGlvbik7Cisg
ICAgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcyA9IFtdOwogCi0gICAgaWYgKCFzb3J0ZWRDYXRlZ29y
aWVzLmxlbmd0aCkgewotICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaDEiKTsKLSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFzc05hbWUg
PSAibm8tYXVkaXRzIjsKLSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gYXVkaXRzIHRvIHJ1biIpOwotICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKLSAgICB9
IGVsc2UKLSAgICAgICAgdGhpcy5fY3JlYXRlTGF1bmNoZXJVSShzb3J0ZWRDYXRlZ29yaWVzKTsK
KyAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTsK
KyAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJuby1hdWRpdHMiOworICAgIHRo
aXMuX2hlYWRlckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5v
IGF1ZGl0cyB0byBydW4iKTsKKyAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9oZWFkZXJFbGVtZW50KTsKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
LnByb3RvdHlwZSA9IHsKQEAgLTEzMyw2ICsxMjEsMzAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1
bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVzZXRSZXNvdXJjZUNvdW50
KCk7CiAgICAgfSwKIAorICAgIGFkZENhdGVnb3J5OiBmdW5jdGlvbihjYXRlZ29yeSkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGgpCisgICAgICAgICAg
ICB0aGlzLl9jcmVhdGVMYXVuY2hlclVJKCk7CisKKyAgICAgICAgdmFyIGNhdGVnb3J5RWxlbWVu
dCA9IHRoaXMuX2NyZWF0ZUNhdGVnb3J5RWxlbWVudChjYXRlZ29yeS5kaXNwbGF5TmFtZSwgY2F0
ZWdvcnkuaWQpOworICAgICAgICBjYXRlZ29yeS5fY2hlY2tib3hFbGVtZW50ID0gY2F0ZWdvcnlF
bGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RBbGxDaGVja2JveEVs
ZW1lbnQuY2hlY2tlZCkgeworICAgICAgICAgICAgY2F0ZWdvcnkuX2NoZWNrYm94RWxlbWVudC5j
aGVja2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICsrdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3Vu
dDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVDYXRlZ29yaWVzKGEsIGIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBhVGl0bGUgPSBhLmRpc3BsYXlOYW1lIHx8ICIi
OworICAgICAgICAgICAgdmFyIGJUaXRsZSA9IGIuZGlzcGxheU5hbWUgfHwgIiI7CisgICAgICAg
ICAgICByZXR1cm4gYVRpdGxlLmxvY2FsZUNvbXBhcmUoYlRpdGxlKTsKKyAgICAgICAgfQorICAg
ICAgICB2YXIgaW5zZXJ0QmVmb3JlID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0
ZWRCeUZ1bmN0aW9uKGNhdGVnb3J5LCB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzLCBjb21wYXJlQ2F0
ZWdvcmllcyk7CisgICAgICAgIHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50Lmluc2VydEJlZm9yZShj
YXRlZ29yeUVsZW1lbnQsIHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50LmNoaWxkcmVuW2luc2VydEJl
Zm9yZV0pOworICAgICAgICB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzLnNwbGljZShpbnNlcnRCZWZv
cmUsIDAsIGNhdGVnb3J5KTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQnV0dG9uKCk7CisgICAgfSwK
KwogICAgIF9zZXRBdWRpdFJ1bm5pbmc6IGZ1bmN0aW9uKGF1ZGl0UnVubmluZykKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9hdWRpdFJ1bm5pbmcgPT09IGF1ZGl0UnVubmluZykKQEAgLTE0Niwx
MCArMTU4LDExIEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB2YXIgY2F0SWRzID0gW107CiAgICAgICAgIHZhciBjaGlsZE5vZGVz
ID0gdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2hpbGROb2RlczsKLSAgICAgICAgZm9yICh2YXIg
aWQgaW4gdGhpcy5fY2F0ZWdvcmllc0J5SWQpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9jYXRl
Z29yaWVzQnlJZFtpZF0uX2NoZWNrYm94RWxlbWVudC5jaGVja2VkKQotICAgICAgICAgICAgICAg
IGNhdElkcy5wdXNoKGlkKTsKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgPSAwOyBjYXRlZ29y
eSA8IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoOyArK2NhdGVnb3J5KSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5fc29ydGVkQ2F0ZWdvcmllc1tjYXRlZ29yeV0uX2NoZWNrYm94RWxlbWVu
dC5jaGVja2VkKQorICAgICAgICAgICAgICAgIGNhdElkcy5wdXNoKHRoaXMuX3NvcnRlZENhdGVn
b3JpZXNbY2F0ZWdvcnldLmlkKTsKICAgICAgICAgfQorCiAgICAgICAgIHRoaXMuX3NldEF1ZGl0
UnVubmluZyh0cnVlKTsKICAgICAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlz
Ll9hdWRpdFByZXNlbnRTdGF0ZUVsZW1lbnQuY2hlY2tlZCwgdGhpcy5fc2V0QXVkaXRSdW5uaW5n
LmJpbmQodGhpcywgZmFsc2UpKTsKICAgICB9LApAQCAtMTU5LDE0ICsxNzIsMTQgQEAgV2ViSW5z
cGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNoaWxk
Tm9kZXMgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzOwogICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkK
ICAgICAgICAgICAgIGNoaWxkTm9kZXNbaV0uZmlyc3RDaGlsZC5jaGVja2VkID0gY2hlY2tDYXRl
Z29yaWVzOwotICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50ID0gY2hlY2tDYXRl
Z29yaWVzID8gdGhpcy5fdG90YWxDYXRlZ29yaWVzQ291bnQgOiAwOworICAgICAgICB0aGlzLl9j
dXJyZW50Q2F0ZWdvcmllc0NvdW50ID0gY2hlY2tDYXRlZ29yaWVzID8gdGhpcy5fc29ydGVkQ2F0
ZWdvcmllcy5sZW5ndGggOiAwOwogICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsKICAgICB9
LAogCiAgICAgX2NhdGVnb3J5Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50ICs9IGV2ZW50LnRhcmdldC5jaGVja2VkID8g
MSA6IC0xOwotICAgICAgICB0aGlzLl9zZWxlY3RBbGxDaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9
IHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPT09IHRoaXMuX3RvdGFsQ2F0ZWdvcmllc0Nv
dW50OworICAgICAgICB0aGlzLl9zZWxlY3RBbGxDaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IHRo
aXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPT09IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVu
Z3RoOwogICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsKICAgICB9LAogCkBAIC0xNzcsMTYg
KzE5MCwyMSBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsK
ICAgICAgICAgZWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKKyAgICAgICAgZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyLCBm
YWxzZSk7CiAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICAg
ICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxl
KSk7CiAKICAgICAgICAgcmV0dXJuIGxhYmVsRWxlbWVudDsKICAgICB9LAogCi0gICAgX2NyZWF0
ZUxhdW5jaGVyVUk6IGZ1bmN0aW9uKHNvcnRlZENhdGVnb3JpZXMpCisgICAgX2NyZWF0ZUxhdW5j
aGVyVUk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpOwogICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3QgYXVkaXRzIHRvIHJ1
biIpOworCisgICAgICAgIGZvciAodmFyIGNoaWxkID0gMDsgY2hpbGQgPCB0aGlzLl9jb250ZW50
RWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsrY2hpbGQpCisgICAgICAgICAgICB0aGlzLl9jb250
ZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9jb250ZW50RWxlbWVudC5jaGlsZHJlbltjaGls
ZF0pOworCiAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hl
YWRlckVsZW1lbnQpOwogCiAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNlbGVjdEFsbENsaWNrKGV2
ZW50KQpAQCAtMjA0LDE2ICsyMjIsNiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jbGFzc05hbWUg
PSAiYXVkaXQtY2F0ZWdvcmllcy1jb250YWluZXIiOwogICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jYXRlZ29yaWVzRWxlbWVudCk7CiAKLSAgICAgICAgdmFy
IGJvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyID0gdGhpcy5fY2F0ZWdvcnlDbGlja2VkLmJpbmQo
dGhpcyk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3J0ZWRDYXRlZ29yaWVzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjYXRlZ29yeUVsZW1lbnQgPSB0aGlzLl9jcmVhdGVD
YXRlZ29yeUVsZW1lbnQoc29ydGVkQ2F0ZWdvcmllc1tpXS5kaXNwbGF5TmFtZSwgc29ydGVkQ2F0
ZWdvcmllc1tpXS5pZCk7Ci0gICAgICAgICAgICBjYXRlZ29yeUVsZW1lbnQuZmlyc3RDaGlsZC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGJvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyLCBmYWxz
ZSk7Ci0gICAgICAgICAgICBzb3J0ZWRDYXRlZ29yaWVzW2ldLl9jaGVja2JveEVsZW1lbnQgPSBj
YXRlZ29yeUVsZW1lbnQuZmlyc3RDaGlsZDsKLSAgICAgICAgICAgIHRoaXMuX2NhdGVnb3JpZXNF
bGVtZW50LmFwcGVuZENoaWxkKGNhdGVnb3J5RWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0aGlzLl90b3RhbENhdGVnb3JpZXNDb3VudCA9IHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50LmNo
aWxkTm9kZXMubGVuZ3RoOwogICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50ID0g
MDsKIAogICAgICAgICB2YXIgZmxleGlibGVTcGFjZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJlc3VsdFZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1
bHRWaWV3LmpzCmluZGV4IDJmNGFmYmQuLjI2MzY0NjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcwpAQCAtODEsMTUgKzgxLDIyIEBAIFdlYklu
c3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZSA9IGZ1bmN0aW9uKGNhdGVnb3J5UmVzdWx0
KQogV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHRQYW5lLnByb3RvdHlwZSA9IHsKICAg
ICBfYXBwZW5kUmVzdWx0OiBmdW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgcmVzdWx0KQogICAg
IHsKLSAgICAgICAgdmFyIHRpdGxlID0gcmVzdWx0LnZhbHVlOwotICAgICAgICBpZiAocmVzdWx0
LnZpb2xhdGlvbkNvdW50KQotICAgICAgICAgICAgdGl0bGUgPSBTdHJpbmcuc3ByaW50ZigiJXMg
KCVkKSIsIHRpdGxlLCByZXN1bHQudmlvbGF0aW9uQ291bnQpOworICAgICAgICB2YXIgdGl0bGUg
PSAiIjsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0LnZhbHVlID09PSAic3Ry
aW5nIikgeworICAgICAgICAgICAgdGl0bGUgPSByZXN1bHQudmFsdWU7CisgICAgICAgICAgICBp
ZiAocmVzdWx0LnZpb2xhdGlvbkNvdW50KQorICAgICAgICAgICAgICAgIHRpdGxlID0gU3RyaW5n
LnNwcmludGYoIiVzICglZCkiLCB0aXRsZSwgcmVzdWx0LnZpb2xhdGlvbkNvdW50KTsKKyAgICAg
ICAgfQogCiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCh0aXRsZSwg
bnVsbCwgISFyZXN1bHQuY2hpbGRyZW4pOwogICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5hcHBl
bmRDaGlsZCh0cmVlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5jbGFzc05hbWUpCiAg
ICAgICAgICAgICB0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcyhyZXN1
bHQuY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQudmFsdWUgIT09ICJzdHJp
bmciKQorICAgICAgICAgICAgdHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFwcGVuZENoaWxk
KFdlYkluc3BlY3Rvci5hcHBseUZvcm1hdHRlcnMocmVzdWx0LnZhbHVlKSk7CisKICAgICAgICAg
aWYgKHJlc3VsdC5jaGlsZHJlbikgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBy
ZXN1bHQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5k
UmVzdWx0KHRyZWVFbGVtZW50LCByZXN1bHQuY2hpbGRyZW5baV0pOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IGJjN2YzYjMuLmY2Y2JlZDAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTMyLDggKzMyLDYg
QEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3Bl
Y3Rvci5QYW5lbC5jYWxsKHRoaXMsICJhdWRpdHMiKTsKIAotICAgIHRoaXMuX2NvbnN0cnVjdENh
dGVnb3JpZXMoKTsKLQogICAgIHRoaXMuY3JlYXRlU2lkZWJhcigpOwogICAgIHRoaXMuYXVkaXRz
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJTZWN0aW9uVHJlZUVsZW1lbnQo
IiIsIHt9LCB0cnVlKTsKICAgICB0aGlzLnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHRoaXMuYXVk
aXRzVHJlZUVsZW1lbnQpOwpAQCAtNTQsNyArNTIsMTEgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1Bh
bmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50LmlkID0gImF1
ZGl0LXZpZXdzIjsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy52aWV3c0NvbnRh
aW5lckVsZW1lbnQpOwogCi0gICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmNhdGVnb3JpZXNCeUlkLCB0aGlzLmluaXRpYXRlQXVk
aXQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fY29uc3RydWN0Q2F0ZWdvcmllcygpOworCisgICAg
dGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0
aGlzLmluaXRpYXRlQXVkaXQuYmluZCh0aGlzKSk7CisgICAgZm9yIChpZCBpbiB0aGlzLmNhdGVn
b3JpZXNCeUlkKQorICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcuYWRkQ2F0ZWdvcnkodGhpcy5j
YXRlZ29yaWVzQnlJZFtpZF0pOwogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90
eXBlID0gewpAQCAtMTA0LDYgKzEwNiwxNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXVuY2hlclZpZXcucmVzb3VyY2VGaW5pc2hlZChy
ZXNvdXJjZSk7CiAgICAgfSwKIAorICAgIGFkZENhdGVnb3J5OiBmdW5jdGlvbihjYXRlZ29yeSkK
KyAgICB7CisgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWRbY2F0ZWdvcnkuaWRdID0gY2F0ZWdv
cnk7CisgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7Cisg
ICAgfSwKKworICAgIGdldENhdGVnb3J5OiBmdW5jdGlvbihpZCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLmNhdGVnb3JpZXNCeUlkW2lkXTsKKyAgICB9LAorCiAgICAgX2NvbnN0cnVjdENh
dGVnb3JpZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F1ZGl0Q2F0ZWdvcmll
c0J5SWQgPSB7fTsKQEAgLTE0Nyw3ICsxNjAsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tpXTsK
ICAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlS
ZXN1bHQoY2F0ZWdvcnkpOwogICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7Ci0gICAg
ICAgICAgICBjYXRlZ29yeS5ydW5SdWxlcyhyZXNvdXJjZXMsIHJ1bGVSZXN1bHRSZWFkeUNhbGxi
YWNrLmJpbmQobnVsbCwgcmVzdWx0KSk7CisgICAgICAgICAgICBjYXRlZ29yeS5ydW4ocmVzb3Vy
Y2VzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKG51bGwsIHJlc3VsdCkpOwogICAgICAg
ICB9CiAgICAgfSwKIApAQCAtMjIwLDcgKzIzMyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLnZpc2libGVWaWV3ID0gdGhpcy5f
bGF1bmNoZXJWaWV3OwogICAgIH0sCi0gICAgCisKICAgICBnZXQgdmlzaWJsZVZpZXcoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVWaWV3OwpAQCAtMzExLDcgKzMyNCw3IEBA
IFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cnVsZXMucHVzaChydWxlKTsKICAgICB9LAogCi0gICAgcnVuUnVsZXM6IGZ1bmN0aW9uKHJlc291
cmNlcywgY2FsbGJhY2spCisgICAgcnVuOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZW5zdXJlSW5pdGlhbGl6ZWQoKTsKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9ydWxlcy5sZW5ndGg7ICsraSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IGE4OWRjZjEuLjcwZTk0YjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcwpAQCAtMjgsNyArMjgs
NyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi12YXIgaW5qZWN0ZWRFeHRlbnNpb25BUEkgPSBm
dW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3Jp
cHRJZCkKK1dlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSSA9IGZ1bmN0aW9uKEluamVj
dGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmplY3RlZFNjcmlwdElkKQogewogCiAv
LyBIZXJlIGFuZCBiZWxvdywgYWxsIGNvbnN0cnVjdG9ycyBhcmUgcHJpdmF0ZSB0byBBUEkgaW1w
bGVtZW50YXRpb24uCkBAIC0zNywxOSArMzcsMjIgQEAgdmFyIGluamVjdGVkRXh0ZW5zaW9uQVBJ
ID0gZnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGUK
IC8vIGJ5IEZvbyBjb25zdXRyY3RvciB0byByZS1iaW5kIHB1YmxpY2x5IGV4cG9ydGVkIG1lbWJl
cnMgdG8gYW4gaW5zdGFuY2UKIC8vIG9mIEZvby4KIAotZnVuY3Rpb24gRXZlbnRTaW5rSW1wbCh0
eXBlKQorZnVuY3Rpb24gRXZlbnRTaW5rSW1wbCh0eXBlLCBjdXN0b21EaXNwYXRjaCkKIHsKICAg
ICB0aGlzLl90eXBlID0gdHlwZTsKICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTsKKyAgICB0aGlz
Ll9jdXN0b21EaXNwYXRjaCA9IGN1c3RvbURpc3BhdGNoOwogfQogCiBFdmVudFNpbmtJbXBsLnBy
b3RvdHlwZSA9IHsKICAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewor
ICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0
aHJvdyBuZXcgImFkZExpc3RlbmVyOiBjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiI7CiAgICAg
ICAgIGlmICh0aGlzLl9saXN0ZW5lcnMubGVuZ3RoID09PSAwKQogICAgICAgICAgICAgZXh0ZW5z
aW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInN1YnNjcmliZSIsIHR5cGU6IHRoaXMu
X3R5cGUgfSk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGNhbGxiYWNrKTsKLSAgICAg
ICAgZXh0ZW5zaW9uU2VydmVyLnJlZ2lzdGVySGFuZGxlcigibm90aWZ5LSIgKyB0aGlzLl90eXBl
LCBiaW5kKHRoaXMuX2ZpcmUsIHRoaXMpKTsKKyAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnJlZ2lz
dGVySGFuZGxlcigibm90aWZ5LSIgKyB0aGlzLl90eXBlLCBiaW5kKHRoaXMuX2Rpc3BhdGNoLCB0
aGlzKSk7CiAgICAgfSwKIAogICAgIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbihjYWxsYmFjaykK
QEAgLTY2LDI2ICs2OSwzNiBAQCBFdmVudFNpbmtJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJ1bnN1YnNjcmliZSIs
IHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgfSwKIAotICAgIF9maXJlOiBmdW5jdGlvbihyZXF1
ZXN0KQorICAgIF9maXJlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbGlzdGVuZXJz
ID0gdGhpcy5fbGlzdGVuZXJzLnNsaWNlKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdGVuZXJzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KG51
bGwsIHJlcXVlc3QuYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5hcHBseShu
dWxsLCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICBfZGlzcGF0Y2g6IGZ1bmN0aW9uKHJlcXVl
c3QpCisgICAgeworICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbURpc3BhdGNoKQorICAgICAgICAg
ICAgIHRoaXMuX2N1c3RvbURpc3BhdGNoLmNhbGwodGhpcywgcmVxdWVzdCk7CisgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgdGhpcy5fZmlyZS5hcHBseSh0aGlzLCByZXF1ZXN0LmFyZ3VtZW50
cyk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBFdmVudFNpbmsodHlwZSkKK2Z1bmN0aW9uIEV2ZW50
U2luayh0eXBlLCBjdXN0b21EaXNwYXRjaCkKIHsKLSAgICB2YXIgaW1wbCA9IG5ldyBFdmVudFNp
bmtJbXBsKHR5cGUpOworICAgIHZhciBpbXBsID0gbmV3IEV2ZW50U2lua0ltcGwodHlwZSwgY3Vz
dG9tRGlzcGF0Y2gpOwogICAgIHRoaXMuYWRkTGlzdGVuZXIgPSBiaW5kKGltcGwuYWRkTGlzdGVu
ZXIsIGltcGwpOwogICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIgPSBiaW5kKGltcGwucmVtb3ZlTGlz
dGVuZXIsIGltcGwpOwogfQogCiBmdW5jdGlvbiBJbnNwZWN0b3JFeHRlbnNpb25BUEkoKQogewor
ICAgIHRoaXMuYXVkaXRzID0gbmV3IEF1ZGl0cygpOwogICAgIHRoaXMuaW5zcGVjdGVkV2luZG93
ID0gbmV3IEluc3BlY3RlZFdpbmRvdygpOwogICAgIHRoaXMucGFuZWxzID0gbmV3IFBhbmVscygp
OwogICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IFJlc291cmNlcygpOworCiAgICAgdGhpcy5vblJl
c2V0ID0gbmV3IEV2ZW50U2luaygicmVzZXQiKTsKIH0KIApAQCAtMTI1LDcgKzEzOCw3IEBAIGZ1
bmN0aW9uIFBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gcGFuZWxzW25hbWVdOwogICAg
IH0KLSAgICAKKwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2VsbEtub3duUGFuZWxOYW1lcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICB2YXIgbmFtZSA9IHdlbGxLbm93blBhbmVsTmFtZXNbaV07
CiAgICAgICAgIHBhbmVsc1tuYW1lXSA9IG5ldyBQYW5lbChuYW1lKTsKQEAgLTE1MSw3ICsxNjQs
NyBAQCBQYW5lbHMucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAg
ICAgbGFiZWw6IGxhYmVsLAogICAgICAgICAgICAgdXJsOiBleHBhbmRVUkwocGFnZVVSTCksCi0g
ICAgICAgICAgICBpY29uOiBleHBhbmRVUkwoaWNvblVSTCkgCisgICAgICAgICAgICBpY29uOiBl
eHBhbmRVUkwoaWNvblVSTCkKICAgICAgICAgfTsKICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNl
bmRSZXF1ZXN0KHJlcXVlc3QsIGNhbGxiYWNrICYmIGJpbmQoY2FsbGJhY2tXcmFwcGVyLCB0aGlz
KSk7CiAgICAgfQpAQCAtMjE5LDYgKzIzMiwxMTcgQEAgZnVuY3Rpb24gRXh0ZW5zaW9uU2lkZWJh
clBhbmUoaWQpCiAgICAgdGhpcy5zZXRFeHBhbmRlZCA9IGJpbmQoaW1wbC5zZXRFeHBhbmRlZCwg
aW1wbCk7CiB9CiAKK2Z1bmN0aW9uIEF1ZGl0cygpCit7Cit9CisKK0F1ZGl0cy5wcm90b3R5cGUg
PSB7CisgICAgYWRkQ2F0ZWdvcnk6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBydWxlQ291bnQpCisg
ICAgeworICAgICAgICB2YXIgaWQgPSAiZXh0ZW5zaW9uLWF1ZGl0LWNhdGVnb3J5LSIgKyBleHRl
bnNpb25TZXJ2ZXIubmV4dE9iamVjdElkKCk7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5k
UmVxdWVzdCh7IGNvbW1hbmQ6ICJhZGRBdWRpdENhdGVnb3J5IiwgaWQ6IGlkLCBkaXNwbGF5TmFt
ZTogZGlzcGxheU5hbWUsIHJ1bGVDb3VudDogcnVsZUNvdW50IH0pOworICAgICAgICByZXR1cm4g
bmV3IEF1ZGl0Q2F0ZWdvcnkoaWQpOworICAgIH0KK30KKworZnVuY3Rpb24gQXVkaXRDYXRlZ29y
eShpZCkKK3sKKyAgICBmdW5jdGlvbiBjdXN0b21EaXNwYXRjaChyZXF1ZXN0KQorICAgIHsKKyAg
ICAgICAgdmFyIGF1ZGl0UmVzdWx0ID0gbmV3IEF1ZGl0UmVzdWx0KHJlcXVlc3QuYXJndW1lbnRz
WzBdKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoaXMuX2ZpcmUoYXVkaXRSZXN1bHQp
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJVbmNh
dWdodCBleGNlcHRpb24gaW4gZXh0ZW5zaW9uIGF1ZGl0IGV2ZW50IGhhbmRsZXI6ICIgKyBlKTsK
KyAgICAgICAgICAgIGF1ZGl0UmVzdWx0LmRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB2
YXIgaW1wbCA9IG5ldyBBdWRpdENhdGVnb3J5SW1wbChpZCk7CisgICAgdGhpcy5vbkF1ZGl0U3Rh
cnRlZCA9IG5ldyBFdmVudFNpbmsoImF1ZGl0LXN0YXJ0ZWQtIiArIGlkLCBjdXN0b21EaXNwYXRj
aCk7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdvcnlJbXBsKGlkKQoreworICAgIHRoaXMuX2lk
ID0gaWQ7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0UmVzdWx0KGlkKQoreworICAgIHZhciBpbXBsID0g
bmV3IEF1ZGl0UmVzdWx0SW1wbChpZCk7CisKKyAgICB0aGlzLmFkZFJlc3VsdCA9IGJpbmQoaW1w
bC5hZGRSZXN1bHQsIGltcGwpOworICAgIHRoaXMuY3JlYXRlUmVzdWx0ID0gYmluZChpbXBsLmNy
ZWF0ZVJlc3VsdCwgaW1wbCk7CisgICAgdGhpcy5kb25lID0gYmluZChpbXBsLmRvbmUsIGltcGwp
OworCisgICAgdmFyIGZvcm1hdHRlclR5cGVzID0gWworICAgICAgICAidXJsIiwKKyAgICAgICAg
InNuaXBwZXQiLAorICAgICAgICAidGV4dCIKKyAgICBdOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZm9ybWF0dGVyVHlwZXMubGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXNbZm9ybWF0dGVyVHlw
ZXNbaV1dID0gYmluZChpbXBsLl9ub2RlRmFjdG9yeSwgbnVsbCwgZm9ybWF0dGVyVHlwZXNbaV0p
OworfQorCitmdW5jdGlvbiBBdWRpdFJlc3VsdEltcGwoaWQpCit7CisgICAgdGhpcy5faWQgPSBp
ZDsKK30KKworQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZSA9IHsKKyAgICBhZGRSZXN1bHQ6IGZ1
bmN0aW9uKGRpc3BsYXlOYW1lLCBkZXNjcmlwdGlvbiwgc2V2ZXJpdHksIGRldGFpbHMpCisgICAg
eworICAgICAgICAvLyBzaG9ydGhhbmQgZm9yIHNwZWNpZnlpbmcgZGV0YWlscyBkaXJlY3RseSBp
biBhZGRSZXN1bHQoKS4KKyAgICAgICAgaWYgKGRldGFpbHMgJiYgIShkZXRhaWxzIGluc3RhbmNl
b2YgQXVkaXRSZXN1bHROb2RlKSkKKyAgICAgICAgICAgIGRldGFpbHMgPSBkZXRhaWxzIGluc3Rh
bmNlb2YgQXJyYXkgPyB0aGlzLmNyZWF0ZU5vZGUuYXBwbHkodGhpcywgZGV0YWlscykgOiB0aGlz
LmNyZWF0ZU5vZGUoZGV0YWlscyk7CisKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB7CisgICAgICAg
ICAgICBjb21tYW5kOiAiYWRkQXVkaXRSZXN1bHQiLAorICAgICAgICAgICAgcmVzdWx0SWQ6IHRo
aXMuX2lkLAorICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLAorICAgICAgICAg
ICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgc2V2ZXJpdHk6IHNldmVy
aXR5LAorICAgICAgICAgICAgZGV0YWlsczogZGV0YWlscworICAgICAgICB9OworICAgICAgICBl
eHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QocmVxdWVzdCk7CisgICAgfSwKKworICAgIGNyZWF0
ZVJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSBuZXcgQXVkaXRS
ZXN1bHROb2RlKCk7CisgICAgICAgIG5vZGUuY29udGVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xp
Y2UuY2FsbChhcmd1bWVudHMpOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9LAorCisgICAg
ZG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1
ZXN0KHsgY29tbWFuZDogInN0b3BBdWRpdENhdGVnb3J5UnVuIiwgcmVzdWx0SWQ6IHRoaXMuX2lk
IH0pOworICAgIH0sCisKKyAgICBfbm9kZUZhY3Rvcnk6IGZ1bmN0aW9uKHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgdHlwZTogdHlwZSwKKyAgICAgICAgICAgIGFy
Z3VtZW50czogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKQorICAgICAg
ICB9OworICAgIH0KK30KKworZnVuY3Rpb24gQXVkaXRSZXN1bHROb2RlKGNvbnRlbnRzKQorewor
ICAgIHRoaXMuY29udGVudHMgPSBjb250ZW50czsKKyAgICB0aGlzLmNoaWxkcmVuID0gW107Cisg
ICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOworfQorCitBdWRpdFJlc3VsdE5vZGUucHJvdG90eXBl
ID0geworICAgIGFkZENoaWxkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9
IEF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5cGUuY3JlYXRlUmVzdWx0LmFwcGx5KG51bGwsIGFyZ3Vt
ZW50cyk7CisgICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChub2RlKTsKKyAgICAgICAgcmV0dXJu
IG5vZGU7CisgICAgfQorfTsKKwogZnVuY3Rpb24gSW5zcGVjdGVkV2luZG93KCkKIHsKICAgICB0
aGlzLm9uTG9hZGVkID0gbmV3IEV2ZW50U2luaygiaW5zcGVjdGVkUGFnZUxvYWRlZCIpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnkuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29y
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDE1NWQ3Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0
ZWdvcnkuanMKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRl
Z29yeSA9IGZ1bmN0aW9uKGlkLCBkaXNwbGF5TmFtZSwgcnVsZUNvdW50KQoreworICAgIHRoaXMu
X2lkID0gaWQ7CisgICAgdGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICB0aGlz
Ll9ydWxlQ291bnQgID0gcnVsZUNvdW50OworfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVk
aXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7CisgICAgLy8gQXVkaXRDYXRlZ29yeSBpbnRlcmZhY2UK
KyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisK
KyAgICBnZXQgZGlzcGxheU5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3Bs
YXlOYW1lOworICAgIH0sCisKKyAgICBnZXQgcnVsZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9ydWxlQ291bnQ7CisgICAgfSwKKworICAgIHJ1bjogZnVuY3Rpb24ocmVzb3Vy
Y2VzLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
QXVkaXRDYXRlZ29yeVJlc3VsdHModGhpcywgY2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5z
cGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzID0gZnVuY3Rpb24oY2F0ZWdvcnks
IGNhbGxiYWNrKQoreworICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgdGhpcy5f
cGVuZGluZ1J1bGVzID0gY2F0ZWdvcnkucnVsZUNvdW50OworICAgIHRoaXMuX3J1bGVDb21wbGV0
aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgIHRoaXMuaWQgPSBjYXRlZ29yeS5pZCArICIt
IiArICsrV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLl9sYXN0SWQ7
CisgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lvblNlcnZlci5zdGFydEF1ZGl0UnVuKGNhdGVnb3J5
LCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRz
LnByb3RvdHlwZSA9IHsKKyAgICBnZXQgY29tcGxldGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICF0aGlzLl9wZW5kaW5nUnVsZXM7CisgICAgfSwKKworICAgIGNhbmNlbDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKCF0aGlzLmNvbXBsZXRlKQorICAgICAgICAgICAgdGhpcy5f
YWRkUmVzdWx0KG51bGwpOworICAgIH0sCisKKyAgICBhZGRSZXN1bHQ6IGZ1bmN0aW9uKGRpc3Bs
YXlOYW1lLCBkZXNjcmlwdGlvbiwgc2V2ZXJpdHksIGRldGFpbHMpCisgICAgeworICAgICAgICB2
YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQoZGlzcGxheU5hbWUp
OworICAgICAgICByZXN1bHQuYWRkQ2hpbGQoZGVzY3JpcHRpb24pOworICAgICAgICByZXN1bHQu
c2V2ZXJpdHkgPSBzZXZlcml0eTsKKyAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICB0
aGlzLl9hZGROb2RlKHJlc3VsdCwgZGV0YWlscyk7CisgICAgICAgIHRoaXMuX2FkZFJlc3VsdChy
ZXN1bHQpOworICAgIH0sCisKKyAgICBfYWRkTm9kZTogZnVuY3Rpb24ocGFyZW50LCBub2RlKQor
ICAgIHsKKyAgICAgICAgdmFyIGFkZGVkTm9kZSA9IHBhcmVudC5hZGRDaGlsZChub2RlLmNvbnRl
bnRzLCBub2RlLmV4cGFuZGVkKTsKKyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9hZGROb2RlKGFkZGVkTm9kZSwgbm9kZS5jaGlsZHJlbltpXSk7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2FkZFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fcnVsZUNvbXBsZXRpb25DYWxsYmFjayhyZXN1bHQpOworICAg
ICAgICB0aGlzLl9wZW5kaW5nUnVsZXMtLTsKKyAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUnVs
ZXMpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLnN0b3BBdWRpdFJ1
bih0aGlzKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5
UmVzdWx0cy5fbGFzdElkID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25Db21tb24uanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uQ29tbW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMjU2
MGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uQ29tbW9uLmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuY29tbW9uRXh0ZW5zaW9u
U3ltYm9scyA9IGZ1bmN0aW9uKG5hbWVzcGFjZSkKK3sKKyAgICBpZiAoIW5hbWVzcGFjZS5hdWRp
dHMpCisgICAgICAgIG5hbWVzcGFjZS5hdWRpdHMgPSB7fTsKKworICAgIG5hbWVzcGFjZS5hdWRp
dHMuc2V2ZXJpdHkgPSB7CisgICAgICAgIGluZm86ICJpbmZvIiwKKyAgICAgICAgd2FybmluZzog
Indhcm5pbmciLAorICAgICAgICBzZXZlcmU6ICJzZXZlcmUiCisgICAgfTsKK30KKworV2ViSW5z
cGVjdG9yLmV4dGVuc2lvbkFQSSA9IHt9OworCitXZWJJbnNwZWN0b3IuY29tbW9uRXh0ZW5zaW9u
U3ltYm9scyhXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IDk1ZjM3M2YuLmUyMjY3ZjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAt
NDAsMTEgKzQwLDE1IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRSZXNvdXJjZXMiLCB0aGlzLl9vbkdldFJl
c291cmNlcy5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0ZVBh
bmVsIiwgdGhpcy5fb25DcmVhdGVQYW5lbC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3Rl
ckhhbmRsZXIoImNyZWF0ZVNpZGViYXJQYW5lIiwgdGhpcy5fb25DcmVhdGVTaWRlYmFyLmJpbmQo
dGhpcykpOwotICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigibG9nIiwgdGhpcy5fb25Mb2cuYmlu
ZCh0aGlzKSk7IAorICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigibG9nIiwgdGhpcy5fb25Mb2cu
YmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJldmFsdWF0ZU9uSW5zcGVj
dGVkUGFnZSIsIHRoaXMuX29uRXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UuYmluZCh0aGlzKSk7CiAg
ICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFySGVpZ2h0IiwgdGhpcy5fb25TZXRT
aWRlYmFySGVpZ2h0LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0
U2lkZWJhckV4cGFuZGVkIiwgdGhpcy5fb25TZXRTaWRlYmFyRXhwYW5zaW9uLmJpbmQodGhpcykp
OwogCisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJhZGRBdWRpdENhdGVnb3J5IiwgdGhpcy5f
b25BZGRBdWRpdENhdGVnb3J5LmJpbmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxl
cigiYWRkQXVkaXRSZXN1bHQiLCB0aGlzLl9vbkFkZEF1ZGl0UmVzdWx0LmJpbmQodGhpcykpOwor
ICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic3RvcEF1ZGl0Q2F0ZWdvcnlSdW4iLCB0aGlzLl9v
blN0b3BBdWRpdENhdGVnb3J5UnVuLmJpbmQodGhpcykpOworCiAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9vbldpbmRvd01lc3NhZ2UuYmluZCh0aGlzKSwgZmFs
c2UpOwogfQogCkBAIC04NCw2ICs4OCwxNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigicmVzZXQiKTsK
ICAgICB9LAogCisgICAgc3RhcnRBdWRpdFJ1bjogZnVuY3Rpb24oY2F0ZWdvcnksIGF1ZGl0UnVu
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF0gPSBhdWRp
dFJ1bjsKKyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigiYXVkaXQtc3RhcnRlZC0iICsg
Y2F0ZWdvcnkuaWQsIGF1ZGl0UnVuLmlkKTsKKyAgICB9LAorCisgICAgc3RvcEF1ZGl0UnVuOiBm
dW5jdGlvbihhdWRpdFJ1bikKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9jbGllbnRPYmpl
Y3RzW2F1ZGl0UnVuLmlkXTsKKyAgICB9LAorCiAgICAgX2NvbnZlcnRSZXNvdXJjZTogZnVuY3Rp
b24ocmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gewpAQCAtMTAwLDcgKzExNSw3IEBA
IFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB2YXIgbWVzc2FnZSA9IHsKICAgICAgICAgICAgIGNvbW1hbmQ6ICJu
b3RpZnktIiArIHR5cGUsCi0gICAgICAgICAgICBhcmd1bWVudHM6IEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKGFyZ3VtZW50cywgMSkgCisgICAgICAgICAgICBhcmd1bWVudHM6IEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkKICAgICAgICAgfTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBzdWJzY3JpYmVycy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHN1
YnNjcmliZXJzW2ldLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwpAQCAtMjQ4LDYgKzI2MywzNiBAQCBX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IHJlc3BvbnNlOwogICAgIH0sCiAKKyAgICBfb25BZGRBdWRpdENhdGVnb3J5OiBmdW5jdGlvbihy
ZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5ID0gbmV3IFdlYkluc3BlY3Rvci5F
eHRlbnNpb25BdWRpdENhdGVnb3J5KHJlcXVlc3QuaWQsIHJlcXVlc3QuZGlzcGxheU5hbWUsIHJl
cXVlc3QucnVsZUNvdW50KTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRz
LmdldENhdGVnb3J5KGNhdGVnb3J5LmlkKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0
dXMuRV9FWElTVFMoY2F0ZWdvcnkuaWQpOworICAgICAgICB0aGlzLl9jbGllbnRPYmplY3RzW3Jl
cXVlc3QuaWRdID0gY2F0ZWdvcnk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRz
LmFkZENhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICB9LAorCisgICAgX29uQWRkQXVkaXRSZXN1bHQ6
IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSZXN1bHQgPSB0aGlz
Ll9jbGllbnRPYmplY3RzW3JlcXVlc3QucmVzdWx0SWRdOworICAgICAgICBpZiAoIWF1ZGl0UmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHJlcXVlc3Qu
cmVzdWx0SWQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXVkaXRSZXN1bHQuYWRkUmVz
dWx0KHJlcXVlc3QuZGlzcGxheU5hbWUsIHJlcXVlc3QuZGVzY3JpcHRpb24sIHJlcXVlc3Quc2V2
ZXJpdHksIHJlcXVlc3QuZGV0YWlscyk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIHJldHVybiBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuT0so
KTsKKyAgICB9LAorCisgICAgX29uU3RvcEF1ZGl0Q2F0ZWdvcnlSdW46IGZ1bmN0aW9uKHJlcXVl
c3QpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSdW4gPSB0aGlzLl9jbGllbnRPYmplY3RzW3Jl
cXVlc3QucmVzdWx0SWRdOworICAgICAgICBpZiAoIWF1ZGl0UnVuKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHJlcXVlc3QucmVzdWx0SWQpOworICAgICAgICBh
dWRpdFJ1bi5jYW5jZWwoKTsKKyAgICB9LAorCiAgICAgaW5pdEV4dGVuc2lvbnM6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvckV4dGVuc2lvblJlZ2lzdHJ5LmdldEV4dGVuc2lv
bnNBc3luYygpOwpAQCAtMjU1LDcgKzMwMCw4IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlID0gewogCiAgICAgX2FkZEV4dGVuc2lvbnM6IGZ1bmN0aW9uKGV4dGVuc2lv
bnMpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0RXh0ZW5zaW9uQVBJ
KCIoIiArIGluamVjdGVkRXh0ZW5zaW9uQVBJLnRvU3RyaW5nKCkgKyAiKSIpOyAvLyBTZWUgRXh0
ZW5zaW9uQVBJLmpzIGZvciBkZXRhaWxzLgorICAgICAgICAvLyBTZWUgRXh0ZW5zaW9uQVBJLmpz
IGFuZCBFeHRlbnNpb25Db21tb24uanMgZm9yIGRldGFpbHMuCisgICAgICAgIEluc3BlY3RvckZy
b250ZW5kSG9zdC5zZXRFeHRlbnNpb25BUEkodGhpcy5fYnVpbGRFeHRlbnNpb25BUElJbmplY3Rl
ZFNjcmlwdCgpKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRlbnNpb25zLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uc1tpXTsKICAg
ICAgICAgICAgIHRyeSB7CkBAIC0yNzEsNiArMzE3LDE0IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIF9idWlsZEV4
dGVuc2lvbkFQSUluamVjdGVkU2NyaXB0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gIihmdW5jdGlvbigpeyAiICsKKyAgICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS50b1N0cmluZygpICsgIikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsi
ICsKKyAgICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rvci5jb21tb25FeHRlbnNpb25TeW1ib2xz
LnRvU3RyaW5nKCkgKyAiKSh3ZWJJbnNwZWN0b3IpOyIgKworICAgICAgICAgICAgIn0pIjsKKyAg
ICB9LAorCiAgICAgX29uV2luZG93TWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAoZXZlbnQuZGF0YSAhPT0gInJlZ2lzdGVyRXh0ZW5zaW9uIikKQEAgLTMwMCwxMiAr
MzU0LDE0IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAg
IH0KIH0KIAotV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5fc3RhdHVzZXMgPSAKK1dlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2VzID0KIHsKICAgICBPSzogIiIsCi0gICAg
RV9OT1RGT1VORDogIk9iamVjdCBub3QgZm91bmQgKCVzKSIsCi0gICAgRV9OT1RTVVBQT1JURUQ6
ICJPYmplY3QgZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgb3BlcmF0aW9uICglcykiLAotICAg
IEVfRVhJU1RTOiAiT2JqZWN0IGFscmVhZHkgZXhpc3RzICglcykiCisgICAgRV9FWElTVFM6ICJP
YmplY3QgYWxyZWFkeSBleGlzdHM6ICVzIiwKKyAgICBFX0JBREFSRzogIkludmFsaWQgYXJndW1l
bnQgJXM6ICVzIiwKKyAgICBFX0JBREFSR1RZUEU6ICJJbnZhbGlkIHR5cGUgZm9yIGFyZ3VtZW50
ICVzOiBnb3QgJXMsIGV4cGVjdGVkICVzIiwKKyAgICBFX05PVEZPVU5EOiAiT2JqZWN0IG5vdCBm
b3VuZDogJXMiLAorICAgIEVfTk9UU1VQUE9SVEVEOiAiT2JqZWN0IGRvZXMgbm90IHN1cHBvcnQg
cmVxdWVzdGVkIG9wZXJhdGlvbjogJXMiLAogfQogCiBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU3Rh
dHVzID0gZnVuY3Rpb24oKQpAQCAtMzE5LDcgKzM3NSw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TdGF0dXMgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBzdGF0dXMuaXNFcnJvciA9IHRydWU7
CiAgICAgICAgICAgICBjb25zb2xlLmxvZygiRXh0ZW5zaW9uIHNlcnZlciBlcnJvcjogIiArIFN0
cmluZy52c3ByaW50ZihkZXNjcmlwdGlvbiwgZGV0YWlscykpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBzdGF0dXM7IAorICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KICAgICBmb3Ig
KHN0YXR1cyBpbiBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLl9zdGF0dXNlcykKICAgICAg
ICAgdGhpc1tzdGF0dXNdID0gbWFrZVN0YXR1cy5iaW5kKG51bGwsIHN0YXR1cyk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDQ5MDE4NTcuLmM2NTExNWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC00LDYgKzQsNyBAQAogICAgIDxm
aWxlPkFic3RyYWN0VGltZWxpbmVQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5BcHBsaWNhdGlv
bkNhY2hlSXRlbXNWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0Q2F0ZWdvcmllcy5qczwv
ZmlsZT4KKyAgICA8ZmlsZT5BdWRpdEZvcm1hdHRlcnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVk
aXRMYXVuY2hlclZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRSZXN1bHRWaWV3LmpzPC9m
aWxlPgogICAgIDxmaWxlPkF1ZGl0UnVsZXMuanM8L2ZpbGU+CkBAIC0zNSw2ICszNiw4IEBACiAg
ICAgPGZpbGU+RWxlbWVudHNUcmVlT3V0bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT5FdmVudExp
c3RlbmVyc1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvbkFQSS5qczwv
ZmlsZT4KKyAgICA8ZmlsZT5FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzPC9maWxlPgorICAgIDxm
aWxlPkV4dGVuc2lvbkNvbW1vbi5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25QYW5lbC5q
czwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25SZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RXh0ZW5zaW9uU2VydmVyLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDE0ZTJjZGMuLjNhM2UzMWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTk4LDYgKzk4LDggQEAgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlc1BhbmVs
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJD
b25zb2xlUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkV4dGVuc2lvbkFQSS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQ29tbW9u
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJF
eHRlbnNpb25TZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkV4dGVuc2lvblBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdHNQYW5lbC5qcyI+PC9zY3JpcHQ+CkBAIC0x
MDUsNiArMTA3LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJBdWRpdExhdW5jaGVyVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRSdWxlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRDYXRlZ29yaWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdEZvcm1h
dHRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlJlc291cmNlVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iU291cmNlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTVN5bnRheEhpZ2hsaWdodGVyLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IDY2Y2YyODQu
LmU4YWRmZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAt
NzMyLDEyICs3MzIsNiBAQCBBcnJheS5jb252ZXJ0ID0gZnVuY3Rpb24obGlzdCkKIAogZnVuY3Rp
b24gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0
LCBhTGlzdCwgYUZ1bmN0aW9uKQogewotICAgIC8vIGluZGV4T2YgcmV0dXJucyAoLWxvd2VyQm91
bmQgLSAxKS4gVGFraW5nICgtcmVzdWx0IC0gMSkgd29ya3Mgb3V0IHRvIGxvd2VyQm91bmQuCi0g
ICAgcmV0dXJuICgtaW5kZXhPZk9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oYW5PYmplY3Qs
IGFMaXN0LCBhRnVuY3Rpb24pIC0gMSk7Ci19Ci0KLWZ1bmN0aW9uIGluZGV4T2ZPYmplY3RJbkxp
c3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0LCBhTGlzdCwgYUZ1bmN0aW9uKQotewogICAgIHZh
ciBmaXJzdCA9IDA7CiAgICAgdmFyIGxhc3QgPSBhTGlzdC5sZW5ndGggLSAxOwogICAgIHZhciBm
bG9vciA9IE1hdGguZmxvb3I7CkBAIC03NjAsOSArNzU0LDcgQEAgZnVuY3Rpb24gaW5kZXhPZk9i
amVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rpb24pCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBCeSByZXR1cm5pbmcgMSBsZXNzIHRoYW4gdGhlIG5l
Z2F0aXZlIGxvd2VyIHNlYXJjaCBib3VuZCwgd2UgY2FuIHJldXNlIHRoaXMgZnVuY3Rpb24KLSAg
ICAvLyBmb3IgYm90aCBpbmRleE9mIGFuZCBpbnNlcnRpb25JbmRleEZvciwgd2l0aCBzb21lIHNp
bXBsZSBhcml0aG1ldGljLgotICAgIHJldHVybiAoLWZpcnN0IC0gMSk7CisgICAgcmV0dXJuIGZp
cnN0OwogfQogCiBTdHJpbmcuc3ByaW50ZiA9IGZ1bmN0aW9uKGZvcm1hdCkK
</data>
<flag name="review"
          id="54365"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65573</attachid>
            <date>2010-08-26 09:12:50 -0700</date>
            <delta_ts>2010-08-26 09:18:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extension-audits.patch</filename>
            <type>text/plain</type>
            <size>58186</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMjRjMmJhLi5hMWQ4ZjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDgt
MjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBhZGQgYXVkaXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICAq
IGluc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hdWRpdHMtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAoZnJvbnRlbmRfY29sbGVjdEF1
ZGl0UmVzdWx0cyk6CisgICAgICAgIChmcm9udGVuZF9jb2xsZWN0VGV4dENvbnRlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1hcGkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGV4dGVuc2lvbl9ydW5BdWRpdHMub25NZXNzYWdlKToKKyAgICAgICAgKGV4dGVuc2lv
bl9ydW5BdWRpdHMpOgorICAgICAgICAoZnJvbnRlbmRfcnVuRXh0ZW5zaW9uQXVkaXRzLm9uQXVk
aXRzRG9uZSk6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0w
OC0yNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRp
dHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1w
YW5lbC1mdW5jdGlvbmFsLmh0bWwKaW5kZXggNzE1MzdmNC4uZTdhMjgwNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKQEAgLTcs
MTIgKzcsMTIgQEAKIH0KIDwvc3R5bGU+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImF1ZGl0cy10
ZXN0cy5qcyI+PC9zY3JpcHQ+CiAKIDwhLS0gVGhlc2Ugc2NyaXB0cyBhcmUgbmVlZGVkIHRvIHJl
c3VsdCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgbWF4IEpTIHJlc291cmNlIGNvdW50IGZyb20gdGhl
IHNhbWUgZG9tYWluIC0tPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5q
cyI+PC9zY3JpcHQ+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hdWRp
dHMtc3R5bGUxLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9h
dWRpdHMtc2NyaXB0Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0
cy1zY3JpcHQzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQpAQCAt
NTAsMTQgKzUwLDcgQEAgZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9sbGVy
KQogCiAgICAgICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBBdWRpdHMgYXJlIGRvbmUsIGNoZWNrIHJlc3VsdHMu
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJ
bnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblsw
XS5yZXN1bHRzKTsKLSAgICAgICAgICAgIHZhciBsaUVsZW1lbnRzID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5hdWRpdHMudmlzaWJsZVZpZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGki
KTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7ICsr
aikgewotICAgICAgICAgICAgICAgIGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQotICAg
ICAgICAgICAgICAgICAgICBsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG91dHB1dCA9IFtdOwotICAgICAgICAgICAgZnJv
bnRlbmRfY29sbGVjdFRleHRDb250ZW50KFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2li
bGVWaWV3LmVsZW1lbnQsIDAsIG91dHB1dCk7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gZnJv
bnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cygpOwogICAgICAgICAgICAgLy8gQXZvaWQgaW5mbHVl
bmNpbmcgdGVzdHMgdGhhdCByZXF1aXJlIHJlc291cmNlIHRyYWNraW5nIHRvIGJlIGRpc2FibGVk
LgogICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhm
YWxzZSk7CiAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKGZ1bmN0aW9uKCkgewpAQCAtNjksMjkgKzYyLDYgQEAgZnVuY3Rpb24gZnJvbnRlbmRfcnVu
QXVkaXRzKHRlc3RDb250cm9sbGVyKQogICAgIH0KIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY29s
bGVjdFRleHRDb250ZW50KGVsZW1lbnQsIGxldmVsLCBvdXRwdXQpCi17Ci0gICAgdmFyIG5vZGVP
dXRwdXQgPSAiIjsKLSAgICB2YXIgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgd2hp
bGUgKGNoaWxkKSB7Ci0gICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05P
REUpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKLSAgICAg
ICAgICAgICAgICBub2RlT3V0cHV0ICs9ICIgIjsKLSAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0g
Y2hpbGQubm9kZVZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBO
b2RlLkVMRU1FTlRfTk9ERSkgewotICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7
Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Ci0gICAgICAgICAgICAg
ICAgbm9kZU91dHB1dCA9ICIiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJvbnRlbmRf
Y29sbGVjdFRleHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7Ci0gICAgICAgIH0K
LSAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKLSAgICB9Ci0gICAgaWYgKG5vZGVP
dXRwdXQgIT09ICIiKQotICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKLSAgICByZXR1
cm47Ci19Ci0KIDwvc2NyaXB0PgogPC9oZWFkPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvYXVkaXRzLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10
ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDJjNmI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpAQCAt
MCwwICsxLDM1IEBACitmdW5jdGlvbiBmcm9udGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCkKK3sK
KyAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRz
KTsKKyAgICB2YXIgbGlFbGVtZW50cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2li
bGVWaWV3LmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpIik7CisgICAgZm9yICh2YXIg
aiA9IDA7IGogPCBsaUVsZW1lbnRzLmxlbmd0aDsgKytqKSB7CisgICAgICAgIGlmIChsaUVsZW1l
bnRzW2pdLnRyZWVFbGVtZW50KQorICAgICAgICAgICAgbGlFbGVtZW50c1tqXS50cmVlRWxlbWVu
dC5leHBhbmQoKTsKKyAgICB9CisgICAgdmFyIG91dHB1dCA9IFtdOworICAgIGZyb250ZW5kX2Nv
bGxlY3RUZXh0Q29udGVudChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5l
bGVtZW50LCAwLCBvdXRwdXQpOworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGZy
b250ZW5kX2NvbGxlY3RUZXh0Q29udGVudChlbGVtZW50LCBsZXZlbCwgb3V0cHV0KQoreworICAg
IHZhciBub2RlT3V0cHV0ID0gIiI7CisgICAgdmFyIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxk
OworCisgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0g
Tm9kZS5URVhUX05PREUpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7
ICsraSkKKyAgICAgICAgICAgICAgICBub2RlT3V0cHV0ICs9ICIgIjsKKyAgICAgICAgICAgIG5v
ZGVPdXRwdXQgKz0gY2hpbGQubm9kZVZhbHVlOworICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5v
ZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgaWYgKG5vZGVPdXRw
dXQgIT09ICIiKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Cisg
ICAgICAgICAgICAgICAgbm9kZU91dHB1dCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7
CisgICAgICAgIH0KKyAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKKyAgICB9Cisg
ICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKQorICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0
ZWQudHh0CmluZGV4IDM1YTk5ZDIuLmMwNzQ3MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDkgQEAgU3RhcnRl
ZCBleHRlbnNpb24uCiBSdW5uaW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90
ZXN0QVBJCiB7CisgICAgYXVkaXRzIDogeworICAgICAgICBhZGRDYXRlZ29yeSA6IDxmdW5jdGlv
bj4KKyAgICB9CiAgICAgaW5zcGVjdGVkV2luZG93IDogewogICAgICAgICBvbkxvYWRlZCA6IHsK
ICAgICAgICAgICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTM2Njc1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzOSBAQAorVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVjdG9y
IEV4dGVuc2lvbnMgQVBJCisKK1N0YXJ0ZWQgZXh0ZW5zaW9uLgorUnVubmluZyB0ZXN0cy4uLgor
UlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEF1ZGl0c0FQSQorQWRkZWQgYXVkaXQgY2F0ZWdv
cnksIHJlc3VsdCBkdW1wIGZvbGxvd3M6Cit7CisgICAgb25BdWRpdFN0YXJ0ZWQgOiB7CisgICAg
ICAgIGFkZExpc3RlbmVyIDogPGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxm
dW5jdGlvbj4KKyAgICB9Cit9CitjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgcmVzdWx0
cyBkdW1wIGZvbGxvd3M6Cit7CisgICAgYWRkUmVzdWx0IDogPGZ1bmN0aW9uPgorICAgIGNyZWF0
ZVJlc3VsdCA6IDxmdW5jdGlvbj4KKyAgICBkb25lIDogPGZ1bmN0aW9uPgorICAgIHVybCA6IDxm
dW5jdGlvbj4KKyAgICBzbmlwcGV0IDogPGZ1bmN0aW9uPgorICAgIHRleHQgOiA8ZnVuY3Rpb24+
CisgICAgU2V2ZXJpdHkgOiB7CisgICAgICAgIGluZm8gOiAiaW5mbyIKKyAgICAgICAgd2Fybmlu
ZyA6ICJ3YXJuaW5nIgorICAgICAgICBzZXZlcmUgOiAic2V2ZXJlIgorICAgIH0KK30KK3sKKyAg
ICBjb250ZW50cyA6IHsKKyAgICAgICAgMCA6ICJTdWJ0cmVlIgorICAgIH0KKyAgICBjaGlsZHJl
biA6IHsKKyAgICB9CisgICAgZXhwYW5kZWQgOiBmYWxzZQorICAgIGFkZENoaWxkIDogPGZ1bmN0
aW9uPgorfQorQXVkaXRzIGNvbXBsZXRlOgorICBFeHRlbnNpb24gYXVkaXRzCitBbGwgdGVzdHMg
ZG9uZS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVk
aXRzLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFw
aS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3ZjYyYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBp
Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iZXh0ZW5zaW9ucy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMt
dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtYXVkaXRzLXRlc3Rz
LmpzIj48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5j
dGlvbiBleHRlbnNpb25fdGVzdEF1ZGl0c0FQSShuZXh0VGVzdCkKK3sKKyAgICBmdW5jdGlvbiBv
blN0YXJ0QXVkaXRDYXRlZ29yeShyZXN1bHRzKQorICAgIHsKKyAgICAgICAgbG9nKCJjYXRlZ29y
eS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgcmVzdWx0cyBkdW1wIGZvbGxvd3M6Iik7CisgICAgICAg
IGR1bXBPYmplY3QocmVzdWx0cyk7CisgICAgICAgIHZhciBub2RlID0gcmVzdWx0cy5jcmVhdGVS
ZXN1bHQoIlN1YnRyZWUiKTsKKyAgICAgICAgZHVtcE9iamVjdChub2RlKTsKKyAgICAgICAgcmVz
dWx0cy5kb25lKCk7CisgICAgfQorICAgIHZhciBjYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRp
dHMuYWRkQ2F0ZWdvcnkoIkV4dGVuc2lvbiBhdWRpdHMiLCAyMCk7CisgICAgY2F0ZWdvcnkub25B
dWRpdFN0YXJ0ZWQuYWRkTGlzdGVuZXIob25TdGFydEF1ZGl0Q2F0ZWdvcnkpOworICAgIGxvZygi
QWRkZWQgYXVkaXQgY2F0ZWdvcnksIHJlc3VsdCBkdW1wIGZvbGxvd3M6Iik7CisgICAgZHVtcE9i
amVjdChjYXRlZ29yeSk7CisgICAgZXh0ZW5zaW9uX3J1bkF1ZGl0cyhuZXh0VGVzdCk7Cit9CisK
K2Z1bmN0aW9uIHJ1bkF1ZGl0cygpCit7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJv
bnRlbmRfcnVuQXVkaXRzIik7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJvbmxvYWQoKSI+Cis8cD5UZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0
ZW5zaW9ucyBBUEk8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kOTllZjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5
IEBACitUZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEkK
KworU3RhcnRlZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4
dGVuc2lvbl90ZXN0QXVkaXRzCitBZGRlZCBhdWRpdCBjYXRlZ29yeS4KK2NhdGVnb3J5Lm9uQXVk
aXRTdGFydGVkIGZpcmVkCitmYWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhy
b3dpbmcgZXhjZXB0aW9uCitBdWRpdHMgY29tcGxldGU6CisgIEV4dGVuc2lvbiBhdWRpdHMKKyAg
ICBGYWlsZWQgcnVsZSAoNDIpCisgICAgIHRoaXMgcnVsZSBhbHdheXMgZmFpbHMKKyAgICBSdWxl
IHdpdGggZGV0YWlscyBzdWJ0cmVlICgxKQorICAgICBUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRl
dGFpbHMKKyAgICAgIFN1YnRyZWUKKyAgICAgICBTb21lIHVybDogCisgICAgICAgIFdlYktpdAor
ICAgICAgICBtb3JlIHRleHQgCisgICAgICAgIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbQorICAgICAg
IC4uLiBhbmQgYSBzbmlwcGV0CisgICAgICAgICBmdW5jdGlvbiByYW5kKCkKKyAgICAgICAgIHsK
KyAgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgIH0KKyAgICBQYXNzZWQgcnVsZQorICAg
ICB0aGlzIHJ1bGUgYWx3YXlzIHBhc3NlcyBvaworICBFeHRlbnNpb24gYXVkaXRzIHRoYXQgZmFp
bAorQWxsIHRlc3RzIGRvbmUuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNp
b25zLWF1ZGl0cy10ZXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4x
MjVlNzhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLXRlc3RzLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIGV4dGVuc2lvbl9y
dW5BdWRpdHMoY2FsbGJhY2spDQorew0KKyAgICBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpDQor
ICAgIHsNCisgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiYXVkaXQtdGVzdHMtZG9uZSIpDQor
ICAgICAgICAgICAgY2FsbGJhY2soKTsNCisgICAgfQ0KKyAgICB0b3AuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIG9uTWVzc2FnZSwgZmFsc2UpOw0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVj
dGVkV2luZG93LmV2YWx1YXRlKCJldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCdmcm9udGVuZF9ydW5F
eHRlbnNpb25BdWRpdHMnKSIpOw0KK30NCisNCitmdW5jdGlvbiBmcm9udGVuZF9ydW5FeHRlbnNp
b25BdWRpdHModGVzdENvbnRyb2xsZXIpDQorew0KKyAgICBjb25zdCBsYXVuY2hlclZpZXcgPSBX
ZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5fbGF1bmNoZXJWaWV3Ow0KKyAgICBsYXVuY2hlclZp
ZXcuX3NlbGVjdEFsbENsaWNrZWQoZmFsc2UpOw0KKyAgICBsYXVuY2hlclZpZXcuX2F1ZGl0UHJl
c2VudFN0YXRlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTsNCisNCisgICAgdmFyIGV4dGVuc2lvbkNh
dGVnb3JpZXMgPSBkb2N1bWVudC5ldmFsdWF0ZSgibGFiZWxbc3RhcnRzLXdpdGgoLiwnRXh0ZW5z
aW9uICcpXS9pbnB1dFtAdHlwZT0nY2hlY2tib3gnXSIsDQorICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5fbGF1bmNoZXJWaWV3Ll9jYXRlZ29yaWVzRWxlbWVudCwgbnVsbCwgWFBh
dGhSZXN1bHQuT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpOw0KKw0KKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV4dGVuc2lvbkNhdGVnb3JpZXMuc25hcHNob3RMZW5ndGg7ICsraSkN
CisgICAgICAgIGV4dGVuc2lvbkNhdGVnb3JpZXMuc25hcHNob3RJdGVtKGkpLmNsaWNrKCk7DQor
DQorICAgIGZ1bmN0aW9uIG9uQXVkaXRzRG9uZSgpDQorICAgIHsNCisgICAgICAgIHZhciBvdXRw
dXQgPSBmcm9udGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCk7DQorICAgICAgICBJbmplY3RlZFNj
cmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoImxvZyh1bmVzY2FwZSgnIiArIGVzY2Fw
ZSgiQXVkaXRzIGNvbXBsZXRlOlxuIiArIG91dHB1dC5qb2luKCJcbiIpKSArICInKSk7IiwgZnVu
Y3Rpb24oKSB7DQorICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJhdWRpdC10ZXN0cy1kb25l
IiwgIioiKTsNCisgICAgICAgIH0pOw0KKyAgICB9DQorDQorICAgIGZyb250ZW5kX2FkZFNuaWZm
ZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMsICJfYXVkaXRGaW5pc2hlZENhbGxiYWNrIiwg
b25BdWRpdHNEb25lLCB0cnVlKTsNCisgICAgbGF1bmNoZXJWaWV3Ll9sYXVuY2hCdXR0b25DbGlj
a2VkKCk7DQorfQ0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
LWF1ZGl0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTQ4YTIzZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sCkBA
IC0wLDAgKzEsNTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImV4
dGVuc2lvbnMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYXVkaXRzLXRlc3RzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJleHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZXh0
ZW5zaW9uX3Rlc3RBdWRpdHMobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0
Q2F0ZWdvcnkocmVzdWx0cykKKyAgICB7CisgICAgICAgIGxvZygiY2F0ZWdvcnkub25BdWRpdFN0
YXJ0ZWQgZmlyZWQiKTsKKyAgICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIlBhc3NlZCBydWxlIiwg
InRoaXMgcnVsZSBhbHdheXMgcGFzc2VzIG9rIiwgcmVzdWx0cy5TZXZlcml0eS5pbmZvKTsKKyAg
ICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIkZhaWxlZCBydWxlICg0MikiLCAidGhpcyBydWxlIGFs
d2F5cyBmYWlscyIsIHJlc3VsdHMuU2V2ZXJpdHkuc2V2ZXJlKTsKKworICAgICAgICB2YXIgbm9k
ZSA9IHJlc3VsdHMuY3JlYXRlUmVzdWx0KCJTdWJ0cmVlIik7CisgICAgICAgIG5vZGUuYWRkQ2hp
bGQoIlNvbWUgdXJsOiAiLCByZXN1bHRzLnVybCgiaHR0cDovL3d3dy53ZWJraXQub3JnIiwgIldl
YktpdCIpLCAiIG1vcmUgdGV4dCAiLCByZXN1bHRzLnVybCgiaHR0cDovL3d3dy5nb29nbGUuY29t
IikpOworICAgICAgICB2YXIgbmVzdGVkTm9kZSA9IG5vZGUuYWRkQ2hpbGQoIi4uLiBhbmQgYSBz
bmlwcGV0Iik7CisgICAgICAgIG5lc3RlZE5vZGUuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICBu
ZXN0ZWROb2RlLmFkZENoaWxkKHJlc3VsdHMuc25pcHBldCgiZnVuY3Rpb24gcmFuZCgpXG57XG4g
ICAgcmV0dXJuIDQ7XG59IikpOworCisgICAgICAgIHJlc3VsdHMuYWRkUmVzdWx0KCJSdWxlIHdp
dGggZGV0YWlscyBzdWJ0cmVlICgxKSIsICJUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRldGFpbHMi
LCByZXN1bHRzLlNldmVyaXR5Lndhcm5pbmcsIG5vZGUpOworICAgICAgICAvLyBBdWRpdCBub3Jt
YWxseSB0ZXJtaW5hdGVzIHdoZW4gbnVtYmVyIG9mIGFkZGVkIHJ1bGUgcmVzdWx0cyBpcyBlcXVh
bCB0bworICAgICAgICAvLyB0aGUgcnVsZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNh
dGVnb3J5LiBkb25lKCkgaXMgb25seSBmb3IKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhc2VzLCB3
aGVuIHdlIGtub3cgd2Ugd29uJ3QgYmUgYWJsZSB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHJ1bGVz
LgorICAgICAgICByZXN1bHRzLmRvbmUoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25TdGFydEF1
ZGl0RmFpbGVkQ2F0ZWdvcnkoKQorICAgIHsKKyAgICAgICAgbG9nKCJmYWlsZWRDYXRlZ29yeS5v
bkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhyb3dpbmcgZXhjZXB0aW9uIik7CisgICAgICAgIHRocm93
ICJvb3BzISI7CisgICAgfQorICAgIGZ1bmN0aW9uIG9uU3RhcnRBdWRpdERpc2FibGVkQ2F0ZWdv
cnkocmVzdWx0cykKKyAgICB7CisgICAgICAgIGxvZygiRkFJTDogZmFpbGVkQ2F0ZWdvcnkub25B
dWRpdFN0YXJ0ZWQgZmlyZWQiKTsKKyAgICAgICAgcmVzdWx0cy5kb25lKCk7CisgICAgfQorCisg
ICAgdmFyIGNhdGVnb3J5ID0gd2ViSW5zcGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5z
aW9uIGF1ZGl0cyIsIDIwKTsKKyAgICBjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5l
cihvblN0YXJ0QXVkaXRDYXRlZ29yeSk7CisgICAgbG9nKCJBZGRlZCBhdWRpdCBjYXRlZ29yeS4i
KTsKKworICAgIHZhciBmYWlsZWRDYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0
ZWdvcnkoIkV4dGVuc2lvbiBhdWRpdHMgdGhhdCBmYWlsIiwgMik7CisgICAgZmFpbGVkQ2F0ZWdv
cnkub25BdWRpdFN0YXJ0ZWQuYWRkTGlzdGVuZXIob25TdGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnkp
OworCisgICAgdmFyIGRpc2FibGVkQ2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENh
dGVnb3J5KCJEaXNhYmxlZCBleHRlbnNpb24gYXVkaXRzIiwgMik7CisgICAgZGlzYWJsZWRDYXRl
Z29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXREaXNhYmxlZENhdGVn
b3J5KTsKKworICAgIGV4dGVuc2lvbl9ydW5BdWRpdHMobmV4dFRlc3QpOworfQorCis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+VGVzdHMgYXVkaXRzIHN1
cHBvcnQgaW4gV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJPC9wPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4
IDM5MjRhNmEuLjk5MzRmNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRl
bnNpb25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9u
cy1leHBlY3RlZC50eHQKQEAgLTMxLDcgKzMxLDcgQEAgcmVzb3VyY2U6IC4uLi90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMKIHJlc291cmNlOiAuLi4vTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2V4dGVuc2lvbnMtdGVzdC5qcwogcmVzb3VyY2U6IC4uLi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy5odG1sCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0SW52YWxp
ZFJlc291cmNlCi1BdHRlbXB0ZWQgdG8gcmV0cmlldmUgaW52YWxpZCByZXNvdXJjZTogeyJjb2Rl
IjoiRV9OT1RGT1VORCIsImRlc2NyaXB0aW9uIjoiT2JqZWN0IG5vdCBmb3VuZCAoJXMpIiwiZGV0
YWlscyI6WzIxMjg1MDZdLCJpc0Vycm9yIjp0cnVlfQorQXR0ZW1wdGVkIHRvIHJldHJpZXZlIGlu
dmFsaWQgcmVzb3VyY2U6IHsiY29kZSI6IkVfTk9URk9VTkQiLCJkZXNjcmlwdGlvbiI6Ik9iamVj
dCBub3QgZm91bmQ6ICVzIiwiZGV0YWlscyI6WzIxMjg1MDZdLCJpc0Vycm9yIjp0cnVlfQogUlVO
TklORyBURVNUOiBleHRlbnNpb25fdGVzdFJlc291cmNlTm90aWZpY2F0aW9uCiBSZXNvdXJjZSBm
aW5pc2hlZDogLi4uL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uaHRtbAogQWxs
IHRlc3RzIGRvbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2F1ZGl0cy1zY3JpcHQzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRp
dHMtc2NyaXB0My5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmQ2MDUwNC4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQz
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1mdW5jdGlvbiBmb28zKCkKLXsKLX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCA4MTE4M2NhLi4zNzY1NDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDAsNiArMjAwLDggQEAg
V09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLmh0bWwgPSBGQUlM
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxp
c3RlbmVyLWNvbnRleHQuaHRtbCA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9leHRl
bnNpb25zLmh0bWwgPSBGQUlMCiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1h
cGkuaHRtbCA9IEZBSUwKK1dPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0
cy5odG1sID0gRkFJTAorV09OVEZJWCBTS0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRz
LWFwaS5odG1sID0gRkFJTAogCiAvLyBJbXBsZW1lbnQgamF2YSB0ZXN0aW5nIGhhcm5lc3MuCiBC
VUczNjY4MSBERUZFUiBTS0lQIDogamF2YSA9IFRFWFQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJlYzE4OS4uOWNiMzU4NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5NiBAQAorMjAxMC0wOC0yNiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisKKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBhZGQgYXVkaXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAg
ICBFeHBvc2VkIChsYXRlKSBhZGRpbmcgb2YgY2F0ZWdvcmllcyBmcm9tIEF1ZGl0UGFuZWwuCisg
ICAgICAgIFJlbW92ZWQgaW5kZXhPZk9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24gaW4gZmF2
b3Igb2YKKyAgICAgICAgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uICh0aGUgZm9ybWVyIGhhZAorICAgICAgICB3ZWlyZCBpbnRlcmZhY2UgYWx3YXlzIHJldHVy
bmluZyBuZWdhdGl2ZSBudW1iZXJzIGFuZCB3YXMgb25seSB1c2VkIGluCisgICAgICAgIHRoZSBs
YXR0ZXIpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ1MTgKKworICAgICAgICBUZXN0czogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5o
dG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdEZvcm1h
dHRlcnMuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFwcGx5Rm9ybWF0dGVycyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzLnRleHQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkF1ZGl0Rm9ybWF0dGVycy5zbmlwcGV0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BdWRpdEZvcm1hdHRlcnMuY29uY2F0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dEZvcm1hdHRlcnMudXJsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1
bmNoZXJWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuYWRkQ2F0
ZWdvcnkuY29tcGFyZUNhdGVnb3JpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1
bmNoZXJWaWV3LnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl9sYXVuY2hCdXR0b25DbGlja2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX3NlbGVjdEFsbENs
aWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlw
ZS5fY2F0ZWdvcnlDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVy
Vmlldy5wcm90b3R5cGUuX2NyZWF0ZUNhdGVnb3J5RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl9jcmVhdGVMYXVuY2hlclVJKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZS5wcm90b3R5cGUuX2FwcGVuZFJl
c3VsdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRzUGFuZWwucHJvdG90eXBlLmFkZENhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuZ2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5fZXhlY3V0ZUF1ZGl0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVj
dGVkRXh0ZW5zaW9uQVBJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lv
bkFQSS5FdmVudFNpbmtJbXBsLnByb3RvdHlwZS5hZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuX2Zp
cmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2lu
a0ltcGwucHJvdG90eXBlLl9kaXNwYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0
ZWRFeHRlbnNpb25BUEkuRXZlbnRTaW5rKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3Rl
ZEV4dGVuc2lvbkFQSS5JbnNwZWN0b3JFeHRlbnNpb25BUEkpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLlBhbmVscy5wcm90b3R5cGUuY3JlYXRlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0cy5wcm90b3R5cGUuYWRkQ2F0
ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0
Q2F0ZWdvcnkuY3VzdG9tRGlzcGF0Y2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVk
RXh0ZW5zaW9uQVBJLkF1ZGl0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVj
dGVkRXh0ZW5zaW9uQVBJLkF1ZGl0Q2F0ZWdvcnlJbXBsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHQucHJvdG90eXBlLmdldCBTZXZlcml0
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1
bHRJbXBsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRp
dFJlc3VsdEltcGwucHJvdG90eXBlLmFkZFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
aW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZS5jcmVhdGVSZXN1
bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVz
dWx0SW1wbC5wcm90b3R5cGUuZG9uZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRF
eHRlbnNpb25BUEkuQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZS5fbm9kZUZhY3RvcnkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0Tm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHRO
b2RlLnByb3RvdHlwZS5hZGRDaGlsZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BdWRpdENhdGVnb3J5LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
eHRlbnNpb25BdWRpdENhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25B
dWRpdENhdGVnb3J5LnByb3RvdHlwZS5nZXQgaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUuZ2V0IHJ1bGVD
b3VudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90
b3R5cGUucnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5
UmVzdWx0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJl
c3VsdHMucHJvdG90eXBlLmdldCBjb21wbGV0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMucHJvdG90eXBlLmNhbmNlbCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMucHJvdG90eXBlLmFkZFJl
c3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3Vs
dHMucHJvdG90eXBlLl9hZGROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25B
dWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuX2FkZFJlc3VsdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24uanM6IEFkZGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmNvbW1vbkV4dGVuc2lvblN5bWJvbHMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblNlcnZlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3Rv
dHlwZS5zdGFydEF1ZGl0UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2
ZXIucHJvdG90eXBlLnN0b3BBdWRpdFJ1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU2VydmVyLnByb3RvdHlwZS5fcG9zdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25BZGRBdWRpdENhdGVnb3J5KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFkZEF1ZGl0
UmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
Ll9vblN0b3BBdWRpdENhdGVnb3J5UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLl9hZGRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9idWlsZEV4dGVuc2lvbkFQSUluamVjdGVkU2Ny
aXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TdGF0dXMpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdXRp
bGl0aWVzLmpzOgorICAgICAgICAoKToKKwogMjAxMC0wOC0yNiAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwZjE1OTc3Li5iZjQ4N2Y0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDE0NCw2ICs0MTQ0LDcgQEAKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0Fic3RyYWN0VGltZWxpbmVQYW5lbC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Q2F0ZWdvcmllcy5q
cycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdEZvcm1hdHRlcnMuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMuanMnLApAQCAtNDE3
NSw2ICs0MTc2LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
VHJlZU91dGxpbmUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRM
aXN0ZW5lcnNTaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25BUEkuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25Db21tb24uanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uUGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uUmVnaXN0cnlTdHViLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvblNlcnZlci5qcycsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBjMjgwN2YyLi4zODU5ZWQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTUxOTg4LDYgKzUxOTg4LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8
RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEF1ZGl0Rm9y
bWF0dGVycy5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEF1ZGl0TGF1bmNoZXJWaWV3LmpzIg0K
IAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtNTIxMDgsNiArNTIxMTIsMTQgQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXEV4dGVuc2lvbkNvbW1vbi5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8Rmls
ZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEV4dGVuc2lvblBh
bmVsLmpzIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdEZvcm1hdHRlcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uYmM3OTk5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9BdWRpdEZvcm1hdHRlcnMuanMKQEAgLTAsMCArMSw4NiBAQAorLyoNCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dA0KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUNCisgKiBtZXQ6DQorICoNCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dA0KKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4NCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcg0KKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCisgKiBk
aXN0cmlidXRpb24uDQorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cw0KKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tDQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMNCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUg0KKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsDQorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0KKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQ0KKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
Lg0KKyAqLw0KKw0KK1dlYkluc3BlY3Rvci5hcHBseUZvcm1hdHRlcnMgPSBmdW5jdGlvbih2YWx1
ZSkNCit7DQorICAgIHZhciBmb3JtYXR0ZXI7DQorICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVl
Ow0KKyAgICB2YXIgYXJnczsNCisNCisgICAgc3dpdGNoICh0eXBlKSB7DQorICAgICAgICBjYXNl
ICJzdHJpbmciOg0KKyAgICAgICAgY2FzZSAiYm9vbGVhbiI6DQorICAgICAgICBjYXNlICJudW1i
ZXIiOg0KKyAgICAgICAgICAgIGZvcm1hdHRlciA9IFdlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRl
cnMudGV4dDsNCisgICAgICAgICAgICBhcmdzID0gWyB2YWx1ZS50b1N0cmluZygpIF07DQorICAg
ICAgICAgICAgYnJlYWs7DQorDQorICAgICAgICBjYXNlICJvYmplY3QiOg0KKyAgICAgICAgICAg
IGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7DQorICAgICAgICAgICAgICAgIGZvcm1hdHRl
ciA9IFdlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMuY29uY2F0Ow0KKyAgICAgICAgICAgICAg
ICBhcmdzID0gdmFsdWU7DQorICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlICYmIHZh
bHVlLmFyZ3VtZW50cykgew0KKyAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPSBXZWJJbnNwZWN0
b3IuQXVkaXRGb3JtYXR0ZXJzW3ZhbHVlLnR5cGVdOw0KKyAgICAgICAgICAgICAgICBhcmdzID0g
dmFsdWUuYXJndW1lbnRzOw0KKyAgICAgICAgICAgIH0NCisgICAgfQ0KKyAgICBpZiAoIWZvcm1h
dHRlcikNCisgICAgICAgIHRocm93ICJJbnZhbGlkIHZhbHVlIG9yIGZvcm1hdHRlcjogIiArIHR5
cGUgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7DQorDQorICAgIHJldHVybiBmb3JtYXR0ZXIuYXBw
bHkobnVsbCwgYXJncyk7DQorfQ0KKw0KK1dlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMgPSB7
DQorICAgIHRleHQ6IGZ1bmN0aW9uKHRleHQpDQorICAgIHsNCisgICAgICAgIHJldHVybiBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsNCisgICAgfSwNCisNCisgICAgc25pcHBldDogZnVu
Y3Rpb24oc25pcHBldFRleHQpDQorICAgIHsNCisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsNCisgICAgICAgIGRpdi5pbm5lclRleHQgPSBzbmlwcGV0VGV4
dDsNCisgICAgICAgIGRpdi5jbGFzc05hbWUgPSAic291cmNlLWNvZGUiOw0KKyAgICAgICAgcmV0
dXJuIGRpdjsNCisgICAgfSwNCisNCisgICAgY29uY2F0OiBmdW5jdGlvbigpDQorICAgIHsNCisg
ICAgICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7DQorICAg
ICAgICBmb3IgKHZhciBhcmcgPSAwOyBhcmcgPCBhcmd1bWVudHMubGVuZ3RoOyArK2FyZykNCisg
ICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmFwcGx5Rm9ybWF0dGVy
cyhhcmd1bWVudHNbYXJnXSkpOw0KKyAgICAgICAgcmV0dXJuIHBhcmVudDsNCisgICAgfSwNCisN
CisgICAgdXJsOiBmdW5jdGlvbih1cmwsIGRpc3BsYXlUZXh0KQ0KKyAgICB7DQorICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUodXJsLCBkaXNwbGF5VGV4dCB8fCB1
cmwsIG51bGwsICh1cmwgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwKSk7DQorICAgIH0N
Cit9Ow0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5j
aGVyVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmll
dy5qcwppbmRleCAzM2QzODcyLi4xOGRhZWU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCkBAIC0yOCwxMCArMjgsOSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcgPSBmdW5jdGlv
bihjYXRlZ29yaWVzQnlJZCwgcnVubmVyQ2FsbGJhY2spCitXZWJJbnNwZWN0b3IuQXVkaXRMYXVu
Y2hlclZpZXcgPSBmdW5jdGlvbihydW5uZXJDYWxsYmFjaykKIHsKICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5jYWxsKHRoaXMpOwotICAgIHRoaXMuX2NhdGVnb3JpZXNCeUlkID0gY2F0ZWdvcmllc0J5
SWQ7CiAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2sgPSBydW5uZXJDYWxsYmFjazsKICAgICB0aGlz
Ll9jYXRlZ29yeUlkUHJlZml4ID0gImF1ZGl0LWNhdGVnb3J5LWl0ZW0tIjsKICAgICB0aGlzLl9h
dWRpdFJ1bm5pbmcgPSBmYWxzZTsKQEAgLTQxLDI3ICs0MCwxNiBAQCBXZWJJbnNwZWN0b3IuQXVk
aXRMYXVuY2hlclZpZXcgPSBmdW5jdGlvbihjYXRlZ29yaWVzQnlJZCwgcnVubmVyQ2FsbGJhY2sp
CiAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAiYXVkaXQtbGF1bmNoZXIt
dmlldy1jb250ZW50IjsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVu
dEVsZW1lbnQpOworICAgIHRoaXMuX2JvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyID0gdGhpcy5f
Y2F0ZWdvcnlDbGlja2VkLmJpbmQodGhpcyk7CiAKICAgICB0aGlzLl9yZXNldFJlc291cmNlQ291
bnQoKTsKIAotICAgIGZ1bmN0aW9uIGNhdGVnb3J5U29ydEZ1bmN0aW9uKGEsIGIpCi0gICAgewot
ICAgICAgICB2YXIgYVRpdGxlID0gYS5kaXNwbGF5TmFtZSB8fCAiIjsKLSAgICAgICAgdmFyIGJU
aXRsZSA9IGIuZGlzcGxheU5hbWUgfHwgIiI7Ci0gICAgICAgIHJldHVybiBhVGl0bGUubG9jYWxl
Q29tcGFyZShiVGl0bGUpOwotICAgIH0KLSAgICB2YXIgc29ydGVkQ2F0ZWdvcmllcyA9IFtdOwot
ICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2NhdGVnb3JpZXNCeUlkKQotICAgICAgICBzb3J0ZWRD
YXRlZ29yaWVzLnB1c2godGhpcy5fY2F0ZWdvcmllc0J5SWRbaWRdKTsKLSAgICBzb3J0ZWRDYXRl
Z29yaWVzLnNvcnQoY2F0ZWdvcnlTb3J0RnVuY3Rpb24pOworICAgIHRoaXMuX3NvcnRlZENhdGVn
b3JpZXMgPSBbXTsKIAotICAgIGlmICghc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGgpIHsKLSAgICAg
ICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7Ci0g
ICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gIm5vLWF1ZGl0cyI7Ci0gICAg
ICAgIHRoaXMuX2hlYWRlckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk5vIGF1ZGl0cyB0byBydW4iKTsKLSAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRoaXMu
X2NyZWF0ZUxhdW5jaGVyVUkoc29ydGVkQ2F0ZWdvcmllcyk7CisgICAgdGhpcy5faGVhZGVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7CisgICAgdGhpcy5faGVhZGVyRWxl
bWVudC5jbGFzc05hbWUgPSAibm8tYXVkaXRzIjsKKyAgICB0aGlzLl9oZWFkZXJFbGVtZW50LnRl
eHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBhdWRpdHMgdG8gcnVuIik7Cisg
ICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7
CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CkBAIC0x
MzMsNiArMTIxLDMwIEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3Jlc2V0UmVzb3VyY2VDb3VudCgpOwogICAgIH0sCiAKKyAgICBh
ZGRDYXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
X3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGF1bmNo
ZXJVSSgpOworCisgICAgICAgIHZhciBjYXRlZ29yeUVsZW1lbnQgPSB0aGlzLl9jcmVhdGVDYXRl
Z29yeUVsZW1lbnQoY2F0ZWdvcnkuZGlzcGxheU5hbWUsIGNhdGVnb3J5LmlkKTsKKyAgICAgICAg
Y2F0ZWdvcnkuX2NoZWNrYm94RWxlbWVudCA9IGNhdGVnb3J5RWxlbWVudC5maXJzdENoaWxkOwor
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQpIHsKKyAg
ICAgICAgICAgIGNhdGVnb3J5Ll9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IHRydWU7CisgICAg
ICAgICAgICArK3RoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQ7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjb21wYXJlQ2F0ZWdvcmllcyhhLCBiKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgYVRpdGxlID0gYS5kaXNwbGF5TmFtZSB8fCAiIjsKKyAgICAgICAgICAgIHZhciBi
VGl0bGUgPSBiLmRpc3BsYXlOYW1lIHx8ICIiOworICAgICAgICAgICAgcmV0dXJuIGFUaXRsZS5s
b2NhbGVDb21wYXJlKGJUaXRsZSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGluc2VydEJlZm9y
ZSA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjYXRlZ29y
eSwgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcywgY29tcGFyZUNhdGVnb3JpZXMpOworICAgICAgICB0
aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5pbnNlcnRCZWZvcmUoY2F0ZWdvcnlFbGVtZW50LCB0aGlz
Ll9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZHJlbltpbnNlcnRCZWZvcmVdKTsKKyAgICAgICAgdGhp
cy5fc29ydGVkQ2F0ZWdvcmllcy5zcGxpY2UoaW5zZXJ0QmVmb3JlLCAwLCBjYXRlZ29yeSk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigpOworICAgIH0sCisKICAgICBfc2V0QXVkaXRSdW5u
aW5nOiBmdW5jdGlvbihhdWRpdFJ1bm5pbmcpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fYXVk
aXRSdW5uaW5nID09PSBhdWRpdFJ1bm5pbmcpCkBAIC0xNDYsMTAgKzE1OCwxMSBAQCBXZWJJbnNw
ZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFy
IGNhdElkcyA9IFtdOwogICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMuX2NhdGVnb3JpZXNF
bGVtZW50LmNoaWxkTm9kZXM7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2NhdGVnb3Jp
ZXNCeUlkKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fY2F0ZWdvcmllc0J5SWRbaWRdLl9jaGVj
a2JveEVsZW1lbnQuY2hlY2tlZCkKLSAgICAgICAgICAgICAgICBjYXRJZHMucHVzaChpZCk7Cisg
ICAgICAgIGZvciAodmFyIGNhdGVnb3J5ID0gMDsgY2F0ZWdvcnkgPCB0aGlzLl9zb3J0ZWRDYXRl
Z29yaWVzLmxlbmd0aDsgKytjYXRlZ29yeSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX3NvcnRl
ZENhdGVnb3JpZXNbY2F0ZWdvcnldLl9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCkKKyAgICAgICAg
ICAgICAgICBjYXRJZHMucHVzaCh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2NhdGVnb3J5XS5pZCk7
CiAgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9zZXRBdWRpdFJ1bm5pbmcodHJ1ZSk7CiAgICAg
ICAgIHRoaXMuX3J1bm5lckNhbGxiYWNrKGNhdElkcywgdGhpcy5fYXVkaXRQcmVzZW50U3RhdGVF
bGVtZW50LmNoZWNrZWQsIHRoaXMuX3NldEF1ZGl0UnVubmluZy5iaW5kKHRoaXMsIGZhbHNlKSk7
CiAgICAgfSwKQEAgLTE1OSwxNCArMTcyLDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVy
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGhpcy5fY2F0ZWdv
cmllc0VsZW1lbnQuY2hpbGROb2RlczsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9
IGNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBjaGlsZE5v
ZGVzW2ldLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IGNoZWNrQ2F0ZWdvcmllczsKLSAgICAgICAgdGhp
cy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9IGNoZWNrQ2F0ZWdvcmllcyA/IHRoaXMuX3RvdGFs
Q2F0ZWdvcmllc0NvdW50IDogMDsKKyAgICAgICAgdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3Vu
dCA9IGNoZWNrQ2F0ZWdvcmllcyA/IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoIDogMDsK
ICAgICAgICAgdGhpcy5fdXBkYXRlQnV0dG9uKCk7CiAgICAgfSwKIAogICAgIF9jYXRlZ29yeUNs
aWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fY3VycmVudENhdGVn
b3JpZXNDb3VudCArPSBldmVudC50YXJnZXQuY2hlY2tlZCA/IDEgOiAtMTsKLSAgICAgICAgdGhp
cy5fc2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSB0aGlzLl9jdXJyZW50Q2F0ZWdv
cmllc0NvdW50ID09PSB0aGlzLl90b3RhbENhdGVnb3JpZXNDb3VudDsKKyAgICAgICAgdGhpcy5f
c2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSB0aGlzLl9jdXJyZW50Q2F0ZWdvcmll
c0NvdW50ID09PSB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzLmxlbmd0aDsKICAgICAgICAgdGhpcy5f
dXBkYXRlQnV0dG9uKCk7CiAgICAgfSwKIApAQCAtMTc3LDE2ICsxOTAsMjEgQEAgV2ViSW5zcGVj
dG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAgICAgIGVsZW1lbnQudHlw
ZSA9ICJjaGVja2JveCI7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9ib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICBsYWJl
bEVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aXRsZSkpOwogCiAgICAgICAgIHJldHVy
biBsYWJlbEVsZW1lbnQ7CiAgICAgfSwKIAotICAgIF9jcmVhdGVMYXVuY2hlclVJOiBmdW5jdGlv
bihzb3J0ZWRDYXRlZ29yaWVzKQorICAgIF9jcmVhdGVMYXVuY2hlclVJOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaDEiKTsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2VsZWN0IGF1ZGl0cyB0byBydW4iKTsKKworICAgICAgICBmb3Ig
KHZhciBjaGlsZCA9IDA7IGNoaWxkIDwgdGhpcy5fY29udGVudEVsZW1lbnQuY2hpbGRyZW4ubGVu
Z3RoOyArK2NoaWxkKQorICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQucmVtb3ZlQ2hp
bGQodGhpcy5fY29udGVudEVsZW1lbnQuY2hpbGRyZW5bY2hpbGRdKTsKKwogICAgICAgICB0aGlz
Ll9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKIAogICAg
ICAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkKQEAgLTIwNCwxNiArMjIy
LDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2xhc3NOYW1lID0gImF1ZGl0LWNhdGVnb3JpZXMt
Y29udGFpbmVyIjsKICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY2F0ZWdvcmllc0VsZW1lbnQpOwogCi0gICAgICAgIHZhciBib3VuZENhdGVnb3J5Q2xpY2tM
aXN0ZW5lciA9IHRoaXMuX2NhdGVnb3J5Q2xpY2tlZC5iaW5kKHRoaXMpOwotCi0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgY2F0ZWdvcnlFbGVtZW50ID0gdGhpcy5fY3JlYXRlQ2F0ZWdvcnlFbGVtZW50KHNvcnRl
ZENhdGVnb3JpZXNbaV0uZGlzcGxheU5hbWUsIHNvcnRlZENhdGVnb3JpZXNbaV0uaWQpOwotICAg
ICAgICAgICAgY2F0ZWdvcnlFbGVtZW50LmZpcnN0Q2hpbGQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICAgICAgc29y
dGVkQ2F0ZWdvcmllc1tpXS5fY2hlY2tib3hFbGVtZW50ID0gY2F0ZWdvcnlFbGVtZW50LmZpcnN0
Q2hpbGQ7Ci0gICAgICAgICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5hcHBlbmRDaGlsZChj
YXRlZ29yeUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdG90YWxDYXRlZ29y
aWVzQ291bnQgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsKICAg
ICAgICAgdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9IDA7CiAKICAgICAgICAgdmFyIGZs
ZXhpYmxlU3BhY2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcwppbmRleCAyZjRh
ZmJkLi4yNjM2NDYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVk
aXRSZXN1bHRWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJl
c3VsdFZpZXcuanMKQEAgLTgxLDE1ICs4MSwyMiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29y
eVJlc3VsdFBhbmUgPSBmdW5jdGlvbihjYXRlZ29yeVJlc3VsdCkKIFdlYkluc3BlY3Rvci5BdWRp
dENhdGVnb3J5UmVzdWx0UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX2FwcGVuZFJlc3VsdDogZnVu
Y3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHZhciB0aXRs
ZSA9IHJlc3VsdC52YWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdC52aW9sYXRpb25Db3VudCkKLSAg
ICAgICAgICAgIHRpdGxlID0gU3RyaW5nLnNwcmludGYoIiVzICglZCkiLCB0aXRsZSwgcmVzdWx0
LnZpb2xhdGlvbkNvdW50KTsKKyAgICAgICAgdmFyIHRpdGxlID0gIiI7CisgICAgICAgIAorICAg
ICAgICBpZiAodHlwZW9mIHJlc3VsdC52YWx1ZSA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAg
IHRpdGxlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgaWYgKHJlc3VsdC52aW9sYXRpb25D
b3VudCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFN0cmluZy5zcHJpbnRmKCIlcyAoJWQpIiwg
dGl0bGUsIHJlc3VsdC52aW9sYXRpb25Db3VudCk7CisgICAgICAgIH0KIAogICAgICAgICB2YXIg
dHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsICEhcmVzdWx0LmNoaWxk
cmVuKTsKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQp
OwogCiAgICAgICAgIGlmIChyZXN1bHQuY2xhc3NOYW1lKQogICAgICAgICAgICAgdHJlZUVsZW1l
bnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MocmVzdWx0LmNsYXNzTmFtZSk7CisgICAg
ICAgIGlmICh0eXBlb2YgcmVzdWx0LnZhbHVlICE9PSAic3RyaW5nIikKKyAgICAgICAgICAgIHRy
ZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuYXBwbHlG
b3JtYXR0ZXJzKHJlc3VsdC52YWx1ZSkpOworCiAgICAgICAgIGlmIChyZXN1bHQuY2hpbGRyZW4p
IHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0LmNoaWxkcmVuLmxlbmd0
aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFJlc3VsdCh0cmVlRWxlbWVudCwg
cmVzdWx0LmNoaWxkcmVuW2ldKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9BdWRpdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQ
YW5lbC5qcwppbmRleCBiYzdmM2IzLi5mNmNiZWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC0zMiw4ICszMiw2IEBAIFdlYkluc3BlY3Rvci5BdWRp
dHNQYW5lbCA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlz
LCAiYXVkaXRzIik7CiAKLSAgICB0aGlzLl9jb25zdHJ1Y3RDYXRlZ29yaWVzKCk7Ci0KICAgICB0
aGlzLmNyZWF0ZVNpZGViYXIoKTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50ID0gbmV3IFdl
Ykluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KCIiLCB7fSwgdHJ1ZSk7CiAgICAg
dGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmF1ZGl0c1RyZWVFbGVtZW50KTsKQEAg
LTU0LDcgKzUyLDExIEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAg
ICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudC5pZCA9ICJhdWRpdC12aWV3cyI7CiAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudmlld3NDb250YWluZXJFbGVtZW50KTsKIAotICAg
IHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXco
dGhpcy5jYXRlZ29yaWVzQnlJZCwgdGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhpcykpOworICAg
IHRoaXMuX2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKKworICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcodGhpcy5pbml0aWF0ZUF1ZGl0LmJp
bmQodGhpcykpOworICAgIGZvciAoaWQgaW4gdGhpcy5jYXRlZ29yaWVzQnlJZCkKKyAgICAgICAg
dGhpcy5fbGF1bmNoZXJWaWV3LmFkZENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc0J5SWRbaWRdKTsK
IH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTEwNCw2ICsx
MDYsMTcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fbGF1bmNoZXJWaWV3LnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwogICAgIH0sCiAK
KyAgICBhZGRDYXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkpCisgICAgeworICAgICAgICB0aGlz
LmNhdGVnb3JpZXNCeUlkW2NhdGVnb3J5LmlkXSA9IGNhdGVnb3J5OworICAgICAgICB0aGlzLl9s
YXVuY2hlclZpZXcuYWRkQ2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgIH0sCisKKyAgICBnZXRDYXRl
Z29yeTogZnVuY3Rpb24oaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVz
QnlJZFtpZF07CisgICAgfSwKKwogICAgIF9jb25zdHJ1Y3RDYXRlZ29yaWVzOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9hdWRpdENhdGVnb3JpZXNCeUlkID0ge307CkBAIC0xNDcs
NyArMTYwLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHZhciBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbaV07CiAgICAgICAgICAgICB2YXIgcmVz
dWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0KGNhdGVnb3J5KTsKICAg
ICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOwotICAgICAgICAgICAgY2F0ZWdvcnkucnVu
UnVsZXMocmVzb3VyY2VzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKG51bGwsIHJlc3Vs
dCkpOworICAgICAgICAgICAgY2F0ZWdvcnkucnVuKHJlc291cmNlcywgcnVsZVJlc3VsdFJlYWR5
Q2FsbGJhY2suYmluZChudWxsLCByZXN1bHQpKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTIy
MCw3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IHRoaXMuX2xhdW5jaGVyVmlldzsKICAgICB9
LAotICAgIAorCiAgICAgZ2V0IHZpc2libGVWaWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl92aXNpYmxlVmlldzsKQEAgLTMxMSw3ICszMjQsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRD
YXRlZ29yeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3J1bGVzLnB1c2gocnVsZSk7CiAg
ICAgfSwKIAotICAgIHJ1blJ1bGVzOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrKQorICAg
IHJ1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMu
X2Vuc3VyZUluaXRpYWxpemVkKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
cnVsZXMubGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uQVBJLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
bkFQSS5qcwppbmRleCBhODlkY2YxLi45ZDk5NmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25BUEkuanMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotdmFyIGluamVjdGVkRXh0ZW5zaW9uQVBJID0gZnVuY3Rpb24oSW5qZWN0ZWRTY3Jp
cHRIb3N0LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpCitXZWJJbnNwZWN0b3Iu
aW5qZWN0ZWRFeHRlbnNpb25BUEkgPSBmdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3Bl
Y3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCkKIHsKIAogLy8gSGVyZSBhbmQgYmVsb3csIGFs
bCBjb25zdHJ1Y3RvcnMgYXJlIHByaXZhdGUgdG8gQVBJIGltcGxlbWVudGF0aW9uLgpAQCAtMzcs
MTkgKzM3LDIyIEBAIHZhciBpbmplY3RlZEV4dGVuc2lvbkFQSSA9IGZ1bmN0aW9uKEluamVjdGVk
U2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmplY3RlCiAvLyBieSBGb28gY29uc3V0cmN0
b3IgdG8gcmUtYmluZCBwdWJsaWNseSBleHBvcnRlZCBtZW1iZXJzIHRvIGFuIGluc3RhbmNlCiAv
LyBvZiBGb28uCiAKLWZ1bmN0aW9uIEV2ZW50U2lua0ltcGwodHlwZSkKK2Z1bmN0aW9uIEV2ZW50
U2lua0ltcGwodHlwZSwgY3VzdG9tRGlzcGF0Y2gpCiB7CiAgICAgdGhpcy5fdHlwZSA9IHR5cGU7
CiAgICAgdGhpcy5fbGlzdGVuZXJzID0gW107CisgICAgdGhpcy5fY3VzdG9tRGlzcGF0Y2ggPSBj
dXN0b21EaXNwYXRjaDsKIH0KIAogRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgYWRk
TGlzdGVuZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiBj
YWxsYmFjayAhPSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3ICJhZGRMaXN0ZW5l
cjogY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iOwogICAgICAgICBpZiAodGhpcy5fbGlzdGVu
ZXJzLmxlbmd0aCA9PT0gMCkKICAgICAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVz
dCh7IGNvbW1hbmQ6ICJzdWJzY3JpYmUiLCB0eXBlOiB0aGlzLl90eXBlIH0pOwogICAgICAgICB0
aGlzLl9saXN0ZW5lcnMucHVzaChjYWxsYmFjayk7Ci0gICAgICAgIGV4dGVuc2lvblNlcnZlci5y
ZWdpc3RlckhhbmRsZXIoIm5vdGlmeS0iICsgdGhpcy5fdHlwZSwgYmluZCh0aGlzLl9maXJlLCB0
aGlzKSk7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5yZWdpc3RlckhhbmRsZXIoIm5vdGlmeS0i
ICsgdGhpcy5fdHlwZSwgYmluZCh0aGlzLl9kaXNwYXRjaCwgdGhpcykpOwogICAgIH0sCiAKICAg
ICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24oY2FsbGJhY2spCkBAIC02NiwyNiArNjksMzYgQEAg
RXZlbnRTaW5rSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBleHRlbnNpb25TZXJ2ZXIu
c2VuZFJlcXVlc3QoeyBjb21tYW5kOiAidW5zdWJzY3JpYmUiLCB0eXBlOiB0aGlzLl90eXBlIH0p
OwogICAgIH0sCiAKLSAgICBfZmlyZTogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICBfZmlyZTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycy5z
bGljZSgpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5hcHBseShudWxsLCByZXF1ZXN0LmFyZ3VtZW50
cyk7CisgICAgICAgICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKKyAg
ICB9LAorCisgICAgX2Rpc3BhdGNoOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAgICAgICAg
IGlmICh0aGlzLl9jdXN0b21EaXNwYXRjaCkKKyAgICAgICAgICAgICB0aGlzLl9jdXN0b21EaXNw
YXRjaC5jYWxsKHRoaXMsIHJlcXVlc3QpOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHRo
aXMuX2ZpcmUuYXBwbHkodGhpcywgcmVxdWVzdC5hcmd1bWVudHMpOwogICAgIH0KIH0KIAotZnVu
Y3Rpb24gRXZlbnRTaW5rKHR5cGUpCitmdW5jdGlvbiBFdmVudFNpbmsodHlwZSwgY3VzdG9tRGlz
cGF0Y2gpCiB7Ci0gICAgdmFyIGltcGwgPSBuZXcgRXZlbnRTaW5rSW1wbCh0eXBlKTsKKyAgICB2
YXIgaW1wbCA9IG5ldyBFdmVudFNpbmtJbXBsKHR5cGUsIGN1c3RvbURpc3BhdGNoKTsKICAgICB0
aGlzLmFkZExpc3RlbmVyID0gYmluZChpbXBsLmFkZExpc3RlbmVyLCBpbXBsKTsKICAgICB0aGlz
LnJlbW92ZUxpc3RlbmVyID0gYmluZChpbXBsLnJlbW92ZUxpc3RlbmVyLCBpbXBsKTsKIH0KIAog
ZnVuY3Rpb24gSW5zcGVjdG9yRXh0ZW5zaW9uQVBJKCkKIHsKKyAgICB0aGlzLmF1ZGl0cyA9IG5l
dyBBdWRpdHMoKTsKICAgICB0aGlzLmluc3BlY3RlZFdpbmRvdyA9IG5ldyBJbnNwZWN0ZWRXaW5k
b3coKTsKICAgICB0aGlzLnBhbmVscyA9IG5ldyBQYW5lbHMoKTsKICAgICB0aGlzLnJlc291cmNl
cyA9IG5ldyBSZXNvdXJjZXMoKTsKKwogICAgIHRoaXMub25SZXNldCA9IG5ldyBFdmVudFNpbmso
InJlc2V0Iik7CiB9CiAKQEAgLTEyNSw3ICsxMzgsNyBAQCBmdW5jdGlvbiBQYW5lbHMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHBhbmVsc1tuYW1lXTsKICAgICB9Ci0gICAgCisKICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHdlbGxLbm93blBhbmVsTmFtZXMubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgdmFyIG5hbWUgPSB3ZWxsS25vd25QYW5lbE5hbWVzW2ldOwogICAgICAgICBwYW5lbHNbbmFt
ZV0gPSBuZXcgUGFuZWwobmFtZSk7CkBAIC0xNTEsNyArMTY0LDcgQEAgUGFuZWxzLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCwKICAg
ICAgICAgICAgIHVybDogZXhwYW5kVVJMKHBhZ2VVUkwpLAotICAgICAgICAgICAgaWNvbjogZXhw
YW5kVVJMKGljb25VUkwpIAorICAgICAgICAgICAgaWNvbjogZXhwYW5kVVJMKGljb25VUkwpCiAg
ICAgICAgIH07CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdChyZXF1ZXN0LCBj
YWxsYmFjayAmJiBiaW5kKGNhbGxiYWNrV3JhcHBlciwgdGhpcykpOwogICAgIH0KQEAgLTIxOSw2
ICsyMzIsMTI0IEBAIGZ1bmN0aW9uIEV4dGVuc2lvblNpZGViYXJQYW5lKGlkKQogICAgIHRoaXMu
c2V0RXhwYW5kZWQgPSBiaW5kKGltcGwuc2V0RXhwYW5kZWQsIGltcGwpOwogfQogCitmdW5jdGlv
biBBdWRpdHMoKQoreworfQorCitBdWRpdHMucHJvdG90eXBlID0geworICAgIGFkZENhdGVnb3J5
OiBmdW5jdGlvbihkaXNwbGF5TmFtZSwgcnVsZUNvdW50KQorICAgIHsKKyAgICAgICAgdmFyIGlk
ID0gImV4dGVuc2lvbi1hdWRpdC1jYXRlZ29yeS0iICsgZXh0ZW5zaW9uU2VydmVyLm5leHRPYmpl
Y3RJZCgpOworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAi
YWRkQXVkaXRDYXRlZ29yeSIsIGlkOiBpZCwgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLCBydWxl
Q291bnQ6IHJ1bGVDb3VudCB9KTsKKyAgICAgICAgcmV0dXJuIG5ldyBBdWRpdENhdGVnb3J5KGlk
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdvcnkoaWQpCit7CisgICAgZnVuY3Rp
b24gY3VzdG9tRGlzcGF0Y2gocmVxdWVzdCkKKyAgICB7CisgICAgICAgIHZhciBhdWRpdFJlc3Vs
dCA9IG5ldyBBdWRpdFJlc3VsdChyZXF1ZXN0LmFyZ3VtZW50c1swXSk7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICB0aGlzLl9maXJlKGF1ZGl0UmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGV4
dGVuc2lvbiBhdWRpdCBldmVudCBoYW5kbGVyOiAiICsgZSk7CisgICAgICAgICAgICBhdWRpdFJl
c3VsdC5kb25lKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdmFyIGltcGwgPSBuZXcgQXVkaXRD
YXRlZ29yeUltcGwoaWQpOworICAgIHRoaXMub25BdWRpdFN0YXJ0ZWQgPSBuZXcgRXZlbnRTaW5r
KCJhdWRpdC1zdGFydGVkLSIgKyBpZCwgY3VzdG9tRGlzcGF0Y2gpOworfQorCitmdW5jdGlvbiBB
dWRpdENhdGVnb3J5SW1wbChpZCkKK3sKKyAgICB0aGlzLl9pZCA9IGlkOworfQorCitmdW5jdGlv
biBBdWRpdFJlc3VsdChpZCkKK3sKKyAgICB2YXIgaW1wbCA9IG5ldyBBdWRpdFJlc3VsdEltcGwo
aWQpOworCisgICAgdGhpcy5hZGRSZXN1bHQgPSBiaW5kKGltcGwuYWRkUmVzdWx0LCBpbXBsKTsK
KyAgICB0aGlzLmNyZWF0ZVJlc3VsdCA9IGJpbmQoaW1wbC5jcmVhdGVSZXN1bHQsIGltcGwpOwor
ICAgIHRoaXMuZG9uZSA9IGJpbmQoaW1wbC5kb25lLCBpbXBsKTsKKworICAgIHZhciBmb3JtYXR0
ZXJUeXBlcyA9IFsKKyAgICAgICAgInVybCIsCisgICAgICAgICJzbmlwcGV0IiwKKyAgICAgICAg
InRleHQiCisgICAgXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlclR5cGVzLmxl
bmd0aDsgKytpKQorICAgICAgICB0aGlzW2Zvcm1hdHRlclR5cGVzW2ldXSA9IGJpbmQoaW1wbC5f
bm9kZUZhY3RvcnksIG51bGwsIGZvcm1hdHRlclR5cGVzW2ldKTsKK30KKworQXVkaXRSZXN1bHQu
cHJvdG90eXBlID0geworICAgIGdldCBTZXZlcml0eSgpCisgICAgeworICAgICAgICByZXR1cm4g
cHJpdmF0ZS5hdWRpdHMuU2V2ZXJpdHk7CisgICAgfQorfQorCitmdW5jdGlvbiBBdWRpdFJlc3Vs
dEltcGwoaWQpCit7CisgICAgdGhpcy5faWQgPSBpZDsKK30KKworQXVkaXRSZXN1bHRJbXBsLnBy
b3RvdHlwZSA9IHsKKyAgICBhZGRSZXN1bHQ6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBkZXNjcmlw
dGlvbiwgc2V2ZXJpdHksIGRldGFpbHMpCisgICAgeworICAgICAgICAvLyBzaG9ydGhhbmQgZm9y
IHNwZWNpZnlpbmcgZGV0YWlscyBkaXJlY3RseSBpbiBhZGRSZXN1bHQoKS4KKyAgICAgICAgaWYg
KGRldGFpbHMgJiYgIShkZXRhaWxzIGluc3RhbmNlb2YgQXVkaXRSZXN1bHROb2RlKSkKKyAgICAg
ICAgICAgIGRldGFpbHMgPSBkZXRhaWxzIGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLmNyZWF0ZU5v
ZGUuYXBwbHkodGhpcywgZGV0YWlscykgOiB0aGlzLmNyZWF0ZU5vZGUoZGV0YWlscyk7CisKKyAg
ICAgICAgdmFyIHJlcXVlc3QgPSB7CisgICAgICAgICAgICBjb21tYW5kOiAiYWRkQXVkaXRSZXN1
bHQiLAorICAgICAgICAgICAgcmVzdWx0SWQ6IHRoaXMuX2lkLAorICAgICAgICAgICAgZGlzcGxh
eU5hbWU6IGRpc3BsYXlOYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgc2V2ZXJpdHk6IHNldmVyaXR5LAorICAgICAgICAgICAgZGV0YWlsczog
ZGV0YWlscworICAgICAgICB9OworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3Qo
cmVxdWVzdCk7CisgICAgfSwKKworICAgIGNyZWF0ZVJlc3VsdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIG5vZGUgPSBuZXcgQXVkaXRSZXN1bHROb2RlKCk7CisgICAgICAgIG5vZGUu
Y29udGVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOworICAgICAg
ICByZXR1cm4gbm9kZTsKKyAgICB9LAorCisgICAgZG9uZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInN0b3BBdWRpdENh
dGVnb3J5UnVuIiwgcmVzdWx0SWQ6IHRoaXMuX2lkIH0pOworICAgIH0sCisKKyAgICBfbm9kZUZh
Y3Rvcnk6IGZ1bmN0aW9uKHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgdHlwZTogdHlwZSwKKyAgICAgICAgICAgIGFyZ3VtZW50czogQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoYXJndW1lbnRzLCAxKQorICAgICAgICB9OworICAgIH0KK30KKworZnVuY3Rpb24g
QXVkaXRSZXN1bHROb2RlKGNvbnRlbnRzKQoreworICAgIHRoaXMuY29udGVudHMgPSBjb250ZW50
czsKKyAgICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOwor
fQorCitBdWRpdFJlc3VsdE5vZGUucHJvdG90eXBlID0geworICAgIGFkZENoaWxkOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IEF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5cGUu
Y3JlYXRlUmVzdWx0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgICAgIHRoaXMuY2hpbGRy
ZW4ucHVzaChub2RlKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorfTsKKwogZnVuY3Rp
b24gSW5zcGVjdGVkV2luZG93KCkKIHsKICAgICB0aGlzLm9uTG9hZGVkID0gbmV3IEV2ZW50U2lu
aygiaW5zcGVjdGVkUGFnZUxvYWRlZCIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41ZDE1NWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKQEAgLTAsMCArMSwxMTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeSA9IGZ1bmN0aW9uKGlkLCBkaXNwbGF5
TmFtZSwgcnVsZUNvdW50KQoreworICAgIHRoaXMuX2lkID0gaWQ7CisgICAgdGhpcy5fZGlzcGxh
eU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICB0aGlzLl9ydWxlQ291bnQgID0gcnVsZUNvdW50Owor
fQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7Cisg
ICAgLy8gQXVkaXRDYXRlZ29yeSBpbnRlcmZhY2UKKyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAgICBnZXQgZGlzcGxheU5hbWUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOworICAgIH0sCisKKyAgICBnZXQg
cnVsZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ydWxlQ291bnQ7CisgICAg
fSwKKworICAgIHJ1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHModGhpcywg
Y2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnlSZXN1bHRzID0gZnVuY3Rpb24oY2F0ZWdvcnksIGNhbGxiYWNrKQoreworICAgIHRoaXMuX2Nh
dGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgdGhpcy5fcGVuZGluZ1J1bGVzID0gY2F0ZWdvcnkucnVs
ZUNvdW50OworICAgIHRoaXMuX3J1bGVDb21wbGV0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjazsKKwor
ICAgIHRoaXMuaWQgPSBjYXRlZ29yeS5pZCArICItIiArICsrV2ViSW5zcGVjdG9yLkV4dGVuc2lv
bkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLl9sYXN0SWQ7CisgICAgV2ViSW5zcGVjdG9yLmV4dGVuc2lv
blNlcnZlci5zdGFydEF1ZGl0UnVuKGNhdGVnb3J5LCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9y
LkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZSA9IHsKKyAgICBnZXQgY29t
cGxldGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9wZW5kaW5nUnVsZXM7CisgICAg
fSwKKworICAgIGNhbmNlbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCF0aGlz
LmNvbXBsZXRlKQorICAgICAgICAgICAgdGhpcy5fYWRkUmVzdWx0KG51bGwpOworICAgIH0sCisK
KyAgICBhZGRSZXN1bHQ6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBkZXNjcmlwdGlvbiwgc2V2ZXJp
dHksIGRldGFpbHMpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rv
ci5BdWRpdFJ1bGVSZXN1bHQoZGlzcGxheU5hbWUpOworICAgICAgICByZXN1bHQuYWRkQ2hpbGQo
ZGVzY3JpcHRpb24pOworICAgICAgICByZXN1bHQuc2V2ZXJpdHkgPSBzZXZlcml0eTsKKyAgICAg
ICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICB0aGlzLl9hZGROb2RlKHJlc3VsdCwgZGV0YWls
cyk7CisgICAgICAgIHRoaXMuX2FkZFJlc3VsdChyZXN1bHQpOworICAgIH0sCisKKyAgICBfYWRk
Tm9kZTogZnVuY3Rpb24ocGFyZW50LCBub2RlKQorICAgIHsKKyAgICAgICAgdmFyIGFkZGVkTm9k
ZSA9IHBhcmVudC5hZGRDaGlsZChub2RlLmNvbnRlbnRzLCBub2RlLmV4cGFuZGVkKTsKKyAgICAg
ICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGROb2Rl
KGFkZGVkTm9kZSwgbm9kZS5jaGlsZHJlbltpXSk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAg
X2FkZFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAgdGhpcy5fcnVsZUNv
bXBsZXRpb25DYWxsYmFjayhyZXN1bHQpOworICAgICAgICB0aGlzLl9wZW5kaW5nUnVsZXMtLTsK
KyAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUnVsZXMpCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZXh0ZW5zaW9uU2VydmVyLnN0b3BBdWRpdFJ1bih0aGlzKTsKKyAgICB9Cit9CisKK1dlYklu
c3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5fbGFzdElkID0gMDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24uanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YTc4MTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXZWJJbnNwZWN0b3IuY29tbW9uRXh0ZW5zaW9uU3ltYm9scyA9IGZ1bmN0aW9uKHByaXZhdGUp
Cit7CisgICAgCisgICAgaWYgKCFwcml2YXRlLmF1ZGl0cykKKyAgICAgICAgcHJpdmF0ZS5hdWRp
dHMgPSB7fTsKKworICAgIHByaXZhdGUuYXVkaXRzLlNldmVyaXR5ID0geworICAgICAgICBpbmZv
OiAiaW5mbyIsCisgICAgICAgIHdhcm5pbmc6ICJ3YXJuaW5nIiwKKyAgICAgICAgc2V2ZXJlOiAi
c2V2ZXJlIgorICAgIH07Cit9CisKK1dlYkluc3BlY3Rvci5leHRlbnNpb25BUEkgPSB7fTsKKwor
V2ViSW5zcGVjdG9yLmNvbW1vbkV4dGVuc2lvblN5bWJvbHMoV2ViSW5zcGVjdG9yLmV4dGVuc2lv
bkFQSSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9u
U2VydmVyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
cwppbmRleCA5NWYzNzNmLi4wZmYwMzVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTQwLDExICs0MCwxNSBAQCBXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU2VydmVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigi
Z2V0UmVzb3VyY2VzIiwgdGhpcy5fb25HZXRSZXNvdXJjZXMuYmluZCh0aGlzKSk7CiAgICAgdGhp
cy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVQYW5lbCIsIHRoaXMuX29uQ3JlYXRlUGFuZWwuYmlu
ZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVTaWRlYmFyUGFuZSIs
IHRoaXMuX29uQ3JlYXRlU2lkZWJhci5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9yZWdpc3Rlckhh
bmRsZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOyAKKyAgICB0aGlzLl9yZWdpc3Rl
ckhhbmRsZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lz
dGVySGFuZGxlcigiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9vbkV2YWx1YXRlT25J
bnNwZWN0ZWRQYWdlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic2V0
U2lkZWJhckhlaWdodCIsIHRoaXMuX29uU2V0U2lkZWJhckhlaWdodC5iaW5kKHRoaXMpKTsKICAg
ICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNldFNpZGViYXJFeHBhbmRlZCIsIHRoaXMuX29uU2V0
U2lkZWJhckV4cGFuc2lvbi5iaW5kKHRoaXMpKTsKIAorICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxl
cigiYWRkQXVkaXRDYXRlZ29yeSIsIHRoaXMuX29uQWRkQXVkaXRDYXRlZ29yeS5iaW5kKHRoaXMp
KTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImFkZEF1ZGl0UmVzdWx0IiwgdGhpcy5fb25B
ZGRBdWRpdFJlc3VsdC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInN0
b3BBdWRpdENhdGVnb3J5UnVuIiwgdGhpcy5fb25TdG9wQXVkaXRDYXRlZ29yeVJ1bi5iaW5kKHRo
aXMpKTsKKwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25X
aW5kb3dNZXNzYWdlLmJpbmQodGhpcyksIGZhbHNlKTsKIH0KIApAQCAtODQsNiArODgsMTcgQEAg
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3Bvc3ROb3RpZmljYXRpb24oInJlc2V0Iik7CiAgICAgfSwKIAorICAgIHN0YXJ0QXVkaXRSdW46
IGZ1bmN0aW9uKGNhdGVnb3J5LCBhdWRpdFJ1bikKKyAgICB7CisgICAgICAgIHRoaXMuX2NsaWVu
dE9iamVjdHNbYXVkaXRSdW4uaWRdID0gYXVkaXRSdW47CisgICAgICAgIHRoaXMuX3Bvc3ROb3Rp
ZmljYXRpb24oImF1ZGl0LXN0YXJ0ZWQtIiArIGNhdGVnb3J5LmlkLCBhdWRpdFJ1bi5pZCk7Cisg
ICAgfSwKKworICAgIHN0b3BBdWRpdFJ1bjogZnVuY3Rpb24oYXVkaXRSdW4pCisgICAgeworICAg
ICAgICBkZWxldGUgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF07CisgICAgfSwKKwog
ICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHsKQEAgLTEwMCw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSB7CiAgICAgICAgICAgICBjb21tYW5kOiAibm90aWZ5LSIgKyB0eXBlLAotICAgICAgICAgICAg
YXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpIAorICAg
ICAgICAgICAgYXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMs
IDEpCiAgICAgICAgIH07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2NyaWJlcnMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBzdWJzY3JpYmVyc1tpXS5wb3N0TWVzc2FnZShtZXNz
YWdlKTsKQEAgLTI0OCw2ICsyNjMsMzYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsKICAgICB9LAogCisgICAgX29u
QWRkQXVkaXRDYXRlZ29yeTogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICB7CisgICAgICAgIHZhciBj
YXRlZ29yeSA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeShyZXF1ZXN0
LmlkLCByZXF1ZXN0LmRpc3BsYXlOYW1lLCByZXF1ZXN0LnJ1bGVDb3VudCk7CisgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5nZXRDYXRlZ29yeShjYXRlZ29yeS5pZCkpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRVhJU1RTKGNhdGVnb3J5LmlkKTsKKyAg
ICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LmlkXSA9IGNhdGVnb3J5OworICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7CisgICAg
fSwKKworICAgIF9vbkFkZEF1ZGl0UmVzdWx0OiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAg
ICAgICAgdmFyIGF1ZGl0UmVzdWx0ID0gdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LnJlc3Vs
dElkXTsKKyAgICAgICAgaWYgKCFhdWRpdFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9zdGF0dXMuRV9OT1RGT1VORChyZXF1ZXN0LnJlc3VsdElkKTsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIGF1ZGl0UmVzdWx0LmFkZFJlc3VsdChyZXF1ZXN0LmRpc3BsYXlOYW1lLCByZXF1
ZXN0LmRlc2NyaXB0aW9uLCByZXF1ZXN0LnNldmVyaXR5LCByZXF1ZXN0LmRldGFpbHMpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9LKCk7CisgICAgfSwKKworICAgIF9vblN0b3BBdWRp
dENhdGVnb3J5UnVuOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdmFyIGF1ZGl0
UnVuID0gdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LnJlc3VsdElkXTsKKyAgICAgICAgaWYg
KCFhdWRpdFJ1bikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChy
ZXF1ZXN0LnJlc3VsdElkKTsKKyAgICAgICAgYXVkaXRSdW4uY2FuY2VsKCk7CisgICAgfSwKKwog
ICAgIGluaXRFeHRlbnNpb25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JF
eHRlbnNpb25SZWdpc3RyeS5nZXRFeHRlbnNpb25zQXN5bmMoKTsKQEAgLTI1NSw3ICszMDAsOCBA
QCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9hZGRF
eHRlbnNpb25zOiBmdW5jdGlvbihleHRlbnNpb25zKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LnNldEV4dGVuc2lvbkFQSSgiKCIgKyBpbmplY3RlZEV4dGVuc2lvbkFQSS50
b1N0cmluZygpICsgIikiKTsgLy8gU2VlIEV4dGVuc2lvbkFQSS5qcyBmb3IgZGV0YWlscy4KKyAg
ICAgICAgLy8gU2VlIEV4dGVuc2lvbkFQSS5qcyBhbmQgRXh0ZW5zaW9uQ29tbW9uLmpzIGZvciBk
ZXRhaWxzLgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0RXh0ZW5zaW9uQVBJKHRo
aXMuX2J1aWxkRXh0ZW5zaW9uQVBJSW5qZWN0ZWRTY3JpcHQoKSk7CiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGV4
dGVuc2lvbiA9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB0cnkgewpAQCAtMjcxLDYgKzMx
NywxNSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogICAgIH0sCiAKKyAgICBfYnVpbGRFeHRlbnNpb25BUElJbmplY3RlZFNjcmlwdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIoZnVuY3Rpb24oKXsgIiArCisgICAgICAg
ICAgICAidmFyIHByaXZhdGUgPSB7fTsiICsKKyAgICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rv
ci5jb21tb25FeHRlbnNpb25TeW1ib2xzLnRvU3RyaW5nKCkgKyAiKShwcml2YXRlKTsiICsKKyAg
ICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS50b1N0cmlu
ZygpICsgIikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsiICsKKyAgICAgICAgICAgICJ9KSI7Cisg
ICAgfSwKKwogICAgIF9vbldpbmRvd01lc3NhZ2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEgIT09ICJyZWdpc3RlckV4dGVuc2lvbiIpCkBAIC0zMDAsMTIg
KzM1NSwxNCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAg
ICB9CiB9CiAKLVdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2VzID0gCitXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLl9zdGF0dXNlcyA9CiB7CiAgICAgT0s6ICIiLAotICAg
IEVfTk9URk9VTkQ6ICJPYmplY3Qgbm90IGZvdW5kICglcykiLAotICAgIEVfTk9UU1VQUE9SVEVE
OiAiT2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJhdGlvbiAoJXMpIiwKLSAg
ICBFX0VYSVNUUzogIk9iamVjdCBhbHJlYWR5IGV4aXN0cyAoJXMpIgorICAgIEVfRVhJU1RTOiAi
T2JqZWN0IGFscmVhZHkgZXhpc3RzOiAlcyIsCisgICAgRV9CQURBUkc6ICJJbnZhbGlkIGFyZ3Vt
ZW50ICVzOiAlcyIsCisgICAgRV9CQURBUkdUWVBFOiAiSW52YWxpZCB0eXBlIGZvciBhcmd1bWVu
dCAlczogZ290ICVzLCBleHBlY3RlZCAlcyIsCisgICAgRV9OT1RGT1VORDogIk9iamVjdCBub3Qg
Zm91bmQ6ICVzIiwKKyAgICBFX05PVFNVUFBPUlRFRDogIk9iamVjdCBkb2VzIG5vdCBzdXBwb3J0
IHJlcXVlc3RlZCBvcGVyYXRpb246ICVzIiwKIH0KIAogV2ViSW5zcGVjdG9yLkV4dGVuc2lvblN0
YXR1cyA9IGZ1bmN0aW9uKCkKQEAgLTMxOSw3ICszNzYsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU3RhdHVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgc3RhdHVzLmlzRXJyb3IgPSB0cnVl
OwogICAgICAgICAgICAgY29uc29sZS5sb2coIkV4dGVuc2lvbiBzZXJ2ZXIgZXJyb3I6ICIgKyBT
dHJpbmcudnNwcmludGYoZGVzY3JpcHRpb24sIGRldGFpbHMpKTsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm4gc3RhdHVzOyAKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9CiAgICAgZm9y
IChzdGF0dXMgaW4gV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5fc3RhdHVzZXMpCiAgICAg
ICAgIHRoaXNbc3RhdHVzXSA9IG1ha2VTdGF0dXMuYmluZChudWxsLCBzdGF0dXMpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA0OTAxODU3Li5jNjUxMTVmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNCw2ICs0LDcgQEAKICAgICA8
ZmlsZT5BYnN0cmFjdFRpbWVsaW5lUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXBwbGljYXRp
b25DYWNoZUl0ZW1zVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdENhdGVnb3JpZXMuanM8
L2ZpbGU+CisgICAgPGZpbGU+QXVkaXRGb3JtYXR0ZXJzLmpzPC9maWxlPgogICAgIDxmaWxlPkF1
ZGl0TGF1bmNoZXJWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0UmVzdWx0Vmlldy5qczwv
ZmlsZT4KICAgICA8ZmlsZT5BdWRpdFJ1bGVzLmpzPC9maWxlPgpAQCAtMzUsNiArMzYsOCBAQAog
ICAgIDxmaWxlPkVsZW1lbnRzVHJlZU91dGxpbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXZlbnRM
aXN0ZW5lcnNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25BUEkuanM8
L2ZpbGU+CisgICAgPGZpbGU+RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qczwvZmlsZT4KKyAgICA8
ZmlsZT5FeHRlbnNpb25Db21tb24uanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUGFuZWwu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxlPgogICAg
IDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAxNGUyY2RjLi4zYTNlMzFiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC05OCw2ICs5OCw4IEBAIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmlsZXNQYW5l
bC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Q29uc29sZVBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJFeHRlbnNpb25BUEkuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvbkNvbW1v
bi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
RXh0ZW5zaW9uU2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25QYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRzUGFuZWwuanMiPjwvc2NyaXB0PgpAQCAt
MTA1LDYgKzEwNyw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQXVkaXRMYXVuY2hlclZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkF1ZGl0UnVsZXMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkF1ZGl0Q2F0ZWdvcmllcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRGb3Jt
YXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TeW50YXhIaWdobGlnaHRlci5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA2NmNmMjg0
Li5lOGFkZmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAg
LTczMiwxMiArNzMyLDYgQEAgQXJyYXkuY29udmVydCA9IGZ1bmN0aW9uKGxpc3QpCiAKIGZ1bmN0
aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihhbk9iamVj
dCwgYUxpc3QsIGFGdW5jdGlvbikKIHsKLSAgICAvLyBpbmRleE9mIHJldHVybnMgKC1sb3dlckJv
dW5kIC0gMSkuIFRha2luZyAoLXJlc3VsdCAtIDEpIHdvcmtzIG91dCB0byBsb3dlckJvdW5kLgot
ICAgIHJldHVybiAoLWluZGV4T2ZPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0
LCBhTGlzdCwgYUZ1bmN0aW9uKSAtIDEpOwotfQotCi1mdW5jdGlvbiBpbmRleE9mT2JqZWN0SW5M
aXN0U29ydGVkQnlGdW5jdGlvbihhbk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKLXsKICAgICB2
YXIgZmlyc3QgPSAwOwogICAgIHZhciBsYXN0ID0gYUxpc3QubGVuZ3RoIC0gMTsKICAgICB2YXIg
Zmxvb3IgPSBNYXRoLmZsb29yOwpAQCAtNzYwLDkgKzc1NCw3IEBAIGZ1bmN0aW9uIGluZGV4T2ZP
YmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0LCBhTGlzdCwgYUZ1bmN0aW9uKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQnkgcmV0dXJuaW5nIDEgbGVzcyB0aGFuIHRoZSBu
ZWdhdGl2ZSBsb3dlciBzZWFyY2ggYm91bmQsIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0aW9uCi0g
ICAgLy8gZm9yIGJvdGggaW5kZXhPZiBhbmQgaW5zZXJ0aW9uSW5kZXhGb3IsIHdpdGggc29tZSBz
aW1wbGUgYXJpdGhtZXRpYy4KLSAgICByZXR1cm4gKC1maXJzdCAtIDEpOworICAgIHJldHVybiBm
aXJzdDsKIH0KIAogU3RyaW5nLnNwcmludGYgPSBmdW5jdGlvbihmb3JtYXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65575</attachid>
            <date>2010-08-26 09:26:12 -0700</date>
            <delta_ts>2010-08-31 01:39:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extension-audits.patch</filename>
            <type>text/plain</type>
            <size>58135</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMjRjMmJhLi4wYTg5MWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDgt
MjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVk
aXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMt
cGFuZWwtZnVuY3Rpb25hbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtdGVzdHMu
anM6IEFkZGVkLgorICAgICAgICAoZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cyk6CisgICAg
ICAgIChmcm9udGVuZF9jb2xsZWN0VGV4dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9l
eHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9l
eHRlbnNpb25zLWF1ZGl0cy1hcGkuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2V4
dGVuc2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9y
L2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4dGVuc2lvbl9y
dW5BdWRpdHMub25NZXNzYWdlKToKKyAgICAgICAgKGV4dGVuc2lvbl9ydW5BdWRpdHMpOgorICAg
ICAgICAoZnJvbnRlbmRfcnVuRXh0ZW5zaW9uQXVkaXRzLm9uQXVkaXRzRG9uZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVz
b3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0wOC0yNiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25h
bC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0
bWwKaW5kZXggNzE1MzdmNC4uZTdhMjgwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2F1ZGl0cy1wYW5lbC1mdW5jdGlvbmFsLmh0bWwKQEAgLTcsMTIgKzcsMTIgQEAKIH0KIDwv
c3R5bGU+CiA8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+
CiAKIDwhLS0gVGhlc2Ugc2NyaXB0cyBhcmUgbmVlZGVkIHRvIHJlc3VsdCBpbiBhIHZpb2xhdGlv
biBvZiB0aGUgbWF4IEpTIHJlc291cmNlIGNvdW50IGZyb20gdGhlIHNhbWUgZG9tYWluIC0tPgog
PHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0MS5qcyI+PC9zY3JpcHQ+CiA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9hdWRpdHMtc3R5bGUxLmNzcyIgdHlw
ZT0idGV4dC9jc3MiPgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0Mi5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGRvaXQoKQpAQCAtNTAsMTQgKzUwLDcgQEAgZnVu
Y3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9sbGVyKQogCiAgICAgICAgIHRlc3RD
b250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAvLyBBdWRpdHMgYXJlIGRvbmUsIGNoZWNrIHJlc3VsdHMuCi0gICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3IucGFuZWxzLmF1
ZGl0cy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRzKTsKLSAgICAg
ICAgICAgIHZhciBsaUVsZW1lbnRzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMudmlzaWJs
ZVZpZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKTsKLSAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7ICsraikgewotICAgICAgICAgICAg
ICAgIGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBs
aUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdmFyIG91dHB1dCA9IFtdOwotICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVjdFRleHRD
b250ZW50KFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVsZW1lbnQsIDAs
IG91dHB1dCk7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gZnJvbnRlbmRfY29sbGVjdEF1ZGl0
UmVzdWx0cygpOwogICAgICAgICAgICAgLy8gQXZvaWQgaW5mbHVlbmNpbmcgdGVzdHMgdGhhdCBy
ZXF1aXJlIHJlc291cmNlIHRyYWNraW5nIHRvIGJlIGRpc2FibGVkLgogICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7CiAgICAgICAgICAg
ICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgewpA
QCAtNjksMjkgKzYyLDYgQEAgZnVuY3Rpb24gZnJvbnRlbmRfcnVuQXVkaXRzKHRlc3RDb250cm9s
bGVyKQogICAgIH0KIH0KIAotZnVuY3Rpb24gZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50KGVs
ZW1lbnQsIGxldmVsLCBvdXRwdXQpCi17Ci0gICAgdmFyIG5vZGVPdXRwdXQgPSAiIjsKLSAgICB2
YXIgY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7Ci0gICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAg
ICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKLSAgICAgICAgICAgICAgICBub2RlT3V0
cHV0ICs9ICIgIjsKLSAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0gY2hpbGQubm9kZVZhbHVlOwot
ICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkg
ewotICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7Ci0gICAgICAgICAgICAgICAg
b3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Ci0gICAgICAgICAgICAgICAgbm9kZU91dHB1dCA9ICIi
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVjdFRleHRDb250ZW50
KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2hpbGQgPSBj
aGlsZC5uZXh0U2libGluZzsKLSAgICB9Ci0gICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKQotICAg
ICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKLSAgICByZXR1cm47Ci19Ci0KIDwvc2NyaXB0
PgogPC9oZWFkPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXRl
c3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDJjNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0cy10ZXN0cy5qcwpAQCAtMCwwICsxLDM1IEBACitmdW5j
dGlvbiBmcm9udGVuZF9jb2xsZWN0QXVkaXRSZXN1bHRzKCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cy5zaG93UmVzdWx0cyhXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hdWRp
dFJlc3VsdHNUcmVlRWxlbWVudC5jaGlsZHJlblswXS5yZXN1bHRzKTsKKyAgICB2YXIgbGlFbGVt
ZW50cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVsZW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImxpIik7CisgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaUVsZW1l
bnRzLmxlbmd0aDsgKytqKSB7CisgICAgICAgIGlmIChsaUVsZW1lbnRzW2pdLnRyZWVFbGVtZW50
KQorICAgICAgICAgICAgbGlFbGVtZW50c1tqXS50cmVlRWxlbWVudC5leHBhbmQoKTsKKyAgICB9
CisgICAgdmFyIG91dHB1dCA9IFtdOworICAgIGZyb250ZW5kX2NvbGxlY3RUZXh0Q29udGVudChX
ZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5lbGVtZW50LCAwLCBvdXRwdXQp
OworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK2Z1bmN0aW9uIGZyb250ZW5kX2NvbGxlY3RUZXh0
Q29udGVudChlbGVtZW50LCBsZXZlbCwgb3V0cHV0KQoreworICAgIHZhciBub2RlT3V0cHV0ID0g
IiI7CisgICAgdmFyIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkOworCisgICAgd2hpbGUgKGNo
aWxkKSB7CisgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKKyAgICAgICAgICAg
ICAgICBub2RlT3V0cHV0ICs9ICIgIjsKKyAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0gY2hpbGQu
bm9kZVZhbHVlOworICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVM
RU1FTlRfTk9ERSkgeworICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7CisgICAg
ICAgICAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7CisgICAgICAgICAgICAgICAgbm9k
ZU91dHB1dCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJvbnRlbmRfY29sbGVj
dFRleHRDb250ZW50KGNoaWxkLCBsZXZlbCArIDEsIG91dHB1dCk7CisgICAgICAgIH0KKyAgICAg
ICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKKyAgICB9CisgICAgaWYgKG5vZGVPdXRwdXQg
IT09ICIiKQorICAgICAgICBvdXRwdXQucHVzaChub2RlT3V0cHV0KTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CmluZGV4IDM1YTk5
ZDIuLmMwNzQ3MWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25z
LWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMt
YXBpLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDkgQEAgU3RhcnRlZCBleHRlbnNpb24uCiBSdW5u
aW5nIHRlc3RzLi4uCiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QVBJCiB7CisgICAgYXVk
aXRzIDogeworICAgICAgICBhZGRDYXRlZ29yeSA6IDxmdW5jdGlvbj4KKyAgICB9CiAgICAgaW5z
cGVjdGVkV2luZG93IDogewogICAgICAgICBvbkxvYWRlZCA6IHsKICAgICAgICAgICAgIGFkZExp
c3RlbmVyIDogPGZ1bmN0aW9uPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4xOWYzMWJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBA
QAorVGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVjdG9yIEV4dGVuc2lvbnMgQVBJCisK
K1N0YXJ0ZWQgZXh0ZW5zaW9uLgorUnVubmluZyB0ZXN0cy4uLgorUlVOTklORyBURVNUOiBleHRl
bnNpb25fdGVzdEF1ZGl0c0FQSQorQWRkZWQgYXVkaXQgY2F0ZWdvcnksIHJlc3VsdCBkdW1wIGZv
bGxvd3M6Cit7CisgICAgb25BdWRpdFN0YXJ0ZWQgOiB7CisgICAgICAgIGFkZExpc3RlbmVyIDog
PGZ1bmN0aW9uPgorICAgICAgICByZW1vdmVMaXN0ZW5lciA6IDxmdW5jdGlvbj4KKyAgICB9Cit9
CitjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgcmVzdWx0cyBkdW1wIGZvbGxvd3M6Cit7
CisgICAgYWRkUmVzdWx0IDogPGZ1bmN0aW9uPgorICAgIGNyZWF0ZVJlc3VsdCA6IDxmdW5jdGlv
bj4KKyAgICBkb25lIDogPGZ1bmN0aW9uPgorICAgIHVybCA6IDxmdW5jdGlvbj4KKyAgICBzbmlw
cGV0IDogPGZ1bmN0aW9uPgorICAgIHRleHQgOiA8ZnVuY3Rpb24+CisgICAgU2V2ZXJpdHkgOiB7
CisgICAgICAgIEluZm8gOiAiaW5mbyIKKyAgICAgICAgV2FybmluZyA6ICJ3YXJuaW5nIgorICAg
ICAgICBTZXZlcmUgOiAic2V2ZXJlIgorICAgIH0KK30KK3sKKyAgICBjb250ZW50cyA6IHsKKyAg
ICAgICAgMCA6ICJTdWJ0cmVlIgorICAgIH0KKyAgICBjaGlsZHJlbiA6IHsKKyAgICB9CisgICAg
ZXhwYW5kZWQgOiBmYWxzZQorICAgIGFkZENoaWxkIDogPGZ1bmN0aW9uPgorfQorQXVkaXRzIGNv
bXBsZXRlOgorICBFeHRlbnNpb24gYXVkaXRzCitBbGwgdGVzdHMgZG9uZS4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3ZjYyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZXh0ZW5zaW9ucy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBleHRlbnNpb25fdGVz
dEF1ZGl0c0FQSShuZXh0VGVzdCkKK3sKKyAgICBmdW5jdGlvbiBvblN0YXJ0QXVkaXRDYXRlZ29y
eShyZXN1bHRzKQorICAgIHsKKyAgICAgICAgbG9nKCJjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBm
aXJlZCwgcmVzdWx0cyBkdW1wIGZvbGxvd3M6Iik7CisgICAgICAgIGR1bXBPYmplY3QocmVzdWx0
cyk7CisgICAgICAgIHZhciBub2RlID0gcmVzdWx0cy5jcmVhdGVSZXN1bHQoIlN1YnRyZWUiKTsK
KyAgICAgICAgZHVtcE9iamVjdChub2RlKTsKKyAgICAgICAgcmVzdWx0cy5kb25lKCk7CisgICAg
fQorICAgIHZhciBjYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4
dGVuc2lvbiBhdWRpdHMiLCAyMCk7CisgICAgY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQuYWRkTGlz
dGVuZXIob25TdGFydEF1ZGl0Q2F0ZWdvcnkpOworICAgIGxvZygiQWRkZWQgYXVkaXQgY2F0ZWdv
cnksIHJlc3VsdCBkdW1wIGZvbGxvd3M6Iik7CisgICAgZHVtcE9iamVjdChjYXRlZ29yeSk7Cisg
ICAgZXh0ZW5zaW9uX3J1bkF1ZGl0cyhuZXh0VGVzdCk7Cit9CisKK2Z1bmN0aW9uIHJ1bkF1ZGl0
cygpCit7CisgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfcnVuQXVkaXRzIik7
Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD5U
ZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEk8L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kOTllZjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVu
c2lvbnMtYXVkaXRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUZXN0cyBhdWRpdHMg
c3VwcG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0ZW5zaW9ucyBBUEkKKworU3RhcnRlZCBleHRlbnNp
b24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0QXVkaXRz
CitBZGRlZCBhdWRpdCBjYXRlZ29yeS4KK2NhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkCitm
YWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJlZCwgdGhyb3dpbmcgZXhjZXB0aW9uCitB
dWRpdHMgY29tcGxldGU6CisgIEV4dGVuc2lvbiBhdWRpdHMKKyAgICBGYWlsZWQgcnVsZSAoNDIp
CisgICAgIHRoaXMgcnVsZSBhbHdheXMgZmFpbHMKKyAgICBSdWxlIHdpdGggZGV0YWlscyBzdWJ0
cmVlICgxKQorICAgICBUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRldGFpbHMKKyAgICAgIFN1YnRy
ZWUKKyAgICAgICBTb21lIHVybDogCisgICAgICAgIFdlYktpdAorICAgICAgICBtb3JlIHRleHQg
CisgICAgICAgIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbQorICAgICAgIC4uLiBhbmQgYSBzbmlwcGV0
CisgICAgICAgICBmdW5jdGlvbiByYW5kKCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXR1
cm4gNDsKKyAgICAgICAgIH0KKyAgICBQYXNzZWQgcnVsZQorICAgICB0aGlzIHJ1bGUgYWx3YXlz
IHBhc3NlcyBvaworICBFeHRlbnNpb24gYXVkaXRzIHRoYXQgZmFpbAorQWxsIHRlc3RzIGRvbmUu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy10
ZXN0cy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMjVlNzhiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpz
CkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIGV4dGVuc2lvbl9ydW5BdWRpdHMoY2FsbGJhY2sp
DQorew0KKyAgICBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpDQorICAgIHsNCisgICAgICAgIGlm
IChldmVudC5kYXRhID09PSAiYXVkaXQtdGVzdHMtZG9uZSIpDQorICAgICAgICAgICAgY2FsbGJh
Y2soKTsNCisgICAgfQ0KKyAgICB0b3AuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uTWVz
c2FnZSwgZmFsc2UpOw0KKyAgICB3ZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93LmV2YWx1YXRl
KCJldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCdmcm9udGVuZF9ydW5FeHRlbnNpb25BdWRpdHMnKSIp
Ow0KK30NCisNCitmdW5jdGlvbiBmcm9udGVuZF9ydW5FeHRlbnNpb25BdWRpdHModGVzdENvbnRy
b2xsZXIpDQorew0KKyAgICBjb25zdCBsYXVuY2hlclZpZXcgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LmF1ZGl0cy5fbGF1bmNoZXJWaWV3Ow0KKyAgICBsYXVuY2hlclZpZXcuX3NlbGVjdEFsbENsaWNr
ZWQoZmFsc2UpOw0KKyAgICBsYXVuY2hlclZpZXcuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5j
aGVja2VkID0gdHJ1ZTsNCisNCisgICAgdmFyIGV4dGVuc2lvbkNhdGVnb3JpZXMgPSBkb2N1bWVu
dC5ldmFsdWF0ZSgibGFiZWxbc3RhcnRzLXdpdGgoLiwnRXh0ZW5zaW9uICcpXS9pbnB1dFtAdHlw
ZT0nY2hlY2tib3gnXSIsDQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5fbGF1
bmNoZXJWaWV3Ll9jYXRlZ29yaWVzRWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuT1JERVJFRF9O
T0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpOw0KKw0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4
dGVuc2lvbkNhdGVnb3JpZXMuc25hcHNob3RMZW5ndGg7ICsraSkNCisgICAgICAgIGV4dGVuc2lv
bkNhdGVnb3JpZXMuc25hcHNob3RJdGVtKGkpLmNsaWNrKCk7DQorDQorICAgIGZ1bmN0aW9uIG9u
QXVkaXRzRG9uZSgpDQorICAgIHsNCisgICAgICAgIHZhciBvdXRwdXQgPSBmcm9udGVuZF9jb2xs
ZWN0QXVkaXRSZXN1bHRzKCk7DQorICAgICAgICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZh
dWx0KCkuZXZhbHVhdGUoImxvZyh1bmVzY2FwZSgnIiArIGVzY2FwZSgiQXVkaXRzIGNvbXBsZXRl
OlxuIiArIG91dHB1dC5qb2luKCJcbiIpKSArICInKSk7IiwgZnVuY3Rpb24oKSB7DQorICAgICAg
ICAgICAgdG9wLnBvc3RNZXNzYWdlKCJhdWRpdC10ZXN0cy1kb25lIiwgIioiKTsNCisgICAgICAg
IH0pOw0KKyAgICB9DQorDQorICAgIGZyb250ZW5kX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBh
bmVscy5hdWRpdHMsICJfYXVkaXRGaW5pc2hlZENhbGxiYWNrIiwgb25BdWRpdHNEb25lLCB0cnVl
KTsNCisgICAgbGF1bmNoZXJWaWV3Ll9sYXVuY2hCdXR0b25DbGlja2VkKCk7DQorfQ0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMC4uNGZhOTMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImV4dGVuc2lvbnMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYXVkaXRzLXRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJleHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RBdWRpdHMo
bmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0Q2F0ZWdvcnkocmVzdWx0cykK
KyAgICB7CisgICAgICAgIGxvZygiY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQiKTsKKyAg
ICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIlBhc3NlZCBydWxlIiwgInRoaXMgcnVsZSBhbHdheXMg
cGFzc2VzIG9rIiwgcmVzdWx0cy5TZXZlcml0eS5JbmZvKTsKKyAgICAgICAgcmVzdWx0cy5hZGRS
ZXN1bHQoIkZhaWxlZCBydWxlICg0MikiLCAidGhpcyBydWxlIGFsd2F5cyBmYWlscyIsIHJlc3Vs
dHMuU2V2ZXJpdHkuU2V2ZXJlKTsKKworICAgICAgICB2YXIgbm9kZSA9IHJlc3VsdHMuY3JlYXRl
UmVzdWx0KCJTdWJ0cmVlIik7CisgICAgICAgIG5vZGUuYWRkQ2hpbGQoIlNvbWUgdXJsOiAiLCBy
ZXN1bHRzLnVybCgiaHR0cDovL3d3dy53ZWJraXQub3JnIiwgIldlYktpdCIpLCAiIG1vcmUgdGV4
dCAiLCByZXN1bHRzLnVybCgiaHR0cDovL3d3dy5nb29nbGUuY29tIikpOworICAgICAgICB2YXIg
bmVzdGVkTm9kZSA9IG5vZGUuYWRkQ2hpbGQoIi4uLiBhbmQgYSBzbmlwcGV0Iik7CisgICAgICAg
IG5lc3RlZE5vZGUuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICBuZXN0ZWROb2RlLmFkZENoaWxk
KHJlc3VsdHMuc25pcHBldCgiZnVuY3Rpb24gcmFuZCgpXG57XG4gICAgcmV0dXJuIDQ7XG59Iikp
OworCisgICAgICAgIHJlc3VsdHMuYWRkUmVzdWx0KCJSdWxlIHdpdGggZGV0YWlscyBzdWJ0cmVl
ICgxKSIsICJUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRldGFpbHMiLCByZXN1bHRzLlNldmVyaXR5
Lldhcm5pbmcsIG5vZGUpOworICAgICAgICAvLyBBdWRpdCBub3JtYWxseSB0ZXJtaW5hdGVzIHdo
ZW4gbnVtYmVyIG9mIGFkZGVkIHJ1bGUgcmVzdWx0cyBpcyBlcXVhbCB0bworICAgICAgICAvLyB0
aGUgcnVsZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNhdGVnb3J5LiBkb25lKCkgaXMg
b25seSBmb3IKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhc2VzLCB3aGVuIHdlIGtub3cgd2Ugd29u
J3QgYmUgYWJsZSB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHJ1bGVzLgorICAgICAgICByZXN1bHRz
LmRvbmUoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnko
KQorICAgIHsKKyAgICAgICAgbG9nKCJmYWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZCBmaXJl
ZCwgdGhyb3dpbmcgZXhjZXB0aW9uIik7CisgICAgICAgIHRocm93ICJvb3BzISI7CisgICAgfQor
ICAgIGZ1bmN0aW9uIG9uU3RhcnRBdWRpdERpc2FibGVkQ2F0ZWdvcnkocmVzdWx0cykKKyAgICB7
CisgICAgICAgIGxvZygiRkFJTDogZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQi
KTsKKyAgICAgICAgcmVzdWx0cy5kb25lKCk7CisgICAgfQorCisgICAgdmFyIGNhdGVnb3J5ID0g
d2ViSW5zcGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9uIGF1ZGl0cyIsIDIwKTsK
KyAgICBjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXRDYXRl
Z29yeSk7CisgICAgbG9nKCJBZGRlZCBhdWRpdCBjYXRlZ29yeS4iKTsKKworICAgIHZhciBmYWls
ZWRDYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4dGVuc2lvbiBh
dWRpdHMgdGhhdCBmYWlsIiwgMik7CisgICAgZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQu
YWRkTGlzdGVuZXIob25TdGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnkpOworCisgICAgdmFyIGRpc2Fi
bGVkQ2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5KCJEaXNhYmxlZCBl
eHRlbnNpb24gYXVkaXRzIiwgMik7CisgICAgZGlzYWJsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRl
ZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXREaXNhYmxlZENhdGVnb3J5KTsKKworICAgIGV4dGVu
c2lvbl9ydW5BdWRpdHMobmV4dFRlc3QpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+VGVzdHMgYXVkaXRzIHN1cHBvcnQgaW4gV2ViSW5zcGVj
dG9yIEV4dGVuc2lvbnMgQVBJPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDM5MjRhNmEuLjk5MzRmNTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKQEAg
LTMxLDcgKzMxLDcgQEAgcmVzb3VyY2U6IC4uLi90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMKIHJlc291cmNlOiAuLi4vTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVz
dC5qcwogcmVzb3VyY2U6IC4uLi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1s
CiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0R2V0SW52YWxpZFJlc291cmNlCi1BdHRlbXB0
ZWQgdG8gcmV0cmlldmUgaW52YWxpZCByZXNvdXJjZTogeyJjb2RlIjoiRV9OT1RGT1VORCIsImRl
c2NyaXB0aW9uIjoiT2JqZWN0IG5vdCBmb3VuZCAoJXMpIiwiZGV0YWlscyI6WzIxMjg1MDZdLCJp
c0Vycm9yIjp0cnVlfQorQXR0ZW1wdGVkIHRvIHJldHJpZXZlIGludmFsaWQgcmVzb3VyY2U6IHsi
Y29kZSI6IkVfTk9URk9VTkQiLCJkZXNjcmlwdGlvbiI6Ik9iamVjdCBub3QgZm91bmQ6ICVzIiwi
ZGV0YWlscyI6WzIxMjg1MDZdLCJpc0Vycm9yIjp0cnVlfQogUlVOTklORyBURVNUOiBleHRlbnNp
b25fdGVzdFJlc291cmNlTm90aWZpY2F0aW9uCiBSZXNvdXJjZSBmaW5pc2hlZDogLi4uL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uaHRtbAogQWxsIHRlc3RzIGRvbmUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9hdWRpdHMtc2NyaXB0My5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZmQ2MDUwNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0cy1zY3JpcHQzLmpzCisrKyAvZGV2L251bGwK
QEAgLTEsMyArMCwwIEBACi1mdW5jdGlvbiBmb28zKCkKLXsKLX0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA4MTE4M2Nh
Li4zNzY1NDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDAsNiArMjAwLDggQEAgV09OVEZJWCBTS0lQIDogZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LW11bHRpLmh0bWwgPSBGQUlMCiBXT05URklYIFNLSVAgOiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQuaHRt
bCA9IEZBSUwKIFdPTlRGSVggU0tJUCA6IGluc3BlY3Rvci9leHRlbnNpb25zLmh0bWwgPSBGQUlM
CiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGkuaHRtbCA9IEZBSUwKK1dP
TlRGSVggU0tJUCA6IGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sID0gRkFJTAorV09O
VEZJWCBTS0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sID0gRkFJTAog
CiAvLyBJbXBsZW1lbnQgamF2YSB0ZXN0aW5nIGhhcm5lc3MuCiBCVUczNjY4MSBERUZFUiBTS0lQ
IDogamF2YSA9IFRFWFQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMDJlYzE4OS4uZmFmN2M4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAxMC0wOC0y
NiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBhdWRp
dHMgc3VwcG9ydCB0byBleHRlbnNpb24gQVBJCisgICAgICAgIEV4cG9zZWQgKGxhdGUpIGFkZGlu
ZyBvZiBjYXRlZ29yaWVzIGZyb20gQXVkaXRQYW5lbC4KKyAgICAgICAgUmVtb3ZlZCBpbmRleE9m
T2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbiBpbiBmYXZvciBvZgorICAgICAgICBpbnNlcnRp
b25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24gKHRoZSBmb3JtZXIgaGFkCisg
ICAgICAgIHdlaXJkIGludGVyZmFjZSBhbHdheXMgcmV0dXJuaW5nIG5lZ2F0aXZlIG51bWJlcnMg
YW5kIHdhcyBvbmx5IHVzZWQgaW4KKyAgICAgICAgdGhlIGxhdHRlcikuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDUxOAorCisgICAgICAgIFRlc3Rz
OiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qczogQWRkZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuYXBwbHlGb3JtYXR0ZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdEZvcm1hdHRlcnMudGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRGb3Jt
YXR0ZXJzLnNuaXBwZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Rm9ybWF0dGVycy5j
b25jYXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Rm9ybWF0dGVycy51cmwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5hZGRDYXRlZ29yeS5jb21wYXJlQ2F0ZWdvcmll
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLmFk
ZENhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90
b3R5cGUuX2xhdW5jaEJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fc2VsZWN0QWxsQ2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl9jYXRlZ29yeUNsaWNrZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fY3JlYXRl
Q2F0ZWdvcnlFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmll
dy5wcm90b3R5cGUuX2NyZWF0ZUxhdW5jaGVyVUkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0
ZWdvcnlSZXN1bHRQYW5lLnByb3RvdHlwZS5fYXBwZW5kUmVzdWx0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1
ZGl0c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUu
YWRkQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlw
ZS5nZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90
eXBlLl9leGVjdXRlQXVkaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnku
cHJvdG90eXBlLnJ1bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25B
UEkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2lua0ltcGwucHJv
dG90eXBlLmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVu
c2lvbkFQSS5FdmVudFNpbmtJbXBsLnByb3RvdHlwZS5fZmlyZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuX2Rpc3Bh
dGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5FdmVudFNp
bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkluc3BlY3Rv
ckV4dGVuc2lvbkFQSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25B
UEkuUGFuZWxzLnByb3RvdHlwZS5jcmVhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVj
dGVkRXh0ZW5zaW9uQVBJLkF1ZGl0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRF
eHRlbnNpb25BUEkuQXVkaXRzLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRDYXRlZ29yeS5jdXN0b21EaXNwYXRj
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRDYXRl
Z29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRD
YXRlZ29yeUltcGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJ
LkF1ZGl0UmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQ
SS5BdWRpdFJlc3VsdC5wcm90b3R5cGUuZ2V0IFNldmVyaXR5KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5cGUu
YWRkUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5B
dWRpdFJlc3VsdEltcGwucHJvdG90eXBlLmNyZWF0ZVJlc3VsdCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZS5kb25l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3Vs
dEltcGwucHJvdG90eXBlLl9ub2RlRmFjdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5q
ZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdE5vZGUucHJvdG90eXBlLmFkZENoaWxk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnku
anM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBl
LmdldCBpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5w
cm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5nZXQgcnVsZUNvdW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5ydW4pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuZ2V0IGNv
bXBsZXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVz
dWx0cy5wcm90b3R5cGUuY2FuY2VsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25B
dWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuYWRkUmVzdWx0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5wcm90b3R5cGUuX2FkZE5vZGUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnBy
b3RvdHlwZS5fYWRkUmVzdWx0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVu
c2lvbkNvbW1vbi5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuY29tbW9uRXh0ZW5z
aW9uU3ltYm9scyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLnN0YXJ0QXVkaXRSdW4pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuc3RvcEF1ZGl0
UnVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9w
b3N0Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9vbkFkZEF1ZGl0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uQWRkQXVkaXRSZXN1bHQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uU3RvcEF1ZGl0Q2F0ZWdvcnlS
dW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX2Fk
ZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90
b3R5cGUuX2J1aWxkRXh0ZW5zaW9uQVBJSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblN0YXR1cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgICgp
OgorCiAyMDEwLTA4LTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDBmMTU5NzcuLmJmNDg3
ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC00MTQ0LDYgKzQxNDQsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQWJzdHJhY3RUaW1lbGluZVBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRDYXRlZ29yaWVzLmpzJywKKyAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qcycsCkBAIC00MTc1LDYgKzQxNzYsOCBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qcycsCisg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BdWRpdENhdGVnb3J5Lmpz
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkNvbW1vbi5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25QYW5lbC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25SZWdpc3RyeVN0dWIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGMyODA3ZjIuLjM4NTllZDMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTE5ODgsNiArNTE5ODgs
MTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQXVkaXRGb3JtYXR0ZXJzLmpzIg0KKwkJCQkJPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcQXVkaXRMYXVuY2hlclZpZXcuanMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CkBAIC01MjEwOCw2ICs1MjExMiwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxFeHRlbnNpb25B
dWRpdENhdGVnb3J5LmpzIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRXh0ZW5zaW9uQ29tbW9uLmpz
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRXh0ZW5zaW9uUGFuZWwuanMiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRG
b3JtYXR0ZXJzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVy
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZTI3N2FkCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5q
cwpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLmFwcGx5Rm9ybWF0dGVycyA9IGZ1bmN0aW9u
KHZhbHVlKQoreworICAgIHZhciBmb3JtYXR0ZXI7CisgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFs
dWU7CisgICAgdmFyIGFyZ3M7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSAi
c3RyaW5nIjoKKyAgICAgICAgY2FzZSAiYm9vbGVhbiI6CisgICAgICAgIGNhc2UgIm51bWJlciI6
CisgICAgICAgICAgICBmb3JtYXR0ZXIgPSBXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzLnRl
eHQ7CisgICAgICAgICAgICBhcmdzID0gWyB2YWx1ZS50b1N0cmluZygpIF07CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICAgICAgaWYgKHZhbHVl
IGluc3RhbmNlb2YgQXJyYXkpIHsKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPSBXZWJJbnNw
ZWN0b3IuQXVkaXRGb3JtYXR0ZXJzLmNvbmNhdDsKKyAgICAgICAgICAgICAgICBhcmdzID0gdmFs
dWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgJiYgdmFsdWUuYXJndW1lbnRz
KSB7CisgICAgICAgICAgICAgICAgZm9ybWF0dGVyID0gV2ViSW5zcGVjdG9yLkF1ZGl0Rm9ybWF0
dGVyc1t2YWx1ZS50eXBlXTsKKyAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWUuYXJndW1lbnRz
OworICAgICAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZvcm1hdHRlcikKKyAgICAgICAgdGhy
b3cgIkludmFsaWQgdmFsdWUgb3IgZm9ybWF0dGVyOiAiICsgdHlwZSArIEpTT04uc3RyaW5naWZ5
KHZhbHVlKTsKKworICAgIHJldHVybiBmb3JtYXR0ZXIuYXBwbHkobnVsbCwgYXJncyk7Cit9CisK
K1dlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMgPSB7CisgICAgdGV4dDogZnVuY3Rpb24odGV4
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsK
KyAgICB9LAorCisgICAgc25pcHBldDogZnVuY3Rpb24oc25pcHBldFRleHQpCisgICAgeworICAg
ICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRp
di5pbm5lclRleHQgPSBzbmlwcGV0VGV4dDsKKyAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICJzb3Vy
Y2UtY29kZSI7CisgICAgICAgIHJldHVybiBkaXY7CisgICAgfSwKKworICAgIGNvbmNhdDogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICAgICAgZm9yICh2YXIgYXJnID0gMDsgYXJnIDwgYXJndW1lbnRzLmxl
bmd0aDsgKythcmcpCisgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9y
LmFwcGx5Rm9ybWF0dGVycyhhcmd1bWVudHNbYXJnXSkpOworICAgICAgICByZXR1cm4gcGFyZW50
OworICAgIH0sCisKKyAgICB1cmw6IGZ1bmN0aW9uKHVybCwgZGlzcGxheVRleHQpCisgICAgewor
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUodXJsLCBkaXNwbGF5
VGV4dCB8fCB1cmwsIG51bGwsICh1cmwgaW4gV2ViSW5zcGVjdG9yLnJlc291cmNlVVJMTWFwKSk7
CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dExhdW5jaGVyVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5j
aGVyVmlldy5qcwppbmRleCAzM2QzODcyLi4xOGRhZWU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCkBAIC0yOCwxMCArMjgsOSBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcgPSBm
dW5jdGlvbihjYXRlZ29yaWVzQnlJZCwgcnVubmVyQ2FsbGJhY2spCitXZWJJbnNwZWN0b3IuQXVk
aXRMYXVuY2hlclZpZXcgPSBmdW5jdGlvbihydW5uZXJDYWxsYmFjaykKIHsKICAgICBXZWJJbnNw
ZWN0b3IuVmlldy5jYWxsKHRoaXMpOwotICAgIHRoaXMuX2NhdGVnb3JpZXNCeUlkID0gY2F0ZWdv
cmllc0J5SWQ7CiAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2sgPSBydW5uZXJDYWxsYmFjazsKICAg
ICB0aGlzLl9jYXRlZ29yeUlkUHJlZml4ID0gImF1ZGl0LWNhdGVnb3J5LWl0ZW0tIjsKICAgICB0
aGlzLl9hdWRpdFJ1bm5pbmcgPSBmYWxzZTsKQEAgLTQxLDI3ICs0MCwxNiBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRMYXVuY2hlclZpZXcgPSBmdW5jdGlvbihjYXRlZ29yaWVzQnlJZCwgcnVubmVyQ2Fs
bGJhY2spCiAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAiYXVkaXQtbGF1
bmNoZXItdmlldy1jb250ZW50IjsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGVudEVsZW1lbnQpOworICAgIHRoaXMuX2JvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyID0g
dGhpcy5fY2F0ZWdvcnlDbGlja2VkLmJpbmQodGhpcyk7CiAKICAgICB0aGlzLl9yZXNldFJlc291
cmNlQ291bnQoKTsKIAotICAgIGZ1bmN0aW9uIGNhdGVnb3J5U29ydEZ1bmN0aW9uKGEsIGIpCi0g
ICAgewotICAgICAgICB2YXIgYVRpdGxlID0gYS5kaXNwbGF5TmFtZSB8fCAiIjsKLSAgICAgICAg
dmFyIGJUaXRsZSA9IGIuZGlzcGxheU5hbWUgfHwgIiI7Ci0gICAgICAgIHJldHVybiBhVGl0bGUu
bG9jYWxlQ29tcGFyZShiVGl0bGUpOwotICAgIH0KLSAgICB2YXIgc29ydGVkQ2F0ZWdvcmllcyA9
IFtdOwotICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2NhdGVnb3JpZXNCeUlkKQotICAgICAgICBz
b3J0ZWRDYXRlZ29yaWVzLnB1c2godGhpcy5fY2F0ZWdvcmllc0J5SWRbaWRdKTsKLSAgICBzb3J0
ZWRDYXRlZ29yaWVzLnNvcnQoY2F0ZWdvcnlTb3J0RnVuY3Rpb24pOworICAgIHRoaXMuX3NvcnRl
ZENhdGVnb3JpZXMgPSBbXTsKIAotICAgIGlmICghc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGgpIHsK
LSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgx
Iik7Ci0gICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gIm5vLWF1ZGl0cyI7
Ci0gICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk5vIGF1ZGl0cyB0byBydW4iKTsKLSAgICAgICAgdGhpcy5fY29udGVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHRoaXMuX2NyZWF0ZUxhdW5jaGVyVUkoc29ydGVkQ2F0ZWdvcmllcyk7CisgICAgdGhpcy5faGVh
ZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7CisgICAgdGhpcy5faGVh
ZGVyRWxlbWVudC5jbGFzc05hbWUgPSAibm8tYXVkaXRzIjsKKyAgICB0aGlzLl9oZWFkZXJFbGVt
ZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBhdWRpdHMgdG8gcnVu
Iik7CisgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxl
bWVudCk7CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7
CkBAIC0xMzMsNiArMTIxLDMwIEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jlc2V0UmVzb3VyY2VDb3VudCgpOwogICAgIH0sCiAK
KyAgICBhZGRDYXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkpCisgICAgeworICAgICAgICBpZiAo
IXRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5fY3JlYXRl
TGF1bmNoZXJVSSgpOworCisgICAgICAgIHZhciBjYXRlZ29yeUVsZW1lbnQgPSB0aGlzLl9jcmVh
dGVDYXRlZ29yeUVsZW1lbnQoY2F0ZWdvcnkuZGlzcGxheU5hbWUsIGNhdGVnb3J5LmlkKTsKKyAg
ICAgICAgY2F0ZWdvcnkuX2NoZWNrYm94RWxlbWVudCA9IGNhdGVnb3J5RWxlbWVudC5maXJzdENo
aWxkOworICAgICAgICBpZiAodGhpcy5fc2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQp
IHsKKyAgICAgICAgICAgIGNhdGVnb3J5Ll9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9IHRydWU7
CisgICAgICAgICAgICArK3RoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQ7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjb21wYXJlQ2F0ZWdvcmllcyhhLCBiKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgYVRpdGxlID0gYS5kaXNwbGF5TmFtZSB8fCAiIjsKKyAgICAgICAgICAg
IHZhciBiVGl0bGUgPSBiLmRpc3BsYXlOYW1lIHx8ICIiOworICAgICAgICAgICAgcmV0dXJuIGFU
aXRsZS5sb2NhbGVDb21wYXJlKGJUaXRsZSk7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGluc2Vy
dEJlZm9yZSA9IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihj
YXRlZ29yeSwgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcywgY29tcGFyZUNhdGVnb3JpZXMpOworICAg
ICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5pbnNlcnRCZWZvcmUoY2F0ZWdvcnlFbGVtZW50
LCB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZHJlbltpbnNlcnRCZWZvcmVdKTsKKyAgICAg
ICAgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5zcGxpY2UoaW5zZXJ0QmVmb3JlLCAwLCBjYXRlZ29y
eSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJ1dHRvbigpOworICAgIH0sCisKICAgICBfc2V0QXVk
aXRSdW5uaW5nOiBmdW5jdGlvbihhdWRpdFJ1bm5pbmcpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fYXVkaXRSdW5uaW5nID09PSBhdWRpdFJ1bm5pbmcpCkBAIC0xNDYsMTAgKzE1OCwxMSBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAg
ICAgdmFyIGNhdElkcyA9IFtdOwogICAgICAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMuX2NhdGVn
b3JpZXNFbGVtZW50LmNoaWxkTm9kZXM7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX2Nh
dGVnb3JpZXNCeUlkKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fY2F0ZWdvcmllc0J5SWRbaWRd
Ll9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCkKLSAgICAgICAgICAgICAgICBjYXRJZHMucHVzaChp
ZCk7CisgICAgICAgIGZvciAodmFyIGNhdGVnb3J5ID0gMDsgY2F0ZWdvcnkgPCB0aGlzLl9zb3J0
ZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytjYXRlZ29yeSkgeworICAgICAgICAgICAgaWYgKHRoaXMu
X3NvcnRlZENhdGVnb3JpZXNbY2F0ZWdvcnldLl9jaGVja2JveEVsZW1lbnQuY2hlY2tlZCkKKyAg
ICAgICAgICAgICAgICBjYXRJZHMucHVzaCh0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzW2NhdGVnb3J5
XS5pZCk7CiAgICAgICAgIH0KKwogICAgICAgICB0aGlzLl9zZXRBdWRpdFJ1bm5pbmcodHJ1ZSk7
CiAgICAgICAgIHRoaXMuX3J1bm5lckNhbGxiYWNrKGNhdElkcywgdGhpcy5fYXVkaXRQcmVzZW50
U3RhdGVFbGVtZW50LmNoZWNrZWQsIHRoaXMuX3NldEF1ZGl0UnVubmluZy5iaW5kKHRoaXMsIGZh
bHNlKSk7CiAgICAgfSwKQEAgLTE1OSwxNCArMTcyLDE0IEBAIFdlYkluc3BlY3Rvci5BdWRpdExh
dW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGhpcy5f
Y2F0ZWdvcmllc0VsZW1lbnQuY2hpbGROb2RlczsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxl
bmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBj
aGlsZE5vZGVzW2ldLmZpcnN0Q2hpbGQuY2hlY2tlZCA9IGNoZWNrQ2F0ZWdvcmllczsKLSAgICAg
ICAgdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9IGNoZWNrQ2F0ZWdvcmllcyA/IHRoaXMu
X3RvdGFsQ2F0ZWdvcmllc0NvdW50IDogMDsKKyAgICAgICAgdGhpcy5fY3VycmVudENhdGVnb3Jp
ZXNDb3VudCA9IGNoZWNrQ2F0ZWdvcmllcyA/IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3Ro
IDogMDsKICAgICAgICAgdGhpcy5fdXBkYXRlQnV0dG9uKCk7CiAgICAgfSwKIAogICAgIF9jYXRl
Z29yeUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fY3VycmVu
dENhdGVnb3JpZXNDb3VudCArPSBldmVudC50YXJnZXQuY2hlY2tlZCA/IDEgOiAtMTsKLSAgICAg
ICAgdGhpcy5fc2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSB0aGlzLl9jdXJyZW50
Q2F0ZWdvcmllc0NvdW50ID09PSB0aGlzLl90b3RhbENhdGVnb3JpZXNDb3VudDsKKyAgICAgICAg
dGhpcy5fc2VsZWN0QWxsQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSB0aGlzLl9jdXJyZW50Q2F0
ZWdvcmllc0NvdW50ID09PSB0aGlzLl9zb3J0ZWRDYXRlZ29yaWVzLmxlbmd0aDsKICAgICAgICAg
dGhpcy5fdXBkYXRlQnV0dG9uKCk7CiAgICAgfSwKIApAQCAtMTc3LDE2ICsxOTAsMjEgQEAgV2Vi
SW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAgICAgIGVsZW1l
bnQudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9ib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciwgZmFsc2UpOwogICAgICAg
ICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CiAgICAgICAgIGxhYmVsRWxlbWVu
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aXRsZSkpOwogCiAgICAgICAg
IHJldHVybiBsYWJlbEVsZW1lbnQ7CiAgICAgfSwKIAotICAgIF9jcmVhdGVMYXVuY2hlclVJOiBm
dW5jdGlvbihzb3J0ZWRDYXRlZ29yaWVzKQorICAgIF9jcmVhdGVMYXVuY2hlclVJOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaDEiKTsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0IGF1ZGl0cyB0byBydW4iKTsKKworICAgICAg
ICBmb3IgKHZhciBjaGlsZCA9IDA7IGNoaWxkIDwgdGhpcy5fY29udGVudEVsZW1lbnQuY2hpbGRy
ZW4ubGVuZ3RoOyArK2NoaWxkKQorICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQuY2hpbGRyZW5bY2hpbGRdKTsKKwogICAgICAg
ICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsK
IAogICAgICAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkKQEAgLTIwNCwx
NiArMjIyLDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2xhc3NOYW1lID0gImF1ZGl0LWNhdGVn
b3JpZXMtY29udGFpbmVyIjsKICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQpOwogCi0gICAgICAgIHZhciBib3VuZENhdGVnb3J5
Q2xpY2tMaXN0ZW5lciA9IHRoaXMuX2NhdGVnb3J5Q2xpY2tlZC5iaW5kKHRoaXMpOwotCi0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgY2F0ZWdvcnlFbGVtZW50ID0gdGhpcy5fY3JlYXRlQ2F0ZWdvcnlFbGVtZW50
KHNvcnRlZENhdGVnb3JpZXNbaV0uZGlzcGxheU5hbWUsIHNvcnRlZENhdGVnb3JpZXNbaV0uaWQp
OwotICAgICAgICAgICAgY2F0ZWdvcnlFbGVtZW50LmZpcnN0Q2hpbGQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBib3VuZENhdGVnb3J5Q2xpY2tMaXN0ZW5lciwgZmFsc2UpOwotICAgICAgICAg
ICAgc29ydGVkQ2F0ZWdvcmllc1tpXS5fY2hlY2tib3hFbGVtZW50ID0gY2F0ZWdvcnlFbGVtZW50
LmZpcnN0Q2hpbGQ7Ci0gICAgICAgICAgICB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5hcHBlbmRD
aGlsZChjYXRlZ29yeUVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fdG90YWxD
YXRlZ29yaWVzQ291bnQgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0
aDsKICAgICAgICAgdGhpcy5fY3VycmVudENhdGVnb3JpZXNDb3VudCA9IDA7CiAKICAgICAgICAg
dmFyIGZsZXhpYmxlU3BhY2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcwppbmRl
eCAyZjRhZmJkLi4yNjM2NDYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQXVkaXRSZXN1bHRWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdFJlc3VsdFZpZXcuanMKQEAgLTgxLDE1ICs4MSwyMiBAQCBXZWJJbnNwZWN0b3IuQXVkaXRD
YXRlZ29yeVJlc3VsdFBhbmUgPSBmdW5jdGlvbihjYXRlZ29yeVJlc3VsdCkKIFdlYkluc3BlY3Rv
ci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX2FwcGVuZFJlc3Vs
dDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIHZh
ciB0aXRsZSA9IHJlc3VsdC52YWx1ZTsKLSAgICAgICAgaWYgKHJlc3VsdC52aW9sYXRpb25Db3Vu
dCkKLSAgICAgICAgICAgIHRpdGxlID0gU3RyaW5nLnNwcmludGYoIiVzICglZCkiLCB0aXRsZSwg
cmVzdWx0LnZpb2xhdGlvbkNvdW50KTsKKyAgICAgICAgdmFyIHRpdGxlID0gIiI7CisgICAgICAg
IAorICAgICAgICBpZiAodHlwZW9mIHJlc3VsdC52YWx1ZSA9PT0gInN0cmluZyIpIHsKKyAgICAg
ICAgICAgIHRpdGxlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgICAgaWYgKHJlc3VsdC52aW9s
YXRpb25Db3VudCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFN0cmluZy5zcHJpbnRmKCIlcyAo
JWQpIiwgdGl0bGUsIHJlc3VsdC52aW9sYXRpb25Db3VudCk7CisgICAgICAgIH0KIAogICAgICAg
ICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIG51bGwsICEhcmVzdWx0
LmNoaWxkcmVuKTsKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQodHJlZUVs
ZW1lbnQpOwogCiAgICAgICAgIGlmIChyZXN1bHQuY2xhc3NOYW1lKQogICAgICAgICAgICAgdHJl
ZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MocmVzdWx0LmNsYXNzTmFtZSk7
CisgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0LnZhbHVlICE9PSAic3RyaW5nIikKKyAgICAgICAg
ICAgIHRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3Iu
YXBwbHlGb3JtYXR0ZXJzKHJlc3VsdC52YWx1ZSkpOworCiAgICAgICAgIGlmIChyZXN1bHQuY2hp
bGRyZW4pIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0LmNoaWxkcmVu
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFJlc3VsdCh0cmVlRWxl
bWVudCwgcmVzdWx0LmNoaWxkcmVuW2ldKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcwppbmRleCBiYzdmM2IzLi5mNmNiZWQwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC0zMiw4ICszMiw2IEBAIFdlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2Fs
bCh0aGlzLCAiYXVkaXRzIik7CiAKLSAgICB0aGlzLl9jb25zdHJ1Y3RDYXRlZ29yaWVzKCk7Ci0K
ICAgICB0aGlzLmNyZWF0ZVNpZGViYXIoKTsKICAgICB0aGlzLmF1ZGl0c1RyZWVFbGVtZW50ID0g
bmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyU2VjdGlvblRyZWVFbGVtZW50KCIiLCB7fSwgdHJ1ZSk7
CiAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZCh0aGlzLmF1ZGl0c1RyZWVFbGVtZW50
KTsKQEAgLTU0LDcgKzUyLDExIEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCA9IGZ1bmN0aW9u
KCkKICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudC5pZCA9ICJhdWRpdC12aWV3cyI7CiAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudmlld3NDb250YWluZXJFbGVtZW50KTsK
IAotICAgIHRoaXMuX2xhdW5jaGVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hl
clZpZXcodGhpcy5jYXRlZ29yaWVzQnlJZCwgdGhpcy5pbml0aWF0ZUF1ZGl0LmJpbmQodGhpcykp
OworICAgIHRoaXMuX2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKKworICAgIHRoaXMuX2xhdW5jaGVy
VmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcodGhpcy5pbml0aWF0ZUF1
ZGl0LmJpbmQodGhpcykpOworICAgIGZvciAoaWQgaW4gdGhpcy5jYXRlZ29yaWVzQnlJZCkKKyAg
ICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LmFkZENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc0J5SWRb
aWRdKTsKIH0KIAogV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTEw
NCw2ICsxMDYsMTcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LnJlc291cmNlRmluaXNoZWQocmVzb3VyY2UpOwogICAg
IH0sCiAKKyAgICBhZGRDYXRlZ29yeTogZnVuY3Rpb24oY2F0ZWdvcnkpCisgICAgeworICAgICAg
ICB0aGlzLmNhdGVnb3JpZXNCeUlkW2NhdGVnb3J5LmlkXSA9IGNhdGVnb3J5OworICAgICAgICB0
aGlzLl9sYXVuY2hlclZpZXcuYWRkQ2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgIH0sCisKKyAgICBn
ZXRDYXRlZ29yeTogZnVuY3Rpb24oaWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5jYXRl
Z29yaWVzQnlJZFtpZF07CisgICAgfSwKKwogICAgIF9jb25zdHJ1Y3RDYXRlZ29yaWVzOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9hdWRpdENhdGVnb3JpZXNCeUlkID0ge307CkBA
IC0xNDcsNyArMTYwLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHZhciBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbaV07CiAgICAgICAgICAgICB2
YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0KGNhdGVnb3J5
KTsKICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOwotICAgICAgICAgICAgY2F0ZWdv
cnkucnVuUnVsZXMocmVzb3VyY2VzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKG51bGws
IHJlc3VsdCkpOworICAgICAgICAgICAgY2F0ZWdvcnkucnVuKHJlc291cmNlcywgcnVsZVJlc3Vs
dFJlYWR5Q2FsbGJhY2suYmluZChudWxsLCByZXN1bHQpKTsKICAgICAgICAgfQogICAgIH0sCiAK
QEAgLTIyMCw3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IHRoaXMuX2xhdW5jaGVyVmlldzsK
ICAgICB9LAotICAgIAorCiAgICAgZ2V0IHZpc2libGVWaWV3KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl92aXNpYmxlVmlldzsKQEAgLTMxMSw3ICszMjQsNyBAQCBXZWJJbnNwZWN0b3Iu
QXVkaXRDYXRlZ29yeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3J1bGVzLnB1c2gocnVs
ZSk7CiAgICAgfSwKIAotICAgIHJ1blJ1bGVzOiBmdW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNr
KQorICAgIHJ1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IHRoaXMuX2Vuc3VyZUluaXRpYWxpemVkKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fcnVsZXMubGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvbkFQSS5qcwppbmRleCBhODlkY2YxLi45ZDk5NmJmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEkuanMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotdmFyIGluamVjdGVkRXh0ZW5zaW9uQVBJID0gZnVuY3Rpb24oSW5qZWN0
ZWRTY3JpcHRIb3N0LCBpbnNwZWN0ZWRXaW5kb3csIGluamVjdGVkU2NyaXB0SWQpCitXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkgPSBmdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3Qs
IGluc3BlY3RlZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCkKIHsKIAogLy8gSGVyZSBhbmQgYmVs
b3csIGFsbCBjb25zdHJ1Y3RvcnMgYXJlIHByaXZhdGUgdG8gQVBJIGltcGxlbWVudGF0aW9uLgpA
QCAtMzcsMTkgKzM3LDIyIEBAIHZhciBpbmplY3RlZEV4dGVuc2lvbkFQSSA9IGZ1bmN0aW9uKElu
amVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmplY3RlCiAvLyBieSBGb28gY29u
c3V0cmN0b3IgdG8gcmUtYmluZCBwdWJsaWNseSBleHBvcnRlZCBtZW1iZXJzIHRvIGFuIGluc3Rh
bmNlCiAvLyBvZiBGb28uCiAKLWZ1bmN0aW9uIEV2ZW50U2lua0ltcGwodHlwZSkKK2Z1bmN0aW9u
IEV2ZW50U2lua0ltcGwodHlwZSwgY3VzdG9tRGlzcGF0Y2gpCiB7CiAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7CiAgICAgdGhpcy5fbGlzdGVuZXJzID0gW107CisgICAgdGhpcy5fY3VzdG9tRGlzcGF0
Y2ggPSBjdXN0b21EaXNwYXRjaDsKIH0KIAogRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUgPSB7CiAg
ICAgYWRkTGlzdGVuZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgaWYgKHR5
cGVvZiBjYWxsYmFjayAhPSAiZnVuY3Rpb24iKQorICAgICAgICAgICAgdGhyb3cgbmV3ICJhZGRM
aXN0ZW5lcjogY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iOwogICAgICAgICBpZiAodGhpcy5f
bGlzdGVuZXJzLmxlbmd0aCA9PT0gMCkKICAgICAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5k
UmVxdWVzdCh7IGNvbW1hbmQ6ICJzdWJzY3JpYmUiLCB0eXBlOiB0aGlzLl90eXBlIH0pOwogICAg
ICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChjYWxsYmFjayk7Ci0gICAgICAgIGV4dGVuc2lvblNl
cnZlci5yZWdpc3RlckhhbmRsZXIoIm5vdGlmeS0iICsgdGhpcy5fdHlwZSwgYmluZCh0aGlzLl9m
aXJlLCB0aGlzKSk7CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5yZWdpc3RlckhhbmRsZXIoIm5v
dGlmeS0iICsgdGhpcy5fdHlwZSwgYmluZCh0aGlzLl9kaXNwYXRjaCwgdGhpcykpOwogICAgIH0s
CiAKICAgICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24oY2FsbGJhY2spCkBAIC02NiwyNiArNjks
MzYgQEAgRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBleHRlbnNpb25T
ZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAidW5zdWJzY3JpYmUiLCB0eXBlOiB0aGlzLl90
eXBlIH0pOwogICAgIH0sCiAKLSAgICBfZmlyZTogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICBfZmly
ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3Rl
bmVycy5zbGljZSgpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIGxpc3RlbmVyc1tpXS5hcHBseShudWxsLCByZXF1ZXN0LmFy
Z3VtZW50cyk7CisgICAgICAgICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkobnVsbCwgYXJndW1lbnRz
KTsKKyAgICB9LAorCisgICAgX2Rpc3BhdGNoOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAg
ICAgICAgIGlmICh0aGlzLl9jdXN0b21EaXNwYXRjaCkKKyAgICAgICAgICAgICB0aGlzLl9jdXN0
b21EaXNwYXRjaC5jYWxsKHRoaXMsIHJlcXVlc3QpOworICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgIHRoaXMuX2ZpcmUuYXBwbHkodGhpcywgcmVxdWVzdC5hcmd1bWVudHMpOwogICAgIH0KIH0K
IAotZnVuY3Rpb24gRXZlbnRTaW5rKHR5cGUpCitmdW5jdGlvbiBFdmVudFNpbmsodHlwZSwgY3Vz
dG9tRGlzcGF0Y2gpCiB7Ci0gICAgdmFyIGltcGwgPSBuZXcgRXZlbnRTaW5rSW1wbCh0eXBlKTsK
KyAgICB2YXIgaW1wbCA9IG5ldyBFdmVudFNpbmtJbXBsKHR5cGUsIGN1c3RvbURpc3BhdGNoKTsK
ICAgICB0aGlzLmFkZExpc3RlbmVyID0gYmluZChpbXBsLmFkZExpc3RlbmVyLCBpbXBsKTsKICAg
ICB0aGlzLnJlbW92ZUxpc3RlbmVyID0gYmluZChpbXBsLnJlbW92ZUxpc3RlbmVyLCBpbXBsKTsK
IH0KIAogZnVuY3Rpb24gSW5zcGVjdG9yRXh0ZW5zaW9uQVBJKCkKIHsKKyAgICB0aGlzLmF1ZGl0
cyA9IG5ldyBBdWRpdHMoKTsKICAgICB0aGlzLmluc3BlY3RlZFdpbmRvdyA9IG5ldyBJbnNwZWN0
ZWRXaW5kb3coKTsKICAgICB0aGlzLnBhbmVscyA9IG5ldyBQYW5lbHMoKTsKICAgICB0aGlzLnJl
c291cmNlcyA9IG5ldyBSZXNvdXJjZXMoKTsKKwogICAgIHRoaXMub25SZXNldCA9IG5ldyBFdmVu
dFNpbmsoInJlc2V0Iik7CiB9CiAKQEAgLTEyNSw3ICsxMzgsNyBAQCBmdW5jdGlvbiBQYW5lbHMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhbmVsc1tuYW1lXTsKICAgICB9Ci0gICAgCisKICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHdlbGxLbm93blBhbmVsTmFtZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgdmFyIG5hbWUgPSB3ZWxsS25vd25QYW5lbE5hbWVzW2ldOwogICAgICAgICBwYW5l
bHNbbmFtZV0gPSBuZXcgUGFuZWwobmFtZSk7CkBAIC0xNTEsNyArMTY0LDcgQEAgUGFuZWxzLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgIGxhYmVsOiBsYWJl
bCwKICAgICAgICAgICAgIHVybDogZXhwYW5kVVJMKHBhZ2VVUkwpLAotICAgICAgICAgICAgaWNv
bjogZXhwYW5kVVJMKGljb25VUkwpIAorICAgICAgICAgICAgaWNvbjogZXhwYW5kVVJMKGljb25V
UkwpCiAgICAgICAgIH07CiAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdChyZXF1
ZXN0LCBjYWxsYmFjayAmJiBiaW5kKGNhbGxiYWNrV3JhcHBlciwgdGhpcykpOwogICAgIH0KQEAg
LTIxOSw2ICsyMzIsMTI0IEBAIGZ1bmN0aW9uIEV4dGVuc2lvblNpZGViYXJQYW5lKGlkKQogICAg
IHRoaXMuc2V0RXhwYW5kZWQgPSBiaW5kKGltcGwuc2V0RXhwYW5kZWQsIGltcGwpOwogfQogCitm
dW5jdGlvbiBBdWRpdHMoKQoreworfQorCitBdWRpdHMucHJvdG90eXBlID0geworICAgIGFkZENh
dGVnb3J5OiBmdW5jdGlvbihkaXNwbGF5TmFtZSwgcnVsZUNvdW50KQorICAgIHsKKyAgICAgICAg
dmFyIGlkID0gImV4dGVuc2lvbi1hdWRpdC1jYXRlZ29yeS0iICsgZXh0ZW5zaW9uU2VydmVyLm5l
eHRPYmplY3RJZCgpOworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21t
YW5kOiAiYWRkQXVkaXRDYXRlZ29yeSIsIGlkOiBpZCwgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1l
LCBydWxlQ291bnQ6IHJ1bGVDb3VudCB9KTsKKyAgICAgICAgcmV0dXJuIG5ldyBBdWRpdENhdGVn
b3J5KGlkKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdvcnkoaWQpCit7CisgICAg
ZnVuY3Rpb24gY3VzdG9tRGlzcGF0Y2gocmVxdWVzdCkKKyAgICB7CisgICAgICAgIHZhciBhdWRp
dFJlc3VsdCA9IG5ldyBBdWRpdFJlc3VsdChyZXF1ZXN0LmFyZ3VtZW50c1swXSk7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICB0aGlzLl9maXJlKGF1ZGl0UmVzdWx0KTsKKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5jYXVnaHQgZXhjZXB0aW9u
IGluIGV4dGVuc2lvbiBhdWRpdCBldmVudCBoYW5kbGVyOiAiICsgZSk7CisgICAgICAgICAgICBh
dWRpdFJlc3VsdC5kb25lKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgdmFyIGltcGwgPSBuZXcg
QXVkaXRDYXRlZ29yeUltcGwoaWQpOworICAgIHRoaXMub25BdWRpdFN0YXJ0ZWQgPSBuZXcgRXZl
bnRTaW5rKCJhdWRpdC1zdGFydGVkLSIgKyBpZCwgY3VzdG9tRGlzcGF0Y2gpOworfQorCitmdW5j
dGlvbiBBdWRpdENhdGVnb3J5SW1wbChpZCkKK3sKKyAgICB0aGlzLl9pZCA9IGlkOworfQorCitm
dW5jdGlvbiBBdWRpdFJlc3VsdChpZCkKK3sKKyAgICB2YXIgaW1wbCA9IG5ldyBBdWRpdFJlc3Vs
dEltcGwoaWQpOworCisgICAgdGhpcy5hZGRSZXN1bHQgPSBiaW5kKGltcGwuYWRkUmVzdWx0LCBp
bXBsKTsKKyAgICB0aGlzLmNyZWF0ZVJlc3VsdCA9IGJpbmQoaW1wbC5jcmVhdGVSZXN1bHQsIGlt
cGwpOworICAgIHRoaXMuZG9uZSA9IGJpbmQoaW1wbC5kb25lLCBpbXBsKTsKKworICAgIHZhciBm
b3JtYXR0ZXJUeXBlcyA9IFsKKyAgICAgICAgInVybCIsCisgICAgICAgICJzbmlwcGV0IiwKKyAg
ICAgICAgInRleHQiCisgICAgXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvcm1hdHRlclR5
cGVzLmxlbmd0aDsgKytpKQorICAgICAgICB0aGlzW2Zvcm1hdHRlclR5cGVzW2ldXSA9IGJpbmQo
aW1wbC5fbm9kZUZhY3RvcnksIG51bGwsIGZvcm1hdHRlclR5cGVzW2ldKTsKK30KKworQXVkaXRS
ZXN1bHQucHJvdG90eXBlID0geworICAgIGdldCBTZXZlcml0eSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gcHJpdmF0ZS5hdWRpdHMuU2V2ZXJpdHk7CisgICAgfQorfQorCitmdW5jdGlvbiBBdWRp
dFJlc3VsdEltcGwoaWQpCit7CisgICAgdGhpcy5faWQgPSBpZDsKK30KKworQXVkaXRSZXN1bHRJ
bXBsLnByb3RvdHlwZSA9IHsKKyAgICBhZGRSZXN1bHQ6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBk
ZXNjcmlwdGlvbiwgc2V2ZXJpdHksIGRldGFpbHMpCisgICAgeworICAgICAgICAvLyBzaG9ydGhh
bmQgZm9yIHNwZWNpZnlpbmcgZGV0YWlscyBkaXJlY3RseSBpbiBhZGRSZXN1bHQoKS4KKyAgICAg
ICAgaWYgKGRldGFpbHMgJiYgIShkZXRhaWxzIGluc3RhbmNlb2YgQXVkaXRSZXN1bHROb2RlKSkK
KyAgICAgICAgICAgIGRldGFpbHMgPSBkZXRhaWxzIGluc3RhbmNlb2YgQXJyYXkgPyB0aGlzLmNy
ZWF0ZU5vZGUuYXBwbHkodGhpcywgZGV0YWlscykgOiB0aGlzLmNyZWF0ZU5vZGUoZGV0YWlscyk7
CisKKyAgICAgICAgdmFyIHJlcXVlc3QgPSB7CisgICAgICAgICAgICBjb21tYW5kOiAiYWRkQXVk
aXRSZXN1bHQiLAorICAgICAgICAgICAgcmVzdWx0SWQ6IHRoaXMuX2lkLAorICAgICAgICAgICAg
ZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLAorICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2Ny
aXB0aW9uLAorICAgICAgICAgICAgc2V2ZXJpdHk6IHNldmVyaXR5LAorICAgICAgICAgICAgZGV0
YWlsczogZGV0YWlscworICAgICAgICB9OworICAgICAgICBleHRlbnNpb25TZXJ2ZXIuc2VuZFJl
cXVlc3QocmVxdWVzdCk7CisgICAgfSwKKworICAgIGNyZWF0ZVJlc3VsdDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSBuZXcgQXVkaXRSZXN1bHROb2RlKCk7CisgICAgICAg
IG5vZGUuY29udGVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwor
ICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9LAorCisgICAgZG9uZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInN0b3BB
dWRpdENhdGVnb3J5UnVuIiwgcmVzdWx0SWQ6IHRoaXMuX2lkIH0pOworICAgIH0sCisKKyAgICBf
bm9kZUZhY3Rvcnk6IGZ1bmN0aW9uKHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgdHlwZTogdHlwZSwKKyAgICAgICAgICAgIGFyZ3VtZW50czogQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKQorICAgICAgICB9OworICAgIH0KK30KKworZnVu
Y3Rpb24gQXVkaXRSZXN1bHROb2RlKGNvbnRlbnRzKQoreworICAgIHRoaXMuY29udGVudHMgPSBj
b250ZW50czsKKyAgICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgdGhpcy5leHBhbmRlZCA9IGZh
bHNlOworfQorCitBdWRpdFJlc3VsdE5vZGUucHJvdG90eXBlID0geworICAgIGFkZENoaWxkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IEF1ZGl0UmVzdWx0SW1wbC5wcm90
b3R5cGUuY3JlYXRlUmVzdWx0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7CisgICAgICAgIHRoaXMu
Y2hpbGRyZW4ucHVzaChub2RlKTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorfTsKKwog
ZnVuY3Rpb24gSW5zcGVjdGVkV2luZG93KCkKIHsKICAgICB0aGlzLm9uTG9hZGVkID0gbmV3IEV2
ZW50U2luaygiaW5zcGVjdGVkUGFnZUxvYWRlZCIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41ZDE1NWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeSA9IGZ1bmN0aW9uKGlkLCBk
aXNwbGF5TmFtZSwgcnVsZUNvdW50KQoreworICAgIHRoaXMuX2lkID0gaWQ7CisgICAgdGhpcy5f
ZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICB0aGlzLl9ydWxlQ291bnQgID0gcnVsZUNv
dW50OworfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUg
PSB7CisgICAgLy8gQXVkaXRDYXRlZ29yeSBpbnRlcmZhY2UKKyAgICBnZXQgaWQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCisKKyAgICBnZXQgZGlzcGxheU5hbWUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOworICAgIH0sCisKKyAg
ICBnZXQgcnVsZUNvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ydWxlQ291bnQ7
CisgICAgfSwKKworICAgIHJ1bjogZnVuY3Rpb24ocmVzb3VyY2VzLCBjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMo
dGhpcywgY2FsbGJhY2spOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0
Q2F0ZWdvcnlSZXN1bHRzID0gZnVuY3Rpb24oY2F0ZWdvcnksIGNhbGxiYWNrKQoreworICAgIHRo
aXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgdGhpcy5fcGVuZGluZ1J1bGVzID0gY2F0ZWdv
cnkucnVsZUNvdW50OworICAgIHRoaXMuX3J1bGVDb21wbGV0aW9uQ2FsbGJhY2sgPSBjYWxsYmFj
azsKKworICAgIHRoaXMuaWQgPSBjYXRlZ29yeS5pZCArICItIiArICsrV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLl9sYXN0SWQ7CisgICAgV2ViSW5zcGVjdG9yLmV4
dGVuc2lvblNlcnZlci5zdGFydEF1ZGl0UnVuKGNhdGVnb3J5LCB0aGlzKTsKK30KKworV2ViSW5z
cGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZSA9IHsKKyAgICBn
ZXQgY29tcGxldGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICF0aGlzLl9wZW5kaW5nUnVsZXM7
CisgICAgfSwKKworICAgIGNhbmNlbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgd2hpbGUg
KCF0aGlzLmNvbXBsZXRlKQorICAgICAgICAgICAgdGhpcy5fYWRkUmVzdWx0KG51bGwpOworICAg
IH0sCisKKyAgICBhZGRSZXN1bHQ6IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBkZXNjcmlwdGlvbiwg
c2V2ZXJpdHksIGRldGFpbHMpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVSZXN1bHQoZGlzcGxheU5hbWUpOworICAgICAgICByZXN1bHQuYWRk
Q2hpbGQoZGVzY3JpcHRpb24pOworICAgICAgICByZXN1bHQuc2V2ZXJpdHkgPSBzZXZlcml0eTsK
KyAgICAgICAgaWYgKGRldGFpbHMpCisgICAgICAgICAgICB0aGlzLl9hZGROb2RlKHJlc3VsdCwg
ZGV0YWlscyk7CisgICAgICAgIHRoaXMuX2FkZFJlc3VsdChyZXN1bHQpOworICAgIH0sCisKKyAg
ICBfYWRkTm9kZTogZnVuY3Rpb24ocGFyZW50LCBub2RlKQorICAgIHsKKyAgICAgICAgdmFyIGFk
ZGVkTm9kZSA9IHBhcmVudC5hZGRDaGlsZChub2RlLmNvbnRlbnRzLCBub2RlLmV4cGFuZGVkKTsK
KyAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICB0aGlzLl9h
ZGROb2RlKGFkZGVkTm9kZSwgbm9kZS5jaGlsZHJlbltpXSk7CisgICAgICAgIH0KKyAgICB9LAor
CisgICAgX2FkZFJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQorICAgIHsKKyAgICAgICAgdGhpcy5f
cnVsZUNvbXBsZXRpb25DYWxsYmFjayhyZXN1bHQpOworICAgICAgICB0aGlzLl9wZW5kaW5nUnVs
ZXMtLTsKKyAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUnVsZXMpCisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLnN0b3BBdWRpdFJ1bih0aGlzKTsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cy5fbGFzdElkID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24u
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNGMxOGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXZWJJbnNwZWN0b3IuY29tbW9uRXh0ZW5zaW9uU3ltYm9scyA9IGZ1bmN0aW9uKHBy
aXZhdGUpCit7CisgICAgCisgICAgaWYgKCFwcml2YXRlLmF1ZGl0cykKKyAgICAgICAgcHJpdmF0
ZS5hdWRpdHMgPSB7fTsKKworICAgIHByaXZhdGUuYXVkaXRzLlNldmVyaXR5ID0geworICAgICAg
ICBJbmZvOiAiaW5mbyIsCisgICAgICAgIFdhcm5pbmc6ICJ3YXJuaW5nIiwKKyAgICAgICAgU2V2
ZXJlOiAic2V2ZXJlIgorICAgIH07Cit9CisKK1dlYkluc3BlY3Rvci5leHRlbnNpb25BUEkgPSB7
fTsKKworV2ViSW5zcGVjdG9yLmNvbW1vbkV4dGVuc2lvblN5bWJvbHMoV2ViSW5zcGVjdG9yLmV4
dGVuc2lvbkFQSSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNl
cnZlci5qcwppbmRleCA5NWYzNzNmLi4wZmYwMzVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTQwLDExICs0MCwxNSBAQCBXZWJJbnNw
ZWN0b3IuRXh0ZW5zaW9uU2VydmVyID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX3JlZ2lzdGVySGFu
ZGxlcigiZ2V0UmVzb3VyY2VzIiwgdGhpcy5fb25HZXRSZXNvdXJjZXMuYmluZCh0aGlzKSk7CiAg
ICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVQYW5lbCIsIHRoaXMuX29uQ3JlYXRlUGFu
ZWwuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJjcmVhdGVTaWRlYmFy
UGFuZSIsIHRoaXMuX29uQ3JlYXRlU2lkZWJhci5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9yZWdp
c3RlckhhbmRsZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOyAKKyAgICB0aGlzLl9y
ZWdpc3RlckhhbmRsZXIoImxvZyIsIHRoaXMuX29uTG9nLmJpbmQodGhpcykpOwogICAgIHRoaXMu
X3JlZ2lzdGVySGFuZGxlcigiZXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UiLCB0aGlzLl9vbkV2YWx1
YXRlT25JbnNwZWN0ZWRQYWdlLmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxl
cigic2V0U2lkZWJhckhlaWdodCIsIHRoaXMuX29uU2V0U2lkZWJhckhlaWdodC5iaW5kKHRoaXMp
KTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoInNldFNpZGViYXJFeHBhbmRlZCIsIHRoaXMu
X29uU2V0U2lkZWJhckV4cGFuc2lvbi5iaW5kKHRoaXMpKTsKIAorICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigiYWRkQXVkaXRDYXRlZ29yeSIsIHRoaXMuX29uQWRkQXVkaXRDYXRlZ29yeS5iaW5k
KHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRsZXIoImFkZEF1ZGl0UmVzdWx0IiwgdGhp
cy5fb25BZGRBdWRpdFJlc3VsdC5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9yZWdpc3RlckhhbmRs
ZXIoInN0b3BBdWRpdENhdGVnb3J5UnVuIiwgdGhpcy5fb25TdG9wQXVkaXRDYXRlZ29yeVJ1bi5i
aW5kKHRoaXMpKTsKKwogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhp
cy5fb25XaW5kb3dNZXNzYWdlLmJpbmQodGhpcyksIGZhbHNlKTsKIH0KIApAQCAtODQsNiArODgs
MTcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3Bvc3ROb3RpZmljYXRpb24oInJlc2V0Iik7CiAgICAgfSwKIAorICAgIHN0YXJ0QXVk
aXRSdW46IGZ1bmN0aW9uKGNhdGVnb3J5LCBhdWRpdFJ1bikKKyAgICB7CisgICAgICAgIHRoaXMu
X2NsaWVudE9iamVjdHNbYXVkaXRSdW4uaWRdID0gYXVkaXRSdW47CisgICAgICAgIHRoaXMuX3Bv
c3ROb3RpZmljYXRpb24oImF1ZGl0LXN0YXJ0ZWQtIiArIGNhdGVnb3J5LmlkLCBhdWRpdFJ1bi5p
ZCk7CisgICAgfSwKKworICAgIHN0b3BBdWRpdFJ1bjogZnVuY3Rpb24oYXVkaXRSdW4pCisgICAg
eworICAgICAgICBkZWxldGUgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1bi5pZF07CisgICAg
fSwKKwogICAgIF9jb252ZXJ0UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsKQEAgLTEwMCw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9u
U2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIG1l
c3NhZ2UgPSB7CiAgICAgICAgICAgICBjb21tYW5kOiAibm90aWZ5LSIgKyB0eXBlLAotICAgICAg
ICAgICAgYXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEp
IAorICAgICAgICAgICAgYXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1
bWVudHMsIDEpCiAgICAgICAgIH07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Vic2Ny
aWJlcnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBzdWJzY3JpYmVyc1tpXS5wb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKQEAgLTI0OCw2ICsyNjMsMzYgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNl
cnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsKICAgICB9LAogCisg
ICAgX29uQWRkQXVkaXRDYXRlZ29yeTogZnVuY3Rpb24ocmVxdWVzdCkKKyAgICB7CisgICAgICAg
IHZhciBjYXRlZ29yeSA9IG5ldyBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeShy
ZXF1ZXN0LmlkLCByZXF1ZXN0LmRpc3BsYXlOYW1lLCByZXF1ZXN0LnJ1bGVDb3VudCk7CisgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5nZXRDYXRlZ29yeShjYXRlZ29yeS5p
ZCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfRVhJU1RTKGNhdGVnb3J5Lmlk
KTsKKyAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LmlkXSA9IGNhdGVnb3J5Owor
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy5hZGRDYXRlZ29yeShjYXRlZ29yeSk7
CisgICAgfSwKKworICAgIF9vbkFkZEF1ZGl0UmVzdWx0OiBmdW5jdGlvbihyZXF1ZXN0KQorICAg
IHsKKyAgICAgICAgdmFyIGF1ZGl0UmVzdWx0ID0gdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0
LnJlc3VsdElkXTsKKyAgICAgICAgaWYgKCFhdWRpdFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGF0dXMuRV9OT1RGT1VORChyZXF1ZXN0LnJlc3VsdElkKTsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGF1ZGl0UmVzdWx0LmFkZFJlc3VsdChyZXF1ZXN0LmRpc3BsYXlOYW1l
LCByZXF1ZXN0LmRlc2NyaXB0aW9uLCByZXF1ZXN0LnNldmVyaXR5LCByZXF1ZXN0LmRldGFpbHMp
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLk9LKCk7CisgICAgfSwKKworICAgIF9vblN0
b3BBdWRpdENhdGVnb3J5UnVuOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdmFy
IGF1ZGl0UnVuID0gdGhpcy5fY2xpZW50T2JqZWN0c1tyZXF1ZXN0LnJlc3VsdElkXTsKKyAgICAg
ICAgaWYgKCFhdWRpdFJ1bikKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXMuRV9OT1RG
T1VORChyZXF1ZXN0LnJlc3VsdElkKTsKKyAgICAgICAgYXVkaXRSdW4uY2FuY2VsKCk7CisgICAg
fSwKKwogICAgIGluaXRFeHRlbnNpb25zOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBJbnNw
ZWN0b3JFeHRlbnNpb25SZWdpc3RyeS5nZXRFeHRlbnNpb25zQXN5bmMoKTsKQEAgLTI1NSw3ICsz
MDAsOCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAg
IF9hZGRFeHRlbnNpb25zOiBmdW5jdGlvbihleHRlbnNpb25zKQogICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnNldEV4dGVuc2lvbkFQSSgiKCIgKyBpbmplY3RlZEV4dGVuc2lv
bkFQSS50b1N0cmluZygpICsgIikiKTsgLy8gU2VlIEV4dGVuc2lvbkFQSS5qcyBmb3IgZGV0YWls
cy4KKyAgICAgICAgLy8gU2VlIEV4dGVuc2lvbkFQSS5qcyBhbmQgRXh0ZW5zaW9uQ29tbW9uLmpz
IGZvciBkZXRhaWxzLgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0RXh0ZW5zaW9u
QVBJKHRoaXMuX2J1aWxkRXh0ZW5zaW9uQVBJSW5qZWN0ZWRTY3JpcHQoKSk7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
dmFyIGV4dGVuc2lvbiA9IGV4dGVuc2lvbnNbaV07CiAgICAgICAgICAgICB0cnkgewpAQCAtMjcx
LDYgKzMxNywxNSBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogICAgIH0sCiAKKyAgICBfYnVpbGRFeHRlbnNpb25BUElJbmplY3RlZFNjcmlw
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICIoZnVuY3Rpb24oKXsgIiArCisg
ICAgICAgICAgICAidmFyIHByaXZhdGUgPSB7fTsiICsKKyAgICAgICAgICAgICIoIiArIFdlYklu
c3BlY3Rvci5jb21tb25FeHRlbnNpb25TeW1ib2xzLnRvU3RyaW5nKCkgKyAiKShwcml2YXRlKTsi
ICsKKyAgICAgICAgICAgICIoIiArIFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS50
b1N0cmluZygpICsgIikuYXBwbHkodGhpcywgYXJndW1lbnRzKTsiICsKKyAgICAgICAgICAgICJ9
KSI7CisgICAgfSwKKwogICAgIF9vbldpbmRvd01lc3NhZ2U6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEgIT09ICJyZWdpc3RlckV4dGVuc2lvbiIpCkBAIC0z
MDAsMTIgKzM1NSwxNCBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIuX3N0YXR1c2VzID0g
CitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLl9zdGF0dXNlcyA9CiB7CiAgICAgT0s6ICIi
LAotICAgIEVfTk9URk9VTkQ6ICJPYmplY3Qgbm90IGZvdW5kICglcykiLAotICAgIEVfTk9UU1VQ
UE9SVEVEOiAiT2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJhdGlvbiAoJXMp
IiwKLSAgICBFX0VYSVNUUzogIk9iamVjdCBhbHJlYWR5IGV4aXN0cyAoJXMpIgorICAgIEVfRVhJ
U1RTOiAiT2JqZWN0IGFscmVhZHkgZXhpc3RzOiAlcyIsCisgICAgRV9CQURBUkc6ICJJbnZhbGlk
IGFyZ3VtZW50ICVzOiAlcyIsCisgICAgRV9CQURBUkdUWVBFOiAiSW52YWxpZCB0eXBlIGZvciBh
cmd1bWVudCAlczogZ290ICVzLCBleHBlY3RlZCAlcyIsCisgICAgRV9OT1RGT1VORDogIk9iamVj
dCBub3QgZm91bmQ6ICVzIiwKKyAgICBFX05PVFNVUFBPUlRFRDogIk9iamVjdCBkb2VzIG5vdCBz
dXBwb3J0IHJlcXVlc3RlZCBvcGVyYXRpb246ICVzIiwKIH0KIAogV2ViSW5zcGVjdG9yLkV4dGVu
c2lvblN0YXR1cyA9IGZ1bmN0aW9uKCkKQEAgLTMxOSw3ICszNzYsNyBAQCBXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uU3RhdHVzID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgc3RhdHVzLmlzRXJyb3Ig
PSB0cnVlOwogICAgICAgICAgICAgY29uc29sZS5sb2coIkV4dGVuc2lvbiBzZXJ2ZXIgZXJyb3I6
ICIgKyBTdHJpbmcudnNwcmludGYoZGVzY3JpcHRpb24sIGRldGFpbHMpKTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gc3RhdHVzOyAKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICB9CiAg
ICAgZm9yIChzdGF0dXMgaW4gV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5fc3RhdHVzZXMp
CiAgICAgICAgIHRoaXNbc3RhdHVzXSA9IG1ha2VTdGF0dXMuYmluZChudWxsLCBzdGF0dXMpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA0OTAxODU3Li5jNjUxMTVm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNCw2ICs0LDcgQEAK
ICAgICA8ZmlsZT5BYnN0cmFjdFRpbWVsaW5lUGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXBw
bGljYXRpb25DYWNoZUl0ZW1zVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdENhdGVnb3Jp
ZXMuanM8L2ZpbGU+CisgICAgPGZpbGU+QXVkaXRGb3JtYXR0ZXJzLmpzPC9maWxlPgogICAgIDxm
aWxlPkF1ZGl0TGF1bmNoZXJWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0UmVzdWx0Vmll
dy5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdFJ1bGVzLmpzPC9maWxlPgpAQCAtMzUsNiArMzYs
OCBAQAogICAgIDxmaWxlPkVsZW1lbnRzVHJlZU91dGxpbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25B
UEkuanM8L2ZpbGU+CisgICAgPGZpbGU+RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qczwvZmlsZT4K
KyAgICA8ZmlsZT5FeHRlbnNpb25Db21tb24uanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9u
UGFuZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzPC9maWxl
PgogICAgIDxmaWxlPkV4dGVuc2lvblNlcnZlci5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCAxNGUyY2RjLi4zYTNlMzFiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC05OCw2ICs5OCw4IEBA
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJvZmls
ZXNQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iQ29uc29sZVBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25BUEkuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVuc2lv
bkNvbW1vbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRXh0ZW5zaW9uU2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25QYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRzUGFuZWwuanMiPjwvc2NyaXB0
PgpAQCAtMTA1LDYgKzEwNyw3IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iQXVkaXRMYXVuY2hlclZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkF1ZGl0UnVsZXMuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkF1ZGl0Q2F0ZWdvcmllcy5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQXVk
aXRGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNvdXJjZUZyYW1lLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01TeW50YXhIaWdobGlnaHRlci5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0
aWVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCA2
NmNmMjg0Li5lOGFkZmY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
dXRpbGl0aWVzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMu
anMKQEAgLTczMiwxMiArNzMyLDYgQEAgQXJyYXkuY29udmVydCA9IGZ1bmN0aW9uKGxpc3QpCiAK
IGZ1bmN0aW9uIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihh
bk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKIHsKLSAgICAvLyBpbmRleE9mIHJldHVybnMgKC1s
b3dlckJvdW5kIC0gMSkuIFRha2luZyAoLXJlc3VsdCAtIDEpIHdvcmtzIG91dCB0byBsb3dlckJv
dW5kLgotICAgIHJldHVybiAoLWluZGV4T2ZPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFu
T2JqZWN0LCBhTGlzdCwgYUZ1bmN0aW9uKSAtIDEpOwotfQotCi1mdW5jdGlvbiBpbmRleE9mT2Jq
ZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihhbk9iamVjdCwgYUxpc3QsIGFGdW5jdGlvbikKLXsK
ICAgICB2YXIgZmlyc3QgPSAwOwogICAgIHZhciBsYXN0ID0gYUxpc3QubGVuZ3RoIC0gMTsKICAg
ICB2YXIgZmxvb3IgPSBNYXRoLmZsb29yOwpAQCAtNzYwLDkgKzc1NCw3IEBAIGZ1bmN0aW9uIGlu
ZGV4T2ZPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0LCBhTGlzdCwgYUZ1bmN0
aW9uKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQnkgcmV0dXJuaW5nIDEgbGVzcyB0aGFu
IHRoZSBuZWdhdGl2ZSBsb3dlciBzZWFyY2ggYm91bmQsIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0
aW9uCi0gICAgLy8gZm9yIGJvdGggaW5kZXhPZiBhbmQgaW5zZXJ0aW9uSW5kZXhGb3IsIHdpdGgg
c29tZSBzaW1wbGUgYXJpdGhtZXRpYy4KLSAgICByZXR1cm4gKC1maXJzdCAtIDEpOworICAgIHJl
dHVybiBmaXJzdDsKIH0KIAogU3RyaW5nLnNwcmludGYgPSBmdW5jdGlvbihmb3JtYXQpCg==
</data>
<flag name="review"
          id="54377"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="54378"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66022</attachid>
            <date>2010-08-31 01:39:19 -0700</date>
            <delta_ts>2010-08-31 04:43:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>extension-audits.patch</filename>
            <type>text/plain</type>
            <size>66663</size>
            <attacher name="Andrey Kosyakov">caseq</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMWMwMDRmLi42NmRkMDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDgt
MzAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVk
aXRzIHN1cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVj
dG9yL2luc3BlY3Rvci10ZXN0Mi5qczoKKyAgICAgICAgKGluaXRpYWxpemVfSW5zcGVjdG9yVGVz
dCk6CisgICAgICAgIChydW5UZXN0LnJ1blRlc3RJbkZyb250ZW5kKToKKyAgICAgICAgKHJ1blRl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAoZnJv
bnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cyk6CisgICAgICAgIChmcm9udGVuZF9jb2xsZWN0VGV4
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdHMtdGVzdHMyLmpzOiBBZGRlZC4K
KyAgICAgICAgKGluaXRpYWxpemVfQXVkaXRUZXN0cy5JbnNwZWN0b3JUZXN0LmNvbGxlY3RBdWRp
dFJlc3VsdHMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9BdWRpdFRlc3RzLkluc3BlY3RvclRlc3Qu
Y29sbGVjdFRleHRDb250ZW50KToKKyAgICAgICAgKGluaXRpYWxpemVfQXVkaXRUZXN0cyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGkuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZXh0
ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAoZXh0ZW5z
aW9uX3J1bkF1ZGl0cy5vbk1lc3NhZ2UpOgorICAgICAgICAoZXh0ZW5zaW9uX3J1bkF1ZGl0cyk6
CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNBdWRpdHNUZXN0Lkluc3BlY3RvclRlc3Qu
c3RhcnRFeHRlbnNpb25BdWRpdHMub25BdWRpdHNEb25lKToKKyAgICAgICAgKGluaXRpYWxpemVf
RXh0ZW5zaW9uc0F1ZGl0c1Rlc3QuSW5zcGVjdG9yVGVzdC5zdGFydEV4dGVuc2lvbkF1ZGl0cyk6
CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNBdWRpdHNUZXN0KToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qczoKKyAgICAgICAgKGV4dGVuc2lvbkZ1bmN0aW9u
cyk6CisgICAgICAgIChpbml0aWFsaXplX0V4dGVuc2lvbnNUZXN0Lkluc3BlY3RvclRlc3QuZGlz
cGF0Y2hPbk1lc3NhZ2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9FeHRlbnNpb25zVGVzdC5JbnNw
ZWN0b3JUZXN0LnJ1bkV4dGVuc2lvblRlc3RzKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9leHRlbnNpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3Jlc291cmNl
cy9hdWRpdHMtc2NyaXB0My5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVzb3Vy
Y2VzL2V4dGVuc2lvbi1tYWluLmpzOgorICAgICAgICAob25UZXN0c0RvbmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0wOC0zMSAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVt
IHRlc3QgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
aW5zcGVjdG9yLXRlc3QyLmpzCmluZGV4IDRkOGJmN2IuLjRmYjU2MmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdDIuanMKQEAgLTMy
LDYgKzMyLDIxIEBAIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSA9IGZ1bmN0aW9uKGNhbGxiYWNr
KQogICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicmVzZXQiLCBj
YWxsYmFjayk7CiB9OwogCitJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcgPSBm
dW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJj
ZXMucmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpCisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuX2FkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLCAicmVz
ZXQiLCBjYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZW5hYmxlUmVzb3VyY2VU
cmFja2luZyhmYWxzZSk7CisgICAgfQorfQorCitJbnNwZWN0b3JUZXN0LmRpc2FibGVSZXNvdXJj
ZVRyYWNraW5nID0gZnVuY3Rpb24oKQoreworICAgIEluc3BlY3RvckJhY2tlbmQuZGlzYWJsZVJl
c291cmNlVHJhY2tpbmcoZmFsc2UpOworfQorCiBJbnNwZWN0b3JUZXN0LmZpbmRET01Ob2RlID0g
ZnVuY3Rpb24ocm9vdCwgZmlsdGVyLCBjYWxsYmFjaykKIHsKICAgICB2YXIgZm91bmQgPSBmYWxz
ZTsKQEAgLTExOCw4ICsxMzMsMTMgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIEluc3Bl
Y3RvclRlc3QgPSB7fTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3RDYWxsSWQg
PSBjb21wbGV0ZVRlc3RDYWxsSWQ7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0
aWFsaXphdGlvbkZ1bmN0aW9ucy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGluaXRpYWxpemF0
aW9uRnVuY3Rpb25zW2ldKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlhbGl6
YXRpb25GdW5jdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgaW5pdGlhbGl6YXRpb25GdW5jdGlvbnNbaV0oKTsKKyAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFeGNlcHRpb24gaW4gdGVz
dCBpbml0aWFsaXphdGlvbjogIiArIGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAgICAgICAgdGVzdEZ1
bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXBhbmVs
LWZ1bmN0aW9uYWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVu
Y3Rpb25hbC5odG1sCmluZGV4IDcxNTM3ZjQuLmU3YTI4MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9hdWRpdHMtcGFuZWwtZnVuY3Rpb25hbC5odG1sCkBAIC03LDEyICs3LDEy
IEBACiB9CiA8L3N0eWxlPgogPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMuanMi
Pjwvc2NyaXB0PgogCiA8IS0tIFRoZXNlIHNjcmlwdHMgYXJlIG5lZWRlZCB0byByZXN1bHQgaW4g
YSB2aW9sYXRpb24gb2YgdGhlIG1heCBKUyByZXNvdXJjZSBjb3VudCBmcm9tIHRoZSBzYW1lIGRv
bWFpbiAtLT4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDEuanMiPjwvc2Ny
aXB0PgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvYXVkaXRzLXN0eWxl
MS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaXRzLXNj
cmlwdDIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdHMtc2NyaXB0
My5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBkb2l0KCkKQEAgLTUwLDE0ICs1
MCw3IEBAIGZ1bmN0aW9uIGZyb250ZW5kX3J1bkF1ZGl0cyh0ZXN0Q29udHJvbGxlcikKIAogICAg
ICAgICB0ZXN0Q29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgLy8gQXVkaXRzIGFyZSBkb25lLCBjaGVjayByZXN1bHRzLgotICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuc2hvd1Jlc3VsdHMoV2ViSW5zcGVjdG9y
LnBhbmVscy5hdWRpdHMuYXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQuY2hpbGRyZW5bMF0ucmVzdWx0
cyk7Ci0gICAgICAgICAgICB2YXIgbGlFbGVtZW50cyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVk
aXRzLnZpc2libGVWaWV3LmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpIik7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxpRWxlbWVudHMubGVuZ3RoOyArK2opIHsKLSAg
ICAgICAgICAgICAgICBpZiAobGlFbGVtZW50c1tqXS50cmVlRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgbGlFbGVtZW50c1tqXS50cmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHZhciBvdXRwdXQgPSBbXTsKLSAgICAgICAgICAgIGZyb250ZW5kX2Nv
bGxlY3RUZXh0Q29udGVudChXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5l
bGVtZW50LCAwLCBvdXRwdXQpOworICAgICAgICAgICAgdmFyIG91dHB1dCA9IGZyb250ZW5kX2Nv
bGxlY3RBdWRpdFJlc3VsdHMoKTsKICAgICAgICAgICAgIC8vIEF2b2lkIGluZmx1ZW5jaW5nIHRl
c3RzIHRoYXQgcmVxdWlyZSByZXNvdXJjZSB0cmFja2luZyB0byBiZSBkaXNhYmxlZC4KICAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZGlzYWJsZVJlc291cmNlVHJhY2tpbmcoZmFsc2UpOwog
ICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5j
dGlvbigpIHsKQEAgLTY5LDI5ICs2Miw2IEBAIGZ1bmN0aW9uIGZyb250ZW5kX3J1bkF1ZGl0cyh0
ZXN0Q29udHJvbGxlcikKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGZyb250ZW5kX2NvbGxlY3RUZXh0
Q29udGVudChlbGVtZW50LCBsZXZlbCwgb3V0cHV0KQotewotICAgIHZhciBub2RlT3V0cHV0ID0g
IiI7Ci0gICAgdmFyIGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkOwotICAgIHdoaWxlIChjaGls
ZCkgewotICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxldmVsOyArK2kpCi0gICAgICAgICAgICAg
ICAgbm9kZU91dHB1dCArPSAiICI7Ci0gICAgICAgICAgICBub2RlT3V0cHV0ICs9IGNoaWxkLm5v
ZGVWYWx1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVN
RU5UX05PREUpIHsKLSAgICAgICAgICAgIGlmIChub2RlT3V0cHV0ICE9PSAiIikgewotICAgICAg
ICAgICAgICAgIG91dHB1dC5wdXNoKG5vZGVPdXRwdXQpOwotICAgICAgICAgICAgICAgIG5vZGVP
dXRwdXQgPSAiIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyb250ZW5kX2NvbGxlY3RU
ZXh0Q29udGVudChjaGlsZCwgbGV2ZWwgKyAxLCBvdXRwdXQpOwotICAgICAgICB9Ci0gICAgICAg
IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7Ci0gICAgfQotICAgIGlmIChub2RlT3V0cHV0ICE9
PSAiIikKLSAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Ci0gICAgcmV0dXJuOwotfQot
CiA8L3NjcmlwdD4KIDwvaGVhZD4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2F1ZGl0cy10ZXN0cy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtdGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTAyYzZiNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtdGVzdHMuanMKQEAgLTAsMCArMSwz
NSBAQAorZnVuY3Rpb24gZnJvbnRlbmRfY29sbGVjdEF1ZGl0UmVzdWx0cygpCit7CisgICAgV2Vi
SW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuc2hvd1Jlc3VsdHMoV2ViSW5zcGVjdG9yLnBhbmVscy5h
dWRpdHMuYXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQuY2hpbGRyZW5bMF0ucmVzdWx0cyk7CisgICAg
dmFyIGxpRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5l
bGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpOworICAgIGZvciAodmFyIGogPSAwOyBq
IDwgbGlFbGVtZW50cy5sZW5ndGg7ICsraikgeworICAgICAgICBpZiAobGlFbGVtZW50c1tqXS50
cmVlRWxlbWVudCkKKyAgICAgICAgICAgIGxpRWxlbWVudHNbal0udHJlZUVsZW1lbnQuZXhwYW5k
KCk7CisgICAgfQorICAgIHZhciBvdXRwdXQgPSBbXTsKKyAgICBmcm9udGVuZF9jb2xsZWN0VGV4
dENvbnRlbnQoV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMudmlzaWJsZVZpZXcuZWxlbWVudCwg
MCwgb3V0cHV0KTsKKyAgICByZXR1cm4gb3V0cHV0OworfQorCitmdW5jdGlvbiBmcm9udGVuZF9j
b2xsZWN0VGV4dENvbnRlbnQoZWxlbWVudCwgbGV2ZWwsIG91dHB1dCkKK3sKKyAgICB2YXIgbm9k
ZU91dHB1dCA9ICIiOworICAgIHZhciBjaGlsZCA9IGVsZW1lbnQuZmlyc3RDaGlsZDsKKworICAg
IHdoaWxlIChjaGlsZCkgeworICAgICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IE5vZGUuVEVY
VF9OT0RFKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxldmVsOyArK2kpCisg
ICAgICAgICAgICAgICAgbm9kZU91dHB1dCArPSAiICI7CisgICAgICAgICAgICBub2RlT3V0cHV0
ICs9IGNoaWxkLm5vZGVWYWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5ub2RlVHlwZSA9
PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgIGlmIChub2RlT3V0cHV0ICE9PSAi
IikgeworICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoKG5vZGVPdXRwdXQpOworICAgICAgICAg
ICAgICAgIG5vZGVPdXRwdXQgPSAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyb250
ZW5kX2NvbGxlY3RUZXh0Q29udGVudChjaGlsZCwgbGV2ZWwgKyAxLCBvdXRwdXQpOworICAgICAg
ICB9CisgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7CisgICAgfQorICAgIGlmIChu
b2RlT3V0cHV0ICE9PSAiIikKKyAgICAgICAgb3V0cHV0LnB1c2gobm9kZU91dHB1dCk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXRzLXRlc3RzMi5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9hdWRpdHMtdGVzdHMyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAuLjU1NGYzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvYXVkaXRzLXRlc3RzMi5qcwpAQCAtMCwwICsxLDM4IEBACitmdW5jdGlvbiBpbml0aWFs
aXplX0F1ZGl0VGVzdHMoKQoreworCitJbnNwZWN0b3JUZXN0LmNvbGxlY3RBdWRpdFJlc3VsdHMg
PSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuc2hvd1Jlc3Vs
dHMoV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuYXVkaXRSZXN1bHRzVHJlZUVsZW1lbnQuY2hp
bGRyZW5bMF0ucmVzdWx0cyk7CisgICAgdmFyIGxpRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IucGFu
ZWxzLmF1ZGl0cy52aXNpYmxlVmlldy5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIp
OworICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlFbGVtZW50cy5sZW5ndGg7ICsraikgeworICAg
ICAgICBpZiAobGlFbGVtZW50c1tqXS50cmVlRWxlbWVudCkKKyAgICAgICAgICAgIGxpRWxlbWVu
dHNbal0udHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgfQorICAgIEluc3BlY3RvclRlc3QuY29s
bGVjdFRleHRDb250ZW50KFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLnZpc2libGVWaWV3LmVs
ZW1lbnQsIDApOworfQorCitJbnNwZWN0b3JUZXN0LmNvbGxlY3RUZXh0Q29udGVudCA9IGZ1bmN0
aW9uKGVsZW1lbnQsIGxldmVsKQoreworICAgIHZhciBub2RlT3V0cHV0ID0gIiI7CisgICAgdmFy
IGNoaWxkID0gZWxlbWVudC5maXJzdENoaWxkOworCisgICAgd2hpbGUgKGNoaWxkKSB7CisgICAg
ICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGV2ZWw7ICsraSkKKyAgICAgICAgICAgICAgICBub2RlT3V0
cHV0ICs9ICIgIjsKKyAgICAgICAgICAgIG5vZGVPdXRwdXQgKz0gY2hpbGQubm9kZVZhbHVlOwor
ICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkg
eworICAgICAgICAgICAgaWYgKG5vZGVPdXRwdXQgIT09ICIiKSB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQobm9kZU91dHB1dCk7CisgICAgICAgICAgICAgICAgbm9k
ZU91dHB1dCA9ICIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b2xsZWN0VGV4dENvbnRlbnQoY2hpbGQsIGxldmVsICsgMSk7CisgICAgICAgIH0KKyAgICAgICAg
Y2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKKyAgICB9CisgICAgaWYgKG5vZGVPdXRwdXQgIT09
ICIiKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChub2RlT3V0cHV0KTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS1leHBlY3RlZC50
eHQKaW5kZXggMzVhOTlkMi4uYzA3NDcxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2V4dGVuc2lvbnMtYXBpLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hcGktZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQsOSBAQCBTdGFydGVkIGV4
dGVuc2lvbi4KIFJ1bm5pbmcgdGVzdHMuLi4KIFJVTk5JTkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RB
UEkKIHsKKyAgICBhdWRpdHMgOiB7CisgICAgICAgIGFkZENhdGVnb3J5IDogPGZ1bmN0aW9uPgor
ICAgIH0KICAgICBpbnNwZWN0ZWRXaW5kb3cgOiB7CiAgICAgICAgIG9uTG9hZGVkIDogewogICAg
ICAgICAgICAgYWRkTGlzdGVuZXIgOiA8ZnVuY3Rpb24+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zLWFwaS5odG1sCmluZGV4IDU2MGNmZjcuLmZjOWRhMGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWFwaS5odG1sCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJleHRlbnNpb25zLXRlc3Qu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogCkBAIC0xMiw3
ICsxMiw3IEBAIGZ1bmN0aW9uIGV4dGVuc2lvbl90ZXN0QVBJKG5leHRUZXN0KQogCiA8L3Njcmlw
dD4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgogPHA+VGVzdHMgcHVibGljIGludGVyZmFjZSBvZiBXZWJJbnNwZWN0b3IgRXh0ZW5z
aW9ucyBBUEk8L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1hcGktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzJhYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM4IEBACitUZXN0cyBhdWRpdHMgc3VwcG9ydCBpbiBXZWJJbnNwZWN0b3IgRXh0ZW5z
aW9ucyBBUEkKKworU3RhcnRlZCBleHRlbnNpb24uCitSdW5uaW5nIHRlc3RzLi4uCitSVU5OSU5H
IFRFU1Q6IGV4dGVuc2lvbl90ZXN0QXVkaXRzQVBJCitBZGRlZCBhdWRpdCBjYXRlZ29yeSwgcmVz
dWx0IGR1bXAgZm9sbG93czoKK3sKKyAgICBvbkF1ZGl0U3RhcnRlZCA6IHsKKyAgICAgICAgYWRk
TGlzdGVuZXIgOiA8ZnVuY3Rpb24+CisgICAgICAgIHJlbW92ZUxpc3RlbmVyIDogPGZ1bmN0aW9u
PgorICAgIH0KK30KK2NhdGVnb3J5Lm9uQXVkaXRTdGFydGVkIGZpcmVkLCByZXN1bHRzIGR1bXAg
Zm9sbG93czoKK3sKKyAgICBhZGRSZXN1bHQgOiA8ZnVuY3Rpb24+CisgICAgY3JlYXRlUmVzdWx0
IDogPGZ1bmN0aW9uPgorICAgIGRvbmUgOiA8ZnVuY3Rpb24+CisgICAgdXJsIDogPGZ1bmN0aW9u
PgorICAgIHNuaXBwZXQgOiA8ZnVuY3Rpb24+CisgICAgdGV4dCA6IDxmdW5jdGlvbj4KKyAgICBT
ZXZlcml0eSA6IHsKKyAgICAgICAgSW5mbyA6ICJpbmZvIgorICAgICAgICBXYXJuaW5nIDogIndh
cm5pbmciCisgICAgICAgIFNldmVyZSA6ICJzZXZlcmUiCisgICAgfQorfQoreworICAgIGNvbnRl
bnRzIDogeworICAgICAgICAwIDogIlN1YnRyZWUiCisgICAgfQorICAgIGNoaWxkcmVuIDogewor
ICAgIH0KKyAgICBleHBhbmRlZCA6IGZhbHNlCisgICAgYWRkQ2hpbGQgOiA8ZnVuY3Rpb24+Cit9
CitBbGwgdGVzdHMgZG9uZS4KKyAgRXh0ZW5zaW9uIGF1ZGl0cworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMC4uYmYxYmVmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1hcGkuaHRtbApAQCAtMCwwICsxLDMyIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZXh0ZW5zaW9ucy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJleHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RBdWRp
dHNBUEkobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0Q2F0ZWdvcnkocmVz
dWx0cykKKyAgICB7CisgICAgICAgIGxvZygiY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQs
IHJlc3VsdHMgZHVtcCBmb2xsb3dzOiIpOworICAgICAgICBkdW1wT2JqZWN0KHJlc3VsdHMpOwor
ICAgICAgICB2YXIgbm9kZSA9IHJlc3VsdHMuY3JlYXRlUmVzdWx0KCJTdWJ0cmVlIik7CisgICAg
ICAgIGR1bXBPYmplY3Qobm9kZSk7CisgICAgICAgIHJlc3VsdHMuZG9uZSgpOworICAgIH0KKyAg
ICB2YXIgY2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5KCJFeHRlbnNp
b24gYXVkaXRzIiwgMjApOworICAgIGNhdGVnb3J5Lm9uQXVkaXRTdGFydGVkLmFkZExpc3RlbmVy
KG9uU3RhcnRBdWRpdENhdGVnb3J5KTsKKyAgICBsb2coIkFkZGVkIGF1ZGl0IGNhdGVnb3J5LCBy
ZXN1bHQgZHVtcCBmb2xsb3dzOiIpOworICAgIGR1bXBPYmplY3QoY2F0ZWdvcnkpOworICAgIGV4
dGVuc2lvbl9ydW5BdWRpdHMobmV4dFRlc3QpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYklu
c3BlY3RvciBFeHRlbnNpb25zIEFQSTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZWVlNzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjggQEAKK1Rlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdlYkluc3BlY3RvciBFeHRl
bnNpb25zIEFQSQorCitTdGFydGVkIGV4dGVuc2lvbi4KK1J1bm5pbmcgdGVzdHMuLi4KK1JVTk5J
TkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RBdWRpdHMKK0FkZGVkIGF1ZGl0IGNhdGVnb3J5LgorY2F0
ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQKK2ZhaWxlZENhdGVnb3J5Lm9uQXVkaXRTdGFydGVk
IGZpcmVkLCB0aHJvd2luZyBleGNlcHRpb24KK0FsbCB0ZXN0cyBkb25lLgorICBFeHRlbnNpb24g
YXVkaXRzCisgICAgRmFpbGVkIHJ1bGUgKDQyKQorICAgICB0aGlzIHJ1bGUgYWx3YXlzIGZhaWxz
CisgICAgUnVsZSB3aXRoIGRldGFpbHMgc3VidHJlZSAoMSkKKyAgICAgVGhpcyBydWxlIGhhcyBh
IGxvdCBvZiBkZXRhaWxzCisgICAgICBTdWJ0cmVlCisgICAgICAgU29tZSB1cmw6IAorICAgICAg
ICBXZWJLaXQKKyAgICAgICAgbW9yZSB0ZXh0IAorICAgICAgICBodHRwOi8vd3d3Lmdvb2dsZS5j
b20KKyAgICAgICAuLi4gYW5kIGEgc25pcHBldAorICAgICAgICAgZnVuY3Rpb24gcmFuZCgpCisg
ICAgICAgICB7CisgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICB9CisgICAgUGFzc2Vk
IHJ1bGUKKyAgICAgdGhpcyBydWxlIGFsd2F5cyBwYXNzZXMgb2sKKyAgRXh0ZW5zaW9uIGF1ZGl0
cyB0aGF0IGZhaWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lv
bnMtYXVkaXRzLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXVk
aXRzLXRlc3RzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNWUyNjQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRp
dHMtdGVzdHMuanMKQEAgLTAsMCArMSw0NCBAQAorZnVuY3Rpb24gZXh0ZW5zaW9uX3J1bkF1ZGl0
cyhjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiBvbk1lc3NhZ2UoZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImF1ZGl0cy1jb21wbGV0ZSIpCisgICAgICAgICAgICBj
YWxsYmFjaygpOworICAgIH0KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IG9uTWVzc2FnZSwgZmFsc2UpOworICAgIHRvcC5wb3N0TWVzc2FnZSgicnVuLWF1ZGl0cyIsICIq
Iik7Cit9CisKKy8vIHJ1bnMgaW4gZnJvbnQtZW5kCit2YXIgaW5pdGlhbGl6ZV9FeHRlbnNpb25z
QXVkaXRzVGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0RXh0ZW5z
aW9uQXVkaXRzID0gZnVuY3Rpb24oKSAKKyAgICB7CisgICAgICAgIGNvbnN0IGxhdW5jaGVyVmll
dyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLl9sYXVuY2hlclZpZXc7CisgICAgICAgIGxh
dW5jaGVyVmlldy5fc2VsZWN0QWxsQ2xpY2tlZChmYWxzZSk7CisgICAgICAgIGxhdW5jaGVyVmll
dy5fYXVkaXRQcmVzZW50U3RhdGVFbGVtZW50LmNoZWNrZWQgPSB0cnVlOworCisgICAgICAgIHZh
ciBleHRlbnNpb25DYXRlZ29yaWVzID0gZG9jdW1lbnQuZXZhbHVhdGUoImxhYmVsW3N0YXJ0cy13
aXRoKC4sJ0V4dGVuc2lvbiAnKV0vaW5wdXRbQHR5cGU9J2NoZWNrYm94J10iLAorICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnBhbmVscy5hdWRpdHMuX2xhdW5jaGVyVmlldy5fY2F0ZWdvcmllc0Vs
ZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxs
KTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dGVuc2lvbkNhdGVnb3JpZXMuc25h
cHNob3RMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGV4dGVuc2lvbkNhdGVnb3JpZXMuc25hcHNo
b3RJdGVtKGkpLmNsaWNrKCk7CisKKyAgICAgICAgZnVuY3Rpb24gb25BdWRpdHNEb25lKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb2xsZWN0QXVkaXRSZXN1bHRzKCk7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICBmcmFtZXNbaV0ucG9zdE1lc3NhZ2UoImF1ZGl0cy1jb21wbGV0ZSIsICIq
Iik7CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0Ll9hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5wYW5lbHMuYXVkaXRzLCAiX2F1ZGl0RmluaXNoZWRDYWxsYmFjayIsIG9uQXVkaXRz
RG9uZSwgdHJ1ZSk7CisgICAgICAgIGxhdW5jaGVyVmlldy5fbGF1bmNoQnV0dG9uQ2xpY2tlZCgp
OworICAgIH0KK30KKwordGVzdCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmRp
c3BhdGNoT25NZXNzYWdlKCJydW4tYXVkaXRzIiwgSW5zcGVjdG9yVGVzdC5zdGFydEV4dGVuc2lv
bkF1ZGl0cyk7CisgICAgSW5zcGVjdG9yVGVzdC5ydW5FeHRlbnNpb25UZXN0cygpOworfQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhlYjUyNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbApAQCAtMCwwICsxLDU5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZXh0ZW5zaW9ucy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJhdWRpdHMtdGVzdHMyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJleHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZXh0ZW5zaW9uX3Rlc3RB
dWRpdHMobmV4dFRlc3QpCit7CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0Q2F0ZWdvcnkocmVz
dWx0cykKKyAgICB7CisgICAgICAgIGxvZygiY2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQgZmlyZWQi
KTsKKyAgICAgICAgcmVzdWx0cy5hZGRSZXN1bHQoIlBhc3NlZCBydWxlIiwgInRoaXMgcnVsZSBh
bHdheXMgcGFzc2VzIG9rIiwgcmVzdWx0cy5TZXZlcml0eS5JbmZvKTsKKyAgICAgICAgcmVzdWx0
cy5hZGRSZXN1bHQoIkZhaWxlZCBydWxlICg0MikiLCAidGhpcyBydWxlIGFsd2F5cyBmYWlscyIs
IHJlc3VsdHMuU2V2ZXJpdHkuU2V2ZXJlKTsKKworICAgICAgICB2YXIgbm9kZSA9IHJlc3VsdHMu
Y3JlYXRlUmVzdWx0KCJTdWJ0cmVlIik7CisgICAgICAgIG5vZGUuYWRkQ2hpbGQoIlNvbWUgdXJs
OiAiLCByZXN1bHRzLnVybCgiaHR0cDovL3d3dy53ZWJraXQub3JnIiwgIldlYktpdCIpLCAiIG1v
cmUgdGV4dCAiLCByZXN1bHRzLnVybCgiaHR0cDovL3d3dy5nb29nbGUuY29tIikpOworICAgICAg
ICB2YXIgbmVzdGVkTm9kZSA9IG5vZGUuYWRkQ2hpbGQoIi4uLiBhbmQgYSBzbmlwcGV0Iik7Cisg
ICAgICAgIG5lc3RlZE5vZGUuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICBuZXN0ZWROb2RlLmFk
ZENoaWxkKHJlc3VsdHMuc25pcHBldCgiZnVuY3Rpb24gcmFuZCgpXG57XG4gICAgcmV0dXJuIDQ7
XG59IikpOworCisgICAgICAgIHJlc3VsdHMuYWRkUmVzdWx0KCJSdWxlIHdpdGggZGV0YWlscyBz
dWJ0cmVlICgxKSIsICJUaGlzIHJ1bGUgaGFzIGEgbG90IG9mIGRldGFpbHMiLCByZXN1bHRzLlNl
dmVyaXR5Lldhcm5pbmcsIG5vZGUpOworICAgICAgICAvLyBBdWRpdCBub3JtYWxseSB0ZXJtaW5h
dGVzIHdoZW4gbnVtYmVyIG9mIGFkZGVkIHJ1bGUgcmVzdWx0cyBpcyBlcXVhbCB0bworICAgICAg
ICAvLyB0aGUgcnVsZSBjb3VudCBkZWNsYXJlZCB3aGVuIGFkZGluZyBhIGNhdGVnb3J5LiBkb25l
KCkgaXMgb25seSBmb3IKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhc2VzLCB3aGVuIHdlIGtub3cg
d2Ugd29uJ3QgYmUgYWJsZSB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHJ1bGVzLgorICAgICAgICBy
ZXN1bHRzLmRvbmUoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gb25TdGFydEF1ZGl0RmFpbGVkQ2F0
ZWdvcnkoKQorICAgIHsKKyAgICAgICAgbG9nKCJmYWlsZWRDYXRlZ29yeS5vbkF1ZGl0U3RhcnRl
ZCBmaXJlZCwgdGhyb3dpbmcgZXhjZXB0aW9uIik7CisgICAgICAgIHRocm93ICJvb3BzISI7Cisg
ICAgfQorICAgIGZ1bmN0aW9uIG9uU3RhcnRBdWRpdERpc2FibGVkQ2F0ZWdvcnkocmVzdWx0cykK
KyAgICB7CisgICAgICAgIGxvZygiRkFJTDogZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0YXJ0ZWQg
ZmlyZWQiKTsKKyAgICAgICAgcmVzdWx0cy5kb25lKCk7CisgICAgfQorCisgICAgdmFyIGNhdGVn
b3J5ID0gd2ViSW5zcGVjdG9yLmF1ZGl0cy5hZGRDYXRlZ29yeSgiRXh0ZW5zaW9uIGF1ZGl0cyIs
IDIwKTsKKyAgICBjYXRlZ29yeS5vbkF1ZGl0U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVk
aXRDYXRlZ29yeSk7CisgICAgbG9nKCJBZGRlZCBhdWRpdCBjYXRlZ29yeS4iKTsKKworICAgIHZh
ciBmYWlsZWRDYXRlZ29yeSA9IHdlYkluc3BlY3Rvci5hdWRpdHMuYWRkQ2F0ZWdvcnkoIkV4dGVu
c2lvbiBhdWRpdHMgdGhhdCBmYWlsIiwgMik7CisgICAgZmFpbGVkQ2F0ZWdvcnkub25BdWRpdFN0
YXJ0ZWQuYWRkTGlzdGVuZXIob25TdGFydEF1ZGl0RmFpbGVkQ2F0ZWdvcnkpOworCisgICAgdmFy
IGRpc2FibGVkQ2F0ZWdvcnkgPSB3ZWJJbnNwZWN0b3IuYXVkaXRzLmFkZENhdGVnb3J5KCJEaXNh
YmxlZCBleHRlbnNpb24gYXVkaXRzIiwgMik7CisgICAgZGlzYWJsZWRDYXRlZ29yeS5vbkF1ZGl0
U3RhcnRlZC5hZGRMaXN0ZW5lcihvblN0YXJ0QXVkaXREaXNhYmxlZENhdGVnb3J5KTsKKworICAg
IGV4dGVuc2lvbl9ydW5BdWRpdHMobmV4dFRlc3QpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGF1ZGl0cyBzdXBwb3J0IGluIFdl
Ykluc3BlY3RvciBFeHRlbnNpb25zIEFQSTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLWV4cGVjdGVkLnR4dAppbmRleCAzOTI0YTZhLi44
MzE5NDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0yNywxMSArMjcsMTEgQEAgRXZhbHVhdGU6IFR5cGVFcnJvcjogSlNPTi5zdHJpbmdp
ZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4oZXhjZXB0aW8KIFJVTk5JTkcg
VEVTVDogZXh0ZW5zaW9uX3Rlc3RFdmFsT2sKIEV2YWx1YXRlOiB7InN0ciI6ImZvbyIsIm51bSI6
NDJ9KGV4Y2VwdGlvbjogdW5kZWZpbmVkKQogUlVOTklORyBURVNUOiBleHRlbnNpb25fdGVzdEdl
dEFsbFJlc291cmNlcwotcmVzb3VyY2U6IC4uLi90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMKK3Jlc291cmNlOiAuLi4vdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Mi5qcwog
cmVzb3VyY2U6IC4uLi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCiBy
ZXNvdXJjZTogLi4uL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwKIFJVTk5J
TkcgVEVTVDogZXh0ZW5zaW9uX3Rlc3RHZXRJbnZhbGlkUmVzb3VyY2UKLUF0dGVtcHRlZCB0byBy
ZXRyaWV2ZSBpbnZhbGlkIHJlc291cmNlOiB7ImNvZGUiOiJFX05PVEZPVU5EIiwiZGVzY3JpcHRp
b24iOiJPYmplY3Qgbm90IGZvdW5kICglcykiLCJkZXRhaWxzIjpbMjEyODUwNl0sImlzRXJyb3Ii
OnRydWV9CitBdHRlbXB0ZWQgdG8gcmV0cmlldmUgaW52YWxpZCByZXNvdXJjZTogeyJjb2RlIjoi
RV9OT1RGT1VORCIsImRlc2NyaXB0aW9uIjoiT2JqZWN0IG5vdCBmb3VuZDogJXMiLCJkZXRhaWxz
IjpbMjEyODUwNl0sImlzRXJyb3IiOnRydWV9CiBSVU5OSU5HIFRFU1Q6IGV4dGVuc2lvbl90ZXN0
UmVzb3VyY2VOb3RpZmljYXRpb24KIFJlc291cmNlIGZpbmlzaGVkOiAuLi4vaW5zcGVjdG9yL3Jl
c291cmNlcy9leHRlbnNpb24tbWFpbi5odG1sCiBBbGwgdGVzdHMgZG9uZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZXh0ZW5zaW9ucy10ZXN0LmpzCmluZGV4IDAwZDhlZjUuLmNkOWYyOTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLXRlc3QuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMtdGVzdC5qcwpAQCAtMywzNiArMyw1MyBAQCBm
dW5jdGlvbiBsb2cobWVzc2FnZSkKICAgICBvdXRwdXQobWVzc2FnZSk7CiB9CiAKLWZ1bmN0aW9u
IGZyb250ZW5kX2luaXRpYWxpemVFeHRlbnNpb24odXJsKQorZnVuY3Rpb24gZXh0ZW5zaW9uRnVu
Y3Rpb25zKCkKIHsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMucmVzb3Vy
Y2VUcmFja2luZ0VuYWJsZWQpCi0gICAgICAgIFdlYkluc3BlY3Rvci5hZGRFeHRlbnNpb25zKFt7
IHN0YXJ0UGFnZTogdXJsIH1dKTsKLSAgICBlbHNlCi0gICAgICAgIEluc3BlY3RvckJhY2tlbmQu
ZW5hYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7CisgICAgdmFyIGZ1bmN0aW9ucyA9ICIiOwor
CisgICAgZm9yIChzeW1ib2wgaW4gd2luZG93KSB7CisgICAgICAgIGlmICgvXmV4dGVuc2lvbl8v
LmV4ZWMoc3ltYm9sKSAmJiB0eXBlb2Ygd2luZG93W3N5bWJvbF0gPT09ICJmdW5jdGlvbiIpCisg
ICAgICAgICAgICBmdW5jdGlvbnMgKz0gd2luZG93W3N5bWJvbF0udG9TdHJpbmcoKTsKKyAgICB9
CisgICAgcmV0dXJuIGZ1bmN0aW9uczsKIH0KIAotZnVuY3Rpb24gZG9pdCgpCit2YXIgaW5pdGlh
bGl6ZV9FeHRlbnNpb25zVGVzdCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2YXIgZXh0ZW5zaW9uVVJM
ID0gbG9jYXRpb24uaHJlZi5yZXBsYWNlKC9cL1teL10qJC8sICIvcmVzb3VyY2VzL2V4dGVuc2lv
bi1tYWluLmh0bWwiKTsKLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9pbml0
aWFsaXplRXh0ZW5zaW9uKCciICsgZXh0ZW5zaW9uVVJMICsgIicpIik7Ci19CiAKLWZ1bmN0aW9u
IGRvbmUoKQorSW5zcGVjdG9yVGVzdC5kaXNwYXRjaE9uTWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3Nh
Z2VJZCwgY2FsbGJhY2spCiB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgIGZ1bmN0aW9u
IG9uTWVzc2FnZShldmVudCkKICAgICB7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKKyAgICAgICAg
aWYgKGV2ZW50LmRhdGEgPT09IG1lc3NhZ2VJZCkgeworICAgICAgICAgICAgd2luZG93LnJlbW92
ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBvbk1lc3NhZ2UsIGZhbHNlKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiSW5zcGVjdG9yQmFja2VuZC5kaXNhYmxlUmVzb3VyY2VUcmFja2luZyhmYWxzZSk7IiwgY2Fs
bGJhY2spOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgb25NZXNzYWdl
LCBmYWxzZSk7CiB9CiAKLWZ1bmN0aW9uIGV4dGVuc2lvbkZ1bmN0aW9ucygpCitJbnNwZWN0b3JU
ZXN0LnJ1bkV4dGVuc2lvblRlc3RzID0gZnVuY3Rpb24oKQogewotICAgIHZhciBmdW5jdGlvbnMg
PSAiIjsKKyAgICBmdW5jdGlvbiBhZGRFeHRlbnNpb24oY2FsbGJhY2spCisgICAgeworICAgICAg
ICBJbmplY3RlZFNjcmlwdEFjY2Vzcy5nZXREZWZhdWx0KCkuZXZhbHVhdGUoImxvY2F0aW9uLmhy
ZWYiLCAiY29uc29sZSIsIGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgdmFyIGV4dGVu
c2lvblVSTCA9IHJlc3VsdC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cL1teL10qJC8sICIvcmVzb3Vy
Y2VzL2V4dGVuc2lvbi1tYWluLmh0bWwiKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hZGRF
eHRlbnNpb25zKFt7IHN0YXJ0UGFnZTogZXh0ZW5zaW9uVVJMIH1dKTsKKyAgICAgICAgICAgIGlm
IChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9KTsKKyAg
ICB9IAorICAgIEluc3BlY3RvclRlc3QuZGlzcGF0Y2hPbk1lc3NhZ2UoImV4dGVuc2lvbi10ZXN0
cy1kb25lIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuZGlzYWJsZVJlc291
cmNlVHJhY2tpbmcoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICB9KTsKKyAgICBJbnNwZWN0b3JUZXN0LmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYWRkRXh0ZW5z
aW9uKTsKK30KIAotICAgIGZvciAoc3ltYm9sIGluIHdpbmRvdykgewotICAgICAgICBpZiAoL15l
eHRlbnNpb25fLy5leGVjKHN5bWJvbCkgJiYgdHlwZW9mIHdpbmRvd1tzeW1ib2xdID09PSAiZnVu
Y3Rpb24iKQotICAgICAgICAgICAgZnVuY3Rpb25zICs9IHdpbmRvd1tzeW1ib2xdLnRvU3RyaW5n
KCk7Ci0gICAgfQotICAgIHJldHVybiBmdW5jdGlvbnM7Cit9CisKK3ZhciB0ZXN0ID0gZnVuY3Rp
b24oKQoreworICAgIEluc3BlY3RvclRlc3QucnVuRXh0ZW5zaW9uVGVzdHMoKTsKIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sCmluZGV4IDYzYzY4MmIuLjQ5NjMwM2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9leHRlbnNpb25zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgog
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2lu
c3BlY3Rvci10ZXN0Mi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZXh0ZW5zaW9ucy10ZXN0
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIApAQCAtODEs
NyArODEsNyBAQCBmdW5jdGlvbiBleHRlbnNpb25fb25FdmFsdWF0ZShyZXN1bHQpCiAKIDwvc2Ny
aXB0PgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CiA8cD5UZXN0cyBXZWJJbnNwZWN0b3IgZXh0ZW5zaW9uIEFQSTwvcD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
YXVkaXRzLXNjcmlwdDMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2F1ZGl0
cy1zY3JpcHQzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmZDYwNTA0Li4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvYXVkaXRzLXNjcmlwdDMu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWZ1bmN0aW9uIGZvbzMoKQotewotfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9leHRlbnNpb24tbWFp
bi5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvZXh0ZW5zaW9uLW1haW4uanMK
aW5kZXggOWJjNmJiMy4uMjRmM2UzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9leHRlbnNpb24tbWFpbi5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2V4dGVuc2lvbi1tYWluLmpzCkBAIC0yNyw3ICsyNyw3IEBAIGZ1bmN0aW9uIHJ1
blRlc3RzKCkKIGZ1bmN0aW9uIG9uVGVzdHNEb25lKCkKIHsKICAgICBsb2coIkFsbCB0ZXN0cyBk
b25lLiIpOwotICAgIHdlYkluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3cuZXZhbHVhdGUoImRvbmUo
KTsiKTsKKyAgICB0b3AucG9zdE1lc3NhZ2UoImV4dGVuc2lvbi10ZXN0cy1kb25lIiwiKiIpOwog
fQogCiBmdW5jdGlvbiBydW5UZXN0KHRlc3QsIG5hbWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggNjc3MWJmOC4uYWE3
MTFlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dApAQCAtMjAwLDYgKzIwMCw4IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1tdWx0aS5odG1sID0gRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWwgPSBG
QUlMCiBXT05URklYIFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy5odG1sID0gRkFJTAogV09O
VEZJWCBTS0lQIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMtYXBpLmh0bWwgPSBGQUlMCitXT05URklY
IFNLSVAgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbCA9IEZBSUwKK1dPTlRGSVgg
U0tJUCA6IGluc3BlY3Rvci9leHRlbnNpb25zLWF1ZGl0cy1hcGkuaHRtbCA9IEZBSUwKIAogLy8g
SW1wbGVtZW50IGphdmEgdGVzdGluZyBoYXJuZXNzLgogQlVHMzY2ODEgREVGRVIgU0tJUCA6IGph
dmEgPSBURVhUCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBiNWM4ZTIuLjRjMDYyYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTAtMDgtMzAgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYXVkaXRzIHN1
cHBvcnQgdG8gZXh0ZW5zaW9uIEFQSQorICAgICAgICBFeHBvc2VkIChsYXRlKSBhZGRpbmcgb2Yg
Y2F0ZWdvcmllcyBmcm9tIEF1ZGl0UGFuZWwuCisgICAgICAgIFJlbW92ZWQgaW5kZXhPZk9iamVj
dEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24gaW4gZmF2b3Igb2YKKyAgICAgICAgaW5zZXJ0aW9uSW5k
ZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uICh0aGUgZm9ybWVyIGhhZAorICAgICAg
ICB3ZWlyZCBpbnRlcmZhY2UgYWx3YXlzIHJldHVybmluZyBuZWdhdGl2ZSBudW1iZXJzIGFuZCB3
YXMgb25seSB1c2VkIGluCisgICAgICAgIHRoZSBsYXR0ZXIpLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1MTgKKworICAgICAgICBUZXN0czogaW5z
cGVjdG9yL2V4dGVuc2lvbnMtYXVkaXRzLWFwaS5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0
b3IvZXh0ZW5zaW9ucy1hdWRpdHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRGb3JtYXR0ZXJzLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5hcHBseUZvcm1hdHRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Rm9ybWF0
dGVycy50ZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMuc25pcHBl
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzLmNvbmNhdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzLnVybCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hl
clZpZXcucHJvdG90eXBlLmFkZENhdGVnb3J5LmNvbXBhcmVDYXRlZ29yaWVzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuYWRkQ2F0ZWdvcnkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5fbGF1bmNo
QnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcu
cHJvdG90eXBlLl9zZWxlY3RBbGxDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dExhdW5jaGVyVmlldy5wcm90b3R5cGUuX2NhdGVnb3J5Q2xpY2tlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlLl9jcmVhdGVDYXRlZ29yeUVsZW1l
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZS5f
Y3JlYXRlTGF1bmNoZXJVSSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJl
c3VsdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdFBh
bmUucHJvdG90eXBlLl9hcHBlbmRSZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvQXVkaXRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZS5hZGRDYXRlZ29yeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLmdldENhdGVnb3J5
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUuX2V4ZWN1dGVB
dWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUucnVu
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkFQSS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuRXZlbnRTaW5rSW1wbC5wcm90b3R5cGUuYWRkTGlz
dGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50
U2lua0ltcGwucHJvdG90eXBlLl9maXJlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3Rl
ZEV4dGVuc2lvbkFQSS5FdmVudFNpbmtJbXBsLnByb3RvdHlwZS5fZGlzcGF0Y2gpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkV2ZW50U2luayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuSW5zcGVjdG9yRXh0ZW5zaW9uQVBJ
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5QYW5lbHMucHJv
dG90eXBlLmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25B
UEkuQXVkaXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5B
dWRpdHMucHJvdG90eXBlLmFkZENhdGVnb3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmpl
Y3RlZEV4dGVuc2lvbkFQSS5BdWRpdENhdGVnb3J5LmN1c3RvbURpc3BhdGNoKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdENhdGVnb3J5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lvbkFQSS5BdWRpdENhdGVnb3J5SW1wbCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5qZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0
LnByb3RvdHlwZS5nZXQgU2V2ZXJpdHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVk
RXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0SW1wbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5q
ZWN0ZWRFeHRlbnNpb25BUEkuQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZS5hZGRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0SW1w
bC5wcm90b3R5cGUuY3JlYXRlUmVzdWx0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3Rl
ZEV4dGVuc2lvbkFQSS5BdWRpdFJlc3VsdEltcGwucHJvdG90eXBlLmRvbmUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0SW1wbC5wcm90b3R5
cGUuX25vZGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lv
bkFQSS5BdWRpdFJlc3VsdE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluamVjdGVkRXh0
ZW5zaW9uQVBJLkF1ZGl0UmVzdWx0Tm9kZS5wcm90b3R5cGUuYWRkQ2hpbGQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qczogQWRkZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5wcm90b3R5cGUuZ2V0IGlkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZS5nZXQg
ZGlzcGxheU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdv
cnkucHJvdG90eXBlLmdldCBydWxlQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVu
c2lvbkF1ZGl0Q2F0ZWdvcnkucHJvdG90eXBlLnJ1bik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4
dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZS5nZXQgY29tcGxldGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlw
ZS5jYW5jZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnlS
ZXN1bHRzLnByb3RvdHlwZS5hZGRSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVu
c2lvbkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLnByb3RvdHlwZS5fYWRkTm9kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMucHJvdG90eXBlLl9hZGRS
ZXN1bHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpz
OiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb21tb25FeHRlbnNpb25TeW1ib2xzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuc3RhcnRBdWRpdFJ1bik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5zdG9wQXVkaXRSdW4pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX3Bvc3ROb3RpZmljYXRp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29u
QWRkQXVkaXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZS5fb25BZGRBdWRpdFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TdG9wQXVkaXRDYXRlZ29yeVJ1bik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fYWRkRXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fYnVpbGRF
eHRlbnNpb25BUElJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXh0ZW5z
aW9uU3RhdHVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAgICAgKCk6CisKIDIwMTAtMDgt
MzEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1
bSBidWlsZCBicmVhay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMjA0MzdmZC4uN2QzMzQ3OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQxNjYsNiArNDE2
Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BYnN0cmFjdFRpbWVsaW5l
UGFuZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25D
YWNoZUl0ZW1zVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dENhdGVnb3JpZXMuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRG
b3JtYXR0ZXJzLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1
bmNoZXJWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVz
dWx0Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVz
LmpzJywKQEAgLTQxOTcsNiArNDE5OCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQ29tbW9uLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0V4dGVuc2lvblBhbmVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggNTdlODFkMy4uMWNhNzcyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC01MjA2NCw2ICs1MjA2NCwxMCBAQAogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxBdWRpdEZvcm1hdHRlcnMuanMiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZp
bGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxBdWRpdExhdW5j
aGVyVmlldy5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTUyMTg0LDYgKzUyMTg4LDE0
IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEV4dGVuc2lvbkF1ZGl0Q2F0ZWdvcnkuanMiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxFeHRlbnNpb25Db21tb24uanMiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxFeHRlbnNpb25QYW5lbC5qcyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdEZvcm1hdHRlcnMuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRGb3JtYXR0ZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLmRlMjc3YWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRGb3JtYXR0ZXJzLmpzCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJ
bnNwZWN0b3IuYXBwbHlGb3JtYXR0ZXJzID0gZnVuY3Rpb24odmFsdWUpCit7CisgICAgdmFyIGZv
cm1hdHRlcjsKKyAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKKyAgICB2YXIgYXJnczsKKwor
ICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlICJzdHJpbmciOgorICAgICAgICBjYXNl
ICJib29sZWFuIjoKKyAgICAgICAgY2FzZSAibnVtYmVyIjoKKyAgICAgICAgICAgIGZvcm1hdHRl
ciA9IFdlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMudGV4dDsKKyAgICAgICAgICAgIGFyZ3Mg
PSBbIHZhbHVlLnRvU3RyaW5nKCkgXTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgIm9iamVjdCI6CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewor
ICAgICAgICAgICAgICAgIGZvcm1hdHRlciA9IFdlYkluc3BlY3Rvci5BdWRpdEZvcm1hdHRlcnMu
Y29uY2F0OworICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAodmFsdWUudHlwZSAmJiB2YWx1ZS5hcmd1bWVudHMpIHsKKyAgICAgICAgICAgICAgICBm
b3JtYXR0ZXIgPSBXZWJJbnNwZWN0b3IuQXVkaXRGb3JtYXR0ZXJzW3ZhbHVlLnR5cGVdOworICAg
ICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZS5hcmd1bWVudHM7CisgICAgICAgICAgICB9CisgICAg
fQorICAgIGlmICghZm9ybWF0dGVyKQorICAgICAgICB0aHJvdyAiSW52YWxpZCB2YWx1ZSBvciBm
b3JtYXR0ZXI6ICIgKyB0eXBlICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpOworCisgICAgcmV0dXJu
IGZvcm1hdHRlci5hcHBseShudWxsLCBhcmdzKTsKK30KKworV2ViSW5zcGVjdG9yLkF1ZGl0Rm9y
bWF0dGVycyA9IHsKKyAgICB0ZXh0OiBmdW5jdGlvbih0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpOworICAgIH0sCisKKyAgICBzbmlwcGV0
OiBmdW5jdGlvbihzbmlwcGV0VGV4dCkKKyAgICB7CisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZGl2LmlubmVyVGV4dCA9IHNuaXBwZXRU
ZXh0OworICAgICAgICBkaXYuY2xhc3NOYW1lID0gInNvdXJjZS1jb2RlIjsKKyAgICAgICAgcmV0
dXJuIGRpdjsKKyAgICB9LAorCisgICAgY29uY2F0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBm
b3IgKHZhciBhcmcgPSAwOyBhcmcgPCBhcmd1bWVudHMubGVuZ3RoOyArK2FyZykKKyAgICAgICAg
ICAgIHBhcmVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuYXBwbHlGb3JtYXR0ZXJzKGFyZ3Vt
ZW50c1thcmddKSk7CisgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgfSwKKworICAgIHVybDog
ZnVuY3Rpb24odXJsLCBkaXNwbGF5VGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IubGlua2lmeVVSTEFzTm9kZSh1cmwsIGRpc3BsYXlUZXh0IHx8IHVybCwgbnVsbCwgKHVy
bCBpbiBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxNYXApKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCmluZGV4IDMzZDM4
NzIuLjE4ZGFlZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dExhdW5jaGVyVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRM
YXVuY2hlclZpZXcuanMKQEAgLTI4LDEwICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKGNhdGVnb3JpZXNCeUlk
LCBydW5uZXJDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0
aW9uKHJ1bm5lckNhbGxiYWNrKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7
Ci0gICAgdGhpcy5fY2F0ZWdvcmllc0J5SWQgPSBjYXRlZ29yaWVzQnlJZDsKICAgICB0aGlzLl9y
dW5uZXJDYWxsYmFjayA9IHJ1bm5lckNhbGxiYWNrOwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVm
aXggPSAiYXVkaXQtY2F0ZWdvcnktaXRlbS0iOwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZh
bHNlOwpAQCAtNDEsMjcgKzQwLDE2IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9
IGZ1bmN0aW9uKGNhdGVnb3JpZXNCeUlkLCBydW5uZXJDYWxsYmFjaykKICAgICB0aGlzLl9jb250
ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2Nv
bnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJhdWRpdC1sYXVuY2hlci12aWV3LWNvbnRlbnQiOwog
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50RWxlbWVudCk7CisgICAg
dGhpcy5fYm91bmRDYXRlZ29yeUNsaWNrTGlzdGVuZXIgPSB0aGlzLl9jYXRlZ29yeUNsaWNrZWQu
YmluZCh0aGlzKTsKIAogICAgIHRoaXMuX3Jlc2V0UmVzb3VyY2VDb3VudCgpOwogCi0gICAgZnVu
Y3Rpb24gY2F0ZWdvcnlTb3J0RnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBhVGl0
bGUgPSBhLmRpc3BsYXlOYW1lIHx8ICIiOwotICAgICAgICB2YXIgYlRpdGxlID0gYi5kaXNwbGF5
TmFtZSB8fCAiIjsKLSAgICAgICAgcmV0dXJuIGFUaXRsZS5sb2NhbGVDb21wYXJlKGJUaXRsZSk7
Ci0gICAgfQotICAgIHZhciBzb3J0ZWRDYXRlZ29yaWVzID0gW107Ci0gICAgZm9yICh2YXIgaWQg
aW4gdGhpcy5fY2F0ZWdvcmllc0J5SWQpCi0gICAgICAgIHNvcnRlZENhdGVnb3JpZXMucHVzaCh0
aGlzLl9jYXRlZ29yaWVzQnlJZFtpZF0pOwotICAgIHNvcnRlZENhdGVnb3JpZXMuc29ydChjYXRl
Z29yeVNvcnRGdW5jdGlvbik7CisgICAgdGhpcy5fc29ydGVkQ2F0ZWdvcmllcyA9IFtdOwogCi0g
ICAgaWYgKCFzb3J0ZWRDYXRlZ29yaWVzLmxlbmd0aCkgewotICAgICAgICB0aGlzLl9oZWFkZXJF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKTsKLSAgICAgICAgdGhpcy5faGVh
ZGVyRWxlbWVudC5jbGFzc05hbWUgPSAibm8tYXVkaXRzIjsKLSAgICAgICAgdGhpcy5faGVhZGVy
RWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gYXVkaXRzIHRv
IHJ1biIpOwotICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9o
ZWFkZXJFbGVtZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpcy5fY3JlYXRlTGF1bmNoZXJV
SShzb3J0ZWRDYXRlZ29yaWVzKTsKKyAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaDEiKTsKKyAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9
ICJuby1hdWRpdHMiOworICAgIHRoaXMuX2hlYWRlckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5vIGF1ZGl0cyB0byBydW4iKTsKKyAgICB0aGlzLl9jb250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKIH0KIAogV2ViSW5zcGVj
dG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKQEAgLTEzMyw2ICsxMjEsMzAgQEAg
V2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcmVzZXRSZXNvdXJjZUNvdW50KCk7CiAgICAgfSwKIAorICAgIGFkZENhdGVnb3J5OiBmdW5j
dGlvbihjYXRlZ29yeSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fc29ydGVkQ2F0ZWdvcmll
cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVMYXVuY2hlclVJKCk7CisKKyAgICAg
ICAgdmFyIGNhdGVnb3J5RWxlbWVudCA9IHRoaXMuX2NyZWF0ZUNhdGVnb3J5RWxlbWVudChjYXRl
Z29yeS5kaXNwbGF5TmFtZSwgY2F0ZWdvcnkuaWQpOworICAgICAgICBjYXRlZ29yeS5fY2hlY2ti
b3hFbGVtZW50ID0gY2F0ZWdvcnlFbGVtZW50LmZpcnN0Q2hpbGQ7CisgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RBbGxDaGVja2JveEVsZW1lbnQuY2hlY2tlZCkgeworICAgICAgICAgICAgY2F0ZWdv
cnkuX2NoZWNrYm94RWxlbWVudC5jaGVja2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICsrdGhpcy5f
Y3VycmVudENhdGVnb3JpZXNDb3VudDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNv
bXBhcmVDYXRlZ29yaWVzKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBhVGl0bGUg
PSBhLmRpc3BsYXlOYW1lIHx8ICIiOworICAgICAgICAgICAgdmFyIGJUaXRsZSA9IGIuZGlzcGxh
eU5hbWUgfHwgIiI7CisgICAgICAgICAgICByZXR1cm4gYVRpdGxlLmxvY2FsZUNvbXBhcmUoYlRp
dGxlKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgaW5zZXJ0QmVmb3JlID0gaW5zZXJ0aW9uSW5k
ZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNhdGVnb3J5LCB0aGlzLl9zb3J0ZWRD
YXRlZ29yaWVzLCBjb21wYXJlQ2F0ZWdvcmllcyk7CisgICAgICAgIHRoaXMuX2NhdGVnb3JpZXNF
bGVtZW50Lmluc2VydEJlZm9yZShjYXRlZ29yeUVsZW1lbnQsIHRoaXMuX2NhdGVnb3JpZXNFbGVt
ZW50LmNoaWxkcmVuW2luc2VydEJlZm9yZV0pOworICAgICAgICB0aGlzLl9zb3J0ZWRDYXRlZ29y
aWVzLnNwbGljZShpbnNlcnRCZWZvcmUsIDAsIGNhdGVnb3J5KTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlQnV0dG9uKCk7CisgICAgfSwKKwogICAgIF9zZXRBdWRpdFJ1bm5pbmc6IGZ1bmN0aW9uKGF1
ZGl0UnVubmluZykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9hdWRpdFJ1bm5pbmcgPT09IGF1
ZGl0UnVubmluZykKQEAgLTE0NiwxMCArMTU4LDExIEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5j
aGVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgY2F0SWRzID0gW107CiAg
ICAgICAgIHZhciBjaGlsZE5vZGVzID0gdGhpcy5fY2F0ZWdvcmllc0VsZW1lbnQuY2hpbGROb2Rl
czsKLSAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fY2F0ZWdvcmllc0J5SWQpIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl9jYXRlZ29yaWVzQnlJZFtpZF0uX2NoZWNrYm94RWxlbWVudC5jaGVj
a2VkKQotICAgICAgICAgICAgICAgIGNhdElkcy5wdXNoKGlkKTsKKyAgICAgICAgZm9yICh2YXIg
Y2F0ZWdvcnkgPSAwOyBjYXRlZ29yeSA8IHRoaXMuX3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoOyAr
K2NhdGVnb3J5KSB7CisgICAgICAgICAgICBpZiAodGhpcy5fc29ydGVkQ2F0ZWdvcmllc1tjYXRl
Z29yeV0uX2NoZWNrYm94RWxlbWVudC5jaGVja2VkKQorICAgICAgICAgICAgICAgIGNhdElkcy5w
dXNoKHRoaXMuX3NvcnRlZENhdGVnb3JpZXNbY2F0ZWdvcnldLmlkKTsKICAgICAgICAgfQorCiAg
ICAgICAgIHRoaXMuX3NldEF1ZGl0UnVubmluZyh0cnVlKTsKICAgICAgICAgdGhpcy5fcnVubmVy
Q2FsbGJhY2soY2F0SWRzLCB0aGlzLl9hdWRpdFByZXNlbnRTdGF0ZUVsZW1lbnQuY2hlY2tlZCwg
dGhpcy5fc2V0QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2UpKTsKICAgICB9LApAQCAtMTU5
LDE0ICsxNzIsMTQgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jYXRlZ29yaWVzRWxlbWVudC5jaGls
ZE5vZGVzOwogICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5n
dGg7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgIGNoaWxkTm9kZXNbaV0uZmlyc3RDaGls
ZC5jaGVja2VkID0gY2hlY2tDYXRlZ29yaWVzOwotICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdv
cmllc0NvdW50ID0gY2hlY2tDYXRlZ29yaWVzID8gdGhpcy5fdG90YWxDYXRlZ29yaWVzQ291bnQg
OiAwOworICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50ID0gY2hlY2tDYXRlZ29y
aWVzID8gdGhpcy5fc29ydGVkQ2F0ZWdvcmllcy5sZW5ndGggOiAwOwogICAgICAgICB0aGlzLl91
cGRhdGVCdXR0b24oKTsKICAgICB9LAogCiAgICAgX2NhdGVnb3J5Q2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jdXJyZW50Q2F0ZWdvcmllc0NvdW50ICs9IGV2
ZW50LnRhcmdldC5jaGVja2VkID8gMSA6IC0xOwotICAgICAgICB0aGlzLl9zZWxlY3RBbGxDaGVj
a2JveEVsZW1lbnQuY2hlY2tlZCA9IHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPT09IHRo
aXMuX3RvdGFsQ2F0ZWdvcmllc0NvdW50OworICAgICAgICB0aGlzLl9zZWxlY3RBbGxDaGVja2Jv
eEVsZW1lbnQuY2hlY2tlZCA9IHRoaXMuX2N1cnJlbnRDYXRlZ29yaWVzQ291bnQgPT09IHRoaXMu
X3NvcnRlZENhdGVnb3JpZXMubGVuZ3RoOwogICAgICAgICB0aGlzLl91cGRhdGVCdXR0b24oKTsK
ICAgICB9LAogCkBAIC0xNzcsMTYgKzE5MCwyMSBAQCBXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hl
clZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAgZWxlbWVudC50eXBlID0gImNoZWNrYm94IjsK
KyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kQ2F0
ZWdvcnlDbGlja0xpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgIGxhYmVsRWxlbWVudC5hcHBlbmRD
aGlsZChlbGVtZW50KTsKICAgICAgICAgbGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7CiAKICAgICAgICAgcmV0dXJuIGxhYmVsRWxlbWVudDsK
ICAgICB9LAogCi0gICAgX2NyZWF0ZUxhdW5jaGVyVUk6IGZ1bmN0aW9uKHNvcnRlZENhdGVnb3Jp
ZXMpCisgICAgX2NyZWF0ZUxhdW5jaGVyVUk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMSIpOwogICAgICAg
ICB0aGlzLl9oZWFkZXJFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTZWxlY3QgYXVkaXRzIHRvIHJ1biIpOworCisgICAgICAgIGZvciAodmFyIGNoaWxkID0gMDsg
Y2hpbGQgPCB0aGlzLl9jb250ZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7ICsrY2hpbGQpCisg
ICAgICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9jb250ZW50
RWxlbWVudC5jaGlsZHJlbltjaGlsZF0pOworCiAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlckVsZW1lbnQpOwogCiAgICAgICAgIGZ1bmN0aW9uIGhh
bmRsZVNlbGVjdEFsbENsaWNrKGV2ZW50KQpAQCAtMjA0LDE2ICsyMjIsNiBAQCBXZWJJbnNwZWN0
b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYXRlZ29y
aWVzRWxlbWVudC5jbGFzc05hbWUgPSAiYXVkaXQtY2F0ZWdvcmllcy1jb250YWluZXIiOwogICAg
ICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jYXRlZ29yaWVzRWxl
bWVudCk7CiAKLSAgICAgICAgdmFyIGJvdW5kQ2F0ZWdvcnlDbGlja0xpc3RlbmVyID0gdGhpcy5f
Y2F0ZWdvcnlDbGlja2VkLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzb3J0ZWRDYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjYXRlZ29yeUVs
ZW1lbnQgPSB0aGlzLl9jcmVhdGVDYXRlZ29yeUVsZW1lbnQoc29ydGVkQ2F0ZWdvcmllc1tpXS5k
aXNwbGF5TmFtZSwgc29ydGVkQ2F0ZWdvcmllc1tpXS5pZCk7Ci0gICAgICAgICAgICBjYXRlZ29y
eUVsZW1lbnQuZmlyc3RDaGlsZC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGJvdW5kQ2F0ZWdv
cnlDbGlja0xpc3RlbmVyLCBmYWxzZSk7Ci0gICAgICAgICAgICBzb3J0ZWRDYXRlZ29yaWVzW2ld
Ll9jaGVja2JveEVsZW1lbnQgPSBjYXRlZ29yeUVsZW1lbnQuZmlyc3RDaGlsZDsKLSAgICAgICAg
ICAgIHRoaXMuX2NhdGVnb3JpZXNFbGVtZW50LmFwcGVuZENoaWxkKGNhdGVnb3J5RWxlbWVudCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl90b3RhbENhdGVnb3JpZXNDb3VudCA9IHRoaXMu
X2NhdGVnb3JpZXNFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoOwogICAgICAgICB0aGlzLl9jdXJy
ZW50Q2F0ZWdvcmllc0NvdW50ID0gMDsKIAogICAgICAgICB2YXIgZmxleGlibGVTcGFjZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQXVkaXRSZXN1bHRWaWV3LmpzCmluZGV4IDJmNGFmYmQuLjI2MzY0NjMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UmVzdWx0Vmlldy5qcwpAQCAt
ODEsMTUgKzgxLDIyIEBAIFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0UGFuZSA9IGZ1
bmN0aW9uKGNhdGVnb3J5UmVzdWx0KQogV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHRQ
YW5lLnByb3RvdHlwZSA9IHsKICAgICBfYXBwZW5kUmVzdWx0OiBmdW5jdGlvbihwYXJlbnRUcmVl
RWxlbWVudCwgcmVzdWx0KQogICAgIHsKLSAgICAgICAgdmFyIHRpdGxlID0gcmVzdWx0LnZhbHVl
OwotICAgICAgICBpZiAocmVzdWx0LnZpb2xhdGlvbkNvdW50KQotICAgICAgICAgICAgdGl0bGUg
PSBTdHJpbmcuc3ByaW50ZigiJXMgKCVkKSIsIHRpdGxlLCByZXN1bHQudmlvbGF0aW9uQ291bnQp
OworICAgICAgICB2YXIgdGl0bGUgPSAiIjsKKyAgICAgICAgCisgICAgICAgIGlmICh0eXBlb2Yg
cmVzdWx0LnZhbHVlID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgdGl0bGUgPSByZXN1bHQu
dmFsdWU7CisgICAgICAgICAgICBpZiAocmVzdWx0LnZpb2xhdGlvbkNvdW50KQorICAgICAgICAg
ICAgICAgIHRpdGxlID0gU3RyaW5nLnNwcmludGYoIiVzICglZCkiLCB0aXRsZSwgcmVzdWx0LnZp
b2xhdGlvbkNvdW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5l
dyBUcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgISFyZXN1bHQuY2hpbGRyZW4pOwogICAgICAgICBw
YXJlbnRUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CiAKICAgICAgICAgaWYg
KHJlc3VsdC5jbGFzc05hbWUpCiAgICAgICAgICAgICB0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1l
bnQuYWRkU3R5bGVDbGFzcyhyZXN1bHQuY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKHR5cGVvZiBy
ZXN1bHQudmFsdWUgIT09ICJzdHJpbmciKQorICAgICAgICAgICAgdHJlZUVsZW1lbnQubGlzdEl0
ZW1FbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5hcHBseUZvcm1hdHRlcnMocmVzdWx0
LnZhbHVlKSk7CisKICAgICAgICAgaWYgKHJlc3VsdC5jaGlsZHJlbikgewogICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fYXBwZW5kUmVzdWx0KHRyZWVFbGVtZW50LCByZXN1bHQuY2hpbGRyZW5b
aV0pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVs
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCmluZGV4IGJj
N2YzYjMuLmY2Y2JlZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFu
ZWwuanMKQEAgLTMyLDggKzMyLDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rp
b24oKQogewogICAgIFdlYkluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJhdWRpdHMiKTsKIAot
ICAgIHRoaXMuX2NvbnN0cnVjdENhdGVnb3JpZXMoKTsKLQogICAgIHRoaXMuY3JlYXRlU2lkZWJh
cigpOwogICAgIHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGVi
YXJTZWN0aW9uVHJlZUVsZW1lbnQoIiIsIHt9LCB0cnVlKTsKICAgICB0aGlzLnNpZGViYXJUcmVl
LmFwcGVuZENoaWxkKHRoaXMuYXVkaXRzVHJlZUVsZW1lbnQpOwpAQCAtNTQsNyArNTIsMTEgQEAg
V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMudmlld3NDb250
YWluZXJFbGVtZW50LmlkID0gImF1ZGl0LXZpZXdzIjsKICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy52aWV3c0NvbnRhaW5lckVsZW1lbnQpOwogCi0gICAgdGhpcy5fbGF1bmNoZXJW
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmNhdGVnb3JpZXNC
eUlkLCB0aGlzLmluaXRpYXRlQXVkaXQuYmluZCh0aGlzKSk7CisgICAgdGhpcy5fY29uc3RydWN0
Q2F0ZWdvcmllcygpOworCisgICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmluaXRpYXRlQXVkaXQuYmluZCh0aGlzKSk7CisgICAg
Zm9yIChpZCBpbiB0aGlzLmNhdGVnb3JpZXNCeUlkKQorICAgICAgICB0aGlzLl9sYXVuY2hlclZp
ZXcuYWRkQ2F0ZWdvcnkodGhpcy5jYXRlZ29yaWVzQnlJZFtpZF0pOwogfQogCiBXZWJJbnNwZWN0
b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewpAQCAtMTA0LDYgKzEwNiwxNyBAQCBXZWJJbnNw
ZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXVuY2hlclZp
ZXcucmVzb3VyY2VGaW5pc2hlZChyZXNvdXJjZSk7CiAgICAgfSwKIAorICAgIGFkZENhdGVnb3J5
OiBmdW5jdGlvbihjYXRlZ29yeSkKKyAgICB7CisgICAgICAgIHRoaXMuY2F0ZWdvcmllc0J5SWRb
Y2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnk7CisgICAgICAgIHRoaXMuX2xhdW5jaGVyVmlldy5hZGRD
YXRlZ29yeShjYXRlZ29yeSk7CisgICAgfSwKKworICAgIGdldENhdGVnb3J5OiBmdW5jdGlvbihp
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXNCeUlkW2lkXTsKKyAgICB9
LAorCiAgICAgX2NvbnN0cnVjdENhdGVnb3JpZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2F1ZGl0Q2F0ZWdvcmllc0J5SWQgPSB7fTsKQEAgLTE0Nyw3ICsxNjAsNyBAQCBXZWJJ
bnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGNhdGVn
b3J5ID0gY2F0ZWdvcmllc1tpXTsKICAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgV2ViSW5z
cGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHQoY2F0ZWdvcnkpOwogICAgICAgICAgICAgcmVzdWx0
cy5wdXNoKHJlc3VsdCk7Ci0gICAgICAgICAgICBjYXRlZ29yeS5ydW5SdWxlcyhyZXNvdXJjZXMs
IHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrLmJpbmQobnVsbCwgcmVzdWx0KSk7CisgICAgICAgICAg
ICBjYXRlZ29yeS5ydW4ocmVzb3VyY2VzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKG51
bGwsIHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtMjIwLDcgKzIzMyw3IEBAIFdl
Ykluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlz
LnZpc2libGVWaWV3ID0gdGhpcy5fbGF1bmNoZXJWaWV3OwogICAgIH0sCi0gICAgCisKICAgICBn
ZXQgdmlzaWJsZVZpZXcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVWaWV3
OwpAQCAtMzExLDcgKzMyNCw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fcnVsZXMucHVzaChydWxlKTsKICAgICB9LAogCi0gICAgcnVu
UnVsZXM6IGZ1bmN0aW9uKHJlc291cmNlcywgY2FsbGJhY2spCisgICAgcnVuOiBmdW5jdGlvbihy
ZXNvdXJjZXMsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5fZW5zdXJlSW5pdGlhbGl6
ZWQoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9ydWxlcy5sZW5ndGg7ICsr
aSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25BUEku
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uQVBJLmpzCmluZGV4IGE4
OWRjZjEuLjlkOTk2YmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25BUEkuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
bkFQSS5qcwpAQCAtMjgsNyArMjgsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi12YXIgaW5q
ZWN0ZWRFeHRlbnNpb25BUEkgPSBmdW5jdGlvbihJbmplY3RlZFNjcmlwdEhvc3QsIGluc3BlY3Rl
ZFdpbmRvdywgaW5qZWN0ZWRTY3JpcHRJZCkKK1dlYkluc3BlY3Rvci5pbmplY3RlZEV4dGVuc2lv
bkFQSSA9IGZ1bmN0aW9uKEluamVjdGVkU2NyaXB0SG9zdCwgaW5zcGVjdGVkV2luZG93LCBpbmpl
Y3RlZFNjcmlwdElkKQogewogCiAvLyBIZXJlIGFuZCBiZWxvdywgYWxsIGNvbnN0cnVjdG9ycyBh
cmUgcHJpdmF0ZSB0byBBUEkgaW1wbGVtZW50YXRpb24uCkBAIC0zNywxOSArMzcsMjIgQEAgdmFy
IGluamVjdGVkRXh0ZW5zaW9uQVBJID0gZnVuY3Rpb24oSW5qZWN0ZWRTY3JpcHRIb3N0LCBpbnNw
ZWN0ZWRXaW5kb3csIGluamVjdGUKIC8vIGJ5IEZvbyBjb25zdXRyY3RvciB0byByZS1iaW5kIHB1
YmxpY2x5IGV4cG9ydGVkIG1lbWJlcnMgdG8gYW4gaW5zdGFuY2UKIC8vIG9mIEZvby4KIAotZnVu
Y3Rpb24gRXZlbnRTaW5rSW1wbCh0eXBlKQorZnVuY3Rpb24gRXZlbnRTaW5rSW1wbCh0eXBlLCBj
dXN0b21EaXNwYXRjaCkKIHsKICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICB0aGlzLl9saXN0
ZW5lcnMgPSBbXTsKKyAgICB0aGlzLl9jdXN0b21EaXNwYXRjaCA9IGN1c3RvbURpc3BhdGNoOwog
fQogCiBFdmVudFNpbmtJbXBsLnByb3RvdHlwZSA9IHsKICAgICBhZGRMaXN0ZW5lcjogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgeworICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9ICJmdW5j
dGlvbiIpCisgICAgICAgICAgICB0aHJvdyBuZXcgImFkZExpc3RlbmVyOiBjYWxsYmFjayBpcyBu
b3QgYSBmdW5jdGlvbiI7CiAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lcnMubGVuZ3RoID09PSAw
KQogICAgICAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHsgY29tbWFuZDogInN1
YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5w
dXNoKGNhbGxiYWNrKTsKLSAgICAgICAgZXh0ZW5zaW9uU2VydmVyLnJlZ2lzdGVySGFuZGxlcigi
bm90aWZ5LSIgKyB0aGlzLl90eXBlLCBiaW5kKHRoaXMuX2ZpcmUsIHRoaXMpKTsKKyAgICAgICAg
ZXh0ZW5zaW9uU2VydmVyLnJlZ2lzdGVySGFuZGxlcigibm90aWZ5LSIgKyB0aGlzLl90eXBlLCBi
aW5kKHRoaXMuX2Rpc3BhdGNoLCB0aGlzKSk7CiAgICAgfSwKIAogICAgIHJlbW92ZUxpc3RlbmVy
OiBmdW5jdGlvbihjYWxsYmFjaykKQEAgLTY2LDI2ICs2OSwzNiBAQCBFdmVudFNpbmtJbXBsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNv
bW1hbmQ6ICJ1bnN1YnNjcmliZSIsIHR5cGU6IHRoaXMuX3R5cGUgfSk7CiAgICAgfSwKIAotICAg
IF9maXJlOiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIF9maXJlOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzLnNsaWNlKCk7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
bGlzdGVuZXJzW2ldLmFwcGx5KG51bGwsIHJlcXVlc3QuYXJndW1lbnRzKTsKKyAgICAgICAgICAg
IGxpc3RlbmVyc1tpXS5hcHBseShudWxsLCBhcmd1bWVudHMpOworICAgIH0sCisKKyAgICBfZGlz
cGF0Y2g6IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICAgaWYgKHRoaXMuX2N1c3Rv
bURpc3BhdGNoKQorICAgICAgICAgICAgIHRoaXMuX2N1c3RvbURpc3BhdGNoLmNhbGwodGhpcywg
cmVxdWVzdCk7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgdGhpcy5fZmlyZS5hcHBseSh0
aGlzLCByZXF1ZXN0LmFyZ3VtZW50cyk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBFdmVudFNpbmso
dHlwZSkKK2Z1bmN0aW9uIEV2ZW50U2luayh0eXBlLCBjdXN0b21EaXNwYXRjaCkKIHsKLSAgICB2
YXIgaW1wbCA9IG5ldyBFdmVudFNpbmtJbXBsKHR5cGUpOworICAgIHZhciBpbXBsID0gbmV3IEV2
ZW50U2lua0ltcGwodHlwZSwgY3VzdG9tRGlzcGF0Y2gpOwogICAgIHRoaXMuYWRkTGlzdGVuZXIg
PSBiaW5kKGltcGwuYWRkTGlzdGVuZXIsIGltcGwpOwogICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIg
PSBiaW5kKGltcGwucmVtb3ZlTGlzdGVuZXIsIGltcGwpOwogfQogCiBmdW5jdGlvbiBJbnNwZWN0
b3JFeHRlbnNpb25BUEkoKQogeworICAgIHRoaXMuYXVkaXRzID0gbmV3IEF1ZGl0cygpOwogICAg
IHRoaXMuaW5zcGVjdGVkV2luZG93ID0gbmV3IEluc3BlY3RlZFdpbmRvdygpOwogICAgIHRoaXMu
cGFuZWxzID0gbmV3IFBhbmVscygpOwogICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IFJlc291cmNl
cygpOworCiAgICAgdGhpcy5vblJlc2V0ID0gbmV3IEV2ZW50U2luaygicmVzZXQiKTsKIH0KIApA
QCAtMTI1LDcgKzEzOCw3IEBAIGZ1bmN0aW9uIFBhbmVscygpCiAgICAgewogICAgICAgICByZXR1
cm4gcGFuZWxzW25hbWVdOwogICAgIH0KLSAgICAKKwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
d2VsbEtub3duUGFuZWxOYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICB2YXIgbmFtZSA9IHdl
bGxLbm93blBhbmVsTmFtZXNbaV07CiAgICAgICAgIHBhbmVsc1tuYW1lXSA9IG5ldyBQYW5lbChu
YW1lKTsKQEAgLTE1MSw3ICsxNjQsNyBAQCBQYW5lbHMucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWQ6IGlkLAogICAgICAgICAgICAgbGFiZWw6IGxhYmVsLAogICAgICAgICAgICAgdXJsOiBl
eHBhbmRVUkwocGFnZVVSTCksCi0gICAgICAgICAgICBpY29uOiBleHBhbmRVUkwoaWNvblVSTCkg
CisgICAgICAgICAgICBpY29uOiBleHBhbmRVUkwoaWNvblVSTCkKICAgICAgICAgfTsKICAgICAg
ICAgZXh0ZW5zaW9uU2VydmVyLnNlbmRSZXF1ZXN0KHJlcXVlc3QsIGNhbGxiYWNrICYmIGJpbmQo
Y2FsbGJhY2tXcmFwcGVyLCB0aGlzKSk7CiAgICAgfQpAQCAtMjE5LDYgKzIzMiwxMjQgQEAgZnVu
Y3Rpb24gRXh0ZW5zaW9uU2lkZWJhclBhbmUoaWQpCiAgICAgdGhpcy5zZXRFeHBhbmRlZCA9IGJp
bmQoaW1wbC5zZXRFeHBhbmRlZCwgaW1wbCk7CiB9CiAKK2Z1bmN0aW9uIEF1ZGl0cygpCit7Cit9
CisKK0F1ZGl0cy5wcm90b3R5cGUgPSB7CisgICAgYWRkQ2F0ZWdvcnk6IGZ1bmN0aW9uKGRpc3Bs
YXlOYW1lLCBydWxlQ291bnQpCisgICAgeworICAgICAgICB2YXIgaWQgPSAiZXh0ZW5zaW9uLWF1
ZGl0LWNhdGVnb3J5LSIgKyBleHRlbnNpb25TZXJ2ZXIubmV4dE9iamVjdElkKCk7CisgICAgICAg
IGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdCh7IGNvbW1hbmQ6ICJhZGRBdWRpdENhdGVnb3J5
IiwgaWQ6IGlkLCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIHJ1bGVDb3VudDogcnVsZUNvdW50
IH0pOworICAgICAgICByZXR1cm4gbmV3IEF1ZGl0Q2F0ZWdvcnkoaWQpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gQXVkaXRDYXRlZ29yeShpZCkKK3sKKyAgICBmdW5jdGlvbiBjdXN0b21EaXNwYXRj
aChyZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdmFyIGF1ZGl0UmVzdWx0ID0gbmV3IEF1ZGl0UmVz
dWx0KHJlcXVlc3QuYXJndW1lbnRzWzBdKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRo
aXMuX2ZpcmUoYXVkaXRSZXN1bHQpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJVbmNhdWdodCBleGNlcHRpb24gaW4gZXh0ZW5zaW9uIGF1ZGl0IGV2
ZW50IGhhbmRsZXI6ICIgKyBlKTsKKyAgICAgICAgICAgIGF1ZGl0UmVzdWx0LmRvbmUoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICB2YXIgaW1wbCA9IG5ldyBBdWRpdENhdGVnb3J5SW1wbChpZCk7
CisgICAgdGhpcy5vbkF1ZGl0U3RhcnRlZCA9IG5ldyBFdmVudFNpbmsoImF1ZGl0LXN0YXJ0ZWQt
IiArIGlkLCBjdXN0b21EaXNwYXRjaCk7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0Q2F0ZWdvcnlJbXBs
KGlkKQoreworICAgIHRoaXMuX2lkID0gaWQ7Cit9CisKK2Z1bmN0aW9uIEF1ZGl0UmVzdWx0KGlk
KQoreworICAgIHZhciBpbXBsID0gbmV3IEF1ZGl0UmVzdWx0SW1wbChpZCk7CisKKyAgICB0aGlz
LmFkZFJlc3VsdCA9IGJpbmQoaW1wbC5hZGRSZXN1bHQsIGltcGwpOworICAgIHRoaXMuY3JlYXRl
UmVzdWx0ID0gYmluZChpbXBsLmNyZWF0ZVJlc3VsdCwgaW1wbCk7CisgICAgdGhpcy5kb25lID0g
YmluZChpbXBsLmRvbmUsIGltcGwpOworCisgICAgdmFyIGZvcm1hdHRlclR5cGVzID0gWworICAg
ICAgICAidXJsIiwKKyAgICAgICAgInNuaXBwZXQiLAorICAgICAgICAidGV4dCIKKyAgICBdOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0dGVyVHlwZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgIHRoaXNbZm9ybWF0dGVyVHlwZXNbaV1dID0gYmluZChpbXBsLl9ub2RlRmFjdG9yeSwgbnVs
bCwgZm9ybWF0dGVyVHlwZXNbaV0pOworfQorCitBdWRpdFJlc3VsdC5wcm90b3R5cGUgPSB7Cisg
ICAgZ2V0IFNldmVyaXR5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcml2YXRlLmF1ZGl0cy5T
ZXZlcml0eTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEF1ZGl0UmVzdWx0SW1wbChpZCkKK3sKKyAg
ICB0aGlzLl9pZCA9IGlkOworfQorCitBdWRpdFJlc3VsdEltcGwucHJvdG90eXBlID0geworICAg
IGFkZFJlc3VsdDogZnVuY3Rpb24oZGlzcGxheU5hbWUsIGRlc2NyaXB0aW9uLCBzZXZlcml0eSwg
ZGV0YWlscykKKyAgICB7CisgICAgICAgIC8vIHNob3J0aGFuZCBmb3Igc3BlY2lmeWluZyBkZXRh
aWxzIGRpcmVjdGx5IGluIGFkZFJlc3VsdCgpLgorICAgICAgICBpZiAoZGV0YWlscyAmJiAhKGRl
dGFpbHMgaW5zdGFuY2VvZiBBdWRpdFJlc3VsdE5vZGUpKQorICAgICAgICAgICAgZGV0YWlscyA9
IGRldGFpbHMgaW5zdGFuY2VvZiBBcnJheSA/IHRoaXMuY3JlYXRlTm9kZS5hcHBseSh0aGlzLCBk
ZXRhaWxzKSA6IHRoaXMuY3JlYXRlTm9kZShkZXRhaWxzKTsKKworICAgICAgICB2YXIgcmVxdWVz
dCA9IHsKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJhZGRBdWRpdFJlc3VsdCIsCisgICAgICAgICAg
ICByZXN1bHRJZDogdGhpcy5faWQsCisgICAgICAgICAgICBkaXNwbGF5TmFtZTogZGlzcGxheU5h
bWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCisgICAgICAgICAgICBz
ZXZlcml0eTogc2V2ZXJpdHksCisgICAgICAgICAgICBkZXRhaWxzOiBkZXRhaWxzCisgICAgICAg
IH07CisgICAgICAgIGV4dGVuc2lvblNlcnZlci5zZW5kUmVxdWVzdChyZXF1ZXN0KTsKKyAgICB9
LAorCisgICAgY3JlYXRlUmVzdWx0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgbm9k
ZSA9IG5ldyBBdWRpdFJlc3VsdE5vZGUoKTsKKyAgICAgICAgbm9kZS5jb250ZW50cyA9IEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybiBub2RlOwor
ICAgIH0sCisKKyAgICBkb25lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBleHRlbnNpb25T
ZXJ2ZXIuc2VuZFJlcXVlc3QoeyBjb21tYW5kOiAic3RvcEF1ZGl0Q2F0ZWdvcnlSdW4iLCByZXN1
bHRJZDogdGhpcy5faWQgfSk7CisgICAgfSwKKworICAgIF9ub2RlRmFjdG9yeTogZnVuY3Rpb24o
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB0eXBlOiB0eXBlLAor
ICAgICAgICAgICAgYXJndW1lbnRzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMsIDEpCisgICAgICAgIH07CisgICAgfQorfQorCitmdW5jdGlvbiBBdWRpdFJlc3VsdE5vZGUo
Y29udGVudHMpCit7CisgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzOworICAgIHRoaXMuY2hp
bGRyZW4gPSBbXTsKKyAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7Cit9CisKK0F1ZGl0UmVzdWx0
Tm9kZS5wcm90b3R5cGUgPSB7CisgICAgYWRkQ2hpbGQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBub2RlID0gQXVkaXRSZXN1bHRJbXBsLnByb3RvdHlwZS5jcmVhdGVSZXN1bHQuYXBw
bHkobnVsbCwgYXJndW1lbnRzKTsKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKG5vZGUpOwor
ICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9Cit9OworCiBmdW5jdGlvbiBJbnNwZWN0ZWRXaW5k
b3coKQogewogICAgIHRoaXMub25Mb2FkZWQgPSBuZXcgRXZlbnRTaW5rKCJpbnNwZWN0ZWRQYWdl
TG9hZGVkIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uQXVkaXRDYXRlZ29yeS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25BdWRpdENhdGVnb3J5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVk
MTU1ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcwpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5FeHRl
bnNpb25BdWRpdENhdGVnb3J5ID0gZnVuY3Rpb24oaWQsIGRpc3BsYXlOYW1lLCBydWxlQ291bnQp
Cit7CisgICAgdGhpcy5faWQgPSBpZDsKKyAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlO
YW1lOworICAgIHRoaXMuX3J1bGVDb3VudCAgPSBydWxlQ291bnQ7Cit9CisKK1dlYkluc3BlY3Rv
ci5FeHRlbnNpb25BdWRpdENhdGVnb3J5LnByb3RvdHlwZSA9IHsKKyAgICAvLyBBdWRpdENhdGVn
b3J5IGludGVyZmFjZQorICAgIGdldCBpZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
aWQ7CisgICAgfSwKKworICAgIGdldCBkaXNwbGF5TmFtZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fZGlzcGxheU5hbWU7CisgICAgfSwKKworICAgIGdldCBydWxlQ291bnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3J1bGVDb3VudDsKKyAgICB9LAorCisgICAgcnVuOiBm
dW5jdGlvbihyZXNvdXJjZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgbmV3IFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5UmVzdWx0cyh0aGlzLCBjYWxsYmFjayk7CisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJlc3VsdHMgPSBmdW5j
dGlvbihjYXRlZ29yeSwgY2FsbGJhY2spCit7CisgICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29y
eTsKKyAgICB0aGlzLl9wZW5kaW5nUnVsZXMgPSBjYXRlZ29yeS5ydWxlQ291bnQ7CisgICAgdGhp
cy5fcnVsZUNvbXBsZXRpb25DYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgdGhpcy5pZCA9IGNh
dGVnb3J5LmlkICsgIi0iICsgKytXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeVJl
c3VsdHMuX2xhc3RJZDsKKyAgICBXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyLnN0YXJ0QXVk
aXRSdW4oY2F0ZWdvcnksIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uQXVkaXRD
YXRlZ29yeVJlc3VsdHMucHJvdG90eXBlID0geworICAgIGdldCBjb21wbGV0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gIXRoaXMuX3BlbmRpbmdSdWxlczsKKyAgICB9LAorCisgICAgY2FuY2Vs
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB3aGlsZSAoIXRoaXMuY29tcGxldGUpCisgICAg
ICAgICAgICB0aGlzLl9hZGRSZXN1bHQobnVsbCk7CisgICAgfSwKKworICAgIGFkZFJlc3VsdDog
ZnVuY3Rpb24oZGlzcGxheU5hbWUsIGRlc2NyaXB0aW9uLCBzZXZlcml0eSwgZGV0YWlscykKKyAg
ICB7CisgICAgICAgIHZhciByZXN1bHQgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZVJlc3Vs
dChkaXNwbGF5TmFtZSk7CisgICAgICAgIHJlc3VsdC5hZGRDaGlsZChkZXNjcmlwdGlvbik7Cisg
ICAgICAgIHJlc3VsdC5zZXZlcml0eSA9IHNldmVyaXR5OworICAgICAgICBpZiAoZGV0YWlscykK
KyAgICAgICAgICAgIHRoaXMuX2FkZE5vZGUocmVzdWx0LCBkZXRhaWxzKTsKKyAgICAgICAgdGhp
cy5fYWRkUmVzdWx0KHJlc3VsdCk7CisgICAgfSwKKworICAgIF9hZGROb2RlOiBmdW5jdGlvbihw
YXJlbnQsIG5vZGUpCisgICAgeworICAgICAgICB2YXIgYWRkZWROb2RlID0gcGFyZW50LmFkZENo
aWxkKG5vZGUuY29udGVudHMsIG5vZGUuZXhwYW5kZWQpOworICAgICAgICBpZiAobm9kZS5jaGls
ZHJlbikgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZE5vZGUoYWRkZWROb2RlLCBub2Rl
LmNoaWxkcmVuW2ldKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfYWRkUmVzdWx0OiBmdW5j
dGlvbihyZXN1bHQpCisgICAgeworICAgICAgICB0aGlzLl9ydWxlQ29tcGxldGlvbkNhbGxiYWNr
KHJlc3VsdCk7CisgICAgICAgIHRoaXMuX3BlbmRpbmdSdWxlcy0tOworICAgICAgICBpZiAoIXRo
aXMuX3BlbmRpbmdSdWxlcykKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2
ZXIuc3RvcEF1ZGl0UnVuKHRoaXMpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkV4dGVuc2lv
bkF1ZGl0Q2F0ZWdvcnlSZXN1bHRzLl9sYXN0SWQgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvbkNvbW1vbi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FeHRlbnNpb25Db21tb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjA0YzE4YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FeHRlbnNpb25Db21tb24uanMKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5j
b21tb25FeHRlbnNpb25TeW1ib2xzID0gZnVuY3Rpb24ocHJpdmF0ZSkKK3sKKyAgICAKKyAgICBp
ZiAoIXByaXZhdGUuYXVkaXRzKQorICAgICAgICBwcml2YXRlLmF1ZGl0cyA9IHt9OworCisgICAg
cHJpdmF0ZS5hdWRpdHMuU2V2ZXJpdHkgPSB7CisgICAgICAgIEluZm86ICJpbmZvIiwKKyAgICAg
ICAgV2FybmluZzogIndhcm5pbmciLAorICAgICAgICBTZXZlcmU6ICJzZXZlcmUiCisgICAgfTsK
K30KKworV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSSA9IHt9OworCitXZWJJbnNwZWN0b3IuY29t
bW9uRXh0ZW5zaW9uU3ltYm9scyhXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IDk1ZjM3M2Yu
LjBmZjAzNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNl
cnZlci5qcwpAQCAtNDAsMTEgKzQwLDE1IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJnZXRSZXNvdXJjZXMiLCB0
aGlzLl9vbkdldFJlc291cmNlcy5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9yZWdpc3RlckhhbmRs
ZXIoImNyZWF0ZVBhbmVsIiwgdGhpcy5fb25DcmVhdGVQYW5lbC5iaW5kKHRoaXMpKTsKICAgICB0
aGlzLl9yZWdpc3RlckhhbmRsZXIoImNyZWF0ZVNpZGViYXJQYW5lIiwgdGhpcy5fb25DcmVhdGVT
aWRlYmFyLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigibG9nIiwgdGhp
cy5fb25Mb2cuYmluZCh0aGlzKSk7IAorICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigibG9nIiwg
dGhpcy5fb25Mb2cuYmluZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJldmFs
dWF0ZU9uSW5zcGVjdGVkUGFnZSIsIHRoaXMuX29uRXZhbHVhdGVPbkluc3BlY3RlZFBhZ2UuYmlu
ZCh0aGlzKSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJzZXRTaWRlYmFySGVpZ2h0Iiwg
dGhpcy5fb25TZXRTaWRlYmFySGVpZ2h0LmJpbmQodGhpcykpOwogICAgIHRoaXMuX3JlZ2lzdGVy
SGFuZGxlcigic2V0U2lkZWJhckV4cGFuZGVkIiwgdGhpcy5fb25TZXRTaWRlYmFyRXhwYW5zaW9u
LmJpbmQodGhpcykpOwogCisgICAgdGhpcy5fcmVnaXN0ZXJIYW5kbGVyKCJhZGRBdWRpdENhdGVn
b3J5IiwgdGhpcy5fb25BZGRBdWRpdENhdGVnb3J5LmJpbmQodGhpcykpOworICAgIHRoaXMuX3Jl
Z2lzdGVySGFuZGxlcigiYWRkQXVkaXRSZXN1bHQiLCB0aGlzLl9vbkFkZEF1ZGl0UmVzdWx0LmJp
bmQodGhpcykpOworICAgIHRoaXMuX3JlZ2lzdGVySGFuZGxlcigic3RvcEF1ZGl0Q2F0ZWdvcnlS
dW4iLCB0aGlzLl9vblN0b3BBdWRpdENhdGVnb3J5UnVuLmJpbmQodGhpcykpOworCiAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9vbldpbmRvd01lc3NhZ2UuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogfQogCkBAIC04NCw2ICs4OCwxNyBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlv
bigicmVzZXQiKTsKICAgICB9LAogCisgICAgc3RhcnRBdWRpdFJ1bjogZnVuY3Rpb24oY2F0ZWdv
cnksIGF1ZGl0UnVuKQorICAgIHsKKyAgICAgICAgdGhpcy5fY2xpZW50T2JqZWN0c1thdWRpdFJ1
bi5pZF0gPSBhdWRpdFJ1bjsKKyAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbigiYXVkaXQt
c3RhcnRlZC0iICsgY2F0ZWdvcnkuaWQsIGF1ZGl0UnVuLmlkKTsKKyAgICB9LAorCisgICAgc3Rv
cEF1ZGl0UnVuOiBmdW5jdGlvbihhdWRpdFJ1bikKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9jbGllbnRPYmplY3RzW2F1ZGl0UnVuLmlkXTsKKyAgICB9LAorCiAgICAgX2NvbnZlcnRSZXNv
dXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewogICAgICAgICByZXR1cm4gewpAQCAtMTAw
LDcgKzExNSw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgbWVzc2FnZSA9IHsKICAgICAgICAgICAg
IGNvbW1hbmQ6ICJub3RpZnktIiArIHR5cGUsCi0gICAgICAgICAgICBhcmd1bWVudHM6IEFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkgCisgICAgICAgICAgICBhcmd1bWVu
dHM6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkKICAgICAgICAgfTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJzY3JpYmVycy5sZW5ndGg7ICsraSkKICAg
ICAgICAgICAgIHN1YnNjcmliZXJzW2ldLnBvc3RNZXNzYWdlKG1lc3NhZ2UpOwpAQCAtMjQ4LDYg
KzI2MywzNiBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgIH0sCiAKKyAgICBfb25BZGRBdWRpdENhdGVnb3J5
OiBmdW5jdGlvbihyZXF1ZXN0KQorICAgIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5ID0gbmV3IFdl
Ykluc3BlY3Rvci5FeHRlbnNpb25BdWRpdENhdGVnb3J5KHJlcXVlc3QuaWQsIHJlcXVlc3QuZGlz
cGxheU5hbWUsIHJlcXVlc3QucnVsZUNvdW50KTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5w
YW5lbHMuYXVkaXRzLmdldENhdGVnb3J5KGNhdGVnb3J5LmlkKSkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9zdGF0dXMuRV9FWElTVFMoY2F0ZWdvcnkuaWQpOworICAgICAgICB0aGlzLl9jbGll
bnRPYmplY3RzW3JlcXVlc3QuaWRdID0gY2F0ZWdvcnk7CisgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuYXVkaXRzLmFkZENhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICB9LAorCisgICAgX29uQWRk
QXVkaXRSZXN1bHQ6IGZ1bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgYXVkaXRS
ZXN1bHQgPSB0aGlzLl9jbGllbnRPYmplY3RzW3JlcXVlc3QucmVzdWx0SWRdOworICAgICAgICBp
ZiAoIWF1ZGl0UmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZP
VU5EKHJlcXVlc3QucmVzdWx0SWQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYXVkaXRS
ZXN1bHQuYWRkUmVzdWx0KHJlcXVlc3QuZGlzcGxheU5hbWUsIHJlcXVlc3QuZGVzY3JpcHRpb24s
IHJlcXVlc3Quc2V2ZXJpdHksIHJlcXVlc3QuZGV0YWlscyk7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIHJldHVybiBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlz
Ll9zdGF0dXMuT0soKTsKKyAgICB9LAorCisgICAgX29uU3RvcEF1ZGl0Q2F0ZWdvcnlSdW46IGZ1
bmN0aW9uKHJlcXVlc3QpCisgICAgeworICAgICAgICB2YXIgYXVkaXRSdW4gPSB0aGlzLl9jbGll
bnRPYmplY3RzW3JlcXVlc3QucmVzdWx0SWRdOworICAgICAgICBpZiAoIWF1ZGl0UnVuKQorICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHJlcXVlc3QucmVzdWx0SWQp
OworICAgICAgICBhdWRpdFJ1bi5jYW5jZWwoKTsKKyAgICB9LAorCiAgICAgaW5pdEV4dGVuc2lv
bnM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvckV4dGVuc2lvblJlZ2lzdHJ5
LmdldEV4dGVuc2lvbnNBc3luYygpOwpAQCAtMjU1LDcgKzMwMCw4IEBAIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX2FkZEV4dGVuc2lvbnM6IGZ1bmN0
aW9uKGV4dGVuc2lvbnMpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2V0
RXh0ZW5zaW9uQVBJKCIoIiArIGluamVjdGVkRXh0ZW5zaW9uQVBJLnRvU3RyaW5nKCkgKyAiKSIp
OyAvLyBTZWUgRXh0ZW5zaW9uQVBJLmpzIGZvciBkZXRhaWxzLgorICAgICAgICAvLyBTZWUgRXh0
ZW5zaW9uQVBJLmpzIGFuZCBFeHRlbnNpb25Db21tb24uanMgZm9yIGRldGFpbHMuCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRFeHRlbnNpb25BUEkodGhpcy5fYnVpbGRFeHRlbnNp
b25BUElJbmplY3RlZFNjcmlwdCgpKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRl
bnNpb25zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0ZW5z
aW9uc1tpXTsKICAgICAgICAgICAgIHRyeSB7CkBAIC0yNzEsNiArMzE3LDE1IEBAIFdlYkluc3Bl
Y3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAor
ICAgIF9idWlsZEV4dGVuc2lvbkFQSUluamVjdGVkU2NyaXB0OiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gIihmdW5jdGlvbigpeyAiICsKKyAgICAgICAgICAgICJ2YXIgcHJpdmF0
ZSA9IHt9OyIgKworICAgICAgICAgICAgIigiICsgV2ViSW5zcGVjdG9yLmNvbW1vbkV4dGVuc2lv
blN5bWJvbHMudG9TdHJpbmcoKSArICIpKHByaXZhdGUpOyIgKworICAgICAgICAgICAgIigiICsg
V2ViSW5zcGVjdG9yLmluamVjdGVkRXh0ZW5zaW9uQVBJLnRvU3RyaW5nKCkgKyAiKS5hcHBseSh0
aGlzLCBhcmd1bWVudHMpOyIgKworICAgICAgICAgICAgIn0pIjsKKyAgICB9LAorCiAgICAgX29u
V2luZG93TWVzc2FnZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQu
ZGF0YSAhPT0gInJlZ2lzdGVyRXh0ZW5zaW9uIikKQEAgLTMwMCwxMiArMzU1LDE0IEBAIFdlYklu
c3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5fc3RhdHVzZXMgPSAKK1dlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIuX3N0YXR1c2VzID0KIHsKICAgICBPSzogIiIsCi0gICAgRV9OT1RGT1VORDogIk9i
amVjdCBub3QgZm91bmQgKCVzKSIsCi0gICAgRV9OT1RTVVBQT1JURUQ6ICJPYmplY3QgZG9lcyBu
b3Qgc3VwcG9ydCByZXF1ZXN0ZWQgb3BlcmF0aW9uICglcykiLAotICAgIEVfRVhJU1RTOiAiT2Jq
ZWN0IGFscmVhZHkgZXhpc3RzICglcykiCisgICAgRV9FWElTVFM6ICJPYmplY3QgYWxyZWFkeSBl
eGlzdHM6ICVzIiwKKyAgICBFX0JBREFSRzogIkludmFsaWQgYXJndW1lbnQgJXM6ICVzIiwKKyAg
ICBFX0JBREFSR1RZUEU6ICJJbnZhbGlkIHR5cGUgZm9yIGFyZ3VtZW50ICVzOiBnb3QgJXMsIGV4
cGVjdGVkICVzIiwKKyAgICBFX05PVEZPVU5EOiAiT2JqZWN0IG5vdCBmb3VuZDogJXMiLAorICAg
IEVfTk9UU1VQUE9SVEVEOiAiT2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIG9wZXJh
dGlvbjogJXMiLAogfQogCiBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU3RhdHVzID0gZnVuY3Rpb24o
KQpAQCAtMzE5LDcgKzM3Niw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TdGF0dXMgPSBmdW5j
dGlvbigpCiAgICAgICAgICAgICBzdGF0dXMuaXNFcnJvciA9IHRydWU7CiAgICAgICAgICAgICBj
b25zb2xlLmxvZygiRXh0ZW5zaW9uIHNlcnZlciBlcnJvcjogIiArIFN0cmluZy52c3ByaW50Zihk
ZXNjcmlwdGlvbiwgZGV0YWlscykpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0dXM7
IAorICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KICAgICBmb3IgKHN0YXR1cyBpbiBXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLl9zdGF0dXNlcykKICAgICAgICAgdGhpc1tzdGF0dXNd
ID0gbWFrZVN0YXR1cy5iaW5kKG51bGwsIHN0YXR1cyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCmluZGV4IDFmMTVkYjMuLmI2NDA5MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCkBAIC00LDYgKzQsNyBAQAogICAgIDxmaWxlPkFic3RyYWN0VGlt
ZWxpbmVQYW5lbC5qczwvZmlsZT4KICAgICA8ZmlsZT5BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3
LmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0Q2F0ZWdvcmllcy5qczwvZmlsZT4KKyAgICA8Zmls
ZT5BdWRpdEZvcm1hdHRlcnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRMYXVuY2hlclZpZXcu
anM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRSZXN1bHRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkF1ZGl0UnVsZXMuanM8L2ZpbGU+CkBAIC0zNSw2ICszNiw4IEBACiAgICAgPGZpbGU+RWxlbWVu
dHNUcmVlT3V0bGluZS5qczwvZmlsZT4KICAgICA8ZmlsZT5FdmVudExpc3RlbmVyc1NpZGViYXJQ
YW5lLmpzPC9maWxlPgogICAgIDxmaWxlPkV4dGVuc2lvbkFQSS5qczwvZmlsZT4KKyAgICA8Zmls
ZT5FeHRlbnNpb25BdWRpdENhdGVnb3J5LmpzPC9maWxlPgorICAgIDxmaWxlPkV4dGVuc2lvbkNv
bW1vbi5qczwvZmlsZT4KICAgICA8ZmlsZT5FeHRlbnNpb25QYW5lbC5qczwvZmlsZT4KICAgICA8
ZmlsZT5FeHRlbnNpb25SZWdpc3RyeVN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+RXh0ZW5zaW9u
U2VydmVyLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCmluZGV4IDQ5Njg2ODUuLjNlNGI2YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKQEAgLTk4LDYgKzk4LDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlc1BhbmVsLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb25zb2xlUGFuZWwuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4dGVu
c2lvbkFQSS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRXh0ZW5zaW9uQXVkaXRDYXRlZ29yeS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRXh0ZW5zaW9uQ29tbW9uLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJFeHRlbnNpb25TZXJ2ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkV4
dGVuc2lvblBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJBdWRpdHNQYW5lbC5qcyI+PC9zY3JpcHQ+CkBAIC0xMDUsNiArMTA3LDcgQEAg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdExh
dW5jaGVyVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQXVkaXRSdWxlcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iQXVkaXRDYXRlZ29yaWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJBdWRpdEZvcm1hdHRlcnMuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlVmll
dy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
U291cmNlRnJhbWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTVN5bnRheEhpZ2hsaWdodGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCmluZGV4IDY2Y2YyODQuLmU4YWRmZjYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwpAQCAtNzMyLDEyICs3MzIsNiBA
QCBBcnJheS5jb252ZXJ0ID0gZnVuY3Rpb24obGlzdCkKIAogZnVuY3Rpb24gaW5zZXJ0aW9uSW5k
ZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGFuT2JqZWN0LCBhTGlzdCwgYUZ1bmN0
aW9uKQogewotICAgIC8vIGluZGV4T2YgcmV0dXJucyAoLWxvd2VyQm91bmQgLSAxKS4gVGFraW5n
ICgtcmVzdWx0IC0gMSkgd29ya3Mgb3V0IHRvIGxvd2VyQm91bmQuCi0gICAgcmV0dXJuICgtaW5k
ZXhPZk9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rp
b24pIC0gMSk7Ci19Ci0KLWZ1bmN0aW9uIGluZGV4T2ZPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uKGFuT2JqZWN0LCBhTGlzdCwgYUZ1bmN0aW9uKQotewogICAgIHZhciBmaXJzdCA9IDA7CiAg
ICAgdmFyIGxhc3QgPSBhTGlzdC5sZW5ndGggLSAxOwogICAgIHZhciBmbG9vciA9IE1hdGguZmxv
b3I7CkBAIC03NjAsOSArNzU0LDcgQEAgZnVuY3Rpb24gaW5kZXhPZk9iamVjdEluTGlzdFNvcnRl
ZEJ5RnVuY3Rpb24oYW5PYmplY3QsIGFMaXN0LCBhRnVuY3Rpb24pCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAvLyBCeSByZXR1cm5pbmcgMSBsZXNzIHRoYW4gdGhlIG5lZ2F0aXZlIGxvd2VyIHNl
YXJjaCBib3VuZCwgd2UgY2FuIHJldXNlIHRoaXMgZnVuY3Rpb24KLSAgICAvLyBmb3IgYm90aCBp
bmRleE9mIGFuZCBpbnNlcnRpb25JbmRleEZvciwgd2l0aCBzb21lIHNpbXBsZSBhcml0aG1ldGlj
LgotICAgIHJldHVybiAoLWZpcnN0IC0gMSk7CisgICAgcmV0dXJuIGZpcnN0OwogfQogCiBTdHJp
bmcuc3ByaW50ZiA9IGZ1bmN0aW9uKGZvcm1hdCkK
</data>
<flag name="review"
          id="54930"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>