<?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>147712</bug_id>
          
          <creation_ts>2015-08-05 18:44:49 -0700</creation_ts>
          <short_desc>Web Inspector: Add numerical input and slider based Visual editors for CSS properties</short_desc>
          <delta_ts>2015-10-01 12:13:17 -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>147576</dependson>
          <blocked>147563</blocked>
    
    <blocked>147570</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>agomez</cc>
    
    <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</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>1115226</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-05 18:44:49 -0700</bug_when>
    <thetext>Adds the following types of Visual editors:

 - Combined input and select for CSS properties with both keywords and number values (can have units)
 - Toggle-able link to sync multiple editors when the value of one changes
 - Relative number slider with the range of either [-50, 50] for properties that allow negative values or [0, 100] otherwise

Will be use in the new Visual style details panel in the CSS sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115673</commentid>
    <comment_count>1</comment_count>
      <attachid>258465</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-06 23:45:14 -0700</bug_when>
    <thetext>Created attachment 258465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116007</commentid>
    <comment_count>2</comment_count>
      <attachid>258465</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-07 23:00:01 -0700</bug_when>
    <thetext>Comment on attachment 258465
Patch

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

Looking very good overall. Little renamings are signs that I have nothing big to nitpick. Please add proper aria roles, then I will r+ this patch.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:30
&gt; +        super(propertyNames, text, possibleValues, possibleUnits || [&quot;No Units&quot;], &quot;number-input-box&quot;, layoutReversed);

Is &quot;No Units&quot; a UIString?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:33
&gt; +        this._allowNegativeValues = allowNegativeValues || false;

Nit: !!allowNegativeValues

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:38
&gt; +        let focusRing = document.createElement(&quot;div&quot;);

Rename: focusRingElement

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:90
&gt; +        let editable = this.numberInputEditable;

A bool property like this often has &apos;is&apos; in it, i.e., this.numberInputIsEditable, or this.numberInputSupportsEditing

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:91
&gt; +        if (editable &amp;&amp; !this._valueNumberInputElement.value || !this._keywordSelectElement.value)

