<?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>110641</bug_id>
          
          <creation_ts>2013-02-22 14:08:27 -0800</creation_ts>
          <short_desc>WebInspector: Switch hide element shortcut in ElementsPanel to use a selector</short_desc>
          <delta_ts>2013-02-28 18:00:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>egraether</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839935</commentid>
    <comment_count>0</comment_count>
    <who name="">egraether</who>
    <bug_when>2013-02-22 14:08:27 -0800</bug_when>
    <thetext>WebInspector: Switch hide element shortcut in ElementsPanel to use a selector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839956</commentid>
    <comment_count>1</comment_count>
      <attachid>189824</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-22 14:16:55 -0800</bug_when>
    <thetext>Created attachment 189824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839970</commentid>
    <comment_count>2</comment_count>
    <who name="">egraether</who>
    <bug_when>2013-02-22 14:21:25 -0800</bug_when>
    <thetext>When the shortcut is used now, the class inspector-hide-shortcut is added to the element&apos;s class attribute and the rule:

.inspector-hide-shortcut, .inspector-hide-shortcut * {
    visibility: hidden !important;
}

is added to the temporary inspector stylesheet. This way all of the child elements get hidden as well.

https://code.google.com/p/chromium/issues/detail?id=176665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840702</commentid>
    <comment_count>3</comment_count>
      <attachid>189824</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-24 22:39:01 -0800</bug_when>
    <thetext>Comment on attachment 189824
Patch

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

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:491
&gt; +                this._addHideShortcutRuleToInspectorStyleSheet(node.id, hideShortcutSelector);

You only need to do this once.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:634
&gt; +            if (!resource)

Resource may exist due to user&apos;s add rule action.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:638
&gt; +        WebInspector.cssModel.getViaInspectorResourceForRule(this._hideRule || {}, resourceCallback.bind(this));

We need to move this into model via creating addInspectorRule method that receives both selector and rule body.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841439</commentid>
    <comment_count>4</comment_count>
      <attachid>190161</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-25 17:13:20 -0800</bug_when>
    <thetext>Created attachment 190161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841459</commentid>
    <comment_count>5</comment_count>
      <attachid>189824</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-25 17:42:04 -0800</bug_when>
    <thetext>Comment on attachment 189824
Patch

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

I tried to work on your comments, but I ended up with almost the same as before. It already works exactly the way we want, but because of how the methods for accessing the inspector resource are implemented on CSSStyleModel, this looks a bit weird. For example I can&apos;t just ask if the inspector resource exists, I can only check if a certain rule is associated with the resource (CSSStyleModel::getViaInspectorResourceForRule), also I can&apos;t just create the resource, I have to use CSSStyleModel::addRule which then creates the resource in the backend.

The new patch encapsulates the functionality of the hide shortcut a bit better and has some comments explaining why it works.

&gt;&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:491
&gt;&gt; +                this._addHideShortcutRuleToInspectorStyleSheet(node.id, hideShortcutSelector);
&gt; 
&gt; You only need to do this once.

This method is called more than once, but the style rule is only once added to the inspector resource.

&gt;&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:634
&gt;&gt; +            if (!resource)
&gt; 
&gt; Resource may exist due to user&apos;s add rule action.

Yes, but if this._hideRule was not set yet, then no resource is found. I found no better way of checking whether the resource has the rule so far.

&gt;&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:638
&gt;&gt; +        WebInspector.cssModel.getViaInspectorResourceForRule(this._hideRule || {}, resourceCallback.bind(this));
&gt; 
&gt; We need to move this into model via creating addInspectorRule method that receives both selector and rule body.

CSSStyleModel.addRule() already adds the rule to the inspector stylesheet. A method that also takes the rule body as argument would look something like this:

addInspectorRule: function(nodeID, selector, name, value)
{
    function successCallback(rule)
    {
        rule.style.appendProperty(name, value);
    }
    function failureCallback() {}

    this.addRule(nodeID, selector, successCallback, failureCallback);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841756</commentid>
    <comment_count>6</comment_count>
      <attachid>190161</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-26 01:07:38 -0800</bug_when>
    <thetext>Comment on attachment 190161
Patch

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

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:625
&gt; +                this._hideShortcutRule = newRule;

There is an inspector stylesheet per document, you can&apos;t store them all in a single variable.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:641
&gt; +                WebInspector.cssModel.addRule(node.id, hideShortcutSelector, successCallback.bind(this), failureCallback);

I am still not convinced this will only run once per inspector stylesheet. Here is the scenario for you:
1) On a page, press &quot;+&quot; in the styles sidebar to add user-defined style rule.
2) Run _toggleHideShortcut

I suspect that resource will be defined and hence you will not add the new rule.

We might want a test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842158</commentid>
    <comment_count>7</comment_count>
      <attachid>190161</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-26 10:39:29 -0800</bug_when>
    <thetext>Comment on attachment 190161
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:625
&gt;&gt; +                this._hideShortcutRule = newRule;
&gt; 
&gt; There is an inspector stylesheet per document, you can&apos;t store them all in a single variable.

this._hideShortcutRule is only set once per document. When the document changes, the inspector stylesheet is removed and CSSStyleModel::getViaInspectorResourceForRule(this._hideShortcutRule) does not return a valid resource, so a new rule is added, which forces the inspector stylesheet to be created.

&gt;&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:641
&gt;&gt; +                WebInspector.cssModel.addRule(node.id, hideShortcutSelector, successCallback.bind(this), failureCallback);
&gt; 
&gt; I am still not convinced this will only run once per inspector stylesheet. Here is the scenario for you:
&gt; 1) On a page, press &quot;+&quot; in the styles sidebar to add user-defined style rule.
&gt; 2) Run _toggleHideShortcut
&gt; 
&gt; I suspect that resource will be defined and hence you will not add the new rule.
&gt; 
&gt; We might want a test for this.

I tested this scenario multiple times now and it works. &quot;+&quot; creates the inspector stylesheet, but this._hideShortcutRule is still undefined so CSSStyleModel::getViaInspectorResourceForRule(null) returns no resource.

I&apos;m not arguing that this is a good solution, if you can point me another direction I&apos;m happy to do so. This is the best way I could find.

I will have a look into writing a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842587</commentid>
    <comment_count>8</comment_count>
      <attachid>190412</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-26 18:42:41 -0800</bug_when>
    <thetext>Created attachment 190412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842595</commentid>
    <comment_count>9</comment_count>
    <who name="">egraether</who>
    <bug_when>2013-02-26 18:51:10 -0800</bug_when>
    <thetext>I added a test case for the hide shortcut. I have never written tests before, so please give me some feedback.

It does not cover your proposed scenario though, because I couldn&apos;t figure out how to remove the inspector style-sheet again once it was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842934</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-27 04:21:09 -0800</bug_when>
    <thetext>It sounds like we need a better way of adding this rule than inspector stylesheet. In the inspector-stylesheet user will be able to delete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842944</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-27 04:50:32 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; It sounds like we need a better way of adding this rule than inspector stylesheet. In the inspector-stylesheet user will be able to delete it.

At the moment, via-inspector stylesheet rules are not deletable (in fact no rules are deletable), but this feature implementation is planned. So, for you to be on the safe side, I suggest injecting a separate inline stylesheet using Runtime.evaluate() on all page frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843542</commentid>
    <comment_count>12</comment_count>
      <attachid>190613</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-27 15:04:07 -0800</bug_when>
    <thetext>Created attachment 190613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843546</commentid>
    <comment_count>13</comment_count>
    <who name="">egraether</who>
    <bug_when>2013-02-27 15:07:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; It sounds like we need a better way of adding this rule than inspector stylesheet. In the inspector-stylesheet user will be able to delete it.
&gt; 
&gt; At the moment, via-inspector stylesheet rules are not deletable (in fact no rules are deletable), but this feature implementation is planned. So, for you to be on the safe side, I suggest injecting a separate inline stylesheet using Runtime.evaluate() on all page frames.

I followed your suggestion and inject the style now via Runtime.evaluate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843932</commentid>
    <comment_count>14</comment_count>
      <attachid>190613</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-28 02:51:38 -0800</bug_when>
    <thetext>Comment on attachment 190613
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        the document by creating a style tag in the documents head and in the head of each

Could you test that the feature works for nested frames, too? Please see LayoutTests/inspector/styles/resources/styles-source-lines-inline-iframe.html for how to synchronize on iframe loading.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:800
&gt; +        var classString = this.getAttribute(&quot;class&quot;) || &quot;&quot;;

You could implement this using the same RuntimeAgent.evaluate() approach as below if you could retrieve the target node in the evaluated code. Pavel can advise on this. If that were possible, the code would be as simple as

var toggleClass = function(className, enable)
{
    var node = ...
    if (enable)
        node.classList.add(className);
    else
        node.classList.remove(className);
}

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:620
&gt; +     * @param {function()=} userCallback

This signature should match what toggleClassName() accepts:

{function(?Protocol.Error)=}

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:624
&gt; +        var className = &quot;web-inspector-hide-shortcut&quot;;

