<?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>147570</bug_id>
          
          <creation_ts>2015-08-03 11:16:32 -0700</creation_ts>
          <short_desc>Web Inspector: Add VisualStyleDetailsPanel</short_desc>
          <delta_ts>2015-08-14 18:08:07 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147572</dependson>
    
    <dependson>147576</dependson>
    
    <dependson>147578</dependson>
    
    <dependson>147579</dependson>
    
    <dependson>147711</dependson>
    
    <dependson>147712</dependson>
    
    <dependson>148021</dependson>
    
    <dependson>148022</dependson>
          <blocked>147563</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114249</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:16:32 -0700</bug_when>
    <thetext>Create Visual style details panel for the CSS style sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114254</commentid>
    <comment_count>1</comment_count>
      <attachid>258086</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-03 11:20:16 -0700</bug_when>
    <thetext>Created attachment 258086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114722</commentid>
    <comment_count>2</comment_count>
      <attachid>258199</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-04 12:57:38 -0700</bug_when>
    <thetext>Created attachment 258199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115216</commentid>
    <comment_count>3</comment_count>
      <attachid>258329</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-05 18:16:30 -0700</bug_when>
    <thetext>Created attachment 258329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115660</commentid>
    <comment_count>4</comment_count>
      <attachid>258458</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-06 22:57:22 -0700</bug_when>
    <thetext>Created attachment 258458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116237</commentid>
    <comment_count>5</comment_count>
      <attachid>258620</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 10:37:09 -0700</bug_when>
    <thetext>Created attachment 258620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116416</commentid>
    <comment_count>6</comment_count>
      <attachid>258620</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-10 17:25:39 -0700</bug_when>
    <thetext>Comment on attachment 258620
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258620&amp;action=review

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:48
&gt; +        this._keywords.defaults = [&quot;Inherit&quot;, &quot;Initial&quot;];
&gt; +        this._keywords.boxModel = this._keywords.defaults.concat([&quot;Auto&quot;]);
&gt; +        this._keywords.borderStyle = {
&gt; +            basic: this._keywords.defaults.concat([&quot;None&quot;, &quot;Hidden&quot;, &quot;Solid&quot;]),
&gt; +            advanced: [&quot;Dashed&quot;, &quot;Dotted&quot;, &quot;Double&quot;, &quot;Groove&quot;, &quot;Hidden&quot;, &quot;Inset&quot;, &quot;None&quot;, &quot;Outset&quot;, &quot;Ridge&quot;, &quot;Solid&quot;]
&gt; +        };
&gt; +        this._keywords.borderWidth = this._keywords.defaults.concat([&quot;Medium&quot;, &quot;Thick&quot;, &quot;Thin&quot;]);

Would be good to comment that these are not localized because they match the CSS spec.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:183
&gt; +        let initialTextList = this._currentStyle[WebInspector.VisualStyleDetailsPanel.InitialPropertySectionTextListSymbol];

A getter for this might be good since you repeat it a lot and it is rather long.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:294
&gt; +        properties.display = new WebInspector.VisualStyleKeywordPicker(&quot;display&quot;, WebInspector.UIString(&quot;Type&quot;), {
&gt; +            basic: [&quot;None&quot;, &quot;Block&quot;, &quot;Flex&quot;, &quot;Inline&quot;, &quot;Inline Block&quot;],
&gt; +            advanced: [&quot;Compact&quot;, &quot;Inline Flex&quot;, &quot;Inline Table&quot;, &quot;List Item&quot;, &quot;Table&quot;, &quot;Table Caption&quot;, &quot;Table Cell&quot;, &quot;Table Column&quot;, &quot;Table Column Group&quot;, &quot;Table Footer Group&quot;, &quot;Table Header Group&quot;, &quot;Table Row&quot;, &quot;Table Row Group&quot;, &quot; WAP Marquee&quot;, &quot; Webkit Box&quot;, &quot; Webkit Grid&quot;, &quot; Webkit Inline Box&quot;, &quot; Webkit Inline Grid&quot;]
&gt; +        });
&gt; +        properties.visibility = new WebInspector.VisualStyleKeywordPicker(&quot;visibility&quot;, WebInspector.UIString(&quot;Visibility&quot;), {
&gt; +            basic: [&quot;Hidden&quot;, &quot;Visible&quot;],
&gt; +            advanced: [&quot;Collapse&quot;]
&gt; +        });

Ditto comment about localization.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:305
&gt; +        properties.boxSizing = new WebInspector.VisualStyleKeywordPicker(&quot;box-sizing&quot;, WebInspector.UIString(&quot;Sizing&quot;), this._keywords.defaults.concat([&quot;Border Box&quot;, &quot;Content Box&quot;]));
&gt; +        properties.cursor = new WebInspector.VisualStyleKeywordPicker(&quot;cursor&quot;, WebInspector.UIString(&quot;Cursor&quot;), {
&gt; +            basic: [&quot;Auto&quot;, &quot;Default&quot;, &quot;None&quot;, &quot;Pointer&quot;, &quot;Crosshair&quot;, &quot;Text&quot;],
&gt; +            advanced: [&quot;Context Menu&quot;, &quot;Help&quot;, &quot;Progress&quot;, &quot;Wait&quot;, &quot;Cell&quot;, &quot;Vertical Text&quot;, &quot;Alias&quot;, &quot;Copy&quot;, &quot;Move&quot;, &quot;No Drop&quot;, &quot;Not Allowed&quot;, &quot;All Scroll&quot;, &quot;Col Resize&quot;, &quot;Row Resize&quot;, &quot;N Resize&quot;, &quot;E Resize&quot;, &quot;S Resize&quot;, &quot;W Resize&quot;, &quot;NS Resize&quot;, &quot;EW Resize&quot;, &quot;NE Resize&quot;, &quot;NW Resize&quot;, &quot;SE Resize&quot;, &quot;sW Resize&quot;, &quot;NESW Resize&quot;, &quot;NWSE Resize&quot;]
&gt; +        });

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:316
&gt; +        properties.opacity = new WebInspector.VisualStyleUnitSlider(&quot;opacity&quot;, WebInspector.UIString(&quot;Opacity&quot;));
&gt; +        properties.overflow = new WebInspector.VisualStyleKeywordPicker([&quot;overflow-x&quot;, &quot;overflow-y&quot;], WebInspector.UIString(&quot;Overflow&quot;), {
&gt; +            basic: [&quot;Initial&quot;, &quot;Auto&quot;, &quot;Hidden&quot;, &quot;Scroll&quot;, &quot;Visible&quot;],
&gt; +            advanced: [&quot;Marquee&quot;, &quot;Overlay&quot;, &quot; Webkit Paged X&quot;, &quot; Webkit Paged Y&quot;]
&gt; +        });

Ditto. Webkit should be WebKit. Though I am tempted to display prefixed things as &quot;Paged Y (WebKit)&quot;, etc.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:374
&gt; +            basic: [&quot;Static&quot;, &quot;Relative&quot;, &quot;Absolute&quot;, &quot;Fixed&quot;],
&gt; +            advanced: [&quot; Webkit Sticky&quot;]

Why a space prefix? Ditto about localization and Webkit.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:1039
&gt; +WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo = {

We should remove this until we can clear it internally. It will need attribution to MDN and &quot;Mozilla Contributors&quot;. https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116632</commentid>
    <comment_count>7</comment_count>
      <attachid>258620</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-11 12:15:01 -0700</bug_when>
    <thetext>Comment on attachment 258620
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258620&amp;action=review

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:374
&gt;&gt; +            advanced: [&quot; Webkit Sticky&quot;]
&gt; 
&gt; Why a space prefix? Ditto about localization and Webkit.

This is sort of hacky, but the property editor superclass replaces all spaces with &quot;-&quot; so in order to get a leading dash, I added a space (which won&apos;t show up in an option element by the way).

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:1039
&gt;&gt; +WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo = {
&gt; 
&gt; We should remove this until we can clear it internally. It will need attribution to MDN and &quot;Mozilla Contributors&quot;. https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses

Oh good point.  Is there a process that I have to go through to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117539</commentid>
    <comment_count>8</comment_count>
      <attachid>258620</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-13 19:46:09 -0700</bug_when>
    <thetext>Comment on attachment 258620
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258620&amp;action=review

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:1039
&gt;&gt;&gt; +WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo = {
&gt;&gt; 
&gt;&gt; We should remove this until we can clear it internally. It will need attribution to MDN and &quot;Mozilla Contributors&quot;. https://developer.mozilla.org/en-US/docs/MDN/About#Copyrights_and_licenses
&gt; 
&gt; Oh good point.  Is there a process that I have to go through to do that?

I&apos;ll follow up with in person about this. Lets just land it with the object empty for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117540</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-13 19:46:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/22281743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117541</commentid>
    <comment_count>10</comment_count>
      <attachid>258620</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-13 19:47:08 -0700</bug_when>
    <thetext>Comment on attachment 258620
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258620&amp;action=review

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:374
&gt;&gt;&gt; +            advanced: [&quot; Webkit Sticky&quot;]
&gt;&gt; 
&gt;&gt; Why a space prefix? Ditto about localization and Webkit.
&gt; 
&gt; This is sort of hacky, but the property editor superclass replaces all spaces with &quot;-&quot; so in order to get a leading dash, I added a space (which won&apos;t show up in an option element by the way).

I see. Hmm, why not just check for a WebKit prefix and then add the prefix &quot;-&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117600</commentid>
    <comment_count>11</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-13 23:51:30 -0700</bug_when>
    <thetext>&gt; &gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:374
&gt; &gt;&gt;&gt; +            advanced: [&quot; Webkit Sticky&quot;]
&gt; &gt;&gt; 
&gt; &gt;&gt; Why a space prefix? Ditto about localization and Webkit.
&gt; &gt; 
&gt; &gt; This is sort of hacky, but the property editor superclass replaces all spaces with &quot;-&quot; so in order to get a leading dash, I added a space (which won&apos;t show up in an option element by the way).
&gt; 
&gt; I see. Hmm, why not just check for a WebKit prefix and then add the prefix
&gt; &quot;-&quot;?

I felt that adding a check for the &quot;WebKit&quot; prefix would be less future-proof, not to mention making that work with localizations would not be much fun.  Since &lt;option&gt;s don&apos;t render prefix/suffix whitespace, I thought that this was fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117601</commentid>
    <comment_count>12</comment_count>
      <attachid>258990</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 00:01:31 -0700</bug_when>
    <thetext>Created attachment 258990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117666</commentid>
    <comment_count>13</comment_count>
      <attachid>258990</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-14 10:54:18 -0700</bug_when>
    <thetext>Comment on attachment 258990
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=258990&amp;action=review

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.css:37
&gt; +    -webkit-filter: opacity(0.7);

No prefix. Just use opacity: 0.7;

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.css:55
&gt; +    -webkit-filter: opacity(0.5);

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:382
&gt; +        properties.zIndex = new WebInspector.VisualStyleNumberInputBox(&quot;z-index&quot;, WebInspector.UIString(&quot;z-Index&quot;), this._keywords.boxModel, null, true);

Z-Index?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:421
&gt; +                // COMPATIBILITY (iOS 6): Order of parameters changed in iOS 7.
&gt; +                DOMAgent.highlightNode.invoke({nodeId: this._style.node.id, highlightConfig});

Use DOMTreeManager for these agent calls in this function.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleDetailsPanel.js:1045
&gt; +WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo = {};

Add FIXME a comment on why this is empty and what it is for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117703</commentid>
    <comment_count>14</comment_count>
      <attachid>259020</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 12:14:00 -0700</bug_when>
    <thetext>Created attachment 259020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117806</commentid>
    <comment_count>15</comment_count>
      <attachid>259020</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 15:13:28 -0700</bug_when>
    <thetext>Comment on attachment 259020
Patch

Rejecting attachment 259020 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 259020, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
file without the binary data in line: &quot;Binary files a/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js and b/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js differ&quot;.  Be sure to use the --binary flag when invoking &quot;git diff&quot; with diffs containing binary files. at /Volumes/Data/EWS/WebKit/Tools/Scripts/VCSUtils.pm line 792, &lt;ARGV&gt; line 91.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 25 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/59475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117807</commentid>
    <comment_count>16</comment_count>
      <attachid>259050</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-14 15:15:33 -0700</bug_when>
    <thetext>Created attachment 259050
Patch

Whoops.  Forgot the --binary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117848</commentid>
    <comment_count>17</comment_count>
      <attachid>259050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 18:08:00 -0700</bug_when>
    <thetext>Comment on attachment 259050
Patch

Clearing flags on attachment: 259050

Committed r188503: &lt;http://trac.webkit.org/changeset/188503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117849</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 18:08:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258086</attachid>
            <date>2015-08-03 11:20:16 -0700</date>
            <delta_ts>2015-08-04 12:57:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150803112010.patch</filename>
            <type>text/plain</type>
            <size>88788</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQzYzhiODQyZTNjZGQ1ODc0N2E4MzFmN2M0MmM2
OTUyZTMzNzA0OWEuLmNhZDFkZGMyNWNkODA2OGIwMzY1ZjNmMTBkNjRjNjEyOGM4ZmY5ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE1LTA4LTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlv
bi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuc2V0
IGNvbGxhcHNlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5jc3M6IEFkZGVkLgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWls
cy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+
IC5oZWFkZXIpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
LnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5oZWFkZXIgPiBz
cGFuKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1
YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9kaWZpZWQgPiAuaGVhZGVy
ID4gc3Bhbjo6YWZ0ZXIpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250
ZW50KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1
YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAg
PiAucm93KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3Jv
dXAgPiAucm93Omxhc3QtY2hpbGQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWls
cy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+
IC5jb250ZW50IC5ncm91cCA+IC5yb3cudmlzdWFsLXN0eWxlLXNlcGFyYXRlZC1yb3cpOgorICAg
ICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRh
aWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dGl0bGUpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZp
c3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91
cCA+IC5yb3cgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lcjpub3QoLmxheW91dC1y
ZXZlcnNlZCk6bGFzdC1jaGlsZCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3Vh
bC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3Qo
LnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSBpbnB1dCk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qczogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVy
YXRlU2VjdGlvbi5yZXBsYWNlRGFzaFdpdGhDYXBpdGFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl91
cGRhdGVTZWN0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl91cGRhdGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9zZWN0aW9uSXNDb2xsYXBzZWRPclBvcHVsYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fZGlzcGxheVNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3NpdGlvblNlY3Rpb25Db2xsYXBzZWRT
dGF0ZVRvZ2dsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fZmxvYXRTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycy5vbkVkaXRvck1vdXNlb3Zlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMub25FZGl0b3JNb3VzZW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
ZGltZW5zaW9uc1NlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fbWFyZ2luU2VjdGlvbkNv
bGxhcHNlZFN0YXRlVG9nZ2xlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wYWRkaW5nU2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLl9mbGV4Ym94U2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl90ZXh0U3R5bGVTZWN0
aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2ZvbnRTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dn
bGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3RleHRTcGFjaW5nU2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl90ZXh0U2hh
ZG93U2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9iYWNrZ3JvdW5kU3R5bGVTZWN0aW9u
Q29sbGFwc2VkU3RhdGVUb2dnbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2JvcmRlclNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2ds
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fb3V0bGluZVNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fYm94U2hhZG93U2Vj
dGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZC5ub1JlbWFpbmluZ1RyZWVJdGVtcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9ib3hTaGFk
b3dTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkLnNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLl9ib3hTaGFkb3dTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkLmJveFNoYWRv
d0l0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9ib3hTaGFkb3dTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUu
X3RyYW5zaXRpb25TZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkLm5vUmVtYWluaW5nVHJlZUl0
ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3RyYW5zaXRpb25TZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkLnNlbGVjdGVkdHJh
bnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdHJhbnNpdGlvblNlY3Rpb25Db2xsYXBzZWRTdGF0
ZVRvZ2dsZWQudHJhbnNpdGlvbkl0ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl90cmFuc2l0aW9uU2VjdGlvbkNvbGxh
cHNlZFN0YXRlVG9nZ2xlZCk6CisKIDIwMTUtMDgtMDIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVubmFtZXNwYWNlZCBGb3JtYXR0
ZXIgY2xhc3NlcyBicmVhayBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDU5YzA3MWJiNDVj
NWM0M2UzMDQ3YzU5N2E5N2E3NjM5YWFmZDY0ODIuLjQxYTUzNTA0YWE4NDYwYWEwMWFiMGVmMzY0
ZjgxMzFiZWQ2NzVlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKQEAgLTE1OCw2ICsxNTgsMTggQEAKICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcyI+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzIj4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xs
ZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0
eWxlS2V5d29yZENoZWNrYm94LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3MiPgor
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JJ
dGVtLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxT
dHlsZVNlbGVjdG9yU2VjdGlvbi5jc3MiPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JEcmFn
VG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+CkBAIC01MzMsNiArNTQ1LDI1IEBACiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JJdGVtLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3Jk
UGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVL
ZXl3b3JkSWNvbkxpc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZUtleXdvcmRDaGVja2JveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9WaXN1YWxTdHlsZVVSTElucHV0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1dC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9y
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVGb250RmFt
aWx5TGlzdEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3Vh
bFN0eWxlRm9udEZhbWlseUxpc3RJdGVtLmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCkBA
IC01NjYsNiArNTk3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvU3RvcmFnZU1h
bmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UaW1lbGlu
ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UeXBl
VG9rZW5Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9WaXN1YWxTdHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8
c2NyaXB0IHNyYz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDg1MzY1M2MzNTYyMTkwNzIzZGE4NGNl
NDdhNGY1Yzk1ODFmOWM5NmQuLjQ4NmVlOWQ1ZjlkN2FmNmUzYjRlYWQ0M2MxNmMyMjkxZTk3NzBk
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAg
LTczLDE1ICs3MywxNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAg
ICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAgICAgICAgdGhpcy5fdmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMp
OwogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlz
Ll9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWls
c1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2
ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAgICB0
aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVs
ZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsXTsKKyAg
ICAgICAgdGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRo
aXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5l
bCwgdGhpcy5fdmlzdWFsU3R5bGVEZXRhaWxzUGFuZWxdOwogCiAgICAgICAgIHRoaXMuX25hdmln
YXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5uYXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdh
dGlvbkl0ZW0odGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSXRlbSk7CiAg
ICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fbWV0cmlj
c1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtKTsKKyAgICAgICAgdGhpcy5fbmF2aWdh
dGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQYW5lbC5u
YXZpZ2F0aW9uSXRlbSk7CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlvblNldHRp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtc3R5bGUtZGV0YWls
cy1wYW5lbCIsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkl0ZW0uaWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKaW5kZXggODRiM2EzOTcxODk3NmRkYjE4
Y2U4ZGM3Nzc2OTJjNjQ1OGI3ZTAwMS4uNmZiODAyYjExOTc2NThkMWY0MzY4YWI4OGU3ZGYyNjFk
MDNjOTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGV0YWlsc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKQEAgLTk4LDYgKzk4LDggQEAgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsK
IAogICAgICAgICB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nLnZhbHVlID0gZmxhZyB8fCBmYWxzZTsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb24uRXZlbnQuVG9nZ2xlZENvbGxhcHNlZFN0YXRlKTsKICAgICB9CiAKICAgICBn
ZXQgZ3JvdXBzKCkKQEAgLTE2NiwzICsxNjgsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24uRGlzY2xvc3VyZVRyaWFuZ2xlT3BlbkNhbnZhc0lkZW50aWZpZXIgPSAiZGV0YWlscy1zZQog
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZUNsb3NlZENhbnZh
c0lkZW50aWZpZXIgPSAiZGV0YWlscy1zZWN0aW9uLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2Vk
IjsKIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxD
YW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1ub3JtYWwiOwogV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZUFjdGl2ZUNhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAi
LWFjdGl2ZSI7CisKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5FdmVudCA9IHsKKyAgICBU
b2dnbGVkQ29sbGFwc2VkU3RhdGU6ICJkZXRhaWxzLXNlY3Rpb24tdG9nZ2xlZC1jb2xsYXBzZWQt
c3RhdGUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMzNWZlZDc5MjUyYTlhM2RmMjQyNGFhYmE0YzRkNDYxOTQyZDM0ODUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0
aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyIHsKKyAgICBmb250LXdlaWdodDogbm9ybWFs
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRl
dGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4geworICAgIGRp
c3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9kaWZpZWQgPiAuaGVh
ZGVyID4gc3Bhbjo6YWZ0ZXIgeworICAgIHdpZHRoOiA5cHg7CisgICAgaGVpZ2h0OiA5cHg7Cisg
ICAgbWFyZ2luOiAzcHggNnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CisgICAgb3BhY2l0eTogMC41OworICAgIGNvbnRlbnQ6ICIiOworfQor
Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgeworICAgIG1hcmdpbi10b3A6IDVw
eDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5k
ZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cg
eworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29u
dGVudCAuZ3JvdXAgPiAucm93Omxhc3QtY2hpbGQgeworICAgIHBhZGRpbmctYm90dG9tOiAzcHg7
Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93LnZp
c3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93IHsKKyAgICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xp
ZCBsaWdodGdyZXk7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4OworICAgIHBhZGRpbmctYm90dG9t
OiAycHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAu
cm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXRpdGxlIHsKKyAgICB3aWR0aDogNTVweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwu
ZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2Vj
dGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lcjpub3QoLmxheW91dC1yZXZlcnNlZCk6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLXJp
Z2h0OiAxMXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rv
ci1zZWN0aW9uKSB7CisgICAgb3BhY2l0eTogMC41OworICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2Fi
bGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9u
KSBpbnB1dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZTkyZDY2NzQ2MDZkNDU2NTRkN2Nk
NGY5MGQ1NTJhZTg3MWFjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMCww
ICsxLDExMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwgPSBjbGFzcyBWaXN1YWxTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5TdHlsZURldGFpbHNQYW5lbAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAgIHsK
KyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJ2aXN1YWwiLCAidmlzdWFsIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJWaXN1YWwiKSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnByb3BlcnR5UmVm
ZXJlbmNlSW5mb1RlbXAgPSB7fTsKKyAgICAgICAgdGhpcy5fY3VycmVudFJ1bGUgPSBudWxsOwor
CisgICAgICAgIHRoaXMuX2dyb3VwcyA9IHt9OworICAgICAgICB0aGlzLl9rZXl3b3JkcyA9IHt9
OworICAgICAgICB0aGlzLl91bml0cyA9IHt9OworICAgICAgICB0aGlzLl9hdXRvY29tcGxldGlv
blByb3BlcnR5RWRpdG9ycyA9IHt9OworCisgICAgICAgIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRz
ID0gWyJJbmhlcml0IiwgIkluaXRpYWwiXTsKKyAgICAgICAgdGhpcy5fa2V5d29yZHMuYm94TW9k
ZWwgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJBdXRvIl0pOworICAgICAgICB0
aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSA9IHsKKyAgICAgICAgICAgIGJhc2ljOiB0aGlzLl9r
ZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb25lIiwgIkhpZGRlbiIsICJTb2xpZCJdKSwKKyAg
ICAgICAgICAgIGFkdmFuY2VkOiBbIkRhc2hlZCIsICJEb3R0ZWQiLCAiRG91YmxlIiwgIkdyb292
ZSIsICJIaWRkZW4iLCAiSW5zZXQiLCAiTm9uZSIsICJPdXRzZXQiLCAiUmlkZ2UiLCAiU29saWQi
XQorICAgICAgICB9OworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCA9IHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk1lZGl1bSIsICJUaGljayIsICJUaGluIl0pOwor
CisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQgPSB7CisgICAgICAgICAg
ICBiYXNpYzogWyJweCIsICJlbSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiY2giLCAiY20i
LCAiZXgiLCAiaW4iLCAibW0iLCAicGMiLCAicHQiLCAicmVtIiwgInZoIiwgInZ3IiwgInZtYXgi
LCAidm1pbiJdCisgICAgICAgIH07CisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzID0gewor
ICAgICAgICAgICAgYmFzaWM6IFsiJSJdLmNvbmNhdCh0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQ
ZXJjZW50LmJhc2ljKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiB0aGlzLl91bml0cy5kZWZhdWx0
c1NhbnNQZXJjZW50LmFkdmFuY2VkCisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2VsZWN0b3Ig
U2VjdGlvbgorICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uKHRoaXMpOworICAgICAgICB0aGlzLl9zZWxlY3Rv
clNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3Rv
clNlY3Rpb24uRXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlzLl91cGRhdGVTZWN0aW9ucywgdGhp
cyk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0b3JTZWN0
aW9uLmVsZW1lbnQpOworCisgICAgICAgIC8vIExheW91dCBTZWN0aW9uCisgICAgICAgIHRoaXMu
X2dlbmVyYXRlU2VjdGlvbigiZGlzcGxheSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzcGxh
eSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJwb3NpdGlvbiIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUG9zaXRpb24iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlv
bigiZmxvYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IGFuZCBDbGVhciIpKTsKKyAg
ICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJkaW1lbnNpb25zIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEaW1lbnNpb25zIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oIm1h
cmdpbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWFyZ2luIikpOworICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oInBhZGRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhZGRpbmci
KSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxleGJveCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRmxleGJveCIpKTsKKworICAgICAgICB2YXIgbGF5b3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbigibGF5b3V0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJM
YXlvdXQiKSwgW3RoaXMuX2dyb3Vwcy5kaXNwbGF5LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5wb3Np
dGlvbi5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZmxvYXQuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmRp
bWVuc2lvbnMuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLm1hcmdpbi5zZWN0aW9uLCB0aGlzLl9ncm91
cHMucGFkZGluZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZmxleGJveC5zZWN0aW9uXSk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGF5b3V0LmVsZW1lbnQpOworCisgICAgICAg
IC8vIFRleHQgU2VjdGlvbgorICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQtc3R5
bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIikpOworICAgICAgICB0aGlzLl9nZW5l
cmF0ZVNlY3Rpb24oImZvbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnQiKSk7CisgICAg
ICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigidGV4dC1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTcGFjaW5nIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQt
c2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFkb3ciKSk7CisKKyAgICAgICAgdmFy
IHRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJ0ZXh0IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUZXh0IiksIFt0aGlzLl9ncm91cHMudGV4dFN0eWxlLnNlY3Rpb24sIHRo
aXMuX2dyb3Vwcy5mb250LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy50ZXh0U3BhY2luZy5zZWN0aW9u
LCB0aGlzLl9ncm91cHMudGV4dFNoYWRvdy5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGV4dC5lbGVtZW50KTsKKworICAgICAgICAvLyBCYWNrZ3JvdW5kIFNl
Y3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJiYWNrZ3JvdW5kLXN0eWxlIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJib3JkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvcmRlciIpKTsKKyAgICAg
ICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJvdXRsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJPdXRsaW5lIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJveC1zaGFkb3ci
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRvdyIpKTsKKworICAgICAgICB2YXIgYmFja2dy
b3VuZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImJhY2tncm91bmQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJhY2tncm91bmQiKSwgW3RoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5k
U3R5bGUuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmJvcmRlci5zZWN0aW9uLCB0aGlzLl9ncm91cHMu
b3V0bGluZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuYm94U2hhZG93LnNlY3Rpb25dKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kLmVsZW1lbnQpOworCisgICAg
ICAgIC8vIEFuaW1hdGlvbiBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigi
dHJhbnNpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNpdGlvbiIpKTsKKworICAg
ICAgICB2YXIgYW5pbWF0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYW5p
bWF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbmltYXRpb24iKSwgW3RoaXMuX2dyb3Vw
cy50cmFuc2l0aW9uLnNlY3Rpb25dKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZChhbmltYXRpb24uZWxlbWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICByZWZy
ZXNoKHNpZ25pZmljYW50Q2hhbmdlKQorICAgIHsKKyAgICAgICAgaWYgKHNpZ25pZmljYW50Q2hh
bmdlKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24udXBkYXRlKHRoaXMuX25v
ZGVTdHlsZXMpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VjdGlvbnMoKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfZ2VuZXJhdGVTZWN0aW9uKGlkLCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIGlm
ICghaWQgfHwgIWRpc3BsYXlOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZ1
bmN0aW9uIHJlcGxhY2VEYXNoV2l0aENhcGl0YWwobWF0Y2gpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKCItIiwgIiIpLnRvVXBwZXJDYXNlKCk7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgY2FtZWxDYXNlSWQgPSBpZC5yZXBsYWNlKC8tXGJcdy9nLCByZXBs
YWNlRGFzaFdpdGhDYXBpdGFsKTsKKworICAgICAgICB0aGlzLl9ncm91cHNbY2FtZWxDYXNlSWRd
ID0geworICAgICAgICAgICAgc2VjdGlvbjogbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bihpZCwgZGlzcGxheU5hbWUsIFtdKSwKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9CisgICAg
ICAgIH07CisKKyAgICAgICAgdmFyIHBvcHVsYXRlRnVuY3Rpb24gPSB0aGlzWyJfIiArIGNhbWVs
Q2FzZUlkICsgIlNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQiXTsKKworICAgICAgICB0aGlz
Ll9ncm91cHNbY2FtZWxDYXNlSWRdLnNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24uRXZlbnQuVG9nZ2xlZENvbGxhcHNlZFN0YXRlLCBwb3B1bGF0ZUZ1
bmN0aW9uLmJpbmQodGhpcyksIHRoaXMpOworCisgICAgICAgIGlmICghdGhpcy5fZ3JvdXBzW2Nh
bWVsQ2FzZUlkXS5zZWN0aW9uLmNvbGxhcHNlZCkKKyAgICAgICAgICAgIHBvcHVsYXRlRnVuY3Rp
b24uY2FsbCh0aGlzKTsKKyAgICB9CisKKyAgICBfdXBkYXRlU2VjdGlvbnMoZXZlbnQpCisgICAg
eworICAgICAgICB0aGlzLl9jdXJyZW50UnVsZSA9IHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5jdXJy
ZW50UnVsZSgpOworICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRSdWxlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBkaXNhYmxlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgiZGlzYWJsZWQiLCB0aGlzLl9jdXJyZW50UnVsZS5fX3Zpc3VhbFN0eWxlRGlzYWJs
ZWQpOworICAgICAgICBpZiAoZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIHNlY3Rpb25zID0gdGhpcy5fY3VycmVudFJ1bGUuX192aXN1YWxTdHlsZU1vZGlmaWVk
U2VjdGlvbnM7CisgICAgICAgIGlmICghc2VjdGlvbnMpCisgICAgICAgICAgICB0aGlzLl9jdXJy
ZW50UnVsZS5fX3Zpc3VhbFN0eWxlTW9kaWZpZWRTZWN0aW9ucyA9IHt9OworCisgICAgICAgIGZv
ciAodmFyIGtleSBpbiB0aGlzLl9ncm91cHMpIHsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBy
b3BlcnRpZXModGhpcy5fZ3JvdXBzW2tleV0sICEhZXZlbnQpOworCisgICAgICAgICAgICBpZiAo
c2VjdGlvbnMpCisgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBzW2tleV0uc2VjdGlvbi5lbGVt
ZW50LmNsYXNzTGlzdC50b2dnbGUoIm1vZGlmaWVkIiwgc2VjdGlvbnNba2V5XSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBfdXBkYXRlUHJvcGVydGllcyhncm91cCwgZm9yY2VTdHlsZVVwZGF0
ZSkKKyAgICB7CisgICAgICAgIGlmICghZ3JvdXAuc2VjdGlvbiB8fCBncm91cC5zZWN0aW9uLmNv
bGxhcHNlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4g
Z3JvdXAucHJvcGVydGllcykgeworICAgICAgICAgICAgdmFyIHByb3BlcnR5RWRpdG9yID0gZ3Jv
dXAucHJvcGVydGllc1trZXldOworICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBkYXRlKCFw
cm9wZXJ0eUVkaXRvci5zdHlsZSB8fCBmb3JjZVN0eWxlVXBkYXRlID8gdGhpcy5fY3VycmVudFJ1
bGUgOiBudWxsKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBhdXRvY29tcGxldGVDb21wYXRp
YmxlUHJvcGVydGllcyA9IGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzOwor
ICAgICAgICBpZiAoIWF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzIHx8ICFhdXRvY29t
cGxldGVDb21wYXRpYmxlUHJvcGVydGllcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgZm9yICh2YXIgZWRpdG9yIG9mIGF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0
aWVzKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3Bl
cnR5RWRpdG9yKGVkaXRvciwgZm9yY2VTdHlsZVVwZGF0ZSk7CisgICAgfQorCisgICAgX3VwZGF0
ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlKQorICAg
IHsKKyAgICAgICAgaWYgKCFlZGl0b3IgfHwgKGVkaXRvci5oYXNDb21wbGV0aW9ucyAmJiAhZm9y
Y2UpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGVkaXRvci5jb21wbGV0aW9ucyA9
IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkoZWRpdG9yLnBy
b3BlcnR5UmVmZXJlbmNlTmFtZSk7CisgICAgfQorCisgICAgX3NlY3Rpb25Jc0NvbGxhcHNlZE9y
UG9wdWxhdGVkKGdyb3VwKQorICAgIHsKKyAgICAgICAgdmFyIHNlY3Rpb24gPSBncm91cC5zZWN0
aW9uOworICAgICAgICB2YXIgcG9wdWxhdGVkID0gISFzZWN0aW9uLmdyb3Vwcy5sZW5ndGg7Cisg
ICAgICAgIHZhciBjb2xsYXBzZWQgPSBzZWN0aW9uLmNvbGxhcHNlZDsKKyAgICAgICAgaWYgKCFj
b2xsYXBzZWQgJiYgcG9wdWxhdGVkKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlUHJvcGVydGll
cyhncm91cCwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIGNvbGxhcHNlZCB8fCBwb3B1bGF0ZWQ7
CisgICAgfQorCisgICAgX3BvcHVsYXRlU2VjdGlvbihncm91cCwgZ3JvdXBzKQorICAgIHsKKyAg
ICAgICAgaWYgKCFncm91cCB8fCAhZ3JvdXBzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGdyb3VwLnNlY3Rpb24uZ3JvdXBzID0gZ3JvdXBzOworICAgICAgICB0aGlzLl91cGRhdGVQ
cm9wZXJ0aWVzKGdyb3VwKTsKKyAgICB9CisKKyAgICBfZGlzcGxheVNlY3Rpb25Db2xsYXBzZWRT
dGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRp
c3BsYXk7CisgICAgICAgIGlmICh0aGlzLl9zZWN0aW9uSXNDb2xsYXBzZWRPclBvcHVsYXRlZChn
cm91cCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBn
cm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBkaXNwbGF5Um93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmRpc3BsYXkgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZGlzcGxheSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRGlzcGxheSIpLCB7CisgICAgICAgICAgICBiYXNpYzogWyJOb25l
IiwgIkJsb2NrIiwgIkZsZXgiLCAiSW5saW5lIiwgIklubGluZSBCbG9jayJdLAorICAgICAgICAg
ICAgYWR2YW5jZWQ6IFsiQ29tcGFjdCIsICJJbmxpbmUgRmxleCIsICJJbmxpbmUgVGFibGUiLCAi
TGlzdCBJdGVtIiwgIlRhYmxlIiwgIlRhYmxlIENhcHRpb24iLCAiVGFibGUgQ2VsbCIsICJUYWJs
ZSBDb2x1bW4iLCAiVGFibGUgQ29sdW1uIEdyb3VwIiwgIlRhYmxlIEZvb3RlciBHcm91cCIsICJU
YWJsZSBIZWFkZXIgR3JvdXAiLCAiVGFibGUgUm93IiwgIlRhYmxlIFJvdyBHcm91cCIsICIgV0FQ
IE1hcnF1ZWUiLCAiIFdlYmtpdCBCb3giLCAiIFdlYmtpdCBHcmlkIiwgIiBXZWJraXQgSW5saW5l
IEJveCIsICIgV2Via2l0IElubGluZSBHcmlkIl0KKyAgICAgICAgfSk7CisgICAgICAgIHByb3Bl
cnRpZXMudmlzaWJpbGl0eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlj
a2VyKCJ2aXNpYmlsaXR5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWaXNpYmlsaXR5IiksIHsK
KyAgICAgICAgICAgIGJhc2ljOiBbIkhpZGRlbiIsICJWaXNpYmxlIl0sCisgICAgICAgICAgICBh
ZHZhbmNlZDogWyJDb2xsYXBzZSJdCisgICAgICAgIH0pOworCisgICAgICAgIGRpc3BsYXlSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmRpc3BsYXkuZWxlbWVudCk7CisgICAgICAg
IGRpc3BsYXlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnZpc2liaWxpdHkuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIHNpemluZ1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3hTaXppbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm94LXNpemluZyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2l6aW5nIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkJv
cmRlciBCb3giLCAiQ29udGVudCBCb3giXSkpOworICAgICAgICBwcm9wZXJ0aWVzLmN1cnNvciA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJjdXJzb3IiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkN1cnNvciIpLCB7CisgICAgICAgICAgICBiYXNpYzogWyJBdXRv
IiwgIkRlZmF1bHQiLCAiTm9uZSIsICJQb2ludGVyIiwgIkNyb3NzaGFpciIsICJUZXh0Il0sCisg
ICAgICAgICAgICBhZHZhbmNlZDogWyJDb250ZXh0IE1lbnUiLCAiSGVscCIsICJQcm9ncmVzcyIs
ICJXYWl0IiwgIkNlbGwiLCAiVmVydGljYWwgVGV4dCIsICJBbGlhcyIsICJDb3B5IiwgIk1vdmUi
LCAiTm8gRHJvcCIsICJOb3QgQWxsb3dlZCIsICJBbGwgU2Nyb2xsIiwgIkNvbCBSZXNpemUiLCAi
Um93IFJlc2l6ZSIsICJOIFJlc2l6ZSIsICJFIFJlc2l6ZSIsICJTIFJlc2l6ZSIsICJXIFJlc2l6
ZSIsICJOUyBSZXNpemUiLCAiRVcgUmVzaXplIiwgIk5FIFJlc2l6ZSIsICJOVyBSZXNpemUiLCAi
U0UgUmVzaXplIiwgInNXIFJlc2l6ZSIsICJORVNXIFJlc2l6ZSIsICJOV1NFIFJlc2l6ZSJdCisg
ICAgICAgIH0pOworCisgICAgICAgIHNpemluZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuYm94U2l6aW5nLmVsZW1lbnQpOworICAgICAgICBzaXppbmdSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmN1cnNvci5lbGVtZW50KTsKKworICAgICAgICB2YXIgb3ZlcmZs
b3dSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMub3BhY2l0eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51
bWJlclNsaWRlcigib3BhY2l0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3BhY2l0eSIpKTsK
KyAgICAgICAgcHJvcGVydGllcy5vcGFjaXR5LnNjYWxlID0gMTsKKyAgICAgICAgcHJvcGVydGll
cy5vcGFjaXR5Lm1heGltdW0gPSAxOworICAgICAgICBwcm9wZXJ0aWVzLm92ZXJmbG93ID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoWyJvdmVyZmxvdy14IiwgIm92
ZXJmbG93LXkiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdmVyZmxvdyIpLCB7CisgICAgICAg
ICAgICBiYXNpYzogWyJJbml0aWFsIiwgIkF1dG8iLCAiSGlkZGVuIiwgIlNjcm9sbCIsICJWaXNp
YmxlIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyJNYXJxdWVlIiwgIk92ZXJsYXkiLCAiIFdl
YmtpdCBQYWdlZCBYIiwgIiBXZWJraXQgUGFnZWQgWSJdCisgICAgICAgIH0pOworCisgICAgICAg
IG92ZXJmbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vcGFjaXR5LmVsZW1l
bnQpOworICAgICAgICBvdmVyZmxvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
b3ZlcmZsb3cuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRpc3BsYXlHcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGlzcGxheVJvdywgc2l6aW5nUm93LCBvdmVy
Zmxvd1Jvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtkaXNwbGF5
R3JvdXBdKTsKKyAgICB9CisKKyAgICBfZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwg
cHJlZml4LCBhbGxvd05lZ2F0aXZlcykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWN0aW9u
SXNDb2xsYXBzZWRPclBvcHVsYXRlZChncm91cCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBo
YXNQcmVmaXggPSBwcmVmaXggJiYgcHJlZml4Lmxlbmd0aDsKKyAgICAgICAgdmFyIHByb3BlcnR5
TmFtZVByZWZpeCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICItIiA6ICIiOworCisgICAgICAgIHZh
ciB0b3AgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiVG9wIiA6ICJ0b3AiOworICAgICAgICB2YXIg
Ym90dG9tID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIkJvdHRvbSIgOiAiYm90dG9tIjsKKyAgICAg
ICAgdmFyIGxlZnQgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiTGVmdCIgOiAibGVmdCI7CisgICAg
ICAgIHZhciByaWdodCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJSaWdodCIgOiAicmlnaHQiOwor
CisgICAgICAgIHZhciB2ZXJ0aWNhbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllc1t0b3BdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJ0b3AiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlRvcCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzKTsKKyAgICAgICAgcHJvcGVydGllc1tib3R0b21dID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVBy
ZWZpeCArICJib3R0b20iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvdHRvbSIpLCB0aGlzLl9r
ZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzLCB0
cnVlKTsKKyAgICAgICAgdmFyIHZlcnRpY2FsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwgcHJvcGVydGllc1tib3R0
b21dXSwgImxpbmstdmVydGljYWwiKTsKKworICAgICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXNbdG9wXS5lbGVtZW50KTsKKyAgICAgICAgdmVydGljYWwuZWxlbWVu
dC5hcHBlbmRDaGlsZCh2ZXJ0aWNhbExpbmsuZWxlbWVudCk7CisgICAgICAgIHZlcnRpY2FsLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tib3R0b21dLmVsZW1lbnQpOworCisgICAgICAg
IHZhciBob3Jpem9udGFsID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzW2xlZnRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJsZWZ0IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJMZWZ0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZh
dWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBwcm9wZXJ0aWVzW3JpZ2h0XSA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChwcm9wZXJ0eU5hbWVQcmVmaXgg
KyAicmlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0IiksIHRoaXMuX2tleXdvcmRz
LmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUpOwor
ICAgICAgICB2YXIgaG9yaXpvbnRhbExpbmsgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3JMaW5rKFtwcm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0s
ICJsaW5rLWhvcml6b250YWwiKTsKKworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllc1tsZWZ0XS5lbGVtZW50KTsKKyAgICAgICAgaG9yaXpvbnRhbC5lbGVt
ZW50LmFwcGVuZENoaWxkKGhvcml6b250YWxMaW5rLmVsZW1lbnQpOworICAgICAgICBob3Jpem9u
dGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tyaWdodF0uZWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGFsbExpbmtSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworICAgICAgICB2YXIgYWxsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwgcHJvcGVydGllc1tib3R0b21dLCBwcm9w
ZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0sICJsaW5rLWFsbCIsIFt2ZXJ0aWNhbExp
bmssIGhvcml6b250YWxMaW5rXSk7CisgICAgICAgIGFsbExpbmtSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChhbGxMaW5rLmVsZW1lbnQpOworCisgICAgICAgIHJldHVybiBbdmVydGljYWwsIGFsbExp
bmtSb3csIGhvcml6b250YWxdOworICAgIH0KKworICAgIF9wb3NpdGlvblNlY3Rpb25Db2xsYXBz
ZWRTdGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBz
LnBvc2l0aW9uOworICAgICAgICB2YXIgcm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlv
blJvd3MoZ3JvdXAsIG51bGwsIHRydWUpOworICAgICAgICBpZiAoIXJvd3MpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOwor
CisgICAgICAgIHZhciBwb3NpdGlvblR5cGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigicG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlR5cGUiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiU3RhdGljIiwgIlJlbGF0aXZlIiwg
IkFic29sdXRlIiwgIkZpeGVkIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyIgV2Via2l0IFN0
aWNreSJdCisgICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnpJbmRleCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiei1pbmRleCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiei1JbmRleCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgbnVsbCwgdHJ1
ZSk7CisKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5wb3NpdGlvbi5lbGVtZW50KTsKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy56SW5kZXguZWxlbWVudCk7CisgICAgICAgIHBvc2l0aW9uVHlwZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93Iik7CisKKyAg
ICAgICAgcm93cy51bnNoaWZ0KHBvc2l0aW9uVHlwZSkKKworICAgICAgICB2YXIgcG9zaXRpb25H
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcG9zaXRpb25Hcm91cF0pOworICAgIH0K
KworICAgIF9mbG9hdFNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsb2F0OworICAgICAgICBpZiAodGhpcy5fc2Vj
dGlvbklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2
YXIgZmxvYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuZmxvYXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZEljb25MaXN0KCJmbG9hdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQiKSwgWyJMZWZ0
IiwgIlJpZ2h0IiwgIk5vbmUiXSk7CisgICAgICAgIGZsb2F0Um93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5mbG9hdC5lbGVtZW50KTsKKworICAgICAgICB2YXIgY2xlYXJSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
Y2xlYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJjbGVh
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIkJv
dGgiLCAiTm9uZSJdKTsKKyAgICAgICAgY2xlYXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmNsZWFyLmVsZW1lbnQpOworCisgICAgICAgIHZhciBmbG9hdEdyb3VwID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmbG9hdFJvdywgY2xlYXJSb3ddKTsKKyAg
ICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZmxvYXRHcm91cF0pOworICAgIH0K
KworICAgIF9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZWRpdG9yLCBoaWdobGlnaHRDb25maWcp
CisgICAgeworICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3ZlcigpIHsKKyAgICAgICAg
ICAgIGlmICghdGhpcy5fc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBpZiAoIXRoaXMuX3N0eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA2KTogT3JkZXIgb2YgcGFyYW1ldGVycyBjaGFuZ2VkIGluIGlPUyA3
LgorICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtub2RlSWQ6
IHRoaXMuX3N0eWxlLm5vZGUuaWQsIGhpZ2hsaWdodENvbmZpZ30pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKERPTUFnZW50LmhpZ2hs
aWdodFNlbGVjdG9yKQorICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9y
KGhpZ2hsaWdodENvbmZpZywgdGhpcy5fc3R5bGUub3duZXJSdWxlLnNlbGVjdG9yVGV4dCwgdGhp
cy5fc3R5bGUubm9kZS5vd25lckRvY3VtZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3V0KCkgeworICAgICAgICAgICAgRE9N
QWdlbnQuaGlkZUhpZ2hsaWdodCgpOworICAgICAgICB9CisKKyAgICAgICAgZWRpdG9yLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgb25FZGl0b3JNb3VzZW92ZXIuYmluZChl
ZGl0b3IpKTsKKyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dXQiLCBvbkVkaXRvck1vdXNlb3V0LmJpbmQoZWRpdG9yKSk7CisgICAgfQorCisgICAgX2RpbWVu
c2lvbnNTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkKCkKKyAgICB7CisgICAgICAgIHZhciBn
cm91cCA9IHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25zOworICAgICAgICBpZiAodGhpcy5fc2VjdGlv
bklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIg
ZGltZW5zaW9uc1dpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzLndpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJl
bGF0aXZlTnVtYmVyU2xpZGVyKCJ3aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgi
KSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAg
ICAgICBkaW1lbnNpb25zV2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndpZHRo
LmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zSGVpZ2h0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmhlaWdodCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiaGVpZ2h0Iiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWws
IHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsKKworICAgICAgICBkaW1lbnNpb25zSGVpZ2h0
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5oZWlnaHQuZWxlbWVudCk7CisKKyAgICAg
ICAgdmFyIGRpbWVuc2lvbnNQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMud2lkdGgsIHByb3BlcnRp
ZXMuaGVpZ2h0XTsKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc1dpZHRoLCBkaW1lbnNpb25zSGVpZ2h0
XSk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNaW5XaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5taW5XaWR0aCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLXdpZHRoIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRpbWVuc2lvbnNNaW5XaWR0aC5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluV2lkdGguZWxlbWVudCk7CisKKyAgICAgICAg
dmFyIGRpbWVuc2lvbnNNaW5IZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMubWluSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtaW4taGVpZ2h0IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWluSGVpZ2h0LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5taW5IZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRpbWVu
c2lvbnNNaW5Qcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMubWluV2lkdGgsIHByb3BlcnRpZXMubWlu
SGVpZ2h0XTsKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc01pbldpZHRoLCBkaW1lbnNpb25zTWlu
SGVpZ2h0XSk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNYXhLZXl3b3JkcyA9IHRoaXMuX2tl
eXdvcmRzLmRlZmF1bHRzLmNvbmNhdCgiTm9uZSIpOworICAgICAgICB2YXIgZGltZW5zaW9uc01h
eFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLm1heFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZl
TnVtYmVyU2xpZGVyKCJtYXgtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiks
IGRpbWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAg
IGRpbWVuc2lvbnNNYXhXaWR0aC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWF4V2lk
dGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNYXhIZWlnaHQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWF4SGVp
Z2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJt
YXgtaGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgZGltZW5zaW9uc01h
eEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01h
eEhlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWF4SGVpZ2h0LmVsZW1lbnQp
OworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1h
eFdpZHRoLCBwcm9wZXJ0aWVzLm1heEhlaWdodF07CisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4
R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNN
YXhXaWR0aCwgZGltZW5zaW9uc01heEhlaWdodF0pOworCisgICAgICAgIHZhciBkaW1lbnNpb25z
VGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzQ29udHJvbGxlcih7CisgICAgICAgICAgICAiZGVmYXVsdCI6IHt0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEZWZhdWx0IiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNHcm91cC5lbGVtZW50
LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zUHJvcGVydGllc30sCisgICAgICAgICAgICAibWluIjog
e3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1pbiIpLCBlbGVtZW50OiBkaW1lbnNpb25z
TWluR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc01pblByb3BlcnRpZXN9LAor
ICAgICAgICAgICAgIm1heCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXgiKSwg
ZWxlbWVudDogZGltZW5zaW9uc01heEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lv
bnNNYXhQcm9wZXJ0aWVzfQorICAgICAgICB9KTsKKworICAgICAgICB2YXIgaGlnaGxpZ2h0Q29u
ZmlnID0ge2NvbnRlbnRDb2xvcjoge3I6IDExMSwgZzogMTY4LCBiOiAyMjAsIGE6IDAuNjZ9LCBz
aG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhn
cm91cC5wcm9wZXJ0aWVzLndpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5oZWlnaHQsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLm1pbldpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRN
ZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5taW5IZWlnaHQsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLm1heFdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRN
ZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXhIZWlnaHQsIGhpZ2hsaWdo
dENvbmZpZyk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIsIGRpbWVuc2lv
bnNHcm91cCwgZGltZW5zaW9uc01pbkdyb3VwLCBkaW1lbnNpb25zTWF4R3JvdXBdKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGltZW5zaW9uc0dyb3VwXSk7CisgICAg
fQorCisgICAgX21hcmdpblNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAg
ICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLm1hcmdpbjsKKyAgICAgICAgdmFyIHJvd3Mg
PSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAibWFyZ2luIiwgdHJ1ZSk7
CisgICAgICAgIGlmICghcm93cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIg
aGlnaGxpZ2h0Q29uZmlnID0ge21hcmdpbkNvbG9yOiB7cjogMjQ2LCBnOiAxNzgsIGI6IDEwNywg
YTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWFyZ2luVG9wLCBoaWdobGlnaHRDb25maWcpOwor
ICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5t
YXJnaW5Cb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NN
b3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpbkxlZnQsIGhpZ2hsaWdodENvbmZp
Zyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0
aWVzLm1hcmdpblJpZ2h0LCBoaWdobGlnaHRDb25maWcpOworCisgICAgICAgIHZhciBtYXJnaW5H
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbbWFyZ2luR3JvdXBdKTsKKyAgICB9CisK
KyAgICBfcGFkZGluZ1NlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLnBhZGRpbmc7CisgICAgICAgIHZhciByb3dzID0g
dGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgInBhZGRpbmciKTsKKyAgICAg
ICAgaWYgKCFyb3dzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBoaWdobGln
aHRDb25maWcgPSB7cGFkZGluZ0NvbG9yOiB7cjogMTQ3LCBnOiAxOTYsIGI6IDEyNSwgYTogMC42
Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVu
ZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ1RvcCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGlu
Z0JvdHRvbSwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ0xlZnQsIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVz
LnBhZGRpbmdSaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAgICB2YXIgcGFkZGluZ0dy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtwYWRkaW5nR3JvdXBdKTsKKyAgICB9CisK
KyAgICBfZmxleGJveFNlY3Rpb25Db2xsYXBzZWRTdGF0ZVRvZ2dsZWQoKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsZXhib3g7CisgICAgICAgIGlmICh0aGlzLl9z
ZWN0aW9uSXNDb2xsYXBzZWRPclBvcHVsYXRlZChncm91cCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAg
IHZhciBmbGV4T3JkZXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMub3JkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
TnVtYmVySW5wdXRCb3goIm9yZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmRlciIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleEJhc2lzID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LWJhc2lzIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCYXNpcyIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwg
dGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3JkZXIuZWxlbWVudCk7CisgICAgICAgIGZsZXhP
cmRlclJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEJhc2lzLmVsZW1lbnQp
OworCisgICAgICAgIHZhciBmbGV4U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4R3JvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1ncm93IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJHcm93IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKyAgICAgICAg
cHJvcGVydGllcy5mbGV4U2hyaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KCJmbGV4LXNocmluayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hyaW5rIiks
IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKworICAgICAgICBmbGV4U2l6ZVJvdy5l
bGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEdyb3cuZWxlbWVudCk7CisgICAgICAg
IGZsZXhTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4U2hyaW5rLmVs
ZW1lbnQpOworCisgICAgICAgIHZhciBmbGV4Rmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4RGlyZWN0aW9uID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZsZXgtZGlyZWN0aW9uIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMuY29uY2F0KFsiUm93IiwgIlJvdyBSZXZlcnNlIiwgIkNvbHVtbiIsICJDb2x1bW4gUmV2ZXJz
ZSJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFdyYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZmxleC13cmFwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJXcmFwIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIldyYXAiLCAiV3JhcCBS
ZXZlcnNlIiwgIk5vd3JhcCJdKSk7CisKKyAgICAgICAgZmxleEZsb3dSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIGZsZXhG
bG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4V3JhcC5lbGVtZW50KTsK
KworICAgICAgICB2YXIgZmxleGJveEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFtmbGV4T3JkZXJSb3csIGZsZXhTaXplUm93LCBmbGV4Rmxvd1Jvd10pOworICAg
ICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtmbGV4Ym94R3JvdXBdKTsKKyAgICB9
CisKKyAgICBfdGV4dFN0eWxlU2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCgpCisgICAgewor
ICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMudGV4dFN0eWxlOworICAgICAgICBpZiAo
dGhpcy5fc2VjdGlvbklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKwor
ICAgICAgICB2YXIgdGV4dEFwcGVhcmFuY2VSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY29sb3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy50ZXh0RGlyZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpcmVjdGlvbiIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkxU
UiIsICJSVEwiXSkpOworCisgICAgICAgIHRleHRBcHBlYXJhbmNlUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5jb2xvci5lbGVtZW50KTsKKyAgICAgICAgdGV4dEFwcGVhcmFuY2VS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHREaXJlY3Rpb24uZWxlbWVudCk7
CisKKyAgICAgICAgdmFyIHRleHRBbGlnblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0QWxpZ24gPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJ0ZXh0LWFsaWduIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJBbGlnbiIpLCBbIkxlZnQiLCAiQ2VudGVyIiwgIlJpZ2h0IiwgIkp1c3RpZnki
XSk7CisKKyAgICAgICAgdGV4dEFsaWduUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy50ZXh0QWxpZ24uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRleHRUcmFuc2Zvcm1Sb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
dGV4dFRyYW5zZm9ybSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxp
c3QoInRleHQtdHJhbnNmb3JtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2Zvcm0iKSwg
WyJDYXBpdGFsaXplIiwgIlVwcGVyY2FzZSIsICJMb3dlcmNhc2UiLCAiTm9uZSJdKTsKKworICAg
ICAgICB0ZXh0VHJhbnNmb3JtUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0
VHJhbnNmb3JtLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0RGVjb3JhdGlvblJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50
ZXh0RGVjb3JhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxp
c3QoInRleHQtZGVjb3JhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVjb3JhdGlvbiIp
LCBbIlVuZGVybGluZSIsICJMaW5lIFRocm91Z2giLCAiT3ZlcmxpbmUiLCAiTm9uZSJdKTsKKwor
ICAgICAgICB0ZXh0RGVjb3JhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
dGV4dERlY29yYXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29t
cGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5jb2xvcl07CisKKyAgICAgICAgdmFyIHRl
eHRTdHlsZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0
QXBwZWFyYW5jZVJvdywgdGV4dEFsaWduUm93LCB0ZXh0VHJhbnNmb3JtUm93LCB0ZXh0RGVjb3Jh
dGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U3R5
bGVHcm91cF0pOworICAgIH0KKworICAgIF9mb250U2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xl
ZCgpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZm9udDsKKyAgICAg
ICAgaWYgKHRoaXMuX3NlY3Rpb25Jc0NvbGxhcHNlZE9yUG9wdWxhdGVkKGdyb3VwKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRp
ZXM7CisKKyAgICAgICAgdmFyIGZvbnRGYW1pbHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udEZhbWlseSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvcigiZm9udC1mYW1pbHkiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhbWlseSIpKTsKKworICAgICAgICBmb250RmFtaWx5Um93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250RmFtaWx5LmVsZW1lbnQpOworCisg
ICAgICAgIHZhciBmb250U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZm9udC1zaXplIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTaXplIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkxhcmdlciIsICJYWCBM
YXJnZSIsICJYIExhcmdlIiwgIkxhcmdlIiwgIk1lZGl1bSIsICJTbWFsbCIsICJYIFNtYWxsIiwg
IlhYIFNtYWxsIiwgIlNtYWxsZXIiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAg
ICAvLyBUT0RPOiBJbnRlcnNwZXJzZSBudW1lcmljYWwgZm9udC13ZWlnaHQgdmFsdWVzIGJldHdl
ZW4gdGhlIG90aGVyIGtleXdvcmRzLiAgU29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgLy8g
IFsiOTAwIiwgImJvbGRlciIsICI4MDAiLCAiYm9sZCIsICI2MDAiLCAiNTAwIiwgIm5vcm1hbCIs
ICIzMDAiLCAiMjAwIiwgImxpZ2h0ZXIiLCAiMTAwIl0KKyAgICAgICAgcHJvcGVydGllcy5mb250
V2VpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZvbnQt
d2VpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMu
ZGVmYXVsdHMuY29uY2F0KFsiQm9sZGVyIiwgIkJvbGQiLCAiTm9ybWFsIiwgIkxpZ2h0ZXIiXSkp
OworCisgICAgICAgIGZvbnRTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5m
b250U2l6ZS5lbGVtZW50KTsKKyAgICAgICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmZvbnRXZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGZvbnRTdHls
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5mb250U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZElj
b25MaXN0KCJmb250LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCBbIkl0
YWxpYyIsICJPYmxpcXVlIiwgIk5vcm1hbCJdKTsKKyAgICAgICAgcHJvcGVydGllcy5mb250VmFy
aWFudCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3goImZvbnQt
dmFyaWFudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFyaWFudCIpLCAiU21hbGwgQ2FwcyIs
ICJJbWFnZXMvRm9udFZhcmlhbnRTbWFsbENhcHMuc3ZnIikKKworICAgICAgICBmb250U3R5bGVS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRTdHlsZS5lbGVtZW50KTsKKyAg
ICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250VmFy
aWFudC5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydGllcyA9IFtwcm9wZXJ0aWVzLmZvbnRGYW1pbHldOworCisgICAgICAgIHZhciBmb250R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2ZvbnRGYW1pbHlSb3cs
IGZvbnRTaXplUm93LCBmb250U3R5bGVSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0
aW9uKGdyb3VwLCBbZm9udEdyb3VwXSk7CisgICAgfQorCisgICAgX3RleHRTcGFjaW5nU2VjdGlv
bkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCgpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlz
Ll9ncm91cHMudGV4dFNwYWNpbmc7CisgICAgICAgIGlmICh0aGlzLl9zZWN0aW9uSXNDb2xsYXBz
ZWRPclBvcHVsYXRlZChncm91cCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFy
IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBkZWZhdWx0VGV4
dEtleXdvcmRzID0gdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTm9ybWFsIl0pOwor
CisgICAgICAgIHZhciB0ZXh0TGF5b3V0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmxpbmVIZWlnaHQgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImxpbmUtaGVpZ2h0IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIZWlnaHQiKSwgZGVmYXVsdFRleHRLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVm
YXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLnZlcnRpY2FsQWxpZ24gPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInZlcnRpY2FsLWFsaWduIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBbGlnbiIpLCBbIkJhc2VsaW5lIiwgIkJvdHRvbSJdLmNvbmNhdCh0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cywgWyJNaWRkbGUiLCAiU3ViIiwgIlN1cGVyIiwgIlRleHQgQm90
dG9tIiwgIlRleHQgVG9wIiwgIlRvcCJdKSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAg
ICAgIHRleHRMYXlvdXRSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmxpbmVIZWln
aHQuZWxlbWVudCk7CisgICAgICAgIHRleHRMYXlvdXRSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLnZlcnRpY2FsQWxpZ24uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRleHRTcGFj
aW5nUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLmxldHRlclNwYWNpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goImxldHRlci1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZXR0
ZXIiKSwgZGVmYXVsdFRleHRLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAg
ICBwcm9wZXJ0aWVzLndvcmRTcGFjaW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KCJ3b3JkLXNwYWNpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldvcmQi
KSwgZGVmYXVsdFRleHRLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAg
IHRleHRTcGFjaW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5sZXR0ZXJTcGFj
aW5nLmVsZW1lbnQpOworICAgICAgICB0ZXh0U3BhY2luZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMud29yZFNwYWNpbmcuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRleHRXaGl0
ZXNwYWNlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAg
ICBwcm9wZXJ0aWVzLnRleHRJbmRlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goInRleHQtaW5kZW50IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmRlbnQi
KSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAg
ICAgcHJvcGVydGllcy53aGl0ZVNwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoIndoaXRlLXNwYWNlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaGl0ZXNw
YWNlIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vcm1hbCIsICJOb3dyYXAi
LCAiUHJlIiwgIlByZSBMaW5lIiwgIlByZSBXcmFwIl0pKTsKKworICAgICAgICB0ZXh0V2hpdGVz
cGFjZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4dEluZGVudC5lbGVtZW50
KTsKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLndoaXRlU3BhY2UuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRleHRTcGFjaW5nR3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRMYXlvdXRSb3csIHRl
eHRTcGFjaW5nUm93LCB0ZXh0V2hpdGVzcGFjZVJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0
ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U3BhY2luZ0dyb3VwXSk7CisgICAgfQorCisgICAgX3RleHRT
aGFkb3dTZWN0aW9uQ29sbGFwc2VkU3RhdGVUb2dnbGVkKCkKKyAgICB7CisgICAgICAgIHZhciBn
cm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93OworICAgICAgICBpZiAodGhpcy5fc2VjdGlv
bklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIg
dGV4dFNoYWRvd1NpemluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgdmFyIHRleHRTaGFkb3dIID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSG9yaXpv
bnRhbCIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKyAgICAgICAg
dmFyIHRleHRTaGFkb3dWID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmVydGljYWwiKSwgbnVs
bCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisKKyAgICAgICAgdGV4dFNoYWRv
d1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dILmVsZW1lbnQpOworICAgICAg
ICB0ZXh0U2hhZG93U2l6aW5nLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dFNoYWRvd1YuZWxlbWVu
dCk7CisKKyAgICAgICAgdmFyIHRleHRTaGFkb3dTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIHRleHRTaGFkb3dDb2xvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICB0ZXh0U2hhZG93Q29sb3IuY29sb3JQcm9w
ZXJ0eSA9IHRydWU7CisgICAgICAgIHZhciB0ZXh0U2hhZG93Qmx1ciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkJsdXIiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7
CisgICAgICAgIHRleHRTaGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAg
ICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dDb2xvci5l
bGVtZW50KTsKKyAgICAgICAgdGV4dFNoYWRvd1N0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4
dFNoYWRvd0JsdXIuZWxlbWVudCk7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0U2hhZG93ID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoInRleHQtc2hhZG93
IiwgW3RleHRTaGFkb3dILCB0ZXh0U2hhZG93ViwgdGV4dFNoYWRvd0JsdXIsIHRleHRTaGFkb3dD
b2xvcl0pOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVz
ID0gW3RleHRTaGFkb3dDb2xvcl07CisKKyAgICAgICAgdmFyIHRleHRTaGFkb3dHcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4dFNoYWRvd1NpemluZywgdGV4
dFNoYWRvd1N0eWxlXSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3Rl
eHRTaGFkb3dHcm91cF0pOworICAgIH0KKworICAgIF9iYWNrZ3JvdW5kU3R5bGVTZWN0aW9uQ29s
bGFwc2VkU3RhdGVUb2dnbGVkKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dy
b3Vwcy5iYWNrZ3JvdW5kU3R5bGU7CisgICAgICAgIGlmICh0aGlzLl9zZWN0aW9uSXNDb2xsYXBz
ZWRPclBvcHVsYXRlZChncm91cCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFy
IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBiYWNrZ3JvdW5k
U3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbG9yUGlja2VyKCJiYWNrZ3JvdW5kLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlVVJMSW5wdXQoImJhY2tncm91bmQtaW1hZ2UiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkltYWdlIikpOworCisgICAgICAgIGJhY2tncm91bmRTdHlsZVJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yLmVsZW1lbnQpOworICAg
ICAgICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJh
Y2tncm91bmRJbWFnZS5lbGVtZW50KTsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFNpemVSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBiYWNr
Z3JvdW5kU2l6ZUtleXdvcmRzID0gdGhpcy5fa2V5d29yZHMuYm94TW9kZWwuY29uY2F0KFsiQ29u
dGFpbiIsICJDb3ZlciJdKTsKKyAgICAgICAgdmFyIGJhY2tncm91bmRTaXplWCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1zaXplIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCBiYWNrZ3JvdW5kU2l6ZUtleXdvcmRzLCB0aGlz
Ll91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRTaXplWC5tYXN0ZXJQcm9wZXJ0
eSA9IHRydWU7CisgICAgICAgIHZhciBiYWNrZ3JvdW5kU2l6ZVkgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91bmQtc2l6ZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGVpZ2h0IiksIGJhY2tncm91bmRTaXplS2V5d29yZHMsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVZLm1hc3RlclByb3BlcnR5ID0gdHJ1
ZTsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRTaXplID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJhY2tncm91bmQtc2l6ZSIsIFtiYWNrZ3Jv
dW5kU2l6ZVgsIGJhY2tncm91bmRTaXplWV0pOworCisgICAgICAgIGJhY2tncm91bmRTaXplUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZFNpemVYLmVsZW1lbnQpOworICAgICAgICBi
YWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRTaXplWS5lbGVt
ZW50KTsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFJlcGVhdFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kUmVw
ZWF0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJhY2tncm91
bmQtcmVwZWF0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBlYXQiKSwgdGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMuY29uY2F0KFsiTm8gUmVwZWF0IiwgIlJlcGVhdCIsICJSZXBlYXQgWCIsICJS
ZXBlYXQgWSJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZEF0dGFjaG1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYmFja2dyb3VuZC1hdHRh
Y2htZW50IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdHRhY2giKSwgdGhpcy5fa2V5d29yZHMu
ZGVmYXVsdHMuY29uY2F0KFsiRml4ZWQiLCAiTG9jYWwiLCAiU2Nyb2xsIl0pKTsKKworICAgICAg
ICBiYWNrZ3JvdW5kUmVwZWF0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNr
Z3JvdW5kUmVwZWF0LmVsZW1lbnQpOworICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0Um93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kQXR0YWNobWVudC5lbGVtZW50KTsK
KworICAgICAgICB2YXIgYmFja2dyb3VuZFBvc2l0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFBvc2l0aW9uWCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1wb3Np
dGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUG9zaXRpb24gWCIpLCBbIkNlbnRlciIsICJM
ZWZ0IiwgIlJpZ2h0Il0sIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgdmFyIGJhY2tn
cm91bmRQb3NpdGlvblkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBvc2l0aW9u
IFkiKSwgWyJCb3R0b20iLCAiQ2VudGVyIiwgIlRvcCJdLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7
CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kUG9zaXRpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigiYmFja2dyb3VuZC1wb3NpdGlvbiIsIFti
YWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kUG9zaXRpb25ZXSk7CisKKyAgICAgICAgYmFj
a2dyb3VuZFBvc2l0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZFBvc2l0aW9u
WC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFBvc2l0aW9uUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQoYmFja2dyb3VuZFBvc2l0aW9uWS5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRv
Y29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xv
cl07CisKKyAgICAgICAgdmFyIGJhY2tncm91bmRTdHlsZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtiYWNrZ3JvdW5kU3R5bGVSb3csIGJhY2tncm91bmRTaXpl
Um93LCBiYWNrZ3JvdW5kUmVwZWF0Um93LCBiYWNrZ3JvdW5kUG9zaXRpb25Sb3ddKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYmFja2dyb3VuZFN0eWxlR3JvdXBdKTsK
KyAgICB9CisKKyAgICBfYm9yZGVyU2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCgpCisgICAg
eworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVyOworICAgICAgICBpZiAo
dGhpcy5fc2VjdGlvbklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKwor
ICAgICAgICB2YXIgYm9yZGVyQWxsU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJTdHlsZSA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKFsiYm9yZGVyLXRvcC1zdHlsZSIsICJib3JkZXIt
cmlnaHQtc3R5bGUiLCAiYm9yZGVyLWJvdHRvbS1zdHlsZSIsICJib3JkZXItbGVmdC1zdHlsZSJd
ICwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJT
dHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5bGUucHJvcGVydHlSZWZlcmVuY2VO
YW1lID0gImJvcmRlci1zdHlsZSI7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyV2lkdGggPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLXdp
ZHRoIiwgImJvcmRlci1yaWdodC13aWR0aCIsICJib3JkZXItYm90dG9tLXdpZHRoIiwgImJvcmRl
ci1sZWZ0LXdpZHRoIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5
d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVy
dGllcy5ib3JkZXJXaWR0aC5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLXdpZHRoIjsK
KworICAgICAgICBib3JkZXJBbGxTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5i
b3JkZXJTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyV2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJv
cmRlckFsbFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzLmJvcmRlckNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbG9yUGlja2VyKFsiYm9yZGVyLXRvcC1jb2xvciIsICJib3JkZXItcmlnaHQtY29sb3IiLCAi
Ym9yZGVyLWJvdHRvbS1jb2xvciIsICJib3JkZXItbGVmdC1jb2xvciJdLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLnByb3Bl
cnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItY29sb3IiOworICAgICAgICBwcm9wZXJ0aWVzLmJv
cmRlclJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChb
ImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiLCAiYm9y
ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1cy5w
cm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLXJhZGl1cyI7CisKKyAgICAgICAgYm9yZGVy
QWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLmVsZW1l
bnQpOworICAgICAgICBib3JkZXJBbGxTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYm9yZGVyUmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJBbGxQcm9wZXJ0
aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyU3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyV2lkdGgsIHBy
b3BlcnRpZXMuYm9yZGVyQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVyUmFkaXVzXTsKKyAgICAgICAg
dmFyIGJvcmRlckFsbEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtib3JkZXJBbGxTaXplLCBib3JkZXJBbGxTdHlsZV0pOworCisgICAgICAgIHZhciBib3JkZXJU
b3BTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoImJvcmRlci10b3Atc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJUb3BXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJv
eCgiYm9yZGVyLXRvcC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhp
cy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAg
ICBib3JkZXJUb3BTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BT
dHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyVG9wU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRl
clRvcFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAg
ICBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbG9yUGlja2VyKCJib3JkZXItdG9wLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BSYWRpdXMgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVz
IiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFk
aXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisK
KyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJv
cmRlclRvcENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJUb3BTdHlsZS5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzLmVsZW1lbnQpOworCisgICAgICAg
IHZhciBib3JkZXJUb3BQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUsIHBy
b3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyVG9wQ29sb3IsIHByb3Bl
cnRpZXMuYm9yZGVyVG9wUmFkaXVzXTsKKyAgICAgICAgdmFyIGJvcmRlclRvcEdyb3VwID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJUb3BTaXplLCBib3JkZXJU
b3BTdHlsZV0pOworCisgICAgICAgIHZhciBib3JkZXJSaWdodFNpemUgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRT
dHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXIt
cmlnaHQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdv
cmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSaWdodFdpZHRoID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3JkZXItcmlnaHQt
d2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJv
cmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyUmlnaHRT
aXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdodFN0eWxlLmVsZW1l
bnQpOworICAgICAgICBib3JkZXJSaWdodFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlclJpZ2h0V2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlclJpZ2h0
U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b2xvclBpY2tlcigiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1cyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtcmlnaHQtcmFk
aXVzIiwgImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuYm9yZGVyUmlnaHRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyUmlnaHRTdHls
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMuZWxlbWVu
dCk7CisKKyAgICAgICAgdmFyIGJvcmRlclJpZ2h0UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJv
cmRlclJpZ2h0U3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCwgcHJvcGVydGllcy5i
b3JkZXJSaWdodENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzXTsKKyAgICAgICAg
dmFyIGJvcmRlclJpZ2h0R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAoW2JvcmRlclJpZ2h0U2l6ZSwgYm9yZGVyUmlnaHRTdHlsZV0pOworCisgICAgICAgIHZhciBi
b3JkZXJCb3R0b21TaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJvcmRlci1ib3R0b20tc3R5bGUiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAg
ICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21XaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLWJvdHRvbS13aWR0aCIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJCb3R0b21TaXplLmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVy
Qm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lk
dGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlckJvdHRvbVN0eWxlID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJv
dHRvbUNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3Jk
ZXItYm90dG9tLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAg
ICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21SYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwgImJvcmRl
ci1ib3R0b20tcmlnaHQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiks
IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAg
ICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
ckJvdHRvbUNvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJCb3R0b21TdHlsZS5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQm90dG9tUmFkaXVzLmVsZW1lbnQpOworCisg
ICAgICAgIHZhciBib3JkZXJCb3R0b21Qcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyQm90
dG9tU3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGgsIHByb3BlcnRpZXMuYm9yZGVy
Qm90dG9tQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tUmFkaXVzXTsKKyAgICAgICAgdmFy
IGJvcmRlckJvdHRvbUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtib3JkZXJCb3R0b21TaXplLCBib3JkZXJCb3R0b21TdHlsZV0pOworCisgICAgICAgIHZhciBi
b3JkZXJMZWZ0U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLWxlZnQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0eWxlIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJMZWZ0V2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goImJvcmRlci1sZWZ0LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJX
aWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMp
OworCisgICAgICAgIGJvcmRlckxlZnRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5ib3JkZXJMZWZ0U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckxlZnRTaXplLmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGguZWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGJvcmRlckxlZnRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRlci1sZWZ0LWNvbG9yIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJMZWZ0
UmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9y
ZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIl0sIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlz
Ll91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyTGVmdFN0eWxlLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJv
cmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFJh
ZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyTGVmdFByb3BlcnRpZXMgPSBbcHJv
cGVydGllcy5ib3JkZXJMZWZ0U3R5bGUsIHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLCBwcm9w
ZXJ0aWVzLmJvcmRlckxlZnRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJMZWZ0UmFkaXVzXTsKKyAg
ICAgICAgdmFyIGJvcmRlckxlZnRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Hcm91cChbYm9yZGVyTGVmdFNpemUsIGJvcmRlckxlZnRTdHlsZV0pOworCisgICAgICAgIHZh
ciBib3JkZXJUYWJDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJl
ZFByb3BlcnRpZXNDb250cm9sbGVyKHsKKyAgICAgICAgICAgICJhbGwiOiB7dGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQWxsIiksIGVsZW1lbnQ6IGJvcmRlckFsbEdyb3VwLmVsZW1lbnQs
IHByb3BlcnRpZXM6IGJvcmRlckFsbFByb3BlcnRpZXN9LAorICAgICAgICAgICAgInRvcCI6IHt0
aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3AiKSwgZWxlbWVudDogYm9yZGVyVG9wR3Jv
dXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyVG9wUHJvcGVydGllc30sCisgICAgICAgICAg
ICAicmlnaHQiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmlnaHQiKSwgZWxlbWVu
dDogYm9yZGVyUmlnaHRHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJSaWdodFByb3Bl
cnRpZXN9LAorICAgICAgICAgICAgImJvdHRvbSI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJCb3R0b20iKSwgZWxlbWVudDogYm9yZGVyQm90dG9tR3JvdXAuZWxlbWVudCwgcHJvcGVy
dGllczogYm9yZGVyQm90dG9tUHJvcGVydGllc30sCisgICAgICAgICAgICAibGVmdCI6IHt0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0IiksIGVsZW1lbnQ6IGJvcmRlckxlZnRHcm91
cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJMZWZ0UHJvcGVydGllc30KKyAgICAgICAgfSk7
CisKKyAgICAgICAgdmFyIGhpZ2hsaWdodENvbmZpZyA9IHtib3JkZXJDb2xvcjoge3I6IDI1NSwg
ZzogMjI5LCBiOiAxNTMsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5ib3JkZXJUb3BXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVy
Qm90dG9tV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NN
b3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnBy
b3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAgICBn
cm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRl
ckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRv
bUNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdo
dENvbG9yXTsKKworICAgICAgICB2YXIgYm9yZGVyR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlclRhYkNvbnRyb2xsZXIsIGJvcmRlckFsbEdyb3VwLCBi
b3JkZXJUb3BHcm91cCwgYm9yZGVyUmlnaHRHcm91cCwgYm9yZGVyQm90dG9tR3JvdXAsIGJvcmRl
ckxlZnRHcm91cF0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3Jk
ZXJHcm91cF0pOworICAgIH0KKworICAgIF9vdXRsaW5lU2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9n
Z2xlZCgpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0bGluZTsK
KyAgICAgICAgaWYgKHRoaXMuX3NlY3Rpb25Jc0NvbGxhcHNlZE9yUG9wdWxhdGVkKGdyb3VwKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnBy
b3BlcnRpZXM7CisKKyAgICAgICAgdmFyIG91dGxpbmVTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgib3V0bGluZS13aWR0
aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVy
V2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5l
T2Zmc2V0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvdXRs
aW5lLW9mZnNldCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2Zmc2V0IiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgb3V0
bGluZVNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aC5l
bGVtZW50KTsKKyAgICAgICAgb3V0bGluZVNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm91dGxpbmVPZmZzZXQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIG91dGxpbmVTdHls
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5vdXRsaW5lU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZFBpY2tlcigib3V0bGluZS1zdHlsZSIgLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiks
IHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5l
Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoIm91dGxpbmUt
Y29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworCisgICAgICAgIG91dGxp
bmVTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZVN0eWxlLmVs
ZW1lbnQpOworICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm91dGxpbmVDb2xvci5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxl
dGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm91dGxpbmVDb2xvcl07CisKKyAg
ICAgICAgdmFyIG91dGxpbmVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChbb3V0bGluZVNpemVSb3csIG91dGxpbmVTdHlsZVJvd10pOworICAgICAgICB0aGlzLl9w
b3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtvdXRsaW5lR3JvdXBdKTsKKyAgICB9CisKKyAgICBfYm94
U2hhZG93U2VjdGlvbkNvbGxhcHNlZFN0YXRlVG9nZ2xlZCgpCisgICAgeworICAgICAgICB2YXIg
Z3JvdXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93OworICAgICAgICBpZiAodGhpcy5fc2VjdGlv
bklzQ29sbGFwc2VkT3JQb3B1bGF0ZWQoZ3JvdXApKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIg
Ym94U2hhZG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IoImJveC1zaGFkb3ciKTsKKyAgICAgICAgcHJvcGVy
dGllcy5ib3hTaGFkb3cuZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjExcHgiOworCisgICAg
ICAgIGJveFNoYWRvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm94U2hhZG93
LmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3hTaGFkb3dIUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgYm94U2hhZG93SCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiYm94LXNoYWRvdyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1Nh
bnNQZXJjZW50LCB0cnVlKTsKKworICAgICAgICBib3hTaGFkb3dIUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQoYm94U2hhZG93SC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm94U2hhZG93VlJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIGJveFNo
YWRvd1YgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIo
ImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCBudWxsLCB0aGlzLl91
bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKworICAgICAgICBib3hTaGFkb3dWUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Vi5lbGVtZW50KTsKKworICAgICAgICB2YXIg
Ym94U2hhZG93Qmx1clJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgdmFyIGJveFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
TnVtYmVySW5wdXRCb3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJsdXIi
KSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAgICAgIGJveFNo
YWRvd0JsdXIub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgIHZhciBib3hTaGFkb3dT
cHJlYWQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJveC1z
aGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNwcmVhZCIpLCBudWxsLCB0aGlzLl91bml0
cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKyAgICAgICAgYm94U2hhZG93U3ByZWFkLm9w
dGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIGJveFNoYWRvd0JsdXJSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChib3hTaGFkb3dCbHVyLmVsZW1lbnQpOworICAgICAgICBib3hTaGFkb3dC
bHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93U3ByZWFkLmVsZW1lbnQpOworCisg
ICAgICAgIHZhciBib3hTaGFkb3dDb2xvclJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd0NvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb2xvciIpKTsKKyAgICAgICAgYm94U2hhZG93Q29sb3IuY29sb3JQcm9wZXJ0eSA9IHRy
dWU7CisgICAgICAgIHZhciBib3hTaGFkb3dJbnNldCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkQ2hlY2tib3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ikluc2V0IiksICJJbnNldCIsICJJbWFnZXMvQm94U2hhZG93SW5zZXQuc3ZnIik7CisgICAgICAg
IGJveFNoYWRvd0luc2V0Lm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIGJveFNo
YWRvd0NvbG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Q29sb3IuZWxlbWVudCk7
CisgICAgICAgIGJveFNoYWRvd0NvbG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93
SW5zZXQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigiYm94LXNoYWRv
dyIsIFtib3hTaGFkb3dILCBib3hTaGFkb3dWLCBib3hTaGFkb3dCbHVyLCBib3hTaGFkb3dTcHJl
YWQsIGJveFNoYWRvd0NvbG9yLCBib3hTaGFkb3dJbnNldF0pOworCisgICAgICAgIGZ1bmN0aW9u
IG5vUmVtYWluaW5nVHJlZUl0ZW1zKCkKKyAgICAgICAgeworICAgICAgICAgICAgYm94U2hhZG93
UHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICBi
b3hTaGFkb3dILmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1YuZGlzYWJs
ZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93Qmx1ci5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBib3hTaGFkb3dTcHJlYWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAg
Ym94U2hhZG93Q29sb3IuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93SW5z
ZXQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hh
ZG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1Ry
ZWVJdGVtcywgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWRCb3hTaGFkb3dJdGVt
VmFsdWVDaGFuZ2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHJvcGVydGllcy5ib3hTaGFk
b3cuc2VsZWN0ZWRUcmVlRWxlbWVudFZhbHVlID0gYm94U2hhZG93UHJvcGVydHlDb21iaW5lci5z
eW50aGVzaXplZFZhbHVlOworICAgICAgICB9CisgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29t
YmluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgc2VsZWN0ZWRCb3hTaGFkb3dJdGVtVmFsdWVDaGFu
Z2VkLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBib3hTaGFkb3dJdGVtU2VsZWN0ZWQoZXZl
bnQpIHsKKyAgICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVz
RnJvbVRleHQoZXZlbnQuZGF0YS50ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAgICAgICBwcm9w
ZXJ0aWVzLmJveFNoYWRvdy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCBib3hT
aGFkb3dJdGVtU2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW2JveFNoYWRvd0NvbG9yXTsKKworICAgICAgICB2YXIgYm94
U2hhZG93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3hTaGFkb3dS
b3csIGJveFNoYWRvd0hSb3csIGJveFNoYWRvd1ZSb3csIGJveFNoYWRvd0JsdXJSb3csIGJveFNo
YWRvd0NvbG9yUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Jv
eFNoYWRvd10pOworICAgIH0KKworICAgIF90cmFuc2l0aW9uU2VjdGlvbkNvbGxhcHNlZFN0YXRl
VG9nZ2xlZCgpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMudHJhbnNp
dGlvbjsKKyAgICAgICAgaWYgKHRoaXMuX3NlY3Rpb25Jc0NvbGxhcHNlZE9yUG9wdWxhdGVkKGdy
b3VwKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdy
b3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25Sb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlv
biA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IoInRyYW5zaXRpb24iKTsKKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmVsZW1lbnQu
c3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICB0cmFuc2l0aW9uUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50cmFuc2l0aW9uLmVsZW1lbnQpOworCisgICAgICAg
IHZhciB0cmFuc2l0aW9uUHJvcGVydHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQoInRyYW5zaXRpb24tcHJvcGVydHkiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb3BlcnR5IikpOworICAgICAgICB2YXIgdHJhbnNpdGlv
blRpbWluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ0cmFu
c2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltaW5nIiks
IFsiTGluZWFyIiwgIkVhc2UiLCAiRWFzZSBJbiIsICJFYXNlIE91dCIsICJFYXNlIEluIE91dCJd
KTsKKworICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0
cmFuc2l0aW9uUHJvcGVydHkuZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eVJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25UaW1pbmcuZWxlbWVudCk7CisKKyAgICAg
ICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25UaW1lS2V5d29yZHMgPSBbInMiLCAi
bXMiXTsKKyAgICAgICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kdXJhdGlvbiIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRHVyYXRpb24iKSwgbnVsbCwgdHJhbnNpdGlvblRpbWVLZXl3b3Jkcyk7
CisgICAgICAgIHZhciB0cmFuc2l0aW9uRGVsYXkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3goInRyYW5zaXRpb24tZGVsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkRlbGF5IiksIG51bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMpOworICAgICAgICB0cmFu
c2l0aW9uRGVsYXkub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgdHJhbnNpdGlv
bkR1cmF0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvbkR1cmF0aW9uLmVsZW1l
bnQpOworICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0
cmFuc2l0aW9uRGVsYXkuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0
eUNvbWJpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIo
InRyYW5zaXRpb24iLCBbdHJhbnNpdGlvblByb3BlcnR5LCB0cmFuc2l0aW9uVGltaW5nLCB0cmFu
c2l0aW9uRHVyYXRpb24sIHRyYW5zaXRpb25EZWxheV0pOworCisgICAgICAgIGZ1bmN0aW9uIG5v
UmVtYWluaW5nVHJlZUl0ZW1zKCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJhbnNpdGlvblBy
b3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgdHJh
bnNpdGlvblByb3BlcnR5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25U
aW1pbmcuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLmRp
c2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25EZWxheS5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9y
LkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1RyZWVJdGVtcywgdGhpcyk7
CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlvbi5zZWxlY3RlZFRy
ZWVFbGVtZW50VmFsdWUgPSB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci5zeW50aGVzaXplZFZh
bHVlOworICAgICAgICB9CisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQu
VmFsdWVEaWRDaGFuZ2UsIHNlbGVjdGVkdHJhbnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQsIHRoaXMp
OworCisgICAgICAgIGZ1bmN0aW9uIHRyYW5zaXRpb25JdGVtU2VsZWN0ZWQoZXZlbnQpIHsKKyAg
ICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0
KGV2ZW50LmRhdGEudGV4dCB8fCAiIik7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy50
cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFT
ZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVtU2VsZWN0ZWQsIHRyYW5zaXRpb25J
dGVtU2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGli
bGVQcm9wZXJ0aWVzID0gW3RyYW5zaXRpb25Qcm9wZXJ0eV07CisKKyAgICAgICAgdmFyIHRyYW5z
aXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdHJhbnNp
dGlvblJvdywgdHJhbnNpdGlvblByb3BlcnR5Um93LCB0cmFuc2l0aW9uRHVyYXRpb25Sb3ddKTsK
KyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdHJhbnNpdGlvbkdyb3VwXSk7
CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Bl
cnR5UmVmZXJlbmNlSW5mbyA9IHsKKyAgICAiYmFja2dyb3VuZC1hdHRhY2htZW50IjogIklmIGEg
YmFja2dyb3VuZC1pbWFnZSBpcyBzcGVjaWZpZWQsIHRoZSBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQg
Q1NTIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0aGF0IGltYWdlJ3MgcG9zaXRpb24gaXMg
Zml4ZWQgd2l0aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Nyb2xscyBhbG9uZyB3aXRoIGl0cyBjb250
YWluaW5nIGJsb2NrLiIsCisgICAgImJhY2tncm91bmQtY29sb3IiOiAiVGhlIGJhY2tncm91bmQt
Y29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVu
dCwgZWl0aGVyIHRocm91Z2ggYSBjb2xvciB2YWx1ZSBvciB0aGUga2V5d29yZCB0cmFuc3BhcmVu
dC4iLAorICAgICJiYWNrZ3JvdW5kLWltYWdlIjogIlRoZSBDU1MgYmFja2dyb3VuZC1pbWFnZSBw
cm9wZXJ0eSBzZXRzIG9uZSBvciBzZXZlcmFsIGJhY2tncm91bmQgaW1hZ2VzIGZvciBhbiBlbGVt
ZW50LiBUaGUgaW1hZ2VzIGFyZSBkcmF3biBvbiBzdGFja2luZyBjb250ZXh0IGxheWVycyBvbiB0
b3Agb2YgZWFjaCBvdGhlci4gVGhlIGZpcnN0IGxheWVyIHNwZWNpZmllZCBpcyBkcmF3biBhcyBp
ZiBpdCBpcyBjbG9zZXN0IHRvIHRoZSB1c2VyLiIsCisgICAgImJhY2tncm91bmQtcG9zaXRpb24i
OiAiVGhlIGJhY2tncm91bmQtcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwg
cG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIGxheWVyIGRlZmlu
ZWQgYnkgYmFja2dyb3VuZC1vcmlnaW4gZm9yIGVhY2ggZGVmaW5lZCBiYWNrZ3JvdW5kIGltYWdl
LiIsCisgICAgImJhY2tncm91bmQtcmVwZWF0IjogIlRoZSBiYWNrZ3JvdW5kLXJlcGVhdCBDU1Mg
cHJvcGVydHkgZGVmaW5lcyBob3cgYmFja2dyb3VuZCBpbWFnZXMgYXJlIHJlcGVhdGVkLiBBIGJh
Y2tncm91bmQgaW1hZ2UgY2FuIGJlIHJlcGVhdGVkIGFsb25nIHRoZSBob3Jpem9udGFsIGF4aXMs
IHRoZSB2ZXJ0aWNhbCBheGlzLCBib3RoIGF4ZXMsIG9yIG5vdCByZXBlYXRlZCBhdCBhbGwuIiwK
KyAgICAiYmFja2dyb3VuZC1zaXplIjogIlRoZSBiYWNrZ3JvdW5kLXNpemUgQ1NTIHByb3BlcnR5
IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZXMuIFRoZSBzaXplIG9m
IHRoZSBpbWFnZSBjYW4gYmUgZnVsbHkgY29uc3RyYWluZWQgb3Igb25seSBwYXJ0aWFsbHkgaW4g
b3JkZXIgdG8gcHJlc2VydmUgaXRzIGludHJpbnNpYyByYXRpby4iLAorICAgICJib3JkZXItYm90
dG9tLWNvbG9yIjogIlRoZSBib3JkZXItYm90dG9tLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRo
ZSBjb2xvciBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4g
bWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzIGJvcmRlci1jb2xvciBvciBi
b3JkZXItYm90dG9tIGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFibGUuIiwKKyAgICAi
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1
cyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgcm91bmRpbmcgb2YgdGhlIGJvdHRvbS1sZWZ0IGNvcm5l
ciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNhbiBiZSBhIGNpcmNsZSBvciBhbiBlbGxp
cHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAgbm8gcm91bmRpbmcgaXMgZG9uZSBhbmQg
dGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9yZGVyLWJvdHRvbS1zdHlsZSI6ICJUaGUg
Ym9yZGVyLWJvdHRvbS1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0
aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItYm90dG9tLXdpZHRoIjog
IlRoZSBib3JkZXItYm90dG9tLXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0
aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItY29sb3IiOiAiVGhlIGJv
cmRlci1jb2xvciBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgZm9yIHNldHRpbmcgdGhlIGNv
bG9yIG9mIHRoZSBmb3VyIHNpZGVzIG9mIGFuIGVsZW1lbnQncyBib3JkZXI6IGJvcmRlci10b3At
Y29sb3IsIGJvcmRlci1yaWdodC1jb2xvciwgYm9yZGVyLWJvdHRvbS1jb2xvciwgYm9yZGVyLWxl
ZnQtY29sb3IiLAorICAgICJib3JkZXItbGVmdC1jb2xvciI6ICJUaGUgYm9yZGVyLWxlZnQtY29s
b3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYm9yZGVyIG9mIGFu
IGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQgQ1NTIHByb3Bl
cnRpZXPCoGJvcmRlci1jb2xvciBvciBib3JkZXItbGVmdCBhcmUgbW9yZSBjb252ZW5pZW50IGFu
ZCBwcmVmZXJhYmxlLiIsCisgICAgImJvcmRlci1sZWZ0LXN0eWxlIjogIlRoZSBib3JkZXItbGVm
dC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgbGVmdCBib3Jk
ZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLWxlZnQtd2lkdGgiOiAiVGhlIGJvcmRlci1sZWZ0
LXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgbGVmdCBib3JkZXIgb2Yg
YSBib3guIiwKKyAgICAiYm9yZGVyLXJhZGl1cyI6ICJUaGUgYm9yZGVyLXJhZGl1cyBDU1MgcHJv
cGVydHkgYWxsb3dzIFdlYiBhdXRob3JzIHRvIGRlZmluZSBob3cgcm91bmRlZCBib3JkZXIgY29y
bmVycyBhcmUuIFRoZSBjdXJ2ZSBvZiBlYWNoIGNvcm5lciBpcyBkZWZpbmVkIHVzaW5nIG9uZSBv
ciB0d28gcmFkaWksIGRlZmluaW5nIGl0cyBzaGFwZTogY2lyY2xlIG9yIGVsbGlwc2UuIiwKKyAg
ICAiYm9yZGVyLXJpZ2h0LWNvbG9yIjogIlRoZSBib3JkZXItcmlnaHQtY29sb3IgQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSByaWdodCBib3JkZXIgb2YgYW4gZWxlbWVudC4gTm90
ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBDU1MgcHJvcGVydGllc8KgIGJvcmRl
ci1jb2xvciBvciBib3JkZXItcmlnaHQgYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJs
ZS4iLAorICAgICJib3JkZXItcmlnaHQtc3R5bGUiOiAiVGhlIGJvcmRlci1yaWdodC1zdHlsZSBD
U1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGEg
Ym94LiIsCisgICAgImJvcmRlci1yaWdodC13aWR0aCI6ICJUaGUgYm9yZGVyLXJpZ2h0LXdpZHRo
IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94
LiIsCisgICAgImJvcmRlci1zdHlsZSI6ICJUaGUgYm9yZGVyLXN0eWxlIHByb3BlcnR5IGlzIGEg
c2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBsaW5lIHN0eWxlIGZvciBhbGwgZm91
ciBzaWRlcyBvZiB0aGUgZWxlbWVudHMgYm9yZGVyLiIsCisgICAgImJvcmRlci10b3AtY29sb3Ii
OiAiVGhlIGJvcmRlci10b3AtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRo
ZSB0b3AgYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBz
aG9ydGhhbmQgQ1NTIHByb3BlcnRpZXMgYm9yZGVyLWNvbG9yIG9yIGJvcmRlci10b3AgYXJlIG1v
cmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItdG9wLWxlZnQtcmFk
aXVzIjogIlRoZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBy
b3VuZGluZyBvZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LiBUaGUgcm91bmRp
bmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUg
aXMgMCxubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVyIGlzIHNxdWFyZS4iLAorICAg
ICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMg
Q1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5kaW5nIG9mIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9m
IHRoZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2Us
IG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCBubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUg
Y29ybmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXItdG9wLXN0eWxlIjogIlRoZSBib3JkZXIt
dG9wLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSB0b3AgYm9y
ZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci10b3Atd2lkdGgiOiAiVGhlIGJvcmRlci10b3At
d2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEg
Ym94LiIsCisgICAgImJvcmRlci13aWR0aCI6ICJUaGUgYm9yZGVyLXdpZHRoIHByb3BlcnR5IHNl
dHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgb2YgYSBib3guIFVzaW5nIHRoZSBzaG9ydGhhbmQg
cHJvcGVydHkgYm9yZGVyIGlzIG9mdGVuIG1vcmUgY29udmVuaWVudC4iLAorICAgICJib3R0b20i
OiAiVGhlIGJvdHRvbSBDU1MgcHJvcGVydHkgcGFydGljaXBhdGVzIGluIHNwZWNpZnlpbmcgdGhl
IHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAiYm94LXNoYWRvdyI6ICJU
aGUgYm94LXNoYWRvdyBwcm9wZXJ0eSBkZXNjcmliZXMgb25lIG9yIG1vcmUgc2hhZG93IGVmZmVj
dHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gSXQgZW5hYmxlcyB5b3UgdG8gY2FzdCBhIGRy
b3Agc2hhZG93IGZyb20gdGhlIGZyYW1lIG9mIGFsbW9zdCBhbnkgZWxlbWVudC4gSWYgYSBib3Jk
ZXItcmFkaXVzIGlzIHNwZWNpZmllZCBvbiB0aGUgZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywg
dGhlIGJveCBzaGFkb3cgdGFrZXMgb24gdGhlIHNhbWUgcm91bmRlZCBjb3JuZXJzLiBUaGUgei1v
cmRlcmluZyBvZiBtdWx0aXBsZSBib3ggc2hhZG93cyBpcyB0aGUgc2FtZSBhcyBtdWx0aXBsZSB0
ZXh0IHNoYWRvd3MgKHRoZSBmaXJzdCBzcGVjaWZpZWQgc2hhZG93IGlzIG9uIHRvcCkuIiwKKyAg
ICAiYm94LXNpemluZyI6ICJUaGUgYm94LXNpemluZyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGFsdGVy
IHRoZSBkZWZhdWx0IENTUyBib3ggbW9kZWwgdXNlZCB0byBjYWxjdWxhdGUgd2lkdGhzIGFuZCBo
ZWlnaHRzIG9mIGVsZW1lbnRzLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgdGhpcyBwcm9wZXJ0eSB0
byBlbXVsYXRlIHRoZSBiZWhhdmlvciBvZiBicm93c2VycyB0aGF0IGRvIG5vdCBjb3JyZWN0bHkg
c3VwcG9ydCB0aGUgQ1NTIGJveCBtb2RlbCBzcGVjaWZpY2F0aW9uLiIsCisgICAgImNsZWFyIjog
IlRoZSBjbGVhciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW4gZWxlbWVudCBjYW4g
YmUgbmV4dCB0byBmbG9hdGluZyBlbGVtZW50cyB0aGF0IHByZWNlZGUgaXQgb3IgbXVzdCBiZSBt
b3ZlZCBkb3duIChjbGVhcmVkKSBiZWxvdyB0aGVtLiBUaGUgY2xlYXIgcHJvcGVydHkgYXBwbGll
cyB0byBib3RoIGZsb2F0aW5nIGFuZCBub24tZmxvYXRpbmcgZWxlbWVudHMuIiwKKyAgICAiY29s
b3IiOiAiVGhlIGNvbG9yIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgYW4g
ZWxlbWVudCdzIHRleHQgY29udGVudCwgYW5kIGl0cyBkZWNvcmF0aW9ucy4gSXQgZG9lc24ndCBh
ZmZlY3QgYW55IG90aGVyIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBlbGVtZW50OyBpdCBzaG91bGQg
cmVhbGx5IGJlIGNhbGxlZCB0ZXh0LWNvbG9yIGFuZCB3b3VsZCBoYXZlIGJlZW4gbmFtZWQgc28s
IHNhdmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgaXRzIGFwcGVhcmFuY2UgaW4gQ1NTIExl
dmVsIDEuIiwKKyAgICAiY3Vyc29yIjogIlRoZSBjdXJzb3IgQ1NTIHByb3BlcnR5IHNwZWNpZmll
cyB0aGUgbW91c2UgY3Vyc29yIGRpc3BsYXllZCB3aGVuIHRoZSBtb3VzZSBwb2ludGVyIGlzIG92
ZXIgYW4gZWxlbWVudC4iLAorICAgICJkaXJlY3Rpb24iOiAiU2V0IHRoZSBkaXJlY3Rpb24gQ1NT
IHByb3BlcnR5IHRvIG1hdGNoIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHRleHQ6IHJ0bCBmb3IgbGFu
Z3VhZ2VzIHdyaXR0ZW4gZnJvbSByaWdodC10by1sZWZ0IChsaWtlIEhlYnJldyBvciBBcmFiaWMp
IHRleHQgYW5kIGx0ciBmb3Igb3RoZXIgc2NyaXB0cy4gVGhpcyBpcyB0eXBpY2FsbHkgZG9uZSBh
cyBwYXJ0IG9mIHRoZSBkb2N1bWVudCAoZS5nLiwgdXNpbmcgdGhlIGRpciBhdHRyaWJ1dGUgaW4g
SFRNTCkgcmF0aGVyIHRoYW4gdGhyb3VnaCBkaXJlY3QgdXNlIG9mIENTUy4iLAorICAgICJkaXNw
bGF5IjogIlRoZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgcmVu
ZGVyaW5nIGJveCB1c2VkIGZvciBhbiBlbGVtZW50LiBJbiBIVE1MLCBkZWZhdWx0IGRpc3BsYXkg
cHJvcGVydHkgdmFsdWVzIGFyZSB0YWtlbiBmcm9tIGJlaGF2aW9ycyBkZXNjcmliZWQgaW4gdGhl
IEhUTUwgc3BlY2lmaWNhdGlvbnMgb3IgZnJvbSB0aGUgYnJvd3Nlci91c2VyIGRlZmF1bHQgc3R5
bGVzaGVldC4gVGhlIGRlZmF1bHQgdmFsdWUgaW4gWE1MIGlzIGlubGluZS4iLAorICAgICJmbGV4
LWJhc2lzIjogIlRoZSBmbGV4LWJhc2lzIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGZsZXgg
YmFzaXMgd2hpY2ggaXMgdGhlIGluaXRpYWwgbWFpbiBzaXplIG9mIGEgZmxleCBpdGVtLiBUaGlz
IHByb3BlcnR5IGRldGVybWluZXMgdGhlIHNpemUgb2YgdGhlIGNvbnRlbnQtYm94IHVubGVzcyBz
cGVjaWZpZWQgb3RoZXJ3aXNlIHVzaW5nIGJveC1zaXppbmcuIiwKKyAgICAiZmxleC1kaXJlY3Rp
b24iOiAiVGhlIGZsZXgtZGlyZWN0aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IGZsZXgg
aXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIgZGVmaW5pbmcgdGhlIG1haW4g
YXhpcyBhbmQgdGhlIGRpcmVjdGlvbiAobm9ybWFsIG9yIHJldmVyc2VkKS4iLAorICAgICJmbGV4
LWdyb3ciOiAiVGhlIGZsZXgtZ3JvdyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBmbGV4IGdy
b3cgZmFjdG9yIG9mIGEgZmxleCBpdGVtLiBJdCBzcGVjaWZpZXMgd2hhdCBhbW91bnQgb2Ygc3Bh
Y2UgaW5zaWRlIHRoZSBmbGV4IGNvbnRhaW5lciB0aGUgaXRlbSBzaG91bGQgdGFrZSB1cC4iLAor
ICAgICJmbGV4LXNocmluayI6ICJUaGUgZmxleC1zaHJpbmsgQ1NTIHByb3BlcnR5IHNwZWNpZmll
cyB0aGUgZmxleCBzaHJpbmsgZmFjdG9yIG9mIGEgZmxleCBpdGVtLiIsCisgICAgImZsZXgtd3Jh
cCI6ICJUaGUgQ1NTIGZsZXgtd3JhcCBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBmbGV4IGl0
ZW1zIGFyZSBmb3JjZWQgaW50byBhIHNpbmdsZSBsaW5lIG9yIGNhbiBiZSB3cmFwcGVkIG9udG8g
bXVsdGlwbGUgbGluZXMuIElmIHdyYXBwaW5nIGlzIGFsbG93ZWQsIHRoaXMgcHJvcGVydHkgYWxz
byBlbmFibGVzIHlvdSB0byBjb250cm9sIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggbGluZXMgYXJl
IHN0YWNrZWQuIiwKKyAgICAiZmxvYXQiOiAiVGhlIGZsb2F0IENTUyBwcm9wZXJ0eSBzcGVjaWZp
ZXMgdGhhdCBhbiBlbGVtZW50IHNob3VsZCBiZSB0YWtlbiBmcm9tIHRoZSBub3JtYWwgZmxvdyBh
bmQgcGxhY2VkIGFsb25nIHRoZSBsZWZ0IG9yIHJpZ2h0IHNpZGUgb2YgaXRzIGNvbnRhaW5lciwg
d2hlcmUgdGV4dCBhbmQgaW5saW5lIGVsZW1lbnRzIHdpbGwgd3JhcCBhcm91bmQgaXQuIiwKKyAg
ICAiZm9udC1mYW1pbHkiOiAiVGhlIGZvbnQtZmFtaWx5IENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBz
cGVjaWZ5IGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBmb250IGZhbWlseSBuYW1lcyBhbmQvb3IgZ2Vu
ZXJpYyBmYW1pbHkgbmFtZXMgZm9yIHRoZSBzZWxlY3RlZCBlbGVtZW50LiBWYWx1ZXMgYXJlIHNl
cGFyYXRlZCBieSBhIGNvbW1hIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgYWx0ZXJuYXRpdmVz
LiBUaGUgYnJvd3NlciB3aWxsIHNlbGVjdCB0aGUgZmlyc3QgZm9udCBvbiB0aGUgbGlzdCB0aGF0
IGlzIGluc3RhbGxlZCBvbiB0aGUgY29tcHV0ZXIgb3IgdGhhdCBjYW4gYmUgZG93bmxvYWRlZCB1
c2luZyBhIEBmb250LWZhY2UgYXQtcnVsZS4iLAorICAgICJmb250LXNpemUiOiAiVGhlIGZvbnQt
c2l6ZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBmb250LiBTZXR0aW5n
IHRoZSBmb250IHNpemUgbWF5LCBpbiB0dXJuLCBjaGFuZ2UgdGhlIHNpemUgb2Ygb3RoZXIgaXRl
bXMsIHNpbmNlIGl0IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIGVtIGFuZCBl
eMKgXG4gPGxlbmd0aD4gdW5pdHMuIiwKKyAgICAiZm9udC1zdHlsZSI6ICJUaGUgZm9udC1zdHls
ZSBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc2VsZWN0IGl0YWxpYyBvciBvYmxpcXVlIGZhY2VzIHdp
dGhpbiBhIGZvbnQtZmFtaWx5LiIsCisgICAgImZvbnQtdmFyaWFudCI6ICJUaGlzIHByb3BlcnR5
IGFjdHMgYXMgYSBzaG9ydGhhbmQgZm9yIHRoZSBsb25naGFuZCBwcm9wZXJ0aWVzOiBmb250LXZh
cmlhbnQtY2FwcywgZm9udC12YXJpYW50LW51bWVyaWMsIGZvbnQtdmFyaWFudC1hbHRlcm5hdGVz
LCBmb250LXZhcmlhbnQtbGlnYXR1cmVzLCBhbmQgZm9udC12YXJpYW50LWVhc3QtYXNpYW4uIFlv
dSBjYW4gYWxzbyBzZXQgdGhlIENTUyBMZXZlbCAyIChSZXZpc2lvbiAxKSB2YWx1ZXMgb2YgZm9u
dC12YXJpYW50LCAodGhhdCBpcywgbm9ybWFsIG9yIHNtYWxsLWNhcHMpLCBieSB1c2luZyB0aGUg
Zm9udCBzaG9ydGhhbmQuIiwKKyAgICAiZm9udC13ZWlnaHQiOiAiVGhlIGZvbnQtd2VpZ2h0IENT
UyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdlaWdodCBvciBib2xkbmVzcyBvZiB0aGUgZm9udC4g
U29tZSBmb250cyBhcmUgb25seSBhdmFpbGFibGUgaW4gbm9ybWFsIGFuZCBib2xkLiIsCisgICAg
ImhlaWdodCI6ICJUaGUgaGVpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGhlaWdodCBv
ZiB0aGUgY29udGVudCBhcmVhIG9mIGFuIGVsZW1lbnQuIFRoZSBjb250ZW50IGFyZWEgaXMgaW5z
aWRlIHRoZSBwYWRkaW5nLCBib3JkZXIsIGFuZCBtYXJnaW4gb2YgdGhlIGVsZW1lbnQuIiwKKyAg
ICAibGVmdCI6ICJUaGUgbGVmdCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBv
c2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAibGV0dGVyLXNwYWNpbmciOiAi
VGhlIGxldHRlci1zcGFjaW5nIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgc3BhY2luZyBiZWhhdmlv
ciBiZXR3ZWVuIHRleHQgY2hhcmFjdGVycy4iLAorICAgICJsaW5lLWhlaWdodCI6ICJPbiBibG9j
ayBsZXZlbCBlbGVtZW50cywgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5IHNwZWNpZmllcyB0aGUg
bWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIiwKKyAgICAi
bWFyZ2luLWJvdHRvbSI6ICJUaGUgbWFyZ2luLWJvdHRvbSBDU1MgcHJvcGVydHkgb2YgYW4gZWxl
bWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIGJvdHRvbSBvZiBhbiBl
bGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXJnaW4t
bGVmdCI6ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBzcGFj
ZSByZXF1aXJlZCBvbiB0aGUgbGVmdCBzaWRlIG9mIGEgYm94IGFzc29jaWF0ZWQgd2l0aCBhbiBl
bGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXJnaW4t
cmlnaHQiOiAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRz
IHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVu
dC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAibWFyZ2luLXRvcCI6
ICJUaGUgbWFyZ2luLXRvcCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJn
aW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZh
bHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXgtaGVpZ2h0IjogIlRoZSBtYXgtaGVpZ2h0
IHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGhlaWdodCBvZiBhbiBlbGVtZW50
LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgaGVpZ2h0IHByb3BlcnR5IGZyb20g
YmVjb21pbmcgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgbWF4LWhlaWdodC4i
LAorICAgICJtYXgtd2lkdGgiOiAiVGhlIG1heC13aWR0aCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNl
dCB0aGUgbWF4aW11bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1
c2VkIHZhbHVlIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9tIGJlY29taW5nIGxhcmdlciB0aGFu
IHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1heC13aWR0aC4iLAorICAgICJtaW4taGVpZ2h0Ijog
IlRoZSBtaW4taGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtaW5pbXVtIGhlaWdo
dCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSBo
ZWlnaHQgcHJvcGVydHkgZnJvbSBiZWNvbWluZyBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlIHNwZWNp
ZmllZCBmb3IgbWluLWhlaWdodC4iLAorICAgICJtaW4td2lkdGgiOiAiVGhlIG1pbi13aWR0aCBw
cm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWluaW11bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1l
bnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9t
IGJlY29taW5nIHNtYWxsZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtaW4td2lkdGgu
IiwKKyAgICAib3BhY2l0eSI6ICJUaGUgb3BhY2l0eSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRo
ZSB0cmFuc3BhcmVuY3kgb2YgYW4gZWxlbWVudCwgdGhhdCBpcywgdGhlIGRlZ3JlZSB0byB3aGlj
aCB0aGUgYmFja2dyb3VuZCBiZWhpbmQgdGhlIGVsZW1lbnQgaXMgb3ZlcmxhaWQuIiwKKyAgICAi
b3JkZXIiOiAiVGhlIENTUyBvcmRlciBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG9yZGVyIHVzZWQg
dG8gbGF5IG91dCBmbGV4IGl0ZW1zIGluIHRoZWlyIGZsZXggY29udGFpbmVyLiBFbGVtZW50cyBh
cmUgbGFpZCBvdXQgaW4gdGhlwqBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlIG9yZGVyIHZhbHVlLiBF
bGVtZW50cyB3aXRoIHRoZSBzYW1lIG9yZGVyIHZhbHVlIGFyZSBsYWlkIG91dCBpbiB0aGUgb3Jk
ZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiIsCisgICAgIm91dGxp
bmUtY29sb3IiOiAiVGhlIG91dGxpbmUtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9y
IG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQg
aXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFr
ZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAib3V0bGluZS1vZmZzZXQiOiAiVGhlIG91
dGxpbmUtb2Zmc2V0IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCBzcGFjZSBiZXR3ZWVuIGFu
IG91dGxpbmUgYW5kIHRoZSBlZGdlIG9yIGJvcmRlciBvZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5l
IGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywgb3V0c2lkZSB0aGUgYm9y
ZGVyIGVkZ2UuIiwKKyAgICAib3V0bGluZS1zdHlsZSI6ICJUaGUgb3V0bGluZS1zdHlsZSBDU1Mg
cHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHN0eWxlIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVs
ZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRz
LCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQu
IiwKKyAgICAib3V0bGluZS13aWR0aCI6ICJUaGUgb3V0bGluZS13aWR0aCBDU1MgcHJvcGVydHkg
aXMgdXNlZCB0byBzZXQgdGhlIHdpZHRoIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFu
IG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRl
IHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQ6IiwKKyAgICAi
b3ZlcmZsb3ciOiAiVGhlIG92ZXJmbG93IHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIHRvIGNs
aXAgY29udGVudCwgcmVuZGVyIHNjcm9sbGJhcnMgb3IganVzdCBkaXNwbGF5IGNvbnRlbnQgd2hl
biBpdCBvdmVyZmxvd3MgaXRzIGJsb2NrIGxldmVsIGNvbnRhaW5lci4iLAorICAgICJwYWRkaW5n
LWJvdHRvbSI6ICJUaGUgcGFkZGluZy1ib3R0b20gQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQg
c2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBwYWRkaW5nIGFyZWEgYXQgdGhlIGJvdHRvbSBvZiBhbiBl
bGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50
IG9mIHRoZSBlbGVtZW50IGFuZCBpdCdzIGJvcmRlci4gQ29udHJhcnkgdG8gbWFyZ2luLWJvdHRv
bSB2YWx1ZXMsIG5lZ2F0aXZlIHZhbHVlcyBvZiBwYWRkaW5nLWJvdHRvbSBhcmUgaW52YWxpZC4i
LAorICAgICJwYWRkaW5nLWxlZnQiOiAiVGhlIHBhZGRpbmctbGVmdCBDU1MgcHJvcGVydHkgb2Yg
YW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSBsZWZ0IHNp
ZGUgb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3BhY2UgYmV0d2VlbiB0
aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXQncyBib3JkZXIuIEEgbmVnYXRpdmUgdmFs
dWUgaXMgbm90IGFsbG93ZWQuIiwKKyAgICAicGFkZGluZy1yaWdodCI6ICJUaGUgcGFkZGluZy1y
aWdodCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJl
cXVpcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIFRoZSBwYWRkaW5nIGFyZWEg
aXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYW5kIGl0cyBi
b3JkZXIuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIiwKKyAgICAicGFkZGluZy10
b3AiOiAiVGhlIHBhZGRpbmctdG9wIENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhl
IHBhZGRpbmcgc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBUaGUgcGFk
ZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50
IGFuZCBpdHMgYm9yZGVyLiBDb250cmFyeSB0byBtYXJnaW4tdG9wIHZhbHVlcywgbmVnYXRpdmUg
dmFsdWVzIG9mIHBhZGRpbmctdG9wIGFyZSBpbnZhbGlkLiIsCisgICAgInBvc2l0aW9uIjogIlRo
ZSBwb3NpdGlvbiBDU1MgcHJvcGVydHkgY2hvb3NlcyBhbHRlcm5hdGl2ZSBydWxlcyBmb3IgcG9z
aXRpb25pbmcgZWxlbWVudHMsIGRlc2lnbmVkIHRvIGJlIHVzZWZ1bCBmb3Igc2NyaXB0ZWQgYW5p
bWF0aW9uIGVmZmVjdHMuIiwKKyAgICAicmlnaHQiOiAiVGhlIHJpZ2h0IENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgcGFydCBvZiB0aGUgcG9zaXRpb24gb2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLAor
ICAgICJ0ZXh0LWFsaWduIjogIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBkZXNjcmliZXMg
aG93IGlubGluZSBjb250ZW50IGxpa2UgdGV4dCBpcyBhbGlnbmVkIGluIGl0cyBwYXJlbnQgYmxv
Y2sgZWxlbWVudC4gdGV4dC1hbGlnbiBkb2VzIG5vdCBjb250cm9sIHRoZSBhbGlnbm1lbnQgb2Yg
YmxvY2sgZWxlbWVudHMgaXRzZWxmLCBvbmx5IHRoZWlyIGlubGluZSBjb250ZW50LiIsCisgICAg
InRleHQtZGVjb3JhdGlvbiI6ICJUaGUgdGV4dC1kZWNvcmF0aW9uIENTUyBwcm9wZXJ0eSBpcyB1
c2VkIHRvIHNldCB0aGUgdGV4dCBmb3JtYXR0aW5nIHRvIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxp
bmUtdGhyb3VnaCBvciBibGluay4gVW5kZXJsaW5lIGFuZCBvdmVybGluZSBkZWNvcmF0aW9ucyBh
cmUgcG9zaXRpb25lZCB1bmRlciB0aGUgdGV4dCwgbGluZS10aHJvdWdoIG92ZXIgaXQuIiwKKyAg
ICAidGV4dC1pbmRlbnQiOiAiVGhlIHRleHQtaW5kZW50IHByb3BlcnR5IHNwZWNpZmllcyBob3cg
bXVjaCBob3Jpem9udGFsIHNwYWNlIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLAor
ICAgICJ0ZXh0LXNoYWRvdyI6ICJUaGUgdGV4dC1zaGFkb3cgcHJvcGVydHkgYWRkcyBzaGFkb3dz
IHRvIHRleHQuIEl0IGFjY2VwdHMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzaGFkb3dzIHRv
IGJlIGFwcGxpZWQgdG8gdGhlIHRleHQgYW5kIHRleHQtZGVjb3JhdGlvbnMgb2YgdGhlIGVsZW1l
bnQuIiwKKyAgICAidGV4dC10cmFuc2Zvcm0iOiAiVGhlIHRleHQtdHJhbnNmb3JtIENTUyBwcm9w
ZXJ0eSBzcGVjaWZpZXMgaG93IHRvIGNhcGl0YWxpemUgYW4gZWxlbWVudCdzIHRleHQuIEl0IGNh
biBiZSB1c2VkIHRvIG1ha2UgdGV4dCBhcHBlYXIgaW4gYWxsLXVwcGVyY2FzZSBvciBhbGwtbG93
ZXJjYXNlLCBvciB3aXRoIGVhY2ggd29yZCBjYXBpdGFsaXplZC4iLAorICAgICJ0b3AiOiAiVGhl
IHRvcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0
aW9uZWQgZWxlbWVudHMuIEl0IGhhcyBubyBlZmZlY3Qgb24gbm9uLXBvc2l0aW9uZWQgZWxlbWVu
dHMuIiwKKyAgICAidHJhbnNpdGlvbi1kZWxheSI6ICJUaGUgdHJhbnNpdGlvbi1kZWxheSBwcm9w
ZXJ0eSBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmV0d2VlbiBhIGNoYW5n
ZSBiZWluZyByZXF1ZXN0ZWQgdG8gYSBwcm9wZXJ0eSB0aGF0IGlzIHRvIGJlIHRyYW5zaXRpb25l
ZCBhbmQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2l0aW9uIGVmZmVjdC4iLAorICAgICJ0cmFuc2l0
aW9uLWR1cmF0aW9uIjogIlRoZSB0cmFuc2l0aW9uLWR1cmF0aW9uIENTUyBwcm9wZXJ0eSBzcGVj
aWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIG9yIG1pbGxpc2Vjb25kcyBhIHRyYW5zaXRpb24g
YW5pbWF0aW9uIHNob3VsZCB0YWtlIHRvIGNvbXBsZXRlLiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUg
aXMgMHMsIG1lYW5pbmcgdGhhdCBubyBhbmltYXRpb24gd2lsbCBvY2N1ci4iLAorICAgICJ0cmFu
c2l0aW9uLXByb3BlcnR5IjogIlRoZSB0cmFuc2l0aW9uLXByb3BlcnR5IENTUyBwcm9wZXJ0eSBp
cyB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWVzIG9mIENTUyBwcm9wZXJ0aWVzIHRvIHdoaWNoIGEg
dHJhbnNpdGlvbiBlZmZlY3Qgc2hvdWxkIGJlIGFwcGxpZWQuIiwKKyAgICAidHJhbnNpdGlvbi10
aW1pbmctZnVuY3Rpb24iOiAiVGhlIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHByb3BlcnR5
IGlzIHVzZWQgdG8gZGVzY3JpYmUgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSBD
U1PCoHByb3BlcnRpZXMgYmVpbmcgYWZmZWN0ZWQgYnkgYSB0cmFuc2l0aW9uIGVmZmVjdCBhcmUg
Y2FsY3VsYXRlZC4gVGhpcyBpbiBlc3NlbmNlIGxldHMgeW91IGVzdGFibGlzaCBhbiBhY2NlbGVy
YXRpb24gY3VydmUsIHNvIHRoYXQgdGhlIHNwZWVkIG9mIHRoZSB0cmFuc2l0aW9uIGNhbiB2YXJ5
IG92ZXIgaXRzIGR1cmF0aW9uLiIsCisgICAgInZlcnRpY2FsLWFsaWduIjogIlRoZSB2ZXJ0aWNh
bC1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2Yg
YW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiIsCisgICAgInZpc2liaWxpdHkiOiAiVGhlIHZp
c2liaWxpdHkgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gaGlkZSBhbiBlbGVtZW50IHdoaWxlIGxl
YXZpbmcgdGhlIHNwYWNlIHdoZXJlIGl0IHdvdWxkIGhhdmUgYmVlbi4gSXQgY2FuIGFsc28gaGlk
ZSByb3dzIG9yIGNvbHVtbnMgb2YgYSB0YWJsZS4iLAorICAgICJ3aGl0ZS1zcGFjZSI6ICJUaGUg
d2hpdGUtc3BhY2UgcHJvcGVydHkgaXMgdXNlZCB0byBkZXNjcmliZSBob3cgd2hpdGVzcGFjZSBp
bnNpZGUgdGhlIGVsZW1lbnQgaXMgaGFuZGxlZC4iLAorICAgICJ3aWR0aCI6ICJUaGUgd2lkdGgg
Q1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSBvZiBh
biBlbGVtZW50LiBUaGUgY29udGVudCBhcmVhIGlzIGluc2lkZSB0aGUgcGFkZGluZywgYm9yZGVy
LCBhbmQgbWFyZ2luIG9mIHRoZSBlbGVtZW50LiIsCisgICAgIndvcmQtc3BhY2luZyI6ICJUaGUg
d29yZC1zcGFjaW5nwqBwcm9wZXJ0eSBzcGVjaWZpZXMgc3BhY2luZyBiZWhhdmlvciBiZXR3ZWVu
IHRhZ3MgYW5kIHdvcmRzLiIsCisgICAgInotaW5kZXgiOiAiVGhlIHotaW5kZXggcHJvcGVydHkg
c3BlY2lmaWVzIHRoZSB6LW9yZGVyIG9mIGFuIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cy4g
V2hlbiBlbGVtZW50cyBvdmVybGFwLCB6LW9yZGVyIGRldGVybWluZXMgd2hpY2ggb25lIGNvdmVy
cyB0aGUgb3RoZXIuIEFuIGVsZW1lbnQgd2l0aCBhIGxhcmdlciB6LWluZGV4IGdlbmVyYWxseSBj
b3ZlcnMgYW4gZWxlbWVudCB3aXRoIGEgbG93ZXIgb25lLiIKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258199</attachid>
            <date>2015-08-04 12:57:38 -0700</date>
            <delta_ts>2015-08-05 18:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150804125729.patch</filename>
            <type>text/plain</type>
            <size>92483</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGQzYzhiODQyZTNjZGQ1ODc0N2E4MzFmN2M0MmM2
OTUyZTMzNzA0OWEuLjdiNjI2NjI0MzI5ZDA3ZWVlNTZmNWNhNTQxMGU5ZjVmNDBmM2Q0ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE1LTA4LTA0ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01h
aW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24u
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZS5zZXQgY29sbGFwc2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuZ2V0IGV4cGFuZGVkQnlV
c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuX2hl
YWRlckVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmNzczogQWRkZWQuCisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmhlYWRlcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhl
YWRlciA+IHNwYW4pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbi5tb2RpZmllZCA+
IC5oZWFkZXIgPiBzcGFuOjphZnRlcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9u
ID4gLmNvbnRlbnQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50
IC5ncm91cCA+IC5yb3cpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250
ZW50IC5ncm91cCA+IC5yb3c6bGFzdC1jaGlsZCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJv
dyk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFs
ID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4g
LnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS10aXRsZSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1z
dHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRl
bnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyOm5vdCgu
bGF5b3V0LXJldmVyc2VkKTpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5v
dCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pKToKKyAgICAgICAgKC5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0
aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pIGlucHV0KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzOiBBZGRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5fZ2VuZXJhdGVTZWN0aW9uLnJlcGxhY2VEYXNoV2l0aENhcGl0YWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fZ2VuZXJhdGVTZWN0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3VwZGF0ZVNlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlQXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnR5RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3NlY3Rpb25Nb2RpZmllZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9pbml0
aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVTZWN0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGlz
cGxheVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVBvc2l0
aW9uU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9wb3B1bGF0ZUZsb2F0U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VMaXN0
ZW5lcnMub25FZGl0b3JNb3VzZW92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzLm9uRWRp
dG9yTW91c2VvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGltZW5z
aW9uc1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVNYXJnaW5TZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUGFkZGluZ1Nl
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVGbGV4Ym94U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRleHRTdHlsZVNlY3Rp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fcG9wdWxhdGVGb250U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQmFja2dyb3VuZFN0eWxlU2Vj
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9wb3B1bGF0ZUJvcmRlclNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVPdXRsaW5lU2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24ubm9SZW1haW5pbmdUcmVlSXRlbXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxh
dGVCb3hTaGFkb3dTZWN0aW9uLnNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9w
b3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24uYm94U2hhZG93SXRlbVNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRl
Qm94U2hhZG93U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uLm5vUmVtYWluaW5n
VHJlZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24uc2VsZWN0ZWR0cmFuc2l0aW9u
SXRlbVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uLnRyYW5zaXRpb25J
dGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbik6CisKIDIwMTUtMDgtMDIg
IE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFVubmFtZXNwYWNlZCBGb3JtYXR0ZXIgY2xhc3NlcyBicmVhayBDU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYzFkMTAw
MGY3NjhhNGYzNDhiZjk4ODEyY2M2YWZiNjY1ZjhmZmFkYy4uNjFjY2I4MjY1OTA2M2FiNzc5MWY5
OWUzNzFjZDU1YjgyODEwYWJjMCAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSAzMTkxCnpj
bWEpOFpFVFpPNm4/dlkoWERoe1M9KWAkd1BvTjAqMWNgJjVfQmtJZ340I3BJZEtDRnZkVVc0KDY2
KihGaDlaKQp6RyNNYWRhNnFGKncqLWpqRnFCLX1BMHtrSFI2LSM5UTloeSYhI148c2ZvS2RPb14j
akx6VUBHTnl6UlpgSXBeSC0KemVlY0t2YEw4MzIpTnc8M05aMlN1Z18qKVMhN2U8RC0lTWVWNUVo
VU0xSTxwaldsJTlAMnA2Y3NMTnxoNWFOViZ+CnpgSD4tdnlVaSNWTFY3WSFKaXxMeCFWQzR5cUs0
RkdAWnQlKU4xKVpfZWJiRH1NfXZiUnZsQHJ3YUJ7bUFHfThAbQp6WnNsQXlUeEw/MGAtS2ZjU0JA
M2tjIzBxRi0tXyZII1d3e1NWJWRiZ0NTYyZPdjhWeCRvN2omWV9FPjQzTH0jUn4KenFeVTRlO0Rs
fEM/czdDeE5KeCVwQWZyKWR5P1VPbEw1THlSREZwSShJMzRWSkw8ak1aVktFXytxYkUmPWo8cnM5
CnokNUVwK1d+YW85I3t8JkMxYXZxPlIkZik2dT13JCRQRTNMeXpiSnhSQFNsPHE1RiRgaD9SWUZj
YmkpYUBkNEBATwp6NjZnO2VNbWpMOGBEYnQoXmZ5SithQTt+TGtDfFYxbUNMLSpWcFVKYnlRKiNa
czJvd3l1UDBlVVEyXzBKZ2smejMKekVyK0VUTGRpe0pWUD44NzJ6PUZYQEttM0lJZ1EkcTJ1OFVG
PDYlZUpHN2BvRk1KTndSJU5KIyNLO0MzVV5wVilPCnpZJDNaLWVMYCp0cWlTaTFjIyo9WGthRH0o
QyQzVW1ySSopSGF1UWFtRkhVQ3omLUUmbDg7QXVgK3MkeWtWRzVqSAp6SWxuUj4xVGtvb3FIYWs2
RWs/Sn0ybj1+V1gxfnl6aGxqQnJecCNGSEA3MXlyPzw7YjMxY2puUDU+bG5jcVF3fWEKemlUeWol
Slpqb3dHJDZ7JW5SV2JSRWV0Tnh2KTNEK2t5bGMpI0w8cllsUUlaRHQhY1IpOXlaTnstc1JLVCE9
X29ZCnpve3NWPU89TjE8JihFIXFuN2FoK3FGUj00UVB0SnZBezRSa1ZgWnM3O3xIOX41ajgyVGJY
VylscXxzP2FGT1V4VQp6NXN9cDxOOUIleXVvWWBNaFFIWnUqb2NCQDFUSWMtVDReNmNRRTRqRFIy
Wns0bTtURV5vZl9wR25gITFlLVEmNkAKejtlP0spbGlsaWhjWnp1X3gqTmwwJm8mRWJVfCVBI3gz
Xyh1YTM7e2IqTn16Y008WD94YVQoR2pJRkYwdnR4fDs/CnoqfT5JczFvYHRkdGcyc0UwSD01OClq
QHQoMVAxIWVhNUhQfnMmSXBRWFVkJCFYaD9sOztgTWFPQ1c1JDIjY3U1VQp6TDIwSkNscmxBPVNQ
KVlDTU9lN1lCeHtEVEgpfXomUnxpKm13Sj5MfGokSSU0UEtBanw7SXlXYCZHdWpnYGg7fVkKeig8
flprRXpKKjdDQDx7cmQtcjY7SWY1akA0IXItUCZLZzk2QC02b3Y3M25+PiRCd2kqPXpnSD9tbGxj
LU9Gb1Y4Cno7e05oVG4+bH50YF9SVHRuKWpedSh8YTwhSHBxPkQjMVM5JWE1cFM/KCEoQm5ya0JD
N1ZISE4zcyVaPDE0STU9YQp6PSRyM2BxTkJeTEc9V0tjcWVRI350dzAzRTlCJWYpUUxSRTVMemhB
alhYZjxFWnQhP29QI3Mtci1TfDtLKm9EPE8Kek83ZF8+ZWVRSlVRckc7NClFZWVXWCV6N0F4QyZV
RTNHT287bHZHeTN1QGhSVEo3ZmFlcCtYaW9AcWBScjM4Qn4wCnpFNEd6OGZeQGp9bUJAQntAdiNi
NGpGIVJJd3o8cVFJJHYoZ0V3RU9NQlRvYHJha0BoWml+MzV7dCpDYVImXyhebQp6aFI8Qmtsdz1w
b2l9KV9eTCZYeUohTj4pVHFZRCM1IVEzU0FoPE1VO3NLMW55VipeM3pDbk51RngkMSVNRlBZJSUK
enJRaFYzYyVtekwyPj5DIURgbzhiPHE/QEpqdGMwND8jeGt+cmkwIyFaPmcoVncpXlVTaDBHNE8m
ek0ySFVafVBVCnp0dSlLYDRUfHZjd0w8dT9NfFYpWFVJZzNzUGdrIShxaX5ReSZEbENPYDxKYU0z
eXRVZUxSZntnMiRnfCg3M01mRAp6SWk2RWt7UHVifEtFclUlVnxgUXFOMSpSK0lqbWRqZzI+JU04
NU5CWWNKbWIkNExmKURhPX5uajg4NWomanpjZFkKem0wbnNMZ3xSPX1aMURGTWQxVl9DRDFiemt3
dDVERWx1dyt+aEF+UjthQD5IdCglQkB6WGZCfnZ4PTJEZWhpUEV2CnpfYWZyM1QzNj43PWk1QXFN
dl9ONXBLYGJVb0ZSalNlSWB2aThqJmQmY1JMUj1Ue1UhQFFFTjs0RyFLWFI4QldtTAp6emN4KnA+
VUloKFB4SF9CZ08reDUpMVEtI0c+eDgkWjBUUVp2VGdKVnBfVH5aakltPT55NnxYd2BxbStIWGRN
YHoKejJeXjIlWn15OFV7YmJIRF88dzZIPDQ7Qzxpc3E8PWomcSk+Mi1QSnw3MldhRG19RnU2RzU2
NX1SKUtlcFEpdDVjClMoPT9QJFdrZ14+fDVNUU5ja214cl9WZytNCgpkZWx0YSAzMzcKemNtVi1Y
MGp+Yit3Z2s1UTFGKjNZdi09V20wK1hpfjhuZXE1Z2FlYTU4eEZJIzh1a1VWYHlqdnFsVmM9dXYk
cktJCnoxK3koSDUoSlpMRnBgc1JHak5takZDM0ZeR29ySXVITTllPlMyLTNBdiU1ITUxaFdIOFcm
QEwtUTZRNlZPJUFoOQp6UTVYWjBQZ01ASCQ1ZGI+di01Y3IxKyFJdXgmeU52Z3A+JWdfbCVrWnYr
dDEqMWhZKysxX0cxS241P3RJbmIteGgKekZRRCFRdiNxRHswa2gkJCpiYjhpeGxvZy14bClySXk5
fjJZeTVzP35ocjl7X2xqcHJpdndeK3sxaGJwTit5a0BDCnokNUh7YVpPTlBsbFB9US12dFE2ODFH
Q04zU19RTGwqfnwmRWl7dGJObGc7YyNsWXtMUmxYdmF6diR5V2QwaDIlUgp6M2JXaHJsbXdIeGYp
MW5LXiRVfjl7U2RjUjBSZGhIbSVqLUMzYiMhTjBWbzV2RWVyd0YwPUhXYTBaYXE4YHg1fmkKajBo
aHhTMG88MWY3WGNLUGA0JDA4d35INDZSc29qKjhVZUdIMXsob3BGVks8SgoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1OWMwNzFiYjQ1YzVj
NDNlMzA0N2M1OTdhOTdhNzYzOWFhZmQ2NDgyLi40MWE1MzUwNGFhODQ2MGFhMDFhYjBlZjM2NGY4
MTMxYmVkNjc1ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC0xNTgsNiArMTU4LDE4IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9UeXBlVG9rZW5WaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlVmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5jc3MiPgorICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFy
YXRlZEtleXdvcmRFZGl0b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVy
LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHls
ZUtleXdvcmRDaGVja2JveC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QuY3NzIj4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcyI+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9ySXRl
bS5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5
bGVTZWxlY3RvclNlY3Rpb24uY3NzIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yRHJhZ1Rv
QWRqdXN0TnVtYmVyQ29udHJvbGxlci5jc3MiPgpAQCAtNTMzLDYgKzU0NSwyNSBAQAogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9UeXBlVHJlZVZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0Nv
bnRyb2xsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yTGluay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZFBp
Y2tlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5
d29yZEljb25MaXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFs
U3R5bGVLZXl3b3JkQ2hlY2tib3guanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWls
eUxpc3RFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZUZvbnRGYW1pbHlMaXN0SXRlbS5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KIApAQCAt
NTY2LDYgKzU5Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1N0b3JhZ2VNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRv
a2VuQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
VmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNj
cmlwdCBzcmM9IkJhc2UvTWFpbi5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA4NTM2NTNjMzU2MjE5MDcyM2RhODRjZTQ3
YTRmNWM5NTgxZjljOTZkLi40ODZlZTlkNWY5ZDdhZjZlM2I0ZWFkNDNjMTZjMjI5MWU5NzcwZDYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC03
MywxNSArNzMsMTcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgdGhpcy5fY29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURl
dGFpbHNQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9
IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKICAgICAgICAg
dGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CisgICAgICAgIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWls
c1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsK
IAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5f
ZmlsdGVyRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQ
YW5lbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVu
dC5SZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgdGhp
cy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVz
U3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbF07CisgICAg
ICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLCB0aGlz
Ll9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWws
IHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsXTsKIAogICAgICAgICB0aGlzLl9uYXZpZ2F0
aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwu
bmF2aWdhdGlvbkl0ZW0pOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkl0ZW0pOwogICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX21ldHJpY3NT
dHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRp
b25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fdmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwubmF2
aWdhdGlvbkl0ZW0pOwogCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5n
ID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLXN0eWxlLWRldGFpbHMt
cGFuZWwiLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtLmlkZW50
aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmluZGV4IDg0YjNhMzk3MTg5NzZkZGIxOGNl
OGRjNzc3NjkyYzY0NThiN2UwMDEuLmQ4YTI0ZWVkNGVjMmFkY2QzNGQ2NjE2MDI0NmFjMWM5ZjAx
MDk5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBAIC02MSw2ICs2MSw3IEBAIFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNl
ZCIsICEhZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7CiAgICAgICAgIHRoaXMuY29sbGFw
c2VkID0gdGhpcy5fY29sbGFwc2VkU2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fZXhwYW5k
ZWRCeVVzZXIgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTExNSw2ICsxMTYs
MTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0uZWxlbWVudCk7CiAgICAgfQogCisgICAg
Z2V0IGV4cGFuZGVkQnlVc2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRl
ZEJ5VXNlcjsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGVhZGVyRWxlbWVudENs
aWNrZWQoZXZlbnQpCkBAIC0xMjIsNyArMTI4LDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5kYW50KHRoaXMuX29wdGlvbnNF
bGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmNvbGxhcHNlZCA9
ICF0aGlzLmNvbGxhcHNlZDsKKyAgICAgICAgdmFyIGNvbGxhcHNlZCA9IHRoaXMuY29sbGFwc2Vk
OworICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICFjb2xsYXBzZWQ7CisgICAgICAgIHRoaXMuX2V4
cGFuZGVkQnlVc2VyID0gY29sbGFwc2VkOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNWZlZDc5MjUyYTlhM2RmMjQyNGFhYmE0YzRk
NDYxOTQyZDM0ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyIHsKKyAg
ICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhl
YWRlciA+IHNwYW4geworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNl
Y3Rpb24ubW9kaWZpZWQgPiAuaGVhZGVyID4gc3Bhbjo6YWZ0ZXIgeworICAgIHdpZHRoOiA5cHg7
CisgICAgaGVpZ2h0OiA5cHg7CisgICAgbWFyZ2luOiAzcHggNnB4OworICAgIGJvcmRlci1yYWRp
dXM6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgb3BhY2l0eTogMC41Owor
ICAgIGNvbnRlbnQ6ICIiOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQg
eworICAgIG1hcmdpbi10b3A6IDVweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5j
b250ZW50IC5ncm91cCA+IC5yb3cgeworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93Omxhc3QtY2hpbGQgeworICAg
IHBhZGRpbmctYm90dG9tOiAzcHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29u
dGVudCAuZ3JvdXAgPiAucm93LnZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93IHsKKyAgICBib3Jk
ZXItYm90dG9tOiAwLjVweCBzb2xpZCBsaWdodGdyZXk7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4
OworICAgIHBhZGRpbmctYm90dG9tOiAycHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24g
PiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIHsKKyAgICB3aWR0aDogNTVweDsKK30K
KworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxz
LXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lcjpub3QoLmxheW91dC1yZXZlcnNlZCk6bGFzdC1j
aGlsZCB7CisgICAgbWFyZ2luLXJpZ2h0OiAxMXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5k
ZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3Qo
LnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSB7CisgICAgb3BhY2l0eTogMC41OworICAg
IHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1z
dHlsZS1zZWxlY3Rvci1zZWN0aW9uKSBpbnB1dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJk
NTkyMzg1ZjM5N2U4NTljMTk0Y2E3MGRmM2UyYjdmMzhiMGQ0YWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5qcwpAQCAtMCwwICsxLDExMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBWaXN1YWxTdHlsZURldGFpbHNQYW5l
bCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAoreworICAgIGNvbnN0cnVj
dG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJ2aXN1YWwiLCAi
dmlzdWFsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWaXN1YWwiKSk7CisKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnByb3BlcnR5UmVmZXJlbmNlSW5mb1RlbXAgPSB7fTsKKyAgICAgICAgdGhpcy5f
Y3VycmVudFJ1bGUgPSBudWxsOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zID0ge307CisgICAg
ICAgIHRoaXMuX2dyb3VwcyA9IHt9OworICAgICAgICB0aGlzLl9rZXl3b3JkcyA9IHt9OworICAg
ICAgICB0aGlzLl91bml0cyA9IHt9OworICAgICAgICB0aGlzLl9hdXRvY29tcGxldGlvblByb3Bl
cnR5RWRpdG9ycyA9IHt9OworCisgICAgICAgIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzID0gWyJJ
bmhlcml0IiwgIkluaXRpYWwiXTsKKyAgICAgICAgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwgPSB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJBdXRvIl0pOworICAgICAgICB0aGlzLl9r
ZXl3b3Jkcy5ib3JkZXJTdHlsZSA9IHsKKyAgICAgICAgICAgIGJhc2ljOiB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cy5jb25jYXQoWyJOb25lIiwgIkhpZGRlbiIsICJTb2xpZCJdKSwKKyAgICAgICAg
ICAgIGFkdmFuY2VkOiBbIkRhc2hlZCIsICJEb3R0ZWQiLCAiRG91YmxlIiwgIkdyb292ZSIsICJI
aWRkZW4iLCAiSW5zZXQiLCAiTm9uZSIsICJPdXRzZXQiLCAiUmlkZ2UiLCAiU29saWQiXQorICAg
ICAgICB9OworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCA9IHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLmNvbmNhdChbIk1lZGl1bSIsICJUaGljayIsICJUaGluIl0pOworCisgICAg
ICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQgPSB7CisgICAgICAgICAgICBiYXNp
YzogWyJweCIsICJlbSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiY2giLCAiY20iLCAiZXgi
LCAiaW4iLCAibW0iLCAicGMiLCAicHQiLCAicmVtIiwgInZoIiwgInZ3IiwgInZtYXgiLCAidm1p
biJdCisgICAgICAgIH07CisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzID0geworICAgICAg
ICAgICAgYmFzaWM6IFsiJSJdLmNvbmNhdCh0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50
LmJhc2ljKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQ
ZXJjZW50LmFkdmFuY2VkCisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2VsZWN0b3IgU2VjdGlv
bgorICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlU2VsZWN0b3JTZWN0aW9uKHRoaXMpOworICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rp
b24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rp
b24uRXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlzLl91cGRhdGVTZWN0aW9ucywgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0b3JTZWN0aW9uLmVs
ZW1lbnQpOworCisgICAgICAgIC8vIExheW91dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVy
YXRlU2VjdGlvbigiZGlzcGxheSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzcGxheSIpKTsK
KyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJwb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUG9zaXRpb24iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxv
YXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IGFuZCBDbGVhciIpKTsKKyAgICAgICAg
dGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJkaW1lbnNpb25zIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEaW1lbnNpb25zIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oIm1hcmdpbiIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWFyZ2luIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0
ZVNlY3Rpb24oInBhZGRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhZGRpbmciKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxleGJveCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRmxleGJveCIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5sYXlvdXQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJsYXlvdXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxheW91dCIpLCBbdGhpcy5fZ3JvdXBzLmRpc3BsYXkuc2VjdGlvbiwgdGhpcy5fZ3JvdXBz
LnBvc2l0aW9uLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mbG9hdC5zZWN0aW9uLCB0aGlzLl9ncm91
cHMuZGltZW5zaW9ucy5zZWN0aW9uLCB0aGlzLl9ncm91cHMubWFyZ2luLnNlY3Rpb24sIHRoaXMu
X2dyb3Vwcy5wYWRkaW5nLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mbGV4Ym94LnNlY3Rpb25dKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5sYXlvdXQu
ZWxlbWVudCk7CisKKyAgICAgICAgLy8gVGV4dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVy
YXRlU2VjdGlvbigidGV4dC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSk7
CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZm9udCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRm9udCIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXNwYWNp
bmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNwYWNpbmciKSk7CisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRv
dyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy50ZXh0ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbigidGV4dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGV4dCIpLCBbdGhp
cy5fZ3JvdXBzLnRleHRTdHlsZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZm9udC5zZWN0aW9uLCB0
aGlzLl9ncm91cHMudGV4dFNwYWNpbmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnRleHRTaGFkb3cu
c2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rp
b25zLnRleHQuZWxlbWVudCk7CisKKyAgICAgICAgLy8gQmFja2dyb3VuZCBTZWN0aW9uCisgICAg
ICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYmFja2dyb3VuZC1zdHlsZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3R5bGUiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYm9y
ZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3JkZXIiKSk7CisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigib3V0bGluZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3V0bGluZSIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3gtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaGFkb3ciKSk7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMuYmFja2dy
b3VuZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImJhY2tncm91bmQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJhY2tncm91bmQiKSwgW3RoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5k
U3R5bGUuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmJvcmRlci5zZWN0aW9uLCB0aGlzLl9ncm91cHMu
b3V0bGluZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuYm94U2hhZG93LnNlY3Rpb25dKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kLmVs
ZW1lbnQpOworCisgICAgICAgIC8vIEFuaW1hdGlvbiBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigidHJhbnNpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNp
dGlvbiIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5hbmltYXRpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJhbmltYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkFuaW1hdGlvbiIpLCBbdGhpcy5fZ3JvdXBzLnRyYW5zaXRpb24uc2VjdGlvbl0pOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbi5lbGVt
ZW50KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHJlZnJlc2goc2lnbmlmaWNhbnRD
aGFuZ2UpCisgICAgeworICAgICAgICBpZiAoc2lnbmlmaWNhbnRDaGFuZ2UpIHsKKyAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi51cGRhdGUodGhpcy5fbm9kZVN0eWxlcyk7CisgICAg
ICAgICAgICB0aGlzLl91cGRhdGVTZWN0aW9ucygpOworICAgICAgICB9CisKKyAgICAgICAgc3Vw
ZXIucmVmcmVzaCgpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9nZW5lcmF0ZVNl
Y3Rpb24oaWQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpZCB8fCAhZGlzcGxh
eU5hbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24gcmVwbGFjZURh
c2hXaXRoQ2FwaXRhbChtYXRjaCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNo
LnJlcGxhY2UoIi0iLCAiIikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBjYW1lbENhc2VJZCA9IGlkLnJlcGxhY2UoLy1cYlx3L2csIHJlcGxhY2VEYXNoV2l0aENhcGl0
YWwpOworCisgICAgICAgIHRoaXMuX2dyb3Vwc1tjYW1lbENhc2VJZF0gPSB7CisgICAgICAgICAg
ICBzZWN0aW9uOiBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKGlkLCBkaXNwbGF5TmFt
ZSwgW10pLAorICAgICAgICAgICAgcHJvcGVydGllczoge30KKyAgICAgICAgfTsKKworICAgICAg
ICB2YXIgcG9wdWxhdGVGdW5jdGlvbiA9IHRoaXNbIl9wb3B1bGF0ZSIgKyBjYW1lbENhc2VJZC5j
YXBpdGFsaXplKCkgKyAiU2VjdGlvbiJdOworICAgICAgICBwb3B1bGF0ZUZ1bmN0aW9uLmNhbGwo
dGhpcyk7CisgICAgfQorCisgICAgX3VwZGF0ZVNlY3Rpb25zKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fY3VycmVudFJ1bGUgPSB0aGlzLl9zZWxlY3RvclNlY3Rpb24uY3VycmVudFJ1bGUo
KTsKKyAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50UnVsZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB2YXIgZGlzYWJsZWQgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUo
ImRpc2FibGVkIiwgdGhpcy5fY3VycmVudFJ1bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRdKTsKKyAgICAgICAgaWYgKGRpc2FibGVkKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9ncm91cHMpCisg
ICAgICAgICAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKHRoaXMuX2dyb3Vwc1trZXldLCAhIWV2
ZW50KTsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fc2VjdGlvbnMpIHsKKyAgICAg
ICAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNba2V5XTsKKyAgICAgICAgICAgIHZh
ciBvbmVTZWN0aW9uRXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIGdyb3Vw
IG9mIHNlY3Rpb24uZ3JvdXBzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFncm91cC5jb2xsYXBz
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgb25lU2VjdGlvbkV4cGFuZGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAob25lU2VjdGlvbkV4cGFuZGVkKQorICAgICAgICAgICAgICAg
IHNlY3Rpb24uY29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmICghc2VjdGlv
bi5leHBhbmRlZEJ5VXNlcikKKyAgICAgICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNlZCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfdXBkYXRlUHJvcGVydGllcyhncm91cCwgZm9y
Y2VTdHlsZVVwZGF0ZSkKKyAgICB7CisgICAgICAgIGlmICghZ3JvdXAuc2VjdGlvbikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgaW5pdGlhbFRleHRMaXN0ID0gdGhpcy5fY3Vy
cmVudFJ1bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9w
ZXJ0eVNlY3Rpb25UZXh0TGlzdF07CisgICAgICAgIGlmICghaW5pdGlhbFRleHRMaXN0KQorICAg
ICAgICAgICAgdGhpcy5fY3VycmVudFJ1bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdF0gPSBpbml0aWFsVGV4dExpc3Qg
PSBuZXcgV2Vha01hcDsKKworICAgICAgICB2YXIgaW5pdGlhbFByb3BlcnR5VGV4dE1pc3Npbmcg
PSBmYWxzZTsKKyAgICAgICAgaWYgKCFpbml0aWFsVGV4dExpc3QuaGFzKGdyb3VwKSkgeworICAg
ICAgICAgICAgdmFyIGluaXRpYWxQcm9wZXJ0eVRleHQgPSB7fTsKKyAgICAgICAgICAgIGluaXRp
YWxQcm9wZXJ0eVRleHRNaXNzaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBv
bmVQcm9wZXJ0eUhhc1ZhbHVlID0gZmFsc2U7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBncm91
cC5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICB2YXIgcHJvcGVydHlFZGl0b3IgPSBncm91cC5w
cm9wZXJ0aWVzW2tleV07CisgICAgICAgICAgICBwcm9wZXJ0eUVkaXRvci51cGRhdGUoIXByb3Bl
cnR5RWRpdG9yLnN0eWxlIHx8IGZvcmNlU3R5bGVVcGRhdGUgPyB0aGlzLl9jdXJyZW50UnVsZSA6
IG51bGwpOworCisgICAgICAgICAgICB2YXIgdmFsdWUgPSBwcm9wZXJ0eUVkaXRvci5zeW50aGVz
aXplZFZhbHVlOworICAgICAgICAgICAgaWYgKHZhbHVlICYmICFwcm9wZXJ0eUVkaXRvci5wcm9w
ZXJ0eU1pc3NpbmcpIHsKKyAgICAgICAgICAgICAgICBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWxQcm9wZXJ0eVRleHRba2V5XSA9IHZhbHVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG9uZVByb3BlcnR5SGFzVmFsdWUpCisg
ICAgICAgICAgICBncm91cC5zZWN0aW9uLmNvbGxhcHNlZCA9IGZhbHNlOworICAgICAgICBlbHNl
IGlmICghZ3JvdXAuc2VjdGlvbi5leHBhbmRlZEJ5VXNlcikKKyAgICAgICAgICAgIGdyb3VwLnNl
Y3Rpb24uY29sbGFwc2VkID0gdHJ1ZTsKKworICAgICAgICBpZiAoaW5pdGlhbFByb3BlcnR5VGV4
dE1pc3NpbmcpCisgICAgICAgICAgICBpbml0aWFsVGV4dExpc3Quc2V0KGdyb3VwLCBpbml0aWFs
UHJvcGVydHlUZXh0KTsKKyAgICAgICAgdGhpcy5fc2VjdGlvbk1vZGlmaWVkKGdyb3VwKTsKKwor
ICAgICAgICB2YXIgYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBncm91cC5hdXRv
Y29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllczsKKyAgICAgICAgaWYgKCFhdXRvY29tcGxldGVD
b21wYXRpYmxlUHJvcGVydGllcyB8fCAhYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGVkaXRvciBv
ZiBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcykKKyAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlU3R5
bGVVcGRhdGUpOworICAgIH0KKworICAgIF91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydHlFZGl0b3IoZWRpdG9yLCBmb3JjZSkKKyAgICB7CisgICAgICAgIGlmICghZWRpdG9yIHx8
IChlZGl0b3IuaGFzQ29tcGxldGlvbnMgJiYgIWZvcmNlKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBlZGl0b3IuY29tcGxldGlvbnMgPSBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENv
bXBsZXRpb25zLmZvclByb3BlcnR5KGVkaXRvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOworICAg
IH0KKworICAgIF9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBncm91cC5z
ZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibW9kaWZpZWQiLCB0aGlzLl9pbml0aWFs
UHJvcGVydHlUZXh0TW9kaWZpZWQoZ3JvdXApKTsKKyAgICB9CisKKyAgICBfaW5pdGlhbFByb3Bl
cnR5VGV4dE1vZGlmaWVkKGdyb3VwKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cC5wcm9wZXJ0
aWVzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHZhciBpbml0aWFsUHJv
cGVydHlUZXh0TGlzdCA9IHRoaXMuX2N1cnJlbnRSdWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RdLmdldChncm91cCk7
CisgICAgICAgIGlmICghaW5pdGlhbFByb3BlcnR5VGV4dExpc3QpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgIHZhciBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsK
KyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5RWRp
dG9yLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgICAgICBpZiAodmFsdWUgJiYgaW5pdGlhbFBy
b3BlcnR5VGV4dExpc3Rba2V5XSAhPT0gdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgX3Bv
cHVsYXRlU2VjdGlvbihncm91cCwgZ3JvdXBzKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cCB8
fCAhZ3JvdXBzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGdyb3VwLnNlY3Rpb24u
Z3JvdXBzID0gZ3JvdXBzOworICAgICAgICBmb3IgKHZhciBrZXkgaW4gZ3JvdXAucHJvcGVydGll
cykKKyAgICAgICAgICAgIGdyb3VwLnByb3BlcnRpZXNba2V5XS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdl
LCB0aGlzLl9zZWN0aW9uTW9kaWZpZWQuYmluZCh0aGlzLCBncm91cCkpOworICAgIH0KKworICAg
IF9wb3B1bGF0ZURpc3BsYXlTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRo
aXMuX2dyb3Vwcy5kaXNwbGF5OworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3Bl
cnRpZXM7CisKKyAgICAgICAgdmFyIGRpc3BsYXlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZGlzcGxheSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEaXNwbGF5IiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIk5vbmUiLCAiQmxvY2si
LCAiRmxleCIsICJJbmxpbmUiLCAiSW5saW5lIEJsb2NrIl0sCisgICAgICAgICAgICBhZHZhbmNl
ZDogWyJDb21wYWN0IiwgIklubGluZSBGbGV4IiwgIklubGluZSBUYWJsZSIsICJMaXN0IEl0ZW0i
LCAiVGFibGUiLCAiVGFibGUgQ2FwdGlvbiIsICJUYWJsZSBDZWxsIiwgIlRhYmxlIENvbHVtbiIs
ICJUYWJsZSBDb2x1bW4gR3JvdXAiLCAiVGFibGUgRm9vdGVyIEdyb3VwIiwgIlRhYmxlIEhlYWRl
ciBHcm91cCIsICJUYWJsZSBSb3ciLCAiVGFibGUgUm93IEdyb3VwIiwgIiBXQVAgTWFycXVlZSIs
ICIgV2Via2l0IEJveCIsICIgV2Via2l0IEdyaWQiLCAiIFdlYmtpdCBJbmxpbmUgQm94IiwgIiBX
ZWJraXQgSW5saW5lIEdyaWQiXQorICAgICAgICB9KTsKKyAgICAgICAgcHJvcGVydGllcy52aXNp
YmlsaXR5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInZpc2li
aWxpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZpc2liaWxpdHkiKSwgeworICAgICAgICAg
ICAgYmFzaWM6IFsiSGlkZGVuIiwgIlZpc2libGUiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBb
IkNvbGxhcHNlIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgZGlzcGxheVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuZGlzcGxheS5lbGVtZW50KTsKKyAgICAgICAgZGlzcGxheVJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudmlzaWJpbGl0eS5lbGVtZW50KTsKKwor
ICAgICAgICB2YXIgc2l6aW5nUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJveFNpemluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3gtc2l6aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTaXppbmciKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiQm9yZGVyIEJveCIs
ICJDb250ZW50IEJveCJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuY3Vyc29yID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImN1cnNvciIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ3Vyc29yIiksIHsKKyAgICAgICAgICAgIGJhc2ljOiBbIkF1dG8iLCAiRGVmYXVs
dCIsICJOb25lIiwgIlBvaW50ZXIiLCAiQ3Jvc3NoYWlyIiwgIlRleHQiXSwKKyAgICAgICAgICAg
IGFkdmFuY2VkOiBbIkNvbnRleHQgTWVudSIsICJIZWxwIiwgIlByb2dyZXNzIiwgIldhaXQiLCAi
Q2VsbCIsICJWZXJ0aWNhbCBUZXh0IiwgIkFsaWFzIiwgIkNvcHkiLCAiTW92ZSIsICJObyBEcm9w
IiwgIk5vdCBBbGxvd2VkIiwgIkFsbCBTY3JvbGwiLCAiQ29sIFJlc2l6ZSIsICJSb3cgUmVzaXpl
IiwgIk4gUmVzaXplIiwgIkUgUmVzaXplIiwgIlMgUmVzaXplIiwgIlcgUmVzaXplIiwgIk5TIFJl
c2l6ZSIsICJFVyBSZXNpemUiLCAiTkUgUmVzaXplIiwgIk5XIFJlc2l6ZSIsICJTRSBSZXNpemUi
LCAic1cgUmVzaXplIiwgIk5FU1cgUmVzaXplIiwgIk5XU0UgUmVzaXplIl0KKyAgICAgICAgfSk7
CisKKyAgICAgICAgc2l6aW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3hT
aXppbmcuZWxlbWVudCk7CisgICAgICAgIHNpemluZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuY3Vyc29yLmVsZW1lbnQpOworCisgICAgICAgIHZhciBvdmVyZmxvd1JvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5v
cGFjaXR5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVy
KCJvcGFjaXR5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcGFjaXR5IikpOworICAgICAgICBw
cm9wZXJ0aWVzLm9wYWNpdHkuc2NhbGUgPSAxOworICAgICAgICBwcm9wZXJ0aWVzLm9wYWNpdHku
bWF4aW11bSA9IDE7CisgICAgICAgIHByb3BlcnRpZXMub3ZlcmZsb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcihbIm92ZXJmbG93LXgiLCAib3ZlcmZsb3cteSJd
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk92ZXJmbG93IiksIHsKKyAgICAgICAgICAgIGJhc2lj
OiBbIkluaXRpYWwiLCAiQXV0byIsICJIaWRkZW4iLCAiU2Nyb2xsIiwgIlZpc2libGUiXSwKKyAg
ICAgICAgICAgIGFkdmFuY2VkOiBbIk1hcnF1ZWUiLCAiT3ZlcmxheSIsICIgV2Via2l0IFBhZ2Vk
IFgiLCAiIFdlYmtpdCBQYWdlZCBZIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgb3ZlcmZsb3dS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm9wYWNpdHkuZWxlbWVudCk7CisgICAg
ICAgIG92ZXJmbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdmVyZmxvdy5l
bGVtZW50KTsKKworICAgICAgICB2YXIgZGlzcGxheUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFtkaXNwbGF5Um93LCBzaXppbmdSb3csIG92ZXJmbG93Um93XSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Rpc3BsYXlHcm91cF0pOwor
ICAgIH0KKworICAgIF9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBwcmVmaXgsIGFs
bG93TmVnYXRpdmVzKQorICAgIHsKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9w
ZXJ0aWVzOworCisgICAgICAgIHZhciBoYXNQcmVmaXggPSBwcmVmaXggJiYgcHJlZml4Lmxlbmd0
aDsKKyAgICAgICAgdmFyIHByb3BlcnR5TmFtZVByZWZpeCA9IGhhc1ByZWZpeCA/IHByZWZpeCAr
ICItIiA6ICIiOworCisgICAgICAgIHZhciB0b3AgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiVG9w
IiA6ICJ0b3AiOworICAgICAgICB2YXIgYm90dG9tID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIkJv
dHRvbSIgOiAiYm90dG9tIjsKKyAgICAgICAgdmFyIGxlZnQgPSBoYXNQcmVmaXggPyBwcmVmaXgg
KyAiTGVmdCIgOiAibGVmdCI7CisgICAgICAgIHZhciByaWdodCA9IGhhc1ByZWZpeCA/IHByZWZp
eCArICJSaWdodCIgOiAicmlnaHQiOworCisgICAgICAgIHZhciB2ZXJ0aWNhbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllc1t0b3BdID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVBy
ZWZpeCArICJ0b3AiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCB0aGlzLl9rZXl3b3Jk
cy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzKTsKKyAgICAg
ICAgcHJvcGVydGllc1tib3R0b21dID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJib3R0b20iLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkJvdHRvbSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVm
YXVsdHMsIGFsbG93TmVnYXRpdmVzLCB0cnVlKTsKKyAgICAgICAgdmFyIHZlcnRpY2FsTGluayA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRp
ZXNbdG9wXSwgcHJvcGVydGllc1tib3R0b21dXSwgImxpbmstdmVydGljYWwiKTsKKworICAgICAg
ICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXNbdG9wXS5lbGVtZW50KTsK
KyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZCh2ZXJ0aWNhbExpbmsuZWxlbWVu
dCk7CisgICAgICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tib3R0
b21dLmVsZW1lbnQpOworCisgICAgICAgIHZhciBob3Jpem9udGFsID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW2xlZnRdID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCAr
ICJsZWZ0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0IiksIHRoaXMuX2tleXdvcmRzLmJv
eE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBw
cm9wZXJ0aWVzW3JpZ2h0XSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveChwcm9wZXJ0eU5hbWVQcmVmaXggKyAicmlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywg
YWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICB2YXIgaG9yaXpvbnRhbExpbmsgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rKFtwcm9wZXJ0aWVzW2xl
ZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0sICJsaW5rLWhvcml6b250YWwiKTsKKworICAgICAgICBo
b3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tsZWZ0XS5lbGVtZW50KTsK
KyAgICAgICAgaG9yaXpvbnRhbC5lbGVtZW50LmFwcGVuZENoaWxkKGhvcml6b250YWxMaW5rLmVs
ZW1lbnQpOworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
c1tyaWdodF0uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGFsbExpbmtSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICB2YXIgYWxsTGluayA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9wXSwg
cHJvcGVydGllc1tib3R0b21dLCBwcm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0s
ICJsaW5rLWFsbCIsIFt2ZXJ0aWNhbExpbmssIGhvcml6b250YWxMaW5rXSk7CisgICAgICAgIGFs
bExpbmtSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChhbGxMaW5rLmVsZW1lbnQpOworCisgICAgICAg
IHJldHVybiBbdmVydGljYWwsIGFsbExpbmtSb3csIGhvcml6b250YWxdOworICAgIH0KKworICAg
IF9wb3B1bGF0ZVBvc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0
aGlzLl9ncm91cHMucG9zaXRpb247CisgICAgICAgIHZhciByb3dzID0gdGhpcy5fZ2VuZXJhdGVN
ZXRyaWNTZWN0aW9uUm93cyhncm91cCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIHZhciBwcm9wZXJ0
aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgcG9zaXRpb25UeXBlID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnBv
c2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInBvc2l0
aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHsKKyAgICAgICAgICAgIGJhc2lj
OiBbIlN0YXRpYyIsICJSZWxhdGl2ZSIsICJBYnNvbHV0ZSIsICJGaXhlZCJdLAorICAgICAgICAg
ICAgYWR2YW5jZWQ6IFsiIFdlYmtpdCBTdGlja3kiXQorICAgICAgICB9KTsKKyAgICAgICAgcHJv
cGVydGllcy56SW5kZXggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goInotaW5kZXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInotSW5kZXgiKSwgdGhpcy5fa2V5
d29yZHMuYm94TW9kZWwsIG51bGwsIHRydWUpOworCisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMucG9zaXRpb24uZWxlbWVudCk7CisgICAgICAgIHBv
c2l0aW9uVHlwZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuekluZGV4LmVsZW1lbnQp
OworICAgICAgICBwb3NpdGlvblR5cGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtc2VwYXJhdGVkLXJvdyIpOworCisgICAgICAgIHJvd3MudW5zaGlmdChwb3NpdGlvblR5cGUp
CisKKyAgICAgICAgdmFyIHBvc2l0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAocm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwg
W3Bvc2l0aW9uR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbG9hdFNlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsb2F0OworICAgICAgICB2
YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGZsb2F0Um93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLmZsb2F0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgi
ZmxvYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IiksIFsiTGVmdCIsICJSaWdodCIs
ICJOb25lIl0pOworICAgICAgICBmbG9hdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuZmxvYXQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGNsZWFyUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNsZWFyID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiY2xlYXIiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiksIFsiTGVmdCIsICJSaWdodCIsICJCb3RoIiwgIk5vbmUi
XSk7CisgICAgICAgIGNsZWFyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jbGVh
ci5lbGVtZW50KTsKKworICAgICAgICB2YXIgZmxvYXRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbZmxvYXRSb3csIGNsZWFyUm93XSk7CisgICAgICAgIHRoaXMu
X3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Zsb2F0R3JvdXBdKTsKKyAgICB9CisKKyAgICBfYWRk
TWV0cmljc01vdXNlTGlzdGVuZXJzKGVkaXRvciwgaGlnaGxpZ2h0Q29uZmlnKQorICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gb25FZGl0b3JNb3VzZW92ZXIoKSB7CisgICAgICAgICAgICBpZiAoIXRo
aXMuX3N0eWxlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKCF0
aGlzLl9zdHlsZS5vd25lclJ1bGUpIHsKKyAgICAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgNik6IE9yZGVyIG9mIHBhcmFtZXRlcnMgY2hhbmdlZCBpbiBpT1MgNy4KKyAgICAgICAg
ICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlLmludm9rZSh7bm9kZUlkOiB0aGlzLl9zdHls
ZS5ub2RlLmlkLCBoaWdobGlnaHRDb25maWd9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChET01BZ2VudC5oaWdobGlnaHRTZWxlY3Rv
cikKKyAgICAgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHRTZWxlY3RvcihoaWdobGlnaHRD
b25maWcsIHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zZWxlY3RvclRleHQsIHRoaXMuX3N0eWxlLm5v
ZGUub3duZXJEb2N1bWVudC5mcmFtZUlkZW50aWZpZXIpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25FZGl0b3JNb3VzZW91dCgpIHsKKyAgICAgICAgICAgIERPTUFnZW50LmhpZGVI
aWdobGlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlb3ZlciIsIG9uRWRpdG9yTW91c2VvdmVyLmJpbmQoZWRpdG9yKSk7Cisg
ICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwgb25FZGl0
b3JNb3VzZW91dC5iaW5kKGVkaXRvcikpOworICAgIH0KKworICAgIF9wb3B1bGF0ZURpbWVuc2lv
bnNTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaW1l
bnNpb25zOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAg
ICAgICAgdmFyIGRpbWVuc2lvbnNXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy53aWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigid2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgZGltZW5zaW9uc1dpZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy53aWR0aC5lbGVtZW50KTsKKworICAgICAgICB2YXIgZGltZW5zaW9uc0hlaWdodCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5o
ZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIo
ImhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRz
LmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgZGltZW5z
aW9uc0hlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuaGVpZ2h0LmVsZW1lbnQp
OworCisgICAgICAgIHZhciBkaW1lbnNpb25zUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLndpZHRo
LCBwcm9wZXJ0aWVzLmhlaWdodF07CisgICAgICAgIHZhciBkaW1lbnNpb25zR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNXaWR0aCwgZGltZW5z
aW9uc0hlaWdodF0pOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWluV2lkdGggPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWluV2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1p
bi13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMu
Ym94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWlu
V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1pbldpZHRoLmVsZW1lbnQpOwor
CisgICAgICAgIHZhciBkaW1lbnNpb25zTWluSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbkhlaWdodCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLWhlaWdodCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0
aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbkhlaWdodC5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluSGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAg
IHZhciBkaW1lbnNpb25zTWluUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1pbldpZHRoLCBwcm9w
ZXJ0aWVzLm1pbkhlaWdodF07CisgICAgICAgIHZhciBkaW1lbnNpb25zTWluR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNaW5XaWR0aCwgZGlt
ZW5zaW9uc01pbkhlaWdodF0pOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4S2V5d29yZHMg
PSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoIk5vbmUiKTsKKyAgICAgICAgdmFyIGRp
bWVuc2lvbnNNYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy5tYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWF4LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJXaWR0aCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBkaW1lbnNpb25zTWF4V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLm1heFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4SGVpZ2h0
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLm1heEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJl
clNsaWRlcigibWF4LWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRp
bWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRp
bWVuc2lvbnNNYXhIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1heEhlaWdo
dC5lbGVtZW50KTsKKworICAgICAgICB2YXIgZGltZW5zaW9uc01heFByb3BlcnRpZXMgPSBbcHJv
cGVydGllcy5tYXhXaWR0aCwgcHJvcGVydGllcy5tYXhIZWlnaHRdOworICAgICAgICB2YXIgZGlt
ZW5zaW9uc01heEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtk
aW1lbnNpb25zTWF4V2lkdGgsIGRpbWVuc2lvbnNNYXhIZWlnaHRdKTsKKworICAgICAgICB2YXIg
ZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc0NvbnRyb2xsZXIoeworICAgICAgICAgICAgImRlZmF1bHQiOiB7dGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVmYXVsdCIpLCBlbGVtZW50OiBkaW1lbnNpb25zR3Jv
dXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc1Byb3BlcnRpZXN9LAorICAgICAgICAg
ICAgIm1pbiI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNaW4iKSwgZWxlbWVudDog
ZGltZW5zaW9uc01pbkdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lvbnNNaW5Qcm9w
ZXJ0aWVzfSwKKyAgICAgICAgICAgICJtYXgiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTWF4IiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNNYXhHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVz
OiBkaW1lbnNpb25zTWF4UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAgICAgdmFyIGhp
Z2hsaWdodENvbmZpZyA9IHtjb250ZW50Q29sb3I6IHtyOiAxMTEsIGc6IDE2OCwgYjogMjIwLCBh
OiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy53aWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuaGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5taW5XaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWluSGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5tYXhXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4SGVpZ2h0
LCBoaWdobGlnaHRDb25maWcpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNUYWJDb250cm9sbGVy
LCBkaW1lbnNpb25zR3JvdXAsIGRpbWVuc2lvbnNNaW5Hcm91cCwgZGltZW5zaW9uc01heEdyb3Vw
XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2RpbWVuc2lvbnNHcm91
cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZU1hcmdpblNlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLm1hcmdpbjsKKyAgICAgICAgdmFyIHJvd3MgPSB0
aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAibWFyZ2luIiwgdHJ1ZSk7CisK
KyAgICAgICAgdmFyIGhpZ2hsaWdodENvbmZpZyA9IHttYXJnaW5Db2xvcjoge3I6IDI0NiwgZzog
MTc4LCBiOiAxMDcsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2Fk
ZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblRvcCwgaGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3Vw
LnByb3BlcnRpZXMubWFyZ2luQm90dG9tLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5MZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5tYXJnaW5SaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAg
ICB2YXIgbWFyZ2luR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
cm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW21hcmdpbkdyb3Vw
XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlUGFkZGluZ1NlY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLnBhZGRpbmc7CisgICAgICAgIHZhciByb3dzID0g
dGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgInBhZGRpbmciKTsKKworICAg
ICAgICB2YXIgaGlnaGxpZ2h0Q29uZmlnID0ge3BhZGRpbmdDb2xvcjoge3I6IDE0NywgZzogMTk2
LCBiOiAxMjUsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdUb3AsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLnBhZGRpbmdCb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdMZWZ0LCBo
aWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMo
Z3JvdXAucHJvcGVydGllcy5wYWRkaW5nUmlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAg
ICAgdmFyIHBhZGRpbmdHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91
cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcGFkZGluZ0dy
b3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRmxleGJveFNlY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsZXhib3g7CisgICAgICAgIHZhciBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgZmxleE9yZGVyUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
Lm9yZGVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvcmRl
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JkZXIiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMpOworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhCYXNpcyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1iYXNpcyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQmFzaXMiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
LCB0cnVlKTsKKworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm9yZGVyLmVsZW1lbnQpOworICAgICAgICBmbGV4T3JkZXJSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhCYXNpcy5lbGVtZW50KTsKKworICAgICAgICB2YXIgZmxl
eFNpemVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuZmxleEdyb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImZsZXgtZ3JvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiR3JvdyIpLCB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cywgbnVsbCk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFNocmlu
ayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1zaHJp
bmsiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNocmluayIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZh
dWx0cywgbnVsbCk7CisKKyAgICAgICAgZmxleFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmZsZXhHcm93LmVsZW1lbnQpOworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleFNocmluay5lbGVtZW50KTsKKworICAgICAgICB2
YXIgZmxleEZsb3dSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuZmxleERpcmVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJmbGV4LWRpcmVjdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIlJvdyIsICJS
b3cgUmV2ZXJzZSIsICJDb2x1bW4iLCAiQ29sdW1uIFJldmVyc2UiXSkpOworICAgICAgICBwcm9w
ZXJ0aWVzLmZsZXhXcmFwID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNr
ZXIoImZsZXgtd3JhcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV3JhcCIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJXcmFwIiwgIldyYXAgUmV2ZXJzZSIsICJOb3dyYXAiXSkp
OworCisgICAgICAgIGZsZXhGbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5m
bGV4RGlyZWN0aW9uLmVsZW1lbnQpOworICAgICAgICBmbGV4Rmxvd1Jvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuZmxleFdyYXAuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGZsZXhi
b3hHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZmxleE9yZGVy
Um93LCBmbGV4U2l6ZVJvdywgZmxleEZsb3dSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBbZmxleGJveEdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVGV4
dFN0eWxlU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
dGV4dFN0eWxlOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisK
KyAgICAgICAgdmFyIHRleHRBcHBlYXJhbmNlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJjb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMudGV4dERpcmVjdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJkaXJlY3Rpb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpcmVjdGlvbiIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJM
VFIiLCAiUlRMIl0pKTsKKworICAgICAgICB0ZXh0QXBwZWFyYW5jZVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuY29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRBcHBlYXJhbmNl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0RGlyZWN0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIHZhciB0ZXh0QWxpZ25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudGV4dEFsaWduID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgidGV4dC1hbGlnbiIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQWxpZ24iKSwgWyJMZWZ0IiwgIkNlbnRlciIsICJSaWdodCIsICJKdXN0aWZ5
Il0pOworCisgICAgICAgIHRleHRBbGlnblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMudGV4dEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0VHJhbnNmb3JtUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LnRleHRUcmFuc2Zvcm0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LXRyYW5zZm9ybSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmb3JtIiks
IFsiQ2FwaXRhbGl6ZSIsICJVcHBlcmNhc2UiLCAiTG93ZXJjYXNlIiwgIk5vbmUiXSk7CisKKyAg
ICAgICAgdGV4dFRyYW5zZm9ybVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4
dFRyYW5zZm9ybS5lbGVtZW50KTsKKworICAgICAgICB2YXIgdGV4dERlY29yYXRpb25Sb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
dGV4dERlY29yYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25M
aXN0KCJ0ZXh0LWRlY29yYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlY29yYXRpb24i
KSwgWyJVbmRlcmxpbmUiLCAiTGluZSBUaHJvdWdoIiwgIk92ZXJsaW5lIiwgIk5vbmUiXSk7CisK
KyAgICAgICAgdGV4dERlY29yYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LnRleHREZWNvcmF0aW9uLmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuY29sb3JdOworCisgICAgICAgIHZhciB0
ZXh0U3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4
dEFwcGVhcmFuY2VSb3csIHRleHRBbGlnblJvdywgdGV4dFRyYW5zZm9ybVJvdywgdGV4dERlY29y
YXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFN0
eWxlR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGb250U2VjdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZm9udDsKKyAgICAgICAgdmFyIHByb3Bl
cnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBmb250RmFtaWx5Um93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmZvbnRGYW1pbHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RF
ZGl0b3IoImZvbnQtZmFtaWx5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGYW1pbHkiKSk7CisK
KyAgICAgICAgZm9udEZhbWlseVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9u
dEZhbWlseS5lbGVtZW50KTsKKworICAgICAgICB2YXIgZm9udFNpemVSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZvbnQtc2l6ZSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2l6ZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJMYXJnZXIiLCAiWFggTGFyZ2UiLCAiWCBMYXJnZSIsICJMYXJnZSIsICJNZWRpdW0i
LCAiU21hbGwiLCAiWCBTbWFsbCIsICJYWCBTbWFsbCIsICJTbWFsbGVyIl0pLCB0aGlzLl91bml0
cy5kZWZhdWx0cyk7CisKKyAgICAgICAgLy8gVE9ETzogSW50ZXJzcGVyc2UgbnVtZXJpY2FsIGZv
bnQtd2VpZ2h0IHZhbHVlcyBiZXR3ZWVuIHRoZSBvdGhlciBrZXl3b3Jkcy4gIFNvbWV0aGluZyBs
aWtlIHRoaXM6CisgICAgICAgIC8vICBbIjkwMCIsICJib2xkZXIiLCAiODAwIiwgImJvbGQiLCAi
NjAwIiwgIjUwMCIsICJub3JtYWwiLCAiMzAwIiwgIjIwMCIsICJsaWdodGVyIiwgIjEwMCJdCisg
ICAgICAgIHByb3BlcnRpZXMuZm9udFdlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkUGlja2VyKCJmb250LXdlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2Vp
Z2h0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkJvbGRlciIsICJCb2xkIiwg
Ik5vcm1hbCIsICJMaWdodGVyIl0pKTsKKworICAgICAgICBmb250U2l6ZVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFNpemUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTaXpl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250V2VpZ2h0LmVsZW1lbnQpOwor
CisgICAgICAgIHZhciBmb250U3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiZm9udC1zdHlsZSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3R5bGUiKSwgWyJJdGFsaWMiLCAiT2JsaXF1ZSIsICJOb3JtYWwiXSk7CisgICAg
ICAgIHByb3BlcnRpZXMuZm9udFZhcmlhbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
S2V5d29yZENoZWNrYm94KCJmb250LXZhcmlhbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZh
cmlhbnQiKSwgIlNtYWxsIENhcHMiLCAiSW1hZ2VzL0ZvbnRWYXJpYW50U21hbGxDYXBzLnN2ZyIp
CisKKyAgICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5m
b250U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMuZm9udFZhcmlhbnQuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5mb250RmFtaWx5XTsK
KworICAgICAgICB2YXIgZm9udEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtmb250RmFtaWx5Um93LCBmb250U2l6ZVJvdywgZm9udFN0eWxlUm93XSk7CisgICAg
ICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2ZvbnRHcm91cF0pOworICAgIH0KKwor
ICAgIF9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3Jv
dXAgPSB0aGlzLl9ncm91cHMudGV4dFNwYWNpbmc7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0g
Z3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgZGVmYXVsdFRleHRLZXl3b3JkcyA9IHRo
aXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vcm1hbCJdKTsKKworICAgICAgICB2YXIg
dGV4dExheW91dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5saW5lSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJsaW5lLWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVp
Z2h0IiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAg
ICAgcHJvcGVydGllcy52ZXJ0aWNhbEFsaWduID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJ2ZXJ0aWNhbC1hbGlnbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QWxpZ24iKSwgWyJCYXNlbGluZSIsICJCb3R0b20iXS5jb25jYXQodGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMsIFsiTWlkZGxlIiwgIlN1YiIsICJTdXBlciIsICJUZXh0IEJvdHRvbSIsICJUZXh0IFRv
cCIsICJUb3AiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0TGF5b3V0
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5saW5lSGVpZ2h0LmVsZW1lbnQpOwor
ICAgICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52ZXJ0
aWNhbEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U3BhY2luZ1JvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5sZXR0
ZXJTcGFjaW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJs
ZXR0ZXItc3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGV0dGVyIiksIGRlZmF1bHRU
ZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53
b3JkU3BhY2luZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgi
d29yZC1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXb3JkIiksIGRlZmF1bHRUZXh0
S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0U3BhY2luZ1Jv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubGV0dGVyU3BhY2luZy5lbGVtZW50KTsK
KyAgICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndv
cmRTcGFjaW5nLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0V2hpdGVzcGFjZVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50
ZXh0SW5kZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0
ZXh0LWluZGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZW50IiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMu
d2hpdGVTcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ3
aGl0ZS1zcGFjZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2hpdGVzcGFjZSIpLCB0aGlzLl9r
ZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb3JtYWwiLCAiTm93cmFwIiwgIlByZSIsICJQcmUg
TGluZSIsICJQcmUgV3JhcCJdKSk7CisKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHRJbmRlbnQuZWxlbWVudCk7CisgICAgICAgIHRl
eHRXaGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aGl0ZVNwYWNl
LmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U3BhY2luZ0dyb3VwID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0TGF5b3V0Um93LCB0ZXh0U3BhY2luZ1Jvdywg
dGV4dFdoaXRlc3BhY2VSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBbdGV4dFNwYWNpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRTaGFkb3dT
ZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hh
ZG93OworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAg
ICAgdmFyIHRleHRTaGFkb3dTaXppbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHZhciB0ZXh0U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ikhvcml6b250YWwiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7Cisg
ICAgICAgIHZhciB0ZXh0U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1i
ZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZlcnRpY2Fs
IiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworCisgICAgICAgIHRl
eHRTaGFkb3dTaXppbmcuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93SC5lbGVtZW50KTsK
KyAgICAgICAgdGV4dFNoYWRvd1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dW
LmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U2hhZG93U3R5bGUgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciB0ZXh0U2hhZG93Q29sb3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoInRleHQtc2hhZG93IiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgdGV4dFNoYWRvd0NvbG9yLmNv
bG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIgdGV4dFNoYWRvd0JsdXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1Bl
cmNlbnQpOworICAgICAgICB0ZXh0U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsK
KworICAgICAgICB0ZXh0U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93
Q29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENo
aWxkKHRleHRTaGFkb3dCbHVyLmVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnRpZXMudGV4dFNo
YWRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0ZXh0
LXNoYWRvdyIsIFt0ZXh0U2hhZG93SCwgdGV4dFNoYWRvd1YsIHRleHRTaGFkb3dCbHVyLCB0ZXh0
U2hhZG93Q29sb3JdKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydGllcyA9IFt0ZXh0U2hhZG93Q29sb3JdOworCisgICAgICAgIHZhciB0ZXh0U2hhZG93R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRTaGFkb3dTaXpp
bmcsIHRleHRTaGFkb3dTdHlsZV0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3Jv
dXAsIFt0ZXh0U2hhZG93R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCYWNrZ3JvdW5k
U3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5i
YWNrZ3JvdW5kU3R5bGU7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGll
czsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYmFja2dyb3VuZC1jb2xv
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMu
YmFja2dyb3VuZEltYWdlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJi
YWNrZ3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpKTsKKworICAg
ICAgICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJh
Y2tncm91bmRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UuZWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGJhY2tncm91bmRTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFNpemVLZXl3b3JkcyA9IHRoaXMuX2tl
eXdvcmRzLmJveE1vZGVsLmNvbmNhdChbIkNvbnRhaW4iLCAiQ292ZXIiXSk7CisgICAgICAgIHZh
ciBiYWNrZ3JvdW5kU2l6ZVggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goImJhY2tncm91bmQtc2l6ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwg
YmFja2dyb3VuZFNpemVLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBi
YWNrZ3JvdW5kU2l6ZVgubWFzdGVyUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIgYmFja2dy
b3VuZFNpemVZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJi
YWNrZ3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBiYWNrZ3Jv
dW5kU2l6ZUtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91
bmRTaXplWS5tYXN0ZXJQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNr
Z3JvdW5kU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVy
KCJiYWNrZ3JvdW5kLXNpemUiLCBbYmFja2dyb3VuZFNpemVYLCBiYWNrZ3JvdW5kU2l6ZVldKTsK
KworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91
bmRTaXplWC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChiYWNrZ3JvdW5kU2l6ZVkuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJhY2tncm91
bmRSZXBlYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5kLXJlcGVhdCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVwZWF0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vIFJlcGVh
dCIsICJSZXBlYXQiLCAiUmVwZWF0IFgiLCAiUmVwZWF0IFkiXSkpOworICAgICAgICBwcm9wZXJ0
aWVzLmJhY2tncm91bmRBdHRhY2htZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoImJhY2tncm91bmQtYXR0YWNobWVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQXR0YWNoIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkZpeGVkIiwgIkxv
Y2FsIiwgIlNjcm9sbCJdKSk7CisKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdC5lbGVtZW50KTsKKyAgICAg
ICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFj
a2dyb3VuZEF0dGFjaG1lbnQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJhY2tncm91bmRQb3Np
dGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
dmFyIGJhY2tncm91bmRQb3NpdGlvblggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlBvc2l0aW9uIFgiKSwgWyJDZW50ZXIiLCAiTGVmdCIsICJSaWdodCJdLCB0aGlzLl91bml0cy5k
ZWZhdWx0cyk7CisgICAgICAgIHZhciBiYWNrZ3JvdW5kUG9zaXRpb25ZID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBZIiksIFsiQm90dG9tIiwgIkNlbnRlciIsICJU
b3AiXSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dy
b3VuZFBvc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmlu
ZXIoImJhY2tncm91bmQtcG9zaXRpb24iLCBbYmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3Vu
ZFBvc2l0aW9uWV0pOworCisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblguZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91
bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblkuZWxl
bWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMg
PSBbcHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3JdOworCisgICAgICAgIHZhciBiYWNrZ3JvdW5k
U3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYmFja2dy
b3VuZFN0eWxlUm93LCBiYWNrZ3JvdW5kU2l6ZVJvdywgYmFja2dyb3VuZFJlcGVhdFJvdywgYmFj
a2dyb3VuZFBvc2l0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91
cCwgW2JhY2tncm91bmRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm9yZGVy
U2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVy
OworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAg
dmFyIGJvcmRlckFsbFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcihbImJvcmRlci10b3Atc3R5bGUiLCAiYm9yZGVyLXJpZ2h0LXN0
eWxlIiwgImJvcmRlci1ib3R0b20tc3R5bGUiLCAiYm9yZGVyLWxlZnQtc3R5bGUiXSAsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJi
b3JkZXItc3R5bGUiOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC13aWR0aCIsICJi
b3JkZXItcmlnaHQtd2lkdGgiLCAiYm9yZGVyLWJvdHRvbS13aWR0aCIsICJib3JkZXItbGVmdC13
aWR0aCJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJv
cmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyV2lkdGgucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci13aWR0aCI7CisKKyAgICAg
ICAgYm9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyU3R5
bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlcldpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJBbGxT
dHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBp
Y2tlcihbImJvcmRlci10b3AtY29sb3IiLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgImJvcmRlci1i
b3R0b20tY29sb3IiLCAiYm9yZGVyLWxlZnQtY29sb3IiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvci5wcm9wZXJ0eVJlZmVy
ZW5jZU5hbWUgPSAiYm9yZGVyLWNvbG9yIjsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRp
dXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXIt
dG9wLWxlZnQtcmFkaXVzIiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0
b20tbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3Vu
aXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMucHJvcGVydHlS
ZWZlcmVuY2VOYW1lID0gImJvcmRlci1yYWRpdXMiOworCisgICAgICAgIGJvcmRlckFsbFN0eWxl
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJDb2xvci5lbGVtZW50KTsKKyAg
ICAgICAgYm9yZGVyQWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
clJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyQWxsUHJvcGVydGllcyA9IFtw
cm9wZXJ0aWVzLmJvcmRlclN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBwcm9wZXJ0aWVz
LmJvcmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1c107CisgICAgICAgIHZhciBib3Jk
ZXJBbGxHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVy
QWxsU2l6ZSwgYm9yZGVyQWxsU3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVyVG9wU2l6ZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5ib3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlj
a2VyKCJib3JkZXItdG9wLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0
aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9w
V2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRl
ci10b3Atd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdv
cmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVy
VG9wU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUuZWxl
bWVudCk7CisgICAgICAgIGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlclRvcFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJUb3BTdHls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5ib3JkZXJUb3BDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBp
Y2tlcigiYm9yZGVyLXRvcC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7
CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3Jk
ZXItdG9wLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAg
IGJvcmRlclRvcFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BD
b2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9y
ZGVyVG9wUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLCBwcm9wZXJ0aWVz
LmJvcmRlclRvcFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJv
cmRlclRvcFJhZGl1c107CisgICAgICAgIHZhciBib3JkZXJUb3BHcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyVG9wU2l6ZSwgYm9yZGVyVG9wU3R5bGVd
KTsKKworICAgICAgICB2YXIgYm9yZGVyUmlnaHRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXJpZ2h0LXN0
eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3Jk
ZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXJpZ2h0LXdpZHRoIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0
aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50KTsKKyAg
ICAgICAgYm9yZGVyUmlnaHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3Jk
ZXJSaWdodFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJSaWdodFN0eWxlID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmJvcmRlclJpZ2h0Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNr
ZXIoImJvcmRlci1yaWdodC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7
CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJi
b3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1
cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJv
cmRlclJpZ2h0Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzLmVsZW1lbnQpOworCisg
ICAgICAgIHZhciBib3JkZXJSaWdodFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJSaWdo
dFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyUmln
aHRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1c107CisgICAgICAgIHZhciBib3Jk
ZXJSaWdodEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3Jk
ZXJSaWdodFNpemUsIGJvcmRlclJpZ2h0U3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVyQm90
dG9tU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkUGlja2VyKCJib3JkZXItYm90dG9tLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyQm90dG9tV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goImJvcmRlci1ib3R0b20td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgYm9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJvdHRvbVNp
emUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLmVsZW1l
bnQpOworCisgICAgICAgIHZhciBib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xv
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLWJvdHRv
bS1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyQm90dG9tUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9t
LXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9r
ZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRl
ckJvdHRvbVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21D
b2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2
YXIgYm9yZGVyQm90dG9tUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxl
LCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNv
bG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1c107CisgICAgICAgIHZhciBib3JkZXJC
b3R0b21Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVy
Qm90dG9tU2l6ZSwgYm9yZGVyQm90dG9tU3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVyTGVm
dFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoImJvcmRlci1sZWZ0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyTGVmdFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJib3JkZXItbGVmdC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwg
dGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAg
ICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVy
TGVmdFN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZh
ciBib3JkZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItbGVmdC1jb2xvciIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cyA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3At
bGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0
U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlckxlZnRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMu
Ym9yZGVyTGVmdFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgcHJvcGVydGllcy5i
b3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1c107CisgICAgICAgIHZh
ciBib3JkZXJMZWZ0R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
W2JvcmRlckxlZnRTaXplLCBib3JkZXJMZWZ0U3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVy
VGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzQ29udHJvbGxlcih7CisgICAgICAgICAgICAiYWxsIjoge3RpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkFsbCIpLCBlbGVtZW50OiBib3JkZXJBbGxHcm91cC5lbGVtZW50LCBwcm9wZXJ0
aWVzOiBib3JkZXJBbGxQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJ0b3AiOiB7dGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIGVsZW1lbnQ6IGJvcmRlclRvcEdyb3VwLmVsZW1l
bnQsIHByb3BlcnRpZXM6IGJvcmRlclRvcFByb3BlcnRpZXN9LAorICAgICAgICAgICAgInJpZ2h0
Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0IiksIGVsZW1lbnQ6IGJvcmRl
clJpZ2h0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyUmlnaHRQcm9wZXJ0aWVzfSwK
KyAgICAgICAgICAgICJib3R0b20iOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90
dG9tIiksIGVsZW1lbnQ6IGJvcmRlckJvdHRvbUdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJv
cmRlckJvdHRvbVByb3BlcnRpZXN9LAorICAgICAgICAgICAgImxlZnQiOiB7dGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBlbGVtZW50OiBib3JkZXJMZWZ0R3JvdXAuZWxlbWVu
dCwgcHJvcGVydGllczogYm9yZGVyTGVmdFByb3BlcnRpZXN9CisgICAgICAgIH0pOworCisgICAg
ICAgIHZhciBoaWdobGlnaHRDb25maWcgPSB7Ym9yZGVyQ29sb3I6IHtyOiAyNTUsIGc6IDIyOSwg
YjogMTUzLCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9hZGRNZXRy
aWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJXaWR0aCwgaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnBy
b3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdp
ZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0
ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVz
LmJvcmRlclJpZ2h0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJDb2xvciwg
cHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciwg
cHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvcl07
CisKKyAgICAgICAgdmFyIGJvcmRlckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFtib3JkZXJUYWJDb250cm9sbGVyLCBib3JkZXJBbGxHcm91cCwgYm9yZGVyVG9w
R3JvdXAsIGJvcmRlclJpZ2h0R3JvdXAsIGJvcmRlckJvdHRvbUdyb3VwLCBib3JkZXJMZWZ0R3Jv
dXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYm9yZGVyR3JvdXBd
KTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVPdXRsaW5lU2VjdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0bGluZTsKKyAgICAgICAgdmFyIHByb3BlcnRp
ZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBvdXRsaW5lU2l6ZVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5v
dXRsaW5lV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
Im91dGxpbmUtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tl
eXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3Bl
cnRpZXMub3V0bGluZU9mZnNldCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveCgib3V0bGluZS1vZmZzZXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9mZnNldCIp
LCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOwor
CisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5v
dXRsaW5lV2lkdGguZWxlbWVudCk7CisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lT2Zmc2V0LmVsZW1lbnQpOworCisgICAgICAgIHZh
ciBvdXRsaW5lU3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZVN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUtleXdvcmRQaWNrZXIoIm91dGxpbmUtc3R5bGUiICwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3Bl
cnRpZXMub3V0bGluZUNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlj
a2VyKCJvdXRsaW5lLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKwor
ICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91
dGxpbmVTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgb3V0bGluZVN0eWxlUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lQ29sb3IuZWxlbWVudCk7CisKKyAgICAgICAgZ3Jv
dXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5vdXRsaW5l
Q29sb3JdOworCisgICAgICAgIHZhciBvdXRsaW5lR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uR3JvdXAoW291dGxpbmVTaXplUm93LCBvdXRsaW5lU3R5bGVSb3ddKTsKKyAg
ICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbb3V0bGluZUdyb3VwXSk7CisgICAg
fQorCisgICAgX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIg
Z3JvdXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93OworICAgICAgICB2YXIgcHJvcGVydGllcyA9
IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1JvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFk
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRp
dG9yKCJib3gtc2hhZG93Iik7CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmVsZW1lbnQu
c3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICBib3hTaGFkb3dSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNoYWRvdy5lbGVtZW50KTsKKworICAgICAgICB2
YXIgYm94U2hhZG93SFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgdmFyIGJveFNoYWRvd0ggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVs
YXRpdmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxl
ZnQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAg
ICAgICAgYm94U2hhZG93SFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0guZWxlbWVu
dCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1ZSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBib3hTaGFkb3dWID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUb3AiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2Vu
dCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93VlJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJv
eFNoYWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd0JsdXJSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBib3hTaGFkb3dC
bHVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hh
ZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRl
ZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBib3hTaGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVy
dHkgPSB0cnVlOworICAgICAgICB2YXIgYm94U2hhZG93U3ByZWFkID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTcHJlYWQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwg
dHJ1ZSk7CisgICAgICAgIGJveFNoYWRvd1NwcmVhZC5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsK
KworICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93
Qmx1ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Qmx1clJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKGJveFNoYWRvd1NwcmVhZC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm94U2hhZG93Q29s
b3JSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZh
ciBib3hTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tl
cigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAg
IGJveFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIgYm94U2hh
ZG93SW5zZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94KCJi
b3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNldCIpLCAiSW5zZXQiLCAiSW1h
Z2VzL0JveFNoYWRvd0luc2V0LnN2ZyIpOworICAgICAgICBib3hTaGFkb3dJbnNldC5vcHRpb25h
bFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dDb2xvclJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKGJveFNoYWRvd0NvbG9yLmVsZW1lbnQpOworICAgICAgICBib3hTaGFkb3dDb2xv
clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0luc2V0LmVsZW1lbnQpOworCisgICAg
ICAgIHZhciBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJveC1zaGFkb3ciLCBbYm94U2hhZG93SCwgYm94U2hh
ZG93ViwgYm94U2hhZG93Qmx1ciwgYm94U2hhZG93U3ByZWFkLCBib3hTaGFkb3dDb2xvciwgYm94
U2hhZG93SW5zZXRdKTsKKworICAgICAgICBmdW5jdGlvbiBub1JlbWFpbmluZ1RyZWVJdGVtcygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIudXBkYXRl
VmFsdWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgYm94U2hhZG93SC5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICBib3hTaGFkb3dWLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJveFNoYWRvd0JsdXIuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93U3By
ZWFkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0NvbG9yLmRpc2FibGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0luc2V0LmRpc2FibGVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5O
b1JlbWFpbmluZ1RyZWVJdGVtcywgbm9SZW1haW5pbmdUcmVlSXRlbXMsIHRoaXMpOworCisgICAg
ICAgIGZ1bmN0aW9uIHNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LnNlbGVjdGVkVHJlZUVsZW1lbnRW
YWx1ZSA9IGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFu
Z2UsIHNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAg
ZnVuY3Rpb24gYm94U2hhZG93SXRlbVNlbGVjdGVkKGV2ZW50KSB7CisgICAgICAgICAgICBib3hT
aGFkb3dQcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4
dCB8fCAiIik7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRF
ZGl0b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwgYm94U2hhZG93SXRlbVNlbGVjdGVkLCB0aGlz
KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFti
b3hTaGFkb3dDb2xvcl07CisKKyAgICAgICAgdmFyIGJveFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm94U2hhZG93Um93LCBib3hTaGFkb3dIUm93LCBib3hT
aGFkb3dWUm93LCBib3hTaGFkb3dCbHVyUm93LCBib3hTaGFkb3dDb2xvclJvd10pOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3hTaGFkb3ddKTsKKyAgICB9CisKKyAg
ICBfcG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAg
PSB0aGlzLl9ncm91cHMudHJhbnNpdGlvbjsKKyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91
cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciB0cmFuc2l0aW9uUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24g
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9y
KCJ0cmFuc2l0aW9uIik7CisgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50LnN0
eWxlLm1hcmdpbkxlZnQgPSAiMTFweCI7CisKKyAgICAgICAgdHJhbnNpdGlvblJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50KTsKKworICAgICAgICB2
YXIgdHJhbnNpdGlvblByb3BlcnR5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKKworICAgICAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5TmFtZUlucHV0KCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0eSIpKTsKKyAgICAgICAgdmFyIHRyYW5zaXRpb25U
aW1pbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigidHJhbnNp
dGlvbi10aW1pbmctZnVuY3Rpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWluZyIpLCBb
IkxpbmVhciIsICJFYXNlIiwgIkVhc2UgSW4iLCAiRWFzZSBPdXQiLCAiRWFzZSBJbiBPdXQiXSk7
CisKKyAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJh
bnNpdGlvblByb3BlcnR5LmVsZW1lbnQpOworICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uVGltaW5nLmVsZW1lbnQpOworCisgICAgICAg
IHZhciB0cmFuc2l0aW9uRHVyYXRpb25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHZhciB0cmFuc2l0aW9uVGltZUtleXdvcmRzID0gWyJzIiwgIm1z
Il07CisgICAgICAgIHZhciB0cmFuc2l0aW9uRHVyYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRyYW5zaXRpb24tZHVyYXRpb24iLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiksIG51bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMpOwor
ICAgICAgICB2YXIgdHJhbnNpdGlvbkRlbGF5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJ0cmFuc2l0aW9uLWRlbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEZWxheSIpLCBudWxsLCB0cmFuc2l0aW9uVGltZUtleXdvcmRzKTsKKyAgICAgICAgdHJhbnNp
dGlvbkRlbGF5Lm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIHRyYW5zaXRpb25E
dXJhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25EdXJhdGlvbi5lbGVtZW50
KTsKKyAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJh
bnNpdGlvbkRlbGF5LmVsZW1lbnQpOworCisgICAgICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHlD
b21iaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0
cmFuc2l0aW9uIiwgW3RyYW5zaXRpb25Qcm9wZXJ0eSwgdHJhbnNpdGlvblRpbWluZywgdHJhbnNp
dGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9uRGVsYXldKTsKKworICAgICAgICBmdW5jdGlvbiBub1Jl
bWFpbmluZ1RyZWVJdGVtcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9w
ZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KCIiKTsKKyAgICAgICAgICAgIHRyYW5z
aXRpb25Qcm9wZXJ0eS5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICB0cmFuc2l0aW9uVGlt
aW5nLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbi5kaXNh
YmxlZCA9IHRydWU7CisgICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXkuZGlzYWJsZWQgPSB0cnVl
OworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlvbi5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5F
dmVudC5Ob1JlbWFpbmluZ1RyZWVJdGVtcywgbm9SZW1haW5pbmdUcmVlSXRlbXMsIHRoaXMpOwor
CisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdGVkdHJhbnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uc2VsZWN0ZWRUcmVl
RWxlbWVudFZhbHVlID0gdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIuc3ludGhlc2l6ZWRWYWx1
ZTsKKyAgICAgICAgfQorICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZh
bHVlRGlkQ2hhbmdlLCBzZWxlY3RlZHRyYW5zaXRpb25JdGVtVmFsdWVDaGFuZ2VkLCB0aGlzKTsK
KworICAgICAgICBmdW5jdGlvbiB0cmFuc2l0aW9uSXRlbVNlbGVjdGVkKGV2ZW50KSB7CisgICAg
ICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dChl
dmVudC5kYXRhLnRleHQgfHwgIiIpOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMudHJh
bnNpdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCB0cmFuc2l0aW9uSXRl
bVNlbGVjdGVkLCB0aGlzKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxl
UHJvcGVydGllcyA9IFt0cmFuc2l0aW9uUHJvcGVydHldOworCisgICAgICAgIHZhciB0cmFuc2l0
aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RyYW5zaXRp
b25Sb3csIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdywgdHJhbnNpdGlvbkR1cmF0aW9uUm93XSk7Cisg
ICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3RyYW5zaXRpb25Hcm91cF0pOwor
ICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURp
c2FibGVkID0gU3ltYm9sKCJ2aXN1YWwtc3R5bGUtc3R5bGUtZGlzYWJsZWQiKTsKK1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExp
c3QgPSBTeW1ib2woInZpc3VhbC1zdHlsZS1pbml0aWFsLXByb3BlcnR5LXNlY3Rpb24tdGV4dCIp
OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvcGVydHlSZWZlcmVu
Y2VJbmZvID0geworICAgICJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQiOiAiSWYgYSBiYWNrZ3JvdW5k
LWltYWdlIGlzIHNwZWNpZmllZCwgdGhlIGJhY2tncm91bmQtYXR0YWNobWVudCBDU1MgcHJvcGVy
dHkgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoYXQgaW1hZ2UncyBwb3NpdGlvbiBpcyBmaXhlZCB3aXRo
aW4gdGhlIHZpZXdwb3J0LCBvciBzY3JvbGxzIGFsb25nIHdpdGggaXRzIGNvbnRhaW5pbmcgYmxv
Y2suIiwKKyAgICAiYmFja2dyb3VuZC1jb2xvciI6ICJUaGUgYmFja2dyb3VuZC1jb2xvciBDU1Mg
cHJvcGVydHkgc2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50LCBlaXRoZXIg
dGhyb3VnaCBhIGNvbG9yIHZhbHVlIG9yIHRoZSBrZXl3b3JkIHRyYW5zcGFyZW50LiIsCisgICAg
ImJhY2tncm91bmQtaW1hZ2UiOiAiVGhlIENTUyBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IHNl
dHMgb25lIG9yIHNldmVyYWwgYmFja2dyb3VuZCBpbWFnZXMgZm9yIGFuIGVsZW1lbnQuIFRoZSBp
bWFnZXMgYXJlIGRyYXduIG9uIHN0YWNraW5nIGNvbnRleHQgbGF5ZXJzIG9uIHRvcCBvZiBlYWNo
IG90aGVyLiBUaGUgZmlyc3QgbGF5ZXIgc3BlY2lmaWVkIGlzIGRyYXduIGFzIGlmIGl0IGlzIGNs
b3Nlc3QgdG8gdGhlIHVzZXIuIiwKKyAgICAiYmFja2dyb3VuZC1wb3NpdGlvbiI6ICJUaGUgYmFj
a2dyb3VuZC1wb3NpdGlvbiBDU1MgcHJvcGVydHkgc2V0cyB0aGUgaW5pdGlhbCBwb3NpdGlvbiwg
cmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQgcG9zaXRpb24gbGF5ZXIgZGVmaW5lZCBieSBiYWNr
Z3JvdW5kLW9yaWdpbiBmb3IgZWFjaCBkZWZpbmVkIGJhY2tncm91bmQgaW1hZ2UuIiwKKyAgICAi
YmFja2dyb3VuZC1yZXBlYXQiOiAiVGhlIGJhY2tncm91bmQtcmVwZWF0IENTUyBwcm9wZXJ0eSBk
ZWZpbmVzIGhvdyBiYWNrZ3JvdW5kIGltYWdlcyBhcmUgcmVwZWF0ZWQuIEEgYmFja2dyb3VuZCBp
bWFnZSBjYW4gYmUgcmVwZWF0ZWQgYWxvbmcgdGhlIGhvcml6b250YWwgYXhpcywgdGhlIHZlcnRp
Y2FsIGF4aXMsIGJvdGggYXhlcywgb3Igbm90IHJlcGVhdGVkIGF0IGFsbC4iLAorICAgICJiYWNr
Z3JvdW5kLXNpemUiOiAiVGhlIGJhY2tncm91bmQtc2l6ZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVz
IHRoZSBzaXplIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlcy4gVGhlIHNpemUgb2YgdGhlIGltYWdl
IGNhbiBiZSBmdWxseSBjb25zdHJhaW5lZCBvciBvbmx5IHBhcnRpYWxseSBpbiBvcmRlciB0byBw
cmVzZXJ2ZSBpdHMgaW50cmluc2ljIHJhdGlvLiIsCisgICAgImJvcmRlci1ib3R0b20tY29sb3Ii
OiAiVGhlIGJvcmRlci1ib3R0b20tY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9m
IHRoZSBib3R0b20gYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2Vz
IHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXMgYm9yZGVyLWNvbG9yIG9yIGJvcmRlci1ib3R0
b20gYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItYm90
dG9tLWxlZnQtcmFkaXVzIjogIlRoZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIENTUyBwcm9w
ZXJ0eSBzZXRzIHRoZSByb3VuZGluZyBvZiB0aGUgYm90dG9tLWxlZnQgY29ybmVyIG9mIHRoZSBl
bGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlm
IG9uZSBvZiB0aGUgdmFsdWUgaXMgMCBubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVy
IGlzIHNxdWFyZS4iLAorICAgICJib3JkZXItYm90dG9tLXN0eWxlIjogIlRoZSBib3JkZXItYm90
dG9tLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSBib3R0b20g
Ym9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1ib3R0b20td2lkdGgiOiAiVGhlIGJvcmRl
ci1ib3R0b20td2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3R0b20g
Ym9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1jb2xvciI6ICJUaGUgYm9yZGVyLWNvbG9y
IENTUyBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBmb3Igc2V0dGluZyB0aGUgY29sb3Igb2YgdGhl
IGZvdXIgc2lkZXMgb2YgYW4gZWxlbWVudCdzIGJvcmRlcjogYm9yZGVyLXRvcC1jb2xvciwgYm9y
ZGVyLXJpZ2h0LWNvbG9yLCBib3JkZXItYm90dG9tLWNvbG9yLCBib3JkZXItbGVmdC1jb2xvciIs
CisgICAgImJvcmRlci1sZWZ0LWNvbG9yIjogIlRoZSBib3JkZXItbGVmdC1jb2xvciBDU1MgcHJv
cGVydHkgc2V0cyB0aGUgY29sb3Igb2YgdGhlIGJvdHRvbSBib3JkZXIgb2YgYW4gZWxlbWVudC4g
Tm90ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBDU1MgcHJvcGVydGllc8KgYm9y
ZGVyLWNvbG9yIG9yIGJvcmRlci1sZWZ0IGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFi
bGUuIiwKKyAgICAiYm9yZGVyLWxlZnQtc3R5bGUiOiAiVGhlIGJvcmRlci1sZWZ0LXN0eWxlIENT
UyBwcm9wZXJ0eSBzZXRzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSBsZWZ0IGJvcmRlciBvZiBhIGJv
eC4iLAorICAgICJib3JkZXItbGVmdC13aWR0aCI6ICJUaGUgYm9yZGVyLWxlZnQtd2lkdGggQ1NT
IHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBsZWZ0IGJvcmRlciBvZiBhIGJveC4iLAor
ICAgICJib3JkZXItcmFkaXVzIjogIlRoZSBib3JkZXItcmFkaXVzIENTUyBwcm9wZXJ0eSBhbGxv
d3MgV2ViIGF1dGhvcnMgdG8gZGVmaW5lIGhvdyByb3VuZGVkIGJvcmRlciBjb3JuZXJzIGFyZS4g
VGhlIGN1cnZlIG9mIGVhY2ggY29ybmVyIGlzIGRlZmluZWQgdXNpbmcgb25lIG9yIHR3byByYWRp
aSwgZGVmaW5pbmcgaXRzIHNoYXBlOiBjaXJjbGUgb3IgZWxsaXBzZS4iLAorICAgICJib3JkZXIt
cmlnaHQtY29sb3IiOiAiVGhlIGJvcmRlci1yaWdodC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0
aGUgY29sb3Igb2YgdGhlIHJpZ2h0IGJvcmRlciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4g
bWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzwqAgYm9yZGVyLWNvbG9yIG9y
IGJvcmRlci1yaWdodCBhcmUgbW9yZSBjb252ZW5pZW50IGFuZCBwcmVmZXJhYmxlLiIsCisgICAg
ImJvcmRlci1yaWdodC1zdHlsZSI6ICJUaGUgYm9yZGVyLXJpZ2h0LXN0eWxlIENTUyBwcm9wZXJ0
eSBzZXRzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSByaWdodCBib3JkZXIgb2YgYSBib3guIiwKKyAg
ICAiYm9yZGVyLXJpZ2h0LXdpZHRoIjogIlRoZSBib3JkZXItcmlnaHQtd2lkdGggQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSByaWdodCBib3JkZXIgb2YgYSBib3guIiwKKyAgICAi
Ym9yZGVyLXN0eWxlIjogIlRoZSBib3JkZXItc3R5bGUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQg
cHJvcGVydHkgZm9yIHNldHRpbmcgdGhlIGxpbmUgc3R5bGUgZm9yIGFsbCBmb3VyIHNpZGVzIG9m
IHRoZSBlbGVtZW50cyBib3JkZXIuIiwKKyAgICAiYm9yZGVyLXRvcC1jb2xvciI6ICJUaGUgYm9y
ZGVyLXRvcC1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgY29sb3Igb2YgdGhlIHRvcCBib3Jk
ZXIgb2YgYW4gZWxlbWVudC4gTm90ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBD
U1MgcHJvcGVydGllcyBib3JkZXItY29sb3Igb3IgYm9yZGVyLXRvcCBhcmUgbW9yZSBjb252ZW5p
ZW50IGFuZCBwcmVmZXJhYmxlLiIsCisgICAgImJvcmRlci10b3AtbGVmdC1yYWRpdXMiOiAiVGhl
IGJvcmRlci10b3AtbGVmdC1yYWRpdXMgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5kaW5nIG9m
IHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQuIFRoZSByb3VuZGluZyBjYW4gYmUg
YSBjaXJjbGUgb3IgYW4gZWxsaXBzZSwgb3IgaWYgb25lIG9mIHRoZSB2YWx1ZSBpcyAwLG5vIHJv
dW5kaW5nIGlzIGRvbmUgYW5kIHRoZSBjb3JuZXIgaXMgc3F1YXJlLiIsCisgICAgImJvcmRlci10
b3AtcmlnaHQtcmFkaXVzIjogIlRoZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyBDU1MgcHJvcGVy
dHkgc2V0cyB0aGUgcm91bmRpbmcgb2YgdGhlIHRvcC1yaWdodCBjb3JuZXIgb2YgdGhlIGVsZW1l
bnQuIFRoZSByb3VuZGluZyBjYW4gYmUgYSBjaXJjbGUgb3IgYW4gZWxsaXBzZSwgb3IgaWYgb25l
IG9mIHRoZSB2YWx1ZSBpcyAwIG5vIHJvdW5kaW5nIGlzIGRvbmUgYW5kIHRoZSBjb3JuZXIgaXMg
c3F1YXJlLiIsCisgICAgImJvcmRlci10b3Atc3R5bGUiOiAiVGhlIGJvcmRlci10b3Atc3R5bGUg
Q1NTIHByb3BlcnR5IHNldHMgdGhlIGxpbmUgc3R5bGUgb2YgdGhlIHRvcCBib3JkZXIgb2YgYSBi
b3guIiwKKyAgICAiYm9yZGVyLXRvcC13aWR0aCI6ICJUaGUgYm9yZGVyLXRvcC13aWR0aCBDU1Mg
cHJvcGVydHkgc2V0cyB0aGUgd2lkdGggb2YgdGhlIHRvcCBib3JkZXIgb2YgYSBib3guIiwKKyAg
ICAiYm9yZGVyLXdpZHRoIjogIlRoZSBib3JkZXItd2lkdGggcHJvcGVydHkgc2V0cyB0aGUgd2lk
dGggb2YgdGhlIGJvcmRlciBvZiBhIGJveC4gVXNpbmcgdGhlIHNob3J0aGFuZCBwcm9wZXJ0eSBi
b3JkZXIgaXMgb2Z0ZW4gbW9yZSBjb252ZW5pZW50LiIsCisgICAgImJvdHRvbSI6ICJUaGUgYm90
dG9tIENTUyBwcm9wZXJ0eSBwYXJ0aWNpcGF0ZXMgaW4gc3BlY2lmeWluZyB0aGUgcG9zaXRpb24g
b2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLAorICAgICJib3gtc2hhZG93IjogIlRoZSBib3gtc2hh
ZG93IHByb3BlcnR5IGRlc2NyaWJlcyBvbmUgb3IgbW9yZSBzaGFkb3cgZWZmZWN0cyBhcyBhIGNv
bW1hLXNlcGFyYXRlZCBsaXN0LiBJdCBlbmFibGVzIHlvdSB0byBjYXN0IGEgZHJvcCBzaGFkb3cg
ZnJvbSB0aGUgZnJhbWUgb2YgYWxtb3N0IGFueSBlbGVtZW50LiBJZiBhIGJvcmRlci1yYWRpdXMg
aXMgc3BlY2lmaWVkIG9uIHRoZSBlbGVtZW50IHdpdGggYSBib3ggc2hhZG93LCB0aGUgYm94IHNo
YWRvdyB0YWtlcyBvbiB0aGUgc2FtZSByb3VuZGVkIGNvcm5lcnMuIFRoZSB6LW9yZGVyaW5nIG9m
IG11bHRpcGxlIGJveCBzaGFkb3dzIGlzIHRoZSBzYW1lIGFzIG11bHRpcGxlIHRleHQgc2hhZG93
cyAodGhlIGZpcnN0IHNwZWNpZmllZCBzaGFkb3cgaXMgb24gdG9wKS4iLAorICAgICJib3gtc2l6
aW5nIjogIlRoZSBib3gtc2l6aW5nIHByb3BlcnR5IGlzIHVzZWQgdG8gYWx0ZXIgdGhlIGRlZmF1
bHQgQ1NTIGJveCBtb2RlbCB1c2VkIHRvIGNhbGN1bGF0ZSB3aWR0aHMgYW5kIGhlaWdodHMgb2Yg
ZWxlbWVudHMuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGlzIHByb3BlcnR5IHRvIGVtdWxhdGUg
dGhlIGJlaGF2aW9yIG9mIGJyb3dzZXJzIHRoYXQgZG8gbm90IGNvcnJlY3RseSBzdXBwb3J0IHRo
ZSBDU1MgYm94IG1vZGVsIHNwZWNpZmljYXRpb24uIiwKKyAgICAiY2xlYXIiOiAiVGhlIGNsZWFy
IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBhbiBlbGVtZW50IGNhbiBiZSBuZXh0IHRv
IGZsb2F0aW5nIGVsZW1lbnRzIHRoYXQgcHJlY2VkZSBpdCBvciBtdXN0IGJlIG1vdmVkIGRvd24g
KGNsZWFyZWQpIGJlbG93IHRoZW0uIFRoZSBjbGVhciBwcm9wZXJ0eSBhcHBsaWVzIHRvIGJvdGgg
ZmxvYXRpbmcgYW5kIG5vbi1mbG9hdGluZyBlbGVtZW50cy4iLAorICAgICJjb2xvciI6ICJUaGUg
Y29sb3IgcHJvcGVydHkgc2V0cyB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiBhbiBlbGVtZW50J3Mg
dGV4dCBjb250ZW50LCBhbmQgaXRzIGRlY29yYXRpb25zLiBJdCBkb2Vzbid0IGFmZmVjdCBhbnkg
b3RoZXIgY2hhcmFjdGVyaXN0aWMgb2YgdGhlIGVsZW1lbnQ7IGl0IHNob3VsZCByZWFsbHkgYmUg
Y2FsbGVkIHRleHQtY29sb3IgYW5kIHdvdWxkIGhhdmUgYmVlbiBuYW1lZCBzbywgc2F2ZSBmb3Ig
aGlzdG9yaWNhbCByZWFzb25zIGFuZCBpdHMgYXBwZWFyYW5jZSBpbiBDU1MgTGV2ZWwgMS4iLAor
ICAgICJjdXJzb3IiOiAiVGhlIGN1cnNvciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBtb3Vz
ZSBjdXJzb3IgZGlzcGxheWVkIHdoZW4gdGhlIG1vdXNlIHBvaW50ZXIgaXMgb3ZlciBhbiBlbGVt
ZW50LiIsCisgICAgImRpcmVjdGlvbiI6ICJTZXQgdGhlIGRpcmVjdGlvbiBDU1MgcHJvcGVydHkg
dG8gbWF0Y2ggdGhlIGRpcmVjdGlvbiBvZiB0aGUgdGV4dDogcnRsIGZvciBsYW5ndWFnZXMgd3Jp
dHRlbiBmcm9tIHJpZ2h0LXRvLWxlZnQgKGxpa2UgSGVicmV3IG9yIEFyYWJpYykgdGV4dCBhbmQg
bHRyIGZvciBvdGhlciBzY3JpcHRzLiBUaGlzIGlzIHR5cGljYWxseSBkb25lIGFzIHBhcnQgb2Yg
dGhlIGRvY3VtZW50IChlLmcuLCB1c2luZyB0aGUgZGlyIGF0dHJpYnV0ZSBpbiBIVE1MKSByYXRo
ZXIgdGhhbiB0aHJvdWdoIGRpcmVjdCB1c2Ugb2YgQ1NTLiIsCisgICAgImRpc3BsYXkiOiAiVGhl
IGRpc3BsYXkgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgdHlwZSBvZiByZW5kZXJpbmcgYm94
IHVzZWQgZm9yIGFuIGVsZW1lbnQuIEluIEhUTUwsIGRlZmF1bHQgZGlzcGxheSBwcm9wZXJ0eSB2
YWx1ZXMgYXJlIHRha2VuIGZyb20gYmVoYXZpb3JzIGRlc2NyaWJlZCBpbiB0aGUgSFRNTCBzcGVj
aWZpY2F0aW9ucyBvciBmcm9tIHRoZSBicm93c2VyL3VzZXIgZGVmYXVsdCBzdHlsZXNoZWV0LiBU
aGUgZGVmYXVsdCB2YWx1ZSBpbiBYTUwgaXMgaW5saW5lLiIsCisgICAgImZsZXgtYmFzaXMiOiAi
VGhlIGZsZXgtYmFzaXMgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZmxleCBiYXNpcyB3aGlj
aCBpcyB0aGUgaW5pdGlhbCBtYWluIHNpemUgb2YgYSBmbGV4IGl0ZW0uIFRoaXMgcHJvcGVydHkg
ZGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgY29udGVudC1ib3ggdW5sZXNzIHNwZWNpZmllZCBv
dGhlcndpc2UgdXNpbmcgYm94LXNpemluZy4iLAorICAgICJmbGV4LWRpcmVjdGlvbiI6ICJUaGUg
ZmxleC1kaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBob3cgZmxleCBpdGVtcyBhcmUg
cGxhY2VkIGluIHRoZSBmbGV4IGNvbnRhaW5lciBkZWZpbmluZyB0aGUgbWFpbiBheGlzIGFuZCB0
aGUgZGlyZWN0aW9uIChub3JtYWwgb3IgcmV2ZXJzZWQpLiIsCisgICAgImZsZXgtZ3JvdyI6ICJU
aGUgZmxleC1ncm93IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGZsZXggZ3JvdyBmYWN0b3Ig
b2YgYSBmbGV4IGl0ZW0uIEl0IHNwZWNpZmllcyB3aGF0IGFtb3VudCBvZiBzcGFjZSBpbnNpZGUg
dGhlIGZsZXggY29udGFpbmVyIHRoZSBpdGVtIHNob3VsZCB0YWtlIHVwLiIsCisgICAgImZsZXgt
c2hyaW5rIjogIlRoZSBmbGV4LXNocmluayBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBmbGV4
IHNocmluayBmYWN0b3Igb2YgYSBmbGV4IGl0ZW0uIiwKKyAgICAiZmxleC13cmFwIjogIlRoZSBD
U1MgZmxleC13cmFwIHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIGZsZXggaXRlbXMgYXJlIGZv
cmNlZCBpbnRvIGEgc2luZ2xlIGxpbmUgb3IgY2FuIGJlIHdyYXBwZWQgb250byBtdWx0aXBsZSBs
aW5lcy4gSWYgd3JhcHBpbmcgaXMgYWxsb3dlZCwgdGhpcyBwcm9wZXJ0eSBhbHNvIGVuYWJsZXMg
eW91IHRvIGNvbnRyb2wgdGhlIGRpcmVjdGlvbiBpbiB3aGljaCBsaW5lcyBhcmUgc3RhY2tlZC4i
LAorICAgICJmbG9hdCI6ICJUaGUgZmxvYXQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGF0IGFu
IGVsZW1lbnQgc2hvdWxkIGJlIHRha2VuIGZyb20gdGhlIG5vcm1hbCBmbG93IGFuZCBwbGFjZWQg
YWxvbmcgdGhlIGxlZnQgb3IgcmlnaHQgc2lkZSBvZiBpdHMgY29udGFpbmVyLCB3aGVyZSB0ZXh0
IGFuZCBpbmxpbmUgZWxlbWVudHMgd2lsbCB3cmFwIGFyb3VuZCBpdC4iLAorICAgICJmb250LWZh
bWlseSI6ICJUaGUgZm9udC1mYW1pbHkgQ1NTIHByb3BlcnR5IGxldHMgeW91IHNwZWNpZnkgYSBw
cmlvcml0aXplZCBsaXN0IG9mIGZvbnQgZmFtaWx5IG5hbWVzIGFuZC9vciBnZW5lcmljIGZhbWls
eSBuYW1lcyBmb3IgdGhlIHNlbGVjdGVkIGVsZW1lbnQuIFZhbHVlcyBhcmUgc2VwYXJhdGVkIGJ5
IGEgY29tbWEgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBhbHRlcm5hdGl2ZXMuIFRoZSBicm93
c2VyIHdpbGwgc2VsZWN0IHRoZSBmaXJzdCBmb250IG9uIHRoZSBsaXN0IHRoYXQgaXMgaW5zdGFs
bGVkIG9uIHRoZSBjb21wdXRlciBvciB0aGF0IGNhbiBiZSBkb3dubG9hZGVkIHVzaW5nIGEgQGZv
bnQtZmFjZSBhdC1ydWxlLiIsCisgICAgImZvbnQtc2l6ZSI6ICJUaGUgZm9udC1zaXplIENTUyBw
cm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGZvbnQuIFNldHRpbmcgdGhlIGZvbnQg
c2l6ZSBtYXksIGluIHR1cm4sIGNoYW5nZSB0aGUgc2l6ZSBvZiBvdGhlciBpdGVtcywgc2luY2Ug
aXQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSB2YWx1ZSBvZiB0aGUgZW0gYW5kIGV4wqBcbiA8bGVu
Z3RoPiB1bml0cy4iLAorICAgICJmb250LXN0eWxlIjogIlRoZSBmb250LXN0eWxlIENTUyBwcm9w
ZXJ0eSBsZXRzIHlvdSBzZWxlY3QgaXRhbGljIG9yIG9ibGlxdWUgZmFjZXMgd2l0aGluIGEgZm9u
dC1mYW1pbHkuIiwKKyAgICAiZm9udC12YXJpYW50IjogIlRoaXMgcHJvcGVydHkgYWN0cyBhcyBh
IHNob3J0aGFuZCBmb3IgdGhlIGxvbmdoYW5kIHByb3BlcnRpZXM6IGZvbnQtdmFyaWFudC1jYXBz
LCBmb250LXZhcmlhbnQtbnVtZXJpYywgZm9udC12YXJpYW50LWFsdGVybmF0ZXMsIGZvbnQtdmFy
aWFudC1saWdhdHVyZXMsIGFuZCBmb250LXZhcmlhbnQtZWFzdC1hc2lhbi4gWW91IGNhbiBhbHNv
IHNldCB0aGUgQ1NTIExldmVsIDIgKFJldmlzaW9uIDEpIHZhbHVlcyBvZiBmb250LXZhcmlhbnQs
ICh0aGF0IGlzLCBub3JtYWwgb3Igc21hbGwtY2FwcyksIGJ5IHVzaW5nIHRoZSBmb250IHNob3J0
aGFuZC4iLAorICAgICJmb250LXdlaWdodCI6ICJUaGUgZm9udC13ZWlnaHQgQ1NTIHByb3BlcnR5
IHNwZWNpZmllcyB0aGUgd2VpZ2h0IG9yIGJvbGRuZXNzIG9mIHRoZSBmb250LiBTb21lIGZvbnRz
IGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBub3JtYWwgYW5kIGJvbGQuIiwKKyAgICAiaGVpZ2h0Ijog
IlRoZSBoZWlnaHQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgaGVpZ2h0IG9mIHRoZSBjb250
ZW50IGFyZWEgb2YgYW4gZWxlbWVudC4gVGhlIGNvbnRlbnQgYXJlYSBpcyBpbnNpZGUgdGhlIHBh
ZGRpbmcsIGJvcmRlciwgYW5kIG1hcmdpbiBvZiB0aGUgZWxlbWVudC4iLAorICAgICJsZWZ0Ijog
IlRoZSBsZWZ0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgcGFydCBvZiB0aGUgcG9zaXRpb24gb2Yg
cG9zaXRpb25lZCBlbGVtZW50cy4iLAorICAgICJsZXR0ZXItc3BhY2luZyI6ICJUaGUgbGV0dGVy
LXNwYWNpbmcgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBzcGFjaW5nIGJlaGF2aW9yIGJldHdlZW4g
dGV4dCBjaGFyYWN0ZXJzLiIsCisgICAgImxpbmUtaGVpZ2h0IjogIk9uIGJsb2NrIGxldmVsIGVs
ZW1lbnRzLCB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGhl
aWdodCBvZiBsaW5lIGJveGVzIHdpdGhpbiB0aGUgZWxlbWVudC4iLAorICAgICJtYXJnaW4tYm90
dG9tIjogIlRoZSBtYXJnaW4tYm90dG9tIENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMg
dGhlIG1hcmdpbiBzcGFjZSByZXF1aXJlZCBvbiB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIEEg
bmVnYXRpdmUgdmFsdWUgaXMgYWxzbyBhbGxvd2VkLiIsCisgICAgIm1hcmdpbi1sZWZ0IjogIlRo
ZSBtYXJnaW4tbGVmdCBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbWFyZ2luIHNwYWNlIHJlcXVpcmVk
IG9uIHRoZSBsZWZ0IHNpZGUgb2YgYSBib3ggYXNzb2NpYXRlZCB3aXRoIGFuIGVsZW1lbnQuIEEg
bmVnYXRpdmUgdmFsdWUgaXMgYWxzbyBhbGxvd2VkLiIsCisgICAgIm1hcmdpbi1yaWdodCI6ICJU
aGUgbWFyZ2luLXJpZ2h0IENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIG1hcmdp
biBzcGFjZSByZXF1aXJlZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiBhbiBlbGVtZW50LiBBIG5lZ2F0
aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXJnaW4tdG9wIjogIlRoZSBtYXJn
aW4tdG9wIENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIG1hcmdpbiBzcGFjZSBy
ZXF1aXJlZCBvbiB0aGUgdG9wIG9mIGFuIGVsZW1lbnQuIEEgbmVnYXRpdmUgdmFsdWUgaXMgYWxz
byBhbGxvd2VkLiIsCisgICAgIm1heC1oZWlnaHQiOiAiVGhlIG1heC1oZWlnaHQgcHJvcGVydHkg
aXMgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gaGVpZ2h0IG9mIGFuIGVsZW1lbnQuIEl0IHByZXZl
bnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSBoZWlnaHQgcHJvcGVydHkgZnJvbSBiZWNvbWluZyBs
YXJnZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtYXgtaGVpZ2h0LiIsCisgICAgIm1h
eC13aWR0aCI6ICJUaGUgbWF4LXdpZHRoIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtYXhp
bXVtIHdpZHRoIG9mIGEgZ2l2ZW4gZWxlbWVudC4gSXQgcHJldmVudHMgdGhlIHVzZWQgdmFsdWUg
b2YgdGhlIHdpZHRoIHByb3BlcnR5IGZyb20gYmVjb21pbmcgbGFyZ2VyIHRoYW4gdGhlIHZhbHVl
IHNwZWNpZmllZCBmb3IgbWF4LXdpZHRoLiIsCisgICAgIm1pbi1oZWlnaHQiOiAiVGhlIG1pbi1o
ZWlnaHQgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIGEgZ2l2
ZW4gZWxlbWVudC4gSXQgcHJldmVudHMgdGhlIHVzZWQgdmFsdWUgb2YgdGhlIGhlaWdodCBwcm9w
ZXJ0eSBmcm9tIGJlY29taW5nIHNtYWxsZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBt
aW4taGVpZ2h0LiIsCisgICAgIm1pbi13aWR0aCI6ICJUaGUgbWluLXdpZHRoIHByb3BlcnR5IGlz
IHVzZWQgdG8gc2V0IHRoZSBtaW5pbXVtIHdpZHRoIG9mIGEgZ2l2ZW4gZWxlbWVudC4gSXQgcHJl
dmVudHMgdGhlIHVzZWQgdmFsdWUgb2YgdGhlIHdpZHRoIHByb3BlcnR5IGZyb20gYmVjb21pbmcg
c21hbGxlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1pbi13aWR0aC4iLAorICAgICJv
cGFjaXR5IjogIlRoZSBvcGFjaXR5IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHRyYW5zcGFy
ZW5jeSBvZiBhbiBlbGVtZW50LCB0aGF0IGlzLCB0aGUgZGVncmVlIHRvIHdoaWNoIHRoZSBiYWNr
Z3JvdW5kIGJlaGluZCB0aGUgZWxlbWVudCBpcyBvdmVybGFpZC4iLAorICAgICJvcmRlciI6ICJU
aGUgQ1NTIG9yZGVyIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgb3JkZXIgdXNlZCB0byBsYXkgb3V0
IGZsZXggaXRlbXMgaW4gdGhlaXIgZmxleCBjb250YWluZXIuIEVsZW1lbnRzIGFyZSBsYWlkIG91
dCBpbiB0aGXCoGFzY2VuZGluZyBvcmRlciBvZiB0aGUgb3JkZXIgdmFsdWUuIEVsZW1lbnRzIHdp
dGggdGhlIHNhbWUgb3JkZXIgdmFsdWUgYXJlIGxhaWQgb3V0IGluIHRoZSBvcmRlciBpbiB3aGlj
aCB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuIiwKKyAgICAib3V0bGluZS1jb2xvciI6
ICJUaGUgb3V0bGluZS1jb2xvciBDU1MgcHJvcGVydHkgc2V0cyB0aGUgY29sb3Igb2YgdGhlIG91
dGxpbmUgb2YgYW4gZWxlbWVudC4gQW4gb3V0bGluZSBpcyBhIGxpbmUgdGhhdCBpcyBkcmF3biBh
cm91bmQgZWxlbWVudHMsIG91dHNpZGUgdGhlIGJvcmRlciBlZGdlLCB0byBtYWtlIHRoZSBlbGVt
ZW50IHN0YW5kIG91dC4iLAorICAgICJvdXRsaW5lLW9mZnNldCI6ICJUaGUgb3V0bGluZS1vZmZz
ZXQgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHNwYWNlIGJldHdlZW4gYW4gb3V0bGluZSBh
bmQgdGhlIGVkZ2Ugb3IgYm9yZGVyIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5l
IHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZS4i
LAorICAgICJvdXRsaW5lLXN0eWxlIjogIlRoZSBvdXRsaW5lLXN0eWxlIENTUyBwcm9wZXJ0eSBp
cyB1c2VkIHRvIHNldCB0aGUgc3R5bGUgb2YgdGhlIG91dGxpbmUgb2YgYW4gZWxlbWVudC4gQW4g
b3V0bGluZSBpcyBhIGxpbmUgdGhhdCBpcyBkcmF3biBhcm91bmQgZWxlbWVudHMsIG91dHNpZGUg
dGhlIGJvcmRlciBlZGdlLCB0byBtYWtlIHRoZSBlbGVtZW50IHN0YW5kIG91dC4iLAorICAgICJv
dXRsaW5lLXdpZHRoIjogIlRoZSBvdXRsaW5lLXdpZHRoIENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRv
IHNldCB0aGUgd2lkdGggb2YgdGhlIG91dGxpbmUgb2YgYW4gZWxlbWVudC4gQW4gb3V0bGluZSBp
cyBhIGxpbmUgdGhhdCBpcyBkcmF3biBhcm91bmQgZWxlbWVudHMsIG91dHNpZGUgdGhlIGJvcmRl
ciBlZGdlLCB0byBtYWtlIHRoZSBlbGVtZW50IHN0YW5kIG91dDoiLAorICAgICJvdmVyZmxvdyI6
ICJUaGUgb3ZlcmZsb3cgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdG8gY2xpcCBjb250ZW50
LCByZW5kZXIgc2Nyb2xsYmFycyBvciBqdXN0IGRpc3BsYXkgY29udGVudCB3aGVuIGl0IG92ZXJm
bG93cyBpdHMgYmxvY2sgbGV2ZWwgY29udGFpbmVyLiIsCisgICAgInBhZGRpbmctYm90dG9tIjog
IlRoZSBwYWRkaW5nLWJvdHRvbSBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBo
ZWlnaHQgb2YgdGhlIHBhZGRpbmcgYXJlYSBhdCB0aGUgYm90dG9tIG9mIGFuIGVsZW1lbnQuIFRo
ZSBwYWRkaW5nIGFyZWEgaXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVs
ZW1lbnQgYW5kIGl0J3MgYm9yZGVyLiBDb250cmFyeSB0byBtYXJnaW4tYm90dG9tIHZhbHVlcywg
bmVnYXRpdmUgdmFsdWVzIG9mIHBhZGRpbmctYm90dG9tIGFyZSBpbnZhbGlkLiIsCisgICAgInBh
ZGRpbmctbGVmdCI6ICJUaGUgcGFkZGluZy1sZWZ0IENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50
IHNldHMgdGhlIHBhZGRpbmcgc3BhY2UgcmVxdWlyZWQgb24gdGhlIGxlZnQgc2lkZSBvZiBhbiBl
bGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50
IG9mIHRoZSBlbGVtZW50IGFuZCBpdCdzIGJvcmRlci4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBub3Qg
YWxsb3dlZC4iLAorICAgICJwYWRkaW5nLXJpZ2h0IjogIlRoZSBwYWRkaW5nLXJpZ2h0IENTUyBw
cm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIHBhZGRpbmcgc3BhY2UgcmVxdWlyZWQgb24g
dGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3Bh
Y2UgYmV0d2VlbiB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXRzIGJvcmRlci4gTmVn
YXRpdmUgdmFsdWVzIGFyZSBub3QgYWxsb3dlZC4iLAorICAgICJwYWRkaW5nLXRvcCI6ICJUaGUg
cGFkZGluZy10b3AgQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgcGFkZGluZyBz
cGFjZSByZXF1aXJlZCBvbiB0aGUgdG9wIG9mIGFuIGVsZW1lbnQuIFRoZSBwYWRkaW5nIGFyZWEg
aXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYW5kIGl0cyBi
b3JkZXIuIENvbnRyYXJ5IHRvIG1hcmdpbi10b3AgdmFsdWVzLCBuZWdhdGl2ZSB2YWx1ZXMgb2Yg
cGFkZGluZy10b3AgYXJlIGludmFsaWQuIiwKKyAgICAicG9zaXRpb24iOiAiVGhlIHBvc2l0aW9u
IENTUyBwcm9wZXJ0eSBjaG9vc2VzIGFsdGVybmF0aXZlIHJ1bGVzIGZvciBwb3NpdGlvbmluZyBl
bGVtZW50cywgZGVzaWduZWQgdG8gYmUgdXNlZnVsIGZvciBzY3JpcHRlZCBhbmltYXRpb24gZWZm
ZWN0cy4iLAorICAgICJyaWdodCI6ICJUaGUgcmlnaHQgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyBw
YXJ0IG9mIHRoZSBwb3NpdGlvbiBvZiBwb3NpdGlvbmVkIGVsZW1lbnRzLiIsCisgICAgInRleHQt
YWxpZ24iOiAiVGhlIHRleHQtYWxpZ24gQ1NTIHByb3BlcnR5IGRlc2NyaWJlcyBob3cgaW5saW5l
IGNvbnRlbnQgbGlrZSB0ZXh0IGlzIGFsaWduZWQgaW4gaXRzIHBhcmVudCBibG9jayBlbGVtZW50
LiB0ZXh0LWFsaWduIGRvZXMgbm90IGNvbnRyb2wgdGhlIGFsaWdubWVudCBvZiBibG9jayBlbGVt
ZW50cyBpdHNlbGYsIG9ubHkgdGhlaXIgaW5saW5lIGNvbnRlbnQuIiwKKyAgICAidGV4dC1kZWNv
cmF0aW9uIjogIlRoZSB0ZXh0LWRlY29yYXRpb24gQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0
IHRoZSB0ZXh0IGZvcm1hdHRpbmcgdG8gdW5kZXJsaW5lLCBvdmVybGluZSwgbGluZS10aHJvdWdo
IG9yIGJsaW5rLiBVbmRlcmxpbmUgYW5kIG92ZXJsaW5lIGRlY29yYXRpb25zIGFyZSBwb3NpdGlv
bmVkIHVuZGVyIHRoZSB0ZXh0LCBsaW5lLXRocm91Z2ggb3ZlciBpdC4iLAorICAgICJ0ZXh0LWlu
ZGVudCI6ICJUaGUgdGV4dC1pbmRlbnQgcHJvcGVydHkgc3BlY2lmaWVzIGhvdyBtdWNoIGhvcml6
b250YWwgc3BhY2Ugc2hvdWxkIGJlIGxlZnQgYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZp
cnN0IGxpbmUgb2YgdGhlIHRleHQgY29udGVudCBvZiBhbiBlbGVtZW50LiIsCisgICAgInRleHQt
c2hhZG93IjogIlRoZSB0ZXh0LXNoYWRvdyBwcm9wZXJ0eSBhZGRzIHNoYWRvd3MgdG8gdGV4dC4g
SXQgYWNjZXB0cyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNoYWRvd3MgdG8gYmUgYXBwbGll
ZCB0byB0aGUgdGV4dCBhbmQgdGV4dC1kZWNvcmF0aW9ucyBvZiB0aGUgZWxlbWVudC4iLAorICAg
ICJ0ZXh0LXRyYW5zZm9ybSI6ICJUaGUgdGV4dC10cmFuc2Zvcm0gQ1NTIHByb3BlcnR5IHNwZWNp
ZmllcyBob3cgdG8gY2FwaXRhbGl6ZSBhbiBlbGVtZW50J3MgdGV4dC4gSXQgY2FuIGJlIHVzZWQg
dG8gbWFrZSB0ZXh0IGFwcGVhciBpbiBhbGwtdXBwZXJjYXNlIG9yIGFsbC1sb3dlcmNhc2UsIG9y
IHdpdGggZWFjaCB3b3JkIGNhcGl0YWxpemVkLiIsCisgICAgInRvcCI6ICJUaGUgdG9wIENTUyBw
cm9wZXJ0eSBzcGVjaWZpZXMgcGFydCBvZiB0aGUgcG9zaXRpb24gb2YgcG9zaXRpb25lZCBlbGVt
ZW50cy4gSXQgaGFzIG5vIGVmZmVjdCBvbiBub24tcG9zaXRpb25lZCBlbGVtZW50cy4iLAorICAg
ICJ0cmFuc2l0aW9uLWRlbGF5IjogIlRoZSB0cmFuc2l0aW9uLWRlbGF5IHByb3BlcnR5IHNwZWNp
ZmllcyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZXR3ZWVuIGEgY2hhbmdlIGJlaW5nIHJl
cXVlc3RlZCB0byBhIHByb3BlcnR5IHRoYXQgaXMgdG8gYmUgdHJhbnNpdGlvbmVkIGFuZCB0aGUg
c3RhcnQgb2YgdGhlIHRyYW5zaXRpb24gZWZmZWN0LiIsCisgICAgInRyYW5zaXRpb24tZHVyYXRp
b24iOiAiVGhlIHRyYW5zaXRpb24tZHVyYXRpb24gQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIHNlY29uZHMgb3IgbWlsbGlzZWNvbmRzIGEgdHJhbnNpdGlvbiBhbmltYXRpb24g
c2hvdWxkIHRha2UgdG8gY29tcGxldGUuIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyAwcywgbWVh
bmluZyB0aGF0IG5vIGFuaW1hdGlvbiB3aWxsIG9jY3VyLiIsCisgICAgInRyYW5zaXRpb24tcHJv
cGVydHkiOiAiVGhlIHRyYW5zaXRpb24tcHJvcGVydHkgQ1NTIHByb3BlcnR5IGlzIHVzZWQgdG8g
c3BlY2lmeSB0aGUgbmFtZXMgb2YgQ1NTIHByb3BlcnRpZXMgdG8gd2hpY2ggYSB0cmFuc2l0aW9u
IGVmZmVjdCBzaG91bGQgYmUgYXBwbGllZC4iLAorICAgICJ0cmFuc2l0aW9uLXRpbWluZy1mdW5j
dGlvbiI6ICJUaGUgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gcHJvcGVydHkgaXMgdXNlZCB0
byBkZXNjcmliZSBob3cgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgb2YgdGhlIENTU8KgcHJvcGVy
dGllcyBiZWluZyBhZmZlY3RlZCBieSBhIHRyYW5zaXRpb24gZWZmZWN0IGFyZSBjYWxjdWxhdGVk
LiBUaGlzIGluIGVzc2VuY2UgbGV0cyB5b3UgZXN0YWJsaXNoIGFuIGFjY2VsZXJhdGlvbiBjdXJ2
ZSwgc28gdGhhdCB0aGUgc3BlZWQgb2YgdGhlIHRyYW5zaXRpb24gY2FuIHZhcnkgb3ZlciBpdHMg
ZHVyYXRpb24uIiwKKyAgICAidmVydGljYWwtYWxpZ24iOiAiVGhlIHZlcnRpY2FsLWFsaWduIENT
UyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHZlcnRpY2FsIGFsaWdubWVudCBvZiBhbiBpbmxpbmUg
b3IgdGFibGUtY2VsbCBib3guIiwKKyAgICAidmlzaWJpbGl0eSI6ICJUaGUgdmlzaWJpbGl0eSBw
cm9wZXJ0eSBjYW4gYmUgdXNlZCB0byBoaWRlIGFuIGVsZW1lbnQgd2hpbGUgbGVhdmluZyB0aGUg
c3BhY2Ugd2hlcmUgaXQgd291bGQgaGF2ZSBiZWVuLiBJdCBjYW4gYWxzbyBoaWRlIHJvd3Mgb3Ig
Y29sdW1ucyBvZiBhIHRhYmxlLiIsCisgICAgIndoaXRlLXNwYWNlIjogIlRoZSB3aGl0ZS1zcGFj
ZSBwcm9wZXJ0eSBpcyB1c2VkIHRvIGRlc2NyaWJlIGhvdyB3aGl0ZXNwYWNlIGluc2lkZSB0aGUg
ZWxlbWVudCBpcyBoYW5kbGVkLiIsCisgICAgIndpZHRoIjogIlRoZSB3aWR0aCBDU1MgcHJvcGVy
dHkgc3BlY2lmaWVzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCBhcmVhIG9mIGFuIGVsZW1lbnQu
IFRoZSBjb250ZW50IGFyZWEgaXMgaW5zaWRlIHRoZSBwYWRkaW5nLCBib3JkZXIsIGFuZCBtYXJn
aW4gb2YgdGhlIGVsZW1lbnQuIiwKKyAgICAid29yZC1zcGFjaW5nIjogIlRoZSB3b3JkLXNwYWNp
bmfCoHByb3BlcnR5IHNwZWNpZmllcyBzcGFjaW5nIGJlaGF2aW9yIGJldHdlZW4gdGFncyBhbmQg
d29yZHMuIiwKKyAgICAiei1pbmRleCI6ICJUaGUgei1pbmRleCBwcm9wZXJ0eSBzcGVjaWZpZXMg
dGhlIHotb3JkZXIgb2YgYW4gZWxlbWVudCBhbmQgaXRzIGRlc2NlbmRhbnRzLiBXaGVuIGVsZW1l
bnRzIG92ZXJsYXAsIHotb3JkZXIgZGV0ZXJtaW5lcyB3aGljaCBvbmUgY292ZXJzIHRoZSBvdGhl
ci4gQW4gZWxlbWVudCB3aXRoIGEgbGFyZ2VyIHotaW5kZXggZ2VuZXJhbGx5IGNvdmVycyBhbiBl
bGVtZW50IHdpdGggYSBsb3dlciBvbmUuIgorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258329</attachid>
            <date>2015-08-05 18:16:30 -0700</date>
            <delta_ts>2015-08-06 22:57:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150805181621.patch</filename>
            <type>text/plain</type>
            <size>92688</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMxZjQwNGQ3ZGIzN2NiOTJiZDY0YmU5NTAzYmU0
OGUyMDAwNWVkZGMuLmU5YmYyZTY4NjI5MDM3MmMzOWI2N2I5YmUyMmUxM2U2NjVjMzEzY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE1LTA4LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01h
aW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24u
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZS5zZXQgY29sbGFwc2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuZ2V0IGV4cGFuZGVkQnlV
c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUuX2hl
YWRlckVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmNzczogQWRkZWQuCisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmhlYWRlcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhl
YWRlciA+IHNwYW4pOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbi5tb2RpZmllZCA+
IC5oZWFkZXIgPiBzcGFuOjphZnRlcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9u
ID4gLmNvbnRlbnQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50
IC5ncm91cCA+IC5yb3cpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250
ZW50IC5ncm91cCA+IC5yb3c6bGFzdC1jaGlsZCk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJv
dyk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFs
ID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4g
LnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS10aXRsZSk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1z
dHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRl
bnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyOm5vdCgu
bGF5b3V0LXJldmVyc2VkKTpsYXN0LWNoaWxkKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5v
dCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pKToKKyAgICAgICAgKC5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0
aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pIGlucHV0KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzOiBBZGRlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnJlZnJlc2gp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5fZ2VuZXJhdGVTZWN0aW9uLnJlcGxhY2VEYXNoV2l0aENhcGl0YWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fZ2VuZXJhdGVTZWN0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3VwZGF0ZVNlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlQXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnR5RWRpdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3NlY3Rpb25Nb2RpZmllZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9pbml0
aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVTZWN0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGlz
cGxheVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVBvc2l0
aW9uU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9wb3B1bGF0ZUZsb2F0U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VMaXN0
ZW5lcnMub25FZGl0b3JNb3VzZW92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzLm9uRWRp
dG9yTW91c2VvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGltZW5z
aW9uc1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVNYXJnaW5TZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUGFkZGluZ1Nl
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVGbGV4Ym94U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRleHRTdHlsZVNlY3Rp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fcG9wdWxhdGVGb250U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQmFja2dyb3VuZFN0eWxlU2Vj
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9wb3B1bGF0ZUJvcmRlclNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVPdXRsaW5lU2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24ubm9SZW1haW5pbmdUcmVlSXRlbXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxh
dGVCb3hTaGFkb3dTZWN0aW9uLnNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9w
b3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24uYm94U2hhZG93SXRlbVNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRl
Qm94U2hhZG93U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uLm5vUmVtYWluaW5n
VHJlZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24uc2VsZWN0ZWR0cmFuc2l0aW9u
SXRlbVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uLnRyYW5zaXRpb25J
dGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbik6CisKIDIwMTUtMDgtMDUg
IE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJFR1JFU1NJT04gKHIxODc5MDApOiBCcmVha3BvaW50IGNvbnRleHQgbWVudSBpcyBicm9r
ZW4gaW4gRGVidWdnZXIgdGFiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA0
YzBmNGZjMTQ2MWI5MzU0OGNjYjk2NDI1NWE2NWYxNmY4OTEyODgxLi5hYzMzNTlhZmY2YzVhMWU5
NjM3YmIwYjUwMTg4MWNjNWQ3YTliNGM5IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDMz
NDMKemNtYSk4WkVSQ3o2bl5gPyhYR183UXBQT3A3KXkxdSt8OVl7JDE+UTVWPEpmQm0+Vk44UWRy
OWhZckN9RF8lTzFXCnpLbXYqaDtsIXdmOzFHWEkhRUVGT2k0b1dtX1JEMCt7LXtXaGtIa2IwamMh
SWw1R0oxVV9POUk5WnM/RXAtZ35+QAp6PVh8ezlvRXdqSS0rcndoSWNMaWN2bUdxVG1he2pRbl5v
ZylJamR6fDQ1PWArKEZjRm5qR1d1THc1QmZCZ1VvdDMKekA/d0R9ZkM2M2spcipRQHEkZWBlUT9q
YCNTI1kwe3ZkTWdremleaHskTE92MSpkbmBPVU01V1NPV2JLNilXUH1fCnpJZ3F7NzI5Yzhge0xH
VFlNclZMK1hQcyM8ZGhpJVE9U1A9S1liQVEhaDBleFZPZCMpMmlQczVIMXN8K1ZwT2RIdwp6Xmls
MWhPb2MoTTVCZHZ4OUVjbU9Ebm5SRHpDY1pfJnNCJH4jYVJhblc9SUcrdGdlLWNOUVNgMVNSfkMj
aVZpaVYKem0zK0V6bTBeK2NuMGg9VyRPM2NfIzVefGNAaHMzNjFueyZEJXVXRCpRRHBETkN1SiRm
QkN5SV5fKkRNalgmPDsmCnorVUFzcnFuQ0t4eWYkWH1OZ0pRI2M4SXRJKmZ5YyVlYSZmX2xfPlNQ
R1B5ZUIhcSNtUG9vQH56QF85N1ZjfWhMMwp6KGxCYzdCODtoYiooZE9PeVBAMkIjcHhFMmM0SXk7
QXtnXk5lN1heMU80QnwhTjQ4XkRhRGx2MSNDQmRAUWc7RUwKel9NWD5heGxyb1dkNXAySFZ+LT8k
cyZxV3BSV0hnWkZeM2VEUyVUeih0MmdRbStlcmR5UEJfZGpwJHA7KllyJDxSCnpGUSlHaDI5T2Zn
cWRHfiFmenJDTns0U0sqbjwwVHp1b242RmFOU093RFQybkxFQ0N+VmMwNEdJRi12fVRTQyQqLQp6
SX1WYzxeWDBkeGk8UihBcVpNfVNiVkl2JUUoVSpuMzAhV3BBVDFCcD82PTdESmMjWjAzZlhYRDNI
TFd6d01CSHoKengpRV9FcTc7V3YhUlVHOy1AZmtkaW1Jcm4+VWdUdzB8TUpCbHsqY0hvb1lXIzNO
Unk7PXt5UT0qSGc4SDFhd0MkCnpfQC0hJSE5QHAjUUFIaVd3ZGpHTTMkJmx+QkhGfVB5MjJwYWdM
ZmZAfEh7O19NUmwxMmxVWTZ8ZWFGeSVJJkNyKQp6IyQzTEpDbFlrV3F2RWQxalVjVjhvKzMjdGdX
R3ExbDt2bmRyNUg4fEJgQm85P15QMjJ2ajRhcTM8c0BkMUBxV0oKekpKZ3k9Yz5SR3F5YDVzSztJ
VmF0MmdkZjZhc01IVTdKZk53YiVjY2QycXZqbSorJHteVlRWY1BMRnV3R1huJUxhCnprLSQpNzhj
YWE8MUJufm55SjJ1cFMqcnkkcGh9NDFxUyprR1ojKGNtSSNJIUk5aTF7X2NILUZYPX5eb3h6S1RI
Owp6YmVlQj1gY2Z3WkRVPTk0QCFfWU1YVk8pfXF7TWY5ZThiYGxBKFR3S2V4eEZ1NUpTVUliMEd+
S1k3cHVRQG5mQ0sKejk4bmBNKWF1OV81cWB3a0s/NEZWZXtTWFhoSk0hSWJ0UUwjRHU/YGQmM2o8
JFB6Qz8pM3lZP2grRjJZaVAjTE1TCno+S0NtfUBGPUAqPWdjZGI0bWNYSW8wPD59NGg8TTlFYVJU
REllSiROVF9mMEdHQF8wezZIKmN8X0NpSXVjdkRFWgp6Kj03fjRJcnVPKEVKO2VzWnIxKUVJXz07
LUMtSTdyPiQtdl9eZWN2dUJtZEdPM1AtQXtfYD50ZThZZk1pVVMqLTcKentidTFGKHFadDUjTldK
ZChnO1BEbU8lTGhGVDgpciN0b05OPTxNbCoqTm4jYCkzfHJrM2lmZDtjdCl7empoRkRaCnpNemFp
ZCtMfTdrTzBnTFIyRm0kNjt8SD07THdYWW1WdDZVIXJ5b3BZeUUrbFJtXkNXVE5sTVZjZWNUODR6
a2dYNQp6WDhVMDVNfDwqI2lLK2c8c0xeNTdBa21TMEI1fT5OTnNYJTtIRXw4VjZlPGdTNk5YQ0FY
X01pKCo5WX14SC08dEMKemFkZDYhQ3g9ME4hYFJKZ0s3OH04N0dgYykmOD4obmZrTD5Ba3FDXzV3
a2NfUj56I1lxUH1aezQrPTc1ZilYZkBUCnoocUdCZnxHTExtSyt9UEkrbzN8emcwdSh+bSVUK0tQ
PkIqTEZ3bD0lJERjV1RWKXs4OVJCdV9UWEBQeFBzLUFCXwp6X3wpSygxKjJBI2BCYVg0YG1ieCtW
djAxSzkhIWhIPnF3O3FRRSp8VFJebkloSHx2VThrdzhId3Zid0ZMSTUyb3QKelRHPVlzVG97ZWVu
eU4mUiMpSEFYZVQ1WDRGZ0FPZDRWa3dlTGt5Y09SUzxoPDtZQU5FOHRpSXdsfld0K0FFK3A2Cno2
SmUkYU0jR1ZzaFdocXJAUyl+ZUE0cmRHRT5jJVI4JTkxKGw+bnhoUD0xPlRaTVZ1MUtAKyhjby15
Km9PcH5VYwp6KSs0JTVBPyNuWUhnKTNSWmg0M2lBYkpuVm9vMDVlUW0mdSFRbEFGLWVfTEg1YzMw
WXFZMF5FfVlXdmB+NTZWM2UKcVFPZVkjWGxZUEtNWnB0MDw8KTw8cDZ6MmsqbSVmYyMlRlIrO1c5
ZyE8JVBiLXA/PzllMm4+KF8KCmRlbHRhIDQxNgp6Y21WO1IwYmw7Z3hkaHoqMUYqM1l2LT1XbTAr
WGl+OG5lcTVnYWVhNTh4RkkjOHVrVVZgeWp2cWxWYz11diRyS0kKejEreShINShKWkxGcGBzUkdq
Tm1qRkMzRl5Hb3JJdUhNOWU+UzJANTl2dD50NDFoY0o3VyZATXxRVmYlOGJzJj1xCnpRVl40Q2Jy
ekdhYnRzYiRSMGZtM1F3V28zYnJ6RnJpdz1fdVFWXjRDYnJpRmtRRmEyOGBCVjsqdHlDaERpQjFm
Jgp6cEgjM1VsV2xxa3ZtPCY4MSsjc0J4JnlPQ2dwPiVnQUJ+eT52bG8mTzFoYUxQMV9HMXluNT90
d25iLXhCc2h8diMKemNieUtDJClGNmdlVzF0JnYoPX1kMGtnTk0qYmJCM3hLTlhTeGwqJG15Nl4k
QlVBemhibGZBdTJ2c2I8ZDFoYTkmCnoreWojdCRQQlp1JDNfOEBXeXV0aW8ha251VmFhfDV2bnxq
cDFDeGM9OGsydzI0NzE3OEd6R0lxKkA2al5LalJYVQp6JilXPk1IUklMQGxVZUxXditlOHowaDhW
QzdQREZJd2dJelVAU1gmLVVHP2Ukdig1T3YzNnNoQzVTTT1nMGF+fFAKejB8NWpFeDk8cjdHNlQy
UzRGU3t3dys5Z2NPYXIlQjYjKk9wbW13RGMrP1F0PDBUaD40N3koU1Q9QDxjNDBoZURKCkswa2ZC
NjkwNndoTTZzXmAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKaW5kZXggMmZiMjE5ZWJjMDFjNzdjMDU1YmI5NjA5NGRkNDU0YmY2YmViZGQ0Yi4uZDU2
OWJkNmJiZDg1MDRkNzk2YWM3MWRhNTg0ZWY1ZGZmNjBiMDM0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMTU5LDYgKzE1OSwxOSBAQAog
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRva2VuVmlldy5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVFbGVtZW50
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZVZp
ZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0
eWxlQ29sb3JQaWNrZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLmNzcyI+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVU
YWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0
LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JM
aW5rLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxT
dHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5jc3MiPgorICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uY3Nz
Ij4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udHJvbGxlcnMvQ29kZU1p
cnJvckNvbXBsZXRpb25Db250cm9sbGVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yRHJhZ1RvQWRqdXN0TnVtYmVyQ29udHJvbGxl
ci5jc3MiPgpAQCAtNTM1LDYgKzU0OCwyNiBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBl
VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9UeXBlVHJl
ZVZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFs
U3R5bGVTZWxlY3RvclNlY3Rpb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9WaXN1YWxTdHlsZVNlbGVjdG9ySXRlbS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRv
ckxpbmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZUNvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5TGlz
dEl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtl
eXdvcmRDaGVja2JveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3Vh
bFN0eWxlS2V5d29yZEljb25MaXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlkZXIuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5TmFtZUlu
cHV0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVVUkxJ
bnB1dC5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQW5ub3Rh
dG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJv
ckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KIApAQCAtNTY4LDYgKzYwMSw3IEBACiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVmlzdWFsU3R5bGVDb21wbGV0
aW9uc0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTWFp
bi5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcwppbmRleCAyM2U3MTJmZmRjNDI3ZjA3N2YxZjM3OWRlMmI1MzlmNTE0YTU4ZTFmLi44
ZTk3NTU5NTA3MTE1NTgzMWFkYzRlNzNkYzMwZDJmMDQ4YmQ3ZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC02OSwxMiArNjksMTMgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0
YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsK
ICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
UnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5fbWV0cmljc1N0eWxl
RGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwo
dGhpcyk7CisgICAgICAgIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0
eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQsIHRoaXMu
X2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAKLSAgICAgICAgdGhpcy5fcGFuZWxzID0gW3RoaXMu
X2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWws
IHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbF07Ci0gICAgICAgIHRoaXMuX3BhbmVsTmF2
aWdhdGlvbkluZm8gPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9u
SW5mbywgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5f
bWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvXTsKKyAgICAgICAgdGhpcy5f
cGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fdmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm9dOworICAgICAgICB0aGlzLl9wYW5l
bE5hdmlnYXRpb25JbmZvID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdh
dGlvbkluZm8sIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8sIHRo
aXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fdmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm9dOwogCiAgICAgICAgIHRoaXMuX2xhc3RT
ZWxlY3RlZFNlY3Rpb25TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNl
bGVjdGVkLXN0eWxlLWRldGFpbHMtcGFuZWwiLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVs
Lm5hdmlnYXRpb25JbmZvLmlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmluZGV4
IDg0YjNhMzk3MTg5NzZkZGIxOGNlOGRjNzc3NjkyYzY0NThiN2UwMDEuLmQ4YTI0ZWVkNGVjMmFk
Y2QzNGQ2NjE2MDI0NmFjMWM5ZjAxMDk5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBAIC02
MSw2ICs2MSw3IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNT
ZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2NvbGxh
cHNlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0
YWlscy1zZWN0aW9uLWNvbGxhcHNlZCIsICEhZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7
CiAgICAgICAgIHRoaXMuY29sbGFwc2VkID0gdGhpcy5fY29sbGFwc2VkU2V0dGluZy52YWx1ZTsK
KyAgICAgICAgdGhpcy5fZXhwYW5kZWRCeVVzZXIgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKQEAgLTExNSw2ICsxMTYsMTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0g
Y2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAg
ICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0uZWxl
bWVudCk7CiAgICAgfQogCisgICAgZ2V0IGV4cGFuZGVkQnlVc2VyKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9leHBhbmRlZEJ5VXNlcjsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfaGVhZGVyRWxlbWVudENsaWNrZWQoZXZlbnQpCkBAIC0xMjIsNyArMTI4LDkgQEAgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNj
ZW5kYW50KHRoaXMuX29wdGlvbnNFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDsKKyAgICAgICAgdmFyIGNvbGxh
cHNlZCA9IHRoaXMuY29sbGFwc2VkOworICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICFjb2xsYXBz
ZWQ7CisgICAgICAgIHRoaXMuX2V4cGFuZGVkQnlVc2VyID0gY29sbGFwc2VkOwogCiAgICAgICAg
IHRoaXMuX2VsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzYmZjODJm
OTgzNWZiMjAwMzIxZTYwNzM1ZmQ3MTUzYjcxMzVjOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5jc3MKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNl
Y3Rpb24gPiAuaGVhZGVyIHsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisuc2lkZWJh
ciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAu
ZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4geworICAgIGRpc3BsYXk6IGZsZXg7Cit9
CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWls
cy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9kaWZpZWQgPiAuaGVhZGVyID4gc3Bhbjo6YWZ0
ZXIgeworICAgIHdpZHRoOiA3cHg7CisgICAgaGVpZ2h0OiA3cHg7CisgICAgbWFyZ2luOiA0cHgg
NnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2wo
MjEyLCA5MiUsIDU0JSk7CisgICAgb3BhY2l0eTogMC41OworICAgIGNvbnRlbnQ6ICIiOworfQor
Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgeworICAgIG1hcmdpbi10b3A6IDVw
eDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5k
ZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cg
eworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29u
dGVudCAuZ3JvdXAgPiAucm93Omxhc3QtY2hpbGQgeworICAgIHBhZGRpbmctYm90dG9tOiAzcHg7
Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93LnZp
c3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93IHsKKyAgICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xp
ZCBsaWdodGdyZXk7CisgICAgbWFyZ2luLWJvdHRvbTogNXB4OworICAgIHBhZGRpbmctYm90dG9t
OiAycHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAu
cm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXRpdGxlIHsKKyAgICB3aWR0aDogNTVweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwu
ZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2Vj
dGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNv
bnRhaW5lcjpub3QoLmxheW91dC1yZXZlcnNlZCk6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLXJp
Z2h0OiAxMXB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rv
ci1zZWN0aW9uKSB7CisgICAgb3BhY2l0eTogMC41OworICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2Fi
bGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9u
KSBpbnB1dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyY2I5Y2NkMjc4ZTc0YWY1MGZjMzA4
ZTVlMjEwNWE5YzM5MTAzOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMCww
ICsxLDExMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwgPSBjbGFzcyBWaXN1YWxTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5TdHlsZURldGFpbHNQYW5lbAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAgIHsK
KyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJ2aXN1YWwiLCAidmlzdWFsIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdHlsZXMgXHUyMDE0IFZpc3VhbCIpKTsKKworICAgICAgICBXZWJJbnNwZWN0
b3IucHJvcGVydHlSZWZlcmVuY2VJbmZvVGVtcCA9IHt9OworICAgICAgICB0aGlzLl9jdXJyZW50
UnVsZSA9IG51bGw7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSB7fTsKKyAgICAgICAgdGhp
cy5fZ3JvdXBzID0ge307CisgICAgICAgIHRoaXMuX2tleXdvcmRzID0ge307CisgICAgICAgIHRo
aXMuX3VuaXRzID0ge307CisgICAgICAgIHRoaXMuX2F1dG9jb21wbGV0aW9uUHJvcGVydHlFZGl0
b3JzID0ge307CisKKyAgICAgICAgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMgPSBbIkluaGVyaXQi
LCAiSW5pdGlhbCJdOworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCA9IHRoaXMuX2tl
eXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkF1dG8iXSk7CisgICAgICAgIHRoaXMuX2tleXdvcmRz
LmJvcmRlclN0eWxlID0geworICAgICAgICAgICAgYmFzaWM6IHRoaXMuX2tleXdvcmRzLmRlZmF1
bHRzLmNvbmNhdChbIk5vbmUiLCAiSGlkZGVuIiwgIlNvbGlkIl0pLAorICAgICAgICAgICAgYWR2
YW5jZWQ6IFsiRGFzaGVkIiwgIkRvdHRlZCIsICJEb3VibGUiLCAiR3Jvb3ZlIiwgIkhpZGRlbiIs
ICJJbnNldCIsICJOb25lIiwgIk91dHNldCIsICJSaWRnZSIsICJTb2xpZCJdCisgICAgICAgIH07
CisgICAgICAgIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoID0gdGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMuY29uY2F0KFsiTWVkaXVtIiwgIlRoaWNrIiwgIlRoaW4iXSk7CisKKyAgICAgICAgdGhp
cy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCA9IHsKKyAgICAgICAgICAgIGJhc2ljOiBbInB4
IiwgImVtIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyJjaCIsICJjbSIsICJleCIsICJpbiIs
ICJtbSIsICJwYyIsICJwdCIsICJyZW0iLCAidmgiLCAidnciLCAidm1heCIsICJ2bWluIl0KKyAg
ICAgICAgfTsKKyAgICAgICAgdGhpcy5fdW5pdHMuZGVmYXVsdHMgPSB7CisgICAgICAgICAgICBi
YXNpYzogWyIlIl0uY29uY2F0KHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQuYmFzaWMp
LAorICAgICAgICAgICAgYWR2YW5jZWQ6IHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQu
YWR2YW5jZWQKKyAgICAgICAgfTsKKworICAgICAgICAvLyBTZWxlY3RvciBTZWN0aW9uCisgICAg
ICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVT
ZWxlY3RvclNlY3Rpb24odGhpcyk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVu
dC5TZWxlY3RvckNoYW5nZWQsIHRoaXMuX3VwZGF0ZVNlY3Rpb25zLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvclNlY3Rpb24uZWxlbWVudCk7
CisKKyAgICAgICAgLy8gTGF5b3V0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0
aW9uKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNwbGF5IikpOworICAgICAg
ICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJQb3NpdGlvbiIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbG9hdCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQgYW5kIENsZWFyIikpOworICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oImRpbWVuc2lvbnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVu
c2lvbnMiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigibWFyZ2luIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJNYXJnaW4iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlv
bigicGFkZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFkZGluZyIpKTsKKyAgICAgICAg
dGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbGV4Ym94IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
bGV4Ym94IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmxheW91dCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb24oImxheW91dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5
b3V0IiksIFt0aGlzLl9ncm91cHMuZGlzcGxheS5zZWN0aW9uLCB0aGlzLl9ncm91cHMucG9zaXRp
b24uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsb2F0LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5kaW1l
bnNpb25zLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5tYXJnaW4uc2VjdGlvbiwgdGhpcy5fZ3JvdXBz
LnBhZGRpbmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsZXhib3guc2VjdGlvbl0pOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmxheW91dC5lbGVtZW50
KTsKKworICAgICAgICAvLyBUZXh0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0
aW9uKCJ0ZXh0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAg
ICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmb250IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b250IikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQtc3BhY2luZyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3BhY2luZyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93IikpOwor
CisgICAgICAgIHRoaXMuX3NlY3Rpb25zLnRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uKCJ0ZXh0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUZXh0IiksIFt0aGlzLl9ncm91
cHMudGV4dFN0eWxlLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mb250LnNlY3Rpb24sIHRoaXMuX2dy
b3Vwcy50ZXh0U3BhY2luZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMudGV4dFNoYWRvdy5zZWN0aW9u
XSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMudGV4
dC5lbGVtZW50KTsKKworICAgICAgICAvLyBCYWNrZ3JvdW5kIFNlY3Rpb24KKyAgICAgICAgdGhp
cy5fZ2VuZXJhdGVTZWN0aW9uKCJiYWNrZ3JvdW5kLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3JkZXIiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvcmRlciIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJvdXRsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRsaW5lIikpOworICAg
ICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNoYWRvdyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYmFja2dyb3VuZCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQmFja2dyb3VuZCIpLCBbdGhpcy5fZ3JvdXBzLmJhY2tncm91bmRTdHlsZS5z
ZWN0aW9uLCB0aGlzLl9ncm91cHMuYm9yZGVyLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5vdXRsaW5l
LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5ib3hTaGFkb3cuc2VjdGlvbl0pOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmJhY2tncm91bmQuZWxlbWVudCk7
CisKKyAgICAgICAgLy8gQW5pbWF0aW9uIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJ0cmFuc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2l0aW9uIikp
OworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24oImFuaW1hdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0
aW9uIiksIFt0aGlzLl9ncm91cHMudHJhbnNpdGlvbi5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMuYW5pbWF0aW9uLmVsZW1lbnQpOwor
ICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgcmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkK
KyAgICB7CisgICAgICAgIGlmIChzaWduaWZpY2FudENoYW5nZSkgeworICAgICAgICAgICAgdGhp
cy5fc2VsZWN0b3JTZWN0aW9uLnVwZGF0ZSh0aGlzLl9ub2RlU3R5bGVzKTsKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNlY3Rpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBzdXBlci5yZWZy
ZXNoKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2dlbmVyYXRlU2VjdGlvbihp
ZCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBpZiAoIWlkIHx8ICFkaXNwbGF5TmFtZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmdW5jdGlvbiByZXBsYWNlRGFzaFdpdGhD
YXBpdGFsKG1hdGNoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2gucmVwbGFj
ZSgiLSIsICIiKS50b1VwcGVyQ2FzZSgpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGNhbWVs
Q2FzZUlkID0gaWQucmVwbGFjZSgvLVxiXHcvZywgcmVwbGFjZURhc2hXaXRoQ2FwaXRhbCk7CisK
KyAgICAgICAgdGhpcy5fZ3JvdXBzW2NhbWVsQ2FzZUlkXSA9IHsKKyAgICAgICAgICAgIHNlY3Rp
b246IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oaWQsIGRpc3BsYXlOYW1lLCBbXSks
CisgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fQorICAgICAgICB9OworCisgICAgICAgIHZhciBw
b3B1bGF0ZUZ1bmN0aW9uID0gdGhpc1siX3BvcHVsYXRlIiArIGNhbWVsQ2FzZUlkLmNhcGl0YWxp
emUoKSArICJTZWN0aW9uIl07CisgICAgICAgIHBvcHVsYXRlRnVuY3Rpb24uY2FsbCh0aGlzKTsK
KyAgICB9CisKKyAgICBfdXBkYXRlU2VjdGlvbnMoZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
Ll9jdXJyZW50UnVsZSA9IHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5jdXJyZW50UnVsZSgpOworICAg
ICAgICBpZiAoIXRoaXMuX2N1cnJlbnRSdWxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHZhciBkaXNhYmxlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJs
ZWQiLCB0aGlzLl9jdXJyZW50UnVsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuU3R5bGVEaXNhYmxlZF0pOworICAgICAgICBpZiAoZGlzYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2dyb3VwcykKKyAgICAgICAg
ICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5fZ3JvdXBzW2tleV0sICEhZXZlbnQpOwor
CisgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9zZWN0aW9ucykgeworICAgICAgICAgICAg
dmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1trZXldOworICAgICAgICAgICAgdmFyIG9uZVNl
Y3Rpb25FeHBhbmRlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh2YXIgZ3JvdXAgb2Ygc2Vj
dGlvbi5ncm91cHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmNvbGxhcHNlZCkgewor
ICAgICAgICAgICAgICAgICAgICBvbmVTZWN0aW9uRXhwYW5kZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChvbmVTZWN0aW9uRXhwYW5kZWQpCisgICAgICAgICAgICAgICAgc2VjdGlv
bi5jb2xsYXBzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFzZWN0aW9uLmV4cGFu
ZGVkQnlVc2VyKQorICAgICAgICAgICAgICAgIHNlY3Rpb24uY29sbGFwc2VkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIF91cGRhdGVQcm9wZXJ0aWVzKGdyb3VwLCBmb3JjZVN0eWxl
VXBkYXRlKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cC5zZWN0aW9uKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBpbml0aWFsVGV4dExpc3QgPSB0aGlzLl9jdXJyZW50UnVs
ZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5pdGlhbFByb3BlcnR5U2Vj
dGlvblRleHRMaXN0XTsKKyAgICAgICAgaWYgKCFpbml0aWFsVGV4dExpc3QpCisgICAgICAgICAg
ICB0aGlzLl9jdXJyZW50UnVsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
SW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0XSA9IGluaXRpYWxUZXh0TGlzdCA9IG5ldyBX
ZWFrTWFwOworCisgICAgICAgIHZhciBpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZyA9IGZhbHNl
OworICAgICAgICBpZiAoIWluaXRpYWxUZXh0TGlzdC5oYXMoZ3JvdXApKSB7CisgICAgICAgICAg
ICB2YXIgaW5pdGlhbFByb3BlcnR5VGV4dCA9IHt9OworICAgICAgICAgICAgaW5pdGlhbFByb3Bl
cnR5VGV4dE1pc3NpbmcgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9uZVByb3Bl
cnR5SGFzVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIGdyb3VwLnByb3Bl
cnRpZXMpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRp
ZXNba2V5XTsKKyAgICAgICAgICAgIHByb3BlcnR5RWRpdG9yLnVwZGF0ZSghcHJvcGVydHlFZGl0
b3Iuc3R5bGUgfHwgZm9yY2VTdHlsZVVwZGF0ZSA/IHRoaXMuX2N1cnJlbnRSdWxlIDogbnVsbCk7
CisKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFs
dWU7CisgICAgICAgICAgICBpZiAodmFsdWUgJiYgIXByb3BlcnR5RWRpdG9yLnByb3BlcnR5TWlz
c2luZykgeworICAgICAgICAgICAgICAgIG9uZVByb3BlcnR5SGFzVmFsdWUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGlmIChpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZykKKyAgICAgICAgICAg
ICAgICAgICAgaW5pdGlhbFByb3BlcnR5VGV4dFtrZXldID0gdmFsdWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBpZiAob25lUHJvcGVydHlIYXNWYWx1ZSkKKyAgICAgICAg
ICAgIGdyb3VwLnNlY3Rpb24uY29sbGFwc2VkID0gZmFsc2U7CisgICAgICAgIGVsc2UgaWYgKCFn
cm91cC5zZWN0aW9uLmV4cGFuZGVkQnlVc2VyKQorICAgICAgICAgICAgZ3JvdXAuc2VjdGlvbi5j
b2xsYXBzZWQgPSB0cnVlOworCisgICAgICAgIGlmIChpbml0aWFsUHJvcGVydHlUZXh0TWlzc2lu
ZykKKyAgICAgICAgICAgIGluaXRpYWxUZXh0TGlzdC5zZXQoZ3JvdXAsIGluaXRpYWxQcm9wZXJ0
eVRleHQpOworICAgICAgICB0aGlzLl9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApOworCisgICAgICAg
IHZhciBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IGdyb3VwLmF1dG9jb21wbGV0
ZUNvbXBhdGlibGVQcm9wZXJ0aWVzOworICAgICAgICBpZiAoIWF1dG9jb21wbGV0ZUNvbXBhdGli
bGVQcm9wZXJ0aWVzIHx8ICFhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcy5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2YXIgZWRpdG9yIG9mIGF1dG9j
b21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnR5RWRpdG9yKGVkaXRvciwgZm9yY2VTdHlsZVVwZGF0
ZSk7CisgICAgfQorCisgICAgX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVk
aXRvcihlZGl0b3IsIGZvcmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFlZGl0b3IgfHwgKGVkaXRv
ci5oYXNDb21wbGV0aW9ucyAmJiAhZm9yY2UpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGVkaXRvci5jb21wbGV0aW9ucyA9IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUHJvcGVydHkoZWRpdG9yLnByb3BlcnR5UmVmZXJlbmNlTmFtZSk7CisgICAgfQorCisg
ICAgX3NlY3Rpb25Nb2RpZmllZChncm91cCkKKyAgICB7CisgICAgICAgIGdyb3VwLnNlY3Rpb24u
ZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJtb2RpZmllZCIsIHRoaXMuX2luaXRpYWxQcm9wZXJ0
eVRleHRNb2RpZmllZChncm91cCkpOworICAgIH0KKworICAgIF9pbml0aWFsUHJvcGVydHlUZXh0
TW9kaWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBpZiAoIWdyb3VwLnByb3BlcnRpZXMpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIGluaXRpYWxQcm9wZXJ0eVRl
eHRMaXN0ID0gdGhpcy5fY3VycmVudFJ1bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdF0uZ2V0KGdyb3VwKTsKKyAgICAg
ICAgaWYgKCFpbml0aWFsUHJvcGVydHlUZXh0TGlzdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBmb3IgKHZhciBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykgeworICAgICAg
ICAgICAgdmFyIHByb3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXldOworICAgICAg
ICAgICAgaWYgKHByb3BlcnR5RWRpdG9yLnByb3BlcnR5TWlzc2luZykKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcGVydHlFZGl0b3Iuc3lu
dGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBpbml0aWFsUHJvcGVydHlU
ZXh0TGlzdFtrZXldICE9PSB2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBncm91cHMpCisgICAgeworICAgICAgICBpZiAoIWdyb3VwIHx8ICFncm91
cHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5ncm91cHMg
PSBncm91cHM7CisgICAgICAgIGZvciAodmFyIGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKQorICAg
ICAgICAgICAgZ3JvdXAucHJvcGVydGllc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMu
X3NlY3Rpb25Nb2RpZmllZC5iaW5kKHRoaXMsIGdyb3VwKSk7CisgICAgfQorCisgICAgX3BvcHVs
YXRlRGlzcGxheVNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3Jv
dXBzLmRpc3BsYXk7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsK
KworICAgICAgICB2YXIgZGlzcGxheVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5kaXNwbGF5ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpc3BsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRpc3BsYXkiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiTm9uZSIsICJCbG9jayIsICJGbGV4
IiwgIklubGluZSIsICJJbmxpbmUgQmxvY2siXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNv
bXBhY3QiLCAiSW5saW5lIEZsZXgiLCAiSW5saW5lIFRhYmxlIiwgIkxpc3QgSXRlbSIsICJUYWJs
ZSIsICJUYWJsZSBDYXB0aW9uIiwgIlRhYmxlIENlbGwiLCAiVGFibGUgQ29sdW1uIiwgIlRhYmxl
IENvbHVtbiBHcm91cCIsICJUYWJsZSBGb290ZXIgR3JvdXAiLCAiVGFibGUgSGVhZGVyIEdyb3Vw
IiwgIlRhYmxlIFJvdyIsICJUYWJsZSBSb3cgR3JvdXAiLCAiIFdBUCBNYXJxdWVlIiwgIiBXZWJr
aXQgQm94IiwgIiBXZWJraXQgR3JpZCIsICIgV2Via2l0IElubGluZSBCb3giLCAiIFdlYmtpdCBJ
bmxpbmUgR3JpZCJdCisgICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnZpc2liaWxpdHkg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigidmlzaWJpbGl0eSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmlzaWJpbGl0eSIpLCB7CisgICAgICAgICAgICBiYXNp
YzogWyJIaWRkZW4iLCAiVmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29sbGFw
c2UiXQorICAgICAgICB9KTsKKworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5kaXNwbGF5LmVsZW1lbnQpOworICAgICAgICBkaXNwbGF5Um93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52aXNpYmlsaXR5LmVsZW1lbnQpOworCisgICAgICAg
IHZhciBzaXppbmdSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuYm94U2l6aW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUtleXdvcmRQaWNrZXIoImJveC1zaXppbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemlu
ZyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJCb3JkZXIgQm94IiwgIkNvbnRl
bnQgQm94Il0pKTsKKyAgICAgICAgcHJvcGVydGllcy5jdXJzb3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiY3Vyc29yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDdXJzb3IiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiQXV0byIsICJEZWZhdWx0IiwgIk5v
bmUiLCAiUG9pbnRlciIsICJDcm9zc2hhaXIiLCAiVGV4dCJdLAorICAgICAgICAgICAgYWR2YW5j
ZWQ6IFsiQ29udGV4dCBNZW51IiwgIkhlbHAiLCAiUHJvZ3Jlc3MiLCAiV2FpdCIsICJDZWxsIiwg
IlZlcnRpY2FsIFRleHQiLCAiQWxpYXMiLCAiQ29weSIsICJNb3ZlIiwgIk5vIERyb3AiLCAiTm90
IEFsbG93ZWQiLCAiQWxsIFNjcm9sbCIsICJDb2wgUmVzaXplIiwgIlJvdyBSZXNpemUiLCAiTiBS
ZXNpemUiLCAiRSBSZXNpemUiLCAiUyBSZXNpemUiLCAiVyBSZXNpemUiLCAiTlMgUmVzaXplIiwg
IkVXIFJlc2l6ZSIsICJORSBSZXNpemUiLCAiTlcgUmVzaXplIiwgIlNFIFJlc2l6ZSIsICJzVyBS
ZXNpemUiLCAiTkVTVyBSZXNpemUiLCAiTldTRSBSZXNpemUiXQorICAgICAgICB9KTsKKworICAg
ICAgICBzaXppbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNpemluZy5l
bGVtZW50KTsKKyAgICAgICAgc2l6aW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5jdXJzb3IuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIG92ZXJmbG93Um93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm9wYWNpdHkg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVW5pdFNsaWRlcigib3BhY2l0eSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiT3BhY2l0eSIpKTsKKyAgICAgICAgcHJvcGVydGllcy5vdmVyZmxv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKFsib3ZlcmZsb3ct
eCIsICJvdmVyZmxvdy15Il0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3ZlcmZsb3ciKSwgewor
ICAgICAgICAgICAgYmFzaWM6IFsiSW5pdGlhbCIsICJBdXRvIiwgIkhpZGRlbiIsICJTY3JvbGwi
LCAiVmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiTWFycXVlZSIsICJPdmVybGF5
IiwgIiBXZWJraXQgUGFnZWQgWCIsICIgV2Via2l0IFBhZ2VkIFkiXQorICAgICAgICB9KTsKKwor
ICAgICAgICBvdmVyZmxvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3BhY2l0
eS5lbGVtZW50KTsKKyAgICAgICAgb3ZlcmZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm92ZXJmbG93LmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaXNwbGF5R3JvdXAgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2Rpc3BsYXlSb3csIHNpemluZ1Jv
dywgb3ZlcmZsb3dSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBb
ZGlzcGxheUdyb3VwXSk7CisgICAgfQorCisgICAgX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3Mo
Z3JvdXAsIHByZWZpeCwgYWxsb3dOZWdhdGl2ZXMpCisgICAgeworICAgICAgICB2YXIgcHJvcGVy
dGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGhhc1ByZWZpeCA9IHByZWZp
eCAmJiBwcmVmaXgubGVuZ3RoOworICAgICAgICB2YXIgcHJvcGVydHlOYW1lUHJlZml4ID0gaGFz
UHJlZml4ID8gcHJlZml4ICsgIi0iIDogIiI7CisKKyAgICAgICAgdmFyIHRvcCA9IGhhc1ByZWZp
eCA/IHByZWZpeCArICJUb3AiIDogInRvcCI7CisgICAgICAgIHZhciBib3R0b20gPSBoYXNQcmVm
aXggPyBwcmVmaXggKyAiQm90dG9tIiA6ICJib3R0b20iOworICAgICAgICB2YXIgbGVmdCA9IGhh
c1ByZWZpeCA/IHByZWZpeCArICJMZWZ0IiA6ICJsZWZ0IjsKKyAgICAgICAgdmFyIHJpZ2h0ID0g
aGFzUHJlZml4ID8gcHJlZml4ICsgIlJpZ2h0IiA6ICJyaWdodCI7CisKKyAgICAgICAgdmFyIHZl
cnRpY2FsID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzW3RvcF0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3gocHJvcGVydHlOYW1lUHJlZml4ICsgInRvcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9w
IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dO
ZWdhdGl2ZXMpOworICAgICAgICBwcm9wZXJ0aWVzW2JvdHRvbV0gPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgImJvdHRvbSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90dG9tIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVs
LCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICB2
YXIgdmVydGljYWxMaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yTGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0aWVzW2JvdHRvbV1dLCAibGluay12ZXJ0
aWNhbCIpOworCisgICAgICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
c1t0b3BdLmVsZW1lbnQpOworICAgICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHZl
cnRpY2FsTGluay5lbGVtZW50KTsKKyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzW2JvdHRvbV0uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGhvcml6b250YWwg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXNbbGVmdF0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJv
cGVydHlOYW1lUHJlZml4ICsgImxlZnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwg
dGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0
aXZlcyk7CisgICAgICAgIHByb3BlcnRpZXNbcmlnaHRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJyaWdodCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZlcywgdHJ1ZSk7CisgICAgICAgIHZhciBob3Jp
em9udGFsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxp
bmsoW3Byb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmstaG9yaXpvbnRh
bCIpOworCisgICAgICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
W2xlZnRdLmVsZW1lbnQpOworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
aG9yaXpvbnRhbExpbmsuZWxlbWVudCk7CisgICAgICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzW3JpZ2h0XS5lbGVtZW50KTsKKworICAgICAgICB2YXIgYWxsTGlu
a1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAgIHZhciBh
bGxMaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhb
cHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0aWVzW2JvdHRvbV0sIHByb3BlcnRpZXNbbGVmdF0sIHBy
b3BlcnRpZXNbcmlnaHRdXSwgImxpbmstYWxsIiwgW3ZlcnRpY2FsTGluaywgaG9yaXpvbnRhbExp
bmtdKTsKKyAgICAgICAgYWxsTGlua1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKGFsbExpbmsuZWxl
bWVudCk7CisKKyAgICAgICAgcmV0dXJuIFt2ZXJ0aWNhbCwgYWxsTGlua1JvdywgaG9yaXpvbnRh
bF07CisgICAgfQorCisgICAgX3BvcHVsYXRlUG9zaXRpb25TZWN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5wb3NpdGlvbjsKKyAgICAgICAgdmFyIHJvd3Mg
PSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBudWxsLCB0cnVlKTsKKyAg
ICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBw
b3NpdGlvblR5cGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5
d29yZFBpY2tlcigicG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgewor
ICAgICAgICAgICAgYmFzaWM6IFsiU3RhdGljIiwgIlJlbGF0aXZlIiwgIkFic29sdXRlIiwgIkZp
eGVkIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyIgV2Via2l0IFN0aWNreSJdCisgICAgICAg
IH0pOworICAgICAgICBwcm9wZXJ0aWVzLnpJbmRleCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgiei1pbmRleCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiei1J
bmRleCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgbnVsbCwgdHJ1ZSk7CisKKyAgICAgICAg
cG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5wb3NpdGlvbi5lbGVt
ZW50KTsKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy56SW5kZXguZWxlbWVudCk7CisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoInZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93Iik7CisKKyAgICAgICAgcm93cy51bnNo
aWZ0KHBvc2l0aW9uVHlwZSkKKworICAgICAgICB2YXIgcG9zaXRpb25Hcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxh
dGVTZWN0aW9uKGdyb3VwLCBbcG9zaXRpb25Hcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0
ZUZsb2F0U2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
ZmxvYXQ7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAg
ICAgICB2YXIgZmxvYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMuZmxvYXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
S2V5d29yZEljb25MaXN0KCJmbG9hdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQiKSwg
WyJMZWZ0IiwgIlJpZ2h0IiwgIk5vbmUiXSk7CisgICAgICAgIGZsb2F0Um93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5mbG9hdC5lbGVtZW50KTsKKworICAgICAgICB2YXIgY2xlYXJS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuY2xlYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0
KCJjbGVhciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgWyJMZWZ0IiwgIlJpZ2h0
IiwgIkJvdGgiLCAiTm9uZSJdKTsKKyAgICAgICAgY2xlYXJSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmNsZWFyLmVsZW1lbnQpOworCisgICAgICAgIHZhciBmbG9hdEdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmbG9hdFJvdywgY2xlYXJSb3dd
KTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZmxvYXRHcm91cF0pOwor
ICAgIH0KKworICAgIF9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZWRpdG9yLCBoaWdobGlnaHRD
b25maWcpCisgICAgeworICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3ZlcigpIHsKKyAg
ICAgICAgICAgIGlmICghdGhpcy5fc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBpZiAoIXRoaXMuX3N0eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogT3JkZXIgb2YgcGFyYW1ldGVycyBjaGFuZ2VkIGlu
IGlPUyA3LgorICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtu
b2RlSWQ6IHRoaXMuX3N0eWxlLm5vZGUuaWQsIGhpZ2hsaWdodENvbmZpZ30pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKERPTUFnZW50
LmhpZ2hsaWdodFNlbGVjdG9yKQorICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNl
bGVjdG9yKGhpZ2hsaWdodENvbmZpZywgdGhpcy5fc3R5bGUub3duZXJSdWxlLnNlbGVjdG9yVGV4
dCwgdGhpcy5fc3R5bGUubm9kZS5vd25lckRvY3VtZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3V0KCkgeworICAgICAgICAg
ICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgpOworICAgICAgICB9CisKKyAgICAgICAgZWRpdG9y
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgb25FZGl0b3JNb3VzZW92ZXIu
YmluZChlZGl0b3IpKTsKKyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdXQiLCBvbkVkaXRvck1vdXNlb3V0LmJpbmQoZWRpdG9yKSk7CisgICAgfQorCisgICAg
X3BvcHVsYXRlRGltZW5zaW9uc1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0g
dGhpcy5fZ3JvdXBzLmRpbWVuc2lvbnM7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAu
cHJvcGVydGllczsKKworICAgICAgICB2YXIgZGltZW5zaW9uc1dpZHRoID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLndpZHRoID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJ3aWR0aCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zV2lkdGguZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLndpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaW1l
bnNpb25zSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzLmhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxh
dGl2ZU51bWJlclNsaWRlcigiaGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQi
KSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsK
KworICAgICAgICBkaW1lbnNpb25zSGVpZ2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5oZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNQcm9wZXJ0aWVzID0g
W3Byb3BlcnRpZXMud2lkdGgsIHByb3BlcnRpZXMuaGVpZ2h0XTsKKyAgICAgICAgdmFyIGRpbWVu
c2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5z
aW9uc1dpZHRoLCBkaW1lbnNpb25zSGVpZ2h0XSk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNN
aW5XaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5taW5XaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2
ZU51bWJlclNsaWRlcigibWluLXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIp
LCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAg
ICAgIGRpbWVuc2lvbnNNaW5XaWR0aC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWlu
V2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNaW5IZWlnaHQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWlu
SGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVy
KCJtaW4taGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5
d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNp
b25zTWluSGVpZ2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5taW5IZWlnaHQuZWxl
bWVudCk7CisKKyAgICAgICAgdmFyIGRpbWVuc2lvbnNNaW5Qcm9wZXJ0aWVzID0gW3Byb3BlcnRp
ZXMubWluV2lkdGgsIHByb3BlcnRpZXMubWluSGVpZ2h0XTsKKyAgICAgICAgdmFyIGRpbWVuc2lv
bnNNaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5z
aW9uc01pbldpZHRoLCBkaW1lbnNpb25zTWluSGVpZ2h0XSk7CisKKyAgICAgICAgdmFyIGRpbWVu
c2lvbnNNYXhLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdCgiTm9uZSIp
OworICAgICAgICB2YXIgZGltZW5zaW9uc01heFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1heFdpZHRoID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtYXgtd2lkdGgiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIGRpbWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5f
dW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRpbWVuc2lvbnNNYXhXaWR0aC5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMubWF4V2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGRp
bWVuc2lvbnNNYXhIZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMubWF4SGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtYXgtaGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJIZWlnaHQiKSwgZGltZW5zaW9uc01heEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01heEhlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMubWF4SGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4
UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1heFdpZHRoLCBwcm9wZXJ0aWVzLm1heEhlaWdodF07
CisgICAgICAgIHZhciBkaW1lbnNpb25zTWF4R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNYXhXaWR0aCwgZGltZW5zaW9uc01heEhlaWdodF0p
OworCisgICAgICAgIHZhciBkaW1lbnNpb25zVGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlcih7CisgICAgICAgICAgICAi
ZGVmYXVsdCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWZhdWx0IiksIGVsZW1l
bnQ6IGRpbWVuc2lvbnNHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zUHJvcGVy
dGllc30sCisgICAgICAgICAgICAibWluIjoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1pbiIpLCBlbGVtZW50OiBkaW1lbnNpb25zTWluR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczog
ZGltZW5zaW9uc01pblByb3BlcnRpZXN9LAorICAgICAgICAgICAgIm1heCI6IHt0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJNYXgiKSwgZWxlbWVudDogZGltZW5zaW9uc01heEdyb3VwLmVs
ZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lvbnNNYXhQcm9wZXJ0aWVzfQorICAgICAgICB9KTsK
KworICAgICAgICB2YXIgaGlnaGxpZ2h0Q29uZmlnID0ge2NvbnRlbnRDb2xvcjoge3I6IDExMSwg
ZzogMTY4LCBiOiAyMjAsIGE6IDAuNjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMu
X2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLndpZHRoLCBoaWdobGln
aHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAu
cHJvcGVydGllcy5oZWlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1pbldpZHRoLCBoaWdobGlnaHRD
b25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJv
cGVydGllcy5taW5IZWlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1l
dHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1heFdpZHRoLCBoaWdobGlnaHRD
b25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJv
cGVydGllcy5tYXhIZWlnaHQsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAgICAgdmFyIGRpbWVu
c2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5z
aW9uc1RhYkNvbnRyb2xsZXIsIGRpbWVuc2lvbnNHcm91cCwgZGltZW5zaW9uc01pbkdyb3VwLCBk
aW1lbnNpb25zTWF4R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBbZGltZW5zaW9uc0dyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlTWFyZ2luU2VjdGlv
bigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMubWFyZ2luOworICAg
ICAgICB2YXIgcm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJt
YXJnaW4iLCB0cnVlKTsKKworICAgICAgICB2YXIgaGlnaGxpZ2h0Q29uZmlnID0ge21hcmdpbkNv
bG9yOiB7cjogMjQ2LCBnOiAxNzgsIGI6IDEwNywgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsK
KyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMu
bWFyZ2luVG9wLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91
c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5Cb3R0b20sIGhpZ2hsaWdodENvbmZp
Zyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0
aWVzLm1hcmdpbkxlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblJpZ2h0LCBoaWdobGlnaHRD
b25maWcpOworCisgICAgICAgIHZhciBtYXJnaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdy
b3VwLCBbbWFyZ2luR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVQYWRkaW5nU2VjdGlv
bigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMucGFkZGluZzsKKyAg
ICAgICAgdmFyIHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAi
cGFkZGluZyIpOworCisgICAgICAgIHZhciBoaWdobGlnaHRDb25maWcgPSB7cGFkZGluZ0NvbG9y
OiB7cjogMTQ3LCBnOiAxOTYsIGI6IDEyNSwgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAg
ICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFk
ZGluZ1RvcCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ0JvdHRvbSwgaGlnaGxpZ2h0Q29uZmln
KTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRp
ZXMucGFkZGluZ0xlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdSaWdodCwgaGlnaGxpZ2h0
Q29uZmlnKTsKKworICAgICAgICB2YXIgcGFkZGluZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24o
Z3JvdXAsIFtwYWRkaW5nR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbGV4Ym94U2Vj
dGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxleGJveDsK
KyAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZh
ciBmbGV4T3JkZXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMub3JkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goIm9yZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmRlciIpLCB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleEJhc2lzID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LWJhc2lzIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJCYXNpcyIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhp
cy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3JkZXIuZWxlbWVudCk7CisgICAgICAgIGZsZXhPcmRl
clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEJhc2lzLmVsZW1lbnQpOwor
CisgICAgICAgIHZhciBmbGV4U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4R3JvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1ncm93IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJHcm93IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKyAgICAgICAgcHJv
cGVydGllcy5mbGV4U2hyaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94KCJmbGV4LXNocmluayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hyaW5rIiksIHRo
aXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEdyb3cuZWxlbWVudCk7CisgICAgICAgIGZs
ZXhTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4U2hyaW5rLmVsZW1l
bnQpOworCisgICAgICAgIHZhciBmbGV4Rmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4RGlyZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZsZXgtZGlyZWN0aW9uIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMu
Y29uY2F0KFsiUm93IiwgIlJvdyBSZXZlcnNlIiwgIkNvbHVtbiIsICJDb2x1bW4gUmV2ZXJzZSJd
KSk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFdyYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcigiZmxleC13cmFwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJX
cmFwIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIldyYXAiLCAiV3JhcCBSZXZl
cnNlIiwgIk5vd3JhcCJdKSk7CisKKyAgICAgICAgZmxleEZsb3dSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIGZsZXhGbG93
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4V3JhcC5lbGVtZW50KTsKKwor
ICAgICAgICB2YXIgZmxleGJveEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtmbGV4T3JkZXJSb3csIGZsZXhTaXplUm93LCBmbGV4Rmxvd1Jvd10pOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtmbGV4Ym94R3JvdXBdKTsKKyAgICB9CisK
KyAgICBfcG9wdWxhdGVUZXh0U3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91
cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U3R5bGU7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3Jv
dXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgdGV4dEFwcGVhcmFuY2VSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY29sb3Ig
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImNvbG9yIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy50ZXh0RGlyZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpcmVjdGlv
biIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLmNvbmNhdChbIkxUUiIsICJSVEwiXSkpOworCisgICAgICAgIHRleHRBcHBlYXJhbmNl
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jb2xvci5lbGVtZW50KTsKKyAgICAg
ICAgdGV4dEFwcGVhcmFuY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHRE
aXJlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRleHRBbGlnblJvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0QWxp
Z24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJ0ZXh0LWFs
aWduIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGlnbiIpLCBbIkxlZnQiLCAiQ2VudGVyIiwg
IlJpZ2h0IiwgIkp1c3RpZnkiXSk7CisKKyAgICAgICAgdGV4dEFsaWduUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0QWxpZ24uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRl
eHRUcmFuc2Zvcm1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMudGV4dFRyYW5zZm9ybSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtdHJhbnNmb3JtIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUcmFuc2Zvcm0iKSwgWyJDYXBpdGFsaXplIiwgIlVwcGVyY2FzZSIsICJMb3dlcmNhc2Ui
LCAiTm9uZSJdKTsKKworICAgICAgICB0ZXh0VHJhbnNmb3JtUm93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy50ZXh0VHJhbnNmb3JtLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0
RGVjb3JhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy50ZXh0RGVjb3JhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtZGVjb3JhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGVjb3JhdGlvbiIpLCBbIlVuZGVybGluZSIsICJMaW5lIFRocm91Z2giLCAiT3Zlcmxp
bmUiLCAiTm9uZSJdKTsKKworICAgICAgICB0ZXh0RGVjb3JhdGlvblJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMudGV4dERlY29yYXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgZ3Jv
dXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5jb2xvcl07
CisKKyAgICAgICAgdmFyIHRleHRTdHlsZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbkdyb3VwKFt0ZXh0QXBwZWFyYW5jZVJvdywgdGV4dEFsaWduUm93LCB0ZXh0VHJhbnNm
b3JtUm93LCB0ZXh0RGVjb3JhdGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rp
b24oZ3JvdXAsIFt0ZXh0U3R5bGVHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZvbnRT
ZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy5mb250Owor
ICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFy
IGZvbnRGYW1pbHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuZm9udEZhbWlseSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVGb250RmFtaWx5TGlzdEVkaXRvcigiZm9udC1mYW1pbHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkZhbWlseSIpKTsKKworICAgICAgICBmb250RmFtaWx5Um93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5mb250RmFtaWx5LmVsZW1lbnQpOworCisgICAgICAgIHZhciBmb250U2l6
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5mb250U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgiZm9udC1zaXplIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXplIiksIHRoaXMuX2tl
eXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkxhcmdlciIsICJYWCBMYXJnZSIsICJYIExhcmdlIiwg
IkxhcmdlIiwgIk1lZGl1bSIsICJTbWFsbCIsICJYIFNtYWxsIiwgIlhYIFNtYWxsIiwgIlNtYWxs
ZXIiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICAvLyBUT0RPOiBJbnRlcnNw
ZXJzZSBudW1lcmljYWwgZm9udC13ZWlnaHQgdmFsdWVzIGJldHdlZW4gdGhlIG90aGVyIGtleXdv
cmRzLiAgU29tZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgLy8gIFsiOTAwIiwgImJvbGRlciIs
ICI4MDAiLCAiYm9sZCIsICI2MDAiLCAiNTAwIiwgIm5vcm1hbCIsICIzMDAiLCAiMjAwIiwgImxp
Z2h0ZXIiLCAiMTAwIl0KKyAgICAgICAgcHJvcGVydGllcy5mb250V2VpZ2h0ID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZvbnQtd2VpZ2h0IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJXZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsi
Qm9sZGVyIiwgIkJvbGQiLCAiTm9ybWFsIiwgIkxpZ2h0ZXIiXSkpOworCisgICAgICAgIGZvbnRT
aXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U2l6ZS5lbGVtZW50KTsK
KyAgICAgICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRX
ZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGZvbnRTdHlsZVJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250U3R5bGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJmb250LXN0eWxl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCBbIkl0YWxpYyIsICJOb3JtYWwiXSk7
CisgICAgICAgIHByb3BlcnRpZXMuZm9udFZhcmlhbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZENoZWNrYm94KCJmb250LXZhcmlhbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlZhcmlhbnQiKSwgIlNtYWxsIENhcHMiLCAiSW1hZ2VzL0ZvbnRWYXJpYW50U21hbGxDYXBz
LnN2ZyIpCisKKyAgICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5mb250U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFZhcmlhbnQuZWxlbWVudCk7CisKKyAgICAgICAgZ3Jv
dXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5mb250RmFt
aWx5XTsKKworICAgICAgICB2YXIgZm9udEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbkdyb3VwKFtmb250RmFtaWx5Um93LCBmb250U2l6ZVJvdywgZm9udFN0eWxlUm93XSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2ZvbnRHcm91cF0pOworICAg
IH0KKworICAgIF9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICB2
YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMudGV4dFNwYWNpbmc7CisgICAgICAgIHZhciBwcm9wZXJ0
aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICB2YXIgZGVmYXVsdFRleHRLZXl3b3Jk
cyA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vcm1hbCJdKTsKKworICAgICAg
ICB2YXIgdGV4dExheW91dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5saW5lSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KCJsaW5lLWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSGVpZ2h0IiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KyAgICAgICAgcHJvcGVydGllcy52ZXJ0aWNhbEFsaWduID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KCJ2ZXJ0aWNhbC1hbGlnbiIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQWxpZ24iKSwgWyJCYXNlbGluZSIsICJCb3R0b20iXS5jb25jYXQodGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMsIFsiTWlkZGxlIiwgIlN1YiIsICJTdXBlciIsICJUZXh0IEJvdHRvbSIsICJU
ZXh0IFRvcCIsICJUb3AiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0
TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5saW5lSGVpZ2h0LmVsZW1l
bnQpOworICAgICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy52ZXJ0aWNhbEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U3BhY2luZ1JvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5sZXR0ZXJTcGFjaW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJsZXR0ZXItc3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGV0dGVyIiksIGRl
ZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVy
dGllcy53b3JkU3BhY2luZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgid29yZC1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXb3JkIiksIGRlZmF1
bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0U3Bh
Y2luZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubGV0dGVyU3BhY2luZy5lbGVt
ZW50KTsKKyAgICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLndvcmRTcGFjaW5nLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0V2hpdGVzcGFjZVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy50ZXh0SW5kZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJ0ZXh0LWluZGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZW50IiksIHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3Bl
cnRpZXMud2hpdGVTcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlj
a2VyKCJ3aGl0ZS1zcGFjZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2hpdGVzcGFjZSIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb3JtYWwiLCAiTm93cmFwIiwgIlByZSIs
ICJQcmUgTGluZSIsICJQcmUgV3JhcCJdKSk7CisKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHRJbmRlbnQuZWxlbWVudCk7CisgICAg
ICAgIHRleHRXaGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aGl0
ZVNwYWNlLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U3BhY2luZ0dyb3VwID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0TGF5b3V0Um93LCB0ZXh0U3BhY2lu
Z1JvdywgdGV4dFdoaXRlc3BhY2VSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9u
KGdyb3VwLCBbdGV4dFNwYWNpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRT
aGFkb3dTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dyb3Vwcy50
ZXh0U2hhZG93OworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisK
KyAgICAgICAgdmFyIHRleHRTaGFkb3dTaXppbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHZhciB0ZXh0U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkhvcml6b250YWwiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2Vu
dCk7CisgICAgICAgIHZhciB0ZXh0U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZl
cnRpY2FsIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworCisgICAg
ICAgIHRleHRTaGFkb3dTaXppbmcuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93SC5lbGVt
ZW50KTsKKyAgICAgICAgdGV4dFNoYWRvd1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRT
aGFkb3dWLmVsZW1lbnQpOworCisgICAgICAgIHZhciB0ZXh0U2hhZG93U3R5bGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciB0ZXh0U2hhZG93Q29s
b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoInRleHQtc2hhZG93
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgdGV4dFNoYWRvd0Nv
bG9yLmNvbG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIgdGV4dFNoYWRvd0JsdXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93Iiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
U2Fuc1BlcmNlbnQpOworICAgICAgICB0ZXh0U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0g
dHJ1ZTsKKworICAgICAgICB0ZXh0U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0
U2hhZG93Q29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFw
cGVuZENoaWxkKHRleHRTaGFkb3dCbHVyLmVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnRpZXMu
dGV4dFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVy
KCJ0ZXh0LXNoYWRvdyIsIFt0ZXh0U2hhZG93SCwgdGV4dFNoYWRvd1YsIHRleHRTaGFkb3dCbHVy
LCB0ZXh0U2hhZG93Q29sb3JdKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRp
YmxlUHJvcGVydGllcyA9IFt0ZXh0U2hhZG93Q29sb3JdOworCisgICAgICAgIHZhciB0ZXh0U2hh
ZG93R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRTaGFk
b3dTaXppbmcsIHRleHRTaGFkb3dTdHlsZV0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rp
b24oZ3JvdXAsIFt0ZXh0U2hhZG93R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCYWNr
Z3JvdW5kU3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBncm91cCA9IHRoaXMuX2dy
b3Vwcy5iYWNrZ3JvdW5kU3R5bGU7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJv
cGVydGllczsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFN0eWxlUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRD
b2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYmFja2dyb3Vu
ZC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYmFja2dyb3VuZEltYWdlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVSTElu
cHV0KCJiYWNrZ3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpKTsK
KworICAgICAgICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJhY2tncm91bmRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UuZWxlbWVudCk7
CisKKyAgICAgICAgdmFyIGJhY2tncm91bmRTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIgYmFja2dyb3VuZFNpemVLZXl3b3JkcyA9IHRo
aXMuX2tleXdvcmRzLmJveE1vZGVsLmNvbmNhdChbIkNvbnRhaW4iLCAiQ292ZXIiXSk7CisgICAg
ICAgIHZhciBiYWNrZ3JvdW5kU2l6ZVggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goImJhY2tncm91bmQtc2l6ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lk
dGgiKSwgYmFja2dyb3VuZFNpemVLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAg
ICAgICBiYWNrZ3JvdW5kU2l6ZVgubWFzdGVyUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIg
YmFja2dyb3VuZFNpemVZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJiYWNrZ3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBi
YWNrZ3JvdW5kU2l6ZUtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJh
Y2tncm91bmRTaXplWS5tYXN0ZXJQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgcHJvcGVydGll
cy5iYWNrZ3JvdW5kU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNv
bWJpbmVyKCJiYWNrZ3JvdW5kLXNpemUiLCBbYmFja2dyb3VuZFNpemVYLCBiYWNrZ3JvdW5kU2l6
ZVldKTsKKworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJh
Y2tncm91bmRTaXplWC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kU2l6ZVkuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJh
Y2tncm91bmRSZXBlYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5kLXJlcGVhdCIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVwZWF0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5v
IFJlcGVhdCIsICJSZXBlYXQiLCAiUmVwZWF0IFgiLCAiUmVwZWF0IFkiXSkpOworICAgICAgICBw
cm9wZXJ0aWVzLmJhY2tncm91bmRBdHRhY2htZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRQaWNrZXIoImJhY2tncm91bmQtYXR0YWNobWVudCIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQXR0YWNoIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkZpeGVk
IiwgIkxvY2FsIiwgIlNjcm9sbCJdKSk7CisKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5l
bGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdC5lbGVtZW50KTsK
KyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYmFja2dyb3VuZEF0dGFjaG1lbnQuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJhY2tncm91
bmRQb3NpdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgdmFyIGJhY2tncm91bmRQb3NpdGlvblggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlBvc2l0aW9uIFgiKSwgWyJDZW50ZXIiLCAiTGVmdCIsICJSaWdodCJdLCB0aGlzLl91
bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHZhciBiYWNrZ3JvdW5kUG9zaXRpb25ZID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9u
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBZIiksIFsiQm90dG9tIiwgIkNlbnRl
ciIsICJUb3AiXSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMu
YmFja2dyb3VuZFBvc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
Q29tYmluZXIoImJhY2tncm91bmQtcG9zaXRpb24iLCBbYmFja2dyb3VuZFBvc2l0aW9uWCwgYmFj
a2dyb3VuZFBvc2l0aW9uWV0pOworCisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblguZWxlbWVudCk7CisgICAgICAgIGJh
Y2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlv
blkuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3Bl
cnRpZXMgPSBbcHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3JdOworCisgICAgICAgIHZhciBiYWNr
Z3JvdW5kU3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChb
YmFja2dyb3VuZFN0eWxlUm93LCBiYWNrZ3JvdW5kU2l6ZVJvdywgYmFja2dyb3VuZFJlcGVhdFJv
dywgYmFja2dyb3VuZFBvc2l0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlv
bihncm91cCwgW2JhY2tncm91bmRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRl
Qm9yZGVyU2VjdGlvbigpCisgICAgeworICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
Ym9yZGVyOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAg
ICAgICAgdmFyIGJvcmRlckFsbFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcihbImJvcmRlci10b3Atc3R5bGUiLCAiYm9yZGVyLXJp
Z2h0LXN0eWxlIiwgImJvcmRlci1ib3R0b20tc3R5bGUiLCAiYm9yZGVyLWxlZnQtc3R5bGUiXSAs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5
bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLnByb3BlcnR5UmVmZXJlbmNlTmFt
ZSA9ICJib3JkZXItc3R5bGUiOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC13aWR0
aCIsICJib3JkZXItcmlnaHQtd2lkdGgiLCAiYm9yZGVyLWJvdHRvbS13aWR0aCIsICJib3JkZXIt
bGVmdC13aWR0aCJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdv
cmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRp
ZXMuYm9yZGVyV2lkdGgucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci13aWR0aCI7CisK
KyAgICAgICAgYm9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9y
ZGVyU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3Jk
ZXJBbGxTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAg
ICAgcHJvcGVydGllcy5ib3JkZXJDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b2xvclBpY2tlcihbImJvcmRlci10b3AtY29sb3IiLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgImJv
cmRlci1ib3R0b20tY29sb3IiLCAiYm9yZGVyLWxlZnQtY29sb3IiXSwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvci5wcm9wZXJ0
eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLWNvbG9yIjsKKyAgICAgICAgcHJvcGVydGllcy5ib3Jk
ZXJSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJi
b3JkZXItdG9wLWxlZnQtcmFkaXVzIiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRl
ci1ib3R0b20tbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMucHJv
cGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci1yYWRpdXMiOworCisgICAgICAgIGJvcmRlckFs
bFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJDb2xvci5lbGVtZW50
KTsKKyAgICAgICAgYm9yZGVyQWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LmJvcmRlclJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm9yZGVyQWxsUHJvcGVydGll
cyA9IFtwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBwcm9w
ZXJ0aWVzLmJvcmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1c107CisgICAgICAgIHZh
ciBib3JkZXJBbGxHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChb
Ym9yZGVyQWxsU2l6ZSwgYm9yZGVyQWxsU3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVyVG9w
U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyKCJib3JkZXItdG9wLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHls
ZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyVG9wV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
ImJvcmRlci10b3Atd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMu
X2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAg
Ym9yZGVyVG9wU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5
bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJU
b3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b2xvclBpY2tlcigiYm9yZGVyLXRvcC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29s
b3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIs
ICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1
cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGJvcmRlclRvcFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3Jk
ZXJUb3BDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICB2
YXIgYm9yZGVyVG9wUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLCBwcm9w
ZXJ0aWVzLmJvcmRlclRvcFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0
aWVzLmJvcmRlclRvcFJhZGl1c107CisgICAgICAgIHZhciBib3JkZXJUb3BHcm91cCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyVG9wU2l6ZSwgYm9yZGVyVG9w
U3R5bGVdKTsKKworICAgICAgICB2YXIgYm9yZGVyUmlnaHRTaXplID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXJp
Z2h0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jk
cy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXJpZ2h0LXdp
ZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3Jk
ZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U2l6
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50
KTsKKyAgICAgICAgYm9yZGVyUmlnaHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5ib3JkZXJSaWdodFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJSaWdodFN0
eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9w
ZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29s
b3JQaWNrZXIoImJvcmRlci1yaWdodC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29s
b3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLXJpZ2h0LXJhZGl1
cyIsICJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMp
OworCisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlclJpZ2h0Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzLmVsZW1lbnQp
OworCisgICAgICAgIHZhciBib3JkZXJSaWdodFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3Jk
ZXJSaWdodFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIHByb3BlcnRpZXMuYm9y
ZGVyUmlnaHRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1c107CisgICAgICAgIHZh
ciBib3JkZXJSaWdodEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtib3JkZXJSaWdodFNpemUsIGJvcmRlclJpZ2h0U3R5bGVdKTsKKworICAgICAgICB2YXIgYm9y
ZGVyQm90dG9tU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItYm90dG9tLXN0eWxlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAg
IHByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci1ib3R0b20td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5k
ZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJv
dHRvbVNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRo
LmVsZW1lbnQpOworCisgICAgICAgIHZhciBib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0
b21Db2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVy
LWJvdHRvbS1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAg
IHByb3BlcnRpZXMuYm9yZGVyQm90dG9tUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXIt
Ym90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAg
IGJvcmRlckJvdHRvbVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJC
b3R0b21Db2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1cy5lbGVtZW50KTsKKworICAg
ICAgICB2YXIgYm9yZGVyQm90dG9tUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckJvdHRv
bVN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckJv
dHRvbUNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1c107CisgICAgICAgIHZhciBi
b3JkZXJCb3R0b21Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChb
Ym9yZGVyQm90dG9tU2l6ZSwgYm9yZGVyQm90dG9tU3R5bGVdKTsKKworICAgICAgICB2YXIgYm9y
ZGVyTGVmdFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRQaWNrZXIoImJvcmRlci1sZWZ0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyTGVmdFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KCJib3JkZXItbGVmdC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lk
dGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
Ym9yZGVyTGVmdFN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLmVsZW1lbnQpOworCisgICAg
ICAgIHZhciBib3JkZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItbGVmdC1jb2xvciIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJh
ZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRl
ci10b3AtbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJdLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5f
dW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3Jk
ZXJMZWZ0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRp
dXMuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJvcmRlckxlZnRQcm9wZXJ0aWVzID0gW3Byb3Bl
cnRpZXMuYm9yZGVyTGVmdFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgcHJvcGVy
dGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1c107CisgICAg
ICAgIHZhciBib3JkZXJMZWZ0R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAoW2JvcmRlckxlZnRTaXplLCBib3JkZXJMZWZ0U3R5bGVdKTsKKworICAgICAgICB2YXIg
Ym9yZGVyVGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQ
cm9wZXJ0aWVzQ29udHJvbGxlcih7CisgICAgICAgICAgICAiYWxsIjoge3RpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkFsbCIpLCBlbGVtZW50OiBib3JkZXJBbGxHcm91cC5lbGVtZW50LCBw
cm9wZXJ0aWVzOiBib3JkZXJBbGxQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJ0b3AiOiB7dGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIGVsZW1lbnQ6IGJvcmRlclRvcEdyb3Vw
LmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlclRvcFByb3BlcnRpZXN9LAorICAgICAgICAgICAg
InJpZ2h0Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0IiksIGVsZW1lbnQ6
IGJvcmRlclJpZ2h0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyUmlnaHRQcm9wZXJ0
aWVzfSwKKyAgICAgICAgICAgICJib3R0b20iOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQm90dG9tIiksIGVsZW1lbnQ6IGJvcmRlckJvdHRvbUdyb3VwLmVsZW1lbnQsIHByb3BlcnRp
ZXM6IGJvcmRlckJvdHRvbVByb3BlcnRpZXN9LAorICAgICAgICAgICAgImxlZnQiOiB7dGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBlbGVtZW50OiBib3JkZXJMZWZ0R3JvdXAu
ZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyTGVmdFByb3BlcnRpZXN9CisgICAgICAgIH0pOwor
CisgICAgICAgIHZhciBoaWdobGlnaHRDb25maWcgPSB7Ym9yZGVyQ29sb3I6IHtyOiAyNTUsIGc6
IDIyOSwgYjogMTUzLCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJXaWR0aCwgaGln
aGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdy
b3VwLnByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAg
IHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlckJv
dHRvbVdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91
c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGgsIGhpZ2hsaWdodENv
bmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9w
ZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAgICAgZ3Jv
dXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJD
b2xvciwgcHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21D
b2xvciwgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRD
b2xvcl07CisKKyAgICAgICAgdmFyIGJvcmRlckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKFtib3JkZXJUYWJDb250cm9sbGVyLCBib3JkZXJBbGxHcm91cCwgYm9y
ZGVyVG9wR3JvdXAsIGJvcmRlclJpZ2h0R3JvdXAsIGJvcmRlckJvdHRvbUdyb3VwLCBib3JkZXJM
ZWZ0R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYm9yZGVy
R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVPdXRsaW5lU2VjdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0bGluZTsKKyAgICAgICAgdmFyIHBy
b3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIHZhciBvdXRsaW5lU2l6ZVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5vdXRsaW5lV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goIm91dGxpbmUtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRo
aXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAg
IHByb3BlcnRpZXMub3V0bGluZU9mZnNldCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveCgib3V0bGluZS1vZmZzZXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9m
ZnNldCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRy
dWUpOworCisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5vdXRsaW5lV2lkdGguZWxlbWVudCk7CisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lT2Zmc2V0LmVsZW1lbnQpOworCisgICAg
ICAgIHZhciBvdXRsaW5lU3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZVN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoIm91dGxpbmUtc3R5bGUiICwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAg
IHByb3BlcnRpZXMub3V0bGluZUNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNv
bG9yUGlja2VyKCJvdXRsaW5lLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIp
KTsKKworICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLm91dGxpbmVTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgb3V0bGluZVN0eWxlUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lQ29sb3IuZWxlbWVudCk7CisKKyAgICAg
ICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5v
dXRsaW5lQ29sb3JdOworCisgICAgICAgIHZhciBvdXRsaW5lR3JvdXAgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW291dGxpbmVTaXplUm93LCBvdXRsaW5lU3R5bGVSb3dd
KTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbb3V0bGluZUdyb3VwXSk7
CisgICAgfQorCisgICAgX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93OworICAgICAgICB2YXIgcHJvcGVy
dGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1JvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5i
b3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3
b3JkRWRpdG9yKCJib3gtc2hhZG93Iik7CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmVs
ZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICBib3hTaGFkb3dSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNoYWRvdy5lbGVtZW50KTsKKworICAg
ICAgICB2YXIgYm94U2hhZG93SFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd0ggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxlZnQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7
CisKKyAgICAgICAgYm94U2hhZG93SFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0gu
ZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd1ZSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBib3hTaGFkb3dWID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJib3gtc2hhZG93IiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUb3AiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5z
UGVyY2VudCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93VlJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKGJveFNoYWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAgdmFyIGJveFNoYWRvd0JsdXJSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHZhciBib3hT
aGFkb3dCbHVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJi
b3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3Vu
aXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBib3hTaGFkb3dCbHVyLm9wdGlvbmFs
UHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIgYm94U2hhZG93U3ByZWFkID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTcHJlYWQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVy
Y2VudCwgdHJ1ZSk7CisgICAgICAgIGJveFNoYWRvd1NwcmVhZC5vcHRpb25hbFByb3BlcnR5ID0g
dHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94
U2hhZG93Qmx1ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Qmx1clJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKGJveFNoYWRvd1NwcmVhZC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm94U2hh
ZG93Q29sb3JSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHZhciBib3hTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xv
clBpY2tlcigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7Cisg
ICAgICAgIGJveFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICB2YXIg
Ym94U2hhZG93SW5zZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZENoZWNr
Ym94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNldCIpLCAiSW5zZXQi
KTsKKyAgICAgICAgYm94U2hhZG93SW5zZXQub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAg
ICAgICAgYm94U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dDb2xv
ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChib3hTaGFkb3dJbnNldC5lbGVtZW50KTsKKworICAgICAgICB2YXIgYm94U2hhZG93UHJvcGVy
dHlDb21iaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVy
KCJib3gtc2hhZG93IiwgW2JveFNoYWRvd0gsIGJveFNoYWRvd1YsIGJveFNoYWRvd0JsdXIsIGJv
eFNoYWRvd1NwcmVhZCwgYm94U2hhZG93Q29sb3IsIGJveFNoYWRvd0luc2V0XSk7CisKKyAgICAg
ICAgZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKQorICAgICAgICB7CisgICAgICAgICAg
ICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KCIiKTsKKyAg
ICAgICAgICAgIGJveFNoYWRvd0guZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hh
ZG93Vi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dCbHVyLmRpc2FibGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1NwcmVhZC5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBib3hTaGFkb3dDb2xvci5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBi
b3hTaGFkb3dJbnNldC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVy
dGllcy5ib3hTaGFkb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMsIG5v
UmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RlZEJv
eFNoYWRvd0l0ZW1WYWx1ZUNoYW5nZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBwcm9wZXJ0
aWVzLmJveFNoYWRvdy5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSBib3hTaGFkb3dQcm9wZXJ0
eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYm94U2hhZG93
UHJvcGVydHlDb21iaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCBzZWxlY3RlZEJveFNoYWRvd0l0
ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIGJveFNoYWRvd0l0ZW1T
ZWxlY3RlZChldmVudCkgeworICAgICAgICAgICAgYm94U2hhZG93UHJvcGVydHlDb21iaW5lci51
cGRhdGVWYWx1ZXNGcm9tVGV4dChldmVudC5kYXRhLnRleHQgfHwgIiIpOworICAgICAgICB9Cisg
ICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVtU2Vs
ZWN0ZWQsIGJveFNoYWRvd0l0ZW1TZWxlY3RlZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbYm94U2hhZG93Q29sb3JdOworCisgICAg
ICAgIHZhciBib3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
W2JveFNoYWRvd1JvdywgYm94U2hhZG93SFJvdywgYm94U2hhZG93VlJvdywgYm94U2hhZG93Qmx1
clJvdywgYm94U2hhZG93Q29sb3JSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9u
KGdyb3VwLCBbYm94U2hhZG93XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVHJhbnNpdGlvblNl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRyYW5zaXRp
b247CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAg
ICB2YXIgdHJhbnNpdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcigidHJhbnNpdGlvbiIpOworICAgICAg
ICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjExcHgi
OworCisgICAgICAgIHRyYW5zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LnRyYW5zaXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgdmFyIHRy
YW5zaXRpb25Qcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eU5h
bWVJbnB1dCgidHJhbnNpdGlvbi1wcm9wZXJ0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJv
cGVydHkiKSk7CisgICAgICAgIHZhciB0cmFuc2l0aW9uVGltaW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1pbmciKSwgWyJMaW5lYXIiLCAiRWFzZSIsICJFYXNl
IEluIiwgIkVhc2UgT3V0IiwgIkVhc2UgSW4gT3V0Il0pOworCisgICAgICAgIHRyYW5zaXRpb25Q
cm9wZXJ0eVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25Qcm9wZXJ0eS5lbGVtZW50
KTsKKyAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJh
bnNpdGlvblRpbWluZy5lbGVtZW50KTsKKworICAgICAgICB2YXIgdHJhbnNpdGlvbkR1cmF0aW9u
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICB2YXIg
dHJhbnNpdGlvblRpbWVLZXl3b3JkcyA9IFsicyIsICJtcyJdOworICAgICAgICB2YXIgdHJhbnNp
dGlvbkR1cmF0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIp
LCBudWxsLCB0cmFuc2l0aW9uVGltZUtleXdvcmRzKTsKKyAgICAgICAgdmFyIHRyYW5zaXRpb25E
ZWxheSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNp
dGlvbi1kZWxheSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsYXkiKSwgbnVsbCwgdHJhbnNp
dGlvblRpbWVLZXl3b3Jkcyk7CisgICAgICAgIHRyYW5zaXRpb25EZWxheS5vcHRpb25hbFByb3Bl
cnR5ID0gdHJ1ZTsKKworICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBl
bmRDaGlsZCh0cmFuc2l0aW9uRHVyYXRpb24uZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25E
dXJhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25EZWxheS5lbGVtZW50KTsK
KworICAgICAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigidHJhbnNpdGlvbiIsIFt0cmFuc2l0aW9u
UHJvcGVydHksIHRyYW5zaXRpb25UaW1pbmcsIHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlv
bkRlbGF5XSk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1
ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHkuZGlzYWJsZWQg
PSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvblRpbWluZy5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAg
ICAgdHJhbnNpdGlvbkRlbGF5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBw
cm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRl
bXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBzZWxl
Y3RlZHRyYW5zaXRpb25JdGVtVmFsdWVDaGFuZ2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cHJvcGVydGllcy50cmFuc2l0aW9uLnNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1ZSA9IHRyYW5zaXRp
b25Qcm9wZXJ0eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
dHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgc2VsZWN0ZWR0
cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gdHJh
bnNpdGlvbkl0ZW1TZWxlY3RlZChldmVudCkgeworICAgICAgICAgICAgdHJhbnNpdGlvblByb3Bl
cnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQoZXZlbnQuZGF0YS50ZXh0IHx8ICIiKTsK
KyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZl
bnQuVHJlZUl0ZW1TZWxlY3RlZCwgdHJhbnNpdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7CisKKyAg
ICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbdHJhbnNpdGlv
blByb3BlcnR5XTsKKworICAgICAgICB2YXIgdHJhbnNpdGlvbkdyb3VwID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0cmFuc2l0aW9uUm93LCB0cmFuc2l0aW9uUHJvcGVy
dHlSb3csIHRyYW5zaXRpb25EdXJhdGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNl
Y3Rpb24oZ3JvdXAsIFt0cmFuc2l0aW9uR3JvdXBdKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVEaXNhYmxlZCA9IFN5bWJvbCgidmlzdWFs
LXN0eWxlLXN0eWxlLWRpc2FibGVkIik7CitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0ID0gU3ltYm9sKCJ2aXN1YWwtc3R5
bGUtaW5pdGlhbC1wcm9wZXJ0eS1zZWN0aW9uLXRleHQiKTsKKworV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5UmVmZXJlbmNlSW5mbyA9IHsKKyAgICAiYmFja2dy
b3VuZC1hdHRhY2htZW50IjogIklmIGEgYmFja2dyb3VuZC1pbWFnZSBpcyBzcGVjaWZpZWQsIHRo
ZSBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0
aGF0IGltYWdlJ3MgcG9zaXRpb24gaXMgZml4ZWQgd2l0aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Ny
b2xscyBhbG9uZyB3aXRoIGl0cyBjb250YWluaW5nIGJsb2NrLiIsCisgICAgImJhY2tncm91bmQt
Y29sb3IiOiAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tn
cm91bmQgY29sb3Igb2YgYW4gZWxlbWVudCwgZWl0aGVyIHRocm91Z2ggYSBjb2xvciB2YWx1ZSBv
ciB0aGUga2V5d29yZCB0cmFuc3BhcmVudC4iLAorICAgICJiYWNrZ3JvdW5kLWltYWdlIjogIlRo
ZSBDU1MgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBzZXRzIG9uZSBvciBzZXZlcmFsIGJhY2tn
cm91bmQgaW1hZ2VzIGZvciBhbiBlbGVtZW50LiBUaGUgaW1hZ2VzIGFyZSBkcmF3biBvbiBzdGFj
a2luZyBjb250ZXh0IGxheWVycyBvbiB0b3Agb2YgZWFjaCBvdGhlci4gVGhlIGZpcnN0IGxheWVy
IHNwZWNpZmllZCBpcyBkcmF3biBhcyBpZiBpdCBpcyBjbG9zZXN0IHRvIHRoZSB1c2VyLiIsCisg
ICAgImJhY2tncm91bmQtcG9zaXRpb24iOiAiVGhlIGJhY2tncm91bmQtcG9zaXRpb24gQ1NTIHBy
b3BlcnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3Jv
dW5kIHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgYmFja2dyb3VuZC1vcmlnaW4gZm9yIGVhY2gg
ZGVmaW5lZCBiYWNrZ3JvdW5kIGltYWdlLiIsCisgICAgImJhY2tncm91bmQtcmVwZWF0IjogIlRo
ZSBiYWNrZ3JvdW5kLXJlcGVhdCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgYmFja2dyb3VuZCBp
bWFnZXMgYXJlIHJlcGVhdGVkLiBBIGJhY2tncm91bmQgaW1hZ2UgY2FuIGJlIHJlcGVhdGVkIGFs
b25nIHRoZSBob3Jpem9udGFsIGF4aXMsIHRoZSB2ZXJ0aWNhbCBheGlzLCBib3RoIGF4ZXMsIG9y
IG5vdCByZXBlYXRlZCBhdCBhbGwuIiwKKyAgICAiYmFja2dyb3VuZC1zaXplIjogIlRoZSBiYWNr
Z3JvdW5kLXNpemUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYmFja2dy
b3VuZCBpbWFnZXMuIFRoZSBzaXplIG9mIHRoZSBpbWFnZSBjYW4gYmUgZnVsbHkgY29uc3RyYWlu
ZWQgb3Igb25seSBwYXJ0aWFsbHkgaW4gb3JkZXIgdG8gcHJlc2VydmUgaXRzIGludHJpbnNpYyBy
YXRpby4iLAorICAgICJib3JkZXItYm90dG9tLWNvbG9yIjogIlRoZSBib3JkZXItYm90dG9tLWNv
bG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBh
biBlbGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9w
ZXJ0aWVzIGJvcmRlci1jb2xvciBvciBib3JkZXItYm90dG9tIGFyZSBtb3JlIGNvbnZlbmllbnQg
YW5kIHByZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6ICJUaGUg
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgcm91bmRpbmcg
b2YgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNh
biBiZSBhIGNpcmNsZSBvciBhbiBlbGxpcHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAg
bm8gcm91bmRpbmcgaXMgZG9uZSBhbmQgdGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9y
ZGVyLWJvdHRvbS1zdHlsZSI6ICJUaGUgYm9yZGVyLWJvdHRvbS1zdHlsZSBDU1MgcHJvcGVydHkg
c2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAg
ICJib3JkZXItYm90dG9tLXdpZHRoIjogIlRoZSBib3JkZXItYm90dG9tLXdpZHRoIENTUyBwcm9w
ZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAg
ICJib3JkZXItY29sb3IiOiAiVGhlIGJvcmRlci1jb2xvciBDU1MgcHJvcGVydHkgaXMgYSBzaG9y
dGhhbmQgZm9yIHNldHRpbmcgdGhlIGNvbG9yIG9mIHRoZSBmb3VyIHNpZGVzIG9mIGFuIGVsZW1l
bnQncyBib3JkZXI6IGJvcmRlci10b3AtY29sb3IsIGJvcmRlci1yaWdodC1jb2xvciwgYm9yZGVy
LWJvdHRvbS1jb2xvciwgYm9yZGVyLWxlZnQtY29sb3IiLAorICAgICJib3JkZXItbGVmdC1jb2xv
ciI6ICJUaGUgYm9yZGVyLWxlZnQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9m
IHRoZSBib3R0b20gYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2Vz
IHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXPCoGJvcmRlci1jb2xvciBvciBib3JkZXItbGVm
dCBhcmUgbW9yZSBjb252ZW5pZW50IGFuZCBwcmVmZXJhYmxlLiIsCisgICAgImJvcmRlci1sZWZ0
LXN0eWxlIjogIlRoZSBib3JkZXItbGVmdC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGlu
ZSBzdHlsZSBvZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLWxlZnQt
d2lkdGgiOiAiVGhlIGJvcmRlci1sZWZ0LXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0
aCBvZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLXJhZGl1cyI6ICJU
aGUgYm9yZGVyLXJhZGl1cyBDU1MgcHJvcGVydHkgYWxsb3dzIFdlYiBhdXRob3JzIHRvIGRlZmlu
ZSBob3cgcm91bmRlZCBib3JkZXIgY29ybmVycyBhcmUuIFRoZSBjdXJ2ZSBvZiBlYWNoIGNvcm5l
ciBpcyBkZWZpbmVkIHVzaW5nIG9uZSBvciB0d28gcmFkaWksIGRlZmluaW5nIGl0cyBzaGFwZTog
Y2lyY2xlIG9yIGVsbGlwc2UuIiwKKyAgICAiYm9yZGVyLXJpZ2h0LWNvbG9yIjogIlRoZSBib3Jk
ZXItcmlnaHQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSByaWdodCBi
b3JkZXIgb2YgYW4gZWxlbWVudC4gTm90ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFu
ZCBDU1MgcHJvcGVydGllc8KgIGJvcmRlci1jb2xvciBvciBib3JkZXItcmlnaHQgYXJlIG1vcmUg
Y29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItcmlnaHQtc3R5bGUiOiAi
VGhlIGJvcmRlci1yaWdodC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBv
ZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1yaWdodC13aWR0aCI6
ICJUaGUgYm9yZGVyLXJpZ2h0LXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0
aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1zdHlsZSI6ICJUaGUgYm9y
ZGVyLXN0eWxlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRo
ZSBsaW5lIHN0eWxlIGZvciBhbGwgZm91ciBzaWRlcyBvZiB0aGUgZWxlbWVudHMgYm9yZGVyLiIs
CisgICAgImJvcmRlci10b3AtY29sb3IiOiAiVGhlIGJvcmRlci10b3AtY29sb3IgQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUg
dGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXMgYm9yZGVyLWNv
bG9yIG9yIGJvcmRlci10b3AgYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAor
ICAgICJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjogIlRoZSBib3JkZXItdG9wLWxlZnQtcmFkaXVz
IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSByb3VuZGluZyBvZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9m
IHRoZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2Us
IG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCxubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUg
Y29ybmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyI6ICJUaGUg
Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXMgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5kaW5nIG9m
IHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIHRoZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJl
IGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCBubyBy
b3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXIt
dG9wLXN0eWxlIjogIlRoZSBib3JkZXItdG9wLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBs
aW5lIHN0eWxlIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci10b3At
d2lkdGgiOiAiVGhlIGJvcmRlci10b3Atd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRo
IG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci13aWR0aCI6ICJUaGUg
Ym9yZGVyLXdpZHRoIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgb2YgYSBi
b3guIFVzaW5nIHRoZSBzaG9ydGhhbmQgcHJvcGVydHkgYm9yZGVyIGlzIG9mdGVuIG1vcmUgY29u
dmVuaWVudC4iLAorICAgICJib3R0b20iOiAiVGhlIGJvdHRvbSBDU1MgcHJvcGVydHkgcGFydGlj
aXBhdGVzIGluIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMu
IiwKKyAgICAiYm94LXNoYWRvdyI6ICJUaGUgYm94LXNoYWRvdyBwcm9wZXJ0eSBkZXNjcmliZXMg
b25lIG9yIG1vcmUgc2hhZG93IGVmZmVjdHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gSXQg
ZW5hYmxlcyB5b3UgdG8gY2FzdCBhIGRyb3Agc2hhZG93IGZyb20gdGhlIGZyYW1lIG9mIGFsbW9z
dCBhbnkgZWxlbWVudC4gSWYgYSBib3JkZXItcmFkaXVzIGlzIHNwZWNpZmllZCBvbiB0aGUgZWxl
bWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJveCBzaGFkb3cgdGFrZXMgb24gdGhlIHNhbWUg
cm91bmRlZCBjb3JuZXJzLiBUaGUgei1vcmRlcmluZyBvZiBtdWx0aXBsZSBib3ggc2hhZG93cyBp
cyB0aGUgc2FtZSBhcyBtdWx0aXBsZSB0ZXh0IHNoYWRvd3MgKHRoZSBmaXJzdCBzcGVjaWZpZWQg
c2hhZG93IGlzIG9uIHRvcCkuIiwKKyAgICAiYm94LXNpemluZyI6ICJUaGUgYm94LXNpemluZyBw
cm9wZXJ0eSBpcyB1c2VkIHRvIGFsdGVyIHRoZSBkZWZhdWx0IENTUyBib3ggbW9kZWwgdXNlZCB0
byBjYWxjdWxhdGUgd2lkdGhzIGFuZCBoZWlnaHRzIG9mIGVsZW1lbnRzLiBJdCBpcyBwb3NzaWJs
ZSB0byB1c2UgdGhpcyBwcm9wZXJ0eSB0byBlbXVsYXRlIHRoZSBiZWhhdmlvciBvZiBicm93c2Vy
cyB0aGF0IGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB0aGUgQ1NTIGJveCBtb2RlbCBzcGVjaWZp
Y2F0aW9uLiIsCisgICAgImNsZWFyIjogIlRoZSBjbGVhciBDU1MgcHJvcGVydHkgc3BlY2lmaWVz
IHdoZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgbmV4dCB0byBmbG9hdGluZyBlbGVtZW50cyB0aGF0
IHByZWNlZGUgaXQgb3IgbXVzdCBiZSBtb3ZlZCBkb3duIChjbGVhcmVkKSBiZWxvdyB0aGVtLiBU
aGUgY2xlYXIgcHJvcGVydHkgYXBwbGllcyB0byBib3RoIGZsb2F0aW5nIGFuZCBub24tZmxvYXRp
bmcgZWxlbWVudHMuIiwKKyAgICAiY29sb3IiOiAiVGhlIGNvbG9yIHByb3BlcnR5IHNldHMgdGhl
IGZvcmVncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudCdzIHRleHQgY29udGVudCwgYW5kIGl0cyBk
ZWNvcmF0aW9ucy4gSXQgZG9lc24ndCBhZmZlY3QgYW55IG90aGVyIGNoYXJhY3RlcmlzdGljIG9m
IHRoZSBlbGVtZW50OyBpdCBzaG91bGQgcmVhbGx5IGJlIGNhbGxlZCB0ZXh0LWNvbG9yIGFuZCB3
b3VsZCBoYXZlIGJlZW4gbmFtZWQgc28sIHNhdmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQg
aXRzIGFwcGVhcmFuY2UgaW4gQ1NTIExldmVsIDEuIiwKKyAgICAiY3Vyc29yIjogIlRoZSBjdXJz
b3IgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbW91c2UgY3Vyc29yIGRpc3BsYXllZCB3aGVu
IHRoZSBtb3VzZSBwb2ludGVyIGlzIG92ZXIgYW4gZWxlbWVudC4iLAorICAgICJkaXJlY3Rpb24i
OiAiU2V0IHRoZSBkaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHRvIG1hdGNoIHRoZSBkaXJlY3Rpb24g
b2YgdGhlIHRleHQ6IHJ0bCBmb3IgbGFuZ3VhZ2VzIHdyaXR0ZW4gZnJvbSByaWdodC10by1sZWZ0
IChsaWtlIEhlYnJldyBvciBBcmFiaWMpIHRleHQgYW5kIGx0ciBmb3Igb3RoZXIgc2NyaXB0cy4g
VGhpcyBpcyB0eXBpY2FsbHkgZG9uZSBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCAoZS5nLiwgdXNp
bmcgdGhlIGRpciBhdHRyaWJ1dGUgaW4gSFRNTCkgcmF0aGVyIHRoYW4gdGhyb3VnaCBkaXJlY3Qg
dXNlIG9mIENTUy4iLAorICAgICJkaXNwbGF5IjogIlRoZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgdGhlIHR5cGUgb2YgcmVuZGVyaW5nIGJveCB1c2VkIGZvciBhbiBlbGVtZW50LiBJ
biBIVE1MLCBkZWZhdWx0IGRpc3BsYXkgcHJvcGVydHkgdmFsdWVzIGFyZSB0YWtlbiBmcm9tIGJl
aGF2aW9ycyBkZXNjcmliZWQgaW4gdGhlIEhUTUwgc3BlY2lmaWNhdGlvbnMgb3IgZnJvbSB0aGUg
YnJvd3Nlci91c2VyIGRlZmF1bHQgc3R5bGVzaGVldC4gVGhlIGRlZmF1bHQgdmFsdWUgaW4gWE1M
IGlzIGlubGluZS4iLAorICAgICJmbGV4LWJhc2lzIjogIlRoZSBmbGV4LWJhc2lzIENTUyBwcm9w
ZXJ0eSBzcGVjaWZpZXMgdGhlIGZsZXggYmFzaXMgd2hpY2ggaXMgdGhlIGluaXRpYWwgbWFpbiBz
aXplIG9mIGEgZmxleCBpdGVtLiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIHNpemUgb2Yg
dGhlIGNvbnRlbnQtYm94IHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlIHVzaW5nIGJveC1zaXpp
bmcuIiwKKyAgICAiZmxleC1kaXJlY3Rpb24iOiAiVGhlIGZsZXgtZGlyZWN0aW9uIENTUyBwcm9w
ZXJ0eSBzcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250
YWluZXIgZGVmaW5pbmcgdGhlIG1haW4gYXhpcyBhbmQgdGhlIGRpcmVjdGlvbiAobm9ybWFsIG9y
IHJldmVyc2VkKS4iLAorICAgICJmbGV4LWdyb3ciOiAiVGhlIGZsZXgtZ3JvdyBDU1MgcHJvcGVy
dHkgc3BlY2lmaWVzIHRoZSBmbGV4IGdyb3cgZmFjdG9yIG9mIGEgZmxleCBpdGVtLiBJdCBzcGVj
aWZpZXMgd2hhdCBhbW91bnQgb2Ygc3BhY2UgaW5zaWRlIHRoZSBmbGV4IGNvbnRhaW5lciB0aGUg
aXRlbSBzaG91bGQgdGFrZSB1cC4iLAorICAgICJmbGV4LXNocmluayI6ICJUaGUgZmxleC1zaHJp
bmsgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZmxleCBzaHJpbmsgZmFjdG9yIG9mIGEgZmxl
eCBpdGVtLiIsCisgICAgImZsZXgtd3JhcCI6ICJUaGUgQ1NTIGZsZXgtd3JhcCBwcm9wZXJ0eSBz
cGVjaWZpZXMgd2hldGhlciBmbGV4IGl0ZW1zIGFyZSBmb3JjZWQgaW50byBhIHNpbmdsZSBsaW5l
IG9yIGNhbiBiZSB3cmFwcGVkIG9udG8gbXVsdGlwbGUgbGluZXMuIElmIHdyYXBwaW5nIGlzIGFs
bG93ZWQsIHRoaXMgcHJvcGVydHkgYWxzbyBlbmFibGVzIHlvdSB0byBjb250cm9sIHRoZSBkaXJl
Y3Rpb24gaW4gd2hpY2ggbGluZXMgYXJlIHN0YWNrZWQuIiwKKyAgICAiZmxvYXQiOiAiVGhlIGZs
b2F0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhhdCBhbiBlbGVtZW50IHNob3VsZCBiZSB0YWtl
biBmcm9tIHRoZSBub3JtYWwgZmxvdyBhbmQgcGxhY2VkIGFsb25nIHRoZSBsZWZ0IG9yIHJpZ2h0
IHNpZGUgb2YgaXRzIGNvbnRhaW5lciwgd2hlcmUgdGV4dCBhbmQgaW5saW5lIGVsZW1lbnRzIHdp
bGwgd3JhcCBhcm91bmQgaXQuIiwKKyAgICAiZm9udC1mYW1pbHkiOiAiVGhlIGZvbnQtZmFtaWx5
IENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBmb250
IGZhbWlseSBuYW1lcyBhbmQvb3IgZ2VuZXJpYyBmYW1pbHkgbmFtZXMgZm9yIHRoZSBzZWxlY3Rl
ZCBlbGVtZW50LiBWYWx1ZXMgYXJlIHNlcGFyYXRlZCBieSBhIGNvbW1hIHRvIGluZGljYXRlIHRo
YXQgdGhleSBhcmUgYWx0ZXJuYXRpdmVzLiBUaGUgYnJvd3NlciB3aWxsIHNlbGVjdCB0aGUgZmly
c3QgZm9udCBvbiB0aGUgbGlzdCB0aGF0IGlzIGluc3RhbGxlZCBvbiB0aGUgY29tcHV0ZXIgb3Ig
dGhhdCBjYW4gYmUgZG93bmxvYWRlZCB1c2luZyBhIEBmb250LWZhY2UgYXQtcnVsZS4iLAorICAg
ICJmb250LXNpemUiOiAiVGhlIGZvbnQtc2l6ZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBz
aXplIG9mIHRoZSBmb250LiBTZXR0aW5nIHRoZSBmb250IHNpemUgbWF5LCBpbiB0dXJuLCBjaGFu
Z2UgdGhlIHNpemUgb2Ygb3RoZXIgaXRlbXMsIHNpbmNlIGl0IGlzIHVzZWQgdG8gY29tcHV0ZSB0
aGUgdmFsdWUgb2YgdGhlIGVtIGFuZCBleMKgXG4gPGxlbmd0aD4gdW5pdHMuIiwKKyAgICAiZm9u
dC1zdHlsZSI6ICJUaGUgZm9udC1zdHlsZSBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc2VsZWN0IGl0
YWxpYyBvciBvYmxpcXVlIGZhY2VzIHdpdGhpbiBhIGZvbnQtZmFtaWx5LiIsCisgICAgImZvbnQt
dmFyaWFudCI6ICJUaGlzIHByb3BlcnR5IGFjdHMgYXMgYSBzaG9ydGhhbmQgZm9yIHRoZSBsb25n
aGFuZCBwcm9wZXJ0aWVzOiBmb250LXZhcmlhbnQtY2FwcywgZm9udC12YXJpYW50LW51bWVyaWMs
IGZvbnQtdmFyaWFudC1hbHRlcm5hdGVzLCBmb250LXZhcmlhbnQtbGlnYXR1cmVzLCBhbmQgZm9u
dC12YXJpYW50LWVhc3QtYXNpYW4uIFlvdSBjYW4gYWxzbyBzZXQgdGhlIENTUyBMZXZlbCAyIChS
ZXZpc2lvbiAxKSB2YWx1ZXMgb2YgZm9udC12YXJpYW50LCAodGhhdCBpcywgbm9ybWFsIG9yIHNt
YWxsLWNhcHMpLCBieSB1c2luZyB0aGUgZm9udCBzaG9ydGhhbmQuIiwKKyAgICAiZm9udC13ZWln
aHQiOiAiVGhlIGZvbnQtd2VpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdlaWdodCBv
ciBib2xkbmVzcyBvZiB0aGUgZm9udC4gU29tZSBmb250cyBhcmUgb25seSBhdmFpbGFibGUgaW4g
bm9ybWFsIGFuZCBib2xkLiIsCisgICAgImhlaWdodCI6ICJUaGUgaGVpZ2h0IENTUyBwcm9wZXJ0
eSBzcGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCBhcmVhIG9mIGFuIGVsZW1lbnQu
IFRoZSBjb250ZW50IGFyZWEgaXMgaW5zaWRlIHRoZSBwYWRkaW5nLCBib3JkZXIsIGFuZCBtYXJn
aW4gb2YgdGhlIGVsZW1lbnQuIiwKKyAgICAibGVmdCI6ICJUaGUgbGVmdCBDU1MgcHJvcGVydHkg
c3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwK
KyAgICAibGV0dGVyLXNwYWNpbmciOiAiVGhlIGxldHRlci1zcGFjaW5nIENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgc3BhY2luZyBiZWhhdmlvciBiZXR3ZWVuIHRleHQgY2hhcmFjdGVycy4iLAorICAg
ICJsaW5lLWhlaWdodCI6ICJPbiBibG9jayBsZXZlbCBlbGVtZW50cywgdGhlIGxpbmUtaGVpZ2h0
IHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRo
aW4gdGhlIGVsZW1lbnQuIiwKKyAgICAibWFyZ2luLWJvdHRvbSI6ICJUaGUgbWFyZ2luLWJvdHRv
bSBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWly
ZWQgb24gdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28g
YWxsb3dlZC4iLAorICAgICJtYXJnaW4tbGVmdCI6ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIG1hcmdpbiBzcGFjZSByZXF1aXJlZCBvbiB0aGUgbGVmdCBzaWRlIG9mIGEg
Ym94IGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28g
YWxsb3dlZC4iLAorICAgICJtYXJnaW4tcmlnaHQiOiAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJv
cGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhl
IHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93
ZWQuIiwKKyAgICAibWFyZ2luLXRvcCI6ICJUaGUgbWFyZ2luLXRvcCBDU1MgcHJvcGVydHkgb2Yg
YW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBvZiBh
biBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXgt
aGVpZ2h0IjogIlRoZSBtYXgtaGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtYXhp
bXVtIGhlaWdodCBvZiBhbiBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0
aGUgaGVpZ2h0IHByb3BlcnR5IGZyb20gYmVjb21pbmcgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHNw
ZWNpZmllZCBmb3IgbWF4LWhlaWdodC4iLAorICAgICJtYXgtd2lkdGgiOiAiVGhlIG1heC13aWR0
aCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSB3aWR0aCBvZiBhIGdpdmVuIGVs
ZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBm
cm9tIGJlY29taW5nIGxhcmdlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1heC13aWR0
aC4iLAorICAgICJtaW4taGVpZ2h0IjogIlRoZSBtaW4taGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQg
dG8gc2V0IHRoZSBtaW5pbXVtIGhlaWdodCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRz
IHRoZSB1c2VkIHZhbHVlIG9mIHRoZSBoZWlnaHQgcHJvcGVydHkgZnJvbSBiZWNvbWluZyBzbWFs
bGVyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgbWluLWhlaWdodC4iLAorICAgICJtaW4t
d2lkdGgiOiAiVGhlIG1pbi13aWR0aCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWluaW11
bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9m
IHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9tIGJlY29taW5nIHNtYWxsZXIgdGhhbiB0aGUgdmFsdWUg
c3BlY2lmaWVkIGZvciBtaW4td2lkdGguIiwKKyAgICAib3BhY2l0eSI6ICJUaGUgb3BhY2l0eSBD
U1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB0cmFuc3BhcmVuY3kgb2YgYW4gZWxlbWVudCwgdGhh
dCBpcywgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUgYmFja2dyb3VuZCBiZWhpbmQgdGhlIGVsZW1l
bnQgaXMgb3ZlcmxhaWQuIiwKKyAgICAib3JkZXIiOiAiVGhlIENTUyBvcmRlciBwcm9wZXJ0eSBz
cGVjaWZpZXMgdGhlIG9yZGVyIHVzZWQgdG8gbGF5IG91dCBmbGV4IGl0ZW1zIGluIHRoZWlyIGZs
ZXggY29udGFpbmVyLiBFbGVtZW50cyBhcmUgbGFpZCBvdXQgaW4gdGhlwqBhc2NlbmRpbmcgb3Jk
ZXIgb2YgdGhlIG9yZGVyIHZhbHVlLiBFbGVtZW50cyB3aXRoIHRoZSBzYW1lIG9yZGVyIHZhbHVl
IGFyZSBsYWlkIG91dCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIHNv
dXJjZSBjb2RlLiIsCisgICAgIm91dGxpbmUtY29sb3IiOiAiVGhlIG91dGxpbmUtY29sb3IgQ1NT
IHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFu
IG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRl
IHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAi
b3V0bGluZS1vZmZzZXQiOiAiVGhlIG91dGxpbmUtb2Zmc2V0IENTUyBwcm9wZXJ0eSBpcyB1c2Vk
IHRvIHNldCBzcGFjZSBiZXR3ZWVuIGFuIG91dGxpbmUgYW5kIHRoZSBlZGdlIG9yIGJvcmRlciBv
ZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBl
bGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UuIiwKKyAgICAib3V0bGluZS1zdHlsZSI6
ICJUaGUgb3V0bGluZS1zdHlsZSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHN0eWxl
IG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQg
aXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFr
ZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAib3V0bGluZS13aWR0aCI6ICJUaGUgb3V0
bGluZS13aWR0aCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHdpZHRoIG9mIHRoZSBv
dXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24g
YXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxl
bWVudCBzdGFuZCBvdXQ6IiwKKyAgICAib3ZlcmZsb3ciOiAiVGhlIG92ZXJmbG93IHByb3BlcnR5
IHNwZWNpZmllcyB3aGV0aGVyIHRvIGNsaXAgY29udGVudCwgcmVuZGVyIHNjcm9sbGJhcnMgb3Ig
anVzdCBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCBvdmVyZmxvd3MgaXRzIGJsb2NrIGxldmVsIGNv
bnRhaW5lci4iLAorICAgICJwYWRkaW5nLWJvdHRvbSI6ICJUaGUgcGFkZGluZy1ib3R0b20gQ1NT
IHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBwYWRkaW5nIGFy
ZWEgYXQgdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBz
cGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdCdzIGJvcmRlci4g
Q29udHJhcnkgdG8gbWFyZ2luLWJvdHRvbSB2YWx1ZXMsIG5lZ2F0aXZlIHZhbHVlcyBvZiBwYWRk
aW5nLWJvdHRvbSBhcmUgaW52YWxpZC4iLAorICAgICJwYWRkaW5nLWxlZnQiOiAiVGhlIHBhZGRp
bmctbGVmdCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNl
IHJlcXVpcmVkIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJl
YSBpcyB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXQn
cyBib3JkZXIuIEEgbmVnYXRpdmUgdmFsdWUgaXMgbm90IGFsbG93ZWQuIiwKKyAgICAicGFkZGlu
Zy1yaWdodCI6ICJUaGUgcGFkZGluZy1yaWdodCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBz
ZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVs
ZW1lbnQuIFRoZSBwYWRkaW5nIGFyZWEgaXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQg
b2YgdGhlIGVsZW1lbnQgYW5kIGl0cyBib3JkZXIuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFs
bG93ZWQuIiwKKyAgICAicGFkZGluZy10b3AiOiAiVGhlIHBhZGRpbmctdG9wIENTUyBwcm9wZXJ0
eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIHBhZGRpbmcgc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRv
cCBvZiBhbiBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRo
ZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdHMgYm9yZGVyLiBDb250cmFyeSB0byBtYXJn
aW4tdG9wIHZhbHVlcywgbmVnYXRpdmUgdmFsdWVzIG9mIHBhZGRpbmctdG9wIGFyZSBpbnZhbGlk
LiIsCisgICAgInBvc2l0aW9uIjogIlRoZSBwb3NpdGlvbiBDU1MgcHJvcGVydHkgY2hvb3NlcyBh
bHRlcm5hdGl2ZSBydWxlcyBmb3IgcG9zaXRpb25pbmcgZWxlbWVudHMsIGRlc2lnbmVkIHRvIGJl
IHVzZWZ1bCBmb3Igc2NyaXB0ZWQgYW5pbWF0aW9uIGVmZmVjdHMuIiwKKyAgICAicmlnaHQiOiAi
VGhlIHJpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgcGFydCBvZiB0aGUgcG9zaXRpb24gb2Yg
cG9zaXRpb25lZCBlbGVtZW50cy4iLAorICAgICJ0ZXh0LWFsaWduIjogIlRoZSB0ZXh0LWFsaWdu
IENTUyBwcm9wZXJ0eSBkZXNjcmliZXMgaG93IGlubGluZSBjb250ZW50IGxpa2UgdGV4dCBpcyBh
bGlnbmVkIGluIGl0cyBwYXJlbnQgYmxvY2sgZWxlbWVudC4gdGV4dC1hbGlnbiBkb2VzIG5vdCBj
b250cm9sIHRoZSBhbGlnbm1lbnQgb2YgYmxvY2sgZWxlbWVudHMgaXRzZWxmLCBvbmx5IHRoZWly
IGlubGluZSBjb250ZW50LiIsCisgICAgInRleHQtZGVjb3JhdGlvbiI6ICJUaGUgdGV4dC1kZWNv
cmF0aW9uIENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgdGV4dCBmb3JtYXR0aW5nIHRv
IHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmUtdGhyb3VnaCBvciBibGluay4gVW5kZXJsaW5lIGFu
ZCBvdmVybGluZSBkZWNvcmF0aW9ucyBhcmUgcG9zaXRpb25lZCB1bmRlciB0aGUgdGV4dCwgbGlu
ZS10aHJvdWdoIG92ZXIgaXQuIiwKKyAgICAidGV4dC1pbmRlbnQiOiAiVGhlIHRleHQtaW5kZW50
IHByb3BlcnR5IHNwZWNpZmllcyBob3cgbXVjaCBob3Jpem9udGFsIHNwYWNlIHNob3VsZCBiZSBs
ZWZ0IGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0ZXh0IGNv
bnRlbnQgb2YgYW4gZWxlbWVudC4iLAorICAgICJ0ZXh0LXNoYWRvdyI6ICJUaGUgdGV4dC1zaGFk
b3cgcHJvcGVydHkgYWRkcyBzaGFkb3dzIHRvIHRleHQuIEl0IGFjY2VwdHMgYSBjb21tYS1zZXBh
cmF0ZWQgbGlzdCBvZiBzaGFkb3dzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRleHQgYW5kIHRleHQt
ZGVjb3JhdGlvbnMgb2YgdGhlIGVsZW1lbnQuIiwKKyAgICAidGV4dC10cmFuc2Zvcm0iOiAiVGhl
IHRleHQtdHJhbnNmb3JtIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IHRvIGNhcGl0YWxpemUg
YW4gZWxlbWVudCdzIHRleHQuIEl0IGNhbiBiZSB1c2VkIHRvIG1ha2UgdGV4dCBhcHBlYXIgaW4g
YWxsLXVwcGVyY2FzZSBvciBhbGwtbG93ZXJjYXNlLCBvciB3aXRoIGVhY2ggd29yZCBjYXBpdGFs
aXplZC4iLAorICAgICJ0b3AiOiAiVGhlIHRvcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQg
b2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIEl0IGhhcyBubyBlZmZlY3Qg
b24gbm9uLXBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAidHJhbnNpdGlvbi1kZWxheSI6ICJU
aGUgdHJhbnNpdGlvbi1kZWxheSBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1l
IHRvIHdhaXQgYmV0d2VlbiBhIGNoYW5nZSBiZWluZyByZXF1ZXN0ZWQgdG8gYSBwcm9wZXJ0eSB0
aGF0IGlzIHRvIGJlIHRyYW5zaXRpb25lZCBhbmQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2l0aW9u
IGVmZmVjdC4iLAorICAgICJ0cmFuc2l0aW9uLWR1cmF0aW9uIjogIlRoZSB0cmFuc2l0aW9uLWR1
cmF0aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIG9yIG1p
bGxpc2Vjb25kcyBhIHRyYW5zaXRpb24gYW5pbWF0aW9uIHNob3VsZCB0YWtlIHRvIGNvbXBsZXRl
LiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMgMHMsIG1lYW5pbmcgdGhhdCBubyBhbmltYXRpb24g
d2lsbCBvY2N1ci4iLAorICAgICJ0cmFuc2l0aW9uLXByb3BlcnR5IjogIlRoZSB0cmFuc2l0aW9u
LXByb3BlcnR5IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWVzIG9mIENT
UyBwcm9wZXJ0aWVzIHRvIHdoaWNoIGEgdHJhbnNpdGlvbiBlZmZlY3Qgc2hvdWxkIGJlIGFwcGxp
ZWQuIiwKKyAgICAidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOiAiVGhlIHRyYW5zaXRpb24t
dGltaW5nLWZ1bmN0aW9uIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVzY3JpYmUgaG93IHRoZSBpbnRl
cm1lZGlhdGUgdmFsdWVzIG9mIHRoZSBDU1PCoHByb3BlcnRpZXMgYmVpbmcgYWZmZWN0ZWQgYnkg
YSB0cmFuc2l0aW9uIGVmZmVjdCBhcmUgY2FsY3VsYXRlZC4gVGhpcyBpbiBlc3NlbmNlIGxldHMg
eW91IGVzdGFibGlzaCBhbiBhY2NlbGVyYXRpb24gY3VydmUsIHNvIHRoYXQgdGhlIHNwZWVkIG9m
IHRoZSB0cmFuc2l0aW9uIGNhbiB2YXJ5IG92ZXIgaXRzIGR1cmF0aW9uLiIsCisgICAgInZlcnRp
Y2FsLWFsaWduIjogIlRoZSB2ZXJ0aWNhbC1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRo
ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiIsCisg
ICAgInZpc2liaWxpdHkiOiAiVGhlIHZpc2liaWxpdHkgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8g
aGlkZSBhbiBlbGVtZW50IHdoaWxlIGxlYXZpbmcgdGhlIHNwYWNlIHdoZXJlIGl0IHdvdWxkIGhh
dmUgYmVlbi4gSXQgY2FuIGFsc28gaGlkZSByb3dzIG9yIGNvbHVtbnMgb2YgYSB0YWJsZS4iLAor
ICAgICJ3aGl0ZS1zcGFjZSI6ICJUaGUgd2hpdGUtc3BhY2UgcHJvcGVydHkgaXMgdXNlZCB0byBk
ZXNjcmliZSBob3cgd2hpdGVzcGFjZSBpbnNpZGUgdGhlIGVsZW1lbnQgaXMgaGFuZGxlZC4iLAor
ICAgICJ3aWR0aCI6ICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgd2lkdGgg
b2YgdGhlIGNvbnRlbnQgYXJlYSBvZiBhbiBlbGVtZW50LiBUaGUgY29udGVudCBhcmVhIGlzIGlu
c2lkZSB0aGUgcGFkZGluZywgYm9yZGVyLCBhbmQgbWFyZ2luIG9mIHRoZSBlbGVtZW50LiIsCisg
ICAgIndvcmQtc3BhY2luZyI6ICJUaGUgd29yZC1zcGFjaW5nwqBwcm9wZXJ0eSBzcGVjaWZpZXMg
c3BhY2luZyBiZWhhdmlvciBiZXR3ZWVuIHRhZ3MgYW5kIHdvcmRzLiIsCisgICAgInotaW5kZXgi
OiAiVGhlIHotaW5kZXggcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB6LW9yZGVyIG9mIGFuIGVsZW1l
bnQgYW5kIGl0cyBkZXNjZW5kYW50cy4gV2hlbiBlbGVtZW50cyBvdmVybGFwLCB6LW9yZGVyIGRl
dGVybWluZXMgd2hpY2ggb25lIGNvdmVycyB0aGUgb3RoZXIuIEFuIGVsZW1lbnQgd2l0aCBhIGxh
cmdlciB6LWluZGV4IGdlbmVyYWxseSBjb3ZlcnMgYW4gZWxlbWVudCB3aXRoIGEgbG93ZXIgb25l
LiIKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258458</attachid>
            <date>2015-08-06 22:57:22 -0700</date>
            <delta_ts>2015-08-10 10:37:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150806225712.patch</filename>
            <type>text/plain</type>
            <size>94707</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE2YjI3ZTdiYzQyYTU0ZmMyMjRiZjMyODNhMDA5
MDg0ZmRkYzZkMGIuLjc1YjFmYzcwZDA5YjkyYTU5ZDllNTZlNWMzZDVlNGY3YWVhNzE0NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE1LTA4LTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01h
aW4uaHRtbDoKKyAgICAgICAgQWRkZWQgZmlsZXMgZm9yIGFsbCBuZXcgY2xhc3NlcyB1c2VkIGlu
IHRoZSBWaXN1YWxTdHlsZURldGFpbHNQYW5lbC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBl
LnNldCBjb2xsYXBzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnBy
b3RvdHlwZS5nZXQgZXhwYW5kZWRCeVVzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uLnByb3RvdHlwZS5faGVhZGVyRWxlbWVudENsaWNrZWQpOgorICAgICAgICBUcmFj
ayB3aGV0aGVyIG9yIG5vdCB0aGUgZXhwYW5kZWQgc3RhdGUgd2FzIGNhdXNlZCBieSB0aGUgdXNl
ci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1z
dHlsZS1zZWN0aW9uLWNsZWFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90
KC5tb2RpZmllZCkgPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyKToKKyAg
ICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gc3Bhbik6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRlciA+IHNwYW46OmFmdGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCk6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyk6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3Jv
dXAgPiAucm93LnZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93KToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAg
ICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWls
cy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3Qt
Y2hpbGQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZp
c3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0
b3Itc2VjdGlvbikpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUt
c2VsZWN0b3Itc2VjdGlvbikgaW5wdXQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5y
ZXBsYWNlRGFzaFdpdGhDYXBpdGFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5jcmVhdGVPcHRpb25zRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlU2VjdGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlUHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlFZGl0b3IpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fc2Vj
dGlvbk1vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX2NsZWFyTW9kaWZpZWRTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2luaXRpYWxQcm9wZXJ0eVRl
eHRNb2RpZmllZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9wb3B1bGF0ZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVEaXNwbGF5U2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlUG9zaXRpb25TZWN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUu
X3BvcHVsYXRlRmxvYXRTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycy5vbkVkaXRv
ck1vdXNlb3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMub25FZGl0b3JNb3VzZW91dCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVEaW1lbnNpb25zU2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZU1hcmdpblNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVQYWRkaW5nU2VjdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZUZsZXhib3hTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVGV4dFN0eWxlU2VjdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0
ZUZvbnRTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVGV4dFNwYWNpbmdTZWN0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVGV4
dFNoYWRvd1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCYWNrZ3JvdW5kU3R5bGVTZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVs
YXRlQm9yZGVyU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZU91dGxpbmVTZWN0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQm94
U2hhZG93U2VjdGlvbi5ub1JlbWFpbmluZ1RyZWVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJveFNoYWRvd1Nl
Y3Rpb24uc2VsZWN0ZWRCb3hTaGFkb3dJdGVtVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQm94U2hh
ZG93U2VjdGlvbi5ib3hTaGFkb3dJdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24ubm9SZW1haW5pbmdUcmVlSXRlbXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
cG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbi5zZWxlY3RlZHRyYW5zaXRpb25JdGVtVmFsdWVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24udHJhbnNpdGlvbkl0ZW1TZWxlY3RlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uKToKKwogMjAxNS0wOC0wNSAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSB0aGUg
TWV0cmljcyBzdHlsZSBzaWRlYmFyIHBhbmVsIGludG8gQ29tcHV0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzCmluZGV4IDA3ZTlhYzE5Njg1ZDJlNjFhZjM3NjljZjZkNDRlNGQ5NmQ1
YzBiNmYuLjcyMDY4OWVjZGVjYjY2Y2Y3ZWFhMzQ2N2IxOTUwN2MxMDc0YjUzYTkgMTAwNjQ0CkdJ
VCBiaW5hcnkgcGF0Y2gKZGVsdGEgMzM5OAp6Y21hKTllUVotejZ1KW8lKmhhVGYlMVJsdHZ8fXY4
dCM1QyRFfH1vciphcj4qYzhzeHNzOURgUXNCQ01+YzZgUm4Kejg2aEUleE50Jkg2ckNWezAxayNY
a1B0K2dEMVZSYFN6P1NKMVNUNWUyU0V0WTFUKVpjP2pHYTRjMD5RQC1uK2taCno/enpBN0B5QHlY
PlBfUlYmeH1KUz83MVBmbVVYaV4+fUJSKm1IMzsoN1AzeDtENn1AbkBRMjtaeHhGKGp5XzNhSgp6
U09jUktjfGAkSz0pX2VJWlZWd0ZPVzhpSW8yfURAe3NUJVRuSUQlPWVKSjArPSZmaD5iY2JuREEr
K2A+K35wV0IKeno/dUQ3a1U3Zl5hJW5MP0kmKzVFNjx9Pl9UQHNCcjl3VHR4S2xASWFMYSohNSoo
ZUpPPUl1SzVZTjR1O2dVdXpvCnoyI3VrU2RKazA7MkdWNWMmNXR7Z0goSiQodSRwezxwPSNNKGpp
KklmSX00XzAycG89OEQrUSFPV1clZzAkO3ZubQp6UnB9LUNQSlhGcnk3cmhGSlNOQmpiUCRBIz83
WE9HaVpMJk1yP3EydDB7SDdqQGtWQDdtViZHY08xPTR5bUQ+KTwKejs0Wk9HczFycG1Ad2lFQ0pk
fV53bjMwRlgmfVI/JjZoPU5GKWA3cEVVPjFSZmR2MilvK1RDcXE0bT9LQjBzYVRgCnpra2lONldG
dispVWxsQ2daKi0rVUpoOUJ7UEwmIV4zZDN5KmBDfCFVQnFySUpFWXQ0OHN0QDdMXzJsI1R5Qlpf
Iwp6ZG40VEUtNmMmVTJSRVE9OXdhdWQ/dWImclF6WXRVaSQpNk1pWTdzbSVHQUM1alFwWXpZbVZ3
aVVrcVdeMzZjOD4KenBaMygzKzNwJXFsKDdsYXM5MGt7QCFSS0tGcSt5KDElfiFKRXd4Qmx0Z3hn
IWMzJlpfSjF9bVBfcWdzWGpSWGQyCnolNXl0V1lqY1ZRcUZeaEt4eDRsP0x3WGspPiZBMTNhdlhT
MjJ4QncwOShsJVJxSURGaVBVb3NgdCo3VGgkem1JUAp6eDg0STY+Z2hRSCZlYXgheXg1QkdJZEh0
IXNeVTN0ejFKJnJGVmAzSWJNPn5nMDstWS1HRVFZUUUrSk4rRUhtP08Kem1pI2k7KGsocz9EJUFp
YXdtUCF3a1NCZEVXNX42d3pEZ1p9ZFE/b3J6ZnxZKUJ3OWR1dnFZeHdGVHo8U0gqRXxkCnpKQUpl
azM0QDNXVz5Zc0p2LWx9UGV2b2EjYXU0SFFaSzQ8OWMyeHF5OE0yR2tWS2tzbWslfmdYRSFSRUxw
dGpJMAp6SzA+djNCbyl6UEdeeHcqWkpYWjdhNlhUbCFxYGB8cSE1RXdEelFFSD9LNDhwY0FHXmJn
dmZSV0VLRCF2ZHxRc3UKekxCWjdzKjx2Q0RXbjBWbnhnRkx0WHhWOVZjOENNSUZ3JXdFKShaX2dv
JDBDISU0VjB0Z2BHcHI3eygmaVU8Xms3CnpSKFF7QHQwcEphdXdHIyladDAtRk5LMnVyKk5LMHhl
Tzx4KnlLa0VASnk5R0heYzhDPEYya3Feb014aGZSe0QkfQp6TFlkJXw/O2VuKkMydE1VQ1ZwayNS
amFFNXNpZ0F0QlpAZE5oTGVYSV5KITJ+S2hUJG1BQiRSKmgkMWxAWD9DV0wKejYraU45cj1iRyFR
NXoyKWBBTmNXbGlVZ0Y5UDtCZzlmI3E9Nn07e2Z0NWl0Y0R+Y1NiamBWNXVpX1J1d2x3TWRxCnp4
SX04LTlkQEtRQVFfeDlrak85UmRrMz9PP2w1e3J0VjN1K0FBJHglVm8+JlVnLV5VYHZeO0U7akBB
VG5DX0FBagp6VEZWfWBgYWt4cGhXPHwjZSgxI2FoUCghSkR+eTM3X21UbiVxdDduankoYiRiN1km
dmtaSm5ZME0mVGFmVWByX2MKejs7OWVKMEIye3khQmJ3aWY3WkA+JmR4UEJsSXlNIWp+VUQydUwm
RCRKOHklJTNHN3FuaX1+K340M21Re1RJLVQzCnp1QFA/ZmBTX2psWilOSntgVStJVUBLVkdOaEF3
OGgqQ0JsfFMjK00wbWNYSV5Kc0grc3N5QnEjN0FVKm81S2xfWAp6OzNjelV6QGtDV0RWX3UjemRT
NnRCZTtfV3dFaHliMHopTm15OFE2aHVNOE0xOXQ/JDtgey1LaGIqRCtKcD1faioKenlHTCRIdTsp
ZTt4Xys9KG52cWAmNzRaXkJZTXxWKFljVzIyPEloYV5YeXEoUjZPdHhYNTM3VCE8QDVRT28xNHNl
CnpHITRrVndMMVRyNWJMND5iMk4hMFlRSVFDO1B4OWJ5blEhfFNLZ2d4ZldiQWhxJGM9biY0TVNK
JjtARjgrTT5+Swp6UnBuSFlKbit9MHZfZ3REb2xlJml0P0VpZD4wVCtNO0hnbyM/X1EmIXBjdyVR
SmkrP1RHQTtxekZ7UHdndC1CQiEKenExJnoyYmRuNWdxakVtUUM0PiMxPTBqPSZ6ITFZSz5qSm53
WVVNQyRtOVZpKlI4bFEpdEZOTkdNVEQ4QTchNTx9Cno4fk8mMkI4UkZjV2NjdkB3ZHdpQHZ8IXw7
UjFMODRLfVQrajJ5SH4/aGA+WkgtMmEmUWp9SUU4LWJYalMmNnd2bgp6UWxaUHkqZFFaOV5kM34z
NGF2aVpYbTczUnt7bCZyfEZfa2Q7PnRVTFMkSnUkdWMlOXVHeGFJREI8UTF9azxyejAKZWs1QSU4
d3VROz9gM3xRQXBKVEhNQDQmK3UtYVM3ezlzZEZeYXdCO0YKCmRlbHRhIDQ2Mgp6Y21ZK0FPLUt9
Ujd7PSRGYFJfMzkmV184bFowJV5GV1ZHZE9BX05qMUpRKWNvVnBmTUJnKGJtNTUlJUd3cU5MNCgK
emgwclVFWDA9ZzcmPyohVUc+fVd9I2U9TGQ2dCMjUyl1RStCdXpmJSt0fUx9a21ybFJtXklSVHkz
VGQlOEJBen1vCnp2MDxLO2BTQkpEKzBacUcraURDcileODZzPk19Q044OzBRUWpDdjRqR3pJVCZ6
UXdWOVhaVGxCRWg7M0F3TTVgPQp6Kig7RH0mR145YFQ+Pmp6MH0zYTViKUZpbzxOZHZYM1BaZCQ5
TzNDcjVBeEphPDZqQGQhcj09dD8+YzU2ZEd0ZEEKekl4WXIxTkxfdVE7T3pBWTRWfmsrMT09Uzkw
dUx1dW5SaVVqQWJlLVpnVCNZXjNneVh0TE8hKSp1eTN4TFhYa28yCnpuYnZWNntoMldLKG82akgp
aj1kT25tfUBYUmwlRXU5JTlaMGBRd1ppPEpycTlqPXptNmpBZV53YjJ8VDdqYEhqRwp6MkFYcHZm
JTdYUFJlVU9NYShQV2hKZkc4ZXZ+VTE1LXZxSm1NK2w/ZXBJMFYrLVYrIXI3UmM4cm9zYFo9TCgt
clcKej1QVD10fEsoNWxDaGw5bSFFUS1veDQhYTdRUSExKHtUX0NVSV4wciFsXnJHdUlGQUlLUTA7
MHpkN1ptSGlZVSZkCnBZSS1MLURVJUs8UEJ9IWlXWTJHPFJyXmJyYGZiLUQpblNYZSR5VC16WTs4
TFlgfl8tPiNGcWQ3CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCmluZGV4IDk3YzZjNzMzYWNhODEzYjkwOTNhN2E5MzhlYmI5YTFlNDU2YWE3YjUuLjRj
MDYyNWVkNDcwNWRmZGU2NDExOWZlYTY0OTYwNTRlYzYwYTU1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTE2Miw2ICsxNjIsMTkgQEAK
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUb2tlblZpZXcuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlRWxlbWVu
dC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVW
aWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxT
dHlsZUNvbG9yUGlja2VyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5jc3MiPgorICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
Y3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxl
VGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmNzcyI+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlz
dC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcyI+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
TGluay5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFs
U3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRl
bS5jc3MiPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9D
b2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JEcmFnVG9BZGp1c3ROdW1iZXJDb250
cm9sbGVyLmNzcyI+CkBAIC01NDAsNiArNTUzLDI2IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5
cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9W
aXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5Q29tYmluZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRp
dG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVGb250
RmFtaWx5VHJlZUl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZUtleXdvcmRDaGVja2JveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1Zpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlk
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3Bl
cnR5TmFtZUlucHV0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFs
U3R5bGVVUkxJbnB1dC5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
Q29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KIApAQCAtNTc0LDYgKzYw
Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3Rh
dG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVmlzdWFsU3R5
bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9
IkJhc2UvTWFpbi5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5qcwppbmRleCBkNWNhNjNhMDliYTE0MTYzMWE2N2NhMjVmZmQwNThhMzE1
YThhZmMzLi43NzRhNzg5ZjFlZWQ3YWRjNmIxMDk4ZDgwODczYzhmYmE5N2NkNWFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC02OCwxMiArNjgs
MTMgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKIAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0
eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdl
Ykluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOworICAgICAgICB0aGlzLl92
aXN1YWxTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVudC5S
ZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3J1
bGVzU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVE
ZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMp
OwogCi0gICAgICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsXTsKLSAgICAgICAgdGhpcy5fcGFuZWxO
YXZpZ2F0aW9uSW5mbyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRp
b25JbmZvLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvXTsKKyAg
ICAgICAgdGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRo
aXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVs
Lm5hdmlnYXRpb25JbmZvXTsKKyAgICAgICAgdGhpcy5fcGFuZWxOYXZpZ2F0aW9uSW5mbyA9IFt0
aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9ydWxl
c1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl92aXN1YWxTdHlsZURldGFp
bHNQYW5lbC5uYXZpZ2F0aW9uSW5mb107CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2Vj
dGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtc3R5
bGUtZGV0YWlscy1wYW5lbCIsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlv
bkluZm8uaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKaW5kZXggODRiM2EzOTcx
ODk3NmRkYjE4Y2U4ZGM3Nzc2OTJjNjQ1OGI3ZTAwMS4uZDhhMjRlZWQ0ZWMyYWRjZDM0ZDY2MTYw
MjQ2YWMxYzlmMDEwOTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKQEAgLTYxLDYgKzYxLDcg
QEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fY29sbGFwc2VkU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNlY3Rp
b24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKTsKICAgICAgICAg
dGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nLnZhbHVlOworICAgICAgICB0
aGlzLl9leHBhbmRlZEJ5VXNlciA9IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAt
MTE1LDYgKzExNiwxMSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRh
aWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRoaXMu
X2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyb3Vwc1tpXS5lbGVtZW50KTsKICAg
ICB9CiAKKyAgICBnZXQgZXhwYW5kZWRCeVVzZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2V4cGFuZGVkQnlVc2VyOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9oZWFk
ZXJFbGVtZW50Q2xpY2tlZChldmVudCkKQEAgLTEyMiw3ICsxMjgsOSBAQCBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQodGhp
cy5fb3B0aW9uc0VsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMu
Y29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkOworICAgICAgICB2YXIgY29sbGFwc2VkID0gdGhp
cy5jb2xsYXBzZWQ7CisgICAgICAgIHRoaXMuY29sbGFwc2VkID0gIWNvbGxhcHNlZDsKKyAgICAg
ICAgdGhpcy5fZXhwYW5kZWRCeVVzZXIgPSBjb2xsYXBzZWQ7CiAKICAgICAgICAgdGhpcy5fZWxl
bWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEyZTljMmYwMGNiZWZjMGNj
NDhkZjhjNWFmN2NjMWJiYzA3YWUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcwpA
QCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5o
ZWFkZXIgeworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVs
LmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNl
Y3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDVweDsKKyAgICB3aWR0aDogMTVweDsKKyAgICBo
ZWlnaHQ6IDE1cHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1jYW52YXMobmF2aWdh
dGlvbi1pdGVtLWNsZWFyLWxvZy1ub3JtYWwpOworICAgIGJhY2tncm91bmQtc2l6ZTogMTVweCAx
NXB4OworICAgIC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5KDAuNyk7Cit9CisKKy5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRh
aWxzLXNlY3Rpb24uY29sbGFwc2VkID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1j
bGVhciwKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90KC5tb2RpZmllZCkgPiAuaGVhZGVyID4g
LnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2Vj
dGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4geworICAgIGRpc3BsYXk6IGZs
ZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAu
ZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9kaWZpZWQgPiAuaGVhZGVyID4gc3Bh
bjo6YWZ0ZXIgeworICAgIHdpZHRoOiA3cHg7CisgICAgaGVpZ2h0OiA3cHg7CisgICAgbWFyZ2lu
OiA0cHggNnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMjEyLCA5MiUsIDU0JSk7CisgICAgLXdlYmtpdC1maWx0ZXI6IG9wYWNpdHkoMC41KTsK
KyAgICBjb250ZW50OiAiIjsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50
IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAu
Y29udGVudCAuZ3JvdXAgPiAucm93IHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisuc2lkZWJh
ciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAu
ZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0LWNoaWxkIHsKKyAg
ICBwYWRkaW5nLWJvdHRvbTogM3B4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNv
bnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyB7CisgICAgYm9y
ZGVyLWJvdHRvbTogMC41cHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIG1hcmdpbi1ib3R0
b206IDVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMnB4OworfQorCisuc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgd2lkdGg6IDU1
cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAu
ZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQp
Omxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1yaWdodDogMTFweDsKK30KKworLnNpZGViYXIgPiAu
cGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rp
b246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbikgeworICAgIC13ZWJraXQtZmls
dGVyOiBvcGFjaXR5KDAuNSk7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0YWls
cy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pIGlucHV0IHsKKyAg
ICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNiNTIxMTMyNzZlM2MwMDk0NTliZmFhNmE2ZWFjOTg3NmYx
MTM4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0wLDAgKzEsMTExMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNz
IFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsCit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBl
cihkZWxlZ2F0ZSwgInZpc3VhbCIsICJ2aXN1YWwiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0
eWxlcyBcdTIwMTQgVmlzdWFsIikpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wcm9wZXJ0eVJl
ZmVyZW5jZUluZm9UZW1wID0ge307CisgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZSA9IG51bGw7
CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSB7fTsKKyAgICAgICAgdGhpcy5fZ3JvdXBzID0g
e307CisgICAgICAgIHRoaXMuX2tleXdvcmRzID0ge307CisgICAgICAgIHRoaXMuX3VuaXRzID0g
e307CisgICAgICAgIHRoaXMuX2F1dG9jb21wbGV0aW9uUHJvcGVydHlFZGl0b3JzID0ge307CisK
KyAgICAgICAgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMgPSBbIkluaGVyaXQiLCAiSW5pdGlhbCJd
OworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1
bHRzLmNvbmNhdChbIkF1dG8iXSk7CisgICAgICAgIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxl
ID0geworICAgICAgICAgICAgYmFzaWM6IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChb
Ik5vbmUiLCAiSGlkZGVuIiwgIlNvbGlkIl0pLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiRGFz
aGVkIiwgIkRvdHRlZCIsICJEb3VibGUiLCAiR3Jvb3ZlIiwgIkhpZGRlbiIsICJJbnNldCIsICJO
b25lIiwgIk91dHNldCIsICJSaWRnZSIsICJTb2xpZCJdCisgICAgICAgIH07CisgICAgICAgIHRo
aXMuX2tleXdvcmRzLmJvcmRlcldpZHRoID0gdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0
KFsiTWVkaXVtIiwgIlRoaWNrIiwgIlRoaW4iXSk7CisKKyAgICAgICAgdGhpcy5fdW5pdHMuZGVm
YXVsdHNTYW5zUGVyY2VudCA9IHsKKyAgICAgICAgICAgIGJhc2ljOiBbInB4IiwgImVtIl0sCisg
ICAgICAgICAgICBhZHZhbmNlZDogWyJjaCIsICJjbSIsICJleCIsICJpbiIsICJtbSIsICJwYyIs
ICJwdCIsICJyZW0iLCAidmgiLCAidnciLCAidm1heCIsICJ2bWluIl0KKyAgICAgICAgfTsKKyAg
ICAgICAgdGhpcy5fdW5pdHMuZGVmYXVsdHMgPSB7CisgICAgICAgICAgICBiYXNpYzogWyIlIl0u
Y29uY2F0KHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQuYmFzaWMpLAorICAgICAgICAg
ICAgYWR2YW5jZWQ6IHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQuYWR2YW5jZWQKKyAg
ICAgICAgfTsKKworICAgICAgICAvLyBTZWxlY3RvciBTZWN0aW9uCisgICAgICAgIHRoaXMuX3Nl
bGVjdG9yU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rp
b24odGhpcyk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TZWxlY3RvckNo
YW5nZWQsIHRoaXMuX3VwZGF0ZVNlY3Rpb25zLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvclNlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAg
Ly8gTGF5b3V0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJkaXNwbGF5
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNwbGF5IikpOworICAgICAgICB0aGlzLl9nZW5l
cmF0ZVNlY3Rpb24oInBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbG9hdCIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRmxvYXQgYW5kIENsZWFyIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rp
b24oImRpbWVuc2lvbnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVuc2lvbnMiKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigibWFyZ2luIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJNYXJnaW4iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigicGFkZGluZyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFkZGluZyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJh
dGVTZWN0aW9uKCJmbGV4Ym94IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbGV4Ym94IikpOwor
CisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmxheW91dCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oImxheW91dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0IiksIFt0aGlz
Ll9ncm91cHMuZGlzcGxheS5zZWN0aW9uLCB0aGlzLl9ncm91cHMucG9zaXRpb24uc2VjdGlvbiwg
dGhpcy5fZ3JvdXBzLmZsb2F0LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25zLnNlY3Rp
b24sIHRoaXMuX2dyb3Vwcy5tYXJnaW4uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnBhZGRpbmcuc2Vj
dGlvbiwgdGhpcy5fZ3JvdXBzLmZsZXhib3guc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmxheW91dC5lbGVtZW50KTsKKworICAgICAg
ICAvLyBUZXh0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXN0
eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVTZWN0aW9uKCJmb250IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250IikpOworICAg
ICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQtc3BhY2luZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3BhY2luZyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0
LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93IikpOworCisgICAgICAgIHRo
aXMuX3NlY3Rpb25zLnRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJ0ZXh0
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUZXh0IiksIFt0aGlzLl9ncm91cHMudGV4dFN0eWxl
LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mb250LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy50ZXh0U3Bh
Y2luZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMudGV4dFNoYWRvdy5zZWN0aW9uXSk7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMudGV4dC5lbGVtZW50KTsK
KworICAgICAgICAvLyBCYWNrZ3JvdW5kIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVT
ZWN0aW9uKCJiYWNrZ3JvdW5kLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3JkZXIiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkJvcmRlciIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJvdXRs
aW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRsaW5lIikpOworICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRv
dyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbigiYmFja2dyb3VuZCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QmFja2dyb3VuZCIpLCBbdGhpcy5fZ3JvdXBzLmJhY2tncm91bmRTdHlsZS5zZWN0aW9uLCB0aGlz
Ll9ncm91cHMuYm9yZGVyLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5vdXRsaW5lLnNlY3Rpb24sIHRo
aXMuX2dyb3Vwcy5ib3hTaGFkb3cuc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmJhY2tncm91bmQuZWxlbWVudCk7CisKKyAgICAgICAg
Ly8gQW5pbWF0aW9uIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0cmFu
c2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2l0aW9uIikpOworCisgICAgICAg
IHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24oImFuaW1hdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0aW9uIiksIFt0aGlz
Ll9ncm91cHMudHJhbnNpdGlvbi5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMuYW5pbWF0aW9uLmVsZW1lbnQpOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgcmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkKKyAgICB7CisgICAg
ICAgIGlmIChzaWduaWZpY2FudENoYW5nZSkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JT
ZWN0aW9uLnVwZGF0ZSh0aGlzLl9ub2RlU3R5bGVzKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZVNlY3Rpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBzdXBlci5yZWZyZXNoKCk7CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2dlbmVyYXRlU2VjdGlvbihpZCwgZGlzcGxheU5h
bWUpCisgICAgeworICAgICAgICBpZiAoIWlkIHx8ICFkaXNwbGF5TmFtZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmdW5jdGlvbiByZXBsYWNlRGFzaFdpdGhDYXBpdGFsKG1hdGNo
KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZSgiLSIsICIiKS50b1VwcGVyQ2Fz
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGNhbWVsQ2FzZUlkID0gaWQucmVwbGFjZSgv
LVxiXHcvZywgcmVwbGFjZURhc2hXaXRoQ2FwaXRhbCk7CisKKyAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlT3B0aW9uc0VsZW1lbnQoKSB7CisgICAgICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0
LmFkZCgidmlzdWFsLXN0eWxlLXNlY3Rpb24tY2xlYXIiKTsKKyAgICAgICAgICAgIGNvbnRhaW5l
ci50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gY2xlYXIgbW9kaWZpZWQg
cHJvcGVydGllcyIpOworICAgICAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fY2xlYXJNb2RpZmllZFNlY3Rpb24uYmluZCh0aGlzLCBjYW1lbENhc2VJZCkp
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2dyb3Vwc1tjYW1lbENhc2VJZF0gPSB7CisgICAgICAgICAgICBzZWN0aW9uOiBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKGlkLCBkaXNwbGF5TmFtZSwgW10sIGNyZWF0ZU9wdGlv
bnNFbGVtZW50LmNhbGwodGhpcykpLAorICAgICAgICAgICAgcHJvcGVydGllczoge30KKyAgICAg
ICAgfTsKKworICAgICAgICBsZXQgcG9wdWxhdGVGdW5jdGlvbiA9IHRoaXNbIl9wb3B1bGF0ZSIg
KyBjYW1lbENhc2VJZC5jYXBpdGFsaXplKCkgKyAiU2VjdGlvbiJdOworICAgICAgICBwb3B1bGF0
ZUZ1bmN0aW9uLmNhbGwodGhpcyk7CisgICAgfQorCisgICAgX3VwZGF0ZVNlY3Rpb25zKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFN0eWxlID0gdGhpcy5fc2VsZWN0b3JTZWN0
aW9uLmN1cnJlbnRTdHlsZSgpOworICAgICAgICBpZiAoIXRoaXMuX2N1cnJlbnRTdHlsZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgZGlzYWJsZWQgPSB0aGlzLl9jdXJyZW50
U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRT
eW1ib2xdOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImRpc2FibGVk
IiwgZGlzYWJsZWQpOworICAgICAgICBpZiAoZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuX2dyb3VwcykKKyAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5fZ3JvdXBzW2tleV0sICEhZXZlbnQpOworCisgICAg
ICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9zZWN0aW9ucykgeworICAgICAgICAgICAgbGV0IHNl
Y3Rpb24gPSB0aGlzLl9zZWN0aW9uc1trZXldOworICAgICAgICAgICAgbGV0IG9uZVNlY3Rpb25F
eHBhbmRlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2Ygc2VjdGlvbi5n
cm91cHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmNvbGxhcHNlZCkgeworICAgICAg
ICAgICAgICAgICAgICBvbmVTZWN0aW9uRXhwYW5kZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHNlY3Rpb24uY29sbGFwc2VkID0gIW9uZVNlY3Rpb25FeHBhbmRlZDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIF91cGRhdGVQcm9wZXJ0aWVzKGdyb3VwLCBmb3JjZVN0eWxlVXBkYXRlKQor
ICAgIHsKKyAgICAgICAgaWYgKCFncm91cC5zZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGxldCBpbml0aWFsVGV4dExpc3QgPSB0aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0
TGlzdFN5bWJvbF07CisgICAgICAgIGlmICghaW5pdGlhbFRleHRMaXN0KQorICAgICAgICAgICAg
dGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5J
bml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1ib2xdID0gaW5pdGlhbFRleHRMaXN0ID0g
bmV3IFdlYWtNYXA7CisKKyAgICAgICAgbGV0IGluaXRpYWxQcm9wZXJ0eVRleHQgPSB7fTsKKyAg
ICAgICAgbGV0IGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nID0gIWluaXRpYWxUZXh0TGlzdC5o
YXMoZ3JvdXApOworICAgICAgICBsZXQgb25lUHJvcGVydHlIYXNWYWx1ZSA9IGZhbHNlOworICAg
ICAgICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykgeworICAgICAgICAgICAgbGV0
IHByb3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXldOworICAgICAgICAgICAgcHJv
cGVydHlFZGl0b3IudXBkYXRlKCFwcm9wZXJ0eUVkaXRvci5zdHlsZSB8fCBmb3JjZVN0eWxlVXBk
YXRlID8gdGhpcy5fY3VycmVudFN0eWxlIDogbnVsbCk7CisKKyAgICAgICAgICAgIGxldCB2YWx1
ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgICAgICBpZiAodmFs
dWUgJiYgIXByb3BlcnR5RWRpdG9yLnByb3BlcnR5TWlzc2luZykgeworICAgICAgICAgICAgICAg
IG9uZVByb3BlcnR5SGFzVmFsdWUgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChpbml0aWFs
UHJvcGVydHlUZXh0TWlzc2luZykKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFByb3BlcnR5
VGV4dFtrZXldID0gdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICBpbml0aWFsVGV4dExp
c3Quc2V0KGdyb3VwLCBpbml0aWFsUHJvcGVydHlUZXh0KTsKKworICAgICAgICBncm91cC5zZWN0
aW9uLmNvbGxhcHNlZCA9ICFvbmVQcm9wZXJ0eUhhc1ZhbHVlICYmICFncm91cC5zZWN0aW9uLmV4
cGFuZGVkQnlVc2VyOworICAgICAgICB0aGlzLl9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApOworCisg
ICAgICAgIGxldCBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IGdyb3VwLmF1dG9j
b21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzOworICAgICAgICBpZiAoIWF1dG9jb21wbGV0ZUNv
bXBhdGlibGVQcm9wZXJ0aWVzIHx8ICFhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcy5s
ZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgZWRpdG9yIG9m
IGF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlQXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnR5RWRpdG9yKGVkaXRvciwgZm9yY2VTdHls
ZVVwZGF0ZSk7CisgICAgfQorCisgICAgX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9w
ZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlKQorICAgIHsKKyAgICAgICAgaWYgKCFlZGl0b3IgfHwg
KGVkaXRvci5oYXNDb21wbGV0aW9ucyAmJiAhZm9yY2UpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGVkaXRvci5jb21wbGV0aW9ucyA9IFdlYkluc3BlY3Rvci5DU1NLZXl3b3JkQ29t
cGxldGlvbnMuZm9yUHJvcGVydHkoZWRpdG9yLnByb3BlcnR5UmVmZXJlbmNlTmFtZSk7CisgICAg
fQorCisgICAgX3NlY3Rpb25Nb2RpZmllZChncm91cCkKKyAgICB7CisgICAgICAgIGdyb3VwLnNl
Y3Rpb24uZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJtb2RpZmllZCIsIHRoaXMuX2luaXRpYWxQ
cm9wZXJ0eVRleHRNb2RpZmllZChncm91cCkpOworICAgIH0KKworICAgIF9jbGVhck1vZGlmaWVk
U2VjdGlvbihncm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBz
W2dyb3VwSWRdOworICAgICAgICBncm91cC5zZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZSgibW9kaWZpZWQiKTsKKyAgICAgICAgbGV0IGluaXRpYWxQcm9wZXJ0eVRleHRMaXN0ID0gdGhp
cy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0
aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1ib2xdLmdldChncm91cCk7CisgICAgICAgIGlm
ICghaW5pdGlhbFByb3BlcnR5VGV4dExpc3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGxldCBp
bml0aWFsVmFsdWUgPSBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXldOworICAgICAgICAgICAg
bGV0IHVwZGF0ZWRWYWx1ZXMgPSBwcm9wZXJ0eUVkaXRvci5nZXRWYWx1ZXNGcm9tVGV4dChpbml0
aWFsVmFsdWUsICFpbml0aWFsVmFsdWUpOworICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBk
YXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpOworICAgICAgICB9CisgICAgfQorCisgICAg
X2luaXRpYWxQcm9wZXJ0eVRleHRNb2RpZmllZChncm91cCkKKyAgICB7CisgICAgICAgIGlmICgh
Z3JvdXAucHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBs
ZXQgaW5pdGlhbFByb3BlcnR5VGV4dExpc3QgPSB0aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlz
dFN5bWJvbF0uZ2V0KGdyb3VwKTsKKyAgICAgICAgaWYgKCFpbml0aWFsUHJvcGVydHlUZXh0TGlz
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4g
Z3JvdXAucHJvcGVydGllcykgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5RWRpdG9yID0gZ3Jv
dXAucHJvcGVydGllc1trZXldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5RWRpdG9yLnByb3Bl
cnR5TWlzc2luZykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbGV0
IHZhbHVlID0gcHJvcGVydHlFZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSAmJiBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXldICE9PSB2YWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBncm91cHMpCisgICAgewor
ICAgICAgICBpZiAoIWdyb3VwIHx8ICFncm91cHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZ3JvdXAuc2VjdGlvbi5ncm91cHMgPSBncm91cHM7CisgICAgICAgIGZvciAobGV0IGtl
eSBpbiBncm91cC5wcm9wZXJ0aWVzKQorICAgICAgICAgICAgZ3JvdXAucHJvcGVydGllc1trZXld
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
RXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX3NlY3Rpb25Nb2RpZmllZC5iaW5kKHRoaXMsIGdy
b3VwKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGlzcGxheVNlY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRpc3BsYXk7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZGlzcGxheVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5k
aXNwbGF5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpc3Bs
YXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc3BsYXkiKSwgeworICAgICAgICAgICAgYmFz
aWM6IFsiTm9uZSIsICJCbG9jayIsICJGbGV4IiwgIklubGluZSIsICJJbmxpbmUgQmxvY2siXSwK
KyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbXBhY3QiLCAiSW5saW5lIEZsZXgiLCAiSW5saW5l
IFRhYmxlIiwgIkxpc3QgSXRlbSIsICJUYWJsZSIsICJUYWJsZSBDYXB0aW9uIiwgIlRhYmxlIENl
bGwiLCAiVGFibGUgQ29sdW1uIiwgIlRhYmxlIENvbHVtbiBHcm91cCIsICJUYWJsZSBGb290ZXIg
R3JvdXAiLCAiVGFibGUgSGVhZGVyIEdyb3VwIiwgIlRhYmxlIFJvdyIsICJUYWJsZSBSb3cgR3Jv
dXAiLCAiIFdBUCBNYXJxdWVlIiwgIiBXZWJraXQgQm94IiwgIiBXZWJraXQgR3JpZCIsICIgV2Vi
a2l0IElubGluZSBCb3giLCAiIFdlYmtpdCBJbmxpbmUgR3JpZCJdCisgICAgICAgIH0pOworICAg
ICAgICBwcm9wZXJ0aWVzLnZpc2liaWxpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
S2V5d29yZFBpY2tlcigidmlzaWJpbGl0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmlzaWJp
bGl0eSIpLCB7CisgICAgICAgICAgICBiYXNpYzogWyJIaWRkZW4iLCAiVmlzaWJsZSJdLAorICAg
ICAgICAgICAgYWR2YW5jZWQ6IFsiQ29sbGFwc2UiXQorICAgICAgICB9KTsKKworICAgICAgICBk
aXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5kaXNwbGF5LmVsZW1lbnQp
OworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52aXNp
YmlsaXR5LmVsZW1lbnQpOworCisgICAgICAgIGxldCBzaXppbmdSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm94U2l6aW5nID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJveC1zaXppbmciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemluZyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJCb3JkZXIgQm94IiwgIkNvbnRlbnQgQm94Il0pKTsKKyAgICAgICAgcHJvcGVydGll
cy5jdXJzb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiY3Vy
c29yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDdXJzb3IiKSwgeworICAgICAgICAgICAgYmFz
aWM6IFsiQXV0byIsICJEZWZhdWx0IiwgIk5vbmUiLCAiUG9pbnRlciIsICJDcm9zc2hhaXIiLCAi
VGV4dCJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29udGV4dCBNZW51IiwgIkhlbHAiLCAi
UHJvZ3Jlc3MiLCAiV2FpdCIsICJDZWxsIiwgIlZlcnRpY2FsIFRleHQiLCAiQWxpYXMiLCAiQ29w
eSIsICJNb3ZlIiwgIk5vIERyb3AiLCAiTm90IEFsbG93ZWQiLCAiQWxsIFNjcm9sbCIsICJDb2wg
UmVzaXplIiwgIlJvdyBSZXNpemUiLCAiTiBSZXNpemUiLCAiRSBSZXNpemUiLCAiUyBSZXNpemUi
LCAiVyBSZXNpemUiLCAiTlMgUmVzaXplIiwgIkVXIFJlc2l6ZSIsICJORSBSZXNpemUiLCAiTlcg
UmVzaXplIiwgIlNFIFJlc2l6ZSIsICJzVyBSZXNpemUiLCAiTkVTVyBSZXNpemUiLCAiTldTRSBS
ZXNpemUiXQorICAgICAgICB9KTsKKworICAgICAgICBzaXppbmdSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmJveFNpemluZy5lbGVtZW50KTsKKyAgICAgICAgc2l6aW5nUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jdXJzb3IuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IG92ZXJmbG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzLm9wYWNpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
VW5pdFNsaWRlcigib3BhY2l0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3BhY2l0eSIpKTsK
KyAgICAgICAgcHJvcGVydGllcy5vdmVyZmxvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkUGlja2VyKFsib3ZlcmZsb3cteCIsICJvdmVyZmxvdy15Il0sIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiT3ZlcmZsb3ciKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiSW5pdGlhbCIs
ICJBdXRvIiwgIkhpZGRlbiIsICJTY3JvbGwiLCAiVmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2
YW5jZWQ6IFsiTWFycXVlZSIsICJPdmVybGF5IiwgIiBXZWJraXQgUGFnZWQgWCIsICIgV2Via2l0
IFBhZ2VkIFkiXQorICAgICAgICB9KTsKKworICAgICAgICBvdmVyZmxvd1Jvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMub3BhY2l0eS5lbGVtZW50KTsKKyAgICAgICAgb3ZlcmZsb3dS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm92ZXJmbG93LmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBkaXNwbGF5R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAoW2Rpc3BsYXlSb3csIHNpemluZ1Jvdywgb3ZlcmZsb3dSb3ddKTsKKyAgICAgICAgdGhp
cy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGlzcGxheUdyb3VwXSk7CisgICAgfQorCisgICAg
X2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsIHByZWZpeCwgYWxsb3dOZWdhdGl2ZXMp
CisgICAgeworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAg
ICAgICAgbGV0IGhhc1ByZWZpeCA9IHByZWZpeCAmJiBwcmVmaXgubGVuZ3RoOworICAgICAgICBs
ZXQgcHJvcGVydHlOYW1lUHJlZml4ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIi0iIDogIiI7CisK
KyAgICAgICAgbGV0IHRvcCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJUb3AiIDogInRvcCI7Cisg
ICAgICAgIGxldCBib3R0b20gPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiQm90dG9tIiA6ICJib3R0
b20iOworICAgICAgICBsZXQgbGVmdCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJMZWZ0IiA6ICJs
ZWZ0IjsKKyAgICAgICAgbGV0IHJpZ2h0ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIlJpZ2h0IiA6
ICJyaWdodCI7CisKKyAgICAgICAgbGV0IHZlcnRpY2FsID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW3RvcF0gPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgInRvcCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0
aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBwcm9wZXJ0aWVz
W2JvdHRvbV0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJv
cGVydHlOYW1lUHJlZml4ICsgImJvdHRvbSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90dG9t
IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dO
ZWdhdGl2ZXMsIHRydWUpOworICAgICAgICBsZXQgdmVydGljYWxMaW5rID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9w
ZXJ0aWVzW2JvdHRvbV1dLCAibGluay12ZXJ0aWNhbCIpOworCisgICAgICAgIHZlcnRpY2FsLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1t0b3BdLmVsZW1lbnQpOworICAgICAgICB2ZXJ0
aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHZlcnRpY2FsTGluay5lbGVtZW50KTsKKyAgICAgICAg
dmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2JvdHRvbV0uZWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGhvcml6b250YWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXNbbGVmdF0gPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgImxlZnQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZlcyk7CisgICAgICAgIHByb3BlcnRpZXNbcmln
aHRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5
TmFtZVByZWZpeCArICJyaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmlnaHQiKSwgdGhp
cy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZl
cywgdHJ1ZSk7CisgICAgICAgIGxldCBob3Jpem9udGFsTGluayA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRp
ZXNbcmlnaHRdXSwgImxpbmstaG9yaXpvbnRhbCIpOworCisgICAgICAgIGhvcml6b250YWwuZWxl
bWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2xlZnRdLmVsZW1lbnQpOworICAgICAgICBob3Jp
em9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQoaG9yaXpvbnRhbExpbmsuZWxlbWVudCk7CisgICAg
ICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW3JpZ2h0XS5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgYWxsTGlua1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisgICAgICAgIGxldCBhbGxMaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0aWVzW2Jv
dHRvbV0sIHByb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmstYWxsIiwg
W3ZlcnRpY2FsTGluaywgaG9yaXpvbnRhbExpbmtdKTsKKyAgICAgICAgYWxsTGlua1Jvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKGFsbExpbmsuZWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIFt2ZXJ0
aWNhbCwgYWxsTGlua1JvdywgaG9yaXpvbnRhbF07CisgICAgfQorCisgICAgX3BvcHVsYXRlUG9z
aXRpb25TZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5w
b3NpdGlvbjsKKyAgICAgICAgbGV0IHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25S
b3dzKGdyb3VwLCBudWxsLCB0cnVlKTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5w
cm9wZXJ0aWVzOworCisgICAgICAgIGxldCBwb3NpdGlvblR5cGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigicG9zaXRpb24iLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiU3RhdGljIiwg
IlJlbGF0aXZlIiwgIkFic29sdXRlIiwgIkZpeGVkIl0sCisgICAgICAgICAgICBhZHZhbmNlZDog
WyIgV2Via2l0IFN0aWNreSJdCisgICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnpJbmRl
eCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiei1pbmRleCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiei1JbmRleCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2Rl
bCwgbnVsbCwgdHJ1ZSk7CisKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5wb3NpdGlvbi5lbGVtZW50KTsKKyAgICAgICAgcG9zaXRpb25UeXBlLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy56SW5kZXguZWxlbWVudCk7CisgICAgICAgIHBv
c2l0aW9uVHlwZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQt
cm93Iik7CisKKyAgICAgICAgcm93cy51bnNoaWZ0KHBvc2l0aW9uVHlwZSkKKworICAgICAgICBs
ZXQgcG9zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChy
b3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcG9zaXRpb25Hcm91
cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZsb2F0U2VjdGlvbigpCisgICAgeworICAgICAg
ICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxvYXQ7CisgICAgICAgIGxldCBwcm9wZXJ0aWVz
ID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZmxvYXRSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZmxvYXQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJmbG9hdCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRmxvYXQiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIk5vbmUiXSk7Cisg
ICAgICAgIGZsb2F0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbG9hdC5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgY2xlYXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY2xlYXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJjbGVhciIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2xlYXIiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIkJvdGgiLCAiTm9uZSJdKTsKKyAgICAgICAg
Y2xlYXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmNsZWFyLmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBmbG9hdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtmbG9hdFJvdywgY2xlYXJSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0
aW9uKGdyb3VwLCBbZmxvYXRHcm91cF0pOworICAgIH0KKworICAgIF9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZWRpdG9yLCBoaWdobGlnaHRDb25maWcpCisgICAgeworICAgICAgICBmdW5jdGlv
biBvbkVkaXRvck1vdXNlb3ZlcigpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc3R5bGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX3N0eWxlLm93
bmVyUnVsZSkgeworICAgICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogT3Jk
ZXIgb2YgcGFyYW1ldGVycyBjaGFuZ2VkIGluIGlPUyA3LgorICAgICAgICAgICAgICAgIERPTUFn
ZW50LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX3N0eWxlLm5vZGUuaWQsIGhp
Z2hsaWdodENvbmZpZ30pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKQorICAgICAgICAg
ICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKGhpZ2hsaWdodENvbmZpZywgdGhpcy5f
c3R5bGUub3duZXJSdWxlLnNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUubm9kZS5vd25lckRvY3Vt
ZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkVk
aXRvck1vdXNlb3V0KCkgeworICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2VvdmVyIiwgb25FZGl0b3JNb3VzZW92ZXIuYmluZChlZGl0b3IpKTsKKyAgICAgICAgZWRpdG9y
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBvbkVkaXRvck1vdXNlb3V0LmJp
bmQoZWRpdG9yKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGltZW5zaW9uc1NlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRpbWVuc2lvbnM7CisgICAg
ICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZGlt
ZW5zaW9uc1dpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzLndpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0
aXZlTnVtYmVyU2xpZGVyKCJ3aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwg
dGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAg
ICBkaW1lbnNpb25zV2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndpZHRoLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmhlaWdodCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiaGVpZ2h0IiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsKKworICAgICAgICBkaW1lbnNpb25zSGVpZ2h0LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5oZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IGRpbWVuc2lvbnNQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMud2lkdGgsIHByb3BlcnRpZXMu
aGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNSZWd1bGFyR3JvdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNXaWR0aCwgZGltZW5zaW9uc0hl
aWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWluV2lkdGggPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWluV2lkdGggPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1pbi13aWR0
aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9k
ZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWluV2lkdGgu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1pbldpZHRoLmVsZW1lbnQpOworCisgICAg
ICAgIGxldCBkaW1lbnNpb25zTWluSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbkhlaWdodCA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLWhlaWdodCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91
bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbkhlaWdodC5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMubWluSGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBk
aW1lbnNpb25zTWluUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1pbldpZHRoLCBwcm9wZXJ0aWVz
Lm1pbkhlaWdodF07CisgICAgICAgIGxldCBkaW1lbnNpb25zTWluR3JvdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNaW5XaWR0aCwgZGltZW5zaW9u
c01pbkhlaWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4S2V5d29yZHMgPSB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoIk5vbmUiKTsKKyAgICAgICAgbGV0IGRpbWVuc2lv
bnNNYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAg
ICAgcHJvcGVydGllcy5tYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxh
dGl2ZU51bWJlclNsaWRlcigibWF4LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0
aCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAg
ICAgICBkaW1lbnNpb25zTWF4V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1h
eFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4SGVpZ2h0ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1h
eEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRl
cigibWF4LWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRpbWVuc2lv
bnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRpbWVuc2lv
bnNNYXhIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1heEhlaWdodC5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01heFByb3BlcnRpZXMgPSBbcHJvcGVydGll
cy5tYXhXaWR0aCwgcHJvcGVydGllcy5tYXhIZWlnaHRdOworICAgICAgICBsZXQgZGltZW5zaW9u
c01heEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNp
b25zTWF4V2lkdGgsIGRpbWVuc2lvbnNNYXhIZWlnaHRdKTsKKworICAgICAgICBsZXQgZGltZW5z
aW9uc1RhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFiYmVkUHJv
cGVydGllc0NvbnRyb2xsZXIoeworICAgICAgICAgICAgImRlZmF1bHQiOiB7dGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRGVmYXVsdCIpLCBlbGVtZW50OiBkaW1lbnNpb25zUmVndWxhckdy
b3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lvbnNQcm9wZXJ0aWVzfSwKKyAgICAgICAg
ICAgICJtaW4iOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWluIiksIGVsZW1lbnQ6
IGRpbWVuc2lvbnNNaW5Hcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zTWluUHJv
cGVydGllc30sCisgICAgICAgICAgICAibWF4Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk1heCIpLCBlbGVtZW50OiBkaW1lbnNpb25zTWF4R3JvdXAuZWxlbWVudCwgcHJvcGVydGll
czogZGltZW5zaW9uc01heFByb3BlcnRpZXN9CisgICAgICAgIH0pOworCisgICAgICAgIGxldCBo
aWdobGlnaHRDb25maWcgPSB7Y29udGVudENvbG9yOiB7cjogMTExLCBnOiAxNjgsIGI6IDIyMCwg
YTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMud2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAg
ICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmhlaWdo
dCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVu
ZXJzKGdyb3VwLnByb3BlcnRpZXMubWluV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAg
IHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1pbkhlaWdo
dCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVu
ZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAg
IHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1heEhlaWdo
dCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc0dyb3VwID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNpb25zVGFiQ29udHJvbGxl
ciwgZGltZW5zaW9uc1JlZ3VsYXJHcm91cCwgZGltZW5zaW9uc01pbkdyb3VwLCBkaW1lbnNpb25z
TWF4R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGltZW5z
aW9uc0dyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlTWFyZ2luU2VjdGlvbigpCisgICAg
eworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMubWFyZ2luOworICAgICAgICBsZXQg
cm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJtYXJnaW4iLCB0
cnVlKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0Q29uZmlnID0ge21hcmdpbkNvbG9yOiB7cjog
MjQ2LCBnOiAxNzgsIGI6IDEwNywgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWFyZ2luVG9w
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5Cb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7CisgICAg
ICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdp
bkxlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxp
c3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblJpZ2h0LCBoaWdobGlnaHRDb25maWcpOwor
CisgICAgICAgIGxldCBtYXJnaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbbWFy
Z2luR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVQYWRkaW5nU2VjdGlvbigpCisgICAg
eworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMucGFkZGluZzsKKyAgICAgICAgbGV0
IHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAicGFkZGluZyIp
OworCisgICAgICAgIGxldCBoaWdobGlnaHRDb25maWcgPSB7cGFkZGluZ0NvbG9yOiB7cjogMTQ3
LCBnOiAxOTYsIGI6IDEyNSwgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhp
cy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ1RvcCwg
aGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJz
KGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ0JvdHRvbSwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGlu
Z0xlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxp
c3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdSaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsK
KworICAgICAgICBsZXQgcGFkZGluZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKHJvd3MpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtw
YWRkaW5nR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbGV4Ym94U2VjdGlvbigpCisg
ICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxleGJveDsKKyAgICAgICAg
bGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBmbGV4T3Jk
ZXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMub3JkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goIm9yZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmRlciIpLCB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleEJhc2lzID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LWJhc2lzIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJCYXNpcyIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMub3JkZXIuZWxlbWVudCk7CisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEJhc2lzLmVsZW1lbnQpOworCisgICAgICAg
IGxldCBmbGV4U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy5mbGV4R3JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveCgiZmxleC1ncm93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHcm93
IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKyAgICAgICAgcHJvcGVydGllcy5m
bGV4U2hyaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJm
bGV4LXNocmluayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hyaW5rIiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLCBudWxsKTsKKworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuZmxleEdyb3cuZWxlbWVudCk7CisgICAgICAgIGZsZXhTaXplUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4U2hyaW5rLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBmbGV4Rmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4RGlyZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZsZXgtZGlyZWN0aW9uIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsi
Um93IiwgIlJvdyBSZXZlcnNlIiwgIkNvbHVtbiIsICJDb2x1bW4gUmV2ZXJzZSJdKSk7CisgICAg
ICAgIHByb3BlcnRpZXMuZmxleFdyYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5
d29yZFBpY2tlcigiZmxleC13cmFwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXcmFwIiksIHRo
aXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIldyYXAiLCAiV3JhcCBSZXZlcnNlIiwgIk5v
d3JhcCJdKSk7CisKKyAgICAgICAgZmxleEZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmZsZXhEaXJlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIGZsZXhGbG93Um93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4V3JhcC5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgZmxleGJveEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtm
bGV4T3JkZXJSb3csIGZsZXhTaXplUm93LCBmbGV4Rmxvd1Jvd10pOworICAgICAgICB0aGlzLl9w
b3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtmbGV4Ym94R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9w
dWxhdGVUZXh0U3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMu
X2dyb3Vwcy50ZXh0U3R5bGU7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVy
dGllczsKKworICAgICAgICBsZXQgdGV4dEFwcGVhcmFuY2VSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY29sb3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy50ZXh0RGlyZWN0aW9uID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpcmVjdGlvbiIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNv
bmNhdChbIkxUUiIsICJSVEwiXSkpOworCisgICAgICAgIHRleHRBcHBlYXJhbmNlUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jb2xvci5lbGVtZW50KTsKKyAgICAgICAgdGV4dEFw
cGVhcmFuY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHREaXJlY3Rpb24u
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRBbGlnblJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0QWxpZ24gPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJ0ZXh0LWFsaWduIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJBbGlnbiIpLCBbIkxlZnQiLCAiQ2VudGVyIiwgIlJpZ2h0Iiwg
Ikp1c3RpZnkiXSk7CisKKyAgICAgICAgdGV4dEFsaWduUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy50ZXh0QWxpZ24uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRUcmFuc2Zv
cm1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMudGV4dFRyYW5zZm9ybSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkSWNvbkxpc3QoInRleHQtdHJhbnNmb3JtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFu
c2Zvcm0iKSwgWyJDYXBpdGFsaXplIiwgIlVwcGVyY2FzZSIsICJMb3dlcmNhc2UiLCAiTm9uZSJd
KTsKKworICAgICAgICB0ZXh0VHJhbnNmb3JtUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy50ZXh0VHJhbnNmb3JtLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0RGVjb3JhdGlv
blJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy50ZXh0RGVjb3JhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkSWNvbkxpc3QoInRleHQtZGVjb3JhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVj
b3JhdGlvbiIpLCBbIlVuZGVybGluZSIsICJMaW5lIFRocm91Z2giLCAiT3ZlcmxpbmUiLCAiTm9u
ZSJdKTsKKworICAgICAgICB0ZXh0RGVjb3JhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMudGV4dERlY29yYXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5jb2xvcl07CisKKyAgICAg
ICAgbGV0IHRleHRTdHlsZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFt0ZXh0QXBwZWFyYW5jZVJvdywgdGV4dEFsaWduUm93LCB0ZXh0VHJhbnNmb3JtUm93LCB0
ZXh0RGVjb3JhdGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAs
IFt0ZXh0U3R5bGVHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZvbnRTZWN0aW9uKCkK
KyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5mb250OworICAgICAgICBs
ZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZvbnRGYW1p
bHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMuZm9udEZhbWlseSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFt
aWx5TGlzdEVkaXRvcigiZm9udC1mYW1pbHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhbWls
eSIpKTsKKworICAgICAgICBmb250RmFtaWx5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5mb250RmFtaWx5LmVsZW1lbnQpOworCisgICAgICAgIGxldCBmb250U2l6ZVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5m
b250U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZm9u
dC1zaXplIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXplIiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLmNvbmNhdChbIkxhcmdlciIsICJYWCBMYXJnZSIsICJYIExhcmdlIiwgIkxhcmdlIiwg
Ik1lZGl1bSIsICJTbWFsbCIsICJYIFNtYWxsIiwgIlhYIFNtYWxsIiwgIlNtYWxsZXIiXSksIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICAvLyBUT0RPOiBJbnRlcnNwZXJzZSBudW1l
cmljYWwgZm9udC13ZWlnaHQgdmFsdWVzIGJldHdlZW4gdGhlIG90aGVyIGtleXdvcmRzLiAgU29t
ZXRoaW5nIGxpa2UgdGhpczoKKyAgICAgICAgLy8gIFsiOTAwIiwgImJvbGRlciIsICI4MDAiLCAi
Ym9sZCIsICI2MDAiLCAiNTAwIiwgIm5vcm1hbCIsICIzMDAiLCAiMjAwIiwgImxpZ2h0ZXIiLCAi
MTAwIl0KKyAgICAgICAgcHJvcGVydGllcy5mb250V2VpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZvbnQtd2VpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJXZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiQm9sZGVyIiwg
IkJvbGQiLCAiTm9ybWFsIiwgIkxpZ2h0ZXIiXSkpOworCisgICAgICAgIGZvbnRTaXplUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U2l6ZS5lbGVtZW50KTsKKyAgICAgICAg
Zm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRXZWlnaHQuZWxl
bWVudCk7CisKKyAgICAgICAgbGV0IGZvbnRTdHlsZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250U3R5bGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJmb250LXN0eWxlIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCBbIkl0YWxpYyIsICJOb3JtYWwiXSk7CisgICAgICAg
IHByb3BlcnRpZXMuZm9udFZhcmlhbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5
d29yZENoZWNrYm94KCJmb250LXZhcmlhbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhcmlh
bnQiKSwgIlNtYWxsIENhcHMiLCAiSW1hZ2VzL0ZvbnRWYXJpYW50U21hbGxDYXBzLnN2ZyIpCisK
KyAgICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250
U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuZm9udFZhcmlhbnQuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5mb250RmFtaWx5XTsKKwor
ICAgICAgICBsZXQgZm9udEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFtmb250RmFtaWx5Um93LCBmb250U2l6ZVJvdywgZm9udFN0eWxlUm93XSk7CisgICAgICAg
IHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2ZvbnRHcm91cF0pOworICAgIH0KKworICAg
IF9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAg
PSB0aGlzLl9ncm91cHMudGV4dFNwYWNpbmc7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3Jv
dXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZGVmYXVsdFRleHRLZXl3b3JkcyA9IHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vcm1hbCJdKTsKKworICAgICAgICBsZXQgdGV4
dExheW91dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAg
ICAgcHJvcGVydGllcy5saW5lSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KCJsaW5lLWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0
IiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAg
cHJvcGVydGllcy52ZXJ0aWNhbEFsaWduID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KCJ2ZXJ0aWNhbC1hbGlnbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxp
Z24iKSwgWyJCYXNlbGluZSIsICJCb3R0b20iXS5jb25jYXQodGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMsIFsiTWlkZGxlIiwgIlN1YiIsICJTdXBlciIsICJUZXh0IEJvdHRvbSIsICJUZXh0IFRvcCIs
ICJUb3AiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0TGF5b3V0Um93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5saW5lSGVpZ2h0LmVsZW1lbnQpOworICAg
ICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52ZXJ0aWNh
bEFsaWduLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0U3BhY2luZ1JvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5sZXR0ZXJT
cGFjaW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJsZXR0
ZXItc3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGV0dGVyIiksIGRlZmF1bHRUZXh0
S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53b3Jk
U3BhY2luZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgid29y
ZC1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXb3JkIiksIGRlZmF1bHRUZXh0S2V5
d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0U3BhY2luZ1Jvdy5l
bGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubGV0dGVyU3BhY2luZy5lbGVtZW50KTsKKyAg
ICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndvcmRT
cGFjaW5nLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0V2hpdGVzcGFjZVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0
SW5kZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0
LWluZGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZW50IiksIHRoaXMuX2tleXdvcmRz
LmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMud2hp
dGVTcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ3aGl0
ZS1zcGFjZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2hpdGVzcGFjZSIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb3JtYWwiLCAiTm93cmFwIiwgIlByZSIsICJQcmUgTGlu
ZSIsICJQcmUgV3JhcCJdKSk7CisKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHRJbmRlbnQuZWxlbWVudCk7CisgICAgICAgIHRleHRX
aGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aGl0ZVNwYWNlLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0U3BhY2luZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0TGF5b3V0Um93LCB0ZXh0U3BhY2luZ1JvdywgdGV4
dFdoaXRlc3BhY2VSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBb
dGV4dFNwYWNpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0
aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93
OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAg
bGV0IHRleHRTaGFkb3dTaXppbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworCisgICAgICAgIGxldCB0ZXh0U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhv
cml6b250YWwiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAg
ICAgIGxldCB0ZXh0U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZlcnRpY2FsIiks
IG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworCisgICAgICAgIHRleHRT
aGFkb3dTaXppbmcuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93SC5lbGVtZW50KTsKKyAg
ICAgICAgdGV4dFNoYWRvd1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dWLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCB0ZXh0U2hhZG93Q29sb3IgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoInRleHQtc2hhZG93IiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgdGV4dFNoYWRvd0NvbG9yLmNvbG9y
UHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgdGV4dFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNl
bnQpOworICAgICAgICB0ZXh0U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKwor
ICAgICAgICB0ZXh0U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Q29s
b3IuZWxlbWVudCk7CisgICAgICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxk
KHRleHRTaGFkb3dCbHVyLmVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnRpZXMudGV4dFNoYWRv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0ZXh0LXNo
YWRvdyIsIFt0ZXh0U2hhZG93SCwgdGV4dFNoYWRvd1YsIHRleHRTaGFkb3dCbHVyLCB0ZXh0U2hh
ZG93Q29sb3JdKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVy
dGllcyA9IFt0ZXh0U2hhZG93Q29sb3JdOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93R3JvdXAg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRTaGFkb3dTaXppbmcs
IHRleHRTaGFkb3dTdHlsZV0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAs
IFt0ZXh0U2hhZG93R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCYWNrZ3JvdW5kU3R5
bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5iYWNr
Z3JvdW5kU3R5bGU7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsK
KworICAgICAgICBsZXQgYmFja2dyb3VuZFN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYmFja2dyb3VuZC1jb2xvciIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFj
a2dyb3VuZEltYWdlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJiYWNr
Z3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpKTsKKworICAgICAg
ICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tn
cm91bmRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UuZWxlbWVudCk7CisKKyAgICAg
ICAgbGV0IGJhY2tncm91bmRTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFNpemVLZXl3b3JkcyA9IHRoaXMuX2tleXdv
cmRzLmJveE1vZGVsLmNvbmNhdChbIkNvbnRhaW4iLCAiQ292ZXIiXSk7CisgICAgICAgIGxldCBi
YWNrZ3JvdW5kU2l6ZVggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3goImJhY2tncm91bmQtc2l6ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgYmFj
a2dyb3VuZFNpemVLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBiYWNr
Z3JvdW5kU2l6ZVgubWFzdGVyUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYmFja2dyb3Vu
ZFNpemVZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNr
Z3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBiYWNrZ3JvdW5k
U2l6ZUtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRT
aXplWS5tYXN0ZXJQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3Jv
dW5kU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJi
YWNrZ3JvdW5kLXNpemUiLCBbYmFja2dyb3VuZFNpemVYLCBiYWNrZ3JvdW5kU2l6ZVldKTsKKwor
ICAgICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRT
aXplWC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChiYWNrZ3JvdW5kU2l6ZVkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRS
ZXBlYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5kLXJlcGVhdCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVwZWF0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vIFJlcGVhdCIs
ICJSZXBlYXQiLCAiUmVwZWF0IFgiLCAiUmVwZWF0IFkiXSkpOworICAgICAgICBwcm9wZXJ0aWVz
LmJhY2tncm91bmRBdHRhY2htZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIoImJhY2tncm91bmQtYXR0YWNobWVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QXR0YWNoIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkZpeGVkIiwgIkxvY2Fs
IiwgIlNjcm9sbCJdKSk7CisKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdC5lbGVtZW50KTsKKyAgICAgICAg
YmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dy
b3VuZEF0dGFjaG1lbnQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRQb3NpdGlv
blJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0
IGJhY2tncm91bmRQb3NpdGlvblggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBv
c2l0aW9uIFgiKSwgWyJDZW50ZXIiLCAiTGVmdCIsICJSaWdodCJdLCB0aGlzLl91bml0cy5kZWZh
dWx0cyk7CisgICAgICAgIGxldCBiYWNrZ3JvdW5kUG9zaXRpb25ZID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBZIiksIFsiQm90dG9tIiwgIkNlbnRlciIsICJUb3Ai
XSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3Vu
ZFBvc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIo
ImJhY2tncm91bmQtcG9zaXRpb24iLCBbYmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3VuZFBv
c2l0aW9uWV0pOworCisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblguZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRQ
b3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblkuZWxlbWVu
dCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBb
cHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3JdOworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kU3R5
bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYmFja2dyb3Vu
ZFN0eWxlUm93LCBiYWNrZ3JvdW5kU2l6ZVJvdywgYmFja2dyb3VuZFJlcGVhdFJvdywgYmFja2dy
b3VuZFBvc2l0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwg
W2JhY2tncm91bmRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm9yZGVyU2Vj
dGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVyOwor
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0
IGJvcmRlckFsbFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlS2V5d29yZFBpY2tlcihbImJvcmRlci10b3Atc3R5bGUiLCAiYm9yZGVyLXJpZ2h0LXN0eWxl
IiwgImJvcmRlci1ib3R0b20tc3R5bGUiLCAiYm9yZGVyLWxlZnQtc3R5bGUiXSAsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAg
ICAgICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3Jk
ZXItc3R5bGUiOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC13aWR0aCIsICJib3Jk
ZXItcmlnaHQtd2lkdGgiLCAiYm9yZGVyLWJvdHRvbS13aWR0aCIsICJib3JkZXItbGVmdC13aWR0
aCJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRl
cldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVy
V2lkdGgucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci13aWR0aCI7CisKKyAgICAgICAg
Ym9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyU3R5bGUu
ZWxlbWVudCk7CisgICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmJvcmRlcldpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJBbGxTdHls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5ib3JkZXJDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tl
cihbImJvcmRlci10b3AtY29sb3IiLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgImJvcmRlci1ib3R0
b20tY29sb3IiLCAiYm9yZGVyLWxlZnQtY29sb3IiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
b2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvci5wcm9wZXJ0eVJlZmVyZW5j
ZU5hbWUgPSAiYm9yZGVyLWNvbG9yIjsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9w
LWxlZnQtcmFkaXVzIiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20t
bGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMucHJvcGVydHlSZWZl
cmVuY2VOYW1lID0gImJvcmRlci1yYWRpdXMiOworCisgICAgICAgIGJvcmRlckFsbFN0eWxlLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJDb2xvci5lbGVtZW50KTsKKyAgICAg
ICAgYm9yZGVyQWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJh
ZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyQWxsUHJvcGVydGllcyA9IFtwcm9w
ZXJ0aWVzLmJvcmRlclN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBwcm9wZXJ0aWVzLmJv
cmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJB
bGxHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQWxs
U2l6ZSwgYm9yZGVyQWxsU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVG9wU2l6ZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2Vy
KCJib3JkZXItdG9wLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlz
Ll9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wV2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci10
b3Atd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRz
LmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyVG9w
U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUuZWxlbWVu
dCk7CisgICAgICAgIGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LmJvcmRlclRvcFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJUb3BTdHlsZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5ib3JkZXJUb3BDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tl
cigiYm9yZGVyLXRvcC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7Cisg
ICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXIt
dG9wLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJv
cmRlclRvcFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BDb2xv
ci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVy
VG9wUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLCBwcm9wZXJ0aWVzLmJv
cmRlclRvcFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRl
clRvcFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJUb3BHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyVG9wU2l6ZSwgYm9yZGVyVG9wU3R5bGVdKTsK
KworICAgICAgICBsZXQgYm9yZGVyUmlnaHRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXJpZ2h0LXN0eWxl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJT
dHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXJpZ2h0LXdpZHRoIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50KTsKKyAgICAg
ICAgYm9yZGVyUmlnaHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJS
aWdodFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJSaWdodFN0eWxlID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJv
cmRlclJpZ2h0Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIo
ImJvcmRlci1yaWdodC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7Cisg
ICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJib3Jk
ZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIp
LCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAg
ICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
clJpZ2h0Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzLmVsZW1lbnQpOworCisgICAg
ICAgIGxldCBib3JkZXJSaWdodFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJSaWdodFN0
eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRD
b2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJS
aWdodEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJS
aWdodFNpemUsIGJvcmRlclJpZ2h0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9t
U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5ib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVL
ZXl3b3JkUGlja2VyKCJib3JkZXItYm90dG9tLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRp
ZXMuYm9yZGVyQm90dG9tV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goImJvcmRlci1ib3R0b20td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldp
ZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7
CisKKyAgICAgICAgYm9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJvdHRvbVNpemUu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLmVsZW1lbnQp
OworCisgICAgICAgIGxldCBib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLWJvdHRvbS1j
b2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRp
ZXMuYm9yZGVyQm90dG9tUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJp
Z2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckJv
dHRvbVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xv
ci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQg
Ym9yZGVyQm90dG9tUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlLCBw
cm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9y
LCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJCb3R0
b21Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQm90
dG9tU2l6ZSwgYm9yZGVyQm90dG9tU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyTGVmdFNp
emUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyTGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRQaWNrZXIoImJvcmRlci1sZWZ0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHls
ZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyTGVmdFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJib3JkZXItbGVmdC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhp
cy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAg
ICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVm
dFN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBi
b3JkZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItbGVmdC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cyA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVm
dC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVm
YXVsdHMpOworCisgICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U3R5
bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGJvcmRlckxlZnRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9y
ZGVyTGVmdFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgcHJvcGVydGllcy5ib3Jk
ZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1c107CisgICAgICAgIGxldCBi
b3JkZXJMZWZ0R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2Jv
cmRlckxlZnRTaXplLCBib3JkZXJMZWZ0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVGFi
Q29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVz
Q29udHJvbGxlcih7CisgICAgICAgICAgICAiYWxsIjoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkFsbCIpLCBlbGVtZW50OiBib3JkZXJBbGxHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVz
OiBib3JkZXJBbGxQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJ0b3AiOiB7dGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVG9wIiksIGVsZW1lbnQ6IGJvcmRlclRvcEdyb3VwLmVsZW1lbnQs
IHByb3BlcnRpZXM6IGJvcmRlclRvcFByb3BlcnRpZXN9LAorICAgICAgICAgICAgInJpZ2h0Ijog
e3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0IiksIGVsZW1lbnQ6IGJvcmRlclJp
Z2h0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyUmlnaHRQcm9wZXJ0aWVzfSwKKyAg
ICAgICAgICAgICJib3R0b20iOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90dG9t
IiksIGVsZW1lbnQ6IGJvcmRlckJvdHRvbUdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRl
ckJvdHRvbVByb3BlcnRpZXN9LAorICAgICAgICAgICAgImxlZnQiOiB7dGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTGVmdCIpLCBlbGVtZW50OiBib3JkZXJMZWZ0R3JvdXAuZWxlbWVudCwg
cHJvcGVydGllczogYm9yZGVyTGVmdFByb3BlcnRpZXN9CisgICAgICAgIH0pOworCisgICAgICAg
IGxldCBoaWdobGlnaHRDb25maWcgPSB7Ym9yZGVyQ29sb3I6IHtyOiAyNTUsIGc6IDIyOSwgYjog
MTUzLCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNz
TW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJXaWR0aCwgaGlnaGxpZ2h0Q29u
ZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3Bl
cnRpZXMuYm9yZGVyVG9wV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2Fk
ZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRo
LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5l
cnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJMZWZ0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJv
cmRlclJpZ2h0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJDb2xvciwgcHJv
cGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciwgcHJv
cGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvcl07CisK
KyAgICAgICAgbGV0IGJvcmRlckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtib3JkZXJUYWJDb250cm9sbGVyLCBib3JkZXJBbGxHcm91cCwgYm9yZGVyVG9wR3Jv
dXAsIGJvcmRlclJpZ2h0R3JvdXAsIGJvcmRlckJvdHRvbUdyb3VwLCBib3JkZXJMZWZ0R3JvdXBd
KTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYm9yZGVyR3JvdXBdKTsK
KyAgICB9CisKKyAgICBfcG9wdWxhdGVPdXRsaW5lU2VjdGlvbigpCisgICAgeworICAgICAgICBs
ZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0bGluZTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMg
PSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBvdXRsaW5lU2l6ZVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5vdXRs
aW5lV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIm91
dGxpbmUtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdv
cmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRp
ZXMub3V0bGluZU9mZnNldCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgib3V0bGluZS1vZmZzZXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9mZnNldCIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisg
ICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRs
aW5lV2lkdGguZWxlbWVudCk7CisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5vdXRsaW5lT2Zmc2V0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBv
dXRsaW5lU3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMub3V0bGluZVN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRQaWNrZXIoIm91dGxpbmUtc3R5bGUiICwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRp
ZXMub3V0bGluZUNvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2Vy
KCJvdXRsaW5lLWNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKworICAg
ICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxp
bmVTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgb3V0bGluZVN0eWxlUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5vdXRsaW5lQ29sb3IuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAu
YXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5vdXRsaW5lQ29s
b3JdOworCisgICAgICAgIGxldCBvdXRsaW5lR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW291dGxpbmVTaXplUm93LCBvdXRsaW5lU3R5bGVSb3ddKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbb3V0bGluZUdyb3VwXSk7CisgICAgfQor
CisgICAgX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3Jv
dXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdy
b3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1JvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9y
KCJib3gtc2hhZG93Iik7CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmVsZW1lbnQuc3R5
bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICBib3hTaGFkb3dSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNoYWRvdy5lbGVtZW50KTsKKworICAgICAgICBsZXQg
Ym94U2hhZG93SFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgbGV0IGJveFNoYWRvd0ggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRp
dmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQi
KSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAgICAg
ICAgYm94U2hhZG93SFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0guZWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1ZSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIGxldCBib3hTaGFkb3dWID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUb3AiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwg
dHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93VlJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNo
YWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0JsdXJSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCBib3hTaGFkb3dCbHVy
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1
bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBib3hTaGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVydHkg
PSB0cnVlOworICAgICAgICBsZXQgYm94U2hhZG93U3ByZWFkID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTcHJlYWQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1
ZSk7CisgICAgICAgIGJveFNoYWRvd1NwcmVhZC5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKwor
ICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Qmx1
ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Qmx1clJvdy5lbGVtZW50LmFwcGVuZENoaWxk
KGJveFNoYWRvd1NwcmVhZC5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm94U2hhZG93Q29sb3JS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCBi
b3hTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigi
Ym94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIGJv
eFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYm94U2hhZG93
SW5zZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94KCJib3gt
c2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNldCIpLCAiSW5zZXQiKTsKKyAgICAg
ICAgYm94U2hhZG93SW5zZXQub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgYm94
U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dDb2xvci5lbGVtZW50
KTsKKyAgICAgICAgYm94U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFk
b3dJbnNldC5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm94U2hhZG93UHJvcGVydHlDb21iaW5l
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJib3gtc2hh
ZG93IiwgW2JveFNoYWRvd0gsIGJveFNoYWRvd1YsIGJveFNoYWRvd0JsdXIsIGJveFNoYWRvd1Nw
cmVhZCwgYm94U2hhZG93Q29sb3IsIGJveFNoYWRvd0luc2V0XSk7CisKKyAgICAgICAgZnVuY3Rp
b24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7CisgICAgICAgICAgICBib3hTaGFkb3dQcm9wZXJ0
eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KCIiKTsKKyAgICAgICAgICAgIGJveFNoYWRv
d0guZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93Vi5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICBib3hTaGFkb3dCbHVyLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGJveFNoYWRvd1NwcmVhZC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFk
b3dDb2xvci5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dJbnNldC5kaXNh
YmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1z
LCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RlZEJveFNoYWRvd0l0ZW1WYWx1ZUNo
YW5nZWQoKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5zZWxlY3RlZFRyZWVF
bGVtZW50VmFsdWUgPSBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7
CisgICAgICAgIH0KKyAgICAgICAgYm94U2hhZG93UHJvcGVydHlDb21iaW5lci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVl
RGlkQ2hhbmdlLCBzZWxlY3RlZEJveFNoYWRvd0l0ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisg
ICAgICAgIGZ1bmN0aW9uIGJveFNoYWRvd0l0ZW1TZWxlY3RlZChldmVudCkgeworICAgICAgICAg
ICAgYm94U2hhZG93UHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dChldmVudC5k
YXRhLnRleHQgfHwgIiIpOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRL
ZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVtU2VsZWN0ZWQsIGJveFNoYWRvd0l0ZW1TZWxlY3Rl
ZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRp
ZXMgPSBbYm94U2hhZG93Q29sb3JdOworCisgICAgICAgIGxldCBib3hTaGFkb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JveFNoYWRvd1JvdywgYm94U2hhZG93SFJv
dywgYm94U2hhZG93VlJvdywgYm94U2hhZG93Qmx1clJvdywgYm94U2hhZG93Q29sb3JSb3ddKTsK
KyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbYm94U2hhZG93XSk7CisgICAg
fQorCisgICAgX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0
IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRyYW5zaXRpb247CisgICAgICAgIGxldCBwcm9wZXJ0aWVz
ID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50cmFu
c2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29y
ZEVkaXRvcigidHJhbnNpdGlvbiIpOworICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uZWxl
bWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjExcHgiOworCisgICAgICAgIHRyYW5zaXRpb25Sb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRyYW5zaXRpb24uZWxlbWVudCk7CisKKyAg
ICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0eVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0eSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1dCgidHJhbnNpdGlvbi1wcm9wZXJ0
eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvcGVydHkiKSk7CisgICAgICAgIGxldCB0cmFu
c2l0aW9uVGltaW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIo
InRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1p
bmciKSwgWyJMaW5lYXIiLCAiRWFzZSIsICJFYXNlIEluIiwgIkVhc2UgT3V0IiwgIkVhc2UgSW4g
T3V0Il0pOworCisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHRyYW5zaXRpb25Qcm9wZXJ0eS5lbGVtZW50KTsKKyAgICAgICAgdHJhbnNpdGlvblByb3Bl
cnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvblRpbWluZy5lbGVtZW50KTsKKwor
ICAgICAgICBsZXQgdHJhbnNpdGlvbkR1cmF0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblRpbWVLZXl3b3JkcyA9IFsi
cyIsICJtcyJdOworICAgICAgICBsZXQgdHJhbnNpdGlvbkR1cmF0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCBudWxsLCB0cmFuc2l0aW9uVGltZUtleXdv
cmRzKTsKKyAgICAgICAgbGV0IHRyYW5zaXRpb25EZWxheSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kZWxheSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGVsYXkiKSwgbnVsbCwgdHJhbnNpdGlvblRpbWVLZXl3b3Jkcyk7CisgICAgICAg
IHRyYW5zaXRpb25EZWxheS5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICB0cmFu
c2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uRHVyYXRpb24u
ZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvblJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHRyYW5zaXRpb25EZWxheS5lbGVtZW50KTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblBy
b3BlcnR5Q29tYmluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21i
aW5lcigidHJhbnNpdGlvbiIsIFt0cmFuc2l0aW9uUHJvcGVydHksIHRyYW5zaXRpb25UaW1pbmcs
IHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5XSk7CisKKyAgICAgICAgZnVuY3Rp
b24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVy
dHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICB0cmFuc2l0
aW9uUHJvcGVydHkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvblRpbWlu
Zy5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24uZGlzYWJs
ZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5LmRpc2FibGVkID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZl
bnQuTm9SZW1haW5pbmdUcmVlSXRlbXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKwor
ICAgICAgICBmdW5jdGlvbiBzZWxlY3RlZHRyYW5zaXRpb25JdGVtVmFsdWVDaGFuZ2VkKCkgewor
ICAgICAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLnNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1
ZSA9IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURpZENoYW5n
ZSwgc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAg
ZnVuY3Rpb24gdHJhbnNpdGlvbkl0ZW1TZWxlY3RlZChldmVudCkgeworICAgICAgICAgICAgdHJh
bnNpdGlvblByb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQoZXZlbnQuZGF0YS50
ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdv
cmRFZGl0b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwgdHJhbnNpdGlvbkl0ZW1TZWxlY3RlZCwg
dGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMg
PSBbdHJhbnNpdGlvblByb3BlcnR5XTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvbkdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0cmFuc2l0aW9uUm93LCB0cmFu
c2l0aW9uUHJvcGVydHlSb3csIHRyYW5zaXRpb25EdXJhdGlvblJvd10pOworICAgICAgICB0aGlz
Ll9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0cmFuc2l0aW9uR3JvdXBdKTsKKyAgICB9Cit9Owor
CitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVEaXNhYmxlZFN5bWJv
bCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLXN0eWxlLWRpc2FibGVkIik7CitXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3lt
Ym9sID0gU3ltYm9sKCJ2aXN1YWwtc3R5bGUtaW5pdGlhbC1wcm9wZXJ0eS1zZWN0aW9uLXRleHQi
KTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5UmVmZXJl
bmNlSW5mbyA9IHsKKyAgICAiYmFja2dyb3VuZC1hdHRhY2htZW50IjogIklmIGEgYmFja2dyb3Vu
ZC1pbWFnZSBpcyBzcGVjaWZpZWQsIHRoZSBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQgQ1NTIHByb3Bl
cnR5IGRldGVybWluZXMgd2hldGhlciB0aGF0IGltYWdlJ3MgcG9zaXRpb24gaXMgZml4ZWQgd2l0
aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Nyb2xscyBhbG9uZyB3aXRoIGl0cyBjb250YWluaW5nIGJs
b2NrLiIsCisgICAgImJhY2tncm91bmQtY29sb3IiOiAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NT
IHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudCwgZWl0aGVy
IHRocm91Z2ggYSBjb2xvciB2YWx1ZSBvciB0aGUga2V5d29yZCB0cmFuc3BhcmVudC4iLAorICAg
ICJiYWNrZ3JvdW5kLWltYWdlIjogIlRoZSBDU1MgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBz
ZXRzIG9uZSBvciBzZXZlcmFsIGJhY2tncm91bmQgaW1hZ2VzIGZvciBhbiBlbGVtZW50LiBUaGUg
aW1hZ2VzIGFyZSBkcmF3biBvbiBzdGFja2luZyBjb250ZXh0IGxheWVycyBvbiB0b3Agb2YgZWFj
aCBvdGhlci4gVGhlIGZpcnN0IGxheWVyIHNwZWNpZmllZCBpcyBkcmF3biBhcyBpZiBpdCBpcyBj
bG9zZXN0IHRvIHRoZSB1c2VyLiIsCisgICAgImJhY2tncm91bmQtcG9zaXRpb24iOiAiVGhlIGJh
Y2tncm91bmQtcG9zaXRpb24gQ1NTIHByb3BlcnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24s
IHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgYmFj
a2dyb3VuZC1vcmlnaW4gZm9yIGVhY2ggZGVmaW5lZCBiYWNrZ3JvdW5kIGltYWdlLiIsCisgICAg
ImJhY2tncm91bmQtcmVwZWF0IjogIlRoZSBiYWNrZ3JvdW5kLXJlcGVhdCBDU1MgcHJvcGVydHkg
ZGVmaW5lcyBob3cgYmFja2dyb3VuZCBpbWFnZXMgYXJlIHJlcGVhdGVkLiBBIGJhY2tncm91bmQg
aW1hZ2UgY2FuIGJlIHJlcGVhdGVkIGFsb25nIHRoZSBob3Jpem9udGFsIGF4aXMsIHRoZSB2ZXJ0
aWNhbCBheGlzLCBib3RoIGF4ZXMsIG9yIG5vdCByZXBlYXRlZCBhdCBhbGwuIiwKKyAgICAiYmFj
a2dyb3VuZC1zaXplIjogIlRoZSBiYWNrZ3JvdW5kLXNpemUgQ1NTIHByb3BlcnR5IHNwZWNpZmll
cyB0aGUgc2l6ZSBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZXMuIFRoZSBzaXplIG9mIHRoZSBpbWFn
ZSBjYW4gYmUgZnVsbHkgY29uc3RyYWluZWQgb3Igb25seSBwYXJ0aWFsbHkgaW4gb3JkZXIgdG8g
cHJlc2VydmUgaXRzIGludHJpbnNpYyByYXRpby4iLAorICAgICJib3JkZXItYm90dG9tLWNvbG9y
IjogIlRoZSBib3JkZXItYm90dG9tLWNvbG9yIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBv
ZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhbiBlbGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBjYXNl
cyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0aWVzIGJvcmRlci1jb2xvciBvciBib3JkZXItYm90
dG9tIGFyZSBtb3JlIGNvbnZlbmllbnQgYW5kIHByZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLWJv
dHRvbS1sZWZ0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyBDU1MgcHJv
cGVydHkgc2V0cyB0aGUgcm91bmRpbmcgb2YgdGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiB0aGUg
ZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNhbiBiZSBhIGNpcmNsZSBvciBhbiBlbGxpcHNlLCBvciBp
ZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAgbm8gcm91bmRpbmcgaXMgZG9uZSBhbmQgdGhlIGNvcm5l
ciBpcyBzcXVhcmUuIiwKKyAgICAiYm9yZGVyLWJvdHRvbS1zdHlsZSI6ICJUaGUgYm9yZGVyLWJv
dHRvbS1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgYm90dG9t
IGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItYm90dG9tLXdpZHRoIjogIlRoZSBib3Jk
ZXItYm90dG9tLXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm90dG9t
IGJvcmRlciBvZiBhIGJveC4iLAorICAgICJib3JkZXItY29sb3IiOiAiVGhlIGJvcmRlci1jb2xv
ciBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgZm9yIHNldHRpbmcgdGhlIGNvbG9yIG9mIHRo
ZSBmb3VyIHNpZGVzIG9mIGFuIGVsZW1lbnQncyBib3JkZXI6IGJvcmRlci10b3AtY29sb3IsIGJv
cmRlci1yaWdodC1jb2xvciwgYm9yZGVyLWJvdHRvbS1jb2xvciwgYm9yZGVyLWxlZnQtY29sb3Ii
LAorICAgICJib3JkZXItbGVmdC1jb2xvciI6ICJUaGUgYm9yZGVyLWxlZnQtY29sb3IgQ1NTIHBy
b3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBib3R0b20gYm9yZGVyIG9mIGFuIGVsZW1lbnQu
IE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXPCoGJv
cmRlci1jb2xvciBvciBib3JkZXItbGVmdCBhcmUgbW9yZSBjb252ZW5pZW50IGFuZCBwcmVmZXJh
YmxlLiIsCisgICAgImJvcmRlci1sZWZ0LXN0eWxlIjogIlRoZSBib3JkZXItbGVmdC1zdHlsZSBD
U1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBi
b3guIiwKKyAgICAiYm9yZGVyLWxlZnQtd2lkdGgiOiAiVGhlIGJvcmRlci1sZWZ0LXdpZHRoIENT
UyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBib3guIiwK
KyAgICAiYm9yZGVyLXJhZGl1cyI6ICJUaGUgYm9yZGVyLXJhZGl1cyBDU1MgcHJvcGVydHkgYWxs
b3dzIFdlYiBhdXRob3JzIHRvIGRlZmluZSBob3cgcm91bmRlZCBib3JkZXIgY29ybmVycyBhcmUu
IFRoZSBjdXJ2ZSBvZiBlYWNoIGNvcm5lciBpcyBkZWZpbmVkIHVzaW5nIG9uZSBvciB0d28gcmFk
aWksIGRlZmluaW5nIGl0cyBzaGFwZTogY2lyY2xlIG9yIGVsbGlwc2UuIiwKKyAgICAiYm9yZGVy
LXJpZ2h0LWNvbG9yIjogIlRoZSBib3JkZXItcmlnaHQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMg
dGhlIGNvbG9yIG9mIHRoZSByaWdodCBib3JkZXIgb2YgYW4gZWxlbWVudC4gTm90ZSB0aGF0IGlu
IG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBDU1MgcHJvcGVydGllc8KgIGJvcmRlci1jb2xvciBv
ciBib3JkZXItcmlnaHQgYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAg
ICJib3JkZXItcmlnaHQtc3R5bGUiOiAiVGhlIGJvcmRlci1yaWdodC1zdHlsZSBDU1MgcHJvcGVy
dHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisg
ICAgImJvcmRlci1yaWdodC13aWR0aCI6ICJUaGUgYm9yZGVyLXJpZ2h0LXdpZHRoIENTUyBwcm9w
ZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAg
ImJvcmRlci1zdHlsZSI6ICJUaGUgYm9yZGVyLXN0eWxlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5k
IHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBsaW5lIHN0eWxlIGZvciBhbGwgZm91ciBzaWRlcyBv
ZiB0aGUgZWxlbWVudHMgYm9yZGVyLiIsCisgICAgImJvcmRlci10b3AtY29sb3IiOiAiVGhlIGJv
cmRlci10b3AtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYm9y
ZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQg
Q1NTIHByb3BlcnRpZXMgYm9yZGVyLWNvbG9yIG9yIGJvcmRlci10b3AgYXJlIG1vcmUgY29udmVu
aWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjogIlRo
ZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSByb3VuZGluZyBv
ZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJl
IGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCxubyBy
b3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXIt
dG9wLXJpZ2h0LXJhZGl1cyI6ICJUaGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMgQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIHJvdW5kaW5nIG9mIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIHRoZSBlbGVt
ZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlmIG9u
ZSBvZiB0aGUgdmFsdWUgaXMgMCBubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVyIGlz
IHNxdWFyZS4iLAorICAgICJib3JkZXItdG9wLXN0eWxlIjogIlRoZSBib3JkZXItdG9wLXN0eWxl
IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBsaW5lIHN0eWxlIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEg
Ym94LiIsCisgICAgImJvcmRlci10b3Atd2lkdGgiOiAiVGhlIGJvcmRlci10b3Atd2lkdGggQ1NT
IHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEgYm94LiIsCisg
ICAgImJvcmRlci13aWR0aCI6ICJUaGUgYm9yZGVyLXdpZHRoIHByb3BlcnR5IHNldHMgdGhlIHdp
ZHRoIG9mIHRoZSBib3JkZXIgb2YgYSBib3guIFVzaW5nIHRoZSBzaG9ydGhhbmQgcHJvcGVydHkg
Ym9yZGVyIGlzIG9mdGVuIG1vcmUgY29udmVuaWVudC4iLAorICAgICJib3R0b20iOiAiVGhlIGJv
dHRvbSBDU1MgcHJvcGVydHkgcGFydGljaXBhdGVzIGluIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9u
IG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAiYm94LXNoYWRvdyI6ICJUaGUgYm94LXNo
YWRvdyBwcm9wZXJ0eSBkZXNjcmliZXMgb25lIG9yIG1vcmUgc2hhZG93IGVmZmVjdHMgYXMgYSBj
b21tYS1zZXBhcmF0ZWQgbGlzdC4gSXQgZW5hYmxlcyB5b3UgdG8gY2FzdCBhIGRyb3Agc2hhZG93
IGZyb20gdGhlIGZyYW1lIG9mIGFsbW9zdCBhbnkgZWxlbWVudC4gSWYgYSBib3JkZXItcmFkaXVz
IGlzIHNwZWNpZmllZCBvbiB0aGUgZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJveCBz
aGFkb3cgdGFrZXMgb24gdGhlIHNhbWUgcm91bmRlZCBjb3JuZXJzLiBUaGUgei1vcmRlcmluZyBv
ZiBtdWx0aXBsZSBib3ggc2hhZG93cyBpcyB0aGUgc2FtZSBhcyBtdWx0aXBsZSB0ZXh0IHNoYWRv
d3MgKHRoZSBmaXJzdCBzcGVjaWZpZWQgc2hhZG93IGlzIG9uIHRvcCkuIiwKKyAgICAiYm94LXNp
emluZyI6ICJUaGUgYm94LXNpemluZyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGFsdGVyIHRoZSBkZWZh
dWx0IENTUyBib3ggbW9kZWwgdXNlZCB0byBjYWxjdWxhdGUgd2lkdGhzIGFuZCBoZWlnaHRzIG9m
IGVsZW1lbnRzLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgdGhpcyBwcm9wZXJ0eSB0byBlbXVsYXRl
IHRoZSBiZWhhdmlvciBvZiBicm93c2VycyB0aGF0IGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB0
aGUgQ1NTIGJveCBtb2RlbCBzcGVjaWZpY2F0aW9uLiIsCisgICAgImNsZWFyIjogIlRoZSBjbGVh
ciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgbmV4dCB0
byBmbG9hdGluZyBlbGVtZW50cyB0aGF0IHByZWNlZGUgaXQgb3IgbXVzdCBiZSBtb3ZlZCBkb3du
IChjbGVhcmVkKSBiZWxvdyB0aGVtLiBUaGUgY2xlYXIgcHJvcGVydHkgYXBwbGllcyB0byBib3Ro
IGZsb2F0aW5nIGFuZCBub24tZmxvYXRpbmcgZWxlbWVudHMuIiwKKyAgICAiY29sb3IiOiAiVGhl
IGNvbG9yIHByb3BlcnR5IHNldHMgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudCdz
IHRleHQgY29udGVudCwgYW5kIGl0cyBkZWNvcmF0aW9ucy4gSXQgZG9lc24ndCBhZmZlY3QgYW55
IG90aGVyIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBlbGVtZW50OyBpdCBzaG91bGQgcmVhbGx5IGJl
IGNhbGxlZCB0ZXh0LWNvbG9yIGFuZCB3b3VsZCBoYXZlIGJlZW4gbmFtZWQgc28sIHNhdmUgZm9y
IGhpc3RvcmljYWwgcmVhc29ucyBhbmQgaXRzIGFwcGVhcmFuY2UgaW4gQ1NTIExldmVsIDEuIiwK
KyAgICAiY3Vyc29yIjogIlRoZSBjdXJzb3IgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbW91
c2UgY3Vyc29yIGRpc3BsYXllZCB3aGVuIHRoZSBtb3VzZSBwb2ludGVyIGlzIG92ZXIgYW4gZWxl
bWVudC4iLAorICAgICJkaXJlY3Rpb24iOiAiU2V0IHRoZSBkaXJlY3Rpb24gQ1NTIHByb3BlcnR5
IHRvIG1hdGNoIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHRleHQ6IHJ0bCBmb3IgbGFuZ3VhZ2VzIHdy
aXR0ZW4gZnJvbSByaWdodC10by1sZWZ0IChsaWtlIEhlYnJldyBvciBBcmFiaWMpIHRleHQgYW5k
IGx0ciBmb3Igb3RoZXIgc2NyaXB0cy4gVGhpcyBpcyB0eXBpY2FsbHkgZG9uZSBhcyBwYXJ0IG9m
IHRoZSBkb2N1bWVudCAoZS5nLiwgdXNpbmcgdGhlIGRpciBhdHRyaWJ1dGUgaW4gSFRNTCkgcmF0
aGVyIHRoYW4gdGhyb3VnaCBkaXJlY3QgdXNlIG9mIENTUy4iLAorICAgICJkaXNwbGF5IjogIlRo
ZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgcmVuZGVyaW5nIGJv
eCB1c2VkIGZvciBhbiBlbGVtZW50LiBJbiBIVE1MLCBkZWZhdWx0IGRpc3BsYXkgcHJvcGVydHkg
dmFsdWVzIGFyZSB0YWtlbiBmcm9tIGJlaGF2aW9ycyBkZXNjcmliZWQgaW4gdGhlIEhUTUwgc3Bl
Y2lmaWNhdGlvbnMgb3IgZnJvbSB0aGUgYnJvd3Nlci91c2VyIGRlZmF1bHQgc3R5bGVzaGVldC4g
VGhlIGRlZmF1bHQgdmFsdWUgaW4gWE1MIGlzIGlubGluZS4iLAorICAgICJmbGV4LWJhc2lzIjog
IlRoZSBmbGV4LWJhc2lzIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGZsZXggYmFzaXMgd2hp
Y2ggaXMgdGhlIGluaXRpYWwgbWFpbiBzaXplIG9mIGEgZmxleCBpdGVtLiBUaGlzIHByb3BlcnR5
IGRldGVybWluZXMgdGhlIHNpemUgb2YgdGhlIGNvbnRlbnQtYm94IHVubGVzcyBzcGVjaWZpZWQg
b3RoZXJ3aXNlIHVzaW5nIGJveC1zaXppbmcuIiwKKyAgICAiZmxleC1kaXJlY3Rpb24iOiAiVGhl
IGZsZXgtZGlyZWN0aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJl
IHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIgZGVmaW5pbmcgdGhlIG1haW4gYXhpcyBhbmQg
dGhlIGRpcmVjdGlvbiAobm9ybWFsIG9yIHJldmVyc2VkKS4iLAorICAgICJmbGV4LWdyb3ciOiAi
VGhlIGZsZXgtZ3JvdyBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBmbGV4IGdyb3cgZmFjdG9y
IG9mIGEgZmxleCBpdGVtLiBJdCBzcGVjaWZpZXMgd2hhdCBhbW91bnQgb2Ygc3BhY2UgaW5zaWRl
IHRoZSBmbGV4IGNvbnRhaW5lciB0aGUgaXRlbSBzaG91bGQgdGFrZSB1cC4iLAorICAgICJmbGV4
LXNocmluayI6ICJUaGUgZmxleC1zaHJpbmsgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZmxl
eCBzaHJpbmsgZmFjdG9yIG9mIGEgZmxleCBpdGVtLiIsCisgICAgImZsZXgtd3JhcCI6ICJUaGUg
Q1NTIGZsZXgtd3JhcCBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciBmbGV4IGl0ZW1zIGFyZSBm
b3JjZWQgaW50byBhIHNpbmdsZSBsaW5lIG9yIGNhbiBiZSB3cmFwcGVkIG9udG8gbXVsdGlwbGUg
bGluZXMuIElmIHdyYXBwaW5nIGlzIGFsbG93ZWQsIHRoaXMgcHJvcGVydHkgYWxzbyBlbmFibGVz
IHlvdSB0byBjb250cm9sIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggbGluZXMgYXJlIHN0YWNrZWQu
IiwKKyAgICAiZmxvYXQiOiAiVGhlIGZsb2F0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhhdCBh
biBlbGVtZW50IHNob3VsZCBiZSB0YWtlbiBmcm9tIHRoZSBub3JtYWwgZmxvdyBhbmQgcGxhY2Vk
IGFsb25nIHRoZSBsZWZ0IG9yIHJpZ2h0IHNpZGUgb2YgaXRzIGNvbnRhaW5lciwgd2hlcmUgdGV4
dCBhbmQgaW5saW5lIGVsZW1lbnRzIHdpbGwgd3JhcCBhcm91bmQgaXQuIiwKKyAgICAiZm9udC1m
YW1pbHkiOiAiVGhlIGZvbnQtZmFtaWx5IENTUyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IGEg
cHJpb3JpdGl6ZWQgbGlzdCBvZiBmb250IGZhbWlseSBuYW1lcyBhbmQvb3IgZ2VuZXJpYyBmYW1p
bHkgbmFtZXMgZm9yIHRoZSBzZWxlY3RlZCBlbGVtZW50LiBWYWx1ZXMgYXJlIHNlcGFyYXRlZCBi
eSBhIGNvbW1hIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgYWx0ZXJuYXRpdmVzLiBUaGUgYnJv
d3NlciB3aWxsIHNlbGVjdCB0aGUgZmlyc3QgZm9udCBvbiB0aGUgbGlzdCB0aGF0IGlzIGluc3Rh
bGxlZCBvbiB0aGUgY29tcHV0ZXIgb3IgdGhhdCBjYW4gYmUgZG93bmxvYWRlZCB1c2luZyBhIEBm
b250LWZhY2UgYXQtcnVsZS4iLAorICAgICJmb250LXNpemUiOiAiVGhlIGZvbnQtc2l6ZSBDU1Mg
cHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBmb250LiBTZXR0aW5nIHRoZSBmb250
IHNpemUgbWF5LCBpbiB0dXJuLCBjaGFuZ2UgdGhlIHNpemUgb2Ygb3RoZXIgaXRlbXMsIHNpbmNl
IGl0IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhlIGVtIGFuZCBleMKgXG4gPGxl
bmd0aD4gdW5pdHMuIiwKKyAgICAiZm9udC1zdHlsZSI6ICJUaGUgZm9udC1zdHlsZSBDU1MgcHJv
cGVydHkgbGV0cyB5b3Ugc2VsZWN0IGl0YWxpYyBvciBvYmxpcXVlIGZhY2VzIHdpdGhpbiBhIGZv
bnQtZmFtaWx5LiIsCisgICAgImZvbnQtdmFyaWFudCI6ICJUaGlzIHByb3BlcnR5IGFjdHMgYXMg
YSBzaG9ydGhhbmQgZm9yIHRoZSBsb25naGFuZCBwcm9wZXJ0aWVzOiBmb250LXZhcmlhbnQtY2Fw
cywgZm9udC12YXJpYW50LW51bWVyaWMsIGZvbnQtdmFyaWFudC1hbHRlcm5hdGVzLCBmb250LXZh
cmlhbnQtbGlnYXR1cmVzLCBhbmQgZm9udC12YXJpYW50LWVhc3QtYXNpYW4uIFlvdSBjYW4gYWxz
byBzZXQgdGhlIENTUyBMZXZlbCAyIChSZXZpc2lvbiAxKSB2YWx1ZXMgb2YgZm9udC12YXJpYW50
LCAodGhhdCBpcywgbm9ybWFsIG9yIHNtYWxsLWNhcHMpLCBieSB1c2luZyB0aGUgZm9udCBzaG9y
dGhhbmQuIiwKKyAgICAiZm9udC13ZWlnaHQiOiAiVGhlIGZvbnQtd2VpZ2h0IENTUyBwcm9wZXJ0
eSBzcGVjaWZpZXMgdGhlIHdlaWdodCBvciBib2xkbmVzcyBvZiB0aGUgZm9udC4gU29tZSBmb250
cyBhcmUgb25seSBhdmFpbGFibGUgaW4gbm9ybWFsIGFuZCBib2xkLiIsCisgICAgImhlaWdodCI6
ICJUaGUgaGVpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29u
dGVudCBhcmVhIG9mIGFuIGVsZW1lbnQuIFRoZSBjb250ZW50IGFyZWEgaXMgaW5zaWRlIHRoZSBw
YWRkaW5nLCBib3JkZXIsIGFuZCBtYXJnaW4gb2YgdGhlIGVsZW1lbnQuIiwKKyAgICAibGVmdCI6
ICJUaGUgbGVmdCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9m
IHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAibGV0dGVyLXNwYWNpbmciOiAiVGhlIGxldHRl
ci1zcGFjaW5nIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgc3BhY2luZyBiZWhhdmlvciBiZXR3ZWVu
IHRleHQgY2hhcmFjdGVycy4iLAorICAgICJsaW5lLWhlaWdodCI6ICJPbiBibG9jayBsZXZlbCBl
bGVtZW50cywgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbWluaW11bSBo
ZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4gdGhlIGVsZW1lbnQuIiwKKyAgICAibWFyZ2luLWJv
dHRvbSI6ICJUaGUgbWFyZ2luLWJvdHRvbSBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRz
IHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBB
IG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXJnaW4tbGVmdCI6ICJU
aGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5IHNldHMgdGhlIG1hcmdpbiBzcGFjZSByZXF1aXJl
ZCBvbiB0aGUgbGVmdCBzaWRlIG9mIGEgYm94IGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LiBB
IG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXJnaW4tcmlnaHQiOiAi
VGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJn
aW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBuZWdh
dGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQuIiwKKyAgICAibWFyZ2luLXRvcCI6ICJUaGUgbWFy
Z2luLXRvcCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2Ug
cmVxdWlyZWQgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFs
c28gYWxsb3dlZC4iLAorICAgICJtYXgtaGVpZ2h0IjogIlRoZSBtYXgtaGVpZ2h0IHByb3BlcnR5
IGlzIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGhlaWdodCBvZiBhbiBlbGVtZW50LiBJdCBwcmV2
ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUgaGVpZ2h0IHByb3BlcnR5IGZyb20gYmVjb21pbmcg
bGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgbWF4LWhlaWdodC4iLAorICAgICJt
YXgtd2lkdGgiOiAiVGhlIG1heC13aWR0aCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWF4
aW11bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVl
IG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9tIGJlY29taW5nIGxhcmdlciB0aGFuIHRoZSB2YWx1
ZSBzcGVjaWZpZWQgZm9yIG1heC13aWR0aC4iLAorICAgICJtaW4taGVpZ2h0IjogIlRoZSBtaW4t
aGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtaW5pbXVtIGhlaWdodCBvZiBhIGdp
dmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSBoZWlnaHQgcHJv
cGVydHkgZnJvbSBiZWNvbWluZyBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3Ig
bWluLWhlaWdodC4iLAorICAgICJtaW4td2lkdGgiOiAiVGhlIG1pbi13aWR0aCBwcm9wZXJ0eSBp
cyB1c2VkIHRvIHNldCB0aGUgbWluaW11bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHBy
ZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9tIGJlY29taW5n
IHNtYWxsZXIgdGhhbiB0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciBtaW4td2lkdGguIiwKKyAgICAi
b3BhY2l0eSI6ICJUaGUgb3BhY2l0eSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB0cmFuc3Bh
cmVuY3kgb2YgYW4gZWxlbWVudCwgdGhhdCBpcywgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUgYmFj
a2dyb3VuZCBiZWhpbmQgdGhlIGVsZW1lbnQgaXMgb3ZlcmxhaWQuIiwKKyAgICAib3JkZXIiOiAi
VGhlIENTUyBvcmRlciBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG9yZGVyIHVzZWQgdG8gbGF5IG91
dCBmbGV4IGl0ZW1zIGluIHRoZWlyIGZsZXggY29udGFpbmVyLiBFbGVtZW50cyBhcmUgbGFpZCBv
dXQgaW4gdGhlwqBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlIG9yZGVyIHZhbHVlLiBFbGVtZW50cyB3
aXRoIHRoZSBzYW1lIG9yZGVyIHZhbHVlIGFyZSBsYWlkIG91dCBpbiB0aGUgb3JkZXIgaW4gd2hp
Y2ggdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLiIsCisgICAgIm91dGxpbmUtY29sb3Ii
OiAiVGhlIG91dGxpbmUtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBv
dXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24g
YXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxl
bWVudCBzdGFuZCBvdXQuIiwKKyAgICAib3V0bGluZS1vZmZzZXQiOiAiVGhlIG91dGxpbmUtb2Zm
c2V0IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCBzcGFjZSBiZXR3ZWVuIGFuIG91dGxpbmUg
YW5kIHRoZSBlZGdlIG9yIGJvcmRlciBvZiBhbiBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGlu
ZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVtZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2Uu
IiwKKyAgICAib3V0bGluZS1zdHlsZSI6ICJUaGUgb3V0bGluZS1zdHlsZSBDU1MgcHJvcGVydHkg
aXMgdXNlZCB0byBzZXQgdGhlIHN0eWxlIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFu
IG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRl
IHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAi
b3V0bGluZS13aWR0aCI6ICJUaGUgb3V0bGluZS13aWR0aCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0
byBzZXQgdGhlIHdpZHRoIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUg
aXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3Jk
ZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQ6IiwKKyAgICAib3ZlcmZsb3ci
OiAiVGhlIG92ZXJmbG93IHByb3BlcnR5IHNwZWNpZmllcyB3aGV0aGVyIHRvIGNsaXAgY29udGVu
dCwgcmVuZGVyIHNjcm9sbGJhcnMgb3IganVzdCBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCBvdmVy
Zmxvd3MgaXRzIGJsb2NrIGxldmVsIGNvbnRhaW5lci4iLAorICAgICJwYWRkaW5nLWJvdHRvbSI6
ICJUaGUgcGFkZGluZy1ib3R0b20gQ1NTIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUg
aGVpZ2h0IG9mIHRoZSBwYWRkaW5nIGFyZWEgYXQgdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBU
aGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBl
bGVtZW50IGFuZCBpdCdzIGJvcmRlci4gQ29udHJhcnkgdG8gbWFyZ2luLWJvdHRvbSB2YWx1ZXMs
IG5lZ2F0aXZlIHZhbHVlcyBvZiBwYWRkaW5nLWJvdHRvbSBhcmUgaW52YWxpZC4iLAorICAgICJw
YWRkaW5nLWxlZnQiOiAiVGhlIHBhZGRpbmctbGVmdCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVu
dCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4g
ZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBpcyB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVu
dCBvZiB0aGUgZWxlbWVudCBhbmQgaXQncyBib3JkZXIuIEEgbmVnYXRpdmUgdmFsdWUgaXMgbm90
IGFsbG93ZWQuIiwKKyAgICAicGFkZGluZy1yaWdodCI6ICJUaGUgcGFkZGluZy1yaWdodCBDU1Mg
cHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9u
IHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1lbnQuIFRoZSBwYWRkaW5nIGFyZWEgaXMgdGhlIHNw
YWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2YgdGhlIGVsZW1lbnQgYW5kIGl0cyBib3JkZXIuIE5l
Z2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuIiwKKyAgICAicGFkZGluZy10b3AiOiAiVGhl
IHBhZGRpbmctdG9wIENTUyBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50IHNldHMgdGhlIHBhZGRpbmcg
c3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBvZiBhbiBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVh
IGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdHMg
Ym9yZGVyLiBDb250cmFyeSB0byBtYXJnaW4tdG9wIHZhbHVlcywgbmVnYXRpdmUgdmFsdWVzIG9m
IHBhZGRpbmctdG9wIGFyZSBpbnZhbGlkLiIsCisgICAgInBvc2l0aW9uIjogIlRoZSBwb3NpdGlv
biBDU1MgcHJvcGVydHkgY2hvb3NlcyBhbHRlcm5hdGl2ZSBydWxlcyBmb3IgcG9zaXRpb25pbmcg
ZWxlbWVudHMsIGRlc2lnbmVkIHRvIGJlIHVzZWZ1bCBmb3Igc2NyaXB0ZWQgYW5pbWF0aW9uIGVm
ZmVjdHMuIiwKKyAgICAicmlnaHQiOiAiVGhlIHJpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMg
cGFydCBvZiB0aGUgcG9zaXRpb24gb2YgcG9zaXRpb25lZCBlbGVtZW50cy4iLAorICAgICJ0ZXh0
LWFsaWduIjogIlRoZSB0ZXh0LWFsaWduIENTUyBwcm9wZXJ0eSBkZXNjcmliZXMgaG93IGlubGlu
ZSBjb250ZW50IGxpa2UgdGV4dCBpcyBhbGlnbmVkIGluIGl0cyBwYXJlbnQgYmxvY2sgZWxlbWVu
dC4gdGV4dC1hbGlnbiBkb2VzIG5vdCBjb250cm9sIHRoZSBhbGlnbm1lbnQgb2YgYmxvY2sgZWxl
bWVudHMgaXRzZWxmLCBvbmx5IHRoZWlyIGlubGluZSBjb250ZW50LiIsCisgICAgInRleHQtZGVj
b3JhdGlvbiI6ICJUaGUgdGV4dC1kZWNvcmF0aW9uIENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNl
dCB0aGUgdGV4dCBmb3JtYXR0aW5nIHRvIHVuZGVybGluZSwgb3ZlcmxpbmUsIGxpbmUtdGhyb3Vn
aCBvciBibGluay4gVW5kZXJsaW5lIGFuZCBvdmVybGluZSBkZWNvcmF0aW9ucyBhcmUgcG9zaXRp
b25lZCB1bmRlciB0aGUgdGV4dCwgbGluZS10aHJvdWdoIG92ZXIgaXQuIiwKKyAgICAidGV4dC1p
bmRlbnQiOiAiVGhlIHRleHQtaW5kZW50IHByb3BlcnR5IHNwZWNpZmllcyBob3cgbXVjaCBob3Jp
em9udGFsIHNwYWNlIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBm
aXJzdCBsaW5lIG9mIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYW4gZWxlbWVudC4iLAorICAgICJ0ZXh0
LXNoYWRvdyI6ICJUaGUgdGV4dC1zaGFkb3cgcHJvcGVydHkgYWRkcyBzaGFkb3dzIHRvIHRleHQu
IEl0IGFjY2VwdHMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzaGFkb3dzIHRvIGJlIGFwcGxp
ZWQgdG8gdGhlIHRleHQgYW5kIHRleHQtZGVjb3JhdGlvbnMgb2YgdGhlIGVsZW1lbnQuIiwKKyAg
ICAidGV4dC10cmFuc2Zvcm0iOiAiVGhlIHRleHQtdHJhbnNmb3JtIENTUyBwcm9wZXJ0eSBzcGVj
aWZpZXMgaG93IHRvIGNhcGl0YWxpemUgYW4gZWxlbWVudCdzIHRleHQuIEl0IGNhbiBiZSB1c2Vk
IHRvIG1ha2UgdGV4dCBhcHBlYXIgaW4gYWxsLXVwcGVyY2FzZSBvciBhbGwtbG93ZXJjYXNlLCBv
ciB3aXRoIGVhY2ggd29yZCBjYXBpdGFsaXplZC4iLAorICAgICJ0b3AiOiAiVGhlIHRvcCBDU1Mg
cHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxl
bWVudHMuIEl0IGhhcyBubyBlZmZlY3Qgb24gbm9uLXBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAg
ICAidHJhbnNpdGlvbi1kZWxheSI6ICJUaGUgdHJhbnNpdGlvbi1kZWxheSBwcm9wZXJ0eSBzcGVj
aWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmV0d2VlbiBhIGNoYW5nZSBiZWluZyBy
ZXF1ZXN0ZWQgdG8gYSBwcm9wZXJ0eSB0aGF0IGlzIHRvIGJlIHRyYW5zaXRpb25lZCBhbmQgdGhl
IHN0YXJ0IG9mIHRoZSB0cmFuc2l0aW9uIGVmZmVjdC4iLAorICAgICJ0cmFuc2l0aW9uLWR1cmF0
aW9uIjogIlRoZSB0cmFuc2l0aW9uLWR1cmF0aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhl
IG51bWJlciBvZiBzZWNvbmRzIG9yIG1pbGxpc2Vjb25kcyBhIHRyYW5zaXRpb24gYW5pbWF0aW9u
IHNob3VsZCB0YWtlIHRvIGNvbXBsZXRlLiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMgMHMsIG1l
YW5pbmcgdGhhdCBubyBhbmltYXRpb24gd2lsbCBvY2N1ci4iLAorICAgICJ0cmFuc2l0aW9uLXBy
b3BlcnR5IjogIlRoZSB0cmFuc2l0aW9uLXByb3BlcnR5IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRv
IHNwZWNpZnkgdGhlIG5hbWVzIG9mIENTUyBwcm9wZXJ0aWVzIHRvIHdoaWNoIGEgdHJhbnNpdGlv
biBlZmZlY3Qgc2hvdWxkIGJlIGFwcGxpZWQuIiwKKyAgICAidHJhbnNpdGlvbi10aW1pbmctZnVu
Y3Rpb24iOiAiVGhlIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHByb3BlcnR5IGlzIHVzZWQg
dG8gZGVzY3JpYmUgaG93IHRoZSBpbnRlcm1lZGlhdGUgdmFsdWVzIG9mIHRoZSBDU1PCoHByb3Bl
cnRpZXMgYmVpbmcgYWZmZWN0ZWQgYnkgYSB0cmFuc2l0aW9uIGVmZmVjdCBhcmUgY2FsY3VsYXRl
ZC4gVGhpcyBpbiBlc3NlbmNlIGxldHMgeW91IGVzdGFibGlzaCBhbiBhY2NlbGVyYXRpb24gY3Vy
dmUsIHNvIHRoYXQgdGhlIHNwZWVkIG9mIHRoZSB0cmFuc2l0aW9uIGNhbiB2YXJ5IG92ZXIgaXRz
IGR1cmF0aW9uLiIsCisgICAgInZlcnRpY2FsLWFsaWduIjogIlRoZSB2ZXJ0aWNhbC1hbGlnbiBD
U1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5l
IG9yIHRhYmxlLWNlbGwgYm94LiIsCisgICAgInZpc2liaWxpdHkiOiAiVGhlIHZpc2liaWxpdHkg
cHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gaGlkZSBhbiBlbGVtZW50IHdoaWxlIGxlYXZpbmcgdGhl
IHNwYWNlIHdoZXJlIGl0IHdvdWxkIGhhdmUgYmVlbi4gSXQgY2FuIGFsc28gaGlkZSByb3dzIG9y
IGNvbHVtbnMgb2YgYSB0YWJsZS4iLAorICAgICJ3aGl0ZS1zcGFjZSI6ICJUaGUgd2hpdGUtc3Bh
Y2UgcHJvcGVydHkgaXMgdXNlZCB0byBkZXNjcmliZSBob3cgd2hpdGVzcGFjZSBpbnNpZGUgdGhl
IGVsZW1lbnQgaXMgaGFuZGxlZC4iLAorICAgICJ3aWR0aCI6ICJUaGUgd2lkdGggQ1NTIHByb3Bl
cnR5IHNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgYXJlYSBvZiBhbiBlbGVtZW50
LiBUaGUgY29udGVudCBhcmVhIGlzIGluc2lkZSB0aGUgcGFkZGluZywgYm9yZGVyLCBhbmQgbWFy
Z2luIG9mIHRoZSBlbGVtZW50LiIsCisgICAgIndvcmQtc3BhY2luZyI6ICJUaGUgd29yZC1zcGFj
aW5nwqBwcm9wZXJ0eSBzcGVjaWZpZXMgc3BhY2luZyBiZWhhdmlvciBiZXR3ZWVuIHRhZ3MgYW5k
IHdvcmRzLiIsCisgICAgInotaW5kZXgiOiAiVGhlIHotaW5kZXggcHJvcGVydHkgc3BlY2lmaWVz
IHRoZSB6LW9yZGVyIG9mIGFuIGVsZW1lbnQgYW5kIGl0cyBkZXNjZW5kYW50cy4gV2hlbiBlbGVt
ZW50cyBvdmVybGFwLCB6LW9yZGVyIGRldGVybWluZXMgd2hpY2ggb25lIGNvdmVycyB0aGUgb3Ro
ZXIuIEFuIGVsZW1lbnQgd2l0aCBhIGxhcmdlciB6LWluZGV4IGdlbmVyYWxseSBjb3ZlcnMgYW4g
ZWxlbWVudCB3aXRoIGEgbG93ZXIgb25lLiIKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258620</attachid>
            <date>2015-08-10 10:37:09 -0700</date>
            <delta_ts>2015-08-14 00:01:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150810103655.patch</filename>
            <type>text/plain</type>
            <size>95136</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDMwMGE0YTIwMjQ2Yjg0NjE1NTExYTc5YTEzYzA2
MmI0ZjFiZjkzM2QuLjkwMDVkMjhlZDM3NTAwNWU4OWI0MjNkYjcwMjc1NzkyN2RhZjY0ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE1LTA4LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01h
aW4uaHRtbDoKKyAgICAgICAgQWRkZWQgZmlsZXMgZm9yIGFsbCBuZXcgY2xhc3NlcyB1c2VkIGlu
IHRoZSBWaXN1YWxTdHlsZURldGFpbHNQYW5lbC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBl
LnNldCBjb2xsYXBzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnBy
b3RvdHlwZS5nZXQgZXhwYW5kZWRCeVVzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uLnByb3RvdHlwZS5faGVhZGVyRWxlbWVudENsaWNrZWQpOgorICAgICAgICBUcmFj
ayB3aGV0aGVyIG9yIG5vdCB0aGUgZXhwYW5kZWQgc3RhdGUgd2FzIGNhdXNlZCBieSB0aGUgdXNl
ci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1z
dHlsZS1zZWN0aW9uLWNsZWFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90
KC5tb2RpZmllZCkgPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyKToKKyAg
ICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gc3Bhbik6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRlciA+IHNwYW46OmFmdGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCk6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyk6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3Jv
dXAgPiAucm93LnZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93KToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAg
ICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWls
cy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3Qt
Y2hpbGQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZp
c3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0
b3Itc2VjdGlvbikpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUt
c2VsZWN0b3Itc2VjdGlvbikgaW5wdXQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5y
ZXBsYWNlRGFzaFdpdGhDYXBpdGFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5jcmVhdGVPcHRpb25zRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcHJlcGFyZUZvckNoYW5nZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl91cGRhdGVTZWN0
aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl91cGRhdGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQ
cm9wZXJ0eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9zZWN0aW9uTW9kaWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fY2xlYXJNb2RpZmllZFNlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5faW5pdGlhbFByb3BlcnR5VGV4dE1vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlU2VjdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZURpc3BsYXlTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxh
dGVQb3NpdGlvblNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVGbG9hdFNlY3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01v
dXNlTGlzdGVuZXJzLm9uRWRpdG9yTW91c2VvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVy
cy5vbkVkaXRvck1vdXNlb3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0
ZURpbWVuc2lvbnNTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlTWFyZ2luU2VjdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVBh
ZGRpbmdTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRmxleGJveFNlY3Rpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUZXh0U3R5
bGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUuX3BvcHVsYXRlRm9udFNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUZXh0U3BhY2luZ1Nl
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVUZXh0U2hhZG93U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJhY2tncm91bmRT
dHlsZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3JkZXJTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlT3V0bGluZVNl
Y3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLm5vUmVtYWluaW5nVHJlZUl0ZW1zKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUu
X3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbi5zZWxlY3RlZEJveFNoYWRvd0l0ZW1WYWx1ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLmJveFNoYWRvd0l0ZW1TZWxlY3RlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9w
b3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbi5ub1Jl
bWFpbmluZ1RyZWVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uLnNlbGVjdGVkdHJh
bnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbi50cmFu
c2l0aW9uSXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNlY3Rpb24pOgorCiAyMDE1
LTA4LTA4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBUaW1lbGluZSBydWxlciBoYW5kbGUgdG9vbHRpcCBzaG93cyB3cm9uZyB2YWx1
ZSB3aGVuIGhhbmRsZXMgb3ZlcmxhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5k
ZXggMDdlOWFjMTk2ODVkMmU2MWFmMzc2OWNmNmQ0NGU0ZDk2ZDVjMGI2Zi4uYTFiMWE3MDg4ODA4
YTY5OGY1ZWRhYTM0YTQ4Zjc3M2Y5ZWI3NmVkNSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0
YSAzNDQ3CnpjbWEpOGRyVlZqNiNwKUxmZCNDRVllaVB1aVViRn1UdiRoMzs+WnhocTB0bylMRmN4
PnBsQiExclVqb19rWSQ8fQp6TyhkUWVII2F3P0dtQVBEX2VCJDltP1dFam1ASmNJUz58ST09OVht
LXdgdDZseFMtb1BVbn0wKmc0LVlNejR5R24Kei0rNnJKb0c7IW1qdHY8SFB1WCpWWSVTfCN2KVJr
YyZDMm1Obj1ONE40NWBwbXRIMisyR3cxZzk2aVlrbkxTX3w9CnptRXsmUnFkK0A7YikjWXM+Q3Eo
aGFvRyU9RWM2e3gpNSFjZGY5Z2EyMjFhaylkJFZOSXEpY2UpUms+NXtIXjh9cgp6PjV3K2w0b1l6
JEtSI28rKzFib20qdCFINVUzaVMzXlMpVmtRZER8ZmtJcUl8TkZaPDNpQn0zeTRJZ1l5I1l4bUMK
emBsJENYUEtFdnkxJHNQUDQjYlVDd0lRcXxVdHE5T2FhSDFKNSFUOEFOZkxxJUNvMHVFa3xENG0p
eyRVa29ETFAxCnpCN1ZuSFl8N0ZlUS0jTF9TVGh8MnAjblFFRDQxZipaTn00REYrMHVwPnFQY09k
e1VNSXRPSlVAcDJ6WlNNLSpAcwp6KihhMlZwcUZedXEmNlAlVj5ZSmVBfjV2WGpYczRDUG1zMFlG
Q2RWR3E0dTUmJURyfTFPVSF9QyRqUlY7RmMmZD4Kem1fYXQ4WCFCS3A7QHZ1QDw+ODRYVVJOXkxm
THNgOVFPT0BgMDMkSnBXK0cza2hnQmEkJkdrXzZuezE2JkRFYmZ1CnpKVzxRRCNDY1NwYlJQSjxW
ZWEkcG1acCpPOCZKaUtwa3Q7YEg3aTJOJn51Pmc5VDlxfmg2bSlOQ1V1a1k7JVZkTwp6bG95Unlq
Wnw2c0c2fUpFMjtXIXZ3NUxBTGE4LSROalpQcCZXZ0hjUFVxQVBQKGJQZ0JGbkd7bVU1SjNpN1oj
aF8Kej8jcmp8SGpGNCRNMz9SPzRGfiRHTl57eSNZSUJrVlFvKXZ8YU0hfXU0My1Xdylge20xWDNL
YWA1Ri09JjkofjRWCnpxVkVWKW9Ydl45SEp6T1lNVD4zbCYzWlJudGZBKzBJS1F3RWwqTzYmbygo
NV5HVU4xWXhZNlNrdlI3JmZgU31gSwp6Tio+aXU3IWZCVThzYHV5UD93cWNTNCkxSFc5PH56aEtq
ZnVoUFRRWSlyZ1pXUWpCdGF0Rkslfkt7K1pqIWU2WCYKemNAaW4weWpqQ2pfLUNQWGxaekNDaCl5
NF5NWnpHYDErdTlkNW4wejZnRDFjPztZQTRIemMkZn1QKDk5cGt5T1A9CnoteXQtaFBmP3ItISFE
KXprcHdsMlBIe2NzVF92SDI5d1NOcGhpfjhYUjt1SDlSMD82byhTa3g2eWkkJmh5WjMrKgp6eF84
KkQ4WVlCeSRnc2R0JG9ja2NxZkVpb0Z4Z0BQMVNNTmJgVDNvaERiVHBmPTRjWktiWVBfT3dNYGpu
Y1I0SV4KejkrYj1+Z15SbGU5WmAlJHZjVntmeztsJXYtUVN1VlJLdDNLcktyK0lmc3ZMJU1VTW1q
dVlYeV97ZDtlbEYrQzkrCno5KDBHYjVTTC1wMWY4YShPa2V0cEFjWm8pJWlsZ0VPLW9iX2tgbGpt
O0EqO01DRUNUQzQoQCowQjtOVjlrTElOfgp6K1luKjA4LUFvQm9nOUpGTjkjTl4qe0R0RUU2MHp1
OV9OVktGJnR9ZkIrbnJ+IWYmTjExaj16NjQ7PWVKIVlmTiYKejI2VFM8QHYzKmgkazglaHtjKXow
UGMxRWk3XnVBVCs0aFRlQ3dQPX5TVSN7c1lUWC0+RXd1OysyTk1pP084TmVRCnpiZllWVG8pUExH
K1IjVSk3QWU/Y3BEeSE+SDt0NT10PHU0b2ZEYXw3Ujg/ISklfnQ9MSZUOG9VTUNDX0xUe1l5Xgp6
cUZXJmg5SiFZZVAjQWw1S0pQaFFDcGw+bmIhKkVIP2Jpd1NrUGZ6Q20wdnBabyo3X2gxe14tKWg1
Skt4LWFSek8KekFTYWUlOVVjP1E7P0tpMipuWXRWYC1pYzhUYDEoZzR5VCVBK1JXQV42bGZqWD8p
QzlJN3Y0PE1FZG5jMDVXYENtCnpLT0RUMj0zMG1GI2trUlZQRXZ2e2hSeGNgSEhJTUQwd3ZkRUB1
YjhJVHNCSnZFRSomXyNGTDA4dVomMnBGbHkzNwp6KktiV0xGalJ0MCtZKjJNVEVFZmkjISFldzBi
T2dsO1ZfQUJDPmJzMXVGK2MoPzdKQyhqXysqTjJFLVJkTEVRUkMKejRBaCU7RXNjLWR7NCkoY1NV
SjtMa0R5N14mOG5lZGA4PEJeKStUYzw0R0hwWnQ8SnhDcTsqaCUkQEw8TStLWS01Cnp4Vj1xKkok
S1cyYFE1biY3KzVuP3MpdHxKJXp2XlRVNys1bEVnSFJRb0tHZG1vQno2O2wyNmc1KGBsZDRpcWg0
awp6TU8xTFhVOFFwMHkqZmkpMH0/M2tNQWtRKWFTcXJ7czZgRiZ4KGxLYVQ4RmkhNkw/QDdRIz0l
eEFrRzBBOF81ai0KekxrejFqPWZqUCRPYiVuMjY4NWBeTn4jZmw/PTM1QjZrKD59TWwrSzdoUTB3
TEB1QWBnMT5WMVpKeGQ+Zk12USFmCnpzc1QxV1h2PTk3cCQrUkM1ajJxdCpGUj9ke2V4UG09aDJG
fDhTfnRRUC10VXsle0t4Pj99MiE7QSR8eGMrQk5zbAp6WU5uMFl8RiR8cT84cDxDZ19yakczT1lu
TlE9ZypVS18zK2prOU4me0s4WUxJN04pP2JJfmBWaCN6cSh9JV9GSmEKSmVMcVRWe3tsaDlHNzxt
KQoKZGVsdGEgMzk4CnpjbVY7OTBkZkJQeSMmbUgxaEJDWnYtPVdtMCtYaX44bmVxNWdhZWE1OHhG
SSM4dWtVVmB5anZxbFZjPXV2JHJLSQp6MSt5KEg1KEpZZUZfTj8wR3lET3c5WEQxNGxNZyUhbFc5
IzF2KHIxTzRZU0toUDZWP1BQaTZ5P3VUdm5DZUBfbXgKelVzRChabFY0WDN2KTVNTUIoczVoNmF9
OzZmd317O3RBPjthdnhTZUUxaGFqVjVDcFRebTw5cnFUYnIhMlFKbU5YCnpsTWtafHYmb3wzMkQz
WT1wYUhXVHRrdyooTngxPzdsYk8zdmxSTGFwbGRydUR2Kld6djBrYXZ1M0lVVU96KH0oYgp6ITNZ
R2lFeW1tZnZ0UDxtMGtpK2hvQ2RTJChrdWhCVSlFWCR2amcwTTM2dU5mNXxmTUc0NzJnJikoRGRv
Pz8kdCEKej8qc3Z9fE0xS0t2bDtXQTFoWDBWP2cweDswQSZEbDBDRTZuMEFyS0RfWmdGKWA0UzZG
MEEmRGwwQ0U2bjBBckl0CnpgYm0+SGBWNW9CX1l7KyNgNFc+a2BhclkpYG8wTzFkMFA7LUdYKCkm
MkE2KmYwU2RQKDM7YCR1dytqI2YpQj85VApzNjlHJkV3fkg0NjkwOFk4ODNFanZuSG04VW14JnF5
T3Qle3cwYWdLKmtzU2ZFbXpFdkBXPj0hNjlzbUZVCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDk3YzZjNzMzYWNhODEzYjkwOTNhN2E5Mzhl
YmI5YTFlNDU2YWE3YjUuLjI1ZWI1MjQwNDg2YzY0NDRmZWY0OGJiYzRjOTNhMWFlMDk1MmMxMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAg
LTE2Miw2ICsxNjIsMTkgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1R5cGVUb2tlblZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1R5cGVUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVk
aXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc0NvbnRyb2xsZXIuY3NzIj4KKyAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNr
Ym94LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxT
dHlsZUtleXdvcmRJY29uTGlzdC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmNzcyI+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRp
dG9yLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5jc3MiPgorICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rp
b24uY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0
eWxlU2VsZWN0b3JUcmVlSXRlbS5jc3MiPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JEcmFn
VG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+CkBAIC01NDAsNiArNTUzLDI2IEBACiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3
b3JkRWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5
bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVJdGVtLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZFBpY2tlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3guanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5Q29tYmluZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24u
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9y
VHJlZUl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHls
ZVRhYmJlZFByb3BlcnRpZXNDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3Njcmlw
dD4KIApAQCAtNTc0LDYgKzYwNyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1N0
b3JhZ2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMv
VGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0Pgog
CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTWFpbi5qcyI+PC9zY3JpcHQ+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA2ZmQyM2QwYzhkMTZhZWE2
MmNiZmRmYjkwMDdkMTM1MDU3NGQyNThjLi4yODI4MTY3ZmUwZDMzMmRhODJkNzkwYTJjYjU5ZTVm
NTk2MWVhYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCkBAIC02OCwxMiArNjgsMTMgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKIAogICAgICAg
ICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0
YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKHRoaXMp
OworICAgICAgICB0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fY29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURl
dGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7
CiAgICAgICAgIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0
ZXJEaWRDaGFuZ2UsIHRoaXMpOwogCi0gICAgICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsXTsKLSAg
ICAgICAgdGhpcy5fcGFuZWxOYXZpZ2F0aW9uSW5mbyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5h
dmlnYXRpb25JbmZvXTsKKyAgICAgICAgdGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsXTsKKyAgICAgICAgdGhpcy5fcGFuZWxOYXZpZ2F0aW9uSW5mbyA9
IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9y
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl92aXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mb107CiAKICAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVk
U2VjdGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQt
c3R5bGUtZGV0YWlscy1wYW5lbCIsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdh
dGlvbkluZm8uaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKaW5kZXggODRiM2Ez
OTcxODk3NmRkYjE4Y2U4ZGM3Nzc2OTJjNjQ1OGI3ZTAwMS4uZDhhMjRlZWQ0ZWMyYWRjZDM0ZDY2
MTYwMjQ2YWMxYzlmMDEwOTliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMKQEAgLTYxLDYgKzYx
LDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fY29sbGFwc2VkU2V0
dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNl
Y3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKTsKICAgICAg
ICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nLnZhbHVlOworICAgICAg
ICB0aGlzLl9leHBhbmRlZEJ5VXNlciA9IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpA
QCAtMTE1LDYgKzExNiwxMSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBE
ZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHRo
aXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyb3Vwc1tpXS5lbGVtZW50KTsK
ICAgICB9CiAKKyAgICBnZXQgZXhwYW5kZWRCeVVzZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX2V4cGFuZGVkQnlVc2VyOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9o
ZWFkZXJFbGVtZW50Q2xpY2tlZChldmVudCkKQEAgLTEyMiw3ICsxMjgsOSBAQCBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5PYmplY3QKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQo
dGhpcy5fb3B0aW9uc0VsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRo
aXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkOworICAgICAgICB2YXIgY29sbGFwc2VkID0g
dGhpcy5jb2xsYXBzZWQ7CisgICAgICAgIHRoaXMuY29sbGFwc2VkID0gIWNvbGxhcHNlZDsKKyAg
ICAgICAgdGhpcy5fZXhwYW5kZWRCeVVzZXIgPSBjb2xsYXBzZWQ7CiAKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWEyZTljMmYwMGNiZWZj
MGNjNDhkZjhjNWFmN2NjMWJiYzA3YWUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNz
cwpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWls
cy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+
IC5oZWFkZXIgeworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5zaWRlYmFyID4gLnBh
bmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxz
LXNlY3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDVweDsKKyAgICB3aWR0aDogMTVweDsKKyAg
ICBoZWlnaHQ6IDE1cHg7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1jYW52YXMobmF2
aWdhdGlvbi1pdGVtLWNsZWFyLWxvZy1ub3JtYWwpOworICAgIGJhY2tncm91bmQtc2l6ZTogMTVw
eCAxNXB4OworICAgIC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5KDAuNyk7Cit9CisKKy5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5k
ZXRhaWxzLXNlY3Rpb24uY29sbGFwc2VkID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlv
bi1jbGVhciwKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAu
ZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90KC5tb2RpZmllZCkgPiAuaGVhZGVy
ID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQor
Cisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4geworICAgIGRpc3BsYXk6
IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9kaWZpZWQgPiAuaGVhZGVyID4g
c3Bhbjo6YWZ0ZXIgeworICAgIHdpZHRoOiA3cHg7CisgICAgaGVpZ2h0OiA3cHg7CisgICAgbWFy
Z2luOiA0cHggNnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBoc2woMjEyLCA5MiUsIDU0JSk7CisgICAgLXdlYmtpdC1maWx0ZXI6IG9wYWNpdHkoMC41
KTsKKyAgICBjb250ZW50OiAiIjsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mt
c3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250
ZW50IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24g
PiAuY29udGVudCAuZ3JvdXAgPiAucm93IHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0LWNoaWxkIHsK
KyAgICBwYWRkaW5nLWJvdHRvbTogM3B4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxz
LmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4g
LmNvbnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyB7CisgICAg
Ym9yZGVyLWJvdHRvbTogMC41cHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIG1hcmdpbi1i
b3R0b206IDVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMnB4OworfQorCisuc2lkZWJhciA+IC5w
YW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWls
cy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgd2lkdGg6
IDU1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAu
cm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJz
ZWQpOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1yaWdodDogMTFweDsKK30KKworLnNpZGViYXIg
PiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNl
Y3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2VjdGlvbikgeworICAgIC13ZWJraXQt
ZmlsdGVyOiBvcGFjaXR5KDAuNSk7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlzYWJsZWQgPiAuZGV0
YWlscy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rpb24pIGlucHV0IHsK
KyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYzOWFlZDk5YzY5NTU1YWMxOTEwNTMwZTY0MWU5YTg2
ODZhOWZjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0wLDAgKzEsMTEyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbCA9IGNs
YXNzIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0eWxlRGV0
YWlsc1BhbmVsCit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBz
dXBlcihkZWxlZ2F0ZSwgInZpc3VhbCIsICJ2aXN1YWwiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0eWxlcyBcdTIwMTQgVmlzdWFsIikpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5wcm9wZXJ0
eVJlZmVyZW5jZUluZm9UZW1wID0ge307CisgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZSA9IG51
bGw7CisgICAgICAgIHRoaXMuX2ZvcmNlTmV4dFN0eWxlVXBkYXRlID0gZmFsc2U7CisKKyAgICAg
ICAgdGhpcy5fc2VjdGlvbnMgPSB7fTsKKyAgICAgICAgdGhpcy5fZ3JvdXBzID0ge307CisgICAg
ICAgIHRoaXMuX2tleXdvcmRzID0ge307CisgICAgICAgIHRoaXMuX3VuaXRzID0ge307CisgICAg
ICAgIHRoaXMuX2F1dG9jb21wbGV0aW9uUHJvcGVydHlFZGl0b3JzID0ge307CisKKyAgICAgICAg
dGhpcy5fa2V5d29yZHMuZGVmYXVsdHMgPSBbIkluaGVyaXQiLCAiSW5pdGlhbCJdOworICAgICAg
ICB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNh
dChbIkF1dG8iXSk7CisgICAgICAgIHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlID0geworICAg
ICAgICAgICAgYmFzaWM6IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vbmUiLCAi
SGlkZGVuIiwgIlNvbGlkIl0pLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiRGFzaGVkIiwgIkRv
dHRlZCIsICJEb3VibGUiLCAiR3Jvb3ZlIiwgIkhpZGRlbiIsICJJbnNldCIsICJOb25lIiwgIk91
dHNldCIsICJSaWRnZSIsICJTb2xpZCJdCisgICAgICAgIH07CisgICAgICAgIHRoaXMuX2tleXdv
cmRzLmJvcmRlcldpZHRoID0gdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTWVkaXVt
IiwgIlRoaWNrIiwgIlRoaW4iXSk7CisKKyAgICAgICAgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5z
UGVyY2VudCA9IHsKKyAgICAgICAgICAgIGJhc2ljOiBbInB4IiwgImVtIl0sCisgICAgICAgICAg
ICBhZHZhbmNlZDogWyJjaCIsICJjbSIsICJleCIsICJpbiIsICJtbSIsICJwYyIsICJwdCIsICJy
ZW0iLCAidmgiLCAidnciLCAidm1heCIsICJ2bWluIl0KKyAgICAgICAgfTsKKyAgICAgICAgdGhp
cy5fdW5pdHMuZGVmYXVsdHMgPSB7CisgICAgICAgICAgICBiYXNpYzogWyIlIl0uY29uY2F0KHRo
aXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQuYmFzaWMpLAorICAgICAgICAgICAgYWR2YW5j
ZWQ6IHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQuYWR2YW5jZWQKKyAgICAgICAgfTsK
KworICAgICAgICAvLyBTZWxlY3RvciBTZWN0aW9uCisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2Vj
dGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24odGhpcyk7
CisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TZWxlY3RvckNoYW5nZWQsIHRo
aXMuX3VwZGF0ZVNlY3Rpb25zLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JTZWN0aW9u
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9u
LkV2ZW50LlN0eWxlVGV4dENoYW5nZWQsIHRoaXMuX3ByZXBhcmVGb3JDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5l
bGVtZW50KTsKKworICAgICAgICAvLyBMYXlvdXQgU2VjdGlvbgorICAgICAgICB0aGlzLl9nZW5l
cmF0ZVNlY3Rpb24oImRpc3BsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc3BsYXkiKSk7
CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigicG9zaXRpb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlBvc2l0aW9uIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImZs
b2F0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG9hdCBhbmQgQ2xlYXIiKSk7CisgICAgICAg
IHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZGltZW5zaW9ucyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGltZW5zaW9ucyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJtYXJnaW4i
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1hcmdpbiIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJh
dGVTZWN0aW9uKCJwYWRkaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYWRkaW5nIikpOwor
ICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImZsZXhib3giLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZsZXhib3giKSk7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMubGF5b3V0ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigibGF5b3V0IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJMYXlvdXQiKSwgW3RoaXMuX2dyb3Vwcy5kaXNwbGF5LnNlY3Rpb24sIHRoaXMuX2dyb3Vw
cy5wb3NpdGlvbi5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZmxvYXQuc2VjdGlvbiwgdGhpcy5fZ3Jv
dXBzLmRpbWVuc2lvbnMuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLm1hcmdpbi5zZWN0aW9uLCB0aGlz
Ll9ncm91cHMucGFkZGluZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZmxleGJveC5zZWN0aW9uXSk7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMubGF5b3V0
LmVsZW1lbnQpOworCisgICAgICAgIC8vIFRleHQgU2VjdGlvbgorICAgICAgICB0aGlzLl9nZW5l
cmF0ZVNlY3Rpb24oInRleHQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIikp
OworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImZvbnQiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZvbnQiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigidGV4dC1zcGFj
aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTcGFjaW5nIikpOworICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaGFk
b3ciKSk7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMudGV4dCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb24oInRleHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRleHQiKSwgW3Ro
aXMuX2dyb3Vwcy50ZXh0U3R5bGUuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZvbnQuc2VjdGlvbiwg
dGhpcy5fZ3JvdXBzLnRleHRTcGFjaW5nLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93
LnNlY3Rpb25dKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0
aW9ucy50ZXh0LmVsZW1lbnQpOworCisgICAgICAgIC8vIEJhY2tncm91bmQgU2VjdGlvbgorICAg
ICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJhY2tncm91bmQtc3R5bGUiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0eWxlIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJv
cmRlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm9yZGVyIikpOworICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oIm91dGxpbmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk91dGxpbmUi
KSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYm94LXNoYWRvdyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hhZG93IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmJhY2tn
cm91bmQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJiYWNrZ3JvdW5kIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJCYWNrZ3JvdW5kIiksIFt0aGlzLl9ncm91cHMuYmFja2dyb3Vu
ZFN0eWxlLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5ib3JkZXIuc2VjdGlvbiwgdGhpcy5fZ3JvdXBz
Lm91dGxpbmUuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmJveFNoYWRvdy5zZWN0aW9uXSk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMuYmFja2dyb3VuZC5l
bGVtZW50KTsKKworICAgICAgICAvLyBBbmltYXRpb24gU2VjdGlvbgorICAgICAgICB0aGlzLl9n
ZW5lcmF0ZVNlY3Rpb24oInRyYW5zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5z
aXRpb24iKSk7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMuYW5pbWF0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYW5pbWF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJBbmltYXRpb24iKSwgW3RoaXMuX2dyb3Vwcy50cmFuc2l0aW9uLnNlY3Rpb25dKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5hbmltYXRpb24uZWxl
bWVudCk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICByZWZyZXNoKHNpZ25pZmljYW50
Q2hhbmdlKQorICAgIHsKKyAgICAgICAgaWYgKHNpZ25pZmljYW50Q2hhbmdlIHx8IHRoaXMuX2Zv
cmNlTmV4dFN0eWxlVXBkYXRlKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24u
dXBkYXRlKHRoaXMuX25vZGVTdHlsZXMpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlU2VjdGlv
bnMoKTsKKyAgICAgICAgICAgIHRoaXMuX2ZvcmNlTmV4dFN0eWxlVXBkYXRlID0gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBzdXBlci5yZWZyZXNoKCk7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2dlbmVyYXRlU2VjdGlvbihpZCwgZGlzcGxheU5hbWUpCisgICAgeworICAg
ICAgICBpZiAoIWlkIHx8ICFkaXNwbGF5TmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBmdW5jdGlvbiByZXBsYWNlRGFzaFdpdGhDYXBpdGFsKG1hdGNoKSB7CisgICAgICAgICAg
ICByZXR1cm4gbWF0Y2gucmVwbGFjZSgiLSIsICIiKS50b1VwcGVyQ2FzZSgpOworICAgICAgICB9
CisKKyAgICAgICAgbGV0IGNhbWVsQ2FzZUlkID0gaWQucmVwbGFjZSgvLVxiXHcvZywgcmVwbGFj
ZURhc2hXaXRoQ2FwaXRhbCk7CisKKyAgICAgICAgZnVuY3Rpb24gY3JlYXRlT3B0aW9uc0VsZW1l
bnQoKSB7CisgICAgICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0
eWxlLXNlY3Rpb24tY2xlYXIiKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gY2xlYXIgbW9kaWZpZWQgcHJvcGVydGllcyIpOwor
ICAgICAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xl
YXJNb2RpZmllZFNlY3Rpb24uYmluZCh0aGlzLCBjYW1lbENhc2VJZCkpOworICAgICAgICAgICAg
cmV0dXJuIGNvbnRhaW5lcjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2dyb3Vwc1tjYW1l
bENhc2VJZF0gPSB7CisgICAgICAgICAgICBzZWN0aW9uOiBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uKGlkLCBkaXNwbGF5TmFtZSwgW10sIGNyZWF0ZU9wdGlvbnNFbGVtZW50LmNhbGwo
dGhpcykpLAorICAgICAgICAgICAgcHJvcGVydGllczoge30KKyAgICAgICAgfTsKKworICAgICAg
ICBsZXQgcG9wdWxhdGVGdW5jdGlvbiA9IHRoaXNbIl9wb3B1bGF0ZSIgKyBjYW1lbENhc2VJZC5j
YXBpdGFsaXplKCkgKyAiU2VjdGlvbiJdOworICAgICAgICBwb3B1bGF0ZUZ1bmN0aW9uLmNhbGwo
dGhpcyk7CisgICAgfQorCisgICAgX3ByZXBhcmVGb3JDaGFuZ2UoZXZlbnQpCisgICAgeworICAg
ICAgICB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSA9IHRydWU7CisgICAgfQorCisgICAgX3Vw
ZGF0ZVNlY3Rpb25zKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY3VycmVudFN0eWxlID0g
dGhpcy5fc2VsZWN0b3JTZWN0aW9uLmN1cnJlbnRTdHlsZSgpOworICAgICAgICBpZiAoIXRoaXMu
X2N1cnJlbnRTdHlsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgZGlzYWJs
ZWQgPSB0aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1Bh
bmVsLlN0eWxlRGlzYWJsZWRTeW1ib2xdOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoImRpc2FibGVkIiwgZGlzYWJsZWQpOworICAgICAgICBpZiAoZGlzYWJsZWQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuX2dyb3Vw
cykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5fZ3JvdXBzW2tleV0s
ICEhZXZlbnQpOworCisgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9zZWN0aW9ucykgewor
ICAgICAgICAgICAgbGV0IHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1trZXldOworICAgICAgICAg
ICAgbGV0IG9uZVNlY3Rpb25FeHBhbmRlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChsZXQg
Z3JvdXAgb2Ygc2VjdGlvbi5ncm91cHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdyb3VwLmNv
bGxhcHNlZCkgeworICAgICAgICAgICAgICAgICAgICBvbmVTZWN0aW9uRXhwYW5kZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHNlY3Rpb24uY29sbGFwc2VkID0gIW9uZVNlY3Rpb25FeHBh
bmRlZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF91cGRhdGVQcm9wZXJ0aWVzKGdyb3VwLCBm
b3JjZVN0eWxlVXBkYXRlKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cC5zZWN0aW9uKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBpbml0aWFsVGV4dExpc3QgPSB0aGlzLl9j
dXJyZW50U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQ
cm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbF07CisgICAgICAgIGlmICghaW5pdGlhbFRleHRM
aXN0KQorICAgICAgICAgICAgdGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1ib2xdID0g
aW5pdGlhbFRleHRMaXN0ID0gbmV3IFdlYWtNYXA7CisKKyAgICAgICAgbGV0IGluaXRpYWxQcm9w
ZXJ0eVRleHQgPSB7fTsKKyAgICAgICAgbGV0IGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nID0g
IWluaXRpYWxUZXh0TGlzdC5oYXMoZ3JvdXApOworICAgICAgICBsZXQgb25lUHJvcGVydHlIYXNW
YWx1ZSA9IGZhbHNlOworICAgICAgICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykg
eworICAgICAgICAgICAgbGV0IHByb3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXld
OworICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IudXBkYXRlKCFwcm9wZXJ0eUVkaXRvci5zdHls
ZSB8fCBmb3JjZVN0eWxlVXBkYXRlID8gdGhpcy5fY3VycmVudFN0eWxlIDogbnVsbCk7CisKKyAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFsdWU7Cisg
ICAgICAgICAgICBpZiAodmFsdWUgJiYgIXByb3BlcnR5RWRpdG9yLnByb3BlcnR5TWlzc2luZykg
eworICAgICAgICAgICAgICAgIG9uZVByb3BlcnR5SGFzVmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGlmIChpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZykKKyAgICAgICAgICAgICAgICAg
ICAgaW5pdGlhbFByb3BlcnR5VGV4dFtrZXldID0gdmFsdWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAg
ICAgICBpbml0aWFsVGV4dExpc3Quc2V0KGdyb3VwLCBpbml0aWFsUHJvcGVydHlUZXh0KTsKKwor
ICAgICAgICBncm91cC5zZWN0aW9uLmNvbGxhcHNlZCA9ICFvbmVQcm9wZXJ0eUhhc1ZhbHVlICYm
ICFncm91cC5zZWN0aW9uLmV4cGFuZGVkQnlVc2VyOworICAgICAgICB0aGlzLl9zZWN0aW9uTW9k
aWZpZWQoZ3JvdXApOworCisgICAgICAgIGxldCBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVy
dGllcyA9IGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzOworICAgICAgICBp
ZiAoIWF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzIHx8ICFhdXRvY29tcGxldGVDb21w
YXRpYmxlUHJvcGVydGllcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Zm9yIChsZXQgZWRpdG9yIG9mIGF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzKQorICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlQXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnR5RWRpdG9y
KGVkaXRvciwgZm9yY2VTdHlsZVVwZGF0ZSk7CisgICAgfQorCisgICAgX3VwZGF0ZUF1dG9jb21w
bGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlKQorICAgIHsKKyAgICAg
ICAgaWYgKCFlZGl0b3IgfHwgKGVkaXRvci5oYXNDb21wbGV0aW9ucyAmJiAhZm9yY2UpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGVkaXRvci5jb21wbGV0aW9ucyA9IFdlYkluc3Bl
Y3Rvci5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkoZWRpdG9yLnByb3BlcnR5UmVm
ZXJlbmNlTmFtZSk7CisgICAgfQorCisgICAgX3NlY3Rpb25Nb2RpZmllZChncm91cCkKKyAgICB7
CisgICAgICAgIGdyb3VwLnNlY3Rpb24uZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJtb2RpZmll
ZCIsIHRoaXMuX2luaXRpYWxQcm9wZXJ0eVRleHRNb2RpZmllZChncm91cCkpOworICAgIH0KKwor
ICAgIF9jbGVhck1vZGlmaWVkU2VjdGlvbihncm91cElkKQorICAgIHsKKyAgICAgICAgbGV0IGdy
b3VwID0gdGhpcy5fZ3JvdXBzW2dyb3VwSWRdOworICAgICAgICBncm91cC5zZWN0aW9uLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgibW9kaWZpZWQiKTsKKyAgICAgICAgbGV0IGluaXRpYWxQcm9w
ZXJ0eVRleHRMaXN0ID0gdGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1ib2xdLmdldChn
cm91cCk7CisgICAgICAgIGlmICghaW5pdGlhbFByb3BlcnR5VGV4dExpc3QpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbGV0IG5ld1N0eWxlVGV4dCA9IHRoaXMuX2N1cnJlbnRTdHls
ZS50ZXh0OworICAgICAgICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykgeworICAg
ICAgICAgICAgbGV0IHByb3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXldOworICAg
ICAgICAgICAgbGV0IGluaXRpYWxWYWx1ZSA9IGluaXRpYWxQcm9wZXJ0eVRleHRMaXN0W2tleV0g
fHwgbnVsbDsKKyAgICAgICAgICAgIG5ld1N0eWxlVGV4dCA9IHByb3BlcnR5RWRpdG9yLm1vZGlm
eVByb3BlcnR5VGV4dChuZXdTdHlsZVRleHQsIGluaXRpYWxWYWx1ZSk7CisgICAgICAgICAgICBw
cm9wZXJ0eUVkaXRvci5yZXNldEVkaXRvclZhbHVlcyhpbml0aWFsVmFsdWUpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fY3VycmVudFN0eWxlLnRleHQgPSBuZXdTdHlsZVRleHQ7CisgICAg
fQorCisgICAgX2luaXRpYWxQcm9wZXJ0eVRleHRNb2RpZmllZChncm91cCkKKyAgICB7CisgICAg
ICAgIGlmICghZ3JvdXAucHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBsZXQgaW5pdGlhbFByb3BlcnR5VGV4dExpc3QgPSB0aGlzLl9jdXJyZW50U3R5bGVb
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rp
b25UZXh0TGlzdFN5bWJvbF0uZ2V0KGdyb3VwKTsKKyAgICAgICAgaWYgKCFpbml0aWFsUHJvcGVy
dHlUZXh0TGlzdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGxl
dCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykgeworICAgICAgICAgICAgbGV0IHByb3BlcnR5RWRp
dG9yID0gZ3JvdXAucHJvcGVydGllc1trZXldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5RWRp
dG9yLnByb3BlcnR5TWlzc2luZykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHlFZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSAmJiBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXldICE9PSB2YWx1
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBncm91cHMp
CisgICAgeworICAgICAgICBpZiAoIWdyb3VwIHx8ICFncm91cHMpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5ncm91cHMgPSBncm91cHM7CisgICAgICAgIGZv
ciAobGV0IGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKQorICAgICAgICAgICAgZ3JvdXAucHJvcGVy
dGllc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX3NlY3Rpb25Nb2RpZmllZC5iaW5k
KHRoaXMsIGdyb3VwKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGlzcGxheVNlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRpc3BsYXk7CisgICAgICAg
IGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZGlzcGxh
eVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5kaXNwbGF5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNr
ZXIoImRpc3BsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgeworICAgICAgICAg
ICAgYmFzaWM6IFsiTm9uZSIsICJCbG9jayIsICJGbGV4IiwgIklubGluZSIsICJJbmxpbmUgQmxv
Y2siXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbXBhY3QiLCAiSW5saW5lIEZsZXgiLCAi
SW5saW5lIFRhYmxlIiwgIkxpc3QgSXRlbSIsICJUYWJsZSIsICJUYWJsZSBDYXB0aW9uIiwgIlRh
YmxlIENlbGwiLCAiVGFibGUgQ29sdW1uIiwgIlRhYmxlIENvbHVtbiBHcm91cCIsICJUYWJsZSBG
b290ZXIgR3JvdXAiLCAiVGFibGUgSGVhZGVyIEdyb3VwIiwgIlRhYmxlIFJvdyIsICJUYWJsZSBS
b3cgR3JvdXAiLCAiIFdBUCBNYXJxdWVlIiwgIiBXZWJraXQgQm94IiwgIiBXZWJraXQgR3JpZCIs
ICIgV2Via2l0IElubGluZSBCb3giLCAiIFdlYmtpdCBJbmxpbmUgR3JpZCJdCisgICAgICAgIH0p
OworICAgICAgICBwcm9wZXJ0aWVzLnZpc2liaWxpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcigidmlzaWJpbGl0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
VmlzaWJpbGl0eSIpLCB7CisgICAgICAgICAgICBiYXNpYzogWyJIaWRkZW4iLCAiVmlzaWJsZSJd
LAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29sbGFwc2UiXQorICAgICAgICB9KTsKKworICAg
ICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5kaXNwbGF5LmVs
ZW1lbnQpOworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy52aXNpYmlsaXR5LmVsZW1lbnQpOworCisgICAgICAgIGxldCBzaXppbmdSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm94U2l6
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJveC1zaXpp
bmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemluZyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZh
dWx0cy5jb25jYXQoWyJCb3JkZXIgQm94IiwgIkNvbnRlbnQgQm94Il0pKTsKKyAgICAgICAgcHJv
cGVydGllcy5jdXJzb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tl
cigiY3Vyc29yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDdXJzb3IiKSwgeworICAgICAgICAg
ICAgYmFzaWM6IFsiQXV0byIsICJEZWZhdWx0IiwgIk5vbmUiLCAiUG9pbnRlciIsICJDcm9zc2hh
aXIiLCAiVGV4dCJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29udGV4dCBNZW51IiwgIkhl
bHAiLCAiUHJvZ3Jlc3MiLCAiV2FpdCIsICJDZWxsIiwgIlZlcnRpY2FsIFRleHQiLCAiQWxpYXMi
LCAiQ29weSIsICJNb3ZlIiwgIk5vIERyb3AiLCAiTm90IEFsbG93ZWQiLCAiQWxsIFNjcm9sbCIs
ICJDb2wgUmVzaXplIiwgIlJvdyBSZXNpemUiLCAiTiBSZXNpemUiLCAiRSBSZXNpemUiLCAiUyBS
ZXNpemUiLCAiVyBSZXNpemUiLCAiTlMgUmVzaXplIiwgIkVXIFJlc2l6ZSIsICJORSBSZXNpemUi
LCAiTlcgUmVzaXplIiwgIlNFIFJlc2l6ZSIsICJzVyBSZXNpemUiLCAiTkVTVyBSZXNpemUiLCAi
TldTRSBSZXNpemUiXQorICAgICAgICB9KTsKKworICAgICAgICBzaXppbmdSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNpemluZy5lbGVtZW50KTsKKyAgICAgICAgc2l6aW5n
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jdXJzb3IuZWxlbWVudCk7CisKKyAg
ICAgICAgbGV0IG92ZXJmbG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLm9wYWNpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlVW5pdFNsaWRlcigib3BhY2l0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3BhY2l0
eSIpKTsKKyAgICAgICAgcHJvcGVydGllcy5vdmVyZmxvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVLZXl3b3JkUGlja2VyKFsib3ZlcmZsb3cteCIsICJvdmVyZmxvdy15Il0sIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiT3ZlcmZsb3ciKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiSW5p
dGlhbCIsICJBdXRvIiwgIkhpZGRlbiIsICJTY3JvbGwiLCAiVmlzaWJsZSJdLAorICAgICAgICAg
ICAgYWR2YW5jZWQ6IFsiTWFycXVlZSIsICJPdmVybGF5IiwgIiBXZWJraXQgUGFnZWQgWCIsICIg
V2Via2l0IFBhZ2VkIFkiXQorICAgICAgICB9KTsKKworICAgICAgICBvdmVyZmxvd1Jvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3BhY2l0eS5lbGVtZW50KTsKKyAgICAgICAgb3Zl
cmZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm92ZXJmbG93LmVsZW1lbnQp
OworCisgICAgICAgIGxldCBkaXNwbGF5R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW2Rpc3BsYXlSb3csIHNpemluZ1Jvdywgb3ZlcmZsb3dSb3ddKTsKKyAgICAg
ICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGlzcGxheUdyb3VwXSk7CisgICAgfQor
CisgICAgX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsIHByZWZpeCwgYWxsb3dOZWdh
dGl2ZXMpCisgICAgeworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7
CisKKyAgICAgICAgbGV0IGhhc1ByZWZpeCA9IHByZWZpeCAmJiBwcmVmaXgubGVuZ3RoOworICAg
ICAgICBsZXQgcHJvcGVydHlOYW1lUHJlZml4ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIi0iIDog
IiI7CisKKyAgICAgICAgbGV0IHRvcCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJUb3AiIDogInRv
cCI7CisgICAgICAgIGxldCBib3R0b20gPSBoYXNQcmVmaXggPyBwcmVmaXggKyAiQm90dG9tIiA6
ICJib3R0b20iOworICAgICAgICBsZXQgbGVmdCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJMZWZ0
IiA6ICJsZWZ0IjsKKyAgICAgICAgbGV0IHJpZ2h0ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIlJp
Z2h0IiA6ICJyaWdodCI7CisKKyAgICAgICAgbGV0IHZlcnRpY2FsID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW3RvcF0gPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsg
InRvcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIHRoaXMuX2tleXdvcmRzLmJveE1v
ZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBwcm9w
ZXJ0aWVzW2JvdHRvbV0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3gocHJvcGVydHlOYW1lUHJlZml4ICsgImJvdHRvbSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Qm90dG9tIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywg
YWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICBsZXQgdmVydGljYWxMaW5rID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3Bd
LCBwcm9wZXJ0aWVzW2JvdHRvbV1dLCAibGluay12ZXJ0aWNhbCIpOworCisgICAgICAgIHZlcnRp
Y2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1t0b3BdLmVsZW1lbnQpOworICAgICAg
ICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHZlcnRpY2FsTGluay5lbGVtZW50KTsKKyAg
ICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2JvdHRvbV0uZWxl
bWVudCk7CisKKyAgICAgICAgbGV0IGhvcml6b250YWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXNbbGVmdF0gPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgImxlZnQi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWws
IHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZlcyk7CisgICAgICAgIHByb3BlcnRp
ZXNbcmlnaHRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHBy
b3BlcnR5TmFtZVByZWZpeCArICJyaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmlnaHQi
KSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05l
Z2F0aXZlcywgdHJ1ZSk7CisgICAgICAgIGxldCBob3Jpem9udGFsTGluayA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbbGVmdF0sIHBy
b3BlcnRpZXNbcmlnaHRdXSwgImxpbmstaG9yaXpvbnRhbCIpOworCisgICAgICAgIGhvcml6b250
YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2xlZnRdLmVsZW1lbnQpOworICAgICAg
ICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQoaG9yaXpvbnRhbExpbmsuZWxlbWVudCk7
CisgICAgICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW3JpZ2h0
XS5lbGVtZW50KTsKKworICAgICAgICBsZXQgYWxsTGlua1JvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAgIGxldCBhbGxMaW5rID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0
aWVzW2JvdHRvbV0sIHByb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmst
YWxsIiwgW3ZlcnRpY2FsTGluaywgaG9yaXpvbnRhbExpbmtdKTsKKyAgICAgICAgYWxsTGlua1Jv
dy5lbGVtZW50LmFwcGVuZENoaWxkKGFsbExpbmsuZWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJu
IFt2ZXJ0aWNhbCwgYWxsTGlua1JvdywgaG9yaXpvbnRhbF07CisgICAgfQorCisgICAgX3BvcHVs
YXRlUG9zaXRpb25TZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dy
b3Vwcy5wb3NpdGlvbjsKKyAgICAgICAgbGV0IHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1Nl
Y3Rpb25Sb3dzKGdyb3VwLCBudWxsLCB0cnVlKTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBn
cm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBwb3NpdGlvblR5cGUgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24g
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigicG9zaXRpb24iLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiU3Rh
dGljIiwgIlJlbGF0aXZlIiwgIkFic29sdXRlIiwgIkZpeGVkIl0sCisgICAgICAgICAgICBhZHZh
bmNlZDogWyIgV2Via2l0IFN0aWNreSJdCisgICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVz
LnpJbmRleCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiei1p
bmRleCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiei1JbmRleCIpLCB0aGlzLl9rZXl3b3Jkcy5i
b3hNb2RlbCwgbnVsbCwgdHJ1ZSk7CisKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5wb3NpdGlvbi5lbGVtZW50KTsKKyAgICAgICAgcG9zaXRpb25U
eXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy56SW5kZXguZWxlbWVudCk7CisgICAg
ICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZXBh
cmF0ZWQtcm93Iik7CisKKyAgICAgICAgcm93cy51bnNoaWZ0KHBvc2l0aW9uVHlwZSkKKworICAg
ICAgICBsZXQgcG9zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcG9zaXRp
b25Hcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZsb2F0U2VjdGlvbigpCisgICAgewor
ICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxvYXQ7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZmxvYXRSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZmxv
YXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJmbG9hdCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIk5vbmUi
XSk7CisgICAgICAgIGZsb2F0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbG9h
dC5lbGVtZW50KTsKKworICAgICAgICBsZXQgY2xlYXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY2xlYXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJjbGVhciIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xlYXIiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIkJvdGgiLCAiTm9uZSJdKTsKKyAg
ICAgICAgY2xlYXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmNsZWFyLmVsZW1l
bnQpOworCisgICAgICAgIGxldCBmbG9hdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbkdyb3VwKFtmbG9hdFJvdywgY2xlYXJSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxh
dGVTZWN0aW9uKGdyb3VwLCBbZmxvYXRHcm91cF0pOworICAgIH0KKworICAgIF9hZGRNZXRyaWNz
TW91c2VMaXN0ZW5lcnMoZWRpdG9yLCBoaWdobGlnaHRDb25maWcpCisgICAgeworICAgICAgICBm
dW5jdGlvbiBvbkVkaXRvck1vdXNlb3ZlcigpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fc3R5
bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX3N0
eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2
KTogT3JkZXIgb2YgcGFyYW1ldGVycyBjaGFuZ2VkIGluIGlPUyA3LgorICAgICAgICAgICAgICAg
IERPTUFnZW50LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX3N0eWxlLm5vZGUu
aWQsIGhpZ2hsaWdodENvbmZpZ30pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKQorICAg
ICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKGhpZ2hsaWdodENvbmZpZywg
dGhpcy5fc3R5bGUub3duZXJSdWxlLnNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUubm9kZS5vd25l
ckRvY3VtZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkVkaXRvck1vdXNlb3V0KCkgeworICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdo
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2VvdmVyIiwgb25FZGl0b3JNb3VzZW92ZXIuYmluZChlZGl0b3IpKTsKKyAgICAgICAg
ZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBvbkVkaXRvck1vdXNl
b3V0LmJpbmQoZWRpdG9yKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGltZW5zaW9uc1NlY3Rp
b24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRpbWVuc2lvbnM7
CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBs
ZXQgZGltZW5zaW9uc1dpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsK
KworICAgICAgICBwcm9wZXJ0aWVzLndpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJ3aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lk
dGgiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKwor
ICAgICAgICBkaW1lbnNpb25zV2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndp
ZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zSGVpZ2h0ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmhlaWdodCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiaGVpZ2h0
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9k
ZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsKKworICAgICAgICBkaW1lbnNpb25zSGVp
Z2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5oZWlnaHQuZWxlbWVudCk7CisKKyAg
ICAgICAgbGV0IGRpbWVuc2lvbnNQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMud2lkdGgsIHByb3Bl
cnRpZXMuaGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNSZWd1bGFyR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNXaWR0aCwgZGltZW5z
aW9uc0hlaWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWluV2lkdGggPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWluV2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1p
bi13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMu
Ym94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWlu
V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1pbldpZHRoLmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBkaW1lbnNpb25zTWluSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbkhlaWdodCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLWhlaWdodCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0
aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbkhlaWdodC5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluSGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAg
IGxldCBkaW1lbnNpb25zTWluUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1pbldpZHRoLCBwcm9w
ZXJ0aWVzLm1pbkhlaWdodF07CisgICAgICAgIGxldCBkaW1lbnNpb25zTWluR3JvdXAgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNaW5XaWR0aCwgZGlt
ZW5zaW9uc01pbkhlaWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4S2V5d29yZHMg
PSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoIk5vbmUiKTsKKyAgICAgICAgbGV0IGRp
bWVuc2lvbnNNYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy5tYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWF4LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJXaWR0aCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBkaW1lbnNpb25zTWF4V2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLm1heFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4SGVpZ2h0
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLm1heEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJl
clNsaWRlcigibWF4LWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRp
bWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRp
bWVuc2lvbnNNYXhIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1heEhlaWdo
dC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01heFByb3BlcnRpZXMgPSBbcHJv
cGVydGllcy5tYXhXaWR0aCwgcHJvcGVydGllcy5tYXhIZWlnaHRdOworICAgICAgICBsZXQgZGlt
ZW5zaW9uc01heEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtk
aW1lbnNpb25zTWF4V2lkdGgsIGRpbWVuc2lvbnNNYXhIZWlnaHRdKTsKKworICAgICAgICBsZXQg
ZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGFi
YmVkUHJvcGVydGllc0NvbnRyb2xsZXIoeworICAgICAgICAgICAgImRlZmF1bHQiOiB7dGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVmYXVsdCIpLCBlbGVtZW50OiBkaW1lbnNpb25zUmVn
dWxhckdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lvbnNQcm9wZXJ0aWVzfSwKKyAg
ICAgICAgICAgICJtaW4iOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWluIiksIGVs
ZW1lbnQ6IGRpbWVuc2lvbnNNaW5Hcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25z
TWluUHJvcGVydGllc30sCisgICAgICAgICAgICAibWF4Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk1heCIpLCBlbGVtZW50OiBkaW1lbnNpb25zTWF4R3JvdXAuZWxlbWVudCwgcHJv
cGVydGllczogZGltZW5zaW9uc01heFByb3BlcnRpZXN9CisgICAgICAgIH0pOworCisgICAgICAg
IGxldCBoaWdobGlnaHRDb25maWcgPSB7Y29udGVudENvbG9yOiB7cjogMTExLCBnOiAxNjgsIGI6
IDIyMCwgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmlj
c01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMud2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVz
LmhlaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWluV2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1p
bkhlaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1h
eEhlaWdodCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc0dyb3Vw
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNpb25zVGFiQ29u
dHJvbGxlciwgZGltZW5zaW9uc1JlZ3VsYXJHcm91cCwgZGltZW5zaW9uc01pbkdyb3VwLCBkaW1l
bnNpb25zTWF4R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBb
ZGltZW5zaW9uc0dyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlTWFyZ2luU2VjdGlvbigp
CisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMubWFyZ2luOworICAgICAg
ICBsZXQgcm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJtYXJn
aW4iLCB0cnVlKTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0Q29uZmlnID0ge21hcmdpbkNvbG9y
OiB7cjogMjQ2LCBnOiAxNzgsIGI6IDEwNywgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAg
ICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWFy
Z2luVG9wLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5Cb3R0b20sIGhpZ2hsaWdodENvbmZpZyk7
CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVz
Lm1hcmdpbkxlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NN
b3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpblJpZ2h0LCBoaWdobGlnaHRDb25m
aWcpOworCisgICAgICAgIGxldCBtYXJnaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBbbWFyZ2luR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVQYWRkaW5nU2VjdGlvbigp
CisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMucGFkZGluZzsKKyAgICAg
ICAgbGV0IHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAicGFk
ZGluZyIpOworCisgICAgICAgIGxldCBoaWdobGlnaHRDb25maWcgPSB7cGFkZGluZ0NvbG9yOiB7
cjogMTQ3LCBnOiAxOTYsIGI6IDEyNSwgYTogMC42Nn0sIHNob3dJbmZvOiB0cnVlfTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGlu
Z1RvcCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlz
dGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ0JvdHRvbSwgaGlnaGxpZ2h0Q29uZmlnKTsK
KyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMu
cGFkZGluZ0xlZnQsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NN
b3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdSaWdodCwgaGlnaGxpZ2h0Q29u
ZmlnKTsKKworICAgICAgICBsZXQgcGFkZGluZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3Jv
dXAsIFtwYWRkaW5nR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbGV4Ym94U2VjdGlv
bigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxleGJveDsKKyAg
ICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBm
bGV4T3JkZXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMub3JkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goIm9yZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmRlciIpLCB0aGlzLl9r
ZXl3b3Jkcy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleEJhc2lzID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LWJhc2lzIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJCYXNpcyIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5f
dW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMub3JkZXIuZWxlbWVudCk7CisgICAgICAgIGZsZXhPcmRlclJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEJhc2lzLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBmbGV4U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4R3JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxleC1ncm93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJHcm93IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKyAgICAgICAgcHJvcGVy
dGllcy5mbGV4U2hyaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJmbGV4LXNocmluayIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hyaW5rIiksIHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsKKworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxleEdyb3cuZWxlbWVudCk7CisgICAgICAgIGZsZXhT
aXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4U2hyaW5rLmVsZW1lbnQp
OworCisgICAgICAgIGxldCBmbGV4Rmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mbGV4RGlyZWN0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImZsZXgtZGlyZWN0aW9uIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29u
Y2F0KFsiUm93IiwgIlJvdyBSZXZlcnNlIiwgIkNvbHVtbiIsICJDb2x1bW4gUmV2ZXJzZSJdKSk7
CisgICAgICAgIHByb3BlcnRpZXMuZmxleFdyYXAgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlS2V5d29yZFBpY2tlcigiZmxleC13cmFwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXcmFw
IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIldyYXAiLCAiV3JhcCBSZXZlcnNl
IiwgIk5vd3JhcCJdKSk7CisKKyAgICAgICAgZmxleEZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIGZsZXhGbG93Um93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4V3JhcC5lbGVtZW50KTsKKworICAg
ICAgICBsZXQgZmxleGJveEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFtmbGV4T3JkZXJSb3csIGZsZXhTaXplUm93LCBmbGV4Rmxvd1Jvd10pOworICAgICAgICB0
aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtmbGV4Ym94R3JvdXBdKTsKKyAgICB9CisKKyAg
ICBfcG9wdWxhdGVUZXh0U3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9
IHRoaXMuX2dyb3Vwcy50ZXh0U3R5bGU7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAu
cHJvcGVydGllczsKKworICAgICAgICBsZXQgdGV4dEFwcGVhcmFuY2VSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY29sb3IgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImNvbG9yIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGllcy50ZXh0RGlyZWN0aW9u
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpcmVjdGlvbiIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlyZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1
bHRzLmNvbmNhdChbIkxUUiIsICJSVEwiXSkpOworCisgICAgICAgIHRleHRBcHBlYXJhbmNlUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jb2xvci5lbGVtZW50KTsKKyAgICAgICAg
dGV4dEFwcGVhcmFuY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHREaXJl
Y3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRBbGlnblJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0QWxpZ24g
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJ0ZXh0LWFsaWdu
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGlnbiIpLCBbIkxlZnQiLCAiQ2VudGVyIiwgIlJp
Z2h0IiwgIkp1c3RpZnkiXSk7CisKKyAgICAgICAgdGV4dEFsaWduUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy50ZXh0QWxpZ24uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRU
cmFuc2Zvcm1Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMudGV4dFRyYW5zZm9ybSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtdHJhbnNmb3JtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJUcmFuc2Zvcm0iKSwgWyJDYXBpdGFsaXplIiwgIlVwcGVyY2FzZSIsICJMb3dlcmNhc2UiLCAi
Tm9uZSJdKTsKKworICAgICAgICB0ZXh0VHJhbnNmb3JtUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy50ZXh0VHJhbnNmb3JtLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0RGVj
b3JhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAg
ICAgcHJvcGVydGllcy50ZXh0RGVjb3JhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtZGVjb3JhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRGVjb3JhdGlvbiIpLCBbIlVuZGVybGluZSIsICJMaW5lIFRocm91Z2giLCAiT3ZlcmxpbmUi
LCAiTm9uZSJdKTsKKworICAgICAgICB0ZXh0RGVjb3JhdGlvblJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMudGV4dERlY29yYXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAu
YXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5jb2xvcl07CisK
KyAgICAgICAgbGV0IHRleHRTdHlsZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0ZXh0QXBwZWFyYW5jZVJvdywgdGV4dEFsaWduUm93LCB0ZXh0VHJhbnNmb3Jt
Um93LCB0ZXh0RGVjb3JhdGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24o
Z3JvdXAsIFt0ZXh0U3R5bGVHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZvbnRTZWN0
aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5mb250OworICAg
ICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZv
bnRGYW1pbHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuZm9udEZhbWlseSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVG
b250RmFtaWx5TGlzdEVkaXRvcigiZm9udC1mYW1pbHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkZhbWlseSIpKTsKKworICAgICAgICBmb250RmFtaWx5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy5mb250RmFtaWx5LmVsZW1lbnQpOworCisgICAgICAgIGxldCBmb250U2l6ZVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5mb250U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJv
eCgiZm9udC1zaXplIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXplIiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLmNvbmNhdChbIkxhcmdlciIsICJYWCBMYXJnZSIsICJYIExhcmdlIiwgIkxh
cmdlIiwgIk1lZGl1bSIsICJTbWFsbCIsICJYIFNtYWxsIiwgIlhYIFNtYWxsIiwgIlNtYWxsZXIi
XSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBwcm9wZXJ0aWVzLmZvbnRXZWln
aHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZm9udC13ZWln
aHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldlaWdodCIpLCB7CisgICAgICAgICAgICBiYXNp
YzogdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiQm9sZGVyIiwgIkJvbGQiLCAiTm9y
bWFsIiwgIkxpZ2h0ZXIiXSksCisgICAgICAgICAgICBhZHZhbmNlZDogWyIxMDAiLCAiMjAwIiwg
IjMwMCIsICI0MDAiLCAiNTAwIiwgIjYwMCIsICI3MDAiLCAiODAwIiwgIjkwMCJdCisgICAgICAg
IH0pOworCisgICAgICAgIGZvbnRTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5mb250U2l6ZS5lbGVtZW50KTsKKyAgICAgICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmZvbnRXZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGZvbnRT
dHlsZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5mb250U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZEljb25MaXN0KCJmb250LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCBb
Ikl0YWxpYyIsICJOb3JtYWwiXSk7CisgICAgICAgIHByb3BlcnRpZXMuZm9udFZhcmlhbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94KCJmb250LXZhcmlhbnQi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhcmlhbnQiKSwgIlNtYWxsIENhcHMiLCAiSW1hZ2Vz
L0ZvbnRWYXJpYW50U21hbGxDYXBzLnN2ZyIpCisKKyAgICAgICAgZm9udFN0eWxlUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGZv
bnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFZhcmlhbnQuZWxl
bWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMg
PSBbcHJvcGVydGllcy5mb250RmFtaWx5XTsKKworICAgICAgICBsZXQgZm9udEdyb3VwID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmb250RmFtaWx5Um93LCBmb250U2l6
ZVJvdywgZm9udFN0eWxlUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91
cCwgW2ZvbnRHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlv
bigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMudGV4dFNwYWNpbmc7
CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBs
ZXQgZGVmYXVsdFRleHRLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChb
Ik5vcm1hbCJdKTsKKworICAgICAgICBsZXQgdGV4dExheW91dFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5saW5lSGVpZ2h0ID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJsaW5lLWhlaWdodCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy52ZXJ0aWNhbEFsaWduID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ2ZXJ0aWNhbC1hbGln
biIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxpZ24iKSwgWyJCYXNlbGluZSIsICJCb3R0b20i
XS5jb25jYXQodGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIFsiTWlkZGxlIiwgIlN1YiIsICJTdXBl
ciIsICJUZXh0IEJvdHRvbSIsICJUZXh0IFRvcCIsICJUb3AiXSksIHRoaXMuX3VuaXRzLmRlZmF1
bHRzKTsKKworICAgICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5saW5lSGVpZ2h0LmVsZW1lbnQpOworICAgICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy52ZXJ0aWNhbEFsaWduLmVsZW1lbnQpOworCisgICAgICAg
IGxldCB0ZXh0U3BhY2luZ1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5sZXR0ZXJTcGFjaW5nID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJsZXR0ZXItc3BhY2luZyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTGV0dGVyIiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1
bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53b3JkU3BhY2luZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgid29yZC1zcGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJXb3JkIiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
KTsKKworICAgICAgICB0ZXh0U3BhY2luZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMubGV0dGVyU3BhY2luZy5lbGVtZW50KTsKKyAgICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndvcmRTcGFjaW5nLmVsZW1lbnQpOworCisgICAgICAg
IGxldCB0ZXh0V2hpdGVzcGFjZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0SW5kZW50ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0LWluZGVudCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSW5kZW50IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZh
dWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMud2hpdGVTcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ3aGl0ZS1zcGFjZSIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiV2hpdGVzcGFjZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb3Jt
YWwiLCAiTm93cmFwIiwgIlByZSIsICJQcmUgTGluZSIsICJQcmUgV3JhcCJdKSk7CisKKyAgICAg
ICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHRJ
bmRlbnQuZWxlbWVudCk7CisgICAgICAgIHRleHRXaGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy53aGl0ZVNwYWNlLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0
U3BhY2luZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0
TGF5b3V0Um93LCB0ZXh0U3BhY2luZ1JvdywgdGV4dFdoaXRlc3BhY2VSb3ddKTsKKyAgICAgICAg
dGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFNwYWNpbmdHcm91cF0pOworICAgIH0K
KworICAgIF9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93OworICAgICAgICBsZXQgcHJvcGVydGllcyA9
IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IHRleHRTaGFkb3dTaXppbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCB0ZXh0U2hhZG93
SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFk
b3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhvcml6b250YWwiKSwgbnVsbCwgdGhpcy5fdW5p
dHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAgICAgIGxldCB0ZXh0U2hhZG93ViA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlZlcnRpY2FsIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
U2Fuc1BlcmNlbnQpOworCisgICAgICAgIHRleHRTaGFkb3dTaXppbmcuZWxlbWVudC5hcHBlbmRD
aGlsZCh0ZXh0U2hhZG93SC5lbGVtZW50KTsKKyAgICAgICAgdGV4dFNoYWRvd1NpemluZy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dWLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0
U2hhZG93U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIGxldCB0ZXh0U2hhZG93Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29s
b3JQaWNrZXIoInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsK
KyAgICAgICAgdGV4dFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0cnVlOworICAgICAgICBs
ZXQgdGV4dFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVyIiksIG51bGws
IHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICB0ZXh0U2hhZG93Qmx1
ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICB0ZXh0U2hhZG93U3R5bGUuZWxl
bWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Q29sb3IuZWxlbWVudCk7CisgICAgICAgIHRleHRT
aGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dCbHVyLmVsZW1lbnQpOwor
CisgICAgICAgIHByb3BlcnRpZXMudGV4dFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0ZXh0LXNoYWRvdyIsIFt0ZXh0U2hhZG93SCwgdGV4dFNo
YWRvd1YsIHRleHRTaGFkb3dCbHVyLCB0ZXh0U2hhZG93Q29sb3JdKTsKKworICAgICAgICBncm91
cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFt0ZXh0U2hhZG93Q29sb3JdOwor
CisgICAgICAgIGxldCB0ZXh0U2hhZG93R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW3RleHRTaGFkb3dTaXppbmcsIHRleHRTaGFkb3dTdHlsZV0pOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U2hhZG93R3JvdXBdKTsKKyAgICB9
CisKKyAgICBfcG9wdWxhdGVCYWNrZ3JvdW5kU3R5bGVTZWN0aW9uKCkKKyAgICB7CisgICAgICAg
IGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5kU3R5bGU7CisgICAgICAgIGxldCBw
cm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFN0
eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBw
cm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b2xvclBpY2tlcigiYmFja2dyb3VuZC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29s
b3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZEltYWdlID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJiYWNrZ3JvdW5kLWltYWdlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJJbWFnZSIpKTsKKworICAgICAgICBiYWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvci5lbGVtZW50KTsKKyAgICAg
ICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5iYWNr
Z3JvdW5kSW1hZ2UuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRTaXplUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgYmFja2dy
b3VuZFNpemVLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLmNvbmNhdChbIkNvbnRh
aW4iLCAiQ292ZXIiXSk7CisgICAgICAgIGxldCBiYWNrZ3JvdW5kU2l6ZVggPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91bmQtc2l6ZSIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgYmFja2dyb3VuZFNpemVLZXl3b3JkcywgdGhpcy5f
dW5pdHMuZGVmYXVsdHMpOworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVgubWFzdGVyUHJvcGVydHkg
PSB0cnVlOworICAgICAgICBsZXQgYmFja2dyb3VuZFNpemVZID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkhlaWdodCIpLCBiYWNrZ3JvdW5kU2l6ZUtleXdvcmRzLCB0aGlzLl91bml0cy5k
ZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRTaXplWS5tYXN0ZXJQcm9wZXJ0eSA9IHRydWU7
CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJiYWNrZ3JvdW5kLXNpemUiLCBbYmFja2dyb3Vu
ZFNpemVYLCBiYWNrZ3JvdW5kU2l6ZVldKTsKKworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5l
bGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRTaXplWC5lbGVtZW50KTsKKyAgICAgICAgYmFj
a2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kU2l6ZVkuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRSZXBlYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVh
dCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5k
LXJlcGVhdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0IiksIHRoaXMuX2tleXdvcmRz
LmRlZmF1bHRzLmNvbmNhdChbIk5vIFJlcGVhdCIsICJSZXBlYXQiLCAiUmVwZWF0IFgiLCAiUmVw
ZWF0IFkiXSkpOworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRBdHRhY2htZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJhY2tncm91bmQtYXR0YWNo
bWVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXR0YWNoIiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLmNvbmNhdChbIkZpeGVkIiwgIkxvY2FsIiwgIlNjcm9sbCJdKSk7CisKKyAgICAgICAg
YmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dy
b3VuZFJlcGVhdC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZEF0dGFjaG1lbnQuZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IGJhY2tncm91bmRQb3NpdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRQb3NpdGlvblggPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91bmQtcG9zaXRp
b24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBvc2l0aW9uIFgiKSwgWyJDZW50ZXIiLCAiTGVm
dCIsICJSaWdodCJdLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGxldCBiYWNrZ3Jv
dW5kUG9zaXRpb25ZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBZ
IiksIFsiQm90dG9tIiwgIkNlbnRlciIsICJUb3AiXSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOwor
CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFBvc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJhY2tncm91bmQtcG9zaXRpb24iLCBbYmFj
a2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3VuZFBvc2l0aW9uWV0pOworCisgICAgICAgIGJhY2tn
cm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblgu
ZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKGJhY2tncm91bmRQb3NpdGlvblkuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2Nv
bXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3Jd
OworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kU3R5bGVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbYmFja2dyb3VuZFN0eWxlUm93LCBiYWNrZ3JvdW5kU2l6ZVJv
dywgYmFja2dyb3VuZFJlcGVhdFJvdywgYmFja2dyb3VuZFBvc2l0aW9uUm93XSk7CisgICAgICAg
IHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JhY2tncm91bmRTdHlsZUdyb3VwXSk7Cisg
ICAgfQorCisgICAgX3BvcHVsYXRlQm9yZGVyU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQg
Z3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVyOworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdy
b3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGJvcmRlckFsbFNpemUgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcihbImJvcmRlci10
b3Atc3R5bGUiLCAiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgImJvcmRlci1ib3R0b20tc3R5bGUiLCAi
Ym9yZGVyLWxlZnQtc3R5bGUiXSAsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhp
cy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxl
LnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItc3R5bGUiOworICAgICAgICBwcm9wZXJ0
aWVzLmJvcmRlcldpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KFsiYm9yZGVyLXRvcC13aWR0aCIsICJib3JkZXItcmlnaHQtd2lkdGgiLCAiYm9yZGVyLWJv
dHRvbS13aWR0aCIsICJib3JkZXItbGVmdC13aWR0aCJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyV2lkdGgucHJvcGVydHlSZWZlcmVuY2VOYW1l
ID0gImJvcmRlci13aWR0aCI7CisKKyAgICAgICAgYm9yZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckFs
bFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLmVsZW1lbnQp
OworCisgICAgICAgIGxldCBib3JkZXJBbGxTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcihbImJvcmRlci10b3AtY29sb3IiLCAiYm9y
ZGVyLXJpZ2h0LWNvbG9yIiwgImJvcmRlci1ib3R0b20tY29sb3IiLCAiYm9yZGVyLWxlZnQtY29s
b3IiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgcHJvcGVydGll
cy5ib3JkZXJDb2xvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLWNvbG9yIjsKKyAg
ICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwgImJvcmRlci10b3At
cmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRv
bS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5f
a2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVy
dGllcy5ib3JkZXJSYWRpdXMucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci1yYWRpdXMi
OworCisgICAgICAgIGJvcmRlckFsbFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5ib3JkZXJDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQWxsU3R5bGUuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgYm9yZGVyQWxsUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLCBwcm9wZXJ0
aWVzLmJvcmRlcldpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRl
clJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJBbGxHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQWxsU2l6ZSwgYm9yZGVyQWxsU3R5bGVdKTsKKwor
ICAgICAgICBsZXQgYm9yZGVyVG9wU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItdG9wLXN0eWxlIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7Cisg
ICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci10b3Atd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5k
ZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyVG9wU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclRvcFNpemUu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRoLmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBib3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLXRvcC1jb2xvciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9w
UmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9y
ZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5f
dW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclRvcFN0eWxlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVy
VG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1cy5l
bGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyVG9wUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVz
LmJvcmRlclRvcFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRoLCBwcm9wZXJ0aWVzLmJv
cmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1c107CisgICAgICAgIGxldCBi
b3JkZXJUb3BHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9y
ZGVyVG9wU2l6ZSwgYm9yZGVyVG9wU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyUmlnaHRT
aXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9w
ZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5
d29yZFBpY2tlcigiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyUmlnaHRXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgiYm9yZGVyLXJpZ2h0LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIp
LCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9y
ZGVyUmlnaHRTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyUmlnaHRTaXplLmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdodFdpZHRoLmVsZW1lbnQpOworCisgICAg
ICAgIGxldCBib3JkZXJSaWdodFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRlci1yaWdodC1jb2xvciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmln
aHRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJi
b3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3IuZWxlbWVudCk7CisgICAg
ICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
clJpZ2h0UmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJSaWdodFByb3BlcnRp
ZXMgPSBbcHJvcGVydGllcy5ib3JkZXJSaWdodFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0
V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdo
dFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJSaWdodEdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJSaWdodFNpemUsIGJvcmRlclJpZ2h0U3R5bGVd
KTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9tU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21TdHlsZSA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItYm90dG9t
LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5i
b3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGggPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci1ib3R0b20td2lk
dGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRl
cldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyQm90dG9tU2l6
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVu
dCk7CisgICAgICAgIGJvcmRlckJvdHRvbVNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlckJvdHRvbVdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJCb3R0
b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVDb2xvclBpY2tlcigiYm9yZGVyLWJvdHRvbS1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tUmFkaXVzID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLWJvdHRvbS1s
ZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckJvdHRvbVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVy
Qm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJh
ZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9tUHJvcGVydGllcyA9IFtw
cm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRo
LCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJh
ZGl1c107CisgICAgICAgIGxldCBib3JkZXJCb3R0b21Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQm90dG9tU2l6ZSwgYm9yZGVyQm90dG9tU3R5bGVd
KTsKKworICAgICAgICBsZXQgYm9yZGVyTGVmdFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJvcmRlci1sZWZ0LXN0eWxl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJT
dHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3JkZXItbGVmdC13aWR0aCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlLmVsZW1lbnQpOworICAgICAgICBi
b3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFdp
ZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVm
dENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXIt
bGVmdC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHBy
b3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1s
ZWZ0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckxl
ZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLmVs
ZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlckxl
ZnRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlLCBwcm9wZXJ0aWVzLmJv
cmRlckxlZnRXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9y
ZGVyTGVmdFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJMZWZ0R3JvdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlckxlZnRTaXplLCBib3JkZXJMZWZ0U3R5
bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzQ29udHJvbGxlcih7CisgICAgICAgICAgICAi
YWxsIjoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCIpLCBlbGVtZW50OiBib3Jk
ZXJBbGxHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJBbGxQcm9wZXJ0aWVzfSwKKyAg
ICAgICAgICAgICJ0b3AiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIGVs
ZW1lbnQ6IGJvcmRlclRvcEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlclRvcFByb3Bl
cnRpZXN9LAorICAgICAgICAgICAgInJpZ2h0Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJpZ2h0IiksIGVsZW1lbnQ6IGJvcmRlclJpZ2h0R3JvdXAuZWxlbWVudCwgcHJvcGVydGll
czogYm9yZGVyUmlnaHRQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJib3R0b20iOiB7dGl0bGU6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90dG9tIiksIGVsZW1lbnQ6IGJvcmRlckJvdHRvbUdy
b3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlckJvdHRvbVByb3BlcnRpZXN9LAorICAgICAg
ICAgICAgImxlZnQiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBlbGVt
ZW50OiBib3JkZXJMZWZ0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyTGVmdFByb3Bl
cnRpZXN9CisgICAgICAgIH0pOworCisgICAgICAgIGxldCBoaWdobGlnaHRDb25maWcgPSB7Ym9y
ZGVyQ29sb3I6IHtyOiAyNTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2fSwgc2hvd0luZm86IHRy
dWV9OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVy
dGllcy5ib3JkZXJXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0
cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIGhpZ2hs
aWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91
cC5wcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAgICAg
ICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJM
ZWZ0V2lkdGgsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3Vz
ZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIGhpZ2hsaWdodENv
bmZpZyk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMg
PSBbcHJvcGVydGllcy5ib3JkZXJDb2xvciwgcHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJv
cGVydGllcy5ib3JkZXJCb3R0b21Db2xvciwgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHBy
b3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvcl07CisKKyAgICAgICAgbGV0IGJvcmRlckdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJUYWJDb250cm9sbGVy
LCBib3JkZXJBbGxHcm91cCwgYm9yZGVyVG9wR3JvdXAsIGJvcmRlclJpZ2h0R3JvdXAsIGJvcmRl
ckJvdHRvbUdyb3VwLCBib3JkZXJMZWZ0R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBbYm9yZGVyR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVPdXRs
aW5lU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0
bGluZTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAg
ICAgIGxldCBvdXRsaW5lU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5lV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIm91dGxpbmUtd2lkdGgiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0
cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZU9mZnNldCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgib3V0bGluZS1vZmZzZXQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk9mZnNldCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhp
cy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lV2lkdGguZWxlbWVudCk7CisgICAgICAg
IG91dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lT2Zm
c2V0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBvdXRsaW5lU3R5bGVSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZVN0
eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoIm91dGxpbmUt
c3R5bGUiICwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5i
b3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZUNvbG9yID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJvdXRsaW5lLWNvbG9yIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKworICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxpbmVTdHlsZS5lbGVtZW50KTsKKyAgICAgICAg
b3V0bGluZVN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lQ29s
b3IuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3Bl
cnRpZXMgPSBbcHJvcGVydGllcy5vdXRsaW5lQ29sb3JdOworCisgICAgICAgIGxldCBvdXRsaW5l
R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW291dGxpbmVTaXpl
Um93LCBvdXRsaW5lU3R5bGVSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdy
b3VwLCBbb3V0bGluZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm94U2hhZG93U2Vj
dGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93
OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAg
bGV0IGJveFNoYWRvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yKCJib3gtc2hhZG93Iik7CisgICAgICAgIHBy
b3BlcnRpZXMuYm94U2hhZG93LmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKwor
ICAgICAgICBib3hTaGFkb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNo
YWRvdy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm94U2hhZG93SFJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0ggPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ci
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVs
dHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93SFJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKGJveFNoYWRvd0guZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1ZS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCBi
b3hTaGFkb3dWID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xp
ZGVyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3AiKSwgbnVsbCwgdGhp
cy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93
VlJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IGJveFNoYWRvd0JsdXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworCisgICAgICAgIGxldCBib3hTaGFkb3dCbHVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJC
bHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBi
b3hTaGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYm94U2hh
ZG93U3ByZWFkID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJi
b3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTcHJlYWQiKSwgbnVsbCwgdGhpcy5f
dW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisgICAgICAgIGJveFNoYWRvd1NwcmVh
ZC5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Qmx1ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hh
ZG93Qmx1clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd1NwcmVhZC5lbGVtZW50KTsK
KworICAgICAgICBsZXQgYm94U2hhZG93Q29sb3JSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCBib3hTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIGJveFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkg
PSB0cnVlOworICAgICAgICBsZXQgYm94U2hhZG93SW5zZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlS2V5d29yZENoZWNrYm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJJbnNldCIpLCAiSW5zZXQiKTsKKyAgICAgICAgYm94U2hhZG93SW5zZXQub3B0aW9uYWxQ
cm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgYm94U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChib3hTaGFkb3dDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Q29sb3JS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dJbnNldC5lbGVtZW50KTsKKworICAgICAg
ICBsZXQgYm94U2hhZG93UHJvcGVydHlDb21iaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJib3gtc2hhZG93IiwgW2JveFNoYWRvd0gsIGJveFNoYWRv
d1YsIGJveFNoYWRvd0JsdXIsIGJveFNoYWRvd1NwcmVhZCwgYm94U2hhZG93Q29sb3IsIGJveFNo
YWRvd0luc2V0XSk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7
CisgICAgICAgICAgICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21U
ZXh0KCIiKTsKKyAgICAgICAgICAgIGJveFNoYWRvd0guZGlzYWJsZWQgPSB0cnVlOworICAgICAg
ICAgICAgYm94U2hhZG93Vi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dC
bHVyLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1NwcmVhZC5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dDb2xvci5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBib3hTaGFkb3dJbnNldC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdU
cmVlSXRlbXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlv
biBzZWxlY3RlZEJveFNoYWRvd0l0ZW1WYWx1ZUNoYW5nZWQoKSB7CisgICAgICAgICAgICBwcm9w
ZXJ0aWVzLmJveFNoYWRvdy5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSBib3hTaGFkb3dQcm9w
ZXJ0eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYm94U2hh
ZG93UHJvcGVydHlDb21iaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCBzZWxlY3RlZEJveFNoYWRv
d0l0ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIGJveFNoYWRvd0l0
ZW1TZWxlY3RlZChldmVudCkgeworICAgICAgICAgICAgYm94U2hhZG93UHJvcGVydHlDb21iaW5l
ci51cGRhdGVWYWx1ZXNGcm9tVGV4dChldmVudC5kYXRhLnRleHQgfHwgIiIpOworICAgICAgICB9
CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVt
U2VsZWN0ZWQsIGJveFNoYWRvd0l0ZW1TZWxlY3RlZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAu
YXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbYm94U2hhZG93Q29sb3JdOworCisg
ICAgICAgIGxldCBib3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAoW2JveFNoYWRvd1JvdywgYm94U2hhZG93SFJvdywgYm94U2hhZG93VlJvdywgYm94U2hhZG93
Qmx1clJvdywgYm94U2hhZG93Q29sb3JSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0
aW9uKGdyb3VwLCBbYm94U2hhZG93XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVHJhbnNpdGlv
blNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRyYW5z
aXRpb247CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAg
ICAgICBsZXQgdHJhbnNpdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcigidHJhbnNpdGlvbiIpOworICAg
ICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjEx
cHgiOworCisgICAgICAgIHRyYW5zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLnRyYW5zaXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0
eVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0
IHRyYW5zaXRpb25Qcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eU5hbWVJbnB1dCgidHJhbnNpdGlvbi1wcm9wZXJ0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvcGVydHkiKSk7CisgICAgICAgIGxldCB0cmFuc2l0aW9uVGltaW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9u
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1pbmciKSwgWyJMaW5lYXIiLCAiRWFzZSIsICJF
YXNlIEluIiwgIkVhc2UgT3V0IiwgIkVhc2UgSW4gT3V0Il0pOworCisgICAgICAgIHRyYW5zaXRp
b25Qcm9wZXJ0eVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25Qcm9wZXJ0eS5lbGVt
ZW50KTsKKyAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dHJhbnNpdGlvblRpbWluZy5lbGVtZW50KTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvbkR1cmF0
aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBs
ZXQgdHJhbnNpdGlvblRpbWVLZXl3b3JkcyA9IFsicyIsICJtcyJdOworICAgICAgICBsZXQgdHJh
bnNpdGlvbkR1cmF0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlv
biIpLCBudWxsLCB0cmFuc2l0aW9uVGltZUtleXdvcmRzKTsKKyAgICAgICAgbGV0IHRyYW5zaXRp
b25EZWxheSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJh
bnNpdGlvbi1kZWxheSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVsYXkiKSwgbnVsbCwgdHJh
bnNpdGlvblRpbWVLZXl3b3Jkcyk7CisgICAgICAgIHRyYW5zaXRpb25EZWxheS5vcHRpb25hbFBy
b3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5h
cHBlbmRDaGlsZCh0cmFuc2l0aW9uRHVyYXRpb24uZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRp
b25EdXJhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25EZWxheS5lbGVtZW50
KTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigidHJhbnNpdGlvbiIsIFt0cmFuc2l0
aW9uUHJvcGVydHksIHRyYW5zaXRpb25UaW1pbmcsIHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNp
dGlvbkRlbGF5XSk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7
CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9t
VGV4dCgiIik7CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHkuZGlzYWJsZWQgPSB0cnVl
OworICAgICAgICAgICAgdHJhbnNpdGlvblRpbWluZy5kaXNhYmxlZCA9IHRydWU7CisgICAgICAg
ICAgICB0cmFuc2l0aW9uRHVyYXRpb24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJh
bnNpdGlvbkRlbGF5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0
aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVD
b21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMsIG5v
UmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RlZHRy
YW5zaXRpb25JdGVtVmFsdWVDaGFuZ2VkKCkgeworICAgICAgICAgICAgcHJvcGVydGllcy50cmFu
c2l0aW9uLnNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1ZSA9IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJp
bmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNpdGlvblByb3Bl
cnR5Q29tYmluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZh
bHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbkl0ZW1TZWxl
Y3RlZChldmVudCkgeworICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIudXBk
YXRlVmFsdWVzRnJvbVRleHQoZXZlbnQuZGF0YS50ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAg
ICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuVHJlZUl0ZW1TZWxl
Y3RlZCwgdHJhbnNpdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbdHJhbnNpdGlvblByb3BlcnR5XTsKKwor
ICAgICAgICBsZXQgdHJhbnNpdGlvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0cmFuc2l0aW9uUm93LCB0cmFuc2l0aW9uUHJvcGVydHlSb3csIHRyYW5zaXRp
b25EdXJhdGlvblJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0
cmFuc2l0aW9uR3JvdXBdKTsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwuU3R5bGVEaXNhYmxlZFN5bWJvbCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLXN0
eWxlLWRpc2FibGVkIik7CitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5p
dGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sID0gU3ltYm9sKCJ2aXN1YWwtc3R5bGUt
aW5pdGlhbC1wcm9wZXJ0eS1zZWN0aW9uLXRleHQiKTsKKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5UmVmZXJlbmNlSW5mbyA9IHsKKyAgICAiYmFja2dyb3Vu
ZC1hdHRhY2htZW50IjogIklmIGEgYmFja2dyb3VuZC1pbWFnZSBpcyBzcGVjaWZpZWQsIHRoZSBi
YWNrZ3JvdW5kLWF0dGFjaG1lbnQgQ1NTIHByb3BlcnR5IGRldGVybWluZXMgd2hldGhlciB0aGF0
IGltYWdlJ3MgcG9zaXRpb24gaXMgZml4ZWQgd2l0aGluIHRoZSB2aWV3cG9ydCwgb3Igc2Nyb2xs
cyBhbG9uZyB3aXRoIGl0cyBjb250YWluaW5nIGJsb2NrLiIsCisgICAgImJhY2tncm91bmQtY29s
b3IiOiAiVGhlIGJhY2tncm91bmQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGJhY2tncm91
bmQgY29sb3Igb2YgYW4gZWxlbWVudCwgZWl0aGVyIHRocm91Z2ggYSBjb2xvciB2YWx1ZSBvciB0
aGUga2V5d29yZCB0cmFuc3BhcmVudC4iLAorICAgICJiYWNrZ3JvdW5kLWltYWdlIjogIlRoZSBD
U1MgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0eSBzZXRzIG9uZSBvciBzZXZlcmFsIGJhY2tncm91
bmQgaW1hZ2VzIGZvciBhbiBlbGVtZW50LiBUaGUgaW1hZ2VzIGFyZSBkcmF3biBvbiBzdGFja2lu
ZyBjb250ZXh0IGxheWVycyBvbiB0b3Agb2YgZWFjaCBvdGhlci4gVGhlIGZpcnN0IGxheWVyIHNw
ZWNpZmllZCBpcyBkcmF3biBhcyBpZiBpdCBpcyBjbG9zZXN0IHRvIHRoZSB1c2VyLiIsCisgICAg
ImJhY2tncm91bmQtcG9zaXRpb24iOiAiVGhlIGJhY2tncm91bmQtcG9zaXRpb24gQ1NTIHByb3Bl
cnR5IHNldHMgdGhlIGluaXRpYWwgcG9zaXRpb24sIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5k
IHBvc2l0aW9uIGxheWVyIGRlZmluZWQgYnkgYmFja2dyb3VuZC1vcmlnaW4gZm9yIGVhY2ggZGVm
aW5lZCBiYWNrZ3JvdW5kIGltYWdlLiIsCisgICAgImJhY2tncm91bmQtcmVwZWF0IjogIlRoZSBi
YWNrZ3JvdW5kLXJlcGVhdCBDU1MgcHJvcGVydHkgZGVmaW5lcyBob3cgYmFja2dyb3VuZCBpbWFn
ZXMgYXJlIHJlcGVhdGVkLiBBIGJhY2tncm91bmQgaW1hZ2UgY2FuIGJlIHJlcGVhdGVkIGFsb25n
IHRoZSBob3Jpem9udGFsIGF4aXMsIHRoZSB2ZXJ0aWNhbCBheGlzLCBib3RoIGF4ZXMsIG9yIG5v
dCByZXBlYXRlZCBhdCBhbGwuIiwKKyAgICAiYmFja2dyb3VuZC1zaXplIjogIlRoZSBiYWNrZ3Jv
dW5kLXNpemUgQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYmFja2dyb3Vu
ZCBpbWFnZXMuIFRoZSBzaXplIG9mIHRoZSBpbWFnZSBjYW4gYmUgZnVsbHkgY29uc3RyYWluZWQg
b3Igb25seSBwYXJ0aWFsbHkgaW4gb3JkZXIgdG8gcHJlc2VydmUgaXRzIGludHJpbnNpYyByYXRp
by4iLAorICAgICJib3JkZXItYm90dG9tLWNvbG9yIjogIlRoZSBib3JkZXItYm90dG9tLWNvbG9y
IENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBjb2xvciBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhbiBl
bGVtZW50LiBOb3RlIHRoYXQgaW4gbWFueSBjYXNlcyB0aGUgc2hvcnRoYW5kIENTUyBwcm9wZXJ0
aWVzIGJvcmRlci1jb2xvciBvciBib3JkZXItYm90dG9tIGFyZSBtb3JlIGNvbnZlbmllbnQgYW5k
IHByZWZlcmFibGUuIiwKKyAgICAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyI6ICJUaGUgYm9y
ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyBDU1MgcHJvcGVydHkgc2V0cyB0aGUgcm91bmRpbmcgb2Yg
dGhlIGJvdHRvbS1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudC4gVGhlIHJvdW5kaW5nIGNhbiBi
ZSBhIGNpcmNsZSBvciBhbiBlbGxpcHNlLCBvciBpZiBvbmUgb2YgdGhlIHZhbHVlIGlzIDAgbm8g
cm91bmRpbmcgaXMgZG9uZSBhbmQgdGhlIGNvcm5lciBpcyBzcXVhcmUuIiwKKyAgICAiYm9yZGVy
LWJvdHRvbS1zdHlsZSI6ICJUaGUgYm9yZGVyLWJvdHRvbS1zdHlsZSBDU1MgcHJvcGVydHkgc2V0
cyB0aGUgbGluZSBzdHlsZSBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJi
b3JkZXItYm90dG9tLXdpZHRoIjogIlRoZSBib3JkZXItYm90dG9tLXdpZHRoIENTUyBwcm9wZXJ0
eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm90dG9tIGJvcmRlciBvZiBhIGJveC4iLAorICAgICJi
b3JkZXItY29sb3IiOiAiVGhlIGJvcmRlci1jb2xvciBDU1MgcHJvcGVydHkgaXMgYSBzaG9ydGhh
bmQgZm9yIHNldHRpbmcgdGhlIGNvbG9yIG9mIHRoZSBmb3VyIHNpZGVzIG9mIGFuIGVsZW1lbnQn
cyBib3JkZXI6IGJvcmRlci10b3AtY29sb3IsIGJvcmRlci1yaWdodC1jb2xvciwgYm9yZGVyLWJv
dHRvbS1jb2xvciwgYm9yZGVyLWxlZnQtY29sb3IiLAorICAgICJib3JkZXItbGVmdC1jb2xvciI6
ICJUaGUgYm9yZGVyLWxlZnQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRo
ZSBib3R0b20gYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhhdCBpbiBtYW55IGNhc2VzIHRo
ZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXPCoGJvcmRlci1jb2xvciBvciBib3JkZXItbGVmdCBh
cmUgbW9yZSBjb252ZW5pZW50IGFuZCBwcmVmZXJhYmxlLiIsCisgICAgImJvcmRlci1sZWZ0LXN0
eWxlIjogIlRoZSBib3JkZXItbGVmdC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBz
dHlsZSBvZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLWxlZnQtd2lk
dGgiOiAiVGhlIGJvcmRlci1sZWZ0LXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBv
ZiB0aGUgbGVmdCBib3JkZXIgb2YgYSBib3guIiwKKyAgICAiYm9yZGVyLXJhZGl1cyI6ICJUaGUg
Ym9yZGVyLXJhZGl1cyBDU1MgcHJvcGVydHkgYWxsb3dzIFdlYiBhdXRob3JzIHRvIGRlZmluZSBo
b3cgcm91bmRlZCBib3JkZXIgY29ybmVycyBhcmUuIFRoZSBjdXJ2ZSBvZiBlYWNoIGNvcm5lciBp
cyBkZWZpbmVkIHVzaW5nIG9uZSBvciB0d28gcmFkaWksIGRlZmluaW5nIGl0cyBzaGFwZTogY2ly
Y2xlIG9yIGVsbGlwc2UuIiwKKyAgICAiYm9yZGVyLXJpZ2h0LWNvbG9yIjogIlRoZSBib3JkZXIt
cmlnaHQtY29sb3IgQ1NTIHByb3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSByaWdodCBib3Jk
ZXIgb2YgYW4gZWxlbWVudC4gTm90ZSB0aGF0IGluIG1hbnkgY2FzZXMgdGhlIHNob3J0aGFuZCBD
U1MgcHJvcGVydGllc8KgIGJvcmRlci1jb2xvciBvciBib3JkZXItcmlnaHQgYXJlIG1vcmUgY29u
dmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAgICJib3JkZXItcmlnaHQtc3R5bGUiOiAiVGhl
IGJvcmRlci1yaWdodC1zdHlsZSBDU1MgcHJvcGVydHkgc2V0cyB0aGUgbGluZSBzdHlsZSBvZiB0
aGUgcmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1yaWdodC13aWR0aCI6ICJU
aGUgYm9yZGVyLXJpZ2h0LXdpZHRoIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSB3aWR0aCBvZiB0aGUg
cmlnaHQgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci1zdHlsZSI6ICJUaGUgYm9yZGVy
LXN0eWxlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IGZvciBzZXR0aW5nIHRoZSBs
aW5lIHN0eWxlIGZvciBhbGwgZm91ciBzaWRlcyBvZiB0aGUgZWxlbWVudHMgYm9yZGVyLiIsCisg
ICAgImJvcmRlci10b3AtY29sb3IiOiAiVGhlIGJvcmRlci10b3AtY29sb3IgQ1NTIHByb3BlcnR5
IHNldHMgdGhlIGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGFuIGVsZW1lbnQuIE5vdGUgdGhh
dCBpbiBtYW55IGNhc2VzIHRoZSBzaG9ydGhhbmQgQ1NTIHByb3BlcnRpZXMgYm9yZGVyLWNvbG9y
IG9yIGJvcmRlci10b3AgYXJlIG1vcmUgY29udmVuaWVudCBhbmQgcHJlZmVyYWJsZS4iLAorICAg
ICJib3JkZXItdG9wLWxlZnQtcmFkaXVzIjogIlRoZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzIENT
UyBwcm9wZXJ0eSBzZXRzIHRoZSByb3VuZGluZyBvZiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRo
ZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEgY2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9y
IGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCxubyByb3VuZGluZyBpcyBkb25lIGFuZCB0aGUgY29y
bmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyI6ICJUaGUgYm9y
ZGVyLXRvcC1yaWdodC1yYWRpdXMgQ1NTIHByb3BlcnR5IHNldHMgdGhlIHJvdW5kaW5nIG9mIHRo
ZSB0b3AtcmlnaHQgY29ybmVyIG9mIHRoZSBlbGVtZW50LiBUaGUgcm91bmRpbmcgY2FuIGJlIGEg
Y2lyY2xlIG9yIGFuIGVsbGlwc2UsIG9yIGlmIG9uZSBvZiB0aGUgdmFsdWUgaXMgMCBubyByb3Vu
ZGluZyBpcyBkb25lIGFuZCB0aGUgY29ybmVyIGlzIHNxdWFyZS4iLAorICAgICJib3JkZXItdG9w
LXN0eWxlIjogIlRoZSBib3JkZXItdG9wLXN0eWxlIENTUyBwcm9wZXJ0eSBzZXRzIHRoZSBsaW5l
IHN0eWxlIG9mIHRoZSB0b3AgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci10b3Atd2lk
dGgiOiAiVGhlIGJvcmRlci10b3Atd2lkdGggQ1NTIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9m
IHRoZSB0b3AgYm9yZGVyIG9mIGEgYm94LiIsCisgICAgImJvcmRlci13aWR0aCI6ICJUaGUgYm9y
ZGVyLXdpZHRoIHByb3BlcnR5IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgb2YgYSBib3gu
IFVzaW5nIHRoZSBzaG9ydGhhbmQgcHJvcGVydHkgYm9yZGVyIGlzIG9mdGVuIG1vcmUgY29udmVu
aWVudC4iLAorICAgICJib3R0b20iOiAiVGhlIGJvdHRvbSBDU1MgcHJvcGVydHkgcGFydGljaXBh
dGVzIGluIHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwK
KyAgICAiYm94LXNoYWRvdyI6ICJUaGUgYm94LXNoYWRvdyBwcm9wZXJ0eSBkZXNjcmliZXMgb25l
IG9yIG1vcmUgc2hhZG93IGVmZmVjdHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gSXQgZW5h
YmxlcyB5b3UgdG8gY2FzdCBhIGRyb3Agc2hhZG93IGZyb20gdGhlIGZyYW1lIG9mIGFsbW9zdCBh
bnkgZWxlbWVudC4gSWYgYSBib3JkZXItcmFkaXVzIGlzIHNwZWNpZmllZCBvbiB0aGUgZWxlbWVu
dCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJveCBzaGFkb3cgdGFrZXMgb24gdGhlIHNhbWUgcm91
bmRlZCBjb3JuZXJzLiBUaGUgei1vcmRlcmluZyBvZiBtdWx0aXBsZSBib3ggc2hhZG93cyBpcyB0
aGUgc2FtZSBhcyBtdWx0aXBsZSB0ZXh0IHNoYWRvd3MgKHRoZSBmaXJzdCBzcGVjaWZpZWQgc2hh
ZG93IGlzIG9uIHRvcCkuIiwKKyAgICAiYm94LXNpemluZyI6ICJUaGUgYm94LXNpemluZyBwcm9w
ZXJ0eSBpcyB1c2VkIHRvIGFsdGVyIHRoZSBkZWZhdWx0IENTUyBib3ggbW9kZWwgdXNlZCB0byBj
YWxjdWxhdGUgd2lkdGhzIGFuZCBoZWlnaHRzIG9mIGVsZW1lbnRzLiBJdCBpcyBwb3NzaWJsZSB0
byB1c2UgdGhpcyBwcm9wZXJ0eSB0byBlbXVsYXRlIHRoZSBiZWhhdmlvciBvZiBicm93c2VycyB0
aGF0IGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB0aGUgQ1NTIGJveCBtb2RlbCBzcGVjaWZpY2F0
aW9uLiIsCisgICAgImNsZWFyIjogIlRoZSBjbGVhciBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHdo
ZXRoZXIgYW4gZWxlbWVudCBjYW4gYmUgbmV4dCB0byBmbG9hdGluZyBlbGVtZW50cyB0aGF0IHBy
ZWNlZGUgaXQgb3IgbXVzdCBiZSBtb3ZlZCBkb3duIChjbGVhcmVkKSBiZWxvdyB0aGVtLiBUaGUg
Y2xlYXIgcHJvcGVydHkgYXBwbGllcyB0byBib3RoIGZsb2F0aW5nIGFuZCBub24tZmxvYXRpbmcg
ZWxlbWVudHMuIiwKKyAgICAiY29sb3IiOiAiVGhlIGNvbG9yIHByb3BlcnR5IHNldHMgdGhlIGZv
cmVncm91bmQgY29sb3Igb2YgYW4gZWxlbWVudCdzIHRleHQgY29udGVudCwgYW5kIGl0cyBkZWNv
cmF0aW9ucy4gSXQgZG9lc24ndCBhZmZlY3QgYW55IG90aGVyIGNoYXJhY3RlcmlzdGljIG9mIHRo
ZSBlbGVtZW50OyBpdCBzaG91bGQgcmVhbGx5IGJlIGNhbGxlZCB0ZXh0LWNvbG9yIGFuZCB3b3Vs
ZCBoYXZlIGJlZW4gbmFtZWQgc28sIHNhdmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgaXRz
IGFwcGVhcmFuY2UgaW4gQ1NTIExldmVsIDEuIiwKKyAgICAiY3Vyc29yIjogIlRoZSBjdXJzb3Ig
Q1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgbW91c2UgY3Vyc29yIGRpc3BsYXllZCB3aGVuIHRo
ZSBtb3VzZSBwb2ludGVyIGlzIG92ZXIgYW4gZWxlbWVudC4iLAorICAgICJkaXJlY3Rpb24iOiAi
U2V0IHRoZSBkaXJlY3Rpb24gQ1NTIHByb3BlcnR5IHRvIG1hdGNoIHRoZSBkaXJlY3Rpb24gb2Yg
dGhlIHRleHQ6IHJ0bCBmb3IgbGFuZ3VhZ2VzIHdyaXR0ZW4gZnJvbSByaWdodC10by1sZWZ0IChs
aWtlIEhlYnJldyBvciBBcmFiaWMpIHRleHQgYW5kIGx0ciBmb3Igb3RoZXIgc2NyaXB0cy4gVGhp
cyBpcyB0eXBpY2FsbHkgZG9uZSBhcyBwYXJ0IG9mIHRoZSBkb2N1bWVudCAoZS5nLiwgdXNpbmcg
dGhlIGRpciBhdHRyaWJ1dGUgaW4gSFRNTCkgcmF0aGVyIHRoYW4gdGhyb3VnaCBkaXJlY3QgdXNl
IG9mIENTUy4iLAorICAgICJkaXNwbGF5IjogIlRoZSBkaXNwbGF5IENTUyBwcm9wZXJ0eSBzcGVj
aWZpZXMgdGhlIHR5cGUgb2YgcmVuZGVyaW5nIGJveCB1c2VkIGZvciBhbiBlbGVtZW50LiBJbiBI
VE1MLCBkZWZhdWx0IGRpc3BsYXkgcHJvcGVydHkgdmFsdWVzIGFyZSB0YWtlbiBmcm9tIGJlaGF2
aW9ycyBkZXNjcmliZWQgaW4gdGhlIEhUTUwgc3BlY2lmaWNhdGlvbnMgb3IgZnJvbSB0aGUgYnJv
d3Nlci91c2VyIGRlZmF1bHQgc3R5bGVzaGVldC4gVGhlIGRlZmF1bHQgdmFsdWUgaW4gWE1MIGlz
IGlubGluZS4iLAorICAgICJmbGV4LWJhc2lzIjogIlRoZSBmbGV4LWJhc2lzIENTUyBwcm9wZXJ0
eSBzcGVjaWZpZXMgdGhlIGZsZXggYmFzaXMgd2hpY2ggaXMgdGhlIGluaXRpYWwgbWFpbiBzaXpl
IG9mIGEgZmxleCBpdGVtLiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIHNpemUgb2YgdGhl
IGNvbnRlbnQtYm94IHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlIHVzaW5nIGJveC1zaXppbmcu
IiwKKyAgICAiZmxleC1kaXJlY3Rpb24iOiAiVGhlIGZsZXgtZGlyZWN0aW9uIENTUyBwcm9wZXJ0
eSBzcGVjaWZpZXMgaG93IGZsZXggaXRlbXMgYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWlu
ZXIgZGVmaW5pbmcgdGhlIG1haW4gYXhpcyBhbmQgdGhlIGRpcmVjdGlvbiAobm9ybWFsIG9yIHJl
dmVyc2VkKS4iLAorICAgICJmbGV4LWdyb3ciOiAiVGhlIGZsZXgtZ3JvdyBDU1MgcHJvcGVydHkg
c3BlY2lmaWVzIHRoZSBmbGV4IGdyb3cgZmFjdG9yIG9mIGEgZmxleCBpdGVtLiBJdCBzcGVjaWZp
ZXMgd2hhdCBhbW91bnQgb2Ygc3BhY2UgaW5zaWRlIHRoZSBmbGV4IGNvbnRhaW5lciB0aGUgaXRl
bSBzaG91bGQgdGFrZSB1cC4iLAorICAgICJmbGV4LXNocmluayI6ICJUaGUgZmxleC1zaHJpbmsg
Q1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZmxleCBzaHJpbmsgZmFjdG9yIG9mIGEgZmxleCBp
dGVtLiIsCisgICAgImZsZXgtd3JhcCI6ICJUaGUgQ1NTIGZsZXgtd3JhcCBwcm9wZXJ0eSBzcGVj
aWZpZXMgd2hldGhlciBmbGV4IGl0ZW1zIGFyZSBmb3JjZWQgaW50byBhIHNpbmdsZSBsaW5lIG9y
IGNhbiBiZSB3cmFwcGVkIG9udG8gbXVsdGlwbGUgbGluZXMuIElmIHdyYXBwaW5nIGlzIGFsbG93
ZWQsIHRoaXMgcHJvcGVydHkgYWxzbyBlbmFibGVzIHlvdSB0byBjb250cm9sIHRoZSBkaXJlY3Rp
b24gaW4gd2hpY2ggbGluZXMgYXJlIHN0YWNrZWQuIiwKKyAgICAiZmxvYXQiOiAiVGhlIGZsb2F0
IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhhdCBhbiBlbGVtZW50IHNob3VsZCBiZSB0YWtlbiBm
cm9tIHRoZSBub3JtYWwgZmxvdyBhbmQgcGxhY2VkIGFsb25nIHRoZSBsZWZ0IG9yIHJpZ2h0IHNp
ZGUgb2YgaXRzIGNvbnRhaW5lciwgd2hlcmUgdGV4dCBhbmQgaW5saW5lIGVsZW1lbnRzIHdpbGwg
d3JhcCBhcm91bmQgaXQuIiwKKyAgICAiZm9udC1mYW1pbHkiOiAiVGhlIGZvbnQtZmFtaWx5IENT
UyBwcm9wZXJ0eSBsZXRzIHlvdSBzcGVjaWZ5IGEgcHJpb3JpdGl6ZWQgbGlzdCBvZiBmb250IGZh
bWlseSBuYW1lcyBhbmQvb3IgZ2VuZXJpYyBmYW1pbHkgbmFtZXMgZm9yIHRoZSBzZWxlY3RlZCBl
bGVtZW50LiBWYWx1ZXMgYXJlIHNlcGFyYXRlZCBieSBhIGNvbW1hIHRvIGluZGljYXRlIHRoYXQg
dGhleSBhcmUgYWx0ZXJuYXRpdmVzLiBUaGUgYnJvd3NlciB3aWxsIHNlbGVjdCB0aGUgZmlyc3Qg
Zm9udCBvbiB0aGUgbGlzdCB0aGF0IGlzIGluc3RhbGxlZCBvbiB0aGUgY29tcHV0ZXIgb3IgdGhh
dCBjYW4gYmUgZG93bmxvYWRlZCB1c2luZyBhIEBmb250LWZhY2UgYXQtcnVsZS4iLAorICAgICJm
b250LXNpemUiOiAiVGhlIGZvbnQtc2l6ZSBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBzaXpl
IG9mIHRoZSBmb250LiBTZXR0aW5nIHRoZSBmb250IHNpemUgbWF5LCBpbiB0dXJuLCBjaGFuZ2Ug
dGhlIHNpemUgb2Ygb3RoZXIgaXRlbXMsIHNpbmNlIGl0IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUg
dmFsdWUgb2YgdGhlIGVtIGFuZCBleMKgXG4gPGxlbmd0aD4gdW5pdHMuIiwKKyAgICAiZm9udC1z
dHlsZSI6ICJUaGUgZm9udC1zdHlsZSBDU1MgcHJvcGVydHkgbGV0cyB5b3Ugc2VsZWN0IGl0YWxp
YyBvciBvYmxpcXVlIGZhY2VzIHdpdGhpbiBhIGZvbnQtZmFtaWx5LiIsCisgICAgImZvbnQtdmFy
aWFudCI6ICJUaGlzIHByb3BlcnR5IGFjdHMgYXMgYSBzaG9ydGhhbmQgZm9yIHRoZSBsb25naGFu
ZCBwcm9wZXJ0aWVzOiBmb250LXZhcmlhbnQtY2FwcywgZm9udC12YXJpYW50LW51bWVyaWMsIGZv
bnQtdmFyaWFudC1hbHRlcm5hdGVzLCBmb250LXZhcmlhbnQtbGlnYXR1cmVzLCBhbmQgZm9udC12
YXJpYW50LWVhc3QtYXNpYW4uIFlvdSBjYW4gYWxzbyBzZXQgdGhlIENTUyBMZXZlbCAyIChSZXZp
c2lvbiAxKSB2YWx1ZXMgb2YgZm9udC12YXJpYW50LCAodGhhdCBpcywgbm9ybWFsIG9yIHNtYWxs
LWNhcHMpLCBieSB1c2luZyB0aGUgZm9udCBzaG9ydGhhbmQuIiwKKyAgICAiZm9udC13ZWlnaHQi
OiAiVGhlIGZvbnQtd2VpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIHdlaWdodCBvciBi
b2xkbmVzcyBvZiB0aGUgZm9udC4gU29tZSBmb250cyBhcmUgb25seSBhdmFpbGFibGUgaW4gbm9y
bWFsIGFuZCBib2xkLiIsCisgICAgImhlaWdodCI6ICJUaGUgaGVpZ2h0IENTUyBwcm9wZXJ0eSBz
cGVjaWZpZXMgdGhlIGhlaWdodCBvZiB0aGUgY29udGVudCBhcmVhIG9mIGFuIGVsZW1lbnQuIFRo
ZSBjb250ZW50IGFyZWEgaXMgaW5zaWRlIHRoZSBwYWRkaW5nLCBib3JkZXIsIGFuZCBtYXJnaW4g
b2YgdGhlIGVsZW1lbnQuIiwKKyAgICAibGVmdCI6ICJUaGUgbGVmdCBDU1MgcHJvcGVydHkgc3Bl
Y2lmaWVzIHBhcnQgb2YgdGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAg
ICAibGV0dGVyLXNwYWNpbmciOiAiVGhlIGxldHRlci1zcGFjaW5nIENTUyBwcm9wZXJ0eSBzcGVj
aWZpZXMgc3BhY2luZyBiZWhhdmlvciBiZXR3ZWVuIHRleHQgY2hhcmFjdGVycy4iLAorICAgICJs
aW5lLWhlaWdodCI6ICJPbiBibG9jayBsZXZlbCBlbGVtZW50cywgdGhlIGxpbmUtaGVpZ2h0IHBy
b3BlcnR5IHNwZWNpZmllcyB0aGUgbWluaW11bSBoZWlnaHQgb2YgbGluZSBib3hlcyB3aXRoaW4g
dGhlIGVsZW1lbnQuIiwKKyAgICAibWFyZ2luLWJvdHRvbSI6ICJUaGUgbWFyZ2luLWJvdHRvbSBD
U1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQg
b24gdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxs
b3dlZC4iLAorICAgICJtYXJnaW4tbGVmdCI6ICJUaGUgbWFyZ2luLWxlZnQgQ1NTIHByb3BlcnR5
IHNldHMgdGhlIG1hcmdpbiBzcGFjZSByZXF1aXJlZCBvbiB0aGUgbGVmdCBzaWRlIG9mIGEgYm94
IGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxs
b3dlZC4iLAorICAgICJtYXJnaW4tcmlnaHQiOiAiVGhlIG1hcmdpbi1yaWdodCBDU1MgcHJvcGVy
dHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHJp
Z2h0IHNpZGUgb2YgYW4gZWxlbWVudC4gQSBuZWdhdGl2ZSB2YWx1ZSBpcyBhbHNvIGFsbG93ZWQu
IiwKKyAgICAibWFyZ2luLXRvcCI6ICJUaGUgbWFyZ2luLXRvcCBDU1MgcHJvcGVydHkgb2YgYW4g
ZWxlbWVudCBzZXRzIHRoZSBtYXJnaW4gc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBvZiBhbiBl
bGVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIGlzIGFsc28gYWxsb3dlZC4iLAorICAgICJtYXgtaGVp
Z2h0IjogIlRoZSBtYXgtaGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVt
IGhlaWdodCBvZiBhbiBlbGVtZW50LiBJdCBwcmV2ZW50cyB0aGUgdXNlZCB2YWx1ZSBvZiB0aGUg
aGVpZ2h0IHByb3BlcnR5IGZyb20gYmVjb21pbmcgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlIHNwZWNp
ZmllZCBmb3IgbWF4LWhlaWdodC4iLAorICAgICJtYXgtd2lkdGgiOiAiVGhlIG1heC13aWR0aCBw
cm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSB3aWR0aCBvZiBhIGdpdmVuIGVsZW1l
bnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSBmcm9t
IGJlY29taW5nIGxhcmdlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIG1heC13aWR0aC4i
LAorICAgICJtaW4taGVpZ2h0IjogIlRoZSBtaW4taGVpZ2h0IHByb3BlcnR5IGlzIHVzZWQgdG8g
c2V0IHRoZSBtaW5pbXVtIGhlaWdodCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRo
ZSB1c2VkIHZhbHVlIG9mIHRoZSBoZWlnaHQgcHJvcGVydHkgZnJvbSBiZWNvbWluZyBzbWFsbGVy
IHRoYW4gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgbWluLWhlaWdodC4iLAorICAgICJtaW4td2lk
dGgiOiAiVGhlIG1pbi13aWR0aCBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgbWluaW11bSB3
aWR0aCBvZiBhIGdpdmVuIGVsZW1lbnQuIEl0IHByZXZlbnRzIHRoZSB1c2VkIHZhbHVlIG9mIHRo
ZSB3aWR0aCBwcm9wZXJ0eSBmcm9tIGJlY29taW5nIHNtYWxsZXIgdGhhbiB0aGUgdmFsdWUgc3Bl
Y2lmaWVkIGZvciBtaW4td2lkdGguIiwKKyAgICAib3BhY2l0eSI6ICJUaGUgb3BhY2l0eSBDU1Mg
cHJvcGVydHkgc3BlY2lmaWVzIHRoZSB0cmFuc3BhcmVuY3kgb2YgYW4gZWxlbWVudCwgdGhhdCBp
cywgdGhlIGRlZ3JlZSB0byB3aGljaCB0aGUgYmFja2dyb3VuZCBiZWhpbmQgdGhlIGVsZW1lbnQg
aXMgb3ZlcmxhaWQuIiwKKyAgICAib3JkZXIiOiAiVGhlIENTUyBvcmRlciBwcm9wZXJ0eSBzcGVj
aWZpZXMgdGhlIG9yZGVyIHVzZWQgdG8gbGF5IG91dCBmbGV4IGl0ZW1zIGluIHRoZWlyIGZsZXgg
Y29udGFpbmVyLiBFbGVtZW50cyBhcmUgbGFpZCBvdXQgaW4gdGhlwqBhc2NlbmRpbmcgb3JkZXIg
b2YgdGhlIG9yZGVyIHZhbHVlLiBFbGVtZW50cyB3aXRoIHRoZSBzYW1lIG9yZGVyIHZhbHVlIGFy
ZSBsYWlkIG91dCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJj
ZSBjb2RlLiIsCisgICAgIm91dGxpbmUtY29sb3IiOiAiVGhlIG91dGxpbmUtY29sb3IgQ1NTIHBy
b3BlcnR5IHNldHMgdGhlIGNvbG9yIG9mIHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91
dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRo
ZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAib3V0
bGluZS1vZmZzZXQiOiAiVGhlIG91dGxpbmUtb2Zmc2V0IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRv
IHNldCBzcGFjZSBiZXR3ZWVuIGFuIG91dGxpbmUgYW5kIHRoZSBlZGdlIG9yIGJvcmRlciBvZiBh
biBlbGVtZW50LiBBbiBvdXRsaW5lIGlzIGEgbGluZSB0aGF0IGlzIGRyYXduIGFyb3VuZCBlbGVt
ZW50cywgb3V0c2lkZSB0aGUgYm9yZGVyIGVkZ2UuIiwKKyAgICAib3V0bGluZS1zdHlsZSI6ICJU
aGUgb3V0bGluZS1zdHlsZSBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHN0eWxlIG9m
IHRoZSBvdXRsaW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMg
ZHJhd24gYXJvdW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0
aGUgZWxlbWVudCBzdGFuZCBvdXQuIiwKKyAgICAib3V0bGluZS13aWR0aCI6ICJUaGUgb3V0bGlu
ZS13aWR0aCBDU1MgcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHdpZHRoIG9mIHRoZSBvdXRs
aW5lIG9mIGFuIGVsZW1lbnQuIEFuIG91dGxpbmUgaXMgYSBsaW5lIHRoYXQgaXMgZHJhd24gYXJv
dW5kIGVsZW1lbnRzLCBvdXRzaWRlIHRoZSBib3JkZXIgZWRnZSwgdG8gbWFrZSB0aGUgZWxlbWVu
dCBzdGFuZCBvdXQ6IiwKKyAgICAib3ZlcmZsb3ciOiAiVGhlIG92ZXJmbG93IHByb3BlcnR5IHNw
ZWNpZmllcyB3aGV0aGVyIHRvIGNsaXAgY29udGVudCwgcmVuZGVyIHNjcm9sbGJhcnMgb3IganVz
dCBkaXNwbGF5IGNvbnRlbnQgd2hlbiBpdCBvdmVyZmxvd3MgaXRzIGJsb2NrIGxldmVsIGNvbnRh
aW5lci4iLAorICAgICJwYWRkaW5nLWJvdHRvbSI6ICJUaGUgcGFkZGluZy1ib3R0b20gQ1NTIHBy
b3BlcnR5IG9mIGFuIGVsZW1lbnQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBwYWRkaW5nIGFyZWEg
YXQgdGhlIGJvdHRvbSBvZiBhbiBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFj
ZSBiZXR3ZWVuIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdCdzIGJvcmRlci4gQ29u
dHJhcnkgdG8gbWFyZ2luLWJvdHRvbSB2YWx1ZXMsIG5lZ2F0aXZlIHZhbHVlcyBvZiBwYWRkaW5n
LWJvdHRvbSBhcmUgaW52YWxpZC4iLAorICAgICJwYWRkaW5nLWxlZnQiOiAiVGhlIHBhZGRpbmct
bGVmdCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRzIHRoZSBwYWRkaW5nIHNwYWNlIHJl
cXVpcmVkIG9uIHRoZSBsZWZ0IHNpZGUgb2YgYW4gZWxlbWVudC4gVGhlIHBhZGRpbmcgYXJlYSBp
cyB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVudCBvZiB0aGUgZWxlbWVudCBhbmQgaXQncyBi
b3JkZXIuIEEgbmVnYXRpdmUgdmFsdWUgaXMgbm90IGFsbG93ZWQuIiwKKyAgICAicGFkZGluZy1y
aWdodCI6ICJUaGUgcGFkZGluZy1yaWdodCBDU1MgcHJvcGVydHkgb2YgYW4gZWxlbWVudCBzZXRz
IHRoZSBwYWRkaW5nIHNwYWNlIHJlcXVpcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIGFuIGVsZW1l
bnQuIFRoZSBwYWRkaW5nIGFyZWEgaXMgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGNvbnRlbnQgb2Yg
dGhlIGVsZW1lbnQgYW5kIGl0cyBib3JkZXIuIE5lZ2F0aXZlIHZhbHVlcyBhcmUgbm90IGFsbG93
ZWQuIiwKKyAgICAicGFkZGluZy10b3AiOiAiVGhlIHBhZGRpbmctdG9wIENTUyBwcm9wZXJ0eSBv
ZiBhbiBlbGVtZW50IHNldHMgdGhlIHBhZGRpbmcgc3BhY2UgcmVxdWlyZWQgb24gdGhlIHRvcCBv
ZiBhbiBlbGVtZW50LiBUaGUgcGFkZGluZyBhcmVhIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBj
b250ZW50IG9mIHRoZSBlbGVtZW50IGFuZCBpdHMgYm9yZGVyLiBDb250cmFyeSB0byBtYXJnaW4t
dG9wIHZhbHVlcywgbmVnYXRpdmUgdmFsdWVzIG9mIHBhZGRpbmctdG9wIGFyZSBpbnZhbGlkLiIs
CisgICAgInBvc2l0aW9uIjogIlRoZSBwb3NpdGlvbiBDU1MgcHJvcGVydHkgY2hvb3NlcyBhbHRl
cm5hdGl2ZSBydWxlcyBmb3IgcG9zaXRpb25pbmcgZWxlbWVudHMsIGRlc2lnbmVkIHRvIGJlIHVz
ZWZ1bCBmb3Igc2NyaXB0ZWQgYW5pbWF0aW9uIGVmZmVjdHMuIiwKKyAgICAicmlnaHQiOiAiVGhl
IHJpZ2h0IENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgcGFydCBvZiB0aGUgcG9zaXRpb24gb2YgcG9z
aXRpb25lZCBlbGVtZW50cy4iLAorICAgICJ0ZXh0LWFsaWduIjogIlRoZSB0ZXh0LWFsaWduIENT
UyBwcm9wZXJ0eSBkZXNjcmliZXMgaG93IGlubGluZSBjb250ZW50IGxpa2UgdGV4dCBpcyBhbGln
bmVkIGluIGl0cyBwYXJlbnQgYmxvY2sgZWxlbWVudC4gdGV4dC1hbGlnbiBkb2VzIG5vdCBjb250
cm9sIHRoZSBhbGlnbm1lbnQgb2YgYmxvY2sgZWxlbWVudHMgaXRzZWxmLCBvbmx5IHRoZWlyIGlu
bGluZSBjb250ZW50LiIsCisgICAgInRleHQtZGVjb3JhdGlvbiI6ICJUaGUgdGV4dC1kZWNvcmF0
aW9uIENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgdGV4dCBmb3JtYXR0aW5nIHRvIHVu
ZGVybGluZSwgb3ZlcmxpbmUsIGxpbmUtdGhyb3VnaCBvciBibGluay4gVW5kZXJsaW5lIGFuZCBv
dmVybGluZSBkZWNvcmF0aW9ucyBhcmUgcG9zaXRpb25lZCB1bmRlciB0aGUgdGV4dCwgbGluZS10
aHJvdWdoIG92ZXIgaXQuIiwKKyAgICAidGV4dC1pbmRlbnQiOiAiVGhlIHRleHQtaW5kZW50IHBy
b3BlcnR5IHNwZWNpZmllcyBob3cgbXVjaCBob3Jpem9udGFsIHNwYWNlIHNob3VsZCBiZSBsZWZ0
IGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0ZXh0IGNvbnRl
bnQgb2YgYW4gZWxlbWVudC4iLAorICAgICJ0ZXh0LXNoYWRvdyI6ICJUaGUgdGV4dC1zaGFkb3cg
cHJvcGVydHkgYWRkcyBzaGFkb3dzIHRvIHRleHQuIEl0IGFjY2VwdHMgYSBjb21tYS1zZXBhcmF0
ZWQgbGlzdCBvZiBzaGFkb3dzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHRleHQgYW5kIHRleHQtZGVj
b3JhdGlvbnMgb2YgdGhlIGVsZW1lbnQuIiwKKyAgICAidGV4dC10cmFuc2Zvcm0iOiAiVGhlIHRl
eHQtdHJhbnNmb3JtIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgaG93IHRvIGNhcGl0YWxpemUgYW4g
ZWxlbWVudCdzIHRleHQuIEl0IGNhbiBiZSB1c2VkIHRvIG1ha2UgdGV4dCBhcHBlYXIgaW4gYWxs
LXVwcGVyY2FzZSBvciBhbGwtbG93ZXJjYXNlLCBvciB3aXRoIGVhY2ggd29yZCBjYXBpdGFsaXpl
ZC4iLAorICAgICJ0b3AiOiAiVGhlIHRvcCBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHBhcnQgb2Yg
dGhlIHBvc2l0aW9uIG9mIHBvc2l0aW9uZWQgZWxlbWVudHMuIEl0IGhhcyBubyBlZmZlY3Qgb24g
bm9uLXBvc2l0aW9uZWQgZWxlbWVudHMuIiwKKyAgICAidHJhbnNpdGlvbi1kZWxheSI6ICJUaGUg
dHJhbnNpdGlvbi1kZWxheSBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGFtb3VudCBvZiB0aW1lIHRv
IHdhaXQgYmV0d2VlbiBhIGNoYW5nZSBiZWluZyByZXF1ZXN0ZWQgdG8gYSBwcm9wZXJ0eSB0aGF0
IGlzIHRvIGJlIHRyYW5zaXRpb25lZCBhbmQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2l0aW9uIGVm
ZmVjdC4iLAorICAgICJ0cmFuc2l0aW9uLWR1cmF0aW9uIjogIlRoZSB0cmFuc2l0aW9uLWR1cmF0
aW9uIENTUyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIG9yIG1pbGxp
c2Vjb25kcyBhIHRyYW5zaXRpb24gYW5pbWF0aW9uIHNob3VsZCB0YWtlIHRvIGNvbXBsZXRlLiBC
eSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMgMHMsIG1lYW5pbmcgdGhhdCBubyBhbmltYXRpb24gd2ls
bCBvY2N1ci4iLAorICAgICJ0cmFuc2l0aW9uLXByb3BlcnR5IjogIlRoZSB0cmFuc2l0aW9uLXBy
b3BlcnR5IENTUyBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG5hbWVzIG9mIENTUyBw
cm9wZXJ0aWVzIHRvIHdoaWNoIGEgdHJhbnNpdGlvbiBlZmZlY3Qgc2hvdWxkIGJlIGFwcGxpZWQu
IiwKKyAgICAidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iOiAiVGhlIHRyYW5zaXRpb24tdGlt
aW5nLWZ1bmN0aW9uIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVzY3JpYmUgaG93IHRoZSBpbnRlcm1l
ZGlhdGUgdmFsdWVzIG9mIHRoZSBDU1PCoHByb3BlcnRpZXMgYmVpbmcgYWZmZWN0ZWQgYnkgYSB0
cmFuc2l0aW9uIGVmZmVjdCBhcmUgY2FsY3VsYXRlZC4gVGhpcyBpbiBlc3NlbmNlIGxldHMgeW91
IGVzdGFibGlzaCBhbiBhY2NlbGVyYXRpb24gY3VydmUsIHNvIHRoYXQgdGhlIHNwZWVkIG9mIHRo
ZSB0cmFuc2l0aW9uIGNhbiB2YXJ5IG92ZXIgaXRzIGR1cmF0aW9uLiIsCisgICAgInZlcnRpY2Fs
LWFsaWduIjogIlRoZSB2ZXJ0aWNhbC1hbGlnbiBDU1MgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB2
ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYW4gaW5saW5lIG9yIHRhYmxlLWNlbGwgYm94LiIsCisgICAg
InZpc2liaWxpdHkiOiAiVGhlIHZpc2liaWxpdHkgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8gaGlk
ZSBhbiBlbGVtZW50IHdoaWxlIGxlYXZpbmcgdGhlIHNwYWNlIHdoZXJlIGl0IHdvdWxkIGhhdmUg
YmVlbi4gSXQgY2FuIGFsc28gaGlkZSByb3dzIG9yIGNvbHVtbnMgb2YgYSB0YWJsZS4iLAorICAg
ICJ3aGl0ZS1zcGFjZSI6ICJUaGUgd2hpdGUtc3BhY2UgcHJvcGVydHkgaXMgdXNlZCB0byBkZXNj
cmliZSBob3cgd2hpdGVzcGFjZSBpbnNpZGUgdGhlIGVsZW1lbnQgaXMgaGFuZGxlZC4iLAorICAg
ICJ3aWR0aCI6ICJUaGUgd2lkdGggQ1NTIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgd2lkdGggb2Yg
dGhlIGNvbnRlbnQgYXJlYSBvZiBhbiBlbGVtZW50LiBUaGUgY29udGVudCBhcmVhIGlzIGluc2lk
ZSB0aGUgcGFkZGluZywgYm9yZGVyLCBhbmQgbWFyZ2luIG9mIHRoZSBlbGVtZW50LiIsCisgICAg
IndvcmQtc3BhY2luZyI6ICJUaGUgd29yZC1zcGFjaW5nwqBwcm9wZXJ0eSBzcGVjaWZpZXMgc3Bh
Y2luZyBiZWhhdmlvciBiZXR3ZWVuIHRhZ3MgYW5kIHdvcmRzLiIsCisgICAgInotaW5kZXgiOiAi
VGhlIHotaW5kZXggcHJvcGVydHkgc3BlY2lmaWVzIHRoZSB6LW9yZGVyIG9mIGFuIGVsZW1lbnQg
YW5kIGl0cyBkZXNjZW5kYW50cy4gV2hlbiBlbGVtZW50cyBvdmVybGFwLCB6LW9yZGVyIGRldGVy
bWluZXMgd2hpY2ggb25lIGNvdmVycyB0aGUgb3RoZXIuIEFuIGVsZW1lbnQgd2l0aCBhIGxhcmdl
ciB6LWluZGV4IGdlbmVyYWxseSBjb3ZlcnMgYW4gZWxlbWVudCB3aXRoIGEgbG93ZXIgb25lLiIK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258990</attachid>
            <date>2015-08-14 00:01:31 -0700</date>
            <delta_ts>2015-08-14 12:14:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147570-20150814000112.patch</filename>
            <type>text/plain</type>
            <size>78207</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDJiZDYyNzZhNjM3YzNlZjAxYmFiYTc1
NTRlNzQ5OWI4MGUuLjY0NGFiYjc1ZGQzMGIxOGEzZTIwZjNjZDY2NmIyNWRiNTVmZTJlNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTA4LTEzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIFZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsIGFuZCBpbmNs
dXNpb25zIHRvIGZvcnRoY29taW5nIGNsYXNzZXMKKyAgICAgICAgdGhhdCB3aWxsIGJlIHVzZWQg
aW4gdGhpcyB2aXN1YWwgc2lkZWJhciBwYW5lbC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01h
aW4uaHRtbDoKKyAgICAgICAgQWRkZWQgZmlsZXMgZm9yIGFsbCBuZXcgY2xhc3NlcyB1c2VkIGlu
IHRoZSBWaXN1YWxTdHlsZURldGFpbHNQYW5lbC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBl
LnNldCBjb2xsYXBzZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnBy
b3RvdHlwZS5nZXQgZXhwYW5kZWRCeVVzZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uLnByb3RvdHlwZS5faGVhZGVyRWxlbWVudENsaWNrZWQpOgorICAgICAgICBUcmFj
ayB3aGV0aGVyIG9yIG5vdCB0aGUgZXhwYW5kZWQgc3RhdGUgd2FzIGNhdXNlZCBieSB0aGUgdXNl
ci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuY3NzOiBBZGRlZC4KKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0
eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1z
dHlsZS1zZWN0aW9uLWNsZWFyKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90
KC5tb2RpZmllZCkgPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyKToKKyAg
ICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gc3Bhbik6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRlciA+IHNwYW46OmFmdGVy
KToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCk6CisgICAgICAg
ICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMt
c2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyk6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0
LWNoaWxkKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52
aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3Jv
dXAgPiAucm93LnZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93KToKKyAgICAgICAgKC5zaWRlYmFy
ID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlKToKKyAgICAg
ICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWls
cy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3Qt
Y2hpbGQpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZp
c3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0
b3Itc2VjdGlvbikpOgorICAgICAgICAoLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5
bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUt
c2VsZWN0b3Itc2VjdGlvbikgaW5wdXQpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5y
ZXBsYWNlRGFzaFdpdGhDYXBpdGFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlU2VjdGlvbi5jcmVhdGVPcHRpb25zRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcHJlcGFyZUZvckNoYW5nZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl91cGRhdGVTZWN0
aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl91cGRhdGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQ
cm9wZXJ0eUVkaXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9zZWN0aW9uTW9kaWZpZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fY2xlYXJNb2RpZmllZFNlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5nZXQgX2luaXRpYWxUZXh0TGlzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9pbml0aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
cG9wdWxhdGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGlzcGxheVNlY3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fZ2VuZXJhdGVNZXRy
aWNTZWN0aW9uUm93cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVBvc2l0aW9uU2VjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUZsb2F0
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMub25FZGl0b3JNb3VzZW92ZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
YWRkTWV0cmljc01vdXNlTGlzdGVuZXJzLm9uRWRpdG9yTW91c2VvdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fYWRkTWV0cmljc01v
dXNlTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRGltZW5zaW9uc1NlY3Rpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVNYXJn
aW5TZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUuX3BvcHVsYXRlUGFkZGluZ1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVGbGV4Ym94U2Vj
dGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9wb3B1bGF0ZVRleHRTdHlsZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVGb250U2VjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5
cGUuX3BvcHVsYXRlQmFja2dyb3VuZFN0eWxlU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJvcmRlclNlY3Rp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5fcG9wdWxhdGVPdXRsaW5lU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24u
bm9SZW1haW5pbmdUcmVlSXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLnNlbGVjdGVk
Qm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24uYm94
U2hhZG93SXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0
ZVRyYW5zaXRpb25TZWN0aW9uLm5vUmVtYWluaW5nVHJlZUl0ZW1zKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNp
dGlvblNlY3Rpb24uc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0
ZVRyYW5zaXRpb25TZWN0aW9uLnRyYW5zaXRpb25JdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFu
c2l0aW9uU2VjdGlvbik6CisKIDIwMTUtMDgtMTMgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHll
dkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ2FuJ3QgcmVzaXplIHNwbGl0
IGNvbnNvbGUgd2hlbiB3aW5kb3cgaXMgdG9vIG5hcnJvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKaW5kZXggYzVkZjM3ZjhmYjdkYzQ0ZTQ1ZTg2NmYzM2ZmYWUyMzg2MGVmNzI2ZC4u
OWQ2OTU4NGI5MzViMjU2OTNmYTIzNDc4ZGEwNmExN2ZlMTBlYWUzNCAxMDA2NDQKR0lUIGJpbmFy
eSBwYXRjaApkZWx0YSAyNzE0CnpjbWEpN1lpdl94NyhRcGN0I3ghQXdBOElCRXR8d2A/JDktKEEl
O3ZEa1pxV2FFbl9sPkFyOTlURGpSTHVhQDdFVAp6Zkc4JGdjKV83V0h9TX4wSHZReWslIzVKcEI1
Xi03V0pyVm5ZQXtVYUFCYHFucDcoNXdiSnw3dXZHeDAmX3hgLV4Kel9udDRgRnJMMCg5REY1alND
PHIqIWN0NiVPNH12QmwkSkl+NSZYVVliUT99N14mRjhwYW8/KVM8TV9XMDdHZD8qCnpGS3hsQ1Fg
IXZPR08xV3YzJHotNCNac3lDUEBXJXE3fXZEPkg2X1JuSCR5dihXRTEkRUV9JX0lUiReYVh0KSh5
fgp6dChQfEd2YTVqdXB3dkR5QVRIMGNvOVZmLUpldWQzTnRYfG4pN20xeF9fNlJlbFhzb2UwWTA9
PClnWEt0NiQ3WDcKemRffDE8JmdZY3pidDZJfkxERlVmM2hQWGtzT3FZbThxUVJDYEpPYFhSRilQ
ez5kI1Q9Tk85V0RscU5HWWZLaCopCno7Iy0wXk5rb1pjWHtiMjhUXkFAfTlab2U0KjBjcF5hN3Eq
X0JFT2A8Ukc/S0AlRzZUKC1UKTFPbDNrQDB6MGM+JAp6SGp5Z3JGPE43QTc9Z3EyKVVXdkhta090
NDV+MEQwUUJNU2dDREhvX2VVQ3cjPU9qVSQzK0t7Kztgfm4/K3AlaGoKejJXUWZkR0RwMHQrJW5L
Vmx7VUlQemVwMy01bVhxX2duZ1BXMX1udC0hUE8+RSNedmo0aUEkWm08R0ZHYCRQM1RVCnpAR1Z0
SU8tLVo2V1QjWms1PmByMCE8K2BFbzZELWltMVZVP1F3UkhePH0kWis4RVQhbGVSP283azhlQCVG
KUAoWgp6b0hQPlpzU2clKkxUa0cmWXR7Z0k7QTM9V2BIS2NpN3coJis2eno3cDVHNGtGYWlAe2JM
S2VPeShKalhuX3RkJWwKek57Qm93OTVrSHApMHN5OG9sT0pGJWdNWEtqPGJfQz95Km5lUENCeHVM
ZTsoNFNTfCh7OVhUYURtSGY3e1E8ezw+CnpFJUxSUCNrcjtuPCMtQG5OVEQ7TWZMaG9Dcjw/bCZi
WXE4RWJuaUg2bT5hPTluYjt+P0hmbmo9Q0x9Ykh0OWJieQp6aGswN1okUnRZUnk4fGAlPC1DUlhz
cmU7IVZzWD49eygrfHFPYGRJMHYtNUIrYj8tRzdZfUV5LUxvLShfMzVlMFgKelp5Sj4oTzUxXktI
WCQze2FvVzc9KWZ2KnJzaSNCe0AlPkp0aWBCS04lUTtRNTQrWF9iLTN0dXY2emFgWk5Lcy1lCnpB
bF5IMC1RPyFNKEpNNS1CI0wyQzNpLXNaSWBpYz5Qe1V9NXR7JTF2SSgqQkZ3antCUlZoRjVGcSoz
SylKcT9abwp6VHp1WV5EZGk0YFJOcWxLS2Z7bnNNOFB8IV5TeDBkbXQ4PjxQfmNueDRHKkA9PCVQ
KGJLfGp8YDdfQ1ZPJiRqRD4KemxkP09VUlowX2I1QXpENktIKDVvS2ZFSlQhNT5hajZQe0F+KDkz
ZF9JUHNBfnAwYER7aT5sTTJaKCRSQE5LNmw4CnorKTZyazt1JCRpPDArU144UFVWRV8tPlczcDNG
MHY7d1U2V3t4NFg3R3g/dGtSakRVNl5fYmR0enFERk0obG0xRgp6S2RTXilVbnV5Iyl0ZGpZU183
K3FhRyQrcUBIOFhXSUdFdl9HWj4/TEhIKlpycFJ+d2N7eV82cSh6ZGdPJVZDQDwKektNenBIJn1f
Oy1ZN15eKiZSVkV1XykoKHphKjtvTEo9ZXRfellURCR2ISZ6dnM+SSF8ezxPfjAhWWlUMzlQdHls
CnpJQCs4Z3VjViQhWm1SeSloU1R2JkE/bShpNk9VZ1hHPCFCNlRiezN0ST01X31xXkUqR2BzUC0+
MGs0QStLZSpJaQp6ZHBhbVF4NlFIdjFIaG4zOVIqXzhkdUslVUNFJDwwQU5vKHtPN05vTVJRWXY0
akQ2cDNxM1V+JU1eKyhwM1ZoJkUKeigkN0I/R0c/OF5fI3NsP217VUFFX052M2YrbWlFS3Vna0wp
U1FpSSh4Mm9LMElaelJEe0psYHp7ajFiS1o/elo2Cnp0I3F3QChWK3BeQ2FkI2VaQURWTmVBSm1h
SEE5d25ub0N2elZNLVgrYjNHKj8kNTViYiludWIlY3B7bGdNSk1Bcgp6O0ZUK2xWUjc9NyYzO21s
KGB4Jm9Rfk5GUT5vUFhTYmlIbilXQldxRUhuZThxVzZjfCRwSjdCdE50WE9UeHpnKmkKeiVIUGU+
eDE8ZShDOEBHVj5IWGEqTT9HeVM2XlJVMk9pekxxVGJ9NmN2JnJVRDlYOHBKR1k3aj1rPD97fihF
OG0yCk8zSDVYQD0jQSNkKFNIRnF7KTJ9QQoKZGVsdGEgMzU1CnpjbVhZclBiZm5IOUxNfFp5fWlC
aDkmNSZkV0QtZkVhRkJ5c1dRcnRaSUJgS0syTldTdU5+RT4pbGIwUmp6KE0pewp6bTFrQm5lLTdr
ZHghQSNsTlliMXpUSyotY0A4fFA1ZVljT3EoOzBEWFQhQnc1R3JeZ3ROTFdyMEM0OHBgNGN3TzUK
ejElSDtxJGxaPVNHJiNIP2QtNndGRWxmdFo7OHVYVVh4TkRRbEFzRHlSKlEoJXY8a2ZJUXJPcEw9
U0crMWNhIStECnpGUHJeO1ktNjclPyFWamNTbDQ0PFhKWl84OHY7MnY4UUJyUVZeY0NaQ2NQcUJy
WSN+NHliYn15dm1xbEU9QVJ7Rwp6RVhAJiZFMVU2YjNlO2RSdXQ3WXlyKGl2Sk18andlQSRBXkM7
TzA+TntjKElQQW9za01hQ1ErZ3V7JElxZFVZZzIKenk/SG5Eej59M0A/LVg9Q1dmfH1oVVh3V1RR
alVwTmskNTFJZ3ZpPyNBXlA1SShuXlZCRWsxPTVIaChGOXJramJ7CnVFIXQyNSNwdFMpdklSWXlO
ZDEhRGt4Sjh+dCl8aG5fRyV9YWM1a09EeSpIaUEySkpGflQ3TGswKVJeQUAKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggOWYzNGM2NmI3YTg2
ZmY4NDJlNjdmZTlhMzNiOGQ0YjUxZGJiNjZjNS4uMGIwZGMwMDExNDBjMjZkNmRkZDJmOTdjYjg3
ZTI5NTY0MTgzOTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbApAQCAtMTYzLDYgKzE2MywyMCBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvVHlwZVRva2VuVmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvVHlwZVRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZVZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBh
cmF0ZWRLZXl3b3JkRWRpdG9yLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guY3NzIj4KKyAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZElj
b25MaXN0LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVS
ZWxhdGl2ZU51bWJlclNsaWRlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5jc3Mi
PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVUYWJi
ZWRQcm9wZXJ0aWVzUm93LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmNzcyI+CiAKICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9u
Q29udHJvbGxlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udHJv
bGxlcnMvQ29kZU1pcnJvckRyYWdUb0FkanVzdE51bWJlckNvbnRyb2xsZXIuY3NzIj4KQEAgLTU0
MSw2ICs1NTUsMjcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHlwZVRyZWVFbGVtZW50Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvVHlwZVRyZWVWaWV3LmpzIj48L3Nj
cmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUNv
bG9yUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5
bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZvbnRGYW1pbHlMaXN0RWRpdG9yLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVGb250RmFtaWx5VHJlZUVsZW1lbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRD
aGVja2JveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxl
S2V5d29yZEljb25MaXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlz
dWFsU3R5bGVLZXl3b3JkUGlja2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eU5hbWVJbnB1
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRp
dmVOdW1iZXJTbGlkZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JUcmVlSXRlbS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9yLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVVbml0U2xpZGVyLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVVUkxJbnB1dC5qcyI+
PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyLmpzIj48L3NjcmlwdD4KIApAQCAtNTc1LDYgKzYxMCw3IEBACiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL1N0b3JhZ2VNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVmlzdWFsU3R5bGVDb21wbGV0aW9uc0NvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvTWFpbi5qcyI+PC9z
Y3JpcHQ+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpp
bmRleCAzZDNmNzY2ZDRkOTFmODM2MWM0NzVhNjU5NjczMmM3YTAwY2U5MWMyLi4yYjAzNGI2ZGMy
ZThhNGZkZDNiOTI0Y2U0MGNlZTg1OWY4MmNlNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC02OCwxMiArNjgsMTMgQEAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbCBleHQKIAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0g
bmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAg
ICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsKHRoaXMpOworICAgICAgICB0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQ
YW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CiAK
ICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5FdmVudC5SZWZyZXNoZWQsIHRoaXMuX2Zp
bHRlckRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuRXZlbnQu
UmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOwogCi0gICAgICAgIHRoaXMu
X3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl9ydWxlc1N0
eWxlRGV0YWlsc1BhbmVsXTsKLSAgICAgICAgdGhpcy5fcGFuZWxOYXZpZ2F0aW9uSW5mbyA9IFt0
aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvLCB0aGlzLl9ydWxl
c1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZvXTsKKyAgICAgICAgdGhpcy5fcGFuZWxz
ID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRh
aWxzUGFuZWwsIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsXTsKKyAgICAgICAgdGhpcy5f
cGFuZWxOYXZpZ2F0aW9uSW5mbyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLm5h
dmlnYXRpb25JbmZvLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZv
LCB0aGlzLl92aXN1YWxTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mb107CiAKICAgICAg
ICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNl
dHRpbmcoImxhc3Qtc2VsZWN0ZWQtc3R5bGUtZGV0YWlscy1wYW5lbCIsIHRoaXMuX3J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8uaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9u
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uanMKaW5kZXggODRiM2EzOTcxODk3NmRkYjE4Y2U4ZGM3Nzc2OTJjNjQ1OGI3ZTAwMS4u
ZDhhMjRlZWQ0ZWMyYWRjZDM0ZDY2MTYwMjQ2YWMxYzlmMDEwOTliYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uanMKQEAgLTYxLDYgKzYxLDcgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0g
Y2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAg
ICAgdGhpcy5fY29sbGFwc2VkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVu
dGlmaWVyICsgIi1kZXRhaWxzLXNlY3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2Vk
U2V0dGluZ1ZhbHVlKTsKICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xsYXBzZWRT
ZXR0aW5nLnZhbHVlOworICAgICAgICB0aGlzLl9leHBhbmRlZEJ5VXNlciA9IGZhbHNlOwogICAg
IH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTE1LDYgKzExNiwxMSBAQCBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
X2dyb3Vwc1tpXS5lbGVtZW50KTsKICAgICB9CiAKKyAgICBnZXQgZXhwYW5kZWRCeVVzZXIoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkQnlVc2VyOworICAgIH0KKwogICAg
IC8vIFByaXZhdGUKIAogICAgIF9oZWFkZXJFbGVtZW50Q2xpY2tlZChldmVudCkKQEAgLTEyMiw3
ICsxMjgsOSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBEZXRhaWxzU2Vj
dGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgaWYgKGV2ZW50LnRhcmdl
dC5pc1NlbGZPckRlc2NlbmRhbnQodGhpcy5fb3B0aW9uc0VsZW1lbnQpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkOworICAg
ICAgICB2YXIgY29sbGFwc2VkID0gdGhpcy5jb2xsYXBzZWQ7CisgICAgICAgIHRoaXMuY29sbGFw
c2VkID0gIWNvbGxhcHNlZDsKKyAgICAgICAgdGhpcy5fZXhwYW5kZWRCeVVzZXIgPSBjb2xsYXBz
ZWQ7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjk5ODBlMzFjOTczYjg4NTIyMGRhMDMxZDVjMWQ3YjhkOWQ5MWVmZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmNzcwpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rp
b24gLmRldGFpbHMtc2VjdGlvbiA+IC5oZWFkZXIgeworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7
Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0
YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1z
ZWN0aW9uLWNsZWFyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcmlnaHQ6IDVweDsK
KyAgICB3aWR0aDogMTVweDsKKyAgICBoZWlnaHQ6IDE1cHg7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogLXdlYmtpdC1jYW52YXMobmF2aWdhdGlvbi1pdGVtLWNsZWFyLWxvZy1ub3JtYWwpOworICAg
IGJhY2tncm91bmQtc2l6ZTogMTVweCAxNXB4OworICAgIC13ZWJraXQtZmlsdGVyOiBvcGFjaXR5
KDAuNyk7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwg
PiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24uY29sbGFwc2VkID4gLmhlYWRlciA+
IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciwKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90
KC5tb2RpZmllZCkgPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+
IHNwYW4geworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24u
bW9kaWZpZWQgPiAuaGVhZGVyID4gc3Bhbjo6YWZ0ZXIgeworICAgIHdpZHRoOiA3cHg7CisgICAg
aGVpZ2h0OiA3cHg7CisgICAgbWFyZ2luOiA0cHggNnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUw
JTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjEyLCA5MiUsIDU0JSk7CisgICAgLXdlYmtp
dC1maWx0ZXI6IG9wYWNpdHkoMC41KTsKKyAgICBjb250ZW50OiAiIjsKK30KKworLnNpZGViYXIg
PiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRl
dGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IHsKKyAgICBtYXJnaW4tdG9wOiA1cHg7Cit9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0
aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93IHsKKyAgICBkaXNw
bGF5OiBmbGV4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3Vw
ID4gLnJvdzpsYXN0LWNoaWxkIHsKKyAgICBwYWRkaW5nLWJvdHRvbTogM3B4OworfQorCisuc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdy52aXN1YWwtc3R5bGUt
c2VwYXJhdGVkLXJvdyB7CisgICAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgaHNsKDAsIDAl
LCA4MyUpOworICAgIG1hcmdpbi1ib3R0b206IDVweDsKKyAgICBwYWRkaW5nLWJvdHRvbTogMnB4
OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRl
dGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS10aXRsZSB7CisgICAgd2lkdGg6IDU1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24g
PiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3QtY2hpbGQgeworICAgIG1hcmdpbi1yaWdodDog
MTFweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbC5k
aXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2VsZWN0b3Itc2Vj
dGlvbikgeworICAgIGZpbHRlcjogb3BhY2l0eSgwLjUpOworICAgIHBvaW50ZXItZXZlbnRzOiBu
b25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRp
c2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0
aW9uKSBpbnB1dCB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MzYxZWJiMTQzY2I5ODlkNzky
MjI0ZTZjYjc3YmYzMmZmYTQyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAt
MCwwICsxLDEwNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwgPSBjbGFzcyBWaXN1YWxTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5TdHlsZURldGFpbHNQYW5lbAoreworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAg
IHsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJ2aXN1YWwiLCAidmlzdWFsIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdHlsZXMgXHUyMDE0IFZpc3VhbCIpKTsKKworICAgICAgICBXZWJJbnNw
ZWN0b3IucHJvcGVydHlSZWZlcmVuY2VJbmZvVGVtcCA9IHt9OworICAgICAgICB0aGlzLl9jdXJy
ZW50U3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSA9IGZh
bHNlOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zID0ge307CisgICAgICAgIHRoaXMuX2dyb3Vw
cyA9IHt9OworICAgICAgICB0aGlzLl9rZXl3b3JkcyA9IHt9OworICAgICAgICB0aGlzLl91bml0
cyA9IHt9OworICAgICAgICB0aGlzLl9hdXRvY29tcGxldGlvblByb3BlcnR5RWRpdG9ycyA9IHt9
OworCisgICAgICAgIC8vIFRoZXNlIGtleXdvcmRzLCBhcyB3ZWxsIGFzIHRoZSB2YWx1ZXMgYmVs
b3csIGFyZSBub3QgbG9jYWxpemVkIGFzIHRoZXkgbXVzdCBtYXRjaCB0aGUgQ1NTIHNwZWMuCisg
ICAgICAgIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzID0gWyJJbmhlcml0IiwgIkluaXRpYWwiXTsK
KyAgICAgICAgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0
cy5jb25jYXQoWyJBdXRvIl0pOworICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSA9
IHsKKyAgICAgICAgICAgIGJhc2ljOiB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJO
b25lIiwgIkhpZGRlbiIsICJTb2xpZCJdKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkRhc2hl
ZCIsICJEb3R0ZWQiLCAiRG91YmxlIiwgIkdyb292ZSIsICJIaWRkZW4iLCAiSW5zZXQiLCAiTm9u
ZSIsICJPdXRzZXQiLCAiUmlkZ2UiXQorICAgICAgICB9OworICAgICAgICB0aGlzLl9rZXl3b3Jk
cy5ib3JkZXJXaWR0aCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk1lZGl1bSIs
ICJUaGljayIsICJUaGluIl0pOworCisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1Bl
cmNlbnQgPSB7CisgICAgICAgICAgICBiYXNpYzogWyJweCIsICJlbSJdLAorICAgICAgICAgICAg
YWR2YW5jZWQ6IFsiY2giLCAiY20iLCAiZXgiLCAiaW4iLCAibW0iLCAicGMiLCAicHQiLCAicmVt
IiwgInZoIiwgInZ3IiwgInZtYXgiLCAidm1pbiJdCisgICAgICAgIH07CisgICAgICAgIHRoaXMu
X3VuaXRzLmRlZmF1bHRzID0geworICAgICAgICAgICAgYmFzaWM6IFsiJSJdLmNvbmNhdCh0aGlz
Ll91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmJhc2ljKSwKKyAgICAgICAgICAgIGFkdmFuY2Vk
OiB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmFkdmFuY2VkCisgICAgICAgIH07CisK
KyAgICAgICAgLy8gU2VsZWN0b3IgU2VjdGlvbgorICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uKHRoaXMpOwor
ICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uRXZlbnQuU2VsZWN0b3JDaGFuZ2VkLCB0aGlz
Ll91cGRhdGVTZWN0aW9ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5F
dmVudC5TdHlsZVRleHRDaGFuZ2VkLCB0aGlzLl9wcmVwYXJlRm9yQ2hhbmdlLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvclNlY3Rpb24uZWxl
bWVudCk7CisKKyAgICAgICAgLy8gTGF5b3V0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJh
dGVTZWN0aW9uKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNwbGF5IikpOwor
ICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQb3NpdGlvbiIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbG9h
dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQgYW5kIENsZWFyIikpOworICAgICAgICB0
aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImRpbWVuc2lvbnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRpbWVuc2lvbnMiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigibWFyZ2luIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXJnaW4iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRl
U2VjdGlvbigicGFkZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFkZGluZyIpKTsKKyAg
ICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbGV4Ym94IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGbGV4Ym94IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmxheW91dCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImxheW91dCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTGF5b3V0IiksIFt0aGlzLl9ncm91cHMuZGlzcGxheS5zZWN0aW9uLCB0aGlzLl9ncm91cHMu
cG9zaXRpb24uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsb2F0LnNlY3Rpb24sIHRoaXMuX2dyb3Vw
cy5kaW1lbnNpb25zLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5tYXJnaW4uc2VjdGlvbiwgdGhpcy5f
Z3JvdXBzLnBhZGRpbmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsZXhib3guc2VjdGlvbl0pOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmxheW91dC5l
bGVtZW50KTsKKworICAgICAgICAvLyBUZXh0IFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJh
dGVTZWN0aW9uKCJ0ZXh0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsK
KyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmb250IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGb250IikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInRleHQtc3BhY2lu
ZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3BhY2luZyIpKTsKKyAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVTZWN0aW9uKCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93
IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLnRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uKCJ0ZXh0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUZXh0IiksIFt0aGlz
Ll9ncm91cHMudGV4dFN0eWxlLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mb250LnNlY3Rpb24sIHRo
aXMuX2dyb3Vwcy50ZXh0U3BhY2luZy5zZWN0aW9uLCB0aGlzLl9ncm91cHMudGV4dFNoYWRvdy5z
ZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlv
bnMudGV4dC5lbGVtZW50KTsKKworICAgICAgICAvLyBCYWNrZ3JvdW5kIFNlY3Rpb24KKyAgICAg
ICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJiYWNrZ3JvdW5kLXN0eWxlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3Jk
ZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvcmRlciIpKTsKKyAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVTZWN0aW9uKCJvdXRsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRsaW5lIikp
OworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNoYWRvdyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5iYWNrZ3Jv
dW5kID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiYmFja2dyb3VuZCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQmFja2dyb3VuZCIpLCBbdGhpcy5fZ3JvdXBzLmJhY2tncm91bmRT
dHlsZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuYm9yZGVyLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5v
dXRsaW5lLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5ib3hTaGFkb3cuc2VjdGlvbl0pOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmJhY2tncm91bmQuZWxl
bWVudCk7CisKKyAgICAgICAgLy8gQW5pbWF0aW9uIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2Vu
ZXJhdGVTZWN0aW9uKCJ0cmFuc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2l0
aW9uIikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb24oImFuaW1hdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QW5pbWF0aW9uIiksIFt0aGlzLl9ncm91cHMudHJhbnNpdGlvbi5zZWN0aW9uXSk7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMuYW5pbWF0aW9uLmVsZW1l
bnQpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgcmVmcmVzaChzaWduaWZpY2FudENo
YW5nZSkKKyAgICB7CisgICAgICAgIGlmIChzaWduaWZpY2FudENoYW5nZSB8fCB0aGlzLl9mb3Jj
ZU5leHRTdHlsZVVwZGF0ZSkgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0b3JTZWN0aW9uLnVw
ZGF0ZSh0aGlzLl9ub2RlU3R5bGVzKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNlY3Rpb25z
KCk7CisgICAgICAgICAgICB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSA9IGZhbHNlOworICAg
ICAgICB9CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgpOworICAgIH0KKworICAgIC8vIFByaXZh
dGUKKworICAgIF9nZW5lcmF0ZVNlY3Rpb24oaWQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAg
ICAgaWYgKCFpZCB8fCAhZGlzcGxheU5hbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgZnVuY3Rpb24gcmVwbGFjZURhc2hXaXRoQ2FwaXRhbChtYXRjaCkgeworICAgICAgICAgICAg
cmV0dXJuIG1hdGNoLnJlcGxhY2UoIi0iLCAiIikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGxldCBjYW1lbENhc2VJZCA9IGlkLnJlcGxhY2UoLy1cYlx3L2csIHJlcGxhY2VE
YXNoV2l0aENhcGl0YWwpOworCisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZU9wdGlvbnNFbGVtZW50
KCkgeworICAgICAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHls
ZS1zZWN0aW9uLWNsZWFyIik7CisgICAgICAgICAgICBjb250YWluZXIudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNsZWFyIG1vZGlmaWVkIHByb3BlcnRpZXMiKTsKKyAg
ICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsZWFy
TW9kaWZpZWRTZWN0aW9uLmJpbmQodGhpcywgY2FtZWxDYXNlSWQpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb250YWluZXI7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9ncm91cHNbY2FtZWxD
YXNlSWRdID0geworICAgICAgICAgICAgc2VjdGlvbjogbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbihpZCwgZGlzcGxheU5hbWUsIFtdLCBjcmVhdGVPcHRpb25zRWxlbWVudC5jYWxsKHRo
aXMpKSwKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9CisgICAgICAgIH07CisKKyAgICAgICAg
bGV0IHBvcHVsYXRlRnVuY3Rpb24gPSB0aGlzWyJfcG9wdWxhdGUiICsgY2FtZWxDYXNlSWQuY2Fw
aXRhbGl6ZSgpICsgIlNlY3Rpb24iXTsKKyAgICAgICAgcG9wdWxhdGVGdW5jdGlvbi5jYWxsKHRo
aXMpOworICAgIH0KKworICAgIF9wcmVwYXJlRm9yQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fZm9yY2VOZXh0U3R5bGVVcGRhdGUgPSB0cnVlOworICAgIH0KKworICAgIF91cGRh
dGVTZWN0aW9ucyhldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZSA9IHRo
aXMuX3NlbGVjdG9yU2VjdGlvbi5jdXJyZW50U3R5bGUoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9j
dXJyZW50U3R5bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGRpc2FibGVk
ID0gdGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bC5TdHlsZURpc2FibGVkU3ltYm9sXTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKCJkaXNhYmxlZCIsIGRpc2FibGVkKTsKKyAgICAgICAgaWYgKGRpc2FibGVkKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9ncm91cHMp
CisgICAgICAgICAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzKHRoaXMuX2dyb3Vwc1trZXldLCAh
IWV2ZW50KTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fc2VjdGlvbnMpIHsKKyAg
ICAgICAgICAgIGxldCBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNba2V5XTsKKyAgICAgICAgICAg
IGxldCBvbmVTZWN0aW9uRXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAobGV0IGdy
b3VwIG9mIHNlY3Rpb24uZ3JvdXBzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFncm91cC5jb2xs
YXBzZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgb25lU2VjdGlvbkV4cGFuZGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNlZCA9ICFvbmVTZWN0aW9uRXhwYW5k
ZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfdXBkYXRlUHJvcGVydGllcyhncm91cCwgZm9y
Y2VTdHlsZVVwZGF0ZSkKKyAgICB7CisgICAgICAgIGlmICghZ3JvdXAuc2VjdGlvbikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgaW5pdGlhbFRleHRMaXN0ID0gdGhpcy5faW5p
dGlhbFRleHRMaXN0OworICAgICAgICBpZiAoIWluaXRpYWxUZXh0TGlzdCkKKyAgICAgICAgICAg
IHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
SW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sXSA9IGluaXRpYWxUZXh0TGlzdCA9
IG5ldyBXZWFrTWFwOworCisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0ID0ge307Cisg
ICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZyA9ICFpbml0aWFsVGV4dExpc3Qu
aGFzKGdyb3VwKTsKKyAgICAgICAgbGV0IG9uZVByb3BlcnR5SGFzVmFsdWUgPSBmYWxzZTsKKyAg
ICAgICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxl
dCBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIHBy
b3BlcnR5RWRpdG9yLnVwZGF0ZSghcHJvcGVydHlFZGl0b3Iuc3R5bGUgfHwgZm9yY2VTdHlsZVVw
ZGF0ZSA/IHRoaXMuX2N1cnJlbnRTdHlsZSA6IG51bGwpOworCisgICAgICAgICAgICBsZXQgdmFs
dWUgPSBwcm9wZXJ0eUVkaXRvci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICAgICAgaWYgKHZh
bHVlICYmICFwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpIHsKKyAgICAgICAgICAgICAg
ICBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoaW5pdGlh
bFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICAgICAgICAgIGluaXRpYWxQcm9wZXJ0
eVRleHRba2V5XSA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nKQorICAgICAgICAgICAgaW5pdGlhbFRleHRM
aXN0LnNldChncm91cCwgaW5pdGlhbFByb3BlcnR5VGV4dCk7CisKKyAgICAgICAgZ3JvdXAuc2Vj
dGlvbi5jb2xsYXBzZWQgPSAhb25lUHJvcGVydHlIYXNWYWx1ZSAmJiAhZ3JvdXAuc2VjdGlvbi5l
eHBhbmRlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5fc2VjdGlvbk1vZGlmaWVkKGdyb3VwKTsKKwor
ICAgICAgICBsZXQgYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBncm91cC5hdXRv
Y29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllczsKKyAgICAgICAgaWYgKCFhdXRvY29tcGxldGVD
b21wYXRpYmxlUHJvcGVydGllcyB8fCAhYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IGVkaXRvciBv
ZiBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcykKKyAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVkaXRvcihlZGl0b3IsIGZvcmNlU3R5
bGVVcGRhdGUpOworICAgIH0KKworICAgIF91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJv
cGVydHlFZGl0b3IoZWRpdG9yLCBmb3JjZSkKKyAgICB7CisgICAgICAgIGlmICghZWRpdG9yIHx8
IChlZGl0b3IuaGFzQ29tcGxldGlvbnMgJiYgIWZvcmNlKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBlZGl0b3IuY29tcGxldGlvbnMgPSBXZWJJbnNwZWN0b3IuQ1NTS2V5d29yZENv
bXBsZXRpb25zLmZvclByb3BlcnR5KGVkaXRvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUpOworICAg
IH0KKworICAgIF9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBncm91cC5z
ZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibW9kaWZpZWQiLCB0aGlzLl9pbml0aWFs
UHJvcGVydHlUZXh0TW9kaWZpZWQoZ3JvdXApKTsKKyAgICB9CisKKyAgICBfY2xlYXJNb2RpZmll
ZFNlY3Rpb24oZ3JvdXBJZCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vw
c1tncm91cElkXTsKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoIm1vZGlmaWVkIik7CisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0TGlzdCA9IHRo
aXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5p
dGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sXS5nZXQoZ3JvdXApOworICAgICAgICBp
ZiAoIWluaXRpYWxQcm9wZXJ0eVRleHRMaXN0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGxldCBuZXdTdHlsZVRleHQgPSB0aGlzLl9jdXJyZW50U3R5bGUudGV4dDsKKyAgICAgICAg
Zm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxldCBwcm9w
ZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGxldCBpbml0
aWFsVmFsdWUgPSBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXldIHx8IG51bGw7CisgICAgICAg
ICAgICBuZXdTdHlsZVRleHQgPSBwcm9wZXJ0eUVkaXRvci5tb2RpZnlQcm9wZXJ0eVRleHQobmV3
U3R5bGVUZXh0LCBpbml0aWFsVmFsdWUpOworICAgICAgICAgICAgcHJvcGVydHlFZGl0b3IucmVz
ZXRFZGl0b3JWYWx1ZXMoaW5pdGlhbFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X2N1cnJlbnRTdHlsZS50ZXh0ID0gbmV3U3R5bGVUZXh0OworICAgIH0KKworICAgIGdldCBfaW5p
dGlhbFRleHRMaXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3R5bGVb
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rp
b25UZXh0TGlzdFN5bWJvbF07CisgICAgfQorCisgICAgX2luaXRpYWxQcm9wZXJ0eVRleHRNb2Rp
ZmllZChncm91cCkKKyAgICB7CisgICAgICAgIGlmICghZ3JvdXAucHJvcGVydGllcykKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBsZXQgaW5pdGlhbFByb3BlcnR5VGV4dExp
c3QgPSB0aGlzLl9pbml0aWFsVGV4dExpc3QuZ2V0KGdyb3VwKTsKKyAgICAgICAgaWYgKCFpbml0
aWFsUHJvcGVydHlUZXh0TGlzdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykgeworICAgICAgICAgICAgbGV0IHBy
b3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXldOworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5RWRpdG9yLnByb3BlcnR5TWlzc2luZykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHlFZGl0b3Iuc3ludGhlc2l6ZWRWYWx1
ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtrZXld
ICE9PSB2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBncm91cHMpCisgICAgeworICAgICAgICBpZiAoIWdyb3VwIHx8ICFncm91cHMpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5ncm91cHMgPSBncm91cHM7Cisg
ICAgICAgIGZvciAobGV0IGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKQorICAgICAgICAgICAgZ3Jv
dXAucHJvcGVydGllc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX3NlY3Rpb25Nb2Rp
ZmllZC5iaW5kKHRoaXMsIGdyb3VwKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGlzcGxheVNl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRpc3BsYXk7
CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBs
ZXQgZGlzcGxheVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5kaXNwbGF5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoImRpc3BsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgewor
ICAgICAgICAgICAgYmFzaWM6IFsiTm9uZSIsICJCbG9jayIsICJGbGV4IiwgIklubGluZSIsICJJ
bmxpbmUgQmxvY2siXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbXBhY3QiLCAiSW5saW5l
IEZsZXgiLCAiSW5saW5lIFRhYmxlIiwgIkxpc3QgSXRlbSIsICJUYWJsZSIsICJUYWJsZSBDYXB0
aW9uIiwgIlRhYmxlIENlbGwiLCAiVGFibGUgQ29sdW1uIiwgIlRhYmxlIENvbHVtbiBHcm91cCIs
ICJUYWJsZSBGb290ZXIgR3JvdXAiLCAiVGFibGUgSGVhZGVyIEdyb3VwIiwgIlRhYmxlIFJvdyIs
ICJUYWJsZSBSb3cgR3JvdXAiLCAiIFdBUCBNYXJxdWVlIiwgIiBXZWJLaXQgQm94IiwgIiBXZWJL
aXQgR3JpZCIsICIgV2ViS2l0IElubGluZSBCb3giLCAiIFdlYktpdCBJbmxpbmUgR3JpZCJdCisg
ICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnZpc2liaWxpdHkgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigidmlzaWJpbGl0eSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVmlzaWJpbGl0eSIpLCB7CisgICAgICAgICAgICBiYXNpYzogWyJIaWRkZW4iLCAi
VmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29sbGFwc2UiXQorICAgICAgICB9
KTsKKworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5k
aXNwbGF5LmVsZW1lbnQpOworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy52aXNpYmlsaXR5LmVsZW1lbnQpOworCisgICAgICAgIGxldCBzaXppbmdSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMuYm94U2l6aW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIo
ImJveC1zaXppbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemluZyIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJCb3JkZXIgQm94IiwgIkNvbnRlbnQgQm94Il0pKTsKKyAg
ICAgICAgcHJvcGVydGllcy5jdXJzb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5
d29yZFBpY2tlcigiY3Vyc29yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDdXJzb3IiKSwgewor
ICAgICAgICAgICAgYmFzaWM6IFsiQXV0byIsICJEZWZhdWx0IiwgIk5vbmUiLCAiUG9pbnRlciIs
ICJDcm9zc2hhaXIiLCAiVGV4dCJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiQ29udGV4dCBN
ZW51IiwgIkhlbHAiLCAiUHJvZ3Jlc3MiLCAiV2FpdCIsICJDZWxsIiwgIlZlcnRpY2FsIFRleHQi
LCAiQWxpYXMiLCAiQ29weSIsICJNb3ZlIiwgIk5vIERyb3AiLCAiTm90IEFsbG93ZWQiLCAiQWxs
IFNjcm9sbCIsICJDb2wgUmVzaXplIiwgIlJvdyBSZXNpemUiLCAiTiBSZXNpemUiLCAiRSBSZXNp
emUiLCAiUyBSZXNpemUiLCAiVyBSZXNpemUiLCAiTlMgUmVzaXplIiwgIkVXIFJlc2l6ZSIsICJO
RSBSZXNpemUiLCAiTlcgUmVzaXplIiwgIlNFIFJlc2l6ZSIsICJzVyBSZXNpemUiLCAiTkVTVyBS
ZXNpemUiLCAiTldTRSBSZXNpemUiXQorICAgICAgICB9KTsKKworICAgICAgICBzaXppbmdSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNpemluZy5lbGVtZW50KTsKKyAgICAg
ICAgc2l6aW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5jdXJzb3IuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IG92ZXJmbG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm9wYWNpdHkgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlVW5pdFNsaWRlcigib3BhY2l0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiT3BhY2l0eSIpKTsKKyAgICAgICAgcHJvcGVydGllcy5vdmVyZmxvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKFsib3ZlcmZsb3cteCIsICJvdmVyZmxvdy15
Il0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3ZlcmZsb3ciKSwgeworICAgICAgICAgICAgYmFz
aWM6IFsiSW5pdGlhbCIsICJBdXRvIiwgIkhpZGRlbiIsICJTY3JvbGwiLCAiVmlzaWJsZSJdLAor
ICAgICAgICAgICAgYWR2YW5jZWQ6IFsiTWFycXVlZSIsICJPdmVybGF5IiwgIiBXZWJLaXQgUGFn
ZWQgWCIsICIgV2ViS2l0IFBhZ2VkIFkiXQorICAgICAgICB9KTsKKworICAgICAgICBvdmVyZmxv
d1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3BhY2l0eS5lbGVtZW50KTsKKyAg
ICAgICAgb3ZlcmZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm92ZXJmbG93
LmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaXNwbGF5R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uR3JvdXAoW2Rpc3BsYXlSb3csIHNpemluZ1Jvdywgb3ZlcmZsb3dSb3dd
KTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGlzcGxheUdyb3VwXSk7
CisgICAgfQorCisgICAgX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsIHByZWZpeCwg
YWxsb3dOZWdhdGl2ZXMpCisgICAgeworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnBy
b3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGhhc1ByZWZpeCA9IHByZWZpeCAmJiBwcmVmaXgubGVu
Z3RoOworICAgICAgICBsZXQgcHJvcGVydHlOYW1lUHJlZml4ID0gaGFzUHJlZml4ID8gcHJlZml4
ICsgIi0iIDogIiI7CisKKyAgICAgICAgbGV0IHRvcCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJU
b3AiIDogInRvcCI7CisgICAgICAgIGxldCBib3R0b20gPSBoYXNQcmVmaXggPyBwcmVmaXggKyAi
Qm90dG9tIiA6ICJib3R0b20iOworICAgICAgICBsZXQgbGVmdCA9IGhhc1ByZWZpeCA/IHByZWZp
eCArICJMZWZ0IiA6ICJsZWZ0IjsKKyAgICAgICAgbGV0IHJpZ2h0ID0gaGFzUHJlZml4ID8gcHJl
Zml4ICsgIlJpZ2h0IiA6ICJyaWdodCI7CisKKyAgICAgICAgbGV0IHZlcnRpY2FsID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW3RvcF0g
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1l
UHJlZml4ICsgInRvcCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIHRoaXMuX2tleXdv
cmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAg
ICAgICBwcm9wZXJ0aWVzW2JvdHRvbV0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgImJvdHRvbSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQm90dG9tIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5k
ZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICBsZXQgdmVydGljYWxMaW5r
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVy
dGllc1t0b3BdLCBwcm9wZXJ0aWVzW2JvdHRvbV1dLCAibGluay12ZXJ0aWNhbCIpOworCisgICAg
ICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1t0b3BdLmVsZW1lbnQp
OworICAgICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHZlcnRpY2FsTGluay5lbGVt
ZW50KTsKKyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2Jv
dHRvbV0uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGhvcml6b250YWwgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXNbbGVmdF0gPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4
ICsgImxlZnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwgdGhpcy5fa2V5d29yZHMu
Ym94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZlcyk7CisgICAgICAg
IHByb3BlcnRpZXNbcmlnaHRdID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJyaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRz
LCBhbGxvd05lZ2F0aXZlcywgdHJ1ZSk7CisgICAgICAgIGxldCBob3Jpem9udGFsTGluayA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNb
bGVmdF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmstaG9yaXpvbnRhbCIpOworCisgICAgICAg
IGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW2xlZnRdLmVsZW1lbnQp
OworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQoaG9yaXpvbnRhbExpbmsu
ZWxlbWVudCk7CisgICAgICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzW3JpZ2h0XS5lbGVtZW50KTsKKworICAgICAgICBsZXQgYWxsTGlua1JvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAgIGxldCBhbGxMaW5rID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3Bd
LCBwcm9wZXJ0aWVzW2JvdHRvbV0sIHByb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRpZXNbcmlnaHRd
XSwgImxpbmstYWxsIiwgW3ZlcnRpY2FsTGluaywgaG9yaXpvbnRhbExpbmtdKTsKKyAgICAgICAg
YWxsTGlua1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKGFsbExpbmsuZWxlbWVudCk7CisKKyAgICAg
ICAgcmV0dXJuIFt2ZXJ0aWNhbCwgYWxsTGlua1JvdywgaG9yaXpvbnRhbF07CisgICAgfQorCisg
ICAgX3BvcHVsYXRlUG9zaXRpb25TZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9
IHRoaXMuX2dyb3Vwcy5wb3NpdGlvbjsKKyAgICAgICAgbGV0IHJvd3MgPSB0aGlzLl9nZW5lcmF0
ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBudWxsLCB0cnVlKTsKKyAgICAgICAgbGV0IHByb3Bl
cnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBwb3NpdGlvblR5cGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
cG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigicG9z
aXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSwgeworICAgICAgICAgICAgYmFz
aWM6IFsiU3RhdGljIiwgIlJlbGF0aXZlIiwgIkFic29sdXRlIiwgIkZpeGVkIl0sCisgICAgICAg
ICAgICBhZHZhbmNlZDogWyIgV2ViS2l0IFN0aWNreSJdCisgICAgICAgIH0pOworICAgICAgICBw
cm9wZXJ0aWVzLnpJbmRleCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgiei1pbmRleCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiei1JbmRleCIpLCB0aGlzLl9r
ZXl3b3Jkcy5ib3hNb2RlbCwgbnVsbCwgdHJ1ZSk7CisKKyAgICAgICAgcG9zaXRpb25UeXBlLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5wb3NpdGlvbi5lbGVtZW50KTsKKyAgICAgICAg
cG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy56SW5kZXguZWxlbWVu
dCk7CisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1z
dHlsZS1zZXBhcmF0ZWQtcm93Iik7CisKKyAgICAgICAgcm93cy51bnNoaWZ0KHBvc2l0aW9uVHlw
ZSkKKworICAgICAgICBsZXQgcG9zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBbcG9zaXRpb25Hcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZsb2F0U2VjdGlvbigp
CisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuZmxvYXQ7CisgICAgICAg
IGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZmxvYXRS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuZmxvYXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0
KCJmbG9hdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQiKSwgWyJMZWZ0IiwgIlJpZ2h0
IiwgIk5vbmUiXSk7CisgICAgICAgIGZsb2F0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5mbG9hdC5lbGVtZW50KTsKKworICAgICAgICBsZXQgY2xlYXJSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuY2xlYXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJjbGVhciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIkJvdGgiLCAiTm9u
ZSJdKTsKKyAgICAgICAgY2xlYXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmNs
ZWFyLmVsZW1lbnQpOworCisgICAgICAgIGxldCBmbG9hdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmbG9hdFJvdywgY2xlYXJSb3ddKTsKKyAgICAgICAgdGhp
cy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZmxvYXRHcm91cF0pOworICAgIH0KKworICAgIF9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZWRpdG9yLCBoaWdobGlnaHRDb25maWcpCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3ZlcigpIHsKKyAgICAgICAgICAgIGlmICgh
dGhpcy5fc3R5bGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAo
IXRoaXMuX3N0eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyA2KTogT3JkZXIgb2YgcGFyYW1ldGVycyBjaGFuZ2VkIGluIGlPUyA3LgorICAgICAg
ICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUuaW52b2tlKHtub2RlSWQ6IHRoaXMuX3N0
eWxlLm5vZGUuaWQsIGhpZ2hsaWdodENvbmZpZ30pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKERPTUFnZW50LmhpZ2hsaWdodFNlbGVj
dG9yKQorICAgICAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFNlbGVjdG9yKGhpZ2hsaWdo
dENvbmZpZywgdGhpcy5fc3R5bGUub3duZXJSdWxlLnNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUu
bm9kZS5vd25lckRvY3VtZW50LmZyYW1lSWRlbnRpZmllcik7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkVkaXRvck1vdXNlb3V0KCkgeworICAgICAgICAgICAgRE9NQWdlbnQuaGlk
ZUhpZ2hsaWdodCgpOworICAgICAgICB9CisKKyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgb25FZGl0b3JNb3VzZW92ZXIuYmluZChlZGl0b3IpKTsK
KyAgICAgICAgZWRpdG9yLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBvbkVk
aXRvck1vdXNlb3V0LmJpbmQoZWRpdG9yKSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRGltZW5z
aW9uc1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmRp
bWVuc2lvbnM7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKwor
ICAgICAgICBsZXQgZGltZW5zaW9uc1dpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLndpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJ3aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1
bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zV2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLndpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zSGVpZ2h0ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LmhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRl
cigiaGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29y
ZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVlKTsKKworICAgICAgICBkaW1l
bnNpb25zSGVpZ2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5oZWlnaHQuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMud2lk
dGgsIHByb3BlcnRpZXMuaGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNSZWd1bGFyR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNXaWR0
aCwgZGltZW5zaW9uc0hlaWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWluV2lkdGgg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMubWluV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJT
bGlkZXIoIm1pbi13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5f
a2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1l
bnNpb25zTWluV2lkdGguZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm1pbldpZHRoLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWluSGVpZ2h0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbkhlaWdodCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWluLWhl
aWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJv
eE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbkhl
aWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluSGVpZ2h0LmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBkaW1lbnNpb25zTWluUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm1pbldp
ZHRoLCBwcm9wZXJ0aWVzLm1pbkhlaWdodF07CisgICAgICAgIGxldCBkaW1lbnNpb25zTWluR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNNaW5X
aWR0aCwgZGltZW5zaW9uc01pbkhlaWdodF0pOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4
S2V5d29yZHMgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoIk5vbmUiKTsKKyAgICAg
ICAgbGV0IGRpbWVuc2lvbnNNYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5tYXhXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigibWF4LXdpZHRoIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJXaWR0aCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRl
ZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWF4V2lkdGguZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLm1heFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25z
TWF4SGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAg
ICBwcm9wZXJ0aWVzLm1heEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxh
dGl2ZU51bWJlclNsaWRlcigibWF4LWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVp
Z2h0IiksIGRpbWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGRpbWVuc2lvbnNNYXhIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
Lm1heEhlaWdodC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01heFByb3BlcnRp
ZXMgPSBbcHJvcGVydGllcy5tYXhXaWR0aCwgcHJvcGVydGllcy5tYXhIZWlnaHRdOworICAgICAg
ICBsZXQgZGltZW5zaW9uc01heEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtkaW1lbnNpb25zTWF4V2lkdGgsIGRpbWVuc2lvbnNNYXhIZWlnaHRdKTsKKworICAg
ICAgICBsZXQgZGltZW5zaW9uc1RhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdyh7CisgICAgICAgICAgICAiZGVmYXVsdCI6IHt0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWZhdWx0IiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNS
ZWd1bGFyR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc1Byb3BlcnRpZXN9LAor
ICAgICAgICAgICAgIm1pbiI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNaW4iKSwg
ZWxlbWVudDogZGltZW5zaW9uc01pbkdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRpbWVuc2lv
bnNNaW5Qcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJtYXgiOiB7dGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTWF4IiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNNYXhHcm91cC5lbGVtZW50LCBw
cm9wZXJ0aWVzOiBkaW1lbnNpb25zTWF4UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAg
ICAgbGV0IGhpZ2hsaWdodENvbmZpZyA9IHtjb250ZW50Q29sb3I6IHtyOiAxMTEsIGc6IDE2OCwg
YjogMjIwLCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAgICAgICB0aGlzLl9hZGRNZXRy
aWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy53aWR0aCwgaGlnaGxpZ2h0Q29uZmln
KTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRp
ZXMuaGVpZ2h0LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91
c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5taW5XaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsK
KyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMu
bWluSGVpZ2h0LCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91
c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXhXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsK
KyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMu
bWF4SGVpZ2h0LCBoaWdobGlnaHRDb25maWcpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVuc2lvbnNUYWJD
b250cm9sbGVyLCBkaW1lbnNpb25zUmVndWxhckdyb3VwLCBkaW1lbnNpb25zTWluR3JvdXAsIGRp
bWVuc2lvbnNNYXhHcm91cF0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAs
IFtkaW1lbnNpb25zR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVNYXJnaW5TZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5tYXJnaW47CisgICAg
ICAgIGxldCByb3dzID0gdGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgIm1h
cmdpbiIsIHRydWUpOworCisgICAgICAgIGxldCBoaWdobGlnaHRDb25maWcgPSB7bWFyZ2luQ29s
b3I6IHtyOiAyNDYsIGc6IDE3OCwgYjogMTA3LCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9Owor
ICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5t
YXJnaW5Ub3AsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3Vz
ZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpbkJvdHRvbSwgaGlnaGxpZ2h0Q29uZmln
KTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRp
ZXMubWFyZ2luTGVmdCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmlj
c01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWFyZ2luUmlnaHQsIGhpZ2hsaWdodENv
bmZpZyk7CisKKyAgICAgICAgbGV0IG1hcmdpbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3Jv
dXAsIFttYXJnaW5Hcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVBhZGRpbmdTZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5wYWRkaW5nOworICAg
ICAgICBsZXQgcm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJw
YWRkaW5nIik7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodENvbmZpZyA9IHtwYWRkaW5nQ29sb3I6
IHtyOiAxNDcsIGc6IDE5NiwgYjogMTI1LCBhOiAwLjY2fSwgc2hvd0luZm86IHRydWV9OworICAg
ICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5wYWRk
aW5nVG9wLCBoaWdobGlnaHRDb25maWcpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5wYWRkaW5nQm90dG9tLCBoaWdobGlnaHRDb25maWcp
OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGll
cy5wYWRkaW5nTGVmdCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmlj
c01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFkZGluZ1JpZ2h0LCBoaWdobGlnaHRD
b25maWcpOworCisgICAgICAgIGxldCBwYWRkaW5nR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uR3JvdXAocm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihn
cm91cCwgW3BhZGRpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZsZXhib3hTZWN0
aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5mbGV4Ym94Owor
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0
IGZsZXhPcmRlclJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5vcmRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1i
ZXJJbnB1dEJveCgib3JkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yZGVyIiksIHRoaXMu
X2tleXdvcmRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5mbGV4QmFzaXMgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZsZXgtYmFzaXMiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJhc2lzIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlz
Ll91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgZmxleE9yZGVyUm93LmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5vcmRlci5lbGVtZW50KTsKKyAgICAgICAgZmxleE9yZGVy
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4QmFzaXMuZWxlbWVudCk7CisK
KyAgICAgICAgbGV0IGZsZXhTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhHcm93ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LWdyb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkdyb3ciKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIG51bGwpOworICAgICAgICBwcm9w
ZXJ0aWVzLmZsZXhTaHJpbmsgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goImZsZXgtc2hyaW5rIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaHJpbmsiKSwgdGhp
cy5fa2V5d29yZHMuZGVmYXVsdHMsIG51bGwpOworCisgICAgICAgIGZsZXhTaXplUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4R3Jvdy5lbGVtZW50KTsKKyAgICAgICAgZmxl
eFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhTaHJpbmsuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGZsZXhGbG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZmxleC1kaXJlY3Rpb24iLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRpcmVjdGlvbiIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5j
b25jYXQoWyJSb3ciLCAiUm93IFJldmVyc2UiLCAiQ29sdW1uIiwgIkNvbHVtbiBSZXZlcnNlIl0p
KTsKKyAgICAgICAgcHJvcGVydGllcy5mbGV4V3JhcCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVLZXl3b3JkUGlja2VyKCJmbGV4LXdyYXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldy
YXAiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiV3JhcCIsICJXcmFwIFJldmVy
c2UiLCAiTm93cmFwIl0pKTsKKworICAgICAgICBmbGV4Rmxvd1Jvdy5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMuZmxleERpcmVjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgZmxleEZsb3dS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhXcmFwLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBmbGV4Ym94R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAoW2ZsZXhPcmRlclJvdywgZmxleFNpemVSb3csIGZsZXhGbG93Um93XSk7CisgICAgICAg
IHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2ZsZXhib3hHcm91cF0pOworICAgIH0KKwor
ICAgIF9wb3B1bGF0ZVRleHRTdHlsZVNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3Vw
ID0gdGhpcy5fZ3JvdXBzLnRleHRTdHlsZTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91
cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCB0ZXh0QXBwZWFyYW5jZVJvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5jb2xvciA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiY29sb3IiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLnRleHREaXJlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZGlyZWN0aW9u
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMuY29uY2F0KFsiTFRSIiwgIlJUTCJdKSk7CisKKyAgICAgICAgdGV4dEFwcGVhcmFuY2VS
b3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmNvbG9yLmVsZW1lbnQpOworICAgICAg
ICB0ZXh0QXBwZWFyYW5jZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4dERp
cmVjdGlvbi5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dEFsaWduUm93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRleHRBbGln
biA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtYWxp
Z24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsaWduIiksIFsiTGVmdCIsICJDZW50ZXIiLCAi
UmlnaHQiLCAiSnVzdGlmeSJdKTsKKworICAgICAgICB0ZXh0QWxpZ25Sb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLnRleHRBbGlnbi5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4
dFRyYW5zZm9ybVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy50ZXh0VHJhbnNmb3JtID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRJY29uTGlzdCgidGV4dC10cmFuc2Zvcm0iLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlRyYW5zZm9ybSIpLCBbIkNhcGl0YWxpemUiLCAiVXBwZXJjYXNlIiwgIkxvd2VyY2FzZSIs
ICJOb25lIl0pOworCisgICAgICAgIHRleHRUcmFuc2Zvcm1Sb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLnRleHRUcmFuc2Zvcm0uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRE
ZWNvcmF0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzLnRleHREZWNvcmF0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRJY29uTGlzdCgidGV4dC1kZWNvcmF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEZWNvcmF0aW9uIiksIFsiVW5kZXJsaW5lIiwgIkxpbmUgVGhyb3VnaCIsICJPdmVybGlu
ZSIsICJOb25lIl0pOworCisgICAgICAgIHRleHREZWNvcmF0aW9uUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy50ZXh0RGVjb3JhdGlvbi5lbGVtZW50KTsKKworICAgICAgICBncm91
cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmNvbG9yXTsK
KworICAgICAgICBsZXQgdGV4dFN0eWxlR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW3RleHRBcHBlYXJhbmNlUm93LCB0ZXh0QWxpZ25Sb3csIHRleHRUcmFuc2Zv
cm1Sb3csIHRleHREZWNvcmF0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlv
bihncm91cCwgW3RleHRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRm9udFNl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZvbnQ7Cisg
ICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQg
Zm9udEZhbWlseVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5mb250RmFtaWx5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZUZvbnRGYW1pbHlMaXN0RWRpdG9yKCJmb250LWZhbWlseSIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRmFtaWx5IikpOworCisgICAgICAgIGZvbnRGYW1pbHlSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmZvbnRGYW1pbHkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGZvbnRTaXpl
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9w
ZXJ0aWVzLmZvbnRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJmb250LXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemUiKSwgdGhpcy5fa2V5
d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTGFyZ2VyIiwgIlhYIExhcmdlIiwgIlggTGFyZ2UiLCAi
TGFyZ2UiLCAiTWVkaXVtIiwgIlNtYWxsIiwgIlggU21hbGwiLCAiWFggU21hbGwiLCAiU21hbGxl
ciJdKSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFdl
aWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJmb250LXdl
aWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2VpZ2h0IiksIHsKKyAgICAgICAgICAgIGJh
c2ljOiB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJCb2xkZXIiLCAiQm9sZCIsICJO
b3JtYWwiLCAiTGlnaHRlciJdKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIjEwMCIsICIyMDAi
LCAiMzAwIiwgIjQwMCIsICI1MDAiLCAiNjAwIiwgIjcwMCIsICI4MDAiLCAiOTAwIl0KKyAgICAg
ICAgfSk7CisKKyAgICAgICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmZvbnRTaXplLmVsZW1lbnQpOworICAgICAgICBmb250U2l6ZVJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuZm9udFdlaWdodC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZm9u
dFN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAg
ICBwcm9wZXJ0aWVzLmZvbnRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkSWNvbkxpc3QoImZvbnQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiks
IFsiSXRhbGljIiwgIk5vcm1hbCJdKTsKKyAgICAgICAgcHJvcGVydGllcy5mb250VmFyaWFudCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3goImZvbnQtdmFyaWFu
dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFyaWFudCIpLCAiU21hbGwgQ2FwcyIpCisKKyAg
ICAgICAgZm9udFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U3R5
bGUuZWxlbWVudCk7CisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuZm9udFZhcmlhbnQuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBs
ZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5mb250RmFtaWx5XTsKKworICAg
ICAgICBsZXQgZm9udEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtmb250RmFtaWx5Um93LCBmb250U2l6ZVJvdywgZm9udFN0eWxlUm93XSk7CisgICAgICAgIHRo
aXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2ZvbnRHcm91cF0pOworICAgIH0KKworICAgIF9w
b3B1bGF0ZVRleHRTcGFjaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0
aGlzLl9ncm91cHMudGV4dFNwYWNpbmc7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAu
cHJvcGVydGllczsKKworICAgICAgICBsZXQgZGVmYXVsdFRleHRLZXl3b3JkcyA9IHRoaXMuX2tl
eXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vcm1hbCJdKTsKKworICAgICAgICBsZXQgdGV4dExh
eW91dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5saW5lSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KCJsaW5lLWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0Iiks
IGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJv
cGVydGllcy52ZXJ0aWNhbEFsaWduID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KCJ2ZXJ0aWNhbC1hbGlnbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxpZ24i
KSwgWyJCYXNlbGluZSIsICJCb3R0b20iXS5jb25jYXQodGhpcy5fa2V5d29yZHMuZGVmYXVsdHMs
IFsiTWlkZGxlIiwgIlN1YiIsICJTdXBlciIsICJUZXh0IEJvdHRvbSIsICJUZXh0IFRvcCIsICJU
b3AiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0TGF5b3V0Um93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5saW5lSGVpZ2h0LmVsZW1lbnQpOworICAgICAg
ICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52ZXJ0aWNhbEFs
aWduLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0U3BhY2luZ1JvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5sZXR0ZXJTcGFj
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJsZXR0ZXIt
c3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGV0dGVyIiksIGRlZmF1bHRUZXh0S2V5
d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53b3JkU3Bh
Y2luZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgid29yZC1z
cGFjaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXb3JkIiksIGRlZmF1bHRUZXh0S2V5d29y
ZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0U3BhY2luZ1Jvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubGV0dGVyU3BhY2luZy5lbGVtZW50KTsKKyAgICAg
ICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndvcmRTcGFj
aW5nLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0V2hpdGVzcGFjZVJvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0SW5k
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0LWlu
ZGVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZW50IiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMud2hpdGVT
cGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ3aGl0ZS1z
cGFjZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2hpdGVzcGFjZSIpLCB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cy5jb25jYXQoWyJOb3JtYWwiLCAiTm93cmFwIiwgIlByZSIsICJQcmUgTGluZSIs
ICJQcmUgV3JhcCJdKSk7CisKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLnRleHRJbmRlbnQuZWxlbWVudCk7CisgICAgICAgIHRleHRXaGl0
ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aGl0ZVNwYWNlLmVsZW1l
bnQpOworCisgICAgICAgIGxldCB0ZXh0U3BhY2luZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0TGF5b3V0Um93LCB0ZXh0U3BhY2luZ1JvdywgdGV4dFdo
aXRlc3BhY2VSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4
dFNwYWNpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93Owor
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0
IHRleHRTaGFkb3dTaXppbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIGxldCB0ZXh0U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhvcml6
b250YWwiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAgICAg
IGxldCB0ZXh0U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZlcnRpY2FsIiksIG51
bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworCisgICAgICAgIHRleHRTaGFk
b3dTaXppbmcuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93SC5lbGVtZW50KTsKKyAgICAg
ICAgdGV4dFNoYWRvd1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dWLmVsZW1l
bnQpOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCB0ZXh0U2hhZG93Q29sb3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoInRleHQtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgdGV4dFNoYWRvd0NvbG9yLmNvbG9yUHJv
cGVydHkgPSB0cnVlOworICAgICAgICBsZXQgdGV4dFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQp
OworICAgICAgICB0ZXh0U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAg
ICAgICB0ZXh0U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Q29sb3Iu
ZWxlbWVudCk7CisgICAgICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHRl
eHRTaGFkb3dCbHVyLmVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnRpZXMudGV4dFNoYWRvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0ZXh0LXNoYWRv
dyIsIFt0ZXh0U2hhZG93SCwgdGV4dFNoYWRvd1YsIHRleHRTaGFkb3dCbHVyLCB0ZXh0U2hhZG93
Q29sb3JdKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGll
cyA9IFt0ZXh0U2hhZG93Q29sb3JdOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93R3JvdXAgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRTaGFkb3dTaXppbmcsIHRl
eHRTaGFkb3dTdHlsZV0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0
ZXh0U2hhZG93R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCYWNrZ3JvdW5kU3R5bGVT
ZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5iYWNrZ3Jv
dW5kU3R5bGU7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKwor
ICAgICAgICBsZXQgYmFja2dyb3VuZFN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYmFja2dyb3VuZC1jb2xvciIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dy
b3VuZEltYWdlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJiYWNrZ3Jv
dW5kLWltYWdlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpKTsKKworICAgICAgICBi
YWNrZ3JvdW5kU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91
bmRDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IGJhY2tncm91bmRTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBsZXQgYmFja2dyb3VuZFNpemVLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRz
LmJveE1vZGVsLmNvbmNhdChbIkNvbnRhaW4iLCAiQ292ZXIiXSk7CisgICAgICAgIGxldCBiYWNr
Z3JvdW5kU2l6ZVggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
ImJhY2tncm91bmQtc2l6ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgYmFja2dy
b3VuZFNpemVLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBiYWNrZ3Jv
dW5kU2l6ZVgubWFzdGVyUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYmFja2dyb3VuZFNp
emVZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3Jv
dW5kLXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBiYWNrZ3JvdW5kU2l6
ZUtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRTaXpl
WS5tYXN0ZXJQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5k
U2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJiYWNr
Z3JvdW5kLXNpemUiLCBbYmFja2dyb3VuZFNpemVYLCBiYWNrZ3JvdW5kU2l6ZVldKTsKKworICAg
ICAgICBiYWNrZ3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRTaXpl
WC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChiYWNrZ3JvdW5kU2l6ZVkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRSZXBl
YXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVL
ZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5kLXJlcGVhdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmVwZWF0IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vIFJlcGVhdCIsICJS
ZXBlYXQiLCAiUmVwZWF0IFgiLCAiUmVwZWF0IFkiXSkpOworICAgICAgICBwcm9wZXJ0aWVzLmJh
Y2tncm91bmRBdHRhY2htZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQ
aWNrZXIoImJhY2tncm91bmQtYXR0YWNobWVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXR0
YWNoIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkZpeGVkIiwgIkxvY2FsIiwg
IlNjcm9sbCJdKSk7CisKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdC5lbGVtZW50KTsKKyAgICAgICAgYmFj
a2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3Vu
ZEF0dGFjaG1lbnQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRQb3NpdGlvblJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJh
Y2tncm91bmRQb3NpdGlvblggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goImJhY2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBvc2l0
aW9uIFgiKSwgWyJDZW50ZXIiLCAiTGVmdCIsICJSaWdodCJdLCB0aGlzLl91bml0cy5kZWZhdWx0
cyk7CisgICAgICAgIGxldCBiYWNrZ3JvdW5kUG9zaXRpb25ZID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBZIiksIFsiQm90dG9tIiwgIkNlbnRlciIsICJUb3AiXSwg
dGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFBv
c2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJh
Y2tncm91bmQtcG9zaXRpb24iLCBbYmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3VuZFBvc2l0
aW9uWV0pOworCisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENo
aWxkKGJhY2tncm91bmRQb3NpdGlvblguZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRQb3Np
dGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblkuZWxlbWVudCk7
CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJv
cGVydGllcy5iYWNrZ3JvdW5kQ29sb3JdOworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kU3R5bGVH
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYmFja2dyb3VuZFN0
eWxlUm93LCBiYWNrZ3JvdW5kU2l6ZVJvdywgYmFja2dyb3VuZFJlcGVhdFJvdywgYmFja2dyb3Vu
ZFBvc2l0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Jh
Y2tncm91bmRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm9yZGVyU2VjdGlv
bigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVyOworICAg
ICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGJv
cmRlckFsbFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
S2V5d29yZFBpY2tlcihbImJvcmRlci10b3Atc3R5bGUiLCAiYm9yZGVyLXJpZ2h0LXN0eWxlIiwg
ImJvcmRlci1ib3R0b20tc3R5bGUiLCAiYm9yZGVyLWxlZnQtc3R5bGUiXSAsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAg
ICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXIt
c3R5bGUiOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC13aWR0aCIsICJib3JkZXIt
cmlnaHQtd2lkdGgiLCAiYm9yZGVyLWJvdHRvbS13aWR0aCIsICJib3JkZXItbGVmdC13aWR0aCJd
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldp
ZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyV2lk
dGgucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci13aWR0aCI7CisKKyAgICAgICAgYm9y
ZGVyQWxsU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyU3R5bGUuZWxl
bWVudCk7CisgICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlcldpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJBbGxTdHlsZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5ib3JkZXJDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcihb
ImJvcmRlci10b3AtY29sb3IiLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgImJvcmRlci1ib3R0b20t
Y29sb3IiLCAiYm9yZGVyLWxlZnQtY29sb3IiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xv
ciIpKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvci5wcm9wZXJ0eVJlZmVyZW5jZU5h
bWUgPSAiYm9yZGVyLWNvbG9yIjsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLWxl
ZnQtcmFkaXVzIiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tbGVm
dC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRl
ZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMucHJvcGVydHlSZWZlcmVu
Y2VOYW1lID0gImJvcmRlci1yYWRpdXMiOworCisgICAgICAgIGJvcmRlckFsbFN0eWxlLmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJDb2xvci5lbGVtZW50KTsKKyAgICAgICAg
Ym9yZGVyQWxsU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJhZGl1
cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyQWxsUHJvcGVydGllcyA9IFtwcm9wZXJ0
aWVzLmJvcmRlclN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBwcm9wZXJ0aWVzLmJvcmRl
ckNvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJBbGxH
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQWxsU2l6
ZSwgYm9yZGVyQWxsU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVG9wU2l6ZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3Jk
ZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJi
b3JkZXItdG9wLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9r
ZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgg
PSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci10b3At
d2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJv
cmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyVG9wU2l6
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUuZWxlbWVudCk7
CisgICAgICAgIGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJv
cmRlclRvcFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJUb3BTdHlsZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJUb3BDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigi
Ym9yZGVyLXRvcC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXItdG9w
LXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9r
ZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRl
clRvcFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BDb2xvci5l
bGVtZW50KTsKKyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLmJvcmRlclRvcFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyVG9w
UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRl
clRvcFdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclRv
cFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJUb3BHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyVG9wU2l6ZSwgYm9yZGVyVG9wU3R5bGVdKTsKKwor
ICAgICAgICBsZXQgYm9yZGVyUmlnaHRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXJpZ2h0LXN0eWxlIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHls
ZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXJpZ2h0LXdpZHRoIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhp
cy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50KTsKKyAgICAgICAg
Ym9yZGVyUmlnaHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdo
dFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJSaWdodFN0eWxlID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRl
clJpZ2h0Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJv
cmRlci1yaWdodC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJib3JkZXIt
Ym90dG9tLXJpZ2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAg
IGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJp
Z2h0Q29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzLmVsZW1lbnQpOworCisgICAgICAg
IGxldCBib3JkZXJSaWdodFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJSaWdodFN0eWxl
LCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xv
ciwgcHJvcGVydGllcy5ib3JkZXJSaWdodFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJSaWdo
dEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJSaWdo
dFNpemUsIGJvcmRlclJpZ2h0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9tU2l6
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5ib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyKCJib3JkZXItYm90dG9tLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyQm90dG9tV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goImJvcmRlci1ib3R0b20td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRo
IiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisK
KyAgICAgICAgYm9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
Ym9yZGVyQm90dG9tU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJvdHRvbVNpemUuZWxl
bWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLWJvdHRvbS1jb2xv
ciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyQm90dG9tUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94KFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJpZ2h0
LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckJvdHRv
bVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvci5l
bGVtZW50KTsKKyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9y
ZGVyQm90dG9tUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlLCBwcm9w
ZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLCBw
cm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJCb3R0b21H
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQm90dG9t
U2l6ZSwgYm9yZGVyQm90dG9tU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyTGVmdFNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMuYm9yZGVyTGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQ
aWNrZXIoImJvcmRlci1sZWZ0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIp
LCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVy
TGVmdFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJi
b3JkZXItbGVmdC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5f
a2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBi
b3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFN0
eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3Jk
ZXJMZWZ0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUNvbG9yUGlja2VyKCJib3JkZXItbGVmdC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cyA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVmdC1y
YWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVs
dHMpOworCisgICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuYm9yZGVyTGVmdENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U3R5bGUu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMuZWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGJvcmRlckxlZnRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVy
TGVmdFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJM
ZWZ0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1c107CisgICAgICAgIGxldCBib3Jk
ZXJMZWZ0R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRl
ckxlZnRTaXplLCBib3JkZXJMZWZ0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVGFiQ29u
dHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93
KHsKKyAgICAgICAgICAgICJhbGwiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxs
IiksIGVsZW1lbnQ6IGJvcmRlckFsbEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlckFs
bFByb3BlcnRpZXN9LAorICAgICAgICAgICAgInRvcCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUb3AiKSwgZWxlbWVudDogYm9yZGVyVG9wR3JvdXAuZWxlbWVudCwgcHJvcGVydGll
czogYm9yZGVyVG9wUHJvcGVydGllc30sCisgICAgICAgICAgICAicmlnaHQiOiB7dGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmlnaHQiKSwgZWxlbWVudDogYm9yZGVyUmlnaHRHcm91cC5l
bGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJSaWdodFByb3BlcnRpZXN9LAorICAgICAgICAgICAg
ImJvdHRvbSI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3R0b20iKSwgZWxlbWVu
dDogYm9yZGVyQm90dG9tR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyQm90dG9tUHJv
cGVydGllc30sCisgICAgICAgICAgICAibGVmdCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJMZWZ0IiksIGVsZW1lbnQ6IGJvcmRlckxlZnRHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVz
OiBib3JkZXJMZWZ0UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGhpZ2hs
aWdodENvbmZpZyA9IHtib3JkZXJDb2xvcjoge3I6IDI1NSwgZzogMjI5LCBiOiAxNTMsIGE6IDAu
NjZ9LCBzaG93SW5mbzogdHJ1ZX07CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3Rl
bmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBoaWdobGlnaHRDb25maWcpOworICAg
ICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3Jk
ZXJUb3BXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01v
dXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyQm90dG9tV2lkdGgsIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5w
cm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgdGhp
cy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyUmlnaHRX
aWR0aCwgaGlnaGxpZ2h0Q29uZmlnKTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21w
YXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLCBwcm9wZXJ0aWVzLmJv
cmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLCBwcm9wZXJ0aWVzLmJv
cmRlckxlZnRDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSaWdodENvbG9yXTsKKworICAgICAgICBs
ZXQgYm9yZGVyR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2Jv
cmRlclRhYkNvbnRyb2xsZXIsIGJvcmRlckFsbEdyb3VwLCBib3JkZXJUb3BHcm91cCwgYm9yZGVy
UmlnaHRHcm91cCwgYm9yZGVyQm90dG9tR3JvdXAsIGJvcmRlckxlZnRHcm91cF0pOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3JkZXJHcm91cF0pOworICAgIH0KKwor
ICAgIF9wb3B1bGF0ZU91dGxpbmVTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9
IHRoaXMuX2dyb3Vwcy5vdXRsaW5lOworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnBy
b3BlcnRpZXM7CisKKyAgICAgICAgbGV0IG91dGxpbmVTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aCA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgib3V0bGluZS13aWR0
aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVy
V2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5l
T2Zmc2V0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJvdXRs
aW5lLW9mZnNldCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT2Zmc2V0IiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgb3V0
bGluZVNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxpbmVXaWR0aC5l
bGVtZW50KTsKKyAgICAgICAgb3V0bGluZVNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm91dGxpbmVPZmZzZXQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IG91dGxpbmVTdHls
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5vdXRsaW5lU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29y
ZFBpY2tlcigib3V0bGluZS1zdHlsZSIgLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiks
IHRoaXMuX2tleXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5l
Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoIm91dGxpbmUt
Y29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworCisgICAgICAgIG91dGxp
bmVTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZVN0eWxlLmVs
ZW1lbnQpOworICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzLm91dGxpbmVDb2xvci5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29tcGxl
dGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLm91dGxpbmVDb2xvcl07CisKKyAg
ICAgICAgbGV0IG91dGxpbmVHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChbb3V0bGluZVNpemVSb3csIG91dGxpbmVTdHlsZVJvd10pOworICAgICAgICB0aGlzLl9w
b3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtvdXRsaW5lR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9w
dWxhdGVCb3hTaGFkb3dTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMu
X2dyb3Vwcy5ib3hTaGFkb3c7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVy
dGllczsKKworICAgICAgICBsZXQgYm94U2hhZG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IoImJveC1zaGFk
b3ciKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuZWxlbWVudC5zdHlsZS5tYXJnaW5M
ZWZ0ID0gIjExcHgiOworCisgICAgICAgIGJveFNoYWRvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm94U2hhZG93LmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dI
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQg
Ym94U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNs
aWRlcigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBudWxsLCB0
aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKworICAgICAgICBib3hTaGFk
b3dIUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93SC5lbGVtZW50KTsKKworICAgICAg
ICBsZXQgYm94U2hhZG93VlJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1YgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UmVsYXRpdmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRvcCIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKwor
ICAgICAgICBib3hTaGFkb3dWUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Vi5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgYm94U2hhZG93Qmx1clJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0JsdXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJveC1zaGFkb3ciLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJsdXIiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVy
Y2VudCk7CisgICAgICAgIGJveFNoYWRvd0JsdXIub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7Cisg
ICAgICAgIGxldCBib3hTaGFkb3dTcHJlYWQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
TnVtYmVySW5wdXRCb3goImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNwcmVh
ZCIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LCB0cnVlKTsKKyAgICAg
ICAgYm94U2hhZG93U3ByZWFkLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAgICAgIGJv
eFNoYWRvd0JsdXJSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dCbHVyLmVsZW1lbnQp
OworICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93
U3ByZWFkLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dDb2xvclJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0Nv
bG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3gtc2hhZG93
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAgICAgICAgYm94U2hhZG93Q29s
b3IuY29sb3JQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgIGxldCBib3hTaGFkb3dJbnNldCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3goImJveC1zaGFkb3ciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc2V0IiksICJJbnNldCIpOworICAgICAgICBib3hTaGFk
b3dJbnNldC5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dDb2xv
clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0NvbG9yLmVsZW1lbnQpOworICAgICAg
ICBib3hTaGFkb3dDb2xvclJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd0luc2V0LmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJveC1zaGFkb3ciLCBbYm94
U2hhZG93SCwgYm94U2hhZG93ViwgYm94U2hhZG93Qmx1ciwgYm94U2hhZG93U3ByZWFkLCBib3hT
aGFkb3dDb2xvciwgYm94U2hhZG93SW5zZXRdKTsKKworICAgICAgICBmdW5jdGlvbiBub1JlbWFp
bmluZ1RyZWVJdGVtcygpIHsKKyAgICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIu
dXBkYXRlVmFsdWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgYm94U2hhZG93SC5kaXNhYmxl
ZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dWLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJveFNoYWRvd0JsdXIuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hh
ZG93U3ByZWFkLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0NvbG9yLmRp
c2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd0luc2V0LmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5F
dmVudC5Ob1JlbWFpbmluZ1RyZWVJdGVtcywgbm9SZW1haW5pbmdUcmVlSXRlbXMsIHRoaXMpOwor
CisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCgpIHsK
KyAgICAgICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LnNlbGVjdGVkVHJlZUVsZW1lbnRWYWx1
ZSA9IGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAg
fQorICAgICAgICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2Us
IHNlbGVjdGVkQm94U2hhZG93SXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgZnVu
Y3Rpb24gYm94U2hhZG93SXRlbVNlbGVjdGVkKGV2ZW50KSB7CisgICAgICAgICAgICBib3hTaGFk
b3dQcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4dCB8
fCAiIik7CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwgYm94U2hhZG93SXRlbVNlbGVjdGVkLCB0aGlzKTsK
KworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtib3hT
aGFkb3dDb2xvcl07CisKKyAgICAgICAgbGV0IGJveFNoYWRvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbYm94U2hhZG93Um93LCBib3hTaGFkb3dIUm93LCBib3hTaGFk
b3dWUm93LCBib3hTaGFkb3dCbHVyUm93LCBib3hTaGFkb3dDb2xvclJvd10pOworICAgICAgICB0
aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtib3hTaGFkb3ddKTsKKyAgICB9CisKKyAgICBf
cG9wdWxhdGVUcmFuc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0
aGlzLl9ncm91cHMudHJhbnNpdGlvbjsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5w
cm9wZXJ0aWVzOworCisgICAgICAgIGxldCB0cmFuc2l0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yKCJ0
cmFuc2l0aW9uIik7CisgICAgICAgIHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50LnN0eWxl
Lm1hcmdpbkxlZnQgPSAiMTFweCI7CisKKyAgICAgICAgdHJhbnNpdGlvblJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMudHJhbnNpdGlvbi5lbGVtZW50KTsKKworICAgICAgICBsZXQg
dHJhbnNpdGlvblByb3BlcnR5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblByb3BlcnR5ID0gbmV3IFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5TmFtZUlucHV0KCJ0cmFuc2l0aW9uLXByb3BlcnR5IiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0eSIpKTsKKyAgICAgICAgbGV0IHRyYW5zaXRpb25UaW1p
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVGltaW5nRWRpdG9yKCJ0cmFuc2l0aW9u
LXRpbWluZy1mdW5jdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltaW5nIiksIFsiTGlu
ZWFyIiwgIkVhc2UiLCAiRWFzZSBJbiIsICJFYXNlIE91dCIsICJFYXNlIEluIE91dCJdKTsKKwor
ICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0
aW9uUHJvcGVydHkuZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRyYW5zaXRpb25UaW1pbmcuZWxlbWVudCk7CisKKyAgICAgICAgbGV0
IHRyYW5zaXRpb25EdXJhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25UaW1lS2V5d29yZHMgPSBbInMiLCAibXMiXTsK
KyAgICAgICAgbGV0IHRyYW5zaXRpb25EdXJhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kdXJhdGlvbiIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRHVyYXRpb24iKSwgbnVsbCwgdHJhbnNpdGlvblRpbWVLZXl3b3Jkcyk7CisgICAg
ICAgIGxldCB0cmFuc2l0aW9uRGVsYXkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goInRyYW5zaXRpb24tZGVsYXkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRl
bGF5IiksIG51bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMpOworICAgICAgICB0cmFuc2l0aW9u
RGVsYXkub3B0aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgdHJhbnNpdGlvbkR1cmF0
aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvbkR1cmF0aW9uLmVsZW1lbnQpOwor
ICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0
aW9uRGVsYXkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJp
bmVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoInRyYW5z
aXRpb24iLCBbdHJhbnNpdGlvblByb3BlcnR5LCB0cmFuc2l0aW9uVGltaW5nLCB0cmFuc2l0aW9u
RHVyYXRpb24sIHRyYW5zaXRpb25EZWxheV0pOworCisgICAgICAgIGZ1bmN0aW9uIG5vUmVtYWlu
aW5nVHJlZUl0ZW1zKCkgeworICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIu
dXBkYXRlVmFsdWVzRnJvbVRleHQoIiIpOworICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5
LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25UaW1pbmcuZGlzYWJsZWQg
PSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLmRpc2FibGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHRyYW5zaXRpb25EZWxheS5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWlu
aW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1RyZWVJdGVtcywgdGhpcyk7CisKKyAgICAgICAgZnVu
Y3Rpb24gc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCgpIHsKKyAgICAgICAgICAg
IHByb3BlcnRpZXMudHJhbnNpdGlvbi5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSB0cmFuc2l0
aW9uUHJvcGVydHlDb21iaW5lci5zeW50aGVzaXplZFZhbHVlOworICAgICAgICB9CisgICAgICAg
IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHNlbGVjdGVk
dHJhbnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIHRy
YW5zaXRpb25JdGVtU2VsZWN0ZWQoZXZlbnQpIHsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9w
ZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0KGV2ZW50LmRhdGEudGV4dCB8fCAiIik7
CisgICAgICAgIH0KKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2
ZW50LlRyZWVJdGVtU2VsZWN0ZWQsIHRyYW5zaXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOworCisg
ICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3RyYW5zaXRp
b25Qcm9wZXJ0eV07CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Hcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdHJhbnNpdGlvblJvdywgdHJhbnNpdGlvblByb3Bl
cnR5Um93LCB0cmFuc2l0aW9uRHVyYXRpb25Sb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVT
ZWN0aW9uKGdyb3VwLCBbdHJhbnNpdGlvbkdyb3VwXSk7CisgICAgfQorfTsKKworV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLlN0eWxlRGlzYWJsZWRTeW1ib2wgPSBTeW1ib2wo
InZpc3VhbC1zdHlsZS1zdHlsZS1kaXNhYmxlZCIpOworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbCA9IFN5bWJv
bCgidmlzdWFsLXN0eWxlLWluaXRpYWwtcHJvcGVydHktc2VjdGlvbi10ZXh0Iik7CisKK1dlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm9wZXJ0eVJlZmVyZW5jZUluZm8gPSB7
fTsK
</data>
<flag name="review"
          id="284193"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259020</attachid>
            <date>2015-08-14 12:14:00 -0700</date>
            <delta_ts>2015-08-14 15:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147570.txt</filename>
            <type>text/plain</type>
            <size>75354</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLmNiODllYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTA4LTE0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
KworICAgICAgICBBZGRlZCBWaXN1YWxTdHlsZURldGFpbHNQYW5lbCBhbmQgaW5jbHVzaW9ucyB0
byBmb3J0aGNvbWluZyBjbGFzc2VzCisgICAgICAgIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoaXMg
dmlzdWFsIHNpZGViYXIgcGFuZWwuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6
CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciBhbGwgbmV3IGNsYXNzZXMgdXNlZCBpbiB0aGUgVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZS5zZXQgY29s
bGFwc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUu
Z2V0IGV4cGFuZGVkQnlVc2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bi5wcm90b3R5cGUuX2hlYWRlckVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgVHJhY2sgd2hldGhl
ciBvciBub3QgdGhlIGV4cGFuZGVkIHN0YXRlIHdhcyBjYXVzZWQgYnkgdGhlIHVzZXIuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzczog
QWRkZWQuCisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlcik6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2Vj
dGlvbi1jbGVhcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uOm5vdCgubW9kaWZp
ZWQpID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhcik6CisgICAgICAgICgu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2Vj
dGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4pOgorICAgICAgICAoLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24g
LmRldGFpbHMtc2VjdGlvbi5tb2RpZmllZCA+IC5oZWFkZXIgPiBzcGFuOjphZnRlcik6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQpOgorICAgICAgICAoLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24g
LmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cpOgorICAgICAgICAoLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rp
b24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3c6bGFzdC1jaGlsZCk6
CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4g
LmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJv
dy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICguc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyOm5vdCgubGF5b3V0LXJldmVyc2VkKTpsYXN0LWNoaWxkKToK
KyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlz
YWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rp
b24pKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1
YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9y
LXNlY3Rpb24pIGlucHV0KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24ucmVwbGFjZURh
c2hXaXRoQ2FwaXRhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24uY3JlYXRlT3B0aW9uc0VsZW1lbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
Z2VuZXJhdGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUuX3ByZXBhcmVGb3JDaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlU2VjdGlvbnMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
dXBkYXRlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlF
ZGl0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fc2VjdGlvbk1vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2NsZWFyTW9kaWZpZWRTZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuZ2V0IF9p
bml0aWFsVGV4dExpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZS5faW5pdGlhbFByb3BlcnR5VGV4dE1vZGlmaWVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRl
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLl9wb3B1bGF0ZURpc3BsYXlTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlTWV0cmljU2VjdGlv
blJvd3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVQb3NpdGlvblNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVGbG9hdFNlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzLm9uRWRpdG9yTW91c2VvdmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycy5vbkVkaXRvck1vdXNlb3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJpY3NNb3VzZUxpc3Rl
bmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9wb3B1bGF0ZURpbWVuc2lvbnNTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlTWFyZ2luU2VjdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLl9wb3B1bGF0ZVBhZGRpbmdTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRmxleGJveFNlY3Rpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
cG9wdWxhdGVUZXh0U3R5bGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRm9udFNlY3Rpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxh
dGVUZXh0U3BhY2luZ1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUZXh0U2hhZG93U2VjdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZUJhY2tncm91bmRTdHlsZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3JkZXJTZWN0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3Bv
cHVsYXRlT3V0bGluZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLm5vUmVtYWlu
aW5nVHJlZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbi5zZWxlY3RlZEJveFNoYWRv
d0l0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLmJveFNoYWRvd0l0
ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0
aW9uU2VjdGlvbi5ub1JlbWFpbmluZ1RyZWVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0
aW9uLnNlbGVjdGVkdHJhbnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0
aW9uU2VjdGlvbi50cmFuc2l0aW9uSXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNl
Y3Rpb24pOgorCiAyMDE1LTA4LTEzICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbid0IHJlc2l6ZSBzcGxpdCBjb25zb2xl
IHdoZW4gd2luZG93IGlzIHRvbyBuYXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
CmluZGV4IGM1ZGYzN2YuLjdhOTBhOTUgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5k
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAppbmRleCA5ZjM0YzY2Li4wYjBkYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xNjMsNiArMTYzLDIwIEBACiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVG9rZW5WaWV3LmNzcyI+CiAg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9UeXBlVHJlZUVsZW1lbnQuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5cGVUcmVlVmlldy5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVD
b2xvclBpY2tlci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
VmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuY3NzIj4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdv
cmRDaGVja2JveC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
VmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3Iu
Y3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3JMaW5rLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzcyI+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbi5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVT
ZWxlY3RvclRyZWVJdGVtLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlVGltaW5nRWRpdG9yLmNzcyI+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZVVuaXRTbGlk
ZXIuY3NzIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udHJvbGxlcnMv
Q29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yRHJhZ1RvQWRqdXN0TnVtYmVyQ29u
dHJvbGxlci5jc3MiPgpAQCAtNTQxLDYgKzU1NSwyNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9UeXBlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9U
eXBlVHJlZVZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlQ29sb3JQaWNrZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseUxpc3RF
ZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUZv
bnRGYW1pbHlUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvckxpbmsuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5TmFtZUlucHV0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclRyZWVJdGVtLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0
aWVzUm93LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVU
aW1pbmdFZGl0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZVVuaXRTbGlkZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVVSTElucHV0LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogCkBAIC01NzUsNiAr
NjEwLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvU3RvcmFnZU1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UeXBlVG9rZW5Bbm5v
dGF0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9WaXN1YWxT
dHlsZUNvbXBsZXRpb25zQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9NYWluLmpzIj48L3NjcmlwdD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRh
aWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDNkM2Y3NjYuLjJiMDM0YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTY4LDEyICs2OCwxMyBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwodGhp
cyk7CiAgICAgICAgIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVj
dG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwodGhpcyk7CisgICAgICAgIHRoaXMuX3Zpc3VhbFN0
eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5l
bCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hl
ZCwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHls
ZURldGFpbHNQYW5lbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQ
YW5lbC5FdmVudC5SZWZyZXNoZWQsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7CiAKLSAg
ICAgICAgdGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRo
aXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWxdOwotICAgICAgICB0aGlzLl9wYW5lbE5hdmlnYXRp
b25JbmZvID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm8s
IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkluZm9dOworICAgICAgICB0
aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVs
ZXNTdHlsZURldGFpbHNQYW5lbCwgdGhpcy5fdmlzdWFsU3R5bGVEZXRhaWxzUGFuZWxdOworICAg
ICAgICB0aGlzLl9wYW5lbE5hdmlnYXRpb25JbmZvID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwubmF2aWdhdGlvbkluZm8sIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2
aWdhdGlvbkluZm8sIHRoaXMuX3Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JbmZv
XTsKIAogICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygibGFzdC1zZWxlY3RlZC1zdHlsZS1kZXRhaWxzLXBhbmVsIiwgdGhp
cy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mby5pZGVudGlmaWVyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0
YWlsc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZXRhaWxzU2VjdGlvbi5qcwppbmRleCA4NGIzYTM5Li5kOGEyNGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxz
U2VjdGlvbi5qcwpAQCAtNjEsNiArNjEsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24g
PSBjbGFzcyBEZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAg
ICAgICB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKGlk
ZW50aWZpZXIgKyAiLWRldGFpbHMtc2VjdGlvbi1jb2xsYXBzZWQiLCAhIWRlZmF1bHRDb2xsYXBz
ZWRTZXR0aW5nVmFsdWUpOwogICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IHRoaXMuX2NvbGxhcHNl
ZFNldHRpbmcudmFsdWU7CisgICAgICAgIHRoaXMuX2V4cGFuZGVkQnlVc2VyID0gZmFsc2U7CiAg
ICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0xMTUsNiArMTE2LDExIEBAIFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fZ3JvdXBzW2ldLmVsZW1lbnQpOwogICAgIH0KIAorICAgIGdldCBleHBhbmRlZEJ5VXNlcigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWRCeVVzZXI7CisgICAgfQorCiAg
ICAgLy8gUHJpdmF0ZQogCiAgICAgX2hlYWRlckVsZW1lbnRDbGlja2VkKGV2ZW50KQpAQCAtMTIy
LDcgKzEyOCw5IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNT
ZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0LmlzU2VsZk9yRGVzY2VuZGFudCh0aGlzLl9vcHRpb25zRWxlbWVudCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7Cisg
ICAgICAgIHZhciBjb2xsYXBzZWQgPSB0aGlzLmNvbGxhcHNlZDsKKyAgICAgICAgdGhpcy5jb2xs
YXBzZWQgPSAhY29sbGFwc2VkOworICAgICAgICB0aGlzLl9leHBhbmRlZEJ5VXNlciA9IGNvbGxh
cHNlZDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFs
c2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDQxYWZjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0
YWlscy1zZWN0aW9uID4gLmhlYWRlciB7CisgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNl
Y3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5oZWFkZXIgPiAudmlzdWFsLXN0eWxlLXNlY3Rpb24t
Y2xlYXIgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogNXB4OworICAgIHdp
ZHRoOiAxNXB4OworICAgIGhlaWdodDogMTVweDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Vi
a2l0LWNhbnZhcyhuYXZpZ2F0aW9uLWl0ZW0tY2xlYXItbG9nLW5vcm1hbCk7CisgICAgYmFja2dy
b3VuZC1zaXplOiAxNXB4IDE1cHg7CisgICAgb3BhY2l0eTogMC43OworfQorCisuc2lkZWJhciA+
IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0
YWlscy1zZWN0aW9uLmNvbGxhcHNlZCA+IC5oZWFkZXIgPiAudmlzdWFsLXN0eWxlLXNlY3Rpb24t
Y2xlYXIsCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRl
dGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uOm5vdCgubW9kaWZpZWQpID4gLmhlYWRlciA+
IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwor
LnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNl
Y3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5oZWFkZXIgPiBzcGFuIHsKKyAgICBkaXNwbGF5OiBm
bGV4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4g
LmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uLm1vZGlmaWVkID4gLmhlYWRlciA+IHNw
YW46OmFmdGVyIHsKKyAgICB3aWR0aDogN3B4OworICAgIGhlaWdodDogN3B4OworICAgIG1hcmdp
bjogNHB4IDZweDsKKyAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogaHNsKDIxMiwgOTIlLCA1NCUpOworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBjb250ZW50OiAi
IjsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5k
ZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IHsKKyAgICBtYXJnaW4t
dG9wOiA1cHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1
YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAg
PiAucm93IHsKKyAgICBkaXNwbGF5OiBmbGV4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRh
aWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9u
ID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdzpsYXN0LWNoaWxkIHsKKyAgICBwYWRkaW5nLWJvdHRv
bTogM3B4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFs
ID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4g
LnJvdy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyB7CisgICAgYm9yZGVyLWJvdHRvbTogMC41
cHggc29saWQgaHNsKDAsIDAlLCA4MyUpOworICAgIG1hcmdpbi1ib3R0b206IDVweDsKKyAgICBw
YWRkaW5nLWJvdHRvbTogMnB4OworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1z
dHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRl
bnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgd2lkdGg6IDU1cHg7Cit9CisKKy5zaWRl
YmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9u
IC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXI6bm90KC5sYXlvdXQtcmV2ZXJzZWQpOmxhc3QtY2hpbGQgewor
ICAgIG1hcmdpbi1yaWdodDogMTFweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5j
c3Mtc3R5bGUgLnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwt
c3R5bGUtc2VsZWN0b3Itc2VjdGlvbikgeworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBwb2ludGVy
LWV2ZW50czogbm9uZTsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUg
LnZpc3VhbC5kaXNhYmxlZCA+IC5kZXRhaWxzLXNlY3Rpb246bm90KC52aXN1YWwtc3R5bGUtc2Vs
ZWN0b3Itc2VjdGlvbikgaW5wdXQgeworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5mODA2MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAg
LTAsMCArMSwxMDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsID0gY2xhc3MgVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKK3sKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKGRlbGVnYXRlLCAidmlzdWFsIiwgInZpc3VhbCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU3R5bGVzIFx1MjAxNCBWaXN1YWwiKSk7CisKKyAgICAgICAgV2ViSW5z
cGVjdG9yLnByb3BlcnR5UmVmZXJlbmNlSW5mb1RlbXAgPSB7fTsKKyAgICAgICAgdGhpcy5fY3Vy
cmVudFN0eWxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZm9yY2VOZXh0U3R5bGVVcGRhdGUgPSBm
YWxzZTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IHt9OworICAgICAgICB0aGlzLl9ncm91
cHMgPSB7fTsKKyAgICAgICAgdGhpcy5fa2V5d29yZHMgPSB7fTsKKyAgICAgICAgdGhpcy5fdW5p
dHMgPSB7fTsKKyAgICAgICAgdGhpcy5fYXV0b2NvbXBsZXRpb25Qcm9wZXJ0eUVkaXRvcnMgPSB7
fTsKKworICAgICAgICAvLyBUaGVzZSBrZXl3b3JkcywgYXMgd2VsbCBhcyB0aGUgdmFsdWVzIGJl
bG93LCBhcmUgbm90IGxvY2FsaXplZCBhcyB0aGV5IG11c3QgbWF0Y2ggdGhlIENTUyBzcGVjLgor
ICAgICAgICB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cyA9IFsiSW5oZXJpdCIsICJJbml0aWFsIl07
CisgICAgICAgIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsID0gdGhpcy5fa2V5d29yZHMuZGVmYXVs
dHMuY29uY2F0KFsiQXV0byJdKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUg
PSB7CisgICAgICAgICAgICBiYXNpYzogdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsi
Tm9uZSIsICJIaWRkZW4iLCAiU29saWQiXSksCisgICAgICAgICAgICBhZHZhbmNlZDogWyJEYXNo
ZWQiLCAiRG90dGVkIiwgIkRvdWJsZSIsICJHcm9vdmUiLCAiSGlkZGVuIiwgIkluc2V0IiwgIk5v
bmUiLCAiT3V0c2V0IiwgIlJpZGdlIl0KKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5fa2V5d29y
ZHMuYm9yZGVyV2lkdGggPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJNZWRpdW0i
LCAiVGhpY2siLCAiVGhpbiJdKTsKKworICAgICAgICB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQ
ZXJjZW50ID0geworICAgICAgICAgICAgYmFzaWM6IFsicHgiLCAiZW0iXSwKKyAgICAgICAgICAg
IGFkdmFuY2VkOiBbImNoIiwgImNtIiwgImV4IiwgImluIiwgIm1tIiwgInBjIiwgInB0IiwgInJl
bSIsICJ2aCIsICJ2dyIsICJ2bWF4IiwgInZtaW4iXQorICAgICAgICB9OworICAgICAgICB0aGlz
Ll91bml0cy5kZWZhdWx0cyA9IHsKKyAgICAgICAgICAgIGJhc2ljOiBbIiUiXS5jb25jYXQodGhp
cy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudC5iYXNpYyksCisgICAgICAgICAgICBhZHZhbmNl
ZDogdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudC5hZHZhbmNlZAorICAgICAgICB9Owor
CisgICAgICAgIC8vIFNlbGVjdG9yIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fc2VsZWN0b3JTZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVNlbGVjdG9yU2VjdGlvbih0aGlzKTsK
KyAgICAgICAgdGhpcy5fc2VsZWN0b3JTZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlU2VsZWN0b3JTZWN0aW9uLkV2ZW50LlNlbGVjdG9yQ2hhbmdlZCwgdGhp
cy5fdXBkYXRlU2VjdGlvbnMsIHRoaXMpOworICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24u
RXZlbnQuU3R5bGVUZXh0Q2hhbmdlZCwgdGhpcy5fcHJlcGFyZUZvckNoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0b3JTZWN0aW9uLmVs
ZW1lbnQpOworCisgICAgICAgIC8vIExheW91dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVy
YXRlU2VjdGlvbigiZGlzcGxheSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzcGxheSIpKTsK
KyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJwb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUG9zaXRpb24iKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxv
YXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IGFuZCBDbGVhciIpKTsKKyAgICAgICAg
dGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJkaW1lbnNpb25zIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEaW1lbnNpb25zIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oIm1hcmdpbiIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWFyZ2luIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0
ZVNlY3Rpb24oInBhZGRpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhZGRpbmciKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZmxleGJveCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRmxleGJveCIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5sYXlvdXQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJsYXlvdXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxheW91dCIpLCBbdGhpcy5fZ3JvdXBzLmRpc3BsYXkuc2VjdGlvbiwgdGhpcy5fZ3JvdXBz
LnBvc2l0aW9uLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mbG9hdC5zZWN0aW9uLCB0aGlzLl9ncm91
cHMuZGltZW5zaW9ucy5zZWN0aW9uLCB0aGlzLl9ncm91cHMubWFyZ2luLnNlY3Rpb24sIHRoaXMu
X2dyb3Vwcy5wYWRkaW5nLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5mbGV4Ym94LnNlY3Rpb25dKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5sYXlvdXQu
ZWxlbWVudCk7CisKKyAgICAgICAgLy8gVGV4dCBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dlbmVy
YXRlU2VjdGlvbigidGV4dC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSk7
CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiZm9udCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRm9udCIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXNwYWNp
bmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNwYWNpbmciKSk7CisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRv
dyIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy50ZXh0ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbigidGV4dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGV4dCIpLCBbdGhp
cy5fZ3JvdXBzLnRleHRTdHlsZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuZm9udC5zZWN0aW9uLCB0
aGlzLl9ncm91cHMudGV4dFNwYWNpbmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnRleHRTaGFkb3cu
c2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rp
b25zLnRleHQuZWxlbWVudCk7CisKKyAgICAgICAgLy8gQmFja2dyb3VuZCBTZWN0aW9uCisgICAg
ICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYmFja2dyb3VuZC1zdHlsZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3R5bGUiKSk7CisgICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigiYm9y
ZGVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3JkZXIiKSk7CisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigib3V0bGluZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3V0bGluZSIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJib3gtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaGFkb3ciKSk7CisKKyAgICAgICAgdGhpcy5fc2VjdGlvbnMuYmFja2dy
b3VuZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImJhY2tncm91bmQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJhY2tncm91bmQiKSwgW3RoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5k
U3R5bGUuc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmJvcmRlci5zZWN0aW9uLCB0aGlzLl9ncm91cHMu
b3V0bGluZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuYm94U2hhZG93LnNlY3Rpb25dKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kLmVs
ZW1lbnQpOworCisgICAgICAgIC8vIEFuaW1hdGlvbiBTZWN0aW9uCisgICAgICAgIHRoaXMuX2dl
bmVyYXRlU2VjdGlvbigidHJhbnNpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNp
dGlvbiIpKTsKKworICAgICAgICB0aGlzLl9zZWN0aW9ucy5hbmltYXRpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJhbmltYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkFuaW1hdGlvbiIpLCBbdGhpcy5fZ3JvdXBzLnRyYW5zaXRpb24uc2VjdGlvbl0pOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlY3Rpb25zLmFuaW1hdGlvbi5lbGVt
ZW50KTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHJlZnJlc2goc2lnbmlmaWNhbnRD
aGFuZ2UpCisgICAgeworICAgICAgICBpZiAoc2lnbmlmaWNhbnRDaGFuZ2UgfHwgdGhpcy5fZm9y
Y2VOZXh0U3R5bGVVcGRhdGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yU2VjdGlvbi51
cGRhdGUodGhpcy5fbm9kZVN0eWxlcyk7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWN0aW9u
cygpOworICAgICAgICAgICAgdGhpcy5fZm9yY2VOZXh0U3R5bGVVcGRhdGUgPSBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN1cGVyLnJlZnJlc2goKTsKKyAgICB9CisKKyAgICAvLyBQcml2
YXRlCisKKyAgICBfZ2VuZXJhdGVTZWN0aW9uKGlkLCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAg
ICAgIGlmICghaWQgfHwgIWRpc3BsYXlOYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGZ1bmN0aW9uIHJlcGxhY2VEYXNoV2l0aENhcGl0YWwobWF0Y2gpIHsKKyAgICAgICAgICAg
IHJldHVybiBtYXRjaC5yZXBsYWNlKCItIiwgIiIpLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIH0K
KworICAgICAgICBsZXQgY2FtZWxDYXNlSWQgPSBpZC5yZXBsYWNlKC8tXGJcdy9nLCByZXBsYWNl
RGFzaFdpdGhDYXBpdGFsKTsKKworICAgICAgICBmdW5jdGlvbiBjcmVhdGVPcHRpb25zRWxlbWVu
dCgpIHsKKyAgICAgICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtc2VjdGlvbi1jbGVhciIpOworICAgICAgICAgICAgY29udGFpbmVyLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBjbGVhciBtb2RpZmllZCBwcm9wZXJ0aWVzIik7Cisg
ICAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGVh
ck1vZGlmaWVkU2VjdGlvbi5iaW5kKHRoaXMsIGNhbWVsQ2FzZUlkKSk7CisgICAgICAgICAgICBy
ZXR1cm4gY29udGFpbmVyOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZ3JvdXBzW2NhbWVs
Q2FzZUlkXSA9IHsKKyAgICAgICAgICAgIHNlY3Rpb246IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oaWQsIGRpc3BsYXlOYW1lLCBbXSwgY3JlYXRlT3B0aW9uc0VsZW1lbnQuY2FsbCh0
aGlzKSksCisgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fQorICAgICAgICB9OworCisgICAgICAg
IGxldCBwb3B1bGF0ZUZ1bmN0aW9uID0gdGhpc1siX3BvcHVsYXRlIiArIGNhbWVsQ2FzZUlkLmNh
cGl0YWxpemUoKSArICJTZWN0aW9uIl07CisgICAgICAgIHBvcHVsYXRlRnVuY3Rpb24uY2FsbCh0
aGlzKTsKKyAgICB9CisKKyAgICBfcHJlcGFyZUZvckNoYW5nZShldmVudCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2ZvcmNlTmV4dFN0eWxlVXBkYXRlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBfdXBk
YXRlU2VjdGlvbnMoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9jdXJyZW50U3R5bGUgPSB0
aGlzLl9zZWxlY3RvclNlY3Rpb24uY3VycmVudFN0eWxlKCk7CisgICAgICAgIGlmICghdGhpcy5f
Y3VycmVudFN0eWxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBkaXNhYmxl
ZCA9IHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwuU3R5bGVEaXNhYmxlZFN5bWJvbF07CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZSgiZGlzYWJsZWQiLCBkaXNhYmxlZCk7CisgICAgICAgIGlmIChkaXNhYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fZ3JvdXBz
KQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlUHJvcGVydGllcyh0aGlzLl9ncm91cHNba2V5XSwg
ISFldmVudCk7CisKKyAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3NlY3Rpb25zKSB7Cisg
ICAgICAgICAgICBsZXQgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2tleV07CisgICAgICAgICAg
ICBsZXQgb25lU2VjdGlvbkV4cGFuZGVkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGxldCBn
cm91cCBvZiBzZWN0aW9uLmdyb3VwcykgeworICAgICAgICAgICAgICAgIGlmICghZ3JvdXAuY29s
bGFwc2VkKSB7CisgICAgICAgICAgICAgICAgICAgIG9uZVNlY3Rpb25FeHBhbmRlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc2VjdGlvbi5jb2xsYXBzZWQgPSAhb25lU2VjdGlvbkV4cGFu
ZGVkOworICAgICAgICB9CisgICAgfQorCisgICAgX3VwZGF0ZVByb3BlcnRpZXMoZ3JvdXAsIGZv
cmNlU3R5bGVVcGRhdGUpCisgICAgeworICAgICAgICBpZiAoIWdyb3VwLnNlY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGluaXRpYWxUZXh0TGlzdCA9IHRoaXMuX2lu
aXRpYWxUZXh0TGlzdDsKKyAgICAgICAgaWYgKCFpbml0aWFsVGV4dExpc3QpCisgICAgICAgICAg
ICB0aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVs
LkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbF0gPSBpbml0aWFsVGV4dExpc3Qg
PSBuZXcgV2Vha01hcDsKKworICAgICAgICBsZXQgaW5pdGlhbFByb3BlcnR5VGV4dCA9IHt9Owor
ICAgICAgICBsZXQgaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcgPSAhaW5pdGlhbFRleHRMaXN0
Lmhhcyhncm91cCk7CisgICAgICAgIGxldCBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gZmFsc2U7Cisg
ICAgICAgIGZvciAobGV0IGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBs
ZXQgcHJvcGVydHlFZGl0b3IgPSBncm91cC5wcm9wZXJ0aWVzW2tleV07CisgICAgICAgICAgICBw
cm9wZXJ0eUVkaXRvci51cGRhdGUoIXByb3BlcnR5RWRpdG9yLnN0eWxlIHx8IGZvcmNlU3R5bGVV
cGRhdGUgPyB0aGlzLl9jdXJyZW50U3R5bGUgOiBudWxsKTsKKworICAgICAgICAgICAgbGV0IHZh
bHVlID0gcHJvcGVydHlFZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZSAmJiAhcHJvcGVydHlFZGl0b3IucHJvcGVydHlNaXNzaW5nKSB7CisgICAgICAgICAgICAg
ICAgb25lUHJvcGVydHlIYXNWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGluaXRp
YWxQcm9wZXJ0eVRleHRNaXNzaW5nKQorICAgICAgICAgICAgICAgICAgICBpbml0aWFsUHJvcGVy
dHlUZXh0W2tleV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGlmIChpbml0aWFsUHJvcGVydHlUZXh0TWlzc2luZykKKyAgICAgICAgICAgIGluaXRpYWxUZXh0
TGlzdC5zZXQoZ3JvdXAsIGluaXRpYWxQcm9wZXJ0eVRleHQpOworCisgICAgICAgIGdyb3VwLnNl
Y3Rpb24uY29sbGFwc2VkID0gIW9uZVByb3BlcnR5SGFzVmFsdWUgJiYgIWdyb3VwLnNlY3Rpb24u
ZXhwYW5kZWRCeVVzZXI7CisgICAgICAgIHRoaXMuX3NlY3Rpb25Nb2RpZmllZChncm91cCk7CisK
KyAgICAgICAgbGV0IGF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXM7CisgICAgICAgIGlmICghYXV0b2NvbXBsZXRl
Q29tcGF0aWJsZVByb3BlcnRpZXMgfHwgIWF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVz
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBlZGl0b3Ig
b2YgYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMpCisgICAgICAgICAgICB0aGlzLl91
cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlFZGl0b3IoZWRpdG9yLCBmb3JjZVN0
eWxlVXBkYXRlKTsKKyAgICB9CisKKyAgICBfdXBkYXRlQXV0b2NvbXBsZXRlQ29tcGF0aWJsZVBy
b3BlcnR5RWRpdG9yKGVkaXRvciwgZm9yY2UpCisgICAgeworICAgICAgICBpZiAoIWVkaXRvciB8
fCAoZWRpdG9yLmhhc0NvbXBsZXRpb25zICYmICFmb3JjZSkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZWRpdG9yLmNvbXBsZXRpb25zID0gV2ViSW5zcGVjdG9yLkNTU0tleXdvcmRD
b21wbGV0aW9ucy5mb3JQcm9wZXJ0eShlZGl0b3IucHJvcGVydHlSZWZlcmVuY2VOYW1lKTsKKyAg
ICB9CisKKyAgICBfc2VjdGlvbk1vZGlmaWVkKGdyb3VwKQorICAgIHsKKyAgICAgICAgZ3JvdXAu
c2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm1vZGlmaWVkIiwgdGhpcy5faW5pdGlh
bFByb3BlcnR5VGV4dE1vZGlmaWVkKGdyb3VwKSk7CisgICAgfQorCisgICAgX2NsZWFyTW9kaWZp
ZWRTZWN0aW9uKGdyb3VwSWQpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91
cHNbZ3JvdXBJZF07CisgICAgICAgIGdyb3VwLnNlY3Rpb24uZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKCJtb2RpZmllZCIpOworICAgICAgICBsZXQgaW5pdGlhbFByb3BlcnR5VGV4dExpc3QgPSB0
aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLklu
aXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbF0uZ2V0KGdyb3VwKTsKKyAgICAgICAg
aWYgKCFpbml0aWFsUHJvcGVydHlUZXh0TGlzdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsZXQgbmV3U3R5bGVUZXh0ID0gdGhpcy5fY3VycmVudFN0eWxlLnRleHQ7CisgICAgICAg
IGZvciAobGV0IGtleSBpbiBncm91cC5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBsZXQgcHJv
cGVydHlFZGl0b3IgPSBncm91cC5wcm9wZXJ0aWVzW2tleV07CisgICAgICAgICAgICBsZXQgaW5p
dGlhbFZhbHVlID0gaW5pdGlhbFByb3BlcnR5VGV4dExpc3Rba2V5XSB8fCBudWxsOworICAgICAg
ICAgICAgbmV3U3R5bGVUZXh0ID0gcHJvcGVydHlFZGl0b3IubW9kaWZ5UHJvcGVydHlUZXh0KG5l
d1N0eWxlVGV4dCwgaW5pdGlhbFZhbHVlKTsKKyAgICAgICAgICAgIHByb3BlcnR5RWRpdG9yLnJl
c2V0RWRpdG9yVmFsdWVzKGluaXRpYWxWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlz
Ll9jdXJyZW50U3R5bGUudGV4dCA9IG5ld1N0eWxlVGV4dDsKKyAgICB9CisKKyAgICBnZXQgX2lu
aXRpYWxUZXh0TGlzdCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0eWxl
W1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFsUHJvcGVydHlTZWN0
aW9uVGV4dExpc3RTeW1ib2xdOworICAgIH0KKworICAgIF9pbml0aWFsUHJvcGVydHlUZXh0TW9k
aWZpZWQoZ3JvdXApCisgICAgeworICAgICAgICBpZiAoIWdyb3VwLnByb3BlcnRpZXMpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbGV0IGluaXRpYWxQcm9wZXJ0eVRleHRM
aXN0ID0gdGhpcy5faW5pdGlhbFRleHRMaXN0LmdldChncm91cCk7CisgICAgICAgIGlmICghaW5p
dGlhbFByb3BlcnR5VGV4dExpc3QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3NpbmcpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9IHByb3BlcnR5RWRpdG9yLnN5bnRoZXNpemVkVmFs
dWU7CisgICAgICAgICAgICBpZiAodmFsdWUgJiYgaW5pdGlhbFByb3BlcnR5VGV4dExpc3Rba2V5
XSAhPT0gdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgX3BvcHVsYXRlU2VjdGlvbihncm91
cCwgZ3JvdXBzKQorICAgIHsKKyAgICAgICAgaWYgKCFncm91cCB8fCAhZ3JvdXBzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGdyb3VwLnNlY3Rpb24uZ3JvdXBzID0gZ3JvdXBzOwor
ICAgICAgICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykKKyAgICAgICAgICAgIGdy
b3VwLnByb3BlcnRpZXNba2V5XS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCB0aGlzLl9zZWN0aW9uTW9k
aWZpZWQuYmluZCh0aGlzLCBncm91cCkpOworICAgIH0KKworICAgIF9wb3B1bGF0ZURpc3BsYXlT
ZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5kaXNwbGF5
OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAg
bGV0IGRpc3BsYXlSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMuZGlzcGxheSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVL
ZXl3b3JkUGlja2VyKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHsK
KyAgICAgICAgICAgIGJhc2ljOiBbIk5vbmUiLCAiQmxvY2siLCAiRmxleCIsICJJbmxpbmUiLCAi
SW5saW5lIEJsb2NrIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyJDb21wYWN0IiwgIklubGlu
ZSBGbGV4IiwgIklubGluZSBUYWJsZSIsICJMaXN0IEl0ZW0iLCAiVGFibGUiLCAiVGFibGUgQ2Fw
dGlvbiIsICJUYWJsZSBDZWxsIiwgIlRhYmxlIENvbHVtbiIsICJUYWJsZSBDb2x1bW4gR3JvdXAi
LCAiVGFibGUgRm9vdGVyIEdyb3VwIiwgIlRhYmxlIEhlYWRlciBHcm91cCIsICJUYWJsZSBSb3ci
LCAiVGFibGUgUm93IEdyb3VwIiwgIiBXQVAgTWFycXVlZSIsICIgV2ViS2l0IEJveCIsICIgV2Vi
S2l0IEdyaWQiLCAiIFdlYktpdCBJbmxpbmUgQm94IiwgIiBXZWJLaXQgSW5saW5lIEdyaWQiXQor
ICAgICAgICB9KTsKKyAgICAgICAgcHJvcGVydGllcy52aXNpYmlsaXR5ID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInZpc2liaWxpdHkiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlZpc2liaWxpdHkiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiSGlkZGVuIiwg
IlZpc2libGUiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbGxhcHNlIl0KKyAgICAgICAg
fSk7CisKKyAgICAgICAgZGlzcGxheVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
ZGlzcGxheS5lbGVtZW50KTsKKyAgICAgICAgZGlzcGxheVJvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMudmlzaWJpbGl0eS5lbGVtZW50KTsKKworICAgICAgICBsZXQgc2l6aW5nUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLmJveFNpemluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2Vy
KCJib3gtc2l6aW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXppbmciKSwgdGhpcy5fa2V5
d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiQm9yZGVyIEJveCIsICJDb250ZW50IEJveCJdKSk7Cisg
ICAgICAgIHByb3BlcnRpZXMuY3Vyc29yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtl
eXdvcmRQaWNrZXIoImN1cnNvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ3Vyc29yIiksIHsK
KyAgICAgICAgICAgIGJhc2ljOiBbIkF1dG8iLCAiRGVmYXVsdCIsICJOb25lIiwgIlBvaW50ZXIi
LCAiQ3Jvc3NoYWlyIiwgIlRleHQiXSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIkNvbnRleHQg
TWVudSIsICJIZWxwIiwgIlByb2dyZXNzIiwgIldhaXQiLCAiQ2VsbCIsICJWZXJ0aWNhbCBUZXh0
IiwgIkFsaWFzIiwgIkNvcHkiLCAiTW92ZSIsICJObyBEcm9wIiwgIk5vdCBBbGxvd2VkIiwgIkFs
bCBTY3JvbGwiLCAiQ29sIFJlc2l6ZSIsICJSb3cgUmVzaXplIiwgIk4gUmVzaXplIiwgIkUgUmVz
aXplIiwgIlMgUmVzaXplIiwgIlcgUmVzaXplIiwgIk5TIFJlc2l6ZSIsICJFVyBSZXNpemUiLCAi
TkUgUmVzaXplIiwgIk5XIFJlc2l6ZSIsICJTRSBSZXNpemUiLCAic1cgUmVzaXplIiwgIk5FU1cg
UmVzaXplIiwgIk5XU0UgUmVzaXplIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgc2l6aW5nUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3hTaXppbmcuZWxlbWVudCk7CisgICAg
ICAgIHNpemluZ1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuY3Vyc29yLmVsZW1l
bnQpOworCisgICAgICAgIGxldCBvdmVyZmxvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5vcGFjaXR5ID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVVuaXRTbGlkZXIoIm9wYWNpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk9wYWNpdHkiKSk7CisgICAgICAgIHByb3BlcnRpZXMub3ZlcmZsb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcihbIm92ZXJmbG93LXgiLCAib3ZlcmZsb3ct
eSJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk92ZXJmbG93IiksIHsKKyAgICAgICAgICAgIGJh
c2ljOiBbIkluaXRpYWwiLCAiQXV0byIsICJIaWRkZW4iLCAiU2Nyb2xsIiwgIlZpc2libGUiXSwK
KyAgICAgICAgICAgIGFkdmFuY2VkOiBbIk1hcnF1ZWUiLCAiT3ZlcmxheSIsICIgV2ViS2l0IFBh
Z2VkIFgiLCAiIFdlYktpdCBQYWdlZCBZIl0KKyAgICAgICAgfSk7CisKKyAgICAgICAgb3ZlcmZs
b3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLm9wYWNpdHkuZWxlbWVudCk7Cisg
ICAgICAgIG92ZXJmbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdmVyZmxv
dy5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGlzcGxheUdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtkaXNwbGF5Um93LCBzaXppbmdSb3csIG92ZXJmbG93Um93
XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Rpc3BsYXlHcm91cF0p
OworICAgIH0KKworICAgIF9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBwcmVmaXgs
IGFsbG93TmVnYXRpdmVzKQorICAgIHsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5w
cm9wZXJ0aWVzOworCisgICAgICAgIGxldCBoYXNQcmVmaXggPSBwcmVmaXggJiYgcHJlZml4Lmxl
bmd0aDsKKyAgICAgICAgbGV0IHByb3BlcnR5TmFtZVByZWZpeCA9IGhhc1ByZWZpeCA/IHByZWZp
eCArICItIiA6ICIiOworCisgICAgICAgIGxldCB0b3AgPSBoYXNQcmVmaXggPyBwcmVmaXggKyAi
VG9wIiA6ICJ0b3AiOworICAgICAgICBsZXQgYm90dG9tID0gaGFzUHJlZml4ID8gcHJlZml4ICsg
IkJvdHRvbSIgOiAiYm90dG9tIjsKKyAgICAgICAgbGV0IGxlZnQgPSBoYXNQcmVmaXggPyBwcmVm
aXggKyAiTGVmdCIgOiAibGVmdCI7CisgICAgICAgIGxldCByaWdodCA9IGhhc1ByZWZpeCA/IHBy
ZWZpeCArICJSaWdodCIgOiAicmlnaHQiOworCisgICAgICAgIGxldCB2ZXJ0aWNhbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllc1t0b3Bd
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFt
ZVByZWZpeCArICJ0b3AiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvcCIpLCB0aGlzLl9rZXl3
b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzKTsKKyAg
ICAgICAgcHJvcGVydGllc1tib3R0b21dID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJib3R0b20iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkJvdHRvbSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMsIGFsbG93TmVnYXRpdmVzLCB0cnVlKTsKKyAgICAgICAgbGV0IHZlcnRpY2FsTGlu
ayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3Bl
cnRpZXNbdG9wXSwgcHJvcGVydGllc1tib3R0b21dXSwgImxpbmstdmVydGljYWwiKTsKKworICAg
ICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXNbdG9wXS5lbGVtZW50
KTsKKyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBlbmRDaGlsZCh2ZXJ0aWNhbExpbmsuZWxl
bWVudCk7CisgICAgICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1ti
b3R0b21dLmVsZW1lbnQpOworCisgICAgICAgIGxldCBob3Jpem9udGFsID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzW2xlZnRdID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZp
eCArICJsZWZ0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0IiksIHRoaXMuX2tleXdvcmRz
LmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMpOworICAgICAg
ICBwcm9wZXJ0aWVzW3JpZ2h0XSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveChwcm9wZXJ0eU5hbWVQcmVmaXggKyAicmlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0
cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAgICAgICBsZXQgaG9yaXpvbnRhbExpbmsgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rKFtwcm9wZXJ0aWVz
W2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0XV0sICJsaW5rLWhvcml6b250YWwiKTsKKworICAgICAg
ICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1tsZWZ0XS5lbGVtZW50
KTsKKyAgICAgICAgaG9yaXpvbnRhbC5lbGVtZW50LmFwcGVuZENoaWxkKGhvcml6b250YWxMaW5r
LmVsZW1lbnQpOworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllc1tyaWdodF0uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGFsbExpbmtSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICBsZXQgYWxsTGluayA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsoW3Byb3BlcnRpZXNbdG9w
XSwgcHJvcGVydGllc1tib3R0b21dLCBwcm9wZXJ0aWVzW2xlZnRdLCBwcm9wZXJ0aWVzW3JpZ2h0
XV0sICJsaW5rLWFsbCIsIFt2ZXJ0aWNhbExpbmssIGhvcml6b250YWxMaW5rXSk7CisgICAgICAg
IGFsbExpbmtSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChhbGxMaW5rLmVsZW1lbnQpOworCisgICAg
ICAgIHJldHVybiBbdmVydGljYWwsIGFsbExpbmtSb3csIGhvcml6b250YWxdOworICAgIH0KKwor
ICAgIF9wb3B1bGF0ZVBvc2l0aW9uU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAg
PSB0aGlzLl9ncm91cHMucG9zaXRpb247CisgICAgICAgIGxldCByb3dzID0gdGhpcy5fZ2VuZXJh
dGVNZXRyaWNTZWN0aW9uUm93cyhncm91cCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgcG9zaXRpb25UeXBlID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVz
LnBvc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoInBv
c2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHsKKyAgICAgICAgICAgIGJh
c2ljOiBbIlN0YXRpYyIsICJSZWxhdGl2ZSIsICJBYnNvbHV0ZSIsICJGaXhlZCJdLAorICAgICAg
ICAgICAgYWR2YW5jZWQ6IFsiIFdlYktpdCBTdGlja3kiXQorICAgICAgICB9KTsKKyAgICAgICAg
cHJvcGVydGllcy56SW5kZXggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3goInotaW5kZXgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlotSW5kZXgiKSwgdGhpcy5f
a2V5d29yZHMuYm94TW9kZWwsIG51bGwsIHRydWUpOworCisgICAgICAgIHBvc2l0aW9uVHlwZS5l
bGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMucG9zaXRpb24uZWxlbWVudCk7CisgICAgICAg
IHBvc2l0aW9uVHlwZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuekluZGV4LmVsZW1l
bnQpOworICAgICAgICBwb3NpdGlvblR5cGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwt
c3R5bGUtc2VwYXJhdGVkLXJvdyIpOworCisgICAgICAgIHJvd3MudW5zaGlmdChwb3NpdGlvblR5
cGUpCisKKyAgICAgICAgbGV0IHBvc2l0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAocm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91
cCwgW3Bvc2l0aW9uR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVGbG9hdFNlY3Rpb24o
KQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZsb2F0OworICAgICAg
ICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZsb2F0
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9w
ZXJ0aWVzLmZsb2F0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlz
dCgiZmxvYXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb2F0IiksIFsiTGVmdCIsICJSaWdo
dCIsICJOb25lIl0pOworICAgICAgICBmbG9hdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuZmxvYXQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGNsZWFyUm93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmNsZWFyID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdCgiY2xlYXIiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIiksIFsiTGVmdCIsICJSaWdodCIsICJCb3RoIiwgIk5v
bmUiXSk7CisgICAgICAgIGNsZWFyUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5j
bGVhci5lbGVtZW50KTsKKworICAgICAgICBsZXQgZmxvYXRHcm91cCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZmxvYXRSb3csIGNsZWFyUm93XSk7CisgICAgICAgIHRo
aXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2Zsb2F0R3JvdXBdKTsKKyAgICB9CisKKyAgICBf
YWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGVkaXRvciwgbW9kZSkKKyAgICB7CisgICAgICAgIGZ1
bmN0aW9uIG9uRWRpdG9yTW91c2VvdmVyKCkgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9zdHls
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fc3R5
bGUub3duZXJSdWxlKSB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLmhpZ2hsaWdodERPTU5vZGUodGhpcy5fc3R5bGUubm9kZS5pZCwgbW9kZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0U2VsZWN0b3IodGhpcy5fc3R5bGUub3duZXJSdWxl
LnNlbGVjdG9yVGV4dCwgdGhpcy5fc3R5bGUubm9kZS5vd25lckRvY3VtZW50LmZyYW1lSWRlbnRp
ZmllciwgbW9kZSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkVkaXRvck1vdXNl
b3V0KCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7CisgICAgICAgIH0KKworICAgICAgICBlZGl0b3IuZWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCBvbkVkaXRvck1vdXNlb3Zlci5iaW5kKGVkaXRvcikp
OworICAgICAgICBlZGl0b3IuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIG9u
RWRpdG9yTW91c2VvdXQuYmluZChlZGl0b3IpKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVEaW1l
bnNpb25zU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMu
ZGltZW5zaW9uczsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOwor
CisgICAgICAgIGxldCBkaW1lbnNpb25zV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMud2lkdGggPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIndpZHRoIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVm
YXVsdHMpOworCisgICAgICAgIGRpbWVuc2lvbnNXaWR0aC5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMud2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNIZWlnaHQg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMuaGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xp
ZGVyKCJoZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCB0aGlzLl9rZXl3
b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIGRp
bWVuc2lvbnNIZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmhlaWdodC5lbGVt
ZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc1Byb3BlcnRpZXMgPSBbcHJvcGVydGllcy53
aWR0aCwgcHJvcGVydGllcy5oZWlnaHRdOworICAgICAgICBsZXQgZGltZW5zaW9uc1JlZ3VsYXJH
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc1dp
ZHRoLCBkaW1lbnNpb25zSGVpZ2h0XSk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNaW5XaWR0
aCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5taW5XaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJl
clNsaWRlcigibWluLXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlz
Ll9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGRp
bWVuc2lvbnNNaW5XaWR0aC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMubWluV2lkdGgu
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNaW5IZWlnaHQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWluSGVpZ2h0
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtaW4t
aGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSwgdGhpcy5fa2V5d29yZHMu
Ym94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWlu
SGVpZ2h0LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5taW5IZWlnaHQuZWxlbWVudCk7
CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNaW5Qcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMubWlu
V2lkdGgsIHByb3BlcnRpZXMubWluSGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNaW5H
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc01p
bldpZHRoLCBkaW1lbnNpb25zTWluSGVpZ2h0XSk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNN
YXhLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdCgiTm9uZSIpOworICAg
ICAgICBsZXQgZGltZW5zaW9uc01heFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1heFdpZHRoID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtYXgtd2lkdGgiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIldpZHRoIiksIGRpbWVuc2lvbnNNYXhLZXl3b3JkcywgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMpOworCisgICAgICAgIGRpbWVuc2lvbnNNYXhXaWR0aC5lbGVtZW50LmFwcGVuZENo
aWxkKHByb3BlcnRpZXMubWF4V2lkdGguZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lv
bnNNYXhIZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAg
ICAgIHByb3BlcnRpZXMubWF4SGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJl
bGF0aXZlTnVtYmVyU2xpZGVyKCJtYXgtaGVpZ2h0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJI
ZWlnaHQiKSwgZGltZW5zaW9uc01heEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisK
KyAgICAgICAgZGltZW5zaW9uc01heEhlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMubWF4SGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4UHJvcGVy
dGllcyA9IFtwcm9wZXJ0aWVzLm1heFdpZHRoLCBwcm9wZXJ0aWVzLm1heEhlaWdodF07CisgICAg
ICAgIGxldCBkaW1lbnNpb25zTWF4R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAoW2RpbWVuc2lvbnNNYXhXaWR0aCwgZGltZW5zaW9uc01heEhlaWdodF0pOworCisg
ICAgICAgIGxldCBkaW1lbnNpb25zVGFiQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93KHsKKyAgICAgICAgICAgICJkZWZhdWx0Ijoge3Rp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlZmF1bHQiKSwgZWxlbWVudDogZGltZW5zaW9u
c1JlZ3VsYXJHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zUHJvcGVydGllc30s
CisgICAgICAgICAgICAibWluIjoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1pbiIp
LCBlbGVtZW50OiBkaW1lbnNpb25zTWluR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5z
aW9uc01pblByb3BlcnRpZXN9LAorICAgICAgICAgICAgIm1heCI6IHt0aXRsZTogV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJNYXgiKSwgZWxlbWVudDogZGltZW5zaW9uc01heEdyb3VwLmVsZW1lbnQs
IHByb3BlcnRpZXM6IGRpbWVuc2lvbnNNYXhQcm9wZXJ0aWVzfQorICAgICAgICB9KTsKKworICAg
ICAgICBsZXQgaGlnaGxpZ2h0TW9kZSA9ICJjb250ZW50IjsKKyAgICAgICAgdGhpcy5fYWRkTWV0
cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMud2lkdGgsIGhpZ2hsaWdodE1vZGUp
OworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGll
cy5oZWlnaHQsIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5taW5XaWR0aCwgaGlnaGxpZ2h0TW9kZSk7CisgICAg
ICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1pbkhl
aWdodCwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3Rl
bmVycyhncm91cC5wcm9wZXJ0aWVzLm1heFdpZHRoLCBoaWdobGlnaHRNb2RlKTsKKyAgICAgICAg
dGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4SGVpZ2h0
LCBoaWdobGlnaHRNb2RlKTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc0dyb3VwID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtkaW1lbnNpb25zVGFiQ29udHJvbGxlciwg
ZGltZW5zaW9uc1JlZ3VsYXJHcm91cCwgZGltZW5zaW9uc01pbkdyb3VwLCBkaW1lbnNpb25zTWF4
R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZGltZW5zaW9u
c0dyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlTWFyZ2luU2VjdGlvbigpCisgICAgewor
ICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMubWFyZ2luOworICAgICAgICBsZXQgcm93
cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJtYXJnaW4iLCB0cnVl
KTsKKworICAgICAgICBsZXQgaGlnaGxpZ2h0TW9kZSA9ICJtYXJnaW4iOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5Ub3AsIGhp
Z2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3Jv
dXAucHJvcGVydGllcy5tYXJnaW5Cb3R0b20sIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlz
Ll9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5MZWZ0LCBo
aWdobGlnaHRNb2RlKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdy
b3VwLnByb3BlcnRpZXMubWFyZ2luUmlnaHQsIGhpZ2hsaWdodE1vZGUpOworCisgICAgICAgIGxl
dCBtYXJnaW5Hcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChyb3dz
KTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbbWFyZ2luR3JvdXBdKTsK
KyAgICB9CisKKyAgICBfcG9wdWxhdGVQYWRkaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICBs
ZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMucGFkZGluZzsKKyAgICAgICAgbGV0IHJvd3MgPSB0aGlz
Ll9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCAicGFkZGluZyIpOworCisgICAgICAg
IGxldCBoaWdobGlnaHRNb2RlID0gInBhZGRpbmciOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNz
TW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5wYWRkaW5nVG9wLCBoaWdobGlnaHRNb2Rl
KTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRp
ZXMucGFkZGluZ0JvdHRvbSwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRpbmdMZWZ0LCBoaWdobGlnaHRN
b2RlKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3Bl
cnRpZXMucGFkZGluZ1JpZ2h0LCBoaWdobGlnaHRNb2RlKTsKKworICAgICAgICBsZXQgcGFkZGlu
Z0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAg
ICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtwYWRkaW5nR3JvdXBdKTsKKyAgICB9
CisKKyAgICBfcG9wdWxhdGVGbGV4Ym94U2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3Jv
dXAgPSB0aGlzLl9ncm91cHMuZmxleGJveDsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91
cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBmbGV4T3JkZXJSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMub3JkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIm9yZGVyIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJPcmRlciIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cyk7CisgICAgICAg
IHByb3BlcnRpZXMuZmxleEJhc2lzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KCJmbGV4LWJhc2lzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCYXNpcyIpLCB0
aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisg
ICAgICAgIGZsZXhPcmRlclJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3JkZXIu
ZWxlbWVudCk7CisgICAgICAgIGZsZXhPcmRlclJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuZmxleEJhc2lzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBmbGV4U2l6ZVJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5m
bGV4R3JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZmxl
eC1ncm93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJHcm93IiksIHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLCBudWxsKTsKKyAgICAgICAgcHJvcGVydGllcy5mbGV4U2hyaW5rID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmbGV4LXNocmluayIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hyaW5rIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBudWxsKTsK
KworICAgICAgICBmbGV4U2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuZmxl
eEdyb3cuZWxlbWVudCk7CisgICAgICAgIGZsZXhTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy5mbGV4U2hyaW5rLmVsZW1lbnQpOworCisgICAgICAgIGxldCBmbGV4Rmxvd1Jv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5mbGV4RGlyZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQ
aWNrZXIoImZsZXgtZGlyZWN0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24i
KSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiUm93IiwgIlJvdyBSZXZlcnNlIiwg
IkNvbHVtbiIsICJDb2x1bW4gUmV2ZXJzZSJdKSk7CisgICAgICAgIHByb3BlcnRpZXMuZmxleFdy
YXAgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZmxleC13cmFw
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXcmFwIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRz
LmNvbmNhdChbIldyYXAiLCAiV3JhcCBSZXZlcnNlIiwgIk5vd3JhcCJdKSk7CisKKyAgICAgICAg
ZmxleEZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24u
ZWxlbWVudCk7CisgICAgICAgIGZsZXhGbG93Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5mbGV4V3JhcC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZmxleGJveEdyb3VwID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmbGV4T3JkZXJSb3csIGZsZXhTaXpl
Um93LCBmbGV4Rmxvd1Jvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAs
IFtmbGV4Ym94R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVUZXh0U3R5bGVTZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U3R5bGU7Cisg
ICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQg
dGV4dEFwcGVhcmFuY2VSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMuY29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Q29sb3JQaWNrZXIoImNvbG9yIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAg
ICAgICAgcHJvcGVydGllcy50ZXh0RGlyZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZUtleXdvcmRQaWNrZXIoImRpcmVjdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGly
ZWN0aW9uIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkxUUiIsICJSVEwiXSkp
OworCisgICAgICAgIHRleHRBcHBlYXJhbmNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVy
dGllcy5jb2xvci5lbGVtZW50KTsKKyAgICAgICAgdGV4dEFwcGVhcmFuY2VSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLnRleHREaXJlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IHRleHRBbGlnblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisK
KyAgICAgICAgcHJvcGVydGllcy50ZXh0QWxpZ24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlS2V5d29yZEljb25MaXN0KCJ0ZXh0LWFsaWduIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJB
bGlnbiIpLCBbIkxlZnQiLCAiQ2VudGVyIiwgIlJpZ2h0IiwgIkp1c3RpZnkiXSk7CisKKyAgICAg
ICAgdGV4dEFsaWduUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0QWxpZ24u
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHRUcmFuc2Zvcm1Sb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMudGV4dFRyYW5zZm9y
bSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtdHJh
bnNmb3JtIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2Zvcm0iKSwgWyJDYXBpdGFsaXpl
IiwgIlVwcGVyY2FzZSIsICJMb3dlcmNhc2UiLCAiTm9uZSJdKTsKKworICAgICAgICB0ZXh0VHJh
bnNmb3JtUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0VHJhbnNmb3JtLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCB0ZXh0RGVjb3JhdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0RGVjb3JhdGlv
biA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtZGVj
b3JhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVjb3JhdGlvbiIpLCBbIlVuZGVybGlu
ZSIsICJMaW5lIFRocm91Z2giLCAiT3ZlcmxpbmUiLCAiTm9uZSJdKTsKKworICAgICAgICB0ZXh0
RGVjb3JhdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4dERlY29yYXRp
b24uZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3Bl
cnRpZXMgPSBbcHJvcGVydGllcy5jb2xvcl07CisKKyAgICAgICAgbGV0IHRleHRTdHlsZUdyb3Vw
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0ZXh0QXBwZWFyYW5jZVJv
dywgdGV4dEFsaWduUm93LCB0ZXh0VHJhbnNmb3JtUm93LCB0ZXh0RGVjb3JhdGlvblJvd10pOwor
ICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U3R5bGVHcm91cF0pOwor
ICAgIH0KKworICAgIF9wb3B1bGF0ZUZvbnRTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX2dyb3Vwcy5mb250OworICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3Vw
LnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZvbnRGYW1pbHlSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuZm9udEZhbWlseSA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVGb250RmFtaWx5TGlzdEVkaXRvcigiZm9udC1m
YW1pbHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZhbWlseSIpKTsKKworICAgICAgICBmb250
RmFtaWx5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250RmFtaWx5LmVsZW1l
bnQpOworCisgICAgICAgIGxldCBmb250U2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250U2l6ZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiZm9udC1zaXplIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTaXplIiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkxhcmdl
ciIsICJYWCBMYXJnZSIsICJYIExhcmdlIiwgIkxhcmdlIiwgIk1lZGl1bSIsICJTbWFsbCIsICJY
IFNtYWxsIiwgIlhYIFNtYWxsIiwgIlNtYWxsZXIiXSksIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KworICAgICAgICBwcm9wZXJ0aWVzLmZvbnRXZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcigiZm9udC13ZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IldlaWdodCIpLCB7CisgICAgICAgICAgICBiYXNpYzogdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMu
Y29uY2F0KFsiQm9sZGVyIiwgIkJvbGQiLCAiTm9ybWFsIiwgIkxpZ2h0ZXIiXSksCisgICAgICAg
ICAgICBhZHZhbmNlZDogWyIxMDAiLCAiMjAwIiwgIjMwMCIsICI0MDAiLCAiNTAwIiwgIjYwMCIs
ICI3MDAiLCAiODAwIiwgIjkwMCJdCisgICAgICAgIH0pOworCisgICAgICAgIGZvbnRTaXplUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U2l6ZS5lbGVtZW50KTsKKyAgICAg
ICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRXZWlnaHQu
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGZvbnRTdHlsZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5mb250U3R5bGUgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZEljb25MaXN0KCJmb250LXN0eWxlIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCBbIkl0YWxpYyIsICJOb3JtYWwiXSk7CisgICAg
ICAgIHByb3BlcnRpZXMuZm9udFZhcmlhbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
S2V5d29yZENoZWNrYm94KCJmb250LXZhcmlhbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZh
cmlhbnQiKSwgIlNtYWxsIENhcHMiKQorCisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHByb3BlcnRpZXMuZm9udFN0eWxlLmVsZW1lbnQpOworICAgICAgICBmb250U3R5
bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRWYXJpYW50LmVsZW1lbnQp
OworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3By
b3BlcnRpZXMuZm9udEZhbWlseV07CisKKyAgICAgICAgbGV0IGZvbnRHcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZm9udEZhbWlseVJvdywgZm9udFNpemVSb3cs
IGZvbnRTdHlsZVJvd10pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtm
b250R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVUZXh0U3BhY2luZ1NlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRleHRTcGFjaW5nOworICAg
ICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGRl
ZmF1bHRUZXh0S2V5d29yZHMgPSB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJOb3Jt
YWwiXSk7CisKKyAgICAgICAgbGV0IHRleHRMYXlvdXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubGluZUhlaWdodCA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgibGluZS1oZWlnaHQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBkZWZhdWx0VGV4dEtleXdvcmRzLCB0aGlzLl91
bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMudmVydGljYWxBbGlnbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidmVydGljYWwtYWxpZ24iLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsaWduIiksIFsiQmFzZWxpbmUiLCAiQm90dG9tIl0uY29u
Y2F0KHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCBbIk1pZGRsZSIsICJTdWIiLCAiU3VwZXIiLCAi
VGV4dCBCb3R0b20iLCAiVGV4dCBUb3AiLCAiVG9wIl0pLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7
CisKKyAgICAgICAgdGV4dExheW91dFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
bGluZUhlaWdodC5lbGVtZW50KTsKKyAgICAgICAgdGV4dExheW91dFJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMudmVydGljYWxBbGlnbi5lbGVtZW50KTsKKworICAgICAgICBsZXQg
dGV4dFNwYWNpbmdSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisg
ICAgICAgIHByb3BlcnRpZXMubGV0dGVyU3BhY2luZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgibGV0dGVyLXNwYWNpbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxldHRlciIpLCBkZWZhdWx0VGV4dEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7
CisgICAgICAgIHByb3BlcnRpZXMud29yZFNwYWNpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3goIndvcmQtc3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiV29yZCIpLCBkZWZhdWx0VGV4dEtleXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisK
KyAgICAgICAgdGV4dFNwYWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmxl
dHRlclNwYWNpbmcuZWxlbWVudCk7CisgICAgICAgIHRleHRTcGFjaW5nUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy53b3JkU3BhY2luZy5lbGVtZW50KTsKKworICAgICAgICBsZXQg
dGV4dFdoaXRlc3BhY2VSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMudGV4dEluZGVudCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgidGV4dC1pbmRlbnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkluZGVudCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMp
OworICAgICAgICBwcm9wZXJ0aWVzLndoaXRlU3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZFBpY2tlcigid2hpdGUtc3BhY2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IldoaXRlc3BhY2UiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiTm9ybWFsIiwg
Ik5vd3JhcCIsICJQcmUiLCAiUHJlIExpbmUiLCAiUHJlIFdyYXAiXSkpOworCisgICAgICAgIHRl
eHRXaGl0ZXNwYWNlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50ZXh0SW5kZW50
LmVsZW1lbnQpOworICAgICAgICB0ZXh0V2hpdGVzcGFjZVJvdy5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMud2hpdGVTcGFjZS5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dFNwYWNp
bmdHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGV4dExheW91
dFJvdywgdGV4dFNwYWNpbmdSb3csIHRleHRXaGl0ZXNwYWNlUm93XSk7CisgICAgICAgIHRoaXMu
X3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3RleHRTcGFjaW5nR3JvdXBdKTsKKyAgICB9CisKKyAg
ICBfcG9wdWxhdGVUZXh0U2hhZG93U2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAg
PSB0aGlzLl9ncm91cHMudGV4dFNoYWRvdzsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91
cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93U2l6aW5nID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgdGV4dFNoYWRvd0ggPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93Iiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIb3Jpem9udGFsIiksIG51bGwsIHRoaXMuX3VuaXRzLmRl
ZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBsZXQgdGV4dFNoYWRvd1YgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJWZXJ0aWNhbCIpLCBudWxsLCB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQ
ZXJjZW50KTsKKworICAgICAgICB0ZXh0U2hhZG93U2l6aW5nLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGV4dFNoYWRvd0guZWxlbWVudCk7CisgICAgICAgIHRleHRTaGFkb3dTaXppbmcuZWxlbWVudC5h
cHBlbmRDaGlsZCh0ZXh0U2hhZG93Vi5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dFNoYWRv
d1N0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBs
ZXQgdGV4dFNoYWRvd0NvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlj
a2VyKCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAg
ICAgIHRleHRTaGFkb3dDb2xvci5jb2xvclByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgbGV0IHRl
eHRTaGFkb3dCbHVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmx1ciIpLCBudWxsLCB0aGlz
Ll91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKyAgICAgICAgdGV4dFNoYWRvd0JsdXIub3B0
aW9uYWxQcm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgdGV4dFNoYWRvd1N0eWxlLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGV4dFNoYWRvd0NvbG9yLmVsZW1lbnQpOworICAgICAgICB0ZXh0U2hhZG93
U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Qmx1ci5lbGVtZW50KTsKKworICAg
ICAgICBwcm9wZXJ0aWVzLnRleHRTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlDb21iaW5lcigidGV4dC1zaGFkb3ciLCBbdGV4dFNoYWRvd0gsIHRleHRTaGFkb3dW
LCB0ZXh0U2hhZG93Qmx1ciwgdGV4dFNoYWRvd0NvbG9yXSk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbdGV4dFNoYWRvd0NvbG9yXTsKKworICAg
ICAgICBsZXQgdGV4dFNoYWRvd0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFt0ZXh0U2hhZG93U2l6aW5nLCB0ZXh0U2hhZG93U3R5bGVdKTsKKyAgICAgICAgdGhp
cy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFNoYWRvd0dyb3VwXSk7CisgICAgfQorCisg
ICAgX3BvcHVsYXRlQmFja2dyb3VuZFN0eWxlU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQg
Z3JvdXAgPSB0aGlzLl9ncm91cHMuYmFja2dyb3VuZFN0eWxlOworICAgICAgICBsZXQgcHJvcGVy
dGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRTdHlsZVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVy
dGllcy5iYWNrZ3JvdW5kQ29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQ
aWNrZXIoImJhY2tncm91bmQtY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikp
OworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRJbWFnZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVVUkxJbnB1dCgiYmFja2dyb3VuZC1pbWFnZSIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSW1hZ2UiKSk7CisKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5iYWNrZ3JvdW5kQ29sb3IuZWxlbWVudCk7CisgICAgICAgIGJh
Y2tncm91bmRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3Vu
ZEltYWdlLmVsZW1lbnQpOworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kU2l6ZVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRT
aXplS2V5d29yZHMgPSB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbC5jb25jYXQoWyJDb250YWluIiwg
IkNvdmVyIl0pOworICAgICAgICBsZXQgYmFja2dyb3VuZFNpemVYID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXNpemUiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIldpZHRoIiksIGJhY2tncm91bmRTaXplS2V5d29yZHMsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVYLm1hc3RlclByb3BlcnR5ID0gdHJ1
ZTsKKyAgICAgICAgbGV0IGJhY2tncm91bmRTaXplWSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgiYmFja2dyb3VuZC1zaXplIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJIZWlnaHQiKSwgYmFja2dyb3VuZFNpemVLZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVs
dHMpOworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVkubWFzdGVyUHJvcGVydHkgPSB0cnVlOworCisg
ICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlDb21iaW5lcigiYmFja2dyb3VuZC1zaXplIiwgW2JhY2tncm91bmRTaXpl
WCwgYmFja2dyb3VuZFNpemVZXSk7CisKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kU2l6ZVguZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91
bmRTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYmFja2dyb3VuZFNpemVZLmVsZW1lbnQpOwor
CisgICAgICAgIGxldCBiYWNrZ3JvdW5kUmVwZWF0Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRSZXBlYXQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYmFja2dyb3VuZC1yZXBl
YXQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGVhdCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZh
dWx0cy5jb25jYXQoWyJObyBSZXBlYXQiLCAiUmVwZWF0IiwgIlJlcGVhdCBYIiwgIlJlcGVhdCBZ
Il0pKTsKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kQXR0YWNobWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF0dGFjaCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0
cy5jb25jYXQoWyJGaXhlZCIsICJMb2NhbCIsICJTY3JvbGwiXSkpOworCisgICAgICAgIGJhY2tn
cm91bmRSZXBlYXRSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91bmRS
ZXBlYXQuZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRSZXBlYXRSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91bmRBdHRhY2htZW50LmVsZW1lbnQpOworCisgICAg
ICAgIGxldCBiYWNrZ3JvdW5kUG9zaXRpb25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kUG9zaXRpb25YID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiBYIiksIFsiQ2VudGVyIiwgIkxlZnQiLCAi
UmlnaHQiXSwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBsZXQgYmFja2dyb3VuZFBv
c2l0aW9uWSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYmFj
a2dyb3VuZC1wb3NpdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUG9zaXRpb24gWSIpLCBb
IkJvdHRvbSIsICJDZW50ZXIiLCAiVG9wIl0sIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAg
ICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRQb3NpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgW2JhY2tncm91
bmRQb3NpdGlvblgsIGJhY2tncm91bmRQb3NpdGlvblldKTsKKworICAgICAgICBiYWNrZ3JvdW5k
UG9zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3JvdW5kUG9zaXRpb25YLmVsZW1l
bnQpOworICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChi
YWNrZ3JvdW5kUG9zaXRpb25ZLmVsZW1lbnQpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0
ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yXTsKKwor
ICAgICAgICBsZXQgYmFja2dyb3VuZFN0eWxlR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW2JhY2tncm91bmRTdHlsZVJvdywgYmFja2dyb3VuZFNpemVSb3csIGJh
Y2tncm91bmRSZXBlYXRSb3csIGJhY2tncm91bmRQb3NpdGlvblJvd10pOworICAgICAgICB0aGlz
Ll9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFtiYWNrZ3JvdW5kU3R5bGVHcm91cF0pOworICAgIH0K
KworICAgIF9wb3B1bGF0ZUJvcmRlclNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3Vw
ID0gdGhpcy5fZ3JvdXBzLmJvcmRlcjsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5w
cm9wZXJ0aWVzOworCisgICAgICAgIGxldCBib3JkZXJBbGxTaXplID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclN0eWxlID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoWyJib3JkZXItdG9wLXN0
eWxlIiwgImJvcmRlci1yaWdodC1zdHlsZSIsICJib3JkZXItYm90dG9tLXN0eWxlIiwgImJvcmRl
ci1sZWZ0LXN0eWxlIl0gLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIHRoaXMuX2tl
eXdvcmRzLmJvcmRlclN0eWxlKTsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJTdHlsZS5wcm9w
ZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9yZGVyLXN0eWxlIjsKKyAgICAgICAgcHJvcGVydGllcy5i
b3JkZXJXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChb
ImJvcmRlci10b3Atd2lkdGgiLCAiYm9yZGVyLXJpZ2h0LXdpZHRoIiwgImJvcmRlci1ib3R0b20t
d2lkdGgiLCAiYm9yZGVyLWxlZnQtd2lkdGgiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0
aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJi
b3JkZXItd2lkdGgiOworCisgICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLmJvcmRlclN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJBbGxTaXpl
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJXaWR0aC5lbGVtZW50KTsKKwor
ICAgICAgICBsZXQgYm9yZGVyQWxsU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQ29sb3IgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoWyJib3JkZXItdG9wLWNvbG9yIiwgImJvcmRlci1y
aWdodC1jb2xvciIsICJib3JkZXItYm90dG9tLWNvbG9yIiwgImJvcmRlci1sZWZ0LWNvbG9yIl0s
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9y
ZGVyQ29sb3IucHJvcGVydHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci1jb2xvciI7CisgICAgICAg
IHByb3BlcnRpZXMuYm9yZGVyUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXItdG9wLXJpZ2h0
LXJhZGl1cyIsICJib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tcmln
aHQtcmFkaXVzIl0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmFkaXVzIiksIHRoaXMuX2tleXdv
cmRzLmRlZmF1bHRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMu
Ym9yZGVyUmFkaXVzLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItcmFkaXVzIjsKKwor
ICAgICAgICBib3JkZXJBbGxTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9y
ZGVyQ29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckFsbFN0eWxlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5ib3JkZXJSYWRpdXMuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJv
cmRlckFsbFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJTdHlsZSwgcHJvcGVydGllcy5i
b3JkZXJXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJDb2xvciwgcHJvcGVydGllcy5ib3JkZXJSYWRp
dXNdOworICAgICAgICBsZXQgYm9yZGVyQWxsR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW2JvcmRlckFsbFNpemUsIGJvcmRlckFsbFN0eWxlXSk7CisKKyAgICAg
ICAgbGV0IGJvcmRlclRvcFNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXRvcC1zdHlsZSIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAg
ICBwcm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJib3JkZXItdG9wLXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVs
dHMpOworCisgICAgICAgIGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmJvcmRlclRvcFN0eWxlLmVsZW1lbnQpOworICAgICAgICBib3JkZXJUb3BTaXplLmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BXaWR0aC5lbGVtZW50KTsKKworICAg
ICAgICBsZXQgYm9yZGVyVG9wU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wQ29sb3IgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRlci10b3AtY29sb3IiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1
cyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10
b3AtbGVmdC1yYWRpdXMiLCAiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRz
LmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJUb3BTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyVG9wQ29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclRvcFN0
eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BSYWRpdXMuZWxlbWVu
dCk7CisKKyAgICAgICAgbGV0IGJvcmRlclRvcFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3Jk
ZXJUb3BTdHlsZSwgcHJvcGVydGllcy5ib3JkZXJUb3BXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJU
b3BDb2xvciwgcHJvcGVydGllcy5ib3JkZXJUb3BSYWRpdXNdOworICAgICAgICBsZXQgYm9yZGVy
VG9wR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlclRv
cFNpemUsIGJvcmRlclRvcFN0eWxlXSk7CisKKyAgICAgICAgbGV0IGJvcmRlclJpZ2h0U2l6ZSA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5ib3JkZXJSaWdodFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQ
aWNrZXIoImJvcmRlci1yaWdodC1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUi
KSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRl
clJpZ2h0V2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
ImJvcmRlci1yaWdodC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhp
cy5fa2V5d29yZHMuYm9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAg
ICBib3JkZXJSaWdodFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJp
Z2h0U3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aC5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgYm9yZGVyUmlnaHRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSaWdodENvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJib3JkZXItcmlnaHQtY29sb3IiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFk
aXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVy
LXRvcC1yaWdodC1yYWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJSaWdodFN0eWxlLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdodENvbG9yLmVsZW1lbnQpOworICAgICAgICBi
b3JkZXJSaWdodFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdo
dFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyUmlnaHRQcm9wZXJ0aWVzID0g
W3Byb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZSwgcHJvcGVydGllcy5ib3JkZXJSaWdodFdpZHRo
LCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3IsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRSYWRp
dXNdOworICAgICAgICBsZXQgYm9yZGVyUmlnaHRHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyUmlnaHRTaXplLCBib3JkZXJSaWdodFN0eWxlXSk7CisK
KyAgICAgICAgbGV0IGJvcmRlckJvdHRvbVNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tU3R5bGUgPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLWJvdHRvbS1zdHls
ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVy
U3R5bGUpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3JkZXItYm90dG9tLXdpZHRoIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0
aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckJvdHRvbVNpemUuZWxl
bWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlLmVsZW1lbnQpOwor
ICAgICAgICBib3JkZXJCb3R0b21TaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5i
b3JkZXJCb3R0b21XaWR0aC5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9tU3R5
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyQm90dG9tQ29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29s
b3JQaWNrZXIoImJvcmRlci1ib3R0b20tY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVJhZGl1cyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci1ib3R0b20tbGVmdC1y
YWRpdXMiLCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1
bHRzKTsKKworICAgICAgICBib3JkZXJCb3R0b21TdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuYm9yZGVyQm90dG9tQ29sb3IuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJvdHRv
bVN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21SYWRpdXMu
ZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJvcmRlckJvdHRvbVByb3BlcnRpZXMgPSBbcHJvcGVy
dGllcy5ib3JkZXJCb3R0b21TdHlsZSwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21XaWR0aCwgcHJv
cGVydGllcy5ib3JkZXJCb3R0b21Db2xvciwgcHJvcGVydGllcy5ib3JkZXJCb3R0b21SYWRpdXNd
OworICAgICAgICBsZXQgYm9yZGVyQm90dG9tR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW2JvcmRlckJvdHRvbVNpemUsIGJvcmRlckJvdHRvbVN0eWxlXSk7CisK
KyAgICAgICAgbGV0IGJvcmRlckxlZnRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckxlZnRTdHlsZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItbGVmdC1zdHlsZSIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUp
OworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLWxlZnQtd2lkdGgiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91
bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyTGVmdFNpemUuZWxlbWVudC5hcHBlbmRD
aGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVy
TGVmdFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aC5l
bGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyTGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlckxlZnRDb2xv
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLWxlZnQt
Y29sb3IiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0
aWVzLmJvcmRlckxlZnRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tbGVmdC1y
YWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSYWRpdXMiKSwgdGhpcy5fa2V5d29yZHMu
ZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJMZWZ0U3R5
bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRDb2xvci5lbGVtZW50
KTsKKyAgICAgICAgYm9yZGVyTGVmdFN0eWxlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5ib3JkZXJMZWZ0UmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJMZWZ0UHJv
cGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckxlZnRTdHlsZSwgcHJvcGVydGllcy5ib3JkZXJM
ZWZ0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlckxl
ZnRSYWRpdXNdOworICAgICAgICBsZXQgYm9yZGVyTGVmdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJMZWZ0U2l6ZSwgYm9yZGVyTGVmdFN0eWxlXSk7
CisKKyAgICAgICAgbGV0IGJvcmRlclRhYkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdyh7CisgICAgICAgICAgICAiYWxsIjoge3RpdGxl
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsbCIpLCBlbGVtZW50OiBib3JkZXJBbGxHcm91cC5l
bGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJBbGxQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJ0
b3AiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG9wIiksIGVsZW1lbnQ6IGJvcmRl
clRvcEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlclRvcFByb3BlcnRpZXN9LAorICAg
ICAgICAgICAgInJpZ2h0Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJpZ2h0Iiks
IGVsZW1lbnQ6IGJvcmRlclJpZ2h0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyUmln
aHRQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJib3R0b20iOiB7dGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQm90dG9tIiksIGVsZW1lbnQ6IGJvcmRlckJvdHRvbUdyb3VwLmVsZW1lbnQs
IHByb3BlcnRpZXM6IGJvcmRlckJvdHRvbVByb3BlcnRpZXN9LAorICAgICAgICAgICAgImxlZnQi
OiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGVmdCIpLCBlbGVtZW50OiBib3JkZXJM
ZWZ0R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyTGVmdFByb3BlcnRpZXN9CisgICAg
ICAgIH0pOworCisgICAgICAgIGxldCBoaWdobGlnaHRNb2RlID0gImJvcmRlciI7CisgICAgICAg
IHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlcldp
ZHRoLCBoaWdobGlnaHRNb2RlKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVu
ZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGgsIGhpZ2hsaWdodE1vZGUpOworICAg
ICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3Jk
ZXJCb3R0b21XaWR0aCwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NN
b3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgaGlnaGxpZ2h0
TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9w
ZXJ0aWVzLmJvcmRlclJpZ2h0V2lkdGgsIGhpZ2hsaWdodE1vZGUpOworCisgICAgICAgIGdyb3Vw
LmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyQ29s
b3IsIHByb3BlcnRpZXMuYm9yZGVyVG9wQ29sb3IsIHByb3BlcnRpZXMuYm9yZGVyQm90dG9tQ29s
b3IsIHByb3BlcnRpZXMuYm9yZGVyTGVmdENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29s
b3JdOworCisgICAgICAgIGxldCBib3JkZXJHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbYm9yZGVyVGFiQ29udHJvbGxlciwgYm9yZGVyQWxsR3JvdXAsIGJvcmRl
clRvcEdyb3VwLCBib3JkZXJSaWdodEdyb3VwLCBib3JkZXJCb3R0b21Hcm91cCwgYm9yZGVyTGVm
dEdyb3VwXSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JvcmRlckdy
b3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlT3V0bGluZVNlY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLm91dGxpbmU7CisgICAgICAgIGxldCBwcm9w
ZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgb3V0bGluZVNpemVSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMub3V0bGluZVdpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94KCJvdXRsaW5lLXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpLCB0aGlz
Ll9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBw
cm9wZXJ0aWVzLm91dGxpbmVPZmZzZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goIm91dGxpbmUtb2Zmc2V0IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPZmZz
ZXQiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCB0cnVl
KTsKKworICAgICAgICBvdXRsaW5lU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMub3V0bGluZVdpZHRoLmVsZW1lbnQpOworICAgICAgICBvdXRsaW5lU2l6ZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZU9mZnNldC5lbGVtZW50KTsKKworICAgICAg
ICBsZXQgb3V0bGluZVN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLm91dGxpbmVTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJvdXRsaW5lLXN0eWxlIiAsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBw
cm9wZXJ0aWVzLm91dGxpbmVDb2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xv
clBpY2tlcigib3V0bGluZS1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7
CisKKyAgICAgICAgb3V0bGluZVN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGll
cy5vdXRsaW5lU3R5bGUuZWxlbWVudCk7CisgICAgICAgIG91dGxpbmVTdHlsZVJvdy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMub3V0bGluZUNvbG9yLmVsZW1lbnQpOworCisgICAgICAg
IGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMub3V0
bGluZUNvbG9yXTsKKworICAgICAgICBsZXQgb3V0bGluZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtvdXRsaW5lU2l6ZVJvdywgb3V0bGluZVN0eWxlUm93XSk7
CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW291dGxpbmVHcm91cF0pOwor
ICAgIH0KKworICAgIF9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24oKQorICAgIHsKKyAgICAgICAg
bGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmJveFNoYWRvdzsKKyAgICAgICAgbGV0IHByb3BlcnRp
ZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAgIGxldCBib3hTaGFkb3dSb3cgPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm94
U2hhZG93ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29y
ZEVkaXRvcigiYm94LXNoYWRvdyIpOworICAgICAgICBwcm9wZXJ0aWVzLmJveFNoYWRvdy5lbGVt
ZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAiMTFweCI7CisKKyAgICAgICAgYm94U2hhZG93Um93LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3hTaGFkb3cuZWxlbWVudCk7CisKKyAgICAg
ICAgbGV0IGJveFNoYWRvd0hSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworCisgICAgICAgIGxldCBib3hTaGFkb3dIID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMZWZ0IiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQsIHRydWUpOwor
CisgICAgICAgIGJveFNoYWRvd0hSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dILmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dWUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgYm94U2hhZG93ViA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigiYm94LXNoYWRvdyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVG9wIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1Bl
cmNlbnQsIHRydWUpOworCisgICAgICAgIGJveFNoYWRvd1ZSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChib3hTaGFkb3dWLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3hTaGFkb3dCbHVyUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgYm94U2hh
ZG93Qmx1ciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm94
LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmx1ciIpLCBudWxsLCB0aGlzLl91bml0
cy5kZWZhdWx0c1NhbnNQZXJjZW50KTsKKyAgICAgICAgYm94U2hhZG93Qmx1ci5vcHRpb25hbFBy
b3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgbGV0IGJveFNoYWRvd1NwcmVhZCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU3ByZWFkIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNl
bnQsIHRydWUpOworICAgICAgICBib3hTaGFkb3dTcHJlYWQub3B0aW9uYWxQcm9wZXJ0eSA9IHRy
dWU7CisKKyAgICAgICAgYm94U2hhZG93Qmx1clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNo
YWRvd0JsdXIuZWxlbWVudCk7CisgICAgICAgIGJveFNoYWRvd0JsdXJSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChib3hTaGFkb3dTcHJlYWQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJveFNoYWRv
d0NvbG9yUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAg
ICBsZXQgYm94U2hhZG93Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQ
aWNrZXIoImJveC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbG9yIikpOworICAg
ICAgICBib3hTaGFkb3dDb2xvci5jb2xvclByb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgbGV0IGJv
eFNoYWRvd0luc2V0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRDaGVja2Jv
eCgiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5zZXQiKSwgIkluc2V0Iik7
CisgICAgICAgIGJveFNoYWRvd0luc2V0Lm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworCisgICAg
ICAgIGJveFNoYWRvd0NvbG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Q29sb3Iu
ZWxlbWVudCk7CisgICAgICAgIGJveFNoYWRvd0NvbG9yUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
Ym94U2hhZG93SW5zZXQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1Byb3BlcnR5
Q29tYmluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlDb21iaW5lcigi
Ym94LXNoYWRvdyIsIFtib3hTaGFkb3dILCBib3hTaGFkb3dWLCBib3hTaGFkb3dCbHVyLCBib3hT
aGFkb3dTcHJlYWQsIGJveFNoYWRvd0NvbG9yLCBib3hTaGFkb3dJbnNldF0pOworCisgICAgICAg
IGZ1bmN0aW9uIG5vUmVtYWluaW5nVHJlZUl0ZW1zKCkgeworICAgICAgICAgICAgYm94U2hhZG93
UHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICBi
b3hTaGFkb3dILmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1YuZGlzYWJs
ZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93Qmx1ci5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBib3hTaGFkb3dTcHJlYWQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAg
Ym94U2hhZG93Q29sb3IuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgYm94U2hhZG93SW5z
ZXQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMuYm94U2hh
ZG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0
ZWRLZXl3b3JkRWRpdG9yLkV2ZW50Lk5vUmVtYWluaW5nVHJlZUl0ZW1zLCBub1JlbWFpbmluZ1Ry
ZWVJdGVtcywgdGhpcyk7CisKKyAgICAgICAgZnVuY3Rpb24gc2VsZWN0ZWRCb3hTaGFkb3dJdGVt
VmFsdWVDaGFuZ2VkKCkgeworICAgICAgICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cuc2VsZWN0
ZWRUcmVlRWxlbWVudFZhbHVlID0gYm94U2hhZG93UHJvcGVydHlDb21iaW5lci5zeW50aGVzaXpl
ZFZhbHVlOworICAgICAgICB9CisgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVu
dC5WYWx1ZURpZENoYW5nZSwgc2VsZWN0ZWRCb3hTaGFkb3dJdGVtVmFsdWVDaGFuZ2VkLCB0aGlz
KTsKKworICAgICAgICBmdW5jdGlvbiBib3hTaGFkb3dJdGVtU2VsZWN0ZWQoZXZlbnQpIHsKKyAg
ICAgICAgICAgIGJveFNoYWRvd1Byb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQo
ZXZlbnQuZGF0YS50ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLmJv
eFNoYWRvdy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1hU2Vw
YXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVkLCBib3hTaGFkb3dJdGVt
U2VsZWN0ZWQsIHRoaXMpOworCisgICAgICAgIGdyb3VwLmF1dG9jb21wbGV0ZUNvbXBhdGlibGVQ
cm9wZXJ0aWVzID0gW2JveFNoYWRvd0NvbG9yXTsKKworICAgICAgICBsZXQgYm94U2hhZG93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3hTaGFkb3dSb3csIGJveFNo
YWRvd0hSb3csIGJveFNoYWRvd1ZSb3csIGJveFNoYWRvd0JsdXJSb3csIGJveFNoYWRvd0NvbG9y
Um93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JveFNoYWRvd10p
OworICAgIH0KKworICAgIF9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50cmFuc2l0aW9uOworICAgICAgICBsZXQgcHJv
cGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Sb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRp
ZXMudHJhbnNpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRl
ZEtleXdvcmRFZGl0b3IoInRyYW5zaXRpb24iKTsKKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0
aW9uLmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAgICAgICB0cmFuc2l0
aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy50cmFuc2l0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIGxldCB0cmFuc2l0aW9uUHJvcGVydHlSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCB0cmFuc2l0aW9uUHJvcGVydHkgPSBu
ZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQoInRyYW5zaXRpb24t
cHJvcGVydHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb3BlcnR5IikpOworICAgICAgICBs
ZXQgdHJhbnNpdGlvblRpbWluZyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUaW1pbmdF
ZGl0b3IoInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJUaW1pbmciKSwgWyJMaW5lYXIiLCAiRWFzZSIsICJFYXNlIEluIiwgIkVhc2UgT3V0IiwgIkVh
c2UgSW4gT3V0Il0pOworCisgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHRyYW5zaXRpb25Qcm9wZXJ0eS5lbGVtZW50KTsKKyAgICAgICAgdHJhbnNpdGlv
blByb3BlcnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvblRpbWluZy5lbGVtZW50
KTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvbkR1cmF0aW9uUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBsZXQgdHJhbnNpdGlvblRpbWVLZXl3b3Jk
cyA9IFsicyIsICJtcyJdOworICAgICAgICBsZXQgdHJhbnNpdGlvbkR1cmF0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0cmFuc2l0aW9uLWR1cmF0aW9u
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpLCBudWxsLCB0cmFuc2l0aW9uVGlt
ZUtleXdvcmRzKTsKKyAgICAgICAgbGV0IHRyYW5zaXRpb25EZWxheSA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidHJhbnNpdGlvbi1kZWxheSIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRGVsYXkiKSwgbnVsbCwgdHJhbnNpdGlvblRpbWVLZXl3b3Jkcyk7Cisg
ICAgICAgIHRyYW5zaXRpb25EZWxheS5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAg
ICB0cmFuc2l0aW9uRHVyYXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFuc2l0aW9uRHVy
YXRpb24uZWxlbWVudCk7CisgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvblJvdy5lbGVtZW50LmFw
cGVuZENoaWxkKHRyYW5zaXRpb25EZWxheS5lbGVtZW50KTsKKworICAgICAgICBsZXQgdHJhbnNp
dGlvblByb3BlcnR5Q29tYmluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlDb21iaW5lcigidHJhbnNpdGlvbiIsIFt0cmFuc2l0aW9uUHJvcGVydHksIHRyYW5zaXRpb25U
aW1pbmcsIHRyYW5zaXRpb25EdXJhdGlvbiwgdHJhbnNpdGlvbkRlbGF5XSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7CisgICAgICAgICAgICB0cmFuc2l0aW9u
UHJvcGVydHlDb21iaW5lci51cGRhdGVWYWx1ZXNGcm9tVGV4dCgiIik7CisgICAgICAgICAgICB0
cmFuc2l0aW9uUHJvcGVydHkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlv
blRpbWluZy5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24u
ZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5LmRpc2FibGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0
b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVlSXRlbXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlz
KTsKKworICAgICAgICBmdW5jdGlvbiBzZWxlY3RlZHRyYW5zaXRpb25JdGVtVmFsdWVDaGFuZ2Vk
KCkgeworICAgICAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uLnNlbGVjdGVkVHJlZUVsZW1l
bnRWYWx1ZSA9IHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURp
ZENoYW5nZSwgc2VsZWN0ZWR0cmFuc2l0aW9uSXRlbVZhbHVlQ2hhbmdlZCwgdGhpcyk7CisKKyAg
ICAgICAgZnVuY3Rpb24gdHJhbnNpdGlvbkl0ZW1TZWxlY3RlZChldmVudCkgeworICAgICAgICAg
ICAgdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIudXBkYXRlVmFsdWVzRnJvbVRleHQoZXZlbnQu
ZGF0YS50ZXh0IHx8ICIiKTsKKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRp
b24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb21tYVNlcGFyYXRl
ZEtleXdvcmRFZGl0b3IuRXZlbnQuVHJlZUl0ZW1TZWxlY3RlZCwgdHJhbnNpdGlvbkl0ZW1TZWxl
Y3RlZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3Bl
cnRpZXMgPSBbdHJhbnNpdGlvblByb3BlcnR5XTsKKworICAgICAgICBsZXQgdHJhbnNpdGlvbkdy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0cmFuc2l0aW9uUm93
LCB0cmFuc2l0aW9uUHJvcGVydHlSb3csIHRyYW5zaXRpb25EdXJhdGlvblJvd10pOworICAgICAg
ICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0cmFuc2l0aW9uR3JvdXBdKTsKKyAgICB9
Cit9OworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVEaXNhYmxl
ZFN5bWJvbCA9IFN5bWJvbCgidmlzdWFsLXN0eWxlLXN0eWxlLWRpc2FibGVkIik7CitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRM
aXN0U3ltYm9sID0gU3ltYm9sKCJ2aXN1YWwtc3R5bGUtaW5pdGlhbC1wcm9wZXJ0eS1zZWN0aW9u
LXRleHQiKTsKKworLy8gRklYTUU6IEFkZCBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHByb3BlcnR5
IGFzIGEgZm9ybSBvZiBkb2N1bWVudGF0aW9uLiAgVGhpcyBpcyBjdXJyZW50bHkgZW1wdHkgYXMK
Ky8vIHdlIGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoZSBpbmZvIG9uIHNpdGVzIGxp
a2UgTUROIGFuZCBoYXZlIG5vdCB3cml0dGVuIGFueXRoaW5nIG91cnNlbHZlcy4KK1dlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm9wZXJ0eVJlZmVyZW5jZUluZm8gPSB7fTsK
</data>
<flag name="commit-queue"
          id="284255"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259050</attachid>
            <date>2015-08-14 15:15:33 -0700</date>
            <delta_ts>2015-08-14 18:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147570.txt</filename>
            <type>text/plain</type>
            <size>77597</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM4MjVhMDIuLmNiODllYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE1LTA4LTE0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NzU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
KworICAgICAgICBBZGRlZCBWaXN1YWxTdHlsZURldGFpbHNQYW5lbCBhbmQgaW5jbHVzaW9ucyB0
byBmb3J0aGNvbWluZyBjbGFzc2VzCisgICAgICAgIHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoaXMg
dmlzdWFsIHNpZGViYXIgcGFuZWwuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6
CisgICAgICAgIEFkZGVkIGZpbGVzIGZvciBhbGwgbmV3IGNsYXNzZXMgdXNlZCBpbiB0aGUgVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZS5zZXQgY29s
bGFwc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUu
Z2V0IGV4cGFuZGVkQnlVc2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bi5wcm90b3R5cGUuX2hlYWRlckVsZW1lbnRDbGlja2VkKToKKyAgICAgICAgVHJhY2sgd2hldGhl
ciBvciBub3QgdGhlIGV4cGFuZGVkIHN0YXRlIHdhcyBjYXVzZWQgYnkgdGhlIHVzZXIuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmNzczog
QWRkZWQuCisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlz
dWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlcik6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2Vj
dGlvbi1jbGVhcik6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHls
ZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uOm5vdCgubW9kaWZp
ZWQpID4gLmhlYWRlciA+IC52aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhcik6CisgICAgICAgICgu
c2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2Vj
dGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNwYW4pOgorICAgICAgICAoLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24g
LmRldGFpbHMtc2VjdGlvbi5tb2RpZmllZCA+IC5oZWFkZXIgPiBzcGFuOjphZnRlcik6CisgICAg
ICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFp
bHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQpOgorICAgICAgICAoLnNpZGVi
YXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24g
LmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cpOgorICAgICAgICAoLnNp
ZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rp
b24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+IC5yb3c6bGFzdC1jaGlsZCk6
CisgICAgICAgICguc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4g
LmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJv
dy52aXN1YWwtc3R5bGUtc2VwYXJhdGVkLXJvdyk6CisgICAgICAgICguc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSk6CisgICAgICAgICguc2lk
ZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlv
biAuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgLmdyb3VwID4gLnJvdyA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyOm5vdCgubGF5b3V0LXJldmVyc2VkKTpsYXN0LWNoaWxkKToK
KyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwuZGlz
YWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9yLXNlY3Rp
b24pKToKKyAgICAgICAgKC5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1
YWwuZGlzYWJsZWQgPiAuZGV0YWlscy1zZWN0aW9uOm5vdCgudmlzdWFsLXN0eWxlLXNlbGVjdG9y
LXNlY3Rpb24pIGlucHV0KToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24ucmVwbGFjZURh
c2hXaXRoQ2FwaXRhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLl9nZW5lcmF0ZVNlY3Rpb24uY3JlYXRlT3B0aW9uc0VsZW1lbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
Z2VuZXJhdGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUuX3ByZXBhcmVGb3JDaGFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlU2VjdGlvbnMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
dXBkYXRlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLl91cGRhdGVBdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlF
ZGl0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fc2VjdGlvbk1vZGlmaWVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2NsZWFyTW9kaWZpZWRTZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuZ2V0IF9p
bml0aWFsVGV4dExpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZS5faW5pdGlhbFByb3BlcnR5VGV4dE1vZGlmaWVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRl
U2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLl9wb3B1bGF0ZURpc3BsYXlTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dlbmVyYXRlTWV0cmljU2VjdGlv
blJvd3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5fcG9wdWxhdGVQb3NpdGlvblNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVGbG9hdFNlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzLm9uRWRpdG9yTW91c2VvdmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycy5vbkVkaXRvck1vdXNlb3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2FkZE1ldHJpY3NNb3VzZUxpc3Rl
bmVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLl9wb3B1bGF0ZURpbWVuc2lvbnNTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlTWFyZ2luU2VjdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLl9wb3B1bGF0ZVBhZGRpbmdTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRmxleGJveFNlY3Rpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5f
cG9wdWxhdGVUZXh0U3R5bGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlRm9udFNlY3Rpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxh
dGVUZXh0U3BhY2luZ1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUZXh0U2hhZG93U2VjdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZUJhY2tncm91bmRTdHlsZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3JkZXJTZWN0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3Bv
cHVsYXRlT3V0bGluZVNlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLm5vUmVtYWlu
aW5nVHJlZUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQm94U2hhZG93U2VjdGlvbi5zZWxlY3RlZEJveFNoYWRv
d0l0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVCb3hTaGFkb3dTZWN0aW9uLmJveFNoYWRvd0l0
ZW1TZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9wb3B1bGF0ZUJveFNoYWRvd1NlY3Rpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0
aW9uU2VjdGlvbi5ub1JlbWFpbmluZ1RyZWVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZVRyYW5zaXRpb25TZWN0
aW9uLnNlbGVjdGVkdHJhbnNpdGlvbkl0ZW1WYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVUcmFuc2l0
aW9uU2VjdGlvbi50cmFuc2l0aW9uSXRlbVNlbGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlVHJhbnNpdGlvblNl
Y3Rpb24pOgorCiAyMDE1LTA4LTEzICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbid0IHJlc2l6ZSBzcGxpdCBjb25zb2xl
IHdoZW4gd2luZG93IGlzIHRvbyBuYXJyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
CmluZGV4IGM1ZGYzN2Y4ZmI3ZGM0NGU0NWU4NjZmMzNmZmFlMjM4NjBlZjcyNmQuLjdhOTBhOTU0
NTliMmU2ZDk2OTAyZDFmZDg0YzIwZTE5NjZhOGZiN2UgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gK
ZGVsdGEgMjcxMwp6Y21hKTdaRVRaTzZ1eCk7VEZkQTxYc0tJTVRRKFFBeHREaiVZPXxMSzI0b0Rn
djFMcEs4c2MjNnB0OH1YWn40PiEKemV9RV9eVFI3bFFxTUkyMUFaRjdtM0B+TyEoRDVPMEtRdkBX
Z2FCJFZPeT9oc0NWcmZBSF4lJDZpfUdYWnowZGk2CnomYmpDUEBeJG02Xlg3cTxiOVF5SUlFJTB0
WWlIWThrZnFvTDdSQkdeNSM1Ri1PYGZCeTFNZ2Q8SmRYZEBwKyFYZwp6Mkg2KDhiK0ZCLVRnblJB
VDEyYnh1YUszbjJsRCpMZ1Nkdj51UFB5T3hFWnhtbX1+LW5yd2VHMWxhPCgpUSlBMUkKenZHcl98
QS1pZ0hmR0QpaVFwS2cmUEFmY0huZ2hrWVMjYXJLOExUWWBpWFpjVHYtc0RzSHNuS0pSVyppQlZh
MTVVCnpjJjtLdzFMdnx6PkFEZF5CJDFAZTckeztlU3VFQTE5T19QMmBzdUQ9YTRrYSVRUnZIMzs3
RFEwT096KGxHIVRRbgp6V2xDVCUjenx0N1hvaU53O2pMd0E1JFJCPmFiIShqZkRWVTVwKDFqTiR9
TT8lZyhYQlN3QytgNTJyMWNCUXJgMWkKekhnXmNFcX15emRwfkVPVG9EWTNVMERkV1YrYT9oaEM/
RUFqdjlLaWV7KGokTXM3LVR7ZlF8KW9wPGkrVHI7ZylUCno2fnNmY1VgVG1ieXJiTVMhOU51YXhI
WjIoN3VGUzAyK0BVbzUteDx3I3J2VnY3Tm1eSUhgV3FvOVg7ZE9Ub3J1NQp6eHRXMF9sMm1PUEp0
QTlebm5rM2ZPfmFmSGhaez5QI3BSX25XPWs5U2cycXk+ZUpSI0Rhcl5YT3hSYEczJGo4SiQKej5U
fVhicHUwQWQtK0B9JjRPeD4wcTZhPzQ/a3M9N1diNEhIQ1pAcXx3K0V4ZGtZQnZSJFkpXzItSUNa
WCpKYmIyCnp4JUZ9d2RARWNxb0N3MHtkaXRGTXttYVkxenJ1LVVIKkRQRm9XJEw1V0tYJSZ5LTs1
IWBzLWE7TUtxUTR3bFkoaQp6bDMtZDhYdElqNDRkPWA3ZnBsVUQ5Y2N5QnBnclBuVzR7WDVjVVZR
JmorM1VqUVFSakpUU2Q9QzROY3BHMVYqd0kKektpJVZLby0hfnBpTmc0OXdmZGYld2glcUZBZD9l
fEgpSFNiZHJIJSEqJXNBMTRgKU55VVRmWX5MIWYyWSVvVTRPCnpGfW44K3Z5I05wYzM/Sn1GZE4h
JmBuK3I5NEMmPDFVOElRa2V6KH59PlUhMVhscU5XYkxnS30pJDRwKWc+JjtacQp6QVRnJGpfWVBk
TWN4aUJxM1V6NEdqPkRxbCh9YFluYHBkNl95M3NJUElxVmQwX0ApKXhsRWlmcyFAJkFQPkxvfCgK
elZQSGh7KDBOPEJsc1hgXi1sSUc+JjUlcSktckp7Z3txMn1zVyg1dDFCMkcySEBJY2RDVDhPazZq
QzArOXFjdGdeCnorNGcqSmw2eFo9cjhIcGY1bjVyO0RfcjhyaHFwUTh7byVHVzs4UksrZFdseng2
Q2ImRkBmSzs8RX5teFYhVXBeegp6NWpgbFFSPklqNlB3QHpoWWFVQUBNdnVVdkpDKHdJR1JKSSpW
PDltSmVuQTJ9TC02ciVyOTg+aFczdXI8dyVTMF8Kekc7LSlXcWxCYXtFY2wrKW4qWHN7Z0kyMldw
MUVyQkhEYSFEV1FLQjFWK2AoQUZCSEZpKCF+QXJmdV5tYlopWCNnCnpMcFc0P3UwcT87OUxQUUQ1
Yks3eypyMG0mQSVOTzRrdm5gWCtlMDZ9NGR+aW4zJjswV2lhVEhaWGBpaSFTRTM/dQp6THtIJCNY
ayEqJTNFZGFIUTF6Xz9Qc2NCWXEzZ09zJSkyJlZePS1neFh9JmZaKz4oNn5vKFA1RG8xMypKZD54
U1oKeiE2U2Qyc2dVczl2VF9wKzBEJUBjM1A3O2BfNlFGbyY+d3cyakd4WXgkY3gwRzslaWxtZWN4
KD5zPUtaa3Qxel5OCnplQmgmbXBNVDBIJXN6JERMeGtRand8SUsmNl88fjtDRlF4XmtZX1Z1b2ZP
PkxFVjxXbkFRNW89eStHWGd0SGNDdgp6d2lmVmF4WjFrI1AoT0VZSVdQOFJPcDJDfG9TREl5b2JS
KzJ0d013LUE+N0ZJbG11S3VZVSElVU0jdTFwcSVSZU4KempPc3dJUkF+JHNDdkRseEN4dm9ZP09a
c3gtXk8zI3hIK2NsYnFnSFo3WT87eFliSEx7d0JoTClNaCVvPyRQYmgkCnpKcG51YVpubSl7RWw1
fXJEaGlhSS18ZjhKKkNNRyVxYDR3YDYwcGVqWGl1KyRUWUs2WntHOSg4clpCaypGfGN2LQpQcGFp
PFIhaGBjPkBPU3lZKT40RTkKCmRlbHRhIDM1NQp6Y21YWXJQYmZuSDlMTXxaeX1pQmg5KmMxeDg2
cyZFNHN3dS1PcCVye29WY0xXNGskdlJsdF98KF4wST4qSTRKK1cKekB7RjRLYk1XOE00bFlFSj00
M3w4enZUNCZkX0plfF9PVzxBQmQoMXFAVHo0ZEkxJl5JJWdMZ0k/PS0pR1RRZlZiCnpuYEprMHIj
JW1pYzh8eXRgTk9PaENMdmdHQ3QkcDIoMV5NY3pZMGBWaS08VHwxbTFIZz9DcjV9Z1VqLX1pVHY0
PAp6JkFXZVdXJCM0SGY0QWJQdyMmZWRoOFhQQ2AqTHRMdj9HOD1yZXdHJEp0Q1Q/RWd9dipiXipu
KzBWNVhYVW5GRUsKeiVASz8lbzNVKjJJa0QqNUFueEIrdTxwTW5KUlU/NUpCfSlGZG5FdDxJSnBz
IWRzIyFjeEMpcWZKUmw9LWVKbiUwCnplSyZMOGF+d3pDRGA8YnRHVDxZKUNVTisrOUFoRG94RyRX
REBZQHo0XjQ/XzlOe003R0hrbE1RZTxePmFufkI7aQpzK0NWJS0+MXJIaDN3a2h0ZExgWVJMZXIk
SnJxWWNUdlhOREx1dSt4UG9rcGlScl8lIWMwRCs+Sm8mVyM8CgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDlmMzRjNjYuLjBiMGRjMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTE2
Myw2ICsxNjMsMjAgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1R5
cGVUb2tlblZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1R5cGVUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvVHlwZVRyZWVWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZUNvbG9yUGlja2VyLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRv
ci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5
bGVEZXRhaWxzUGFuZWwuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL1Zpc3VhbFN0eWxlS2V5d29yZENoZWNrYm94LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5jc3MiPgorICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveC5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvci5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzIj4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlk
ZXIuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0
eWxlU2VsZWN0b3JTZWN0aW9uLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9WaXN1YWxTdHlsZVNlbGVjdG9yVHJlZUl0ZW0uY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL1Zpc3VhbFN0eWxlVGFiYmVkUHJvcGVydGllc1Jvdy5j
c3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvVmlzdWFsU3R5bGVU
aW1pbmdFZGl0b3IuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5jc3MiPgogCiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJDb250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIuY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JE
cmFnVG9BZGp1c3ROdW1iZXJDb250cm9sbGVyLmNzcyI+CkBAIC01NDEsNiArNTU1LDI3IEBACiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1R5cGVUcmVlVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVDb2xvclBpY2tlci5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRL
ZXl3b3JkRWRpdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFs
U3R5bGVGb250RmFtaWx5TGlzdEVkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1Zpc3VhbFN0eWxlRm9udEZhbWlseVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3guanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZUtleXdvcmRJY29uTGlzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlS2V5d29yZFBp
Y2tlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3guanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5Q29tYmluZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlOYW1lSW5wdXQuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlzdWFsU3R5bGVTZWxlY3RvclNl
Y3Rpb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1YWxTdHlsZVNl
bGVjdG9yVHJlZUl0ZW0uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaXN1
YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3cuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9WaXN1YWxTdHlsZVRpbWluZ0VkaXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVW5pdFNsaWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL1Zpc3VhbFN0eWxlVVJMSW5wdXQuanMiPjwvc2NyaXB0PgorCiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlci5qcyI+PC9z
Y3JpcHQ+CiAKQEAgLTU3NSw2ICs2MTAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9TdG9yYWdlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL1R5cGVUb2tlbkFubm90YXRvci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL1Zpc3VhbFN0eWxlQ29tcGxldGlvbnNDb250cm9sbGVyLmpzIj48L3Njcmlw
dD4KIAogICAgIDxzY3JpcHQgc3JjPSJCYXNlL01haW4uanMiPjwvc2NyaXB0PgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggM2QzZjc2Ni4uMmIw
MzRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpA
QCAtNjgsMTIgKzY4LDEzIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwgPSBjbGFzcyBDU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0CiAKICAgICAgICAgdGhp
cy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQ
YW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKKyAg
ICAgICAgdGhpcy5fdmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9maWx0ZXJEaWRDaGFuZ2UsIHRoaXMpOwogICAg
ICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fZmlsdGVyRGlk
Q2hhbmdlLCB0aGlzKTsKIAotICAgICAgICB0aGlzLl9wYW5lbHMgPSBbdGhpcy5fY29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbCwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbF07Ci0gICAgICAg
IHRoaXMuX3BhbmVsTmF2aWdhdGlvbkluZm8gPSBbdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0
aW9uSW5mb107CisgICAgICAgIHRoaXMuX3BhbmVscyA9IFt0aGlzLl9jb21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLCB0aGlzLl92aXN1YWxTdHls
ZURldGFpbHNQYW5lbF07CisgICAgICAgIHRoaXMuX3BhbmVsTmF2aWdhdGlvbkluZm8gPSBbdGhp
cy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fcnVsZXNT
dHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSW5mbywgdGhpcy5fdmlzdWFsU3R5bGVEZXRhaWxz
UGFuZWwubmF2aWdhdGlvbkluZm9dOwogCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rp
b25TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVjdGVkLXN0eWxl
LWRldGFpbHMtcGFuZWwiLCB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25J
bmZvLmlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmluZGV4IDg0YjNhMzkuLmQ4
YTI0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBAIC02MSw2ICs2MSw3IEBAIFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItZGV0YWlscy1zZWN0aW9uLWNvbGxhcHNl
ZCIsICEhZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSk7CiAgICAgICAgIHRoaXMuY29sbGFw
c2VkID0gdGhpcy5fY29sbGFwc2VkU2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fZXhwYW5k
ZWRCeVVzZXIgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTExNSw2ICsxMTYs
MTEgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9ncm91cHNbaV0uZWxlbWVudCk7CiAgICAgfQogCisgICAg
Z2V0IGV4cGFuZGVkQnlVc2VyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRl
ZEJ5VXNlcjsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfaGVhZGVyRWxlbWVudENs
aWNrZWQoZXZlbnQpCkBAIC0xMjIsNyArMTI4LDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uID0gY2xhc3MgRGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAg
ICAgICAgIGlmIChldmVudC50YXJnZXQuaXNTZWxmT3JEZXNjZW5kYW50KHRoaXMuX29wdGlvbnNF
bGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmNvbGxhcHNlZCA9
ICF0aGlzLmNvbGxhcHNlZDsKKyAgICAgICAgdmFyIGNvbGxhcHNlZCA9IHRoaXMuY29sbGFwc2Vk
OworICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICFjb2xsYXBzZWQ7CisgICAgICAgIHRoaXMuX2V4
cGFuZGVkQnlVc2VyID0gY29sbGFwc2VkOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NDFh
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAu
ZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuaGVhZGVyIHsKKyAgICBmb250LXdl
aWdodDogbm9ybWFsOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAu
dmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IC52
aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHJpZ2h0OiA1cHg7CisgICAgd2lkdGg6IDE1cHg7CisgICAgaGVpZ2h0OiAxNXB4OworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY2FudmFzKG5hdmlnYXRpb24taXRlbS1jbGVhci1sb2ct
bm9ybWFsKTsKKyAgICBiYWNrZ3JvdW5kLXNpemU6IDE1cHggMTVweDsKKyAgICBvcGFjaXR5OiAw
Ljc7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAu
ZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24uY29sbGFwc2VkID4gLmhlYWRlciA+IC52
aXN1YWwtc3R5bGUtc2VjdGlvbi1jbGVhciwKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3Nz
LXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb246bm90KC5t
b2RpZmllZCkgPiAuaGVhZGVyID4gLnZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIHsKKyAgICBk
aXNwbGF5OiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAu
dmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmhlYWRlciA+IHNw
YW4geworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFpbHMu
Y3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24ubW9k
aWZpZWQgPiAuaGVhZGVyID4gc3Bhbjo6YWZ0ZXIgeworICAgIHdpZHRoOiA3cHg7CisgICAgaGVp
Z2h0OiA3cHg7CisgICAgbWFyZ2luOiA0cHggNnB4OworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjEyLCA5MiUsIDU0JSk7CisgICAgb3BhY2l0eTog
MC41OworICAgIGNvbnRlbnQ6ICIiOworfQorCisuc2lkZWJhciA+IC5wYW5lbC5kZXRhaWxzLmNz
cy1zdHlsZSAudmlzdWFsID4gLmRldGFpbHMtc2VjdGlvbiAuZGV0YWlscy1zZWN0aW9uID4gLmNv
bnRlbnQgeworICAgIG1hcmdpbi10b3A6IDVweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0
YWlscy5jc3Mtc3R5bGUgLnZpc3VhbCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlv
biA+IC5jb250ZW50IC5ncm91cCA+IC5yb3cgeworICAgIGRpc3BsYXk6IGZsZXg7Cit9CisKKy5z
aWRlYmFyID4gLnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0
aW9uIC5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93Omxhc3QtY2hpbGQg
eworICAgIHBhZGRpbmctYm90dG9tOiAzcHg7Cit9CisKKy5zaWRlYmFyID4gLnBhbmVsLmRldGFp
bHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRhaWxzLXNlY3Rpb24g
PiAuY29udGVudCAuZ3JvdXAgPiAucm93LnZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93IHsKKyAg
ICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xpZCBoc2woMCwgMCUsIDgzJSk7CisgICAgbWFyZ2lu
LWJvdHRvbTogNXB4OworICAgIHBhZGRpbmctYm90dG9tOiAycHg7Cit9CisKKy5zaWRlYmFyID4g
LnBhbmVsLmRldGFpbHMuY3NzLXN0eWxlIC52aXN1YWwgPiAuZGV0YWlscy1zZWN0aW9uIC5kZXRh
aWxzLXNlY3Rpb24gPiAuY29udGVudCAuZ3JvdXAgPiAucm93ID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIHsKKyAgICB3aWR0
aDogNTVweDsKK30KKworLnNpZGViYXIgPiAucGFuZWwuZGV0YWlscy5jc3Mtc3R5bGUgLnZpc3Vh
bCA+IC5kZXRhaWxzLXNlY3Rpb24gLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50IC5ncm91cCA+
IC5yb3cgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lcjpub3QoLmxheW91dC1yZXZl
cnNlZCk6bGFzdC1jaGlsZCB7CisgICAgbWFyZ2luLXJpZ2h0OiAxMXB4OworfQorCisuc2lkZWJh
ciA+IC5wYW5lbC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMt
c2VjdGlvbjpub3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSB7CisgICAgb3BhY2l0
eTogMC41OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisuc2lkZWJhciA+IC5wYW5l
bC5kZXRhaWxzLmNzcy1zdHlsZSAudmlzdWFsLmRpc2FibGVkID4gLmRldGFpbHMtc2VjdGlvbjpu
b3QoLnZpc3VhbC1zdHlsZS1zZWxlY3Rvci1zZWN0aW9uKSBpbnB1dCB7CisgICAgcG9pbnRlci1l
dmVudHM6IG5vbmU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MDYxMjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZURldGFpbHNQYW5lbC5qcwpAQCAtMCwwICsxLDEwNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBWaXN1YWxTdHlsZURldGFpbHNQ
YW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAoreworICAgIGNvbnN0
cnVjdG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoZGVsZWdhdGUsICJ2aXN1YWwi
LCAidmlzdWFsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZXMgXHUyMDE0IFZpc3VhbCIp
KTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucHJvcGVydHlSZWZlcmVuY2VJbmZvVGVtcCA9IHt9
OworICAgICAgICB0aGlzLl9jdXJyZW50U3R5bGUgPSBudWxsOworICAgICAgICB0aGlzLl9mb3Jj
ZU5leHRTdHlsZVVwZGF0ZSA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zID0ge307
CisgICAgICAgIHRoaXMuX2dyb3VwcyA9IHt9OworICAgICAgICB0aGlzLl9rZXl3b3JkcyA9IHt9
OworICAgICAgICB0aGlzLl91bml0cyA9IHt9OworICAgICAgICB0aGlzLl9hdXRvY29tcGxldGlv
blByb3BlcnR5RWRpdG9ycyA9IHt9OworCisgICAgICAgIC8vIFRoZXNlIGtleXdvcmRzLCBhcyB3
ZWxsIGFzIHRoZSB2YWx1ZXMgYmVsb3csIGFyZSBub3QgbG9jYWxpemVkIGFzIHRoZXkgbXVzdCBt
YXRjaCB0aGUgQ1NTIHNwZWMuCisgICAgICAgIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzID0gWyJJ
bmhlcml0IiwgIkluaXRpYWwiXTsKKyAgICAgICAgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwgPSB0
aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJBdXRvIl0pOworICAgICAgICB0aGlzLl9r
ZXl3b3Jkcy5ib3JkZXJTdHlsZSA9IHsKKyAgICAgICAgICAgIGJhc2ljOiB0aGlzLl9rZXl3b3Jk
cy5kZWZhdWx0cy5jb25jYXQoWyJOb25lIiwgIkhpZGRlbiIsICJTb2xpZCJdKSwKKyAgICAgICAg
ICAgIGFkdmFuY2VkOiBbIkRhc2hlZCIsICJEb3R0ZWQiLCAiRG91YmxlIiwgIkdyb292ZSIsICJI
aWRkZW4iLCAiSW5zZXQiLCAiTm9uZSIsICJPdXRzZXQiLCAiUmlkZ2UiXQorICAgICAgICB9Owor
ICAgICAgICB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCA9IHRoaXMuX2tleXdvcmRzLmRlZmF1
bHRzLmNvbmNhdChbIk1lZGl1bSIsICJUaGljayIsICJUaGluIl0pOworCisgICAgICAgIHRoaXMu
X3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQgPSB7CisgICAgICAgICAgICBiYXNpYzogWyJweCIs
ICJlbSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiY2giLCAiY20iLCAiZXgiLCAiaW4iLCAi
bW0iLCAicGMiLCAicHQiLCAicmVtIiwgInZoIiwgInZ3IiwgInZtYXgiLCAidm1pbiJdCisgICAg
ICAgIH07CisgICAgICAgIHRoaXMuX3VuaXRzLmRlZmF1bHRzID0geworICAgICAgICAgICAgYmFz
aWM6IFsiJSJdLmNvbmNhdCh0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmJhc2ljKSwK
KyAgICAgICAgICAgIGFkdmFuY2VkOiB0aGlzLl91bml0cy5kZWZhdWx0c1NhbnNQZXJjZW50LmFk
dmFuY2VkCisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2VsZWN0b3IgU2VjdGlvbgorICAgICAg
ICB0aGlzLl9zZWxlY3RvclNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlU2Vs
ZWN0b3JTZWN0aW9uKHRoaXMpOworICAgICAgICB0aGlzLl9zZWxlY3RvclNlY3Rpb24uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVTZWxlY3RvclNlY3Rpb24uRXZlbnQu
U2VsZWN0b3JDaGFuZ2VkLCB0aGlzLl91cGRhdGVTZWN0aW9ucywgdGhpcyk7CisgICAgICAgIHRo
aXMuX3NlbGVjdG9yU2VjdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVNlbGVjdG9yU2VjdGlvbi5FdmVudC5TdHlsZVRleHRDaGFuZ2VkLCB0aGlzLl9wcmVwYXJl
Rm9yQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zZWxlY3RvclNlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAgLy8gTGF5b3V0IFNlY3Rpb24K
KyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJkaXNwbGF5IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEaXNwbGF5IikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oInBvc2l0
aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQb3NpdGlvbiIpKTsKKyAgICAgICAgdGhpcy5f
Z2VuZXJhdGVTZWN0aW9uKCJmbG9hdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvYXQgYW5k
IENsZWFyIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImRpbWVuc2lvbnMiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpbWVuc2lvbnMiKSk7CisgICAgICAgIHRoaXMuX2dlbmVy
YXRlU2VjdGlvbigibWFyZ2luIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYXJnaW4iKSk7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU2VjdGlvbigicGFkZGluZyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUGFkZGluZyIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmbGV4Ym94
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbGV4Ym94IikpOworCisgICAgICAgIHRoaXMuX3Nl
Y3Rpb25zLmxheW91dCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImxheW91dCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5b3V0IiksIFt0aGlzLl9ncm91cHMuZGlzcGxheS5z
ZWN0aW9uLCB0aGlzLl9ncm91cHMucG9zaXRpb24uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLmZsb2F0
LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25zLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5t
YXJnaW4uc2VjdGlvbiwgdGhpcy5fZ3JvdXBzLnBhZGRpbmcuc2VjdGlvbiwgdGhpcy5fZ3JvdXBz
LmZsZXhib3guc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3NlY3Rpb25zLmxheW91dC5lbGVtZW50KTsKKworICAgICAgICAvLyBUZXh0IFNlY3Rpb24K
KyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXN0eWxlIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJmb250
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb250IikpOworICAgICAgICB0aGlzLl9nZW5lcmF0
ZVNlY3Rpb24oInRleHQtc3BhY2luZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3BhY2luZyIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0ZXh0LXNoYWRvdyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hhZG93IikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLnRleHQg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJ0ZXh0IiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUZXh0IiksIFt0aGlzLl9ncm91cHMudGV4dFN0eWxlLnNlY3Rpb24sIHRoaXMuX2dy
b3Vwcy5mb250LnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy50ZXh0U3BhY2luZy5zZWN0aW9uLCB0aGlz
Ll9ncm91cHMudGV4dFNoYWRvdy5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fc2VjdGlvbnMudGV4dC5lbGVtZW50KTsKKworICAgICAgICAvLyBCYWNr
Z3JvdW5kIFNlY3Rpb24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJiYWNrZ3JvdW5k
LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpKTsKKyAgICAgICAgdGhpcy5f
Z2VuZXJhdGVTZWN0aW9uKCJib3JkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJvcmRlciIp
KTsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJvdXRsaW5lIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJPdXRsaW5lIikpOworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNlY3Rpb24oImJv
eC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNoYWRvdyIpKTsKKworICAgICAgICB0
aGlzLl9zZWN0aW9ucy5iYWNrZ3JvdW5kID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bigiYmFja2dyb3VuZCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQmFja2dyb3VuZCIpLCBbdGhp
cy5fZ3JvdXBzLmJhY2tncm91bmRTdHlsZS5zZWN0aW9uLCB0aGlzLl9ncm91cHMuYm9yZGVyLnNl
Y3Rpb24sIHRoaXMuX2dyb3Vwcy5vdXRsaW5lLnNlY3Rpb24sIHRoaXMuX2dyb3Vwcy5ib3hTaGFk
b3cuc2VjdGlvbl0pOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Nl
Y3Rpb25zLmJhY2tncm91bmQuZWxlbWVudCk7CisKKyAgICAgICAgLy8gQW5pbWF0aW9uIFNlY3Rp
b24KKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTZWN0aW9uKCJ0cmFuc2l0aW9uIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJUcmFuc2l0aW9uIikpOworCisgICAgICAgIHRoaXMuX3NlY3Rpb25zLmFu
aW1hdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImFuaW1hdGlvbiIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQW5pbWF0aW9uIiksIFt0aGlzLl9ncm91cHMudHJhbnNpdGlv
bi5zZWN0aW9uXSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Vj
dGlvbnMuYW5pbWF0aW9uLmVsZW1lbnQpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
cmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkKKyAgICB7CisgICAgICAgIGlmIChzaWduaWZpY2Fu
dENoYW5nZSB8fCB0aGlzLl9mb3JjZU5leHRTdHlsZVVwZGF0ZSkgeworICAgICAgICAgICAgdGhp
cy5fc2VsZWN0b3JTZWN0aW9uLnVwZGF0ZSh0aGlzLl9ub2RlU3R5bGVzKTsKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZVNlY3Rpb25zKCk7CisgICAgICAgICAgICB0aGlzLl9mb3JjZU5leHRTdHls
ZVVwZGF0ZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3VwZXIucmVmcmVzaCgpOwor
ICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9nZW5lcmF0ZVNlY3Rpb24oaWQsIGRpc3Bs
YXlOYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpZCB8fCAhZGlzcGxheU5hbWUpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24gcmVwbGFjZURhc2hXaXRoQ2FwaXRhbCht
YXRjaCkgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoIi0iLCAiIikudG9VcHBl
ckNhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBjYW1lbENhc2VJZCA9IGlkLnJlcGxh
Y2UoLy1cYlx3L2csIHJlcGxhY2VEYXNoV2l0aENhcGl0YWwpOworCisgICAgICAgIGZ1bmN0aW9u
IGNyZWF0ZU9wdGlvbnNFbGVtZW50KCkgeworICAgICAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgY29udGFpbmVyLmNsYXNz
TGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZWN0aW9uLWNsZWFyIik7CisgICAgICAgICAgICBjb250
YWluZXIudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsaWNrIHRvIGNsZWFyIG1vZGlm
aWVkIHByb3BlcnRpZXMiKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2NsZWFyTW9kaWZpZWRTZWN0aW9uLmJpbmQodGhpcywgY2FtZWxDYXNl
SWQpKTsKKyAgICAgICAgICAgIHJldHVybiBjb250YWluZXI7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl9ncm91cHNbY2FtZWxDYXNlSWRdID0geworICAgICAgICAgICAgc2VjdGlvbjogbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbihpZCwgZGlzcGxheU5hbWUsIFtdLCBjcmVhdGVP
cHRpb25zRWxlbWVudC5jYWxsKHRoaXMpKSwKKyAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9Cisg
ICAgICAgIH07CisKKyAgICAgICAgbGV0IHBvcHVsYXRlRnVuY3Rpb24gPSB0aGlzWyJfcG9wdWxh
dGUiICsgY2FtZWxDYXNlSWQuY2FwaXRhbGl6ZSgpICsgIlNlY3Rpb24iXTsKKyAgICAgICAgcG9w
dWxhdGVGdW5jdGlvbi5jYWxsKHRoaXMpOworICAgIH0KKworICAgIF9wcmVwYXJlRm9yQ2hhbmdl
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fZm9yY2VOZXh0U3R5bGVVcGRhdGUgPSB0cnVl
OworICAgIH0KKworICAgIF91cGRhdGVTZWN0aW9ucyhldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2N1cnJlbnRTdHlsZSA9IHRoaXMuX3NlbGVjdG9yU2VjdGlvbi5jdXJyZW50U3R5bGUoKTsK
KyAgICAgICAgaWYgKCF0aGlzLl9jdXJyZW50U3R5bGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbGV0IGRpc2FibGVkID0gdGhpcy5fY3VycmVudFN0eWxlW1dlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZURldGFpbHNQYW5lbC5TdHlsZURpc2FibGVkU3ltYm9sXTsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIGRpc2FibGVkKTsKKyAgICAg
ICAgaWYgKGRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0
IGtleSBpbiB0aGlzLl9ncm91cHMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVQcm9wZXJ0aWVz
KHRoaXMuX2dyb3Vwc1trZXldLCAhIWV2ZW50KTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4g
dGhpcy5fc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIGxldCBzZWN0aW9uID0gdGhpcy5fc2VjdGlv
bnNba2V5XTsKKyAgICAgICAgICAgIGxldCBvbmVTZWN0aW9uRXhwYW5kZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGZvciAobGV0IGdyb3VwIG9mIHNlY3Rpb24uZ3JvdXBzKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFncm91cC5jb2xsYXBzZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgb25lU2Vj
dGlvbkV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNl
ZCA9ICFvbmVTZWN0aW9uRXhwYW5kZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfdXBkYXRl
UHJvcGVydGllcyhncm91cCwgZm9yY2VTdHlsZVVwZGF0ZSkKKyAgICB7CisgICAgICAgIGlmICgh
Z3JvdXAuc2VjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgaW5pdGlh
bFRleHRMaXN0ID0gdGhpcy5faW5pdGlhbFRleHRMaXN0OworICAgICAgICBpZiAoIWluaXRpYWxU
ZXh0TGlzdCkKKyAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVEZXRhaWxzUGFuZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9s
XSA9IGluaXRpYWxUZXh0TGlzdCA9IG5ldyBXZWFrTWFwOworCisgICAgICAgIGxldCBpbml0aWFs
UHJvcGVydHlUZXh0ID0ge307CisgICAgICAgIGxldCBpbml0aWFsUHJvcGVydHlUZXh0TWlzc2lu
ZyA9ICFpbml0aWFsVGV4dExpc3QuaGFzKGdyb3VwKTsKKyAgICAgICAgbGV0IG9uZVByb3BlcnR5
SGFzVmFsdWUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRp
ZXMpIHsKKyAgICAgICAgICAgIGxldCBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNb
a2V5XTsKKyAgICAgICAgICAgIHByb3BlcnR5RWRpdG9yLnVwZGF0ZSghcHJvcGVydHlFZGl0b3Iu
c3R5bGUgfHwgZm9yY2VTdHlsZVVwZGF0ZSA/IHRoaXMuX2N1cnJlbnRTdHlsZSA6IG51bGwpOwor
CisgICAgICAgICAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0eUVkaXRvci5zeW50aGVzaXplZFZhbHVl
OworICAgICAgICAgICAgaWYgKHZhbHVlICYmICFwcm9wZXJ0eUVkaXRvci5wcm9wZXJ0eU1pc3Np
bmcpIHsKKyAgICAgICAgICAgICAgICBvbmVQcm9wZXJ0eUhhc1ZhbHVlID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5pdGlhbFByb3BlcnR5VGV4dE1pc3NpbmcpCisgICAgICAgICAgICAg
ICAgICAgIGluaXRpYWxQcm9wZXJ0eVRleHRba2V5XSA9IHZhbHVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGluaXRpYWxQcm9wZXJ0eVRleHRNaXNzaW5nKQorICAg
ICAgICAgICAgaW5pdGlhbFRleHRMaXN0LnNldChncm91cCwgaW5pdGlhbFByb3BlcnR5VGV4dCk7
CisKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5jb2xsYXBzZWQgPSAhb25lUHJvcGVydHlIYXNWYWx1
ZSAmJiAhZ3JvdXAuc2VjdGlvbi5leHBhbmRlZEJ5VXNlcjsKKyAgICAgICAgdGhpcy5fc2VjdGlv
bk1vZGlmaWVkKGdyb3VwKTsKKworICAgICAgICBsZXQgYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVBy
b3BlcnRpZXMgPSBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllczsKKyAgICAg
ICAgaWYgKCFhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyB8fCAhYXV0b2NvbXBsZXRl
Q29tcGF0aWJsZVByb3BlcnRpZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGZvciAobGV0IGVkaXRvciBvZiBhdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcykK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUF1dG9jb21wbGV0ZUNvbXBhdGlibGVQcm9wZXJ0eUVk
aXRvcihlZGl0b3IsIGZvcmNlU3R5bGVVcGRhdGUpOworICAgIH0KKworICAgIF91cGRhdGVBdXRv
Y29tcGxldGVDb21wYXRpYmxlUHJvcGVydHlFZGl0b3IoZWRpdG9yLCBmb3JjZSkKKyAgICB7Cisg
ICAgICAgIGlmICghZWRpdG9yIHx8IChlZGl0b3IuaGFzQ29tcGxldGlvbnMgJiYgIWZvcmNlKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBlZGl0b3IuY29tcGxldGlvbnMgPSBXZWJJ
bnNwZWN0b3IuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KGVkaXRvci5wcm9wZXJ0
eVJlZmVyZW5jZU5hbWUpOworICAgIH0KKworICAgIF9zZWN0aW9uTW9kaWZpZWQoZ3JvdXApCisg
ICAgeworICAgICAgICBncm91cC5zZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibW9k
aWZpZWQiLCB0aGlzLl9pbml0aWFsUHJvcGVydHlUZXh0TW9kaWZpZWQoZ3JvdXApKTsKKyAgICB9
CisKKyAgICBfY2xlYXJNb2RpZmllZFNlY3Rpb24oZ3JvdXBJZCkKKyAgICB7CisgICAgICAgIGxl
dCBncm91cCA9IHRoaXMuX2dyb3Vwc1tncm91cElkXTsKKyAgICAgICAgZ3JvdXAuc2VjdGlvbi5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm1vZGlmaWVkIik7CisgICAgICAgIGxldCBpbml0aWFs
UHJvcGVydHlUZXh0TGlzdCA9IHRoaXMuX2N1cnJlbnRTdHlsZVtXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVEZXRhaWxzUGFuZWwuSW5pdGlhbFByb3BlcnR5U2VjdGlvblRleHRMaXN0U3ltYm9sXS5n
ZXQoZ3JvdXApOworICAgICAgICBpZiAoIWluaXRpYWxQcm9wZXJ0eVRleHRMaXN0KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBuZXdTdHlsZVRleHQgPSB0aGlzLl9jdXJyZW50
U3R5bGUudGV4dDsKKyAgICAgICAgZm9yIChsZXQga2V5IGluIGdyb3VwLnByb3BlcnRpZXMpIHsK
KyAgICAgICAgICAgIGxldCBwcm9wZXJ0eUVkaXRvciA9IGdyb3VwLnByb3BlcnRpZXNba2V5XTsK
KyAgICAgICAgICAgIGxldCBpbml0aWFsVmFsdWUgPSBpbml0aWFsUHJvcGVydHlUZXh0TGlzdFtr
ZXldIHx8IG51bGw7CisgICAgICAgICAgICBuZXdTdHlsZVRleHQgPSBwcm9wZXJ0eUVkaXRvci5t
b2RpZnlQcm9wZXJ0eVRleHQobmV3U3R5bGVUZXh0LCBpbml0aWFsVmFsdWUpOworICAgICAgICAg
ICAgcHJvcGVydHlFZGl0b3IucmVzZXRFZGl0b3JWYWx1ZXMoaW5pdGlhbFZhbHVlKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMuX2N1cnJlbnRTdHlsZS50ZXh0ID0gbmV3U3R5bGVUZXh0Owor
ICAgIH0KKworICAgIGdldCBfaW5pdGlhbFRleHRMaXN0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9jdXJyZW50U3R5bGVbV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVs
LkluaXRpYWxQcm9wZXJ0eVNlY3Rpb25UZXh0TGlzdFN5bWJvbF07CisgICAgfQorCisgICAgX2lu
aXRpYWxQcm9wZXJ0eVRleHRNb2RpZmllZChncm91cCkKKyAgICB7CisgICAgICAgIGlmICghZ3Jv
dXAucHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBsZXQg
aW5pdGlhbFByb3BlcnR5VGV4dExpc3QgPSB0aGlzLl9pbml0aWFsVGV4dExpc3QuZ2V0KGdyb3Vw
KTsKKyAgICAgICAgaWYgKCFpbml0aWFsUHJvcGVydHlUZXh0TGlzdCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gZ3JvdXAucHJvcGVydGllcykg
eworICAgICAgICAgICAgbGV0IHByb3BlcnR5RWRpdG9yID0gZ3JvdXAucHJvcGVydGllc1trZXld
OworICAgICAgICAgICAgaWYgKHByb3BlcnR5RWRpdG9yLnByb3BlcnR5TWlzc2luZykKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHlF
ZGl0b3Iuc3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmJiBpbml0aWFs
UHJvcGVydHlUZXh0TGlzdFtrZXldICE9PSB2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBf
cG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBncm91cHMpCisgICAgeworICAgICAgICBpZiAoIWdyb3Vw
IHx8ICFncm91cHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZ3JvdXAuc2VjdGlv
bi5ncm91cHMgPSBncm91cHM7CisgICAgICAgIGZvciAobGV0IGtleSBpbiBncm91cC5wcm9wZXJ0
aWVzKQorICAgICAgICAgICAgZ3JvdXAucHJvcGVydGllc1trZXldLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFu
Z2UsIHRoaXMuX3NlY3Rpb25Nb2RpZmllZC5iaW5kKHRoaXMsIGdyb3VwKSk7CisgICAgfQorCisg
ICAgX3BvcHVsYXRlRGlzcGxheVNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0g
dGhpcy5fZ3JvdXBzLmRpc3BsYXk7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJv
cGVydGllczsKKworICAgICAgICBsZXQgZGlzcGxheVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5kaXNwbGF5ID0gbmV3IFdlYklu
c3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImRpc3BsYXkiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlR5cGUiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiTm9uZSIsICJCbG9jayIs
ICJGbGV4IiwgIklubGluZSIsICJJbmxpbmUgQmxvY2siXSwKKyAgICAgICAgICAgIGFkdmFuY2Vk
OiBbIkNvbXBhY3QiLCAiSW5saW5lIEZsZXgiLCAiSW5saW5lIFRhYmxlIiwgIkxpc3QgSXRlbSIs
ICJUYWJsZSIsICJUYWJsZSBDYXB0aW9uIiwgIlRhYmxlIENlbGwiLCAiVGFibGUgQ29sdW1uIiwg
IlRhYmxlIENvbHVtbiBHcm91cCIsICJUYWJsZSBGb290ZXIgR3JvdXAiLCAiVGFibGUgSGVhZGVy
IEdyb3VwIiwgIlRhYmxlIFJvdyIsICJUYWJsZSBSb3cgR3JvdXAiLCAiIFdBUCBNYXJxdWVlIiwg
IiBXZWJLaXQgQm94IiwgIiBXZWJLaXQgR3JpZCIsICIgV2ViS2l0IElubGluZSBCb3giLCAiIFdl
YktpdCBJbmxpbmUgR3JpZCJdCisgICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnZpc2li
aWxpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigidmlzaWJp
bGl0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmlzaWJpbGl0eSIpLCB7CisgICAgICAgICAg
ICBiYXNpYzogWyJIaWRkZW4iLCAiVmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsi
Q29sbGFwc2UiXQorICAgICAgICB9KTsKKworICAgICAgICBkaXNwbGF5Um93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5kaXNwbGF5LmVsZW1lbnQpOworICAgICAgICBkaXNwbGF5Um93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52aXNpYmlsaXR5LmVsZW1lbnQpOworCisg
ICAgICAgIGxldCBzaXppbmdSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
OworCisgICAgICAgIHByb3BlcnRpZXMuYm94U2l6aW5nID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUtleXdvcmRQaWNrZXIoImJveC1zaXppbmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNpemluZyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJCb3JkZXIgQm94Iiwg
IkNvbnRlbnQgQm94Il0pKTsKKyAgICAgICAgcHJvcGVydGllcy5jdXJzb3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiY3Vyc29yIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDdXJzb3IiKSwgeworICAgICAgICAgICAgYmFzaWM6IFsiQXV0byIsICJEZWZhdWx0
IiwgIk5vbmUiLCAiUG9pbnRlciIsICJDcm9zc2hhaXIiLCAiVGV4dCJdLAorICAgICAgICAgICAg
YWR2YW5jZWQ6IFsiQ29udGV4dCBNZW51IiwgIkhlbHAiLCAiUHJvZ3Jlc3MiLCAiV2FpdCIsICJD
ZWxsIiwgIlZlcnRpY2FsIFRleHQiLCAiQWxpYXMiLCAiQ29weSIsICJNb3ZlIiwgIk5vIERyb3Ai
LCAiTm90IEFsbG93ZWQiLCAiQWxsIFNjcm9sbCIsICJDb2wgUmVzaXplIiwgIlJvdyBSZXNpemUi
LCAiTiBSZXNpemUiLCAiRSBSZXNpemUiLCAiUyBSZXNpemUiLCAiVyBSZXNpemUiLCAiTlMgUmVz
aXplIiwgIkVXIFJlc2l6ZSIsICJORSBSZXNpemUiLCAiTlcgUmVzaXplIiwgIlNFIFJlc2l6ZSIs
ICJzVyBSZXNpemUiLCAiTkVTVyBSZXNpemUiLCAiTldTRSBSZXNpemUiXQorICAgICAgICB9KTsK
KworICAgICAgICBzaXppbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNp
emluZy5lbGVtZW50KTsKKyAgICAgICAgc2l6aW5nUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJv
cGVydGllcy5jdXJzb3IuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IG92ZXJmbG93Um93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLm9w
YWNpdHkgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlVW5pdFNsaWRlcigib3BhY2l0eSIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3BhY2l0eSIpKTsKKyAgICAgICAgcHJvcGVydGllcy5v
dmVyZmxvdyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKFsib3Zl
cmZsb3cteCIsICJvdmVyZmxvdy15Il0sIFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3ZlcmZsb3ci
KSwgeworICAgICAgICAgICAgYmFzaWM6IFsiSW5pdGlhbCIsICJBdXRvIiwgIkhpZGRlbiIsICJT
Y3JvbGwiLCAiVmlzaWJsZSJdLAorICAgICAgICAgICAgYWR2YW5jZWQ6IFsiTWFycXVlZSIsICJP
dmVybGF5IiwgIiBXZWJLaXQgUGFnZWQgWCIsICIgV2ViS2l0IFBhZ2VkIFkiXQorICAgICAgICB9
KTsKKworICAgICAgICBvdmVyZmxvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
b3BhY2l0eS5lbGVtZW50KTsKKyAgICAgICAgb3ZlcmZsb3dSb3cuZWxlbWVudC5hcHBlbmRDaGls
ZChwcm9wZXJ0aWVzLm92ZXJmbG93LmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaXNwbGF5R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2Rpc3BsYXlSb3csIHNp
emluZ1Jvdywgb3ZlcmZsb3dSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdy
b3VwLCBbZGlzcGxheUdyb3VwXSk7CisgICAgfQorCisgICAgX2dlbmVyYXRlTWV0cmljU2VjdGlv
blJvd3MoZ3JvdXAsIHByZWZpeCwgYWxsb3dOZWdhdGl2ZXMpCisgICAgeworICAgICAgICBsZXQg
cHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGhhc1ByZWZpeCA9
IHByZWZpeCAmJiBwcmVmaXgubGVuZ3RoOworICAgICAgICBsZXQgcHJvcGVydHlOYW1lUHJlZml4
ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIi0iIDogIiI7CisKKyAgICAgICAgbGV0IHRvcCA9IGhh
c1ByZWZpeCA/IHByZWZpeCArICJUb3AiIDogInRvcCI7CisgICAgICAgIGxldCBib3R0b20gPSBo
YXNQcmVmaXggPyBwcmVmaXggKyAiQm90dG9tIiA6ICJib3R0b20iOworICAgICAgICBsZXQgbGVm
dCA9IGhhc1ByZWZpeCA/IHByZWZpeCArICJMZWZ0IiA6ICJsZWZ0IjsKKyAgICAgICAgbGV0IHJp
Z2h0ID0gaGFzUHJlZml4ID8gcHJlZml4ICsgIlJpZ2h0IiA6ICJyaWdodCI7CisKKyAgICAgICAg
bGV0IHZlcnRpY2FsID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBwcm9wZXJ0aWVzW3RvcF0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgInRvcCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVG9wIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywg
YWxsb3dOZWdhdGl2ZXMpOworICAgICAgICBwcm9wZXJ0aWVzW2JvdHRvbV0gPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gocHJvcGVydHlOYW1lUHJlZml4ICsgImJv
dHRvbSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm90dG9tIiksIHRoaXMuX2tleXdvcmRzLmJv
eE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywgYWxsb3dOZWdhdGl2ZXMsIHRydWUpOworICAg
ICAgICBsZXQgdmVydGljYWxMaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yTGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0aWVzW2JvdHRvbV1dLCAibGlu
ay12ZXJ0aWNhbCIpOworCisgICAgICAgIHZlcnRpY2FsLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJv
cGVydGllc1t0b3BdLmVsZW1lbnQpOworICAgICAgICB2ZXJ0aWNhbC5lbGVtZW50LmFwcGVuZENo
aWxkKHZlcnRpY2FsTGluay5lbGVtZW50KTsKKyAgICAgICAgdmVydGljYWwuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzW2JvdHRvbV0uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGhvcml6
b250YWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHBy
b3BlcnRpZXNbbGVmdF0gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3gocHJvcGVydHlOYW1lUHJlZml4ICsgImxlZnQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxl
ZnQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxv
d05lZ2F0aXZlcyk7CisgICAgICAgIHByb3BlcnRpZXNbcmlnaHRdID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KHByb3BlcnR5TmFtZVByZWZpeCArICJyaWdodCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmlnaHQiKSwgdGhpcy5fa2V5d29yZHMuYm94TW9kZWws
IHRoaXMuX3VuaXRzLmRlZmF1bHRzLCBhbGxvd05lZ2F0aXZlcywgdHJ1ZSk7CisgICAgICAgIGxl
dCBob3Jpem9udGFsTGluayA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVk
aXRvckxpbmsoW3Byb3BlcnRpZXNbbGVmdF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmstaG9y
aXpvbnRhbCIpOworCisgICAgICAgIGhvcml6b250YWwuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzW2xlZnRdLmVsZW1lbnQpOworICAgICAgICBob3Jpem9udGFsLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoaG9yaXpvbnRhbExpbmsuZWxlbWVudCk7CisgICAgICAgIGhvcml6b250YWwuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzW3JpZ2h0XS5lbGVtZW50KTsKKworICAgICAgICBsZXQg
YWxsTGlua1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisgICAgICAg
IGxldCBhbGxMaW5rID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9y
TGluayhbcHJvcGVydGllc1t0b3BdLCBwcm9wZXJ0aWVzW2JvdHRvbV0sIHByb3BlcnRpZXNbbGVm
dF0sIHByb3BlcnRpZXNbcmlnaHRdXSwgImxpbmstYWxsIiwgW3ZlcnRpY2FsTGluaywgaG9yaXpv
bnRhbExpbmtdKTsKKyAgICAgICAgYWxsTGlua1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKGFsbExp
bmsuZWxlbWVudCk7CisKKyAgICAgICAgcmV0dXJuIFt2ZXJ0aWNhbCwgYWxsTGlua1JvdywgaG9y
aXpvbnRhbF07CisgICAgfQorCisgICAgX3BvcHVsYXRlUG9zaXRpb25TZWN0aW9uKCkKKyAgICB7
CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5wb3NpdGlvbjsKKyAgICAgICAgbGV0
IHJvd3MgPSB0aGlzLl9nZW5lcmF0ZU1ldHJpY1NlY3Rpb25Sb3dzKGdyb3VwLCBudWxsLCB0cnVl
KTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAg
IGxldCBwb3NpdGlvblR5cGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlS2V5d29yZFBpY2tlcigicG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUi
KSwgeworICAgICAgICAgICAgYmFzaWM6IFsiU3RhdGljIiwgIlJlbGF0aXZlIiwgIkFic29sdXRl
IiwgIkZpeGVkIl0sCisgICAgICAgICAgICBhZHZhbmNlZDogWyIgV2ViS2l0IFN0aWNreSJdCisg
ICAgICAgIH0pOworICAgICAgICBwcm9wZXJ0aWVzLnpJbmRleCA9IG5ldyBXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgiei1pbmRleCIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiWi1JbmRleCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgbnVsbCwgdHJ1ZSk7CisKKyAg
ICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5wb3NpdGlv
bi5lbGVtZW50KTsKKyAgICAgICAgcG9zaXRpb25UeXBlLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJv
cGVydGllcy56SW5kZXguZWxlbWVudCk7CisgICAgICAgIHBvc2l0aW9uVHlwZS5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1zZXBhcmF0ZWQtcm93Iik7CisKKyAgICAgICAgcm93
cy51bnNoaWZ0KHBvc2l0aW9uVHlwZSkKKworICAgICAgICBsZXQgcG9zaXRpb25Hcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChyb3dzKTsKKyAgICAgICAgdGhpcy5f
cG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbcG9zaXRpb25Hcm91cF0pOworICAgIH0KKworICAgIF9w
b3B1bGF0ZUZsb2F0U2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9n
cm91cHMuZmxvYXQ7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsK
KworICAgICAgICBsZXQgZmxvYXRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93OworCisgICAgICAgIHByb3BlcnRpZXMuZmxvYXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZEljb25MaXN0KCJmbG9hdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxv
YXQiKSwgWyJMZWZ0IiwgIlJpZ2h0IiwgIk5vbmUiXSk7CisgICAgICAgIGZsb2F0Um93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbG9hdC5lbGVtZW50KTsKKworICAgICAgICBsZXQg
Y2xlYXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IHByb3BlcnRpZXMuY2xlYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZElj
b25MaXN0KCJjbGVhciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIiKSwgWyJMZWZ0Iiwg
IlJpZ2h0IiwgIkJvdGgiLCAiTm9uZSJdKTsKKyAgICAgICAgY2xlYXJSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmNsZWFyLmVsZW1lbnQpOworCisgICAgICAgIGxldCBmbG9hdEdy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmbG9hdFJvdywgY2xl
YXJSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbZmxvYXRHcm91
cF0pOworICAgIH0KKworICAgIF9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZWRpdG9yLCBtb2Rl
KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gb25FZGl0b3JNb3VzZW92ZXIoKSB7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuX3N0eWxlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKCF0aGlzLl9zdHlsZS5vd25lclJ1bGUpIHsKKyAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZSh0aGlzLl9zdHlsZS5ub2Rl
LmlkLCBtb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRTZWxlY3Rvcih0
aGlzLl9zdHlsZS5vd25lclJ1bGUuc2VsZWN0b3JUZXh0LCB0aGlzLl9zdHlsZS5ub2RlLm93bmVy
RG9jdW1lbnQuZnJhbWVJZGVudGlmaWVyLCBtb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uRWRpdG9yTW91c2VvdXQoKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIG9uRWRpdG9yTW91
c2VvdmVyLmJpbmQoZWRpdG9yKSk7CisgICAgICAgIGVkaXRvci5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3V0Iiwgb25FZGl0b3JNb3VzZW91dC5iaW5kKGVkaXRvcikpOworICAgIH0K
KworICAgIF9wb3B1bGF0ZURpbWVuc2lvbnNTZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBn
cm91cCA9IHRoaXMuX2dyb3Vwcy5kaW1lbnNpb25zOworICAgICAgICBsZXQgcHJvcGVydGllcyA9
IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNXaWR0aCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy53aWR0
aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcigid2lk
dGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJveE1v
ZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc1dpZHRoLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aWR0aC5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgZGltZW5zaW9uc0hlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5oZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoImhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SGVpZ2h0IiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZhdWx0cywg
dHJ1ZSk7CisKKyAgICAgICAgZGltZW5zaW9uc0hlaWdodC5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuaGVpZ2h0LmVsZW1lbnQpOworCisgICAgICAgIGxldCBkaW1lbnNpb25zUHJvcGVy
dGllcyA9IFtwcm9wZXJ0aWVzLndpZHRoLCBwcm9wZXJ0aWVzLmhlaWdodF07CisgICAgICAgIGxl
dCBkaW1lbnNpb25zUmVndWxhckdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtkaW1lbnNpb25zV2lkdGgsIGRpbWVuc2lvbnNIZWlnaHRdKTsKKworICAgICAgICBs
ZXQgZGltZW5zaW9uc01pbldpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLm1pbldpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKCJtaW4td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5kZWZh
dWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01pbldpZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy5taW5XaWR0aC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01p
bkhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAg
cHJvcGVydGllcy5taW5IZWlnaHQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRp
dmVOdW1iZXJTbGlkZXIoIm1pbi1oZWlnaHQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdo
dCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3hNb2RlbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGRpbWVuc2lvbnNNaW5IZWlnaHQuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
Lm1pbkhlaWdodC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZGltZW5zaW9uc01pblByb3BlcnRp
ZXMgPSBbcHJvcGVydGllcy5taW5XaWR0aCwgcHJvcGVydGllcy5taW5IZWlnaHRdOworICAgICAg
ICBsZXQgZGltZW5zaW9uc01pbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFtkaW1lbnNpb25zTWluV2lkdGgsIGRpbWVuc2lvbnNNaW5IZWlnaHRdKTsKKworICAg
ICAgICBsZXQgZGltZW5zaW9uc01heEtleXdvcmRzID0gdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMu
Y29uY2F0KCJOb25lIik7CisgICAgICAgIGxldCBkaW1lbnNpb25zTWF4V2lkdGggPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMubWF4V2lk
dGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1h
eC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgZGltZW5zaW9uc01heEtl
eXdvcmRzLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgZGltZW5zaW9uc01heFdp
ZHRoLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5tYXhXaWR0aC5lbGVtZW50KTsKKwor
ICAgICAgICBsZXQgZGltZW5zaW9uc01heEhlaWdodCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5tYXhIZWlnaHQgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoIm1heC1oZWlnaHQiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBkaW1lbnNpb25zTWF4S2V5d29yZHMsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBkaW1lbnNpb25zTWF4SGVpZ2h0LmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5tYXhIZWlnaHQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0
IGRpbWVuc2lvbnNNYXhQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMubWF4V2lkdGgsIHByb3BlcnRp
ZXMubWF4SGVpZ2h0XTsKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNNYXhHcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbZGltZW5zaW9uc01heFdpZHRoLCBkaW1lbnNp
b25zTWF4SGVpZ2h0XSk7CisKKyAgICAgICAgbGV0IGRpbWVuc2lvbnNUYWJDb250cm9sbGVyID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVRhYmJlZFByb3BlcnRpZXNSb3coeworICAgICAg
ICAgICAgImRlZmF1bHQiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVmYXVsdCIp
LCBlbGVtZW50OiBkaW1lbnNpb25zUmVndWxhckdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGRp
bWVuc2lvbnNQcm9wZXJ0aWVzfSwKKyAgICAgICAgICAgICJtaW4iOiB7dGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTWluIiksIGVsZW1lbnQ6IGRpbWVuc2lvbnNNaW5Hcm91cC5lbGVtZW50
LCBwcm9wZXJ0aWVzOiBkaW1lbnNpb25zTWluUHJvcGVydGllc30sCisgICAgICAgICAgICAibWF4
Ijoge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1heCIpLCBlbGVtZW50OiBkaW1lbnNp
b25zTWF4R3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogZGltZW5zaW9uc01heFByb3BlcnRpZXN9
CisgICAgICAgIH0pOworCisgICAgICAgIGxldCBoaWdobGlnaHRNb2RlID0gImNvbnRlbnQiOwor
ICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy53
aWR0aCwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3Rl
bmVycyhncm91cC5wcm9wZXJ0aWVzLmhlaWdodCwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRo
aXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1pbldpZHRoLCBo
aWdobGlnaHRNb2RlKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdy
b3VwLnByb3BlcnRpZXMubWluSGVpZ2h0LCBoaWdobGlnaHRNb2RlKTsKKyAgICAgICAgdGhpcy5f
YWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMubWF4V2lkdGgsIGhpZ2hs
aWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAu
cHJvcGVydGllcy5tYXhIZWlnaHQsIGhpZ2hsaWdodE1vZGUpOworCisgICAgICAgIGxldCBkaW1l
bnNpb25zR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2RpbWVu
c2lvbnNUYWJDb250cm9sbGVyLCBkaW1lbnNpb25zUmVndWxhckdyb3VwLCBkaW1lbnNpb25zTWlu
R3JvdXAsIGRpbWVuc2lvbnNNYXhHcm91cF0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rp
b24oZ3JvdXAsIFtkaW1lbnNpb25zR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVNYXJn
aW5TZWN0aW9uKCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5tYXJn
aW47CisgICAgICAgIGxldCByb3dzID0gdGhpcy5fZ2VuZXJhdGVNZXRyaWNTZWN0aW9uUm93cyhn
cm91cCwgIm1hcmdpbiIsIHRydWUpOworCisgICAgICAgIGxldCBoaWdobGlnaHRNb2RlID0gIm1h
cmdpbiI7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9w
ZXJ0aWVzLm1hcmdpblRvcCwgaGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJp
Y3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLm1hcmdpbkJvdHRvbSwgaGlnaGxpZ2h0
TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9w
ZXJ0aWVzLm1hcmdpbkxlZnQsIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRy
aWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5tYXJnaW5SaWdodCwgaGlnaGxpZ2h0
TW9kZSk7CisKKyAgICAgICAgbGV0IG1hcmdpbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKHJvd3MpOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3Jv
dXAsIFttYXJnaW5Hcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVBhZGRpbmdTZWN0aW9u
KCkKKyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5wYWRkaW5nOworICAg
ICAgICBsZXQgcm93cyA9IHRoaXMuX2dlbmVyYXRlTWV0cmljU2VjdGlvblJvd3MoZ3JvdXAsICJw
YWRkaW5nIik7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodE1vZGUgPSAicGFkZGluZyI7CisgICAg
ICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhncm91cC5wcm9wZXJ0aWVzLnBhZGRp
bmdUb3AsIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VMaXN0
ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5wYWRkaW5nQm90dG9tLCBoaWdobGlnaHRNb2RlKTsKKyAg
ICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMucGFk
ZGluZ0xlZnQsIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9hZGRNZXRyaWNzTW91c2VM
aXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5wYWRkaW5nUmlnaHQsIGhpZ2hsaWdodE1vZGUpOwor
CisgICAgICAgIGxldCBwYWRkaW5nR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAocm93cyk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3Bh
ZGRpbmdHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZUZsZXhib3hTZWN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5mbGV4Ym94OworICAgICAgICBs
ZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGZsZXhPcmRl
clJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5vcmRlciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJv
eCgib3JkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yZGVyIiksIHRoaXMuX2tleXdvcmRz
LmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy5mbGV4QmFzaXMgPSBuZXcgV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZsZXgtYmFzaXMiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkJhc2lzIiksIHRoaXMuX2tleXdvcmRzLmJveE1vZGVsLCB0aGlzLl91bml0cy5k
ZWZhdWx0cywgdHJ1ZSk7CisKKyAgICAgICAgZmxleE9yZGVyUm93LmVsZW1lbnQuYXBwZW5kQ2hp
bGQocHJvcGVydGllcy5vcmRlci5lbGVtZW50KTsKKyAgICAgICAgZmxleE9yZGVyUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mbGV4QmFzaXMuZWxlbWVudCk7CisKKyAgICAgICAg
bGV0IGZsZXhTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKwor
ICAgICAgICBwcm9wZXJ0aWVzLmZsZXhHcm93ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJmbGV4LWdyb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkdyb3ci
KSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIG51bGwpOworICAgICAgICBwcm9wZXJ0aWVzLmZs
ZXhTaHJpbmsgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImZs
ZXgtc2hyaW5rIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaHJpbmsiKSwgdGhpcy5fa2V5d29y
ZHMuZGVmYXVsdHMsIG51bGwpOworCisgICAgICAgIGZsZXhTaXplUm93LmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5mbGV4R3Jvdy5lbGVtZW50KTsKKyAgICAgICAgZmxleFNpemVSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhTaHJpbmsuZWxlbWVudCk7CisKKyAg
ICAgICAgbGV0IGZsZXhGbG93Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLmZsZXhEaXJlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZmxleC1kaXJlY3Rpb24iLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpcmVjdGlvbiIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJS
b3ciLCAiUm93IFJldmVyc2UiLCAiQ29sdW1uIiwgIkNvbHVtbiBSZXZlcnNlIl0pKTsKKyAgICAg
ICAgcHJvcGVydGllcy5mbGV4V3JhcCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3
b3JkUGlja2VyKCJmbGV4LXdyYXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldyYXAiKSwgdGhp
cy5fa2V5d29yZHMuZGVmYXVsdHMuY29uY2F0KFsiV3JhcCIsICJXcmFwIFJldmVyc2UiLCAiTm93
cmFwIl0pKTsKKworICAgICAgICBmbGV4Rmxvd1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3Bl
cnRpZXMuZmxleERpcmVjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgZmxleEZsb3dSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZsZXhXcmFwLmVsZW1lbnQpOworCisgICAgICAgIGxl
dCBmbGV4Ym94R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2Zs
ZXhPcmRlclJvdywgZmxleFNpemVSb3csIGZsZXhGbG93Um93XSk7CisgICAgICAgIHRoaXMuX3Bv
cHVsYXRlU2VjdGlvbihncm91cCwgW2ZsZXhib3hHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1
bGF0ZVRleHRTdHlsZVNlY3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5f
Z3JvdXBzLnRleHRTdHlsZTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0
aWVzOworCisgICAgICAgIGxldCB0ZXh0QXBwZWFyYW5jZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5jb2xvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiY29sb3IiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbG9yIikpOworICAgICAgICBwcm9wZXJ0aWVzLnRleHREaXJlY3Rpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiZGlyZWN0aW9uIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJEaXJlY3Rpb24iKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMuY29u
Y2F0KFsiTFRSIiwgIlJUTCJdKSk7CisKKyAgICAgICAgdGV4dEFwcGVhcmFuY2VSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmNvbG9yLmVsZW1lbnQpOworICAgICAgICB0ZXh0QXBw
ZWFyYW5jZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMudGV4dERpcmVjdGlvbi5l
bGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dEFsaWduUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLnRleHRBbGlnbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxpc3QoInRleHQtYWxpZ24iLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkFsaWduIiksIFsiTGVmdCIsICJDZW50ZXIiLCAiUmlnaHQiLCAi
SnVzdGlmeSJdKTsKKworICAgICAgICB0ZXh0QWxpZ25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLnRleHRBbGlnbi5lbGVtZW50KTsKKworICAgICAgICBsZXQgdGV4dFRyYW5zZm9y
bVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy50ZXh0VHJhbnNmb3JtID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRJY29uTGlzdCgidGV4dC10cmFuc2Zvcm0iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRyYW5z
Zm9ybSIpLCBbIkNhcGl0YWxpemUiLCAiVXBwZXJjYXNlIiwgIkxvd2VyY2FzZSIsICJOb25lIl0p
OworCisgICAgICAgIHRleHRUcmFuc2Zvcm1Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLnRleHRUcmFuc2Zvcm0uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRleHREZWNvcmF0aW9u
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9w
ZXJ0aWVzLnRleHREZWNvcmF0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdv
cmRJY29uTGlzdCgidGV4dC1kZWNvcmF0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWNv
cmF0aW9uIiksIFsiVW5kZXJsaW5lIiwgIkxpbmUgVGhyb3VnaCIsICJPdmVybGluZSIsICJOb25l
Il0pOworCisgICAgICAgIHRleHREZWNvcmF0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJv
cGVydGllcy50ZXh0RGVjb3JhdGlvbi5lbGVtZW50KTsKKworICAgICAgICBncm91cC5hdXRvY29t
cGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmNvbG9yXTsKKworICAgICAg
ICBsZXQgdGV4dFN0eWxlR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3Jv
dXAoW3RleHRBcHBlYXJhbmNlUm93LCB0ZXh0QWxpZ25Sb3csIHRleHRUcmFuc2Zvcm1Sb3csIHRl
eHREZWNvcmF0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwg
W3RleHRTdHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlRm9udFNlY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLmZvbnQ7CisgICAgICAgIGxl
dCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBsZXQgZm9udEZhbWls
eVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJv
cGVydGllcy5mb250RmFtaWx5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUZvbnRGYW1p
bHlMaXN0RWRpdG9yKCJmb250LWZhbWlseSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmFtaWx5
IikpOworCisgICAgICAgIGZvbnRGYW1pbHlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0
aWVzLmZvbnRGYW1pbHkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGZvbnRTaXplUm93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmZv
bnRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJmb250
LXNpemUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemUiKSwgdGhpcy5fa2V5d29yZHMuZGVm
YXVsdHMuY29uY2F0KFsiTGFyZ2VyIiwgIlhYIExhcmdlIiwgIlggTGFyZ2UiLCAiTGFyZ2UiLCAi
TWVkaXVtIiwgIlNtYWxsIiwgIlggU21hbGwiLCAiWFggU21hbGwiLCAiU21hbGxlciJdKSwgdGhp
cy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuZm9udFdlaWdodCA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJmb250LXdlaWdodCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiV2VpZ2h0IiksIHsKKyAgICAgICAgICAgIGJhc2ljOiB0aGlz
Ll9rZXl3b3Jkcy5kZWZhdWx0cy5jb25jYXQoWyJCb2xkZXIiLCAiQm9sZCIsICJOb3JtYWwiLCAi
TGlnaHRlciJdKSwKKyAgICAgICAgICAgIGFkdmFuY2VkOiBbIjEwMCIsICIyMDAiLCAiMzAwIiwg
IjQwMCIsICI1MDAiLCAiNjAwIiwgIjcwMCIsICI4MDAiLCAiOTAwIl0KKyAgICAgICAgfSk7CisK
KyAgICAgICAgZm9udFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmZvbnRT
aXplLmVsZW1lbnQpOworICAgICAgICBmb250U2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuZm9udFdlaWdodC5lbGVtZW50KTsKKworICAgICAgICBsZXQgZm9udFN0eWxlUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0
aWVzLmZvbnRTdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkSWNvbkxp
c3QoImZvbnQtc3R5bGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0eWxlIiksIFsiSXRhbGlj
IiwgIk5vcm1hbCJdKTsKKyAgICAgICAgcHJvcGVydGllcy5mb250VmFyaWFudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkQ2hlY2tib3goImZvbnQtdmFyaWFudCIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVmFyaWFudCIpLCAiU21hbGwgQ2FwcyIpCisKKyAgICAgICAgZm9u
dFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5mb250U3R5bGUuZWxlbWVu
dCk7CisgICAgICAgIGZvbnRTdHlsZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMu
Zm9udFZhcmlhbnQuZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0
aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5mb250RmFtaWx5XTsKKworICAgICAgICBsZXQg
Zm9udEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtmb250RmFt
aWx5Um93LCBmb250U2l6ZVJvdywgZm9udFN0eWxlUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVs
YXRlU2VjdGlvbihncm91cCwgW2ZvbnRHcm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRl
eHRTcGFjaW5nU2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91
cHMudGV4dFNwYWNpbmc7CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGll
czsKKworICAgICAgICBsZXQgZGVmYXVsdFRleHRLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmRl
ZmF1bHRzLmNvbmNhdChbIk5vcm1hbCJdKTsKKworICAgICAgICBsZXQgdGV4dExheW91dFJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGll
cy5saW5lSGVpZ2h0ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJsaW5lLWhlaWdodCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGVpZ2h0IiksIGRlZmF1bHRU
ZXh0S2V5d29yZHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy52
ZXJ0aWNhbEFsaWduID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
KCJ2ZXJ0aWNhbC1hbGlnbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxpZ24iKSwgWyJCYXNl
bGluZSIsICJCb3R0b20iXS5jb25jYXQodGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIFsiTWlkZGxl
IiwgIlN1YiIsICJTdXBlciIsICJUZXh0IEJvdHRvbSIsICJUZXh0IFRvcCIsICJUb3AiXSksIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0TGF5b3V0Um93LmVsZW1lbnQuYXBw
ZW5kQ2hpbGQocHJvcGVydGllcy5saW5lSGVpZ2h0LmVsZW1lbnQpOworICAgICAgICB0ZXh0TGF5
b3V0Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy52ZXJ0aWNhbEFsaWduLmVsZW1l
bnQpOworCisgICAgICAgIGxldCB0ZXh0U3BhY2luZ1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5sZXR0ZXJTcGFjaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJsZXR0ZXItc3BhY2luZyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGV0dGVyIiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRo
aXMuX3VuaXRzLmRlZmF1bHRzKTsKKyAgICAgICAgcHJvcGVydGllcy53b3JkU3BhY2luZyA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgid29yZC1zcGFjaW5nIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXb3JkIiksIGRlZmF1bHRUZXh0S2V5d29yZHMsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICB0ZXh0U3BhY2luZ1Jvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHByb3BlcnRpZXMubGV0dGVyU3BhY2luZy5lbGVtZW50KTsKKyAgICAgICAgdGV4dFNw
YWNpbmdSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLndvcmRTcGFjaW5nLmVsZW1l
bnQpOworCisgICAgICAgIGxldCB0ZXh0V2hpdGVzcGFjZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy50ZXh0SW5kZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0ZXh0LWluZGVudCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSW5kZW50IiksIHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLCB0
aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMud2hpdGVTcGFjZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJ3aGl0ZS1zcGFjZSIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiV2hpdGVzcGFjZSIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0
cy5jb25jYXQoWyJOb3JtYWwiLCAiTm93cmFwIiwgIlByZSIsICJQcmUgTGluZSIsICJQcmUgV3Jh
cCJdKSk7CisKKyAgICAgICAgdGV4dFdoaXRlc3BhY2VSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLnRleHRJbmRlbnQuZWxlbWVudCk7CisgICAgICAgIHRleHRXaGl0ZXNwYWNlUm93
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy53aGl0ZVNwYWNlLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCB0ZXh0U3BhY2luZ0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0ZXh0TGF5b3V0Um93LCB0ZXh0U3BhY2luZ1JvdywgdGV4dFdoaXRlc3BhY2VS
b3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3VwLCBbdGV4dFNwYWNpbmdH
cm91cF0pOworICAgIH0KKworICAgIF9wb3B1bGF0ZVRleHRTaGFkb3dTZWN0aW9uKCkKKyAgICB7
CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy50ZXh0U2hhZG93OworICAgICAgICBs
ZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IHRleHRTaGFk
b3dTaXppbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAg
IGxldCB0ZXh0U2hhZG93SCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1
dEJveCgidGV4dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhvcml6b250YWwiKSwg
bnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCk7CisgICAgICAgIGxldCB0ZXh0
U2hhZG93ViA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgidGV4
dC1zaGFkb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZlcnRpY2FsIiksIG51bGwsIHRoaXMu
X3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworCisgICAgICAgIHRleHRTaGFkb3dTaXppbmcu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93SC5lbGVtZW50KTsKKyAgICAgICAgdGV4dFNo
YWRvd1NpemluZy5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dWLmVsZW1lbnQpOworCisg
ICAgICAgIGxldCB0ZXh0U2hhZG93U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUm93OworCisgICAgICAgIGxldCB0ZXh0U2hhZG93Q29sb3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb2xvciIpKTsKKyAgICAgICAgdGV4dFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0
cnVlOworICAgICAgICBsZXQgdGV4dFNoYWRvd0JsdXIgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3goInRleHQtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJCbHVyIiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAg
ICB0ZXh0U2hhZG93Qmx1ci5vcHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICB0ZXh0
U2hhZG93U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0U2hhZG93Q29sb3IuZWxlbWVudCk7
CisgICAgICAgIHRleHRTaGFkb3dTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHRleHRTaGFkb3dC
bHVyLmVsZW1lbnQpOworCisgICAgICAgIHByb3BlcnRpZXMudGV4dFNoYWRvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0ZXh0LXNoYWRvdyIsIFt0ZXh0
U2hhZG93SCwgdGV4dFNoYWRvd1YsIHRleHRTaGFkb3dCbHVyLCB0ZXh0U2hhZG93Q29sb3JdKTsK
KworICAgICAgICBncm91cC5hdXRvY29tcGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFt0ZXh0
U2hhZG93Q29sb3JdOworCisgICAgICAgIGxldCB0ZXh0U2hhZG93R3JvdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RleHRTaGFkb3dTaXppbmcsIHRleHRTaGFkb3dT
dHlsZV0pOworICAgICAgICB0aGlzLl9wb3B1bGF0ZVNlY3Rpb24oZ3JvdXAsIFt0ZXh0U2hhZG93
R3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVCYWNrZ3JvdW5kU3R5bGVTZWN0aW9uKCkK
KyAgICB7CisgICAgICAgIGxldCBncm91cCA9IHRoaXMuX2dyb3Vwcy5iYWNrZ3JvdW5kU3R5bGU7
CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAgICBs
ZXQgYmFja2dyb3VuZFN0eWxlUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYmFja2dyb3VuZC1jb2xvciIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZEltYWdl
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVVSTElucHV0KCJiYWNrZ3JvdW5kLWltYWdl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbWFnZSIpKTsKKworICAgICAgICBiYWNrZ3JvdW5k
U3R5bGVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvci5l
bGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJvcGVydGllcy5iYWNrZ3JvdW5kSW1hZ2UuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tn
cm91bmRTaXplUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAg
ICAgICBsZXQgYmFja2dyb3VuZFNpemVLZXl3b3JkcyA9IHRoaXMuX2tleXdvcmRzLmJveE1vZGVs
LmNvbmNhdChbIkNvbnRhaW4iLCAiQ292ZXIiXSk7CisgICAgICAgIGxldCBiYWNrZ3JvdW5kU2l6
ZVggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJhY2tncm91
bmQtc2l6ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgYmFja2dyb3VuZFNpemVL
ZXl3b3JkcywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworICAgICAgICBiYWNrZ3JvdW5kU2l6ZVgu
bWFzdGVyUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYmFja2dyb3VuZFNpemVZID0gbmV3
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXNpemUi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhlaWdodCIpLCBiYWNrZ3JvdW5kU2l6ZUtleXdvcmRz
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIGJhY2tncm91bmRTaXplWS5tYXN0ZXJQ
cm9wZXJ0eSA9IHRydWU7CisKKyAgICAgICAgcHJvcGVydGllcy5iYWNrZ3JvdW5kU2l6ZSA9IG5l
dyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJiYWNrZ3JvdW5kLXNp
emUiLCBbYmFja2dyb3VuZFNpemVYLCBiYWNrZ3JvdW5kU2l6ZVldKTsKKworICAgICAgICBiYWNr
Z3JvdW5kU2l6ZVJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRTaXplWC5lbGVtZW50
KTsKKyAgICAgICAgYmFja2dyb3VuZFNpemVSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChiYWNrZ3Jv
dW5kU2l6ZVkuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRSZXBlYXRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMu
YmFja2dyb3VuZFJlcGVhdCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlj
a2VyKCJiYWNrZ3JvdW5kLXJlcGVhdCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwZWF0Iiks
IHRoaXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIk5vIFJlcGVhdCIsICJSZXBlYXQiLCAi
UmVwZWF0IFgiLCAiUmVwZWF0IFkiXSkpOworICAgICAgICBwcm9wZXJ0aWVzLmJhY2tncm91bmRB
dHRhY2htZW50ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJh
Y2tncm91bmQtYXR0YWNobWVudCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXR0YWNoIiksIHRo
aXMuX2tleXdvcmRzLmRlZmF1bHRzLmNvbmNhdChbIkZpeGVkIiwgIkxvY2FsIiwgIlNjcm9sbCJd
KSk7CisKKyAgICAgICAgYmFja2dyb3VuZFJlcGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHBy
b3BlcnRpZXMuYmFja2dyb3VuZFJlcGVhdC5lbGVtZW50KTsKKyAgICAgICAgYmFja2dyb3VuZFJl
cGVhdFJvdy5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYmFja2dyb3VuZEF0dGFjaG1l
bnQuZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRQb3NpdGlvblJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJhY2tncm91bmRQ
b3NpdGlvblggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJh
Y2tncm91bmQtcG9zaXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBvc2l0aW9uIFgiKSwg
WyJDZW50ZXIiLCAiTGVmdCIsICJSaWdodCJdLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisgICAg
ICAgIGxldCBiYWNrZ3JvdW5kUG9zaXRpb25ZID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJQb3NpdGlvbiBZIiksIFsiQm90dG9tIiwgIkNlbnRlciIsICJUb3AiXSwgdGhpcy5fdW5p
dHMuZGVmYXVsdHMpOworCisgICAgICAgIHByb3BlcnRpZXMuYmFja2dyb3VuZFBvc2l0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5Q29tYmluZXIoImJhY2tncm91bmQt
cG9zaXRpb24iLCBbYmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3VuZFBvc2l0aW9uWV0pOwor
CisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJhY2tn
cm91bmRQb3NpdGlvblguZWxlbWVudCk7CisgICAgICAgIGJhY2tncm91bmRQb3NpdGlvblJvdy5l
bGVtZW50LmFwcGVuZENoaWxkKGJhY2tncm91bmRQb3NpdGlvblkuZWxlbWVudCk7CisKKyAgICAg
ICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5i
YWNrZ3JvdW5kQ29sb3JdOworCisgICAgICAgIGxldCBiYWNrZ3JvdW5kU3R5bGVHcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYmFja2dyb3VuZFN0eWxlUm93LCBi
YWNrZ3JvdW5kU2l6ZVJvdywgYmFja2dyb3VuZFJlcGVhdFJvdywgYmFja2dyb3VuZFBvc2l0aW9u
Um93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW2JhY2tncm91bmRT
dHlsZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm9yZGVyU2VjdGlvbigpCisgICAg
eworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm9yZGVyOworICAgICAgICBsZXQg
cHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0IGJvcmRlckFsbFNp
emUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyU3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlS2V5d29yZFBp
Y2tlcihbImJvcmRlci10b3Atc3R5bGUiLCAiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgImJvcmRlci1i
b3R0b20tc3R5bGUiLCAiYm9yZGVyLWxlZnQtc3R5bGUiXSAsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3R5bGUiKSwgdGhpcy5fa2V5d29yZHMuYm9yZGVyU3R5bGUpOworICAgICAgICBwcm9wZXJ0
aWVzLmJvcmRlclN0eWxlLnByb3BlcnR5UmVmZXJlbmNlTmFtZSA9ICJib3JkZXItc3R5bGUiOwor
ICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94KFsiYm9yZGVyLXRvcC13aWR0aCIsICJib3JkZXItcmlnaHQtd2lk
dGgiLCAiYm9yZGVyLWJvdHRvbS13aWR0aCIsICJib3JkZXItbGVmdC13aWR0aCJdLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlz
Ll91bml0cy5kZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyV2lkdGgucHJvcGVy
dHlSZWZlcmVuY2VOYW1lID0gImJvcmRlci13aWR0aCI7CisKKyAgICAgICAgYm9yZGVyQWxsU2l6
ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyU3R5bGUuZWxlbWVudCk7Cisg
ICAgICAgIGJvcmRlckFsbFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRl
cldpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJBbGxTdHlsZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJD
b2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcihbImJvcmRlci10
b3AtY29sb3IiLCAiYm9yZGVyLXJpZ2h0LWNvbG9yIiwgImJvcmRlci1ib3R0b20tY29sb3IiLCAi
Ym9yZGVyLWxlZnQtY29sb3IiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb2xvciIpKTsKKyAg
ICAgICAgcHJvcGVydGllcy5ib3JkZXJDb2xvci5wcm9wZXJ0eVJlZmVyZW5jZU5hbWUgPSAiYm9y
ZGVyLWNvbG9yIjsKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMgPSBuZXcgV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goWyJib3JkZXItdG9wLWxlZnQtcmFkaXVz
IiwgImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwgImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMi
LCAiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMiXSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
YWRpdXMiKSwgdGhpcy5fa2V5d29yZHMuZGVmYXVsdHMsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsK
KyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJSYWRpdXMucHJvcGVydHlSZWZlcmVuY2VOYW1lID0g
ImJvcmRlci1yYWRpdXMiOworCisgICAgICAgIGJvcmRlckFsbFN0eWxlLmVsZW1lbnQuYXBwZW5k
Q2hpbGQocHJvcGVydGllcy5ib3JkZXJDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyQWxs
U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJhZGl1cy5lbGVtZW50
KTsKKworICAgICAgICBsZXQgYm9yZGVyQWxsUHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRl
clN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckNvbG9yLCBw
cm9wZXJ0aWVzLmJvcmRlclJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJBbGxHcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQWxsU2l6ZSwgYm9yZGVy
QWxsU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVG9wU2l6ZSA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BTdHls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2VyKCJib3JkZXItdG9w
LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5i
b3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyVG9wV2lkdGggPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJvcmRlci10b3Atd2lkdGgiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRo
LCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAgYm9yZGVyVG9wU2l6ZS5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyVG9wU3R5bGUuZWxlbWVudCk7CisgICAgICAg
IGJvcmRlclRvcFNpemUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclRvcFdp
ZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJUb3BTdHlsZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJUb3BD
b2xvciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLXRv
cC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyVG9wUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJl
cklucHV0Qm94KFsiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsICJib3JkZXItdG9wLXJpZ2h0LXJh
ZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5k
ZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclRvcFN0eWxl
LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJUb3BDb2xvci5lbGVtZW50KTsK
KyAgICAgICAgYm9yZGVyVG9wU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJv
cmRlclRvcFJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyVG9wUHJvcGVydGll
cyA9IFtwcm9wZXJ0aWVzLmJvcmRlclRvcFN0eWxlLCBwcm9wZXJ0aWVzLmJvcmRlclRvcFdpZHRo
LCBwcm9wZXJ0aWVzLmJvcmRlclRvcENvbG9yLCBwcm9wZXJ0aWVzLmJvcmRlclRvcFJhZGl1c107
CisgICAgICAgIGxldCBib3JkZXJUb3BHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Hcm91cChbYm9yZGVyVG9wU2l6ZSwgYm9yZGVyVG9wU3R5bGVdKTsKKworICAgICAgICBs
ZXQgYm9yZGVyUmlnaHRTaXplID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsK
KworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0U3R5bGUgPSBuZXcgV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlS2V5d29yZFBpY2tlcigiYm9yZGVyLXJpZ2h0LXN0eWxlIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAg
ICAgIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveCgiYm9yZGVyLXJpZ2h0LXdpZHRoIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJXaWR0aCIpLCB0aGlzLl9rZXl3b3Jkcy5ib3JkZXJXaWR0aCwgdGhpcy5fdW5pdHMu
ZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJpZ2h0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxk
KHByb3BlcnRpZXMuYm9yZGVyUmlnaHRTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgYm9yZGVyUmln
aHRTaXplLmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJSaWdodFdpZHRoLmVs
ZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJSaWdodFN0eWxlID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdzsKKworICAgICAgICBwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29s
b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlQ29sb3JQaWNrZXIoImJvcmRlci1yaWdo
dC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyUmlnaHRSYWRpdXMgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3goWyJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJp
Z2h0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3
b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlclJp
Z2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlclJpZ2h0Q29sb3Iu
ZWxlbWVudCk7CisgICAgICAgIGJvcmRlclJpZ2h0U3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzLmJvcmRlclJpZ2h0UmFkaXVzLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3Jk
ZXJSaWdodFByb3BlcnRpZXMgPSBbcHJvcGVydGllcy5ib3JkZXJSaWdodFN0eWxlLCBwcm9wZXJ0
aWVzLmJvcmRlclJpZ2h0V2lkdGgsIHByb3BlcnRpZXMuYm9yZGVyUmlnaHRDb2xvciwgcHJvcGVy
dGllcy5ib3JkZXJSaWdodFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJSaWdodEdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJSaWdodFNpemUsIGJv
cmRlclJpZ2h0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9tU2l6ZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3Jk
ZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVLZXl3b3JkUGlja2Vy
KCJib3JkZXItYm90dG9tLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0
aGlzLl9rZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90
dG9tV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3goImJv
cmRlci1ib3R0b20td2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIiksIHRoaXMu
X2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5kZWZhdWx0cyk7CisKKyAgICAgICAg
Ym9yZGVyQm90dG9tU2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyQm90
dG9tU3R5bGUuZWxlbWVudCk7CisgICAgICAgIGJvcmRlckJvdHRvbVNpemUuZWxlbWVudC5hcHBl
bmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLmVsZW1lbnQpOworCisgICAgICAg
IGxldCBib3JkZXJCb3R0b21TdHlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3c7CisKKyAgICAgICAgcHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm9yZGVyLWJvdHRvbS1jb2xvciIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29sb3IiKSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyQm90
dG9tUmFkaXVzID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KFsi
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsICJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyJd
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0
cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisgICAgICAgIGJvcmRlckJvdHRvbVN0eWxlLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5ib3JkZXJCb3R0b21Db2xvci5lbGVtZW50KTsK
KyAgICAgICAgYm9yZGVyQm90dG9tU3R5bGUuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LmJvcmRlckJvdHRvbVJhZGl1cy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm9yZGVyQm90dG9t
UHJvcGVydGllcyA9IFtwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVN0eWxlLCBwcm9wZXJ0aWVzLmJv
cmRlckJvdHRvbVdpZHRoLCBwcm9wZXJ0aWVzLmJvcmRlckJvdHRvbUNvbG9yLCBwcm9wZXJ0aWVz
LmJvcmRlckJvdHRvbVJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJCb3R0b21Hcm91cCA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbYm9yZGVyQm90dG9tU2l6ZSwgYm9y
ZGVyQm90dG9tU3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyTGVmdFNpemUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVy
TGVmdFN0eWxlID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoImJv
cmRlci1sZWZ0LXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9r
ZXl3b3Jkcy5ib3JkZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFdpZHRo
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3JkZXItbGVm
dC13aWR0aCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2lkdGgiKSwgdGhpcy5fa2V5d29yZHMu
Ym9yZGVyV2lkdGgsIHRoaXMuX3VuaXRzLmRlZmF1bHRzKTsKKworICAgICAgICBib3JkZXJMZWZ0
U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxlLmVsZW1l
bnQpOworICAgICAgICBib3JkZXJMZWZ0U2l6ZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRp
ZXMuYm9yZGVyTGVmdFdpZHRoLmVsZW1lbnQpOworCisgICAgICAgIGxldCBib3JkZXJMZWZ0U3R5
bGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3Bl
cnRpZXMuYm9yZGVyTGVmdENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbG9y
UGlja2VyKCJib3JkZXItbGVmdC1jb2xvciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sb3Ii
KSk7CisgICAgICAgIHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1cyA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveChbImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCAi
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyJdLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJhZGl1
cyIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5fdW5pdHMuZGVmYXVsdHMpOworCisg
ICAgICAgIGJvcmRlckxlZnRTdHlsZS5lbGVtZW50LmFwcGVuZENoaWxkKHByb3BlcnRpZXMuYm9y
ZGVyTGVmdENvbG9yLmVsZW1lbnQpOworICAgICAgICBib3JkZXJMZWZ0U3R5bGUuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJvcmRlckxlZnRSYWRpdXMuZWxlbWVudCk7CisKKyAgICAg
ICAgbGV0IGJvcmRlckxlZnRQcm9wZXJ0aWVzID0gW3Byb3BlcnRpZXMuYm9yZGVyTGVmdFN0eWxl
LCBwcm9wZXJ0aWVzLmJvcmRlckxlZnRXaWR0aCwgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3Is
IHByb3BlcnRpZXMuYm9yZGVyTGVmdFJhZGl1c107CisgICAgICAgIGxldCBib3JkZXJMZWZ0R3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JvcmRlckxlZnRTaXpl
LCBib3JkZXJMZWZ0U3R5bGVdKTsKKworICAgICAgICBsZXQgYm9yZGVyVGFiQ29udHJvbGxlciA9
IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVUYWJiZWRQcm9wZXJ0aWVzUm93KHsKKyAgICAg
ICAgICAgICJhbGwiOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIiksIGVsZW1l
bnQ6IGJvcmRlckFsbEdyb3VwLmVsZW1lbnQsIHByb3BlcnRpZXM6IGJvcmRlckFsbFByb3BlcnRp
ZXN9LAorICAgICAgICAgICAgInRvcCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
b3AiKSwgZWxlbWVudDogYm9yZGVyVG9wR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVy
VG9wUHJvcGVydGllc30sCisgICAgICAgICAgICAicmlnaHQiOiB7dGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmlnaHQiKSwgZWxlbWVudDogYm9yZGVyUmlnaHRHcm91cC5lbGVtZW50LCBw
cm9wZXJ0aWVzOiBib3JkZXJSaWdodFByb3BlcnRpZXN9LAorICAgICAgICAgICAgImJvdHRvbSI6
IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3R0b20iKSwgZWxlbWVudDogYm9yZGVy
Qm90dG9tR3JvdXAuZWxlbWVudCwgcHJvcGVydGllczogYm9yZGVyQm90dG9tUHJvcGVydGllc30s
CisgICAgICAgICAgICAibGVmdCI6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMZWZ0
IiksIGVsZW1lbnQ6IGJvcmRlckxlZnRHcm91cC5lbGVtZW50LCBwcm9wZXJ0aWVzOiBib3JkZXJM
ZWZ0UHJvcGVydGllc30KKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGhpZ2hsaWdodE1vZGUg
PSAiYm9yZGVyIjsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3Vw
LnByb3BlcnRpZXMuYm9yZGVyV2lkdGgsIGhpZ2hsaWdodE1vZGUpOworICAgICAgICB0aGlzLl9h
ZGRNZXRyaWNzTW91c2VMaXN0ZW5lcnMoZ3JvdXAucHJvcGVydGllcy5ib3JkZXJUb3BXaWR0aCwg
aGlnaGxpZ2h0TW9kZSk7CisgICAgICAgIHRoaXMuX2FkZE1ldHJpY3NNb3VzZUxpc3RlbmVycyhn
cm91cC5wcm9wZXJ0aWVzLmJvcmRlckJvdHRvbVdpZHRoLCBoaWdobGlnaHRNb2RlKTsKKyAgICAg
ICAgdGhpcy5fYWRkTWV0cmljc01vdXNlTGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVy
TGVmdFdpZHRoLCBoaWdobGlnaHRNb2RlKTsKKyAgICAgICAgdGhpcy5fYWRkTWV0cmljc01vdXNl
TGlzdGVuZXJzKGdyb3VwLnByb3BlcnRpZXMuYm9yZGVyUmlnaHRXaWR0aCwgaGlnaGxpZ2h0TW9k
ZSk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBb
cHJvcGVydGllcy5ib3JkZXJDb2xvciwgcHJvcGVydGllcy5ib3JkZXJUb3BDb2xvciwgcHJvcGVy
dGllcy5ib3JkZXJCb3R0b21Db2xvciwgcHJvcGVydGllcy5ib3JkZXJMZWZ0Q29sb3IsIHByb3Bl
cnRpZXMuYm9yZGVyUmlnaHRDb2xvcl07CisKKyAgICAgICAgbGV0IGJvcmRlckdyb3VwID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtib3JkZXJUYWJDb250cm9sbGVyLCBi
b3JkZXJBbGxHcm91cCwgYm9yZGVyVG9wR3JvdXAsIGJvcmRlclJpZ2h0R3JvdXAsIGJvcmRlckJv
dHRvbUdyb3VwLCBib3JkZXJMZWZ0R3JvdXBdKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0
aW9uKGdyb3VwLCBbYm9yZGVyR3JvdXBdKTsKKyAgICB9CisKKyAgICBfcG9wdWxhdGVPdXRsaW5l
U2VjdGlvbigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMub3V0bGlu
ZTsKKyAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBncm91cC5wcm9wZXJ0aWVzOworCisgICAgICAg
IGxldCBvdXRsaW5lU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy5vdXRsaW5lV2lkdGggPSBuZXcgV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3goIm91dGxpbmUtd2lkdGgiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldpZHRoIiksIHRoaXMuX2tleXdvcmRzLmJvcmRlcldpZHRoLCB0aGlzLl91bml0cy5k
ZWZhdWx0cyk7CisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZU9mZnNldCA9IG5ldyBXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCgib3V0bGluZS1vZmZzZXQiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk9mZnNldCIpLCB0aGlzLl9rZXl3b3Jkcy5kZWZhdWx0cywgdGhpcy5f
dW5pdHMuZGVmYXVsdHMsIHRydWUpOworCisgICAgICAgIG91dGxpbmVTaXplUm93LmVsZW1lbnQu
YXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lV2lkdGguZWxlbWVudCk7CisgICAgICAgIG91
dGxpbmVTaXplUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lT2Zmc2V0
LmVsZW1lbnQpOworCisgICAgICAgIGxldCBvdXRsaW5lU3R5bGVSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZVN0eWxl
ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUtleXdvcmRQaWNrZXIoIm91dGxpbmUtc3R5
bGUiICwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCB0aGlzLl9rZXl3b3Jkcy5ib3Jk
ZXJTdHlsZSk7CisgICAgICAgIHByb3BlcnRpZXMub3V0bGluZUNvbG9yID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZUNvbG9yUGlja2VyKCJvdXRsaW5lLWNvbG9yIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb2xvciIpKTsKKworICAgICAgICBvdXRsaW5lU3R5bGVSb3cuZWxlbWVudC5h
cHBlbmRDaGlsZChwcm9wZXJ0aWVzLm91dGxpbmVTdHlsZS5lbGVtZW50KTsKKyAgICAgICAgb3V0
bGluZVN0eWxlUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllcy5vdXRsaW5lQ29sb3Iu
ZWxlbWVudCk7CisKKyAgICAgICAgZ3JvdXAuYXV0b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRp
ZXMgPSBbcHJvcGVydGllcy5vdXRsaW5lQ29sb3JdOworCisgICAgICAgIGxldCBvdXRsaW5lR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW291dGxpbmVTaXplUm93
LCBvdXRsaW5lU3R5bGVSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9uKGdyb3Vw
LCBbb3V0bGluZUdyb3VwXSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlQm94U2hhZG93U2VjdGlv
bigpCisgICAgeworICAgICAgICBsZXQgZ3JvdXAgPSB0aGlzLl9ncm91cHMuYm94U2hhZG93Owor
ICAgICAgICBsZXQgcHJvcGVydGllcyA9IGdyb3VwLnByb3BlcnRpZXM7CisKKyAgICAgICAgbGV0
IGJveFNoYWRvd1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAg
ICAgICAgcHJvcGVydGllcy5ib3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
Q29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yKCJib3gtc2hhZG93Iik7CisgICAgICAgIHByb3Bl
cnRpZXMuYm94U2hhZG93LmVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9ICIxMXB4IjsKKworICAg
ICAgICBib3hTaGFkb3dSb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzLmJveFNoYWRv
dy5lbGVtZW50KTsKKworICAgICAgICBsZXQgYm94U2hhZG93SFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd0ggPSBuZXcgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIoImJveC1zaGFkb3ciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxlZnQiKSwgbnVsbCwgdGhpcy5fdW5pdHMuZGVmYXVsdHNT
YW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93SFJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKGJveFNoYWRvd0guZWxlbWVudCk7CisKKyAgICAgICAgbGV0IGJveFNoYWRvd1ZSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCBib3hT
aGFkb3dWID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVy
KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3AiKSwgbnVsbCwgdGhpcy5f
dW5pdHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisKKyAgICAgICAgYm94U2hhZG93VlJv
dy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd1YuZWxlbWVudCk7CisKKyAgICAgICAgbGV0
IGJveFNoYWRvd0JsdXJSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Owor
CisgICAgICAgIGxldCBib3hTaGFkb3dCbHVyID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCbHVy
IiksIG51bGwsIHRoaXMuX3VuaXRzLmRlZmF1bHRzU2Fuc1BlcmNlbnQpOworICAgICAgICBib3hT
aGFkb3dCbHVyLm9wdGlvbmFsUHJvcGVydHkgPSB0cnVlOworICAgICAgICBsZXQgYm94U2hhZG93
U3ByZWFkID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJib3gt
c2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTcHJlYWQiKSwgbnVsbCwgdGhpcy5fdW5p
dHMuZGVmYXVsdHNTYW5zUGVyY2VudCwgdHJ1ZSk7CisgICAgICAgIGJveFNoYWRvd1NwcmVhZC5v
cHRpb25hbFByb3BlcnR5ID0gdHJ1ZTsKKworICAgICAgICBib3hTaGFkb3dCbHVyUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQoYm94U2hhZG93Qmx1ci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93
Qmx1clJvdy5lbGVtZW50LmFwcGVuZENoaWxkKGJveFNoYWRvd1NwcmVhZC5lbGVtZW50KTsKKwor
ICAgICAgICBsZXQgYm94U2hhZG93Q29sb3JSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93OworCisgICAgICAgIGxldCBib3hTaGFkb3dDb2xvciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVDb2xvclBpY2tlcigiYm94LXNoYWRvdyIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29sb3IiKSk7CisgICAgICAgIGJveFNoYWRvd0NvbG9yLmNvbG9yUHJvcGVydHkgPSB0
cnVlOworICAgICAgICBsZXQgYm94U2hhZG93SW5zZXQgPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlS2V5d29yZENoZWNrYm94KCJib3gtc2hhZG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJJbnNldCIpLCAiSW5zZXQiKTsKKyAgICAgICAgYm94U2hhZG93SW5zZXQub3B0aW9uYWxQcm9w
ZXJ0eSA9IHRydWU7CisKKyAgICAgICAgYm94U2hhZG93Q29sb3JSb3cuZWxlbWVudC5hcHBlbmRD
aGlsZChib3hTaGFkb3dDb2xvci5lbGVtZW50KTsKKyAgICAgICAgYm94U2hhZG93Q29sb3JSb3cu
ZWxlbWVudC5hcHBlbmRDaGlsZChib3hTaGFkb3dJbnNldC5lbGVtZW50KTsKKworICAgICAgICBs
ZXQgYm94U2hhZG93UHJvcGVydHlDb21iaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUNvbWJpbmVyKCJib3gtc2hhZG93IiwgW2JveFNoYWRvd0gsIGJveFNoYWRvd1Ys
IGJveFNoYWRvd0JsdXIsIGJveFNoYWRvd1NwcmVhZCwgYm94U2hhZG93Q29sb3IsIGJveFNoYWRv
d0luc2V0XSk7CisKKyAgICAgICAgZnVuY3Rpb24gbm9SZW1haW5pbmdUcmVlSXRlbXMoKSB7Cisg
ICAgICAgICAgICBib3hTaGFkb3dQcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0
KCIiKTsKKyAgICAgICAgICAgIGJveFNoYWRvd0guZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAg
ICAgYm94U2hhZG93Vi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dCbHVy
LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJveFNoYWRvd1NwcmVhZC5kaXNhYmxlZCA9
IHRydWU7CisgICAgICAgICAgICBib3hTaGFkb3dDb2xvci5kaXNhYmxlZCA9IHRydWU7CisgICAg
ICAgICAgICBib3hTaGFkb3dJbnNldC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgcHJvcGVydGllcy5ib3hTaGFkb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVDb21tYVNlcGFyYXRlZEtleXdvcmRFZGl0b3IuRXZlbnQuTm9SZW1haW5pbmdUcmVl
SXRlbXMsIG5vUmVtYWluaW5nVHJlZUl0ZW1zLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiBz
ZWxlY3RlZEJveFNoYWRvd0l0ZW1WYWx1ZUNoYW5nZWQoKSB7CisgICAgICAgICAgICBwcm9wZXJ0
aWVzLmJveFNoYWRvdy5zZWxlY3RlZFRyZWVFbGVtZW50VmFsdWUgPSBib3hTaGFkb3dQcm9wZXJ0
eUNvbWJpbmVyLnN5bnRoZXNpemVkVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgYm94U2hhZG93
UHJvcGVydHlDb21iaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCBzZWxlY3RlZEJveFNoYWRvd0l0
ZW1WYWx1ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIGJveFNoYWRvd0l0ZW1T
ZWxlY3RlZChldmVudCkgeworICAgICAgICAgICAgYm94U2hhZG93UHJvcGVydHlDb21iaW5lci51
cGRhdGVWYWx1ZXNGcm9tVGV4dChldmVudC5kYXRhLnRleHQgfHwgIiIpOworICAgICAgICB9Cisg
ICAgICAgIHByb3BlcnRpZXMuYm94U2hhZG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlQ29tbWFTZXBhcmF0ZWRLZXl3b3JkRWRpdG9yLkV2ZW50LlRyZWVJdGVtU2Vs
ZWN0ZWQsIGJveFNoYWRvd0l0ZW1TZWxlY3RlZCwgdGhpcyk7CisKKyAgICAgICAgZ3JvdXAuYXV0
b2NvbXBsZXRlQ29tcGF0aWJsZVByb3BlcnRpZXMgPSBbYm94U2hhZG93Q29sb3JdOworCisgICAg
ICAgIGxldCBib3hTaGFkb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
W2JveFNoYWRvd1JvdywgYm94U2hhZG93SFJvdywgYm94U2hhZG93VlJvdywgYm94U2hhZG93Qmx1
clJvdywgYm94U2hhZG93Q29sb3JSb3ddKTsKKyAgICAgICAgdGhpcy5fcG9wdWxhdGVTZWN0aW9u
KGdyb3VwLCBbYm94U2hhZG93XSk7CisgICAgfQorCisgICAgX3BvcHVsYXRlVHJhbnNpdGlvblNl
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgbGV0IGdyb3VwID0gdGhpcy5fZ3JvdXBzLnRyYW5zaXRp
b247CisgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gZ3JvdXAucHJvcGVydGllczsKKworICAgICAg
ICBsZXQgdHJhbnNpdGlvblJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgcHJvcGVydGllcy50cmFuc2l0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvcigidHJhbnNpdGlvbiIpOworICAgICAg
ICBwcm9wZXJ0aWVzLnRyYW5zaXRpb24uZWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0ID0gIjExcHgi
OworCisgICAgICAgIHRyYW5zaXRpb25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVz
LnRyYW5zaXRpb24uZWxlbWVudCk7CisKKyAgICAgICAgbGV0IHRyYW5zaXRpb25Qcm9wZXJ0eVJv
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7CisKKyAgICAgICAgbGV0IHRy
YW5zaXRpb25Qcm9wZXJ0eSA9IG5ldyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eU5h
bWVJbnB1dCgidHJhbnNpdGlvbi1wcm9wZXJ0eSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJv
cGVydHkiKSk7CisgICAgICAgIGxldCB0cmFuc2l0aW9uVGltaW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZVRpbWluZ0VkaXRvcigidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWluZyIpLCBbIkxpbmVhciIsICJFYXNlIiwgIkVhc2Ug
SW4iLCAiRWFzZSBPdXQiLCAiRWFzZSBJbiBPdXQiXSk7CisKKyAgICAgICAgdHJhbnNpdGlvblBy
b3BlcnR5Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvblByb3BlcnR5LmVsZW1lbnQp
OworICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlSb3cuZWxlbWVudC5hcHBlbmRDaGlsZCh0cmFu
c2l0aW9uVGltaW5nLmVsZW1lbnQpOworCisgICAgICAgIGxldCB0cmFuc2l0aW9uRHVyYXRpb25S
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworCisgICAgICAgIGxldCB0
cmFuc2l0aW9uVGltZUtleXdvcmRzID0gWyJzIiwgIm1zIl07CisgICAgICAgIGxldCB0cmFuc2l0
aW9uRHVyYXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3go
InRyYW5zaXRpb24tZHVyYXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIiks
IG51bGwsIHRyYW5zaXRpb25UaW1lS2V5d29yZHMpOworICAgICAgICBsZXQgdHJhbnNpdGlvbkRl
bGF5ID0gbmV3IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KCJ0cmFuc2l0
aW9uLWRlbGF5IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxheSIpLCBudWxsLCB0cmFuc2l0
aW9uVGltZUtleXdvcmRzKTsKKyAgICAgICAgdHJhbnNpdGlvbkRlbGF5Lm9wdGlvbmFsUHJvcGVy
dHkgPSB0cnVlOworCisgICAgICAgIHRyYW5zaXRpb25EdXJhdGlvblJvdy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRyYW5zaXRpb25EdXJhdGlvbi5lbGVtZW50KTsKKyAgICAgICAgdHJhbnNpdGlvbkR1
cmF0aW9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodHJhbnNpdGlvbkRlbGF5LmVsZW1lbnQpOwor
CisgICAgICAgIGxldCB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lciA9IG5ldyBXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUNvbWJpbmVyKCJ0cmFuc2l0aW9uIiwgW3RyYW5zaXRpb25Q
cm9wZXJ0eSwgdHJhbnNpdGlvblRpbWluZywgdHJhbnNpdGlvbkR1cmF0aW9uLCB0cmFuc2l0aW9u
RGVsYXldKTsKKworICAgICAgICBmdW5jdGlvbiBub1JlbWFpbmluZ1RyZWVJdGVtcygpIHsKKyAg
ICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eUNvbWJpbmVyLnVwZGF0ZVZhbHVlc0Zyb21UZXh0
KCIiKTsKKyAgICAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eS5kaXNhYmxlZCA9IHRydWU7Cisg
ICAgICAgICAgICB0cmFuc2l0aW9uVGltaW5nLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHRyYW5zaXRpb25EdXJhdGlvbi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAgICB0cmFuc2l0
aW9uRGVsYXkuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHByb3BlcnRpZXMu
dHJhbnNpdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZUNvbW1h
U2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5Ob1JlbWFpbmluZ1RyZWVJdGVtcywgbm9SZW1h
aW5pbmdUcmVlSXRlbXMsIHRoaXMpOworCisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdGVkdHJhbnNp
dGlvbkl0ZW1WYWx1ZUNoYW5nZWQoKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnRyYW5zaXRp
b24uc2VsZWN0ZWRUcmVlRWxlbWVudFZhbHVlID0gdHJhbnNpdGlvblByb3BlcnR5Q29tYmluZXIu
c3ludGhlc2l6ZWRWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlD
b21iaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCBzZWxlY3RlZHRyYW5zaXRpb25JdGVtVmFsdWVD
aGFuZ2VkLCB0aGlzKTsKKworICAgICAgICBmdW5jdGlvbiB0cmFuc2l0aW9uSXRlbVNlbGVjdGVk
KGV2ZW50KSB7CisgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHlDb21iaW5lci51cGRhdGVW
YWx1ZXNGcm9tVGV4dChldmVudC5kYXRhLnRleHQgfHwgIiIpOworICAgICAgICB9CisgICAgICAg
IHByb3BlcnRpZXMudHJhbnNpdGlvbi5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZUNvbW1hU2VwYXJhdGVkS2V5d29yZEVkaXRvci5FdmVudC5UcmVlSXRlbVNlbGVjdGVk
LCB0cmFuc2l0aW9uSXRlbVNlbGVjdGVkLCB0aGlzKTsKKworICAgICAgICBncm91cC5hdXRvY29t
cGxldGVDb21wYXRpYmxlUHJvcGVydGllcyA9IFt0cmFuc2l0aW9uUHJvcGVydHldOworCisgICAg
ICAgIGxldCB0cmFuc2l0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAoW3RyYW5zaXRpb25Sb3csIHRyYW5zaXRpb25Qcm9wZXJ0eVJvdywgdHJhbnNpdGlvbkR1
cmF0aW9uUm93XSk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlU2VjdGlvbihncm91cCwgW3RyYW5z
aXRpb25Hcm91cF0pOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFp
bHNQYW5lbC5TdHlsZURpc2FibGVkU3ltYm9sID0gU3ltYm9sKCJ2aXN1YWwtc3R5bGUtc3R5bGUt
ZGlzYWJsZWQiKTsKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZURldGFpbHNQYW5lbC5Jbml0aWFs
UHJvcGVydHlTZWN0aW9uVGV4dExpc3RTeW1ib2wgPSBTeW1ib2woInZpc3VhbC1zdHlsZS1pbml0
aWFsLXByb3BlcnR5LXNlY3Rpb24tdGV4dCIpOworCisvLyBGSVhNRTogQWRkIGluZm9ybWF0aW9u
IGFib3V0IGVhY2ggcHJvcGVydHkgYXMgYSBmb3JtIG9mIGRvY3VtZW50YXRpb24uICBUaGlzIGlz
IGN1cnJlbnRseSBlbXB0eSBhcworLy8gd2UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byB1c2Ug
dGhlIGluZm8gb24gc2l0ZXMgbGlrZSBNRE4gYW5kIGhhdmUgbm90IHdyaXR0ZW4gYW55dGhpbmcg
b3Vyc2VsdmVzLgorV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlRGV0YWlsc1BhbmVsLnByb3BlcnR5
UmVmZXJlbmNlSW5mbyA9IHt9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>