<?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>46324</bug_id>
          
          <creation_ts>2010-09-22 17:48:27 -0700</creation_ts>
          <short_desc>REGRESSION: page reload on back button after history.pushState with appearing/disappearing iframes</short_desc>
          <delta_ts>2010-11-23 21:19:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>zr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283399</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-22 17:48:27 -0700</bug_when>
    <thetext>I don&apos;t have this quite reduced yet, but to reproduce:

1. Load http://www.facebook.com/mihai.parparita (must be logged in to Facebook, wait till the spinner stop loading)
2. Click on the &quot;Info&quot; tab
3. Observe the location changes to http://www.facebook.com/mihai.parparita?v=info (via pushState)
4. Press back

Instead of a popstate event firing, the whole page reloads. I narrowed this down to http://trac.webkit.org/changeset/66238/ (via a local revert). It looks like Facebook is changing window.name at some point.

Bug 45969 may be related.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283417</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-22 18:01:34 -0700</bug_when>
    <thetext>http://crbug.com/56591/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283449</commentid>
    <comment_count>2</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-22 18:38:20 -0700</bug_when>
    <thetext>I believe this is a reduction: http://persistent.info/webkit/test-cases/reload-on-back/container.html

ToT WebKit ends up reloading the page when going back (which restarts the test). The window.name changing appeared to be a red herring. r66238 did change the criteria for when we consider the framesets of two HistoryItem trees equivalent, so the replacing of the iframe makes sense as the trigger (the Facebook profile URL referenced has two iframes when the Wall tab is selected, and one when the Info one is chosen).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283458</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-22 18:56:19 -0700</bug_when>
    <thetext>Actually, http://persistent.info/webkit/test-cases/reload-on-back/container2.html is probably a better reduction (with the page starting with two iframes and one being removed). That&apos;s because, looking at http://www.facebook.com/mihai.parparita, it has two iframes:

&lt;iframe class=​&quot;hidden_elem&quot; id=​&quot;u386716_5&quot;&gt;​
&lt;iframe src=​&quot;http:​/​/​static.ak.facebook.com/​common/​redirectiframe.html&quot; name=​&quot;profileiframe&quot; class=​&quot;UIComposer_Upload_Iframe&quot;&gt;

While http://www.facebook.com/mihai.parparita?v=info has just 1:

&lt;iframe class=​&quot;hidden_elem&quot; id=​&quot;u386716_5&quot;&gt;​

The hidden_elem iframe persists between the tab change (I added a custom property to it and it was still there, so it wasn&apos;t being recreated).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283461</commentid>
    <comment_count>4</comment_count>
    <who name="Zach Rait">zr</who>
    <bug_when>2010-09-22 19:00:20 -0700</bug_when>
    <thetext>I wanted to add that I&apos;m experiencing the same issue when going to a profile, clicking a link to transition to another profile (this will happen via an AJAX transition/pushState), and then hitting back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285046</commentid>
    <comment_count>5</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-25 12:36:49 -0700</bug_when>
    <thetext>The specific change that triggered this regression is the change from comparing the document sequence number of just the top frame to doing it recursively for all frames:

http://trac.webkit.org/changeset/66238/trunk/WebCore/loader/FrameLoader.cpp

Since frames are being added/removed, this check fails and we&apos;re not in the &quot;same document&quot; codepath anymore.

I&apos;m looking into which layout tests break if that change is reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285051</commentid>
    <comment_count>6</comment_count>
      <attachid>68838</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-25 14:36:59 -0700</bug_when>
    <thetext>Created attachment 68838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285053</commentid>
    <comment_count>7</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-25 14:42:51 -0700</bug_when>
    <thetext>The attached patch fixes navigation between profile tabs. For profile-to-profile navigation, I can&apos;t seem to trigger Quickling in the first place. Zach, is that disabled on Facebook&apos;s end for Safari&apos;s user agent? It does seem to work correctly if I spoof Chrome&apos;s though.

Brady and/or Darin: do you have any better ideas for how to trigger same-document navigation when using pushState, but still do the right thing when navigating between framesets (where only some of the child frames may be different). The patch is my attempt to get both fast/history/history-subframe-with-name.html and fast/history/same-document-iframes-changing.html passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285277</commentid>
    <comment_count>8</comment_count>
    <who name="Zach Rait">zr</who>
    <bug_when>2010-09-26 21:04:25 -0700</bug_when>
    <thetext>Mihai: Yeah, AJAX transitions for profile-to-profile/whole-site navigation are currently disabled for Safari&apos;s UA, but testing by spoofing Chrome&apos;s should work fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285278</commentid>
    <comment_count>9</comment_count>
      <attachid>68838</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-26 21:09:43 -0700</bug_when>
    <thetext>Comment on attachment 68838
Patch

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

&gt; LayoutTests/fast/history/same-document-iframes-changing.html:25
&gt; +onload = function()

Generally, we prefer to use &quot;window.onload =&quot; so that we can run these tests in other browsers.

&gt; WebCore/loader/FrameLoader.cpp:3240
&gt; -    bool sameDocumentNavigation = currentItem &amp;&amp; item != currentItem
&gt; -        &amp;&amp; item-&gt;hasSameDocuments(currentItem);
&gt; +    bool sameDocumentNavigation = currentItem &amp;&amp; item != currentItem;
&gt; +    if (currentItem-&gt;stateObject() || item-&gt;stateObject())
&gt; +        sameDocumentNavigation = sameDocumentNavigation &amp;&amp; item-&gt;documentSequenceNumber() == currentItem-&gt;documentSequenceNumber();
&gt; +    else
&gt; +        sameDocumentNavigation = sameDocumentNavigation &amp;&amp; item-&gt;hasSameDocuments(currentItem);