Add parens to make grouping unambiguous.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:102
&gt; +        if (!isNaN(value)) {

How do keywords not go into this branch?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:113
&gt; +        if (this.valueIsKeyword(value)) {

is this a static method? If not, I would pick a name that makes it clearer that the function results depend on the current unit or other state.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:124
&gt; +        if (!this.valueIsUnit(keyword))

See above note about valueIsKeyword.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:158
&gt; +        this._valueNumberInputElement.setAttribute(&quot;placeholder&quot;, (!isNaN(text) &amp;&amp; text) || 0);

This reads like an interview puzzle. Can you simplify?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:176
&gt; +    syncValue(text, value)

I would name this &apos;updateValue&apos; as syncValue is not as clear as a verb.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:196
&gt; +        let switchedUnits = this.valueIsUnit(this._keywordSelectElement.value);

This name could be confusing. Is it a boolean, or a list of the units that switched? WK style is to prefer *Changed or *DidChange for booleans like this.

Rename: unitsChanged

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:197
&gt; +        if (!this.numberInputEditable &amp;&amp; switchedUnits)

For example, 

if (!this.numberInputIsEditable &amp;&amp; unitsChanged)
   ...

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:203
&gt; +        this.contentElement.classList.toggle(&quot;number-input-editable&quot;, switchedUnits);

it&apos;s weird that this is looking at switchedUnits instead of this.numberInputIsEditable. What if we switched between two non-editable units?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:213
&gt; +        function shiftValue(direction)

Rename: adjustValue(delta)? You aren&apos;t doing a bit shift or exponent shift...

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:237
&gt; +        if (key.startsWith(&quot;Page&quot;))

(Multiple places) Please use WI.KeyboardShortcut.Key.*, as we discussed in the other patch.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:271
&gt; +    _addValues(values)

(Multiple places) Rename: _createValueOptions. You aren&apos;t &apos;adding&apos; values :)

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:300
&gt; +        if (this._advancedUnitsElements)

Should you check this._isAdvancedUnits instead?

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.js:48
&gt; +        this._iconElement.title = WebInspector.UIString(&quot;Click to link.&quot;);

Hmm: &quot;Click to link property values&quot;? It might be unclear what is being linked.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.js:89
&gt; +    _handleLinkedPropertyValueChanged(event)

We don&apos;t like prefixing handlers with &apos;handle&apos;.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.js:105
&gt; +    _syncValue(property)

See rename note above.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStylePropertyEditorLink.js:136
&gt; +        this._iconElement.title = this._linked ? WebInspector.UIString(&quot;Click to remove link.&quot;) : WebInspector.UIString(&quot;Click to link.&quot;);

See above.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleRelativeNumberSlider.js:34
&gt; +        this._slider = document.createElement(&quot;input&quot;);

Rename: SliderElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116026</commentid>
    <comment_count>3</comment_count>
      <attachid>258465</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-08 12:11:01 -0700</bug_when>
    <thetext>Comment on attachment 258465
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:102
&gt;&gt; +        if (!isNaN(value)) {
&gt; 
&gt; How do keywords not go into this branch?

This only occurs if the value is a number.  isNaN() will return true if the value is not a number, so adding a ! in front will ensure that the entire statement will return only if the value is a number.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:203
&gt;&gt; +        this.contentElement.classList.toggle(&quot;number-input-editable&quot;, switchedUnits);
&gt; 
&gt; it&apos;s weird that this is looking at switchedUnits instead of this.numberInputIsEditable. What if we switched between two non-editable units?

That&apos;s fine.  &quot;number-input-editable&quot; is only supposed to be added to the class when the value inside the keyword select is a unit.  If the value inside the keyword select is a unit, add the class.  Otherwise (like &quot;auto&quot;, &quot;initial&quot;, or &quot;inherit&quot;), remove it.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:237
&gt;&gt; +        if (key.startsWith(&quot;Page&quot;))
&gt; 
&gt; (Multiple places) Please use WI.KeyboardShortcut.Key.*, as we discussed in the other patch.

I thought that it was better to use KeyIdentifier where able.  KeyboardShortcut doesn&apos;t have any information about KeyIdentifiers.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:300
&gt;&gt; +        if (this._advancedUnitsElements)
&gt; 
&gt; Should you check this._isAdvancedUnits instead?

Im trying not to add the same advanced elements twice, so I check to see if the array &quot;this._advancedUnitsElements&quot; has been set, and if so, that must mean that I have already added the advanced options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116241</commentid>
    <comment_count>4</comment_count>
      <attachid>258465</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-10 10:48:50 -0700</bug_when>
    <thetext>Comment on attachment 258465
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:45
&gt; +            this._keywordSelectElement.title = WebInspector.UIString(&quot;Alt Click to show all units&quot;);

Alt-click

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:102
&gt;&gt;&gt; +        if (!isNaN(value)) {
&gt;&gt; 
&gt;&gt; How do keywords not go into this branch?
&gt; 
&gt; This only occurs if the value is a number.  isNaN() will return true if the value is not a number, so adding a ! in front will ensure that the entire statement will return only if the value is a number.

Oh, for some reason I thought that isNaN only returns true for NaN (and thus isNaN(&quot;string&quot;) would be false).

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:196
&gt;&gt; +        let switchedUnits = this.valueIsUnit(this._keywordSelectElement.value);
&gt; 
&gt; This name could be confusing. Is it a boolean, or a list of the units that switched? WK style is to prefer *Changed or *DidChange for booleans like this.
&gt; 
&gt; Rename: unitsChanged

Reading this function again, I&apos;m having trouble with the names and how the logic flows. Maybe this should be called keywordAllowsUnits?

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:237
&gt;&gt;&gt; +        if (key.startsWith(&quot;Page&quot;))
&gt;&gt; 
&gt;&gt; (Multiple places) Please use WI.KeyboardShortcut.Key.*, as we discussed in the other patch.
&gt; 
&gt; I thought that it was better to use KeyIdentifier where able.  KeyboardShortcut doesn&apos;t have any information about KeyIdentifiers.

Oh, right. I thought it had key names as well.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:271
&gt;&gt; +    _addValues(values)
&gt; 
&gt; (Multiple places) Rename: _createValueOptions. You aren&apos;t &apos;adding&apos; values :)

Or, _addValuesToKeywordSelect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116258</commentid>
    <comment_count>5</comment_count>
      <attachid>258465</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 11:19:54 -0700</bug_when>
    <thetext>Comment on attachment 258465
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:196
&gt;&gt;&gt; +        let switchedUnits = this.valueIsUnit(this._keywordSelectElement.value);
&gt;&gt; 
&gt;&gt; This name could be confusing. Is it a boolean, or a list of the units that switched? WK style is to prefer *Changed or *DidChange for booleans like this.
&gt;&gt; 
&gt;&gt; Rename: unitsChanged
&gt; 
&gt; Reading this function again, I&apos;m having trouble with the names and how the logic flows. Maybe this should be called keywordAllowsUnits?

Basically, both units and keywords are in the same select element.  Since units need number values associated with them (while keywords don&apos;t), every time the user selects a unit option, have to ensure that this class is applied to the container element (it makes the input for the number value visible and editable).  So, if the currently selected value inside the select element (which contains both keywords and units) is a unit, add the class.  Otherwise, remove the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116262</commentid>
    <comment_count>6</comment_count>
      <attachid>258628</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 11:26:09 -0700</bug_when>
    <thetext>Created attachment 258628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116290</commentid>
    <comment_count>7</comment_count>
      <attachid>258628</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-10 12:45:25 -0700</bug_when>
    <thetext>Comment on attachment 258628
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:45
&gt; +            this._keywordSelectElement.title = WebInspector.UIString(&quot;Alt-click to show all units&quot;);

It is Option not Alt on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116340</commentid>
    <comment_count>8</comment_count>
      <attachid>258628</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-10 14:43:30 -0700</bug_when>
    <thetext>Comment on attachment 258628
Patch

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

r=me, this patch is looking much improved. Please address the one small naming issue, then we can land.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleNumberInputBox.js:45
&gt;&gt; +            this._keywordSelectElement.title = WebInspector.UIString(&quot;Alt-click to show all units&quot;);
&gt; 
&gt; It is Option not Alt on Mac.

Maybe we should add and use WebInspector.KeyboardShortcut.Modifier.OptionOrAlt in the Web Inspector. I&apos;m sure there are other strings that make no sense on other ports.

&gt; Source/WebInspectorUI/UserInterface/Views/VisualStyleRelativeNumberSlider.js:77
&gt; +    _handleSliderChanged()

(Multiple places)

Inspector style is to not use &quot;handle&quot; as an event listener callback prefix. I think you should just remove it, or add &quot;Did&quot; to cases that lack a verb. (i.e., didMouseoutIcon).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116370</commentid>
    <comment_count>9</comment_count>
      <attachid>258662</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 15:56:54 -0700</bug_when>
    <thetext>Created attachment 258662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116371</commentid>
    <comment_count>10</comment_count>
      <attachid>258662</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 15:58:24 -0700</bug_when>
    <thetext>Comment on attachment 258662
Patch

Whoops.  Forgot to include your review Brian.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116374</commentid>
    <comment_count>11</comment_count>
      <attachid>258663</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-08-10 15:59:15 -0700</bug_when>
    <thetext>Created attachment 258663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116408</commentid>
    <comment_count>12</comment_count>
      <attachid>258663</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-10 16:57:10 -0700</bug_when>
    <thetext>Comment on attachment 258663
Patch

Clearing flags on attachment: 258663

Committed r188238: &lt;http://trac.webkit.org/changeset/188238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116409</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-10 16:57:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117729</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-08-14 13:08:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/22292082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129881</commentid>
    <comment_count>15</comment_count>
      <attachid>258663</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2015-10-01 02:08:02 -0700</bug_when>
    <thetext>Comment on attachment 258663
Patch

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

I know this patch already landed, but wanted to provide some comment. I hope they are helpful.

&gt; Source/WebInspectorUI/UserInterface/Images/VisualStylePropertyLinked.svg:4
&gt; +    &lt;circle class=&quot;filled&quot; cx=&quot;8&quot; cy=&quot;8&quot; r=&quot;4&quot; fill=&quot;black&quot; stroke=&quot;none&quot; /&gt;

This is fill=&quot;black&quot; ...

&gt; Source/WebInspectorUI/UserInterface/Images/VisualStylePropertyUnlinked.svg:5
&gt; +    &lt;path class=&quot;filled&quot; d=&quot;M 6 4 C 0 4 0 12 6 12&quot; stroke=&quot;none&quot; /&gt;

... but these are not.

Is this correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129974</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-10-01 10:49:00 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 258663 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258663&amp;action=review
&gt; 
&gt; I know this patch already landed, but wanted to provide some comment. I hope
&gt; they are helpful.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Images/VisualStylePropertyLinked.svg:4
&gt; &gt; +    &lt;circle class=&quot;filled&quot; cx=&quot;8&quot; cy=&quot;8&quot; r=&quot;4&quot; fill=&quot;black&quot; stroke=&quot;none&quot; /&gt;
&gt; 
&gt; This is fill=&quot;black&quot; ...
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Images/VisualStylePropertyUnlinked.svg:5
&gt; &gt; +    &lt;path class=&quot;filled&quot; d=&quot;M 6 4 C 0 4 0 12 6 12&quot; stroke=&quot;none&quot; /&gt;
&gt; 
&gt; ... but these are not.
&gt; 
&gt; Is this correct?

fill=&quot;black&quot; is the default, so it is fine to leave out. We should be consistent though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129992</commentid>
    <comment_count>17</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-10-01 12:13:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; fill=&quot;black&quot; is the default, so it is fine to leave out. We should be
&gt; consistent though.

I will change this with the changes for bug https://bugs.webkit.org/show_bug.cgi?id=147711.  I have noticed that some of the text icons for the buttons are slightly clipped, so I have wanted to redo them.  I&apos;ll add this fix to that as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258465</attachid>
            <date>2015-08-06 23:45:14 -0700</date>
            <delta_ts>2015-08-10 11:26:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147712-20150806234503.patch</filename>
            <type>text/plain</type>
            <size>41113</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE2YjI3ZTdiYzQyYTU0ZmMyMjRiZjMyODNhMDA5
MDg0ZmRkYzZkMGIuLjY2YTE2ZTI3ZWQwZmU2ZjNjZmIxNjc1ZWUxMmM5Yjc0MzY5NDE5MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTA4LTA2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgbnVtZXJpY2FsIGlucHV0IGFuZCBzbGlkZXIgYmFzZWQgVmlzdWFsIGVkaXRvcnMgZm9yIENT
UyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc3MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcyB3aXRoIG51bWVyaWNhbCB2YWx1
ZXMgZm9yIHVzZSBpbiB0aGUgVmlzdWFsIHN0eWxlCisgICAgICAgIGRldGFpbHMgcGFuZWwgaW4g
dGhlIENTUyBzaWRlYmFyLCBpbiB0aGUgZm9ybSBvZiBhIGNvbWJpbmVkIHNlbGVjdCBhbmQgaW5w
dXQgb3IgYW4KKyAgICAgICAgaW5wdXQgcmFuZ2UuICBBbHNvIGFkZGVkIG9wdGlvbmFsIHZpc3Vh
bCBsaW5rYWdlcyB0byBzeW5jIHZhbHVlcyBiZXR3ZWVuIG11bHRpcGxlCisgICAgICAgIGVkaXRv
cnMgb2YgdGhpcyB0eXBlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFs
U3R5bGVQcm9wZXJ0eUxpbmtlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3M6IEFkZGVk
LgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5mb2N1c2VkID4gLmZvY3VzLXJpbmcpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQta2V5d29yZC1zZWxlY3QpOgor
ICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtY29udGFpbmVyKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFibGUpID4gLm51
bWJlci1pbnB1dC1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1i
ZXItaW5wdXQtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC12YWx1ZSk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1jb250YWluZXIgPiBzcGFuKToKKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUu
Z2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94LnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLmdldCB1bml0cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuc2V0IHVuaXRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5n
ZXQgcGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3gucHJvdG90eXBlLnNldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVkVmFs
dWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJv
dG90eXBlLmdldCBudW1iZXJJbnB1dEVkaXRhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5zeW5jVmFsdWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLnBhcnNlVmFs
dWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJv
dG90eXBlLl9oYW5kbGVLZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3du
LnNoaWZ0VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3gucHJvdG90eXBlLl92YWx1ZU51bWJlcklucHV0S2V5RG93bik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2hhbmRsZU51bWJl
cklucHV0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveC5wcm90b3R5cGUuX2tleXdvcmRTZWxlY3RNb3VzZURvd24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9hZGRWYWx1ZXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90
eXBlLl9hZGRVbml0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJ
bnB1dEJveC5wcm90b3R5cGUuX2FkZEFkdmFuY2VkVW5pdHMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9yZW1vdmVBZHZhbmNlZFVu
aXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnBy
b3RvdHlwZS5fZm9jdXNDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2JsdXJDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUu
X3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyk6CisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzczogQWRkZWQuCisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rKToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsuZGlzYWJsZWQpOgorICAgICAgICAoLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWljb246aG92ZXIgKyAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LWJvcmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmst
Ym9yZGVyLmxlZnQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJv
cmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0KToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rLWJvcmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rOm5vdCgubGluay1hbGwpID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay1ib3JkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpu
b3QoLmxpbmstYWxsKS5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LWJvcmRlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbik6CisgICAgICAgICgudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay1pY29uID4gLnVubGlua2VkLWljb24gc3ZnIC5maWxsZWQpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHN2ZyAuc3Ryb2tlZCk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWljb24pOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yTGluay5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBl
LnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvckxpbmsucHJvdG90eXBlLl9oYW5kbGVMaW5rZWRQcm9wZXJ0eVZhbHVlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJv
dG90eXBlLl9zeW5jVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5faGFuZGxlSWNvbk1vdXNlb3Zlcik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBlLl9o
YW5kbGVJY29uTW91c2VvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJv
cGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5faGFuZGxlSWNvbkNsaWNrZWQpOgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNz
czogQWRkZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1i
ZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXRpdGxlKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51
bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
Y29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlci5kaXNhYmxl
ZCA+IC5yZWxhdGl2ZS1zbGlkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIubm8tdmFsdWVzLm5vLXVuaXRzKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gu
cmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC5yZWxhdGl2ZS1zbGlkZXIpOgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xp
ZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xp
ZGVyLnByb3RvdHlwZS5zZXQgc2NhbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIucHJvdG90eXBlLnVwZGF0ZUVkaXRvclZhbHVlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5wcm90
b3R5cGUuX3Jlc2V0U2xpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJl
bGF0aXZlTnVtYmVyU2xpZGVyLnByb3RvdHlwZS5faGFuZGxlU2xpZGVyQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5wcm90b3R5
cGUuX2hhbmRsZU51bWJlcklucHV0Q2hhbmdlZCk6CisKIDIwMTUtMDgtMDUgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgdGhl
IE1ldHJpY3Mgc3R5bGUgc2lkZWJhciBwYW5lbCBpbnRvIENvbXB1dGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUxpbmtlZC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eUxpbmtlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ1OTlhMzM1Y2Uw
ZDA2ZTFjYzk0NzVkNTMyMmY0ZmZiNWYxNjU4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlu
a2VkLnN2ZwpAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxjaXJjbGUgY2xhc3M9ImZpbGxlZCIg
Y3g9IjgiIGN5PSI4IiByPSI0IiBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiAvPgorPC9zdmc+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
VmlzdWFsU3R5bGVQcm9wZXJ0eVVubGlua2VkLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmNGQxMmQ5MTk3Y2I3NWY3MDhlZDgwYjViOTdlMDNjOWU3NDljZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlz
dWFsU3R5bGVQcm9wZXJ0eVVubGlua2VkLnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxw
YXRoIGNsYXNzPSJmaWxsZWQiIGQ9Ik0gMTAgNCBDIDE2IDQgMTYgMTIgMTAgMTIiIHN0cm9rZT0i
bm9uZSIgLz4KKyAgICA8cGF0aCBjbGFzcz0iZmlsbGVkIiBkPSJNIDYgNCBDIDAgNCAwIDEyIDYg
MTIiIHN0cm9rZT0ibm9uZSIgLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTBmZTA5NmRlNDNhYWE5NzI1MzFhODQ2ZTdi
MDEyZTBiZmYzNTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3MKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIuZm9jdXNlZCA+IC5mb2N1cy1y
aW5nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVmdDog
MXB4OworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAycHgpOworICAgIGhlaWdodDogMTZweDsKKyAg
ICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAgYm94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAu
MTUpIDAgMXB4IDAsIDAgMCAwIDNweCBoc2xhKDIxMSwgOTYlLCA0OCUsIDAuMjUpOworICAgIHBv
aW50ZXItZXZlbnRzOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1
dC1rZXl3b3JkLXNlbGVjdCB7CisgICAgb3V0bGluZTogbm9uZTsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lciA+IC5udW1iZXItaW5wdXQtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7CisgICAg
d2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOworICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIHRl
eHQtYWxpZ246IHJpZ2h0OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cisg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyOm5vdCgubnVtYmVyLWlucHV0LWVkaXRhYmxlKSA+IC5udW1iZXItaW5wdXQt
Y29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
Lm51bWJlci1pbnB1dC1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LXZhbHVlIHsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgbWFyZ2luLXJpZ2h0OiAxcHg7CisgICAg
cGFkZGluZzogMCAwIDFweCAzcHg7CisgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4
OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBvdXRsaW5l
OiBub25lOworICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIg
PiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciA+IHNwYW4geworICAgIG1pbi13aWR0aDogLXdlYmtp
dC1maXQtY29udGVudDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkNzg1M2EzMzFlMWVlMTY0OTJkYmU5NjA2NDI5ZjZlMGJkOTUyY2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzCkBAIC0wLDAgKzEsMzM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3ggPSBjbGFzcyBW
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBw
b3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dOZWdhdGl2ZVZhbHVlcywgbGF5b3V0
UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3Nz
aWJsZVZhbHVlcywgcG9zc2libGVVbml0cyB8fCBbIk5vIFVuaXRzIl0sICJudW1iZXItaW5wdXQt
Ym94IiwgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2hhc1VuaXRzID0gISFwb3Nz
aWJsZVVuaXRzOworICAgICAgICB0aGlzLl9hbGxvd05lZ2F0aXZlVmFsdWVzID0gYWxsb3dOZWdh
dGl2ZVZhbHVlcyB8fCBmYWxzZTsKKworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoIm5vLXZhbHVlcyIsICFwb3NzaWJsZVZhbHVlcyB8fCAhcG9zc2libGVWYWx1
ZXMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJuby11bml0cyIsICF0aGlzLl9oYXNVbml0cyk7CisKKyAgICAgICAgbGV0IGZvY3VzUmluZyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb2N1c1JpbmcuY2xhc3NM
aXN0LmFkZCgiZm9jdXMtcmluZyIpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGZvY3VzUmluZyk7CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKTsKKyAgICAgICAgdGhpcy5fa2V5d29y
ZFNlbGVjdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWtleXdvcmQtc2VsZWN0
Iik7CisgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkKQorICAgICAgICAg
ICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFsdCBDbGljayB0byBzaG93IGFsbCB1bml0cyIpOworCisgICAgICAgIGlmICh0aGlzLl9w
b3NzaWJsZVZhbHVlcykgeworICAgICAgICAgICAgdGhpcy5fYWRkVmFsdWVzKHRoaXMuX3Bvc3Np
YmxlVmFsdWVzLmJhc2ljKTsKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICB0aGlzLl9hZGRV
bml0cyh0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2ljKTsKKworICAgICAgICB0aGlzLl9hZHZhbmNl
ZFVuaXRzRWxlbWVudHMgPSBudWxsOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXNDb250ZW50RWxlbWVudC5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fa2V5d29yZFNlbGVjdE1vdXNlRG93bi5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2hhbmdlIiwgdGhpcy5faGFuZGxlS2V5d29yZENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0
aGlzLl9ibHVyQ29udGVudEVsZW1lbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
Im51bWJlci1pbnB1dC1jb250YWluZXIiKTsKKworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklu
cHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRo
aXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51bWJlci1pbnB1dC12
YWx1ZSIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5zcGVsbGNoZWNr
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXNDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1
cCIsIHRoaXMuX2hhbmRsZU51bWJlcklucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRo
aXMuX2JsdXJDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbnVtYmVy
VW5pdHNDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgdGhpcy5fbnVtYmVyVW5pdHNDb250YWluZXIuYXBwZW5kQ2hpbGQo
dGhpcy5fdW5pdHNFbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5lcik7CisKKyAgICAgICAgdGhpcy5jb250ZW50
RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsKKyAgICAgICAg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsOworICAgICAgICB0aGlz
Ll92YWx1ZU51bWJlcklucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgMCk7
CisgICAgICAgIGlmICh0aGlzLl9oYXNVbml0cyAmJiB0aGlzLnZhbHVlSXNVbml0KCJweCIpKQor
ICAgICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fa2V5d29y
ZFNlbGVjdEVsZW1lbnQudmFsdWUgPSAicHgiOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgZ2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIGxldCBlZGl0YWJsZSA9IHRoaXMubnVtYmVy
SW5wdXRFZGl0YWJsZTsKKyAgICAgICAgaWYgKGVkaXRhYmxlICYmICF0aGlzLl92YWx1ZU51bWJl
cklucHV0RWxlbWVudC52YWx1ZSB8fCAhdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmV0dXJuIGVkaXRhYmxlID8gcGFyc2VG
bG9hdCh0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSkgOiB0aGlzLl9rZXl3b3Jk
U2VsZWN0RWxlbWVudC52YWx1ZTsKKyAgICB9CisKKyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAg
eworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgPT09IHRoaXMudmFsdWUpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHsKKyAgICAgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7
CisgICAgICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSA9IHZhbHVl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF2YWx1ZSkg
eworICAgICAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUgPSBudWxs
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMudmFs
dWVJc0tleXdvcmQodmFsdWUpKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICAgICAgdGhp
cy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdldCB1bml0cygpCisgICAgeworICAgICAgICBs
ZXQga2V5d29yZCA9IHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlOworCisgICAgICAg
IGlmICghdGhpcy52YWx1ZUlzVW5pdChrZXl3b3JkKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICB9CisKKyAgICBzZXQgdW5pdHModW5pdCkKKyAg
ICB7CisgICAgICAgIGlmICghdW5pdCB8fCB1bml0ID09PSB0aGlzLnVuaXQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLnZhbHVlSXNVbml0KHVuaXQpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl92YWx1ZUlzQWR2YW5jZWRVbml0KHVu
aXQpKQorICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRVbml0cygpOworCisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7
CisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlID0gdW5pdDsKKworICAg
ICAgICBpZiAodGhpcy5faGFzVW5pdHMpCisgICAgICAgICAgICB0aGlzLl91bml0c0VsZW1lbnQu
dGV4dENvbnRlbnQgPSB1bml0OworICAgIH0KKworICAgIGdldCBwbGFjZWhvbGRlcigpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJwbGFjZWhvbGRlciIpOworICAgIH0KKworICAgIHNldCBwbGFjZWhvbGRlcih0ZXh0KQor
ICAgIHsKKyAgICAgICAgaWYgKHRleHQgPT09IHRoaXMucGxhY2Vob2xkZXIpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuc2V0QXR0
cmlidXRlKCJwbGFjZWhvbGRlciIsICghaXNOYU4odGV4dCkgJiYgdGV4dCkgfHwgMCk7CisgICAg
fQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQorICAgIHsKKyAgICAgICAgbGV0IHZhbHVl
ID0gdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWU7CisgICAgICAgIGlmICh0aGlz
Lm51bWJlcklucHV0RWRpdGFibGUgJiYgIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisKKyAgICAgICAgbGV0IGtleXdvcmQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1
ZTsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJc1VuaXQoa2V5d29yZCkgPyB2YWx1ZSArICh0
aGlzLl9oYXNVbml0cyA/IGtleXdvcmQgOiAiIikgOiBrZXl3b3JkOworICAgIH0KKworICAgIGdl
dCBudW1iZXJJbnB1dEVkaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNvbnRl
bnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7Cisg
ICAgfQorCisgICAgc3luY1ZhbHVlKHRleHQsIHZhbHVlKQorICAgIHsKKyAgICAgICAgbGV0IG1h
dGNoID0gdGhpcy5wYXJzZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGNo
ID8gbWF0Y2hbMV0gOiB2YWx1ZTsKKyAgICAgICAgdGhpcy51bml0cyA9IG1hdGNoID8gbWF0Y2hb
Ml0gOiBudWxsOworCisgICAgICAgIHJldHVybiB0aGlzLm1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0
LCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBwYXJzZVZhbHVlKHRl
eHQpCisgICAgeworICAgICAgICByZXR1cm4gL14oLT9bXGQuXSspKFteXHNcZF17MCw0fSkoPzpc
cyo7PykkLy5leGVjKHRleHQpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5k
bGVLZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAgICBsZXQgc3dpdGNoZWRVbml0cyA9IHRo
aXMudmFsdWVJc1VuaXQodGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUpOworICAgICAg
ICBpZiAoIXRoaXMubnVtYmVySW5wdXRFZGl0YWJsZSAmJiBzd2l0Y2hlZFVuaXRzKQorICAgICAg
ICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsOworCisgICAg
ICAgIGlmICh0aGlzLl9oYXNVbml0cykKKyAgICAgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudC50
ZXh0Q29udGVudCA9IHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlOworCisgICAgICAg
IHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibnVtYmVyLWlucHV0LWVkaXRh
YmxlIiwgc3dpdGNoZWRVbml0cyk7CisKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsK
KyAgICB9CisKKyAgICBfdmFsdWVOdW1iZXJJbnB1dEtleURvd24oZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMubnVtYmVySW5wdXRFZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBmdW5jdGlvbiBzaGlmdFZhbHVlKGRpcmVjdGlvbikKKyAgICAgICAgeworICAg
ICAgICAgICAgbGV0IG5ld1ZhbHVlOworICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1
ZTsKKyAgICAgICAgICAgIGlmICghdmFsdWUgJiYgaXNOYU4odmFsdWUpKSB7CisgICAgICAgICAg
ICAgICAgbGV0IHBsYWNlaG9sZGVyVmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyICYmICFpc05hTih0
aGlzLnBsYWNlaG9sZGVyKSA/IHBhcnNlRmxvYXQodGhpcy5wbGFjZWhvbGRlcikgOiAwOworICAg
ICAgICAgICAgICAgIG5ld1ZhbHVlID0gcGxhY2Vob2xkZXJWYWx1ZSArIGRpcmVjdGlvbjsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gdmFsdWUgKyBkaXJl
Y3Rpb247CisKKyAgICAgICAgICAgIGlmICghdGhpcy5fYWxsb3dOZWdhdGl2ZVZhbHVlcyAmJiBu
ZXdWYWx1ZSA8IDApCisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSAwOworCisgICAgICAgICAg
ICB0aGlzLnZhbHVlID0gTWF0aC5yb3VuZChuZXdWYWx1ZSAqIDEwMCkgLyAxMDA7CisgICAgICAg
ICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IHNo
aWZ0ID0gMTsKKyAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpCisgICAgICAgICAgICBzaGlmdCAv
PSAxMDsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpCisgICAgICAgICAgICBzaGlm
dCAqPSAxMDsKKworICAgICAgICBsZXQga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjsKKyAgICAg
ICAgaWYgKGtleS5zdGFydHNXaXRoKCJQYWdlIikpCisgICAgICAgICAgICBzaGlmdCAqPSAxMDsK
KworICAgICAgICBpZiAoa2V5ID09PSAiVXAiIHx8IGtleSA9PT0gIlBhZ2VVcCIpIHsKKyAgICAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICBzaGlmdFZhbHVlLmNh
bGwodGhpcywgc2hpZnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGtleSA9PT0gIkRvd24iIHx8IGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIHNoaWZ0VmFsdWUuY2FsbCh0
aGlzLCAtc2hpZnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfaGFuZGxlTnVtYmVySW5wdXRD
aGFuZ2VkKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5udW1iZXJJbnB1dEVkaXRhYmxlKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7Cisg
ICAgfQorCisgICAgX2tleXdvcmRTZWxlY3RNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRVbml0cygp
OworICAgICAgICBlbHNlIGlmICghdGhpcy5fdmFsdWVJc0FkdmFuY2VkVW5pdCgpKQorICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlQWR2YW5jZWRVbml0cygpOworICAgIH0KKworICAgIF9hZGRWYWx1
ZXModmFsdWVzKQorICAgIHsKKyAgICAgICAgbGV0IGFkZGVkRWxlbWVudHMgPSBbXTsKKyAgICAg
ICAgZm9yIChsZXQga2V5IGluIHZhbHVlcykgeworICAgICAgICAgICAgbGV0IG9wdGlvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICAgICAgb3B0aW9uLnZhbHVl
ID0ga2V5OworICAgICAgICAgICAgb3B0aW9uLnRleHQgPSB2YWx1ZXNba2V5XTsKKyAgICAgICAg
ICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAg
ICAgICAgICBhZGRlZEVsZW1lbnRzLnB1c2gob3B0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0KKworICAgIF9hZGRVbml0cyh1bml0cykKKyAg
ICB7CisgICAgICAgIGxldCBhZGRlZEVsZW1lbnRzID0gW107CisgICAgICAgIGZvciAobGV0IHVu
aXQgb2YgdW5pdHMpIHsKKyAgICAgICAgICAgIGxldCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gdW5pdDsKKyAgICAg
ICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7Cisg
ICAgICAgICAgICBhZGRlZEVsZW1lbnRzLnB1c2gob3B0aW9uKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0KKworICAgIF9hZGRBZHZhbmNlZFVuaXRz
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHIiKSk7CisgICAgICAgIHRoaXMuX2Fk
dmFuY2VkVW5pdHNFbGVtZW50cyA9IHRoaXMuX2FkZFVuaXRzKHRoaXMuX3Bvc3NpYmxlVW5pdHMu
YWR2YW5jZWQpOworICAgIH0KKworICAgIF9yZW1vdmVBZHZhbmNlZFVuaXRzKCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkKHRo
aXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50c1swXS5wcmV2aW91c1NpYmxpbmcpOworICAgICAgICBm
b3IgKGxldCBlbGVtZW50IG9mIHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cykKKyAgICAgICAg
ICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpOworCisg
ICAgICAgIHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cyA9IG51bGw7CisgICAgfQorCisgICAg
X2ZvY3VzQ29udGVudEVsZW1lbnQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LmNsYXNzTGlzdC5hZGQoImZvY3VzZWQiKTsKKyAgICB9CisKKyAgICBfYmx1ckNvbnRl
bnRFbGVtZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJmb2N1c2VkIik7CisgICAgfQorCisgICAgX3RvZ2dsZVRhYmJpbmdPZlNl
bGVjdGFibGVFbGVtZW50cyhkaXNhYmxlZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2tleXdvcmRT
ZWxlY3RFbGVtZW50LnRhYkluZGV4ID0gZGlzYWJsZWQgPyAiLTEiIDogbnVsbDsKKyAgICAgICAg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudGFiSW5kZXggPSBkaXNhYmxlZCA/ICItMSIg
OiBudWxsOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yTGluay5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdkZWFhNzM3YWNkMjIzMzliMjg3Mzg4ZmI5ODFm
NmFlNzAzMGUzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzcwpAQCAtMCww
ICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBtaW4td2lkdGg6IDMycHg7CisgICAg
bWFyZ2luLWxlZnQ6IDFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay5kaXNhYmxlZCB7CisgICAgdmlzaWJpbGl0eTogaGlkZGVuOworfQorCisudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsIHsKKyAgICBoZWlnaHQ6IDEzcHg7CisgICAg
bWFyZ2luOiAwIGF1dG8gMnB4OworICAgIHBhZGRpbmc6IDAgNTBweDsKKyAgICBib3JkZXItdG9w
LXdpZHRoOiAwOworICAgIGJvcmRlci1yaWdodC13aWR0aDogMXB4OworICAgIGJvcmRlci1ib3R0
b20td2lkdGg6IDA7CisgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKKyAgICBib3JkZXItY29s
b3I6IGhzbCgwLCAwJSwgNTAlKTsKKyAgICBib3JkZXItc3R5bGU6IGRhc2hlZDsKK30KKworLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgeworICAgIGJv
cmRlci1jb2xvcjogYmxhY2s7CisgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstYm9yZGVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAtd2Vi
a2l0LWNhbGMoNTAlIC0gMC41cHgpOworICAgIHdpZHRoOiA0OHB4OworICAgIGJvcmRlci10b3A6
IDFweCBkYXNoZWQgaHNsKDAsIDAlLCA1MCUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLmxpbmstYWxsID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay1ib3JkZXIubGVmdCwKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1h
bGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uOmhvdmVy
ICsgLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQgIHsKKyAg
ICB3aWR0aDogNDlweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5s
aW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRl
ci5sZWZ0IHsKKyAgICB3aWR0aDogNTJweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgd2lkdGg6IDUxcHg7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1ib3JkZXIgeworICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBoc2woMCwgMCwg
MCk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0IHsKKyAgICBsZWZ0OiAxcHg7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgcmlnaHQ6IDFweDsKK30KKwor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0IHsKKyAgICBsZWZ0OiAw
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtl
ZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLnJpZ2h0IHsKKyAg
ICByaWdodDogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3Qo
LmxpbmstYWxsKSA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsK
KyAgICB3aWR0aDogMTBweDsKKyAgICB0b3A6IC13ZWJraXQtY2FsYyg1MCUgLSAxcHgpOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpLmxpbmtl
ZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKKyAgICB3aWR0
aDogMTJweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiB7CisgICAgd2lkdGg6IDEwcHg7Cisg
ICAgaGVpZ2h0OiAxMHB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uID4gLnVubGlua2VkLWlj
b24geworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2wo
MCwgMTAwJSwgMTAwJSk7CisgICAgei1pbmRleDogMTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNv
biA+IC51bmxpbmtlZC1pY29uIHN2ZyAuZmlsbGVkIHsKKyAgICBmaWxsOiBoc2woMCwgMCUsIDUw
JSk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbiBzdmcgLnN0cm9r
ZWQgeworICAgIHN0cm9rZTogaHNsKDAsIDAlLCA1MCUpOworfQorCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1lZGl0b3ItbGluay1pY29uIHsKKyAgICBtYXJnaW46IDVweCAwIDAgMTFweDsKK30KKworLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiB7CisgICAgbWFyZ2luLXRvcDogMXB4OworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFs
U3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mYjAwOWE0M2U5MDhjNGFmNmE4MTYzYzcwYTg5YzJhODAyZmNmMDFjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvckxpbmsuanMKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsgPSBjbGFzcyBWaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yTGluayBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAg
ICBjb25zdHJ1Y3RvcihsaW5rZWRQcm9wZXJ0aWVzLCBjbGFzc05hbWUsIGxpbmtzVG9IaWRlV2hl
bkxpbmtlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fbGlua2Vk
UHJvcGVydGllcyA9IGxpbmtlZFByb3BlcnRpZXMgfHwgW107CisgICAgICAgIHRoaXMuX2xpbmtz
VG9IaWRlV2hlbkxpbmtlZCA9IGxpbmtzVG9IaWRlV2hlbkxpbmtlZCB8fCBbXTsKKyAgICAgICAg
dGhpcy5fbGFzdFByb3BlcnR5RWRpdGVkID0gbnVsbDsKKworICAgICAgICBmb3IgKGxldCBwcm9w
ZXJ0eSBvZiB0aGlzLl9saW5rZWRQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcHJvcGVydHkuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvci5FdmVu
dC5WYWx1ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlTGlua2VkUHJvcGVydHlWYWx1ZUNoYW5nZWQs
IHRoaXMpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmsiLCBjbGFzc05hbWUgfHwgIiIpOworCisgICAgICAgIGxl
dCBsZWZ0TGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgbGVmdExpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1ib3JkZXIiLCAibGVmdCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKGxlZnRMaW5lRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24iKTsK
KyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsaWNrIHRvIGxpbmsuIik7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2hhbmRsZUljb25Nb3VzZW92ZXIuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0Iiwg
dGhpcy5faGFuZGxlSWNvbk1vdXNlb3V0LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9pY29u
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUljb25DbGlja2Vk
LmJpbmQodGhpcykpOworCisgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2VzL1Zpc3Vh
bFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmciLCAidW5saW5rZWQtaWNvbiIsIG51bGwsIGZ1bmN0
aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFwcGVuZENoaWxk
KHdyYXBwZXIpOworICAgICAgICAgICAgdGhpcy5fdW5saW5rZWRJY29uID0gd3JhcHBlcjsKKyAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdl
cy9WaXN1YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2ZyIsICJsaW5rZWQtaWNvbiIsIG51bGwsIGZ1
bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFwcGVuZENo
aWxkKHdyYXBwZXIpOworICAgICAgICAgICAgdGhpcy5fbGlua2VkSWNvbiA9IHdyYXBwZXI7Cisg
ICAgICAgICAgICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9IHRydWU7CisgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29u
RWxlbWVudCk7CisKKyAgICAgICAgbGV0IHJpZ2h0TGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgcmlnaHRMaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIiwgInJpZ2h0Iik7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRMaW5lRWxlbWVudCk7CisKKyAg
ICAgICAgdGhpcy5fbGlua2VkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZmFs
c2U7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBzZXQgZGlzYWJsZWQo
ZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZmxhZzsKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIHRoaXMuX2Rpc2FibGVkKTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlTGlua2VkUHJvcGVydHlWYWx1
ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAg
aWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9sYXN0
UHJvcGVydHlFZGl0ZWQgPSBwcm9wZXJ0eTsKKyAgICAgICAgaWYgKCF0aGlzLl9saW5rZWQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fc3luY1ZhbHVlKHByb3BlcnR5KTsK
KyAgICB9CisKKyAgICBfc3luY1ZhbHVlKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgbGV0IHN0
eWxlID0gcHJvcGVydHkuc3R5bGU7CisgICAgICAgIGxldCB0ZXh0ID0gc3R5bGUudGV4dDsKKyAg
ICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHkuc3ludGhlc2l6ZWRWYWx1ZSB8fCBudWxsOworCisg
ICAgICAgIGZvciAobGV0IGxpbmtlZFByb3BlcnR5IG9mIHRoaXMuX2xpbmtlZFByb3BlcnRpZXMp
CisgICAgICAgICAgICB0ZXh0ID0gbGlua2VkUHJvcGVydHkuc3luY1ZhbHVlKHRleHQsIHZhbHVl
KTsKKworICAgICAgICBzdHlsZS50ZXh0ID0gdGV4dDsKKyAgICB9CisKKyAgICBfaGFuZGxlSWNv
bk1vdXNlb3ZlcigpCisgICAgeworICAgICAgICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9IHRo
aXMuX2xpbmtlZDsKKyAgICAgICAgdGhpcy5fdW5saW5rZWRJY29uLmhpZGRlbiA9ICF0aGlzLl9s
aW5rZWQ7CisgICAgfQorCisgICAgX2hhbmRsZUljb25Nb3VzZW91dCgpCisgICAgeworICAgICAg
ICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9ICF0aGlzLl9saW5rZWQ7CisgICAgICAgIHRoaXMu
X3VubGlua2VkSWNvbi5oaWRkZW4gPSB0aGlzLl9saW5rZWQ7CisgICAgfQorCisgICAgX2hhbmRs
ZUljb25DbGlja2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xpbmtlZCA9ICF0aGlzLl9saW5r
ZWQ7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibGlua2VkIiwgdGhp
cy5fbGlua2VkKTsKKyAgICAgICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSAhdGhpcy5fbGlu
a2VkOworICAgICAgICB0aGlzLl91bmxpbmtlZEljb24uaGlkZGVuID0gdGhpcy5fbGlua2VkOwor
CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0gdGhpcy5fbGlua2VkID8gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byByZW1vdmUgbGluay4iKSA6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xpY2sgdG8gbGluay4iKTsKKworICAgICAgICB0aGlzLl9zeW5jVmFsdWUodGhp
cy5fbGFzdFByb3BlcnR5RWRpdGVkIHx8IHRoaXMuX2xpbmtlZFByb3BlcnRpZXNbMF0pOworICAg
ICAgICBmb3IgKGxldCBsaW5rVG9IaWRlIG9mIHRoaXMuX2xpbmtzVG9IaWRlV2hlbkxpbmtlZCkK
KyAgICAgICAgICAgIGxpbmtUb0hpZGUuZGlzYWJsZWQgPSB0aGlzLl9saW5rZWQ7CisgICAgfQor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2MxNzI3MDhhNmFjYjUwOGZmOGQyZDUwNjk3ZmE4Nzg2NzQ3NGNlOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5w
dXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRp
dGxlIHsKKyAgICBtYXJnaW4tcmlnaHQ6IDNweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgeworICAgIG9yZGVyOiAyOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0
aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
cjpub3QoLm51bWJlci1pbnB1dC1lZGl0YWJsZSkgKyAucmVsYXRpdmUtc2xpZGVyLAorLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1i
ZXItc2xpZGVyLmRpc2FibGVkID4gLnJlbGF0aXZlLXNsaWRlciB7CisgICAgb3BhY2l0eTogMC41
OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5uby12YWx1ZXMubm8tdW5pdHMgewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
Lm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC5yZWxhdGl2ZS1zbGlk
ZXIgeworICAgIHdpZHRoOiA0NyU7CisgICAgbWFyZ2luLXJpZ2h0OiA3cHg7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHls
ZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNTI0YWQ5OGVjY2EzYTM0MTQwMTI3YzRhMzFlMThmMmVjM2U5YTJhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcwpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIgPSBjbGFzcyBWaXN1
YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eU5hbWVzLCB0ZXh0
LCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dOZWdhdGl2ZVZhbHVlcywgbGF5
b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9wZXJ0eU5hbWVzLCB0ZXh0LCBw
b3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dOZWdhdGl2ZVZhbHVlcywgbGF5b3V0
UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVsYXRp
dmUtbnVtYmVyLXNsaWRlciIpOworCisgICAgICAgIHRoaXMuX3NsaWRlciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX3NsaWRlci5jbGFzc0xpc3QuYWRk
KCJyZWxhdGl2ZS1zbGlkZXIiKTsKKyAgICAgICAgdGhpcy5fc2xpZGVyLnR5cGUgPSAicmFuZ2Ui
OworICAgICAgICB0aGlzLl9zbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9o
YW5kbGVTbGlkZXJDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3NsaWRlcik7CisKKyAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1ZSA9
IG51bGw7CisgICAgICAgIHRoaXMuX3NjYWxlID0gMTAwOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgc2V0IHNjYWxlKHNjYWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2NhbGUgPSBz
Y2FsZSB8fCAxOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVz
KQorICAgIHsKKyAgICAgICAgc3VwZXIudXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMp
OworICAgICAgICB0aGlzLl9yZXNldFNsaWRlcigpOworICAgIH0KKworICAgIC8vIFByaXZhdGUK
KworICAgIF9yZXNldFNsaWRlcigpCisgICAgeworICAgICAgICB0aGlzLl9zdGFydGluZ1ZhbHVl
ID0gcGFyc2VGbG9hdCh0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSk7CisgICAg
ICAgIGlmIChpc05hTih0aGlzLl9zdGFydGluZ1ZhbHVlKSkKKyAgICAgICAgICAgIHRoaXMuX3N0
YXJ0aW5nVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIpIHx8IDA7CisKKyAgICAg
ICAgbGV0IG9yaWdpbiA9IHRoaXMuX3NjYWxlIC8gMjsKKyAgICAgICAgaWYgKHRoaXMuX2FsbG93
TmVnYXRpdmVWYWx1ZXMgfHwgdGhpcy5fc3RhcnRpbmdWYWx1ZSA+IG9yaWdpbikgeworICAgICAg
ICAgICAgdGhpcy5fc2xpZGVyLm1pbiA9IC1vcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zbGlk
ZXIubWF4ID0gb3JpZ2luOworICAgICAgICAgICAgdGhpcy5fc2xpZGVyLnZhbHVlID0gMDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlci5taW4gPSAwOworICAgICAg
ICAgICAgdGhpcy5fc2xpZGVyLm1heCA9IHRoaXMuX3NjYWxlOworICAgICAgICAgICAgdGhpcy5f
c2xpZGVyLnZhbHVlID0gdGhpcy5fc3RhcnRpbmdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIF9oYW5kbGVTbGlkZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0
aGlzLl9zdGFydGluZ1ZhbHVlICsgTWF0aC5yb3VuZChwYXJzZUZsb2F0KHRoaXMuX3NsaWRlci52
YWx1ZSkgKiAxMDApIC8gMTAwOworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAg
IH0KKworICAgIF9oYW5kbGVOdW1iZXJJbnB1dENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIuX2hhbmRsZU51bWJlcklucHV0Q2hhbmdlZCgpOworICAgICAgICB0aGlzLl9yZXNldFNsaWRl
cigpOworICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258628</attachid>
            <date>2015-08-10 11:26:09 -0700</date>
            <delta_ts>2015-08-10 15:56:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147712-20150810112555.patch</filename>
            <type>text/plain</type>
            <size>41621</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDMwMGE0YTIwMjQ2Yjg0NjE1NTExYTc5YTEzYzA2
MmI0ZjFiZjkzM2QuLjQ5YjVmYmMyYWRjZjM4MzQyMjAxZWJmMzcyYzUwMWQxMzI4N2RhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTA4LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBB
ZGQgbnVtZXJpY2FsIGlucHV0IGFuZCBzbGlkZXIgYmFzZWQgVmlzdWFsIGVkaXRvcnMgZm9yIENT
UyBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDc3MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcyB3aXRoIG51bWVyaWNhbCB2YWx1
ZXMgZm9yIHVzZSBpbiB0aGUgVmlzdWFsIHN0eWxlCisgICAgICAgIGRldGFpbHMgcGFuZWwgaW4g
dGhlIENTUyBzaWRlYmFyLCBpbiB0aGUgZm9ybSBvZiBhIGNvbWJpbmVkIHNlbGVjdCBhbmQgaW5w
dXQgb3IgYW4KKyAgICAgICAgaW5wdXQgcmFuZ2UuICBBbHNvIGFkZGVkIG9wdGlvbmFsIHZpc3Vh
bCBsaW5rYWdlcyB0byBzeW5jIHZhbHVlcyBiZXR3ZWVuIG11bHRpcGxlCisgICAgICAgIGVkaXRv
cnMgb2YgdGhpcyB0eXBlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFs
U3R5bGVQcm9wZXJ0eUxpbmtlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmc6IEFkZGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3M6IEFkZGVk
LgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5mb2N1c2VkID4gLmZvY3VzLXJpbmcpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQta2V5d29yZC1zZWxlY3QpOgor
ICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtY29udGFpbmVyKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFibGUpID4gLm51
bWJlci1pbnB1dC1jb250YWluZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1i
ZXItaW5wdXQtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC12YWx1ZSk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1jb250YWluZXIgPiBzcGFuKToKKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qczogQWRk
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUu
Z2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0
Qm94LnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLmdldCB1bml0cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuc2V0IHVuaXRzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5n
ZXQgcGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVy
SW5wdXRCb3gucHJvdG90eXBlLnNldCBwbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuZ2V0IHN5bnRoZXNpemVkVmFs
dWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJv
dG90eXBlLmdldCBudW1iZXJJbnB1dEVkaXRhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS51cGRhdGVWYWx1ZUZyb21UZXh0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlw
ZS5wYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94LnByb3RvdHlwZS5faGFuZGxlS2V5d29yZENoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl92YWx1ZU51bWJlcklu
cHV0S2V5RG93bi5zaGlmdFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5fdmFsdWVOdW1iZXJJbnB1dEtleURvd24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9o
YW5kbGVOdW1iZXJJbnB1dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5f
Y3JlYXRlVmFsdWVPcHRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94LnByb3RvdHlwZS5fY3JlYXRlVW5pdE9wdGlvbnMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9hZGRBZHZhbmNl
ZFVuaXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94
LnByb3RvdHlwZS5fcmVtb3ZlQWR2YW5jZWRVbml0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2ZvY3VzQ29udGVudEVsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90
eXBlLl9ibHVyQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxl
bWVudHMpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yTGluay5jc3M6IEFkZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1lZGl0b3ItbGluayk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rLmRpc2FibGVkKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsubGluay1hbGwpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay5saW5rLWFsbC5saW5rZWQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2Vk
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uOmhvdmVyICsgLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQpOgorICAgICAgICAoLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0KToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rLWJvcmRlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIu
bGVmdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmstYWxsKSA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyKToKKyAgICAgICAgKC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkubGlua2VkID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIpOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstaWNvbik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uID4gLnVubGlua2VkLWlj
b24pOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHN2ZyAu
ZmlsbGVkKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbiBz
dmcgLnN0cm9rZWQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
azpub3QoLmxpbmstYWxsKSA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNv
bik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxs
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uKToKKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuanM6IEFk
ZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5r
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5w
cm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5fbGlua2Vk
UHJvcGVydHlWYWx1ZUNoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5fdXBkYXRlTGlua2VkRWRpdG9ycyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBl
Ll9oYW5kbGVJY29uTW91c2VvdmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZVByb3BlcnR5RWRpdG9yTGluay5wcm90b3R5cGUuX2hhbmRsZUljb25Nb3VzZW91dCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBl
Ll9oYW5kbGVJY29uQ2xpY2tlZCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzOiBBZGRlZC4KKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVt
YmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdGl0bGUpOgorICAgICAgICAoLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1u
dW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIpOgor
ICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJv
eC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyLmRpc2FibGVkID4gLnJlbGF0aXZlLXNsaWRlcik6Cisg
ICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94
LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNv
bnRhaW5lci5uby12YWx1ZXMubm8tdW5pdHMpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4g
LnJlbGF0aXZlLXNsaWRlcik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIucHJvdG90eXBlLnNldCBzY2FsZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5w
cm90b3R5cGUudXBkYXRlRWRpdG9yVmFsdWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLnByb3RvdHlwZS5fcmVzZXRTbGlkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIucHJvdG90
eXBlLl9oYW5kbGVTbGlkZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxT
dHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLnByb3RvdHlwZS5faGFuZGxlTnVtYmVySW5wdXRDaGFu
Z2VkKToKKwogMjAxNS0wOC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmUgcnVsZXIgaGFuZGxlIHRvb2x0aXAgc2hv
d3Mgd3JvbmcgdmFsdWUgd2hlbiBoYW5kbGVzIG92ZXJsYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlu
a2VkLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1
YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDU5OWEzMzVjZTBkMDZlMWNj
OTQ3NWQ1MzIyZjRmZmI1ZjE2NTg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlMaW5rZWQuc3Zn
CkBAIC0wLDAgKzEsNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
KzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAt
LT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
IHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPGNpcmNsZSBjbGFzcz0iZmlsbGVkIiBjeD0iOCIg
Y3k9IjgiIHI9IjQiIGZpbGw9ImJsYWNrIiBzdHJva2U9Im5vbmUiIC8+Cis8L3N2Zz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxT
dHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGY0ZDEyZDkxOTdjYjc1ZjcwOGVkODBiNWI5N2UwM2M5ZTc0OWNkZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHls
ZVByb3BlcnR5VW5saW5rZWQuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CisgICAgPHBhdGggY2xh
c3M9ImZpbGxlZCIgZD0iTSAxMCA0IEMgMTYgNCAxNiAxMiAxMCAxMiIgc3Ryb2tlPSJub25lIiAv
PgorICAgIDxwYXRoIGNsYXNzPSJmaWxsZWQiIGQ9Ik0gNiA0IEMgMCA0IDAgMTIgNiAxMiIgc3Ry
b2tlPSJub25lIiAvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5w
dXRCb3guY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMGZlMDk2ZGU0M2FhYTk3MjUzMWE4NDZlN2IwMTJlMGJm
ZjM1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmNzcwpAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lci5mb2N1c2VkID4gLmZvY3VzLXJpbmcgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7Cisg
ICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CisgICAgaGVpZ2h0OiAxNnB4OworICAgIGJvcmRl
ci1yYWRpdXM6IDNweDsKKyAgICBib3gtc2hhZG93OiBoc2xhKDAsIDAlLCAwJSwgMC4xNSkgMCAx
cHggMCwgMCAwIDAgM3B4IGhzbGEoMjExLCA5NiUsIDQ4JSwgMC4yNSk7CisgICAgcG9pbnRlci1l
dmVudHM6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWtleXdv
cmQtc2VsZWN0IHsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4g
Lm51bWJlci1pbnB1dC1jb250YWluZXIgeworICAgIGRpc3BsYXk6IGZsZXg7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsKKyAgICB3aWR0aDog
Y2FsYygxMDAlIC0gMjBweCk7CisgICAgbGluZS1oZWlnaHQ6IDE2cHg7CisgICAgdGV4dC1hbGln
bjogcmlnaHQ7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworICAgIGJhY2tncm91bmQtY29sb3I6
IGhzbCgwLCAxMDAlLCAxMDAlKTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBvdmVy
ZmxvdzogaGlkZGVuOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFibGUpID4gLm51bWJlci1pbnB1dC1jb250YWlu
ZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29u
dGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVy
LWlucHV0LWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtdmFsdWUgeworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTZweDsKKyAgICBtYXJnaW4tcmlnaHQ6IDFweDsKKyAgICBwYWRkaW5n
OiAwIDAgMXB4IDNweDsKKyAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7CisgICAg
dGV4dC1hbGlnbjogcmlnaHQ7CisgICAgYm9yZGVyOiBub25lOworICAgIG91dGxpbmU6IG5vbmU7
CisgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1i
ZXItaW5wdXQtY29udGFpbmVyID4gc3BhbiB7CisgICAgbWluLXdpZHRoOiAtd2Via2l0LWZpdC1j
b250ZW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDE3ZTU4OGE0ODdhZjFkYmJiODdmZjEyNjBmYTY2NGQ1MjljNzgxNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanMKQEAgLTAsMCArMSwzMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCA9IGNsYXNzIFZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3ggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvcgoreworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5TmFtZXMsIHRleHQsIHBvc3NpYmxl
VmFsdWVzLCBwb3NzaWJsZVVuaXRzLCBhbGxvd05lZ2F0aXZlVmFsdWVzLCBsYXlvdXRSZXZlcnNl
ZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5TmFtZXMsIHRleHQsIHBvc3NpYmxlVmFs
dWVzLCBwb3NzaWJsZVVuaXRzIHx8IFtXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFVuaXRzIild
LCAibnVtYmVyLWlucHV0LWJveCIsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl9o
YXNVbml0cyA9ICEhcG9zc2libGVVbml0czsKKyAgICAgICAgdGhpcy5fYWxsb3dOZWdhdGl2ZVZh
bHVlcyA9ICEhYWxsb3dOZWdhdGl2ZVZhbHVlcyB8fCBmYWxzZTsKKworICAgICAgICB0aGlzLmNv
bnRlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm5vLXZhbHVlcyIsICFwb3NzaWJsZVZhbHVl
cyB8fCAhcG9zc2libGVWYWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVu
dC5jbGFzc0xpc3QudG9nZ2xlKCJuby11bml0cyIsICF0aGlzLl9oYXNVbml0cyk7CisKKyAgICAg
ICAgbGV0IGZvY3VzUmluZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgZm9jdXNSaW5nRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmb2N1cy1yaW5nIik7Cisg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9jdXNSaW5nRWxlbWVudCk7
CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzZWxlY3QiKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWtleXdvcmQtc2VsZWN0Iik7CisgICAgICAgIGlmICh0
aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkKQorICAgICAgICAgICAgdGhpcy5fa2V5d29yZFNl
bGVjdEVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFsdC1jbGljayB0byBz
aG93IGFsbCB1bml0cyIpOworCisgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVZhbHVlcykgewor
ICAgICAgICAgICAgdGhpcy5fY3JlYXRlVmFsdWVPcHRpb25zKHRoaXMuX3Bvc3NpYmxlVmFsdWVz
LmJhc2ljKTsKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMpCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVVbml0T3B0
aW9ucyh0aGlzLl9wb3NzaWJsZVVuaXRzLmJhc2ljKTsKKworICAgICAgICB0aGlzLl9hZHZhbmNl
ZFVuaXRzRWxlbWVudHMgPSBudWxsOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXNDb250ZW50RWxlbWVudC5i
aW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fa2V5d29yZFNlbGVjdE1vdXNlRG93bi5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2hhbmdlIiwgdGhpcy5faGFuZGxlS2V5d29yZENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0
aGlzLl9ibHVyQ29udGVudEVsZW1lbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQpOworCisgICAg
ICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQo
Im51bWJlci1pbnB1dC1jb250YWluZXIiKTsKKworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklu
cHV0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRo
aXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51bWJlci1pbnB1dC12
YWx1ZSIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5zcGVsbGNoZWNr
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXNDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1
cCIsIHRoaXMuX2hhbmRsZU51bWJlcklucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
dGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRo
aXMuX2JsdXJDb250ZW50RWxlbWVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbnVtYmVy
VW5pdHNDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgdGhpcy5fbnVtYmVyVW5pdHNDb250YWluZXIuYXBwZW5kQ2hpbGQo
dGhpcy5fdW5pdHNFbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5lcik7CisKKyAgICAgICAgdGhpcy5fbnVtYmVy
SW5wdXRJc0VkaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVO
dW1iZXJJbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsOworICAgICAgICB0aGlzLl92YWx1ZU51bWJl
cklucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgMCk7CisgICAgICAgIGlm
ICh0aGlzLl9oYXNVbml0cyAmJiB0aGlzLnZhbHVlSXNTdXBwb3J0ZWRVbml0KCJweCIpKQorICAg
ICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fa2V5d29yZFNl
bGVjdEVsZW1lbnQudmFsdWUgPSAicHgiOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
Z2V0IHZhbHVlKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFi
bGUpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLl92YWx1ZU51bWJlcklucHV0
RWxlbWVudC52YWx1ZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFi
bGUpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWU7
CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID09PSB0aGlzLnZhbHVlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghaXNOYU4odmFsdWUpKSB7CisgICAgICAgICAg
ICB0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5j
b250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsKKyAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlID0gdmFsdWU7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXZhbHVlKSB7Cisg
ICAgICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy52YWx1ZUlz
U3VwcG9ydGVkS2V5d29yZCh2YWx1ZSkpIHsKKyAgICAgICAgICAgIHRoaXMuX251bWJlcklucHV0
SXNFZGl0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsKKyAgICAgICAgICAgIHRoaXMu
X2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnZXQgdW5pdHMoKQorICAgIHsKKyAgICAgICAgbGV0
IGtleXdvcmQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKyAgICAgICAgaWYg
KCF0aGlzLnZhbHVlSXNTdXBwb3J0ZWRVbml0KGtleXdvcmQpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHJldHVybiBrZXl3b3JkOworICAgIH0KKworICAgIHNldCB1bml0cyh1bml0
KQorICAgIHsKKyAgICAgICAgaWYgKCF1bml0IHx8IHVuaXQgPT09IHRoaXMudW5pdCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMudmFsdWVJc1N1cHBvcnRlZFVuaXQo
dW5pdCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3ZhbHVlSXNT
dXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkpCisgICAgICAgICAgICB0aGlzLl9hZGRBZHZhbmNl
ZFVuaXRzKCk7CisKKyAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQt
ZWRpdGFibGUiKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUgPSB1
bml0OworCisgICAgICAgIGlmICh0aGlzLl9oYXNVbml0cykKKyAgICAgICAgICAgIHRoaXMuX3Vu
aXRzRWxlbWVudC50ZXh0Q29udGVudCA9IHVuaXQ7CisgICAgfQorCisgICAgZ2V0IHBsYWNlaG9s
ZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVu
dC5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7CisgICAgfQorCisgICAgc2V0IHBsYWNlaG9s
ZGVyKHRleHQpCisgICAgeworICAgICAgICBpZiAodGV4dCA9PT0gdGhpcy5wbGFjZWhvbGRlcikK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgb25seU51bWVyaWNhbFRleHQgPSAh
aXNOYU4odGV4dCkgJiYgdGV4dDsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1l
bnQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIG9ubHlOdW1lcmljYWxUZXh0IHx8IDApOwor
ICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVlKCkKKyAgICB7CisgICAgICAgIGxldCB2
YWx1ZSA9IHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlOworICAgICAgICBpZiAo
dGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlICYmICF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgIGxldCBrZXl3b3JkID0gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1l
bnQudmFsdWU7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlSXNTdXBwb3J0ZWRVbml0KGtleXdv
cmQpID8gdmFsdWUgKyAodGhpcy5faGFzVW5pdHMgPyBrZXl3b3JkIDogIiIpIDoga2V5d29yZDsK
KyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZUZyb21UZXh0KHRleHQsIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgbGV0IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVlKHZhbHVlKTsKKyAgICAgICAgdGhpcy52
YWx1ZSA9IG1hdGNoID8gbWF0Y2hbMV0gOiB2YWx1ZTsKKyAgICAgICAgdGhpcy51bml0cyA9IG1h
dGNoID8gbWF0Y2hbMl0gOiBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5tb2RpZnlQcm9wZXJ0
eVRleHQodGV4dCwgdmFsdWUpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgcGFy
c2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIC9eKC0/W1xkLl0rKShbXlxzXGRd
ezAsNH0pKD86XHMqOz8pJC8uZXhlYyh0ZXh0KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfaGFuZGxlS2V5d29yZENoYW5nZWQoKQorICAgIHsKKyAgICAgICAgbGV0IHNlbGVjdGVk
S2V5d29yZElzVW5pdCA9IHRoaXMudmFsdWVJc1N1cHBvcnRlZFVuaXQodGhpcy5fa2V5d29yZFNl
bGVjdEVsZW1lbnQudmFsdWUpOworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0
YWJsZSAmJiBzZWxlY3RlZEtleXdvcmRJc1VuaXQpCisgICAgICAgICAgICB0aGlzLl92YWx1ZU51
bWJlcklucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7CisKKyAgICAgICAgaWYgKHRoaXMuX2hhc1Vu
aXRzKQorICAgICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5f
a2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWU7CisKKyAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJ
c0VkaXRhYmxlID0gc2VsZWN0ZWRLZXl3b3JkSXNVbml0OworICAgICAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIsIHNlbGVjdGVk
S2V5d29yZElzVW5pdCk7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQor
CisgICAgX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZnVuY3Rpb24gYWRqdXN0VmFsdWUoZGVsdGEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxldCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWU7CisgICAg
ICAgICAgICBpZiAoIXZhbHVlICYmIGlzTmFOKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGxl
dCBwbGFjZWhvbGRlclZhbHVlID0gdGhpcy5wbGFjZWhvbGRlciAmJiAhaXNOYU4odGhpcy5wbGFj
ZWhvbGRlcikgPyBwYXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIpIDogMDsKKyAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSA9IHBsYWNlaG9sZGVyVmFsdWUgKyBkZWx0YTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gdmFsdWUgKyBkZWx0YTsKKworICAgICAg
ICAgICAgaWYgKCF0aGlzLl9hbGxvd05lZ2F0aXZlVmFsdWVzICYmIG5ld1ZhbHVlIDwgMCkKKyAg
ICAgICAgICAgICAgICBuZXdWYWx1ZSA9IDA7CisKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSBN
YXRoLnJvdW5kKG5ld1ZhbHVlICogMTAwKSAvIDEwMDsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVl
RGlkQ2hhbmdlKCk7CisgICAgICAgIH0KKworICAgICAgICBsZXQgc2hpZnQgPSAxOworICAgICAg
ICBpZiAoZXZlbnQuY3RybEtleSkKKyAgICAgICAgICAgIHNoaWZ0IC89IDEwOworICAgICAgICBl
bHNlIGlmIChldmVudC5zaGlmdEtleSkKKyAgICAgICAgICAgIHNoaWZ0ICo9IDEwOworCisgICAg
ICAgIGxldCBrZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOworICAgICAgICBpZiAoa2V5LnN0YXJ0
c1dpdGgoIlBhZ2UiKSkKKyAgICAgICAgICAgIHNoaWZ0ICo9IDEwOworCisgICAgICAgIGlmIChr
ZXkgPT09ICJVcCIgfHwga2V5ID09PSAiUGFnZVVwIikgeworICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGFkanVzdFZhbHVlLmNhbGwodGhpcywgc2hpZnQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleSA9PT0g
IkRvd24iIHx8IGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICAgICAgICAgIGFkanVzdFZhbHVlLmNhbGwodGhpcywgLXNoaWZ0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3ZhbHVlRGlk
Q2hhbmdlKCk7CisgICAgfQorCisgICAgX2hhbmRsZU51bWJlcklucHV0Q2hhbmdlZCgpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAg
IF9rZXl3b3JkU2VsZWN0TW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50
LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX2FkZEFkdmFuY2VkVW5pdHMoKTsKKyAgICAgICAg
ZWxzZSBpZiAoIXRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQoKSkKKyAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZUFkdmFuY2VkVW5pdHMoKTsKKyAgICB9CisKKyAgICBfY3JlYXRlVmFs
dWVPcHRpb25zKHZhbHVlcykKKyAgICB7CisgICAgICAgIGxldCBhZGRlZEVsZW1lbnRzID0gW107
CisgICAgICAgIGZvciAobGV0IGtleSBpbiB2YWx1ZXMpIHsKKyAgICAgICAgICAgIGxldCBvcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9wdGlv
bi52YWx1ZSA9IGtleTsKKyAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gdmFsdWVzW2tleV07Cisg
ICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24p
OworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gYWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBfY3JlYXRlVW5pdE9w
dGlvbnModW5pdHMpCisgICAgeworICAgICAgICBsZXQgYWRkZWRFbGVtZW50cyA9IFtdOworICAg
ICAgICBmb3IgKGxldCB1bml0IG9mIHVuaXRzKSB7CisgICAgICAgICAgICBsZXQgb3B0aW9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBvcHRpb24udGV4
dCA9IHVuaXQ7CisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRD
aGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBf
YWRkQWR2YW5jZWRVbml0cygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fYWR2YW5jZWRVbml0
c0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2tleXdvcmRT
ZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIikpOwor
ICAgICAgICB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMgPSB0aGlzLl9jcmVhdGVVbml0T3B0
aW9ucyh0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkKTsKKyAgICB9CisKKyAgICBfcmVtb3Zl
QWR2YW5jZWRVbml0cygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2FkdmFuY2VkVW5pdHNF
bGVtZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9rZXl3b3JkU2Vs
ZWN0RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHNbMF0ucHJl
dmlvdXNTaWJsaW5nKTsKKyAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiB0aGlzLl9hZHZhbmNl
ZFVuaXRzRWxlbWVudHMpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5y
ZW1vdmVDaGlsZChlbGVtZW50KTsKKworICAgICAgICB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVu
dHMgPSBudWxsOworICAgIH0KKworICAgIF9mb2N1c0NvbnRlbnRFbGVtZW50KGV2ZW50KQorICAg
IHsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmb2N1c2VkIik7
CisgICAgfQorCisgICAgX2JsdXJDb250ZW50RWxlbWVudChldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9jdXNlZCIpOworICAgIH0K
KworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVudHMoZGlzYWJsZWQpCisgICAg
eworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC50YWJJbmRleCA9IGRpc2FibGVk
ID8gIi0xIiA6IG51bGw7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnRh
YkluZGV4ID0gZGlzYWJsZWQgPyAiLTEiIDogbnVsbDsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3ZGVh
YTczN2FjZDIyMzM5YjI4NzM4OGZiOTgxZjZhZTcwMzBlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3Bl
cnR5RWRpdG9yTGluay5jc3MKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgbWluLXdpZHRoOiAzMnB4OworICAgIG1hcmdpbi1sZWZ0OiAxcHg7Cit9CisKKy52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsuZGlzYWJsZWQgeworICAgIHZpc2liaWxpdHk6IGhp
ZGRlbjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCB7
CisgICAgaGVpZ2h0OiAxM3B4OworICAgIG1hcmdpbjogMCBhdXRvIDJweDsKKyAgICBwYWRkaW5n
OiAwIDUwcHg7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAgICBib3JkZXItcmlnaHQtd2lk
dGg6IDFweDsKKyAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOworICAgIGJvcmRlci1sZWZ0LXdp
ZHRoOiAxcHg7CisgICAgYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDUwJSk7CisgICAgYm9yZGVy
LXN0eWxlOiBkYXNoZWQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsu
bGluay1hbGwubGlua2VkIHsKKyAgICBib3JkZXItY29sb3I6IGJsYWNrOworICAgIGJvcmRlci1z
dHlsZTogc29saWQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogLXdlYmtpdC1jYWxjKDUwJSAtIDAuNXB4KTsKKyAgICB3aWR0
aDogNDhweDsKKyAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgNTAlKTsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLmxlZnQsCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstaWNvbjpob3ZlciArIC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstYm9yZGVyLnJpZ2h0ICB7CisgICAgd2lkdGg6IDQ5cHg7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIubGVmdCB7CisgICAgd2lkdGg6IDUycHg7Cit9CisK
Ky52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZp
c3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQgeworICAgIHdpZHRo
OiA1MXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmtlZCA+
IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKKyAgICBib3JkZXIt
dG9wOiAxcHggc29saWQgaHNsKDAsIDAsIDApOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIu
bGVmdCB7CisgICAgbGVmdDogMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQg
eworICAgIHJpZ2h0OiAxcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1i
b3JkZXIubGVmdCB7CisgICAgbGVmdDogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgcmlnaHQ6IDA7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgd2lkdGg6IDEwcHg7CisgICAgdG9wOiAtd2Vi
a2l0LWNhbGMoNTAlIC0gMXB4KTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluazpub3QoLmxpbmstYWxsKS5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWJvcmRlciB7CisgICAgd2lkdGg6IDEycHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWlj
b24geworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKK30KKworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIHotaW5kZXg6IDE7
Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbiBzdmcgLmZpbGxlZCB7
CisgICAgZmlsbDogaHNsKDAsIDAlLCA1MCUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uID4g
LnVubGlua2VkLWljb24gc3ZnIC5zdHJva2VkIHsKKyAgICBzdHJva2U6IGhzbCgwLCAwJSwgNTAl
KTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmstYWxs
KSA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiB7CisgICAgbWFyZ2lu
OiA1cHggMCAwIDExcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsu
bGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24geworICAg
IG1hcmdpbi10b3A6IDFweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0
eUVkaXRvckxpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdjY2VhNzk4MjgzNjY4NWU2ODU5YzIyNDZhOTcw
MDcxZmEyYmNhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzCkBAIC0wLDAg
KzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlF
ZGl0b3JMaW5rID0gY2xhc3MgVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IobGlua2VkUHJvcGVydGllcywg
Y2xhc3NOYW1lLCBsaW5rc1RvSGlkZVdoZW5MaW5rZWQpCisgICAgeworICAgICAgICBzdXBlcigp
OworCisgICAgICAgIHRoaXMuX2xpbmtlZFByb3BlcnRpZXMgPSBsaW5rZWRQcm9wZXJ0aWVzIHx8
IFtdOworICAgICAgICB0aGlzLl9saW5rc1RvSGlkZVdoZW5MaW5rZWQgPSBsaW5rc1RvSGlkZVdo
ZW5MaW5rZWQgfHwgW107CisgICAgICAgIHRoaXMuX2xhc3RQcm9wZXJ0eUVkaXRlZCA9IG51bGw7
CisKKyAgICAgICAgZm9yIChsZXQgcHJvcGVydHkgb2YgdGhpcy5fbGlua2VkUHJvcGVydGllcykK
KyAgICAgICAgICAgIHByb3BlcnR5LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2xpbmtlZFBy
b3BlcnR5VmFsdWVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rIiwgY2xhc3NOYW1lIHx8
ICIiKTsKKworICAgICAgICBsZXQgbGVmdExpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIGxlZnRMaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIiwgImxlZnQiKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0TGluZUVsZW1lbnQpOworCisgICAgICAgIHRo
aXMuX2ljb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2ljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1pY29uIik7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBsaW5rIHByb3BlcnR5IHZhbHVlcyIpOworICAg
ICAgICB0aGlzLl9pY29uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlz
Ll9oYW5kbGVJY29uTW91c2VvdmVyLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9pY29uRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZUljb25Nb3VzZW91
dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9oYW5kbGVJY29uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAg
ICB3cmFwcGVkU1ZHRG9jdW1lbnQoIkltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQu
c3ZnIiwgInVubGlua2VkLWljb24iLCBudWxsLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAg
ICAgICB0aGlzLl9pY29uRWxlbWVudC5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgICAg
IHRoaXMuX3VubGlua2VkSWNvbiA9IHdyYXBwZXI7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisK
KyAgICAgICAgd3JhcHBlZFNWR0RvY3VtZW50KCJJbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eUxp
bmtlZC5zdmciLCAibGlua2VkLWljb24iLCBudWxsLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAg
ICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAg
ICAgIHRoaXMuX2xpbmtlZEljb24gPSB3cmFwcGVyOworICAgICAgICAgICAgdGhpcy5fbGlua2Vk
SWNvbi5oaWRkZW4gPSB0cnVlOworICAgICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkVsZW1lbnQpOworCisgICAgICAgIGxl
dCByaWdodExpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIHJpZ2h0TGluZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLWJvcmRlciIsICJyaWdodCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKHJpZ2h0TGluZUVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2xpbmtlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgZ2V0IGVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7CisgICAgfQorCisgICAgc2V0IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0
aGlzLl9kaXNhYmxlZCA9IGZsYWc7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgiZGlzYWJsZWQiLCB0aGlzLl9kaXNhYmxlZCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0
ZQorCisgICAgX2xpbmtlZFByb3BlcnR5VmFsdWVDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKCFldmVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgcHJvcGVy
dHkgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmICghcHJvcGVydHkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5fbGFzdFByb3BlcnR5RWRpdGVkID0gcHJvcGVydHk7Cisg
ICAgICAgIGlmICghdGhpcy5fbGlua2VkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuX3VwZGF0ZUxpbmtlZEVkaXRvcnMocHJvcGVydHkpOworICAgIH0KKworICAgIF91cGRh
dGVMaW5rZWRFZGl0b3JzKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxlID0gcHJv
cGVydHkuc3R5bGU7CisgICAgICAgIGxldCB0ZXh0ID0gc3R5bGUudGV4dDsKKyAgICAgICAgbGV0
IHZhbHVlID0gcHJvcGVydHkuc3ludGhlc2l6ZWRWYWx1ZSB8fCBudWxsOworCisgICAgICAgIGZv
ciAobGV0IGxpbmtlZFByb3BlcnR5IG9mIHRoaXMuX2xpbmtlZFByb3BlcnRpZXMpCisgICAgICAg
ICAgICB0ZXh0ID0gbGlua2VkUHJvcGVydHkudXBkYXRlVmFsdWVGcm9tVGV4dCh0ZXh0LCB2YWx1
ZSk7CisKKyAgICAgICAgc3R5bGUudGV4dCA9IHRleHQ7CisgICAgfQorCisgICAgX2hhbmRsZUlj
b25Nb3VzZW92ZXIoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSB0
aGlzLl9saW5rZWQ7CisgICAgICAgIHRoaXMuX3VubGlua2VkSWNvbi5oaWRkZW4gPSAhdGhpcy5f
bGlua2VkOworICAgIH0KKworICAgIF9oYW5kbGVJY29uTW91c2VvdXQoKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSAhdGhpcy5fbGlua2VkOworICAgICAgICB0aGlz
Ll91bmxpbmtlZEljb24uaGlkZGVuID0gdGhpcy5fbGlua2VkOworICAgIH0KKworICAgIF9oYW5k
bGVJY29uQ2xpY2tlZCgpCisgICAgeworICAgICAgICB0aGlzLl9saW5rZWQgPSAhdGhpcy5fbGlu
a2VkOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImxpbmtlZCIsIHRo
aXMuX2xpbmtlZCk7CisgICAgICAgIHRoaXMuX2xpbmtlZEljb24uaGlkZGVuID0gIXRoaXMuX2xp
bmtlZDsKKyAgICAgICAgdGhpcy5fdW5saW5rZWRJY29uLmhpZGRlbiA9IHRoaXMuX2xpbmtlZDsK
KworICAgICAgICB0aGlzLl9pY29uRWxlbWVudC50aXRsZSA9IHRoaXMuX2xpbmtlZCA/IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gcmVtb3ZlIGxpbmsiKSA6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ2xpY2sgdG8gbGluayBwcm9wZXJ0eSB2YWx1ZXMiKTsKKworICAgICAgICB0aGlz
Ll91cGRhdGVMaW5rZWRFZGl0b3JzKHRoaXMuX2xhc3RQcm9wZXJ0eUVkaXRlZCB8fCB0aGlzLl9s
aW5rZWRQcm9wZXJ0aWVzWzBdKTsKKyAgICAgICAgZm9yIChsZXQgbGlua1RvSGlkZSBvZiB0aGlz
Ll9saW5rc1RvSGlkZVdoZW5MaW5rZWQpCisgICAgICAgICAgICBsaW5rVG9IaWRlLmRpc2FibGVk
ID0gdGhpcy5fbGlua2VkOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVy
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0
eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMTcyNzA4YTZhY2I1MDhm
ZjhkMmQ1MDY5N2ZhODc4Njc0NzRjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xp
ZGVyLmNzcwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVs
YXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFp
bmVyIHsKKyAgICBvcmRlcjogMjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWlu
ZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFibGUpICsg
LnJlbGF0aXZlLXNsaWRlciwKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJl
ci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlci5kaXNhYmxlZCA+IC5yZWxhdGl2ZS1z
bGlkZXIgeworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxh
dGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWlu
ZXIubm8tdmFsdWVzLm5vLXVuaXRzIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisudmlzdWFs
LXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJl
ci1zbGlkZXIgPiAucmVsYXRpdmUtc2xpZGVyIHsKKyAgICB3aWR0aDogNDclOworICAgIG1hcmdp
bi1yaWdodDogN3B4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVO
dW1iZXJTbGlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU0NWY0MWY3ODMyYTkwYjM3OWExOTJjMzAyY2U3
ZGZkOWUzZTlkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanMKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZl
TnVtYmVyU2xpZGVyID0gY2xhc3MgVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94Cit7CisgICAgY29uc3Ry
dWN0b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMs
IGFsbG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFs
bG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInJlbGF0aXZlLW51bWJlci1zbGlkZXIiKTsKKworICAgICAgICB0
aGlzLl9zbGlkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAg
ICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZWxhdGl2ZS1zbGlkZXIi
KTsKKyAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC50eXBlID0gInJhbmdlIjsKKyAgICAgICAg
dGhpcy5fc2xpZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMuX2hhbmRs
ZVNsaWRlckNoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc2xpZGVyRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1
ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NjYWxlID0gMTAwOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgc2V0IHNjYWxlKHNjYWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2NhbGUg
PSBzY2FsZSB8fCAxOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFs
dWVzKQorICAgIHsKKyAgICAgICAgc3VwZXIudXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1
ZXMpOworICAgICAgICB0aGlzLl9yZXNldFNsaWRlcigpOworICAgIH0KKworICAgIC8vIFByaXZh
dGUKKworICAgIF9yZXNldFNsaWRlcigpCisgICAgeworICAgICAgICB0aGlzLl9zdGFydGluZ1Zh
bHVlID0gcGFyc2VGbG9hdCh0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSk7Cisg
ICAgICAgIGlmIChpc05hTih0aGlzLl9zdGFydGluZ1ZhbHVlKSkKKyAgICAgICAgICAgIHRoaXMu
X3N0YXJ0aW5nVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIpIHx8IDA7CisKKyAg
ICAgICAgbGV0IG9yaWdpbiA9IHRoaXMuX3NjYWxlIC8gMjsKKyAgICAgICAgaWYgKHRoaXMuX2Fs
bG93TmVnYXRpdmVWYWx1ZXMgfHwgdGhpcy5fc3RhcnRpbmdWYWx1ZSA+IG9yaWdpbikgeworICAg
ICAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC5taW4gPSAtb3JpZ2luOworICAgICAgICAgICAg
dGhpcy5fc2xpZGVyRWxlbWVudC5tYXggPSBvcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zbGlk
ZXJFbGVtZW50LnZhbHVlID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMu
X3NsaWRlckVsZW1lbnQubWluID0gMDsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVsZW1lbnQu
bWF4ID0gdGhpcy5fc2NhbGU7CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50LnZhbHVl
ID0gdGhpcy5fc3RhcnRpbmdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVT
bGlkZXJDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zdGFydGlu
Z1ZhbHVlICsgTWF0aC5yb3VuZChwYXJzZUZsb2F0KHRoaXMuX3NsaWRlckVsZW1lbnQudmFsdWUp
ICogMTAwKSAvIDEwMDsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisK
KyAgICBfaGFuZGxlTnVtYmVySW5wdXRDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLl9o
YW5kbGVOdW1iZXJJbnB1dENoYW5nZWQoKTsKKyAgICAgICAgdGhpcy5fcmVzZXRTbGlkZXIoKTsK
KyAgICB9Cit9Owo=
</data>
<flag name="review"
          id="283804"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258662</attachid>
            <date>2015-08-10 15:56:54 -0700</date>
            <delta_ts>2015-08-10 15:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147712.txt</filename>
            <type>text/plain</type>
            <size>40967</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDk3NDZiYmMuLjkxY2U1NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk5IEBACiAyMDE1LTA4LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbnVtZXJp
Y2FsIGlucHV0IGFuZCBzbGlkZXIgYmFzZWQgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBlZGl0b3JzIGZvciBDU1MgcHJvcGVydGllcyB3aXRoIG51bWVyaWNhbCB2YWx1ZXMgZm9yIHVz
ZSBpbiB0aGUgVmlzdWFsIHN0eWxlCisgICAgICAgIGRldGFpbHMgcGFuZWwgaW4gdGhlIENTUyBz
aWRlYmFyLCBpbiB0aGUgZm9ybSBvZiBhIGNvbWJpbmVkIHNlbGVjdCBhbmQgaW5wdXQgb3IgYW4K
KyAgICAgICAgaW5wdXQgcmFuZ2UuICBBbHNvIGFkZGVkIG9wdGlvbmFsIHZpc3VhbCBsaW5rYWdl
cyB0byBzeW5jIHZhbHVlcyBiZXR3ZWVuIG11bHRpcGxlCisgICAgICAgIGVkaXRvcnMgb2YgdGhp
cyB0eXBlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUxpbmtlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zp
c3VhbFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmc6IEFkZGVkLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmNzczogQWRkZWQuCisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktdmFsdWUtY29udGFpbmVyLmZvY3VzZWQgPiAuZm9jdXMtcmluZyk6CisgICAgICAgICgu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1rZXl3b3JkLXNlbGVjdCk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1jb250YWluZXIpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lcjpub3QoLm51bWJlci1pbnB1dC1lZGl0YWJsZSkgPiAubnVtYmVyLWlu
cHV0LWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1
dC1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LXZhbHVlKToKKyAgICAgICAgKC52aXN1YWwtc3R5
bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciA+IHNwYW4pOgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5nZXQgdmFs
dWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJv
dG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1i
ZXJJbnB1dEJveC5wcm90b3R5cGUuZ2V0IHVuaXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5zZXQgdW5pdHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLmdldCBwbGFj
ZWhvbGRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJv
eC5wcm90b3R5cGUuc2V0IHBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1
YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5nZXQgc3ludGhlc2l6ZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUu
Z2V0IG51bWJlcklucHV0RWRpdGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLnVwZGF0ZVZhbHVlRnJvbVRleHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLnBhcnNl
VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gu
cHJvdG90eXBlLl9rZXl3b3JkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFs
U3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duLnNo
aWZ0VmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3gucHJvdG90eXBlLl92YWx1ZU51bWJlcklucHV0S2V5RG93bik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX251bWJlcklucHV0Q2hh
bmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5w
cm90b3R5cGUuX2tleXdvcmRTZWxlY3RNb3VzZURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9jcmVhdGVWYWx1ZU9wdGlvbnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90
eXBlLl9jcmVhdGVVbml0T3B0aW9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2FkZEFkdmFuY2VkVW5pdHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLl9yZW1vdmVB
ZHZhbmNlZFVuaXRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94LnByb3RvdHlwZS5fZm9jdXNDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2JsdXJDb250ZW50RWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5w
cm90b3R5cGUuX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyk6CisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmNzczog
QWRkZWQuCisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsuZGlzYWJsZWQpOgorICAg
ICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCk6CisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCk6
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWljb246aG92ZXIgKyAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWJvcmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstYm9yZGVyLmxlZnQpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWJvcmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9y
ZGVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0KToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1ib3JkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItbGluazpub3QoLmxpbmstYWxsKS5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWJvcmRlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uKToKKyAgICAg
ICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbik6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1pY29uID4gLnVubGlua2VkLWljb24gc3ZnIC5maWxsZWQpOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHN2ZyAuc3Ryb2tlZCk6CisgICAg
ICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwpID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWljb24pOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5qczogQWRkZWQuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmspOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5nZXQgZWxlbWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsu
cHJvdG90eXBlLnNldCBkaXNhYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5
bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBlLl9saW5rZWRQcm9wZXJ0eVZhbHVlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsu
cHJvdG90eXBlLl91cGRhdGVMaW5rZWRFZGl0b3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5wcm90b3R5cGUuX2ljb25Nb3VzZW92ZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLnByb3Rv
dHlwZS5faWNvbk1vdXNlb3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yTGluay5wcm90b3R5cGUuX2ljb25DbGlja2VkKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5jc3M6IEFk
ZGVkLgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlu
cHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10
aXRsZSk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXIt
aW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5
LXZhbHVlLWNvbnRhaW5lcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIuZGlzYWJsZWQgPiAu
cmVsYXRpdmUtc2xpZGVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFp
bmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyLm5vLXZhbHVlcy5uby11bml0cyk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0
aXZlLW51bWJlci1zbGlkZXIgPiAucmVsYXRpdmUtc2xpZGVyKToKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlcik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5w
cm90b3R5cGUuc2V0IHNjYWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJl
bGF0aXZlTnVtYmVyU2xpZGVyLnByb3RvdHlwZS51cGRhdGVFZGl0b3JWYWx1ZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIucHJvdG90eXBl
Ll9yZXNldFNsaWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2
ZU51bWJlclNsaWRlci5wcm90b3R5cGUuX3NsaWRlckNoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIucHJvdG90eXBlLl9udW1iZXJJ
bnB1dENoYW5nZWQpOgorCisyMDE1LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgZGlmZmVyZW50IHR5cGVzIG9mIG5v
bi1udW1lcmljYWwgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MTEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxl
UHJvcGVydHlMaW5rZWQuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
SW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVydHlMaW5rZWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA0NTk5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eUxpbmtlZC5z
dmcKQEAgLTAsMCArMSw1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/
PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8Y2lyY2xlIGNsYXNzPSJmaWxsZWQiIGN4PSI4
IiBjeT0iOCIgcj0iNCIgZmlsbD0iYmxhY2siIHN0cm9rZT0ibm9uZSIgLz4KKzwvc3ZnPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3Vh
bFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eVVubGlua2VkLnN2ZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRkMTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlVbmxpbmtlZC5zdmcKQEAgLTAsMCArMSw2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8cGF0aCBjbGFzcz0iZmls
bGVkIiBkPSJNIDEwIDQgQyAxNiA0IDE2IDEyIDEwIDEyIiBzdHJva2U9Im5vbmUiIC8+CisgICAg
PHBhdGggY2xhc3M9ImZpbGxlZCIgZD0iTSA2IDQgQyAwIDQgMCAxMiA2IDEyIiBzdHJva2U9Im5v
bmUiIC8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3NzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5j
c3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUwZmUwOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3guY3NzCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyLmZvY3VzZWQgPiAuZm9jdXMtcmluZyB7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHRvcDogMnB4OworICAgIGxlZnQ6IDFweDsKKyAgICB3aWR0aDogY2FsYygx
MDAlIC0gMnB4KTsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgYm9yZGVyLXJhZGl1czogM3B4Owor
ICAgIGJveC1zaGFkb3c6IGhzbGEoMCwgMCUsIDAlLCAwLjE1KSAwIDFweCAwLCAwIDAgMCAzcHgg
aHNsYSgyMTEsIDk2JSwgNDglLCAwLjI1KTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKK30K
KworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQta2V5d29yZC1zZWxlY3QgeworICAg
IG91dGxpbmU6IG5vbmU7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogZmxleDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgdG9wOiAycHg7CisgICAgbGVmdDogMXB4OworICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4
KTsKKyAgICBsaW5lLWhlaWdodDogMTZweDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICBi
b3JkZXItcmFkaXVzOiA0cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDEwMCUsIDEw
MCUpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIG92ZXJmbG93OiBoaWRkZW47Cisg
ICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250
YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3QoLm51bWJl
ci1pbnB1dC1lZGl0YWJsZSkgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFs
LXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtY29udGFpbmVy
ID4gLm51bWJlci1pbnB1dC12YWx1ZSB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAx
NnB4OworICAgIG1hcmdpbi1yaWdodDogMXB4OworICAgIHBhZGRpbmc6IDAgMCAxcHggM3B4Owor
ICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKKyAgICB0ZXh0LWFsaWduOiByaWdo
dDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgb3V0bGluZTogbm9uZTsKKyAgICBwb2ludGVyLWV2
ZW50czogYWxsOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1jb250YWlu
ZXIgPiBzcGFuIHsKKyAgICBtaW4td2lkdGg6IC13ZWJraXQtZml0LWNvbnRlbnQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZU51bWJlcklucHV0Qm94LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41YWZlYzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5q
cwpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94ID0gY2xhc3MgVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveCBleHRlbmRz
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yCit7CisgICAgY29uc3RydWN0
b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFs
bG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIo
cHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMgfHwgW1dl
Ykluc3BlY3Rvci5VSVN0cmluZygiTm8gVW5pdHMiKV0sICJudW1iZXItaW5wdXQtYm94IiwgbGF5
b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2hhc1VuaXRzID0gISFwb3NzaWJsZVVuaXRz
OworICAgICAgICB0aGlzLl9hbGxvd05lZ2F0aXZlVmFsdWVzID0gISFhbGxvd05lZ2F0aXZlVmFs
dWVzIHx8IGZhbHNlOworCisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgibm8tdmFsdWVzIiwgIXBvc3NpYmxlVmFsdWVzIHx8ICFwb3NzaWJsZVZhbHVlcy5sZW5n
dGgpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm5vLXVu
aXRzIiwgIXRoaXMuX2hhc1VuaXRzKTsKKworICAgICAgICBsZXQgZm9jdXNSaW5nRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBmb2N1c1JpbmdFbGVtZW50
LmNsYXNzTGlzdC5hZGQoImZvY3VzLXJpbmciKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZChmb2N1c1JpbmdFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9rZXl3b3Jk
U2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOworICAgICAg
ICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQt
a2V5d29yZC1zZWxlY3QiKTsKKyAgICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5j
ZWQpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiT3B0aW9uLWNsaWNrIHRvIHNob3cgYWxsIHVuaXRzIik7CisKKyAg
ICAgICAgaWYgKHRoaXMuX3Bvc3NpYmxlVmFsdWVzKSB7CisgICAgICAgICAgICB0aGlzLl9jcmVh
dGVWYWx1ZU9wdGlvbnModGhpcy5fcG9zc2libGVWYWx1ZXMuYmFzaWMpOworICAgICAgICAgICAg
dGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaHIiKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fcG9zc2libGVVbml0
cykKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVuaXRPcHRpb25zKHRoaXMuX3Bvc3NpYmxlVW5p
dHMuYmFzaWMpOworCisgICAgICAgIHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cyA9IG51bGw7
CisKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Zm9jdXMiLCB0aGlzLl9mb2N1c0NvbnRlbnRFbGVtZW50LmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9rZXl3b3JkU2VsZWN0TW91c2VEb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9r
ZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9rZXl3
b3JkQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXJDb250ZW50RWxlbWVudC5iaW5k
KHRoaXMpKTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9r
ZXl3b3JkU2VsZWN0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fbnVtYmVyVW5pdHNDb250YWlu
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fbnVtYmVy
VW5pdHNDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWNvbnRhaW5lciIpOwor
CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LXZhbHVlIik7CisgICAgICAgIHRoaXMuX3ZhbHVl
TnVtYmVySW5wdXRFbGVtZW50LnNwZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdmFs
dWVOdW1iZXJJbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1
c0NvbnRlbnRFbGVtZW50LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklu
cHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fdmFsdWVOdW1iZXJJ
bnB1dEtleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fbnVtYmVySW5wdXRDaGFuZ2Vk
LmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fYmx1ckNvbnRlbnRFbGVtZW50LmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl92
YWx1ZU51bWJlcklucHV0RWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB0aGlzLl9udW1iZXJVbml0
c0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl91bml0c0VsZW1lbnQpOworICAgICAgICB0aGlz
LmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyKTsK
KworICAgICAgICB0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUgPSB0cnVlOworICAgICAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIp
OworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7Cisg
ICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgicGxhY2Vo
b2xkZXIiLCAwKTsKKyAgICAgICAgaWYgKHRoaXMuX2hhc1VuaXRzICYmIHRoaXMudmFsdWVJc1N1
cHBvcnRlZFVuaXQoInB4IikpCisgICAgICAgICAgICB0aGlzLl91bml0c0VsZW1lbnQudGV4dENv
bnRlbnQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZSA9ICJweCI7CisgICAgfQor
CisgICAgLy8gUHVibGljCisKKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0
KHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlKTsKKworICAgICAgICBpZiAoIXRo
aXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9rZXl3
b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisK
KyAgICBzZXQgdmFsdWUodmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUg
PT09IHRoaXMudmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFpc05h
Tih2YWx1ZSkpIHsKKyAgICAgICAgICAgIHRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSA9IHRy
dWU7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51bWJl
ci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVs
ZW1lbnQudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRF
bGVtZW50LnZhbHVlID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLnZhbHVlSXNTdXBwb3J0ZWRLZXl3b3JkKHZhbHVlKSkgeworICAgICAg
ICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gZmFsc2U7CisgICAgICAgICAgICB0
aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm51bWJlci1pbnB1dC1lZGl0YWJs
ZSIpOworICAgICAgICAgICAgdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUgPSB2YWx1
ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdldCB1bml0
cygpCisgICAgeworICAgICAgICBsZXQga2V5d29yZCA9IHRoaXMuX2tleXdvcmRTZWxlY3RFbGVt
ZW50LnZhbHVlOworICAgICAgICBpZiAoIXRoaXMudmFsdWVJc1N1cHBvcnRlZFVuaXQoa2V5d29y
ZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmV0dXJuIGtleXdvcmQ7CisgICAg
fQorCisgICAgc2V0IHVuaXRzKHVuaXQpCisgICAgeworICAgICAgICBpZiAoIXVuaXQgfHwgdW5p
dCA9PT0gdGhpcy51bml0cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRo
aXMudmFsdWVJc1N1cHBvcnRlZFVuaXQodW5pdCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKHRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQodW5pdCkpCisgICAg
ICAgICAgICB0aGlzLl9hZGRBZHZhbmNlZFVuaXRzKCk7CisKKyAgICAgICAgdGhpcy5fbnVtYmVy
SW5wdXRJc0VkaXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJudW1iZXItaW5wdXQtZWRpdGFibGUiKTsKKyAgICAgICAgdGhpcy5fa2V5d29y
ZFNlbGVjdEVsZW1lbnQudmFsdWUgPSB1bml0OworCisgICAgICAgIGlmICh0aGlzLl9oYXNVbml0
cykKKyAgICAgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudC50ZXh0Q29udGVudCA9IHVuaXQ7Cisg
ICAgfQorCisgICAgZ2V0IHBsYWNlaG9sZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll92YWx1ZU51bWJlcklucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7Cisg
ICAgfQorCisgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCisgICAgeworICAgICAgICBpZiAodGV4
dCA9PT0gdGhpcy5wbGFjZWhvbGRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBs
ZXQgb25seU51bWVyaWNhbFRleHQgPSAhaXNOYU4odGV4dCkgJiYgdGV4dDsKKyAgICAgICAgdGhp
cy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIG9u
bHlOdW1lcmljYWxUZXh0IHx8IDApOworICAgIH0KKworICAgIGdldCBzeW50aGVzaXplZFZhbHVl
KCkKKyAgICB7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVt
ZW50LnZhbHVlOworICAgICAgICBpZiAodGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlICYmICF2
YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIGxldCBrZXl3b3JkID0g
dGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWU7CisgICAgICAgIHJldHVybiB0aGlzLnZh
bHVlSXNTdXBwb3J0ZWRVbml0KGtleXdvcmQpID8gdmFsdWUgKyAodGhpcy5faGFzVW5pdHMgPyBr
ZXl3b3JkIDogIiIpIDoga2V5d29yZDsKKyAgICB9CisKKyAgICB1cGRhdGVWYWx1ZUZyb21UZXh0
KHRleHQsIHZhbHVlKQorICAgIHsKKyAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5wYXJzZVZhbHVl
KHZhbHVlKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGNoID8gbWF0Y2hbMV0gOiB2YWx1ZTsK
KyAgICAgICAgdGhpcy51bml0cyA9IG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOworICAgICAgICBy
ZXR1cm4gdGhpcy5tb2RpZnlQcm9wZXJ0eVRleHQodGV4dCwgdmFsdWUpOworICAgIH0KKworICAg
IC8vIFByb3RlY3RlZAorCisgICAgcGFyc2VWYWx1ZSh0ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIC9eKC0/W1xkLl0rKShbXlxzXGRdezAsNH0pKD86XHMqOz8pJC8uZXhlYyh0ZXh0KTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfa2V5d29yZENoYW5nZWQoKQorICAgIHsKKyAg
ICAgICAgbGV0IHNlbGVjdGVkS2V5d29yZElzVW5pdCA9IHRoaXMudmFsdWVJc1N1cHBvcnRlZFVu
aXQodGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWUpOworICAgICAgICBpZiAoIXRoaXMu
X251bWJlcklucHV0SXNFZGl0YWJsZSAmJiBzZWxlY3RlZEtleXdvcmRJc1VuaXQpCisgICAgICAg
ICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7CisKKyAgICAg
ICAgaWYgKHRoaXMuX2hhc1VuaXRzKQorICAgICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRl
eHRDb250ZW50ID0gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQudmFsdWU7CisKKyAgICAgICAg
dGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gc2VsZWN0ZWRLZXl3b3JkSXNVbml0OworICAg
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoIm51bWJlci1pbnB1dC1l
ZGl0YWJsZSIsIHNlbGVjdGVkS2V5d29yZElzVW5pdCk7CisgICAgICAgIHRoaXMuX3ZhbHVlRGlk
Q2hhbmdlKCk7CisgICAgfQorCisgICAgX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgZnVuY3Rpb24gYWRqdXN0VmFsdWUoZGVsdGEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGxldCBuZXdWYWx1ZTsKKyAgICAgICAgICAgIGxldCB2YWx1ZSA9
IHRoaXMudmFsdWU7CisgICAgICAgICAgICBpZiAoIXZhbHVlICYmIGlzTmFOKHZhbHVlKSkgewor
ICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlclZhbHVlID0gdGhpcy5wbGFjZWhvbGRlciAm
JiAhaXNOYU4odGhpcy5wbGFjZWhvbGRlcikgPyBwYXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIp
IDogMDsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHBsYWNlaG9sZGVyVmFsdWUgKyBkZWx0
YTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gdmFsdWUg
KyBkZWx0YTsKKworICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd05lZ2F0aXZlVmFsdWVzICYm
IG5ld1ZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IDA7CisKKyAgICAgICAg
ICAgIHRoaXMudmFsdWUgPSBNYXRoLnJvdW5kKG5ld1ZhbHVlICogMTAwKSAvIDEwMDsKKyAgICAg
ICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgICAgIH0KKworICAgICAgICBsZXQg
c2hpZnQgPSAxOworICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkKKyAgICAgICAgICAgIHNoaWZ0
IC89IDEwOworICAgICAgICBlbHNlIGlmIChldmVudC5zaGlmdEtleSkKKyAgICAgICAgICAgIHNo
aWZ0ICo9IDEwOworCisgICAgICAgIGxldCBrZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOworICAg
ICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoIlBhZ2UiKSkKKyAgICAgICAgICAgIHNoaWZ0ICo9IDEw
OworCisgICAgICAgIGlmIChrZXkgPT09ICJVcCIgfHwga2V5ID09PSAiUGFnZVVwIikgeworICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGFkanVzdFZhbHVl
LmNhbGwodGhpcywgc2hpZnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGtleSA9PT0gIkRvd24iIHx8IGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGFkanVzdFZhbHVlLmNh
bGwodGhpcywgLXNoaWZ0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAgfQorCisgICAgX251bWJlcklucHV0Q2hh
bmdlZCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOwor
ICAgIH0KKworICAgIF9rZXl3b3JkU2VsZWN0TW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgIHRoaXMuX2FkZEFkdmFuY2VkVW5pdHMo
KTsKKyAgICAgICAgZWxzZSBpZiAoIXRoaXMuX3ZhbHVlSXNTdXBwb3J0ZWRBZHZhbmNlZFVuaXQo
KSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFkdmFuY2VkVW5pdHMoKTsKKyAgICB9CisKKyAg
ICBfY3JlYXRlVmFsdWVPcHRpb25zKHZhbHVlcykKKyAgICB7CisgICAgICAgIGxldCBhZGRlZEVs
ZW1lbnRzID0gW107CisgICAgICAgIGZvciAobGV0IGtleSBpbiB2YWx1ZXMpIHsKKyAgICAgICAg
ICAgIGxldCBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAg
ICAgICAgIG9wdGlvbi52YWx1ZSA9IGtleTsKKyAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gdmFs
dWVzW2tleV07CisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRD
aGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNoKG9wdGlvbik7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkZWRFbGVtZW50czsKKyAgICB9CisKKyAgICBf
Y3JlYXRlVW5pdE9wdGlvbnModW5pdHMpCisgICAgeworICAgICAgICBsZXQgYWRkZWRFbGVtZW50
cyA9IFtdOworICAgICAgICBmb3IgKGxldCB1bml0IG9mIHVuaXRzKSB7CisgICAgICAgICAgICBs
ZXQgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAg
ICBvcHRpb24udGV4dCA9IHVuaXQ7CisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxl
bWVudC5hcHBlbmRDaGlsZChvcHRpb24pOworICAgICAgICAgICAgYWRkZWRFbGVtZW50cy5wdXNo
KG9wdGlvbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYWRkZWRFbGVtZW50czsKKyAg
ICB9CisKKyAgICBfYWRkQWR2YW5jZWRVbml0cygpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
YWR2YW5jZWRVbml0c0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImhyIikpOworICAgICAgICB0aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMgPSB0aGlzLl9j
cmVhdGVVbml0T3B0aW9ucyh0aGlzLl9wb3NzaWJsZVVuaXRzLmFkdmFuY2VkKTsKKyAgICB9CisK
KyAgICBfcmVtb3ZlQWR2YW5jZWRVbml0cygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Fk
dmFuY2VkVW5pdHNFbGVtZW50cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll9rZXl3b3JkU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLl9hZHZhbmNlZFVuaXRzRWxl
bWVudHNbMF0ucHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiB0
aGlzLl9hZHZhbmNlZFVuaXRzRWxlbWVudHMpCisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2Vs
ZWN0RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTsKKworICAgICAgICB0aGlzLl9hZHZhbmNl
ZFVuaXRzRWxlbWVudHMgPSBudWxsOworICAgIH0KKworICAgIF9mb2N1c0NvbnRlbnRFbGVtZW50
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJmb2N1c2VkIik7CisgICAgfQorCisgICAgX2JsdXJDb250ZW50RWxlbWVudChldmVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9jdXNl
ZCIpOworICAgIH0KKworICAgIF90b2dnbGVUYWJiaW5nT2ZTZWxlY3RhYmxlRWxlbWVudHMoZGlz
YWJsZWQpCisgICAgeworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC50YWJJbmRl
eCA9IGRpc2FibGVkID8gIi0xIiA6IG51bGw7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5w
dXRFbGVtZW50LnRhYkluZGV4ID0gZGlzYWJsZWQgPyAiLTEiIDogbnVsbDsKKyAgICB9Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlz
dWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZGVhYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yTGluay5jc3MKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgbWluLXdpZHRoOiAzMnB4OworICAgIG1hcmdpbi1sZWZ0OiAxcHg7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsuZGlzYWJsZWQgeworICAgIHZpc2liaWxpdHk6
IGhpZGRlbjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFs
bCB7CisgICAgaGVpZ2h0OiAxM3B4OworICAgIG1hcmdpbjogMCBhdXRvIDJweDsKKyAgICBwYWRk
aW5nOiAwIDUwcHg7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAgICBib3JkZXItcmlnaHQt
d2lkdGg6IDFweDsKKyAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwOworICAgIGJvcmRlci1sZWZ0
LXdpZHRoOiAxcHg7CisgICAgYm9yZGVyLWNvbG9yOiBoc2woMCwgMCUsIDUwJSk7CisgICAgYm9y
ZGVyLXN0eWxlOiBkYXNoZWQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsubGluay1hbGwubGlua2VkIHsKKyAgICBib3JkZXItY29sb3I6IGJsYWNrOworICAgIGJvcmRl
ci1zdHlsZTogc29saWQ7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDogLXdlYmtpdC1jYWxjKDUwJSAtIDAuNXB4KTsKKyAgICB3
aWR0aDogNDhweDsKKyAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIGhzbCgwLCAwJSwgNTAlKTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCA+IC52aXN1
YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLmxlZnQsCisudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJv
cGVydHktZWRpdG9yLWxpbmstaWNvbjpob3ZlciArIC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstYm9yZGVyLnJpZ2h0ICB7CisgICAgd2lkdGg6IDQ5cHg7Cit9CisKKy52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIubGVmdCB7CisgICAgd2lkdGg6IDUycHg7Cit9
CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmlnaHQgeworICAgIHdp
ZHRoOiA1MXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmtl
ZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKKyAgICBib3Jk
ZXItdG9wOiAxcHggc29saWQgaHNsKDAsIDAsIDApOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3Jk
ZXIubGVmdCB7CisgICAgbGVmdDogMXB4OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIucmln
aHQgeworICAgIHJpZ2h0OiAxcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay1ib3JkZXIubGVmdCB7CisgICAgbGVmdDogMDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgcmlnaHQ6IDA7Cit9CisKKy52aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWJvcmRlciB7CisgICAgd2lkdGg6IDEwcHg7CisgICAgdG9wOiAt
d2Via2l0LWNhbGMoNTAlIC0gMXB4KTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0
b3ItbGluazpub3QoLmxpbmstYWxsKS5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLWJvcmRlciB7CisgICAgd2lkdGg6IDEycHg7Cit9CisKKy52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LWljb24geworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKK30KKworLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDEwMCUsIDEwMCUpOworICAgIHotaW5kZXg6
IDE7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbiBzdmcgLmZpbGxl
ZCB7CisgICAgZmlsbDogaHNsKDAsIDAlLCA1MCUpOworfQorCisudmlzdWFsLXN0eWxlLXByb3Bl
cnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29u
ID4gLnVubGlua2VkLWljb24gc3ZnIC5zdHJva2VkIHsKKyAgICBzdHJva2U6IGhzbCgwLCAwJSwg
NTAlKTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmst
YWxsKSA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiB7CisgICAgbWFy
Z2luOiA1cHggMCAwIDExcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsubGluay1hbGwgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gewor
ICAgIG1hcmdpbi10b3A6IDFweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvckxpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4
ZmJhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzCkBAIC0wLDAgKzEsMTQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3JM
aW5rID0gY2xhc3MgVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IobGlua2VkUHJvcGVydGllcywgY2xhc3NO
YW1lLCBsaW5rc1RvSGlkZVdoZW5MaW5rZWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX2xpbmtlZFByb3BlcnRpZXMgPSBsaW5rZWRQcm9wZXJ0aWVzIHx8IFtdOwor
ICAgICAgICB0aGlzLl9saW5rc1RvSGlkZVdoZW5MaW5rZWQgPSBsaW5rc1RvSGlkZVdoZW5MaW5r
ZWQgfHwgW107CisgICAgICAgIHRoaXMuX2xhc3RQcm9wZXJ0eUVkaXRlZCA9IG51bGw7CisKKyAg
ICAgICAgZm9yIChsZXQgcHJvcGVydHkgb2YgdGhpcy5fbGlua2VkUHJvcGVydGllcykKKyAgICAg
ICAgICAgIHByb3BlcnR5LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxl
UHJvcGVydHlFZGl0b3IuRXZlbnQuVmFsdWVEaWRDaGFuZ2UsIHRoaXMuX2xpbmtlZFByb3BlcnR5
VmFsdWVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rIiwgY2xhc3NOYW1lIHx8ICIiKTsK
KworICAgICAgICBsZXQgbGVmdExpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIGxlZnRMaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2aXN1YWwtc3R5
bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIiwgImxlZnQiKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZChsZWZ0TGluZUVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2lj
b25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2ljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluay1pY29uIik7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDbGljayB0byBsaW5rIHByb3BlcnR5IHZhbHVlcyIpOworICAgICAgICB0
aGlzLl9pY29uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9pY29u
TW91c2VvdmVyLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2ljb25Nb3VzZW91dC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5faWNvbkVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9p
Y29uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQoIklt
YWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnIiwgInVubGlua2VkLWljb24iLCBu
dWxsLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAgICAgICB0aGlzLl9pY29uRWxlbWVudC5h
cHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgICAgIHRoaXMuX3VubGlua2VkSWNvbiA9IHdy
YXBwZXI7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAgICAgd3JhcHBlZFNWR0RvY3Vt
ZW50KCJJbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eUxpbmtlZC5zdmciLCAibGlua2VkLWljb24i
LCBudWxsLCBmdW5jdGlvbih3cmFwcGVyKSB7CisgICAgICAgICAgICB0aGlzLl9pY29uRWxlbWVu
dC5hcHBlbmRDaGlsZCh3cmFwcGVyKTsKKyAgICAgICAgICAgIHRoaXMuX2xpbmtlZEljb24gPSB3
cmFwcGVyOworICAgICAgICAgICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSB0cnVlOworICAg
ICAgICB9LmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faWNvbkVsZW1lbnQpOworCisgICAgICAgIGxldCByaWdodExpbmVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHJpZ2h0TGluZUVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlciIsICJy
aWdodCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHJpZ2h0TGluZUVsZW1l
bnQpOworCisgICAgICAgIHRoaXMuX2xpbmtlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9kaXNh
YmxlZCA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGVsZW1lbnQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CisgICAgfQorCisgICAgc2V0
IGRpc2FibGVkKGZsYWcpCisgICAgeworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGZsYWc7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiZGlzYWJsZWQiLCB0aGlzLl9k
aXNhYmxlZCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2xpbmtlZFByb3BlcnR5
VmFsdWVDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBsZXQgcHJvcGVydHkgPSBldmVudC50YXJnZXQ7CisgICAg
ICAgIGlmICghcHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
bGFzdFByb3BlcnR5RWRpdGVkID0gcHJvcGVydHk7CisgICAgICAgIGlmICghdGhpcy5fbGlua2Vk
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtlZEVkaXRv
cnMocHJvcGVydHkpOworICAgIH0KKworICAgIF91cGRhdGVMaW5rZWRFZGl0b3JzKHByb3BlcnR5
KQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxlID0gcHJvcGVydHkuc3R5bGU7CisgICAgICAgIGxl
dCB0ZXh0ID0gc3R5bGUudGV4dDsKKyAgICAgICAgbGV0IHZhbHVlID0gcHJvcGVydHkuc3ludGhl
c2l6ZWRWYWx1ZSB8fCBudWxsOworCisgICAgICAgIGZvciAobGV0IGxpbmtlZFByb3BlcnR5IG9m
IHRoaXMuX2xpbmtlZFByb3BlcnRpZXMpCisgICAgICAgICAgICB0ZXh0ID0gbGlua2VkUHJvcGVy
dHkudXBkYXRlVmFsdWVGcm9tVGV4dCh0ZXh0LCB2YWx1ZSk7CisKKyAgICAgICAgc3R5bGUudGV4
dCA9IHRleHQ7CisgICAgfQorCisgICAgX2ljb25Nb3VzZW92ZXIoKQorICAgIHsKKyAgICAgICAg
dGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSB0aGlzLl9saW5rZWQ7CisgICAgICAgIHRoaXMuX3Vu
bGlua2VkSWNvbi5oaWRkZW4gPSAhdGhpcy5fbGlua2VkOworICAgIH0KKworICAgIF9pY29uTW91
c2VvdXQoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4gPSAhdGhpcy5f
bGlua2VkOworICAgICAgICB0aGlzLl91bmxpbmtlZEljb24uaGlkZGVuID0gdGhpcy5fbGlua2Vk
OworICAgIH0KKworICAgIF9pY29uQ2xpY2tlZCgpCisgICAgeworICAgICAgICB0aGlzLl9saW5r
ZWQgPSAhdGhpcy5fbGlua2VkOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoImxpbmtlZCIsIHRoaXMuX2xpbmtlZCk7CisgICAgICAgIHRoaXMuX2xpbmtlZEljb24uaGlk
ZGVuID0gIXRoaXMuX2xpbmtlZDsKKyAgICAgICAgdGhpcy5fdW5saW5rZWRJY29uLmhpZGRlbiA9
IHRoaXMuX2xpbmtlZDsKKworICAgICAgICB0aGlzLl9pY29uRWxlbWVudC50aXRsZSA9IHRoaXMu
X2xpbmtlZCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gcmVtb3ZlIGxpbmsiKSA6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xpY2sgdG8gbGluayBwcm9wZXJ0eSB2YWx1ZXMiKTsK
KworICAgICAgICB0aGlzLl91cGRhdGVMaW5rZWRFZGl0b3JzKHRoaXMuX2xhc3RQcm9wZXJ0eUVk
aXRlZCB8fCB0aGlzLl9saW5rZWRQcm9wZXJ0aWVzWzBdKTsKKyAgICAgICAgZm9yIChsZXQgbGlu
a1RvSGlkZSBvZiB0aGlzLl9saW5rc1RvSGlkZVdoZW5MaW5rZWQpCisgICAgICAgICAgICBsaW5r
VG9IaWRlLmRpc2FibGVkID0gdGhpcy5fbGlua2VkOworICAgIH0KK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0
aXZlTnVtYmVyU2xpZGVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMTcyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVt
YmVyU2xpZGVyLmNzcwpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xp
ZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS10aXRsZSB7CisgICAgbWFyZ2luLXJpZ2h0OiAz
cHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1i
b3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUt
Y29udGFpbmVyIHsKKyAgICBvcmRlcjogMjsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1j
b250YWluZXIubnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXI6bm90KC5udW1iZXItaW5wdXQtZWRpdGFi
bGUpICsgLnJlbGF0aXZlLXNsaWRlciwKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
Lm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlci5kaXNhYmxlZCA+IC5yZWxh
dGl2ZS1zbGlkZXIgeworICAgIG9wYWNpdHk6IDAuNTsKKyAgICBwb2ludGVyLWV2ZW50czogbm9u
ZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJv
eC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1j
b250YWluZXIubm8tdmFsdWVzLm5vLXVuaXRzIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZl
LW51bWJlci1zbGlkZXIgPiAucmVsYXRpdmUtc2xpZGVyIHsKKyAgICB3aWR0aDogNDclOworICAg
IG1hcmdpbi1yaWdodDogN3B4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVs
YXRpdmVOdW1iZXJTbGlkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MGEwZTExMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJTbGlkZXIuanMKQEAgLTAsMCAr
MSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVt
YmVyU2xpZGVyID0gY2xhc3MgVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94Cit7CisgICAgY29uc3RydWN0
b3IocHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFs
bG93TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIo
cHJvcGVydHlOYW1lcywgdGV4dCwgcG9zc2libGVWYWx1ZXMsIHBvc3NpYmxlVW5pdHMsIGFsbG93
TmVnYXRpdmVWYWx1ZXMsIGxheW91dFJldmVyc2VkKTsKKworICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInJlbGF0aXZlLW51bWJlci1zbGlkZXIiKTsKKworICAgICAgICB0aGlz
Ll9zbGlkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAg
ICAgdGhpcy5fc2xpZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZWxhdGl2ZS1zbGlkZXIiKTsK
KyAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC50eXBlID0gInJhbmdlIjsKKyAgICAgICAgdGhp
cy5fc2xpZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIHRoaXMuX3NsaWRlckNo
YW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fc2xpZGVyRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1ZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX3NjYWxlID0gMTAwOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisg
ICAgc2V0IHNjYWxlKHNjYWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2NhbGUgPSBzY2FsZSB8
fCAxOworICAgIH0KKworICAgIHVwZGF0ZUVkaXRvclZhbHVlcyh1cGRhdGVkVmFsdWVzKQorICAg
IHsKKyAgICAgICAgc3VwZXIudXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpOworICAg
ICAgICB0aGlzLl9yZXNldFNsaWRlcigpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF9yZXNldFNsaWRlcigpCisgICAgeworICAgICAgICB0aGlzLl9zdGFydGluZ1ZhbHVlID0gcGFy
c2VGbG9hdCh0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC52YWx1ZSk7CisgICAgICAgIGlm
IChpc05hTih0aGlzLl9zdGFydGluZ1ZhbHVlKSkKKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0aW5n
VmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMucGxhY2Vob2xkZXIpIHx8IDA7CisKKyAgICAgICAgbGV0
IG9yaWdpbiA9IHRoaXMuX3NjYWxlIC8gMjsKKyAgICAgICAgaWYgKHRoaXMuX2FsbG93TmVnYXRp
dmVWYWx1ZXMgfHwgdGhpcy5fc3RhcnRpbmdWYWx1ZSA+IG9yaWdpbikgeworICAgICAgICAgICAg
dGhpcy5fc2xpZGVyRWxlbWVudC5taW4gPSAtb3JpZ2luOworICAgICAgICAgICAgdGhpcy5fc2xp
ZGVyRWxlbWVudC5tYXggPSBvcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50
LnZhbHVlID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVs
ZW1lbnQubWluID0gMDsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVsZW1lbnQubWF4ID0gdGhp
cy5fc2NhbGU7CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJFbGVtZW50LnZhbHVlID0gdGhpcy5f
c3RhcnRpbmdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9zbGlkZXJDaGFuZ2VkKCkK
KyAgICB7CisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9zdGFydGluZ1ZhbHVlICsgTWF0aC5y
b3VuZChwYXJzZUZsb2F0KHRoaXMuX3NsaWRlckVsZW1lbnQudmFsdWUpICogMTAwKSAvIDEwMDsK
KyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfbnVtYmVySW5w
dXRDaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIHN1cGVyLl9udW1iZXJJbnB1dENoYW5nZWQoKTsK
KyAgICAgICAgdGhpcy5fcmVzZXRTbGlkZXIoKTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258663</attachid>
            <date>2015-08-10 15:59:15 -0700</date>
            <delta_ts>2015-08-10 16:57:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>147712.txt</filename>
            <type>text/plain</type>
            <size>40963</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDk3NDZiYmMuLjc0NDc0MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk5IEBACiAyMDE1LTA4LTEwICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbnVtZXJp
Y2FsIGlucHV0IGFuZCBzbGlkZXIgYmFzZWQgVmlzdWFsIGVkaXRvcnMgZm9yIENTUyBwcm9wZXJ0
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgIEFkZGVkIGVk
aXRvcnMgZm9yIENTUyBwcm9wZXJ0aWVzIHdpdGggbnVtZXJpY2FsIHZhbHVlcyBmb3IgdXNlIGlu
IHRoZSBWaXN1YWwgc3R5bGUKKyAgICAgICAgZGV0YWlscyBwYW5lbCBpbiB0aGUgQ1NTIHNpZGVi
YXIsIGluIHRoZSBmb3JtIG9mIGEgY29tYmluZWQgc2VsZWN0IGFuZCBpbnB1dCBvciBhbgorICAg
ICAgICBpbnB1dCByYW5nZS4gIEFsc28gYWRkZWQgb3B0aW9uYWwgdmlzdWFsIGxpbmthZ2VzIHRv
IHN5bmMgdmFsdWVzIGJldHdlZW4gbXVsdGlwbGUKKyAgICAgICAgZWRpdG9ycyBvZiB0aGlzIHR5
cGUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5
TGlua2VkLnN2ZzogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFs
U3R5bGVQcm9wZXJ0eVVubGlua2VkLnN2ZzogQWRkZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guY3NzOiBBZGRlZC4KKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS12YWx1ZS1jb250YWluZXIuZm9jdXNlZCA+IC5mb2N1cy1yaW5nKToKKyAgICAgICAgKC52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWtleXdvcmQtc2VsZWN0KToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12
YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lcik6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyOm5vdCgubnVtYmVyLWlucHV0LWVkaXRhYmxlKSA+IC5udW1iZXItaW5wdXQt
Y29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWNv
bnRhaW5lciA+IC5udW1iZXItaW5wdXQtdmFsdWUpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1jb250YWluZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5l
ciA+IC5udW1iZXItaW5wdXQtY29udGFpbmVyID4gc3Bhbik6CisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3guanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLmdldCB2YWx1ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5
cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklu
cHV0Qm94LnByb3RvdHlwZS5nZXQgdW5pdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLnNldCB1bml0cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuZ2V0IHBsYWNlaG9s
ZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnBy
b3RvdHlwZS5zZXQgcGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0
eWxlTnVtYmVySW5wdXRCb3gucHJvdG90eXBlLmdldCBzeW50aGVzaXplZFZhbHVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5nZXQg
bnVtYmVySW5wdXRFZGl0YWJsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVO
dW1iZXJJbnB1dEJveC5wcm90b3R5cGUudXBkYXRlVmFsdWVGcm9tVGV4dCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUucGFyc2VWYWx1
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90
b3R5cGUuX2tleXdvcmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHls
ZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5fdmFsdWVOdW1iZXJJbnB1dEtleURvd24uc2hpZnRW
YWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5w
cm90b3R5cGUuX3ZhbHVlTnVtYmVySW5wdXRLZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5fbnVtYmVySW5wdXRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3Rv
dHlwZS5fa2V5d29yZFNlbGVjdE1vdXNlRG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlz
dWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX2NyZWF0ZVZhbHVlT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUu
X2NyZWF0ZVVuaXRPcHRpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51
bWJlcklucHV0Qm94LnByb3RvdHlwZS5fYWRkQWR2YW5jZWRVbml0cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5wcm90b3R5cGUuX3JlbW92ZUFkdmFu
Y2VkVW5pdHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRC
b3gucHJvdG90eXBlLl9mb2N1c0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3RvdHlwZS5fYmx1ckNvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LnByb3Rv
dHlwZS5fdG9nZ2xlVGFiYmluZ09mU2VsZWN0YWJsZUVsZW1lbnRzKToKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuY3NzOiBBZGRl
ZC4KKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmspOgorICAgICAg
ICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5kaXNhYmxlZCk6CisgICAgICAg
ICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsKToKKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkKToKKyAg
ICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxl
LXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstaWNvbjpob3ZlciArIC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstYm9yZGVyLnJpZ2h0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluay1ib3JkZXIubGVmdCk6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmstYm9yZGVyLnJpZ2h0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmsubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIp
OgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyLmxlZnQpOgorICAgICAgICAoLnZpc3Vh
bC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRp
dG9yLWxpbmstYm9yZGVyLnJpZ2h0KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
ZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWJvcmRlcik6CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rOm5vdCgubGluay1hbGwpLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstYm9yZGVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxp
bmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24pOgorICAgICAgICAo
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uKToKKyAgICAgICAgKC52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRv
ci1saW5rLWljb24gPiAudW5saW5rZWQtaWNvbiBzdmcgLmZpbGxlZCk6CisgICAgICAgICgudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1l
ZGl0b3ItbGluay1pY29uID4gLnVubGlua2VkLWljb24gc3ZnIC5zdHJva2VkKToKKyAgICAgICAg
KC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbms6bm90KC5saW5rLWFsbCkgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24pOgorICAgICAgICAoLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbCA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstaWNvbik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
c3VhbFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBlLmdldCBlbGVtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5wcm90
b3R5cGUuc2V0IGRpc2FibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVBy
b3BlcnR5RWRpdG9yTGluay5wcm90b3R5cGUuX2xpbmtlZFByb3BlcnR5VmFsdWVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5wcm90
b3R5cGUuX3VwZGF0ZUxpbmtlZEVkaXRvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3Vh
bFN0eWxlUHJvcGVydHlFZGl0b3JMaW5rLnByb3RvdHlwZS5faWNvbk1vdXNlb3Zlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsucHJvdG90eXBl
Ll9pY29uTW91c2VvdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3JMaW5rLnByb3RvdHlwZS5faWNvbkNsaWNrZWQpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmNzczogQWRkZWQu
CisgICAgICAgICgudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQt
Ym94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxl
KToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1
dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFs
dWUtY29udGFpbmVyKToKKyAgICAgICAgKC52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVy
Lm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVtYmVyLXNsaWRlci5kaXNhYmxlZCA+IC5yZWxh
dGl2ZS1zbGlkZXIpOgorICAgICAgICAoLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIu
bnVtYmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS12YWx1ZS1jb250YWluZXIubm8tdmFsdWVzLm5vLXVuaXRzKToKKyAgICAgICAgKC52
aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUt
bnVtYmVyLXNsaWRlciA+IC5yZWxhdGl2ZS1zbGlkZXIpOgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLnByb3Rv
dHlwZS5zZXQgc2NhbGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRp
dmVOdW1iZXJTbGlkZXIucHJvdG90eXBlLnVwZGF0ZUVkaXRvclZhbHVlcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5wcm90b3R5cGUuX3Jl
c2V0U2xpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaXN1YWxTdHlsZVJlbGF0aXZlTnVt
YmVyU2xpZGVyLnByb3RvdHlwZS5fc2xpZGVyQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5wcm90b3R5cGUuX251bWJlcklucHV0
Q2hhbmdlZCk6CisKKzIwMTUtMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBkaWZmZXJlbnQgdHlwZXMgb2Ygbm9uLW51
bWVyaWNhbCBWaXN1YWwgZWRpdG9ycyBmb3IgQ1NTIHByb3BlcnRpZXMKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzcxMQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9w
ZXJ0eUxpbmtlZC5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eUxpbmtlZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDQ1OTlhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2ZwpA
QCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+
Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2
aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxjaXJjbGUgY2xhc3M9ImZpbGxlZCIgY3g9IjgiIGN5
PSI4IiByPSI0IiBmaWxsPSJibGFjayIgc3Ryb2tlPSJub25lIiAvPgorPC9zdmc+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5
bGVQcm9wZXJ0eVVubGlua2VkLnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5VW5saW5rZWQuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNGQxMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVmlzdWFsU3R5bGVQcm9wZXJ0eVVu
bGlua2VkLnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgorICAgIDxwYXRoIGNsYXNzPSJmaWxsZWQi
IGQ9Ik0gMTAgNCBDIDE2IDQgMTYgMTIgMTAgMTIiIHN0cm9rZT0ibm9uZSIgLz4KKyAgICA8cGF0
aCBjbGFzcz0iZmlsbGVkIiBkPSJNIDYgNCBDIDAgNCAwIDEyIDYgMTIiIHN0cm9rZT0ibm9uZSIg
Lz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVOdW1iZXJJbnB1dEJveC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTBmZTA5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5
bGVOdW1iZXJJbnB1dEJveC5jc3MKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1
ZS1jb250YWluZXIuZm9jdXNlZCA+IC5mb2N1cy1yaW5nIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAycHg7CisgICAgbGVmdDogMXB4OworICAgIHdpZHRoOiBjYWxjKDEwMCUg
LSAycHgpOworICAgIGhlaWdodDogMTZweDsKKyAgICBib3JkZXItcmFkaXVzOiAzcHg7CisgICAg
Ym94LXNoYWRvdzogaHNsYSgwLCAwJSwgMCUsIDAuMTUpIDAgMXB4IDAsIDAgMCAwIDNweCBoc2xh
KDIxMSwgOTYlLCA0OCUsIDAuMjUpOworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisu
dmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHkt
dmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1rZXl3b3JkLXNlbGVjdCB7CisgICAgb3V0
bGluZTogbm9uZTsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lciA+IC5udW1iZXItaW5wdXQtY29udGFp
bmVyIHsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDJweDsKKyAgICBsZWZ0OiAxcHg7CisgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOwor
ICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGJvcmRl
ci1yYWRpdXM6IDRweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7
CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3
aGl0ZS1zcGFjZTogbm93cmFwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5l
ciA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyOm5vdCgubnVtYmVyLWlu
cHV0LWVkaXRhYmxlKSA+IC5udW1iZXItaW5wdXQtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lciA+IC52aXN1YWwtc3R5
bGUtcHJvcGVydHktdmFsdWUtY29udGFpbmVyID4gLm51bWJlci1pbnB1dC1jb250YWluZXIgPiAu
bnVtYmVyLWlucHV0LXZhbHVlIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDE2cHg7
CisgICAgbWFyZ2luLXJpZ2h0OiAxcHg7CisgICAgcGFkZGluZzogMCAwIDFweCAzcHg7CisgICAg
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OworICAgIHRleHQtYWxpZ246IHJpZ2h0Owor
ICAgIGJvcmRlcjogbm9uZTsKKyAgICBvdXRsaW5lOiBub25lOworICAgIHBvaW50ZXItZXZlbnRz
OiBhbGw7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250YWluZXIgPiAubnVtYmVyLWlucHV0LWNvbnRhaW5lciA+
IHNwYW4geworICAgIG1pbi13aWR0aDogLXdlYmtpdC1maXQtY29udGVudDsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxl
TnVtYmVySW5wdXRCb3guanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjVhZmVjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZU51bWJlcklucHV0Qm94LmpzCkBA
IC0wLDAgKzEsMzM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVt
YmVySW5wdXRCb3ggPSBjbGFzcyBWaXN1YWxTdHlsZU51bWJlcklucHV0Qm94IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlUHJvcGVydHlFZGl0b3IKK3sKKyAgICBjb25zdHJ1Y3Rvcihw
cm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dO
ZWdhdGl2ZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9w
ZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cyB8fCBbV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJObyBVbml0cyIpXSwgIm51bWJlci1pbnB1dC1ib3giLCBsYXlvdXRS
ZXZlcnNlZCk7CisKKyAgICAgICAgdGhpcy5faGFzVW5pdHMgPSAhIXBvc3NpYmxlVW5pdHM7Cisg
ICAgICAgIHRoaXMuX2FsbG93TmVnYXRpdmVWYWx1ZXMgPSAhIWFsbG93TmVnYXRpdmVWYWx1ZXMg
fHwgZmFsc2U7CisKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xl
KCJuby12YWx1ZXMiLCAhcG9zc2libGVWYWx1ZXMgfHwgIXBvc3NpYmxlVmFsdWVzLmxlbmd0aCk7
CisgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibm8tdW5pdHMi
LCAhdGhpcy5faGFzVW5pdHMpOworCisgICAgICAgIGxldCBmb2N1c1JpbmdFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGZvY3VzUmluZ0VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgiZm9jdXMtcmluZyIpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKGZvY3VzUmluZ0VsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxl
Y3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CisgICAgICAgIHRo
aXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm51bWJlci1pbnB1dC1rZXl3
b3JkLXNlbGVjdCIpOworICAgICAgICBpZiAodGhpcy5fcG9zc2libGVVbml0cy5hZHZhbmNlZCkK
KyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJPcHRpb24tY2xpY2sgdG8gc2hvdyBhbGwgdW5pdHMiKTsKKworICAgICAg
ICBpZiAodGhpcy5fcG9zc2libGVWYWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVZh
bHVlT3B0aW9ucyh0aGlzLl9wb3NzaWJsZVZhbHVlcy5iYXNpYyk7CisgICAgICAgICAgICB0aGlz
Ll9rZXl3b3JkU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJociIpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9wb3NzaWJsZVVuaXRzKQor
ICAgICAgICAgICAgdGhpcy5fY3JlYXRlVW5pdE9wdGlvbnModGhpcy5fcG9zc2libGVVbml0cy5i
YXNpYyk7CisKKyAgICAgICAgdGhpcy5fYWR2YW5jZWRVbml0c0VsZW1lbnRzID0gbnVsbDsKKwor
ICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1
cyIsIHRoaXMuX2ZvY3VzQ29udGVudEVsZW1lbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMu
X2tleXdvcmRTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X2tleXdvcmRTZWxlY3RNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2tleXdv
cmRTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2tleXdvcmRD
aGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fYmx1ckNvbnRlbnRFbGVtZW50LmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2tleXdv
cmRTZWxlY3RFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9udW1iZXJVbml0c0NvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9udW1iZXJVbml0
c0NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJudW1iZXItaW5wdXQtY29udGFpbmVyIik7CisKKyAg
ICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOworICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJudW1iZXItaW5wdXQtdmFsdWUiKTsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1i
ZXJJbnB1dEVsZW1lbnQuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl92YWx1ZU51
bWJlcklucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzQ29u
dGVudEVsZW1lbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl92YWx1ZU51bWJlcklucHV0
S2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCB0aGlzLl9udW1iZXJJbnB1dENoYW5nZWQuYmlu
ZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyQ29udGVudEVsZW1lbnQuYmluZCh0aGlzKSk7Cisg
ICAgICAgIHRoaXMuX251bWJlclVuaXRzQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3ZhbHVl
TnVtYmVySW5wdXRFbGVtZW50KTsKKworICAgICAgICB0aGlzLl91bml0c0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX251bWJlclVuaXRzQ29u
dGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3VuaXRzRWxlbWVudCk7CisgICAgICAgIHRoaXMuY29u
dGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbnVtYmVyVW5pdHNDb250YWluZXIpOworCisg
ICAgICAgIHRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSA9IHRydWU7CisgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7Cisg
ICAgICAgIHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRl
ciIsIDApOworICAgICAgICBpZiAodGhpcy5faGFzVW5pdHMgJiYgdGhpcy52YWx1ZUlzU3VwcG9y
dGVkVW5pdCgicHgiKSkKKyAgICAgICAgICAgIHRoaXMuX3VuaXRzRWxlbWVudC50ZXh0Q29udGVu
dCA9IHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnZhbHVlID0gInB4IjsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
bnVtYmVySW5wdXRJc0VkaXRhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodGhp
cy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQudmFsdWUpOworCisgICAgICAgIGlmICghdGhpcy5f
bnVtYmVySW5wdXRJc0VkaXRhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2tleXdvcmRT
ZWxlY3RFbGVtZW50LnZhbHVlOworCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAg
IHNldCB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA9PT0g
dGhpcy52YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIWlzTmFOKHZh
bHVlKSkgeworICAgICAgICAgICAgdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlID0gdHJ1ZTsK
KyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibnVtYmVyLWlu
cHV0LWVkaXRhYmxlIik7CisgICAgICAgICAgICB0aGlzLl92YWx1ZU51bWJlcklucHV0RWxlbWVu
dC52YWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1l
bnQudmFsdWUgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHRoaXMudmFsdWVJc1N1cHBvcnRlZEtleXdvcmQodmFsdWUpKSB7CisgICAgICAgICAg
ICB0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMu
Y29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgibnVtYmVyLWlucHV0LWVkaXRhYmxlIik7
CisgICAgICAgICAgICB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZSA9IHZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgZ2V0IHVuaXRzKCkK
KyAgICB7CisgICAgICAgIGxldCBrZXl3b3JkID0gdGhpcy5fa2V5d29yZFNlbGVjdEVsZW1lbnQu
dmFsdWU7CisgICAgICAgIGlmICghdGhpcy52YWx1ZUlzU3VwcG9ydGVkVW5pdChrZXl3b3JkKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZXR1cm4ga2V5d29yZDsKKyAgICB9CisK
KyAgICBzZXQgdW5pdHModW5pdCkKKyAgICB7CisgICAgICAgIGlmICghdW5pdCB8fCB1bml0ID09
PSB0aGlzLnVuaXRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghdGhpcy52
YWx1ZUlzU3VwcG9ydGVkVW5pdCh1bml0KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBpZiAodGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkVW5pdCh1bml0KSkKKyAgICAgICAg
ICAgIHRoaXMuX2FkZEFkdmFuY2VkVW5pdHMoKTsKKworICAgICAgICB0aGlzLl9udW1iZXJJbnB1
dElzRWRpdGFibGUgPSB0cnVlOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlz
dC5hZGQoIm51bWJlci1pbnB1dC1lZGl0YWJsZSIpOworICAgICAgICB0aGlzLl9rZXl3b3JkU2Vs
ZWN0RWxlbWVudC52YWx1ZSA9IHVuaXQ7CisKKyAgICAgICAgaWYgKHRoaXMuX2hhc1VuaXRzKQor
ICAgICAgICAgICAgdGhpcy5fdW5pdHNFbGVtZW50LnRleHRDb250ZW50ID0gdW5pdDsKKyAgICB9
CisKKyAgICBnZXQgcGxhY2Vob2xkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Zh
bHVlTnVtYmVySW5wdXRFbGVtZW50LmdldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKTsKKyAgICB9
CisKKyAgICBzZXQgcGxhY2Vob2xkZXIodGV4dCkKKyAgICB7CisgICAgICAgIGlmICh0ZXh0ID09
PSB0aGlzLnBsYWNlaG9sZGVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxldCBv
bmx5TnVtZXJpY2FsVGV4dCA9ICFpc05hTih0ZXh0KSAmJiB0ZXh0OworICAgICAgICB0aGlzLl92
YWx1ZU51bWJlcklucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIiwgb25seU51
bWVyaWNhbFRleHQgfHwgMCk7CisgICAgfQorCisgICAgZ2V0IHN5bnRoZXNpemVkVmFsdWUoKQor
ICAgIHsKKyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVsZW1lbnQu
dmFsdWU7CisgICAgICAgIGlmICh0aGlzLl9udW1iZXJJbnB1dElzRWRpdGFibGUgJiYgIXZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgbGV0IGtleXdvcmQgPSB0aGlz
Ll9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVJ
c1N1cHBvcnRlZFVuaXQoa2V5d29yZCkgPyB2YWx1ZSArICh0aGlzLl9oYXNVbml0cyA/IGtleXdv
cmQgOiAiIikgOiBrZXl3b3JkOworICAgIH0KKworICAgIHVwZGF0ZVZhbHVlRnJvbVRleHQodGV4
dCwgdmFsdWUpCisgICAgeworICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLnBhcnNlVmFsdWUodmFs
dWUpOworICAgICAgICB0aGlzLnZhbHVlID0gbWF0Y2ggPyBtYXRjaFsxXSA6IHZhbHVlOworICAg
ICAgICB0aGlzLnVuaXRzID0gbWF0Y2ggPyBtYXRjaFsyXSA6IG51bGw7CisgICAgICAgIHJldHVy
biB0aGlzLm1vZGlmeVByb3BlcnR5VGV4dCh0ZXh0LCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8g
UHJvdGVjdGVkCisKKyAgICBwYXJzZVZhbHVlKHRleHQpCisgICAgeworICAgICAgICByZXR1cm4g
L14oLT9bXGQuXSspKFteXHNcZF17MCw0fSkoPzpccyo7PykkLy5leGVjKHRleHQpOworICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9rZXl3b3JkQ2hhbmdlZCgpCisgICAgeworICAgICAg
ICBsZXQgc2VsZWN0ZWRLZXl3b3JkSXNVbml0ID0gdGhpcy52YWx1ZUlzU3VwcG9ydGVkVW5pdCh0
aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZSk7CisgICAgICAgIGlmICghdGhpcy5fbnVt
YmVySW5wdXRJc0VkaXRhYmxlICYmIHNlbGVjdGVkS2V5d29yZElzVW5pdCkKKyAgICAgICAgICAg
IHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlID0gbnVsbDsKKworICAgICAgICBp
ZiAodGhpcy5faGFzVW5pdHMpCisgICAgICAgICAgICB0aGlzLl91bml0c0VsZW1lbnQudGV4dENv
bnRlbnQgPSB0aGlzLl9rZXl3b3JkU2VsZWN0RWxlbWVudC52YWx1ZTsKKworICAgICAgICB0aGlz
Ll9udW1iZXJJbnB1dElzRWRpdGFibGUgPSBzZWxlY3RlZEtleXdvcmRJc1VuaXQ7CisgICAgICAg
IHRoaXMuY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgibnVtYmVyLWlucHV0LWVkaXRh
YmxlIiwgc2VsZWN0ZWRLZXl3b3JkSXNVbml0KTsKKyAgICAgICAgdGhpcy5fdmFsdWVEaWRDaGFu
Z2UoKTsKKyAgICB9CisKKyAgICBfdmFsdWVOdW1iZXJJbnB1dEtleURvd24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX251bWJlcklucHV0SXNFZGl0YWJsZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBmdW5jdGlvbiBhZGp1c3RWYWx1ZShkZWx0YSkKKyAgICAgICAg
eworICAgICAgICAgICAgbGV0IG5ld1ZhbHVlOworICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhp
cy52YWx1ZTsKKyAgICAgICAgICAgIGlmICghdmFsdWUgJiYgaXNOYU4odmFsdWUpKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHBsYWNlaG9sZGVyVmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyICYmICFp
c05hTih0aGlzLnBsYWNlaG9sZGVyKSA/IHBhcnNlRmxvYXQodGhpcy5wbGFjZWhvbGRlcikgOiAw
OworICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcGxhY2Vob2xkZXJWYWx1ZSArIGRlbHRhOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZSArIGRl
bHRhOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX2FsbG93TmVnYXRpdmVWYWx1ZXMgJiYgbmV3
VmFsdWUgPCAwKQorICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gMDsKKworICAgICAgICAgICAg
dGhpcy52YWx1ZSA9IE1hdGgucm91bmQobmV3VmFsdWUgKiAxMDApIC8gMTAwOworICAgICAgICAg
ICAgdGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBzaGlm
dCA9IDE7CisgICAgICAgIGlmIChldmVudC5jdHJsS2V5KQorICAgICAgICAgICAgc2hpZnQgLz0g
MTA7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5KQorICAgICAgICAgICAgc2hpZnQg
Kj0gMTA7CisKKyAgICAgICAgbGV0IGtleSA9IGV2ZW50LmtleUlkZW50aWZpZXI7CisgICAgICAg
IGlmIChrZXkuc3RhcnRzV2l0aCgiUGFnZSIpKQorICAgICAgICAgICAgc2hpZnQgKj0gMTA7CisK
KyAgICAgICAgaWYgKGtleSA9PT0gIlVwIiB8fCBrZXkgPT09ICJQYWdlVXAiKSB7CisgICAgICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgYWRqdXN0VmFsdWUuY2Fs
bCh0aGlzLCBzaGlmdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoa2V5ID09PSAiRG93biIgfHwga2V5ID09PSAiUGFnZURvd24iKSB7CisgICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgYWRqdXN0VmFsdWUuY2FsbCh0
aGlzLCAtc2hpZnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fdmFsdWVEaWRDaGFuZ2UoKTsKKyAgICB9CisKKyAgICBfbnVtYmVySW5wdXRDaGFuZ2Vk
KCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbnVtYmVySW5wdXRJc0VkaXRhYmxlKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3ZhbHVlRGlkQ2hhbmdlKCk7CisgICAg
fQorCisgICAgX2tleXdvcmRTZWxlY3RNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgdGhpcy5fYWRkQWR2YW5jZWRVbml0cygpOwor
ICAgICAgICBlbHNlIGlmICghdGhpcy5fdmFsdWVJc1N1cHBvcnRlZEFkdmFuY2VkVW5pdCgpKQor
ICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWR2YW5jZWRVbml0cygpOworICAgIH0KKworICAgIF9j
cmVhdGVWYWx1ZU9wdGlvbnModmFsdWVzKQorICAgIHsKKyAgICAgICAgbGV0IGFkZGVkRWxlbWVu
dHMgPSBbXTsKKyAgICAgICAgZm9yIChsZXQga2V5IGluIHZhbHVlcykgeworICAgICAgICAgICAg
bGV0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICAg
ICAgb3B0aW9uLnZhbHVlID0ga2V5OworICAgICAgICAgICAgb3B0aW9uLnRleHQgPSB2YWx1ZXNb
a2V5XTsKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxk
KG9wdGlvbik7CisgICAgICAgICAgICBhZGRlZEVsZW1lbnRzLnB1c2gob3B0aW9uKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0KKworICAgIF9jcmVh
dGVVbml0T3B0aW9ucyh1bml0cykKKyAgICB7CisgICAgICAgIGxldCBhZGRlZEVsZW1lbnRzID0g
W107CisgICAgICAgIGZvciAobGV0IHVuaXQgb2YgdW5pdHMpIHsKKyAgICAgICAgICAgIGxldCBv
cHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9w
dGlvbi50ZXh0ID0gdW5pdDsKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50
LmFwcGVuZENoaWxkKG9wdGlvbik7CisgICAgICAgICAgICBhZGRlZEVsZW1lbnRzLnB1c2gob3B0
aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhZGRlZEVsZW1lbnRzOworICAgIH0K
KworICAgIF9hZGRBZHZhbmNlZFVuaXRzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9hZHZh
bmNlZFVuaXRzRWxlbWVudHMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5f
a2V5d29yZFNlbGVjdEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aHIiKSk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50cyA9IHRoaXMuX2NyZWF0
ZVVuaXRPcHRpb25zKHRoaXMuX3Bvc3NpYmxlVW5pdHMuYWR2YW5jZWQpOworICAgIH0KKworICAg
IF9yZW1vdmVBZHZhbmNlZFVuaXRzKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fYWR2YW5j
ZWRVbml0c0VsZW1lbnRzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2tl
eXdvcmRTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuX2FkdmFuY2VkVW5pdHNFbGVtZW50
c1swXS5wcmV2aW91c1NpYmxpbmcpOworICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIHRoaXMu
X2FkdmFuY2VkVW5pdHNFbGVtZW50cykKKyAgICAgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RF
bGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2FkdmFuY2VkVW5p
dHNFbGVtZW50cyA9IG51bGw7CisgICAgfQorCisgICAgX2ZvY3VzQ29udGVudEVsZW1lbnQoZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZv
Y3VzZWQiKTsKKyAgICB9CisKKyAgICBfYmx1ckNvbnRlbnRFbGVtZW50KGV2ZW50KQorICAgIHsK
KyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJmb2N1c2VkIik7
CisgICAgfQorCisgICAgX3RvZ2dsZVRhYmJpbmdPZlNlbGVjdGFibGVFbGVtZW50cyhkaXNhYmxl
ZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2tleXdvcmRTZWxlY3RFbGVtZW50LnRhYkluZGV4ID0g
ZGlzYWJsZWQgPyAiLTEiIDogbnVsbDsKKyAgICAgICAgdGhpcy5fdmFsdWVOdW1iZXJJbnB1dEVs
ZW1lbnQudGFiSW5kZXggPSBkaXNhYmxlZCA/ICItMSIgOiBudWxsOworICAgIH0KK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxT
dHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluay5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdkZWFhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUHJvcGVy
dHlFZGl0b3JMaW5rLmNzcwpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy52aXN1YWwt
c3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICBtaW4td2lkdGg6IDMycHg7CisgICAgbWFyZ2luLWxlZnQ6IDFweDsKK30KKworLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5kaXNhYmxlZCB7CisgICAgdmlzaWJpbGl0eTogaGlk
ZGVuOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsIHsK
KyAgICBoZWlnaHQ6IDEzcHg7CisgICAgbWFyZ2luOiAwIGF1dG8gMnB4OworICAgIHBhZGRpbmc6
IDAgNTBweDsKKyAgICBib3JkZXItdG9wLXdpZHRoOiAwOworICAgIGJvcmRlci1yaWdodC13aWR0
aDogMXB4OworICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7CisgICAgYm9yZGVyLWxlZnQtd2lk
dGg6IDFweDsKKyAgICBib3JkZXItY29sb3I6IGhzbCgwLCAwJSwgNTAlKTsKKyAgICBib3JkZXIt
c3R5bGU6IGRhc2hlZDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5s
aW5rLWFsbC5saW5rZWQgeworICAgIGJvcmRlci1jb2xvcjogYmxhY2s7CisgICAgYm9yZGVyLXN0
eWxlOiBzb2xpZDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIHsKKyAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgdG9wOiAtd2Via2l0LWNhbGMoNTAlIC0gMC41cHgpOworICAgIHdpZHRo
OiA0OHB4OworICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgaHNsKDAsIDAlLCA1MCUpOworfQor
CisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLmxpbmstYWxsID4gLnZpc3VhbC1z
dHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIubGVmdCwKKy52aXN1YWwtc3R5bGUtcHJv
cGVydHktZWRpdG9yLWxpbmsubGluay1hbGwubGlua2VkID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0
eS1lZGl0b3ItbGluay1pY29uOmhvdmVyICsgLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluay1ib3JkZXIucmlnaHQgIHsKKyAgICB3aWR0aDogNDlweDsKK30KKworLnZpc3VhbC1zdHls
ZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5sZWZ0IHsKKyAgICB3aWR0aDogNTJweDsKK30KKwor
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5saW5rLWFsbC5saW5rZWQgPiAudmlz
dWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCB7CisgICAgd2lkdGg6
IDUxcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsubGlua2VkID4g
LnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIgeworICAgIGJvcmRlci10
b3A6IDFweCBzb2xpZCBoc2woMCwgMCwgMCk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
ZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5s
ZWZ0IHsKKyAgICBsZWZ0OiAxcHg7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJvcmRlci5yaWdodCB7
CisgICAgcmlnaHQ6IDFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGlu
ay5saW5rLWFsbC5saW5rZWQgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWJv
cmRlci5sZWZ0IHsKKyAgICBsZWZ0OiAwOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVk
aXRvci1saW5rLmxpbmstYWxsLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstYm9yZGVyLnJpZ2h0IHsKKyAgICByaWdodDogMDsKK30KKworLnZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1lZGl0b3ItbGluazpub3QoLmxpbmstYWxsKSA+IC52aXN1YWwtc3R5bGUtcHJvcGVy
dHktZWRpdG9yLWxpbmstYm9yZGVyIHsKKyAgICB3aWR0aDogMTBweDsKKyAgICB0b3A6IC13ZWJr
aXQtY2FsYyg1MCUgLSAxcHgpOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1s
aW5rOm5vdCgubGluay1hbGwpLmxpbmtlZCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9y
LWxpbmstYm9yZGVyIHsKKyAgICB3aWR0aDogMTJweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9w
ZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNv
biB7CisgICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworfQorCisudmlzdWFsLXN0
eWxlLXByb3BlcnR5LWVkaXRvci1saW5rID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3It
bGluay1pY29uID4gLnVubGlua2VkLWljb24geworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMTAwJSwgMTAwJSk7CisgICAgei1pbmRleDogMTsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluayA+IC52aXN1YWwtc3R5bGUt
cHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiA+IC51bmxpbmtlZC1pY29uIHN2ZyAuZmlsbGVkIHsK
KyAgICBmaWxsOiBoc2woMCwgMCUsIDUwJSk7Cit9CisKKy52aXN1YWwtc3R5bGUtcHJvcGVydHkt
ZWRpdG9yLWxpbmsgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rLWljb24gPiAu
dW5saW5rZWQtaWNvbiBzdmcgLnN0cm9rZWQgeworICAgIHN0cm9rZTogaHNsKDAsIDAlLCA1MCUp
OworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5rOm5vdCgubGluay1hbGwp
ID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay1pY29uIHsKKyAgICBtYXJnaW46
IDVweCAwIDAgMTFweDsKK30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1lZGl0b3ItbGluay5s
aW5rLWFsbCA+IC52aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstaWNvbiB7CisgICAg
bWFyZ2luLXRvcDogMXB4OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVByb3BlcnR5
RWRpdG9yTGluay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjhmYmEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsuanMKQEAgLTAsMCArMSwxNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9wZXJ0eUVkaXRvckxpbmsg
PSBjbGFzcyBWaXN1YWxTdHlsZVByb3BlcnR5RWRpdG9yTGluayBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihsaW5rZWRQcm9wZXJ0aWVzLCBjbGFzc05hbWUs
IGxpbmtzVG9IaWRlV2hlbkxpbmtlZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAg
ICAgdGhpcy5fbGlua2VkUHJvcGVydGllcyA9IGxpbmtlZFByb3BlcnRpZXMgfHwgW107CisgICAg
ICAgIHRoaXMuX2xpbmtzVG9IaWRlV2hlbkxpbmtlZCA9IGxpbmtzVG9IaWRlV2hlbkxpbmtlZCB8
fCBbXTsKKyAgICAgICAgdGhpcy5fbGFzdFByb3BlcnR5RWRpdGVkID0gbnVsbDsKKworICAgICAg
ICBmb3IgKGxldCBwcm9wZXJ0eSBvZiB0aGlzLl9saW5rZWRQcm9wZXJ0aWVzKQorICAgICAgICAg
ICAgcHJvcGVydHkuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVmlzdWFsU3R5bGVQcm9w
ZXJ0eUVkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgdGhpcy5fbGlua2VkUHJvcGVydHlWYWx1
ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2
aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmsiLCBjbGFzc05hbWUgfHwgIiIpOworCisg
ICAgICAgIGxldCBsZWZ0TGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgbGVmdExpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoInZpc3VhbC1zdHlsZS1w
cm9wZXJ0eS1lZGl0b3ItbGluay1ib3JkZXIiLCAibGVmdCIpOworICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKGxlZnRMaW5lRWxlbWVudCk7CisKKyAgICAgICAgdGhpcy5faWNvbkVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5faWNv
bkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmlzdWFsLXN0eWxlLXByb3BlcnR5LWVkaXRvci1saW5r
LWljb24iKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQudGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNsaWNrIHRvIGxpbmsgcHJvcGVydHkgdmFsdWVzIik7CisgICAgICAgIHRoaXMu
X2ljb25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2ljb25Nb3Vz
ZW92ZXIuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5faWNvbk1vdXNlb3V0LmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl9pY29uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2ljb25D
bGlja2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHdyYXBwZWRTVkdEb2N1bWVudCgiSW1hZ2Vz
L1Zpc3VhbFN0eWxlUHJvcGVydHlVbmxpbmtlZC5zdmciLCAidW5saW5rZWQtaWNvbiIsIG51bGws
IGZ1bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFwcGVu
ZENoaWxkKHdyYXBwZXIpOworICAgICAgICAgICAgdGhpcy5fdW5saW5rZWRJY29uID0gd3JhcHBl
cjsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsKKworICAgICAgICB3cmFwcGVkU1ZHRG9jdW1lbnQo
IkltYWdlcy9WaXN1YWxTdHlsZVByb3BlcnR5TGlua2VkLnN2ZyIsICJsaW5rZWQtaWNvbiIsIG51
bGwsIGZ1bmN0aW9uKHdyYXBwZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmFw
cGVuZENoaWxkKHdyYXBwZXIpOworICAgICAgICAgICAgdGhpcy5fbGlua2VkSWNvbiA9IHdyYXBw
ZXI7CisgICAgICAgICAgICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9IHRydWU7CisgICAgICAg
IH0uYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9pY29uRWxlbWVudCk7CisKKyAgICAgICAgbGV0IHJpZ2h0TGluZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgcmlnaHRMaW5lRWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJ2aXN1YWwtc3R5bGUtcHJvcGVydHktZWRpdG9yLWxpbmstYm9yZGVyIiwgInJpZ2h0
Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQocmlnaHRMaW5lRWxlbWVudCk7
CisKKyAgICAgICAgdGhpcy5fbGlua2VkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2Rpc2FibGVk
ID0gZmFsc2U7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICBzZXQgZGlz
YWJsZWQoZmxhZykKKyAgICB7CisgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZmxhZzsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJkaXNhYmxlZCIsIHRoaXMuX2Rpc2Fi
bGVkKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbGlua2VkUHJvcGVydHlWYWx1
ZUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIWV2ZW50KQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxldCBwcm9wZXJ0eSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAg
aWYgKCFwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9sYXN0
UHJvcGVydHlFZGl0ZWQgPSBwcm9wZXJ0eTsKKyAgICAgICAgaWYgKCF0aGlzLl9saW5rZWQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdXBkYXRlTGlua2VkRWRpdG9ycyhw
cm9wZXJ0eSk7CisgICAgfQorCisgICAgX3VwZGF0ZUxpbmtlZEVkaXRvcnMocHJvcGVydHkpCisg
ICAgeworICAgICAgICBsZXQgc3R5bGUgPSBwcm9wZXJ0eS5zdHlsZTsKKyAgICAgICAgbGV0IHRl
eHQgPSBzdHlsZS50ZXh0OworICAgICAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0eS5zeW50aGVzaXpl
ZFZhbHVlIHx8IG51bGw7CisKKyAgICAgICAgZm9yIChsZXQgbGlua2VkUHJvcGVydHkgb2YgdGhp
cy5fbGlua2VkUHJvcGVydGllcykKKyAgICAgICAgICAgIHRleHQgPSBsaW5rZWRQcm9wZXJ0eS51
cGRhdGVWYWx1ZUZyb21UZXh0KHRleHQsIHZhbHVlKTsKKworICAgICAgICBzdHlsZS50ZXh0ID0g
dGV4dDsKKyAgICB9CisKKyAgICBfaWNvbk1vdXNlb3ZlcigpCisgICAgeworICAgICAgICB0aGlz
Ll9saW5rZWRJY29uLmhpZGRlbiA9IHRoaXMuX2xpbmtlZDsKKyAgICAgICAgdGhpcy5fdW5saW5r
ZWRJY29uLmhpZGRlbiA9ICF0aGlzLl9saW5rZWQ7CisgICAgfQorCisgICAgX2ljb25Nb3VzZW91
dCgpCisgICAgeworICAgICAgICB0aGlzLl9saW5rZWRJY29uLmhpZGRlbiA9ICF0aGlzLl9saW5r
ZWQ7CisgICAgICAgIHRoaXMuX3VubGlua2VkSWNvbi5oaWRkZW4gPSB0aGlzLl9saW5rZWQ7Cisg
ICAgfQorCisgICAgX2ljb25DbGlja2VkKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xpbmtlZCA9
ICF0aGlzLl9saW5rZWQ7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgi
bGlua2VkIiwgdGhpcy5fbGlua2VkKTsKKyAgICAgICAgdGhpcy5fbGlua2VkSWNvbi5oaWRkZW4g
PSAhdGhpcy5fbGlua2VkOworICAgICAgICB0aGlzLl91bmxpbmtlZEljb24uaGlkZGVuID0gdGhp
cy5fbGlua2VkOworCisgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LnRpdGxlID0gdGhpcy5fbGlu
a2VkID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byByZW1vdmUgbGluayIpIDogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDbGljayB0byBsaW5rIHByb3BlcnR5IHZhbHVlcyIpOworCisg
ICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtlZEVkaXRvcnModGhpcy5fbGFzdFByb3BlcnR5RWRpdGVk
IHx8IHRoaXMuX2xpbmtlZFByb3BlcnRpZXNbMF0pOworICAgICAgICBmb3IgKGxldCBsaW5rVG9I
aWRlIG9mIHRoaXMuX2xpbmtzVG9IaWRlV2hlbkxpbmtlZCkKKyAgICAgICAgICAgIGxpbmtUb0hp
ZGUuZGlzYWJsZWQgPSB0aGlzLl9saW5rZWQ7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVO
dW1iZXJTbGlkZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2MxNzI3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJT
bGlkZXIuY3NzCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudmlzdWFsLXN0eWxlLXBy
b3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIg
PiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXRpdGxlIHsKKyAgICBtYXJnaW4tcmlnaHQ6IDNweDsK
K30KKworLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVtYmVyLWlucHV0LWJveC5y
ZWxhdGl2ZS1udW1iZXItc2xpZGVyID4gLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS12YWx1ZS1jb250
YWluZXIgeworICAgIG9yZGVyOiAyOworfQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRh
aW5lci5udW1iZXItaW5wdXQtYm94LnJlbGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0
eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRhaW5lcjpub3QoLm51bWJlci1pbnB1dC1lZGl0YWJsZSkg
KyAucmVsYXRpdmUtc2xpZGVyLAorLnZpc3VhbC1zdHlsZS1wcm9wZXJ0eS1jb250YWluZXIubnVt
YmVyLWlucHV0LWJveC5yZWxhdGl2ZS1udW1iZXItc2xpZGVyLmRpc2FibGVkID4gLnJlbGF0aXZl
LXNsaWRlciB7CisgICAgb3BhY2l0eTogMC41OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwor
fQorCisudmlzdWFsLXN0eWxlLXByb3BlcnR5LWNvbnRhaW5lci5udW1iZXItaW5wdXQtYm94LnJl
bGF0aXZlLW51bWJlci1zbGlkZXIgPiAudmlzdWFsLXN0eWxlLXByb3BlcnR5LXZhbHVlLWNvbnRh
aW5lci5uby12YWx1ZXMubm8tdW5pdHMgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKy52aXN1
YWwtc3R5bGUtcHJvcGVydHktY29udGFpbmVyLm51bWJlci1pbnB1dC1ib3gucmVsYXRpdmUtbnVt
YmVyLXNsaWRlciA+IC5yZWxhdGl2ZS1zbGlkZXIgeworICAgIHdpZHRoOiA0NyU7CisgICAgbWFy
Z2luLXJpZ2h0OiA3cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2
ZU51bWJlclNsaWRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTBl
MTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlzdWFsU3R5bGVSZWxhdGl2ZU51bWJlclNsaWRlci5qcwpAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlZpc3VhbFN0eWxlUmVsYXRpdmVOdW1iZXJT
bGlkZXIgPSBjbGFzcyBWaXN1YWxTdHlsZVJlbGF0aXZlTnVtYmVyU2xpZGVyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpc3VhbFN0eWxlTnVtYmVySW5wdXRCb3gKK3sKKyAgICBjb25zdHJ1Y3Rvcihw
cm9wZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dO
ZWdhdGl2ZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpCisgICAgeworICAgICAgICBzdXBlcihwcm9w
ZXJ0eU5hbWVzLCB0ZXh0LCBwb3NzaWJsZVZhbHVlcywgcG9zc2libGVVbml0cywgYWxsb3dOZWdh
dGl2ZVZhbHVlcywgbGF5b3V0UmV2ZXJzZWQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZCgicmVsYXRpdmUtbnVtYmVyLXNsaWRlciIpOworCisgICAgICAgIHRoaXMuX3Ns
aWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICB0
aGlzLl9zbGlkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlbGF0aXZlLXNsaWRlciIpOworICAg
ICAgICB0aGlzLl9zbGlkZXJFbGVtZW50LnR5cGUgPSAicmFuZ2UiOworICAgICAgICB0aGlzLl9z
bGlkZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgdGhpcy5fc2xpZGVyQ2hhbmdl
ZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9z
bGlkZXJFbGVtZW50KTsKKworICAgICAgICB0aGlzLl9zdGFydGluZ1ZhbHVlID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fc2NhbGUgPSAxMDA7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBz
ZXQgc2NhbGUoc2NhbGUpCisgICAgeworICAgICAgICB0aGlzLl9zY2FsZSA9IHNjYWxlIHx8IDE7
CisgICAgfQorCisgICAgdXBkYXRlRWRpdG9yVmFsdWVzKHVwZGF0ZWRWYWx1ZXMpCisgICAgewor
ICAgICAgICBzdXBlci51cGRhdGVFZGl0b3JWYWx1ZXModXBkYXRlZFZhbHVlcyk7CisgICAgICAg
IHRoaXMuX3Jlc2V0U2xpZGVyKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3Jl
c2V0U2xpZGVyKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3N0YXJ0aW5nVmFsdWUgPSBwYXJzZUZs
b2F0KHRoaXMuX3ZhbHVlTnVtYmVySW5wdXRFbGVtZW50LnZhbHVlKTsKKyAgICAgICAgaWYgKGlz
TmFOKHRoaXMuX3N0YXJ0aW5nVmFsdWUpKQorICAgICAgICAgICAgdGhpcy5fc3RhcnRpbmdWYWx1
ZSA9IHBhcnNlRmxvYXQodGhpcy5wbGFjZWhvbGRlcikgfHwgMDsKKworICAgICAgICBsZXQgb3Jp
Z2luID0gdGhpcy5fc2NhbGUgLyAyOworICAgICAgICBpZiAodGhpcy5fYWxsb3dOZWdhdGl2ZVZh
bHVlcyB8fCB0aGlzLl9zdGFydGluZ1ZhbHVlID4gb3JpZ2luKSB7CisgICAgICAgICAgICB0aGlz
Ll9zbGlkZXJFbGVtZW50Lm1pbiA9IC1vcmlnaW47CisgICAgICAgICAgICB0aGlzLl9zbGlkZXJF
bGVtZW50Lm1heCA9IG9yaWdpbjsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVsZW1lbnQudmFs
dWUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVu
dC5taW4gPSAwOworICAgICAgICAgICAgdGhpcy5fc2xpZGVyRWxlbWVudC5tYXggPSB0aGlzLl9z
Y2FsZTsKKyAgICAgICAgICAgIHRoaXMuX3NsaWRlckVsZW1lbnQudmFsdWUgPSB0aGlzLl9zdGFy
dGluZ1ZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgX3NsaWRlckNoYW5nZWQoKQorICAg
IHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3N0YXJ0aW5nVmFsdWUgKyBNYXRoLnJvdW5k
KHBhcnNlRmxvYXQodGhpcy5fc2xpZGVyRWxlbWVudC52YWx1ZSkgKiAxMDApIC8gMTAwOworICAg
ICAgICB0aGlzLl92YWx1ZURpZENoYW5nZSgpOworICAgIH0KKworICAgIF9udW1iZXJJbnB1dENo
YW5nZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuX251bWJlcklucHV0Q2hhbmdlZCgpOworICAg
ICAgICB0aGlzLl9yZXNldFNsaWRlcigpOworICAgIH0KK307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>