<?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>40374</bug_id>
          
          <creation_ts>2010-06-09 11:31:23 -0700</creation_ts>
          <short_desc>Client-based Geolocation does not pass high power option to controller and client</short_desc>
          <delta_ts>2010-07-27 07:12:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>40148</dependson>
          <blocked>40373</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235903</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-09 11:31:23 -0700</bug_when>
    <thetext>Client-based Geolocation does not pass high power option to controller and client. See Geolocation::startUpdating().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235917</commentid>
    <comment_count>1</comment_count>
      <attachid>58267</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-09 11:50:47 -0700</bug_when>
    <thetext>Created attachment 58267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235919</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-09 11:53:00 -0700</bug_when>
    <thetext>Note that this patch depends upon Bug 40148, which is still in review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236027</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 14:56:03 -0700</bug_when>
    <thetext>Attachment 58267 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3227084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236743</commentid>
    <comment_count>4</comment_count>
      <attachid>58457</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-11 02:20:34 -0700</bug_when>
    <thetext>Created attachment 58457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236783</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-11 05:02:20 -0700</bug_when>
    <thetext>Attachment 58457 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3224214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236788</commentid>
    <comment_count>6</comment_count>
      <attachid>58467</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-11 05:13:20 -0700</bug_when>
    <thetext>Created attachment 58467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236893</commentid>
    <comment_count>7</comment_count>
      <attachid>58467</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-11 10:30:33 -0700</bug_when>
    <thetext>Comment on attachment 58467
Patch

&gt; -    HashSet&lt;RefPtr&lt;Geolocation&gt; &gt; m_observers;
&gt; +    typedef HashMap&lt;RefPtr&lt;Geolocation&gt;, bool&gt; ObserversMap;

It feels a little strange that of all PositionOptions, only this one goes here. But I guess that&apos;s the way it is.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237757</commentid>
    <comment_count>8</comment_count>
      <attachid>58467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-14 03:01:55 -0700</bug_when>
    <thetext>Comment on attachment 58467
Patch

Rejecting patch 58467 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Last 500 characters of output:
endertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Skipped list contained &apos;compositing/iframes/composited-iframe.html&apos;, but no file of that name could be found
Testing 19099 test cases.
fast/dom/Geolocation/callback-exception.html -&gt; crashed

Exiting early after 1 failures. 6531 tests run.
273.73s total testing time

6530 test cases (99%) succeeded
1 test case (&lt;1%) crashed
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/3338102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243884</commentid>
    <comment_count>9</comment_count>
      <attachid>59935</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-28 14:01:06 -0700</bug_when>
    <thetext>Created attachment 59935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243974</commentid>
    <comment_count>10</comment_count>
      <attachid>59935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-28 16:25:56 -0700</bug_when>
    <thetext>Comment on attachment 59935
Patch

The mock provider should be changed to support this feature, so it can be tested.

I suggest using the terminology high accuracy consistently, not mixing in the term high power. We want to match the Geolocation specification, and need not include assumptions about the implementation.

&gt; +    if (m_observers.contains(observer))
&gt; +        m_observers.find(observer)-&gt;second |= highPower;
&gt; +    else
&gt; +        m_observers.add(observer, highPower);

This code does twice as many hash table lookups as it needs to. The more efficient way to do this is to unconditionally call add. The result from add tells if a new element was added or not, and if it&apos;s not a new element you can use the iterator to modify the existing hash map entry. The addResult.second is true if the entry is new, and addResult.first is the iterator to the existing or added hash map element.

I don&apos;t understand why or&apos;ing with the high power boolean is correct. Can the same observer be added, first with high accuracy and then later correcting its request to ask only for lower accuracy? In that case wouldn&apos;t we want the boolean to become false?

&gt; +    if (m_client) {
&gt; +        if (!wasUsingHighPower &amp;&amp; useHighPower())
&gt; +            m_client-&gt;setUseHighPower(true);
&gt; +        if (wasEmpty)
&gt; +            m_client-&gt;startUpdating();
&gt; +    }

The code notices transitions in the high power flag in a way that involves walking the hash map twice each time we add or remove an observer, which seems needlessly inefficient. It would be better to do it in a way that didn&apos;t require walking the hash table at all. One simple way to do that would be to maintain a count of the number of observers that are requesting high power as we modify the observer map. Another approach that would be simpler would be to use two HashSet objects, one for all observers, and another for only observers that are asking for high accuracy, instead of a single HashMap object. Then you can simply check if the high accuracy set is empty or not.

I would suggest names like: isHighAccuracyRequested and setHighAccuracyRequested rather than useHighPower and setUseHighPower.

I&apos;m going to say review- because I think at least one of my comments above should be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244196</commentid>
    <comment_count>11</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-29 04:18:48 -0700</bug_when>
    <thetext>&gt; I suggest using the terminology high accuracy consistently, not mixing in the
&gt; term high power. We want to match the Geolocation specification, and need not
&gt; include assumptions about the implementation.
I used the &apos;high power&apos; terminology because the Geolocation V2 spec will adopt this. See http://www.w3.org/2008/geolocation/track/issues/6. However, you&apos;re right that it&apos;s probably best to remain consistent with &apos;enableHighAccuracy&apos; for now.

&gt; I don&apos;t understand why or&apos;ing with the high power boolean is correct. Can the
&gt; same observer be added, first with high accuracy and then later correcting
&gt; its request to ask only for lower accuracy? In that case wouldn&apos;t we want the
&gt; boolean to become false?
An observer calls addObserver each time it starts a new Geolocation request (a call to getCurrentPosition() or watchPosition()). Each of these can use a different value for enablehighAccuracy. The observer only calls removeObserver() when all of its requests are complete. Therefore, the controller has no way to know when the request that enabled high accuracy completes. So the best we can do is keep enablehighAccuracy set for that observer until it calls removeObserver().

This is not ideal, but the same is true of the non-client-based implementation. I have Bug 41341 to track this, but the change is quite invasive and I&apos;d rather hold off on fixing it until the two implementations are merged. At that point, I&apos;ll add LayoutTests for enableHighAccuracy.

&gt; The code notices transitions in the high power flag in a way that involves
&gt; walking the hash map twice each time we add or remove an observer, which
&gt; seems needlessly inefficient. It would be better to do it in a way that
&gt; didn&apos;t require walking the hash table at all.
Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244197</commentid>
    <comment_count>12</comment_count>
      <attachid>60005</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-29 04:19:15 -0700</bug_when>
    <thetext>Created attachment 60005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256064</commentid>
    <comment_count>13</comment_count>
      <attachid>60005</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-26 09:15:20 -0700</bug_when>
    <thetext>Comment on attachment 60005
Patch

WebCore/ChangeLog:3
 +          Reviewed by Alexey Proskuryakov.
change

WebKit/mac/ChangeLog:3
 +          Reviewed by Alexey Proskuryakov.
ditto

WebKit/win/ChangeLog:3
 +          Reviewed by Alexey Proskuryakov.
and again

WebCore/page/GeolocationController.cpp:80
 +              m_client-&gt;setEnableHighAccuracy(false);
Why not just always set this?  Let it decide if it&apos;s a no-op or not.  I hate having state stored in multiple places when it&apos;s remotely possible to avoid it.



WebCore/page/GeolocationController.cpp:61
 +              m_client-&gt;setEnableHighAccuracy(true);
ditto

WebCore/page/GeolocationController.h:62
 +      ObserversSet m_observers;
I wonder if it&apos;d be more clear to always have observers in just one set or the other.  I.e. s/m_observers/m_lowAccuracyObserver/?  Maybe not...but when I first looked at this code I was confused because I made this assumption.


I actually think using the high powered terminology in WebKit is the right answer since we can&apos;t really change that in the future and we know the spec is headed in that way.  In WebCore, maybe add fixmes and wait to do it until the spec changes?

Sorry for so much thrashing.  I&apos;ll try to do a follow up review quickly once you make these changes so you can get it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256078</commentid>
    <comment_count>14</comment_count>
      <attachid>62583</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 09:57:03 -0700</bug_when>
    <thetext>Created attachment 62583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256080</commentid>
    <comment_count>15</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-26 10:00:55 -0700</bug_when>
    <thetext>&gt; WebCore/ChangeLog:3
&gt;  +          Reviewed by Alexey Proskuryakov.
&gt; change
Done

&gt; WebKit/mac/ChangeLog:3
&gt;  +          Reviewed by Alexey Proskuryakov.
&gt; ditto
Done

&gt; WebKit/win/ChangeLog:3
&gt;  +          Reviewed by Alexey Proskuryakov.
&gt; and again
Done

&gt; WebCore/page/GeolocationController.cpp:80
&gt;  +              m_client-&gt;setEnableHighAccuracy(false);
&gt; Why not just always set this?
Done

&gt; WebCore/page/GeolocationController.cpp:61
&gt;  +              m_client-&gt;setEnableHighAccuracy(true);
&gt; ditto
Done

&gt; WebCore/page/GeolocationController.h:62
&gt;  +      ObserversSet m_observers;
&gt; I wonder if it&apos;d be more clear to always have observers in just one set or
&gt; the other.
I think it&apos;s best as it is. I&apos;ve added a comment to make it clear.

&gt; I actually think using the high powered terminology in WebKit is the right
&gt; answer since we can&apos;t really change that in the future and we know the spec
&gt; is headed in that way.
I&apos;ve added a comment about this. It&apos;s not a FIXME, as it&apos;s not clear when/if v2 will happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256492</commentid>
    <comment_count>16</comment_count>
      <attachid>62583</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-27 03:26:36 -0700</bug_when>
    <thetext>Comment on attachment 62583
Patch

WebCore/page/GeolocationControllerClient.h:39
 +      // We should update the terminology used in WebCore to describe this property
Add FIXME

WebCore/page/GeolocationController.cpp:77
 +              m_client-&gt;setEnableHighAccuracy(false);
