<?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>120640</bug_id>
          
          <creation_ts>2013-09-03 10:37:24 -0700</creation_ts>
          <short_desc>Web Inspector: Jump from a computed style to the rule it came from</short_desc>
          <delta_ts>2015-05-28 21:48:02 -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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Wood">dwood</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>924078</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Wood">dwood</who>
    <bug_when>2013-09-03 10:37:24 -0700</bug_when>
    <thetext>I&apos;ve frequently found myself in a situation where I&apos;m looking at a computed property, wondering how that property got that value.  Was it a specific rule?  If so, which one?  Or is it inherited from some containing element?  If so, which, and what rule?

It would be very useful if one could, say, double-click on any property/value line in the properties list, and have the inspector jump over to the Rules tab, highlighting the specific rule that gives it that value.  Perhaps even changing the selected element so that the rule is properly highlighted for the relevant element.

Perhaps even some sort of popover display to help explain even more.  For instance, if a computed value in in pixels and the rule declares a value in em, it could explain how it came to that calculation.

Anything that might help track down *why* a property has a particular value would be extremely helpful.  Easy for WebKit to know, and hard for a human to try to figure out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924079</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-03 10:38:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/14898027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924082</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Wood">dwood</who>
    <bug_when>2013-09-03 10:39:58 -0700</bug_when>
    <thetext>Additionally, it might be useful to be able to get to an explanation from the Metrics tab; e.g. option-clicking on a particular margin, border, padding, or dimension and go from there to the rule that generated that value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924089</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-03 10:52:25 -0700</bug_when>
    <thetext>Yes, it would be nice to have some way to filter / highlight a property name in the Styles sidebar Rules tab to see just how a single property cascades. All the data is already there right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097377</commentid>
    <comment_count>4</comment_count>
      <attachid>253717</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-26 12:49:08 -0700</bug_when>
    <thetext>Created attachment 253717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097378</commentid>
    <comment_count>5</comment_count>
      <attachid>253718</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-26 12:49:56 -0700</bug_when>
    <thetext>Created attachment 253718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097424</commentid>
    <comment_count>6</comment_count>
      <attachid>253718</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-26 13:56:06 -0700</bug_when>
    <thetext>Comment on attachment 253718
Patch

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

Very good first patch! I commented most about style nits. But there is some changes you can make to make this more integrated and not have as many changes.

&gt; Source/WebInspectorUI/ChangeLog:9
&gt; +        * UserInterface/Views/CSSStyleDeclarationSection.js:
&gt; +        (WebInspector.CSSStyleDeclarationSection.prototype.refreshPropertiesTextEditor):