I&apos;m not that familiar with this code.  Why is this work done by the FrameLoader and not by the HistoryItem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286037</commentid>
    <comment_count>10</comment_count>
      <attachid>69016</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-27 20:56:45 -0700</bug_when>
    <thetext>Created attachment 69016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286040</commentid>
    <comment_count>11</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-27 20:58:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; LayoutTests/fast/history/same-document-iframes-changing.html:25
&gt; &gt; +onload = function()
&gt; 
&gt; Generally, we prefer to use &quot;window.onload =&quot; so that we can run these tests in other browsers.

As far as I can tell (test case at http://persistent.info/webkit/test-cases/assign-to-onload.html) assigning to onload works in Firefox, Opera and IE.
 
&gt; &gt; WebCore/loader/FrameLoader.cpp:3240
&gt; I&apos;m not that familiar with this code.  Why is this work done by the FrameLoader and not by the HistoryItem?

It used to be much simpler. Agreed that moving it to HistoryItem makes sense. Got any name suggestions for shouldDoSameDocumentNavigationTo?

Latest patch has the above change. Also added a test for fragment changes (and tweaked the code to make it work for that too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287058</commentid>
    <comment_count>12</comment_count>
      <attachid>69016</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-29 12:25:08 -0700</bug_when>
    <thetext>Comment on attachment 69016
Patch

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

&gt; WebCore/history/HistoryItem.cpp:494
&gt; +// - The other item corresponds to the same document (for history entries created via pushState or fragment changes).

this comment doesn&apos;t seem to really match the code.  based on this comment, i expected to see hasSameDocumentTree called in cases where the documentSequenceNumbers differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287072</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-29 12:54:13 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; WebCore/history/HistoryItem.cpp:494
&gt; &gt; +// - The other item corresponds to the same document (for history entries created via pushState or fragment changes).
&gt; 
&gt; this comment doesn&apos;t seem to really match the code.  based on this comment, i expected to see hasSameDocumentTree called in cases where the documentSequenceNumbers differ.

Since hasSameDocumentTree starts by comparing the documentSequenceNumbers of the items, there&apos;s no point in calling it if the numbers differ (it will still return false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287270</commentid>
    <comment_count>14</comment_count>
      <attachid>69016</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-29 17:54:48 -0700</bug_when>
    <thetext>Comment on attachment 69016
Patch

I&apos;m going to let the cq land this, so that it can be merged into Chrome M7. Darin, let me know if you have suggestions for how the comment could be made clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287344</commentid>
    <comment_count>15</comment_count>
      <attachid>69016</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 20:07:16 -0700</bug_when>
    <thetext>Comment on attachment 69016
Patch

Clearing flags on attachment: 69016

Committed r68742: &lt;http://trac.webkit.org/changeset/68742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287345</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 20:07:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313124</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-11-23 21:19:36 -0800</bug_when>
    <thetext>*** Bug 46310 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68838</attachid>
            <date>2010-09-25 14:36:59 -0700</date>
            <delta_ts>2010-09-27 20:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46324-20100925143658.patch</filename>
            <type>text/plain</type>
            <size>7160</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNWNkYmU0OWVjYTk4MDdkMGFiNzY2Y2JmZTM0YTRhNGNhMjJiOTZiLi4zNmMxYTU4
MTMzNWRhZDkyMDQzOGFjOTQyMzRhOTU1YzUwZDdkZmFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAK
IDIwMTAtMDktMjUgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjog
cGFnZSByZWxvYWQgb24gYmFjayBidXR0b24gYWZ0ZXIgaGlzdG9yeS5wdXNoU3RhdGUgd2l0aCBh
cHBlYXJpbmcvZGlzYXBwZWFyaW5nIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzI0CisgICAgICAgIAorICAgICAgICBBZGQgdGVzdCB3
aGljaCB1c2VzIHB1c2hTdGF0ZSB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMgd2hpbGUgYWxz
byAKKyAgICAgICAgY2hhbmdpbmcgdGhlIGZyYW1lcyB0aGF0IGFyZSBwcmVzZW50IGluIHRoZSBk
b2N1bWVudCBiZXR3ZWVuIGhpc3RvcnkKKyAgICAgICAgc3RhdGVzLgorCisgICAgICAgICogZmFz
dC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdp
bmcuaHRtbDogQWRkZWQuCisKKzIwMTAtMDktMjUgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBkcnRfZXhwZWN0YXRp
b25zLnR4dCB1cGRhdGUuCiAKICAgICAgICAgU3BlZWNoIGlucHV0IGFwcGVhcmFuY2UgdGVzdHMg
aGF2ZSBpbWFnZSBkaWZmcyBvbiBMaW51eCB0b28uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZTI0OTQxNTJhMjM3Yjg1MzAyNjRmNDQ3OGRiYThh
MzFkMGY5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2Ft
ZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBA
CitUZXN0cyB0aGF0IHdlIHRyaWdnZXIgc2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIHdoZW4gaGlz
dG9yeSBlbnRyaWVzIGFyZSBnZW5lcmF0ZWQgdmlhIHB1c2hTdGF0ZSwgZXZlbiBpZiB0aGUgZnJh
bWVzIHByZXNlbnQgaW4gdGhlIGRvY3VtZW50IGNoYW5nZSBiZXR3ZWVuIGhpc3RvcnkgZW50cmll
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3BvcHN0YXRlIHRvIHN0YXRlOiBu
dWxsIGZpbGVuYW1lOiBzYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmcuaHRtbAorcmVtb3Zp
bmcgaWZyYW1lMgorcHVzaFN0YXRlIHRvIG5ld1N0YXRlCitnb2luZyBiYWNrCitwb3BzdGF0ZSB0
byBzdGF0ZTogbnVsbCBmaWxlbmFtZTogc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLmh0
bWwKK2dvaW5nIGZvcndhcmQKK3BvcHN0YXRlIHRvIHN0YXRlOiBuZXdTdGF0ZSBmaWxlbmFtZTog
c2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLmh0bWw/bmV3U3RhdGUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKy0tLS0tLS0tCitGcmFt
ZTogJ2lmcmFtZTEnCistLS0tLS0tLQoraWZyYW1lMQorCis9PT09PT09PT09PT09PSBCYWNrIEZv
cndhcmQgTGlzdCA9PT09PT09PT09PT09PQorICAgICAgICAoZmlsZSB0ZXN0KTpmYXN0L2hpc3Rv
cnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLmh0bWwgICoqbmF2IHRhcmdldCoqCisg
ICAgICAgICAgICBkYXRhOnRleHQvcGxhaW4saWZyYW1lMSAoaW4gZnJhbWUgImlmcmFtZTEiKQor
ICAgICAgICAgICAgZGF0YTp0ZXh0L3BsYWluLGlmcmFtZTIgKGluIGZyYW1lICJpZnJhbWUyIikK
K2N1cnItPiAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1j
aGFuZ2luZy5odG1sP25ld1N0YXRlICAqKm5hdiB0YXJnZXQqKgorICAgICAgICAgICAgZGF0YTp0
ZXh0L3BsYWluLGlmcmFtZTEgKGluIGZyYW1lICJpZnJhbWUxIikKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzNkOTBhYzNhYTg4OTczMzJiMTZjOTcyMDI0OTNkYTdhMjY3NzRjMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFt
ZXMtY2hhbmdpbmcuaHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgaHRtbD4gCis8aHRt
bD4gCis8aGVhZD4gCisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxpZnJhbWUgc3JjPSJkYXRh
OnRleHQvcGxhaW4saWZyYW1lMSIgaWQ9ImlmcmFtZTEiPjwvaWZyYW1lPiAKKzxpZnJhbWUgc3Jj
PSJkYXRhOnRleHQvcGxhaW4saWZyYW1lMiIgaWQ9ImlmcmFtZTIiPjwvaWZyYW1lPiAKKworPHNj
cmlwdD4KK3ZhciB3ZW50QmFjayA9IGZhbHNlOworCitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCB3
ZSB0cmlnZ2VyIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiB3aGVuIGhpc3RvcnkgZW50cmllcyBh
cmUgZ2VuZXJhdGVkIHZpYSBwdXNoU3RhdGUsIGV2ZW4gaWYgdGhlIGZyYW1lcyBwcmVzZW50IGlu
IHRoZSBkb2N1bWVudCBjaGFuZ2UgYmV0d2VlbiBoaXN0b3J5IGVudHJpZXMuJyk7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2Fy
ZExpc3QoKTsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIC8vIFJ1biBhZmVyIG9u
bG9hZCwgdG8gbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4K
KyAgICBzZXRUaW1lb3V0KGJlZ2luVGVzdCwgMCk7Cit9CisKK29ucG9wc3RhdGUgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHZhciBsb2MgPSBsb2NhdGlvbi5ocmVmOworICAgIHZhciBmaWxlbmFt
ZUFuZFF1ZXJ5ID0gbG9jLnN1YnN0cmluZyhsb2MubGFzdEluZGV4T2YoJy8nKSArIDEpOworICAg
IGRlYnVnKCdwb3BzdGF0ZSB0byBzdGF0ZTogJyArIGV2ZW50LnN0YXRlICsgJyBmaWxlbmFtZTog
JyArIGZpbGVuYW1lQW5kUXVlcnkpOworICAgIAorICAgIGlmICghZXZlbnQuc3RhdGUpIHsKKyAg
ICAgICAgaWYgKHdlbnRCYWNrKSB7CisgICAgICAgICAgICBkZWJ1ZygnZ29pbmcgZm9yd2FyZCcp
OworICAgICAgICAgICAgaGlzdG9yeS5mb3J3YXJkKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKGV2ZW50LnN0YXRlID09ICduZXdTdGF0ZScpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBzdGF0ZScpOwor
ICAgIH0KK307CisKKworZnVuY3Rpb24gYmVnaW5UZXN0KCkgCit7CisgICAgZGVidWcoJ3JlbW92
aW5nIGlmcmFtZTInKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpZnJhbWUyJykpOworCisgICAgZGVidWcoJ3B1c2hTdGF0ZSB0byBuZXdT
dGF0ZScpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKCduZXdTdGF0ZScsIG51bGwsICc/bmV3U3Rh
dGUnKTsKKworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICB3ZW50
QmFjayA9IHRydWU7CisgICAgICAgIGRlYnVnKCdnb2luZyBiYWNrJyk7CisgICAgICAgIGhpc3Rv
cnkuYmFjaygpOworICAgIH0sIDApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PiAgCis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNGE3NWFhYjVmYWM3NTE1OGQ1M2VhZmJl
MDlhOGJkNjc5ODExZGM1Li4wMTE3YThhNGYwYmNkODA0NWMyZTAzZTc2ZGNkNjI0MjgyZDNmNWU1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEwLTA5LTI1ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJFR1JFU1NJT046IHBhZ2UgcmVsb2FkIG9uIGJhY2sgYnV0dG9uIGFmdGVyIGhpc3Rvcnku
cHVzaFN0YXRlIHdpdGggYXBwZWFyaW5nL2Rpc2FwcGVhcmluZyBpZnJhbWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjMyNAorICAgICAgICAKKyAg
ICAgICAgUmV2ZXJ0IHNhbWUgZG9jdW1lbnQgY2hlY2sgdG8gdGhlIHdheSBpdCB3YXMgYmVmb3Jl
IHI2NjIzOCBmb3IgaGlzdG9yeQorICAgICAgICBlbnRyaWVzIGNyZWF0ZWQgYnkgcHVzaFN0YXRl
CisKKyAgICAgICAgVGVzdDogZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFu
Z2luZy5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJdGVtKToKKwogMjAxMC0wOS0yNSAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2
YW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggOTczYWFiNzlkZDFmMjY2MGJkZjEyM2I2MzM0
OGI3ZTFiZGY5NTA2My4uYjAxYTU1NTRjMTljNTZkZWIzZWEyNTk5NDcxODVlNTVmNDA0Mzg4NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzIyOSwxMSArMzIyOSwxNSBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpuYXZpZ2F0ZVRvRGlmZmVyZW50RG9jdW1lbnQoSGlzdG9yeUl0ZW0qIGl0ZW0sIEZy
YW1lTG9hZFR5cGUgbAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgLy8gV2UgZG8gc2FtZS1kb2N1bWVu
dCBuYXZpZ2F0aW9uIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6Ci0gICAgLy8gLSBUaGUgSGlzdG9y
eUl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgZG9jdW1lbnQgKG9yIGRvY3VtZW50cyBpbiB0
aGUgY2FzZSBvZiBmcmFtZXMpLgorICAgIC8vIC0gVGhlIEhpc3RvcnlJdGVtIGNvcnJlc3BvbmRz
IHRvIHRoZSBzYW1lIGRvY3VtZW50IChmb3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlhIHB1
c2hTdGF0ZSBhbmQgcmVwbGFjZVN0YXRlKS4KKyAgICAvLyAtIFRoZSBIaXN0b3J5SXRlbSBjb3Jy
ZXNwb25kcyB0byB0aGUgc2FtZSBzZXQgb2YgZG9jdW1lbnRzLCBpbmNsdWRpbmcgZnJhbWVzIChm
b3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlhIHJlZ3VsYXIgbmF2aWdhdGlvbikKICAgICAv
LyAtIFRoZSBIaXN0b3J5SXRlbSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgaXRlbS4K
ICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0gPSBoaXN0b3J5KCktPmN1cnJlbnRJdGVtKCk7
Ci0gICAgYm9vbCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbSAh
PSBjdXJyZW50SXRlbQotICAgICAgICAmJiBpdGVtLT5oYXNTYW1lRG9jdW1lbnRzKGN1cnJlbnRJ
dGVtKTsKKyAgICBib29sIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBjdXJyZW50SXRlbSAmJiBp
dGVtICE9IGN1cnJlbnRJdGVtOworICAgIGlmIChjdXJyZW50SXRlbS0+c3RhdGVPYmplY3QoKSB8
fCBpdGVtLT5zdGF0ZU9iamVjdCgpKQorICAgICAgICBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0g
c2FtZURvY3VtZW50TmF2aWdhdGlvbiAmJiBpdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkg
PT0gY3VycmVudEl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKKyAgICBlbHNlCisgICAg
ICAgIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uICYmIGl0
ZW0tPmhhc1NhbWVEb2N1bWVudHMoY3VycmVudEl0ZW0pOwogCiAjaWYgRU5BQkxFKFdNTCkKICAg
ICAvLyBBbGwgV01MIGRlY2tzIHNob3VsZCBnbyB0aHJvdWdoIHRoZSByZWFsIGxvYWQgbWVjaGFu
aXNtLCBub3QgdGhlIHNjcm9sbC10by1hbmNob3IgY29kZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69016</attachid>
            <date>2010-09-27 20:56:45 -0700</date>
            <delta_ts>2010-09-29 20:07:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46324-20100927205643.patch</filename>
            <type>text/plain</type>
            <size>14991</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhM2RmNmM0MDM3N2YwZmU4Y2EzNTNlODczYzIyZDY2OGE1YTUwODBiLi4wOWExZGU2
ODRjNmVhOTE5ZGIyNDUwZWU2OTQ0YjRjYzk4MmFlYTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDktMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjog
cGFnZSByZWxvYWQgb24gYmFjayBidXR0b24gYWZ0ZXIgaGlzdG9yeS5wdXNoU3RhdGUgd2l0aCBh
cHBlYXJpbmcvZGlzYXBwZWFyaW5nIGlmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzI0CisgICAgICAgIAorICAgICAgICBBZGQgdGVzdCB3
aGljaCB1c2VzIHB1c2hTdGF0ZSB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMgd2hpbGUgYWxz
byAKKyAgICAgICAgY2hhbmdpbmcgdGhlIGZyYW1lcyB0aGF0IGFyZSBwcmVzZW50IGluIHRoZSBk
b2N1bWVudCBiZXR3ZWVuIGhpc3RvcnkKKyAgICAgICAgc3RhdGVzLiBBZGQgYSBzaW1pbGFyIHRl
c3QgdGhhdCB1c2VzIGZyYWdtZW50IGNoYW5nZXMuCisKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkv
c2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWZyYWdtZW50LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2lu
Zy1mcmFnbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2FtZS1kb2N1
bWVudC1pZnJhbWVzLWNoYW5naW5nLXB1c2hzdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctcHVzaHN0
YXRlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA5LTI3IE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYWRkZWQgYW4gZXhwZWN0YXRpb24uCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVz
LWNoYW5naW5nLWZyYWdtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctZnJhZ21lbnQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdkYWZhYmU5MTgxOTQ4NTY3NWJmZDgzNTJkNTE0MTgwODkyMmNlOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJh
bWVzLWNoYW5naW5nLWZyYWdtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0
cyB0aGF0IHdlIHRyaWdnZXIgc2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIHdoZW4gaGlzdG9yeSBl
bnRyaWVzIGFyZSBnZW5lcmF0ZWQgdmlhIGZyYWdtZW50IGNoYW5nZXMsIGV2ZW4gaWYgdGhlIGZy
YW1lcyBwcmVzZW50IGluIHRoZSBkb2N1bWVudCBjaGFuZ2UgYmV0d2VlbiBoaXN0b3J5IGVudHJp
ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitwb3BzdGF0ZSB0byBzdGF0ZTog
bnVsbCBmaWxlbmFtZTogc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWZyYWdtZW50Lmh0
bWwKK3JlbW92aW5nIGlmcmFtZTIKK25hdmlnYXRpbmcgdG8gI25ld1N0YXRlCitwb3BzdGF0ZSB0
byBzdGF0ZTogbnVsbCBmaWxlbmFtZTogc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWZy
YWdtZW50Lmh0bWwjbmV3U3RhdGUKK2dvaW5nIGJhY2sKK3BvcHN0YXRlIHRvIHN0YXRlOiBudWxs
IGZpbGVuYW1lOiBzYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctZnJhZ21lbnQuaHRtbAor
Z29pbmcgZm9yd2FyZAorcG9wc3RhdGUgdG8gc3RhdGU6IG51bGwgZmlsZW5hbWU6IHNhbWUtZG9j
dW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1mcmFnbWVudC5odG1sI25ld1N0YXRlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCistLS0tLS0tLQorRnJh
bWU6ICdpZnJhbWUxJworLS0tLS0tLS0KK2lmcmFtZTEKKworPT09PT09PT09PT09PT0gQmFjayBG
b3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KKyAgICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0
b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1mcmFnbWVudC5odG1sICAqKm5hdiB0
YXJnZXQqKgorICAgICAgICAgICAgZGF0YTp0ZXh0L3BsYWluLGlmcmFtZTEgKGluIGZyYW1lICJp
ZnJhbWUxIikKKyAgICAgICAgICAgIGRhdGE6dGV4dC9wbGFpbixpZnJhbWUyIChpbiBmcmFtZSAi
aWZyYW1lMiIpCitjdXJyLT4gIChmaWxlIHRlc3QpOmZhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50
LWlmcmFtZXMtY2hhbmdpbmctZnJhZ21lbnQuaHRtbCNuZXdTdGF0ZSAgKipuYXYgdGFyZ2V0KioK
KyAgICAgICAgICAgIGRhdGE6dGV4dC9wbGFpbixpZnJhbWUxIChpbiBmcmFtZSAiaWZyYW1lMSIp
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFu
Z2luZy1mcmFnbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1l
bnQtaWZyYW1lcy1jaGFuZ2luZy1mcmFnbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMTY5YTcwMjY2
NmQ2MTE4NDFhZTU4ZTI0YzJiZmU5Yjk2MGFkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWZyYWdtZW50
Lmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+IAorPGh0bWw+IAorPGhlYWQ+
IAorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
KzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L3BsYWlu
LGlmcmFtZTEiIGlkPSJpZnJhbWUxIj48L2lmcmFtZT4gCis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0
L3BsYWluLGlmcmFtZTIiIGlkPSJpZnJhbWUyIj48L2lmcmFtZT4gCisKKzxzY3JpcHQ+Cit2YXIg
d2VudEJhY2sgPSBmYWxzZTsKKworZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgd2UgdHJpZ2dlciBz
YW1lLWRvY3VtZW50IG5hdmlnYXRpb24gd2hlbiBoaXN0b3J5IGVudHJpZXMgYXJlIGdlbmVyYXRl
ZCB2aWEgZnJhZ21lbnQgY2hhbmdlcywgZXZlbiBpZiB0aGUgZnJhbWVzIHByZXNlbnQgaW4gdGhl
IGRvY3VtZW50IGNoYW5nZSBiZXR3ZWVuIGhpc3RvcnkgZW50cmllcy4nKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zv
cndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlz
dCgpOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgLy8gUnVuIGFmZXIgb25sb2Fk
LCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAg
IHNldFRpbWVvdXQoYmVnaW5UZXN0LCAwKTsKK30KKworb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgdmFyIGxvYyA9IGxvY2F0aW9uLmhyZWY7CisgICAgdmFyIGZpbGVuYW1lQW5k
UXVlcnkgPSBsb2Muc3Vic3RyaW5nKGxvYy5sYXN0SW5kZXhPZignLycpICsgMSk7CisgICAgZGVi
dWcoJ3BvcHN0YXRlIHRvIHN0YXRlOiAnICsgZXZlbnQuc3RhdGUgKyAnIGZpbGVuYW1lOiAnICsg
ZmlsZW5hbWVBbmRRdWVyeSk7CisgICAgCisgICAgaWYgKCFsb2NhdGlvbi5oYXNoKSB7CisgICAg
ICAgIGlmICh3ZW50QmFjaykgeworICAgICAgICAgICAgZGVidWcoJ2dvaW5nIGZvcndhcmQnKTsK
KyAgICAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChsb2NhdGlvbi5oYXNoID09ICcjbmV3U3RhdGUnKSB7CisgICAgICAgIGlmICghd2VudEJhY2sp
IHsKKyAgICAgICAgICAgIHdlbnRCYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgIGRlYnVnKCdnb2lu
ZyBiYWNrJyk7CisgICAgICAgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgnVW5leHBlY3RlZCBzdGF0ZScpOworICAgIH0KK307CisKKworZnVu
Y3Rpb24gYmVnaW5UZXN0KCkgCit7CisgICAgZGVidWcoJ3JlbW92aW5nIGlmcmFtZTInKTsKKyAg
ICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJh
bWUyJykpOworCisgICAgZGVidWcoJ25hdmlnYXRpbmcgdG8gI25ld1N0YXRlJyk7CisgICAgd2lu
ZG93LmxvY2F0aW9uLmhyZWYgPSAnI25ld1N0YXRlJzsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4gIAorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctcHVz
aHN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3Vt
ZW50LWlmcmFtZXMtY2hhbmdpbmctcHVzaHN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NWQyMTVlNzhjNGJjMzBiNzhkMjdmNTQ4NDgwYWI3M2FmODhlMGQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2lu
Zy1wdXNoc3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1Rlc3RzIHRoYXQgd2Ug
dHJpZ2dlciBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gd2hlbiBoaXN0b3J5IGVudHJpZXMgYXJl
IGdlbmVyYXRlZCB2aWEgcHVzaFN0YXRlLCBldmVuIGlmIHRoZSBmcmFtZXMgcHJlc2VudCBpbiB0
aGUgZG9jdW1lbnQgY2hhbmdlIGJldHdlZW4gaGlzdG9yeSBlbnRyaWVzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworcG9wc3RhdGUgdG8gc3RhdGU6IG51bGwgZmlsZW5hbWU6IHNh
bWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbAorcmVtb3ZpbmcgaWZy
YW1lMgorcHVzaFN0YXRlIHRvIG5ld1N0YXRlCitnb2luZyBiYWNrCitwb3BzdGF0ZSB0byBzdGF0
ZTogbnVsbCBmaWxlbmFtZTogc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLXB1c2hzdGF0
ZS5odG1sCitnb2luZyBmb3J3YXJkCitwb3BzdGF0ZSB0byBzdGF0ZTogbmV3U3RhdGUgZmlsZW5h
bWU6IHNhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbD9uZXdTdGF0
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnaWZyYW1lMScKKy0tLS0tLS0tCitpZnJhbWUxCisKKz09PT09PT09
PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CisgICAgICAgIChmaWxlIHRl
c3QpOmZhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctcHVzaHN0YXRl
Lmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgICAgICBkYXRhOnRleHQvcGxhaW4saWZyYW1l
MSAoaW4gZnJhbWUgImlmcmFtZTEiKQorICAgICAgICAgICAgZGF0YTp0ZXh0L3BsYWluLGlmcmFt
ZTIgKGluIGZyYW1lICJpZnJhbWUyIikKK2N1cnItPiAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0b3J5
L3NhbWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbD9uZXdTdGF0ZSAg
KipuYXYgdGFyZ2V0KioKKyAgICAgICAgICAgIGRhdGE6dGV4dC9wbGFpbixpZnJhbWUxIChpbiBm
cmFtZSAiaWZyYW1lMSIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1l
bnQtaWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdpbmctcHVzaHN0YXRlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzNkOTBhYzNhYTg4OTczMzJiMTZjOTcyMDI0OTNkYTdhMjY3NzRjMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMt
Y2hhbmdpbmctcHVzaHN0YXRlLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFET0NUWVBFIGh0bWw+
IAorPGh0bWw+IAorPGhlYWQ+IAorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8aWZyYW1lIHNy
Yz0iZGF0YTp0ZXh0L3BsYWluLGlmcmFtZTEiIGlkPSJpZnJhbWUxIj48L2lmcmFtZT4gCis8aWZy
YW1lIHNyYz0iZGF0YTp0ZXh0L3BsYWluLGlmcmFtZTIiIGlkPSJpZnJhbWUyIj48L2lmcmFtZT4g
CisKKzxzY3JpcHQ+Cit2YXIgd2VudEJhY2sgPSBmYWxzZTsKKworZGVzY3JpcHRpb24oJ1Rlc3Rz
IHRoYXQgd2UgdHJpZ2dlciBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gd2hlbiBoaXN0b3J5IGVu
dHJpZXMgYXJlIGdlbmVyYXRlZCB2aWEgcHVzaFN0YXRlLCBldmVuIGlmIHRoZSBmcmFtZXMgcHJl
c2VudCBpbiB0aGUgZG9jdW1lbnQgY2hhbmdlIGJldHdlZW4gaGlzdG9yeSBlbnRyaWVzLicpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFj
a0ZvcndhcmRMaXN0KCk7Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvLyBSdW4g
YWZlciBvbmxvYWQsIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBnZW5lcmF0ZSBoaXN0b3J5IGVu
dHJpZXMuCisgICAgc2V0VGltZW91dChiZWdpblRlc3QsIDApOworfQorCitvbnBvcHN0YXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgbG9jID0gbG9jYXRpb24uaHJlZjsKKyAgICB2YXIg
ZmlsZW5hbWVBbmRRdWVyeSA9IGxvYy5zdWJzdHJpbmcobG9jLmxhc3RJbmRleE9mKCcvJykgKyAx
KTsKKyAgICBkZWJ1ZygncG9wc3RhdGUgdG8gc3RhdGU6ICcgKyBldmVudC5zdGF0ZSArICcgZmls
ZW5hbWU6ICcgKyBmaWxlbmFtZUFuZFF1ZXJ5KTsKKyAgICAKKyAgICBpZiAoIWV2ZW50LnN0YXRl
KSB7CisgICAgICAgIGlmICh3ZW50QmFjaykgeworICAgICAgICAgICAgZGVidWcoJ2dvaW5nIGZv
cndhcmQnKTsKKyAgICAgICAgICAgIGhpc3RvcnkuZm9yd2FyZCgpOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChldmVudC5zdGF0ZSA9PSAnbmV3U3RhdGUnKSB7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1VuZXhwZWN0ZWQgc3Rh
dGUnKTsKKyAgICB9Cit9OworCisKK2Z1bmN0aW9uIGJlZ2luVGVzdCgpIAoreworICAgIGRlYnVn
KCdyZW1vdmluZyBpZnJhbWUyJyk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaWZyYW1lMicpKTsKKworICAgIGRlYnVnKCdwdXNoU3RhdGUg
dG8gbmV3U3RhdGUnKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZSgnbmV3U3RhdGUnLCBudWxsLCAn
P25ld1N0YXRlJyk7CisKKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgd2VudEJhY2sgPSB0cnVlOworICAgICAgICBkZWJ1ZygnZ29pbmcgYmFjaycpOworICAgICAg
ICBoaXN0b3J5LmJhY2soKTsKKyAgICB9LCAwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4gIAorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFjZmZhNTI2ZDZmOWRlYTUx
OGZhZjgwMDhlYTkzNTdkMTg2YTQ3OS4uNDYzNTk4ZDYzODYyMTFlNDM2YWFhZTQ5YWE1YzM1OWJl
YjExYzIzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wOS0yNyAgTWloYWkgUGFycGFyaXRhICA8bWlo
YWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSRUdSRVNTSU9OOiBwYWdlIHJlbG9hZCBvbiBiYWNrIGJ1dHRvbiBhZnRlciBo
aXN0b3J5LnB1c2hTdGF0ZSB3aXRoIGFwcGVhcmluZy9kaXNhcHBlYXJpbmcgaWZyYW1lcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzMjQKKyAgICAg
ICAgCisgICAgICAgIFJldmVydCBzYW1lIGRvY3VtZW50IGNoZWNrIHRvIHRoZSB3YXkgaXQgd2Fz
IGJlZm9yZSByNjYyMzggZm9yIGhpc3RvcnkKKyAgICAgICAgZW50cmllcyBjcmVhdGVkIGJ5IHB1
c2hTdGF0ZSBvciBmcmFnbWVudCBjaGFuZ2VzLiBMb2dpYyBmcm9yIGRldGVybWluaW5nCisgICAg
ICAgIGlmIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlvbiBzaG91bGQgYmUgdXNlZCBpcyBtb3ZlZCB0
byBIaXN0b3J5SXRlbS4KKworICAgICAgICBUZXN0czogZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1l
bnQtaWZyYW1lcy1jaGFuZ2luZy1mcmFnbWVudC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2hp
c3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLXB1c2hzdGF0ZS5odG1sCisKKyAg
ICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25Ubyk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyk6CisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5
SXRlbS5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZEl0ZW0pOgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSXRlbSk6CisKIDIw
MTAtMDktMjcgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBCdWls
ZCBmaXguIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5jcHAgYi9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDhhODRlMmU3
YThmYjc3NDgxNDVkNmY2OTA1ZjU4N2EyZmNiZTkwMjUuLjJkNmNhNThkZThjYzNkZmIzOWYxZGUz
ZGQ3ZDlmYWYxOTliNjNkZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5jcHAKKysrIGIvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtNDkwLDkgKzQ5
MCwyNiBAQCB2b2lkIEhpc3RvcnlJdGVtOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NoaWxkcmVu
LmNsZWFyKCk7CiB9CiAKKy8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpZiBnb2lu
ZyB0byBhIGRpZmZlcmVudCBpdGVtIGFuZCBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBpcyB0
cnVlOgorLy8gLSBUaGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBkb2N1bWVu
dCAoZm9yIGhpc3RvcnkgZW50cmllcyBjcmVhdGVkIHZpYSBwdXNoU3RhdGUgb3IgZnJhZ21lbnQg
Y2hhbmdlcykuCisvLyAtIFRoZSBvdGhlciBpdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHNl
dCBvZiBkb2N1bWVudHMsIGluY2x1ZGluZyBmcmFtZXMgKGZvciBoaXN0b3J5IGVudHJpZXMgY3Jl
YXRlZCB2aWEgcmVndWxhciBuYXZpZ2F0aW9uKQorYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9T
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK3sK
KyAgICBpZiAodGhpcyA9PSBvdGhlckl0ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChzdGF0ZU9iamVjdCgpIHx8IG90aGVySXRlbS0+c3RhdGVPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXIoKTsKKyAgICAKKyAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIHx8IG90aGVySXRlbS0+dXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS0+dXJsKCkpKQorICAg
ICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS0+ZG9jdW1l
bnRTZXF1ZW5jZU51bWJlcigpOyAgICAgICAgCisgICAgCisgICAgcmV0dXJuIGhhc1NhbWVEb2N1
bWVudFRyZWUob3RoZXJJdGVtKTsKK30KKwogLy8gRG9lcyBhIHJlY3Vyc2l2ZSBjaGVjayB0aGF0
IHRoaXMgaXRlbSBhbmQgaXRzIGRlc2NlbmRhbnRzIGhhdmUgdGhlIHNhbWUKIC8vIGRvY3VtZW50
IHNlcXVlbmNlIG51bWJlcnMgYXMgdGhlIG90aGVyIGl0ZW0uCi1ib29sIEhpc3RvcnlJdGVtOjpo
YXNTYW1lRG9jdW1lbnRzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pCitib29sIEhpc3RvcnlJdGVt
OjpoYXNTYW1lRG9jdW1lbnRUcmVlKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0CiB7CiAg
ICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAhPSBvdGhlckl0ZW0tPmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAzLDcgKzUyMCw3IEBA
IGJvb2wgSGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudHMoSGlzdG9yeUl0ZW0qIG90aGVySXRl
bSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKICAgICAg
ICAgSGlzdG9yeUl0ZW0qIG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhEb2N1
bWVudFNlcXVlbmNlTnVtYmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwotICAg
ICAgICBpZiAoIW90aGVyQ2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRzKG90aGVyQ2hp
bGQpKQorICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRU
cmVlKG90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NTEyLDcgKzUyOSw3IEBAIGJvb2wgSGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudHMoSGlzdG9y
eUl0ZW0qIG90aGVySXRlbSkKIAogLy8gRG9lcyBhIG5vbi1yZWN1cnNpdmUgY2hlY2sgdGhhdCB0
aGlzIGl0ZW0gYW5kIGl0cyBpbW1lZGlhdGUgY2hpbGRyZW4gaGF2ZSB0aGUKIC8vIHNhbWUgZnJh
bWVzIGFzIHRoZSBvdGhlciBpdGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKQorYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAogewogICAgIGlmICh0YXJnZXQoKSAhPSBvdGhl
ckl0ZW0tPnRhcmdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBiL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5o
CmluZGV4IGIxMWE5MmViNDIxYWFmNmQ0MmY4ODc2Y2UyN2EyMDI3Y2RiNDA5MmYuLmVmOWFjMjNm
NjM5OGFiM2E3OTFhMTNiMWVmZTlkNzRmZTViZTA5ODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCkBA
IC0xNjEsOCArMTYxLDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsK
ICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKICAgICAKLSAgICBib29sIGhhc1NhbWVEb2N1bWVu
dHMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSk7Ci0gICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3Rv
cnlJdGVtKiBvdGhlckl0ZW0pOworICAgIGJvb2wgc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRnJh
bWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgLy8gVGhpcyBzaG91bGQg
bm90IGJlIGNhbGxlZCBkaXJlY3RseSBmb3IgSGlzdG9yeUl0ZW1zIHRoYXQgYXJlIGFscmVhZHkg
aW5jbHVkZWQKICAgICAvLyBpbiBHbG9iYWxIaXN0b3J5LiBUaGUgV2ViS2l0IGFwaSBmb3IgdGhp
cyBpcyB0byB1c2UgLVtXZWJIaXN0b3J5IHNldExhc3RWaXNpdGVkVGltZUludGVydmFsOmZvckl0
ZW06XSBpbnN0ZWFkLgpAQCAtMjE4LDYgKzIxOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWRE
YWlseUNvdW50c0Zvck5ld1Zpc2l0KGRvdWJsZSB0aW1lKTsKICAgICB2b2lkIGNvbGxhcHNlRGFp
bHlWaXNpdHNUb1dlZWtseSgpOwogICAgIHZvaWQgcmVjb3JkVmlzaXRBdFRpbWUoZG91YmxlLCBW
aXNpdENvdW50QmVoYXZpb3IgPSBJbmNyZWFzZVZpc2l0Q291bnQpOworICAgIAorICAgIGJvb2wg
aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKIAogICAg
IEhpc3RvcnlJdGVtKiBmaW5kVGFyZ2V0SXRlbSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5k
ZXggOTczYWFiNzlkZDFmMjY2MGJkZjEyM2I2MzM0OGI3ZTFiZGY5NTA2My4uZTAzMDEyMjhhOTE4
NmVhY2EyZTk2OTM5ZTdiODJmOGZiYjk0NTA3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzIyOCwxMiArMzIyOCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om5hdmlnYXRlVG9EaWZmZXJlbnRE
b2N1bWVudChIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsCiAvLyBMb2FkcyBjb250
ZW50IGludG8gdGhpcyBmcmFtZSwgYXMgc3BlY2lmaWVkIGJ5IGhpc3RvcnkgaXRlbQogdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9h
ZFR5cGUpCiB7Ci0gICAgLy8gV2UgZG8gc2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIGluIHRoZSBm
b2xsb3dpbmcgY2FzZXM6Ci0gICAgLy8gLSBUaGUgSGlzdG9yeUl0ZW0gY29ycmVzcG9uZHMgdG8g
dGhlIHNhbWUgZG9jdW1lbnQgKG9yIGRvY3VtZW50cyBpbiB0aGUgY2FzZSBvZiBmcmFtZXMpLgot
ICAgIC8vIC0gVGhlIEhpc3RvcnlJdGVtIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBp
dGVtLgogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS0+Y3VycmVudEl0
ZW0oKTsKLSAgICBib29sIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBjdXJyZW50SXRlbSAmJiBp
dGVtICE9IGN1cnJlbnRJdGVtCi0gICAgICAgICYmIGl0ZW0tPmhhc1NhbWVEb2N1bWVudHMoY3Vy
cmVudEl0ZW0pOworICAgIGJvb2wgc2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVt
ICYmIGl0ZW0tPnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKGN1cnJlbnRJdGVtKTsK
IAogI2lmIEVOQUJMRShXTUwpCiAgICAgLy8gQWxsIFdNTCBkZWNrcyBzaG91bGQgZ28gdGhyb3Vn
aCB0aGUgcmVhbCBsb2FkIG1lY2hhbmlzbSwgbm90IHRoZSBzY3JvbGwtdG8tYW5jaG9yIGNvZGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>