You said &quot;done&quot; but this (and above) didn&apos;t change.

WebKit/mac/WebCoreSupport/WebGeolocationControllerClient.h:42
 +      void setEnableHighAccuracy(bool) { }
This should be the new terminology since it can&apos;t change easily once someone implements it.

WebKit/win/WebCoreSupport/WebGeolocationControllerClient.h:45
 +      virtual void setEnableHighAccuracy(bool) { }
ditto

WebCore/page/GeolocationControllerClient.h:41
 +      // http://www.w3.org/2008/geolocation/track/issues/6
Maybe suggest that webkit ports implementing it call it &quot;highPower&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256499</commentid>
    <comment_count>17</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 03:36:36 -0700</bug_when>
    <thetext>&gt; WebCore/page/GeolocationControllerClient.h:39
&gt;  +      // We should update the terminology used in WebCore to describe this property
&gt; Add FIXME
OK, will do

&gt; WebCore/page/GeolocationController.cpp:77
&gt;  +              m_client-&gt;setEnableHighAccuracy(false);
&gt; You said &quot;done&quot; but this (and above) didn&apos;t change.
I removed the code which checked whether we were previously using high accuracy as an optimisation. I now call setEnableHighAccuracy(false) every time the list of high accuracy observers becomes empty. There&apos;s no way to avoid having this logic in the controller. The client doesn&apos;t know which observer requested high accuracy. This is tracked only in the controller, which then commands the client appropriately. The only alternative would be to move all this logic to the client, but that would lead to code replication across platforms.

&gt; WebKit/mac/WebCoreSupport/WebGeolocationControllerClient.h:42
&gt;  +      void setEnableHighAccuracy(bool) { }
&gt; This should be the new terminology since it can&apos;t change easily once someone implements it.
I don&apos;t think this is a good idea right now, as the future of the V2 spec isn&apos;t certain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256504</commentid>
    <comment_count>18</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-27 03:52:17 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; WebCore/page/GeolocationControllerClient.h:39
&gt; &gt;  +      // We should update the terminology used in WebCore to describe this property
&gt; &gt; Add FIXME
&gt; OK, will do
&gt; 
&gt; &gt; WebCore/page/GeolocationController.cpp:77
&gt; &gt;  +              m_client-&gt;setEnableHighAccuracy(false);
&gt; &gt; You said &quot;done&quot; but this (and above) didn&apos;t change.
&gt; I removed the code which checked whether we were previously using high accuracy as an optimisation. I now call setEnableHighAccuracy(false) every time the list of high accuracy observers becomes empty. There&apos;s no way to avoid having this logic in the controller. The client doesn&apos;t know which observer requested high accuracy. This is tracked only in the controller, which then commands the client appropriately. The only alternative would be to move all this logic to the client, but that would lead to code replication across platforms.
&gt; 
&gt; &gt; WebKit/mac/WebCoreSupport/WebGeolocationControllerClient.h:42
&gt; &gt;  +      void setEnableHighAccuracy(bool) { }
&gt; &gt; This should be the new terminology since it can&apos;t change easily once someone implements it.
&gt; I don&apos;t think this is a good idea right now, as the future of the V2 spec isn&apos;t certain.

Ok and ok.  Will take another look soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256513</commentid>
    <comment_count>19</comment_count>
      <attachid>62681</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 04:43:37 -0700</bug_when>
    <thetext>Created attachment 62681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256541</commentid>
    <comment_count>20</comment_count>
      <attachid>62681</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-27 06:25:33 -0700</bug_when>
    <thetext>Comment on attachment 62681
Patch

WebCore/page/GeolocationController.cpp:61
 +              m_client-&gt;startUpdating();
Is there any reason this can&apos;t always be called?

WebCore/page/GeolocationController.cpp:74
 +          if (m_observers.isEmpty())
Is there any reason this can&apos;t always be called?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256556</commentid>
    <comment_count>21</comment_count>
      <attachid>62681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-27 07:12:37 -0700</bug_when>
    <thetext>Comment on attachment 62681
Patch

Clearing flags on attachment: 62681

Committed r64126: &lt;http://trac.webkit.org/changeset/64126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256557</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-27 07:12:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58267</attachid>
            <date>2010-06-09 11:50:47 -0700</date>
            <delta_ts>2010-06-11 02:20:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100609195045.patch</filename>
            <type>text/plain</type>
            <size>8252</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDkwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGhpZ2ggcG93ZXIgb3B0aW9u
IHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBUaGlzIGNoYW5nZSBwYXNzZXMgdGhl
IGVuYWJsZUhpZ2hBY2N1cmFjeSByZXF1ZXN0IG9wdGlvbiB0byB0aGUgR2VvbG9jYXRpb25Db250
cm9sbGVyLgorICAgICAgICBUaGUgR2VvbG9jYXRpb25Db250cm9sbGVyIHRyYWNrcyB3aGV0aGVy
IGhpZ2ggcG93ZXIgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgcG9zc2libGUgYXMgdGhlIG1vY2sgcHJvdmlkZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZmVhdHVyZS4KKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
dXNlSGlnaFBvd2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oOgorCiAyMDEw
LTA2LTA5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9u
IDYwODk5KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElzQWxsb3dlZChib29sIGFs
bG8KICAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgICAgICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgcGFnZS0+
Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICAgICAg
cGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMsIG1fc3RhcnRS
ZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyLT5tX29wdGlvbnMtPmVuYWJsZUhpZ2hBY2N1cmFjeSgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVy
cm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICAgICAgbV9vbmVTaG90cy5hZGQobV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZp
ZXIpOwpAQCAtNjEzLDggKzYxMyw2IEBAIHZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2Vy
dmljZUVycm8KIGJvb2wgR2VvbG9jYXRpb246OnN0YXJ0VXBkYXRpbmcoR2VvTm90aWZpZXIqIG5v
dGlmaWVyKQogewogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCi0gICAgLy8g
RklYTUU6IFBhc3Mgb3B0aW9ucyB0byBjbGllbnQuCi0KICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7
CiAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gbm90aWZpZXI7CiAg
ICAgICAgIHJlcXVlc3RQZXJtaXNzaW9uKCk7CkBAIC02MjgsNyArNjI2LDcgQEAgYm9vbCBHZW9s
b2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9i
c2VydmVyKHRoaXMpOworICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNl
cnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBtX3NlcnZpY2UtPnN0YXJ0VXBkYXRp
bmcobm90aWZpZXItPm1fb3B0aW9ucy5nZXQoKSk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9j
YXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNjA4OTkpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9j
YXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTQgKzQ1LDIyIEBAIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6fkdlb2xvY2F0aW9uQ29udHIKICAgICAgICAgbV9jbGllbnQt
Pmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVy
OjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyLCBib29sIGhpZ2hQb3dl
cikKIHsKLSAgICBBU1NFUlQoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSk7Ci0KICAg
ICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOwotICAgIG1fb2JzZXJ2ZXJz
LmFkZChvYnNlcnZlcik7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworICAgIGJvb2wgd2FzVXNpbmdIaWdoUG93ZXIgPSB1
c2VIaWdoUG93ZXIoKTsKKworICAgIGlmIChtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikp
CisgICAgICAgIG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpLT5zZWNvbmQgfD0gaGlnaFBvd2Vy
OworICAgIGVsc2UKKyAgICAgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyLCBoaWdoUG93ZXIp
OworCisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmICghd2FzVXNpbmdIaWdoUG93ZXIg
JiYgdXNlSGlnaFBvd2VyKCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c2V0VXNlSGlnaFBvd2Vy
KHRydWUpOworICAgICAgICBpZiAod2FzRW1wdHkpCisgICAgICAgICAgICBtX2NsaWVudC0+c3Rh
cnRVcGRhdGluZygpOworICAgIH0KIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZlcikKQEAgLTYwLDE2ICs2OCwzMSBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2CiAgICAgaWYgKCFtX29ic2Vy
dmVycy5jb250YWlucyhvYnNlcnZlcikpCiAgICAgICAgIHJldHVybjsKIAorICAgIGJvb2wgd2Fz
VXNpbmdIaWdoUG93ZXIgPSB1c2VIaWdoUG93ZXIoKTsKICAgICBtX29ic2VydmVycy5yZW1vdmUo
b2JzZXJ2ZXIpOwotICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkgJiYgbV9jbGllbnQpCi0g
ICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKKyAgICBpZiAobV9jbGllbnQpIHsKKyAg
ICAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5z
dG9wVXBkYXRpbmcoKTsKKyAgICAgICAgZWxzZSBpZiAod2FzVXNpbmdIaWdoUG93ZXIgJiYgIXVz
ZUhpZ2hQb3dlcigpKQorICAgICAgICAgICAgbV9jbGllbnQtPnNldFVzZUhpZ2hQb3dlcihmYWxz
ZSk7CisgICAgfQorfQorCitib29sIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6dXNlSGlnaFBvd2Vy
KCkgY29uc3QKK3sKKyAgICBPYnNlcnZlcnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fb2Jz
ZXJ2ZXJzLmVuZCgpOworICAgIGZvciAoT2JzZXJ2ZXJzTWFwOjpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgeworICAgICAgICBp
ZiAoaXRlci0+c2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hh
bmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlv
biA9IHBvc2l0aW9uOwogICAgIFZlY3RvcjxSZWZQdHI8R2VvbG9jYXRpb24+ID4gb2JzZXJ2ZXJz
VmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsK
KyAgICBjb3B5S2V5c1RvVmVjdG9yKG1fb2JzZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JzZXJ2ZXJzVmVjdG9yLnNpemUoKTsgKytpKQogICAg
ICAgICBvYnNlcnZlcnNWZWN0b3JbaV0tPnBvc2l0aW9uQ2hhbmdlZCgpOwogfQpAQCAtNzcsNyAr
MTAwLDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnBvc2l0aW9uQ2hhbgogdm9pZCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25FcnJvciogZXJy
b3IpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBvYnNlcnZlcnNWZWN0b3I7
Ci0gICAgY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOworICAgIGNv
cHlLZXlzVG9WZWN0b3IobV9vYnNlcnZlcnMsIG9ic2VydmVyc1ZlY3Rvcik7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYnNlcnZlcnNWZWN0b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgIG9i
c2VydmVyc1ZlY3RvcltpXS0+c2V0RXJyb3IoZXJyb3IpOwogfQpJbmRleDogV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNjA4OTkpCisrKyBXZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogCiAjaW5jbHVkZSAiR2VvbG9jYXRp
b24uaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIoUGFn
ZSosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCopOwogICAgIH5HZW9sb2NhdGlvbkNvbnRy
b2xsZXIoKTsKIAotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qKTsKKyAgICB2b2lk
IGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiwgYm9vbCBoaWdoUG93ZXIpOwogICAgIHZvaWQgcmVt
b3ZlT2JzZXJ2ZXIoR2VvbG9jYXRpb24qKTsKIAogICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uUG9zaXRpb24qKTsKQEAgLTU0LDExICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgR2Vv
bG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CiAKIHByaXZhdGU6CisgICAgYm9vbCB1
c2VIaWdoUG93ZXIoKSBjb25zdDsKKwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBHZW9sb2NhdGlv
bkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogCiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9z
aXRpb24+IG1fbGFzdFBvc2l0aW9uOwotICAgIEhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9uPiA+
IG1fb2JzZXJ2ZXJzOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8R2VvbG9jYXRpb24+LCBi
b29sPiBPYnNlcnZlcnNNYXA7CisgICAgT2JzZXJ2ZXJzTWFwIG1fb2JzZXJ2ZXJzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnQuaAkocmV2aXNpb24gNjA4OTkpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlSGln
aFBvd2VyKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQ
b3NpdGlvbigpID0gMDsKIAogcHJvdGVjdGVkOgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYwOTAzKQorKysg
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MC0wNi0wOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50LWJhc2VkIEdlb2xv
Y2F0aW9uIGRvZXMgbm90IHBhc3MgaGlnaCBwb3dlciBvcHRpb24gdG8gY29udHJvbGxlciBhbmQg
Y2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDM3NAorCisgICAgICAgIFN0dWIgb3V0IHNldFVzZUhpZ2hQb3dlciBtZXRob2QgZm9yIHRoZSBN
YWMgcG9ydC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Ojpz
ZXRVc2VIaWdoUG93ZXIpOgorCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4
ODkuCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDYwODk5KQorKysgV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW9sb2NhdGlv
bkRlc3Ryb3llZCgpOwogICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOwogICAgIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7CisgICAgdm9pZCBzZXRVc2VIaWdoUG93ZXIoYm9vbCkgeyB9CiAKICAgICBXZWJD
b3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58457</attachid>
            <date>2010-06-11 02:20:34 -0700</date>
            <delta_ts>2010-06-11 05:13:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100611102032.patch</filename>
            <type>text/plain</type>
            <size>8383</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMTEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGhpZ2ggcG93ZXIgb3B0aW9u
IHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBUaGlzIGNoYW5nZSBwYXNzZXMgdGhl
IGVuYWJsZUhpZ2hBY2N1cmFjeSByZXF1ZXN0IG9wdGlvbiB0byB0aGUgR2VvbG9jYXRpb25Db250
cm9sbGVyLgorICAgICAgICBUaGUgR2VvbG9jYXRpb25Db250cm9sbGVyIHRyYWNrcyB3aGV0aGVy
IGhpZ2ggcG93ZXIgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgcG9zc2libGUgYXMgdGhlIG1vY2sgcHJvdmlkZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZmVhdHVyZS4KKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
dXNlSGlnaFBvd2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oOgorCiAyMDEw
LTA2LTExICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCShy
ZXZpc2lvbiA2MDk5OCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQo
Ym9vbCBhbGxvCiAgICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAg
ICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBt
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdoQWNj
dXJhY3koKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBl
cm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9z
aXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgICAgIG1fb25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyKTsKQEAgLTYxMyw4ICs2MTMsNiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2Nh
dGlvblNlcnZpY2VFcnJvCiBib29sIEdlb2xvY2F0aW9uOjpzdGFydFVwZGF0aW5nKEdlb05vdGlm
aWVyKiBub3RpZmllcikKIHsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQot
ICAgIC8vIEZJWE1FOiBQYXNzIG9wdGlvbnMgdG8gY2xpZW50LgotCiAgICAgaWYgKCFpc0FsbG93
ZWQoKSkgewogICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IG5vdGlm
aWVyOwogICAgICAgICByZXF1ZXN0UGVybWlzc2lvbigpOwpAQCAtNjI4LDcgKzYyNiw3IEBAIGJv
b2wgR2VvbG9jYXRpb246OnN0YXJ0VXBkYXRpbmcoR2VvTm90aWYKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigp
LT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+
YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5
KCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gbV9zZXJ2aWNlLT5zdGFy
dFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpOwpJbmRleDogV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwy
NCBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAgICAgICAgIG1f
Y2xpZW50LT5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyKQordm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZlciwgYm9vbCBo
aWdoUG93ZXIpCiB7CiAgICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdp
dGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCiAgICAgLy8gaXMg
Y2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgaWYgKG1fb2JzZXJ2ZXJzLmNvbnRhaW5z
KG9ic2VydmVyKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYm9vbCB3YXNFbXB0eSA9IG1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKTsKLSAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwotICAgIGlm
ICh3YXNFbXB0eSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmco
KTsKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2VyID0gdXNlSGlnaFBvd2VyKCk7CisKKyAgICBp
ZiAobV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQorICAgICAgICBtX29ic2VydmVycy5m
aW5kKG9ic2VydmVyKS0+c2Vjb25kIHw9IGhpZ2hQb3dlcjsKKyAgICBlbHNlCisgICAgICAgIG1f
b2JzZXJ2ZXJzLmFkZChvYnNlcnZlciwgaGlnaFBvd2VyKTsKKworICAgIGlmIChtX2NsaWVudCkg
eworICAgICAgICBpZiAoIXdhc1VzaW5nSGlnaFBvd2VyICYmIHVzZUhpZ2hQb3dlcigpKQorICAg
ICAgICAgICAgbV9jbGllbnQtPnNldFVzZUhpZ2hQb3dlcih0cnVlKTsKKyAgICAgICAgaWYgKHdh
c0VtcHR5KQorICAgICAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICB9CiB9
CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlv
biogb2JzZXJ2ZXIpCkBAIC02MywxNiArNzAsMzEgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnJlbW92ZU9ic2VydgogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIp
KQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2VyID0gdXNlSGln
aFBvd2VyKCk7CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKLSAgICBpZiAobV9v
YnNlcnZlcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+c3RvcFVw
ZGF0aW5nKCk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChtX29ic2VydmVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7CisgICAgICAg
IGVsc2UgaWYgKHdhc1VzaW5nSGlnaFBvd2VyICYmICF1c2VIaWdoUG93ZXIoKSkKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5zZXRVc2VIaWdoUG93ZXIoZmFsc2UpOworICAgIH0KK30KKworYm9vbCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnVzZUhpZ2hQb3dlcigpIGNvbnN0Cit7CisgICAgT2JzZXJ2
ZXJzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29ic2VydmVycy5lbmQoKTsKKyAgICBmb3Ig
KE9ic2VydmVyc01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlv
biogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBWZWN0
b3I8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IG9ic2VydmVyc1ZlY3RvcjsKLSAgICBjb3B5VG9WZWN0
b3IobV9vYnNlcnZlcnMsIG9ic2VydmVyc1ZlY3Rvcik7CisgICAgY29weUtleXNUb1ZlY3Rvciht
X29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9ic2VydmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgb2JzZXJ2ZXJzVmVjdG9yW2ld
LT5wb3NpdGlvbkNoYW5nZWQoKTsKIH0KQEAgLTgwLDcgKzEwMiw3IEBAIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW4KIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpl
cnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3IqIGVycm9yKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8R2VvbG9jYXRpb24+ID4gb2JzZXJ2ZXJzVmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29i
c2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKKyAgICBjb3B5S2V5c1RvVmVjdG9yKG1fb2JzZXJ2
ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JzZXJ2
ZXJzVmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBvYnNlcnZlcnNWZWN0b3JbaV0tPnNldEVy
cm9yKGVycm9yKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHJl
dmlzaW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKIAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKFBhZ2UqLCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnQqKTsKICAgICB+R2VvbG9jYXRpb25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGFk
ZE9ic2VydmVyKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlv
biosIGJvb2wgaGlnaFBvd2VyKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9u
Kik7CiAKICAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKik7CkBA
IC01NCwxMSArNTQsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQ
b3NpdGlvbigpOwogCiBwcml2YXRlOgorICAgIGJvb2wgdXNlSGlnaFBvd2VyKCkgY29uc3Q7CisK
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBtX2Ns
aWVudDsKIAogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsK
LSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBtX29ic2VydmVyczsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEdlb2xvY2F0aW9uPiwgYm9vbD4gT2JzZXJ2ZXJzTWFwOworICAg
IE9ic2VydmVyc01hcCBtX29ic2VydmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlz
aW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmco
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29sKSA9IDA7CiAgICAg
dmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDk5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYtMDkgIFN0ZXZlIEJsb2NrICA8
c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGhp
Z2ggcG93ZXIgb3B0aW9uIHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBTdHViIG91
dCBzZXRVc2VIaWdoUG93ZXIgbWV0aG9kIGZvciB0aGUgTWFjIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudDo6c2V0VXNlSGlnaFBvd2VyKToKKwogMjAx
MC0wNi0xMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkocmV2aXNpb24g
NjA5OTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29s
KSB7IH0KIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58467</attachid>
            <date>2010-06-11 05:13:20 -0700</date>
            <delta_ts>2010-06-28 14:00:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100611131318.patch</filename>
            <type>text/plain</type>
            <size>9623</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDk5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMTEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGhpZ2ggcG93ZXIgb3B0aW9u
IHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBUaGlzIGNoYW5nZSBwYXNzZXMgdGhl
IGVuYWJsZUhpZ2hBY2N1cmFjeSByZXF1ZXN0IG9wdGlvbiB0byB0aGUgR2VvbG9jYXRpb25Db250
cm9sbGVyLgorICAgICAgICBUaGUgR2VvbG9jYXRpb25Db250cm9sbGVyIHRyYWNrcyB3aGV0aGVy
IGhpZ2ggcG93ZXIgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgcG9zc2libGUgYXMgdGhlIG1vY2sgcHJvdmlkZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZmVhdHVyZS4KKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
dXNlSGlnaFBvd2VyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oOgorCiAyMDEw
LTA2LTExICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCShy
ZXZpc2lvbiA2MDk5OCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQo
Ym9vbCBhbGxvCiAgICAgICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAg
ICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBt
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdoQWNj
dXJhY3koKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBl
cm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9z
aXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgICAgIG1fb25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lv
bk5vdGlmaWVyKTsKQEAgLTYxMyw4ICs2MTMsNiBAQCB2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2Nh
dGlvblNlcnZpY2VFcnJvCiBib29sIEdlb2xvY2F0aW9uOjpzdGFydFVwZGF0aW5nKEdlb05vdGlm
aWVyKiBub3RpZmllcikKIHsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQot
ICAgIC8vIEZJWE1FOiBQYXNzIG9wdGlvbnMgdG8gY2xpZW50LgotCiAgICAgaWYgKCFpc0FsbG93
ZWQoKSkgewogICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IG5vdGlm
aWVyOwogICAgICAgICByZXF1ZXN0UGVybWlzc2lvbigpOwpAQCAtNjI4LDcgKzYyNiw3IEBAIGJv
b2wgR2VvbG9jYXRpb246OnN0YXJ0VXBkYXRpbmcoR2VvTm90aWYKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigp
LT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+
YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5
KCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gbV9zZXJ2aWNlLT5zdGFy
dFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpOwpJbmRleDogV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE3ICs0NSwy
NCBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAgICAgICAgIG1f
Y2xpZW50LT5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCi12b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyKQordm9pZCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZlciwgYm9vbCBo
aWdoUG93ZXIpCiB7CiAgICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdp
dGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCiAgICAgLy8gaXMg
Y2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgaWYgKG1fb2JzZXJ2ZXJzLmNvbnRhaW5z
KG9ic2VydmVyKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYm9vbCB3YXNFbXB0eSA9IG1fb2Jz
ZXJ2ZXJzLmlzRW1wdHkoKTsKLSAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwotICAgIGlm
ICh3YXNFbXB0eSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmco
KTsKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2VyID0gdXNlSGlnaFBvd2VyKCk7CisKKyAgICBp
ZiAobV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQorICAgICAgICBtX29ic2VydmVycy5m
aW5kKG9ic2VydmVyKS0+c2Vjb25kIHw9IGhpZ2hQb3dlcjsKKyAgICBlbHNlCisgICAgICAgIG1f
b2JzZXJ2ZXJzLmFkZChvYnNlcnZlciwgaGlnaFBvd2VyKTsKKworICAgIGlmIChtX2NsaWVudCkg
eworICAgICAgICBpZiAoIXdhc1VzaW5nSGlnaFBvd2VyICYmIHVzZUhpZ2hQb3dlcigpKQorICAg
ICAgICAgICAgbV9jbGllbnQtPnNldFVzZUhpZ2hQb3dlcih0cnVlKTsKKyAgICAgICAgaWYgKHdh
c0VtcHR5KQorICAgICAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICB9CiB9
CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlv
biogb2JzZXJ2ZXIpCkBAIC02MywxNiArNzAsMzEgQEAgdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnJlbW92ZU9ic2VydgogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIp
KQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2VyID0gdXNlSGln
aFBvd2VyKCk7CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKLSAgICBpZiAobV9v
YnNlcnZlcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+c3RvcFVw
ZGF0aW5nKCk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChtX29ic2VydmVycy5p
c0VtcHR5KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7CisgICAgICAg
IGVsc2UgaWYgKHdhc1VzaW5nSGlnaFBvd2VyICYmICF1c2VIaWdoUG93ZXIoKSkKKyAgICAgICAg
ICAgIG1fY2xpZW50LT5zZXRVc2VIaWdoUG93ZXIoZmFsc2UpOworICAgIH0KK30KKworYm9vbCBH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnVzZUhpZ2hQb3dlcigpIGNvbnN0Cit7CisgICAgT2JzZXJ2
ZXJzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29ic2VydmVycy5lbmQoKTsKKyAgICBmb3Ig
KE9ic2VydmVyc01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlv
biogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBWZWN0
b3I8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IG9ic2VydmVyc1ZlY3RvcjsKLSAgICBjb3B5VG9WZWN0
b3IobV9vYnNlcnZlcnMsIG9ic2VydmVyc1ZlY3Rvcik7CisgICAgY29weUtleXNUb1ZlY3Rvciht
X29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9ic2VydmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgb2JzZXJ2ZXJzVmVjdG9yW2ld
LT5wb3NpdGlvbkNoYW5nZWQoKTsKIH0KQEAgLTgwLDcgKzEwMiw3IEBAIHZvaWQgR2VvbG9jYXRp
b25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW4KIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpl
cnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3IqIGVycm9yKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8R2VvbG9jYXRpb24+ID4gb2JzZXJ2ZXJzVmVjdG9yOwotICAgIGNvcHlUb1ZlY3RvcihtX29i
c2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKKyAgICBjb3B5S2V5c1RvVmVjdG9yKG1fb2JzZXJ2
ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JzZXJ2
ZXJzVmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBvYnNlcnZlcnNWZWN0b3JbaV0tPnNldEVy
cm9yKGVycm9yKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHJl
dmlzaW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9H
RU9MT0NBVElPTikKIAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKFBhZ2UqLCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnQqKTsKICAgICB+R2VvbG9jYXRpb25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGFk
ZE9ic2VydmVyKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlv
biosIGJvb2wgaGlnaFBvd2VyKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9u
Kik7CiAKICAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0aW9uKik7CkBA
IC01NCwxMSArNTQsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQ
b3NpdGlvbigpOwogCiBwcml2YXRlOgorICAgIGJvb2wgdXNlSGlnaFBvd2VyKCkgY29uc3Q7CisK
ICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KiBtX2Ns
aWVudDsKIAogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsK
LSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBtX29ic2VydmVyczsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEdlb2xvY2F0aW9uPiwgYm9vbD4gT2JzZXJ2ZXJzTWFwOworICAg
IE9ic2VydmVyc01hcCBtX29ic2VydmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlz
aW9uIDYwOTk4KQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmco
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29sKSA9IDA7CiAgICAg
dmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDk5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYtMDkgIFN0ZXZlIEJsb2NrICA8
c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGhp
Z2ggcG93ZXIgb3B0aW9uIHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBTdHViIG91
dCBzZXRVc2VIaWdoUG93ZXIgbWV0aG9kIGZvciB0aGUgTWFjIHBvcnQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudDo6c2V0VXNlSGlnaFBvd2VyKToKKwogMjAx
MC0wNi0xMCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkocmV2aXNpb24g
NjA5OTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJv
bGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7
CiAgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29s
KSB7IH0KIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigp
OwogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gNjA5OTgpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2LTA5ICBTdGV2ZSBCbG9jayAgPHN0
ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGllbnQtYmFzZWQgR2VvbG9jYXRpb24gZG9lcyBub3QgcGFzcyBoaWdo
IHBvd2VyIG9wdGlvbiB0byBjb250cm9sbGVyIGFuZCBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzc0CisKKyAgICAgICAgU3R1YiBvdXQg
c2V0VXNlSGlnaFBvd2VyIG1ldGhvZCBmb3IgdGhlIFdpbiBwb3J0LgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQ6OnNldFVzZUhpZ2hQb3dlcik6CisKIDIwMTAt
MDYtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ29udHJvbGxlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDYwOTk4
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
VXBkYXRpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVh
bCB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29sKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59935</attachid>
            <date>2010-06-28 14:01:06 -0700</date>
            <delta_ts>2010-06-29 04:19:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100628220103.patch</filename>
            <type>text/plain</type>
            <size>10049</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMjggIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAg
ICAgICAgQ2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGRvZXMgbm90IHBhc3MgaGlnaCBwb3dlciBv
cHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisgICAgICAgIFRoaXMgY2hhbmdlIHBhc3Nl
cyB0aGUgZW5hYmxlSGlnaEFjY3VyYWN5IHJlcXVlc3Qgb3B0aW9uIHRvIHRoZSBHZW9sb2NhdGlv
bkNvbnRyb2xsZXIuCisgICAgICAgIFRoZSBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgdHJhY2tzIHdo
ZXRoZXIgaGlnaCBwb3dlciBzaG91bGQgYmUgdXNlZCBieSB0aGUgY2xpZW50LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBwb3NzaWJsZSBhcyB0aGUgbW9jayBwcm92aWRlciBkb2Vzbid0IHN1cHBv
cnQgdGhpcyBmZWF0dXJlLgorCisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjp1c2VIaWdoUG93ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjpwb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250
cm9sbGVyOjplcnJvck9jY3VycmVkKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5oOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lmg6CisK
IDIwMTAtMDYtMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAko
cmV2aXNpb24gNjIwMDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MDUsMTMgKzQwNSwxNSBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93
ZWQoYm9vbCBhbGxvCiAgICAgICAgIGlmIChpc0FsbG93ZWQoKSkgewogICAgICAgICAgICAgLy8g
UGVybWlzc2lvbiByZXF1ZXN0IHdhcyBtYWRlIGR1cmluZyB0aGUgc3RhcnRVcGRhdGluZyBwcm9j
ZXNzCiAgICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7CisgICAgICAgICAgICAvLyBUaGUgbm90aWZpZXIgaXMgYWx3YXlzIHJl
ZidlZCBieSBtX29uZVNob3RzIG9yIG1fd2F0Y2hlcnMuCisgICAgICAgICAgICBHZW9Ob3RpZmll
ciogbm90aWZpZXIgPSBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci5nZXQoKTsKICAg
ICAgICAgICAgIG1fc3RhcnRSZXF1ZXN0UGVybWlzc2lvbk5vdGlmaWVyID0gMDsKICAgICAgICAg
ICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBQ
YWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgICAgICAgICAgaWYgKCFwYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJv
bGxlcigpLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9u
Q29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFi
bGVIaWdoQWNjdXJhY3koKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3N0YXJ0
UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllci0+c2V0RmF0YWxFcnJvcihQb3NpdGlvbkVycm9yOjpj
cmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRF
cnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgIG1fb25lU2hvdHMuYWRkKG1fc3RhcnRSZXF1ZXN0
UGVybWlzc2lvbk5vdGlmaWVyKTsKQEAgLTYxMyw4ICs2MTUsNiBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvCiBib29sIEdlb2xvY2F0aW9uOjpzdGFydFVwZGF0aW5n
KEdlb05vdGlmaWVyKiBub3RpZmllcikKIHsKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xP
Q0FUSU9OKQotICAgIC8vIEZJWE1FOiBQYXNzIG9wdGlvbnMgdG8gY2xpZW50LgotCiAgICAgaWYg
KCFpc0FsbG93ZWQoKSkgewogICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmll
ciA9IG5vdGlmaWVyOwogICAgICAgICByZXF1ZXN0UGVybWlzc2lvbigpOwpAQCAtNjI4LDcgKzYy
OCw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnN0YXJ0VXBkYXRpbmcoR2VvTm90aWYKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29u
dHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICBwYWdlLT5nZW9sb2NhdGlvbkNvbnRy
b2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1fb3B0aW9ucy0+ZW5hYmxlSGln
aEFjY3VyYWN5KCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gbV9zZXJ2
aWNlLT5zdGFydFVwZGF0aW5nKG5vdGlmaWVyLT5tX29wdGlvbnMuZ2V0KCkpOwpJbmRleDogV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYyMDAwKQorKysgV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDE3ICs0NSwyNCBAQCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6On5HZW9sb2NhdGlvbkNvbnRyCiAg
ICAgICAgIG1fY2xpZW50LT5nZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogfQogCi12b2lkIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyKQordm9p
ZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiBvYnNlcnZl
ciwgYm9vbCBoaWdoUG93ZXIpCiB7CiAgICAgLy8gVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxl
IHRpbWVzIHdpdGggdGhlIHNhbWUgb2JzZXJ2ZXIsIHRob3VnaCByZW1vdmVPYnNlcnZlcigpCiAg
ICAgLy8gaXMgY2FsbGVkIG9ubHkgb25jZSB3aXRoIGVhY2guCi0gICAgaWYgKG1fb2JzZXJ2ZXJz
LmNvbnRhaW5zKG9ic2VydmVyKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYm9vbCB3YXNFbXB0
eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKLSAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIp
OwotICAgIGlmICh3YXNFbXB0eSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0YXJ0
VXBkYXRpbmcoKTsKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2VyID0gdXNlSGlnaFBvd2VyKCk7
CisKKyAgICBpZiAobV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQorICAgICAgICBtX29i
c2VydmVycy5maW5kKG9ic2VydmVyKS0+c2Vjb25kIHw9IGhpZ2hQb3dlcjsKKyAgICBlbHNlCisg
ICAgICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlciwgaGlnaFBvd2VyKTsKKworICAgIGlmICht
X2NsaWVudCkgeworICAgICAgICBpZiAoIXdhc1VzaW5nSGlnaFBvd2VyICYmIHVzZUhpZ2hQb3dl
cigpKQorICAgICAgICAgICAgbV9jbGllbnQtPnNldFVzZUhpZ2hQb3dlcih0cnVlKTsKKyAgICAg
ICAgaWYgKHdhc0VtcHR5KQorICAgICAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsK
KyAgICB9CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNlcnZlcihH
ZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCkBAIC02MywxNiArNzAsMzEgQEAgdm9pZCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydgogICAgIGlmICghbV9vYnNlcnZlcnMuY29udGFpbnMo
b2JzZXJ2ZXIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBib29sIHdhc1VzaW5nSGlnaFBvd2Vy
ID0gdXNlSGlnaFBvd2VyKCk7CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKLSAg
ICBpZiAobV9vYnNlcnZlcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+c3RvcFVwZGF0aW5nKCk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChtX29i
c2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7
CisgICAgICAgIGVsc2UgaWYgKHdhc1VzaW5nSGlnaFBvd2VyICYmICF1c2VIaWdoUG93ZXIoKSkK
KyAgICAgICAgICAgIG1fY2xpZW50LT5zZXRVc2VIaWdoUG93ZXIoZmFsc2UpOworICAgIH0KK30K
KworYm9vbCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnVzZUhpZ2hQb3dlcigpIGNvbnN0Cit7Cisg
ICAgT2JzZXJ2ZXJzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29ic2VydmVycy5lbmQoKTsK
KyAgICBmb3IgKE9ic2VydmVyc01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fb2JzZXJ2ZXJz
LmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXItPnNlY29u
ZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRp
b25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsK
ICAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IG9ic2VydmVyc1ZlY3RvcjsKLSAgICBj
b3B5VG9WZWN0b3IobV9vYnNlcnZlcnMsIG9ic2VydmVyc1ZlY3Rvcik7CisgICAgY29weUtleXNU
b1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9ic2VydmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgb2JzZXJ2ZXJz
VmVjdG9yW2ldLT5wb3NpdGlvbkNoYW5nZWQoKTsKIH0KQEAgLTgwLDcgKzEwMiw3IEBAIHZvaWQg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpwb3NpdGlvbkNoYW4KIHZvaWQgR2VvbG9jYXRpb25Db250
cm9sbGVyOjplcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uRXJyb3IqIGVycm9yKQogewogICAgIFZl
Y3RvcjxSZWZQdHI8R2VvbG9jYXRpb24+ID4gb2JzZXJ2ZXJzVmVjdG9yOwotICAgIGNvcHlUb1Zl
Y3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKKyAgICBjb3B5S2V5c1RvVmVjdG9y
KG1fb2JzZXJ2ZXJzLCBvYnNlcnZlcnNWZWN0b3IpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgb2JzZXJ2ZXJzVmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICBvYnNlcnZlcnNWZWN0b3Jb
aV0tPnNldEVycm9yKGVycm9yKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9s
bGVyLmgJKHJldmlzaW9uIDYyMDAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKIAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKFBhZ2UqLCBHZW9sb2NhdGlv
bkNvbnRyb2xsZXJDbGllbnQqKTsKICAgICB+R2VvbG9jYXRpb25Db250cm9sbGVyKCk7CiAKLSAg
ICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBhZGRPYnNlcnZlcihH
ZW9sb2NhdGlvbiosIGJvb2wgaGlnaFBvd2VyKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEdl
b2xvY2F0aW9uKik7CiAKICAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblBvc2l0
aW9uKik7CkBAIC01NCwxMSArNTQsMTQgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uUG9zaXRp
b24qIGxhc3RQb3NpdGlvbigpOwogCiBwcml2YXRlOgorICAgIGJvb2wgdXNlSGlnaFBvd2VyKCkg
Y29uc3Q7CisKICAgICBQYWdlKiBtX3BhZ2U7CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50KiBtX2NsaWVudDsKIAogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQ
b3NpdGlvbjsKLSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBtX29ic2VydmVyczsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEdlb2xvY2F0aW9uPiwgYm9vbD4gT2JzZXJ2ZXJz
TWFwOworICAgIE9ic2VydmVyc01hcCBtX29ic2VydmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
LmgJKHJldmlzaW9uIDYyMDAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
VXBkYXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29sKSA9
IDA7CiAgICAgdmlydHVhbCBHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSA9IDA7
CiAKIHByb3RlY3RlZDoKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjAwMCkKKysrIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYtMjggIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQ2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGRv
ZXMgbm90IHBhc3MgaGlnaCBwb3dlciBvcHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisg
ICAgICAgIFN0dWIgb3V0IHNldFVzZUhpZ2hQb3dlciBtZXRob2QgZm9yIHRoZSBNYWMgcG9ydC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OjpzZXRVc2VIaWdo
UG93ZXIpOgorCiAyMDEwLTA2LTI4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
CShyZXZpc2lvbiA2MjAwMCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKICAgICB2b2lkIHN0YXJ0
VXBkYXRpbmcoKTsKICAgICB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZvaWQgc2V0VXNlSGln
aFBvd2VyKGJvb2wpIHsgfQogCiAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFz
dFBvc2l0aW9uKCk7CiAKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjAwMCkKKysrIFdlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDYtMjggIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQ2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGRv
ZXMgbm90IHBhc3MgaGlnaCBwb3dlciBvcHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisg
ICAgICAgIFN0dWIgb3V0IHNldFVzZUhpZ2hQb3dlciBtZXRob2QgZm9yIHRoZSBXaW4gcG9ydC4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OjpzZXRVc2VIaWdo
UG93ZXIpOgorCiAyMDEwLTA2LTIxICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgV2luZG93cyBidWlsZCBmaXguCkluZGV4OiBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Db250cm9s
bGVyQ2xpZW50LmgJKHJldmlzaW9uIDYyMDAwKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVk
KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZUhpZ2hQb3dlcihib29sKSB7
IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlv
bigpOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60005</attachid>
            <date>2010-06-29 04:19:15 -0700</date>
            <delta_ts>2010-07-26 09:56:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100629121913.patch</filename>
            <type>text/plain</type>
            <size>8810</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjEwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDYtMjggIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAg
ICAgICAgQ2xpZW50LWJhc2VkIEdlb2xvY2F0aW9uIGRvZXMgbm90IHBhc3MgZW5hYmxlSGlnaEFj
Y3VyYWN5IG9wdGlvbiB0byBjb250cm9sbGVyIGFuZCBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzc0CisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgcGFzc2VzIHRoZSBlbmFibGVIaWdoQWNjdXJhY3kgcmVxdWVzdCBvcHRpb24gdG8gdGhlIEdl
b2xvY2F0aW9uQ29udHJvbGxlci4KKyAgICAgICAgVGhlIEdlb2xvY2F0aW9uQ29udHJvbGxlciB0
cmFja3Mgd2hldGhlciB0aGlzIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBjbGllbnQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIHBvc3NpYmxlIGFzIHRoZSBtb2NrIHByb3ZpZGVyIGRvZXNuJ3Qgc3Vw
cG9ydCB0aGlzIGZlYXR1cmUuCisKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIHBhZ2UvR2VvbG9j
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9s
bGVyOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oOgorCiAy
MDEwLTA2LTI5ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAg
ICAgICAgIE5vdCByZXZpZXdlZC4gU29ydCBYY29kZSBwcm9qZWN0IGZpbGUuCkluZGV4OiBXZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDYyMDAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDEzICs0MDUsMTUgQEAgdm9pZCBHZW9sb2NhdGlv
bjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKICAg
ICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0
VXBkYXRpbmcgcHJvY2VzcwogICAgICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90
aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOworICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVy
IGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBtX3dhdGNoZXJzLgorICAgICAgICAg
ICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZp
ZXIuZ2V0KCk7CiAgICAgICAgICAgICBtX3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9
IDA7CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICAgICAgICAgIGlm
ICghcGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBwYWdlLT5nZW9s
b2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgICAgICBwYWdl
LT5nZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcywgbm90aWZpZXItPm1f
b3B0aW9ucy0+ZW5hYmxlSGlnaEFjY3VyYWN5KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnNldEZhdGFsRXJyb3IoUG9z
aXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJt
aXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICBtX29uZVNob3RzLmFkZCht
X3N0YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllcik7CkBAIC02MTMsOCArNjE1LDYgQEAgdm9p
ZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJybwogYm9vbCBHZW9sb2NhdGlvbjo6
c3RhcnRVcGRhdGluZyhHZW9Ob3RpZmllciogbm90aWZpZXIpCiB7CiAjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKLSAgICAvLyBGSVhNRTogUGFzcyBvcHRpb25zIHRvIGNsaWVu
dC4KLQogICAgIGlmICghaXNBbGxvd2VkKCkpIHsKICAgICAgICAgbV9zdGFydFJlcXVlc3RQZXJt
aXNzaW9uTm90aWZpZXIgPSBub3RpZmllcjsKICAgICAgICAgcmVxdWVzdFBlcm1pc3Npb24oKTsK
QEAgLTYyOCw3ICs2MjgsNyBAQCBib29sIEdlb2xvY2F0aW9uOjpzdGFydFVwZGF0aW5nKEdlb05v
dGlmCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwYWdlLT5n
ZW9sb2NhdGlvbkNvbnRyb2xsZXIoKS0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgcGFnZS0+Z2Vv
bG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMsIG5vdGlmaWVyLT5tX29wdGlv
bnMtPmVuYWJsZUhpZ2hBY2N1cmFjeSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAg
cmV0dXJuIG1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhub3RpZmllci0+bV9vcHRpb25zLmdldCgp
KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2
MjAwMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSwxNyArNDUsMjMgQEAgR2VvbG9jYXRpb25Db250cm9sbGVyOjp+R2VvbG9j
YXRpb25Db250cgogICAgICAgICBtX2NsaWVudC0+Z2VvbG9jYXRpb25EZXN0cm95ZWQoKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKiBv
YnNlcnZlcikKK3ZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2Nh
dGlvbiogb2JzZXJ2ZXIsIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KQogewogICAgIC8vIFRoaXMg
bWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIG9ic2VydmVyLCB0aG91
Z2ggcmVtb3ZlT2JzZXJ2ZXIoKQogICAgIC8vIGlzIGNhbGxlZCBvbmx5IG9uY2Ugd2l0aCBlYWNo
LgotICAgIGlmIChtX29ic2VydmVycy5jb250YWlucyhvYnNlcnZlcikpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5pc0VtcHR5KCk7CisgICAgYm9v
bCB3YXNVc2luZ0hpZ2hBY2N1cmFjeSA9ICFtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5pc0VtcHR5
KCk7CisKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwotICAgIGlmICh3YXNFbXB0eSAm
JiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKKyAgICBpZiAo
ZW5hYmxlSGlnaEFjY3VyYWN5KQorICAgICAgICBtX2hpZ2hBY2N1cmFjeU9ic2VydmVycy5hZGQo
b2JzZXJ2ZXIpOworCisgICAgaWYgKG1fY2xpZW50KSB7ICAgICAgICAKKyAgICAgICAgaWYgKCF3
YXNVc2luZ0hpZ2hBY2N1cmFjeSAmJiBlbmFibGVIaWdoQWNjdXJhY3kpCisgICAgICAgICAgICBt
X2NsaWVudC0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KHRydWUpOworICAgICAgICBpZiAod2FzRW1w
dHkpCisgICAgICAgICAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworICAgIH0KIH0KIAog
dm9pZCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU9ic2VydmVyKEdlb2xvY2F0aW9uKiBv
YnNlcnZlcikKQEAgLTYzLDkgKzY5LDE2IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpy
ZW1vdmVPYnNlcnYKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLmNvbnRhaW5zKG9ic2VydmVyKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgYm9vbCB3YXNVc2luZ0hpZ2hBY2N1cmFjeSA9ICFtX2hpZ2hB
Y2N1cmFjeU9ic2VydmVycy5pc0VtcHR5KCk7CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKG9ic2Vy
dmVyKTsKLSAgICBpZiAobV9vYnNlcnZlcnMuaXNFbXB0eSgpICYmIG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+c3RvcFVwZGF0aW5nKCk7CisgICAgbV9oaWdoQWNjdXJhY3lPYnNlcnZlcnMu
cmVtb3ZlKG9ic2VydmVyKTsKKworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBpZiAobV9v
YnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygp
OworICAgICAgICBlbHNlIGlmICh3YXNVc2luZ0hpZ2hBY2N1cmFjeSAmJiBtX2hpZ2hBY2N1cmFj
eU9ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NsaWVudC0+c2V0RW5hYmxlSGln
aEFjY3VyYWN5KGZhbHNlKTsKKyAgICB9CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVy
Ojpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiA2MjAwMCkKKysrIFdlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKFBhZ2UqLCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQqKTsKICAgICB+R2VvbG9jYXRpb25Db250cm9sbGVyKCk7CiAK
LSAgICB2b2lkIGFkZE9ic2VydmVyKEdlb2xvY2F0aW9uKik7CisgICAgdm9pZCBhZGRPYnNlcnZl
cihHZW9sb2NhdGlvbiosIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KTsKICAgICB2b2lkIHJlbW92
ZU9ic2VydmVyKEdlb2xvY2F0aW9uKik7CiAKICAgICB2b2lkIHBvc2l0aW9uQ2hhbmdlZChHZW9s
b2NhdGlvblBvc2l0aW9uKik7CkBAIC01OCw3ICs1OCw5IEBAIHByaXZhdGU6CiAgICAgR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBtX2NsaWVudDsKIAogICAgIFJlZlB0cjxHZW9sb2NhdGlv
blBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKLSAgICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlv
bj4gPiBtX29ic2VydmVyczsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9u
PiA+IE9ic2VydmVyc1NldDsKKyAgICBPYnNlcnZlcnNTZXQgbV9vYnNlcnZlcnM7CisgICAgT2Jz
ZXJ2ZXJzU2V0IG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQu
aAkocmV2aXNpb24gNjIwMDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BV
cGRhdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigp
ID0gMDsKIAogcHJvdGVjdGVkOgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMTAzKQorKysgV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNi0yOCAg
U3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBDbGllbnQtYmFzZWQgR2VvbG9jYXRp
b24gZG9lcyBub3QgcGFzcyBlbmFibGVIaWdoQWNjdXJhY3kgb3B0aW9uIHRvIGNvbnRyb2xsZXIg
YW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDAzNzQKKworICAgICAgICBTdHViIG91dCBzZXRFbmFibGVIaWdoQWNjdXJhY3kgbWV0aG9k
IGZvciB0aGUgTWFjIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKwogMjAxMC0wNi0yOSAgWm9sdGFuIEhl
cmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29s
YXMgWmltbWVybWFubi4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkocmV2aXNpb24gNjIwMDAp
CisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CiAgICAg
dm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KSB7IH0KIAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigp
OwogCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gNjIxMDMpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2LTI4ICBTdGV2ZSBCbG9jayAgPHN0
ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgorCisgICAgICAgIENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNz
IGVuYWJsZUhpZ2hBY2N1cmFjeSBvcHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisgICAg
ICAgIFN0dWIgb3V0IHNldEVuYWJsZUhpZ2hBY2N1cmFjeSBtZXRob2QgZm9yIHRoZSBXaW4gcG9y
dC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OjpzZXRFbmFi
bGVIaWdoQWNjdXJhY3kpOgorCiAyMDEwLTA2LTIxICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgV2luZG93cyBidWlsZCBmaXguCkluZGV4
OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDYyMDAwKQorKysgV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
RGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShib29sKSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRp
b24qIGxhc3RQb3NpdGlvbigpOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62583</attachid>
            <date>2010-07-26 09:57:03 -0700</date>
            <delta_ts>2010-07-27 04:43:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100726175700.patch</filename>
            <type>text/plain</type>
            <size>8570</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDA0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBD
bGllbnQtYmFzZWQgR2VvbG9jYXRpb24gZG9lcyBub3QgcGFzcyBlbmFibGVIaWdoQWNjdXJhY3kg
b3B0aW9uIHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBUaGlzIGNoYW5nZSBwYXNz
ZXMgdGhlIGVuYWJsZUhpZ2hBY2N1cmFjeSByZXF1ZXN0IG9wdGlvbiB0byB0aGUgR2VvbG9jYXRp
b25Db250cm9sbGVyLgorICAgICAgICBUaGUgR2VvbG9jYXRpb25Db250cm9sbGVyIHRyYWNrcyB3
aGV0aGVyIHRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgcG9zc2libGUgYXMgdGhlIG1vY2sgcHJvdmlkZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZmVhdHVyZS4KKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lmg6CisKIDIwMTAtMDct
MjYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYW4gI2lmIGlu
IFdlYkNvcmUuZXhwLmluIHRvIGNvcnJlY3RseSBkZXRlY3Qgd2hldGhlciBTVkcgZmlsdGVycyBh
cmUgZW5hYmxlZC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjQwNDkpCisrKyBX
ZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNiArNDA1
LDggQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwogICAgICAgICBp
ZiAoaXNBbGxvd2VkKCkpIHsKICAgICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVxdWVzdCB3YXMg
bWFkZSBkdXJpbmcgdGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwogICAgICAgICAgICAgbV9zdGFy
dFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgpOworICAgICAg
ICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVTaG90cyBvciBt
X3dhdGNoZXJzLgorICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0gbV9zdGFydFJl
cXVlc3RQZXJtaXNzaW9uTm90aWZpZXIuZ2V0KCk7CiAgICAgICAgICAgICBtX3N0YXJ0UmVxdWVz
dFBlcm1pc3Npb25Ob3RpZmllciA9IDA7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikKICAgICAgICAgICAgIGlmICghbV9mcmFtZSkKQEAgLTQxMiw3ICs0MTQsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvCiAgICAgICAgICAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigp
LT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJv
bGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5lbmFibGVIaWdo
QWNjdXJhY3koKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIHN0YXJ0VXBk
YXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25zIHVzaW5nIHByZS1lbXB0
aXZlIHBvbGljeQogI2VuZGlmCkBAIC02MzIsOCArNjM0LDcgQEAgYm9vbCBHZW9sb2NhdGlvbjo6
c3RhcnRVcGRhdGluZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgLy8gRklYTUU6IFBhc3Mgb3B0aW9ucyB0byBjbGllbnQuCi0gICAgcGFnZS0+
Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMpOworICAgIHBhZ2UtPmdl
b2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRp
b25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAg
IHJldHVybiBtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0aW9ucy5nZXQo
KSk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24g
NjQwNDkpCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTcgKzQ1LDIxIEBAIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6fkdlb2xv
Y2F0aW9uQ29udHIKICAgICAgICAgbV9jbGllbnQtPmdlb2xvY2F0aW9uRGVzdHJveWVkKCk7CiB9
CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9sb2NhdGlvbiog
b2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2ZXIoR2VvbG9j
YXRpb24qIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAgICAvLyBUaGlz
IG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNlcnZlciwgdGhv
dWdoIHJlbW92ZU9ic2VydmVyKCkKICAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNlIHdpdGggZWFj
aC4KLSAgICBpZiAobV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOwogICAgIG1f
b2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1fY2xpZW50KQot
ICAgICAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworICAgIGlmIChlbmFibGVIaWdoQWNj
dXJhY3kpCisgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CisK
KyAgICBpZiAobV9jbGllbnQpIHsgICAgICAgIAorICAgICAgICBpZiAoZW5hYmxlSGlnaEFjY3Vy
YWN5KQorICAgICAgICAgICAgbV9jbGllbnQtPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSh0cnVlKTsK
KyAgICAgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRp
bmcoKTsKKyAgICB9CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpyZW1vdmVPYnNl
cnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCkBAIC02NCw4ICs2OCwxNCBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2CiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7Ci0gICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHko
KSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworICAgIG1f
aGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CisKKyAgICBpZiAobV9jbGll
bnQpIHsKKyAgICAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKKyAgICAgICAgZWxzZSBpZiAobV9oaWdoQWNjdXJhY3lP
YnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jbGllbnQtPnNldEVuYWJsZUhpZ2hB
Y2N1cmFjeShmYWxzZSk7CisgICAgfQogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQpJbmRleDogV2Vi
Q29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNjQwNDkpCisrKyBXZWJDb3Jl
L3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcihQYWdlKiwgR2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50Kik7CiAgICAgfkdlb2xvY2F0aW9uQ29udHJvbGxlcigpOwogCi0g
ICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlvbiopOworICAgIHZvaWQgYWRkT2JzZXJ2ZXIo
R2VvbG9jYXRpb24qLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgdm9pZCByZW1vdmVP
YnNlcnZlcihHZW9sb2NhdGlvbiopOwogCiAgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoR2VvbG9j
YXRpb25Qb3NpdGlvbiopOwpAQCAtNTgsNyArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogCiAgICAgUmVmUHRyPEdlb2xvY2F0aW9u
UG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwotICAgIEhhc2hTZXQ8UmVmUHRyPEdlb2xvY2F0aW9u
PiA+IG1fb2JzZXJ2ZXJzOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvbG9jYXRpb24+
ID4gT2JzZXJ2ZXJzU2V0OworICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhvc2UgcmVxdWVz
dGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCisgICAgT2JzZXJ2ZXJzU2V0IG1fb2Jz
ZXJ2ZXJzOworICAgIE9ic2VydmVyc1NldCBtX2hpZ2hBY2N1cmFjeU9ic2VydmVyczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25D
b250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDY0MDQ5KQorKysgV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uQ29udHJvbGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIC8vIFdlIHNob3VsZCB1cGRhdGUg
dGhlIHRlcm1pbm9sb2d5IHVzZWQgaW4gV2ViQ29yZSB0byBkZXNjcmliZSB0aGlzIHByb3BlcnR5
CisgICAgLy8gdG8gdGhhdCBmb3IgdGhlIFYyIEdlb2xvY2F0aW9uIHNwZWNpZmljYXRpb24gd2hl
biB0aGF0IGlzIHB1Ymxpc2hlZC4gU2VlCisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvMjAwOC9n
ZW9sb2NhdGlvbi90cmFjay9pc3N1ZXMvNgorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgR2VvbG9jYXRpb25Qb3NpdGlvbiogbGFz
dFBvc2l0aW9uKCkgPSAwOwogCiBwcm90ZWN0ZWQ6CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjQwNDkpCisr
KyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEwLTA2LTI4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBKZXJlbXkgT3Jsb3cuCisKKyAgICAgICAgQ2xpZW50LWJhc2VkIEdlb2xv
Y2F0aW9uIGRvZXMgbm90IHBhc3MgZW5hYmxlSGlnaEFjY3VyYWN5IG9wdGlvbiB0byBjb250cm9s
bGVyIGFuZCBjbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMzc0CisKKyAgICAgICAgU3R1YiBvdXQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5IG1l
dGhvZCBmb3IgdGhlIE1hYyBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeSk6CisKIDIwMTAtMDctMjIgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3Rh
Y2hvd2lhay4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkocmV2aXNpb24gNjQwNDkpCisrKyBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdlb2xv
Y2F0aW9uRGVzdHJveWVkKCk7CiAgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CiAgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKTsKKyAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKSB7IH0K
IAogICAgIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpOwogCklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjQwNDkpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2LTI4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxv
Y2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgorCisgICAgICAgIENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBwYXNzIGVuYWJs
ZUhpZ2hBY2N1cmFjeSBvcHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisgICAgICAgIFN0
dWIgb3V0IHNldEVuYWJsZUhpZ2hBY2N1cmFjeSBtZXRob2QgZm9yIHRoZSBXaW4gcG9ydC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
OgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OjpzZXRFbmFibGVIaWdo
QWNjdXJhY3kpOgorCiAyMDEwLTA3LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50LmgJKHJldmlzaW9uIDY0MDQ5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
KSB7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3Np
dGlvbigpOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62681</attachid>
            <date>2010-07-27 04:43:37 -0700</date>
            <delta_ts>2010-07-27 07:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40374-20100727124333.patch</filename>
            <type>text/plain</type>
            <size>8553</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDEyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KKworICAgICAgICBD
