<?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>89351</bug_id>
          
          <creation_ts>2012-06-18 09:22:29 -0700</creation_ts>
          <short_desc>HTML parser should queue MutationRecords for its operations</short_desc>
          <delta_ts>2013-02-07 16:37:02 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106948</dependson>
          <blocked>68729</blocked>
    
    <blocked>85161</blocked>
    
    <blocked>89231</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>kennyluck</cc>
    
    <cc>leviw</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sundongguo</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>651433</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-06-18 09:22:29 -0700</bug_when>
    <thetext>Mozilla&apos;s implementation of MutationObservers queues MutationRecords for DOM operations executed by the parser, not just those initiated through DOM APIs and editing.  Per http://lists.w3.org/Archives/Public/public-webapps/2012AprJun/1198.html, it seems likely that we&apos;ll want to change WebKit to have the same behavior to match Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651451</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-18 09:48:55 -0700</bug_when>
    <thetext>I think this is probably the right API decision. It&apos;s not clear to me when we deliver the records though. Do we deliver them after each time the parser yields? If so, is that exposing too much implementation detail? Do we need to define when mutations are delivered during parsing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651493</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-18 10:14:46 -0700</bug_when>
    <thetext>Please be sure to test the performance impact of your change using the html-parser.html PerformanceTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653006</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-19 17:05:26 -0700</bug_when>
    <thetext>I think it would make the most sense to deliver them when the parser yields, yes.  Presumably just before any other script runs?  The parser may yield at any arbitrary time, so it seems it would be difficult for someone to end up depending on WebKit&apos;s delivery behavior (but given how large the interblägs are, I would not be surprised when some page does...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670470</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-07-16 11:05:30 -0700</bug_when>
    <thetext>Whatever we decide to do here, it should be resolved before unprefixing since it amounts to a fairly noticeable difference with Mozilla&apos;s unprefixed version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761500</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-08 02:24:21 -0800</bug_when>
    <thetext>Note that this has been added to the HTML spec in http://html5.org/r/7484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783525</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-05 01:44:40 -0800</bug_when>
    <thetext>I was looking at this recently and my plan is:

Add a ChildListMutationScope to ContainerNode::parserAppendChild, parserInsertBefore and parserRemoveChild.

Add the logic from Element::willModifyAttribute for enqueuing mutation records to Element::parserSetAttributes.

Call MutationObserver::deliverAllMutations() somewhere in HTMLScriptRunner.

HTMLScriptRunner is really confusing to me and it doesn&apos;t seem to have a single entry point for all scripts so that&apos;ll require more research.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783832</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-05 09:24:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I was looking at this recently and my plan is:

Excellent, if we can get something landed here I think we can (finally) safely drop the prefix and likely drop the ENABLE flag as well.

&gt; Add a ChildListMutationScope to ContainerNode::parserAppendChild, parserInsertBefore and parserRemoveChild.

This sounds like a good first step, but may result in very noisy notifications. There&apos;s another approach that more directly involves the parser in keeping something like a ChildListMutationScope (I&apos;ve got a hacked up beginnings of this in a git client somewhere, and some whiteboard-drawing can probably better explain what I mean). But I think it&apos;s probably worth starting with your suggested approach and improving over time (so at least we&apos;re spec compliant before we start optimizing).

&gt; Add the logic from Element::willModifyAttribute for enqueuing mutation records to Element::parserSetAttributes.

I&apos;m not sure this is necessary: do we ever call parserSetAttributes after an Element is in the tree?

&gt; Call MutationObserver::deliverAllMutations() somewhere in HTMLScriptRunner.
&gt; 
&gt; HTMLScriptRunner is really confusing to me and it doesn&apos;t seem to have a single entry point for all scripts so that&apos;ll require more research.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783876</commentid>
    <comment_count>8</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-05 10:21:52 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I was looking at this recently and my plan is:
&gt; 
&gt; Excellent, if we can get something landed here I think we can (finally) safely drop the prefix and likely drop the ENABLE flag as well.
&gt; 
&gt; &gt; Add a ChildListMutationScope to ContainerNode::parserAppendChild, parserInsertBefore and parserRemoveChild.
&gt; 
&gt; This sounds like a good first step, but may result in very noisy notifications. There&apos;s another approach that more directly involves the parser in keeping something like a ChildListMutationScope (I&apos;ve got a hacked up beginnings of this in a git client somewhere, and some whiteboard-drawing can probably better explain what I mean). But I think it&apos;s probably worth starting with your suggested approach and improving over time (so at least we&apos;re spec compliant before we start optimizing).

Okay.

&gt; &gt; Add the logic from Element::willModifyAttribute for enqueuing mutation records to Element::parserSetAttributes.
&gt; 
&gt; I&apos;m not sure this is necessary: do we ever call parserSetAttributes after an Element is in the tree?

Nope, you&apos;re right this isn&apos;t needed. In parserSetAttributes we do assert about it:

ASSERT(!inDocument());
ASSERT(!parentNode());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784372</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-05 17:54:31 -0800</bug_when>
    <thetext>That sounds like a good approach.  One design issue to look out for here is that we&apos;ll likely want to move the HTML parser to a background thread at some point (maybe even soon).  Watching for these mutations in the parser* functions should work well in that future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796576</commentid>
    <comment_count>10</comment_count>
      <attachid>180581</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-21 18:21:58 -0800</bug_when>
    <thetext>Created attachment 180581
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796577</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-21 18:28:53 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=180581) [details]
&gt; Patch

This patch needs more tests for insertBefore and removeChild inside the parser, and also we need to figure out when the mutations are really supposed to be delivered. I can&apos;t find reference about all this in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796791</commentid>
    <comment_count>12</comment_count>
      <attachid>180581</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-23 11:16:02 -0800</bug_when>
    <thetext>Comment on attachment 180581
WIP

I assuem you tested the various parser benchmarks (or plan to?) :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798733</commentid>
    <comment_count>13</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-02 10:57:43 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 180581 [details])
&gt; I assuem you tested the various parser benchmarks (or plan to?) :)

I plan to run the html5-full-parse test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798940</commentid>
    <comment_count>14</comment_count>
      <attachid>180581</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-02 14:59:10 -0800</bug_when>
    <thetext>Comment on attachment 180581
WIP

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

The change looks OK.  I just worry about perf, and would like to see the perf numbers before approving. :)

&gt; Source/WebCore/html/parser/HTMLScriptRunner.cpp:297
&gt; +        // FIXME: This may be too agressive as we always deliver mutations at
&gt; +        // every script element, even if it&apos;s not ready to execute yet. There&apos;s
&gt; +        // unfortuantely no obvious way to tell if prepareScript is going to
&gt; +        // execute the script from out here.

You certainly can tell if it *wont* execute the script. :)  It&apos;s harder to tell if it will, since you could technically be racing with the loader.  But detecting synchronously-loaded URLs, or cached-scripts which are ready to execute is doable, and I believe part of that is already done in this code, as we detect if a script is ready to execute somewhere...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801875</commentid>
    <comment_count>15</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-07 17:23:08 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 180581 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180581&amp;action=review
&gt; 
&gt; ...
&gt;
&gt; You certainly can tell if it *wont* execute the script. :)  It&apos;s harder to tell if it will, since you could technically be racing with the loader.  But detecting synchronously-loaded URLs, or cached-scripts which are ready to execute is doable, and I believe part of that is already done in this code, as we detect if a script is ready to execute somewhere...

Hmm, I couldn&apos;t find a trivial way without duplicating the big logic tree in prepareScript to know if it won&apos;t execute script. How would you detect this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803416</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-09 09:50:29 -0800</bug_when>
    <thetext>I don&apos;t think we ought to block this patch on the script execution question. It still seems a strict improvement to just queue the records during parse; whether we then deliver them too often or not often enough can be dealt with as a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806867</commentid>
    <comment_count>17</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-14 18:25:53 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I don&apos;t think we ought to block this patch on the script execution question. It still seems a strict improvement to just queue the records during parse; whether we then deliver them too often or not often enough can be dealt with as a followup.

I ran the perf tests and I don&apos;t see any regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807017</commentid>
    <comment_count>18</comment_count>
      <attachid>180581</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-14 23:01:09 -0800</bug_when>
    <thetext>Comment on attachment 180581
WIP

I&apos;m surprised this has no perf impact.  But I guess ojan&apos;s hawk-like survey of the perf bots will confirm your testing.  If you update the patch you shoudl consider metnioning your perf testing in teh ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807445</commentid>
    <comment_count>19</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-15 10:35:40 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 180581 [details])
&gt; I&apos;m surprised this has no perf impact.  But I guess ojan&apos;s hawk-like survey of the perf bots will confirm your testing.  If you update the patch you shoudl consider metnioning your perf testing in teh ChangeLog.

My understanding is that adamk already perf tuned the ChildListMutationScope so that&apos;s it&apos;s super fast if there&apos;s no mutation observers present so they didn&apos;t regress Node::appendChild, insertBefore and removeChild (re: Dromaeo). :)

I&apos;ll update the ChangeLog before submitting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807449</commentid>
    <comment_count>20</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2013-01-15 10:41:53 -0800</bug_when>
    <thetext>Just to be clear, Elliot: you are saying there is no perf impact when the are no observers registered, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807451</commentid>
    <comment_count>21</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-15 10:45:17 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Just to be clear, Elliot: you are saying there is no perf impact when the are no observers registered, right?

Correct, we don&apos;t have a PerformanceTests/Parser test with MutationObserver&apos;s to my knowledge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807590</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-15 12:47:24 -0800</bug_when>
    <thetext>&gt; Correct, we don&apos;t have a PerformanceTests/Parser test with MutationObserver&apos;s to my knowledge.

I&apos;d be curious to know what the perf impact is in the case when mutation observers do exist, but that doesn&apos;t need to hold up this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807618</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-15 13:05:10 -0800</bug_when>
    <thetext>We have tests in PerformanceTests/Mutation. You can manually run them by passing --force to run-pert-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807683</commentid>
    <comment_count>24</comment_count>
      <attachid>180581</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 14:18:31 -0800</bug_when>
    <thetext>Comment on attachment 180581
WIP

Clearing flags on attachment: 180581

Committed r139790: &lt;http://trac.webkit.org/changeset/139790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807684</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 14:18:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807733</commentid>
    <comment_count>26</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-01-15 15:18:26 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 106948</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807736</commentid>
    <comment_count>27</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-15 15:21:00 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Re-opened since this is blocked by bug 106948