I would use some weird system-like prefix for these className and styleTagId, perhaps &quot;__&quot; or similar, in order to avoid collisions with the user code as much as possible.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:628
&gt; +        var injectStyleRuleCode = [

You can just declare &quot;var injectStyleRuleCode = function() {...}&quot; and then evaluate something like
&quot;(&quot; + injectStyleRuleCode.toString() + &quot;)()&quot;
(take a look at how a similar thing is done in DOMAgent.prototype._emulateTouchEventsChanged. That approach will barely work for you, since it requires a page reload for the code to get injected).

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:629
&gt; +            &quot;var style = document.head.querySelector(&apos;style#&quot; + styleTagId + &quot;&apos;);&quot;,

Excellent

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:646
&gt; +        RuntimeAgent.evaluate(injectStyleRuleCode, runtimeCallback.bind(this));

Are you sure it evaluates the script in every frame out there?

&gt; LayoutTests/inspector/elements/hide-shortcut.html:137
&gt; +Tests the hide shortcut, which toggles a class name on the node and sets visibility: hidden on the node and it&apos;s ancestors.

We usually specify a link to the respective webkit bug after the description:

...and its ancestors. &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=110641&quot;&gt;Bug 110641&lt;/a&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844353</commentid>
    <comment_count>15</comment_count>
      <attachid>190782</attachid>
    <who name="">egraether</who>
    <bug_when>2013-02-28 12:27:32 -0800</bug_when>
    <thetext>Created attachment 190782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844358</commentid>
    <comment_count>16</comment_count>
    <who name="">egraether</who>
    <bug_when>2013-02-28 12:33:00 -0800</bug_when>
    <thetext>I put the class toggling and the style rule injection in one script, which is called on the node&apos;s remote object. This way the style rule is always added to the document where the node is in, so this also works within frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844685</commentid>
    <comment_count>17</comment_count>
      <attachid>190782</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 18:00:44 -0800</bug_when>
    <thetext>Comment on attachment 190782
Patch

Clearing flags on attachment: 190782

Committed r144405: &lt;http://trac.webkit.org/changeset/144405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844686</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-28 18:00:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189824</attachid>
            <date>2013-02-22 14:16:55 -0800</date>
            <delta_ts>2013-02-25 17:42:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110641-20130222141314.patch</filename>
            <type>text/plain</type>
            <size>6279</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZlOTc4YWMxNTEzZGJl
ZmRlZDhiYzMxNGVmNTZiZmRhZjMwYzg5MS4uOTRlNTg4YzE4YmQ5ZmQ1MTlmNWM4ODQ5YWFmNmY3
ZGQ1NTE2YzFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAyLTIyICBFYmVy
aGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogU3dpdGNoIGhpZGUgZWxlbWVudCBzaG9ydGN1dCBpbiBFbGVtZW50c1BhbmVsIHRvIHVz
ZSBhIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBzd2l0Y2hlcyB0aGUgc2hvcnRjdXQgZm9yIGFkZGluZyB2aXNpYmls
aXR5OmhpZGRlbiB0byBhbiBlbGVtZW50J3Mgc3R5bGUKKyAgICAgICAgdG8gdG9nZ2xpbmcgdGhl
IGNsYXNzIGluc3BlY3Rvci1oaWRlLXNob3J0Y3V0IGluc3RlYWQuIFRoaXMgd2F5IGl0IGlzIHBv
c3NpYmxlIHRvCisgICAgICAgIGNoYW5nZSB0aGUgdmlzaWJpbGl0eSBvZiBhbGwgY2hpbGQgZWxl
bWVudHMgYXMgd2VsbC4gVGhlIHN0eWxlIHJ1bGUgZ2V0cyBpbnNlcnRlZAorICAgICAgICBpbnRv
IHRoZSB0ZW1wb3JhcnkgaW5zcGVjdG9yIHN0eWxlc2hlZXQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUucmVzb2x2ZVVSTCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUudG9nZ2xlQ2xhc3NOYW1lKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUuX29ua2V5ZG93bik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5ydWxlRmFpbHVyZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZXNvdXJjZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVPdXRsaW5lLnByb3RvdHlwZS5fYWRkSGlkZVNob3J0Y3V0UnVsZVRvSW5zcGVjdG9yU3R5bGVT
aGVldCk6CisKIDIwMTMtMDItMjEgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBSZWdpb24gYm94ZXMgc2hvdWxkIHJlc3BlY3QgLXNo
YXBlLWluc2lkZSBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAyZGIzYzhmYTE2YWUwYzNhYWIyZWYw
MzM1ZmZiMGUwNWE1MjBkN2IwLi45NWQ5OWVhYjJjMmZiYjA3NmRmZjU3NGFmMjI4MDcwZjgxNGIx
MzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzCkBAIC01NTQsMjkgKzU1NCw2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2Nh
dGlvbih1aVNvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNv
bHVtbk51bWJlcik7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQu
Tm9kZUlkfSBub2RlSWQKLSAgICAgKi8KLSAgICB0b2dnbGVJbmxpbmVWaXNpYmlsaXR5OiBmdW5j
dGlvbihub2RlSWQpCi0gICAgewotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbn0gaW5saW5lU3R5bGVzCi0gICAgICAgICAqLwot
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhpbmxpbmVTdHlsZXMpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZhciB2aXNpYmlsaXR5ID0gaW5saW5lU3R5bGVzLmdldExpdmVQcm9wZXJ0eSgidmlz
aWJpbGl0eSIpOwotICAgICAgICAgICAgaWYgKHZpc2liaWxpdHkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmlzaWJpbGl0eS52YWx1ZSA9PT0gImhpZGRlbiIpCi0gICAgICAgICAgICAgICAgICAg
IHZpc2liaWxpdHkuc2V0VGV4dCgiIiwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eS5zZXRWYWx1ZSgiaGlkZGVuIiwgZmFs
c2UsIHRydWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaW5saW5lU3R5
bGVzLmFwcGVuZFByb3BlcnR5KCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGhpcy5nZXRJbmxpbmVTdHlsZXNBc3luYyhub2RlSWQsIGNhbGxiYWNrLmJpbmQo
dGhpcykpOwotICAgIH0sCi0KICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCmluZGV4IDUwN2Y2ODA4YWY5ZjQ1YmYxOTI5M2U5NGQyZDJhYjlmZjU0ODViOTYuLjQw
OWRkYzI4N2FkMjgyY2M4ZmFkYjQyNzhjMmE1YWMwM2ZjZDgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwpAQCAtNzg5LDYgKzc4OSwzMyBA
QCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5QYXJzZWRVUkwuY29tcGxldGVVUkwoZnJhbWVPd25lckNhbmRpZGF0
ZS5iYXNlVVJMLCB1cmwpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxsOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lCisgICAgICogQHJl
dHVybiB7Ym9vbGVhbn0gaGFzQ2xhc3NOYW1lCisgICAgICovCisgICAgdG9nZ2xlQ2xhc3NOYW1l
OiBmdW5jdGlvbihjbGFzc05hbWUpCisgICAgeworICAgICAgICB2YXIgY2xhc3NTdHJpbmcgPSB0
aGlzLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSB8fCAiIjsKKyAgICAgICAgdmFyIGNsYXNzTmFtZXMg
PSBjbGFzc1N0cmluZy5sZW5ndGggPyBjbGFzc1N0cmluZy5zcGxpdCgiICIpIDogW107CisKKyAg
ICAgICAgaWYgKGNsYXNzTmFtZXMubGVuZ3RoID09PSAxICYmIGNsYXNzTmFtZXNbMF0gPT09IGNs
YXNzTmFtZSkgeworICAgICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2YXIgaW5kZXgg
PSBjbGFzc05hbWVzLmluZGV4T2YoY2xhc3NOYW1lKTsKKyAgICAgICAgdmFyIGhhc0NsYXNzTmFt
ZSA9IGZhbHNlOworCisgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKKyAgICAgICAgICAgIGNs
YXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAgICAgICAgICAgaGFzQ2xhc3NOYW1lID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBjbGFzc05hbWVzLnNwbGljZShpbmRleCwg
MSk7CisKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVWYWx1ZSgiY2xhc3MiLCBjbGFzc05hbWVz
LmpvaW4oIiAiKSk7CisgICAgICAgIHJldHVybiBoYXNDbGFzc05hbWU7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
VHJlZU91dGxpbmUuanMKaW5kZXggMDVkNzRmZDk3M2U0ODA5NzZmYmJkZGE4NzY1Y2FiOWYxNWRm
NGVhYi4uNjU0ZmRkYWI4MTRkMjU1NzkyOTAxMTBmNTc2MjdjYWRlZTU5NWFmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qcwpAQCAtNDgzLDcgKzQ4MywxMyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVl
T3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KCF0cmVlRWxlbWVudC5fZWRpdGluZyAmJiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5o
YXNOb01vZGlmaWVycyhrZXlib2FyZEV2ZW50KSAmJiBrZXlib2FyZEV2ZW50LmtleUNvZGUgPT09
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuSC5jb2RlKSB7Ci0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwudG9nZ2xlSW5saW5lVmlzaWJpbGl0eShub2RlLmlkKTsK
KyAgICAgICAgICAgIHZhciBoaWRlU2hvcnRjdXRDbGFzc05hbWUgPSAiaW5zcGVjdG9yLWhpZGUt
c2hvcnRjdXQiOworICAgICAgICAgICAgdmFyIGhpZGVTaG9ydGN1dFNlbGVjdG9yID0gIi5pbnNw
ZWN0b3ItaGlkZS1zaG9ydGN1dCwgLmluc3BlY3Rvci1oaWRlLXNob3J0Y3V0ICoiOworCisgICAg
ICAgICAgICB2YXIgaGFzSGlkZVNob3J0Y3V0ID0gbm9kZS50b2dnbGVDbGFzc05hbWUoaGlkZVNo
b3J0Y3V0Q2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGlmIChoYXNIaWRlU2hvcnRjdXQpCisgICAg
ICAgICAgICAgICAgdGhpcy5fYWRkSGlkZVNob3J0Y3V0UnVsZVRvSW5zcGVjdG9yU3R5bGVTaGVl
dChub2RlLmlkLCBoaWRlU2hvcnRjdXRTZWxlY3Rvcik7CisKICAgICAgICAgICAgIGV2ZW50LmNv
bnN1bWUodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYxMCw2ICs2
MTYsMjggQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gbmV3VHJlZUl0ZW07CiAgICAgfSwKIAorICAgIF9hZGRIaWRlU2hvcnRj
dXRSdWxlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OiBmdW5jdGlvbihub2RlSWQsIGhpZGVTaG9ydGN1
dFNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcnVsZVN1Y2Nlc3NDYWxsYmFjayhu
ZXdSdWxlLCBkb2VzU2VsZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG5ld1J1bGUuc3R5bGUuYXBwZW5kUHJvcGVydHkoInZpc2liaWxpdHkiLCAiaGlkZGVu
ICFpbXBvcnRhbnQiKTsKKyAgICAgICAgICAgIHRoaXMuX2hpZGVSdWxlID0gbmV3UnVsZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1bGVGYWlsdXJlQ2FsbGJhY2soKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgY3JlYXRlIHJ1bGUiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlc291cmNlQ2FsbGJhY2socmVzb3VyY2Up
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZFJ1bGUobm9kZUlkLCBoaWRlU2hvcnRjdXRTZWxlY3Rv
ciwgcnVsZVN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpLCBydWxlRmFpbHVyZUNhbGxiYWNrKTsK
KyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRWaWFJbnNwZWN0
b3JSZXNvdXJjZUZvclJ1bGUodGhpcy5faGlkZVJ1bGUgfHwge30sIHJlc291cmNlQ2FsbGJhY2su
YmluZCh0aGlzKSk7CisgICAgfSwKKwogICAgIF9fcHJvdG9fXzogVHJlZU91dGxpbmUucHJvdG90
eXBlCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190161</attachid>
            <date>2013-02-25 17:13:20 -0800</date>
            <delta_ts>2013-02-26 18:42:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110641-20130225170935.patch</filename>
            <type>text/plain</type>
            <size>6686</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTljYzkxZTI4Njg2ODA0
YTc2OWIxZjg2MWZhZjMwYTIxZGI5ODg1Ny4uZmMwMTIxOWIzMTU3ZTAwOWEyOTU5MGMwZjI5ZDkx
ZWU0NTFjZWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAyLTI1ICBFYmVy
aGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogU3dpdGNoIGhpZGUgZWxlbWVudCBzaG9ydGN1dCBpbiBFbGVtZW50c1BhbmVsIHRvIHVz
ZSBhIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBzd2l0Y2hlcyB0aGUgc2hvcnRjdXQgZm9yIGFkZGluZyB2aXNpYmls
aXR5OmhpZGRlbiB0byBhbiBlbGVtZW50J3Mgc3R5bGUKKyAgICAgICAgdG8gdG9nZ2xpbmcgdGhl
IGNsYXNzIHdlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCBpbnN0ZWFkLiBUaGlzIHdheSBpdCBp
cyBwb3NzaWJsZSB0bworICAgICAgICBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgYWxsIGNoaWxk
IGVsZW1lbnRzIGFzIHdlbGwuIFRoZSBzdHlsZSBydWxlIGdldHMgaW5zZXJ0ZWQKKyAgICAgICAg
aW50byB0aGUgdGVtcG9yYXJ5IGluc3BlY3RvciBzdHlsZXNoZWV0IHJlc291cmNlLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnJlc29sdmVVUkwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnRvZ2dsZUNsYXNzTmFtZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLl9vbmtleWRv
d24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBl
Ll90b2dnbGVIaWRlU2hvcnRjdXQuY2FsbGJhY2suc3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5fdG9nZ2xlSGlkZVNo
b3J0Y3V0LmNhbGxiYWNrLmZhaWx1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUuX3RvZ2dsZUhpZGVTaG9ydGN1dC5jYWxsYmFj
ayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUu
X3RvZ2dsZUhpZGVTaG9ydGN1dCk6CisKIDIwMTMtMDItMjUgIE1hcml1c3ogR3J6ZWdvcmN6eWsg
IDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bR1RLXSBNb3ZlIHRleHQg
c2VsZWN0aW9uL2ZvY3VzIG5vdGlmaWNhdGlvbiBmb3IgYTExeSBmcm9tIGd0ayB0byBhdGsgZGly
ZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKaW5kZXggMmRiM2M4ZmExNmFlMGMzYWFiMmVmMDMzNWZmYjBlMDVhNTIwZDdi
MC4uOTVkOTllYWIyYzJmYmIwNzZkZmY1NzRhZjIyODA3MGY4MTRiMTM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAt
NTU0LDI5ICs1NTQsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2Rl
LCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogICAg
IH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0g
ICAgICovCi0gICAgdG9nZ2xlSW5saW5lVmlzaWJpbGl0eTogZnVuY3Rpb24obm9kZUlkKQotICAg
IHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb259IGlubGluZVN0eWxlcwotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soaW5saW5lU3R5bGVzKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdmlzaWJp
bGl0eSA9IGlubGluZVN0eWxlcy5nZXRMaXZlUHJvcGVydHkoInZpc2liaWxpdHkiKTsKLSAgICAg
ICAgICAgIGlmICh2aXNpYmlsaXR5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZpc2liaWxpdHku
dmFsdWUgPT09ICJoaWRkZW4iKQotICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5LnNldFRl
eHQoIiIsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHZpc2liaWxpdHkuc2V0VmFsdWUoImhpZGRlbiIsIGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGlubGluZVN0eWxlcy5hcHBlbmRQcm9wZXJ0
eSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZ2V0
SW5saW5lU3R5bGVzQXN5bmMobm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICB9LAot
CiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCA1MDdm
NjgwOGFmOWY0NWJmMTkyOTNlOTRkMmQyYWI5ZmY1NDg1Yjk2Li40MDlkZGMyODdhZDI4MmNjOGZh
ZGI0Mjc4YzJhNWFjMDNmY2Q4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTc4OSw2ICs3ODksMzMgQEAgV2ViSW5zcGVjdG9yLkRP
TU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
UGFyc2VkVVJMLmNvbXBsZXRlVVJMKGZyYW1lT3duZXJDYW5kaWRhdGUuYmFzZVVSTCwgdXJsKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZQorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IGhh
c0NsYXNzTmFtZQorICAgICAqLworICAgIHRvZ2dsZUNsYXNzTmFtZTogZnVuY3Rpb24oY2xhc3NO
YW1lKQorICAgIHsKKyAgICAgICAgdmFyIGNsYXNzU3RyaW5nID0gdGhpcy5nZXRBdHRyaWJ1dGUo
ImNsYXNzIikgfHwgIiI7CisgICAgICAgIHZhciBjbGFzc05hbWVzID0gY2xhc3NTdHJpbmcubGVu
Z3RoID8gY2xhc3NTdHJpbmcuc3BsaXQoIiAiKSA6IFtdOworCisgICAgICAgIGlmIChjbGFzc05h
bWVzLmxlbmd0aCA9PT0gMSAmJiBjbGFzc05hbWVzWzBdID09PSBjbGFzc05hbWUpIHsKKyAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGluZGV4ID0gY2xhc3NOYW1lcy5pbmRl
eE9mKGNsYXNzTmFtZSk7CisgICAgICAgIHZhciBoYXNDbGFzc05hbWUgPSBmYWxzZTsKKworICAg
ICAgICBpZiAoaW5kZXggPT09IC0xKSB7CisgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xh
c3NOYW1lKTsKKyAgICAgICAgICAgIGhhc0NsYXNzTmFtZSA9IHRydWU7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgY2xhc3NOYW1lcy5zcGxpY2UoaW5kZXgsIDEpOworCisgICAgICAgIHRo
aXMuc2V0QXR0cmlidXRlVmFsdWUoImNsYXNzIiwgY2xhc3NOYW1lcy5qb2luKCIgIikpOworICAg
ICAgICByZXR1cm4gaGFzQ2xhc3NOYW1lOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmlu
ZGV4IDA1ZDc0ZmQ5NzNlNDgwOTc2ZmJiZGRhODc2NWNhYjlmMTVkZjRlYWIuLmQ5NTY5NThkN2Y3
YTI5ZWU2MDE5OTVmOGY2NjNjY2MwYjcwZjdjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTQ4
Myw3ICs0ODMsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCF0cmVlRWxlbWVudC5fZWRp
dGluZyAmJiBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5oYXNOb01vZGlmaWVycyhrZXli
b2FyZEV2ZW50KSAmJiBrZXlib2FyZEV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0LktleXMuSC5jb2RlKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwudG9nZ2xlSW5saW5lVmlzaWJpbGl0eShub2RlLmlkKTsKKyAgICAgICAgICAgIHRoaXMu
X3RvZ2dsZUhpZGVTaG9ydGN1dChub2RlKTsKICAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYxMCw2ICs2MTAsNDAgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gbmV3VHJlZUl0ZW07CiAgICAgfSwKIAorICAgIF90b2dnbGVIaWRlU2hvcnRjdXQ6IGZ1
bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICB2YXIgaGlkZVNob3J0Y3V0Q2xhc3NOYW1lID0g
IndlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCI7CisgICAgICAgIHZhciBoaWRlU2hvcnRjdXRT
ZWxlY3RvciA9ICIud2ViLWluc3BlY3Rvci1oaWRlLXNob3J0Y3V0LCAud2ViLWluc3BlY3Rvci1o
aWRlLXNob3J0Y3V0ICoiOworCisgICAgICAgIG5vZGUudG9nZ2xlQ2xhc3NOYW1lKGhpZGVTaG9y
dGN1dENsYXNzTmFtZSk7CisKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzb3VyY2UpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjayhuZXdSdWxlLCBk
b2VzU2VsZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbmV3UnVsZS5zdHlsZS5hcHBlbmRQcm9wZXJ0eSgidmlzaWJpbGl0eSIsICJoaWRkZW4g
IWltcG9ydGFudCIpOworICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVTaG9ydGN1dFJ1bGUgPSBu
ZXdSdWxlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBmYWlsdXJlQ2Fs
bGJhY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNv
dWxkIG5vdCBjcmVhdGUgcnVsZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlcmUgaXMgbm8gcmVzb3VyY2Ugd2hlbjoKKyAgICAgICAgICAgIC8vIC0gdGhpcy5faGlkZVNo
b3J0Y3V0UnVsZSBpcyB1bmRlZmluZWQsIHNvIHRoZSBpbnNwZWN0b3IgcmVzb3VyY2UKKyAgICAg
ICAgICAgIC8vICAgd2FzIG5vdCBmb3VuZCByZWdhcmRsZXNzIGlmIGl0IHdhcyBhbHJlYWR5IGNy
ZWF0ZWQuCisgICAgICAgICAgICAvLyAtIHRoaXMuX2hpZGVTaG9ydGN1dFJ1bGUgaXMgZGVmaW5l
ZCwgYnV0IGFmdGVyIGEgcGFnZSBjaGFuZ2UKKyAgICAgICAgICAgIC8vICAgdGhlIGFzc29jaWF0
ZWQgcmVzb3VyY2Ugd2FzIHJlbW92ZWQuCisgICAgICAgICAgICAvLyBUaGUgcnVsZSBnZXRzIGFk
ZGVkIGFuZCBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIHRvIHRoZSBpbnNwZWN0b3IKKyAgICAgICAg
ICAgIC8vIHJlc291cmNlIG9ubHkgb25jZS4KKyAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZFJ1bGUobm9kZS5pZCwgaGlk
ZVNob3J0Y3V0U2VsZWN0b3IsIHN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpLCBmYWlsdXJlQ2Fs
bGJhY2spOworICAgICAgICB9CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldFZp
YUluc3BlY3RvclJlc291cmNlRm9yUnVsZSh0aGlzLl9oaWRlU2hvcnRjdXRSdWxlIHx8IHt9LCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgX19wcm90b19fOiBUcmVlT3V0bGlu
ZS5wcm90b3R5cGUKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190412</attachid>
            <date>2013-02-26 18:42:41 -0800</date>
            <delta_ts>2013-02-27 15:04:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110641-20130226183855.patch</filename>
            <type>text/plain</type>
            <size>15228</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzOTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTljYzkxZTI4Njg2ODA0
YTc2OWIxZjg2MWZhZjMwYTIxZGI5ODg1Ny4uZDU4ZDY2ZjAzYTkyZGZkNjY2YTIxYWMyMzkxMjFk
MDg0NDVjY2FmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTI2ICBFYmVy
aGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogU3dpdGNoIGhpZGUgZWxlbWVudCBzaG9ydGN1dCBpbiBFbGVtZW50c1BhbmVsIHRvIHVz
ZSBhIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBzd2l0Y2hlcyB0aGUgc2hvcnRjdXQgZm9yIGFkZGluZyB2aXNpYmls
aXR5OmhpZGRlbiB0byBhbiBlbGVtZW50J3Mgc3R5bGUKKyAgICAgICAgdG8gdG9nZ2xpbmcgdGhl
IGNsYXNzIHdlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCBpbnN0ZWFkLiBUaGlzIHdheSBpdCBp
cyBwb3NzaWJsZSB0bworICAgICAgICBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgYWxsIGNoaWxk
IGVsZW1lbnRzIGFzIHdlbGwuIFRoZSBzdHlsZSBydWxlIGdldHMgaW5zZXJ0ZWQKKyAgICAgICAg
aW50byB0aGUgdGVtcG9yYXJ5IGluc3BlY3RvciBzdHlsZXNoZWV0LgorCisgICAgICAgIFRlc3Q6
IGluc3BlY3Rvci9lbGVtZW50cy9oaWRlLXNob3J0Y3V0Lmh0bWwKKworICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90
eXBlLnJlc29sdmVVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBl
LnRvZ2dsZUNsYXNzTmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxp
bmUucHJvdG90eXBlLl9vbmtleWRvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
VHJlZU91dGxpbmUucHJvdG90eXBlLnN0eWxlQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLnJ1bGVDYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUucmVzb3VyY2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5
cGUudG9nZ2xlQ2xhc3NDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlT3V0bGluZS5wcm90b3R5cGUuX3RvZ2dsZUhpZGVTaG9ydGN1dCk6CisKIDIwMTMtMDItMjUg
IE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bR1RLXSBNb3ZlIHRleHQgc2VsZWN0aW9uL2ZvY3VzIG5vdGlmaWNhdGlvbiBmb3IgYTEx
eSBmcm9tIGd0ayB0byBhdGsgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggMmRiM2M4ZmExNmFlMGMzYWFi
MmVmMDMzNWZmYjBlMDVhNTIwZDdiMC4uOTVkOTllYWIyYzJmYmIwNzZkZmY1NzRhZjIyODA3MGY4
MTRiMTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcwpAQCAtNTU0LDI5ICs1NTQsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb24odWlTb3VyY2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlv
bi5jb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICovCi0gICAgdG9nZ2xlSW5saW5lVmlzaWJpbGl0eTog
ZnVuY3Rpb24obm9kZUlkKQotICAgIHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb259IGlubGluZVN0eWxlcwotICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soaW5saW5lU3R5bGVzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgdmlzaWJpbGl0eSA9IGlubGluZVN0eWxlcy5nZXRMaXZlUHJvcGVydHko
InZpc2liaWxpdHkiKTsKLSAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZpc2liaWxpdHkudmFsdWUgPT09ICJoaWRkZW4iKQotICAgICAgICAgICAgICAg
ICAgICB2aXNpYmlsaXR5LnNldFRleHQoIiIsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkuc2V0VmFsdWUoImhpZGRlbiIs
IGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGlubGlu
ZVN0eWxlcy5hcHBlbmRQcm9wZXJ0eSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuZ2V0SW5saW5lU3R5bGVzQXN5bmMobm9kZUlkLCBjYWxsYmFjay5i
aW5kKHRoaXMpKTsKLSAgICB9LAotCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcwppbmRleCA1MDdmNjgwOGFmOWY0NWJmMTkyOTNlOTRkMmQyYWI5ZmY1NDg1Yjk2
Li5lZDM1YjNhODE1YmExMjFkN2QwZTlhMTljNzZhZjczMDYyZTdmZmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTc4OSw2ICs3ODks
MjkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuUGFyc2VkVVJMLmNvbXBsZXRlVVJMKGZyYW1lT3duZXJDYW5k
aWRhdGUuYmFzZVVSTCwgdXJsKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZQorICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisgICAgICovCisg
ICAgdG9nZ2xlQ2xhc3NOYW1lOiBmdW5jdGlvbihjbGFzc05hbWUsIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgdmFyIGNsYXNzU3RyaW5nID0gdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIikgfHwg
IiI7CisgICAgICAgIHZhciBjbGFzc05hbWVzID0gY2xhc3NTdHJpbmcubGVuZ3RoID8gY2xhc3NT
dHJpbmcuc3BsaXQoIiAiKSA6IFtdOworCisgICAgICAgIGlmIChjbGFzc05hbWVzLmxlbmd0aCA9
PT0gMSAmJiBjbGFzc05hbWVzWzBdID09PSBjbGFzc05hbWUpIHsKKyAgICAgICAgICAgIHRoaXMu
cmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBpbmRleCA9IGNsYXNzTmFtZXMuaW5kZXhPZihjbGFz
c05hbWUpOworICAgICAgICBpZiAoaW5kZXggPT09IC0xKQorICAgICAgICAgICAgY2xhc3NOYW1l
cy5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsYXNzTmFtZXMu
c3BsaWNlKGluZGV4LCAxKTsKKworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZVZhbHVlKCJjbGFz
cyIsIGNsYXNzTmFtZXMuam9pbigiICIpLCBjYWxsYmFjayk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxp
bmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMKaW5kZXggMDVkNzRmZDk3M2U0ODA5NzZmYmJkZGE4NzY1Y2FiOWYxNWRmNGVhYi4u
OWIyODY3MWM3N2IyZmNkOTQyMDYxYWIzNmU0NzhkNDNhZjAxZTE0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcwpAQCAtNDgzLDcgKzQ4Myw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5l
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIXRyZWVF
bGVtZW50Ll9lZGl0aW5nICYmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lmhhc05vTW9k
aWZpZXJzKGtleWJvYXJkRXZlbnQpICYmIGtleWJvYXJkRXZlbnQua2V5Q29kZSA9PT0gV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5ILmNvZGUpIHsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC50b2dnbGVJbmxpbmVWaXNpYmlsaXR5KG5vZGUuaWQpOworICAgICAg
ICAgICAgdGhpcy5fdG9nZ2xlSGlkZVNob3J0Y3V0KG5vZGUpOwogICAgICAgICAgICAgZXZlbnQu
Y29uc3VtZSh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjEwLDYg
KzYxMCw1NSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBuZXdUcmVlSXRlbTsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
VG9nZ2xlcyB0aGUgY2xhc3MgbmFtZSAid2ViLWluc3BlY3Rvci1oaWRlLXNob3J0Y3V0IiBvbiB0
aGUgbm9kZSBhbmQgYWRkcworICAgICAqIGEgcnVsZSBmb3Igc2V0dGluZyAidmlzaWJpbGl0eTog
aGlkZGVuICFpbXBvcnRhbnQiIG9uIHRoaXMgY2xhc3MgYW5kIGl0J3MKKyAgICAgKiBhbmNlc3Rv
cnMgdG8gdGhlIGluc3BlY3RvciBzdHlsZXNoZWV0IG9uY2UuCisgICAgICoKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5ET01Ob2RlfSBub2RlCisgICAgICogQHBhcmFtIHtmdW5jdGlvbig/
V2ViSW5zcGVjdG9yLkNTU1J1bGUpPX0gdXNlckNhbGxiYWNrCisgICAgICovCisgICAgX3RvZ2ds
ZUhpZGVTaG9ydGN1dDogZnVuY3Rpb24obm9kZSwgdXNlckNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgdmFyIGhpZGVTaG9ydGN1dENsYXNzTmFtZSA9ICJ3ZWItaW5zcGVjdG9yLWhpZGUtc2hvcnRj
dXQiOworICAgICAgICB2YXIgaGlkZVNob3J0Y3V0U2VsZWN0b3IgPSAiLndlYi1pbnNwZWN0b3It
aGlkZS1zaG9ydGN1dCwgLndlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCAqIjsKKworICAgICAg
ICBmdW5jdGlvbiBzdHlsZUNhbGxiYWNrKHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICB0
aGlzLl9oaWRlU2hvcnRjdXRSdWxlLnN0eWxlID0gc3R5bGU7CisgICAgICAgICAgICBpZiAodXNl
ckNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayh0aGlzLl9oaWRlU2hvcnRj
dXRSdWxlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1bGVDYWxsYmFjayhuZXdS
dWxlLCBkb2VzU2VsZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG5ld1J1bGUuc3R5bGUuYXBwZW5kUHJvcGVydHkoInZpc2liaWxpdHkiLCAiaGlkZGVuICFp
bXBvcnRhbnQiLCBzdHlsZUNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICAgICAgdGhpcy5f
aGlkZVNob3J0Y3V0UnVsZSA9IG5ld1J1bGU7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biByZXNvdXJjZUNhbGxiYWNrKHJlc291cmNlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
aGVyZSBpcyBubyByZXNvdXJjZSB3aGVuOgorICAgICAgICAgICAgLy8gLSB0aGlzLl9oaWRlU2hv
cnRjdXRSdWxlIGlzIHVuZGVmaW5lZCwgc28gdGhlIGluc3BlY3RvciByZXNvdXJjZQorICAgICAg
ICAgICAgLy8gICB3YXMgbm90IGZvdW5kIHJlZ2FyZGxlc3MgaWYgaXQgd2FzIGFscmVhZHkgY3Jl
YXRlZC4KKyAgICAgICAgICAgIC8vIC0gdGhpcy5faGlkZVNob3J0Y3V0UnVsZSBpcyBkZWZpbmVk
LCBidXQgYWZ0ZXIgYSBwYWdlIGNoYW5nZQorICAgICAgICAgICAgLy8gICB0aGUgYXNzb2NpYXRl
ZCByZXNvdXJjZSB3YXMgcmVtb3ZlZC4KKyAgICAgICAgICAgIC8vIFRoZSBydWxlIGdldHMgYWRk
ZWQgYW5kIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQgdG8gdGhlIGluc3BlY3RvcgorICAgICAgICAg
ICAgLy8gcmVzb3VyY2Ugb25seSBvbmNlLgorICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKKyAg
ICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkUnVsZShub2RlLmlkLCBoaWRl
U2hvcnRjdXRTZWxlY3RvciwgcnVsZUNhbGxiYWNrLmJpbmQodGhpcyksIHVzZXJDYWxsYmFjayk7
CisgICAgICAgICAgICBlbHNlIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgdXNl
ckNhbGxiYWNrKG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQ2xh
c3NDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2Rl
bC5nZXRWaWFJbnNwZWN0b3JSZXNvdXJjZUZvclJ1bGUodGhpcy5faGlkZVNob3J0Y3V0UnVsZSB8
fCB7fSwgcmVzb3VyY2VDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAg
IG5vZGUudG9nZ2xlQ2xhc3NOYW1lKGhpZGVTaG9ydGN1dENsYXNzTmFtZSwgdG9nZ2xlQ2xhc3ND
YWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgX19wcm90b19fOiBUcmVlT3V0bGlu
ZS5wcm90b3R5cGUKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjYzg5YTZiYWE1ZTVmODVlOWIzOWZjMTQwMGQ1ZmE0
MzkwNGI0N2EuLjA1N2I3YzIxZjYzOWIyZmM0YTc1ZWExNWM4ZTYwZDExOTgxMzM0YzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMy0wMi0yNiAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRo
ZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IFN3aXRjaCBoaWRlIGVsZW1l
bnQgc2hvcnRjdXQgaW4gRWxlbWVudHNQYW5lbCB0byB1c2UgYSBzZWxlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjQxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc3dpdGNo
ZXMgdGhlIHNob3J0Y3V0IGZvciBhZGRpbmcgdmlzaWJpbGl0eTpoaWRkZW4gdG8gYW4gZWxlbWVu
dCdzIHN0eWxlCisgICAgICAgIHRvIHRvZ2dsaW5nIHRoZSBjbGFzcyB3ZWItaW5zcGVjdG9yLWhp
ZGUtc2hvcnRjdXQgaW5zdGVhZC4gVGhpcyB3YXkgaXQgaXMgcG9zc2libGUgdG8KKyAgICAgICAg
Y2hhbmdlIHRoZSB2aXNpYmlsaXR5IG9mIGFsbCBjaGlsZCBlbGVtZW50cyBhcyB3ZWxsLiBUaGUg
c3R5bGUgcnVsZSBnZXRzIGluc2VydGVkCisgICAgICAgIGludG8gdGhlIHRlbXBvcmFyeSBpbnNw
ZWN0b3Igc3R5bGVzaGVldC4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZWxlbWVudHMvaGlk
ZS1zaG9ydGN1dC5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9y
dGN1dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9o
aWRlLXNob3J0Y3V0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTI1ICBTZXJnaW8gVmlsbGFyIFNl
bmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtzb3VwXSAiVG9vIG1hbnkgcmVk
aXJlY3RzIiBlcnJvciBsb2FkaW5nIGNoYXQgaW4gcGx1cy5nb29nbGUuY29tCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWVjZmU4OWM2Y2VkNjgzOGJiMDVlOTcxZmQyMTEwNjUwZTdhNmQ0
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWRl
LXNob3J0Y3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUZXN0cyB0aGUgaGlkZSBz
aG9ydGN1dCwgd2hpY2ggaW5jbHVkZXMgdG9nZ2xpbmcgY2xhc3MgbmFtZXMgb24gbm9kZXMgYW5k
IHNldHRpbmcgYSBydWxlIGluIHRoZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4KKworCitSdW5uaW5n
OiB0ZXN0U2V0VXAKKworUnVubmluZzogdGVzdFRvZ2dsZUNsYXNzTmFtZU9uCis9PT0gQWRkZWQg
Y2xhc3MgbmFtZSA9PT0KK29uZSB0d28gdGhyZWUgZm91cgorCitSdW5uaW5nOiB0ZXN0VG9nZ2xl
Q2xhc3NOYW1lT2ZmCis9PT0gUmVtb3ZlZCBjbGFzcyBuYW1lID09PQorb25lIHRocmVlIGZvdXIK
KworUnVubmluZzogdGVzdFRvZ2dsZUhpZGVTaG9ydGN1dE9uCis9PT0gQWRkZWQgaGlkZSBzaG9y
dGN1dCBjbGFzcyBuYW1lID09PQord2ViLWluc3BlY3Rvci1oaWRlLXNob3J0Y3V0Cis9PT0gQWRk
ZWQgaGlkZSBzaG9ydGN1dCBydWxlID09PQorLndlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCwg
LndlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCAqIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW4g
IWltcG9ydGFudDsKK30KKworUnVubmluZzogdGVzdE5vZGVJc0hpZGRlbgorPT09IE5vZGUgaXMg
aGlkZGVuID09PQordmlzaWJpbGl0eTogaGlkZGVuOworCitSdW5uaW5nOiB0ZXN0Q2hpbGROb2Rl
SXNIaWRkZW4KKz09PSBDaGlsZCBub2RlIGlzIGhpZGRlbiA9PT0KK3Zpc2liaWxpdHk6IGhpZGRl
bjsKKworUnVubmluZzogdGVzdFRvZ2dsZUhpZGVTaG9ydGN1dE9mZgorPT09IFJlbW92ZWQgaGlk
ZSBzaG9ydGN1dCBjbGFzcyBuYW1lID09PQorCitSdW5uaW5nOiB0ZXN0Tm9kZUlzVmlzaWJsZQor
PT09IE5vZGUgaXMgdmlzaWJsZSA9PT0KK3Zpc2liaWxpdHk6IHZpc2libGU7CisKK1J1bm5pbmc6
IHRlc3RDaGlsZE5vZGVJc1Zpc2libGUKKz09PSBDaGlsZCBub2RlIGlzIHZpc2libGUgPT09Cit2
aXNpYmlsaXR5OiB2aXNpYmxlOworCitSdW5uaW5nOiB0ZXN0SGlkZVJ1bGVBZGRlZE9ubHlPbmNl
Cis9PT0gTm8gc3R5bGUgYWRkZWQgdG8gcnVsZSA9PT0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUtc2hvcnRjdXQuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy9oaWRlLXNob3J0Y3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM1Mjk4MGM4
ODIyM2QyM2E3ODc5ZDUzMzBkODNkOTg2YTk3ZDkzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWRlLXNob3J0Y3V0Lmh0bWwKQEAgLTAsMCArMSwx
NjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRyZWVPdXRsaW5lOworICAgIHZhciBwYXJl
bnROb2RlOworICAgIHZhciBjaGlsZE5vZGU7CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVs
KCJlbGVtZW50cyIpOworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdFNldFVwKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyZWVPdXRs
aW5lID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2sobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBwYXJlbnROb2RlID0gbm9kZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qubm9k
ZVdpdGhJZCgiY2hpbGQtbm9kZSIsIGNhbGxiYWNrMik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrMihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNoaWxkTm9kZSA9IG5vZGU7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoInBhcmVudC1u
b2RlIiwgY2FsbGJhY2spOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RUb2dn
bGVDbGFzc05hbWVPbihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBjYWxs
YmFjaygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBBZGRlZCBjbGFzcyBuYW1lID09PSIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KGNoaWxkTm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpOworICAg
ICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2hpbGRO
b2RlLnRvZ2dsZUNsYXNzTmFtZSgiZm91ciIsIGNhbGxiYWNrKTsKKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbiB0ZXN0VG9nZ2xlQ2xhc3NOYW1lT2ZmKG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IFJlbW92ZWQgY2xhc3MgbmFtZSA9PT0i
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjaGlsZE5vZGUuZ2V0
QXR0cmlidXRlKCJjbGFzcyIpKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNoaWxkTm9kZS50b2dnbGVDbGFzc05hbWUoInR3byIsIGNhbGxi
YWNrKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0VG9nZ2xlSGlkZVNob3J0
Y3V0T24obmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soaGlk
ZVJ1bGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBBZGRlZCBoaWRlIHNob3J0Y3V0IGNsYXNzIG5hbWUgPT09Iik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUo
ImNsYXNzIikpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0g
QWRkZWQgaGlkZSBzaG9ydGN1dCBydWxlID09PSIpOworICAgICAgICAgICAgICAgIGlmIChoaWRl
UnVsZSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoaGlkZVJ1
bGUuc2VsZWN0b3JUZXh0ICsgIiB7IiArIGhpZGVSdWxlLnN0eWxlLmNzc1RleHQgKyAifSIpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlshXSBubyBydWxlIHdhcyBhZGRlZCB0byB0aGUgaW5zcGVjdG9yIHN0eWxlc2hl
ZXQiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHRyZWVPdXRsaW5lLl90b2dnbGVIaWRlU2hvcnRjdXQocGFyZW50Tm9kZSwgY2FsbGJhY2sp
OworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3ROb2RlSXNIaWRkZW4obmV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soc3R5bGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBOb2Rl
IGlzIGhpZGRlbiA9PT0iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChzdHlsZS5nZXRMaXZlUHJvcGVydHkoInZpc2liaWxpdHkiKS5wcm9wZXJ0eVRleHQpOworICAg
ICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhwYXJlbnROb2RlLmlkLCBjYWxs
YmFjayk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENoaWxkTm9kZUlzSGlk
ZGVuKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT0gQ2hpbGQgbm9kZSBpcyBoaWRkZW4gPT09Iik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoc3R5bGUuZ2V0TGl2ZVByb3BlcnR5KCJ2aXNpYmlsaXR5IikucHJv
cGVydHlUZXh0KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMoY2hp
bGROb2RlLmlkLCBjYWxsYmFjayk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFRvZ2dsZUhpZGVTaG9ydGN1dE9mZihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjaygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIj09PSBSZW1vdmVkIGhpZGUgc2hvcnRjdXQgY2xhc3MgbmFtZSA9PT0i
KTsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikp
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gYXR0cmli
dXRlIGNsYXNzIHN0aWxsIHByZXNlbnQiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLl90b2dnbGVIaWRlU2hvcnRjdXQo
cGFyZW50Tm9kZSwgY2FsbGJhY2spOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3ROb2RlSXNWaXNpYmxlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrKHN0eWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCI9PT0gTm9kZSBpcyB2aXNpYmxlID09PSIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHN0eWxlLmdldExpdmVQcm9wZXJ0eSgidmlzaWJpbGl0
eSIpLnByb3BlcnR5VGV4dCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29tcHV0ZWRTdHlsZUFz
eW5jKHBhcmVudE5vZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiB0ZXN0Q2hpbGROb2RlSXNWaXNpYmxlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ2hpbGQgbm9kZSBpcyB2aXNpYmxlID09PSIp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHN0eWxlLmdldExpdmVQ
cm9wZXJ0eSgidmlzaWJpbGl0eSIpLnByb3BlcnR5VGV4dCk7CisgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
Z2V0Q29tcHV0ZWRTdHlsZUFzeW5jKGNoaWxkTm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICB9
LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaWRlUnVsZUFkZGVkT25seU9uY2UobmV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soaGlkZVJ1bGUpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBObyBz
dHlsZSBhZGRlZCB0byBydWxlID09PSIpOworICAgICAgICAgICAgICAgIGlmIChoaWRlUnVsZSkK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBoaWRlIHJ1
bGUgd2FzIGFkZGVkIGFnYWluIik7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB0cmVlT3V0bGluZS5fdG9nZ2xlSGlkZVNob3J0Y3V0KGNoaWxk
Tm9kZSwgY2FsbGJhY2spOworICAgICAgICB9CisgICAgXSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGUgaGlkZSBzaG9y
dGN1dCwgd2hpY2ggaW5jbHVkZXMgdG9nZ2xpbmcgY2xhc3MgbmFtZXMgb24gbm9kZXMgYW5kIHNl
dHRpbmcgYSBydWxlIGluIHRoZSBpbnNwZWN0b3Igc3R5bGVzaGVldC4KKzwvcD4KKworPGRpdiBp
ZD0icGFyZW50LW5vZGUiPgorICAgIDxkaXYgc3R5bGU9InZpc2liaWxpdHk6aGlkZGVuIj4KKyAg
ICAgICAgPGRpdiBpZD0iY2hpbGQtbm9kZSIgY2xhc3M9Im9uZSB0d28gdGhyZWUiIHN0eWxlPSJ2
aXNpYmlsaXR5OnZpc2libGUiPjwvZGl2PgorICAgIDwvZGl2PgorPC9kaXY+CisKKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190613</attachid>
            <date>2013-02-27 15:04:07 -0800</date>
            <delta_ts>2013-02-28 12:27:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110641-20130227150020.patch</filename>
            <type>text/plain</type>
            <size>13645</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2Zjc4NTg1OTcyZjQ1
YmE4NDQ4YjQ5OWY0MTFmNzZhY2JmYWZhYi4uMTcyNGM3ZWEwMjk3NzMxYjY2ZmIzNGYwN2I4ZjUw
Y2Q1ZjBmMTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAyLTI3ICBFYmVy
aGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogU3dpdGNoIGhpZGUgZWxlbWVudCBzaG9ydGN1dCBpbiBFbGVtZW50c1BhbmVsIHRvIHVz
ZSBhIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBzd2l0Y2hlcyB0aGUgc2hvcnRjdXQgZm9yIGFkZGluZyB2aXNpYmls
aXR5OmhpZGRlbiB0byBhbiBlbGVtZW50J3Mgc3R5bGUKKyAgICAgICAgdG8gdG9nZ2xpbmcgdGhl
IGNsYXNzIHdlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCBpbnN0ZWFkLiBUaGlzIHdheSBpdCBp
cyBwb3NzaWJsZSB0bworICAgICAgICBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgYWxsIGNoaWxk
IGVsZW1lbnRzIGFzIHdlbGwuIFRoZSBzdHlsZSBydWxlIGdldHMgaW5qZWN0ZWQgaW50bworICAg
ICAgICB0aGUgZG9jdW1lbnQgYnkgY3JlYXRpbmcgYSBzdHlsZSB0YWcgaW4gdGhlIGRvY3VtZW50
cyBoZWFkIGFuZCBpbiB0aGUgaGVhZCBvZiBlYWNoCisgICAgICAgIGZyYW1lIGluIHRoZSBkb2N1
bWVudC4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5yZXNvbHZlVVJMKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01Ob2RlLnByb3RvdHlwZS50b2dnbGVDbGFzc05hbWUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5fb25rZXlkb3duKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZS5ydW50aW1lQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBl
Ll90b2dnbGVIaWRlU2hvcnRjdXQpOgorCiAyMDEzLTAyLTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1
bm92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNDYzMSkgb2YgYm9yZGVy
LXJhZGl1cyBwZXJjZW50YWdlIHdpdGggYm9yZGVyIHBpeGVsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggMmRiM2M4ZmEx
NmFlMGMzYWFiMmVmMDMzNWZmYjBlMDVhNTIwZDdiMC4uOTVkOTllYWIyYzJmYmIwNzZkZmY1NzRh
ZjIyODA3MGY4MTRiMTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTU0LDI5ICs1NTQsNiBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCByYXdMb2NhdGlvbi5saW5lTnVtYmVyLCBy
YXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICovCi0gICAgdG9nZ2xlSW5saW5lVmlz
aWJpbGl0eTogZnVuY3Rpb24obm9kZUlkKQotICAgIHsKLSAgICAgICAgLyoqCi0gICAgICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb259IGlubGluZVN0eWxlcwot
ICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soaW5saW5lU3R5bGVzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgdmlzaWJpbGl0eSA9IGlubGluZVN0eWxlcy5nZXRMaXZl
UHJvcGVydHkoInZpc2liaWxpdHkiKTsKLSAgICAgICAgICAgIGlmICh2aXNpYmlsaXR5KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZpc2liaWxpdHkudmFsdWUgPT09ICJoaWRkZW4iKQotICAgICAg
ICAgICAgICAgICAgICB2aXNpYmlsaXR5LnNldFRleHQoIiIsIGZhbHNlLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkuc2V0VmFsdWUo
ImhpZGRlbiIsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIGlubGluZVN0eWxlcy5hcHBlbmRQcm9wZXJ0eSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZ2V0SW5saW5lU3R5bGVzQXN5bmMobm9kZUlkLCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICB9LAotCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9ET01BZ2VudC5qcwppbmRleCA1MDdmNjgwOGFmOWY0NWJmMTkyOTNlOTRkMmQyYWI5
ZmY1NDg1Yjk2Li5lZDM1YjNhODE1YmExMjFkN2QwZTlhMTljNzZhZjczMDYyZTdmZmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTc4
OSw2ICs3ODksMjkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUGFyc2VkVVJMLmNvbXBsZXRlVVJMKGZyYW1l
T3duZXJDYW5kaWRhdGUuYmFzZVVSTCwgdXJsKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFt
ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCisg
ICAgICovCisgICAgdG9nZ2xlQ2xhc3NOYW1lOiBmdW5jdGlvbihjbGFzc05hbWUsIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgdmFyIGNsYXNzU3RyaW5nID0gdGhpcy5nZXRBdHRyaWJ1dGUoImNs
YXNzIikgfHwgIiI7CisgICAgICAgIHZhciBjbGFzc05hbWVzID0gY2xhc3NTdHJpbmcubGVuZ3Ro
ID8gY2xhc3NTdHJpbmcuc3BsaXQoIiAiKSA6IFtdOworCisgICAgICAgIGlmIChjbGFzc05hbWVz
Lmxlbmd0aCA9PT0gMSAmJiBjbGFzc05hbWVzWzBdID09PSBjbGFzc05hbWUpIHsKKyAgICAgICAg
ICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCJjbGFzcyIsIGNhbGxiYWNrKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpbmRleCA9IGNsYXNzTmFtZXMuaW5k
ZXhPZihjbGFzc05hbWUpOworICAgICAgICBpZiAoaW5kZXggPT09IC0xKQorICAgICAgICAgICAg
Y2xhc3NOYW1lcy5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNs
YXNzTmFtZXMuc3BsaWNlKGluZGV4LCAxKTsKKworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZVZh
bHVlKCJjbGFzcyIsIGNsYXNzTmFtZXMuam9pbigiICIpLCBjYWxsYmFjayk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
VHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanMKaW5kZXggMDVkNzRmZDk3M2U0ODA5NzZmYmJkZGE4NzY1Y2FiOWYx
NWRmNGVhYi4uNjdmZjNkZGE2ZjRmZWU3MDdkZWU0OTlkY2E5MWNkNDQ5NDUwOTY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qcwpAQCAtNDgzLDcgKzQ4Myw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBp
ZiAoIXRyZWVFbGVtZW50Ll9lZGl0aW5nICYmIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lmhhc05vTW9kaWZpZXJzKGtleWJvYXJkRXZlbnQpICYmIGtleWJvYXJkRXZlbnQua2V5Q29kZSA9
PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5cy5ILmNvZGUpIHsKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC50b2dnbGVJbmxpbmVWaXNpYmlsaXR5KG5vZGUuaWQp
OworICAgICAgICAgICAgdGhpcy5fdG9nZ2xlSGlkZVNob3J0Y3V0KG5vZGUpOwogICAgICAgICAg
ICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtNjEwLDYgKzYxMCw0MiBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXdUcmVlSXRlbTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogVG9nZ2xlcyB0aGUgY2xhc3MgbmFtZSAid2ViLWluc3BlY3Rvci1oaWRlLXNob3J0
Y3V0IiBvbiB0aGUgbm9kZSBhbmQKKyAgICAgKiBpbmplY3RzIGEgc3R5bGVzaGVldCBpbnRvIHRo
ZSBoZWFkIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNvbnRhaW5pbmcgYQorICAgICAqIHJ1bGUg
dG8gc2V0ICJ2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudCIgb24gdGhpcyBjbGFzcyBhbmQg
aXQncworICAgICAqIGFuY2VzdG9ycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkRPTU5vZGV9IG5vZGUKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSB1c2VyQ2FsbGJh
Y2sKKyAgICAgKi8KKyAgICBfdG9nZ2xlSGlkZVNob3J0Y3V0OiBmdW5jdGlvbihub2RlLCB1c2Vy
Q2FsbGJhY2spCisgICAgeworICAgICAgICB2YXIgY2xhc3NOYW1lID0gIndlYi1pbnNwZWN0b3It
aGlkZS1zaG9ydGN1dCI7CisgICAgICAgIHZhciBzdHlsZVRhZ0lkID0gIndlYi1pbnNwZWN0b3It
aGlkZS1zaG9ydGN1dC1zdHlsZSI7CisgICAgICAgIHZhciBzdHlsZVJ1bGUgPSAiLndlYi1pbnNw
ZWN0b3ItaGlkZS1zaG9ydGN1dCwgLndlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dCAqIHsgdmlz
aWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7IH0iOworCisgICAgICAgIHZhciBpbmplY3RTdHls
ZVJ1bGVDb2RlID0gWworICAgICAgICAgICAgInZhciBzdHlsZSA9IGRvY3VtZW50LmhlYWQucXVl
cnlTZWxlY3Rvcignc3R5bGUjIiArIHN0eWxlVGFnSWQgKyAiJyk7IiwKKyAgICAgICAgICAgICJp
ZiAoIXN0eWxlKSB7IiwKKyAgICAgICAgICAgICAgICAic3R5bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzdHlsZScpOyIsCisgICAgICAgICAgICAgICAgInN0eWxlLmlkID0gJyIgKyBzdHls
ZVRhZ0lkICsgIic7IiwKKyAgICAgICAgICAgICAgICAic3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7
IiwKKyAgICAgICAgICAgICAgICAic3R5bGUuaW5uZXJIVE1MID0gJyIgKyBzdHlsZVJ1bGUgKyAi
JzsiLAorICAgICAgICAgICAgICAgICJkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTsi
LAorICAgICAgICAgICAgICAgICJmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkr
KykiLAorICAgICAgICAgICAgICAgICAgICAiZnJhbWVzW2ldLmRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoc3R5bGUuY2xvbmVOb2RlKHRydWUpKTsiLAorICAgICAgICAgICAgIn0iCisgICAgICAg
IF0uam9pbigiIik7CisKKyAgICAgICAgZnVuY3Rpb24gcnVudGltZUNhbGxiYWNrKGVycm9yLCBy
ZXN1bHQsIHdhc1Rocm93bikKKyAgICAgICAgeworICAgICAgICAgICAgbm9kZS50b2dnbGVDbGFz
c05hbWUoY2xhc3NOYW1lLCB1c2VyQ2FsbGJhY2spOworICAgICAgICB9CisKKyAgICAgICAgUnVu
dGltZUFnZW50LmV2YWx1YXRlKGluamVjdFN0eWxlUnVsZUNvZGUsIHJ1bnRpbWVDYWxsYmFjay5i
aW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgX19wcm90b19fOiBUcmVlT3V0bGluZS5wcm90b3R5
cGUKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDhlMGQ2ZTBjYzI2MDNjY2MyYTc0NmFiZTU0MTQ3NjliZDFkMTZmNGUu
LjBjMDc5Yjc1MzJmMGFiY2RjYTQxMjhmMDg3NzkyNzA1YzdlMTAzZGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMy0wMi0yNyAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IFN3aXRjaCBoaWRlIGVsZW1lbnQgc2hvcnRj
dXQgaW4gRWxlbWVudHNQYW5lbCB0byB1c2UgYSBzZWxlY3RvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjQxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc3dpdGNoZXMgdGhlIHNo
b3J0Y3V0IGZvciBhZGRpbmcgdmlzaWJpbGl0eTpoaWRkZW4gdG8gYW4gZWxlbWVudCdzIHN0eWxl
CisgICAgICAgIHRvIHRvZ2dsaW5nIHRoZSBjbGFzcyB3ZWItaW5zcGVjdG9yLWhpZGUtc2hvcnRj
dXQgaW5zdGVhZC4gVGhpcyB3YXkgaXQgaXMgcG9zc2libGUgdG8KKyAgICAgICAgY2hhbmdlIHRo
ZSB2aXNpYmlsaXR5IG9mIGFsbCBjaGlsZCBlbGVtZW50cyBhcyB3ZWxsLiBUaGUgc3R5bGUgcnVs
ZSBnZXRzIGluamVjdGVkIGludG8KKyAgICAgICAgdGhlIGRvY3VtZW50IGJ5IGNyZWF0aW5nIGEg
c3R5bGUgdGFnIGluIHRoZSBkb2N1bWVudHMgaGVhZCBhbmQgaW4gdGhlIGhlYWQgb2YgZWFjaAor
ICAgICAgICBmcmFtZSBpbiB0aGUgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9y
L2VsZW1lbnRzL2hpZGUtc2hvcnRjdXQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1l
bnRzL2hpZGUtc2hvcnRjdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0yNyAgw4Fk
w6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLiBVbnNraXBwIGluc3BlY3RvciB0ZXN0cyBhZnRlciByMTQ0MDcxLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUtc2hvcnRjdXQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUtc2hvcnRj
dXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZTU3ZjViYzFhNGY0NDJjZjFjYWJjY2E5NGEx
NTY5ZDg5OTdhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvaGlkZS1zaG9ydGN1dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNiBAQAorVGVzdHMg
dGhlIGhpZGUgc2hvcnRjdXQsIHdoaWNoIHRvZ2dsZXMgYSBjbGFzcyBuYW1lIG9uIHRoZSBub2Rl
IGFuZCBzZXRzIHZpc2liaWxpdHk6IGhpZGRlbiBvbiB0aGUgbm9kZSBhbmQgaXQncyBhbmNlc3Rv
cnMuCisKKworUnVubmluZzogdGVzdFNldFVwCisKK1J1bm5pbmc6IHRlc3RUb2dnbGVDbGFzc05h
bWVPbgorPT09IEFkZGVkIGNsYXNzIG5hbWUgPT09CitvbmUgdHdvIHRocmVlIGZvdXIKKworUnVu
bmluZzogdGVzdFRvZ2dsZUNsYXNzTmFtZU9mZgorPT09IFJlbW92ZWQgY2xhc3MgbmFtZSA9PT0K
K29uZSB0aHJlZSBmb3VyCisKK1J1bm5pbmc6IHRlc3RUb2dnbGVIaWRlU2hvcnRjdXRPbgorPT09
IEFkZGVkIGhpZGUgc2hvcnRjdXQgY2xhc3MgbmFtZSA9PT0KK3dlYi1pbnNwZWN0b3ItaGlkZS1z
aG9ydGN1dAorCitSdW5uaW5nOiB0ZXN0Tm9kZUlzSGlkZGVuCis9PT0gTm9kZSBpcyBoaWRkZW4g
PT09Cit2aXNpYmlsaXR5OiBoaWRkZW47CisKK1J1bm5pbmc6IHRlc3RDaGlsZE5vZGVJc0hpZGRl
bgorPT09IENoaWxkIG5vZGUgaXMgaGlkZGVuID09PQordmlzaWJpbGl0eTogaGlkZGVuOworCitS
dW5uaW5nOiB0ZXN0VG9nZ2xlSGlkZVNob3J0Y3V0T2ZmCis9PT0gUmVtb3ZlZCBoaWRlIHNob3J0
Y3V0IGNsYXNzIG5hbWUgPT09CisKK1J1bm5pbmc6IHRlc3ROb2RlSXNWaXNpYmxlCis9PT0gTm9k
ZSBpcyB2aXNpYmxlID09PQordmlzaWJpbGl0eTogdmlzaWJsZTsKKworUnVubmluZzogdGVzdENo
aWxkTm9kZUlzVmlzaWJsZQorPT09IENoaWxkIG5vZGUgaXMgdmlzaWJsZSA9PT0KK3Zpc2liaWxp
dHk6IHZpc2libGU7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy9oaWRlLXNob3J0Y3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlk
ZS1zaG9ydGN1dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNTAzNDI0ZTRmNTk0NTg5NWI5MTYzMDQ5NzE4
ODcyMDM5ODRlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvaGlkZS1zaG9ydGN1dC5odG1sCkBAIC0wLDAgKzEsMTQ3IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9l
bGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHZhciB0cmVlT3V0bGluZTsKKyAgICB2YXIgcGFyZW50Tm9kZTsKKyAgICB2YXIgY2hp
bGROb2RlOworCisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTZXRVcChu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0cmVlT3V0bGluZSA9IFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMudHJlZU91dGxpbmU7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5v
ZGUKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5vZGVXaXRoSWQoImNoaWxkLW5vZGUi
LCBjYWxsYmFjazIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjYWxs
YmFjazIobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBu
b2RlOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKCJwYXJlbnQtbm9kZSIsIGNhbGxiYWNrKTsKKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0VG9nZ2xlQ2xhc3NOYW1lT24obmV4dCkK
KyAgICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWRkZWQgY2xh
c3MgbmFtZSA9PT0iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChj
aGlsZE5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNoaWxkTm9kZS50b2dnbGVDbGFzc05hbWUo
ImZvdXIiLCBjYWxsYmFjayk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFRv
Z2dsZUNsYXNzTmFtZU9mZihuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjaygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBSZW1vdmVkIGNsYXNzIG5hbWUgPT09Iik7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY2hpbGROb2RlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSk7
CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
aGlsZE5vZGUudG9nZ2xlQ2xhc3NOYW1lKCJ0d28iLCBjYWxsYmFjayk7CisgICAgICAgIH0sCisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdFRvZ2dsZUhpZGVTaG9ydGN1dE9uKG5leHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEFkZGVkIGhpZGUgc2hvcnRj
dXQgY2xhc3MgbmFtZSA9PT0iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChwYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSk7CisgICAgICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cmVlT3V0bGluZS5fdG9nZ2xl
SGlkZVNob3J0Y3V0KHBhcmVudE5vZGUsIGNhbGxiYWNrKTsKKyAgICAgICAgfSwKKworICAgICAg
ICBmdW5jdGlvbiB0ZXN0Tm9kZUlzSGlkZGVuKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKHN0eWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gTm9kZSBpcyBoaWRkZW4gPT09Iik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc3R5bGUuZ2V0TGl2ZVByb3BlcnR5
KCJ2aXNpYmlsaXR5IikucHJvcGVydHlUZXh0KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21w
dXRlZFN0eWxlQXN5bmMocGFyZW50Tm9kZS5pZCwgY2FsbGJhY2spOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RDaGlsZE5vZGVJc0hpZGRlbihuZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHlsZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENoaWxkIG5vZGUgaXMgaGlk
ZGVuID09PSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHN0eWxl
LmdldExpdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLnByb3BlcnR5VGV4dCk7CisgICAgICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKGNoaWxkTm9kZS5pZCwgY2FsbGJhY2spOwor
ICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RUb2dnbGVIaWRlU2hvcnRjdXRPZmYo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gUmVt
b3ZlZCBoaWRlIHNob3J0Y3V0IGNsYXNzIG5hbWUgPT09Iik7CisgICAgICAgICAgICAgICAgaWYg
KHBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIGF0dHJpYnV0ZSBjbGFzcyBzdGlsbCBwcmVzZW50
Iik7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB0cmVlT3V0bGluZS5fdG9nZ2xlSGlkZVNob3J0Y3V0KHBhcmVudE5vZGUsIGNhbGxiYWNrKTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Tm9kZUlzVmlzaWJsZShuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHlsZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IE5vZGUg
aXMgdmlzaWJsZSA9PT0iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChzdHlsZS5nZXRMaXZlUHJvcGVydHkoInZpc2liaWxpdHkiKS5wcm9wZXJ0eVRleHQpOworICAg
ICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhwYXJlbnROb2RlLmlkLCBjYWxs
YmFjayk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENoaWxkTm9kZUlzVmlz
aWJsZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhzdHls
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiPT09IENoaWxkIG5vZGUgaXMgdmlzaWJsZSA9PT0iKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChzdHlsZS5nZXRMaXZlUHJvcGVydHkoInZpc2liaWxpdHkiKS5w
cm9wZXJ0eVRleHQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVkU3R5bGVBc3luYyhj
aGlsZE5vZGUuaWQsIGNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgIF0pOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMgdGhlIGhp
ZGUgc2hvcnRjdXQsIHdoaWNoIHRvZ2dsZXMgYSBjbGFzcyBuYW1lIG9uIHRoZSBub2RlIGFuZCBz
ZXRzIHZpc2liaWxpdHk6IGhpZGRlbiBvbiB0aGUgbm9kZSBhbmQgaXQncyBhbmNlc3RvcnMuCis8
L3A+CisKKzxkaXYgaWQ9InBhcmVudC1ub2RlIj4KKyAgICA8ZGl2IHN0eWxlPSJ2aXNpYmlsaXR5
OmhpZGRlbiI+CisgICAgICAgIDxkaXYgaWQ9ImNoaWxkLW5vZGUiIGNsYXNzPSJvbmUgdHdvIHRo
cmVlIiBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2
PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190782</attachid>
            <date>2013-02-28 12:27:32 -0800</date>
            <delta_ts>2013-02-28 18:00:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110641-20130228122345.patch</filename>
            <type>text/plain</type>
            <size>12147</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2Zjc4NTg1OTcyZjQ1
YmE4NDQ4YjQ5OWY0MTFmNzZhY2JmYWZhYi4uYzRkMjAxOGVmM2U5ZWFkZmJjN2U3NzRiODAyNGYw
MGI5MjI4Y2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAyLTI4ICBFYmVy
aGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogU3dpdGNoIGhpZGUgZWxlbWVudCBzaG9ydGN1dCBpbiBFbGVtZW50c1BhbmVsIHRvIHVz
ZSBhIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGNoYW5nZSBzd2l0Y2hlcyB0aGUgc2hvcnRjdXQgZm9yIGFkZGluZyB2aXNpYmls
aXR5OmhpZGRlbiB0byBhbiBlbGVtZW50J3Mgc3R5bGUKKyAgICAgICAgdG8gdG9nZ2xpbmcgYSBj
bGFzcyBuYW1lIG9uIHRoZSBlbGVtZW50IGFuZCBpbmplY3RpbmcgYSBzdHlsZSBydWxlIGludG8g
dGhlIGVsZW1lbnQncworICAgICAgICBkb2N1bWVudCBpbnN0ZWFkLiBUaGlzIHdheSBpdCBpcyBw
b3NzaWJsZSB0byBjaGFuZ2UgdGhlIHZpc2liaWxpdHkgb2YgYWxsIGNoaWxkCisgICAgICAgIGVs
ZW1lbnRzIGFzIHdlbGwuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUt
c2hvcnRjdXQuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1v
ZGVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlw
ZS5fb25rZXlkb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5l
LnByb3RvdHlwZS5yZXNvbHZlZE5vZGUudG9nZ2xlQ2xhc3NBbmRJbmplY3RTdHlsZVJ1bGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlLik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUuX3RvZ2ds
ZUhpZGVTaG9ydGN1dCk6CisKIDIwMTMtMDItMjcgIEp1c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTM0NjMxKSBvZiBib3JkZXItcmFkaXVz
IHBlcmNlbnRhZ2Ugd2l0aCBib3JkZXIgcGl4ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAyZGIzYzhmYTE2YWUwYzNh
YWIyZWYwMzM1ZmZiMGUwNWE1MjBkN2IwLi45NWQ5OWVhYjJjMmZiYjA3NmRmZjU3NGFmMjI4MDcw
ZjgxNGIxMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01NTQsMjkgKzU1NCw2IEBAIFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
VUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0
aW9uLmNvbHVtbk51bWJlcik7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKi8KLSAgICB0b2dnbGVJbmxpbmVWaXNpYmlsaXR5
OiBmdW5jdGlvbihub2RlSWQpCi0gICAgewotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbn0gaW5saW5lU3R5bGVzCi0gICAgICAg
ICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhpbmxpbmVTdHlsZXMpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciB2aXNpYmlsaXR5ID0gaW5saW5lU3R5bGVzLmdldExpdmVQcm9wZXJ0
eSgidmlzaWJpbGl0eSIpOwotICAgICAgICAgICAgaWYgKHZpc2liaWxpdHkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmlzaWJpbGl0eS52YWx1ZSA9PT0gImhpZGRlbiIpCi0gICAgICAgICAgICAg
ICAgICAgIHZpc2liaWxpdHkuc2V0VGV4dCgiIiwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eS5zZXRWYWx1ZSgiaGlkZGVu
IiwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgaW5s
aW5lU3R5bGVzLmFwcGVuZFByb3BlcnR5KCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5nZXRJbmxpbmVTdHlsZXNBc3luYyhub2RlSWQsIGNhbGxiYWNr
LmJpbmQodGhpcykpOwotICAgIH0sCi0KICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAwNWQ3NGZkOTczZTQ4MDk3
NmZiYmRkYTg3NjVjYWI5ZjE1ZGY0ZWFiLi5iNjJiZWY1Njc4MDc5ODQxNGEyZmM5ZThmMWE4Yjcw
NTcyMmY3MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC00ODMsNyArNDgzLDcgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmICghdHJlZUVsZW1lbnQuX2VkaXRpbmcgJiYgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuaGFzTm9Nb2RpZmllcnMoa2V5Ym9hcmRFdmVudCkgJiYga2V5Ym9h
cmRFdmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlzLkgu
Y29kZSkgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnRvZ2dsZUlubGluZVZp
c2liaWxpdHkobm9kZS5pZCk7CisgICAgICAgICAgICB0aGlzLl90b2dnbGVIaWRlU2hvcnRjdXQo
bm9kZSk7CiAgICAgICAgICAgICBldmVudC5jb25zdW1lKHRydWUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC02MTAsNiArNjEwLDQ4IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50
c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ld1RyZWVJdGVtOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBSdW5zIGEgc2NyaXB0IG9uIHRoZSBub2RlJ3MgcmVt
b3RlIG9iamVjdCB0aGF0IHRvZ2dsZXMgYSBjbGFzcyBuYW1lIG9uCisgICAgICogdGhlIG5vZGUg
YW5kIGluamVjdHMgYSBzdHlsZXNoZWV0IGludG8gdGhlIGhlYWQgb2YgdGhlIG5vZGUncyBkb2N1
bWVudAorICAgICAqIGNvbnRhaW5pbmcgYSBydWxlIHRvIHNldCAidmlzaWJpbGl0eTogaGlkZGVu
IiBvbiB0aGUgY2xhc3MgYW5kIGFsbCBpdCdzCisgICAgICogYW5jZXN0b3JzLgorICAgICAqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0gbm9kZQorICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpPX0gdXNlckNhbGxiYWNrCisgICAg
ICovCisgICAgX3RvZ2dsZUhpZGVTaG9ydGN1dDogZnVuY3Rpb24obm9kZSwgdXNlckNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZWROb2RlKG9iamVjdCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFvYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBmdW5jdGlvbiB0b2dnbGVDbGFzc0FuZEluamVjdFN0eWxlUnVsZSgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gIl9fd2ViLWluc3Bl
Y3Rvci1oaWRlLXNob3J0Y3V0X18iOworICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlVGFnSWQg
PSAiX193ZWItaW5zcGVjdG9yLWhpZGUtc2hvcnRjdXQtc3R5bGVfXyI7CisgICAgICAgICAgICAg
ICAgY29uc3Qgc3R5bGVSdWxlID0gIi5fX3dlYi1pbnNwZWN0b3ItaGlkZS1zaG9ydGN1dF9fLCAu
X193ZWItaW5zcGVjdG9yLWhpZGUtc2hvcnRjdXRfXyAqIHsgdmlzaWJpbGl0eTogaGlkZGVuICFp
bXBvcnRhbnQ7IH0iOworCisgICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QudG9nZ2xlKGNs
YXNzTmFtZSk7CisKKyAgICAgICAgICAgICAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5oZWFkLnF1
ZXJ5U2VsZWN0b3IoInN0eWxlIyIgKyBzdHlsZVRhZ0lkKTsKKyAgICAgICAgICAgICAgICBpZiAo
c3R5bGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHN0
eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgICAgICAgICBz
dHlsZS5pZCA9IHN0eWxlVGFnSWQ7CisgICAgICAgICAgICAgICAgc3R5bGUudHlwZSA9ICJ0ZXh0
L2NzcyI7CisgICAgICAgICAgICAgICAgc3R5bGUuaW5uZXJIVE1MID0gc3R5bGVSdWxlOworICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKHRvZ2dsZUNsYXNzQW5kSW5q
ZWN0U3R5bGVSdWxlLCB1bmRlZmluZWQsIHVzZXJDYWxsYmFjayk7CisgICAgICAgICAgICBvYmpl
Y3QucmVsZWFzZSgpOworICAgICAgICB9CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5yZXNvbHZlTm9kZShub2RlLCAiIiwgcmVzb2x2ZWROb2RlKTsKKyAgICB9LAorCiAgICAg
X19wcm90b19fOiBUcmVlT3V0bGluZS5wcm90b3R5cGUKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhlMGQ2ZTBjYzI2
MDNjY2MyYTc0NmFiZTU0MTQ3NjliZDFkMTZmNGUuLjZmZGRmZmE0MmI4MWFlMDA5NGZlZTg2OWEw
YTY3YjFlNjQzODc4ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wMi0yOCAgRWJlcmhh
cmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWJJbnNwZWN0
b3I6IFN3aXRjaCBoaWRlIGVsZW1lbnQgc2hvcnRjdXQgaW4gRWxlbWVudHNQYW5lbCB0byB1c2Ug
YSBzZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTEwNjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2Ugc3dpdGNoZXMgdGhlIHNob3J0Y3V0IGZvciBhZGRpbmcgdmlzaWJpbGl0
eTpoaWRkZW4gdG8gYW4gZWxlbWVudCdzIHN0eWxlCisgICAgICAgIHRvIHRvZ2dsaW5nIGEgY2xh
c3MgbmFtZSBvbiB0aGUgZWxlbWVudCBhbmQgaW5qZWN0aW5nIGEgc3R5bGUgcnVsZSBpbnRvIHRo
ZSBlbGVtZW50J3MKKyAgICAgICAgZG9jdW1lbnQgaW5zdGVhZC4gVGhpcyB3YXkgaXQgaXMgcG9z
c2libGUgdG8gY2hhbmdlIHRoZSB2aXNpYmlsaXR5IG9mIGFsbCBjaGlsZAorICAgICAgICBlbGVt
ZW50cyBhcyB3ZWxsLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9lbGVtZW50cy9oaWRlLXNo
b3J0Y3V0Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9oaWRlLXNob3J0Y3V0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUt
c2hvcnRjdXQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VsZW1lbnRzL3Jlc291
cmNlcy9oaWRlLXNob3J0Y3V0LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMi0yNyAgw4Fk
w6FtIEthbGxhaSAgPGthZGFtQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLiBVbnNraXBwIGluc3BlY3RvciB0ZXN0cyBhZnRlciByMTQ0MDcxLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUtc2hvcnRjdXQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2hpZGUtc2hvcnRj
dXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmN2M4OGMxZjE2NTU2ZTZmNDhlMDEwZTJhN2Fm
MjQ4NWJlNzUyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvaGlkZS1zaG9ydGN1dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorVGVzdHMg
dGhlIGhpZGUgc2hvcnRjdXQsIHdoaWNoIHRvZ2dsZXMgdmlzaWJpbGl0eTpoaWRkZW4gb24gdGhl
IG5vZGUgYW5kIGl0J3MgYW5jZXN0b3JzLiBCdWcgMTEwNjQxCisKK3BhcmVudAorY2hpbGQKKwor
CitSdW5uaW5nOiB0ZXN0U2V0VXAKKworUnVubmluZzogdGVzdFRvZ2dsZUhpZGVTaG9ydGN1dE9u
Cis9PT0gQWRkZWQgaGlkZSBzaG9ydGN1dCA9PT0KKz09PSBQYXJlbnQgbm9kZSBpcyBoaWRkZW4g
PT09Cit2aXNpYmlsaXR5OiBoaWRkZW47Cis9PT0gQ2hpbGQgbm9kZSBpcyBoaWRkZW4gPT09Cit2
aXNpYmlsaXR5OiBoaWRkZW47CisKK1J1bm5pbmc6IHRlc3RUb2dnbGVIaWRlU2hvcnRjdXRPZmYK
Kz09PSBSZW1vdmVkIGhpZGUgc2hvcnRjdXQgPT09Cis9PT0gUGFyZW50IG5vZGUgaXMgdmlzaWJs
ZSA9PT0KK3Zpc2liaWxpdHk6IHZpc2libGU7Cis9PT0gQ2hpbGQgbm9kZSBpcyB2aXNpYmxlID09
PQordmlzaWJpbGl0eTogdmlzaWJsZTsKKworUnVubmluZzogdGVzdFRvZ2dsZUhpZGVTaG9ydGN1
dE9uSW5GcmFtZQorPT09IEFkZGVkIGhpZGUgc2hvcnRjdXQgaW4gZnJhbWUgPT09Cis9PT0gRnJh
bWUgbm9kZSBpcyBoaWRkZW4gPT09Cit2aXNpYmlsaXR5OiBoaWRkZW47CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9oaWRlLXNob3J0Y3V0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBmOWU2NGEwYzNjOTBmODZmOTcxYjQ2YmY1NGRmNWRhNWI4MDkxMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvaGlkZS1zaG9ydGN1dC5odG1sCkBA
IC0wLDAgKzEsMTI4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0cmVlT3V0bGluZTsKKyAg
ICB2YXIgcGFyZW50Tm9kZTsKKyAgICB2YXIgY2hpbGROb2RlOworICAgIHZhciBmcmFtZU5vZGU7
CisKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworICAgIEluc3BlY3Rv
clRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNldFVwKG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lID0gV2ViSW5zcGVjdG9yLnBhbmVscy5l
bGVtZW50cy50cmVlT3V0bGluZTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0
aElkKCJwYXJlbnQtbm9kZSIsIGNhbGxiYWNrKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2sobm9kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0g
bm9kZQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qubm9kZVdpdGhJZCgiY2hpbGQtbm9k
ZSIsIGNhbGxiYWNrMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrMihub2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9
IG5vZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ub2RlV2l0aElkKCJmcmFtZS1u
b2RlIiwgY2FsbGJhY2szKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2szKG5vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZnJhbWVOb2Rl
ID0gbm9kZTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFRvZ2dsZUhpZGVTaG9ydGN1dE9uKG5leHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLl90b2dnbGVIaWRlU2hvcnRjdXQocGFy
ZW50Tm9kZSwgY2FsbGJhY2spOworCisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09
PSBBZGRlZCBoaWRlIHNob3J0Y3V0ID09PSIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5bmMocGFyZW50Tm9kZS5pZCwgY2FsbGJhY2sy
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2syKHN0eWxl
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT0gUGFyZW50IG5vZGUgaXMgaGlkZGVuID09PSIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KHN0eWxlLmdldExpdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLnBy
b3BlcnR5VGV4dCk7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENv
bXB1dGVkU3R5bGVBc3luYyhjaGlsZE5vZGUuaWQsIGNhbGxiYWNrMyk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrMyhzdHlsZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENoaWxkIG5vZGUg
aXMgaGlkZGVuID09PSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KHN0eWxlLmdldExpdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLnByb3BlcnR5VGV4dCk7CisgICAg
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RUb2dnbGVIaWRlU2hvcnRjdXRPZmYobmV4dCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdHJlZU91dGxpbmUuX3RvZ2dsZUhpZGVTaG9ydGN1dChwYXJlbnROb2RlLCBjYWxs
YmFjayk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IFJlbW92ZWQgaGlk
ZSBzaG9ydGN1dCA9PT0iKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
Z2V0Q29tcHV0ZWRTdHlsZUFzeW5jKHBhcmVudE5vZGUuaWQsIGNhbGxiYWNrMik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrMihzdHlsZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IFBhcmVu
dCBub2RlIGlzIHZpc2libGUgPT09Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoc3R5bGUuZ2V0TGl2ZVByb3BlcnR5KCJ2aXNpYmlsaXR5IikucHJvcGVydHlUZXh0
KTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0Q29tcHV0ZWRTdHls
ZUFzeW5jKGNoaWxkTm9kZS5pZCwgY2FsbGJhY2szKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2szKHN0eWxlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ2hpbGQgbm9kZSBpcyB2aXNpYmxl
ID09PSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KHN0eWxlLmdl
dExpdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLnByb3BlcnR5VGV4dCk7CisgICAgICAgICAgICAg
ICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RUb2dnbGVIaWRlU2hvcnRjdXRPbkluRnJhbWUobmV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdHJlZU91dGxpbmUuX3RvZ2dsZUhpZGVTaG9ydGN1dChmcmFtZU5vZGUsIGNhbGxiYWNr
KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWRkZWQgaGlkZSBzaG9y
dGN1dCBpbiBmcmFtZSA9PT0iKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuZ2V0Q29tcHV0ZWRTdHlsZUFzeW5jKGZyYW1lTm9kZS5pZCwgY2FsbGJhY2syKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2syKHN0eWxlKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gRnJh
bWUgbm9kZSBpcyBoaWRkZW4gPT09Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoc3R5bGUuZ2V0TGl2ZVByb3BlcnR5KCJ2aXNpYmlsaXR5IikucHJvcGVydHlUZXh0
KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICBdKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxwPgorVGVzdHMgdGhlIGhp
ZGUgc2hvcnRjdXQsIHdoaWNoIHRvZ2dsZXMgdmlzaWJpbGl0eTpoaWRkZW4gb24gdGhlIG5vZGUg
YW5kIGl0J3MgYW5jZXN0b3JzLgorPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMDY0MSI+QnVnIDExMDY0MTwvYT4KKzwvcD4KKworPGRpdiBpZD0icGFy
ZW50LW5vZGUiPnBhcmVudAorICAgIDxkaXYgc3R5bGU9InZpc2liaWxpdHk6aGlkZGVuIj5oaWRk
ZW4KKyAgICAgICAgPGRpdiBpZD0iY2hpbGQtbm9kZSIgc3R5bGU9InZpc2liaWxpdHk6dmlzaWJs
ZSI+Y2hpbGQ8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL2hpZGUtc2hvcnRjdXQtaWZyYW1lLmh0bWwiIG9ubG9hZD0icnVuVGVzdCgpIj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRz
L3Jlc291cmNlcy9oaWRlLXNob3J0Y3V0LWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzL3Jlc291cmNlcy9oaWRlLXNob3J0Y3V0LWlmcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZjMzA5MGQ5ODM4YTk1YTZkNzQ3OTk3ZWM3NmQ3NTU4ZDc3NTc0YmIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvcmVzb3VyY2VzL2hpZGUtc2hv
cnRjdXQtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxoZWFkPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJmcmFtZS1ub2RlIj5pZnJhbWU8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>