bGllbnQtYmFzZWQgR2VvbG9jYXRpb24gZG9lcyBub3QgcGFzcyBlbmFibGVIaWdoQWNjdXJhY3kg
b3B0aW9uIHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBUaGlzIGNoYW5nZSBwYXNz
ZXMgdGhlIGVuYWJsZUhpZ2hBY2N1cmFjeSByZXF1ZXN0IG9wdGlvbiB0byB0aGUgR2VvbG9jYXRp
b25Db250cm9sbGVyLgorICAgICAgICBUaGUgR2VvbG9jYXRpb25Db250cm9sbGVyIHRyYWNrcyB3
aGV0aGVyIHRoaXMgc2hvdWxkIGJlIHVzZWQgYnkgdGhlIGNsaWVudC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgcG9zc2libGUgYXMgdGhlIG1vY2sgcHJvdmlkZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZmVhdHVyZS4KKworICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OnNldElzQWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnJl
bW92ZU9ic2VydmVyKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lmg6CisKIDIwMTAtMDct
MjcgIFNhdGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjQx
MjApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MDUsNiArNDA1LDggQEAgdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsbwog
ICAgICAgICBpZiAoaXNBbGxvd2VkKCkpIHsKICAgICAgICAgICAgIC8vIFBlcm1pc3Npb24gcmVx
dWVzdCB3YXMgbWFkZSBkdXJpbmcgdGhlIHN0YXJ0VXBkYXRpbmcgcHJvY2VzcwogICAgICAgICAg
ICAgbV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXItPnN0YXJ0VGltZXJJZk5lZWRlZCgp
OworICAgICAgICAgICAgLy8gVGhlIG5vdGlmaWVyIGlzIGFsd2F5cyByZWYnZWQgYnkgbV9vbmVT
aG90cyBvciBtX3dhdGNoZXJzLgorICAgICAgICAgICAgR2VvTm90aWZpZXIqIG5vdGlmaWVyID0g
bV9zdGFydFJlcXVlc3RQZXJtaXNzaW9uTm90aWZpZXIuZ2V0KCk7CiAgICAgICAgICAgICBtX3N0
YXJ0UmVxdWVzdFBlcm1pc3Npb25Ob3RpZmllciA9IDA7CiAjaWYgRU5BQkxFKENMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikKICAgICAgICAgICAgIGlmICghbV9mcmFtZSkKQEAgLTQxMiw3ICs0MTQs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvCiAgICAgICAgICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgICAgICAgICAgaWYgKCFwYWdlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0aW9uQ29u
dHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgICAgIHBhZ2UtPmdlb2xvY2F0
aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmllci0+bV9vcHRpb25zLT5l
bmFibGVIaWdoQWNjdXJhY3koKSk7CiAjZWxzZQogICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxl
IHN0YXJ0VXBkYXRlKCkgZm9yIG5vbi1jbGllbnQgYmFzZWQgaW1wbGVtZW50YXRpb25zIHVzaW5n
IHByZS1lbXB0aXZlIHBvbGljeQogI2VuZGlmCkBAIC02MzIsOCArNjM0LDcgQEAgYm9vbCBHZW9s
b2NhdGlvbjo6c3RhcnRVcGRhdGluZyhHZW9Ob3RpZgogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFBhc3Mgb3B0aW9ucyB0byBjbGllbnQuCi0g
ICAgcGFnZS0+Z2VvbG9jYXRpb25Db250cm9sbGVyKCktPmFkZE9ic2VydmVyKHRoaXMpOworICAg
IHBhZ2UtPmdlb2xvY2F0aW9uQ29udHJvbGxlcigpLT5hZGRPYnNlcnZlcih0aGlzLCBub3RpZmll
ci0+bV9vcHRpb25zLT5lbmFibGVIaWdoQWNjdXJhY3koKSk7CiAgICAgcmV0dXJuIHRydWU7CiAj
ZWxzZQogICAgIHJldHVybiBtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcobm90aWZpZXItPm1fb3B0
aW9ucy5nZXQoKSk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAko
cmV2aXNpb24gNjQxMjApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTcgKzQ1LDIxIEBAIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6fkdlb2xvY2F0aW9uQ29udHIKICAgICAgICAgbV9jbGllbnQtPmdlb2xvY2F0aW9uRGVzdHJv
eWVkKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjphZGRPYnNlcnZlcihHZW9s
b2NhdGlvbiogb2JzZXJ2ZXIpCit2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6YWRkT2JzZXJ2
ZXIoR2VvbG9jYXRpb24qIG9ic2VydmVyLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSkKIHsKICAg
ICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgc2FtZSBvYnNl
cnZlciwgdGhvdWdoIHJlbW92ZU9ic2VydmVyKCkKICAgICAvLyBpcyBjYWxsZWQgb25seSBvbmNl
IHdpdGggZWFjaC4KLSAgICBpZiAobV9vYnNlcnZlcnMuY29udGFpbnMob2JzZXJ2ZXIpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgp
OwogICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7Ci0gICAgaWYgKHdhc0VtcHR5ICYmIG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworICAgIGlmIChlbmFi
bGVIaWdoQWNjdXJhY3kpCisgICAgICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLmFkZChvYnNl
cnZlcik7CisKKyAgICBpZiAobV9jbGllbnQpIHsgICAgICAgIAorICAgICAgICBpZiAoZW5hYmxl
SGlnaEFjY3VyYWN5KQorICAgICAgICAgICAgbV9jbGllbnQtPnNldEVuYWJsZUhpZ2hBY2N1cmFj
eSh0cnVlKTsKKyAgICAgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICAgICAgbV9jbGllbnQtPnN0
YXJ0VXBkYXRpbmcoKTsKKyAgICB9CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25Db250cm9sbGVyOjpy
ZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiogb2JzZXJ2ZXIpCkBAIC02NCw4ICs2OCwxNCBAQCB2
b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6cmVtb3ZlT2JzZXJ2CiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7Ci0gICAgaWYgKG1fb2JzZXJ2ZXJz
LmlzRW1wdHkoKSAmJiBtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygp
OworICAgIG1faGlnaEFjY3VyYWN5T2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CisKKyAgICBp
ZiAobV9jbGllbnQpIHsKKyAgICAgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKKyAgICAgICAgZWxzZSBpZiAobV9oaWdo
QWNjdXJhY3lPYnNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jbGllbnQtPnNldEVu
YWJsZUhpZ2hBY2N1cmFjeShmYWxzZSk7CisgICAgfQogfQogCiB2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQpJ
bmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNjQxMjApCisr
KyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlcihQYWdlKiwg
R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAgICAgfkdlb2xvY2F0aW9uQ29udHJvbGxl
cigpOwogCi0gICAgdm9pZCBhZGRPYnNlcnZlcihHZW9sb2NhdGlvbiopOworICAgIHZvaWQgYWRk
T2JzZXJ2ZXIoR2VvbG9jYXRpb24qLCBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSk7CiAgICAgdm9p
ZCByZW1vdmVPYnNlcnZlcihHZW9sb2NhdGlvbiopOwogCiAgICAgdm9pZCBwb3NpdGlvbkNoYW5n
ZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiopOwpAQCAtNTgsNyArNTgsMTAgQEAgcHJpdmF0ZToKICAg
ICBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIG1fY2xpZW50OwogCiAgICAgUmVmUHRyPEdl
b2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwotICAgIEhhc2hTZXQ8UmVmUHRyPEdl
b2xvY2F0aW9uPiA+IG1fb2JzZXJ2ZXJzOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2Vv
bG9jYXRpb24+ID4gT2JzZXJ2ZXJzU2V0OworICAgIC8vIEFsbCBvYnNlcnZlcnM7IGJvdGggdGhv
c2UgcmVxdWVzdGluZyBoaWdoIGFjY3VyYWN5IGFuZCB0aG9zZSBub3QuCisgICAgT2JzZXJ2ZXJz
U2V0IG1fb2JzZXJ2ZXJzOworICAgIE9ic2VydmVyc1NldCBtX2hpZ2hBY2N1cmFjeU9ic2VydmVy
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDY0MTIwKQorKysgV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIC8vIEZJWE1FOiBU
aGUgVjIgR2VvbG9jYXRpb24gc3BlY2lmaWNhdGlvbiBwcm9wb3NlcyB0aGF0IHRoaXMgcHJvcGVy
dHkgaXMKKyAgICAvLyByZW5hbWVkLiBTZWUgaHR0cDovL3d3dy53My5vcmcvMjAwOC9nZW9sb2Nh
dGlvbi90cmFjay9pc3N1ZXMvNgorICAgIC8vIFdlIHNob3VsZCB1cGRhdGUgV2ViS2l0IHRvIHJl
ZmxlY3QgdGhpcyBpZiBhbmQgd2hlbiB0aGUgVjIgc3BlY2lmaWNhdGlvbgorICAgIC8vIGlzIHB1
Ymxpc2hlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIEdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpID0gMDsK
IAogcHJvdGVjdGVkOgpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MTIwKQorKysgV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNi0yOCAgU3RldmUg
QmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVy
ZW15IE9ybG93LgorCisgICAgICAgIENsaWVudC1iYXNlZCBHZW9sb2NhdGlvbiBkb2VzIG5vdCBw
YXNzIGVuYWJsZUhpZ2hBY2N1cmFjeSBvcHRpb24gdG8gY29udHJvbGxlciBhbmQgY2xpZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NAorCisg
ICAgICAgIFN0dWIgb3V0IHNldEVuYWJsZUhpZ2hBY2N1cmFjeSBtZXRob2QgZm9yIHRoZSBNYWMg
cG9ydC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxl
ckNsaWVudC5oOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50OjpzZXRF
bmFibGVIaWdoQWNjdXJhY3kpOgorCiAyMDEwLTA3LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
b250cm9sbGVyQ2xpZW50LmgJKHJldmlzaW9uIDY0MTIwKQorKysgV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
OwogICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7Cisg
ICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgeyB9CiAKICAgICBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKIApJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0
MTIwKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wNi0yOCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBDbGll
bnQtYmFzZWQgR2VvbG9jYXRpb24gZG9lcyBub3QgcGFzcyBlbmFibGVIaWdoQWNjdXJhY3kgb3B0
aW9uIHRvIGNvbnRyb2xsZXIgYW5kIGNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzQKKworICAgICAgICBTdHViIG91dCBzZXRFbmFibGVI
aWdoQWNjdXJhY3kgbWV0aG9kIGZvciB0aGUgV2luIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KToKKwogMjAx
MC0wNy0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oCShyZXZpc2lv
biA2NDEyMCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Db250
cm9sbGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydFVwZGF0aW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgeyB9CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKIAogcHJpdmF0
ZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>