Even tough this went through the commit queue it seems the test consistently fails on all the bots and also locally for leviw. :( Looking into what happened...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813453</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-01-22 15:10:39 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Re-opened since this is blocked by bug 106948
&gt; 
&gt; Even tough this went through the commit queue it seems the test consistently fails on all the bots and also locally for leviw. :( Looking into what happened...

Any idea what went wrong with this? Test looks super-simple...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813595</commentid>
    <comment_count>29</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-22 17:19:56 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; Re-opened since this is blocked by bug 106948
&gt; &gt; 
&gt; &gt; Even tough this went through the commit queue it seems the test consistently fails on all the bots and also locally for leviw. :( Looking into what happened...
&gt; 
&gt; Any idea what went wrong with this? Test looks super-simple...

Discussed this with adamk and we&apos;re going to update this patch to use takeRecords() and reland it, then solve delivery on script execution in another patch as that seems to be the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823287</commentid>
    <comment_count>30</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-01 14:44:39 -0800</bug_when>
    <thetext>So funny thing here, the reason this broke was because the MUTATION_OBSERVERS flag was removed and my code was ifdef&apos;ed out so the patch was fine, all the code I added was just turned off. Unfortunately it took me a whole day to realize that none of my code actually runs :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823301</commentid>
    <comment_count>31</comment_count>
      <attachid>186147</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-01 14:49:47 -0800</bug_when>
    <thetext>Created attachment 186147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823303</commentid>
    <comment_count>32</comment_count>
      <attachid>186148</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-01 14:51:01 -0800</bug_when>
    <thetext>Created attachment 186148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823314</commentid>
    <comment_count>33</comment_count>
      <attachid>186148</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-01 14:57:29 -0800</bug_when>
    <thetext>Comment on attachment 186148
Patch

Functionally looks fine. Do I need to ask perf questions? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823545</commentid>
    <comment_count>34</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-01 21:31:53 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 186148 [details])
&gt; Functionally looks fine. Do I need to ask perf questions? :)

Nah, perf is the same as before when I checked and it was fine. I do want to add more tests before we land this though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823546</commentid>
    <comment_count>35</comment_count>
      <attachid>186148</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-01 21:32:35 -0800</bug_when>
    <thetext>Comment on attachment 186148
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826918</commentid>
    <comment_count>36</comment_count>
      <attachid>186956</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-06 17:37:26 -0800</bug_when>
    <thetext>Created attachment 186956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827912</commentid>
    <comment_count>37</comment_count>
      <attachid>187183</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 14:55:22 -0800</bug_when>
    <thetext>Created attachment 187183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827950</commentid>
    <comment_count>38</comment_count>
      <attachid>187183</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 15:50:22 -0800</bug_when>
    <thetext>Comment on attachment 187183
Patch

Rejecting attachment 187183 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 187183, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/16438370</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827967</commentid>
    <comment_count>39</comment_count>
      <attachid>187192</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-02-07 16:10:35 -0800</bug_when>
    <thetext>Created attachment 187192
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828003</commentid>
    <comment_count>40</comment_count>
      <attachid>187192</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 16:36:55 -0800</bug_when>
    <thetext>Comment on attachment 187192
Patch for landing

Clearing flags on attachment: 187192

Committed r142204: &lt;http://trac.webkit.org/changeset/142204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828004</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 16:37:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180581</attachid>
            <date>2012-12-21 18:21:58 -0800</date>
            <delta_ts>2013-02-01 14:49:41 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-89351-20121221181913.patch</filename>
            <type>text/plain</type>
            <size>10887</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWEwNDA0ZjEwNTAwN2Rj
ODA0N2JiZDA3ZjYxZDdlYTYyNjM1ZTAzZi4uNmJhMzllZTA1M2M4MWZjYjdjMDU4NWZiMzVlMjA2
ZDIyZWE1ZTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTIxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEhUTUwgcGFyc2VyIHNo
b3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9uIHJl
Y29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciogbWV0
aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNjcmlw
dD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMu
aHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MU2NyaXB0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNj
cmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRl
U2NyaXB0c1dhaXRpbmdGb3JQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRS
dW5uZXI6OnJ1blNjcmlwdCk6CisKIDIwMTItMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBsb2NhbGl6YWJsZSBzdHJpbmdzIGFzIGEgZm9s
bG93dXAgdG8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4Mzg3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNzVmZDcwNDEyMzE3NmQ5MGYxMmRkOTQ4NTRj
M2JhOTY5NTA4YmY0Ny4uNGEzZWI0MzhhZWUzZDIxNWJmYjE0ZTNiYTljZDYxZmVkYzQ0NjljMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzE1LDYgKzMxNSwxMCBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiBuZXh0Q2hpbAogCiAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHRDaGls
ZCwgbmV3Q2hpbGQuZ2V0KCkpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAg
ICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNoaWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkp
OworI2VuZGlmCisKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3Vz
U2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
KHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CkBAIC01NDcsNiArNTUxLDExIEBAIHZv
aWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAg
Tm9kZSogcHJldiA9IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICBOb2RlKiBuZXh0
ID0gb2xkQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJW
RVJTKQorICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUodGhpcykud2lsbFJlbW92ZUNoaWxkKG9s
ZENoaWxkKTsKKyAgICBvbGRDaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERl
dGFjaCgpOworI2VuZGlmCisKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxk
KTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7CkBAIC02OTUs
NiArNzA0LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCkKICAgICAgICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVkZWQo
bmV3Q2hpbGQuZ2V0KCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
CisgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSh0aGlzKS5jaGlsZEFkZGVkKG5ld0NoaWxkLmdl
dCgpKTsKKyNlbmRpZgorCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwog
ICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0
UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIu
Y3BwCmluZGV4IDA0MjQ0YTY1OGY2ZTFjYzQwOGExNTViZDcyMGUxNGYwNzVlOWY1YjkuLmQzOWFi
YTZkYTBhMDMwMmJjOWJmNDVjMGJkZGUzNDJiZTNiODk1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIK
ICNpbmNsdWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2lu
Y2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxl
bWVudC5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5k
aW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQo
bV9kb2N1bWVudCk7Ci0gICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNT
RVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0
eWxlc2hlZXRzTG9hZGVkKCkpOwogICAgIEFTU0VSVChpc1BlbmRpbmdTY3JpcHRSZWFkeShtX3Bh
cnNlckJsb2NraW5nU2NyaXB0KSk7CiAKQEAgLTEyNyw2ICsxMjgsMTEgQEAgdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1Nj
cmlwdCYgcGVuZGkKICAgICBpZiAocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiBwZW5k
aW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2Fk
KHBlbmRpbmdTY3JpcHQpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBp
ZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2
ZXJBbGxNdXRhdGlvbnMoKTsKKyNlbmRpZgorCiAgICAgLy8gQ2xlYXIgdGhlIHBlbmRpbmcgc2Ny
aXB0IGJlZm9yZSBwb3NzaWJsZSByZW50cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkKICAgICBS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IHBlbmRpbmdTY3JpcHQucmVsZWFzZUVsZW1lbnRBbmRD
bGVhcigpOwogICAgIGlmIChTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRF
bGVtZW50KGVsZW1lbnQuZ2V0KCkpKSB7CkBAIC0xNDAsNyArMTQ2LDcgQEAgdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1Nj
cmlwdCYgcGVuZGkKICAgICAgICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoY3JlYXRlU2Ny
aXB0TG9hZEV2ZW50KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIEFTU0VSVCghbV9zY3JpcHRO
ZXN0aW5nTGV2ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiB9CiAKIHZv
aWQgSFRNTFNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdT
Y3JpcHQpCkBAIC0xNzAsNyArMTc2LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRl
KFBhc3NSZWZQdHI8RWxlbWVudD4gc2NyaXB0RWxlbWVudCwgY29uc3QgVGV4dFBvc2kKICAgICBy
dW5TY3JpcHQoc2NyaXB0RWxlbWVudC5nZXQoKSwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CiAKICAg
ICBpZiAoaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSkgewotICAgICAgICBpZiAobV9zY3JpcHRO
ZXN0aW5nTGV2ZWwpCisgICAgICAgIGlmIChpc0V4ZWN1dGluZ1NjcmlwdCgpKQogICAgICAgICAg
ICAgcmV0dXJuOyAvLyBVbndpbmQgdG8gdGhlIG91dGVybW9zdCBIVE1MU2NyaXB0UnVubmVyOjpl
eGVjdXRlIGJlZm9yZSBjb250aW51aW5nIHBhcnNpbmcuCiAgICAgICAgIC8vIElmIHByZWxvYWQg
c2Nhbm5lciBnb3QgY3JlYXRlZCwgaXQgaXMgbWlzc2luZyB0aGUgc291cmNlIGFmdGVyIHRoZSBj
dXJyZW50IGluc2VydGlvbiBwb2ludC4gQXBwZW5kIGl0IGFuZCBzY2FuLgogICAgICAgICBpZiAo
IWhhZFByZWxvYWRTY2FubmVyICYmIG1faG9zdC0+aGFzUHJlbG9hZFNjYW5uZXIoKSkKQEAgLTE5
Miw3ICsxOTgsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tp
bmdTY3JpcHRzKCkKIAogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgQVNTRVJUKCFt
X3NjcmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsK
ICAgICBBU1NFUlQoaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChjYWNoZWRTY3JpcHQsIG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCkgPT0g
Y2FjaGVkU2NyaXB0KTsKICAgICBBU1NFUlQobV9wYXJzZXJCbG9ja2luZ1NjcmlwdC5jYWNoZWRT
Y3JpcHQoKS0+aXNMb2FkZWQoKSk7CkBAIC0yMDUsNyArMjExLDcgQEAgdm9pZCBIVE1MU2NyaXB0
UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiAgICAgLy8gQ2Fs
bGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGJlZm9y
ZSBjYWxsaW5nCiAgICAgLy8gdG8gcHJldmVudCBwYXJzZXIgb3Igc2NyaXB0IHJlLWVudHJ5IGR1
cmluZyA8L3N0eWxlPiBwYXJzaW5nLgogICAgIEFTU0VSVChoYXNTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkpOwotICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOworICAgIEFT
U0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVT
dHlsZXNoZWV0c0xvYWRlZCgpKTsKICAgICBleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygp
OwogfQpAQCAtMjEzLDcgKzIxOSw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogYm9vbCBIVE1MU2NyaXB0UnVubmVyOjpleGVj
dXRlU2NyaXB0c1dhaXRpbmdGb3JQYXJzaW5nKCkKIHsKICAgICB3aGlsZSAoIW1fc2NyaXB0c1Rv
RXhlY3V0ZUFmdGVyUGFyc2luZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFtX3Njcmlw
dE5lc3RpbmdMZXZlbCk7CisgICAgICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiAg
ICAgICAgIEFTU0VSVCghaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSk7CiAgICAgICAgIEFTU0VS
VChtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlclBhcnNpbmcuZmlyc3QoKS5jYWNoZWRTY3JpcHQoKSk7
CiAgICAgICAgIGlmICghbV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJQYXJzaW5nLmZpcnN0KCkuY2Fj
aGVkU2NyaXB0KCktPmlzTG9hZGVkKCkpIHsKQEAgLTI3NCw5ICsyODAsNiBAQCB2b2lkIEhUTUxT
Y3JpcHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50KiBzY3JpcHQsIGNvbnN0IFRleHRQb3NpdGlv
biYgc2NyaXB0U3RhcgogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKICAgICBBU1NFUlQoIWhhc1Bh
cnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgIHsKLSAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNv
cmQgaW5zZXJ0aW9uUG9pbnRSZWNvcmQobV9ob3N0LT5pbnB1dFN0cmVhbSgpKTsKLSAgICAgICAg
TmVzdGluZ0xldmVsSW5jcmVtZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV9zY3JpcHRO
ZXN0aW5nTGV2ZWwpOwotCiAgICAgICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0
b1NjcmlwdEVsZW1lbnQoc2NyaXB0KTsKIAogICAgICAgICAvLyBUaGlzIGNvbnRhaW5zIGJvdGgg
YW5kIEFTU0VSVElPTiBhbmQgYSBudWxsIGNoZWNrIHNpbmNlIHdlIHNob3VsZCBub3QKQEAgLTI4
Nyw2ICsyOTAsMTggQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCog
c2NyaXB0LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXIKICAgICAgICAgaWYgKCFzY3Jp
cHRFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF5IGJlIHRvbyBhZ3Jlc3NpdmUgYXMg
d2UgYWx3YXlzIGRlbGl2ZXIgbXV0YXRpb25zIGF0CisgICAgICAgIC8vIGV2ZXJ5IHNjcmlwdCBl
bGVtZW50LCBldmVuIGlmIGl0J3Mgbm90IHJlYWR5IHRvIGV4ZWN1dGUgeWV0LiBUaGVyZSdzCisg
ICAgICAgIC8vIHVuZm9ydHVhbnRlbHkgbm8gb2J2aW91cyB3YXkgdG8gdGVsbCBpZiBwcmVwYXJl
U2NyaXB0IGlzIGdvaW5nIHRvCisgICAgICAgIC8vIGV4ZWN1dGUgdGhlIHNjcmlwdCBmcm9tIG91
dCBoZXJlLgorICAgICAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgICAgICAgICBN
dXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CisjZW5kaWYKKworICAgICAg
ICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3QtPmlucHV0
U3RyZWFtKCkpOworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJ
bmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisKICAgICAgICAgc2NyaXB0RWxlbWVu
dC0+cHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsKIAogICAgICAgICBpZiAoIXNj
cmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4ZWN1dGVkKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGQzZmI4NGU2YTY0
OGQ3OGNiMjI3YzY1NWI0NmNmMjI1NTA3OWQ5Ni4uNzZkMGFiYWI0MWUwMmZhZDcwNWZhMGRjMmYz
MjY0NGU4ODBhNjhiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTIxICBFbGxpb3R0
IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEhUTUwgcGFyc2VyIHNob3Vs
ZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgcGFyc2VyIGdl
bmVyYXRlZCBtdXRhdGlvbnMuCisKKyAgICAgICAgWFhYOiBUaGlzIG5lZWRzIGEgYnVuY2ggbW9y
ZSB0ZXN0cyBvYnNlcnZpbmcgdGhlIGFkb3B0aW9uCisgICAgICAgIGFnZW5jeSBhbGdvcml0aG0g
dG8gY2F0Y2ggcGFyc2VySW5zZXJ0QmVmb3JlIGFuZCBwYXJzZXJSZW1vdmVDaGlsZAorICAgICAg
ICBtdXRhdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNl
ci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTItMTItMjEg
IEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gUmVtb3ZpbmcgQ1JBU0ggZXhwZWN0YXRpb25zIGZvciBtZWRpYSBsYXlvdXQgdGVzdHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2Vy
LW11dGF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9i
c2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlNWJkM2U3
ZmQyMWU2ZTU2YTJmNDI3Nzk4ZDczMTg0YTMwNGM4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDYKK1BBU1Mg
bXV0YXRpb25zWzFdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzFdLnRhcmdl
dC50YWdOYW1lIGlzICJCT0RZIgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGgg
aXMgMQorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJQIgorTXV0
YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgZGVsaXZlcmVkIGZvciBhbGwgcGFyc2VyIG11dGF0aW9u
cyBhZnRlciB0aGUgYWJvdmUgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MzQwOGFhZDlhZGE3ZTljYzQ2YjE5YzBiNDhjZGUwYWI1ZTE2NGVhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRp
b25zLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisK
KzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKworICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsKKyAgICAgICAgd2luZG93Lm11
dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICB9KTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3Vt
ZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6dHJ1ZX0pOworPC9zY3JpcHQ+CisK
KzxwPgorICAgIE11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIGRlbGl2ZXJlZCBmb3IgYWxsIHBh
cnNlciBtdXRhdGlvbnMgYWZ0ZXIgdGhlIGFib3ZlIHNjcmlwdC4KKzwvcD4KKworPHNjcmlwdD4K
KyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc2Jyk7CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0udHlwZScsICdjaGlsZExpc3QnKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxXS50YXJnZXQudGFnTmFtZScsICdCT0RZJyk7Cisg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1l
JywgJ1AnKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186147</attachid>
            <date>2013-02-01 14:49:47 -0800</date>
            <delta_ts>2013-02-01 14:50:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89351-20130201174628.patch</filename>
            <type>text/plain</type>
            <size>11178</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NjYzdhODBlZWI1ODA3
ZDQ1NzA1OTcyNTMzODc1Zjc3NGFjNDIwYS4uM2VhNDI1NzRjZmMxYjFmMWE0ZWM0ZmExYmJmNmM5
NTM5ODk0Nzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTAxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9u
IHJlY29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAg
ICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciog
bWV0aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNj
cmlwdD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4K
KworICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlv
bnMuaHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5l
cjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlw
dFJ1bm5lcjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMi0wMSAgUGhpbGlwIFJvZ2VycyAgPHBkckBn
b29nbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgc2tpcHBlZCByZXBhaW50cyBmb3IgY2hpbGRy
ZW4gb2YgaW5uZXIgU1ZHIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
aW5kZXggODc1YmNkMmVmZGNmMmE0NWEyZGUxYTA4YzMyZTRiOGY4MTM1Mjc3ZS4uMmU2YmUwYzhj
OTI1MWRkOThjNGE5YzEzNzU3ZGQyMjEzMGQzMTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcApAQCAtMTE0LDYgKzExNCw4IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFs
bENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIGEgbm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBhZG9wdE5vZGUuCiAgICAg
ICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltp
XS5yZWxlYXNlKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIENoaWxkTGlz
dE11dGF0aW9uU2NvcGUob2xkUGFyZW50KS53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOwor
ICAgICAgICBjaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCgpOwog
ICAgICAgICBwYXJzZXJBcHBlbmRDaGlsZChjaGlsZC5nZXQoKSk7CiAgICAgICAgIC8vIEZJWE1F
OiBUb2dldGhlciB3aXRoIGFkb3B0Tm9kZSBhYm92ZSwgdGhlIHRyZWUgc2NvcGUgbWlnaHQgZ2V0
IHVwZGF0ZWQgcmVjdXJzaXZlbHkgdHdpY2UKICAgICAgICAgLy8gKGlmIHRoZSBkb2N1bWVudCBj
aGFuZ2VkIG9yIG9sZFBhcmVudCB3YXMgaW4gYSBzaGFkb3cgdHJlZSwgQU5EICp0aGlzIGlzIGlu
IGEgc2hhZG93IHRyZWUpLgpAQCAtMzQ0LDYgKzM0Niw4IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
cGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRD
aGlsCiAKICAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50
Rm9ySW5zZXJ0aW9uKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNoaWxk
QWRkZWQobmV3Q2hpbGQuZ2V0KCkpOworCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIG5ld0No
aWxkLT5wcmV2aW91c1NpYmxpbmcoKSwgbmV4dENoaWxkLCAxKTsKICAgICBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcih0aGlzKS5ub3RpZnkobmV3Q2hpbGQuZ2V0KCkpOwogfQpAQCAtNTY3LDYg
KzU3MSw5IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xk
Q2hpbGQpCiAKICAgICBvbGRDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNv
dW50Rm9yUmVtb3ZhbCgpOwogCisgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSh0aGlzKS53aWxs
UmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgIG9sZENoaWxkLT5ub3RpZnlNdXRhdGlvbk9ic2Vy
dmVyc05vZGVXaWxsRGV0YWNoKCk7CisKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9s
ZENoaWxkKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7CkBA
IC03MTgsNiArNzI1LDggQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkKQogCiAgICAgbmV3Q2hpbGQtPnVwZGF0ZUFuY2VzdG9y
Q29ubmVjdGVkU3ViZnJhbWVDb3VudEZvckluc2VydGlvbigpOwogCisgICAgQ2hpbGRMaXN0TXV0
YXRpb25TY29wZSh0aGlzKS5jaGlsZEFkZGVkKG5ld0NoaWxkLmdldCgpKTsKKwogICAgIGNoaWxk
cmVuQ2hhbmdlZCh0cnVlLCBsYXN0LCAwLCAxKTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3Rp
Zmllcih0aGlzKS5ub3RpZnkobmV3Q2hpbGQuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCAwNDI0NGE2NThmNmUxY2M0
MDhhMTU1YmQ3MjBlMTRmMDc1ZTlmNWI5Li40Njg5ZDEzZTQyYTM1ZWVhMjE0YTAyODdhYTdiN2Rl
Mjg5ZDUxMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2Ny
aXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0
UnVubmVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxTY3JpcHRSdW5uZXJIb3N0LmgiCiAjaW5jbHVkZSAiSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKQEAgLTExMCw3ICsxMTEsNyBA
QCBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmlzUGVuZGluZ1NjcmlwdFJlYWR5KGNvbnN0IFBlbmRp
bmdTY3JpcHQmIHNjcmlwdCkKIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdC
bG9ja2luZ1NjcmlwdCgpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwotICAgIEFTU0VSVCgh
bV9zY3JpcHROZXN0aW5nTGV2ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKICAgICBB
U1NFUlQoaXNQZW5kaW5nU2NyaXB0UmVhZHkobV9wYXJzZXJCbG9ja2luZ1NjcmlwdCkpOwogCkBA
IC0xMjcsNiArMTI4LDkgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1Nj
cmlwdEFuZERpc3BhdGNoRXZlbnQoUGVuZGluZ1NjcmlwdCYgcGVuZGkKICAgICBpZiAocGVuZGlu
Z1NjcmlwdC5jYWNoZWRTY3JpcHQoKSAmJiBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgp
KQogICAgICAgICBzdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQpOwogCisgICAgaWYg
KCFpc0V4ZWN1dGluZ1NjcmlwdCgpKQorICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVy
QWxsTXV0YXRpb25zKCk7CisKICAgICAvLyBDbGVhciB0aGUgcGVuZGluZyBzY3JpcHQgYmVmb3Jl
IHBvc3NpYmxlIHJlbnRyYW5jeSBmcm9tIGV4ZWN1dGVTY3JpcHQoKQogICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50ID0gcGVuZGluZ1NjcmlwdC5yZWxlYXNlRWxlbWVudEFuZENsZWFyKCk7CiAg
ICAgaWYgKFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnQoZWxl
bWVudC5nZXQoKSkpIHsKQEAgLTE0MCw3ICsxNDQsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6
OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5k
aQogICAgICAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChjcmVhdGVTY3JpcHRMb2FkRXZl
bnQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZl
bCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKIH0KIAogdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjp3YXRjaEZvckxvYWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKQEAg
LTE3MCw3ICsxNzQsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGUoUGFzc1JlZlB0
cjxFbGVtZW50PiBzY3JpcHRFbGVtZW50LCBjb25zdCBUZXh0UG9zaQogICAgIHJ1blNjcmlwdChz
Y3JpcHRFbGVtZW50LmdldCgpLCBzY3JpcHRTdGFydFBvc2l0aW9uKTsKIAogICAgIGlmIChoYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpKSB7Ci0gICAgICAgIGlmIChtX3NjcmlwdE5lc3RpbmdMZXZl
bCkKKyAgICAgICAgaWYgKGlzRXhlY3V0aW5nU2NyaXB0KCkpCiAgICAgICAgICAgICByZXR1cm47
IC8vIFVud2luZCB0byB0aGUgb3V0ZXJtb3N0IEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGUgYmVm
b3JlIGNvbnRpbnVpbmcgcGFyc2luZy4KICAgICAgICAgLy8gSWYgcHJlbG9hZCBzY2FubmVyIGdv
dCBjcmVhdGVkLCBpdCBpcyBtaXNzaW5nIHRoZSBzb3VyY2UgYWZ0ZXIgdGhlIGN1cnJlbnQgaW5z
ZXJ0aW9uIHBvaW50LiBBcHBlbmQgaXQgYW5kIHNjYW4uCiAgICAgICAgIGlmICghaGFkUHJlbG9h
ZFNjYW5uZXIgJiYgbV9ob3N0LT5oYXNQcmVsb2FkU2Nhbm5lcigpKQpAQCAtMTkyLDcgKzE5Niw3
IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMo
KQogCiB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQo
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkKIHsKLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVz
dGluZ0xldmVsKTsKKyAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgIEFTU0VS
VChoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNhY2hlZFNj
cmlwdCwgbV9wYXJzZXJCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQoKSA9PSBjYWNoZWRTY3Jp
cHQpOwogICAgIEFTU0VSVChtX3BhcnNlckJsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpLT5p
c0xvYWRlZCgpKTsKQEAgLTIwNSw3ICsyMDksNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKICAgICAvLyBDYWxsZXJzIHNob3Vs
ZCBjaGVjayBoYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkgYmVmb3JlIGNhbGxpbmcK
ICAgICAvLyB0byBwcmV2ZW50IHBhcnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVyaW5nIDwvc3R5
bGU+IHBhcnNpbmcuCiAgICAgQVNTRVJUKGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMo
KSk7Ci0gICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4
ZWN1dGluZ1NjcmlwdCgpKTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRz
TG9hZGVkKCkpOwogICAgIGV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiB9CkBAIC0y
MTMsNyArMjE3LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cygpCiBib29sIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRz
V2FpdGluZ0ZvclBhcnNpbmcoKQogewogICAgIHdoaWxlICghbV9zY3JpcHRzVG9FeGVjdXRlQWZ0
ZXJQYXJzaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xl
dmVsKTsKKyAgICAgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAgICAgICAgQVNT
RVJUKCFoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpKTsKICAgICAgICAgQVNTRVJUKG1fc2NyaXB0
c1RvRXhlY3V0ZUFmdGVyUGFyc2luZy5maXJzdCgpLmNhY2hlZFNjcmlwdCgpKTsKICAgICAgICAg
aWYgKCFtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlclBhcnNpbmcuZmlyc3QoKS5jYWNoZWRTY3JpcHQo
KS0+aXNMb2FkZWQoKSkgewpAQCAtMjc0LDkgKzI3OCw2IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5l
cjo6cnVuU2NyaXB0KEVsZW1lbnQqIHNjcmlwdCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRT
dGFyCiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwogICAgIEFTU0VSVCghaGFzUGFyc2VyQmxvY2tp
bmdTY3JpcHQoKSk7CiAgICAgewotICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRp
b25Qb2ludFJlY29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOwotICAgICAgICBOZXN0aW5nTGV2
ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZl
bCk7Ci0KICAgICAgICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxl
bWVudChzY3JpcHQpOwogCiAgICAgICAgIC8vIFRoaXMgY29udGFpbnMgYm90aCBhbmQgQVNTRVJU
SU9OIGFuZCBhIG51bGwgY2hlY2sgc2luY2Ugd2Ugc2hvdWxkIG5vdApAQCAtMjg3LDYgKzI4OCwx
NiBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OnJ1blNjcmlwdChFbGVtZW50KiBzY3JpcHQsIGNv
bnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcgogICAgICAgICBpZiAoIXNjcmlwdEVsZW1lbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF5IGJlIHRv
byBhZ3Jlc3NpdmUgYXMgd2UgYWx3YXlzIGRlbGl2ZXIgbXV0YXRpb25zIGF0CisgICAgICAgIC8v
IGV2ZXJ5IHNjcmlwdCBlbGVtZW50LCBldmVuIGlmIGl0J3Mgbm90IHJlYWR5IHRvIGV4ZWN1dGUg
eWV0LiBUaGVyZSdzCisgICAgICAgIC8vIHVuZm9ydHVhbnRlbHkgbm8gb2J2aW91cyB3YXkgdG8g
dGVsbCBpZiBwcmVwYXJlU2NyaXB0IGlzIGdvaW5nIHRvCisgICAgICAgIC8vIGV4ZWN1dGUgdGhl
IHNjcmlwdCBmcm9tIG91dCBoZXJlLgorICAgICAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkp
CisgICAgICAgICAgICBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCk7CisK
KyAgICAgICAgSW5zZXJ0aW9uUG9pbnRSZWNvcmQgaW5zZXJ0aW9uUG9pbnRSZWNvcmQobV9ob3N0
LT5pbnB1dFN0cmVhbSgpKTsKKyAgICAgICAgTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIgbmVzdGlu
Z0xldmVsSW5jcmVtZW50ZXIobV9zY3JpcHROZXN0aW5nTGV2ZWwpOworCiAgICAgICAgIHNjcmlw
dEVsZW1lbnQtPnByZXBhcmVTY3JpcHQoc2NyaXB0U3RhcnRQb3NpdGlvbik7CiAKICAgICAgICAg
aWYgKCFzY3JpcHRFbGVtZW50LT53aWxsQmVQYXJzZXJFeGVjdXRlZCgpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc4NDY5
NjgwOTkzZGEzNmM0ZGYzOGZkZjY2MTIxMWE3NGVkMDQ2Y2IuLmIyZDk1MTNmODhhZWVhMWVmM2E4
NmJjYmYwYWFhYjA4Nzc2NDEwNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0wMSAg
RWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KKworICAgICAgICBIVE1MIHBh
cnNlciBzaG91bGQgcXVldWUgTXV0YXRpb25SZWNvcmRzIGZvciBpdHMgb3BlcmF0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkzNTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9y
IHBhcnNlciBnZW5lcmF0ZWQgbXV0YXRpb25zLgorCisgICAgICAgICogZmFzdC9kb20vTXV0YXRp
b25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWw6IEFkZGVk
LgorCiAyMDEzLTAyLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUHJldmVudCBza2lwcGVkIHJlcGFpbnRzIGZvciBjaGlsZHJlbiBvZiBpbm5lciBTVkcgZWxl
bWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
cGFyc2VyLW11dGF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
NWJkM2U3ZmQyMWU2ZTU2YTJmNDI3Nzk4ZDczMTg0YTMwNGM4M2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDYK
K1BBU1MgbXV0YXRpb25zWzFdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzFd
LnRhcmdldC50YWdOYW1lIGlzICJCT0RZIgorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5s
ZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJQ
IgorTXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgZGVsaXZlcmVkIGZvciBhbGwgcGFyc2VyIG11
dGF0aW9ucyBhZnRlciB0aGUgYWJvdmUgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MzQwOGFhZDlhZGE3ZTljYzQ2YjE5YzBiNDhjZGUwYWI1ZTE2NGVhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXIt
bXV0YXRpb25zLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsKKyAgICAgICAgd2lu
ZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICB9KTsKKyAgICBvYnNlcnZlci5vYnNlcnZl
KGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6dHJ1ZX0pOworPC9zY3Jp
cHQ+CisKKzxwPgorICAgIE11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIGRlbGl2ZXJlZCBmb3Ig
YWxsIHBhcnNlciBtdXRhdGlvbnMgYWZ0ZXIgdGhlIGFib3ZlIHNjcmlwdC4KKzwvcD4KKworPHNj
cmlwdD4KKyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc2Jyk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0udHlwZScsICdjaGlsZExpc3QnKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxXS50YXJnZXQudGFnTmFtZScsICdCT0RZ
Jyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50
YWdOYW1lJywgJ1AnKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186148</attachid>
            <date>2013-02-01 14:51:01 -0800</date>
            <delta_ts>2013-02-06 17:37:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89351-20130201174743.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NjYzdhODBlZWI1ODA3
ZDQ1NzA1OTcyNTMzODc1Zjc3NGFjNDIwYS4uM2VhNDI1NzRjZmMxYjFmMWE0ZWM0ZmExYmJmNmM5
NTM5ODk0Nzk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTAxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9u
IHJlY29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAg
ICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciog
bWV0aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNj
cmlwdD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4K
KworICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlv
bnMuaHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5l
cjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlw
dFJ1bm5lcjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMi0wMSAgUGhpbGlwIFJvZ2VycyAgPHBkckBn
b29nbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgc2tpcHBlZCByZXBhaW50cyBmb3IgY2hpbGRy
ZW4gb2YgaW5uZXIgU1ZHIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
aW5kZXggODc1YmNkMmVmZGNmMmE0NWEyZGUxYTA4YzMyZTRiOGY4MTM1Mjc3ZS4uOTViOTkwZjRh
NmY2NzYwZmZhOGU1NmU3YmE5ZjlmNDNhMzBkMzU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcApAQCAtOTcsNiArOTcsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZURl
dGFjaGVkQ2hpbGRyZW4oKQogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAgIGNoaWxk
LT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7CiAgICAg
fQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IG11dGF0aW9uIG9ic2VydmVycyBoZXJl
LgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWF0dGFjaGVkKCkp
IGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc4MDEKICAg
ICByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFpbmVyTm9kZT4o
dGhpcyk7CiB9CkBAIC0zNDQsNiArMzQ1LDggQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJJ
bnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWwKIAog
ICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJbnNl
cnRpb24oKTsKIAorICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUodGhpcykuY2hpbGRBZGRlZChu
ZXdDaGlsZC5nZXQoKSk7CisKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV3Q2hpbGQtPnBy
ZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5v
dGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CkBAIC01NjcsNiArNTcwLDkg
QEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCkK
IAogICAgIG9sZENoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JS
ZW1vdmFsKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLndpbGxSZW1vdmVD
aGlsZChvbGRDaGlsZCk7CisgICAgb2xkQ2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9k
ZVdpbGxEZXRhY2goKTsKKwogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQp
OwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5leHQsIC0xKTsKQEAgLTcxOCw2
ICs3MjQsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25uZWN0
ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlKHRoaXMpLmNoaWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkpOworCiAgICAgY2hpbGRyZW5DaGFu
Z2VkKHRydWUsIGxhc3QsIDAsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRo
aXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MjQ0YTY1OGY2ZTFjYzQwOGExNTVi
ZDcyMGUxNGYwNzVlOWY1YjkuLjQ2ODlkMTNlNDJhMzVlZWEyMTRhMDI4N2FhN2I3ZGUyODlkNTEw
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIGJvb2wg
SFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Njcmlw
dCYgc2NyaXB0KQogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5n
U2NyaXB0KCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgQVNTRVJUKCFtX3Njcmlw
dE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAgICBB
U1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOwogICAgIEFTU0VSVChp
c1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNlckJsb2NraW5nU2NyaXB0KSk7CiAKQEAgLTEyNyw2
ICsxMjgsOSBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5k
RGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgIGlmIChwZW5kaW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAg
ICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7CiAKKyAgICBpZiAoIWlzRXhl
Y3V0aW5nU2NyaXB0KCkpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRh
dGlvbnMoKTsKKwogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9zc2li
bGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKICAgICBpZiAo
U2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChlbGVtZW50Lmdl
dCgpKSkgewpAQCAtMTQwLDcgKzE0NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmIHBlbmRpCiAgICAg
ICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdExvYWRFdmVudCgpKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKKyAg
ICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRSdW5u
ZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQpAQCAtMTcwLDcg
KzE3NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZShQYXNzUmVmUHRyPEVsZW1l
bnQ+IHNjcmlwdEVsZW1lbnQsIGNvbnN0IFRleHRQb3NpCiAgICAgcnVuU2NyaXB0KHNjcmlwdEVs
ZW1lbnQuZ2V0KCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogCiAgICAgaWYgKGhhc1BhcnNlckJs
b2NraW5nU2NyaXB0KCkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0TmVzdGluZ0xldmVsKQorICAg
ICAgICBpZiAoaXNFeGVjdXRpbmdTY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsgLy8gVW53
aW5kIHRvIHRoZSBvdXRlcm1vc3QgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSBiZWZvcmUgY29u
dGludWluZyBwYXJzaW5nLgogICAgICAgICAvLyBJZiBwcmVsb2FkIHNjYW5uZXIgZ290IGNyZWF0
ZWQsIGl0IGlzIG1pc3NpbmcgdGhlIHNvdXJjZSBhZnRlciB0aGUgY3VycmVudCBpbnNlcnRpb24g
cG9pbnQuIEFwcGVuZCBpdCBhbmQgc2Nhbi4KICAgICAgICAgaWYgKCFoYWRQcmVsb2FkU2Nhbm5l
ciAmJiBtX2hvc3QtPmhhc1ByZWxvYWRTY2FubmVyKCkpCkBAIC0xOTIsNyArMTk2LDcgQEAgdm9p
ZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpCiAKIHZv
aWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogewotICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2
ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiAgICAgQVNTRVJUKGhhc1Bh
cnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0LCBt
X3BhcnNlckJsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpID09IGNhY2hlZFNjcmlwdCk7CiAg
ICAgQVNTRVJUKG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9hZGVk
KCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIC8vIENhbGxlcnMgc2hvdWxkIGNoZWNr
IGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBiZWZvcmUgY2FsbGluZwogICAgIC8v
IHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBkdXJpbmcgPC9zdHlsZT4gcGFy
c2luZy4KICAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpKTsKLSAg
ICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKKyAgICBBU1NFUlQoIWlzRXhlY3V0aW5n
U2NyaXB0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSk7CiAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0KQEAgLTIxMyw3ICsy
MTcsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKCkKIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5n
Rm9yUGFyc2luZygpCiB7CiAgICAgd2hpbGUgKCFtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlclBhcnNp
bmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwpOwor
ICAgICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NFUlQoIWhh
c1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NFUlQobV9zY3JpcHRzVG9FeGVj
dXRlQWZ0ZXJQYXJzaW5nLmZpcnN0KCkuY2FjaGVkU2NyaXB0KCkpOwogICAgICAgICBpZiAoIW1f
c2NyaXB0c1RvRXhlY3V0ZUFmdGVyUGFyc2luZy5maXJzdCgpLmNhY2hlZFNjcmlwdCgpLT5pc0xv
YWRlZCgpKSB7CkBAIC0yNzQsOSArMjc4LDYgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpydW5T
Y3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXIKICAg
ICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKCFoYXNQYXJzZXJCbG9ja2luZ1Njcmlw
dCgpKTsKICAgICB7Ci0gICAgICAgIEluc2VydGlvblBvaW50UmVjb3JkIGluc2VydGlvblBvaW50
UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7Ci0gICAgICAgIE5lc3RpbmdMZXZlbEluY3Jl
bWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0TmVzdGluZ0xldmVsKTsKLQog
ICAgICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRFbGVtZW50KHNj
cmlwdCk7CiAKICAgICAgICAgLy8gVGhpcyBjb250YWlucyBib3RoIGFuZCBBU1NFUlRJT04gYW5k
IGEgbnVsbCBjaGVjayBzaW5jZSB3ZSBzaG91bGQgbm90CkBAIC0yODcsNiArMjg4LDE2IEBAIHZv
aWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQqIHNjcmlwdCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzY3JpcHRTdGFyCiAgICAgICAgIGlmICghc2NyaXB0RWxlbWVudCkKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXkgYmUgdG9vIGFncmVz
c2l2ZSBhcyB3ZSBhbHdheXMgZGVsaXZlciBtdXRhdGlvbnMgYXQKKyAgICAgICAgLy8gZXZlcnkg
c2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkgdG8gZXhlY3V0ZSB5ZXQuIFRo
ZXJlJ3MKKyAgICAgICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZpb3VzIHdheSB0byB0ZWxsIGlm
IHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KKyAgICAgICAgLy8gZXhlY3V0ZSB0aGUgc2NyaXB0
IGZyb20gb3V0IGhlcmUuCisgICAgICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAgICAg
ICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKKworICAgICAg
ICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3QtPmlucHV0
U3RyZWFtKCkpOworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJ
bmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisKICAgICAgICAgc2NyaXB0RWxlbWVu
dC0+cHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsKIAogICAgICAgICBpZiAoIXNj
cmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4ZWN1dGVkKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzg0Njk2ODA5OTNk
YTM2YzRkZjM4ZmRmNjYxMjExYTc0ZWQwNDZjYi4uYjJkOTUxM2Y4OGFlZWExZWYzYTg2YmNiZjBh
YWFiMDg3NzY0MTA1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTAxICBFbGxpb3R0
IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2VyIHNo
b3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgcGFyc2Vy
IGdlbmVyYXRlZCBtdXRhdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDItMDEgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBQcmV2
ZW50IHNraXBwZWQgcmVwYWludHMgZm9yIGNoaWxkcmVuIG9mIGlubmVyIFNWRyBlbGVtZW50cwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXIt
bXV0YXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU1YmQzZTdm
ZDIxZTZlNTZhMmY0Mjc3OThkNzMxODRhMzA0YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgNgorUEFTUyBt
dXRhdGlvbnNbMV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMV0udGFyZ2V0
LnRhZ05hbWUgaXMgIkJPRFkiCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBp
cyAxCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUgaXMgIlAiCitNdXRh
dGlvbiByZWNvcmRzIHNob3VsZCBiZSBkZWxpdmVyZWQgZm9yIGFsbCBwYXJzZXIgbXV0YXRpb25z
IGFmdGVyIHRoZSBhYm92ZSBzY3JpcHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYzNDA4YWFkOWFkYTdlOWNjNDZiMTljMGI0OGNkZTBhYjVlMTY0ZWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlv
bnMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGJvZHk+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zLCBvYnNlcnZlcikgeworICAgICAgICB3aW5kb3cubXV0
YXRpb25zID0gbXV0YXRpb25zOworICAgIH0pOworICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1l
bnQuYm9keSwge2NoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTp0cnVlfSk7Cis8L3NjcmlwdD4KKwor
PHA+CisgICAgTXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgZGVsaXZlcmVkIGZvciBhbGwgcGFy
c2VyIG11dGF0aW9ucyBhZnRlciB0aGUgYWJvdmUgc2NyaXB0LgorPC9wPgorCis8c2NyaXB0Pgor
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzYnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ211dGF0aW9uc1sxXS50eXBlJywgJ2NoaWxkTGlzdCcpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnbXV0YXRpb25zWzFdLnRhcmdldC50YWdOYW1lJywgJ0JPRFknKTsKKyAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUn
LCAnUCcpOworPC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186956</attachid>
            <date>2013-02-06 17:37:26 -0800</date>
            <delta_ts>2013-02-07 14:55:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89351-20130206173403.patch</filename>
            <type>text/plain</type>
            <size>13267</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlkNzgyNzAwZmVhNGZl
NWZjY2UxODY4YzQ0ZjY5YzhmNTk2MGZhNy4uZGQ5YTU5MTMzNDI4ZmQ5OGRjMmFlYWZmZDQ4Yzlk
ZTE2MzgzNTU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTA2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9uIHJl
Y29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciogbWV0
aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNjcmlw
dD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMu
aHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1
bm5lcjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMi0wNiAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVnYXRpdmUgdGV4dCBpbmRlbnRzIGNhbiBicmVhayBS
ZW5kZXJCbG9jaydzIGlubGluZSBtYXhpbXVtIHByZWZlcnJlZCB3aWR0aCBjYWxjdWxhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDI3N2ZjYTBmNzNjNDg3YmFkN2M0
ODc4MTJkYWExOGExZmZjNzhmMzYuLmEzYzk1MDQ0MDFjOTliOTNiOWM2OGUzYzIzNDlkYjA3ZDIy
Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwNSw2ICsxMDUs
MTYgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5v
ZGUqIG9sZFBhcmVudCkKIHsKICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOwogICAgIGdldENoaWxk
Tm9kZXMob2xkUGFyZW50LCBjaGlsZHJlbik7CisKKyAgICBpZiAob2xkUGFyZW50LT5kb2N1bWVu
dCgpLT5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExp
c3QpKSB7CisgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24ob2xkUGFyZW50
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGNoaWxkcmVuW2ldLmdldCgp
KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkbyBub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKCkgZm9yIGVhY2ggY2hpbGQsCisgICAgLy8gcHJvYmFibHkg
aW5zaWRlIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lci4KKwogICAgIG9sZFBhcmVu
dC0+cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CkBAIC0zNDIsNiArMzUyLDggQEAgdm9pZCBDb250
YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwg
Tm9kZSogbmV4dENoaWwKIAogICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1
YmZyYW1lQ291bnRGb3JJbnNlcnRpb24oKTsKIAorICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUo
dGhpcykuY2hpbGRBZGRlZChuZXdDaGlsZC5nZXQoKSk7CisKICAgICBjaGlsZHJlbkNoYW5nZWQo
dHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9
CkBAIC01NjUsNiArNTc3LDkgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGls
ZChOb2RlKiBvbGRDaGlsZCkKIAogICAgIG9sZENoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3Bl
KHRoaXMpLndpbGxSZW1vdmVDaGlsZChvbGRDaGlsZCk7CisgICAgb2xkQ2hpbGQtPm5vdGlmeU11
dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKKwogICAgIHJlbW92ZUJldHdlZW4ocHJl
diwgbmV4dCwgb2xkQ2hpbGQpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5l
eHQsIC0xKTsKQEAgLTcxNiw2ICs3MzEsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFw
cGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAgICBuZXdDaGlsZC0+dXBk
YXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKKyAgICBD
aGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNoaWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkpOwor
CiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwogICAgIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MjQ0
YTY1OGY2ZTFjYzQwOGExNTViZDcyMGUxNGYwNzVlOWY1YjkuLjQ2ODlkMTNlNDJhMzVlZWEyMTRh
MDI4N2FhN2I3ZGUyODlkNTEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIk11dGF0aW9u
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgpAQCAtMTEw
LDcgKzExMSw3IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHko
Y29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVj
dXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0g
ICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGlu
Z1NjcmlwdCgpKTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkpOwogICAgIEFTU0VSVChpc1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNlckJsb2NraW5nU2Ny
aXB0KSk7CiAKQEAgLTEyNyw2ICsxMjgsOSBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAg
IGlmIChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hp
bmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7
CiAKKyAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKKwogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNj
cmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5k
Q2xlYXIoKTsKICAgICBpZiAoU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0
RWxlbWVudChlbGVtZW50LmdldCgpKSkgewpAQCAtMTQwLDcgKzE0NCw3IEBAIHZvaWQgSFRNTFNj
cmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdT
Y3JpcHQmIHBlbmRpCiAgICAgICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNj
cmlwdExvYWRFdmVudCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoIW1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKKyAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQogCiB2
b2lkIEhUTUxTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5n
U2NyaXB0KQpAQCAtMTcwLDcgKzE3NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQsIGNvbnN0IFRleHRQb3NpCiAgICAg
cnVuU2NyaXB0KHNjcmlwdEVsZW1lbnQuZ2V0KCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogCiAg
ICAgaWYgKGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0
TmVzdGluZ0xldmVsKQorICAgICAgICBpZiAoaXNFeGVjdXRpbmdTY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsgLy8gVW53aW5kIHRvIHRoZSBvdXRlcm1vc3QgSFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZSBiZWZvcmUgY29udGludWluZyBwYXJzaW5nLgogICAgICAgICAvLyBJZiBwcmVsb2Fk
IHNjYW5uZXIgZ290IGNyZWF0ZWQsIGl0IGlzIG1pc3NpbmcgdGhlIHNvdXJjZSBhZnRlciB0aGUg
Y3VycmVudCBpbnNlcnRpb24gcG9pbnQuIEFwcGVuZCBpdCBhbmQgc2Nhbi4KICAgICAgICAgaWYg
KCFoYWRQcmVsb2FkU2Nhbm5lciAmJiBtX2hvc3QtPmhhc1ByZWxvYWRTY2FubmVyKCkpCkBAIC0x
OTIsNyArMTk2LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0cygpCiAKIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0
aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogewotICAgIEFTU0VSVCgh
bV9zY3JpcHROZXN0aW5nTGV2ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7
CiAgICAgQVNTRVJUKGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNlckJsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpID09
IGNhY2hlZFNjcmlwdCk7CiAgICAgQVNTRVJUKG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCktPmlzTG9hZGVkKCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgSFRNTFNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIC8vIENh
bGxlcnMgc2hvdWxkIGNoZWNrIGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBiZWZv
cmUgY2FsbGluZwogICAgIC8vIHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBk
dXJpbmcgPC9zdHlsZT4gcGFyc2luZy4KICAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cygpKTsKLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKKyAgICBB
U1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZl
U3R5bGVzaGVldHNMb2FkZWQoKSk7CiAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMo
KTsKIH0KQEAgLTIxMyw3ICsyMTcsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yUGFyc2luZygpCiB7CiAgICAgd2hpbGUgKCFtX3NjcmlwdHNU
b0V4ZWN1dGVBZnRlclBhcnNpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY3Jp
cHROZXN0aW5nTGV2ZWwpOworICAgICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwog
ICAgICAgICBBU1NFUlQoIWhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NF
UlQobV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJQYXJzaW5nLmZpcnN0KCkuY2FjaGVkU2NyaXB0KCkp
OwogICAgICAgICBpZiAoIW1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyUGFyc2luZy5maXJzdCgpLmNh
Y2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKSB7CkBAIC0yNzQsOSArMjc4LDYgQEAgdm9pZCBIVE1M
U2NyaXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRp
b24mIHNjcmlwdFN0YXIKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKCFoYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpKTsKICAgICB7Ci0gICAgICAgIEluc2VydGlvblBvaW50UmVj
b3JkIGluc2VydGlvblBvaW50UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7Ci0gICAgICAg
IE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKLQogICAgICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0g
dG9TY3JpcHRFbGVtZW50KHNjcmlwdCk7CiAKICAgICAgICAgLy8gVGhpcyBjb250YWlucyBib3Ro
IGFuZCBBU1NFUlRJT04gYW5kIGEgbnVsbCBjaGVjayBzaW5jZSB3ZSBzaG91bGQgbm90CkBAIC0y
ODcsNiArMjg4LDE2IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQq
IHNjcmlwdCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFyCiAgICAgICAgIGlmICghc2Ny
aXB0RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAvLyBGSVhNRTogVGhp
cyBtYXkgYmUgdG9vIGFncmVzc2l2ZSBhcyB3ZSBhbHdheXMgZGVsaXZlciBtdXRhdGlvbnMgYXQK
KyAgICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkg
dG8gZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKKyAgICAgICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZp
b3VzIHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KKyAgICAgICAgLy8g
ZXhlY3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhlcmUuCisgICAgICAgIGlmICghaXNFeGVjdXRp
bmdTY3JpcHQoKSkKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRh
dGlvbnMoKTsKKworICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJl
Y29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisKICAg
ICAgICAgc2NyaXB0RWxlbWVudC0+cHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsK
IAogICAgICAgICBpZiAoIXNjcmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4ZWN1dGVkKCkpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjA2YzM5NTI2NmIzMTQ1YWYzNmMwNWM4YTYzZTEwZTQzM2Q5ZTQ1OS4uODViYmY5ZDFh
NTJhYjNlMTE4N2EyNGVjNzBmNDBlNWRkOTI3NzNhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEzLTAyLTA2ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEhUTUwgcGFyc2VyIHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVy
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgcGFyc2VyIGdlbmVyYXRlZCBtdXRhdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDItMDYgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE5lZ2F0aXZlIHRleHQgaW5kZW50cyBjYW4gYnJlYWsgUmVuZGVyQmxv
Y2sncyBpbmxpbmUgbWF4aW11bSBwcmVmZXJyZWQgd2lkdGggY2FsY3VsYXRpb24KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3Bh
cnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjZTlkOWYwNTk3MmY0MWRk
OGY5NjI4YTZiZTYwOWI1MWY2OTEzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzggQEAKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyMgorUEFTUyBtdXRhdGlv
bnNbMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiY2hp
bGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRh
dGlvbnNbM10udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbNF0udHlwZSBpcyAi
Y2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbNV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBt
dXRhdGlvbnNbNl0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbN10udHlwZSBp
cyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbOF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFT
UyBtdXRhdGlvbnNbOV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMTBdLnR5
cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzExXS50eXBlIGlzICJjaGlsZExpc3Qi
CitQQVNTIG11dGF0aW9uc1sxMl0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNb
MTNdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzE0XS50eXBlIGlzICJjaGls
ZExpc3QiCitQQVNTIG11dGF0aW9uc1sxNV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRh
dGlvbnNbMTZdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzE3XS50eXBlIGlz
ICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxOF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFT
UyBtdXRhdGlvbnNbMTldLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzIwXS50
eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1syMV0udHlwZSBpcyAiY2hpbGRMaXN0
IgorUEFTUyBtdXRhdGlvbnNbMV0udGFyZ2V0LnRhZ05hbWUgaXMgIkJPRFkiCitQQVNTIG11dGF0
aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5v
ZGVzWzBdLnRhZ05hbWUgaXMgIlAiCitQQVNTIG11dGF0aW9uc1s5XS50YXJnZXQudGFnTmFtZSBp
cyAiQSIKK1BBU1MgbXV0YXRpb25zWzldLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIGlzICJGSUdV
UkUiCitQQVNTIG11dGF0aW9uc1s5XS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0
YXRpb25zWzldLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgbXV0YXRpb25zWzE4XS50YXJn
ZXQudGFnTmFtZSBpcyAiRklHVVJFIgorUEFTUyBtdXRhdGlvbnNbMThdLmFkZGVkTm9kZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzE4XS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKK1BB
U1MgbXV0YXRpb25zWzE4XS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUgaXMgIkRJViIKK011dGF0aW9u
IHJlY29yZHMgc2hvdWxkIGJlIGRlbGl2ZXJlZCBmb3IgYWxsIHBhcnNlciBtdXRhdGlvbnMgYWZ0
ZXIgdGhlIGFib3ZlIHNjcmlwdC4KKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTU5ZThkZDE5MWM2YjY4MjNjMzc4MzIzMTRhZjcyNTZkZGRjYzI1ZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0
aW9ucy5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25P
YnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMsIG9ic2VydmVyKSB7CisgICAgICAgIHdpbmRvdy5t
dXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgfSk7CisgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1
bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOnRydWV9KTsKKzwvc2NyaXB0Pgor
Cis8cD4KKyAgICBNdXRhdGlvbiByZWNvcmRzIHNob3VsZCBiZSBkZWxpdmVyZWQgZm9yIGFsbCBw
YXJzZXIgbXV0YXRpb25zIGFmdGVyIHRoZSBhYm92ZSBzY3JpcHQuCis8L3A+CisKKzwhLS0gVGVz
dCBwYXJzZXJSZW1vdmVDaGlsZCBhbmQgdGFrZUFsbENoaWxkcmVuRnJvbSBkb2luZyB0aGUgYWRv
cHRpb24gYWdlbmN5IGFsZ29yaXRobS4gLS0+Cis8YT48ZmlndXJlPjxpZnJhbWU+PC9pZnJhbWU+
PC9hPgorCis8IS0tIFRlc3QgcGFyc2VySW5zZXJ0QmVmb3JlIGRvaW5nIGhvaXN0aW5nIG9mIGVs
ZW1lbnRzIGZyb20gdGFibGVzLiAtLT4KKzx0YWJsZT4KKyAgICA8ZGl2PjwvZGl2PgorPC90YWJs
ZT4KKworPHNjcmlwdD4KKyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcyMicpOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgaSsrKQorICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1snICsgaSArICddLnR5cGUnLCAnY2hpbGRM
aXN0Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0udGFyZ2V0LnRh
Z05hbWUnLCAnQk9EWScpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlcy5s
ZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWzFdLmFk
ZGVkTm9kZXNbMF0udGFnTmFtZScsICdQJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdt
dXRhdGlvbnNbOV0udGFyZ2V0LnRhZ05hbWUnLCAnQScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnbXV0YXRpb25zWzldLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lJywgJ0ZJR1VSRScpOwor
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbOV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcxJyk7Cisg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1s5XS5hZGRlZE5vZGVzLmxlbmd0aCcsICcwJyk7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMThdLnRhcmdldC50YWdOYW1lJywgJ0ZJ
R1VSRScpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMThdLmFkZGVkTm9kZXMubGVuZ3RoJywg
JzEnKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzE4XS5yZW1vdmVkTm9kZXMubGVuZ3RoJywg
JzAnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxOF0uYWRkZWROb2Rl
c1swXS50YWdOYW1lJywgJ0RJVicpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187183</attachid>
            <date>2013-02-07 14:55:22 -0800</date>
            <delta_ts>2013-02-07 16:10:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89351-20130207145158.patch</filename>
            <type>text/plain</type>
            <size>17097</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlkNzgyNzAwZmVhNGZl
NWZjY2UxODY4YzQ0ZjY5YzhmNTk2MGZhNy4uYzRmMTBmODczODNhOTg1OTI3MzVhZGZhOTNjMjBk
YjM2NjkwZGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTA3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9uIHJl
Y29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciogbWV0
aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNjcmlw
dD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMu
aHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1
bm5lcjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMi0wNiAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVnYXRpdmUgdGV4dCBpbmRlbnRzIGNhbiBicmVhayBS
ZW5kZXJCbG9jaydzIGlubGluZSBtYXhpbXVtIHByZWZlcnJlZCB3aWR0aCBjYWxjdWxhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDI3N2ZjYTBmNzNjNDg3YmFkN2M0
ODc4MTJkYWExOGExZmZjNzhmMzYuLmEzYzk1MDQ0MDFjOTliOTNiOWM2OGUzYzIzNDlkYjA3ZDIy
Mjk4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwNSw2ICsxMDUs
MTYgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5v
ZGUqIG9sZFBhcmVudCkKIHsKICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOwogICAgIGdldENoaWxk
Tm9kZXMob2xkUGFyZW50LCBjaGlsZHJlbik7CisKKyAgICBpZiAob2xkUGFyZW50LT5kb2N1bWVu
dCgpLT5oYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExp
c3QpKSB7CisgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24ob2xkUGFyZW50
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgbXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGNoaWxkcmVuW2ldLmdldCgp
KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkbyBub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKCkgZm9yIGVhY2ggY2hpbGQsCisgICAgLy8gcHJvYmFibHkg
aW5zaWRlIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lci4KKwogICAgIG9sZFBhcmVu
dC0+cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CkBAIC0zNDIsNiArMzUyLDggQEAgdm9pZCBDb250
YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwg
Tm9kZSogbmV4dENoaWwKIAogICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1
YmZyYW1lQ291bnRGb3JJbnNlcnRpb24oKTsKIAorICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUo
dGhpcykuY2hpbGRBZGRlZChuZXdDaGlsZC5nZXQoKSk7CisKICAgICBjaGlsZHJlbkNoYW5nZWQo
dHJ1ZSwgbmV3Q2hpbGQtPnByZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9
CkBAIC01NjUsNiArNTc3LDkgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGls
ZChOb2RlKiBvbGRDaGlsZCkKIAogICAgIG9sZENoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3Rl
ZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3Bl
KHRoaXMpLndpbGxSZW1vdmVDaGlsZChvbGRDaGlsZCk7CisgICAgb2xkQ2hpbGQtPm5vdGlmeU11
dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKTsKKwogICAgIHJlbW92ZUJldHdlZW4ocHJl
diwgbmV4dCwgb2xkQ2hpbGQpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5l
eHQsIC0xKTsKQEAgLTcxNiw2ICs3MzEsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFw
cGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAgICBuZXdDaGlsZC0+dXBk
YXRlQW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKKyAgICBD
aGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLmNoaWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkpOwor
CiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwogICAgIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MjQ0
YTY1OGY2ZTFjYzQwOGExNTViZDcyMGUxNGYwNzVlOWY1YjkuLjQ2ODlkMTNlNDJhMzVlZWEyMTRh
MDI4N2FhN2I3ZGUyODlkNTEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJJZ25v
cmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIk11dGF0aW9u
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgpAQCAtMTEw
LDcgKzExMSw3IEBAIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHko
Y29uc3QgUGVuZGluZ1NjcmlwdCYgc2NyaXB0KQogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVj
dXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0g
ICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGlu
Z1NjcmlwdCgpKTsKICAgICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVk
KCkpOwogICAgIEFTU0VSVChpc1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNlckJsb2NraW5nU2Ny
aXB0KSk7CiAKQEAgLTEyNyw2ICsxMjgsOSBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1
dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAg
IGlmIChwZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hp
bmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7
CiAKKyAgICBpZiAoIWlzRXhlY3V0aW5nU2NyaXB0KCkpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2
ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKKwogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNj
cmlwdCBiZWZvcmUgcG9zc2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5k
Q2xlYXIoKTsKICAgICBpZiAoU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0
RWxlbWVudChlbGVtZW50LmdldCgpKSkgewpAQCAtMTQwLDcgKzE0NCw3IEBAIHZvaWQgSFRNTFNj
cmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdT
Y3JpcHQmIHBlbmRpCiAgICAgICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNj
cmlwdExvYWRFdmVudCgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoIW1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKKyAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQogCiB2
b2lkIEhUTUxTY3JpcHRSdW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5n
U2NyaXB0KQpAQCAtMTcwLDcgKzE3NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IHNjcmlwdEVsZW1lbnQsIGNvbnN0IFRleHRQb3NpCiAgICAg
cnVuU2NyaXB0KHNjcmlwdEVsZW1lbnQuZ2V0KCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogCiAg
ICAgaWYgKGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0
TmVzdGluZ0xldmVsKQorICAgICAgICBpZiAoaXNFeGVjdXRpbmdTY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsgLy8gVW53aW5kIHRvIHRoZSBvdXRlcm1vc3QgSFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZSBiZWZvcmUgY29udGludWluZyBwYXJzaW5nLgogICAgICAgICAvLyBJZiBwcmVsb2Fk
IHNjYW5uZXIgZ290IGNyZWF0ZWQsIGl0IGlzIG1pc3NpbmcgdGhlIHNvdXJjZSBhZnRlciB0aGUg
Y3VycmVudCBpbnNlcnRpb24gcG9pbnQuIEFwcGVuZCBpdCBhbmQgc2Nhbi4KICAgICAgICAgaWYg
KCFoYWRQcmVsb2FkU2Nhbm5lciAmJiBtX2hvc3QtPmhhc1ByZWxvYWRTY2FubmVyKCkpCkBAIC0x
OTIsNyArMTk2LDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0cygpCiAKIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0
aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogewotICAgIEFTU0VSVCgh
bV9zY3JpcHROZXN0aW5nTGV2ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7
CiAgICAgQVNTRVJUKGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoY2FjaGVkU2NyaXB0LCBtX3BhcnNlckJsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpID09
IGNhY2hlZFNjcmlwdCk7CiAgICAgQVNTRVJUKG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQuY2FjaGVk
U2NyaXB0KCktPmlzTG9hZGVkKCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgSFRNTFNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIC8vIENh
bGxlcnMgc2hvdWxkIGNoZWNrIGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBiZWZv
cmUgY2FsbGluZwogICAgIC8vIHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBk
dXJpbmcgPC9zdHlsZT4gcGFyc2luZy4KICAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cygpKTsKLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKKyAgICBB
U1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZl
U3R5bGVzaGVldHNMb2FkZWQoKSk7CiAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMo
KTsKIH0KQEAgLTIxMyw3ICsyMTcsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yUGFyc2luZygpCiB7CiAgICAgd2hpbGUgKCFtX3NjcmlwdHNU
b0V4ZWN1dGVBZnRlclBhcnNpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY3Jp
cHROZXN0aW5nTGV2ZWwpOworICAgICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwog
ICAgICAgICBBU1NFUlQoIWhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NF
UlQobV9zY3JpcHRzVG9FeGVjdXRlQWZ0ZXJQYXJzaW5nLmZpcnN0KCkuY2FjaGVkU2NyaXB0KCkp
OwogICAgICAgICBpZiAoIW1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyUGFyc2luZy5maXJzdCgpLmNh
Y2hlZFNjcmlwdCgpLT5pc0xvYWRlZCgpKSB7CkBAIC0yNzQsOSArMjc4LDYgQEAgdm9pZCBIVE1M
U2NyaXB0UnVubmVyOjpydW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRp
b24mIHNjcmlwdFN0YXIKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKCFoYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpKTsKICAgICB7Ci0gICAgICAgIEluc2VydGlvblBvaW50UmVj
b3JkIGluc2VydGlvblBvaW50UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7Ci0gICAgICAg
IE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0
TmVzdGluZ0xldmVsKTsKLQogICAgICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0g
dG9TY3JpcHRFbGVtZW50KHNjcmlwdCk7CiAKICAgICAgICAgLy8gVGhpcyBjb250YWlucyBib3Ro
IGFuZCBBU1NFUlRJT04gYW5kIGEgbnVsbCBjaGVjayBzaW5jZSB3ZSBzaG91bGQgbm90CkBAIC0y
ODcsNiArMjg4LDE2IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQq
IHNjcmlwdCwgY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFyCiAgICAgICAgIGlmICghc2Ny
aXB0RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAvLyBGSVhNRTogVGhp
cyBtYXkgYmUgdG9vIGFncmVzc2l2ZSBhcyB3ZSBhbHdheXMgZGVsaXZlciBtdXRhdGlvbnMgYXQK
KyAgICAgICAgLy8gZXZlcnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkg
dG8gZXhlY3V0ZSB5ZXQuIFRoZXJlJ3MKKyAgICAgICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZp
b3VzIHdheSB0byB0ZWxsIGlmIHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KKyAgICAgICAgLy8g
ZXhlY3V0ZSB0aGUgc2NyaXB0IGZyb20gb3V0IGhlcmUuCisgICAgICAgIGlmICghaXNFeGVjdXRp
bmdTY3JpcHQoKSkKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRh
dGlvbnMoKTsKKworICAgICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJl
Y29yZChtX2hvc3QtPmlucHV0U3RyZWFtKCkpOworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1l
bnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisKICAg
ICAgICAgc2NyaXB0RWxlbWVudC0+cHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsK
IAogICAgICAgICBpZiAoIXNjcmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4ZWN1dGVkKCkpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMjA2YzM5NTI2NmIzMTQ1YWYzNmMwNWM4YTYzZTEwZTQzM2Q5ZTQ1OS4uYTgxZjcxM2Q5
ODY0ZmQ1MzE2YmFhMWQxNzhlMjgzYWRlYjc0MzMyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEzLTAyLTA3ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEhUTUwgcGFyc2VyIHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVy
YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTM1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBuZXcgdGVzdCBtdXRhdGlvbiByZWNvcmRzIGluIHRoZSBwYXJzZXIgYW5kIGZpeCBzaGFkb3ct
ZG9tLmh0bWwKKyAgICAgICAgdGVzdCBzaW5jZSBpdCB1c2VkIHNldFRpbWVvdXQgYW5kIHNvbWV0
aW1lcyBjb3VsZCBvYnNlcnZlIHBhcnNlcgorICAgICAgICBtdXRhdGlvbnMuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRh
dGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9z
aGFkb3ctZG9tLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL3NoYWRvdy1kb20uaHRtbDoKKwogMjAxMy0wMi0wNiAgTGV2aSBXZWludHJhdWIgIDxsZXZp
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTmVnYXRpdmUgdGV4dCBpbmRlbnRzIGNhbiBicmVh
ayBSZW5kZXJCbG9jaydzIGlubGluZSBtYXhpbXVtIHByZWZlcnJlZCB3aWR0aCBjYWxjdWxhdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJz
ZXItbXV0YXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNlOWQ5
ZjA1OTcyZjQxZGQ4Zjk2MjhhNmJlNjA5YjUxZjY5MTNmYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIyCitQ
QVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxXS50
eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJjaGlsZExpc3Qi
CitQQVNTIG11dGF0aW9uc1szXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s0
XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s1XS50eXBlIGlzICJjaGlsZExp
c3QiCitQQVNTIG11dGF0aW9uc1s2XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9u
c1s3XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s4XS50eXBlIGlzICJjaGls
ZExpc3QiCitQQVNTIG11dGF0aW9uc1s5XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0
aW9uc1sxMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMTFdLnR5cGUgaXMg
ImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzEyXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNT
IG11dGF0aW9uc1sxM10udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMTRdLnR5
cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzE1XS50eXBlIGlzICJjaGlsZExpc3Qi
CitQQVNTIG11dGF0aW9uc1sxNl0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNb
MTddLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzE4XS50eXBlIGlzICJjaGls
ZExpc3QiCitQQVNTIG11dGF0aW9uc1sxOV0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFTUyBtdXRh
dGlvbnNbMjBdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzIxXS50eXBlIGlz
ICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxXS50YXJnZXQudGFnTmFtZSBpcyAiQk9EWSIK
K1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25z
WzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAiUCIKK1BBU1MgbXV0YXRpb25zWzldLnRhcmdl
dC50YWdOYW1lIGlzICJBIgorUEFTUyBtdXRhdGlvbnNbOV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05h
bWUgaXMgIkZJR1VSRSIKK1BBU1MgbXV0YXRpb25zWzldLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMg
MQorUEFTUyBtdXRhdGlvbnNbOV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlv
bnNbMThdLnRhcmdldC50YWdOYW1lIGlzICJGSUdVUkUiCitQQVNTIG11dGF0aW9uc1sxOF0uYWRk
ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMThdLnJlbW92ZWROb2Rlcy5sZW5n
dGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMThdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAiRElW
IgorTXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgZGVsaXZlcmVkIGZvciBhbGwgcGFyc2VyIG11
dGF0aW9ucyBhZnRlciB0aGUgYWJvdmUgc2NyaXB0LgorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNTllOGRkMTkxYzZiNjgyM2MzNzgzMjMxNGFmNzI1NmRkZGNjMjVkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9w
YXJzZXItbXV0YXRpb25zLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+CisK
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucywgb2JzZXJ2ZXIpIHsKKyAgICAg
ICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICB9KTsKKyAgICBvYnNlcnZlci5v
YnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6dHJ1ZX0pOwor
PC9zY3JpcHQ+CisKKzxwPgorICAgIE11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIGRlbGl2ZXJl
ZCBmb3IgYWxsIHBhcnNlciBtdXRhdGlvbnMgYWZ0ZXIgdGhlIGFib3ZlIHNjcmlwdC4KKzwvcD4K
KworPCEtLSBUZXN0IHBhcnNlclJlbW92ZUNoaWxkIGFuZCB0YWtlQWxsQ2hpbGRyZW5Gcm9tIGRv
aW5nIHRoZSBhZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtLiAtLT4KKzxhPjxmaWd1cmU+PGlmcmFt
ZT48L2lmcmFtZT48L2E+CisKKzwhLS0gVGVzdCBwYXJzZXJJbnNlcnRCZWZvcmUgZG9pbmcgaG9p
c3Rpbmcgb2YgZWxlbWVudHMgZnJvbSB0YWJsZXMuIC0tPgorPHRhYmxlPgorICAgIDxkaXY+PC9k
aXY+Cis8L3RhYmxlPgorCis8c2NyaXB0PgorICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3Ro
JywgJzIyJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdXRhdGlvbnMubGVuZ3RoOyBpKysp
CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBpICsgJ10udHlw
ZScsICdjaGlsZExpc3QnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sx
XS50YXJnZXQudGFnTmFtZScsICdCT0RZJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5h
ZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRh
dGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lJywgJ1AnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ211dGF0aW9uc1s5XS50YXJnZXQudGFnTmFtZScsICdBJyk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbOV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUnLCAn
RklHVVJFJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1s5XS5yZW1vdmVkTm9kZXMubGVuZ3Ro
JywgJzEnKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzldLmFkZGVkTm9kZXMubGVuZ3RoJywg
JzAnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxOF0udGFyZ2V0LnRh
Z05hbWUnLCAnRklHVVJFJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxOF0uYWRkZWROb2Rl
cy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMThdLnJlbW92ZWROb2Rl
cy5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWzE4
XS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUnLCAnRElWJyk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRv
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3No
YWRvdy1kb20tZXhwZWN0ZWQudHh0CmluZGV4IGI3YTFjNTUxOGI3MzYzODUzN2Q4NGE1ZThlZmZj
OTBkZmEyMjU3ZGUuLmViYmRmZGQwMzE3ZmNiMjc2MDkzOTY4ZDA3YTlkNTFlMmY3ZDM1ZWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRv
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9zaGFkb3ctZG9tLWV4cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBQQVNTIG11dGF0aW9u
c1syXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgogUEFTUyBtdXRhdGlvbnNbM10udHlwZSBpcyAi
Y2hpbGRMaXN0IgogCiBPYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hvdWxkIG5v
dCBzZWUgbXV0YXRpb25zIGluIHRoZSBzaGFkb3c6Ci1QQVNTIG11dGF0aW9ucyBpcyBudWxsCitQ
QVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL3NoYWRvdy1kb20uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS5odG1sCmluZGV4IGFjYzdkZGE5OWY1OThlZGZhMDkyYTBi
NmU0MjQ3YTRjOGNhNTc1YmQuLjU4Yjg0NWQwNmM4NDUxMTY2YjU5YWExMThhYTIxN2NhYmU4NWM3
ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hh
ZG93LWRvbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
c2hhZG93LWRvbS5odG1sCkBAIC01LDggKzUsMTAgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbign
VGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG9wZXJhdGUgaW4gU2hhZG93IERPTScpOwogCi1m
dW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgZnVuY3Rpb24gbXV0YXRlKGVsdCkgeworZnVuY3Rpb24g
ZG9UZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBtdXRhdGUoZWx0KQorICAgIHsKICAgICAgICAgZWx0
LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7CiAgICAgICAgIGVsdC5pbnNlcnRCZWZv
cmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvJyksIGVsdC5maXJzdENoaWxkKTsKICAg
ICAgICAgZWx0LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQgPSAnZ29vZGJ5ZSc7CkBAIC0xNCwzNyAr
MTYsMzAgQEAgZnVuY3Rpb24gZG9UZXN0KCkgewogICAgIH0KIAogICAgIHZhciBzaGFkb3dSb290
ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKSk7
Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24o
bXV0YXRpb25zKSB7Ci0gICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAg
fSk7CisgICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rp
b24oKSB7IH0pOwogCiAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaGFkb3dSb290LmZpcnN0Q2hpbGQs
IHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUs
IHN1YnRyZWU6IHRydWV9KTsKICAgICBtdXRhdGUoc2hhZG93Um9vdC5maXJzdENoaWxkKTsKIAot
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRlYnVnKCdNdXRhdGlvbnMgaW4g
c2hhZG93IERPTSBzaG91bGQgaGF2ZSBiZWVuIG9ic2VydmVkOicpOwotICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICc0Jyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sx
XS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0u
dHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sz
XS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
KyAgICB3aW5kb3cubXV0YXRpb25zID0gb2JzZXJ2ZXIudGFrZVJlY29yZHMoKTsKKyAgICBkZWJ1
ZygnTXV0YXRpb25zIGluIHNoYWRvdyBET00gc2hvdWxkIGhhdmUgYmVlbiBvYnNlcnZlZDonKTsK
KyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc0Jyk7CisgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0udHlwZScsICciY2hpbGRMaXN0IicpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0u
dHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zWzNdLnR5
cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAKLSAgICAg
ICAgd2luZG93Lm11dGF0aW9ucyA9IG51bGw7Ci0gICAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9j
dW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6
IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAgbXV0YXRlKHNoYWRvd1Jvb3QuZmlyc3RD
aGlsZCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBkZWJ1
ZygnXG5PYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRvdyBET00gc2hvdWxkIG5vdCBzZWUgbXV0
YXRpb25zIGluIHRoZSBzaGFkb3c6Jyk7Ci0gICAgICAgICAgICBzaG91bGRCZU51bGwoJ211dGF0
aW9ucycpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgIH0sIDApOwotICAg
IH0sIDApOworICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBvYnNlcnZlci50YWtlUmVjb3JkcygpOwor
ICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExp
c3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICBtdXRh
dGUoc2hhZG93Um9vdC5maXJzdENoaWxkKTsgICAgCisgICAgZGVidWcoJ1xuT2JzZXJ2aW5nIGZy
b20gb3V0c2lkZSBzaGFkb3cgRE9NIHNob3VsZCBub3Qgc2VlIG11dGF0aW9ucyBpbiB0aGUgc2hh
ZG93OicpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzAnKTsKIH0KIAotaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQogICAgIGRvVGVzdCgp
OwotICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLX0gZWxzZQorZWxzZQogICAgIHRl
c3RGYWlsZWQoJ1RoaXMgdGVzdCBvbmx5IHJ1bnMgaW4gRFJUJyk7CiA8L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187192</attachid>
            <date>2013-02-07 16:10:35 -0800</date>
            <delta_ts>2013-02-07 16:36:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-89351-20130207160710.patch</filename>
            <type>text/plain</type>
            <size>17064</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNiOTY3MTIzNjNjYmYy
ZDQ3MzFjMWUwZTcwMmM2ZDZlYmFiYzhlOS4uZDlhYmUyNDE1ZTUwOGE3M2M4NTExNmVkNmZhOWM5
MjY4NzdmZTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTA3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEdlbmVyYXRlIG11dGF0aW9uIHJl
Y29yZHMgaW5zaWRlIHRoZSBwYXJzZXIuIFRoaXMgaXMgZG9uZSBieSB1c2luZyBhCisgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgaW4gdGhlIENvbnRhaW5lck5vZGU6OnBhcnNlciogbWV0
aG9kcyBhbmQgdGhlbgorICAgICAgICBhZGRpbmcgZGVsaXZlcnkgYmVmb3JlIGVhY2ggPHNjcmlw
dD4gZWxlbWVudCB3b3VsZCBiZSBwcm9jZXNzZWQgYnkKKyAgICAgICAgdGhlIHBhcnNlci4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMu
aHRtbAorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2Ny
aXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0
eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1
bm5lcjo6cnVuU2NyaXB0KToKKwogMjAxMy0wMi0wNyAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVy
c29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb24tc2Nyb2xsYWJsZSBkaXZzIGFuZCBub24t
c2Nyb2xsYWJsZSBpZnJhbWVzIGNhbiBzY3JvbGwgd2l0aCB0b3VjaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IDI3N2ZjYTBmNzNjNDg3YmFkN2M0ODc4MTJkYWExOGExZmZj
NzhmMzYuLmEzYzk1MDQ0MDFjOTliOTNiOWM2OGUzYzIzNDlkYjA3ZDIyMjk4MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEwNSw2ICsxMDUsMTYgQEAgdm9pZCBDb250
YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkK
IHsKICAgICBOb2RlVmVjdG9yIGNoaWxkcmVuOwogICAgIGdldENoaWxkTm9kZXMob2xkUGFyZW50
LCBjaGlsZHJlbik7CisKKyAgICBpZiAob2xkUGFyZW50LT5kb2N1bWVudCgpLT5oYXNNdXRhdGlv
bk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSB7CisgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24ob2xkUGFyZW50KTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
bXV0YXRpb24ud2lsbFJlbW92ZUNoaWxkKGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBkbyBub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxs
RGV0YWNoKCkgZm9yIGVhY2ggY2hpbGQsCisgICAgLy8gcHJvYmFibHkgaW5zaWRlIHJlbW92ZURl
dGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5lci4KKwogICAgIG9sZFBhcmVudC0+cmVtb3ZlRGV0YWNo
ZWRDaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNp
emUoKTsgKytpKSB7CkBAIC0zNDIsNiArMzUyLDggQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJz
ZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogbmV4dENoaWwK
IAogICAgIG5ld0NoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JJ
bnNlcnRpb24oKTsKIAorICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUodGhpcykuY2hpbGRBZGRl
ZChuZXdDaGlsZC5nZXQoKSk7CisKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV3Q2hpbGQt
PnByZXZpb3VzU2libGluZygpLCBuZXh0Q2hpbGQsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CkBAIC01NjUsNiArNTc3
LDkgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGls
ZCkKIAogICAgIG9sZENoaWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRG
b3JSZW1vdmFsKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKHRoaXMpLndpbGxSZW1v
dmVDaGlsZChvbGRDaGlsZCk7CisgICAgb2xkQ2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJz
Tm9kZVdpbGxEZXRhY2goKTsKKwogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hp
bGQpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5leHQsIC0xKTsKQEAgLTcx
Niw2ICs3MzEsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKFBhc3NS
ZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAgICBuZXdDaGlsZC0+dXBkYXRlQW5jZXN0b3JDb25u
ZWN0ZWRTdWJmcmFtZUNvdW50Rm9ySW5zZXJ0aW9uKCk7CiAKKyAgICBDaGlsZExpc3RNdXRhdGlv
blNjb3BlKHRoaXMpLmNoaWxkQWRkZWQobmV3Q2hpbGQuZ2V0KCkpOworCiAgICAgY2hpbGRyZW5D
aGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
KHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDA0MjQ0YTY1OGY2ZTFjYzQwOGEx
NTViZDcyMGUxNGYwNzVlOWY1YjkuLjQ2ODlkMTNlNDJhMzVlZWEyMTRhMDI4N2FhN2I3ZGUyODlk
NTEwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCIKICNpbmNsdWRlICJJZ25vcmVEZXN0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlci5oIgorI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgpAQCAtMTEwLDcgKzExMSw3IEBAIGJv
b2wgSFRNTFNjcmlwdFJ1bm5lcjo6aXNQZW5kaW5nU2NyaXB0UmVhZHkoY29uc3QgUGVuZGluZ1Nj
cmlwdCYgc2NyaXB0KQogdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0KCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgQVNTRVJUKCFtX3Nj
cmlwdE5lc3RpbmdMZXZlbCk7CisgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKICAg
ICBBU1NFUlQobV9kb2N1bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpOwogICAgIEFTU0VS
VChpc1BlbmRpbmdTY3JpcHRSZWFkeShtX3BhcnNlckJsb2NraW5nU2NyaXB0KSk7CiAKQEAgLTEy
Nyw2ICsxMjgsOSBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0
QW5kRGlzcGF0Y2hFdmVudChQZW5kaW5nU2NyaXB0JiBwZW5kaQogICAgIGlmIChwZW5kaW5nU2Ny
aXB0LmNhY2hlZFNjcmlwdCgpICYmIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCiAg
ICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdCk7CiAKKyAgICBpZiAoIWlz
RXhlY3V0aW5nU2NyaXB0KCkpCisgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxN
dXRhdGlvbnMoKTsKKwogICAgIC8vIENsZWFyIHRoZSBwZW5kaW5nIHNjcmlwdCBiZWZvcmUgcG9z
c2libGUgcmVudHJhbmN5IGZyb20gZXhlY3V0ZVNjcmlwdCgpCiAgICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBwZW5kaW5nU2NyaXB0LnJlbGVhc2VFbGVtZW50QW5kQ2xlYXIoKTsKICAgICBp
ZiAoU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChlbGVtZW50
LmdldCgpKSkgewpAQCAtMTQwLDcgKzE0NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhl
Y3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFBlbmRpbmdTY3JpcHQmIHBlbmRpCiAg
ICAgICAgICAgICBlbGVtZW50LT5kaXNwYXRjaEV2ZW50KGNyZWF0ZVNjcmlwdExvYWRFdmVudCgp
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsK
KyAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRS
dW5uZXI6OndhdGNoRm9yTG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQpAQCAtMTcw
LDcgKzE3NCw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZShQYXNzUmVmUHRyPEVs
ZW1lbnQ+IHNjcmlwdEVsZW1lbnQsIGNvbnN0IFRleHRQb3NpCiAgICAgcnVuU2NyaXB0KHNjcmlw
dEVsZW1lbnQuZ2V0KCksIHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogCiAgICAgaWYgKGhhc1BhcnNl
ckJsb2NraW5nU2NyaXB0KCkpIHsKLSAgICAgICAgaWYgKG1fc2NyaXB0TmVzdGluZ0xldmVsKQor
ICAgICAgICBpZiAoaXNFeGVjdXRpbmdTY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsgLy8g
VW53aW5kIHRvIHRoZSBvdXRlcm1vc3QgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZSBiZWZvcmUg
Y29udGludWluZyBwYXJzaW5nLgogICAgICAgICAvLyBJZiBwcmVsb2FkIHNjYW5uZXIgZ290IGNy
ZWF0ZWQsIGl0IGlzIG1pc3NpbmcgdGhlIHNvdXJjZSBhZnRlciB0aGUgY3VycmVudCBpbnNlcnRp
b24gcG9pbnQuIEFwcGVuZCBpdCBhbmQgc2Nhbi4KICAgICAgICAgaWYgKCFoYWRQcmVsb2FkU2Nh
bm5lciAmJiBtX2hvc3QtPmhhc1ByZWxvYWRTY2FubmVyKCkpCkBAIC0xOTIsNyArMTk2LDcgQEAg
dm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGFyc2luZ0Jsb2NraW5nU2NyaXB0cygpCiAK
IHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZChDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkU2NyaXB0KQogewotICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5n
TGV2ZWwpOworICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3JpcHQoKSk7CiAgICAgQVNTRVJUKGhh
c1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVkU2NyaXB0
LCBtX3BhcnNlckJsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCgpID09IGNhY2hlZFNjcmlwdCk7
CiAgICAgQVNTRVJUKG1fcGFyc2VyQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0KCktPmlzTG9h
ZGVkKCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogICAgIC8vIENhbGxlcnMgc2hvdWxkIGNo
ZWNrIGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKSBiZWZvcmUgY2FsbGluZwogICAg
IC8vIHRvIHByZXZlbnQgcGFyc2VyIG9yIHNjcmlwdCByZS1lbnRyeSBkdXJpbmcgPC9zdHlsZT4g
cGFyc2luZy4KICAgICBBU1NFUlQoaGFzU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpKTsK
LSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKKyAgICBBU1NFUlQoIWlzRXhlY3V0
aW5nU2NyaXB0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2Fk
ZWQoKSk7CiAgICAgZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKTsKIH0KQEAgLTIxMyw3
ICsyMTcsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0Zv
clN0eWxlc2hlZXRzKCkKIGJvb2wgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0
aW5nRm9yUGFyc2luZygpCiB7CiAgICAgd2hpbGUgKCFtX3NjcmlwdHNUb0V4ZWN1dGVBZnRlclBh
cnNpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zY3JpcHROZXN0aW5nTGV2ZWwp
OworICAgICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NFUlQo
IWhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkpOwogICAgICAgICBBU1NFUlQobV9zY3JpcHRzVG9F
eGVjdXRlQWZ0ZXJQYXJzaW5nLmZpcnN0KCkuY2FjaGVkU2NyaXB0KCkpOwogICAgICAgICBpZiAo
IW1fc2NyaXB0c1RvRXhlY3V0ZUFmdGVyUGFyc2luZy5maXJzdCgpLmNhY2hlZFNjcmlwdCgpLT5p
c0xvYWRlZCgpKSB7CkBAIC0yNzQsOSArMjc4LDYgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpy
dW5TY3JpcHQoRWxlbWVudCogc2NyaXB0LCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXIK
ICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKCFoYXNQYXJzZXJCbG9ja2luZ1Nj
cmlwdCgpKTsKICAgICB7Ci0gICAgICAgIEluc2VydGlvblBvaW50UmVjb3JkIGluc2VydGlvblBv
aW50UmVjb3JkKG1faG9zdC0+aW5wdXRTdHJlYW0oKSk7Ci0gICAgICAgIE5lc3RpbmdMZXZlbElu
Y3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fc2NyaXB0TmVzdGluZ0xldmVsKTsK
LQogICAgICAgICBTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRFbGVtZW50
KHNjcmlwdCk7CiAKICAgICAgICAgLy8gVGhpcyBjb250YWlucyBib3RoIGFuZCBBU1NFUlRJT04g
YW5kIGEgbnVsbCBjaGVjayBzaW5jZSB3ZSBzaG91bGQgbm90CkBAIC0yODcsNiArMjg4LDE2IEBA
IHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6cnVuU2NyaXB0KEVsZW1lbnQqIHNjcmlwdCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFyCiAgICAgICAgIGlmICghc2NyaXB0RWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXkgYmUgdG9vIGFn
cmVzc2l2ZSBhcyB3ZSBhbHdheXMgZGVsaXZlciBtdXRhdGlvbnMgYXQKKyAgICAgICAgLy8gZXZl
cnkgc2NyaXB0IGVsZW1lbnQsIGV2ZW4gaWYgaXQncyBub3QgcmVhZHkgdG8gZXhlY3V0ZSB5ZXQu
IFRoZXJlJ3MKKyAgICAgICAgLy8gdW5mb3J0dWFudGVseSBubyBvYnZpb3VzIHdheSB0byB0ZWxs
IGlmIHByZXBhcmVTY3JpcHQgaXMgZ29pbmcgdG8KKyAgICAgICAgLy8gZXhlY3V0ZSB0aGUgc2Ny
aXB0IGZyb20gb3V0IGhlcmUuCisgICAgICAgIGlmICghaXNFeGVjdXRpbmdTY3JpcHQoKSkKKyAg
ICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKTsKKworICAg
ICAgICBJbnNlcnRpb25Qb2ludFJlY29yZCBpbnNlcnRpb25Qb2ludFJlY29yZChtX2hvc3QtPmlu
cHV0U3RyZWFtKCkpOworICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2
ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CisKICAgICAgICAgc2NyaXB0RWxl
bWVudC0+cHJlcGFyZVNjcmlwdChzY3JpcHRTdGFydFBvc2l0aW9uKTsKIAogICAgICAgICBpZiAo
IXNjcmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4ZWN1dGVkKCkpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQ3MzQ0NzFm
NGQ4NWExN2RjMzYwZjNiMGVmYWM4ZDg3MGRiZDVhNi4uNjczMTFmN2UwOGQxODQ5ZjY2NzFjM2Jm
ODRmNDY1Yjg3NDQ5NDc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAyLTA3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEhUTUwgcGFyc2Vy
IHNob3VsZCBxdWV1ZSBNdXRhdGlvblJlY29yZHMgZm9yIGl0cyBvcGVyYXRpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTM1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCBtdXRhdGlv
biByZWNvcmRzIGluIHRoZSBwYXJzZXIgYW5kIGZpeCBzaGFkb3ctZG9tLmh0bWwKKyAgICAgICAg
dGVzdCBzaW5jZSBpdCB1c2VkIHNldFRpbWVvdXQgYW5kIHNvbWV0aW1lcyBjb3VsZCBvYnNlcnZl
IHBhcnNlcgorICAgICAgICBtdXRhdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9zaGFkb3ctZG9tLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1kb20uaHRt
bDoKKwogMjAxMy0wMi0wNyAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBOb24tc2Nyb2xsYWJsZSBkaXZzIGFuZCBub24tc2Nyb2xsYWJsZSBpZnJh
bWVzIGNhbiBzY3JvbGwgd2l0aCB0b3VjaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGNlOWQ5ZjA1OTcyZjQxZGQ4Zjk2MjhhNmJlNjA5YjUxZjY5MTNm
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvcGFyc2VyLW11dGF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDIyCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJjaGlsZExp
c3QiCitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9u
c1syXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1szXS50eXBlIGlzICJjaGls
ZExpc3QiCitQQVNTIG11dGF0aW9uc1s0XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0
aW9uc1s1XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s2XS50eXBlIGlzICJj
aGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s3XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11
dGF0aW9uc1s4XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1s5XS50eXBlIGlz
ICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxMF0udHlwZSBpcyAiY2hpbGRMaXN0IgorUEFT
UyBtdXRhdGlvbnNbMTFdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25zWzEyXS50
eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxM10udHlwZSBpcyAiY2hpbGRMaXN0
IgorUEFTUyBtdXRhdGlvbnNbMTRdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0YXRpb25z
WzE1XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxNl0udHlwZSBpcyAiY2hp
bGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMTddLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BBU1MgbXV0
YXRpb25zWzE4XS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxOV0udHlwZSBp
cyAiY2hpbGRMaXN0IgorUEFTUyBtdXRhdGlvbnNbMjBdLnR5cGUgaXMgImNoaWxkTGlzdCIKK1BB
U1MgbXV0YXRpb25zWzIxXS50eXBlIGlzICJjaGlsZExpc3QiCitQQVNTIG11dGF0aW9uc1sxXS50
YXJnZXQudGFnTmFtZSBpcyAiQk9EWSIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAiUCIK
K1BBU1MgbXV0YXRpb25zWzldLnRhcmdldC50YWdOYW1lIGlzICJBIgorUEFTUyBtdXRhdGlvbnNb
OV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUgaXMgIkZJR1VSRSIKK1BBU1MgbXV0YXRpb25zWzld
LnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbOV0uYWRkZWROb2Rlcy5s
ZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMThdLnRhcmdldC50YWdOYW1lIGlzICJGSUdVUkUi
CitQQVNTIG11dGF0aW9uc1sxOF0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQorUEFTUyBtdXRhdGlv
bnNbMThdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlvbnNbMThdLmFkZGVk
Tm9kZXNbMF0udGFnTmFtZSBpcyAiRElWIgorTXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgZGVs
aXZlcmVkIGZvciBhbGwgcGFyc2VyIG11dGF0aW9ucyBhZnRlciB0aGUgYWJvdmUgc2NyaXB0Lgor
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9w
YXJzZXItbXV0YXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL3BhcnNlci1tdXRhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTllOGRkMTkxYzZiNjgyM2Mz
NzgzMjMxNGFmNzI1NmRkZGNjMjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9wYXJzZXItbXV0YXRpb25zLmh0bWwKQEAgLTAsMCArMSw0
NCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAg
IHZhciBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0
aW9ucywgb2JzZXJ2ZXIpIHsKKyAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsK
KyAgICB9KTsKKyAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6
IHRydWUsIHN1YnRyZWU6dHJ1ZX0pOworPC9zY3JpcHQ+CisKKzxwPgorICAgIE11dGF0aW9uIHJl
Y29yZHMgc2hvdWxkIGJlIGRlbGl2ZXJlZCBmb3IgYWxsIHBhcnNlciBtdXRhdGlvbnMgYWZ0ZXIg
dGhlIGFib3ZlIHNjcmlwdC4KKzwvcD4KKworPCEtLSBUZXN0IHBhcnNlclJlbW92ZUNoaWxkIGFu
ZCB0YWtlQWxsQ2hpbGRyZW5Gcm9tIGRvaW5nIHRoZSBhZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGht
LiAtLT4KKzxhPjxmaWd1cmU+PGlmcmFtZT48L2lmcmFtZT48L2E+CisKKzwhLS0gVGVzdCBwYXJz
ZXJJbnNlcnRCZWZvcmUgZG9pbmcgaG9pc3Rpbmcgb2YgZWxlbWVudHMgZnJvbSB0YWJsZXMuIC0t
PgorPHRhYmxlPgorICAgIDxkaXY+PC9kaXY+Cis8L3RhYmxlPgorCis8c2NyaXB0PgorICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzIyJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtdXRhdGlvbnMubGVuZ3RoOyBpKyspCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
bXV0YXRpb25zWycgKyBpICsgJ10udHlwZScsICdjaGlsZExpc3QnKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ211dGF0aW9uc1sxXS50YXJnZXQudGFnTmFtZScsICdCT0RZJyk7CisgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxlbmd0aCcsICcxJyk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50YWdOYW1lJywg
J1AnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ211dGF0aW9uc1s5XS50YXJnZXQudGFn
TmFtZScsICdBJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdtdXRhdGlvbnNbOV0ucmVt
b3ZlZE5vZGVzWzBdLnRhZ05hbWUnLCAnRklHVVJFJyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1s5XS5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzldLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J211dGF0aW9uc1sxOF0udGFyZ2V0LnRhZ05hbWUnLCAnRklHVVJFJyk7CisgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxOF0uYWRkZWROb2Rlcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMThdLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnbXV0YXRpb25zWzE4XS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUnLCAnRElWJyk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1kb20tZXhwZWN0ZWQudHh0CmluZGV4IGI3YTFj
NTUxOGI3MzYzODUzN2Q4NGE1ZThlZmZjOTBkZmEyMjU3ZGUuLmViYmRmZGQwMzE3ZmNiMjc2MDkz
OTY4ZDA3YTlkNTFlMmY3ZDM1ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9zaGFkb3ctZG9tLWV4cGVjdGVkLnR4dApAQCAtMTEs
NyArMTEsNyBAQCBQQVNTIG11dGF0aW9uc1syXS50eXBlIGlzICJjaGFyYWN0ZXJEYXRhIgogUEFT
UyBtdXRhdGlvbnNbM10udHlwZSBpcyAiY2hpbGRMaXN0IgogCiBPYnNlcnZpbmcgZnJvbSBvdXRz
aWRlIHNoYWRvdyBET00gc2hvdWxkIG5vdCBzZWUgbXV0YXRpb25zIGluIHRoZSBzaGFkb3c6Ci1Q
QVNTIG11dGF0aW9ucyBpcyBudWxsCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMAogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL3NoYWRvdy1kb20uaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS5odG1sCmluZGV4
IGFjYzdkZGE5OWY1OThlZGZhMDkyYTBiNmU0MjQ3YTRjOGNhNTc1YmQuLjU4Yjg0NWQwNmM4NDUx
MTY2YjU5YWExMThhYTIxN2NhYmU4NWM3ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvc2hhZG93LWRvbS5odG1sCkBAIC01LDggKzUsMTAgQEAK
IDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG9wZXJh
dGUgaW4gU2hhZG93IERPTScpOwogCi1mdW5jdGlvbiBkb1Rlc3QoKSB7Ci0gICAgZnVuY3Rpb24g
bXV0YXRlKGVsdCkgeworZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBtdXRhdGUo
ZWx0KQorICAgIHsKICAgICAgICAgZWx0LnNldEF0dHJpYnV0ZSgnZGF0YS1mb28nLCAnYmFyJyk7
CiAgICAgICAgIGVsdC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxv
JyksIGVsdC5maXJzdENoaWxkKTsKICAgICAgICAgZWx0LmZpcnN0Q2hpbGQudGV4dENvbnRlbnQg
PSAnZ29vZGJ5ZSc7CkBAIC0xNCwzNyArMTYsMzAgQEAgZnVuY3Rpb24gZG9UZXN0KCkgewogICAg
IH0KIAogICAgIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignaW5wdXQnKSk7Ci0gICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktpdE11
dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Ci0gICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7Ci0gICAgfSk7CisgICAgdmFyIG9ic2VydmVyID0gbmV3IFdlYktp
dE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKSB7IH0pOwogCiAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShzaGFkb3dSb290LmZpcnN0Q2hpbGQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRy
dWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKICAgICBtdXRhdGUoc2hh
ZG93Um9vdC5maXJzdENoaWxkKTsKIAotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGRlYnVnKCdNdXRhdGlvbnMgaW4gc2hhZG93IERPTSBzaG91bGQgaGF2ZSBiZWVuIG9ic2Vy
dmVkOicpOwotICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICc0Jyk7Ci0gICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKLSAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1szXS50eXBlJywgJyJjaGlsZExpc3QiJyk7Ci0gICAgICAg
IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICB3aW5kb3cubXV0YXRpb25zID0gb2JzZXJ2ZXIu
dGFrZVJlY29yZHMoKTsKKyAgICBkZWJ1ZygnTXV0YXRpb25zIGluIHNoYWRvdyBET00gc2hvdWxk
IGhhdmUgYmVlbiBvYnNlcnZlZDonKTsKKyAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcs
ICc0Jyk7CisgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicp
OworICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udHlwZScsICciY2hpbGRMaXN0IicpOworICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udHlwZScsICciY2hhcmFjdGVyRGF0YSInKTsKKyAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzNdLnR5cGUnLCAnImNoaWxkTGlzdCInKTsKKyAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CiAKLSAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG51bGw7Ci0gICAg
ICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHthdHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExp
c3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKLSAgICAgICAg
bXV0YXRlKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBkZWJ1ZygnXG5PYnNlcnZpbmcgZnJvbSBvdXRzaWRlIHNoYWRv
dyBET00gc2hvdWxkIG5vdCBzZWUgbXV0YXRpb25zIGluIHRoZSBzaGFkb3c6Jyk7Ci0gICAgICAg
ICAgICBzaG91bGRCZU51bGwoJ211dGF0aW9ucycpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7Ci0gICAgICAgIH0sIDApOwotICAgIH0sIDApOworICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBv
YnNlcnZlci50YWtlUmVjb3JkcygpOworICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHth
dHRyaWJ1dGVzOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUsIHN1
YnRyZWU6IHRydWV9KTsKKyAgICBtdXRhdGUoc2hhZG93Um9vdC5maXJzdENoaWxkKTsgICAgCisg
ICAgZGVidWcoJ1xuT2JzZXJ2aW5nIGZyb20gb3V0c2lkZSBzaGFkb3cgRE9NIHNob3VsZCBub3Qg
c2VlIG11dGF0aW9ucyBpbiB0aGUgc2hhZG93OicpOworICAgIHNob3VsZEJlKCdtdXRhdGlvbnMu
bGVuZ3RoJywgJzAnKTsKIH0KIAotaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKK2lmICh3aW5kb3cu
aW50ZXJuYWxzKQogICAgIGRvVGVzdCgpOwotICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKLX0gZWxzZQorZWxzZQogICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCBvbmx5IHJ1bnMgaW4g
RFJUJyk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>