You should add comments under each function or file group about what you did and why.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:263
&gt; +    refreshPropertiesTextEditor: function() {

{ on newline.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:264
&gt; +        this._propertiesTextEditor.refresh();

Might not need this in the end, see below.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:440
&gt; +        } else if(this._delegate instanceof WebInspector.ComputedStyleDetailsPanel) {

Add a space after if.

This check, while correct, is a layering violation. This code should not know about ComputedStyleDetailsPanel.

What this should do is check for a function on the delegate (like &quot;this._delegate.cssStyleDeclarationTextEditorShouldAddPropertyGoToArrows&quot;) then call that function to see if it returns true. if it returns true, then you can do the code like you have it. And you should change WebInspector.cssStyleDetailsSidebarPanel.switchViewToStyleInRulesStyleDetailsPanel to another delegate call.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:470
&gt; +        if(property.highlighted) {

Space after if.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:159
&gt; +        var rsdp = this._rulesStyleDetailsPanel;

We don&apos;t abbreviate things like this. Just use &quot;rulesStyleDetailsPanel&quot; or &quot;rulesPanel&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:160
&gt; +        if(rsdp.sections.length == 0) {

Space after if.

!rsdp.sections.length instead of &quot;== 0&quot; (should have been === too)

Should add a comment why this code is needed. Why the timeout?

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:161
&gt; +            var interval = setInterval(function() {

No need to save the interval.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:162
&gt; +                if(rsdp.sections.length &gt; 0) {

if (rsdp.sections.length)

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:164
&gt; +                    clearInterval(interval);

No need to clearInterval for a timeout, it is already single fire.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:169
&gt; +        } else {
&gt; +            rsdp.scrollToSectionAndHighlightProperty(property);
&gt; +        }

No { } for single line blocks.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:248
&gt; +        for(var i = 0; i &lt; this._sections.length; ++i) {

Space after for.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:249
&gt; +            var section = this._sections[i];

Use for (var section of this._sections) and you don&apos;t need the i or this line.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:251
&gt; +            for(var j = 0; j &lt; section.style.properties.length; ++j) {

Use for (...of...)

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:253
&gt; +                    var elements = section.element.querySelectorAll(&quot;.properties .css-style-text-editor .CodeMirror-scroll .CodeMirror-code pre&quot;);

This is fragile. It could easily break with a CodeMirror change and we wouldn&apos;t catch it.

This should be contained in a helper on CSSStyleDeclarationTextEditor, as a revealAndHighlightProperty function. CSSProperty.js has styleDeclarationTextRange and CSSStyleDeclarationTextEditor can use it to scroll to a property.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:255
&gt; +                    for(var k = 0; k &lt; elements.length; ++k) {

Use for (...of...)

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:260
&gt; +                            section.style.properties[j].highlighted = true;
&gt; +                            section.refreshPropertiesTextEditor();
&gt; +                            section.needsToUpdate = true;

Doing a refresh to get the highlight works, but it is heavy. _updateTextMarkers on CSSStyleDeclarationTextEditor is all you should need to do. That is a private function, so moving this logic to CSSStyleDeclarationTextEditor will make sense.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:270
&gt; +            if(propertyName) {
&gt; +                break;
&gt; +            }

Space after if. No need for { }

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:273
&gt; +        function propertiesMatch(cssProperty) {

Newline before {.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:274
&gt; +            if(cssProperty.enabled &amp;&amp; !cssProperty.overridden) {

Space before if.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:275
&gt; +                if(cssProperty.canonicalName == property.canonicalName || hasMatchingLonghandProperty(cssProperty)) {

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:280
&gt; +            }
&gt; +            return false;

Newline between.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:283
&gt; +        function hasMatchingLonghandProperty(cssProperty) {

Newline before {.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:286
&gt; +            if(cssProperties.length === 0)

Space after if. !cssProperties.length

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:289
&gt; +            for(var i = 0; i &lt; cssProperties.length; ++i) {

for (...of...)

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:290
&gt; +                if(propertiesMatch(cssProperties[i])) {

No need for {}.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:294
&gt; +            }
&gt; +            return false;

Newline between.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:317
&gt; +            if(section.needsToUpdate) {
&gt; +                section.refreshPropertiesTextEditor();
&gt; +                delete section.needsToUpdate;
&gt; +            }

Might not need this if you move things into CSSStyleDeclarationTextEditor and don&apos;t do a full refresh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097571</commentid>
    <comment_count>7</comment_count>
      <attachid>253769</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-26 19:05:44 -0700</bug_when>
    <thetext>Created attachment 253769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097572</commentid>
    <comment_count>8</comment_count>
      <attachid>253770</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-26 19:06:59 -0700</bug_when>
    <thetext>Created attachment 253770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097806</commentid>
    <comment_count>9</comment_count>
      <attachid>253824</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-27 18:55:52 -0700</bug_when>
    <thetext>Created attachment 253824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097953</commentid>
    <comment_count>10</comment_count>
      <attachid>253824</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-28 14:17:41 -0700</bug_when>
    <thetext>Comment on attachment 253824
Patch

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

Looking a lot better. Some more work and this will be nice and clean.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:488
&gt; +                delegate.switchToPropertyInRulesPanel(property);

This should be something more generic than mentioning &quot;rules panel&quot;. The delegate could be/do anything. The point of a delegate is to be generic and not know about the other parts of the code.

Something like: delegate.cssStyleDeclarationTextEditorShowProperty

You will need change the typeof check above too.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:146
&gt; +            this._navigationBar.selectedNavigationItem = this._lastSelectedSectionSetting.value;

I would move this to _switchPanels.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:147
&gt; +            this._navigationBar.updateLayout();

Not sure this is needed.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:156
&gt; +        if (this._rulesStyleDetailsPanel.contentsHaveChanged(this.domNode)) {
&gt; +            this._rulesStyleDetailsPanel.savedProperty = property;
&gt; +            switchToRulesStyleDetailsPanel.call(this);
&gt; +        } else {
&gt; +            switchToRulesStyleDetailsPanel.call(this);
&gt; +            this._rulesStyleDetailsPanel.scrollToSectionAndHighlightProperty(property);
&gt; +        }

This should just be:

this._switchPanels(this._rulesStyleDetailsPanel);
this._rulesStyleDetailsPanel.scrollToSectionAndHighlightProperty(property);

Then scrollToSectionAndHighlightProperty should have the check for contentsHaveChanged, and internally save the property. The property saving should not be the job of the caller, it should be transparent to the caller. You wouldn&apos;t want to have to repeat this code if two or more classes needed to do it.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:-204
&gt; -        this._lastSelectedSectionSetting.value = selectedNavigationItem.identifier;

This could stay, then all the callers to _switchPanels won&apos;t need to do it.

&gt; Source/WebInspectorUI/UserInterface/Views/ComputedStyleDetailsPanel.js:149
&gt; +        if (typeof this._delegate.switchViewToPropertyInRulesStyleDetailsPanel === &quot;function&quot; )
&gt; +            this._delegate.switchViewToPropertyInRulesStyleDetailsPanel(property);

This should be generic, like &quot;computedStyleDetailsPanelShowProperty&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:34
&gt; +        this._savedProperty = null;

_propertyToSelectAndHighlight would be a better name.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:250
&gt; +    scrollToSectionAndHighlightProperty(property)
&gt; +    {
&gt; +        for (var section of this._sections) {

I think this should save to _propertyToSelectAndHighlight and return early if (!this.visible). Then nodeStylesRefreshed will be called when it becomes visible, which will call scrollToSectionAndHighlightProperty again. Should eliminate the need for contentsHaveChanged and _currentDOMNode.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:266
&gt; +    get sections()
&gt; +    {
&gt; +        return this._sections;
&gt; +    }
&gt; +
&gt; +    set savedProperty(cssProperty)
&gt; +    {
&gt; +        this._savedProperty = cssProperty;
&gt;      }

Shouldn&apos;t need these.

&gt; Source/WebInspectorUI/UserInterface/Views/StyleDetailsPanel.js:117
&gt; +    contentsHaveChanged(domNode)
&gt; +    {
&gt; +        if (domNode &amp;&amp; this._currentDOMNode &amp;&amp; this._currentDOMNode === domNode)
&gt; +            return false;
&gt; +
&gt; +        this._currentDOMNode = domNode;
&gt; +
&gt; +        return true;
&gt; +    }

I don&apos;t think you need this. See scrollToSectionAndHighlightProperty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097972</commentid>
    <comment_count>11</comment_count>
      <attachid>253869</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-28 15:18:05 -0700</bug_when>
    <thetext>Created attachment 253869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097993</commentid>
    <comment_count>12</comment_count>
      <attachid>253869</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-28 16:06:49 -0700</bug_when>
    <thetext>Comment on attachment 253869
Patch

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

Almost there!

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:214
&gt; +                this._codeMirror.setSelection(selection.from, selection.to);

You might want to do this which we use in TextEditor to scroll:

    _scrollIntoViewCentered(position)
    {
        var scrollInfo = this._codeMirror.getScrollInfo();
        var lineHeight = Math.ceil(this._codeMirror.defaultTextHeight());
        var margin = Math.floor((scrollInfo.clientHeight - lineHeight) / 2);
        this._codeMirror.scrollIntoView(position, margin);
    }

Might not need to make it as complex, it would be good to share that code. Maybe in CodeMirrorAdditions.js?

You can remove the scrollIntoView from CSSStyleDeclarationSection then.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:482
&gt; +                &amp;&amp; !property.implicit
&gt; +                &amp;&amp; typeof this._delegate.cssStyleDeclarationTextEditorShowProperty === &quot;function&quot;) {

I&apos;d put these on the same line.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:491
&gt; +            var arrowMarker = this._codeMirror.setUniqueBookmark(to, arrowElement);

You never use arrowMarker, you can drop the var.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDetailsSidebarPanel.js:146
&gt; +        this._navigationBar.updateLayout();

Why is this needed? It should happen automatically.

&gt; Source/WebInspectorUI/UserInterface/Views/RulesStyleDetailsPanel.js:298
&gt; +            delete this._propertyToSelectAndHighlight;

We are trying to avoid delete for performance reasons. This can just be:

this._propertyToSelectAndHighlight = null;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098036</commentid>
    <comment_count>13</comment_count>
      <attachid>253869</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-28 18:03:51 -0700</bug_when>
    <thetext>Comment on attachment 253869
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:266
&gt; +            this._element.scrollIntoView();

This would be better as: this._element.scrollIntoViewIfNeeded(true)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098041</commentid>
    <comment_count>14</comment_count>
      <attachid>253884</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-05-28 18:11:54 -0700</bug_when>
    <thetext>Created attachment 253884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098059</commentid>
    <comment_count>15</comment_count>
      <attachid>253884</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-05-28 20:58:23 -0700</bug_when>
    <thetext>Comment on attachment 253884
Patch

Nice job!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098066</commentid>
    <comment_count>16</comment_count>
      <attachid>253884</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 21:47:58 -0700</bug_when>
    <thetext>Comment on attachment 253884
Patch

Clearing flags on attachment: 253884

Committed r184977: &lt;http://trac.webkit.org/changeset/184977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098067</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-28 21:48:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253717</attachid>
            <date>2015-05-26 12:49:08 -0700</date>
            <delta_ts>2015-05-26 12:49:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150526124859.patch</filename>
            <type>text/plain</type>
            <size>10899</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRmZDE5ZWVlYmRiMmEwOGFmMjBiYzBmMDZiZDk4
ZDQyZTRlNjAyMzguLjBjMjEzNzM2Y2RmOWM4MzE4YzlmYmVjYmJlNmQ0NGM3MzhkY2I3ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA1LTI2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUucmVmcmVzaFByb3BlcnRp
ZXNUZXh0RWRpdG9yKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3Ig
PiAuQ29kZU1pcnJvciAuaGlnaGxpZ2h0ZWQpOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVz
IHRleHQtZWRpdG9yLWhpZ2hsaWdodC1mYWRlb3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVGV4
dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuc3dpdGNoVmlld1RvU3R5bGVJ
blJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3M6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9u
ID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlIC5nby10by1h
cnJvdyk6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAu
cm93IC5Db2RlTWlycm9yLWNvZGUgcHJlOmhvdmVyIC5nby10by1hcnJvdyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNjcm9sbFRvU2Vj
dGlvbkFuZEhpZ2hsaWdodFByb3BlcnR5LnByb3BlcnRpZXNNYXRjaCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9u
QW5kSGlnaGxpZ2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxU
b1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuZ2V0IHNlY3Rpb25zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bik6CisKIDIw
MTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWlsZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRleCA1OGM2YWNkODE4MGNhOTFmNGQz
MTY0YTQyNjg5ZjljYWJjZjkwMTllLi41Yjc4MzA2NjMxYjJhZTYwZTIzZWE0NzUxN2VmOWVlMGZh
MjkyNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpA
QCAtMjYwLDYgKzI2MCwxMCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIHJlZnJlc2hQcm9wZXJ0
aWVzVGV4dEVkaXRvcjogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0
RWRpdG9yLnJlZnJlc2goKTsKKyAgICB9LAorCiAgICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcwpp
bmRleCBkNDA0MDVlODdjZmE4OWU3MDFmMjk0Y2VhMWFkNjBjYWVlZWU0MDAxLi5kMTY5MjQ2NzI5
NjM3ZjFiMjNkM2ZlMjFjMzFhZTc2NzAwZDU4MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCkBAIC0xNTIsMyArMTUyLDExIEBACiAgICAg
dGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0OwogICAgIGN1cnNvcjogaW5oZXJpdDsKIH0KKworLmNz
cy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5oaWdobGlnaHRlZCB7CisgICAgLXdl
YmtpdC1hbmltYXRpb246ICJ0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCIgMnM7Cit9CisK
K0Atd2Via2l0LWtleWZyYW1lcyB0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCB7CisgICAg
ZnJvbSB7IGJhY2tncm91bmQtY29sb3I6IGhpZ2hsaWdodDsgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCBiOWIxODNlYTIxMjIyN2Uw
NWQxNDc3MWNmNWFmOTQyZWZjMzM4ZGIwLi40YjAwYTQ1MDllZTE5OTBmYjFjMWIxNzRhZWY0MzBl
NTZlMmMyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcwpAQCAtNDM3LDYgKzQzNywxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAg
ICAgICAgICAgICB2YXIgY2hlY2tib3hNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1
ZUJvb2ttYXJrKGZyb20sIGNoZWNrYm94RWxlbWVudCk7CiAgICAgICAgICAgICBjaGVja2JveE1h
cmtlci5fX3Byb3BlcnR5Q2hlY2tib3ggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYodGhpcy5f
ZGVsZWdhdGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bCkgeworICAgICAgICAgICAgaWYoIXByb3BlcnR5LmltcGxpY2l0KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGFycm93RWxlbWVudCA9IFdlYkluc3BlY3Rvci5jcmVhdGVHb1RvQXJyb3dCdXR0b24o
KTsKKyAgICAgICAgICAgICAgICBhcnJvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5zd2l0Y2hWaWV3VG9TdHlsZUluUnVsZXNTdHlsZURldGFpbHNQ
YW5lbChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB2
YXIgYXJyb3dNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2ttYXJrKHRvLCBh
cnJvd0VsZW1lbnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdmFyIGNs
YXNzTmFtZXMgPSBbImNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eSJdOwpAQCAtNDU4LDYg
KzQ2NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICBpZiAoIXByb3BlcnR5
LmVuYWJsZWQpCiAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goImRpc2FibGVkIik7CiAKKyAg
ICAgICAgaWYocHJvcGVydHkuaGlnaGxpZ2h0ZWQpIHsKKyAgICAgICAgICAgIGNsYXNzTmFtZXMu
cHVzaCgiaGlnaGxpZ2h0ZWQiKTsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wZXJ0eS5oaWdobGln
aHRlZDsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NO
YW1lcy5qb2luKCIgIik7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQg
bWFya2VyIGFuZCBpdCdzIGluIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCBy
ZWNyZWF0aW5nIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCmluZGV4IDJhMzhjNzNlMDI5OTY3OGIyN2IwNzljNzgwOWQ3ZWE4MjI0ZTFjNWUuLjk4OGE5
NzVmZDU4MDg0MDQ5NTRmYTliNmU4YjMyYzE2MWRiZTBlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEzNyw2ICsxMzcsMzggQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwud2lkdGhE
aWRDaGFuZ2UoKTsKICAgICB9CiAKKyAgICBzd2l0Y2hWaWV3VG9TdHlsZUluUnVsZXNTdHlsZURl
dGFpbHNQYW5lbChwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBh
bmVsKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmhpZGRlbigpOworICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVtZW50Ll9zYXZlZFNjcm9sbFRvcCA9IHRoaXMu
Y29udGVudEVsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5l
bC5lbGVtZW50LnJlbW92ZSgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQ
YW5lbCA9IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWw7CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkUGFuZWwpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkUGFuZWwuc2hvd24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RTZWxl
Y3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlID0gdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5u
YXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNl
bGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52
YWx1ZTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKKworICAg
ICAgICB2YXIgcnNkcCA9IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWw7CisgICAgICAgIGlm
KHJzZHAuc2VjdGlvbnMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIHZhciBpbnRlcnZhbCA9
IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmKHJzZHAuc2VjdGlv
bnMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICByc2RwLnNjcm9sbFRvU2VjdGlv
bkFuZEhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MTApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnNkcC5zY3JvbGxUb1NlY3Rpb25B
bmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAv
LyBQcm90ZWN0ZWQKIAogICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKaW5kZXggNjk2MWUzOGViNzkxODgwYzdmY2ZiMjcw
MGRmMzNiZWYxMWNhMDA1MS4uYmNkYzYxNWE1ZWM0MmFiMTc5NDVkODY5NzQ0ZDZlYjA0MjM2OTg4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTM1
LDMgKzM1LDE1IEBACiB7CiAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKIH0KKworLmRldGFpbHMt
c2VjdGlvbiA+IC5jb250ZW50ID4gLmdyb3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZSAu
Z28tdG8tYXJyb3cgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHdpZHRoOiAxMnB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB2ZXJ0aWNhbC1hbGln
bjogdGV4dC1ib3R0b207Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91
cCA+IC5yb3cgLkNvZGVNaXJyb3ItY29kZSBwcmU6aG92ZXIgLmdvLXRvLWFycm93IHsKKyAgICBk
aXNwbGF5OiBpbml0aWFsOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMK
aW5kZXggY2ZlMzczYTI0NWFlOTZlN2M3NTE1ZDQ3Mzg5ZmE4M2VmZmFjYjk0Mi4uNmYxNzgxMjcw
NDIzZmU2Y2VhNWY1M2IyNjdiMzA4MWFhOGMzMzZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxl
RGV0YWlsc1BhbmVsLmpzCkBAIC0yNDEsNiArMjQxLDY0IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdl
YkluCiAgICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CiAgICAgfQog
CisgICAgc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpCisgICAg
eworICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gbnVsbDsKKworICAgICAgICBmb3IodmFyIGkg
PSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CisKKyAgICAgICAgICAgIGZvcih2YXIgaiA9IDA7
IGogPCBzZWN0aW9uLnN0eWxlLnByb3BlcnRpZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAg
ICAgICBpZihwcm9wZXJ0aWVzTWF0Y2goc2VjdGlvbi5zdHlsZS5wcm9wZXJ0aWVzW2pdKSkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBzZWN0aW9uLmVsZW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiLnByb3BlcnRpZXMgLmNzcy1zdHlsZS10ZXh0LWVkaXRvciAuQ29kZU1pcnJv
ci1zY3JvbGwgLkNvZGVNaXJyb3ItY29kZSBwcmUiKTsKKworICAgICAgICAgICAgICAgICAgICBm
b3IodmFyIGsgPSAwOyBrIDwgZWxlbWVudHMubGVuZ3RoOyArK2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmKHByb3BlcnR5TmFtZSA9PSBlbGVtZW50c1trXS5xdWVyeVNlbGVjdG9yKCIu
Y20tcHJvcGVydHkiKS50ZXh0Q29udGVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlY3Rpb24uZWxlbWVudC5zY3JvbGxJbnRvVmlldygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlY3Rpb24uc3R5bGUucHJvcGVydGllc1tqXS5oaWdobGlnaHRlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5yZWZyZXNoUHJvcGVydGllc1RleHRF
ZGl0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLm5lZWRzVG9VcGRh
dGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYocHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzTWF0Y2goY3NzUHJv
cGVydHkpIHsKKyAgICAgICAgICAgIGlmKGNzc1Byb3BlcnR5LmVuYWJsZWQgJiYgIWNzc1Byb3Bl
cnR5Lm92ZXJyaWRkZW4pIHsKKyAgICAgICAgICAgICAgICBpZihjc3NQcm9wZXJ0eS5jYW5vbmlj
YWxOYW1lID09IHByb3BlcnR5LmNhbm9uaWNhbE5hbWUgfHwgaGFzTWF0Y2hpbmdMb25naGFuZFBy
b3BlcnR5KGNzc1Byb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUg
PSBjc3NQcm9wZXJ0eS5jYW5vbmljYWxOYW1lOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYXNNYXRjaGluZ0xvbmdo
YW5kUHJvcGVydHkoY3NzUHJvcGVydHkpIHsKKyAgICAgICAgICAgIHZhciBjc3NQcm9wZXJ0aWVz
ID0gY3NzUHJvcGVydHkucmVsYXRlZExvbmdoYW5kUHJvcGVydGllczsKKworICAgICAgICAgICAg
aWYoY3NzUHJvcGVydGllcy5sZW5ndGggPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgY3NzUHJvcGVydGllcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmKHByb3BlcnRpZXNNYXRjaChjc3NQcm9wZXJ0
aWVzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBnZXQgc2VjdGlvbnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
ZWN0aW9uczsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHNob3duKCkKQEAgLTI1
Myw2ICszMTEsMTAgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CiAgICAgICAgICAgICBzZWN0aW9uLnN0eWxlLl9f
cnVsZXNTZWN0aW9uID0gc2VjdGlvbjsKICAgICAgICAgICAgIHNlY3Rpb24udXBkYXRlTGF5b3V0
KCk7CisgICAgICAgICAgICBpZihzZWN0aW9uLm5lZWRzVG9VcGRhdGUpIHsKKyAgICAgICAgICAg
ICAgICBzZWN0aW9uLnJlZnJlc2hQcm9wZXJ0aWVzVGV4dEVkaXRvcigpOworICAgICAgICAgICAg
ICAgIGRlbGV0ZSBzZWN0aW9uLm5lZWRzVG9VcGRhdGU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253718</attachid>
            <date>2015-05-26 12:49:56 -0700</date>
            <delta_ts>2015-05-26 19:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150526124947.patch</filename>
            <type>text/plain</type>
            <size>10899</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRmZDE5ZWVlYmRiMmEwOGFmMjBiYzBmMDZiZDk4
ZDQyZTRlNjAyMzguLjBjMjEzNzM2Y2RmOWM4MzE4YzlmYmVjYmJlNmQ0NGM3MzhkY2I3ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA1LTI2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUucmVmcmVzaFByb3BlcnRp
ZXNUZXh0RWRpdG9yKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3Ig
PiAuQ29kZU1pcnJvciAuaGlnaGxpZ2h0ZWQpOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVz
IHRleHQtZWRpdG9yLWhpZ2hsaWdodC1mYWRlb3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVGV4
dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuc3dpdGNoVmlld1RvU3R5bGVJ
blJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3M6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9u
ID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlIC5nby10by1h
cnJvdyk6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAu
cm93IC5Db2RlTWlycm9yLWNvZGUgcHJlOmhvdmVyIC5nby10by1hcnJvdyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNjcm9sbFRvU2Vj
dGlvbkFuZEhpZ2hsaWdodFByb3BlcnR5LnByb3BlcnRpZXNNYXRjaCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9u
QW5kSGlnaGxpZ2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxU
b1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuZ2V0IHNlY3Rpb25zKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bik6CisKIDIw
MTUtMDUtMjYgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjExMDQ1NTE+IFVwZGF0ZSBidWlsZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRleCA1OGM2YWNkODE4MGNhOTFmNGQz
MTY0YTQyNjg5ZjljYWJjZjkwMTllLi41Yjc4MzA2NjMxYjJhZTYwZTIzZWE0NzUxN2VmOWVlMGZh
MjkyNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwpA
QCAtMjYwLDYgKzI2MCwxMCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIHJlZnJlc2hQcm9wZXJ0
aWVzVGV4dEVkaXRvcjogZnVuY3Rpb24oKSB7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0
RWRpdG9yLnJlZnJlc2goKTsKKyAgICB9LAorCiAgICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcwpp
bmRleCBkNDA0MDVlODdjZmE4OWU3MDFmMjk0Y2VhMWFkNjBjYWVlZWU0MDAxLi5kMTY5MjQ2NzI5
NjM3ZjFiMjNkM2ZlMjFjMzFhZTc2NzAwZDU4MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCkBAIC0xNTIsMyArMTUyLDExIEBACiAgICAg
dGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0OwogICAgIGN1cnNvcjogaW5oZXJpdDsKIH0KKworLmNz
cy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5oaWdobGlnaHRlZCB7CisgICAgLXdl
YmtpdC1hbmltYXRpb246ICJ0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCIgMnM7Cit9CisK
K0Atd2Via2l0LWtleWZyYW1lcyB0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCB7CisgICAg
ZnJvbSB7IGJhY2tncm91bmQtY29sb3I6IGhpZ2hsaWdodDsgfQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCBiOWIxODNlYTIxMjIyN2Uw
NWQxNDc3MWNmNWFmOTQyZWZjMzM4ZGIwLi40YjAwYTQ1MDllZTE5OTBmYjFjMWIxNzRhZWY0MzBl
NTZlMmMyMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcwpAQCAtNDM3LDYgKzQzNywxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAg
ICAgICAgICAgICB2YXIgY2hlY2tib3hNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1
ZUJvb2ttYXJrKGZyb20sIGNoZWNrYm94RWxlbWVudCk7CiAgICAgICAgICAgICBjaGVja2JveE1h
cmtlci5fX3Byb3BlcnR5Q2hlY2tib3ggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYodGhpcy5f
ZGVsZWdhdGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bCkgeworICAgICAgICAgICAgaWYoIXByb3BlcnR5LmltcGxpY2l0KSB7CisgICAgICAgICAgICAg
ICAgdmFyIGFycm93RWxlbWVudCA9IFdlYkluc3BlY3Rvci5jcmVhdGVHb1RvQXJyb3dCdXR0b24o
KTsKKyAgICAgICAgICAgICAgICBhcnJvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5zd2l0Y2hWaWV3VG9TdHlsZUluUnVsZXNTdHlsZURldGFpbHNQ
YW5lbChwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB2
YXIgYXJyb3dNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2ttYXJrKHRvLCBh
cnJvd0VsZW1lbnQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdmFyIGNs
YXNzTmFtZXMgPSBbImNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eSJdOwpAQCAtNDU4LDYg
KzQ2NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICBpZiAoIXByb3BlcnR5
LmVuYWJsZWQpCiAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goImRpc2FibGVkIik7CiAKKyAg
ICAgICAgaWYocHJvcGVydHkuaGlnaGxpZ2h0ZWQpIHsKKyAgICAgICAgICAgIGNsYXNzTmFtZXMu
cHVzaCgiaGlnaGxpZ2h0ZWQiKTsKKyAgICAgICAgICAgIGRlbGV0ZSBwcm9wZXJ0eS5oaWdobGln
aHRlZDsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBjbGFzc05hbWVzU3RyaW5nID0gY2xhc3NO
YW1lcy5qb2luKCIgIik7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHRleHQg
bWFya2VyIGFuZCBpdCdzIGluIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHRyeSB0byBhdm9pZCBy
ZWNyZWF0aW5nIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCmluZGV4IDJhMzhjNzNlMDI5OTY3OGIyN2IwNzljNzgwOWQ3ZWE4MjI0ZTFjNWUuLjk4OGE5
NzVmZDU4MDg0MDQ5NTRmYTliNmU4YjMyYzE2MWRiZTBlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
U1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEzNyw2ICsxMzcsMzggQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwud2lkdGhE
aWRDaGFuZ2UoKTsKICAgICB9CiAKKyAgICBzd2l0Y2hWaWV3VG9TdHlsZUluUnVsZXNTdHlsZURl
dGFpbHNQYW5lbChwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBh
bmVsKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmhpZGRlbigpOworICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVtZW50Ll9zYXZlZFNjcm9sbFRvcCA9IHRoaXMu
Y29udGVudEVsZW1lbnQuc2Nyb2xsVG9wOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5l
bC5lbGVtZW50LnJlbW92ZSgpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRQ
YW5lbCA9IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWw7CisKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkUGFuZWwpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc2VsZWN0ZWRQYW5lbC5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkUGFuZWwuc2hvd24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2xhc3RTZWxl
Y3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlID0gdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5u
YXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNl
bGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52
YWx1ZTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKKworICAg
ICAgICB2YXIgcnNkcCA9IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWw7CisgICAgICAgIGlm
KHJzZHAuc2VjdGlvbnMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIHZhciBpbnRlcnZhbCA9
IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmKHJzZHAuc2VjdGlv
bnMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICByc2RwLnNjcm9sbFRvU2VjdGlv
bkFuZEhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwg
MTApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnNkcC5zY3JvbGxUb1NlY3Rpb25B
bmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAv
LyBQcm90ZWN0ZWQKIAogICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKaW5kZXggNjk2MWUzOGViNzkxODgwYzdmY2ZiMjcw
MGRmMzNiZWYxMWNhMDA1MS4uYmNkYzYxNWE1ZWM0MmFiMTc5NDVkODY5NzQ0ZDZlYjA0MjM2OTg4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTM1
LDMgKzM1LDE1IEBACiB7CiAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKIH0KKworLmRldGFpbHMt
c2VjdGlvbiA+IC5jb250ZW50ID4gLmdyb3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZSAu
Z28tdG8tYXJyb3cgeworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHdpZHRoOiAxMnB4OworICAgIGhlaWdodDogMTBweDsKKyAgICB2ZXJ0aWNhbC1hbGln
bjogdGV4dC1ib3R0b207Cit9CisKKy5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91
cCA+IC5yb3cgLkNvZGVNaXJyb3ItY29kZSBwcmU6aG92ZXIgLmdvLXRvLWFycm93IHsKKyAgICBk
aXNwbGF5OiBpbml0aWFsOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMK
aW5kZXggY2ZlMzczYTI0NWFlOTZlN2M3NTE1ZDQ3Mzg5ZmE4M2VmZmFjYjk0Mi4uNmYxNzgxMjcw
NDIzZmU2Y2VhNWY1M2IyNjdiMzA4MWFhOGMzMzZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxl
RGV0YWlsc1BhbmVsLmpzCkBAIC0yNDEsNiArMjQxLDY0IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdl
YkluCiAgICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CiAgICAgfQog
CisgICAgc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpCisgICAg
eworICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gbnVsbDsKKworICAgICAgICBmb3IodmFyIGkg
PSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CisKKyAgICAgICAgICAgIGZvcih2YXIgaiA9IDA7
IGogPCBzZWN0aW9uLnN0eWxlLnByb3BlcnRpZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAg
ICAgICBpZihwcm9wZXJ0aWVzTWF0Y2goc2VjdGlvbi5zdHlsZS5wcm9wZXJ0aWVzW2pdKSkgewor
ICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSBzZWN0aW9uLmVsZW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiLnByb3BlcnRpZXMgLmNzcy1zdHlsZS10ZXh0LWVkaXRvciAuQ29kZU1pcnJv
ci1zY3JvbGwgLkNvZGVNaXJyb3ItY29kZSBwcmUiKTsKKworICAgICAgICAgICAgICAgICAgICBm
b3IodmFyIGsgPSAwOyBrIDwgZWxlbWVudHMubGVuZ3RoOyArK2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmKHByb3BlcnR5TmFtZSA9PSBlbGVtZW50c1trXS5xdWVyeVNlbGVjdG9yKCIu
Y20tcHJvcGVydHkiKS50ZXh0Q29udGVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlY3Rpb24uZWxlbWVudC5zY3JvbGxJbnRvVmlldygpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlY3Rpb24uc3R5bGUucHJvcGVydGllc1tqXS5oaWdobGlnaHRlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5yZWZyZXNoUHJvcGVydGllc1RleHRF
ZGl0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLm5lZWRzVG9VcGRh
dGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYocHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzTWF0Y2goY3NzUHJv
cGVydHkpIHsKKyAgICAgICAgICAgIGlmKGNzc1Byb3BlcnR5LmVuYWJsZWQgJiYgIWNzc1Byb3Bl
cnR5Lm92ZXJyaWRkZW4pIHsKKyAgICAgICAgICAgICAgICBpZihjc3NQcm9wZXJ0eS5jYW5vbmlj
YWxOYW1lID09IHByb3BlcnR5LmNhbm9uaWNhbE5hbWUgfHwgaGFzTWF0Y2hpbmdMb25naGFuZFBy
b3BlcnR5KGNzc1Byb3BlcnR5KSkgeworICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUg
PSBjc3NQcm9wZXJ0eS5jYW5vbmljYWxOYW1lOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYXNNYXRjaGluZ0xvbmdo
YW5kUHJvcGVydHkoY3NzUHJvcGVydHkpIHsKKyAgICAgICAgICAgIHZhciBjc3NQcm9wZXJ0aWVz
ID0gY3NzUHJvcGVydHkucmVsYXRlZExvbmdoYW5kUHJvcGVydGllczsKKworICAgICAgICAgICAg
aWYoY3NzUHJvcGVydGllcy5sZW5ndGggPT09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgY3NzUHJvcGVydGllcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmKHByb3BlcnRpZXNNYXRjaChjc3NQcm9wZXJ0
aWVzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBnZXQgc2VjdGlvbnMoKSB7CisgICAgICAgIHJldHVybiB0aGlzLl9z
ZWN0aW9uczsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHNob3duKCkKQEAgLTI1
Myw2ICszMTEsMTAgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07CiAgICAgICAgICAgICBzZWN0aW9uLnN0eWxlLl9f
cnVsZXNTZWN0aW9uID0gc2VjdGlvbjsKICAgICAgICAgICAgIHNlY3Rpb24udXBkYXRlTGF5b3V0
KCk7CisgICAgICAgICAgICBpZihzZWN0aW9uLm5lZWRzVG9VcGRhdGUpIHsKKyAgICAgICAgICAg
ICAgICBzZWN0aW9uLnJlZnJlc2hQcm9wZXJ0aWVzVGV4dEVkaXRvcigpOworICAgICAgICAgICAg
ICAgIGRlbGV0ZSBzZWN0aW9uLm5lZWRzVG9VcGRhdGU7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253769</attachid>
            <date>2015-05-26 19:05:44 -0700</date>
            <delta_ts>2015-05-26 19:06:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150526190533.patch</filename>
            <type>text/plain</type>
            <size>15134</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM5MjI2MWRlYTdhMDc2Y2RmNTEyMzYzOGJhZTYz
NzJjMzQ2ZWQxY2IuLjI5ZGIxYjdlMWU4NDU2ZTU5MWQ1YWJkZjI5ODQyZTg3ZDJkMjc1MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE1LTA1LTI2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnBy
b3RvdHlwZS5yZWZyZXNoUHJvcGVydGllc1RleHRFZGl0b3IpOiBEZWxldGVkLgorICAgICAgICBB
ZGRlZCBmdW5jdGlvbiB0byBzY3JvbGwgdG8gYSBzZWN0aW9uIHRoYXQgY29udGFpbnMgYSBnaXZl
biBDU1MgcHJvcGVydHkuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5jc3M6CisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9y
ID4gLkNvZGVNaXJyb3IgLmhpZ2hsaWdodGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEAtd2Via2l0
LWtleWZyYW1lcyB0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCk6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5w
cm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkucHJvcGVydGllc01hdGNoKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxp
Z2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0
UHJvcGVydHkpOgorICAgICAgICBBZGRlZCBhIGZ1bmN0aW9uICh3aXRoIHR3byBoZWxwZXIgZnVu
Y3Rpb25zKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBDU1MgcHJvcGVydHkgaXMgaW4gdGhlIENT
UyBzdHlsZSBzZWN0aW9uLCBhbmQgaWYgc28KKyAgICAgICAgc2VsZWN0IHRoYXQgQ1NTIHByb3Bl
cnR5LCBmb2N1cyBvbiB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoYXQgQ1NTIHByb3BlcnR5LCBh
bmQgcmV0dXJuIHRydWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRl
ZCk6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFkZHMgZ290byBhcnJvd3MgdG8gYWxsIENT
UyBwcm9wZXJ0aWVzIGlmIHRoZSBkZWxlZ2F0ZSBmb3IgdGhlIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yIGNvbnRhaW5zIGEKKyAgICAgICAgdmFyaWFibGUgKGNzc1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yU2hvdWxkQWRkUHJvcGVydHlHb1RvQXJyb3dzKSB0aGF0IGlzIHNldCB0byB0
cnVlLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5zd2l0Y2hWaWV3VG9Qcm9wZXJ0eUluUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6
CisgICAgICAgIEFkZGVkIGZ1bmN0aW9uIHRvIHN3aXRjaCB0aGUgY3VycmVudCBwYW5lbCB0byB0
aGUgcnVsZXMgcGFuZWwgYW5kIGhpZ2hsaWdodCBhIGdpdmVuIHByb3BlcnR5IGluIHRoZSBydWxl
cyBwYW5lbC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnN3aXRjaFZpZXdUb1N0eWxlSW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKTog
RGVsZXRlZC4KKyAgICAgICAgTWFkZSBmdW5jdGlvbiBuYW1lIG1vcmUgb2J2aW91cyBhcyB0byBp
dHMgZnVuY3Rpb24uCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwpOgorICAgICAgICBBZGRlZCBhIGRlbGVnYXRlIHZhcmlhYmxlIHRvIHRoZSBjb25z
dHJ1Y3RvciB0byBhbGxvdyBhY2Nlc3MgdG8gdGhlIGNsYXNzIHdoaWNoIGluc3RhbnRpYXRlZCB0
aGlzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLnN3aXRjaFRvUHJvcGVydHlJblJ1bGVzUGFuZWwpOgorICAgICAgICBDYWxscyBhIGZ1
bmN0aW9uIG9mIHRoZSBkZWxlZ2F0ZSBpZiBpdCBleGlzdHMgKHRoZSBkZWxlZ2F0ZSBzaG91bGQg
YmUgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGluIHRoaXMgY2FzZSkKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0
aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBBZGRlZCBmdW5jdGlvbiB0byBsb29w
IHRocm91Z2ggYWxsIHRoZSBzZWN0aW9ucyB1bnRpbCBvbmUgY29udGFpbmluZyBhIGdpdmVuIHBy
b3BlcnR5IGlzIGZvdW5kIGFuZCBzY3JvbGwgdG8gaXQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxp
Z2h0UHJvcGVydHkucHJvcGVydGllc01hdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxUb1NlY3Rpb25BbmRI
aWdobGlnaHRQcm9wZXJ0eS5oYXNNYXRjaGluZ0xvbmdoYW5kUHJvcGVydHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNo
b3duKTogRGVsZXRlZC4KKyAgICAgICAgRnVuY3Rpb25zIG1vdmVkIHRvIENTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLgorCisyMDE1LTA1LTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBKdW1wIGZyb20gYSBjb21wdXRlZCBz
dHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uU2VjdGlvbi5wcm90b3R5cGUucmVmcmVzaFByb3BlcnRpZXNUZXh0RWRpdG9yKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNz
czoKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuaGlnaGxp
Z2h0ZWQpOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVzIHRleHQtZWRpdG9yLWhpZ2hsaWdo
dC1mYWRlb3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZO
ZWVkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5wcm90b3R5cGUuc3dpdGNoVmlld1RvU3R5bGVJblJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5jc3M6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAg
PiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlIC5nby10by1hcnJvdyk6CisgICAgICAgICguZGV0
YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUg
cHJlOmhvdmVyIC5nby10by1hcnJvdyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hsaWdodFByb3Bl
cnR5LnByb3BlcnRpZXNNYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHku
aGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5w
cm90b3R5cGUuZ2V0IHNlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bik6CisKIDIwMTUtMDUtMjYgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGdW5j
dGlvbiBwYXJhbWV0ZXIgc3RyaW5nIHBhcnNpbmcgaW1wcm9wZXJseSBoYW5kbGVzIGVtcHR5IHBh
cmFtZXRlciBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpz
CmluZGV4IDU4YzZhY2Q4MTgwY2E5MWY0ZDMxNjRhNDI2ODlmOWNhYmNmOTAxOWUuLmI5MjMyNDY5
N2I2M2IwOTYwYTU2OWQ3OTg5NTQ5MGI5YTA4M2VmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC0yNjAsNiArMjYwLDE1IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAg
ICB9LAogCisgICAgaGlnaGxpZ2h0UHJvcGVydHk6IGZ1bmN0aW9uKHByb3BlcnR5KQorICAgIHsK
KyAgICAgICAgaWYodGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuaGlnaGxpZ2h0UHJvcGVydHko
cHJvcGVydHkpKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IGI5
YjE4M2VhMjEyMjI3ZTA1ZDE0NzcxY2Y1YWY5NDJlZmMzMzhkYjAuLjRkNDg3N2NlZmUxN2JmNGY3
NmNlMmFjYWU0MTA5NjAyY2I3ZjA2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0xODEsNiArMTgxLDQ3IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwogICAgIH0KIAor
ICAgIGhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgZm9yKHZhciBj
c3NQcm9wZXJ0eSBvZiB0aGlzLnN0eWxlLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0aWVzTWF0Y2goY3NzUHJvcGVydHkpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVj
dGlvbiA9IGNzc1Byb3BlcnR5Ll9fcHJvcGVydHlUZXh0TWFya2VyLmZpbmQoKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFNlbGVjdGlvbihzZWxlY3Rpb24uZnJvbSwgc2Vs
ZWN0aW9uLnRvKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAvLyBIZWxwZXIgRnVuY3Rpb25zCisKKyAgICAgICAgZnVu
Y3Rpb24gcHJvcGVydGllc01hdGNoKGNzc1Byb3BlcnR5KQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoY3NzUHJvcGVydHkuZW5hYmxlZCAmJiAhY3NzUHJvcGVydHkub3ZlcnJpZGRlbikgewor
ICAgICAgICAgICAgICAgIGlmIChjc3NQcm9wZXJ0eS5jYW5vbmljYWxOYW1lID09IHByb3BlcnR5
LmNhbm9uaWNhbE5hbWUgfHwgaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KGNzc1Byb3BlcnR5
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYXNN
YXRjaGluZ0xvbmdoYW5kUHJvcGVydHkoY3NzUHJvcGVydHkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBjc3NQcm9wZXJ0aWVzID0gY3NzUHJvcGVydHkucmVsYXRlZExvbmdoYW5kUHJvcGVy
dGllczsKKworICAgICAgICAgICAgaWYgKCFjc3NQcm9wZXJ0aWVzLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGZvcih2YXIgcHJvcGVydHkgb2Yg
Y3NzUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmKHByb3BlcnRpZXNNYXRjaChwcm9w
ZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBQ
cm90ZWN0ZWQKIAogICAgIGRpZERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCkBAIC00MzcsNiArNDc4
LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICAgICAgICAgIHZhciBjaGVja2Jv
eE1hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsoZnJvbSwgY2hlY2ti
b3hFbGVtZW50KTsKICAgICAgICAgICAgIGNoZWNrYm94TWFya2VyLl9fcHJvcGVydHlDaGVja2Jv
eCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MKKyAgICAgICAgICAg
ICAgICAmJiAhcHJvcGVydHkuaW1wbGljaXQKKyAgICAgICAgICAgICAgICAmJiB0eXBlb2YgdGhp
cy5fZGVsZWdhdGUuc3dpdGNoVG9Qcm9wZXJ0eUluUnVsZXNQYW5lbCA9PT0gImZ1bmN0aW9uIikg
eworCisgICAgICAgICAgICB2YXIgYXJyb3dFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmNyZWF0ZUdv
VG9BcnJvd0J1dHRvbigpOworCisgICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSB0aGlzLl9kZWxl
Z2F0ZTsKKyAgICAgICAgICAgIGFycm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlbGVnYXRlLnN3aXRjaFRvUHJvcGVydHlJ
blJ1bGVzUGFuZWwocHJvcGVydHkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHZh
ciBhcnJvd01hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsodG8sIGFy
cm93RWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IFsiY3Nz
LXN0eWxlLWRlY2xhcmF0aW9uLXByb3BlcnR5Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggMmEzOGM3M2UwMjk5Njc4YjI3YjA3OWM3ODA5ZDdl
YTgyMjRlMWM1ZS4uYjJhMzEzMDU3OGQ4YWFmZTZjOGE4YWFjMGE3N2Q2ZTkxNjZkNzk4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNzAsNyAr
NzAsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3Mg
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgdGhpcy5jb250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lcik7CiAg
ICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3
IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwogICAgICAgICB0aGlz
Ll9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHls
ZURldGFpbHNQYW5lbDsKIApAQCAtMTM3LDYgKzEzNyw0MCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dAogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC53aWR0aERpZENoYW5nZSgpOwog
ICAgIH0KIAorICAgIHN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGFuZWwpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuaGlkZGVuKCk7CisgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZFBhbmVsLmVsZW1lbnQuX3NhdmVkU2Nyb2xsVG9wID0gdGhpcy5jb250ZW50RWxl
bWVudC5zY3JvbGxUb3A7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmVsZW1lbnQu
cmVtb3ZlKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsID0gdGhp
cy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbDsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRQ
YW5lbCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zZWxlY3RlZFBhbmVsLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5l
bC5zaG93bigpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlv
blNldHRpbmcudmFsdWUgPSB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25J
dGVtLmlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOworICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgIGlmICgh
dGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5zZWN0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIC8vIFRoaXMgaW50ZXJ2YWwgaXMgbmVjZXNzYXJ5IGZvciB0aGUgc2l0dWF0aW9uIHdoZW4g
dGhlIHJ1bGVzIHBhbmVsIGhhcyB5ZXQgdG8gYmUgb3BlbmVkIGFuZCB0aGVyZWZvcmUgaGFzIG5v
IGNvbnRlbnRzLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBzaXR1YXRpb24sIHRoZSBjb2RlIHdp
bGwgY29udGludWUgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZSBydWxlcyBwYW5lbCBoYXMgYmVlbiBw
b3B1bGF0ZWQgYmVmb3JlIHNjcm9sbGluZyB0byBhbmQKKyAgICAgICAgICAgIC8vIGhpZ2hsaWdo
dGluZyB0aGUgcmVsZXZhbnQgcHJvcGVydHkgaW4gdGhlIHJ1bGVzIHBhbmVsLgorICAgICAgICAg
ICAgdmFyIHJ1bGVzUGFuZWwgPSB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsOworICAgICAg
ICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHJ1bGVzUGFuZWwuc2VjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJ1bGVzUGFuZWwuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVy
dHkpOworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLnNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hs
aWdodFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAg
IGFkZEV2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5jc3MKaW5kZXggNjk2MWUzOGViNzkxODgwYzdmY2ZiMjcwMGRmMzNiZWYxMWNhMDA1MS4u
YmNkYzYxNWE1ZWM0MmFiMTc5NDVkODY5NzQ0ZDZlYjA0MjM2OTg4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFp
bHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTM1LDMgKzM1LDE1IEBACiB7CiAg
ICAgdmVydGljYWwtYWxpZ246IHRvcDsKIH0KKworLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50
ID4gLmdyb3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZSAuZ28tdG8tYXJyb3cgeworICAg
IGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMnB4
OworICAgIGhlaWdodDogMTBweDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207Cit9
CisKKy5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5yb3cgLkNvZGVNaXJy
b3ItY29kZSBwcmU6aG92ZXIgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBpbml0aWFsOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggMDg1ODVj
YzdjZjVmYjZkYmMxOTNjYmFlMDk2MWI2ZDdhOTU2ODk4MS4uYWI1ZjAwN2Y3MGY1NmQzZjAxM2Q5
ZjBiYmIwZmVhODllNTgxZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLmpzCkBAIC0yNSwxMCArMjUsMTIgQEAKIAogV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAg
IGNvbnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9y
LkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJjb21wdXRlZCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29tcHV0ZWQiKSk7CiAKKyAgICAgICAgdGhpcy5fZGVsZWdh
dGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93
QWxsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hv
dy1hbGwiLCBmYWxzZSk7CiAKICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGVTaG93QWxsTGFiZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwpAQCAtODgsNiArOTAsOCBAQCBXZWJJ
bnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwgZXh0ZW5kcwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMu
X3Jlc2V0Rmxvd0RldGFpbHMoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY3NzU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MgPSB0cnVlOwogICAg
IH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTM5LDYgKzE0MywxMiBAQCBXZWJJbnNwZWN0b3IuQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwg
ZXh0ZW5kcwogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1NlY3Rpb24uZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKICAgICB9CiAKKyAgICBzd2l0Y2hUb1Byb3Bl
cnR5SW5SdWxlc1BhbmVsKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYodHlwZW9mIHRoaXMu
X2RlbGVnYXRlLnN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID09
PSAiZnVuY3Rpb24iICkKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnN3aXRjaFZpZXdUb1By
b3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKHByb3BlcnR5KTsKKyAgICB9CisKICAgICBy
ZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxl
ID0gdGhpcy5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBjZmUzNzNhMjQ1YWU5NmU3Yzc1MTVkNDczODlmYTgzZWZmYWNi
OTQyLi4zMTgzNDliMjBjMTdkMDI2OTZmYmEwMGU2MTUyY2U2OGMyNmNiMmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTI0MSw2ICsyNDEsMTggQEAgV2ViSW5z
cGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1Bh
bmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHByZXZpb3VzRm9jdXNlZFNlY3Rpb24uZm9j
dXMoKTsKICAgICB9CiAKKyAgICBzY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShw
cm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIHNlY3Rpb24gb2YgdGhpcy5fc2VjdGlv
bnMpIHsKKyAgICAgICAgICAgIGlmKHNlY3Rpb24uaGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdldCBz
ZWN0aW9ucygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zOworICAgIH0KKwogICAg
IC8vIFByb3RlY3RlZAogCiAgICAgc2hvd24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253770</attachid>
            <date>2015-05-26 19:06:59 -0700</date>
            <delta_ts>2015-05-27 18:55:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150526190648.patch</filename>
            <type>text/plain</type>
            <size>15134</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM5MjI2MWRlYTdhMDc2Y2RmNTEyMzYzOGJhZTYz
NzJjMzQ2ZWQxY2IuLjI5ZGIxYjdlMWU4NDU2ZTU5MWQ1YWJkZjI5ODQyZTg3ZDJkMjc1MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE1LTA1LTI2ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnBy
b3RvdHlwZS5yZWZyZXNoUHJvcGVydGllc1RleHRFZGl0b3IpOiBEZWxldGVkLgorICAgICAgICBB
ZGRlZCBmdW5jdGlvbiB0byBzY3JvbGwgdG8gYSBzZWN0aW9uIHRoYXQgY29udGFpbnMgYSBnaXZl
biBDU1MgcHJvcGVydHkuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5jc3M6CisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9y
ID4gLkNvZGVNaXJyb3IgLmhpZ2hsaWdodGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEAtd2Via2l0
LWtleWZyYW1lcyB0ZXh0LWVkaXRvci1oaWdobGlnaHQtZmFkZW91dCk6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5w
cm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkucHJvcGVydGllc01hdGNoKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxp
Z2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0
UHJvcGVydHkpOgorICAgICAgICBBZGRlZCBhIGZ1bmN0aW9uICh3aXRoIHR3byBoZWxwZXIgZnVu
Y3Rpb25zKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBDU1MgcHJvcGVydHkgaXMgaW4gdGhlIENT
UyBzdHlsZSBzZWN0aW9uLCBhbmQgaWYgc28KKyAgICAgICAgc2VsZWN0IHRoYXQgQ1NTIHByb3Bl
cnR5LCBmb2N1cyBvbiB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoYXQgQ1NTIHByb3BlcnR5LCBh
bmQgcmV0dXJuIHRydWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRl
ZCk6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFkZHMgZ290byBhcnJvd3MgdG8gYWxsIENT
UyBwcm9wZXJ0aWVzIGlmIHRoZSBkZWxlZ2F0ZSBmb3IgdGhlIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yIGNvbnRhaW5zIGEKKyAgICAgICAgdmFyaWFibGUgKGNzc1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yU2hvdWxkQWRkUHJvcGVydHlHb1RvQXJyb3dzKSB0aGF0IGlzIHNldCB0byB0
cnVlLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZS5zd2l0Y2hWaWV3VG9Qcm9wZXJ0eUluUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6
CisgICAgICAgIEFkZGVkIGZ1bmN0aW9uIHRvIHN3aXRjaCB0aGUgY3VycmVudCBwYW5lbCB0byB0
aGUgcnVsZXMgcGFuZWwgYW5kIGhpZ2hsaWdodCBhIGdpdmVuIHByb3BlcnR5IGluIHRoZSBydWxl
cyBwYW5lbC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnN3aXRjaFZpZXdUb1N0eWxlSW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKTog
RGVsZXRlZC4KKyAgICAgICAgTWFkZSBmdW5jdGlvbiBuYW1lIG1vcmUgb2J2aW91cyBhcyB0byBp
dHMgZnVuY3Rpb24uCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwpOgorICAgICAgICBBZGRlZCBhIGRlbGVnYXRlIHZhcmlhYmxlIHRvIHRoZSBjb25z
dHJ1Y3RvciB0byBhbGxvdyBhY2Nlc3MgdG8gdGhlIGNsYXNzIHdoaWNoIGluc3RhbnRpYXRlZCB0
aGlzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJv
dG90eXBlLnN3aXRjaFRvUHJvcGVydHlJblJ1bGVzUGFuZWwpOgorICAgICAgICBDYWxscyBhIGZ1
bmN0aW9uIG9mIHRoZSBkZWxlZ2F0ZSBpZiBpdCBleGlzdHMgKHRoZSBkZWxlZ2F0ZSBzaG91bGQg
YmUgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGluIHRoaXMgY2FzZSkKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0
aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBBZGRlZCBmdW5jdGlvbiB0byBsb29w
IHRocm91Z2ggYWxsIHRoZSBzZWN0aW9ucyB1bnRpbCBvbmUgY29udGFpbmluZyBhIGdpdmVuIHBy
b3BlcnR5IGlzIGZvdW5kIGFuZCBzY3JvbGwgdG8gaXQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxp
Z2h0UHJvcGVydHkucHJvcGVydGllc01hdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxUb1NlY3Rpb25BbmRI
aWdobGlnaHRQcm9wZXJ0eS5oYXNNYXRjaGluZ0xvbmdoYW5kUHJvcGVydHkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNo
b3duKTogRGVsZXRlZC4KKyAgICAgICAgRnVuY3Rpb25zIG1vdmVkIHRvIENTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLgorCisyMDE1LTA1LTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBKdW1wIGZyb20gYSBjb21wdXRlZCBz
dHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uU2VjdGlvbi5wcm90b3R5cGUucmVmcmVzaFByb3BlcnRpZXNUZXh0RWRpdG9yKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNz
czoKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuaGlnaGxp
Z2h0ZWQpOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVzIHRleHQtZWRpdG9yLWhpZ2hsaWdo
dC1mYWRlb3V0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZO
ZWVkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5wcm90b3R5cGUuc3dpdGNoVmlld1RvU3R5bGVJblJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5jc3M6CisgICAgICAgICguZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAg
PiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlIC5nby10by1hcnJvdyk6CisgICAgICAgICguZGV0
YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUg
cHJlOmhvdmVyIC5nby10by1hcnJvdyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hsaWdodFByb3Bl
cnR5LnByb3BlcnRpZXNNYXRjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHku
aGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5w
cm90b3R5cGUuZ2V0IHNlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bik6CisKIDIwMTUtMDUtMjYgIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBGdW5j
dGlvbiBwYXJhbWV0ZXIgc3RyaW5nIHBhcnNpbmcgaW1wcm9wZXJseSBoYW5kbGVzIGVtcHR5IHBh
cmFtZXRlciBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpz
CmluZGV4IDU4YzZhY2Q4MTgwY2E5MWY0ZDMxNjRhNDI2ODlmOWNhYmNmOTAxOWUuLmI5MjMyNDY5
N2I2M2IwOTYwYTU2OWQ3OTg5NTQ5MGI5YTA4M2VmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC0yNjAsNiArMjYwLDE1IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAg
ICB9LAogCisgICAgaGlnaGxpZ2h0UHJvcGVydHk6IGZ1bmN0aW9uKHByb3BlcnR5KQorICAgIHsK
KyAgICAgICAgaWYodGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuaGlnaGxpZ2h0UHJvcGVydHko
cHJvcGVydHkpKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfSwKKwogICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IGI5
YjE4M2VhMjEyMjI3ZTA1ZDE0NzcxY2Y1YWY5NDJlZmMzMzhkYjAuLjRkNDg3N2NlZmUxN2JmNGY3
NmNlMmFjYWU0MTA5NjAyY2I3ZjA2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVj
bGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC0xODEsNiArMTgxLDQ3IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwogICAgIH0KIAor
ICAgIGhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgZm9yKHZhciBj
c3NQcm9wZXJ0eSBvZiB0aGlzLnN0eWxlLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlmIChw
cm9wZXJ0aWVzTWF0Y2goY3NzUHJvcGVydHkpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVj
dGlvbiA9IGNzc1Byb3BlcnR5Ll9fcHJvcGVydHlUZXh0TWFya2VyLmZpbmQoKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFNlbGVjdGlvbihzZWxlY3Rpb24uZnJvbSwgc2Vs
ZWN0aW9uLnRvKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CisKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAvLyBIZWxwZXIgRnVuY3Rpb25zCisKKyAgICAgICAgZnVu
Y3Rpb24gcHJvcGVydGllc01hdGNoKGNzc1Byb3BlcnR5KQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoY3NzUHJvcGVydHkuZW5hYmxlZCAmJiAhY3NzUHJvcGVydHkub3ZlcnJpZGRlbikgewor
ICAgICAgICAgICAgICAgIGlmIChjc3NQcm9wZXJ0eS5jYW5vbmljYWxOYW1lID09IHByb3BlcnR5
LmNhbm9uaWNhbE5hbWUgfHwgaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KGNzc1Byb3BlcnR5
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYXNN
YXRjaGluZ0xvbmdoYW5kUHJvcGVydHkoY3NzUHJvcGVydHkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBjc3NQcm9wZXJ0aWVzID0gY3NzUHJvcGVydHkucmVsYXRlZExvbmdoYW5kUHJvcGVy
dGllczsKKworICAgICAgICAgICAgaWYgKCFjc3NQcm9wZXJ0aWVzLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGZvcih2YXIgcHJvcGVydHkgb2Yg
Y3NzUHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmKHByb3BlcnRpZXNNYXRjaChwcm9w
ZXJ0eSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBQ
cm90ZWN0ZWQKIAogICAgIGRpZERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCkBAIC00MzcsNiArNDc4
LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICAgICAgICAgIHZhciBjaGVja2Jv
eE1hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsoZnJvbSwgY2hlY2ti
b3hFbGVtZW50KTsKICAgICAgICAgICAgIGNoZWNrYm94TWFya2VyLl9fcHJvcGVydHlDaGVja2Jv
eCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVsZWdhdGUuY3NzU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MKKyAgICAgICAgICAg
ICAgICAmJiAhcHJvcGVydHkuaW1wbGljaXQKKyAgICAgICAgICAgICAgICAmJiB0eXBlb2YgdGhp
cy5fZGVsZWdhdGUuc3dpdGNoVG9Qcm9wZXJ0eUluUnVsZXNQYW5lbCA9PT0gImZ1bmN0aW9uIikg
eworCisgICAgICAgICAgICB2YXIgYXJyb3dFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmNyZWF0ZUdv
VG9BcnJvd0J1dHRvbigpOworCisgICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSB0aGlzLl9kZWxl
Z2F0ZTsKKyAgICAgICAgICAgIGFycm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlbGVnYXRlLnN3aXRjaFRvUHJvcGVydHlJ
blJ1bGVzUGFuZWwocHJvcGVydHkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHZh
ciBhcnJvd01hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsodG8sIGFy
cm93RWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IFsiY3Nz
LXN0eWxlLWRlY2xhcmF0aW9uLXByb3BlcnR5Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggMmEzOGM3M2UwMjk5Njc4YjI3YjA3OWM3ODA5ZDdl
YTgyMjRlMWM1ZS4uYjJhMzEzMDU3OGQ4YWFmZTZjOGE4YWFjMGE3N2Q2ZTkxNjZkNzk4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNzAsNyAr
NzAsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3Mg
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgdGhpcy5jb250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lcik7CiAg
ICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3
IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwogICAgICAgICB0aGlz
Ll9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHls
ZURldGFpbHNQYW5lbDsKIApAQCAtMTM3LDYgKzEzNyw0MCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dAogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC53aWR0aERpZENoYW5nZSgpOwog
ICAgIH0KIAorICAgIHN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGFuZWwpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuaGlkZGVuKCk7CisgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZFBhbmVsLmVsZW1lbnQuX3NhdmVkU2Nyb2xsVG9wID0gdGhpcy5jb250ZW50RWxl
bWVudC5zY3JvbGxUb3A7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsLmVsZW1lbnQu
cmVtb3ZlKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsID0gdGhp
cy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbDsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRQ
YW5lbCkgeworICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zZWxlY3RlZFBhbmVsLmVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5l
bC5zaG93bigpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlv
blNldHRpbmcudmFsdWUgPSB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25J
dGVtLmlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOworICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOworCisgICAgICAgIGlmICgh
dGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5zZWN0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIC8vIFRoaXMgaW50ZXJ2YWwgaXMgbmVjZXNzYXJ5IGZvciB0aGUgc2l0dWF0aW9uIHdoZW4g
dGhlIHJ1bGVzIHBhbmVsIGhhcyB5ZXQgdG8gYmUgb3BlbmVkIGFuZCB0aGVyZWZvcmUgaGFzIG5v
IGNvbnRlbnRzLgorICAgICAgICAgICAgLy8gSW4gdGhpcyBzaXR1YXRpb24sIHRoZSBjb2RlIHdp
bGwgY29udGludWUgdG8gY2hlY2sgdG8gc2VlIGlmIHRoZSBydWxlcyBwYW5lbCBoYXMgYmVlbiBw
b3B1bGF0ZWQgYmVmb3JlIHNjcm9sbGluZyB0byBhbmQKKyAgICAgICAgICAgIC8vIGhpZ2hsaWdo
dGluZyB0aGUgcmVsZXZhbnQgcHJvcGVydHkgaW4gdGhlIHJ1bGVzIHBhbmVsLgorICAgICAgICAg
ICAgdmFyIHJ1bGVzUGFuZWwgPSB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsOworICAgICAg
ICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHJ1bGVzUGFuZWwuc2VjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJ1bGVzUGFuZWwuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVy
dHkpOworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLnNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hs
aWdodFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAg
IGFkZEV2ZW50TGlzdGVuZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5jc3MKaW5kZXggNjk2MWUzOGViNzkxODgwYzdmY2ZiMjcwMGRmMzNiZWYxMWNhMDA1MS4u
YmNkYzYxNWE1ZWM0MmFiMTc5NDVkODY5NzQ0ZDZlYjA0MjM2OTg4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFp
bHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTM1LDMgKzM1LDE1IEBACiB7CiAg
ICAgdmVydGljYWwtYWxpZ246IHRvcDsKIH0KKworLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50
ID4gLmdyb3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZSAuZ28tdG8tYXJyb3cgeworICAg
IGRpc3BsYXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMnB4
OworICAgIGhlaWdodDogMTBweDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207Cit9
CisKKy5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5yb3cgLkNvZGVNaXJy
b3ItY29kZSBwcmU6aG92ZXIgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBpbml0aWFsOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggMDg1ODVj
YzdjZjVmYjZkYmMxOTNjYmFlMDk2MWI2ZDdhOTU2ODk4MS4uYWI1ZjAwN2Y3MGY1NmQzZjAxM2Q5
ZjBiYmIwZmVhODllNTgxZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLmpzCkBAIC0yNSwxMCArMjUsMTIgQEAKIAogV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAg
IGNvbnN0cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9y
LkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJjb21wdXRlZCIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29tcHV0ZWQiKSk7CiAKKyAgICAgICAgdGhpcy5fZGVsZWdh
dGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93
QWxsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hv
dy1hbGwiLCBmYWxzZSk7CiAKICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGVTaG93QWxsTGFiZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwpAQCAtODgsNiArOTAsOCBAQCBXZWJJ
bnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwgZXh0ZW5kcwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMu
X3Jlc2V0Rmxvd0RldGFpbHMoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY3NzU3R5bGVEZWNs
YXJhdGlvblRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MgPSB0cnVlOwogICAg
IH0KIAogICAgIC8vIFB1YmxpYwpAQCAtMTM5LDYgKzE0MywxMiBAQCBXZWJJbnNwZWN0b3IuQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwg
ZXh0ZW5kcwogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1NlY3Rpb24uZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKICAgICB9CiAKKyAgICBzd2l0Y2hUb1Byb3Bl
cnR5SW5SdWxlc1BhbmVsKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYodHlwZW9mIHRoaXMu
X2RlbGVnYXRlLnN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID09
PSAiZnVuY3Rpb24iICkKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnN3aXRjaFZpZXdUb1By
b3BlcnR5SW5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsKHByb3BlcnR5KTsKKyAgICB9CisKICAgICBy
ZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxl
ID0gdGhpcy5ub2RlU3R5bGVzLmNvbXB1dGVkU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBjZmUzNzNhMjQ1YWU5NmU3Yzc1MTVkNDczODlmYTgzZWZmYWNi
OTQyLi4zMTgzNDliMjBjMTdkMDI2OTZmYmEwMGU2MTUyY2U2OGMyNmNiMmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTI0MSw2ICsyNDEsMTggQEAgV2ViSW5z
cGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1Bh
bmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHByZXZpb3VzRm9jdXNlZFNlY3Rpb24uZm9j
dXMoKTsKICAgICB9CiAKKyAgICBzY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShw
cm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGZvciAodmFyIHNlY3Rpb24gb2YgdGhpcy5fc2VjdGlv
bnMpIHsKKyAgICAgICAgICAgIGlmKHNlY3Rpb24uaGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdldCBz
ZWN0aW9ucygpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zOworICAgIH0KKwogICAg
IC8vIFByb3RlY3RlZAogCiAgICAgc2hvd24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253824</attachid>
            <date>2015-05-27 18:55:52 -0700</date>
            <delta_ts>2015-05-28 15:18:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150527185540.patch</filename>
            <type>text/plain</type>
            <size>17732</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQxZTEyY2U3MDE1ZjcwZWQxMjFhZjE1OTNhYjNm
YjkyMjkzMDg5N2MuLmIzMjdiYzg4NDE1YzI0NGNjNjBhMDU0ZTRjZmI0NzllNzkxZDRjZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA1LTI3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVy
dHkpOgorICAgICAgICBTZWFyY2hlcyB0aHJvdWdoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWN0
aW9uIGZvciBhIGdpdmVuIHByb3BlcnR5IGFuZCBzY3JvbGxzIHRvIGl0IGlmIGZvdW5kLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Iu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Iu
cHJvdG90eXBlLmhpZ2hsaWdodFByb3BlcnR5LnByb3BlcnRpZXNNYXRjaCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmhpZ2hs
aWdodFByb3BlcnR5Lmhhc01hdGNoaW5nTG9uZ2hhbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLmhpZ2hsaWdo
dFByb3BlcnR5KToKKyAgICAgICAgRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIENTUyBwcm9wZXJ0eSBp
cyBpbiB0aGUgQ1NTIHN0eWxlIHNlY3Rpb24gYW5kIGlmIHNvLCBzZWxlY3QgdGhhdCBDU1MgcHJv
cGVydHksIGZvY3VzIG9uIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhhdCBDU1MgcHJvcGVydHks
IGFuZCByZXR1cm4gdHJ1ZS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLnN3aXRjaFRvUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zd2l0
Y2hWaWV3VG9Qcm9wZXJ0eUluUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIFN3aXRj
aGVzIHRoZSBjdXJyZW50IHBhbmVsIHRvIHRoZSBydWxlcyBwYW5lbCBhbmQgaGlnaGxpZ2h0cyBh
IGdpdmVuIHByb3BlcnR5IGluIHRoZSBydWxlcyBwYW5lbC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9uYXZpZ2F0aW9uSXRlbVNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9zd2l0Y2hQYW5lbHMpOgorICAgICAgICBNb3ZlZCB0aGlzIGZ1bmN0aW9u
IG91dCBvZiBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCBmb3IgYmV0dGVyIHJldXNhYmxpdHkKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5
cGUuc3dpdGNoVG9Qcm9wZXJ0eUluUnVsZXNQYW5lbCk6CisgICAgICAgIEZ1bmN0aW9uIHRoYXQg
Y2FsbHMgdGhlIGRlbGVnYXRlICh3aGljaCBzaG91bGQgYmUgQ1NTU3R5bGVEZXRhaWxzU2lkZWJh
clBhbmVsKSBmdW5jdGlvbiBzd2l0Y2hWaWV3VG9Qcm9wZXJ0eUluUnVsZXNTdHlsZURldGFpbHNQ
YW5lbC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVm
cmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBTZWFy
Y2hlcyB0aHJvdWdoIGFsbCB0aGUgc2VjdGlvbnMgb2YgdGhlIFJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwgZm9yIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmdldCBzZWN0aW9ucyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2V0IHNhdmVkUHJvcGVy
dHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLnNob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZS5oaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlLm5vZGVTdHlsZXNSZWZyZXNoZWQpOgorICAgICAgICBBZGRlZCBh
IGZsYWcgdG8gdGhpcyBmdW5jdGlvbiB0aGF0IHdpbGwgaGlnaGxpZ2h0IGFuZCBzY3JvbGwgdG8g
YSBnaXZlbiBwcm9wZXJ0eSAoX3NhdmVkUHJvcGVydHkpIGlmIHNldCBvbiBsb2FkLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLm1hcmtBc05lZWRzUmVmcmVz
aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmNv
bnRlbnRzSGF2ZUNoYW5nZWQpOgorICAgICAgICBTaW1wbGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5l
IGlmIHRoZSBjdXJyZW50IGRvbU5vZGUgYmVpbmcgcmVwcmVzZW50ZWQgaW4gdGhlIENTUyBwYW5l
bCBpcyBzdGlsbCB0aGUgc2VsZWN0ZWQgbm9kZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUubm9kZVN0eWxlc1JlZnJlc2hlZCk6CisgICAgICAgIE1h
ZGUgaW50byBwcm90ZWN0ZWQgZnVuY3Rpb24gdG8gYWxsb3cgaXQgdG8gYmUgb3ZlcnJpZGRlbi4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX25vZGVT
dHlsZXNSZWZyZXNoZWQpOiBEZWxldGVkLgorCiAyMDE1LTA1LTI3ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lP
TihyMTc5Mjg2KSBFZGl0aW5nIFN0eWxlIE1ldHJpY3MgVmFsdWVzIG5vIGxvbmdlciB3b3Jrcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRleCA1OGM2YWNk
ODE4MGNhOTFmNGQzMTY0YTQyNjg5ZjljYWJjZjkwMTllLi4yMzhlMjU2ODdlZmRlOGM3MzljY2E1
NDk2OWI0NjczZDdhYjkyZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5qcwpAQCAtMjYwLDYgKzI2MCwxNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAorICAgIGhp
Z2hsaWdodFByb3BlcnR5OiBmdW5jdGlvbihwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5oaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSkpIHsK
KyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0s
CisKICAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3By
b3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCBiOWIxODNlYTIxMjIyN2UwNWQxNDc3
MWNmNWFmOTQyZWZjMzM4ZGIwLi42NTVjOWM5ODliY2U0MTE5MWJjZGIwMDdjMTdjYjEyZDg0OGIz
YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5q
cwpAQCAtMTgxLDYgKzE4MSw0NiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICB0
aGlzLl9jb2RlTWlycm9yLnJlZnJlc2goKTsKICAgICB9CiAKKyAgICBoaWdobGlnaHRQcm9wZXJ0
eShwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHByb3BlcnRpZXNNYXRjaChjc3NQ
cm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNzc1Byb3BlcnR5LmVuYWJsZWQg
JiYgIWNzc1Byb3BlcnR5Lm92ZXJyaWRkZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoY3NzUHJv
cGVydHkuY2Fub25pY2FsTmFtZSA9PT0gcHJvcGVydHkuY2Fub25pY2FsTmFtZSB8fCBoYXNNYXRj
aGluZ0xvbmdoYW5kUHJvcGVydHkoY3NzUHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5
KGNzc1Byb3BlcnR5KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY3NzUHJvcGVydGllcyA9
IGNzc1Byb3BlcnR5LnJlbGF0ZWRMb25naGFuZFByb3BlcnRpZXM7CisKKyAgICAgICAgICAgIGlm
ICghY3NzUHJvcGVydGllcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBjc3NQcm9wZXJ0aWVzKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNNYXRjaChwcm9wZXJ0eSkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBjc3NQcm9wZXJ0eSBvZiB0aGlz
LnN0eWxlLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzTWF0Y2goY3Nz
UHJvcGVydHkpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IGNzc1Byb3BlcnR5
Ll9fcHJvcGVydHlUZXh0TWFya2VyLmZpbmQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLnNldFNlbGVjdGlvbihzZWxlY3Rpb24uZnJvbSwgc2VsZWN0aW9uLnRvKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmZvY3VzKCk7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGRpZERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCkBA
IC00MzcsNiArNDc3LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICAgICAgICAg
IHZhciBjaGVja2JveE1hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmso
ZnJvbSwgY2hlY2tib3hFbGVtZW50KTsKICAgICAgICAgICAgIGNoZWNrYm94TWFya2VyLl9fcHJv
cGVydHlDaGVja2JveCA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGVsZWdhdGUu
Y3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MK
KyAgICAgICAgICAgICAgICAmJiAhcHJvcGVydHkuaW1wbGljaXQKKyAgICAgICAgICAgICAgICAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3dpdGNoVG9Qcm9wZXJ0eUluUnVsZXNQYW5lbCA9PT0g
ImZ1bmN0aW9uIikgeworCisgICAgICAgICAgICB2YXIgYXJyb3dFbGVtZW50ID0gV2ViSW5zcGVj
dG9yLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpOworCisgICAgICAgICAgICB2YXIgZGVsZWdhdGUg
PSB0aGlzLl9kZWxlZ2F0ZTsKKyAgICAgICAgICAgIGFycm93RWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlbGVnYXRlLnN3aXRj
aFRvUHJvcGVydHlJblJ1bGVzUGFuZWwocHJvcGVydHkpOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIHZhciBhcnJvd01hcmtlciA9IHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5pcXVlQm9v
a21hcmsodG8sIGFycm93RWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY2xhc3NO
YW1lcyA9IFsiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXByb3BlcnR5Il07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggMmEzOGM3M2UwMjk5Njc4YjI3
YjA3OWM3ODA5ZDdlYTgyMjRlMWM1ZS4uMzllOTg0Y2QxZWNjMmM1OWI0ODdlNWVmMDRiOTM3NjUx
YTRmZTUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5q
cwpAQCAtNzAsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAg
dGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0Nv
bnRhaW5lcik7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsOworICAg
ICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAgICAgICB0aGlzLl9ydWxlc1N0eWxl
RGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsOwog
ICAgICAgICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9y
Lk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbDsKIApAQCAtMTM3LDYgKzEzNywyNSBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC53aWR0aERp
ZENoYW5nZSgpOwogICAgIH0KIAorICAgIHN3aXRjaFZpZXdUb1Byb3BlcnR5SW5SdWxlc1N0eWxl
RGV0YWlsc1BhbmVsKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gc3dpdGNoVG9S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsKCkgeworICAgICAgICAgICAgdGhpcy5fc3dpdGNoUGFuZWxz
KHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwpOworCisgICAgICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZSA9IHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwubmF2aWdhdGlvbkl0ZW0uaWRlbnRpZmllcjsKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRp
b25CYXIuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25T
ZXR0aW5nLnZhbHVlOworICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlv
dXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1Bh
bmVsLmNvbnRlbnRzSGF2ZUNoYW5nZWQodGhpcy5kb21Ob2RlKSkgeworICAgICAgICAgICAgdGhp
cy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5zYXZlZFByb3BlcnR5ID0gcHJvcGVydHk7CisgICAg
ICAgICAgICBzd2l0Y2hUb1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0aGlzKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaFRvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5j
YWxsKHRoaXMpOworICAgICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5zY3Jv
bGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKQEAgLTE4
MCw2ICsxOTksMTMgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgdGhpcy5fc3dpdGNoUGFuZWxzKHNlbGVjdGVkUGFuZWwp
OworCisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlID0gc2Vs
ZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOworICAgIH0KKworICAgIF9zd2l0Y2hQYW5l
bHMoc2VsZWN0ZWRQYW5lbCkKKyAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVk
UGFuZWwpOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhbmVsKSB7CkBAIC0yMDAsOCAr
MjI2LDYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNz
IENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKIAogICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRQYW5lbC5zaG93bigpOwogICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fbGFzdFNlbGVj
dGVkU2VjdGlvblNldHRpbmcudmFsdWUgPSBzZWxlY3RlZE5hdmlnYXRpb25JdGVtLmlkZW50aWZp
ZXI7CiAgICAgfQogCiAgICAgX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2tib3hDaGFuZ2VkKHBzZXVk
b0NsYXNzLCBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5j
c3MKaW5kZXggNjk2MWUzOGViNzkxODgwYzdmY2ZiMjcwMGRmMzNiZWYxMWNhMDA1MS4uYmNkYzYx
NWE1ZWM0MmFiMTc5NDVkODY5NzQ0ZDZlYjA0MjM2OTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTM1LDMgKzM1LDE1IEBACiB7CiAgICAgdmVy
dGljYWwtYWxpZ246IHRvcDsKIH0KKworLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50ID4gLmdy
b3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZSAuZ28tdG8tYXJyb3cgeworICAgIGRpc3Bs
YXk6IG5vbmU7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMnB4OworICAg
IGhlaWdodDogMTBweDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207Cit9CisKKy5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5yb3cgLkNvZGVNaXJyb3ItY29k
ZSBwcmU6aG92ZXIgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBpbml0aWFsOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggMDg1ODVjYzdjZjVm
YjZkYmMxOTNjYmFlMDk2MWI2ZDdhOTU2ODk4MS4uZDIyOTk4ZGEwOWYyOTlkNjQ0ZDQ4NWJiNjkx
NjMwOTZlNGU3NTdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
LmpzCkBAIC0yNSwxMCArMjUsMTIgQEAKIAogV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsCiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0
cnVjdG9yKGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJjb21wdXRlZCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29tcHV0ZWQiKSk7CiAKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBk
ZWxlZ2F0ZSB8fCBudWxsOworCiAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsU2V0
dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hvdy1hbGwi
LCBmYWxzZSk7CiAKICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGVTaG93QWxsTGFiZWwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwpAQCAtODgsNiArOTAsOCBAQCBXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwgZXh0ZW5kcwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29u
dGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3Jlc2V0
Rmxvd0RldGFpbHMoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY3NzU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3JTaG91bGRBZGRQcm9wZXJ0eUdvVG9BcnJvd3MgPSB0cnVlOwogICAgIH0KIAog
ICAgIC8vIFB1YmxpYwpAQCAtMTM5LDYgKzE0MywxMiBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5k
cwogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1NlY3Rpb24uZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKICAgICB9CiAKKyAgICBzd2l0Y2hUb1Byb3BlcnR5SW5S
dWxlc1BhbmVsKHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9kZWxl
Z2F0ZS5zd2l0Y2hWaWV3VG9Qcm9wZXJ0eUluUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9PT0gImZ1
bmN0aW9uIiApCisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zd2l0Y2hWaWV3VG9Qcm9wZXJ0
eUluUnVsZXNTdHlsZURldGFpbHNQYW5lbChwcm9wZXJ0eSk7CisgICAgfQorCiAgICAgcmVmcmVz
aCgpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRo
aXMubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxz
UGFuZWwuanMKaW5kZXggY2ZlMzczYTI0NWFlOTZlN2M3NTE1ZDQ3Mzg5ZmE4M2VmZmFjYjk0Mi4u
NTNmNmQ4ZWM2NDM5MTJhMDEzMTgwYjliNDRjNGRjNjA1NGE5NjY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC0zMCw2ICszMCw4IEBAIFdlYkluc3BlY3Rvci5S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRl
bmRzIFdlYkluCiAgICAgICAgIHN1cGVyKCJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUnVsZXMiKSk7CiAKICAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKKyAgICAg
ICAgdGhpcy5fY3VycmVudERPTU5vZGUgPSBudWxsOworICAgICAgICB0aGlzLl9zYXZlZFByb3Bl
cnR5ID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTIzOSwxMyArMjQxLDM1IEBA
IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURl
dGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAKICAgICAgICAgaWYgKHByZXZpb3VzRm9jdXNlZFNl
Y3Rpb24pCiAgICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CisKKyAg
ICAgICAgdGhpcy5fY3VycmVudERPTU5vZGUgPSB0aGlzLl9ub2RlU3R5bGVzLm5vZGU7CisgICAg
fQorCisgICAgc2Nyb2xsVG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpCisg
ICAgeworICAgICAgICBmb3IgKHZhciBzZWN0aW9uIG9mIHRoaXMuX3NlY3Rpb25zKSB7CisgICAg
ICAgICAgICBpZiAoc2VjdGlvbi5oaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgZ2V0IHNlY3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9zZWN0aW9uczsKKyAgICB9CisKKyAgICBzZXQgc2F2ZWRQcm9wZXJ0eShjc3NQcm9wZXJ0eSkK
KyAgICB7CisgICAgICAgIHRoaXMuX3NhdmVkUHJvcGVydHkgPSBjc3NQcm9wZXJ0eTsKICAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHNob3duKCkKICAgICB7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKKyAg
ICAgICAgc3VwZXIuc2hvd24oKTsKIAogICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIHN0eWxlIGFu
ZCBzZWN0aW9uIG9iamVjdHMgc28gdGhleSBjYW4gYmUgcmV1c2VkLgogICAgICAgICAvLyBBbHNv
IHVwZGF0ZSB0aGUgbGF5b3V0IGluIGNhc2Ugd2UgY2hhbmdlZCB3aWR0aHMgd2hpbGUgaGlkZGVu
LgpAQCAtMjU4LDcgKzI4Miw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAKICAgICBoaWRk
ZW4oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3Rv
dHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIuaGlkZGVuKCk7CiAKICAgICAg
ICAgLy8gRGlzY29ubmVjdCB0aGUgc3R5bGUgYW5kIHNlY3Rpb24gb2JqZWN0cyBzbyB0aGV5IGhh
dmUgYSBjaGFuY2UKICAgICAgICAgLy8gdG8gcmVsZWFzZSB0aGVpciBvYmplY3RzIHdoZW4gdGhp
cyBwYW5lbCBpcyBub3QgdmlzaWJsZS4KQEAgLTI3Miw2ICsyOTYsMTYgQEAgV2ViSW5zcGVjdG9y
LlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4
dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHRoaXMuX3NlY3Rpb25zW2ldLnVwZGF0ZUxheW91dCgp
OwogICAgIH0KIAorICAgIG5vZGVTdHlsZXNSZWZyZXNoZWQoZXZlbnQpCisgICAgeworICAgICAg
ICBzdXBlci5ub2RlU3R5bGVzUmVmcmVzaGVkKGV2ZW50KTsKKyAgICAgICAgCisgICAgICAgIGlm
ICh0aGlzLl9zYXZlZFByb3BlcnR5KSB7CisgICAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VjdGlv
bkFuZEhpZ2hsaWdodFByb3BlcnR5KHRoaXMuX3NhdmVkUHJvcGVydHkpOworICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX3NhdmVkUHJvcGVydHk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBQ
cml2YXRlCiAKICAgICBfbmV3UnVsZUNsaWNrZWQoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1Bh
bmVsLmpzCmluZGV4IDBkYWUxYzgzODQyMDYzMGVmNGVhMjg1NGQzZTNiMWZjOWNjMDkyZGUuLjY0
NGJiODNmMTBkMzkwZjM5ODg2MjJlYmMzYTA5OTIyNDhhYzkwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0
YWlsc1BhbmVsLmpzCkBAIC04Niw3ICs4Niw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAK
ICAgICAgICAgaWYgKCF0aGlzLl9ub2RlU3R5bGVzIHx8IHRoaXMuX25vZGVTdHlsZXMubm9kZSAh
PT0gZG9tTm9kZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX25vZGVTdHlsZXMpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9ub2RlU3R5bGVzUmVmcmVz
aGVkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCB0aGlz
Lm5vZGVTdHlsZXNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgICAgIHRoaXMuX25vZGVT
dHlsZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVu
dC5OZWVkc1JlZnJlc2gsIHRoaXMuX25vZGVTdHlsZXNOZWVkc1JlZnJlc2hlZCwgdGhpcyk7CiAg
ICAgICAgICAgICB9CiAKQEAgLTk2LDcgKzk2LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IK
ICAgICAgICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcykKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIHRoaXMuX25vZGVTdHlsZXNS
ZWZyZXNoZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5u
b2RlU3R5bGVzUmVmcmVzaGVkLCB0aGlzKTsKICAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudC5OZWVkc1Jl
ZnJlc2gsIHRoaXMuX25vZGVTdHlsZXNOZWVkc1JlZnJlc2hlZCwgdGhpcyk7CiAKICAgICAgICAg
ICAgIHRoaXMuX2ZvcmNlU2lnbmlmaWNhbnRDaGFuZ2UgPSB0cnVlOwpAQCAtMTA2LDExICsxMDYs
MjkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxz
UGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hO
b2RlU3R5bGVzKCk7CiAgICAgfQogCisgICAgY29udGVudHNIYXZlQ2hhbmdlZChkb21Ob2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKGRvbU5vZGUgJiYgdGhpcy5fY3VycmVudERPTU5vZGUgJiYgdGhp
cy5fY3VycmVudERPTU5vZGUgPT09IGRvbU5vZGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgdGhpcy5fY3VycmVudERPTU5vZGUgPSBkb21Ob2RlOworCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKwogICAgIHJlZnJlc2goc2lnbmlmaWNhbnRDaGFuZ2UpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0KIAorICAgIC8v
IFByb3RlY3RlZAorCisgICAgbm9kZVN0eWxlc1JlZnJlc2hlZChldmVudCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl92aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFByZXNlcnZp
bmdTY3JvbGxQb3NpdGlvbihldmVudC5kYXRhLnNpZ25pZmljYW50Q2hhbmdlKTsKKyAgICB9CisK
ICAgICAvLyBQcml2YXRlCiAKICAgICBnZXQgX2luaXRpYWxTY3JvbGxPZmZzZXQoKQpAQCAtMTQ2
LDEyICsxNjQsNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTdHls
ZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYgogICAgICAgICAgICAgdGhpcy5l
bGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wID0gcHJldmlvdXNTY3JvbGxUb3A7CiAgICAgfQog
Ci0gICAgX25vZGVTdHlsZXNSZWZyZXNoZWQoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fdmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9z
aXRpb24oZXZlbnQuZGF0YS5zaWduaWZpY2FudENoYW5nZSk7Ci0gICAgfQotCiAgICAgX25vZGVT
dHlsZXNOZWVkc1JlZnJlc2hlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl92aXNp
YmxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253869</attachid>
            <date>2015-05-28 15:18:05 -0700</date>
            <delta_ts>2015-05-28 18:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150528151752.patch</filename>
            <type>text/plain</type>
            <size>16731</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMyNzUyZGQ1ZGE4ZjRkZDEzNzdjYzc5NWQ4OTky
YTY4MDc0N2RiMDguLjFjMjc0Mzk5NGJlMWMyNWM1ODE4YmI4ZDQ0MzA3YjM4MjE4OWIwYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTA1LTI4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVRl
eHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKToKKyAgICAgICAgSWYgdGhlIGRlbGVnYXRlIG9m
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yIGhhcyBjc3NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvclNob3VsZEFkZFByb3BlcnR5R29Ub0Fycm93cyBzZXQgdG8gdHJ1ZSwgYWRkIGEgZ29U
b0Fycm93IHRvIGFsbCBDU1MgcHJvcGVydHkgZW50cmllcy4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVy
dHkucHJvcGVydGllc01hdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdM
b25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBEZXRl
cm1pbmVzIGlmIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5IGlzIGluIHRoZSBDU1Mgc3R5bGUgc2VjdGlv
biBhbmQgaWYgc28sIHNlbGVjdCB0aGF0IENTUyBwcm9wZXJ0eSwgZm9jdXMgb24gdGhlIHNlY3Rp
b24gY29udGFpbmluZyB0aGF0IENTUyBwcm9wZXJ0eSwgYW5kIHJldHVybiB0cnVlLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBl
LmhpZ2hsaWdodFByb3BlcnR5KToKKyAgICAgICAgU2VhcmNoZXMgdGhyb3VnaCB0aGUgcHJvcGVy
dGllcyBvZiB0aGUgc2VjdGlvbiBmb3IgYSBnaXZlbiBwcm9wZXJ0eSBhbmQgc2Nyb2xscyB0byBp
dCBpZiBmb3VuZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlLmNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWxTaG93UHJvcGVy
dHkpOgorICAgICAgICBTd2l0Y2hlcyB0byB0aGUgcnVsZXNTdHlsZURldGFpbHNQYW5lbCBhbmQg
c2Nyb2xscyB0byBhbmQgaGlnaHRsaWdodHMgYSBnaXZlbiBwcm9wZXJ0eSBpbiB0aGF0IHBhbmVs
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX3N3aXRjaFBhbmVscyk6CisgICAg
ICAgIE1vdmVkIHRoaXMgZnVuY3Rpb24gb3V0IG9mIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkIGZv
ciBiZXR0ZXIgcmV1c2FibGl0eS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JT
aG93UHJvcGVydHkpOgorICAgICAgICBGdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBkZWxlZ2F0ZSAo
d2hpY2ggc2hvdWxkIGJlIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCkgZnVuY3Rpb24gY29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbFNob3dQcm9wZXJ0eS4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGln
aGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBTZWFyY2hlcyB0aHJvdWdoIGFsbCB0aGUgc2VjdGlv
bnMgb2YgdGhlIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZm9yIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
LnNob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5oaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLm5vZGVTdHlsZXNSZWZyZXNoZWQpOgorICAgICAgICBBZGRlZCBhIGZs
YWcgdG8gdGhpcyBmdW5jdGlvbiB0aGF0IHdpbGwgaGlnaGxpZ2h0IGFuZCBzY3JvbGwgdG8gYSBn
aXZlbiBwcm9wZXJ0eSAoX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGlnaHQpIGlmIHNldCBvbiBs
b2FkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLm1hcmtB
c05lZWRzUmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLm5vZGVTdHlsZXNSZWZyZXNoZWQpOgorICAgICAgICBNYWRlIGludG8gcHJvdGVj
dGVkIGZ1bmN0aW9uIHRvIGFsbG93IGl0IHRvIGJlIG92ZXJyaWRkZW4uCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9ub2RlU3R5bGVzUmVmcmVzaGVk
KTogRGVsZXRlZC4KKwogMjAxNS0wNS0yNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3cgUGFnZSBTb3VyY2UgZG9lcyBu
b3Qgc3dpdGNoIHRvIFJlc291cmNlcyB0YWIgaWYgaW5zcGVjdG9yIHdhcyBjbG9zZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5kZXggNThjNmFjZDgxODBj
YTkxZjRkMzE2NGE0MjY4OWY5Y2FiY2Y5MDE5ZS4uMjM4ZTI1Njg3ZWZkZThjNzM5Y2NhNTQ5Njli
NDY3M2Q3YWI5MmVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rp
b24uanMKQEAgLTI2MCw2ICsyNjAsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKKyAgICBoaWdobGln
aHRQcm9wZXJ0eTogZnVuY3Rpb24ocHJvcGVydHkpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
cHJvcGVydGllc1RleHRFZGl0b3IuaGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpKSB7CisgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCiAg
ICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0
aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggYjliMTgzZWEyMTIyMjdlMDVkMTQ3NzFjZjVh
Zjk0MmVmYzMzOGRiMC4uYWZlMGE1ODhkZDk3NGI4ZTkwYzFiMjRjMzAwYTFlNDA3MGM1NmU5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKQEAg
LTE4MSw2ICsxODEsNDYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAgICAgdGhpcy5f
Y29kZU1pcnJvci5yZWZyZXNoKCk7CiAgICAgfQogCisgICAgaGlnaGxpZ2h0UHJvcGVydHkocHJv
cGVydHkpCisgICAgeworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzTWF0Y2goY3NzUHJvcGVy
dHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjc3NQcm9wZXJ0eS5lbmFibGVkICYmICFj
c3NQcm9wZXJ0eS5vdmVycmlkZGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGNzc1Byb3BlcnR5
LmNhbm9uaWNhbE5hbWUgPT09IHByb3BlcnR5LmNhbm9uaWNhbE5hbWUgfHwgaGFzTWF0Y2hpbmdM
b25naGFuZFByb3BlcnR5KGNzc1Byb3BlcnR5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhc01hdGNoaW5nTG9uZ2hhbmRQcm9wZXJ0eShjc3NQ
cm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNzc1Byb3BlcnRpZXMgPSBjc3NQ
cm9wZXJ0eS5yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzOworCisgICAgICAgICAgICBpZiAoIWNz
c1Byb3BlcnRpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgY3NzUHJvcGVydGllcykgeworICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0aWVzTWF0Y2gocHJvcGVydHkpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgY3NzUHJvcGVydHkgb2YgdGhpcy5zdHls
ZS5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAocHJvcGVydGllc01hdGNoKGNzc1Byb3Bl
cnR5KSkgeworICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSBjc3NQcm9wZXJ0eS5fX3By
b3BlcnR5VGV4dE1hcmtlci5maW5kKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJv
ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50byk7CisgICAgICAgICAg
ICAgICAgdGhpcy5mb2N1cygpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAg
ICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQpAQCAtNDM3
LDYgKzQ3NywxOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3Ig
PSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgICAgICB2YXIg
Y2hlY2tib3hNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2ttYXJrKGZyb20s
IGNoZWNrYm94RWxlbWVudCk7CiAgICAgICAgICAgICBjaGVja2JveE1hcmtlci5fX3Byb3BlcnR5
Q2hlY2tib3ggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2RlbGVnYXRlLmNzc1N0
eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yU2hvdWxkQWRkUHJvcGVydHlHb1RvQXJyb3dzCisgICAg
ICAgICAgICAgICAgJiYgIXByb3BlcnR5LmltcGxpY2l0CisgICAgICAgICAgICAgICAgJiYgdHlw
ZW9mIHRoaXMuX2RlbGVnYXRlLmNzc1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yU2hvd1Byb3Bl
cnR5ID09PSAiZnVuY3Rpb24iKSB7CisKKyAgICAgICAgICAgIHZhciBhcnJvd0VsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCk7CisKKyAgICAgICAgICAgIHZhciBk
ZWxlZ2F0ZSA9IHRoaXMuX2RlbGVnYXRlOworICAgICAgICAgICAgYXJyb3dFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZGVsZWdh
dGUuY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JTaG93UHJvcGVydHkocHJvcGVydHkpOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHZhciBhcnJvd01hcmtlciA9IHRoaXMuX2Nv
ZGVNaXJyb3Iuc2V0VW5pcXVlQm9va21hcmsodG8sIGFycm93RWxlbWVudCk7CiAgICAgICAgIH0K
IAogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IFsiY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXByb3Bl
cnR5Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5k
ZXggMmEzOGM3M2UwMjk5Njc4YjI3YjA3OWM3ODA5ZDdlYTgyMjRlMWM1ZS4uNDIxZTcxOTljZTdl
YmZlNmYxMmRkYTVjMjdmY2NkZTM5ZjRiZmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNzAsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dAogICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lcik7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlz
Ll9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0
eWxlRGV0YWlsc1BhbmVsOworICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
ID0gbmV3IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsKHRoaXMpOwogICAg
ICAgICB0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsOwogICAgICAgICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFu
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbDsKIApAQCAtMTM3
LDYgKzEzNywxNSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0g
Y2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRQYW5lbC53aWR0aERpZENoYW5nZSgpOwogICAgIH0KIAorICAgIGNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWxTaG93UHJvcGVydHkocHJvcGVydHkpCisgICAgeworICAgICAgICB0aGlz
Ll9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsLnNjcm9sbFRvU2VjdGlvbkFuZEhpZ2hsaWdodFByb3Bl
cnR5KHByb3BlcnR5KTsKKyAgICAgICAgdGhpcy5fc3dpdGNoUGFuZWxzKHRoaXMuX3J1bGVzU3R5
bGVEZXRhaWxzUGFuZWwpOworCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOworICAgIH0KKwogICAg
IC8vIFByb3RlY3RlZAogCiAgICAgYWRkRXZlbnRMaXN0ZW5lcnMoKQpAQCAtMTgwLDYgKzE4OSwx
MSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICB0aGlzLl9zd2l0Y2hQYW5lbHMoc2VsZWN0ZWRQYW5lbCk7CisgICAgfQor
CisgICAgX3N3aXRjaFBhbmVscyhzZWxlY3RlZFBhbmVsKQorICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoc2VsZWN0ZWRQYW5lbCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGFu
ZWwpIHsKQEAgLTIwMSw3ICsyMTUsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsID0gY2xhc3MgQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsIGV4dAogICAgICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC5zaG93bigpOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5fbGFzdFNlbGVjdGVkU2VjdGlvblNldHRpbmcudmFsdWUgPSBzZWxlY3RlZE5hdmlnYXRp
b25JdGVtLmlkZW50aWZpZXI7CisgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0
aW5nLnZhbHVlID0gc2VsZWN0ZWRQYW5lbC5uYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOwogICAg
IH0KIAogICAgIF9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94Q2hhbmdlZChwc2V1ZG9DbGFzcywg
ZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzCmluZGV4
IDY5NjFlMzhlYjc5MTg4MGM3ZmNmYjI3MDBkZjMzYmVmMTFjYTAwNTEuLmJjZGM2MTVhNWVjNDJh
YjE3OTQ1ZDg2OTc0NGQ2ZWIwNDIzNjk4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwuY3NzCkBAIC0zNSwzICszNSwxNSBAQAogewogICAgIHZlcnRpY2FsLWFs
aWduOiB0b3A7CiB9CisKKy5kZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5y
b3cgLkNvZGVNaXJyb3ItY29kZSBwcmUgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBub25l
OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMTJweDsKKyAgICBoZWlnaHQ6
IDEwcHg7CisgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOworfQorCisuZGV0YWlscy1z
ZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlOmhv
dmVyIC5nby10by1hcnJvdyB7CisgICAgZGlzcGxheTogaW5pdGlhbDsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IDA4NTg1Y2M3Y2Y1ZmI2ZGJjMTkz
Y2JhZTA5NjFiNmQ3YTk1Njg5ODEuLmNmMzk4ZjlkOTkxNGZjYjU2Njk2ODI0OTQ1ODc1N2RiZGY5
YWIyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAt
MjUsMTAgKzI1LDEyIEBACiAKIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
ID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5T
dHlsZURldGFpbHNQYW5lbAogewotICAgIGNvbnN0cnVjdG9yKCkKKyAgICBjb25zdHJ1Y3Rvcihk
ZWxlZ2F0ZSkKICAgICB7CiAgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAiY29tcHV0ZWQiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbXB1dGVkIikpOwogCisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUg
fHwgbnVsbDsKKwogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2Up
OwogCiAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGFiZWwiKTsKQEAgLTg4LDYgKzkwLDggQEAgV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4
dGVuZHMKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lclJl
Z2lvbnNGbG93U2VjdGlvbi5lbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9yZXNldEZsb3dEZXRh
aWxzKCk7CisgICAgICAgIAorICAgICAgICB0aGlzLmNzc1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yU2hvdWxkQWRkUHJvcGVydHlHb1RvQXJyb3dzID0gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKQEAgLTEzOSw2ICsxNDMsMTIgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRh
aWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMKICAgICAg
ICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZSgiaGlkZGVuIik7CiAgICAgfQogCisgICAgY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0
b3JTaG93UHJvcGVydHkocHJvcGVydHkpCisgICAgeworICAgICAgICBpZiAodHlwZW9mIHRoaXMu
X2RlbGVnYXRlLmNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWxTaG93UHJvcGVydHkgPT09ICJmdW5j
dGlvbiIpCisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsU2hvd1Byb3BlcnR5KHByb3BlcnR5KTsKKyAgICB9CisKICAgICByZWZyZXNoKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxlID0gdGhpcy5ub2RlU3R5
bGVzLmNvbXB1dGVkU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwpp
bmRleCBjZmUzNzNhMjQ1YWU5NmU3Yzc1MTVkNDczODlmYTgzZWZmYWNiOTQyLi5lZTdmODU5Yjcx
NGM1YjQ4MjAxZDlmOTQwYWM0ZTFmZDZlODZmZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuanMKQEAgLTMwLDYgKzMwLDcgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW4K
ICAgICAgICAgc3VwZXIoInJ1bGVzIiwgInJ1bGVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
dWxlcyIpKTsKIAogICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IFtdOworICAgICAgICB0aGlzLl9w
cm9wZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0ID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBQdWJs
aWMKQEAgLTI0MSwxMSArMjQyLDI2IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1Bh
bmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAg
ICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7CiAgICAgfQogCisgICAgc2Nyb2xs
VG9TZWN0aW9uQW5kSGlnaGxpZ2h0UHJvcGVydHkocHJvcGVydHkpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3Zpc2libGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5VG9TZWxlY3RB
bmRIaWdobGlnaHQgPSBwcm9wZXJ0eTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAodmFyIHNlY3Rpb24gb2YgdGhpcy5fc2VjdGlvbnMpIHsKKyAg
ICAgICAgICAgIGlmIChzZWN0aW9uLmhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIHNob3duKCkKICAgICB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2hvd24uY2FsbCh0
aGlzKTsKKyAgICAgICAgc3VwZXIuc2hvd24oKTsKIAogICAgICAgICAvLyBBc3NvY2lhdGUgdGhl
IHN0eWxlIGFuZCBzZWN0aW9uIG9iamVjdHMgc28gdGhleSBjYW4gYmUgcmV1c2VkLgogICAgICAg
ICAvLyBBbHNvIHVwZGF0ZSB0aGUgbGF5b3V0IGluIGNhc2Ugd2UgY2hhbmdlZCB3aWR0aHMgd2hp
bGUgaGlkZGVuLgpAQCAtMjU4LDcgKzI3NCw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0
YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAK
ICAgICBoaWRkZW4oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKKyAgICAgICAgc3VwZXIuaGlkZGVuKCk7
CiAKICAgICAgICAgLy8gRGlzY29ubmVjdCB0aGUgc3R5bGUgYW5kIHNlY3Rpb24gb2JqZWN0cyBz
byB0aGV5IGhhdmUgYSBjaGFuY2UKICAgICAgICAgLy8gdG8gcmVsZWFzZSB0aGVpciBvYmplY3Rz
IHdoZW4gdGhpcyBwYW5lbCBpcyBub3QgdmlzaWJsZS4KQEAgLTI3Miw2ICsyODgsMTcgQEAgV2Vi
SW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBSdWxlc1N0eWxlRGV0YWls
c1BhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHRoaXMuX3NlY3Rpb25zW2ldLnVwZGF0
ZUxheW91dCgpOwogICAgIH0KIAorICAgIG5vZGVTdHlsZXNSZWZyZXNoZWQoZXZlbnQpCisgICAg
eworICAgICAgICBzdXBlci5ub2RlU3R5bGVzUmVmcmVzaGVkKGV2ZW50KTsKKyAgICAgICAgCisg
ICAgICAgIGNvbnNvbGUubG9nKHRoaXMuX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGlnaHQpOwor
ICAgICAgICBpZiAodGhpcy5fcHJvcGVydHlUb1NlbGVjdEFuZEhpZ2hsaWdodCkgeworICAgICAg
ICAgICAgdGhpcy5zY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eSh0aGlzLl9wcm9w
ZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0KTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcm9w
ZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0OworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gUHJp
dmF0ZQogCiAgICAgX25ld1J1bGVDbGlja2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5l
bC5qcwppbmRleCAwZGFlMWM4Mzg0MjA2MzBlZjRlYTI4NTRkM2UzYjFmYzljYzA5MmRlLi5jZWU0
ZGFkYTFhZTRmMzE1OTZlNGU2ZjEzZjBkZGFmYjVjODlmZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFp
bHNQYW5lbC5qcwpAQCAtODYsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFu
ZWwgPSBjbGFzcyBTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYgogCiAg
ICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcyB8fCB0aGlzLl9ub2RlU3R5bGVzLm5vZGUgIT09
IGRvbU5vZGUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9ub2RlU3R5bGVzKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fbm9kZVN0eWxlc1JlZnJlc2hl
ZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5u
b2RlU3R5bGVzUmVmcmVzaGVkLCB0aGlzKTsKICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5
bGVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQu
TmVlZHNSZWZyZXNoLCB0aGlzLl9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQsIHRoaXMpOwogICAg
ICAgICAgICAgfQogCkBAIC05Niw3ICs5Niw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAg
ICAgICAgICAgICBpZiAoIXRoaXMuX25vZGVTdHlsZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9ub2RlU3R5bGVzUmVm
cmVzaGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIHRoaXMubm9k
ZVN0eWxlc1JlZnJlc2hlZCwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuTmVlZHNSZWZy
ZXNoLCB0aGlzLl9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQsIHRoaXMpOwogCiAgICAgICAgICAg
ICB0aGlzLl9mb3JjZVNpZ25pZmljYW50Q2hhbmdlID0gdHJ1ZTsKQEAgLTExMSw2ICsxMTEsMTQg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFu
ZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KICAgICB9CiAKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIG5vZGVTdHlsZXNSZWZy
ZXNoZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKKyAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb24oZXZlbnQuZGF0YS5zaWdu
aWZpY2FudENoYW5nZSk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgZ2V0IF9pbml0
aWFsU2Nyb2xsT2Zmc2V0KCkKQEAgLTE0NiwxMiArMTU0LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
RGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuT2IKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcCA9IHBy
ZXZpb3VzU2Nyb2xsVG9wOwogICAgIH0KIAotICAgIF9ub2RlU3R5bGVzUmVmcmVzaGVkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Zpc2libGUpCi0gICAgICAgICAgICB0aGlzLl9y
ZWZyZXNoUHJlc2VydmluZ1Njcm9sbFBvc2l0aW9uKGV2ZW50LmRhdGEuc2lnbmlmaWNhbnRDaGFu
Z2UpOwotICAgIH0KLQogICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253884</attachid>
            <date>2015-05-28 18:11:54 -0700</date>
            <delta_ts>2015-05-28 21:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120640-20150528181141.patch</filename>
            <type>text/plain</type>
            <size>16605</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGIyYjhmZjdlMGJiZDM2OGEzNmNkMzA3ZGU1NDc2
ZjZkYmMzODgxZTIuLjM1ZDBhZGJjYThmZWVjYzM0ZDNjYjJkNjJmY2IxZmI3ZjVjZGY3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTA1LTI4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBK
dW1wIGZyb20gYSBjb21wdXRlZCBzdHlsZSB0byB0aGUgcnVsZSBpdCBjYW1lIGZyb20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVRl
eHRNYXJrZXJGb3JQcm9wZXJ0eUlmTmVlZGVkKToKKyAgICAgICAgSWYgdGhlIGRlbGVnYXRlIG9m
IENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yIGhhcyBjc3NTdHlsZURlY2xhcmF0aW9uVGV4
dEVkaXRvclNob3VsZEFkZFByb3BlcnR5R29Ub0Fycm93cyBzZXQgdG8gdHJ1ZSwgYWRkIGEgZ29U
b0Fycm93IHRvIGFsbCBDU1MgcHJvcGVydHkgZW50cmllcy4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVy
dHkucHJvcGVydGllc01hdGNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkuaGFzTWF0Y2hpbmdM
b25naGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuaGlnaGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBEZXRl
cm1pbmVzIGlmIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5IGlzIGluIHRoZSBDU1Mgc3R5bGUgc2VjdGlv
biBhbmQgaWYgc28sIHNlbGVjdCB0aGF0IENTUyBwcm9wZXJ0eSwgZm9jdXMgb24gdGhlIHNlY3Rp
b24gY29udGFpbmluZyB0aGF0IENTUyBwcm9wZXJ0eSwgYW5kIHJldHVybiB0cnVlLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBl
LmhpZ2hsaWdodFByb3BlcnR5KToKKyAgICAgICAgU2VhcmNoZXMgdGhyb3VnaCB0aGUgcHJvcGVy
dGllcyBvZiB0aGUgc2VjdGlvbiBmb3IgYSBnaXZlbiBwcm9wZXJ0eSBhbmQgc2Nyb2xscyB0byBp
dCBpZiBmb3VuZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlLmNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWxTaG93UHJvcGVy
dHkpOgorICAgICAgICBTd2l0Y2hlcyB0byB0aGUgcnVsZXNTdHlsZURldGFpbHNQYW5lbCBhbmQg
c2Nyb2xscyB0byBhbmQgaGlnaHRsaWdodHMgYSBnaXZlbiBwcm9wZXJ0eSBpbiB0aGF0IHBhbmVs
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX3N3aXRjaFBhbmVscyk6CisgICAg
ICAgIE1vdmVkIHRoaXMgZnVuY3Rpb24gb3V0IG9mIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkIGZv
ciBiZXR0ZXIgcmV1c2FibGl0eS4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JT
aG93UHJvcGVydHkpOgorICAgICAgICBGdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBkZWxlZ2F0ZSAo
d2hpY2ggc2hvdWxkIGJlIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCkgZnVuY3Rpb24gY29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbFNob3dQcm9wZXJ0eS4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2Nyb2xsVG9TZWN0aW9uQW5kSGln
aGxpZ2h0UHJvcGVydHkpOgorICAgICAgICBTZWFyY2hlcyB0aHJvdWdoIGFsbCB0aGUgc2VjdGlv
bnMgb2YgdGhlIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZm9yIGEgZ2l2ZW4gQ1NTIHByb3BlcnR5
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
LnNob3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnBy
b3RvdHlwZS5oaWRkZW4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlLm5vZGVTdHlsZXNSZWZyZXNoZWQpOgorICAgICAgICBBZGRlZCBhIGZs
YWcgdG8gdGhpcyBmdW5jdGlvbiB0aGF0IHdpbGwgaGlnaGxpZ2h0IGFuZCBzY3JvbGwgdG8gYSBn
aXZlbiBwcm9wZXJ0eSAoX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGlnaHQpIGlmIHNldCBvbiBs
b2FkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLm1hcmtB
c05lZWRzUmVmcmVzaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlLm5vZGVTdHlsZXNSZWZyZXNoZWQpOgorICAgICAgICBNYWRlIGludG8gcHJvdGVj
dGVkIGZ1bmN0aW9uIHRvIGFsbG93IGl0IHRvIGJlIG92ZXJyaWRkZW4uCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9ub2RlU3R5bGVzUmVmcmVzaGVk
KTogRGVsZXRlZC4KKwogMjAxNS0wNS0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5ld1RhYkNvbnRlbnRWaWV3IHNob3Vs
ZCB1cGRhdGUgYnV0dG9uIGRpc2FibGVkIHN0YXRlIGFzIG90aGVyIHRhYnMgYXJlIGFkZGVkL3Jl
bW92ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5kZXgg
NThjNmFjZDgxODBjYTkxZjRkMzE2NGE0MjY4OWY5Y2FiY2Y5MDE5ZS4uMjM4ZTI1Njg3ZWZkZThj
NzM5Y2NhNTQ5NjliNDY3M2Q3YWI5MmVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uanMKQEAgLTI2MCw2ICsyNjAsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAK
KyAgICBoaWdobGlnaHRQcm9wZXJ0eTogZnVuY3Rpb24ocHJvcGVydHkpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IuaGlnaGxpZ2h0UHJvcGVydHkocHJvcGVy
dHkpKSB7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3KCk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9LAorCiAgICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggYjliMTgzZWEyMTIyMjdl
MDVkMTQ3NzFjZjVhZjk0MmVmYzMzOGRiMC4uM2Y5NzZjNzAxYzc4Y2FiYzIyOTU3ZTg2ZjlkNWI0
ZDUwY2Q2Mjk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuanMKQEAgLTE4MSw2ICsxODEsNDYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7CiAgICAgfQogCisgICAgaGlnaGxpZ2h0
UHJvcGVydHkocHJvcGVydHkpCisgICAgeworICAgICAgICBmdW5jdGlvbiBwcm9wZXJ0aWVzTWF0
Y2goY3NzUHJvcGVydHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjc3NQcm9wZXJ0eS5l
bmFibGVkICYmICFjc3NQcm9wZXJ0eS5vdmVycmlkZGVuKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNzc1Byb3BlcnR5LmNhbm9uaWNhbE5hbWUgPT09IHByb3BlcnR5LmNhbm9uaWNhbE5hbWUgfHwg
aGFzTWF0Y2hpbmdMb25naGFuZFByb3BlcnR5KGNzc1Byb3BlcnR5KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhc01hdGNoaW5nTG9uZ2hhbmRQ
cm9wZXJ0eShjc3NQcm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGNzc1Byb3Bl
cnRpZXMgPSBjc3NQcm9wZXJ0eS5yZWxhdGVkTG9uZ2hhbmRQcm9wZXJ0aWVzOworCisgICAgICAg
ICAgICBpZiAoIWNzc1Byb3BlcnRpZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgY3NzUHJvcGVydGllcykg
eworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzTWF0Y2gocHJvcGVydHkpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgY3NzUHJvcGVydHkg
b2YgdGhpcy5zdHlsZS5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAocHJvcGVydGllc01h
dGNoKGNzc1Byb3BlcnR5KSkgeworICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSBjc3NQ
cm9wZXJ0eS5fX3Byb3BlcnR5VGV4dE1hcmtlci5maW5kKCk7CisgICAgICAgICAgICAgICAgdGhp
cy5fY29kZU1pcnJvci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50byk7
CisgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOworCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3Bv
dmVyKQpAQCAtNDM3LDYgKzQ3NywxNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAg
ICAgICAgICB2YXIgY2hlY2tib3hNYXJrZXIgPSB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJv
b2ttYXJrKGZyb20sIGNoZWNrYm94RWxlbWVudCk7CiAgICAgICAgICAgICBjaGVja2JveE1hcmtl
ci5fX3Byb3BlcnR5Q2hlY2tib3ggPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2Rl
bGVnYXRlLmNzc1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yU2hvdWxkQWRkUHJvcGVydHlHb1Rv
QXJyb3dzCisgICAgICAgICAgICAgICAgJiYgIXByb3BlcnR5LmltcGxpY2l0ICYmIHR5cGVvZiB0
aGlzLl9kZWxlZ2F0ZS5jc3NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvclNob3dQcm9wZXJ0eSA9
PT0gImZ1bmN0aW9uIikgeworCisgICAgICAgICAgICB2YXIgYXJyb3dFbGVtZW50ID0gV2ViSW5z
cGVjdG9yLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpOworCisgICAgICAgICAgICB2YXIgZGVsZWdh
dGUgPSB0aGlzLl9kZWxlZ2F0ZTsKKyAgICAgICAgICAgIGFycm93RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlbGVnYXRlLmNz
c1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yU2hvd1Byb3BlcnR5KHByb3BlcnR5KTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2tt
YXJrKHRvLCBhcnJvd0VsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIGNsYXNzTmFt
ZXMgPSBbImNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eSJdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDJhMzhjNzNlMDI5OTY3OGIyN2Iw
NzljNzgwOWQ3ZWE4MjI0ZTFjNWUuLjYzYWRlMTNmMTE0ZDc2YmZhYWQ4Y2M4Y2VmNDYxNDI3ZGE1
YjFmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMK
QEAgLTcwLDcgKzcwLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250
YWluZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbDsKKyAgICAg
ICAgdGhpcy5fY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCh0aGlzKTsKICAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURl
dGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbDsKICAg
ICAgICAgdGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5N
ZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWw7CiAKQEAgLTEzNyw2ICsxMzcsMTQgQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwud2lkdGhEaWRD
aGFuZ2UoKTsKICAgICB9CiAKKyAgICBjb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsU2hvd1Byb3Bl
cnR5KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5l
bC5zY3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAg
IHRoaXMuX3N3aXRjaFBhbmVscyh0aGlzLl9ydWxlc1N0eWxlRGV0YWlsc1BhbmVsKTsKKworICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9s
YXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0
ZWQKIAogICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKQEAgLTE4MCw2ICsxODgsMTEgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAg
ICAgdGhpcy5fc3dpdGNoUGFuZWxzKHNlbGVjdGVkUGFuZWwpOworICAgIH0KKworICAgIF9zd2l0
Y2hQYW5lbHMoc2VsZWN0ZWRQYW5lbCkKKyAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNl
bGVjdGVkUGFuZWwpOwogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhbmVsKSB7CkBAIC0y
MDEsNyArMjE0LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCBleHQKICAgICAgICAgICAgIHRoaXMu
X3NlbGVjdGVkUGFuZWwuc2hvd24oKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2xhc3RT
ZWxlY3RlZFNlY3Rpb25TZXR0aW5nLnZhbHVlID0gc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVu
dGlmaWVyOworICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZSA9
IHNlbGVjdGVkUGFuZWwubmF2aWdhdGlvbkl0ZW0uaWRlbnRpZmllcjsKICAgICB9CiAKICAgICBf
Zm9yY2VkUHNldWRvQ2xhc3NDaGVja2JveENoYW5nZWQocHNldWRvQ2xhc3MsIGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcwppbmRleCA2OTYxZTM4ZWI3
OTE4ODBjN2ZjZmIyNzAwZGYzM2JlZjExY2EwMDUxLi5iY2RjNjE1YTVlYzQyYWIxNzk0NWQ4Njk3
NDRkNmViMDQyMzY5ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLmNzcwpAQCAtMzUsMyArMzUsMTUgQEAKIHsKICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwog
fQorCisuZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWly
cm9yLWNvZGUgcHJlIC5nby10by1hcnJvdyB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEycHg7CisgICAgaGVpZ2h0OiAxMHB4OworICAg
IHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTsKK30KKworLmRldGFpbHMtc2VjdGlvbiA+IC5j
b250ZW50ID4gLmdyb3VwID4gLnJvdyAuQ29kZU1pcnJvci1jb2RlIHByZTpob3ZlciAuZ28tdG8t
YXJyb3cgeworICAgIGRpc3BsYXk6IGluaXRpYWw7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5qcwppbmRleCAwODU4NWNjN2NmNWZiNmRiYzE5M2NiYWUwOTYxYjZk
N2E5NTY4OTgxLi5jZjM5OGY5ZDk5MTRmY2I1NjY5NjgyNDk0NTg3NTdkYmRmOWFiMmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRl
ZFN0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAgLTI1LDEwICsyNSwx
MiBAQAogCiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENv
bXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCiAg
ICAgewogICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21w
dXRlZCIpKTsKIAorICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisK
ICAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJjb21wdXRlZC1zdHlsZS1zaG93LWFsbCIsIGZhbHNlKTsKIAogICAgICAg
ICB2YXIgY29tcHV0ZWRTdHlsZVNob3dBbGxMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxhYmVsIik7CkBAIC04OCw2ICs5MCw4IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1Nl
Y3Rpb24uZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOworICAg
ICAgICAKKyAgICAgICAgdGhpcy5jc3NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvclNob3VsZEFk
ZFByb3BlcnR5R29Ub0Fycm93cyA9IHRydWU7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0x
MzksNiArMTQzLDEyIEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0g
Y2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzCiAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRl
biIpOwogICAgIH0KIAorICAgIGNzc1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yU2hvd1Byb3Bl
cnR5KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5j
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsU2hvd1Byb3BlcnR5ID09PSAiZnVuY3Rpb24iKQorICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbFNob3dQcm9w
ZXJ0eShwcm9wZXJ0eSk7CisgICAgfQorCiAgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICB0
aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5jb21wdXRl
ZFN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggY2ZlMzcz
YTI0NWFlOTZlN2M3NTE1ZDQ3Mzg5ZmE4M2VmZmFjYjk0Mi4uNTk1ZmU0MjIxN2Q5MjgwMTQ1NzNl
OWJhZDUyNDY4OTNlZjBlZTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
LmpzCkBAIC0zMCw2ICszMCw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
ID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgIHN1
cGVyKCJydWxlcyIsICJydWxlcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVsZXMiKSk7CiAK
ICAgICAgICAgdGhpcy5fc2VjdGlvbnMgPSBbXTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHlUb1Nl
bGVjdEFuZEhpZ2hsaWdodCA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC0yNDEs
MTEgKzI0MiwyNiBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNz
IFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogICAgICAgICAgICAgcHJldmlv
dXNGb2N1c2VkU2VjdGlvbi5mb2N1cygpOwogICAgIH0KIAorICAgIHNjcm9sbFRvU2VjdGlvbkFu
ZEhpZ2hsaWdodFByb3BlcnR5KHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl92
aXNpYmxlKSB7CisgICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0
ID0gcHJvcGVydHk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHZhciBzZWN0aW9uIG9mIHRoaXMuX3NlY3Rpb25zKSB7CisgICAgICAgICAgICBp
ZiAoc2VjdGlvbi5oaWdobGlnaHRQcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBzaG93bigpCiAgICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CisgICAg
ICAgIHN1cGVyLnNob3duKCk7CiAKICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBzdHlsZSBhbmQg
c2VjdGlvbiBvYmplY3RzIHNvIHRoZXkgY2FuIGJlIHJldXNlZC4KICAgICAgICAgLy8gQWxzbyB1
cGRhdGUgdGhlIGxheW91dCBpbiBjYXNlIHdlIGNoYW5nZWQgd2lkdGhzIHdoaWxlIGhpZGRlbi4K
QEAgLTI1OCw3ICsyNzQsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9
IGNsYXNzIFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbgogCiAgICAgaGlkZGVu
KCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5
cGUuaGlkZGVuLmNhbGwodGhpcyk7CisgICAgICAgIHN1cGVyLmhpZGRlbigpOwogCiAgICAgICAg
IC8vIERpc2Nvbm5lY3QgdGhlIHN0eWxlIGFuZCBzZWN0aW9uIG9iamVjdHMgc28gdGhleSBoYXZl
IGEgY2hhbmNlCiAgICAgICAgIC8vIHRvIHJlbGVhc2UgdGhlaXIgb2JqZWN0cyB3aGVuIHRoaXMg
cGFuZWwgaXMgbm90IHZpc2libGUuCkBAIC0yNzIsNiArMjg4LDE2IEBAIFdlYkluc3BlY3Rvci5S
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgUnVsZXNTdHlsZURldGFpbHNQYW5lbCBleHRl
bmRzIFdlYkluCiAgICAgICAgICAgICB0aGlzLl9zZWN0aW9uc1tpXS51cGRhdGVMYXlvdXQoKTsK
ICAgICB9CiAKKyAgICBub2RlU3R5bGVzUmVmcmVzaGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
c3VwZXIubm9kZVN0eWxlc1JlZnJlc2hlZChldmVudCk7CisgICAgICAgIAorICAgICAgICBpZiAo
dGhpcy5fcHJvcGVydHlUb1NlbGVjdEFuZEhpZ2hsaWdodCkgeworICAgICAgICAgICAgdGhpcy5z
Y3JvbGxUb1NlY3Rpb25BbmRIaWdobGlnaHRQcm9wZXJ0eSh0aGlzLl9wcm9wZXJ0eVRvU2VsZWN0
QW5kSGlnaGxpZ2h0KTsKKyAgICAgICAgICAgIHRoaXMuX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdo
bGlnaHQgPSBudWxsOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAg
X25ld1J1bGVDbGlja2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCAw
ZGFlMWM4Mzg0MjA2MzBlZjRlYTI4NTRkM2UzYjFmYzljYzA5MmRlLi5jZWU0ZGFkYTFhZTRmMzE1
OTZlNGU2ZjEzZjBkZGFmYjVjODlmZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwpA
QCAtODYsNyArODYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBT
dHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYgogCiAgICAgICAgIGlmICgh
dGhpcy5fbm9kZVN0eWxlcyB8fCB0aGlzLl9ub2RlU3R5bGVzLm5vZGUgIT09IGRvbU5vZGUpIHsK
ICAgICAgICAgICAgIGlmICh0aGlzLl9ub2RlU3R5bGVzKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fbm9kZVN0eWxlcy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5
bGVzLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5fbm9kZVN0eWxlc1JlZnJlc2hlZCwgdGhpcyk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgdGhpcy5ub2RlU3R5bGVzUmVm
cmVzaGVkLCB0aGlzKTsKICAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuTmVlZHNSZWZyZXNo
LCB0aGlzLl9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQsIHRoaXMpOwogICAgICAgICAgICAgfQog
CkBAIC05Niw3ICs5Niw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbCA9IGNsYXNz
IFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iCiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX25vZGVTdHlsZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICB0aGlzLl9ub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5v
ZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCB0aGlzLl9ub2RlU3R5bGVzUmVmcmVzaGVkLCB0aGlz
KTsKKyAgICAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIHRoaXMubm9kZVN0eWxlc1JlZnJl
c2hlZCwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGVTdHlsZXMuRXZlbnQuTmVlZHNSZWZyZXNoLCB0aGlzLl9u
b2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQsIHRoaXMpOwogCiAgICAgICAgICAgICB0aGlzLl9mb3Jj
ZVNpZ25pZmljYW50Q2hhbmdlID0gdHJ1ZTsKQEAgLTExMSw2ICsxMTEsMTQgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2IKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAg
ICB9CiAKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIG5vZGVTdHlsZXNSZWZyZXNoZWQoZXZlbnQp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKKyAgICAgICAgICAgIHRoaXMuX3Jl
ZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb24oZXZlbnQuZGF0YS5zaWduaWZpY2FudENoYW5n
ZSk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgZ2V0IF9pbml0aWFsU2Nyb2xsT2Zm
c2V0KCkKQEAgLTE0NiwxMiArMTU0LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
ID0gY2xhc3MgU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2IKICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcCA9IHByZXZpb3VzU2Nyb2xs
VG9wOwogICAgIH0KIAotICAgIF9ub2RlU3R5bGVzUmVmcmVzaGVkKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3Zpc2libGUpCi0gICAgICAgICAgICB0aGlzLl9yZWZyZXNoUHJlc2Vy
dmluZ1Njcm9sbFBvc2l0aW9uKGV2ZW50LmRhdGEuc2lnbmlmaWNhbnRDaGFuZ2UpOwotICAgIH0K
LQogICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fdmlzaWJsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>