<?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>145657</bug_id>
          
          <creation_ts>2015-06-04 14:29:18 -0700</creation_ts>
          <short_desc>Web Inspector: Show warning icon for invalid CSS properties and/or values</short_desc>
          <delta_ts>2015-06-24 15:18:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Davis">jond</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099616</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Davis">jond</who>
    <bug_when>2015-06-04 14:29:18 -0700</bug_when>
    <thetext>When an invalid CSS property or invalid value is entered into the style sidebar in Web Inspector, a strikethrough is currently used. A strikethrough is also used for overridden styles. Although the colors are different, the visual notice is so subtle, and the display style so similar, it would be difficult to understand the meaning at a glance. I recommend using a warning icon before the name of either the invalid property or invalid values in the style sidebar. The strikethrough should remain to notify the user that the style will not be used.

It would also be nice for a tooltip to explicitly call out the invalid property or invalid value with a warning. To go above and beyond, the tooltip could suggest the most closely correct value/property name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099618</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-06-04 14:29:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/21248517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099943</commentid>
    <comment_count>2</comment_count>
      <attachid>254385</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-05 14:20:39 -0700</bug_when>
    <thetext>Created attachment 254385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099944</commentid>
    <comment_count>3</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-05 14:22:49 -0700</bug_when>
    <thetext>I am also planning on making functionality for when the property has a -webkit- and no longer needs it (transform, animation, etc.) or when the property doesn&apos;t have a -webkit- and does need it (font-smoothing, etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100028</commentid>
    <comment_count>4</comment_count>
      <attachid>254385</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-06-05 17:35:05 -0700</bug_when>
    <thetext>Comment on attachment 254385
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:289
&gt; +    getFirstMatchingProperty(name, clipFront)

Any way to make this faster? I worry it will be a performance bottleneck.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:296
&gt; +        return this.getFirstMatchingProperty(clipFront ? name.substring(1): name.slice(0, -1), clipFront);

This is pretty heavy, and recursive.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:548
&gt; +                    title: &quot;The value \&quot;&quot; + property.value + &quot;\&quot; is not valid.&quot;,

UIString here too.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:556
&gt; +                    title: &quot;Did you mean &quot; + closestPropertyName + &quot;?&quot;,

This should be a format string with WebInspector.UIString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101094</commentid>
    <comment_count>5</comment_count>
      <attachid>254672</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-10 13:21:49 -0700</bug_when>
    <thetext>Created attachment 254672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101095</commentid>
    <comment_count>6</comment_count>
      <attachid>254672</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-10 13:24:20 -0700</bug_when>
    <thetext>Comment on attachment 254672
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:289
&gt; +    getFirstMatchingProperty(name, clipFront)

I have tried using a different function (http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#JavaScript) to get better performance and more accurate results, but it is MIT licensed.  Is this a problem and if not, is there a specific way in which I need to show that to be able to use the code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101653</commentid>
    <comment_count>7</comment_count>
      <attachid>254810</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-12 11:35:10 -0700</bug_when>
    <thetext>Created attachment 254810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101675</commentid>
    <comment_count>8</comment_count>
      <attachid>254810</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-12 12:39:35 -0700</bug_when>
    <thetext>Comment on attachment 254810
Patch

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

r- while we think about how best to warn about prefixes.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:289
&gt; +    getFirstMatchingProperty(name)

This name does not accurately describe what this function is doing.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:291
&gt; +        function levenshteinDistance(s, t) {

This should really be a Utility function. Probably in Utilities.js.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:328
&gt; +            if (distance &lt; bestMatches[0].distance)
&gt; +                bestMatches = [{distance: distance, name: property}];
&gt; +            else if (distance === bestMatches[0].distance)
&gt; +                bestMatches.push({distance: distance, name: property});

Style: Use the shorthand literal syntax where possible.

So instead of:

    {distance: distance, name: property}

These can be:

    {distance, name: property}

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.css:87
&gt; +}
&gt; +.css-style-text-editor &gt; .CodeMirror .CodeMirror-lines .invalid-warning-marker.clickable {

Style: Newline between new rules.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:552
&gt; +        var propertyHasUnnecessaryPrefix = property.name.includes(&quot;-webkit-&quot;) &amp;&amp; WebInspector.CSSCompletions.cssNameCompletions.isValidPropertyName(property.name.replace(&quot;-webkit-&quot;, &quot;&quot;));

Nit: When checking for a prefix you only need to check if the string starts with the prefix, instead of includes, which might be wrong. We support String.prototype.startsWith so you don&apos;t need to use String.prototype.includes.

    property.name.startsWith(&quot;-webkit-&quot;)

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:585
&gt; +            if (propertyHasUnnecessaryPrefix) {
&gt; +                generateInvalidMarker.call(this, {
&gt; +                    from: from,
&gt; +                    title: WebInspector.UIString(&quot;The &apos;webkit&apos; prefix is not necessary.&quot;),
&gt; +                    correction: property.text.replace(&quot;-webkit-&quot;, &quot;&quot;),
&gt; +                    autocomplete: false 
&gt; +                });
&gt; +            }

We need to be careful about this warning. It may not be a good idea. If someone removes the -webkit- prefix they may be losing support for legacy WebKit browsers that still need the prefix.

A better warning might be if a prefixed version is found but a non-prefixed version of the same property is not found.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:596
&gt; +                    var valueReplacement = property.value.length ? WebInspector.UIString(&quot;The value &apos;%s&apos; is not valid.&quot;).format(property.value) : WebInspector.UIString(&quot;This property needs a value.&quot;);

Could be: &quot;Value &apos;%s&apos; is not supported for this property.&quot; or &quot;Value &apos;%s&apos; is not valid.&quot;. This may be a property value supported by newer / other browsers. It is tough to know if saying unsupported or invalid is better.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:610
&gt; +                    invalidMarkerInfo = {
&gt; +                        from: from,
&gt; +                        title: WebInspector.UIString(&quot;The &apos;webkit&apos; prefix is needed for this property.&quot;),
&gt; +                        correction: &quot;-webkit-&quot; + property.text,
&gt; +                        autocomplete: false 
&gt; +                    };

Again, this can be misleading.

Take for instance iOS 8 and iOS 9 which unprefixed a bunch of properties. It sounds like when inspecting iOS 8 you&apos;ll get warnings &quot;hey you need prefixes!&quot;. And Inspecting iOS 9 you&apos;ll get warnings &quot;hey you don&apos;t need prefixes!&quot;. Really what would be best in most cases is a check that there are both a prefixed (for legacy) and unprefixed versions (future proof) of a property.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:624
&gt; +                            title: WebInspector.UIString(&quot;The property &apos;%s&apos; does not exist.&quot;).format(property.name)

Could be &quot;Property &apos;%s&apos; is not supported&quot;. This may be a property supported by newer / other browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103017</commentid>
    <comment_count>9</comment_count>
      <attachid>255127</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-18 13:32:08 -0700</bug_when>
    <thetext>Created attachment 255127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103049</commentid>
    <comment_count>10</comment_count>
      <attachid>255127</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 15:12:33 -0700</bug_when>
    <thetext>Comment on attachment 255127
Patch

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

Drive by, I haven&apos;t actually reviewed the logic yet.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:614
&gt; +                title: WebInspector.UIString(&quot;The &apos;webkit&apos; prefix is not necessary.\nDuplicate without the prefix?&quot;),

I think it might be better to say &quot;[...]. Click to insert a duplicate without the prefix.&quot;

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationTextEditor.js:621
&gt; +                title: WebInspector.UIString(&quot;Duplicate property &apos;%s&apos;.\nDelete this property?&quot;).format(property.name),

Same here. &quot;[...]. Click to delete this property.&quot; And so on for others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104303</commentid>
    <comment_count>11</comment_count>
      <attachid>255469</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2015-06-23 19:15:36 -0700</bug_when>
    <thetext>Created attachment 255469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104479</commentid>
    <comment_count>12</comment_count>
      <attachid>255469</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-06-24 14:30:25 -0700</bug_when>
    <thetext>Comment on attachment 255469
Patch

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104502</commentid>
    <comment_count>13</comment_count>
      <attachid>255469</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-24 15:18:32 -0700</bug_when>
    <thetext>Comment on attachment 255469
Patch

Clearing flags on attachment: 255469

Committed r185928: &lt;http://trac.webkit.org/changeset/185928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104503</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-24 15:18:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254385</attachid>
            <date>2015-06-05 14:20:39 -0700</date>
            <delta_ts>2015-06-10 13:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145657-20150605142016.patch</filename>
            <type>text/plain</type>
            <size>6004</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM3MDQyZjljYzlmNmZhZjY2M2M2NjQ0NmM2N2Y0
YjhjZTFiMzI5NjAuLmZhNDhmNjMzZTQxNDA3YjI3NDEwNzVmYjFhYmEwYmVhZDJhNGEyNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA2LTA1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aG93IHdhcm5pbmcgaWNvbiBmb3IgaW52YWxpZCBDU1MgcHJvcGVydGllcyBhbmQvb3IgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5nZXRGaXJzdE1hdGNoaW5nUHJvcGVydHkpOiBSZXR1
cm5zIHRoZSBmaXJzdCBwcm9wZXJ0eSBuYW1lIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN0cmlu
Zy4gIElmIG5vbmUgYXJlIGZvdW5kLCBpdCByZWN1cnNpdmVseSByZW1vdmVzIGxldHRlcnMgZnJv
bSB0aGUgZW5kIChvciBiZWdpbm5pbmcgaWYgY2xpcEZyb250IGlzIHRydWUpIGFuZCBzZWFyY2hl
cyBhZ2Fpbi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5jc3M6
CisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJy
b3ItbGluZXMgLmludmFsaWQtd2FybmluZy1tYXJrZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVU
ZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZCk6IEEgYnV0dG9uIHdpdGggYSB3YXJuaW5nIGlj
b24gaXMgbm93IGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgYW4gaW52YWxpZCBwcm9wZXJ0eS4g
IElmIHRoaXMgYnV0dG9uIGlzIGNsaWNrZWQsIHRoZSBwcm9wZXJ0eSBpcyByZXBsYWNlZCB3aXRo
IHRoZSBjbG9zZXN0IG1hdGNoaW5nIHByb3BlcnR5IGFuZCB0aGUgYXV0b2NvbXBsZXRlIG1lbnUg
aXMgb3BlbmVkLgorCiAyMDE1LTA2LTA1ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTd2l0Y2ggdG8gZG91Z2hudXQgY2hhcnQgYW5k
IHJlbW92ZSBpZGxlIHRpbWUgaW4gdGhlIFJlbmRlcmluZyBGcmFtZXMgdGltZWxpbmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21w
bGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NDb21wbGV0aW9ucy5qcwppbmRleCA0N2JmY2FmYzVlZGNiMmVkNmNhZDgyNDNiY2ViMDNhYmEw
NDhlZDcxLi5kZjZhODlmYTFlYjU4ZjE2NjFjNTMxM2ExZDUwMmRkZjEyODE4MTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxl
dGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzCkBAIC0yODUsNiArMjg1LDE2IEBAIFdlYkluc3BlY3Rvci5DU1ND
b21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KKworICAgIGdldEZpcnN0TWF0Y2hpbmdQcm9wZXJ0eShuYW1lLCBjbGlwRnJvbnQp
CisgICAgeworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl92YWx1ZXMpIHsKKyAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS5pbmNsdWRlcyhuYW1lKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpcy5nZXRGaXJz
dE1hdGNoaW5nUHJvcGVydHkoY2xpcEZyb250ID8gbmFtZS5zdWJzdHJpbmcoMSk6IG5hbWUuc2xp
Y2UoMCwgLTEpLCBjbGlwRnJvbnQpOworICAgIH0KIH07CiAKIFdlYkluc3BlY3Rvci5DU1NDb21w
bGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCmluZGV4IGQ0MDQwNWU4N2NmYTg5ZTcwMWYy
OTRjZWExYWQ2MGNhZWVlZTQwMDEuLjQwMjkxZjc5N2Q5ODRkZWViNTBiODQxMTAxNGM4Zjg3ZWUy
NTZlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5jc3MKQEAgLTczLDYgKzczLDE5IEBACiAgICAgLXdlYmtpdC10ZXh0LXN0cm9rZS1jb2xvcjog
cmdiYSgyNTUsIDAsIDAsIDAuNik7CiB9CiAKKy5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29k
ZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJuaW5nLW1hcmtlciB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgIHRvcDogMXB4OyAKKyAgICB3aWR0aDogOXB4OworICAg
IGhlaWdodDogOXB4OworICAgIG1hcmdpbjogMCAycHggMCAwOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgYm9yZGVyOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvV2FybmluZy5zdmcpOworICAgIGN1cnNv
cjogcG9pbnRlcjsKK30KKwogLmNvbXB1dGVkIC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29k
ZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXByb3BlcnR5
LmltcGxpY2l0LAogLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2RlTWly
cm9yLWxpbmVzIC5jc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVydHkubm90LWluaGVyaXRlZCB7
CiAgICAgb3BhY2l0eTogMC41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5qcwppbmRleCA4NTY0NjI5OGNiZTgxNjRkMzAxZTI2Mzc1YzE1MjYzNmQzZWI5
ZWU0Li4yMDQzM2RkOGEwMTA2MDNlZWU3MDQ5YjYxMjlkNjQzYWM4ZDM4ZTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtNTM1LDExICs1
MzUsNDEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xh
c3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKIAogICAgICAgICB0aGlzLl9yZW1vdmVD
aGVja2JveFBsYWNlaG9sZGVyKGZyb20ubGluZSk7CiAKLSAgICAgICAgaWYgKCFwcm9wZXJ0eS52
YWxpZCAmJiBwcm9wZXJ0eU5hbWVJc1ZhbGlkKSB7Ci0gICAgICAgICAgICB2YXIgc3RhcnQgPSB7
bGluZTogZnJvbS5saW5lLCBjaDogZnJvbS5jaCArIHByb3BlcnR5LnRleHQuaW5kZXhPZihwcm9w
ZXJ0eS52YWx1ZSl9OwotICAgICAgICAgICAgdmFyIGVuZCA9IHtsaW5lOiB0by5saW5lLCBjaDog
c3RhcnQuY2ggKyBwcm9wZXJ0eS52YWx1ZS5sZW5ndGh9OworICAgICAgICBpZiAoIXByb3BlcnR5
LnZhbGlkICYmICFwcm9wZXJ0eS5oYXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQoKSkgeworICAg
ICAgICAgICAgdmFyIGludmFsaWRNYXJrZXJJbmZvOworICAgICAgICAgICAgaWYgKHByb3BlcnR5
TmFtZUlzVmFsaWQpIHsKKyAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSB7bGluZTogZnJvbS5s
aW5lLCBjaDogZnJvbS5jaCArIHByb3BlcnR5LnRleHQuaW5kZXhPZihwcm9wZXJ0eS52YWx1ZSl9
OworICAgICAgICAgICAgICAgIHZhciBlbmQgPSB7bGluZTogdG8ubGluZSwgY2g6IHN0YXJ0LmNo
ICsgcHJvcGVydHkudmFsdWUubGVuZ3RofTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IubWFya1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogImludmFsaWQifSk7CisKKyAg
ICAgICAgICAgICAgICBpbnZhbGlkTWFya2VySW5mbyA9IHsKKyAgICAgICAgICAgICAgICAgICAg
ZnJvbTogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAiVGhlIHZhbHVlIFwiIiAr
IHByb3BlcnR5LnZhbHVlICsgIlwiIGlzIG5vdCB2YWxpZC4iLAorICAgICAgICAgICAgICAgICAg
ICBjb3JyZWN0aW9uOiBwcm9wZXJ0eS5uYW1lCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIGNsb3Nlc3RQcm9wZXJ0eU5hbWUgPSBX
ZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmdldEZpcnN0TWF0
Y2hpbmdQcm9wZXJ0eShwcm9wZXJ0eS5uYW1lKTsKKworICAgICAgICAgICAgICAgIGludmFsaWRN
YXJrZXJJbmZvID0geworICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLAorICAgICAgICAg
ICAgICAgICAgICB0aXRsZTogIkRpZCB5b3UgbWVhbiAiICsgY2xvc2VzdFByb3BlcnR5TmFtZSAr
ICI/IiwKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbjogY2xvc2VzdFByb3BlcnR5TmFt
ZQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBp
bnZhbGlkTWFya2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAg
ICAgICBpbnZhbGlkTWFya2VyLmNsYXNzTmFtZSA9ICJpbnZhbGlkLXdhcm5pbmctbWFya2VyIjsK
KyAgICAgICAgICAgIGludmFsaWRNYXJrZXIudGl0bGUgPSBpbnZhbGlkTWFya2VySW5mby50aXRs
ZTsKKworICAgICAgICAgICAgaW52YWxpZE1hcmtlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJh
bmdlKGludmFsaWRNYXJrZXJJbmZvLmNvcnJlY3Rpb24gKyAiOiAiLCBmcm9tLCB0byk7CisgICAg
ICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRDdXJzb3IodG8pOworICAgICAgICAgICAg
ICAgIHRoaXMuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJv
bGxlci5fY29tcGxldGVBdEN1cnJlbnRQb3NpdGlvbih0cnVlKTsKKyAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7CiAKLSAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQoc3RhcnQs
IGVuZCwge2NsYXNzTmFtZTogImludmFsaWQifSk7CisgICAgICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLnNldEJvb2ttYXJrKGludmFsaWRNYXJrZXJJbmZvLmZyb20sIGludmFsaWRNYXJrZXIpOwog
ICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254672</attachid>
            <date>2015-06-10 13:21:49 -0700</date>
            <delta_ts>2015-06-12 11:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145657-20150610132121.patch</filename>
            <type>text/plain</type>
            <size>10005</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDY0M2M3ZWE2MjkwOTRhNjc2M2Y0OGFlODBjMWYz
Y2QzODcyMzVmNzcuLmM2ZmEzNjBkYzRhMGUwYjNiMTk2OTUzMmMzYmFlOTg1Njk1OWI3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aG93IHdhcm5pbmcgaWNvbiBmb3IgaW52YWxpZCBDU1MgcHJvcGVydGllcyBhbmQvb3IgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5nZXRGaXJzdE1hdGNoaW5nUHJvcGVydHkpOiBSZXR1
cm5zIHRoZSBmaXJzdCBwcm9wZXJ0eSBuYW1lIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN0cmlu
Zy4gIElmIG5vbmUgYXJlIGZvdW5kLCBpdCByZWN1cnNpdmVseSByZW1vdmVzIGxldHRlcnMgZnJv
bSB0aGUgZW5kIChvciBiZWdpbm5pbmcgaWYgY2xpcEZyb250IGlzIHRydWUpIGFuZCBzZWFyY2hl
cyBhZ2Fpbi4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUu
cHJvcGVydHlSZXF1aXJlc1dlYmtpdFByZWZpeCk6IFJldHJ1bnMgaWYgdGhlIHByb3BlcnR5IG5h
bWUgZXhpc3RzIG9ubHkgd2l0aCBhICctd2Via2l0LScgcHJlZml4LgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU0NvbXBsZXRpb25zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzczoKKyAgICAgICAgKC5jc3Mtc3R5bGUtdGV4
dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJuaW5n
LW1hcmtlcik6CisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3Ig
LkNvZGVNaXJyb3ItbGluZXMgLmludmFsaWQtd2FybmluZy1tYXJrZXIuY2xpY2thYmxlKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
LnByb3RvdHlwZS5fY3JlYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZOZWVkZWQpOiBBIGJ1dHRv
biB3aXRoIGEgd2FybmluZyBpY29uIGlzIG5vdyBhZGRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIGFu
IGludmFsaWQgcHJvcGVydHkuICBJZiB0aGlzIGJ1dHRvbiBpcyBjbGlja2VkLCB0aGUgcHJvcGVy
dHkgaXMgcmVwbGFjZWQgd2l0aCB0aGUgY2xvc2VzdCBtYXRjaGluZyBwcm9wZXJ0eSBhbmQgdGhl
IGF1dG9jb21wbGV0ZSBtZW51IGlzIG9wZW5lZC4KKwogMjAxNS0wNi0wOCAgTWF0dCBCYWtlciAg
PG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ2xlYXJpbmcg
YWN0aXZlIFRpbWVsaW5lIHJlY29yZGluZyBzaG91bGQgc3RvcCBjYXB0dXJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJhOWYxNjA0ODM0ZjQ4YWQ5Yjg4ZTU5MzkwMGM1
YzFkNDAzODQ5OGMuLmY2NjMwOTE2MjcwYjIwZThiOGI0OTQ4Y2FiMzQyZTY4NjJhNGQzNDkgMTAw
NjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzc3CnpjbVpwPCU2I0gzXjlEXlB7fWN1VmhEd0hm
aEVnRCUlYUY+RCRkQ3RRc1dZZkQ2YXpfbjF8XjFBQW0wezxsXjkkWQp6RzhxVntwUy19P2RiNm9o
O0VXKWs/c0F9Y05ldE9RVF9yJUMweiZ+cTVsfCF6JGdjcU1HSiFUSTBCdVZKIVcxeDgKejBMdFk5
KWhHYmZYRiVtYWRoJnJmUXlHZFR1ZXYyZzN1RTdIR0BNKzJpYHxaQjd2fUByMlhUMmEmfFNxcW08
Vio7CnpucCtaLTh1NE1IS0ZCMiY7RTttKThmYUd+Jl5CMCVDOy1ETUE4YWVnMXJWMnswPmN2Jm5r
QUZoLTRmRndNZjJuZAp6UitiPGVeJSU7NGUjaWwpZj5hY3tVfnZTbzJjaWE7MXxhczNwaz92fWFn
ZmpFKU1KVE9zMFUjUTBoQX5iZmYhLUIKajkhZXElIUltX0xHUSptSVlqVHlDPmc0PTg5RnR9NWFC
U0FSOW5COF8rZzcyLQoKZGVsdGEgNzEKemNtWD9jbSR+SUNeOURfKSQtWFc7bFcoVnJPI1clbEh+
RlBBQURBNjRwZiVha01GN1pGbio3e1pVQH5gXzFESFFNClZPPjZVQVhaN2ltUnFqcFE5RGhIUDl7
QGFzOXlrQzEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggZDUwMGI1MmZhZDkyYjhmNWJi
YjVjNDIwZmM0MjBlYmYzMzRhOWRkYy4uZmQ1ZjkxOWY3Njg5YTliZWQyMmM5YTE0OGNhYTIyMDU1
Y2M3NzdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMjgwLDYgKzI4MCwyMSBAQCBX
ZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKTsKICAgICB9CisKKyAg
ICBwcm9wZXJ0eVJlcXVpcmVzV2Via2l0UHJlZml4KG5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fdmFsdWVzLmluY2x1ZGVzKCItd2Via2l0LSIgKyBuYW1lKSAmJiAhdGhpcy5fdmFs
dWVzLmluY2x1ZGVzKG5hbWUpOworICAgIH0KKworICAgIGdldEZpcnN0TWF0Y2hpbmdQcm9wZXJ0
eShuYW1lLCBjbGlwRnJvbnQpCisgICAgeworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0
aGlzLl92YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pbmNsdWRlcyhuYW1lKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gdGhpcy5nZXRGaXJzdE1hdGNoaW5nUHJvcGVydHkoY2xpcEZyb250ID8gbmFtZS5zdWJz
dHJpbmcoMSk6IG5hbWUuc2xpY2UoMCwgLTEpLCBjbGlwRnJvbnQpOworICAgIH0KIH07CiAKIFdl
Ykluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCmluZGV4IGQ0
MDQwNWU4N2NmYTg5ZTcwMWYyOTRjZWExYWQ2MGNhZWVlZTQwMDEuLjdkNzJiYWFiYjQ4Mjk1Y2M5
OGNmOTAwZWYwOWQyOTI5YjYwYjhlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5jc3MKQEAgLTczLDYgKzczLDIxIEBACiAgICAgLXdlYmtpdC10
ZXh0LXN0cm9rZS1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNik7CiB9CiAKKy5jc3Mtc3R5bGUt
dGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJu
aW5nLW1hcmtlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHRvcDogMXB4OyAKKyAg
ICB3aWR0aDogOXB4OworICAgIGhlaWdodDogOXB4OworICAgIG1hcmdpbjogMCAycHggMCAwOwor
ICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6
IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvV2Fybmlu
Zy5zdmcpOworfQorLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2RlTWly
cm9yLWxpbmVzIC5pbnZhbGlkLXdhcm5pbmctbWFya2VyLmNsaWNrYWJsZSB7CisgICAgY3Vyc29y
OiBwb2ludGVyOworfQorCiAuY29tcHV0ZWQgLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2Rl
TWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5jc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVydHku
aW1wbGljaXQsCiAuY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJy
b3ItbGluZXMgLmNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eS5ub3QtaW5oZXJpdGVkIHsK
ICAgICBvcGFjaXR5OiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yLmpzCmluZGV4IDVmNjQ0NTE5MTYxZDliNzM0Y2ViYTNmMmU5NTljODgwOGMxODcx
ZTAuLmM1OThlNTNlYWIyN2M3MzIzMTY3MWNiYWQ2YzQ2ZWJlODIwN2NmN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCkBAIC01NDksMTQgKzU0
OSw4NiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFz
cyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX3JlbW92ZUNo
ZWNrYm94UGxhY2Vob2xkZXIoZnJvbS5saW5lKTsKIAotICAgICAgICBpZiAoIXByb3BlcnR5LnZh
bGlkICYmIHByb3BlcnR5TmFtZUlzVmFsaWQgJiYgIXByb3BlcnR5LnRleHQudHJpbSgpLmVuZHNX
aXRoKCI6IikpIHsKKyAgICAgICAgdmFyIHByb3BlcnR5SGFzVW5uZWNlc3NhcnlQcmVmaXggPSBw
cm9wZXJ0eS5uYW1lLmluY2x1ZGVzKCItd2Via2l0LSIpICYmIFdlYkluc3BlY3Rvci5DU1NDb21w
bGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuaXNWYWxpZFByb3BlcnR5TmFtZShwcm9wZXJ0eS5u
YW1lLnJlcGxhY2UoIi13ZWJraXQtIiwgIiIpKTsKKworICAgICAgICBmdW5jdGlvbiBnZW5lcmF0
ZUludmFsaWRNYXJrZXIob3B0aW9ucykgeworICAgICAgICAgICAgdmFyIGludmFsaWRNYXJrZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKKyAgICAgICAgICAgIGludmFsaWRN
YXJrZXIuY2xhc3NOYW1lID0gImludmFsaWQtd2FybmluZy1tYXJrZXIiOworICAgICAgICAgICAg
aW52YWxpZE1hcmtlci50aXRsZSA9IG9wdGlvbnMudGl0bGU7CisKKyAgICAgICAgICAgIGlmIChv
cHRpb25zLmNvcnJlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpbnZhbGlkTWFya2VyLmNsYXNz
TGlzdC5hZGQoImNsaWNrYWJsZSIpOworICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXIuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fY29kZU1pcnJvci5yZXBsYWNlUmFuZ2Uob3B0aW9ucy5jb3JyZWN0aW9uLCBmcm9tLCB0
byk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuYXV0b2NvbXBsZXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcih0byk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5fY29tcGxldGVBdEN1cnJlbnRQb3NpdGlv
bih0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0
Qm9va21hcmsob3B0aW9ucy5mcm9tLCBpbnZhbGlkTWFya2VyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghcHJvcGVydHkuaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkKCkgJiYgIXByb3Bl
cnR5LnRleHQudHJpbSgpLmVuZHNXaXRoKCI6IikpIHsKICAgICAgICAgICAgIC8vIFRoZSBwcm9w
ZXJ0eS50ZXh0LnRyaW0oKS5lbmRzV2l0aCgiOiIpIGlzIGZvciB0aGUgc2l0dWF0aW9uIHdoZW4g
YSBwcm9wZXJ0eSBvbmx5IGhhcyBhIG5hbWUgYW5kIGNvbG9uIGFuZCB0aGUgdXNlciBsZWF2ZXMg
dGhlIHZhbHVlIGJsYW5rIChpdCBsb29rcyB3ZWlyZCB0byBoYXZlIGFuIGludmFsaWQgbWFya2Vy
IHRocm91Z2gganVzdCB0aGUgY29sb24pLgotICAgICAgICAgICAgLy8gQ3JlYXRpbmcgdGhlIHN5
bnRoZXNpemVkVGV4dCBpcyBuZWNlc3NhcnkgZm9yIGlmIHRoZSB1c2VyIGFkZHMgbXVsdGlwbGUg
c3BhY2VzIGJlZm9yZSB0aGUgdmFsdWUsIGNhdXNpbmcgdGhlIG1hcmtUZXh0IHRvIG1hcmsgb25l
IG9mIHRoZSBzcGFjZXMgaW5zdGVhZC4KLSAgICAgICAgICAgIHZhciBzeW50aGVzaXplZFRleHQg
PSBwcm9wZXJ0eS5uYW1lICsgIjogIiArIHByb3BlcnR5LnZhbHVlICsgIjsiOwotICAgICAgICAg
ICAgdmFyIHN0YXJ0ID0ge2xpbmU6IGZyb20ubGluZSwgY2g6IGZyb20uY2ggKyBzeW50aGVzaXpl
ZFRleHQuaW5kZXhPZihwcm9wZXJ0eS52YWx1ZSl9OwotICAgICAgICAgICAgdmFyIGVuZCA9IHts
aW5lOiB0by5saW5lLCBjaDogc3RhcnQuY2ggKyBwcm9wZXJ0eS52YWx1ZS5sZW5ndGh9OwogCi0g
ICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm1hcmtUZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05h
bWU6ICJpbnZhbGlkIn0pOworICAgICAgICAgICAgaWYgKHByb3BlcnR5SGFzVW5uZWNlc3NhcnlQ
cmVmaXgpIHsKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZUludmFsaWRNYXJrZXIuY2FsbCh0aGlz
LCB7CisgICAgICAgICAgICAgICAgICAgIGZyb206IGZyb20sCisgICAgICAgICAgICAgICAgICAg
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoZSAnd2Via2l0JyBwcmVmaXggaXMgbm90
IG5lY2Vzc2FyeS4iKSwKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdGlvbjogcHJvcGVydHku
dGV4dC5yZXBsYWNlKCItd2Via2l0LSIsICIiKSwKKyAgICAgICAgICAgICAgICAgICAgYXV0b2Nv
bXBsZXRlOiBmYWxzZSAKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFwcm9wZXJ0eS52YWxpZCkgeworICAgICAgICAgICAgICAgIHZhciBpbnZh
bGlkTWFya2VySW5mbzsKKworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVJc1ZhbGlk
KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IHtsaW5lOiBmcm9tLmxpbmUsIGNo
OiBmcm9tLmNoICsgcHJvcGVydHkubmFtZS5sZW5ndGggKyAyfTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGVuZCA9IHtsaW5lOiB0by5saW5lLCBjaDogc3RhcnQuY2ggKyBwcm9wZXJ0eS52YWx1
ZS5sZW5ndGh9OworCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IubWFya1Rl
eHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogImludmFsaWQifSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIHZhbHVlUmVwbGFjZW1lbnQgPSBwcm9wZXJ0eS52YWx1ZS5sZW5ndGggPyBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRoZSB2YWx1ZSAnJXMnIGlzIG5vdCB2YWxpZC4iKS5mb3JtYXQo
cHJvcGVydHkudmFsdWUpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGlzIHByb3BlcnR5IG5l
ZWRzIGEgdmFsdWUuIik7CisKKyAgICAgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlckluZm8g
PSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRpdGxlOiB2YWx1ZVJlcGxhY2VtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29ycmVjdGlvbjogcHJvcGVydHkubmFtZSArICI6ICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvY29tcGxldGU6IHRydWUgCisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNv
bXBsZXRpb25zLnByb3BlcnR5UmVxdWlyZXNXZWJraXRQcmVmaXgocHJvcGVydHkubmFtZSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlckluZm8gPSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tOiBmcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVGhlICd3ZWJraXQnIHByZWZpeCBpcyBuZWVkZWQgZm9yIHRo
aXMgcHJvcGVydHkuIiksCisgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0aW9uOiAiLXdl
YmtpdC0iICsgcHJvcGVydHkudGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21w
bGV0ZTogZmFsc2UgCisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghcHJvcGVydHlIYXNVbm5lY2Vzc2FyeVByZWZpeCkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgY2xvc2VzdFByb3BlcnR5TmFtZSA9IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9u
cy5jc3NOYW1lQ29tcGxldGlvbnMuZ2V0Rmlyc3RNYXRjaGluZ1Byb3BlcnR5KHByb3BlcnR5Lm5h
bWUpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0UHJvcGVydHlOYW1lKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTWFya2VySW5mbyA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpZCB5b3UgbWVhbiAnJXMnPyIpLmZvcm1h
dChjbG9zZXN0UHJvcGVydHlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Jy
ZWN0aW9uOiBwcm9wZXJ0eS50ZXh0LnJlcGxhY2UocHJvcGVydHkubmFtZSwgY2xvc2VzdFByb3Bl
cnR5TmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiB0cnVl
IAorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXJJbmZvID0geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyb206IGZyb20sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhlIHByb3BlcnR5ICclcycgZG9l
cyBub3QgZXhpc3QuIikuZm9ybWF0KHByb3BlcnR5Lm5hbWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGludmFsaWRNYXJrZXJJbmZvKQorICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0ZUludmFsaWRNYXJrZXIuY2FsbCh0aGlzLCBpbnZhbGlkTWFya2VySW5mbyk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254810</attachid>
            <date>2015-06-12 11:35:10 -0700</date>
            <delta_ts>2015-06-18 13:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145657-20150612113439.patch</filename>
            <type>text/plain</type>
            <size>11275</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMzMGVmMzk2YjA5OTU3ZjhlZDk2MDUxODVjMjgw
NzdhZDgwZWM5YmYuLjNlYzllN2QzZjkyZmQwMTQzN2JhMmZjYjBlZWM5NzZkY2RjYTE1MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA2LTEwICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aG93IHdhcm5pbmcgaWNvbiBmb3IgaW52YWxpZCBDU1MgcHJvcGVydGllcyBhbmQvb3IgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5nZXRGaXJzdE1hdGNoaW5nUHJvcGVydHkpOiBDYWxj
dWxhdGVzIHRoZSBsZXZlbnNodGVpbiBkaXN0YW5jZSBiZXR3ZWVuIGEgZ2l2ZW4gcHJvcGVydHkg
YW5kIGV2ZXJ5IGV4aXN0aW5nIHByb3BlcnR5IG5hbWUuICBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBu
YW1lIHdpdGggdGhlIHNtYWxsZXN0IGRpc3RhbmNlIG9yLCBpbiB0aGUgY2FzZSBvZiBtdWx0aXBs
ZSBwcm9wZXJ0aWVzIGhhdmluZyB0aGUgc2FtZSBkaXN0YW5jZSwgdGhlIGZpcnN0IHByb3BlcnR5
IGluIGFscGhhYmV0aWNhbCBvcmRlci4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0
aW9ucy5wcm90b3R5cGUucHJvcGVydHlSZXF1aXJlc1dlYmtpdFByZWZpeCk6IFJldHJ1bnMgaWYg
dGhlIHByb3BlcnR5IG5hbWUgZXhpc3RzIG9ubHkgd2l0aCBhICctd2Via2l0LScgcHJlZml4Lgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzczoKKyAgICAgICAg
KC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAu
aW52YWxpZC13YXJuaW5nLW1hcmtlcik6CisgICAgICAgICguY3NzLXN0eWxlLXRleHQtZWRpdG9y
ID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmludmFsaWQtd2FybmluZy1tYXJrZXIu
Y2xpY2thYmxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVGV4dE1hcmtlckZvclByb3BlcnR5SWZO
ZWVkZWQpOiBBIGJ1dHRvbiB3aXRoIGEgd2FybmluZyBpY29uIGlzIG5vdyBhZGRlZCB0byB0aGUg
YmVnaW5uaW5nIG9mIGFuIGludmFsaWQgcHJvcGVydHkuICBJZiB0aGlzIGJ1dHRvbiBpcyBjbGlj
a2VkLCB0aGUgcHJvcGVydHkgaXMgcmVwbGFjZWQgd2l0aCB0aGUgY2xvc2VzdCBtYXRjaGluZyBw
cm9wZXJ0eSBhbmQgdGhlIGF1dG9jb21wbGV0ZSBtZW51IGlzIG9wZW5lZC4KKwogMjAxNS0wNi0x
MSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IENTUyBSZWdpb25zIG5vdCBkaXNwbGF5aW5nIERPTSBUcmVlcyBpbiBpbnNwZWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJhOWYxNjA0ODM0ZjQ4YWQ5
Yjg4ZTU5MzkwMGM1YzFkNDAzODQ5OGMuLmY2NjMwOTE2MjcwYjIwZThiOGI0OTQ4Y2FiMzQyZTY4
NjJhNGQzNDkgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNzc3CnpjbVpwPCU2I0gzXjlE
XlB7fWN1VmhEd0hmaEVnRCUlYUY+RCRkQ3RRc1dZZkQ2YXpfbjF8XjFBQW0wezxsXjkkWQp6Rzhx
VntwUy19P2RiNm9oO0VXKWs/c0F9Y05ldE9RVF9yJUMweiZ+cTVsfCF6JGdjcU1HSiFUSTBCdVZK
IVcxeDgKejBMdFk5KWhHYmZYRiVtYWRoJnJmUXlHZFR1ZXYyZzN1RTdIR0BNKzJpYHxaQjd2fUBy
MlhUMmEmfFNxcW08Vio7CnpucCtaLTh1NE1IS0ZCMiY7RTttKThmYUd+Jl5CMCVDOy1ETUE4YWVn
MXJWMnswPmN2Jm5rQUZoLTRmRndNZjJuZAp6UitiPGVeJSU7NGUjaWwpZj5hY3tVfnZTbzJjaWE7
MXxhczNwaz92fWFnZmpFKU1KVE9zMFUjUTBoQX5iZmYhLUIKajkhZXElIUltX0xHUSptSVlqVHlD
Pmc0PTg5RnR9NWFCU0FSOW5COF8rZzcyLQoKZGVsdGEgNzEKemNtWD9jbSR+SUNeOURfKSQtWFc7
bFcoVnJPI1clbEh+RlBBQURBNjRwZiVha01GN1pGbio3e1pVQH5gXzFESFFNClZPPjZVQVhaN2lt
UnFqcFE5RGhIUDl7QGFzOXlrQzEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggZDUwMGI1
MmZhZDkyYjhmNWJiYjVjNDIwZmM0MjBlYmYzMzRhOWRkYy4uYmJlZmNkYzdhYjkyYzNiYTViOTJl
N2Q4YzI5NmU1ZjY4ZDc1YzY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMjgwLDYg
KzI4MCw1NiBAQCBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0
aW9ucwogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKTsK
ICAgICB9CisKKyAgICBwcm9wZXJ0eVJlcXVpcmVzV2Via2l0UHJlZml4KG5hbWUpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVzLmluY2x1ZGVzKCItd2Via2l0LSIgKyBuYW1lKSAm
JiAhdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpOworICAgIH0KKworICAgIGdldEZpcnN0TWF0
Y2hpbmdQcm9wZXJ0eShuYW1lKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gbGV2ZW5zaHRlaW5E
aXN0YW5jZShzLCB0KSB7CisgICAgICAgICAgICB2YXIgbSA9IHMubGVuZ3RoOworICAgICAgICAg
ICAgdmFyIG4gPSB0Lmxlbmd0aDsKKyAgICAgICAgICAgIHZhciBkID0gbmV3IEFycmF5KG0gKyAx
KTsKKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgZFtpXSA9IG5ldyBBcnJheShuICsgMSk7CisgICAgICAgICAgICAgICAgZFtpXVsw
XSA9IGk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDw9
IG47ICsraikKKyAgICAgICAgICAgICAgICBkWzBdW2pdID0gajsKKworICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IDE7IGogPD0gbjsgKytqKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDE7IGkgPD0gbTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzW2kgLSAxXSA9PT0g
dFtqIC0gMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBkW2ldW2pdID0gZFtpIC0gMV1baiAt
IDFdOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBkZWxldGlvbiA9IGRbaSAtIDFdW2pdICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpbnNlcnRpb24gPSBkW2ldW2ogLSAxXSArIDE7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc3Vic3RpdHV0aW9uID0gZFtpIC0gMV1baiAtIDFdICsgMTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRbaV1bal0gPSBNYXRoLm1pbihkZWxldGlvbiwgaW5zZXJ0aW9uLCBzdWJzdGl0
dXRpb24pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZFttXVtuXTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBiZXN0TWF0Y2hlcyA9IFt7ZGlzdGFuY2U6IEluZmluaXR5LCBuYW1lOiBudWxsfV07
CisKKyAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgdGhpcy5fdmFsdWVzKSB7CisgICAgICAg
ICAgICB2YXIgZGlzdGFuY2UgPSBsZXZlbnNodGVpbkRpc3RhbmNlKHByb3BlcnR5LCBuYW1lKTsK
KworICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgYmVzdE1hdGNoZXNbMF0uZGlzdGFuY2UpCisg
ICAgICAgICAgICAgICAgYmVzdE1hdGNoZXMgPSBbe2Rpc3RhbmNlOiBkaXN0YW5jZSwgbmFtZTog
cHJvcGVydHl9XTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpc3RhbmNlID09PSBiZXN0TWF0Y2hl
c1swXS5kaXN0YW5jZSkKKyAgICAgICAgICAgICAgICBiZXN0TWF0Y2hlcy5wdXNoKHtkaXN0YW5j
ZTogZGlzdGFuY2UsIG5hbWU6IHByb3BlcnR5fSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gYmVzdE1hdGNoZXMubGVuZ3RoIDwgMyA/IGJlc3RNYXRjaGVzWzBdLm5hbWUgOiBmYWxzZTsK
KyAgICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRp
b25zID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yLmNzcwppbmRleCBkNDA0MDVlODdjZmE4OWU3MDFmMjk0Y2VhMWFkNjBjYWVlZWU0MDAxLi43
ZDcyYmFhYmI0ODI5NWNjOThjZjkwMGVmMDlkMjkyOWI2MGI4ZTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCkBAIC03Myw2ICs3MywyMSBA
QAogICAgIC13ZWJraXQtdGV4dC1zdHJva2UtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjYpOwog
fQogCisuY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGlu
ZXMgLmludmFsaWQtd2FybmluZy1tYXJrZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICB0b3A6IDFweDsgCisgICAgd2lkdGg6IDlweDsKKyAgICBoZWlnaHQ6IDlweDsKKyAgICBtYXJn
aW46IDAgMnB4IDAgMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGJvcmRlcjogbm9uZTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
Li4vSW1hZ2VzL1dhcm5pbmcuc3ZnKTsKK30KKy5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29k
ZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJuaW5nLW1hcmtlci5jbGlja2Fi
bGUgeworICAgIGN1cnNvcjogcG9pbnRlcjsKK30KKwogLmNvbXB1dGVkIC5jc3Mtc3R5bGUtdGV4
dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuY3NzLXN0eWxlLWRlY2xh
cmF0aW9uLXByb3BlcnR5LmltcGxpY2l0LAogLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2Rl
TWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5jc3Mtc3R5bGUtZGVjbGFyYXRpb24tcHJvcGVydHku
bm90LWluaGVyaXRlZCB7CiAgICAgb3BhY2l0eTogMC41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwppbmRleCA1ZjY0NDUxOTE2MWQ5YjczNGNlYmEz
ZjJlOTU5Yzg4MDhjMTg3MWUwLi5jNTk4ZTUzZWFiMjdjNzMyMzE2NzFjYmFkNmM0NmViZTgyMDdj
ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5q
cwpAQCAtNTQ5LDE0ICs1NDksODYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKIAogICAgICAg
ICB0aGlzLl9yZW1vdmVDaGVja2JveFBsYWNlaG9sZGVyKGZyb20ubGluZSk7CiAKLSAgICAgICAg
aWYgKCFwcm9wZXJ0eS52YWxpZCAmJiBwcm9wZXJ0eU5hbWVJc1ZhbGlkICYmICFwcm9wZXJ0eS50
ZXh0LnRyaW0oKS5lbmRzV2l0aCgiOiIpKSB7CisgICAgICAgIHZhciBwcm9wZXJ0eUhhc1VubmVj
ZXNzYXJ5UHJlZml4ID0gcHJvcGVydHkubmFtZS5pbmNsdWRlcygiLXdlYmtpdC0iKSAmJiBXZWJJ
bnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0
eU5hbWUocHJvcGVydHkubmFtZS5yZXBsYWNlKCItd2Via2l0LSIsICIiKSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gZ2VuZXJhdGVJbnZhbGlkTWFya2VyKG9wdGlvbnMpIHsKKyAgICAgICAgICAgIHZh
ciBpbnZhbGlkTWFya2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAg
ICAgICAgICBpbnZhbGlkTWFya2VyLmNsYXNzTmFtZSA9ICJpbnZhbGlkLXdhcm5pbmctbWFya2Vy
IjsKKyAgICAgICAgICAgIGludmFsaWRNYXJrZXIudGl0bGUgPSBvcHRpb25zLnRpdGxlOworCisg
ICAgICAgICAgICBpZiAob3B0aW9ucy5jb3JyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaW52
YWxpZE1hcmtlci5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTsKKyAgICAgICAgICAgICAgICBp
bnZhbGlkTWFya2VyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVwbGFjZVJhbmdlKG9wdGlvbnMuY29y
cmVjdGlvbiwgZnJvbSwgdG8pOworCisgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmF1
dG9jb21wbGV0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5z
ZXRDdXJzb3IodG8pOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuX2NvbXBsZXRl
QXRDdXJyZW50UG9zaXRpb24odHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLnNldEJvb2ttYXJrKG9wdGlvbnMuZnJvbSwgaW52YWxpZE1hcmtlcik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIXByb3BlcnR5Lmhhc090aGVyVmVuZG9yTmFtZU9yS2V5
d29yZCgpICYmICFwcm9wZXJ0eS50ZXh0LnRyaW0oKS5lbmRzV2l0aCgiOiIpKSB7CiAgICAgICAg
ICAgICAvLyBUaGUgcHJvcGVydHkudGV4dC50cmltKCkuZW5kc1dpdGgoIjoiKSBpcyBmb3IgdGhl
IHNpdHVhdGlvbiB3aGVuIGEgcHJvcGVydHkgb25seSBoYXMgYSBuYW1lIGFuZCBjb2xvbiBhbmQg
dGhlIHVzZXIgbGVhdmVzIHRoZSB2YWx1ZSBibGFuayAoaXQgbG9va3Mgd2VpcmQgdG8gaGF2ZSBh
biBpbnZhbGlkIG1hcmtlciB0aHJvdWdoIGp1c3QgdGhlIGNvbG9uKS4KLSAgICAgICAgICAgIC8v
IENyZWF0aW5nIHRoZSBzeW50aGVzaXplZFRleHQgaXMgbmVjZXNzYXJ5IGZvciBpZiB0aGUgdXNl
ciBhZGRzIG11bHRpcGxlIHNwYWNlcyBiZWZvcmUgdGhlIHZhbHVlLCBjYXVzaW5nIHRoZSBtYXJr
VGV4dCB0byBtYXJrIG9uZSBvZiB0aGUgc3BhY2VzIGluc3RlYWQuCi0gICAgICAgICAgICB2YXIg
c3ludGhlc2l6ZWRUZXh0ID0gcHJvcGVydHkubmFtZSArICI6ICIgKyBwcm9wZXJ0eS52YWx1ZSAr
ICI7IjsKLSAgICAgICAgICAgIHZhciBzdGFydCA9IHtsaW5lOiBmcm9tLmxpbmUsIGNoOiBmcm9t
LmNoICsgc3ludGhlc2l6ZWRUZXh0LmluZGV4T2YocHJvcGVydHkudmFsdWUpfTsKLSAgICAgICAg
ICAgIHZhciBlbmQgPSB7bGluZTogdG8ubGluZSwgY2g6IHN0YXJ0LmNoICsgcHJvcGVydHkudmFs
dWUubGVuZ3RofTsKIAotICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5tYXJrVGV4dChzdGFy
dCwgZW5kLCB7Y2xhc3NOYW1lOiAiaW52YWxpZCJ9KTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
eUhhc1VubmVjZXNzYXJ5UHJlZml4KSB7CisgICAgICAgICAgICAgICAgZ2VuZXJhdGVJbnZhbGlk
TWFya2VyLmNhbGwodGhpcywgeworICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLAorICAg
ICAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGUgJ3dlYmtp
dCcgcHJlZml4IGlzIG5vdCBuZWNlc3NhcnkuIiksCisgICAgICAgICAgICAgICAgICAgIGNvcnJl
Y3Rpb246IHByb3BlcnR5LnRleHQucmVwbGFjZSgiLXdlYmtpdC0iLCAiIiksCisgICAgICAgICAg
ICAgICAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2UgCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcHJvcGVydHkudmFsaWQpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgaW52YWxpZE1hcmtlckluZm87CisKKyAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlOYW1lSXNWYWxpZCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSB7bGlu
ZTogZnJvbS5saW5lLCBjaDogZnJvbS5jaCArIHByb3BlcnR5Lm5hbWUubGVuZ3RoICsgMn07Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSB7bGluZTogdG8ubGluZSwgY2g6IHN0YXJ0LmNo
ICsgcHJvcGVydHkudmFsdWUubGVuZ3RofTsKKworICAgICAgICAgICAgICAgICAgICB0aGlzLl9j
b2RlTWlycm9yLm1hcmtUZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05hbWU6ICJpbnZhbGlkIn0pOwor
CisgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZVJlcGxhY2VtZW50ID0gcHJvcGVydHkudmFs
dWUubGVuZ3RoID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGUgdmFsdWUgJyVzJyBpcyBub3Qg
dmFsaWQuIikuZm9ybWF0KHByb3BlcnR5LnZhbHVlKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
VGhpcyBwcm9wZXJ0eSBuZWVkcyBhIHZhbHVlLiIpOworCisgICAgICAgICAgICAgICAgICAgIGlu
dmFsaWRNYXJrZXJJbmZvID0geworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogc3RhcnQs
CisgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWVSZXBsYWNlbWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvcnJlY3Rpb246IHByb3BlcnR5Lm5hbWUgKyAiOiAiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiB0cnVlIAorICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoV2ViSW5zcGVjdG9yLkNTU0NvbXBs
ZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5wcm9wZXJ0eVJlcXVpcmVzV2Via2l0UHJlZml4KHBy
b3BlcnR5Lm5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXJJbmZvID0g
eworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogZnJvbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoZSAnd2Via2l0JyBwcmVmaXgg
aXMgbmVlZGVkIGZvciB0aGlzIHByb3BlcnR5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29ycmVjdGlvbjogIi13ZWJraXQtIiArIHByb3BlcnR5LnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvY29tcGxldGU6IGZhbHNlIAorICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXByb3BlcnR5SGFzVW5uZWNlc3NhcnlQcmVmaXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIGNsb3Nlc3RQcm9wZXJ0eU5hbWUgPSBXZWJJbnNwZWN0
b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmdldEZpcnN0TWF0Y2hpbmdQcm9w
ZXJ0eShwcm9wZXJ0eS5uYW1lKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdFBy
b3BlcnR5TmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlckluZm8g
PSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbTogZnJvbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaWQgeW91IG1l
YW4gJyVzJz8iKS5mb3JtYXQoY2xvc2VzdFByb3BlcnR5TmFtZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29ycmVjdGlvbjogcHJvcGVydHkudGV4dC5yZXBsYWNlKHByb3BlcnR5Lm5h
bWUsIGNsb3Nlc3RQcm9wZXJ0eU5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG9jb21wbGV0ZTogdHJ1ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkTWFya2Vy
SW5mbyA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBmcm9tLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoZSBw
cm9wZXJ0eSAnJXMnIGRvZXMgbm90IGV4aXN0LiIpLmZvcm1hdChwcm9wZXJ0eS5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkTWFya2VySW5mbykKKyAgICAg
ICAgICAgICAgICAgICAgZ2VuZXJhdGVJbnZhbGlkTWFya2VyLmNhbGwodGhpcywgaW52YWxpZE1h
cmtlckluZm8pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255127</attachid>
            <date>2015-06-18 13:32:08 -0700</date>
            <delta_ts>2015-06-23 19:15:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145657-20150618133131.patch</filename>
            <type>text/plain</type>
            <size>16352</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDBkOGJjZGVkNjhhYzY5N2Q3N2QyM2QwZDU0NzM0
OWY1YzNmYjJjNGIuLmM0ZTAwZWM3YTFkZTA4MGZlMzIyY2Y0NzMxMzdlNzg5YjM0N2I2MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA2LTE4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aG93IHdhcm5pbmcgaWNvbiBmb3IgaW52YWxpZCBDU1MgcHJvcGVydGllcyBhbmQvb3IgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5nZXRDbG9zZXN0UHJvcGVydHlOYW1lKTogQ2FsY3Vs
YXRlcyB0aGUgbGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiBhIGdpdmVuIHByb3BlcnR5IGFu
ZCBldmVyeSBleGlzdGluZyBwcm9wZXJ0eSBuYW1lLiAgUmV0dXJucyB0aGUgcHJvcGVydHkgbmFt
ZSB3aXRoIHRoZSBzbWFsbGVzdCBkaXN0YW5jZSBvciwgaW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUg
cHJvcGVydGllcyBoYXZpbmcgdGhlIHNhbWUgZGlzdGFuY2UsIHRoZSBmaXJzdCBwcm9wZXJ0eSBp
biBhbHBoYWJldGljYWwgb3JkZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMucHJvdG90eXBlLnByb3BlcnR5UmVxdWlyZXNXZWJraXRQcmVmaXgpOiBSZXRydW5zIGlmIHRo
ZSBwcm9wZXJ0eSBuYW1lIGV4aXN0cyBvbmx5IHdpdGggYSAnLXdlYmtpdC0nIHByZWZpeC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5jc3M6CisgICAgICAgICgu
Y3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmlu
dmFsaWQtd2FybmluZy1tYXJrZXIpOgorICAgICAgICAoLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+
IC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5pbnZhbGlkLXdhcm5pbmctbWFya2VyLmNs
aWNrYWJsZTpob3Zlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVRleHRNYXJrZXJGb3JQcm9wZXJ0
eUlmTmVlZGVkLmR1cGxpY2F0ZVByb3BlcnR5RXhpc3RzQmVsb3cpOiBEZXRlcm1pbmVzIGlmIHRo
ZXJlIGV4aXN0cyBhIHByb3BlcnR5IGJlbG93ICh2aXN1YWxseSkgdGhlIGdpdmVuIHByb3BlcnR5
IHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVy
dHlJZk5lZWRlZC5nZW5lcmF0ZUludmFsaWRNYXJrZXIpOiBDcmVhdGVzIGEgd2FybmluZyBpY29u
IG1hcmtlciBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gd2l0aCB0aGUgZ2l2ZW4gdGl0bGUuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBl
Ll9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZC5pbnN0YW5jZXNPZlByb3BlcnR5
KTogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHByb3BlcnRpZXMgaW4gdGhlIHJ1bGUgdGhhdCBoYXZl
IHRoZSBzYW1lIG5hbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRl
ZCk6IEEgYnV0dG9uIHdpdGggYSB3YXJuaW5nIGljb24gaXMgbm93IGFkZGVkIHRvIHRoZSBiZWdp
bm5pbmcgb2YgYW4gaW52YWxpZCBwcm9wZXJ0eS4gIElmIHRoaXMgYnV0dG9uIGlzIGNsaWNrZWQs
IHRoZSBwcm9wZXJ0eSBpcyByZXBsYWNlZCB3aXRoIHRoZSBjbG9zZXN0IG1hdGNoaW5nIHByb3Bl
cnR5IGFuZCB0aGUgYXV0b2NvbXBsZXRlIG1lbnUgaXMgb3BlbmVkLgorCiAyMDE1LTA2LTE4ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogSW1wcm92ZSBhIGZldyBtb3JlIG5vZGUgcHJldmlldyB0eXBlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKaW5kZXggYmE5ZjE2MDQ4MzRmNDhhZDliODhlNTkzOTAwYzVjMWQ0
MDM4NDk4Yy4uYzQzNzNhOTlmODQ4MmEzYzZlN2NmNGVmYjcyNWQ0Yjc5ZTFmYzFiMyAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSAxNjE3CnpjbWQ1K3V9Wl5HNnVuWmdsTHtnI3hQKmNma3Jw
fSM0d2wkOTQhWEZ3Mm50M1VYfFhvTndBTjBjOzE5P0gyZDkzNAp6NiM1O3lJaGR8fmkwOGk3NU4o
ckV1fHRRSzxoe0s2P3ohaWxjT0V9dCZ0SXxiUl5CYT1NbEdfYmYlaCQwV0t0RGgKek4hbGFfUG8y
JiVGSG5XYmJWV0QjUV4jSjc/eSQzbFJUSFpncjcxekBTan1RMiRpVXUtUGhGMlhSX3lPKCM5THZw
Cnp4MDdGdnlQUyY9bjg8Ry1PQVFFWUpUMUtJeiNrd15PVC01TFI0fi07SStZT1pndjlBWCRRIWIl
a3hhJWtRaSlDPgp6KWpLJU1KLUh5WjMyPkpudjwhJkowV2djTUZATH5KZnZzWVgxdUEpSF8tQ1Y3
WmFgRXFlKDlxe0ctYUw9cURfbmkKelgzdE5paT58amFWfjlHUkRZcGNLK3x8ajV2TyRYbXJDTCZ0
NHRpfigjdWsqeGBaYntMVkZtZT11PHwqVVk0dyFfCnpac3VodHt6JVQkUUFpTVR4JlJAJDBBOUg4
MUp4KVBqeDQkK1JtMGJ5Q3w8cVFVR05aZmJIKk1aLXEkazFfMk1xdwp6Z1czd3RSXyMkWEYqY05R
Z1ckPmFgfTY5dTlkV2QoeGs/KT5WZVhpWFBUTyFTP3lJYHpnSiNWektEMUdeeSUlVVoKeCs+TWxp
bkopRyF6TiRlbk8zQkM0aH1mWWNTQGA4PkN0K3JCMXAzJUFlU2k1IUdJN3oqX098PHtPVyVyb0ti
aW1sCgpkZWx0YSAzNgp1Y21WKzwwTmVrVDxPNzcmMUYkSlZsYkoqZXY7UlU4MmVTaTlLYXJDbjtn
eXBnO31FbUc7I20oTndoITM9CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCBlNjE5YTgzMGQwMjQ2MDA1NDAzMmM0
MjlhNmFlMzc0YzhiYmU0MDQyLi5lNjI1ZmE5ZWIyNGJmNWFhZjMyZTBjZjNlY2ViMDA4YjMwM2Vl
OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcwpAQCAtNzQ4LDYgKzc0OCwzOSBAQCBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoU3RyaW5nLnByb3RvdHlwZSwgInJlbW92ZVdvcmRCcmVha0NoYXJhY3RlcnMiLAogICAgIH0K
IH0pOwogCitPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgImxldmVuc2h0
ZWluRGlzdGFuY2UiLAoreworICAgIHZhbHVlOiBmdW5jdGlvbihzKQorICAgIHsKKyAgICAgICAg
dmFyIG0gPSB0aGlzLmxlbmd0aDsKKyAgICAgICAgdmFyIG4gPSBzLmxlbmd0aDsKKyAgICAgICAg
dmFyIGQgPSBuZXcgQXJyYXkobSArIDEpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9
IG07ICsraSkgeworICAgICAgICAgICAgZFtpXSA9IG5ldyBBcnJheShuICsgMSk7CisgICAgICAg
ICAgICBkW2ldWzBdID0gaTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGogPSAwOyBq
IDw9IG47ICsraikKKyAgICAgICAgICAgIGRbMF1bal0gPSBqOworCisgICAgICAgIGZvciAodmFy
IGogPSAxOyBqIDw9IG47ICsraikgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0g
bTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXNbaSAtIDFdID09PSBzW2ogLSAxXSkK
KyAgICAgICAgICAgICAgICAgICAgZFtpXVtqXSA9IGRbaSAtIDFdW2ogLSAxXTsKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRlbGV0aW9uID0gZFtpIC0g
MV1bal0gKyAxOworICAgICAgICAgICAgICAgICAgICB2YXIgaW5zZXJ0aW9uID0gZFtpXVtqIC0g
MV0gKyAxOworICAgICAgICAgICAgICAgICAgICB2YXIgc3Vic3RpdHV0aW9uID0gZFtpIC0gMV1b
aiAtIDFdICsgMTsKKyAgICAgICAgICAgICAgICAgICAgZFtpXVtqXSA9IE1hdGgubWluKGRlbGV0
aW9uLCBpbnNlcnRpb24sIHN1YnN0aXR1dGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRbbV1bbl07CisgICAgfQorfSk7
CisKIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOdW1iZXIsICJjb25zdHJhaW4iLAogewogICAgIHZh
bHVlOiBmdW5jdGlvbihudW0sIG1pbiwgbWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCmluZGV4
IGQ1MDBiNTJmYWQ5MmI4ZjViYmI1YzQyMGZjNDIwZWJmMzM0YTlkZGMuLjU1NTE1YTljZjJhY2I1
YTBiOGQ2MmNjOWM4OGFjZTVkYTgxNTYwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKQEAg
LTI4MCw2ICsyODAsMjcgQEAgV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NT
Q29tcGxldGlvbnMKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXMuaW5jbHVkZXMo
bmFtZSk7CiAgICAgfQorCisgICAgcHJvcGVydHlSZXF1aXJlc1dlYmtpdFByZWZpeChuYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5pbmNsdWRlcygiLXdlYmtpdC0iICsg
bmFtZSkgJiYgIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKTsKKyAgICB9CisKKyAgICBnZXRD
bG9zZXN0UHJvcGVydHlOYW1lKG5hbWUpCisgICAgeworICAgICAgICB2YXIgYmVzdE1hdGNoZXMg
PSBbe2Rpc3RhbmNlOiBJbmZpbml0eSwgbmFtZTogbnVsbH1dOworCisgICAgICAgIGZvciAodmFy
IHByb3BlcnR5IG9mIHRoaXMuX3ZhbHVlcykgeworICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0g
bmFtZS5sZXZlbnNodGVpbkRpc3RhbmNlKHByb3BlcnR5KTsKKworICAgICAgICAgICAgaWYgKGRp
c3RhbmNlIDwgYmVzdE1hdGNoZXNbMF0uZGlzdGFuY2UpCisgICAgICAgICAgICAgICAgYmVzdE1h
dGNoZXMgPSBbe2Rpc3RhbmNlLCBuYW1lOiBwcm9wZXJ0eX1dOworICAgICAgICAgICAgZWxzZSBp
ZiAoZGlzdGFuY2UgPT09IGJlc3RNYXRjaGVzWzBdLmRpc3RhbmNlKQorICAgICAgICAgICAgICAg
IGJlc3RNYXRjaGVzLnB1c2goe2Rpc3RhbmNlLCBuYW1lOiBwcm9wZXJ0eX0pOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIGJlc3RNYXRjaGVzLmxlbmd0aCA8IDMgPyBiZXN0TWF0Y2hlc1sw
XS5uYW1lIDogZmFsc2U7CisgICAgfQogfTsKIAogV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25z
LmNzc05hbWVDb21wbGV0aW9ucyA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5jc3MKaW5kZXggZDQwNDA1ZTg3Y2ZhODllNzAxZjI5NGNlYTFh
ZDYwY2FlZWVlNDAwMS4uODQyYzE5ZDk2OTMzMmYxYzYzOWVmNzU5MmIzYzYxNGIyOTkzYTAyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcwpA
QCAtNzMsNiArNzMsMjIgQEAKICAgICAtd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yOiByZ2JhKDI1
NSwgMCwgMCwgMC42KTsKIH0KIAorLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9y
IC5Db2RlTWlycm9yLWxpbmVzIC5pbnZhbGlkLXdhcm5pbmctbWFya2VyIHsKKyAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgdG9wOiAxcHg7IAorICAgIHdpZHRoOiA5cHg7CisgICAgaGVpZ2h0
OiA5cHg7CisgICAgbWFyZ2luOiAwIDJweCAwIDA7CisgICAgcGFkZGluZzogMDsKKyAgICBib3Jk
ZXI6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKC4uL0ltYWdlcy9XYXJuaW5nLnN2Zyk7Cit9CisKKy5jc3Mtc3R5bGUt
dGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJu
aW5nLW1hcmtlci5jbGlja2FibGU6aG92ZXIgeworICAgIC13ZWJraXQtZmlsdGVyOiBicmlnaHRu
ZXNzKDAuOSk7Cit9CisKIC5jb21wdXRlZCAuY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVN
aXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmNzcy1zdHlsZS1kZWNsYXJhdGlvbi1wcm9wZXJ0eS5p
bXBsaWNpdCwKIC5jc3Mtc3R5bGUtdGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJv
ci1saW5lcyAuY3NzLXN0eWxlLWRlY2xhcmF0aW9uLXByb3BlcnR5Lm5vdC1pbmhlcml0ZWQgewog
ICAgIG9wYWNpdHk6IDAuNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRl
eHRFZGl0b3IuanMKaW5kZXggNWY2NDQ1MTkxNjFkOWI3MzRjZWJhM2YyZTk1OWM4ODA4YzE4NzFl
MC4uYjFmYzIzODljZDYxZDlkOTgyNDVhNGNjMGE5YzZhMTc1MjYxYjA2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKQEAgLTUwNCw2ICs1MDQs
MjAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJy
b3Iuc2V0VW5pcXVlQm9va21hcmsodG8sIGFycm93RWxlbWVudCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBmdW5jdGlvbiBkdXBsaWNhdGVQcm9wZXJ0eUV4aXN0c0JlbG93KGNzc1Byb3BlcnR5KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcHJvcGVydHlGb3VuZCA9IGZhbHNlOworCisgICAg
ICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09PSBjc3NQcm9wZXJ0eSkKKyAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHkubmFtZSA9PT0gY3NzUHJvcGVydHkubmFtZSAmJiBwcm9wZXJ0eUZvdW5kKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgdmFyIHByb3BlcnR5TmFtZUlz
VmFsaWQgPSBmYWxzZTsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5j
c3NOYW1lQ29tcGxldGlvbnMpCiAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVJc1ZhbGlkID0gV2Vi
SW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5pc1ZhbGlkUHJvcGVy
dHlOYW1lKHByb3BlcnR5Lm5hbWUpOwpAQCAtNTIxLDcgKzUzNSw3IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25U
ZXh0RWRpdG9yCiAKICAgICAgICAgaWYgKCFwcm9wZXJ0eS52YWxpZCAmJiBwcm9wZXJ0eS5oYXNP
dGhlclZlbmRvck5hbWVPcktleXdvcmQoKSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgi
b3RoZXItdmVuZG9yIik7Ci0gICAgICAgIGVsc2UgaWYgKCFwcm9wZXJ0eS52YWxpZCAmJiAhcHJv
cGVydHlOYW1lSXNWYWxpZCkKKyAgICAgICAgZWxzZSBpZiAoIXByb3BlcnR5LnZhbGlkICYmICgh
cHJvcGVydHlOYW1lSXNWYWxpZCB8fCBkdXBsaWNhdGVQcm9wZXJ0eUV4aXN0c0JlbG93LmNhbGwo
dGhpcywgcHJvcGVydHkpKSkKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiaW52YWxpZCIp
OwogCiAgICAgICAgIGlmICghcHJvcGVydHkuZW5hYmxlZCkKQEAgLTU0OSwxNSArNTYzLDEzMiBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgIHRoaXMuX3JlbW92ZUNoZWNrYm94
UGxhY2Vob2xkZXIoZnJvbS5saW5lKTsKIAotICAgICAgICBpZiAoIXByb3BlcnR5LnZhbGlkICYm
IHByb3BlcnR5TmFtZUlzVmFsaWQgJiYgIXByb3BlcnR5LnRleHQudHJpbSgpLmVuZHNXaXRoKCI6
IikpIHsKLSAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eS50ZXh0LnRyaW0oKS5lbmRzV2l0aCgi
OiIpIGlzIGZvciB0aGUgc2l0dWF0aW9uIHdoZW4gYSBwcm9wZXJ0eSBvbmx5IGhhcyBhIG5hbWUg
YW5kIGNvbG9uIGFuZCB0aGUgdXNlciBsZWF2ZXMgdGhlIHZhbHVlIGJsYW5rIChpdCBsb29rcyB3
ZWlyZCB0byBoYXZlIGFuIGludmFsaWQgbWFya2VyIHRocm91Z2gganVzdCB0aGUgY29sb24pLgot
ICAgICAgICAgICAgLy8gQ3JlYXRpbmcgdGhlIHN5bnRoZXNpemVkVGV4dCBpcyBuZWNlc3Nhcnkg
Zm9yIGlmIHRoZSB1c2VyIGFkZHMgbXVsdGlwbGUgc3BhY2VzIGJlZm9yZSB0aGUgdmFsdWUsIGNh
dXNpbmcgdGhlIG1hcmtUZXh0IHRvIG1hcmsgb25lIG9mIHRoZSBzcGFjZXMgaW5zdGVhZC4KLSAg
ICAgICAgICAgIHZhciBzeW50aGVzaXplZFRleHQgPSBwcm9wZXJ0eS5uYW1lICsgIjogIiArIHBy
b3BlcnR5LnZhbHVlICsgIjsiOwotICAgICAgICAgICAgdmFyIHN0YXJ0ID0ge2xpbmU6IGZyb20u
bGluZSwgY2g6IGZyb20uY2ggKyBzeW50aGVzaXplZFRleHQuaW5kZXhPZihwcm9wZXJ0eS52YWx1
ZSl9OworICAgICAgICBpZiAocHJvcGVydHkuaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkKCkg
fHwgcHJvcGVydHkudGV4dC50cmltKCkuZW5kc1dpdGgoIjoiKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB2YXIgcHJvcGVydHlIYXNVbm5lY2Vzc2FyeVByZWZpeCA9IHByb3BlcnR5
Lm5hbWUuc3RhcnRzV2l0aCgiLXdlYmtpdC0iKSAmJiBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0eU5hbWUocHJvcGVydHkuY2Fub25p
Y2FsTmFtZSk7CisKKyAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVJbnZhbGlkTWFya2VyKG9wdGlv
bnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpbnZhbGlkTWFya2VyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgICAgICBpbnZhbGlkTWFya2VyLmNsYXNz
TmFtZSA9ICJpbnZhbGlkLXdhcm5pbmctbWFya2VyIjsKKyAgICAgICAgICAgIGludmFsaWRNYXJr
ZXIudGl0bGUgPSBvcHRpb25zLnRpdGxlOworCisgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlv
bnMuY29ycmVjdGlvbiA9PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICAvLyBBbGxvdyBm
b3IgYmxhbmsgc3RyaW5ncworICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXIuY2xhc3NMaXN0
LmFkZCgiY2xpY2thYmxlIik7CisgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlci5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9jb2RlTWlycm9yLnJlcGxhY2VSYW5nZShvcHRpb25zLmNvcnJlY3Rpb24sIGZyb20sIHRvKTsK
KworICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5hdXRvY29tcGxldGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vyc29yKHRvKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLl9jb21wbGV0ZUF0Q3VycmVudFBvc2l0aW9uKHRy
dWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRCb29r
bWFyayhvcHRpb25zLnBvc2l0aW9uLCBpbnZhbGlkTWFya2VyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGluc3RhbmNlc09mUHJvcGVydHkocHJvcGVydHlOYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgY291bnQgPSAwOworCisgICAgICAgICAgICBmb3IgKHZhciBwcm9w
ZXJ0eSBvZiB0aGlzLl9zdHlsZS5wcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBy
b3BlcnR5Lm5hbWUgPT09IHByb3BlcnR5TmFtZSkKKyAgICAgICAgICAgICAgICAgICAgKytjb3Vu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAgICAgICB9
CisKKyAgICAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHRoaXMgcHJvcGVydHkgbmFtZSBpcyBsaXN0
ZWQgaW4gdGhlIHJ1bGUuCisgICAgICAgIHZhciBpbnN0YW5jZXMgPSBpbnN0YW5jZXNPZlByb3Bl
cnR5LmNhbGwodGhpcywgcHJvcGVydHkubmFtZSk7CisgICAgICAgIHZhciBpbnZhbGlkTWFya2Vy
SW5mbzsKKworICAgICAgICBpZiAocHJvcGVydHlIYXNVbm5lY2Vzc2FyeVByZWZpeCAmJiAhaW5z
dGFuY2VzT2ZQcm9wZXJ0eS5jYWxsKHRoaXMsIHByb3BlcnR5LmNhbm9uaWNhbE5hbWUpKSB7Cisg
ICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGhhcyBhIHByZWZpeCBhbmQgaXMgdmFsaWQgd2l0
aG91dCB0aGUgcHJlZml4IGFuZCB0aGUgcnVsZSBjb250YWluaW5nIHRoaXMgcHJvcGVydHkgZG9l
cyBub3QgaGF2ZSB0aGUgdW5wcmVmaXhlZCB2ZXJzaW9uIG9mIHRoZSBwcm9wZXJ0eS4KKyAgICAg
ICAgICAgIGdlbmVyYXRlSW52YWxpZE1hcmtlci5jYWxsKHRoaXMsIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbjogZnJvbSwKKyAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUaGUgJ3dlYmtpdCcgcHJlZml4IGlzIG5vdCBuZWNlc3NhcnkuXG5EdXBsaWNhdGUg
d2l0aG91dCB0aGUgcHJlZml4PyIpLAorICAgICAgICAgICAgICAgIGNvcnJlY3Rpb246IHByb3Bl
cnR5LnRleHQgKyAiXG4iICsgcHJvcGVydHkudGV4dC5yZXBsYWNlKCItd2Via2l0LSIsICIiKSwK
KyAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IGZhbHNlCisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSBlbHNlIGlmIChpbnN0YW5jZXMgPiAxKSB7CisgICAgICAgICAgICBpbnZhbGlkTWFy
a2VySW5mbyA9IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogZnJvbSwKKyAgICAgICAgICAg
ICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXBsaWNhdGUgcHJvcGVydHkgJyVz
Jy5cbkRlbGV0ZSB0aGlzIHByb3BlcnR5PyIpLmZvcm1hdChwcm9wZXJ0eS5uYW1lKSwKKyAgICAg
ICAgICAgICAgICBjb3JyZWN0aW9uOiAiIiwKKyAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6
IGZhbHNlCisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByb3BlcnR5
LnZhbGlkKSB7CisgICAgICAgICAgICBpZiAoaW52YWxpZE1hcmtlckluZm8pCisgICAgICAgICAg
ICAgICAgZ2VuZXJhdGVJbnZhbGlkTWFya2VyLmNhbGwodGhpcywgaW52YWxpZE1hcmtlckluZm8p
OworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvcGVy
dHlOYW1lSXNWYWxpZCkgeworICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5J3MgbmFtZSBpcyB2
YWxpZCBidXQgaXRzIHZhbHVlIGlzIG5vdCAoZWl0aGVyIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9y
IHRoaXMgcHJvcGVydHkgb3IgdGhlcmUgaXMgbm8gdmFsdWUpLgorICAgICAgICAgICAgdmFyIHN0
YXJ0ID0ge2xpbmU6IGZyb20ubGluZSwgY2g6IGZyb20uY2ggKyBwcm9wZXJ0eS5uYW1lLmxlbmd0
aCArIDJ9OwogICAgICAgICAgICAgdmFyIGVuZCA9IHtsaW5lOiB0by5saW5lLCBjaDogc3RhcnQu
Y2ggKyBwcm9wZXJ0eS52YWx1ZS5sZW5ndGh9OwogCiAgICAgICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLm1hcmtUZXh0KHN0YXJ0LCBlbmQsIHtjbGFzc05hbWU6ICJpbnZhbGlkIn0pOworCisgICAg
ICAgICAgICB2YXIgdmFsdWVSZXBsYWNlbWVudCA9IHByb3BlcnR5LnZhbHVlLmxlbmd0aCA/IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVGhlIHZhbHVlICclcycgaXMgbm90IHN1cHBvcnRlZCBmb3Ig
dGhpcyBwcm9wZXJ0eS5cbkRlbGV0ZSBhbmQgb3BlbiBhdXRvY29tcGxldGU/IikuZm9ybWF0KHBy
b3BlcnR5LnZhbHVlKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhpcyBwcm9wZXJ0eSBuZWVk
cyBhIHZhbHVlLlxuT3BlbiBhdXRvY29tcGxldGU/Iik7CisKKyAgICAgICAgICAgIGludmFsaWRN
YXJrZXJJbmZvID0geworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGFydCwKKyAgICAgICAg
ICAgICAgICB0aXRsZTogdmFsdWVSZXBsYWNlbWVudCwKKyAgICAgICAgICAgICAgICBjb3JyZWN0
aW9uOiBwcm9wZXJ0eS5uYW1lICsgIjogIiwKKyAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6
IHRydWUKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSBpZiAoIWluc3RhbmNlc09mUHJv
cGVydHkuY2FsbCh0aGlzLCAiLXdlYmtpdC0iICsgcHJvcGVydHkubmFtZSkgJiYgV2ViSW5zcGVj
dG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5wcm9wZXJ0eVJlcXVpcmVzV2Vi
a2l0UHJlZml4KHByb3BlcnR5Lm5hbWUpKSB7CisgICAgICAgICAgICAvLyBUaGUgcHJvcGVydHkg
aXMgdmFsaWQgYW5kIGV4aXN0cyBpbiB0aGUgcnVsZSB3aGlsZSBpdHMgcHJlZml4ZWQgdmVyc2lv
biBkb2VzIG5vdC4KKyAgICAgICAgICAgIGludmFsaWRNYXJrZXJJbmZvID0geworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uOiBmcm9tLAorICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlRoZSAnd2Via2l0JyBwcmVmaXggaXMgbmVlZGVkIGZvciB0aGlzIHByb3Bl
cnR5LlxuRHVwbGljYXRlIHdpdGggYSBwcmVmaXg/IiksCisgICAgICAgICAgICAgICAgY29ycmVj
dGlvbjogIi13ZWJraXQtIiArIHByb3BlcnR5LnRleHQgKyAiXG4iICsgcHJvcGVydHkudGV4dCwK
KyAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IGZhbHNlCisgICAgICAgICAgICB9OworICAg
ICAgICB9IGVsc2UgaWYgKCFwcm9wZXJ0eUhhc1VubmVjZXNzYXJ5UHJlZml4ICYmICFXZWJJbnNw
ZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmlzVmFsaWRQcm9wZXJ0eU5h
bWUoIi13ZWJraXQtIiArIHByb3BlcnR5Lm5hbWUpKSB7CisgICAgICAgICAgICAvLyBUaGUgcHJv
cGVydHkgZWl0aGVyIGhhcyBubyBwcmVmaXggYW5kIGlzIGludmFsaWQgd2l0aCBhIHByZWZpeCBv
ciBpcyBpbnZhbGlkIHdpdGhvdXQgYSBwcmVmaXguCisgICAgICAgICAgICB2YXIgY2xvc2VzdFBy
b3BlcnR5TmFtZSA9IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlv
bnMuZ2V0Q2xvc2VzdFByb3BlcnR5TmFtZShwcm9wZXJ0eS5uYW1lKTsKKworICAgICAgICAgICAg
aWYgKGNsb3Nlc3RQcm9wZXJ0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgcHJvcGVy
dHkgbmFtZSBoYXMgbGVzcyB0aGFuIDMgb3RoZXIgcHJvcGVydGllcyB0aGF0IGhhdmUgdGhlIHNh
bWUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UuCisgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlcklu
Zm8gPSB7CisgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmcm9tLAorICAgICAgICAgICAg
ICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaWQgeW91IG1lYW4gJyVzJz9c
bkNsaWNrIHRvIHJlcGxhY2UuIikuZm9ybWF0KGNsb3Nlc3RQcm9wZXJ0eU5hbWUpLAorICAgICAg
ICAgICAgICAgICAgICBjb3JyZWN0aW9uOiBwcm9wZXJ0eS50ZXh0LnJlcGxhY2UocHJvcGVydHku
bmFtZSwgY2xvc2VzdFByb3BlcnR5TmFtZSksCisgICAgICAgICAgICAgICAgICAgIGF1dG9jb21w
bGV0ZTogdHJ1ZQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBy
b3BlcnR5Lm5hbWUuc3RhcnRzV2l0aCgiLXdlYmtpdC0iKSAmJiAoY2xvc2VzdFByb3BlcnR5TmFt
ZSA9IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuZ2V0Q2xv
c2VzdFByb3BlcnR5TmFtZShwcm9wZXJ0eS5jYW5vbmljYWxOYW1lKSkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBUaGUgdW5wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lIGhhcyBsZXNzIHRoYW4gMyBvdGhl
ciBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBMZXZlbnNodGVpbiBkaXN0YW5jZS4KKyAg
ICAgICAgICAgICAgICBpbnZhbGlkTWFya2VySW5mbyA9IHsKKyAgICAgICAgICAgICAgICAgICAg
cG9zaXRpb246IGZyb20sCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRpZCB5b3UgbWVhbiAnJXMnP1xuQ2xpY2sgdG8gcmVwbGFjZS4iKS5mb3JtYXQo
Ii13ZWJraXQtIiArIGNsb3Nlc3RQcm9wZXJ0eU5hbWUpLAorICAgICAgICAgICAgICAgICAgICBj
b3JyZWN0aW9uOiBwcm9wZXJ0eS50ZXh0LnJlcGxhY2UocHJvcGVydHkuY2Fub25pY2FsTmFtZSwg
Y2xvc2VzdFByb3BlcnR5TmFtZSksCisgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTog
dHJ1ZQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBuYW1lIGlzIHNvIHZhZ3VlIG9yIG5vbnNlbnNpY2FsIHRo
YXQgdGhlcmUgYXJlIG1vcmUgdGhhbiAzIG90aGVyIHByb3BlcnRpZXMgdGhhdCBoYXZlIHRoZSBz
YW1lIExldmVuc2h0ZWluIHZhbHVlLgorICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXJJbmZv
ID0geworICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZnJvbSwKKyAgICAgICAgICAgICAg
ICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhlIHByb3BlcnR5ICclcycgaXMg
bm90IHN1cHBvcnRlZC4iKS5mb3JtYXQocHJvcGVydHkubmFtZSksCisgICAgICAgICAgICAgICAg
ICAgIGNvcnJlY3Rpb246IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6
IGZhbHNlCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCisg
ICAgICAgIGlmICghaW52YWxpZE1hcmtlckluZm8pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgZ2VuZXJhdGVJbnZhbGlkTWFya2VyLmNhbGwodGhpcywgaW52YWxpZE1hcmtlckluZm8p
OwogICAgIH0KIAogICAgIF9jbGVhclRleHRNYXJrZXJzKG5vbmF0b21pYywgYWxsKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255469</attachid>
            <date>2015-06-23 19:15:36 -0700</date>
            <delta_ts>2015-06-24 15:18:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145657-20150623191452.patch</filename>
            <type>text/plain</type>
            <size>17145</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDRlY2RiZWQ0NWM0MzliMzA1OGM0YmYxYWY5MTA0
Zjk0NTU3Mzc1ZGUuLjc5Mjg5MDlhMjYzNDg0YzhkYzVhMzZmNGUxNTRhY2JjOGJhNTBiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA2LTIzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBT
aG93IHdhcm5pbmcgaWNvbiBmb3IgaW52YWxpZCBDU1MgcHJvcGVydGllcyBhbmQvb3IgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5nZXRDbG9zZXN0UHJvcGVydHlOYW1lKTogQ2FsY3Vs
YXRlcyB0aGUgbGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiBhIGdpdmVuIHByb3BlcnR5IGFu
ZCBldmVyeSBleGlzdGluZyBwcm9wZXJ0eSBuYW1lLiAgUmV0dXJucyB0aGUgcHJvcGVydHkgbmFt
ZSB3aXRoIHRoZSBzbWFsbGVzdCBkaXN0YW5jZSBvciwgaW4gdGhlIGNhc2Ugb2YgbXVsdGlwbGUg
cHJvcGVydGllcyBoYXZpbmcgdGhlIHNhbWUgZGlzdGFuY2UsIHRoZSBmaXJzdCBwcm9wZXJ0eSBp
biBhbHBoYWJldGljYWwgb3JkZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlv
bnMucHJvdG90eXBlLnByb3BlcnR5UmVxdWlyZXNXZWJraXRQcmVmaXgpOiBSZXRydW5zIGlmIHRo
ZSBwcm9wZXJ0eSBuYW1lIGV4aXN0cyBvbmx5IHdpdGggYSAnLXdlYmtpdC0nIHByZWZpeC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucyk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5jc3M6CisgICAgICAgICgu
Y3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmlu
dmFsaWQtd2FybmluZy1tYXJrZXIpOgorICAgICAgICAoLmNzcy1zdHlsZS10ZXh0LWVkaXRvciA+
IC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5pbnZhbGlkLXdhcm5pbmctbWFya2VyLmNs
aWNrYWJsZTpob3Zlcik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVRleHRNYXJrZXJGb3JQcm9wZXJ0
eUlmTmVlZGVkLmR1cGxpY2F0ZVByb3BlcnR5RXhpc3RzQmVsb3cpOiBEZXRlcm1pbmVzIGlmIHRo
ZXJlIGV4aXN0cyBhIHByb3BlcnR5IGJlbG93ICh2aXN1YWxseSkgdGhlIGdpdmVuIHByb3BlcnR5
IHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVy
dHlJZk5lZWRlZC5nZW5lcmF0ZUludmFsaWRNYXJrZXIpOiBDcmVhdGVzIGEgd2FybmluZyBpY29u
IG1hcmtlciBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gd2l0aCB0aGUgZ2l2ZW4gdGl0bGUuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IucHJvdG90eXBl
Ll9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRlZC5pbnN0YW5jZXNPZlByb3BlcnR5
KTogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHByb3BlcnRpZXMgaW4gdGhlIHJ1bGUgdGhhdCBoYXZl
IHRoZSBzYW1lIG5hbWUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blRleHRFZGl0b3IucHJvdG90eXBlLl9jcmVhdGVUZXh0TWFya2VyRm9yUHJvcGVydHlJZk5lZWRl
ZCk6IEEgYnV0dG9uIHdpdGggYSB3YXJuaW5nIGljb24gaXMgbm93IGFkZGVkIHRvIHRoZSBiZWdp
bm5pbmcgb2YgYW4gaW52YWxpZCBwcm9wZXJ0eS4gIElmIHRoaXMgYnV0dG9uIGlzIGNsaWNrZWQs
IHRoZSBwcm9wZXJ0eSBpcyByZXBsYWNlZCB3aXRoIHRoZSBjbG9zZXN0IG1hdGNoaW5nIHByb3Bl
cnR5IGFuZCB0aGUgYXV0b2NvbXBsZXRlIG1lbnUgaXMgb3BlbmVkLgorCiAyMDE1LTA2LTIzICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUmVkdWNlIFF1aWNrQ29uc29sZSBEaWRSZXNpemUgZXZlbnRzIGlmIGl0IGRpZCBub3Qg
Y2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBkMGFjYzYzOGUwZmVm
Y2E4M2Q5NGQ3ZTNhMDRiMDJmZGRhYmZlMGEzLi5jZjQ1NTU2YTliODcyNWJjNGVjMjUyODcyMTU3
ZGM3MWQwNjYzNTE2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE4NTYKemNtY2dzTy1z
Vy01Rk99MlExSUomPSlxOHRWJTE3ZDt6MnhBUVN8Q2prK2hBcFNlcyh7Vk5WaEsxTDl1JjVyekg/
CnohSyg9RSNpUEgjbzQobT9FR1pqRmklUXJleVAzP3Fje0I2Z1VMem14az05SmMmNjdiKnZaO3BX
NjxLNmI4RSorJQp6QXFWJGVJPmtPaUJgUSptRjdjJWJUWjY3KVM7NDdeUTtTaipyISQ9SFY4dis8
d3hQWDdePT9IdW5paWs/bGtIZSQKemUkM0BhOU4kRUEzbyRCKVp7dSNeU3ExdCYtYyRoSUpad3U/
Pmk7U2c7THApYDhxQjF8UyFWd314TSszSz9YeyFqCnoyTiRGXzA1bDctaS00UXhmd2JyWGB5MT5P
QEdAKkgoOUZ4Z0h5YyFOYWVAPW03cVc9KklgRzBvOFgodjs7ODE0bQp6T1MmUCE2bllgTjhoRGBt
dGVwU15UYTEqNWApaXF1bVdhNFpDZiM4KHVxQW4xNX1wUEpta0MwZm4yVF92ND91T3sKemp0VFRn
PWklaClhQ0x1fGRPaCZtJGpITTM3cWBpY1o9UXFheCE+Knpzdn49fEJBYkxzJGA1RmRTR2lDZ1hD
PHBYCnptKlJPYnoyIU5ucWxfZzRSTCFnZUBkclRTeyY+TCtrYDtYO18rXlF1bSMwfXQ4X1RkTUR7
ckglWT18PzxwcHIyQwp6enlhXzJ1eisqXzA5YUlfbzhxQUp4RSYtOzFgPTB0Iytxem1ee0pPTEI8
aWI2PVI1PnFzTCpFPUQjbn45aEQ2YCgKUVBLeX1VKThUa35xV2QhUzF0b1o2KCpPVmYKCmRlbHRh
IDcyCnpjbWV6SWl1dXRePF8mXypsbGszdkNhK0ZjbUBNcm8wSG5ueHpmYWVnVG5sRTRPcGJPR21A
TW5jMk5XMEN5eFBUJgpZWjhOYCp7R2BkSjkjNVRve3UkZm1gbG1ubjBZJTZrS21ZJiQKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGll
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzCmluZGV4IGExYzkwZDZjZjkwYTM3YTY3YzBlNDFmNDZiYWU4ZWM3ZmU5NjgzYTUuLmI4MjM4
MzdlMWFmZjgzYjIwYTZkOTQ5ODUwYjEyNmZlZWQ2OGVjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03NjQs
NiArNzY0LDM5IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiZ2V0
TWF0Y2hpbmdJbmRleGVzIiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0
cmluZy5wcm90b3R5cGUsICJsZXZlbnNodGVpbkRpc3RhbmNlIiwKK3sKKyAgICB2YWx1ZTogZnVu
Y3Rpb24ocykKKyAgICB7CisgICAgICAgIHZhciBtID0gdGhpcy5sZW5ndGg7CisgICAgICAgIHZh
ciBuID0gcy5sZW5ndGg7CisgICAgICAgIHZhciBkID0gbmV3IEFycmF5KG0gKyAxKTsKKworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSBtOyArK2kpIHsKKyAgICAgICAgICAgIGRbaV0gPSBu
ZXcgQXJyYXkobiArIDEpOworICAgICAgICAgICAgZFtpXVswXSA9IGk7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8PSBuOyArK2opCisgICAgICAgICAgICBkWzBdW2pd
ID0gajsKKworICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBuOyArK2opIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IG07ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh0
aGlzW2kgLSAxXSA9PT0gc1tqIC0gMV0pCisgICAgICAgICAgICAgICAgICAgIGRbaV1bal0gPSBk
W2kgLSAxXVtqIC0gMV07CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHZhciBkZWxldGlvbiA9IGRbaSAtIDFdW2pdICsgMTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIGluc2VydGlvbiA9IGRbaV1baiAtIDFdICsgMTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHN1YnN0aXR1dGlvbiA9IGRbaSAtIDFdW2ogLSAxXSArIDE7CisgICAgICAgICAgICAgICAgICAg
IGRbaV1bal0gPSBNYXRoLm1pbihkZWxldGlvbiwgaW5zZXJ0aW9uLCBzdWJzdGl0dXRpb24pOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBkW21dW25dOworICAgIH0KK30pOworCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTnVtYmVy
LCAiY29uc3RyYWluIiwKIHsKICAgICB2YWx1ZTogZnVuY3Rpb24obnVtLCBtaW4sIG1heCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1ND
b21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NDb21wbGV0aW9ucy5qcwppbmRleCBkNTAwYjUyZmFkOTJiOGY1YmJiNWM0MjBmYzQyMGVi
ZjMzNGE5ZGRjLi41NTUxNWE5Y2YyYWNiNWEwYjhkNjJjYzljODhhY2U1ZGE4MTU2MGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29t
cGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU0NvbXBsZXRpb25zLmpzCkBAIC0yODAsNiArMjgwLDI3IEBAIFdlYkluc3BlY3Rvci5D
U1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpOwogICAgIH0KKworICAgIHByb3BlcnR5UmVx
dWlyZXNXZWJraXRQcmVmaXgobmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl92YWx1
ZXMuaW5jbHVkZXMoIi13ZWJraXQtIiArIG5hbWUpICYmICF0aGlzLl92YWx1ZXMuaW5jbHVkZXMo
bmFtZSk7CisgICAgfQorCisgICAgZ2V0Q2xvc2VzdFByb3BlcnR5TmFtZShuYW1lKQorICAgIHsK
KyAgICAgICAgdmFyIGJlc3RNYXRjaGVzID0gW3tkaXN0YW5jZTogSW5maW5pdHksIG5hbWU6IG51
bGx9XTsKKworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBvZiB0aGlzLl92YWx1ZXMpIHsKKyAg
ICAgICAgICAgIHZhciBkaXN0YW5jZSA9IG5hbWUubGV2ZW5zaHRlaW5EaXN0YW5jZShwcm9wZXJ0
eSk7CisKKyAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IGJlc3RNYXRjaGVzWzBdLmRpc3RhbmNl
KQorICAgICAgICAgICAgICAgIGJlc3RNYXRjaGVzID0gW3tkaXN0YW5jZSwgbmFtZTogcHJvcGVy
dHl9XTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpc3RhbmNlID09PSBiZXN0TWF0Y2hlc1swXS5k
aXN0YW5jZSkKKyAgICAgICAgICAgICAgICBiZXN0TWF0Y2hlcy5wdXNoKHtkaXN0YW5jZSwgbmFt
ZTogcHJvcGVydHl9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBiZXN0TWF0Y2hlcy5s
ZW5ndGggPCAzID8gYmVzdE1hdGNoZXNbMF0ubmFtZSA6IGZhbHNlOworICAgIH0KIH07CiAKIFdl
Ykluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMgPSBudWxsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuY3NzCmluZGV4IDQ3
M2RkNjU2NjhlODhmNDljMDRmOWNhMWY0YmQ1OGU1MTQwZWM0ODcuLjdlZGJiOTgwYzg3MjUxYzM4
MTVlN2U4NzllZTk2MjExOGU3YjQ3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmNzcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvci5jc3MKQEAgLTc4LDYgKzc4LDIyIEBACiAgICAgLXdlYmtpdC10
ZXh0LXN0cm9rZS1jb2xvcjogcmdiYSgyNTUsIDAsIDAsIDAuNik7CiB9CiAKKy5jc3Mtc3R5bGUt
dGV4dC1lZGl0b3IgPiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyAuaW52YWxpZC13YXJu
aW5nLW1hcmtlciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHRvcDogMXB4OyAKKyAg
ICB3aWR0aDogOXB4OworICAgIGhlaWdodDogOXB4OworICAgIG1hcmdpbjogMCAycHggMCAwOwor
ICAgIHBhZGRpbmc6IDA7CisgICAgYm9yZGVyOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6
IHRyYW5zcGFyZW50OworICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvV2Fybmlu
Zy5zdmcpOworfQorCisuY3NzLXN0eWxlLXRleHQtZWRpdG9yID4gLkNvZGVNaXJyb3IgLkNvZGVN
aXJyb3ItbGluZXMgLmludmFsaWQtd2FybmluZy1tYXJrZXIuY2xpY2thYmxlOmhvdmVyIHsKKyAg
ICAtd2Via2l0LWZpbHRlcjogYnJpZ2h0bmVzcygwLjkpOworfQorCiAuY29tcHV0ZWQgLmNzcy1z
dHlsZS10ZXh0LWVkaXRvciA+IC5Db2RlTWlycm9yIC5Db2RlTWlycm9yLWxpbmVzIC5jc3Mtc3R5
bGUtZGVjbGFyYXRpb24tcHJvcGVydHkuaW1wbGljaXQsCiAuY3NzLXN0eWxlLXRleHQtZWRpdG9y
ID4gLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMgLmNzcy1zdHlsZS1kZWNsYXJhdGlvbi1w
cm9wZXJ0eS5ub3QtaW5oZXJpdGVkIHsKICAgICBvcGFjaXR5OiAwLjU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0
aW9uVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCmluZGV4IGFlNGJlNjdmZDdkNGEz
ZjcyZGQyYjIwZWY2NGRkMzJhOTQ5NGNiYWYuLjdkMzVmNmM2ZmYwODBhZWY2ZjZkOTg4ZWM5YTk0
OWQyZjE3NDBjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25UZXh0
RWRpdG9yLmpzCkBAIC02MTAsNiArNjEwLDIwIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAg
ICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2ttYXJrKHRvLCBhcnJvd0Vs
ZW1lbnQpOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gZHVwbGljYXRlUHJvcGVydHlF
eGlzdHNCZWxvdyhjc3NQcm9wZXJ0eSkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHByb3Bl
cnR5Rm91bmQgPSBmYWxzZTsKKworICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgdGhp
cy5fc3R5bGUucHJvcGVydGllcykgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PT0g
Y3NzUHJvcGVydHkpCisgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5Rm91bmQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByb3BlcnR5Lm5hbWUgPT09IGNzc1Byb3BlcnR5Lm5h
bWUgJiYgcHJvcGVydHlGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHZhciBwcm9wZXJ0eU5hbWVJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIGlmIChXZWJJ
bnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zKQogICAgICAgICAgICAg
cHJvcGVydHlOYW1lSXNWYWxpZCA9IFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1l
Q29tcGxldGlvbnMuaXNWYWxpZFByb3BlcnR5TmFtZShwcm9wZXJ0eS5uYW1lKTsKQEAgLTYyNyw3
ICs2NDEsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBj
bGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogCiAgICAgICAgIGlmICghcHJvcGVy
dHkudmFsaWQgJiYgcHJvcGVydHkuaGFzT3RoZXJWZW5kb3JOYW1lT3JLZXl3b3JkKCkpCiAgICAg
ICAgICAgICBjbGFzc05hbWVzLnB1c2goIm90aGVyLXZlbmRvciIpOwotICAgICAgICBlbHNlIGlm
ICghcHJvcGVydHkudmFsaWQgJiYgIXByb3BlcnR5TmFtZUlzVmFsaWQpCisgICAgICAgIGVsc2Ug
aWYgKCFwcm9wZXJ0eS52YWxpZCAmJiAoIXByb3BlcnR5TmFtZUlzVmFsaWQgfHwgZHVwbGljYXRl
UHJvcGVydHlFeGlzdHNCZWxvdy5jYWxsKHRoaXMsIHByb3BlcnR5KSkpCiAgICAgICAgICAgICBj
bGFzc05hbWVzLnB1c2goImludmFsaWQiKTsKIAogICAgICAgICBpZiAoIXByb3BlcnR5LmVuYWJs
ZWQpCkBAIC02NTgsMTYgKzY3Miw2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
VGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yCiAKICAgICAg
ICAgdGhpcy5fcmVtb3ZlQ2hlY2tib3hQbGFjZWhvbGRlcihmcm9tLmxpbmUpOwogCi0gICAgICAg
IGlmICghcHJvcGVydHkudmFsaWQgJiYgcHJvcGVydHlOYW1lSXNWYWxpZCAmJiAhcHJvcGVydHku
dGV4dC50cmltKCkuZW5kc1dpdGgoIjoiKSkgewotICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5
LnRleHQudHJpbSgpLmVuZHNXaXRoKCI6IikgaXMgZm9yIHRoZSBzaXR1YXRpb24gd2hlbiBhIHBy
b3BlcnR5IG9ubHkgaGFzIGEgbmFtZSBhbmQgY29sb24gYW5kIHRoZSB1c2VyIGxlYXZlcyB0aGUg
dmFsdWUgYmxhbmsgKGl0IGxvb2tzIHdlaXJkIHRvIGhhdmUgYW4gaW52YWxpZCBtYXJrZXIgdGhy
b3VnaCBqdXN0IHRoZSBjb2xvbikuCi0gICAgICAgICAgICAvLyBDcmVhdGluZyB0aGUgc3ludGhl
c2l6ZWRUZXh0IGlzIG5lY2Vzc2FyeSBmb3IgaWYgdGhlIHVzZXIgYWRkcyBtdWx0aXBsZSBzcGFj
ZXMgYmVmb3JlIHRoZSB2YWx1ZSwgY2F1c2luZyB0aGUgbWFya1RleHQgdG8gbWFyayBvbmUgb2Yg
dGhlIHNwYWNlcyBpbnN0ZWFkLgotICAgICAgICAgICAgdmFyIHN5bnRoZXNpemVkVGV4dCA9IHBy
b3BlcnR5Lm5hbWUgKyAiOiAiICsgcHJvcGVydHkudmFsdWUgKyAiOyI7Ci0gICAgICAgICAgICB2
YXIgc3RhcnQgPSB7bGluZTogZnJvbS5saW5lLCBjaDogZnJvbS5jaCArIHN5bnRoZXNpemVkVGV4
dC5pbmRleE9mKHByb3BlcnR5LnZhbHVlKX07Ci0gICAgICAgICAgICB2YXIgZW5kID0ge2xpbmU6
IHRvLmxpbmUsIGNoOiBzdGFydC5jaCArIHByb3BlcnR5LnZhbHVlLmxlbmd0aH07Ci0KLSAgICAg
ICAgICAgIHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTog
ImludmFsaWQifSk7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAocHJvcGVydHkuX19maWx0ZXJS
ZXN1bHRDbGFzc05hbWUgJiYgcHJvcGVydHkuX19maWx0ZXJSZXN1bHROZWVkbGVQb3NpdGlvbikg
ewogICAgICAgICAgICAgZm9yICh2YXIgbmVlZGxlUG9zaXRpb24gb2YgcHJvcGVydHkuX19maWx0
ZXJSZXN1bHROZWVkbGVQb3NpdGlvbi5zdGFydCkgewogICAgICAgICAgICAgICAgIHZhciBzdGFy
dCA9IHtsaW5lOiBmcm9tLmxpbmUsIGNoOiBuZWVkbGVQb3NpdGlvbn07CkBAIC02NzYsNiArNjgw
LDEzMyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IgPSBjbGFz
cyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAgICAgICAgICAgICAgIHRoaXMuX2Nv
ZGVNaXJyb3IubWFya1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogcHJvcGVydHkuX19maWx0
ZXJSZXN1bHRDbGFzc05hbWV9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAg
IGlmIChwcm9wZXJ0eS5oYXNPdGhlclZlbmRvck5hbWVPcktleXdvcmQoKSB8fCBwcm9wZXJ0eS50
ZXh0LnRyaW0oKS5lbmRzV2l0aCgiOiIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZhciBwcm9wZXJ0eUhhc1VubmVjZXNzYXJ5UHJlZml4ID0gcHJvcGVydHkubmFtZS5zdGFydHNX
aXRoKCItd2Via2l0LSIpICYmIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29t
cGxldGlvbnMuaXNWYWxpZFByb3BlcnR5TmFtZShwcm9wZXJ0eS5jYW5vbmljYWxOYW1lKTsKKwor
ICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZUludmFsaWRNYXJrZXIob3B0aW9ucykKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGludmFsaWRNYXJrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKTsKKyAgICAgICAgICAgIGludmFsaWRNYXJrZXIuY2xhc3NOYW1lID0gImludmFs
aWQtd2FybmluZy1tYXJrZXIiOworICAgICAgICAgICAgaW52YWxpZE1hcmtlci50aXRsZSA9IG9w
dGlvbnMudGl0bGU7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb3JyZWN0aW9u
ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgIC8vIEFsbG93IGZvciBibGFuayBzdHJp
bmdzCisgICAgICAgICAgICAgICAgaW52YWxpZE1hcmtlci5jbGFzc0xpc3QuYWRkKCJjbGlja2Fi
bGUiKTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkTWFya2VyLmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iu
cmVwbGFjZVJhbmdlKG9wdGlvbnMuY29ycmVjdGlvbiwgZnJvbSwgdG8pOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChvcHRpb25zLmF1dG9jb21wbGV0ZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRDdXJzb3IodG8pOworICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5mb2N1cygpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29tcGxl
dGlvbkNvbnRyb2xsZXIuX2NvbXBsZXRlQXRDdXJyZW50UG9zaXRpb24odHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEJvb2ttYXJrKG9wdGlvbnMu
cG9zaXRpb24sIGludmFsaWRNYXJrZXIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
aW5zdGFuY2VzT2ZQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBjb3VudCA9IDA7CisKKyAgICAgICAgICAgIGZvciAodmFyIHByb3BlcnR5IG9mIHRoaXMu
X3N0eWxlLnByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkubmFtZSA9
PT0gcHJvcGVydHlOYW1lKQorICAgICAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgICAgIH0KKworICAgICAgICAv
LyBOdW1iZXIgb2YgdGltZXMgdGhpcyBwcm9wZXJ0eSBuYW1lIGlzIGxpc3RlZCBpbiB0aGUgcnVs
ZS4KKyAgICAgICAgdmFyIGluc3RhbmNlcyA9IGluc3RhbmNlc09mUHJvcGVydHkuY2FsbCh0aGlz
LCBwcm9wZXJ0eS5uYW1lKTsKKyAgICAgICAgdmFyIGludmFsaWRNYXJrZXJJbmZvOworCisgICAg
ICAgIGlmIChwcm9wZXJ0eUhhc1VubmVjZXNzYXJ5UHJlZml4ICYmICFpbnN0YW5jZXNPZlByb3Bl
cnR5LmNhbGwodGhpcywgcHJvcGVydHkuY2Fub25pY2FsTmFtZSkpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgcHJvcGVydHkgaGFzIGEgcHJlZml4IGFuZCBpcyB2YWxpZCB3aXRob3V0IHRoZSBwcmVm
aXggYW5kIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIHRo
ZSB1bnByZWZpeGVkIHZlcnNpb24gb2YgdGhlIHByb3BlcnR5LgorICAgICAgICAgICAgZ2VuZXJh
dGVJbnZhbGlkTWFya2VyLmNhbGwodGhpcywgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBm
cm9tLAorICAgICAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoZSAn
d2Via2l0JyBwcmVmaXggaXMgbm90IG5lY2Vzc2FyeS5cbkNsaWNrIHRvIGluc2VydCBhIGR1cGxp
Y2F0ZSB3aXRob3V0IHRoZSBwcmVmaXguIiksCisgICAgICAgICAgICAgICAgY29ycmVjdGlvbjog
cHJvcGVydHkudGV4dCArICJcbiIgKyBwcm9wZXJ0eS50ZXh0LnJlcGxhY2UoIi13ZWJraXQtIiwg
IiIpLAorICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2UKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9IGVsc2UgaWYgKGluc3RhbmNlcyA+IDEpIHsKKyAgICAgICAgICAgIGludmFs
aWRNYXJrZXJJbmZvID0geworICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmcm9tLAorICAgICAg
ICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cGxpY2F0ZSBwcm9wZXJ0
eSAnJXMnLlxuQ2xpY2sgdG8gZGVsZXRlIHRoaXMgcHJvcGVydHkuIikuZm9ybWF0KHByb3BlcnR5
Lm5hbWUpLAorICAgICAgICAgICAgICAgIGNvcnJlY3Rpb246ICIiLAorICAgICAgICAgICAgICAg
IGF1dG9jb21wbGV0ZTogZmFsc2UKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKworICAgICAg
ICBpZiAocHJvcGVydHkudmFsaWQpIHsKKyAgICAgICAgICAgIGlmIChpbnZhbGlkTWFya2VySW5m
bykKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZUludmFsaWRNYXJrZXIuY2FsbCh0aGlzLCBpbnZh
bGlkTWFya2VySW5mbyk7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChwcm9wZXJ0eU5hbWVJc1ZhbGlkKSB7CisgICAgICAgICAgICAvLyBUaGUgcHJvcGVy
dHkncyBuYW1lIGlzIHZhbGlkIGJ1dCBpdHMgdmFsdWUgaXMgbm90IChlaXRoZXIgaXQgaXMgbm90
IHN1cHBvcnRlZCBmb3IgdGhpcyBwcm9wZXJ0eSBvciB0aGVyZSBpcyBubyB2YWx1ZSkuCisgICAg
ICAgICAgICB2YXIgc3RhcnQgPSB7bGluZTogZnJvbS5saW5lLCBjaDogZnJvbS5jaCArIHByb3Bl
cnR5Lm5hbWUubGVuZ3RoICsgMn07CisgICAgICAgICAgICB2YXIgZW5kID0ge2xpbmU6IHRvLmxp
bmUsIGNoOiBzdGFydC5jaCArIHByb3BlcnR5LnZhbHVlLmxlbmd0aH07CisKKyAgICAgICAgICAg
IHRoaXMuX2NvZGVNaXJyb3IubWFya1RleHQoc3RhcnQsIGVuZCwge2NsYXNzTmFtZTogImludmFs
aWQifSk7CisKKyAgICAgICAgICAgIHZhciB2YWx1ZVJlcGxhY2VtZW50ID0gcHJvcGVydHkudmFs
dWUubGVuZ3RoID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaGUgdmFsdWUgJyVzJyBpcyBub3Qg
c3VwcG9ydGVkIGZvciB0aGlzIHByb3BlcnR5LlxuQ2xpY2sgdG8gZGVsZXRlIGFuZCBvcGVuIGF1
dG9jb21wbGV0ZS4iKS5mb3JtYXQocHJvcGVydHkudmFsdWUpIDogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaGlzIHByb3BlcnR5IG5lZWRzIGEgdmFsdWUuXG5DbGljayB0byBvcGVuIGF1dG9jb21w
bGV0ZS4iKTsKKworICAgICAgICAgICAgaW52YWxpZE1hcmtlckluZm8gPSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb246IHN0YXJ0LAorICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZVJlcGxh
Y2VtZW50LAorICAgICAgICAgICAgICAgIGNvcnJlY3Rpb246IHByb3BlcnR5Lm5hbWUgKyAiOiAi
LAorICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogdHJ1ZQorICAgICAgICAgICAgfTsKKyAg
ICAgICAgfSBlbHNlIGlmICghaW5zdGFuY2VzT2ZQcm9wZXJ0eS5jYWxsKHRoaXMsICItd2Via2l0
LSIgKyBwcm9wZXJ0eS5uYW1lKSAmJiBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFt
ZUNvbXBsZXRpb25zLnByb3BlcnR5UmVxdWlyZXNXZWJraXRQcmVmaXgocHJvcGVydHkubmFtZSkp
IHsKKyAgICAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSBpcyB2YWxpZCBhbmQgZXhpc3RzIGluIHRo
ZSBydWxlIHdoaWxlIGl0cyBwcmVmaXhlZCB2ZXJzaW9uIGRvZXMgbm90LgorICAgICAgICAgICAg
aW52YWxpZE1hcmtlckluZm8gPSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGZyb20sCisg
ICAgICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGhlICd3ZWJraXQn
IHByZWZpeCBpcyBuZWVkZWQgZm9yIHRoaXMgcHJvcGVydHkuXG5DbGljayB0byBpbnNlcnQgYSBk
dXBsaWNhdGUgd2l0aCB0aGUgcHJlZml4LiIpLAorICAgICAgICAgICAgICAgIGNvcnJlY3Rpb246
ICItd2Via2l0LSIgKyBwcm9wZXJ0eS50ZXh0ICsgIlxuIiArIHByb3BlcnR5LnRleHQsCisgICAg
ICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBmYWxzZQorICAgICAgICAgICAgfTsKKyAgICAgICAg
fSBlbHNlIGlmICghcHJvcGVydHlIYXNVbm5lY2Vzc2FyeVByZWZpeCAmJiAhV2ViSW5zcGVjdG9y
LkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5pc1ZhbGlkUHJvcGVydHlOYW1lKCIt
d2Via2l0LSIgKyBwcm9wZXJ0eS5uYW1lKSkgeworICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5
IGVpdGhlciBoYXMgbm8gcHJlZml4IGFuZCBpcyBpbnZhbGlkIHdpdGggYSBwcmVmaXggb3IgaXMg
aW52YWxpZCB3aXRob3V0IGEgcHJlZml4LgorICAgICAgICAgICAgdmFyIGNsb3Nlc3RQcm9wZXJ0
eU5hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmdl
dENsb3Nlc3RQcm9wZXJ0eU5hbWUocHJvcGVydHkubmFtZSk7CisKKyAgICAgICAgICAgIGlmIChj
bG9zZXN0UHJvcGVydHlOYW1lKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHByb3BlcnR5IG5h
bWUgaGFzIGxlc3MgdGhhbiAzIG90aGVyIHByb3BlcnRpZXMgdGhhdCBoYXZlIHRoZSBzYW1lIExl
dmVuc2h0ZWluIGRpc3RhbmNlLgorICAgICAgICAgICAgICAgIGludmFsaWRNYXJrZXJJbmZvID0g
eworICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZnJvbSwKKyAgICAgICAgICAgICAgICAg
ICAgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlkIHlvdSBtZWFuICclcyc/XG5DbGlj
ayB0byByZXBsYWNlLiIpLmZvcm1hdChjbG9zZXN0UHJvcGVydHlOYW1lKSwKKyAgICAgICAgICAg
ICAgICAgICAgY29ycmVjdGlvbjogcHJvcGVydHkudGV4dC5yZXBsYWNlKHByb3BlcnR5Lm5hbWUs
IGNsb3Nlc3RQcm9wZXJ0eU5hbWUpLAorICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6
IHRydWUKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0
eS5uYW1lLnN0YXJ0c1dpdGgoIi13ZWJraXQtIikgJiYgKGNsb3Nlc3RQcm9wZXJ0eU5hbWUgPSBX
ZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLmdldENsb3Nlc3RQ
cm9wZXJ0eU5hbWUocHJvcGVydHkuY2Fub25pY2FsTmFtZSkpKSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhlIHVucHJlZml4ZWQgcHJvcGVydHkgbmFtZSBoYXMgbGVzcyB0aGFuIDMgb3RoZXIgcHJv
cGVydGllcyB0aGF0IGhhdmUgdGhlIHNhbWUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UuCisgICAgICAg
ICAgICAgICAgaW52YWxpZE1hcmtlckluZm8gPSB7CisgICAgICAgICAgICAgICAgICAgIHBvc2l0
aW9uOiBmcm9tLAorICAgICAgICAgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEaWQgeW91IG1lYW4gJyVzJz9cbkNsaWNrIHRvIHJlcGxhY2UuIikuZm9ybWF0KCItd2Vi
a2l0LSIgKyBjbG9zZXN0UHJvcGVydHlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgY29ycmVj
dGlvbjogcHJvcGVydHkudGV4dC5yZXBsYWNlKHByb3BlcnR5LmNhbm9uaWNhbE5hbWUsIGNsb3Nl
c3RQcm9wZXJ0eU5hbWUpLAorICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IHRydWUK
KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAvLyBUaGUgcHJvcGVydHkgbmFtZSBpcyBzbyB2YWd1ZSBvciBub25zZW5zaWNhbCB0aGF0IHRo
ZXJlIGFyZSBtb3JlIHRoYW4gMyBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBM
ZXZlbnNodGVpbiB2YWx1ZS4KKyAgICAgICAgICAgICAgICBpbnZhbGlkTWFya2VySW5mbyA9IHsK
KyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZyb20sCisgICAgICAgICAgICAgICAgICAg
IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoZSBwcm9wZXJ0eSAnJXMnIGlzIG5vdCBz
dXBwb3J0ZWQuIikuZm9ybWF0KHByb3BlcnR5Lm5hbWUpLAorICAgICAgICAgICAgICAgICAgICBj
b3JyZWN0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBmYWxz
ZQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWludmFsaWRNYXJrZXJJbmZvKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGdlbmVyYXRlSW52YWxpZE1hcmtlci5jYWxsKHRoaXMsIGludmFsaWRNYXJrZXJJbmZvKTsKICAg
ICB9CiAKICAgICBfY2xlYXJUZXh0TWFya2Vycyhub25hdG9taWMsIGFsbCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>