<?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>50254</bug_id>
          
          <creation_ts>2010-11-30 11:19:43 -0800</creation_ts>
          <short_desc>Canceled frame loads can corrupt back forward list</short_desc>
          <delta_ts>2011-01-08 17:27:39 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Charles Reis">creis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>mihaip</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>315183</commentid>
    <comment_count>0</comment_count>
      <attachid>75173</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-11-30 11:19:43 -0800</bug_when>
    <thetext>Created attachment 75173
Forward and cancel frame test

If a page load is canceled, FrameLoader::checkLoadCompleteForThisFrame resets the back forward list to the previously committed history item, using:
  page-&gt;backForward()-&gt;setCurrentItem(item.get());

However, this logic only runs if the canceled page load is a main frame.  If a frame load is canceled, the back forward list is left pointing to the canceled item.  This leads to incorrect behavior if the user goes back or forward.

The attached test case can demonstrate this if copied to LayoutTests/http/tests/navigation/.  Going back after canceling the frame load copies the 3rd entry into the 2nd slot.

Not sure what the fix is yet, since calling setCurrentItem on subframe loads doesn&apos;t help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322945</commentid>
    <comment_count>1</comment_count>
      <attachid>76713</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2010-12-15 16:57:54 -0800</bug_when>
    <thetext>Created attachment 76713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325184</commentid>
    <comment_count>2</comment_count>
      <attachid>76713</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-12-21 13:52:33 -0800</bug_when>
    <thetext>Comment on attachment 76713
Patch

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

&gt; WebCore/loader/FrameLoader.cpp:2390
&gt; +                        page-&gt;mainFrame()-&gt;loader()-&gt;history()-&gt;cancelCurrentItem();

The name cancelCurrentItem is not so great.  You aren&apos;t really cancelling it.
You are cancelling / reverting the switch to it.

Also, it seems like you might need to cancel more than just the current item
of the top-level frame.  What if m_frame is actually a grandchild of the main
frame?  What about other sibling frames that aren&apos;t navigating?  R- because
of this issue.

I wonder if we shouldn&apos;t be making use of HistoryController::m_provisionalItem
more.  It seems like we shouldn&apos;t commit to changing m_currentItem until we
know that it is going to stick.  Although that might be a much larger change :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329691</commentid>
    <comment_count>3</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-05 11:42:00 -0800</bug_when>
    <thetext>I&apos;m trying a new approach with this bug.  I agree that we shouldn&apos;t be updating m_currentItem until the navigation is ready to commit, so it seems like recursiveGoToItem needs to change.  I&apos;m taking your suggestion and setting m_provisionalItem in each of the frames of the tree until the commit, instead.

There&apos;s one wrinkle here that makes it more complicated.  While we are walking the frame tree with recursiveGoToItem and setting provisional items, it is possible for the actual navigation to immediately commit (on URLs like about:blank) *before* we visit the rest of the frames.  This means that a series of commit related events like updateForCommit, updateForFrameLoadCompleted, and the SetContentState calls in TestShell can all happen before we&apos;ve set the provisional items on the remaining frames in the tree.

To clean this up, I&apos;ll split recursiveGoToItem into two phases: one that sets provisional items on all the frames that aren&apos;t going anywhere, and a second that navigates the desired frame(s).  As a result, we&apos;ll be ready if the navigation commits immediately.

I&apos;ll also have to fix updateForCommit to walk the frame tree and commit each of the provisional items afterward.  This will also restore their scroll position, instead of doing it in recursiveGoToItem.

I have a draft of a patch that seems to be working, and I&apos;ll upload it once it&apos;s cleaned up and passing all the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329841</commentid>
    <comment_count>4</comment_count>
      <attachid>78057</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-05 15:45:28 -0800</bug_when>
    <thetext>Created attachment 78057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330227</commentid>
    <comment_count>5</comment_count>
      <attachid>78057</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-06 10:57:40 -0800</bug_when>
    <thetext>Comment on attachment 78057
Patch

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

&gt; WebCore/loader/HistoryController.cpp:243
&gt; +    recursiveGoToProvisionalItem(targetItem, currentItem, type);

recursiveSetProvisionalItem seems like a more appropriate name, since it doesn&apos;t actually do any navigating/&quot;going.&quot;

&gt; WebCore/loader/HistoryController.cpp:423
&gt; +    if (m_provisionalItem) {

Seems better to have a !m_provisionalItem early return, so that the rest function body isn&apos;t indented by an extra level.

&gt; WebCore/loader/HistoryController.cpp:601
&gt; +// a match (by URL), we set the provisional item and recurse.  Otherwise we will reload

This comment should probably be updated or removed, we no longer match by URL (it&apos;s by item sequence number and frame name now).

&gt; WebCore/loader/HistoryController.cpp:643
&gt; +    if (item != fromItem 

The logic to see if the items/frames match seems complex enough that it shouldn&apos;t be repeated in recursiveGoToProvisionalItem and recursiveGoToItem, and instead moved to a itemTransitionNeedsLoad(item1, item2) helper method (possibly with a better name than that).

&gt; LayoutTests/http/tests/navigation/forward-and-cancel.html:16
&gt; +    layoutTestController.queueLoad(&quot;javascript:frames[0].clickLink();&quot;);

Do you actually need to use the javascript: URI scheme, or can this be queueNonLoadingScript(&quot;frames[0].clickLink()&quot;)?

&gt; LayoutTests/http/tests/navigation/forward-and-cancel.html:27
&gt; +    layoutTestController.queueLoadingScript(&quot;layoutTestController.waitUntilDone();&quot;);

Do you need to use queueLoadingScript, or can you just call layoutTestController.waitUntilDone() directly at the top, where you call dumpAsText and other setup code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330484</commentid>
    <comment_count>6</comment_count>
      <attachid>78057</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-06 15:25:06 -0800</bug_when>
    <thetext>Comment on attachment 78057
Patch

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

Thanks for the feedback.  New patch on the way!

&gt;&gt; WebCore/loader/HistoryController.cpp:243
&gt;&gt; +    recursiveGoToProvisionalItem(targetItem, currentItem, type);
&gt; 
&gt; recursiveSetProvisionalItem seems like a more appropriate name, since it doesn&apos;t actually do any navigating/&quot;going.&quot;

Done.

&gt;&gt; WebCore/loader/HistoryController.cpp:423
&gt;&gt; +    if (m_provisionalItem) {
&gt; 
&gt; Seems better to have a !m_provisionalItem early return, so that the rest function body isn&apos;t indented by an extra level.

Done.

&gt;&gt; WebCore/loader/HistoryController.cpp:601
&gt;&gt; +// a match (by URL), we set the provisional item and recurse.  Otherwise we will reload
&gt; 
&gt; This comment should probably be updated or removed, we no longer match by URL (it&apos;s by item sequence number and frame name now).

Done.

&gt;&gt; WebCore/loader/HistoryController.cpp:643
&gt;&gt; +    if (item != fromItem 
&gt; 
&gt; The logic to see if the items/frames match seems complex enough that it shouldn&apos;t be repeated in recursiveGoToProvisionalItem and recursiveGoToItem, and instead moved to a itemTransitionNeedsLoad(item1, item2) helper method (possibly with a better name than that).

Good idea.  Done.

&gt;&gt; LayoutTests/http/tests/navigation/forward-and-cancel.html:16
&gt;&gt; +    layoutTestController.queueLoad(&quot;javascript:frames[0].clickLink();&quot;);
&gt; 
&gt; Do you actually need to use the javascript: URI scheme, or can this be queueNonLoadingScript(&quot;frames[0].clickLink()&quot;)?

It needs to be queueLoadingScript, but yes, that&apos;s better.

&gt;&gt; LayoutTests/http/tests/navigation/forward-and-cancel.html:27
&gt;&gt; +    layoutTestController.queueLoadingScript(&quot;layoutTestController.waitUntilDone();&quot;);
&gt; 
&gt; Do you need to use queueLoadingScript, or can you just call layoutTestController.waitUntilDone() directly at the top, where you call dumpAsText and other setup code?

I can&apos;t seem to get it to work if I call waitUntilDone() directly-- it always hangs on the first page without doing any of the queued navigations.

I did make the notifyDone() call only happen on the second visit to the page, but that didn&apos;t help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330485</commentid>
    <comment_count>7</comment_count>
      <attachid>78175</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-06 15:25:28 -0800</bug_when>
    <thetext>Created attachment 78175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330610</commentid>
    <comment_count>8</comment_count>
      <attachid>78175</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-06 18:51:50 -0800</bug_when>
    <thetext>Comment on attachment 78175
Patch

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

&gt; WebCore/loader/HistoryController.cpp:657
&gt; +    // Note: If item1 and item2 are the same, then we need to create a new

This comment (which I realize predates your patch, you just moved it around) always bothered me, since it&apos;s just stating what the code does, but doesn&apos;t explain why that behavior is desired/necessary.  Based on http://webkit.org/b/35532 (which is the oldest reference to it that I can find), it seems like some WebKit clients use navigation to the current history item as a reload mechanism. Perhaps you can mention that (and/or the bug number) so that the comment provides some justification for the behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330827</commentid>
    <comment_count>9</comment_count>
      <attachid>78175</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-07 09:56:47 -0800</bug_when>
    <thetext>Comment on attachment 78175
Patch

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

New patch ready for review.

&gt;&gt; WebCore/loader/HistoryController.cpp:657
&gt;&gt; +    // Note: If item1 and item2 are the same, then we need to create a new
&gt; 
&gt; This comment (which I realize predates your patch, you just moved it around) always bothered me, since it&apos;s just stating what the code does, but doesn&apos;t explain why that behavior is desired/necessary.  Based on http://webkit.org/b/35532 (which is the oldest reference to it that I can find), it seems like some WebKit clients use navigation to the current history item as a reload mechanism. Perhaps you can mention that (and/or the bug number) so that the comment provides some justification for the behavior?

Thanks for figuring out why it&apos;s the case!  I&apos;ve updated the comment as you suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330828</commentid>
    <comment_count>10</comment_count>
      <attachid>78246</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-07 09:57:08 -0800</bug_when>
    <thetext>Created attachment 78246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330841</commentid>
    <comment_count>11</comment_count>
      <attachid>78246</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-07 10:18:44 -0800</bug_when>
    <thetext>Comment on attachment 78246
Patch

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

You should also rebaseline your patch against ToT, otherwise the commit queue may have trouble landing your change (at least the review tool can&apos;t apply your changes to FrameLoader.cpp to tip of tree).

&gt; WebCore/loader/HistoryController.cpp:657
&gt; +    // Note: Some clients treat a navigatation to the current history item as

Typo (navigatation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330884</commentid>
    <comment_count>12</comment_count>
      <attachid>78252</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-01-07 11:39:54 -0800</bug_when>
    <thetext>Created attachment 78252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331328</commentid>
    <comment_count>13</comment_count>
      <attachid>78252</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-08 17:27:34 -0800</bug_when>
    <thetext>Comment on attachment 78252
Patch

Clearing flags on attachment: 78252

Committed r75336: &lt;http://trac.webkit.org/changeset/75336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331329</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-08 17:27:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>75173</attachid>
            <date>2010-11-30 11:19:43 -0800</date>
            <delta_ts>2010-11-30 11:19:43 -0800</delta_ts>
            <desc>Forward and cancel frame test</desc>
            <filename>forward-and-cancel-test.zip</filename>
            <type>application/zip</type>
            <size>1719</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">UEsDBBQAAAAIAOpZfj1h5q+Q6QEAAM4EAAAXABwAZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWxVVAkA
A0hN9UyLTfVMdXgLAAEEMiABAASIEwAArZRNj9MwEIbv/RWjXjaV2nSXIxsqLSAQUtULRZynySTx
1rWDPW6IEP+diZOK3WrVLhI5WfJ8PO8742Q+d6rh1USVkLTKFLZNNXY28JY8f7CGndWa3Ax+TUC+
l+7SIhya95jvP1nXoivWynMyu78c/+C39PNy2I9AgdYWi2TqyNvgcvLLcuixQFMscjQ56UXp8EA+
rfmgp6+s94hHHJS/zbXK92tl9sJyPb2XucGjqpCVNcmdJMSM5RI+WxjhgC14bVuIZHPYBQbPtgGn
qpoBW+xSgG2tPPjaBl2A6CMGrulUbPfXTtDiZ19SrqFxdFQ2eCDh6tIrtBtrer3KVF+j2GQqbbbq
QBKf3Eh/tlJkpBb9N/Pb2T08jRlXoqeP93e3g0snzo2orGzE7REPuCfwwVGE3T3fCRC9xjLk1rnQ
MBX/B7/vEtnenLF9R8UQDCsNLUElBp8wube+wYquEZy1fzGwlTbf+i4fraFxiX5PsuXpZWXNKo6a
JQ3ymvK9nGvkc4uGOZ97BG1NBnBYJdDC04cMm987KNW/lLG2cIr/JqDW3RwyhNpR+e71T2cVXwLU
5Chb4iqdTLJ//DmI51GpNbqDGj2gASpLynlQIVNwxMGZZzOA0QoyBdgyHns5F0YjBqmyG+1+6vUf
UEsDBBQAAAAIAFyRfT1FAyBL+wAAAIQCAAAfABwAZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVk
LnR4dFVUCQADMF30TEtd9Ex1eAsAAQQyIAEABIgTAACtkM1qwzAQhO96iiWn1lT+6aXFkBx6KBR6
7Aus5XUkLEtGWtf07Ss7ycE0tAQ6Av3Ax8xoAcSHNhGYIoPSpPp018hpI2hQ9a8+zBhasCYBCXQ+
cT6EaWRqYdbkAKELOBBYj+2CKHSKLLW5EG/d6mzcEQZ0E1r79QDKGtWDpkCJ2G8ELykSLpnvS+YW
EGoKQR4ANPNYF0X1+JSXaVX1c1mWhcNPc0Q23hXdyUSia+WpUa55sABZlihgDEfiLBNw1p+GgaKf
gqJ4xVquE4i/JyzCxk9cNxZdD3fGnSe3W49qd///bTbpN7hG62d5ecpKRlL5aK91/vHf/W0S31BL
AwQUAAAACABkkX09kZ2PF4EBAACUAgAAKAAcAHJlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwt
ZnJhbWVzLmh0bWxVVAkAAztd9ExJXfRMdXgLAAEEMiABAASIEwAAdZHBbtswDIbveQpCpwRI7Pa6
OT4UyIAC3al9AUaia8Gy5FFSjGLYu4+Slw47zDDkH9ZH8ifZRc12Sf1uyF4nGzxoZ/X0Yv20P8DP
HUDbwquds8NEgDCHHGljQGAEJyQk5HdK1r9DGgkGxpkaCb0hA90SnMEEnWfyqdFMkuhyE71X30uy
qqM6fJUAgRvrbfp7sVe1ljpC4kz3c7XehPUoEeV5OP7zDugi/ecj1z47V4t9ehLrF0dFPn08m70q
LalDY2xcMOlx8yHWJOrXrmvvE+tsbRSsOauqHhVE1meF15DTl6tDSdN37YYJf2U5lv5ttBESxQR6
JD2JHjHVwV1RT98Cr8hG5iqAgD4IF5jzksjAOlIZ+lbYBTQF0eg1OTJNyf481NxlFzP6jM59QIfV
ZO0LRqbhrKIL64kphsyaTo+nSLpZnPqzyc+G+m3TIzF1LfaA3hSnHp7EagPwVvTG3I0X5EeWP1J4
u3lNYRH24mNm2rot4ZW8R4lj52ANPDW731BLAQIeAxQAAAAIAOpZfj1h5q+Q6QEAAM4EAAAXABgA
AAAAAAEAAACggQAAAABmb3J3YXJkLWFuZC1jYW5jZWwuaHRtbFVUBQADSE31THV4CwABBDIgAQAE
iBMAAFBLAQIeAxQAAAAIAFyRfT1FAyBL+wAAAIQCAAAfABgAAAAAAAEAAACggToCAABmb3J3YXJk
LWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0VVQFAAMwXfRMdXgLAAEEMiABAASIEwAAUEsBAh4DFAAA
AAgAZJF9PZGdjxeBAQAAlAIAACgAGAAAAAAAAQAAAKCBjgMAAHJlc291cmNlcy9mb3J3YXJkLWFu
ZC1jYW5jZWwtZnJhbWVzLmh0bWxVVAUAAztd9Ex1eAsAAQQyIAEABIgTAABQSwUGAAAAAAMAAwAw
AQAAcQUAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76713</attachid>
            <date>2010-12-15 16:57:54 -0800</date>
            <delta_ts>2011-01-05 15:45:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50254-20101215165753.patch</filename>
            <type>text/plain</type>
            <size>8490</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDE2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTItMTUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW5jZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAg
ICBSZXNldHMgdG9wLWxldmVsIGhpc3RvcnkgaXRlbXMgaWYgYSBzdWJmcmFtZSBuYXZpZ2F0aW9u
IGlzIGNhbmNlbGVkLgorCisgICAgICAgICogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6
CisgICAgICAgICogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaDoKKwogMjAxMC0x
Mi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBNYXJyaW4uCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA3NDE2MCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMzNiw5ICsyMzM2LDIxIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENv
bXBsZXRlRm9yVGgKIAogICAgICAgICAgICAgLy8gQ2hlY2sgYWxsIGNoaWxkcmVuIGZpcnN0Lgog
ICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtOwotICAgICAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgaWYgKGlzQmFja0Zv
cndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgp
KQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9yeSgpLT5jdXJyZW50SXRlbSgpOwor
ICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBlKCkpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX2ZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0IHRoZSBiYWNrIGZvcndhcmQgbGlz
dCB0byB0aGUgbGFzdCBjb21taXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhpc3Rv
cnkgaXRlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBoaXN0b3J5KCktPmN1cnJl
bnRJdGVtKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBuZWVkIHRvIHJlc2V0IHRoZSBiYWNrIGZvcndhcmQgbGlzdCB0byB0aGUg
Y29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG9wLWxldmVsIGhpc3Rv
cnkgaXRlbSwgd2hpY2ggaXMgY3VycmVudGx5IHRoZSBtYWluIGZyYW1lJ3MKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHByZXZpb3VzIGl0ZW0gKGJlY2F1c2UgcmVjdXJzaXZlR29Ub0l0ZW0g
aGFzIHNldCB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlbSBhbHJl
YWR5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+cHJldmlvdXNJdGVtKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBib29sIHNob3VsZFJlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICghKHBk
bC0+aXNMb2FkaW5nSW5BUElTZW5zZSgpICYmICFwZGwtPmlzU3RvcHBpbmcoKSkpIHsKQEAgLTIz
NzEsNiArMjM4MywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRo
CiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVt
KGl0ZW0uZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2ZyYW1lLT5zZXR0aW5ncygpOwogICAgICAgICAgICAgICAgICAgICBwYWdlLT5zZXRHbG9iYWxI
aXN0b3J5SXRlbSgoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkpID8gMCA6IGl0ZW0uZ2V0KCkpOworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMg
aXMgYSBzdWJmcmFtZSwgd2UgaGF2ZSBhbHNvIG1vZGlmaWVkIHRoZSB0b3AtbGV2ZWwgaGlzdG9y
eSdzCisgICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgaXRlbSBpbiByZWN1cnNpdmVHb1Rv
SXRlbSwgYW5kIHdlIG5lZWQgdG8gcmVzZXQgaXQuCisgICAgICAgICAgICAgICAgICAgIGlmICht
X2ZyYW1lICE9IHBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5oaXN0b3J5KCktPmNhbmNlbEN1cnJlbnRJdGVtKCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NDE2MCkKKysrIFdl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4
LDYgKzQ0OCwxMSBAQCBib29sIEhpc3RvcnlDb250cm9sbGVyOjpjdXJyZW50SXRlbVNob3VsCiAg
ICAgcmV0dXJuIG1fY3VycmVudEl0ZW0gJiYgIW1fcHJldmlvdXNJdGVtICYmIGVxdWFsSWdub3Jp
bmdDYXNlKG1fY3VycmVudEl0ZW0tPnVybFN0cmluZygpLCBibGFua1VSTCgpKTsKIH0KIAordm9p
ZCBIaXN0b3J5Q29udHJvbGxlcjo6Y2FuY2VsQ3VycmVudEl0ZW0oKQoreworICAgIG1fY3VycmVu
dEl0ZW0gPSBtX3ByZXZpb3VzSXRlbTsKK30KKwogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0
UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogewogICAgIG1fcHJvdmlzaW9uYWxJ
dGVtID0gaXRlbTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAkocmV2aXNpb24g
NzQxNjApCisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhp
c3RvcnlJdGVtKik7CiAgICAgdm9pZCBzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZyYp
OwogICAgIGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CisgICAgdm9p
ZCBjYW5jZWxDdXJyZW50SXRlbSgpOwogCiAgICAgSGlzdG9yeUl0ZW0qIHByZXZpb3VzSXRlbSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXNJdGVtLmdldCgpOyB9CiAKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc0MTYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTAtMTItMTUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW5j
ZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAgICBo
dHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwgYWJvcnRzIGEgc2xv
d2x5IGxvYWRpbmcKKyAgICAgICAgZnJhbWUgYW5kIGVuc3VyZXMgdGhlIGhpc3RvcnkgaXRlbXMg
YXJlIHVwZGF0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNl
bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbDogQWRkZWQuCisKIDIw
MTAtMTItMTUgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMg
bm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KKworSWYgdGVzdGlu
ZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExp
c3QgPT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRp
b24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwt
ZnJhbWVzLmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgICAgICBhYm91dDpibGFuayAoaW4g
ZnJhbWUgImZyYW1lMSIpCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwKKyAgICAgICAgICAgIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zbG93LXJlc291cmNlLTEt
c2VjLnBsIChpbiBmcmFtZSAiZnJhbWUxIikgICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3
YXJkLWFuZC1jYW5jZWwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3Vy
Y2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlTG9hZCgiamF2YXNjcmlwdDpjbGlja0xpbmsoKTsiKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworCisgICAgLy8gR28gZm9yd2Fy
ZCB0byBzbG93IGZyYW1lLCBidXQgc3RvcCByaWdodCBhd2F5LiAgVGhpcyBzaG91bGQgcmVzZXQg
dGhlCisgICAgLy8gYmFja0ZvcndhcmQgbGlzdCB0byB0aGUgcHJldmlvdXMgZW50cnkuCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0KCdo
aXN0b3J5LmZvcndhcmQoKTsnLDApOyBzZXRUaW1lb3V0KCd3aW5kb3cuc3RvcCgpOycsMTApOyIp
OworCisgICAgLy8gTm93IGdvIGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBiYWNrRm9yd2FyZExpc3Qg
aXMgbm90IGNvcnJ1cHRlZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZU5vbkxvYWRp
bmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuYmFjaygpOycsNTApOyIpOworCisgICAgLy8g
V2FpdCB1bnRpbCB3ZSBnZXQgYmFjayB0byB0aGlzIHBhZ2UuCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIucXVldWVMb2FkaW5nU2NyaXB0KCJsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Iik7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYmFj
a0ZvcndhcmQgbGlzdCBpcyBub3QgY29ycnVwdGVkIHdoZW4gYSBmcmFtZSBsb2FkIGlzIGNhbmNl
bGVkLgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2ZvcndhcmQt
YW5kLWNhbmNlbC1mcmFtZXMuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCisKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgLy8gVGhpcyBvbmx5IGhhcyBhbiBl
ZmZlY3Qgd2hlbiB3ZSByZXR1cm4gdG8gdGhpcyBwYWdlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qu
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQt
YW5kLWNhbmNlbC1mcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACis8c2NyaXB0PgorZnVuY3Rpb24gY2xpY2tMaW5rKCkgeworICAvLyBTaW11bGF0ZSBh
IG1vdXNlIGNsaWNrIG9uIGEgbGluayB0YXJnZXRpbmcgdGhlIGZyYW1lLgorICB2YXIgZXZ0ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7CisgIGV2dC5pbml0TW91c2VFdmVu
dCgiY2xpY2siLCB0cnVlLCB0cnVlLCB3aW5kb3csCisgICAgICAwLCAwLCAwLCAwLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsaW5rIikuZGlzcGF0Y2hFdmVudChldnQpOworfQorPC9zY3JpcHQ+Cis8aWZyYW1lIGlk
PSJmcmFtZTEiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorPGJyPgorPHA+VGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSBiYWNrRm9yd2FyZCBsaXN0IGlzIG5vdCBjb3JydXB0ZWQgd2hlbiBh
IGZyYW1lIGxvYWQgaXMgY2FuY2VsZWQuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBpZD0i
bGluayIgaHJlZj0ic2xvdy1yZXNvdXJjZS0xLXNlYy5wbCIgdGFyZ2V0PSJmcmFtZTEiPmNsaWNr
IGhlcmU8L2E+IGFuZCB0aGVuIEJhY2suICBUaGVuIGNsaWNrIEZvcndhcmQgYW5kIHF1aWNrbHkg
Y2xpY2sgU3RvcC4gIEVuc3VyZSB0aGF0IEJhY2sgYW5kIEZvcndhcmQgc3RpbGwgd29yay4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78057</attachid>
            <date>2011-01-05 15:45:28 -0800</date>
            <delta_ts>2011-01-06 15:25:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50254-20110105154526.patch</filename>
            <type>text/plain</type>
            <size>14915</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW5jZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAg
ICBBdm9pZHMgY2hhbmdpbmcgbV9jdXJyZW50SXRlbSB1bnRpbCB0aGUgbmF2aWdhdGlvbiBjb21t
aXRzLgorICAgICAgICBBbHNvIHJlc2V0cyB0b3AtbGV2ZWwgaGlzdG9yeSBpdGVtcyBpZiBhIHN1
YmZyYW1lIG5hdmlnYXRpb24gaXMgY2FuY2VsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oOgorCiAyMDEwLTEyLTE1ICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJv
ZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzNyw4ICsyMzM3LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAogICAgICAgICAgICAgLy8gQ2hlY2sg
YWxsIGNoaWxkcmVuIGZpcnN0LgogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
OwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1l
ID09IHBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9y
eSgpLT5jdXJyZW50SXRlbSgpOworICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobG9hZFR5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBiYWNr
IGZvcndhcmQgbGlzdCB0byB0aGUgbGFzdCBjb21taXR0ZWQgaGlzdG9yeSBpdGVtIGF0IHRoZSB0
b3AgbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCEocGRs
LT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIXBkbC0+aXNTdG9wcGluZygpKSkgewpJbmRleDog
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzQxNjcpCisrKyBXZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2
ICsyMzUsMTMgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9yeQogICAg
IHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgcGFnZS0+c2V0R2xv
YmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKSA/IDAgOiB0YXJnZXRJdGVtKTsKKworICAgIC8vIEZpcnN0IHNldCB0aGUgcHJvdmlz
aW9uYWwgaXRlbSBvZiBhbnkgZnJhbWVzIHRoYXQgYXJlIG5vdCBhY3R1YWxseSBuYXZpZ2F0aW5n
LgorICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0cnlpbmcgdG8gbmF2aWdhdGUgdGhl
IGRlc2lyZWQgZnJhbWUsIGJlY2F1c2Ugc29tZQorICAgIC8vIG5hdmlnYXRpb25zIGNhbiBjb21t
aXQgaW1tZWRpYXRlbHkgKHN1Y2ggYXMgYWJvdXQ6YmxhbmspLiAgV2UgbXVzdCBiZSBzdXJlIHRo
YXQKKyAgICAvLyBhbGwgZnJhbWVzIGhhdmUgcHJvdmlzaW9uYWwgaXRlbXMgc2V0IGJlZm9yZSB0
aGUgY29tbWl0LgorICAgIHJlY3Vyc2l2ZUdvVG9Qcm92aXNpb25hbEl0ZW0odGFyZ2V0SXRlbSwg
Y3VycmVudEl0ZW0sIHR5cGUpOworICAgIC8vIE5vdyB0aGF0IGFsbCBvdGhlciBmcmFtZXMgaGF2
ZSBwcm92aXNpb25hbCBpdGVtcywgZG8gdGhlIGFjdHVhbCBuYXZpZ2F0aW9uLgogICAgIHJlY3Vy
c2l2ZUdvVG9JdGVtKHRhcmdldEl0ZW0sIGN1cnJlbnRJdGVtLCB0eXBlKTsKIH0KIApAQCAtMzk5
LDYgKzQwNiw0NiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoCiAg
ICAgICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsSXRlbSk7CiAgICAgICAgIG1fY3VycmVudEl0ZW0g
PSBtX3Byb3Zpc2lvbmFsSXRlbTsKICAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOworCisg
ICAgICAgIC8vIFRlbGwgYWxsIG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhl
aXIgcHJvdmlzaW9uYWwgaXRlbXMgYW5kCisgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xs
IHBvc2l0aW9uLiAgV2UnbGwgYXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKKyAg
ICAgICAgLy8gY29tbWl0dGVkKSBhbmQgaXRzIGNoaWxkcmVuICh3aGljaCB3aWxsIGJlIHJlcGxh
Y2VkKS4KKyAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgQVNT
RVJUKHBhZ2UpOworICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3Rvcnko
KS0+cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7CisgICAgfQorfQorCit2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQoreworICAgIC8vIFRoZSBmcmFt
ZSB0aGF0IG5hdmlnYXRlZCB3aWxsIG5vdyBoYXZlIGEgbnVsbCBwcm92aXNpb25hbCBpdGVtLgor
ICAgIC8vIElnbm9yZSBpdCBhbmQgaXRzIGNoaWxkcmVuLgorICAgIGlmIChtX3Byb3Zpc2lvbmFs
SXRlbSkgeworICAgICAgICAvLyBGb3IgZWFjaCBmcmFtZSB0aGF0IGFscmVhZHkgaGFkIHRoZSBj
b250ZW50IHRoZSBpdGVtIHJlcXVlc3RlZCAoYmFzZWQgb24KKyAgICAgICAgLy8gKGEgbWF0Y2hp
bmcgVVJMIGFuZCBmcmFtZSB0cmVlIHNuYXBzaG90KSwganVzdCByZXN0b3JlIHRoZSBzY3JvbGwg
cG9zaXRpb24uCisgICAgICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50
SXRlbSwgc2luY2UgbV9mcmFtZUxvYWRDb21wbGV0ZSBpcyB0cnVlKQorICAgICAgICBBU1NFUlQo
bV9mcmFtZUxvYWRDb21wbGV0ZSk7CisgICAgICAgIHNhdmVEb2N1bWVudFN0YXRlKCk7CisgICAg
ICAgIHNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX2N1cnJlbnRJdGVtLmdl
dCgpKTsKKworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQor
ICAgICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOworCisgICAgICAg
IC8vIE5vdyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0KKyAgICAgICAgbV9mcmFtZUxvYWRD
b21wbGV0ZSA9IGZhbHNlOworICAgICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07
CisgICAgICAgIG1fY3VycmVudEl0ZW0gPSBtX3Byb3Zpc2lvbmFsSXRlbTsKKyAgICAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSAwOworCisgICAgICAgIC8vIFJlc3RvcmUgZm9ybSBzdGF0ZSAod29y
a3MgZnJvbSBjdXJyZW50SXRlbSkKKyAgICAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKKwor
ICAgICAgICAvLyBSZXN0b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gKHdlIGNob29zZSB0byBkbyB0
aGlzIHJhdGhlciB0aGFuIGdvaW5nIGJhY2sgdG8gdGhlIGFuY2hvciBwb2ludCkKKyAgICAgICAg
cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisKKyAgICAgICAgLy8gSXRlcmF0
ZSBvdmVyIHRoZSByZXN0IG9mIHRoZSB0cmVlCisgICAgICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZC0+bG9hZGVyKCktPmhpc3Rvcnko
KS0+cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7CiAgICAgfQogfQogCkBAIC01NTEsOSArNTk4
LDkgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogCiAvLyBUaGUg
Z2VuZXJhbCBpZGVhIGhlcmUgaXMgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUgYW5kIHRoZSBp
dGVtIHRyZWUgaW4gcGFyYWxsZWwsCiAvLyB0cmFja2luZyB3aGV0aGVyIGVhY2ggZnJhbWUgYWxy
ZWFkeSBoYXMgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVxdWVzdHMuICBJZiB0aGVyZSBpcwotLy8g
YSBtYXRjaCAoYnkgVVJMKSwgd2UganVzdCByZXN0b3JlIHNjcm9sbCBwb3NpdGlvbiBhbmQgcmVj
dXJzZS4gIE90aGVyd2lzZSB3ZSBtdXN0Ci0vLyByZWxvYWQgdGhhdCBmcmFtZSwgYW5kIGFsbCBp
dHMga2lkcy4KLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3Rv
cnlJdGVtKiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkK
Ky8vIGEgbWF0Y2ggKGJ5IFVSTCksIHdlIHNldCB0aGUgcHJvdmlzaW9uYWwgaXRlbSBhbmQgcmVj
dXJzZS4gIE90aGVyd2lzZSB3ZSB3aWxsIHJlbG9hZAorLy8gdGhhdCBmcmFtZSBhbmQgYWxsIGl0
cyBraWRzIGluIHJlY3Vyc2l2ZUdvVG9JdGVtLgordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVj
dXJzaXZlR29Ub1Byb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgSGlzdG9yeUl0ZW0q
IGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgQVNTRVJUKGl0ZW0pOwogICAg
IEFTU0VSVChmcm9tSXRlbSk7CkBAIC01NjksMjQgKzYxNiwzNiBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlCiAgICAgICAgICYmIGN1cnJlbnRGcmFtZXNNYXRjaEl0
ZW0oaXRlbSkKICAgICAgICAgJiYgZnJvbUl0ZW0tPmhhc1NhbWVGcmFtZXMoaXRlbSkpCiAgICAg
ewotICAgICAgICAvLyBUaGlzIGNvbnRlbnQgaXMgZ29vZCwgc28gbGVhdmUgaXQgYWxvbmUgYW5k
IGxvb2sgZm9yIGNoaWxkcmVuIHRoYXQgbmVlZCByZWxvYWRpbmcKLSAgICAgICAgLy8gU2F2ZSBm
b3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1lTG9hZENvbXBs
ZXRlIGlzIHRydWUpCi0gICAgICAgIEFTU0VSVChtX2ZyYW1lTG9hZENvbXBsZXRlKTsKLSAgICAg
ICAgc2F2ZURvY3VtZW50U3RhdGUoKTsKLSAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmll
d1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwotCi0gICAgICAgIGlmIChGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICB2aWV3LT5zZXRXYXNTY3Jv
bGxlZEJ5VXNlcihmYWxzZSk7CisgICAgICAgIC8vIFNldCBwcm92aXNpb25hbCBpdGVtLCB3aGlj
aCB3aWxsIGJlIGNvbW1pdHRlZCBpbiByZWN1cnNpdmVVcGRhdGVGb3JDb21taXQuCisgICAgICAg
IG1fcHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIAotICAgICAgICBtX3ByZXZpb3VzSXRlbSA9IG1f
Y3VycmVudEl0ZW07Ci0gICAgICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUgKHdvcmtzIGZyb20gY3VycmVudEl0
ZW0pCi0gICAgICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7Ci0gICAgICAgIAotICAgICAgICAv
LyBSZXN0b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gKHdlIGNob29zZSB0byBkbyB0aGlzIHJhdGhl
ciB0aGFuIGdvaW5nIGJhY2sgdG8gdGhlIGFuY2hvciBwb2ludCkKLSAgICAgICAgcmVzdG9yZVNj
cm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisgICAgICAgIGNvbnN0IEhpc3RvcnlJdGVtVmVj
dG9yJiBjaGlsZEl0ZW1zID0gaXRlbS0+Y2hpbGRyZW4oKTsKICAgICAgICAgCisgICAgICAgIGlu
dCBzaXplID0gY2hpbGRJdGVtcy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0
ZW1zW2ldLT50YXJnZXQoKTsKKyAgICAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVt
ID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOworICAgICAg
ICAgICAgQVNTRVJUKGZyb21DaGlsZEl0ZW0pOworICAgICAgICAgICAgRnJhbWUqIGNoaWxkRnJh
bWUgPSBtX2ZyYW1lLT50cmVlKCktPmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKKyAgICAgICAgICAg
IEFTU0VSVChjaGlsZEZyYW1lKTsKKyAgICAgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLT5o
aXN0b3J5KCktPnJlY3Vyc2l2ZUdvVG9Qcm92aXNpb25hbEl0ZW0oY2hpbGRJdGVtc1tpXS5nZXQo
KSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFdlIG5v
dyB0cmF2ZXJzZSB0aGUgZnJhbWUgdHJlZSBhbmQgaXRlbSB0cmVlIGEgc2Vjb25kIHRpbWUsIGxv
YWRpbmcgZnJhbWVzIHRoYXQKKy8vIGRvIGhhdmUgdGhlIGNvbnRlbnQgdGhlIGl0ZW0gcmVxdWVz
dHMuCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRl
bSogaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCit7Cisg
ICAgQVNTRVJUKGl0ZW0pOworICAgIEFTU0VSVChmcm9tSXRlbSk7CisKKyAgICBpZiAoaXRlbSAh
PSBmcm9tSXRlbSAKKyAgICAgICAgJiYgaXRlbS0+aXRlbVNlcXVlbmNlTnVtYmVyKCkgPT0gZnJv
bUl0ZW0tPml0ZW1TZXF1ZW5jZU51bWJlcigpCisgICAgICAgICYmIGN1cnJlbnRGcmFtZXNNYXRj
aEl0ZW0oaXRlbSkKKyAgICAgICAgJiYgZnJvbUl0ZW0tPmhhc1NhbWVGcmFtZXMoaXRlbSkpCisg
ICAgeworICAgICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCwgbG9va2luZyBmb3Ig
ZnJhbWVzIHRvIG5hdmlnYXRlLgogICAgICAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3RvciYgY2hp
bGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7CiAgICAgICAgIAogICAgICAgICBpbnQgc2l6ZSA9
IGNoaWxkSXRlbXMuc2l6ZSgpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCShy
ZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDkgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPEhp
c3RvcnlJdGVtPiBjcmVhdGVJdGVtKGJvb2wgdXNlT3JpZ2luYWwpOwogICAgIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlw
QXRUYXJnZXQpOwogCisgICAgdm9pZCByZWN1cnNpdmVHb1RvUHJvdmlzaW9uYWxJdGVtKEhpc3Rv
cnlJdGVtKiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKICAgICB2b2lkIHJlY3Vyc2l2
ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKKyAg
ICB2b2lkIHJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgpOwogICAgIGJvb2wgY3VycmVudEZyYW1l
c01hdGNoSXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQmFja0Zvcndh
cmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKTsKIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzQxNjcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAxMS0wMS0wNSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbmNlbGVk
IGZyYW1lIGxvYWRzIGNhbiBjb3JydXB0IGJhY2sgZm9yd2FyZCBsaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDI1NAorCisgICAgICAgIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbCBhYm9ydHMgYSBzbG93bHkg
bG9hZGluZworICAgICAgICBzdWJmcmFtZSBpbiBhIGZyYW1lIHRyZWUgYW5kIGVuc3VyZXMgdGhl
IGhpc3RvcnkgaXRlbXMgYXJlIHVwZGF0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Zv
cndhcmQtYW5kLWNhbmNlbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRt
bDogQWRkZWQuCisgICAgICAgICogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sOiBBZGRlZC4K
KwogMjAxMC0xMi0xNSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmViYXNlbGluZSBXaW5kb3dzIFhQIHJlc3VsdHMgYWZ0ZXIgcjczOTkzLiBXaW5k
b3dzIDcgcmVzdWx0cyB3ZXJlIGxhbmRlZCBpbiByNzM5OTgsIGJ1dCBzb21lIFhQCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
Zm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhl
IGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBj
YW5jZWxlZC4KKworSWYgdGVzdGluZyBtYW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09
PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwgICoqbmF2IHRh
cmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sICAqKm5hdiB0YXJnZXQq
KgorICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+IikKKyAgICAgICAgICAgICAgICBhYm91dDpibGFuayAoaW4gZnJh
bWUgImZyYW1lMSIpCisgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvb3RoZXJwYWdlLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMS0tPi0tPiIpCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sCisgICAg
ICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2Fy
ZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTAtLT4tLT4iKQorICAgICAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9zbG93LXJlc291cmNlLTEtc2VjLnBsIChpbiBmcmFtZSAiZnJhbWUx
IikgICoqbmF2IHRhcmdldCoqCisgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvb3RoZXJwYWdlLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMS0tPi0tPiIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Zv
cndhcmQtYW5kLWNhbmNlbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPHNjcmlwdD4KKy8vIFRlc3Qgc3RlcHM6Cisv
LyAxLiBTdGFydCBvbiBhIHBhZ2Ugd2l0aCBubyBmcmFtZXMgKHRoaXMgcGFnZSkuCisvLyAyLiBO
YXZpZ2F0ZSB0byBhIHBhZ2Ugd2l0aCBhIGZyYW1lIHRyZWUgKEdyYW5kcGFyZW50LCBQYXJlbnQs
IENoaWxkLCBVbmNsZSkuCisvLyAzLiBOYXZpZ2F0ZSBjaGlsZCBmcmFtZSB0byBhIHNsb3dseSBs
b2FkaW5nIFVSTC4KKy8vIDQuIEdvIGJhY2sgdG8gYWJvdXQ6YmxhbmsgaW4gY2hpbGQgZnJhbWUu
CisvLyAgICBJbXBvcnRhbnQgdG8gdXNlIGFib3V0OmJsYW5rLCB3aGljaCBjYW4gY29tbWl0IGlt
bWVkaWF0ZWx5IHdoaWxlIHdhbGtpbmcgdGhlIHRyZWUuCisvLyA1LiBHbyBmb3J3YXJkIHRvIHNs
b3cgVVJMLCBidXQgc3RvcCBiZWZvcmUgdGhlIG5hdmlnYXRpb24gY29tbWl0cy4KKy8vICAgIElt
cG9ydGFudCB0byBjYW5jZWwgdGhlIGxvYWQgYW5kIGVuc3VyZSB0aGUgaGlzdG9yeSBpcyBub3Qg
Y29ycnVwdGVkLgorLy8gNi4gR28gYmFjayB0byBzdGFydCBwYWdlIHdpdGggbm8gZnJhbWVzLgor
Ly8gICAgSW1wb3J0YW50IGZvciB0ZXN0aW5nIHRoYXQgc3ViZnJhbWVzIGNhbiBiZSByZW1vdmVk
LgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJj
ZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbCIpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgiamF2YXNjcmlwdDpmcmFtZXNbMF0uY2xpY2tMaW5r
KCk7Iik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigxKTsK
KworICAgIC8vIEdvIGZvcndhcmQgdG8gc2xvdyBVUkwgaW4gY2hpbGQgZnJhbWUsIGJ1dCBzdG9w
IHJpZ2h0IGF3YXkuICBUaGlzIHNob3VsZAorICAgIC8vIHJlc2V0IHRoZSBiYWNrRm9yd2FyZCBs
aXN0IHRvIHRoZSBwcmV2aW91cyBlbnRyeS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1
ZU5vbkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuZm9yd2FyZCgpOycsMCk7IHNl
dFRpbWVvdXQoJ3dpbmRvdy5zdG9wKCk7JywxMCk7Iik7CisKKyAgICAvLyBOb3cgZ28gYmFjayB0
byBtYWtlIHN1cmUgdGhlIGJhY2tGb3J3YXJkTGlzdCBpcyBub3QgY29ycnVwdGVkLgorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgnaGlz
dG9yeS5iYWNrKCk7Jyw1MCk7Iik7CisKKyAgICAvLyBXYWl0IHVudGlsIHdlIGdldCBiYWNrIHRv
IHRoaXMgcGFnZS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWRpbmdTY3JpcHQo
ImxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsiKTsKK30KKzwvc2NyaXB0Pgor
PHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBiYWNrRm9yd2FyZCBsaXN0IGlzIG5vdCBjb3Jy
dXB0ZWQgd2hlbiBhIGZyYW1lIGxvYWQgaXMgY2FuY2VsZWQuCis8cD5JZiB0ZXN0aW5nIG1hbnVh
bGx5LCA8YSBocmVmPSJyZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWlu
ZXIuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgLy8gVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3Qgd2hlbiB3ZSBy
ZXR1cm4gdG8gdGhpcyBwYWdlIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFt
ZXMtY29udGFpbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcgQEAKKzwhLS0gR3JhbmRwYXJlbnQgcGFnZSAtLT4KKworPCEtLSBQ
YXJlbnQgaWZyYW1lIC0tPgorPGlmcmFtZSBzcmM9ImZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMu
aHRtbCIgd2lkdGg9NTAwIGhlaWdodD00MDA+PC9pZnJhbWU+CisKKzwhLS0gVW5jbGUgaWZyYW1l
IC0tPgorPGlmcmFtZSBzcmM9Im90aGVycGFnZS5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJk
LWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0gUGFyZW50IHBhZ2UgLS0+Cis8c2NyaXB0PgorZnVuY3Rpb24gY2xpY2tMaW5rKCkgeworICAv
LyBTaW11bGF0ZSBhIG1vdXNlIGNsaWNrIG9uIGEgbGluayB0YXJnZXRpbmcgdGhlIGNoaWxkIGZy
YW1lLgorICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7Cisg
IGV2dC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCB3aW5kb3csCisgICAgICAw
LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rIikuZGlzcGF0Y2hFdmVudChldnQpOworfQorPC9z
Y3JpcHQ+Cis8IS0tIENoaWxkIGlmcmFtZSAtLT4KKzxpZnJhbWUgaWQ9ImZyYW1lMSIgc3JjPSJh
Ym91dDpibGFuayI+PC9pZnJhbWU+Cis8YnI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhl
IGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBj
YW5jZWxlZC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGlkPSJsaW5rIiBocmVmPSJzbG93
LXJlc291cmNlLTEtc2VjLnBsIiB0YXJnZXQ9ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRo
ZW4gQmFjay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5z
dXJlIHRoYXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78175</attachid>
            <date>2011-01-06 15:25:28 -0800</date>
            <delta_ts>2011-01-07 09:57:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50254-20110106152527.patch</filename>
            <type>text/plain</type>
            <size>16369</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDUgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW5jZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAg
ICBBdm9pZHMgY2hhbmdpbmcgbV9jdXJyZW50SXRlbSB1bnRpbCB0aGUgbmF2aWdhdGlvbiBjb21t
aXRzLgorICAgICAgICBBbHNvIHJlc2V0cyB0b3AtbGV2ZWwgaGlzdG9yeSBpdGVtcyBpZiBhIHN1
YmZyYW1lIG5hdmlnYXRpb24gaXMgY2FuY2VsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oOgorCiAyMDEwLTEyLTE1ICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJv
ZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzNyw4ICsyMzM3LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAogICAgICAgICAgICAgLy8gQ2hlY2sg
YWxsIGNoaWxkcmVuIGZpcnN0LgogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
OwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1l
ID09IHBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9y
eSgpLT5jdXJyZW50SXRlbSgpOworICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobG9hZFR5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBiYWNr
IGZvcndhcmQgbGlzdCB0byB0aGUgbGFzdCBjb21taXR0ZWQgaGlzdG9yeSBpdGVtIGF0IHRoZSB0
b3AgbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCEocGRs
LT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIXBkbC0+aXNTdG9wcGluZygpKSkgewpJbmRleDog
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzQxNjcpCisrKyBXZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2
ICsyMzUsMTMgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9yeQogICAg
IHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgcGFnZS0+c2V0R2xv
YmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKSA/IDAgOiB0YXJnZXRJdGVtKTsKKworICAgIC8vIEZpcnN0IHNldCB0aGUgcHJvdmlz
aW9uYWwgaXRlbSBvZiBhbnkgZnJhbWVzIHRoYXQgYXJlIG5vdCBhY3R1YWxseSBuYXZpZ2F0aW5n
LgorICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0cnlpbmcgdG8gbmF2aWdhdGUgdGhl
IGRlc2lyZWQgZnJhbWUsIGJlY2F1c2Ugc29tZQorICAgIC8vIG5hdmlnYXRpb25zIGNhbiBjb21t
aXQgaW1tZWRpYXRlbHkgKHN1Y2ggYXMgYWJvdXQ6YmxhbmspLiAgV2UgbXVzdCBiZSBzdXJlIHRo
YXQKKyAgICAvLyBhbGwgZnJhbWVzIGhhdmUgcHJvdmlzaW9uYWwgaXRlbXMgc2V0IGJlZm9yZSB0
aGUgY29tbWl0LgorICAgIHJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbSh0YXJnZXRJdGVtLCBj
dXJyZW50SXRlbSwgdHlwZSk7CisgICAgLy8gTm93IHRoYXQgYWxsIG90aGVyIGZyYW1lcyBoYXZl
IHByb3Zpc2lvbmFsIGl0ZW1zLCBkbyB0aGUgYWN0dWFsIG5hdmlnYXRpb24uCiAgICAgcmVjdXJz
aXZlR29Ub0l0ZW0odGFyZ2V0SXRlbSwgY3VycmVudEl0ZW0sIHR5cGUpOwogfQogCkBAIC0zOTks
OSArNDA2LDUwIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgKICAg
ICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKICAgICAgICAgbV9jdXJyZW50SXRlbSA9
IG1fcHJvdmlzaW9uYWxJdGVtOwogICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisKKyAg
ICAgICAgLy8gVGVsbCBhbGwgb3RoZXIgZnJhbWVzIGluIHRoZSB0cmVlIHRvIGNvbW1pdCB0aGVp
ciBwcm92aXNpb25hbCBpdGVtcyBhbmQKKyAgICAgICAgLy8gcmVzdG9yZSB0aGVpciBzY3JvbGwg
cG9zaXRpb24uICBXZSdsbCBhdm9pZCB0aGlzIGZyYW1lICh3aGljaCBoYXMgYWxyZWFkeQorICAg
ICAgICAvLyBjb21taXR0ZWQpIGFuZCBpdHMgY2hpbGRyZW4gKHdoaWNoIHdpbGwgYmUgcmVwbGFj
ZWQpLgorICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICBBU1NF
UlQocGFnZSk7CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgp
LT5yZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKTsKICAgICB9CiB9CiAKK3ZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgpCit7CisgICAgLy8gVGhlIGZyYW1l
IHRoYXQgbmF2aWdhdGVkIHdpbGwgbm93IGhhdmUgYSBudWxsIHByb3Zpc2lvbmFsIGl0ZW0uCisg
ICAgLy8gSWdub3JlIGl0IGFuZCBpdHMgY2hpbGRyZW4uCisgICAgaWYgKCFtX3Byb3Zpc2lvbmFs
SXRlbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIGVhY2ggZnJhbWUgdGhhdCBhbHJl
YWR5IGhhZCB0aGUgY29udGVudCB0aGUgaXRlbSByZXF1ZXN0ZWQgKGJhc2VkIG9uCisgICAgLy8g
KGEgbWF0Y2hpbmcgVVJMIGFuZCBmcmFtZSB0cmVlIHNuYXBzaG90KSwganVzdCByZXN0b3JlIHRo
ZSBzY3JvbGwgcG9zaXRpb24uCisgICAgLy8gU2F2ZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1
cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1lTG9hZENvbXBsZXRlIGlzIHRydWUpCisgICAgQVNTRVJU
KG1fZnJhbWVMb2FkQ29tcGxldGUpOworICAgIHNhdmVEb2N1bWVudFN0YXRlKCk7CisgICAgc2F2
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwor
CisgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgdmll
dy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOworCisgICAgLy8gTm93IGNvbW1pdCB0aGUg
cHJvdmlzaW9uYWwgaXRlbQorICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSBmYWxzZTsKKyAgICBt
X3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07CisgICAgbV9jdXJyZW50SXRlbSA9IG1fcHJv
dmlzaW9uYWxJdGVtOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKworICAgIC8vIFJlc3Rv
cmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSkKKyAgICByZXN0b3JlRG9jdW1l
bnRTdGF0ZSgpOworCisgICAgLy8gUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uICh3ZSBjaG9v
c2UgdG8gZG8gdGhpcyByYXRoZXIgdGhhbiBnb2luZyBiYWNrIHRvIHRoZSBhbmNob3IgcG9pbnQp
CisgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisKKyAgICAvLyBJdGVy
YXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZC0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVj
dXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7Cit9CisKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogewogICAgIGlmIChtX2ZyYW1lLT5sb2Fk
ZXIoKS0+dXJsKCkuaXNFbXB0eSgpKQpAQCAtNTUxLDQ0ICs1OTksNDIgQEAgUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogCiAvLyBUaGUgZ2VuZXJhbCBpZGVhIGhlcmUg
aXMgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUgYW5kIHRoZSBpdGVtIHRyZWUgaW4gcGFyYWxs
ZWwsCiAvLyB0cmFja2luZyB3aGV0aGVyIGVhY2ggZnJhbWUgYWxyZWFkeSBoYXMgdGhlIGNvbnRl
bnQgdGhlIGl0ZW0gcmVxdWVzdHMuICBJZiB0aGVyZSBpcwotLy8gYSBtYXRjaCAoYnkgVVJMKSwg
d2UganVzdCByZXN0b3JlIHNjcm9sbCBwb3NpdGlvbiBhbmQgcmVjdXJzZS4gIE90aGVyd2lzZSB3
ZSBtdXN0Ci0vLyByZWxvYWQgdGhhdCBmcmFtZSwgYW5kIGFsbCBpdHMga2lkcy4KLXZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBIaXN0
b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKKy8vIGEgbWF0Y2gsIHdlIHNl
dCB0aGUgcHJvdmlzaW9uYWwgaXRlbSBhbmQgcmVjdXJzZS4gIE90aGVyd2lzZSB3ZSB3aWxsIHJl
bG9hZCB0aGF0CisvLyBmcmFtZSBhbmQgYWxsIGl0cyBraWRzIGluIHJlY3Vyc2l2ZUdvVG9JdGVt
Lgordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlw
ZSkKIHsKICAgICBBU1NFUlQoaXRlbSk7CiAgICAgQVNTRVJUKGZyb21JdGVtKTsKIAotICAgIC8v
IElmIHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvIGlzIGEgY2xvbmUgb2YgdGhlIGl0ZW0gd2UncmUg
YXQsIHRoZW4gZG8KLSAgICAvLyBub3QgbG9hZCBpdCBhZ2FpbiwgYW5kIGNvbnRpbnVlIGhpc3Rv
cnkgdHJhdmVyc2FsIHRvIGl0cyBjaGlsZHJlbi4KLSAgICAvLyBUaGUgY3VycmVudCBmcmFtZSB0
cmVlIGFuZCB0aGUgZnJhbWUgdHJlZSBzbmFwc2hvdCBpbiB0aGUgaXRlbSBoYXZlCi0gICAgLy8g
dG8gbWF0Y2guCi0gICAgLy8gTm90ZTogSWYgaXRlbSBhbmQgZnJvbUl0ZW0gYXJlIHRoZSBzYW1l
LCB0aGVuIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3Ci0gICAgLy8gZG9jdW1lbnQuCi0gICAgaWYg
KGl0ZW0gIT0gZnJvbUl0ZW0gCi0gICAgICAgICYmIGl0ZW0tPml0ZW1TZXF1ZW5jZU51bWJlcigp
ID09IGZyb21JdGVtLT5pdGVtU2VxdWVuY2VOdW1iZXIoKQotICAgICAgICAmJiBjdXJyZW50RnJh
bWVzTWF0Y2hJdGVtKGl0ZW0pCi0gICAgICAgICYmIGZyb21JdGVtLT5oYXNTYW1lRnJhbWVzKGl0
ZW0pKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGdvb2QsIHNvIGxlYXZlIGl0
IGFsb25lIGFuZCBsb29rIGZvciBjaGlsZHJlbiB0aGF0IG5lZWQgcmVsb2FkaW5nCi0gICAgICAg
IC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2luY2UgbV9mcmFt
ZUxvYWRDb21wbGV0ZSBpcyB0cnVlKQotICAgICAgICBBU1NFUlQobV9mcmFtZUxvYWRDb21wbGV0
ZSk7Ci0gICAgICAgIHNhdmVEb2N1bWVudFN0YXRlKCk7Ci0gICAgICAgIHNhdmVTY3JvbGxQb3Np
dGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX2N1cnJlbnRJdGVtLmdldCgpKTsKKyAgICBpZiAoaXRl
bXNBcmVDbG9uZXMoaXRlbSwgZnJvbUl0ZW0pKSB7CisgICAgICAgIC8vIFNldCBwcm92aXNpb25h
bCBpdGVtLCB3aGljaCB3aWxsIGJlIGNvbW1pdHRlZCBpbiByZWN1cnNpdmVVcGRhdGVGb3JDb21t
aXQuCisgICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIAotICAgICAgICBpZiAoRnJh
bWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQotICAgICAgICAgICAgdmlldy0+c2V0V2Fz
U2Nyb2xsZWRCeVVzZXIoZmFsc2UpOworICAgICAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3RvciYg
Y2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7CiAKLSAgICAgICAgbV9wcmV2aW91c0l0ZW0g
PSBtX2N1cnJlbnRJdGVtOwotICAgICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJl
bnRJdGVtKQotICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOwotICAgICAgICAKLSAgICAg
ICAgLy8gUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uICh3ZSBjaG9vc2UgdG8gZG8gdGhpcyBy
YXRoZXIgdGhhbiBnb2luZyBiYWNrIHRvIHRoZSBhbmNob3IgcG9pbnQpCi0gICAgICAgIHJlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwotICAgICAgICAKKyAgICAgICAgaW50IHNp
emUgPSBjaGlsZEl0ZW1zLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbXNb
aV0tPnRhcmdldCgpOworICAgICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBm
cm9tSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CisgICAgICAgICAg
ICBBU1NFUlQoZnJvbUNoaWxkSXRlbSk7CisgICAgICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9
IG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQoY2hpbGRGcmFtZU5hbWUpOworICAgICAgICAgICAgQVNT
RVJUKGNoaWxkRnJhbWUpOworICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCktPmhpc3Rv
cnkoKS0+cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNoaWxkSXRlbXNbaV0uZ2V0KCksIGZy
b21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBXZSBub3cgdHJh
dmVyc2UgdGhlIGZyYW1lIHRyZWUgYW5kIGl0ZW0gdHJlZSBhIHNlY29uZCB0aW1lLCBsb2FkaW5n
IGZyYW1lcyB0aGF0CisvLyBkbyBoYXZlIHRoZSBjb250ZW50IHRoZSBpdGVtIHJlcXVlc3RzLgor
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQoreworICAgIEFT
U0VSVChpdGVtKTsKKyAgICBBU1NFUlQoZnJvbUl0ZW0pOworCisgICAgaWYgKGl0ZW1zQXJlQ2xv
bmVzKGl0ZW0sIGZyb21JdGVtKSkgeworICAgICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUg
cmVzdCwgbG9va2luZyBmb3IgZnJhbWVzIHRvIG5hdmlnYXRlLgogICAgICAgICBjb25zdCBIaXN0
b3J5SXRlbVZlY3RvciYgY2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7Ci0gICAgICAgIAor
CiAgICAgICAgIGludCBzaXplID0gY2hpbGRJdGVtcy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgY2hpbGRGcmFtZU5h
bWUgPSBjaGlsZEl0ZW1zW2ldLT50YXJnZXQoKTsKQEAgLTYwMyw2ICs2NDksMTkgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZQogICAgIH0KIH0KIAorYm9vbCBIaXN0
b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0qIGl0ZW0xLCBIaXN0b3J5
SXRlbSogaXRlbTIpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIGl0ZW0gd2UncmUgZ29pbmcgdG8g
aXMgYSBjbG9uZSBvZiB0aGUgaXRlbSB3ZSdyZSBhdCwgdGhlbiB3ZSBkbworICAgIC8vIG5vdCBu
ZWVkIHRvIGxvYWQgaXQgYWdhaW4uICBUaGUgY3VycmVudCBmcmFtZSB0cmVlIGFuZCB0aGUgZnJh
bWUgdHJlZQorICAgIC8vIHNuYXBzaG90IGluIHRoZSBpdGVtIGhhdmUgdG8gbWF0Y2guCisgICAg
Ly8gTm90ZTogSWYgaXRlbTEgYW5kIGl0ZW0yIGFyZSB0aGUgc2FtZSwgdGhlbiB3ZSBuZWVkIHRv
IGNyZWF0ZSBhIG5ldworICAgIC8vIGRvY3VtZW50LCBzbyBkbyBub3QgY29uc2lkZXIgdGhlbSBj
bG9uZXMuCisgICAgcmV0dXJuIGl0ZW0xICE9IGl0ZW0yCisgICAgICAgICYmIGl0ZW0xLT5pdGVt
U2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRlbVNlcXVlbmNlTnVtYmVyKCkKKyAgICAgICAg
JiYgY3VycmVudEZyYW1lc01hdGNoSXRlbShpdGVtMSkKKyAgICAgICAgJiYgaXRlbTItPmhhc1Nh
bWVGcmFtZXMoaXRlbTEpOworfQorCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQgZGV0ZXJtaW5lcyB3
aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBoaXN0b3J5IGl0ZW0n
cy4KIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0oSGlzdG9y
eUl0ZW0qIGl0ZW0pIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDc0MTY3KQorKysgV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsMTAgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtKGJvb2wgdXNlT3JpZ2luYWwpOwogICAgIFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9vbCBj
bGlwQXRUYXJnZXQpOwogCisgICAgdm9pZCByZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlz
dG9yeUl0ZW0qLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwogICAgIHZvaWQgcmVjdXJz
aXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0qLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwor
ICAgIHZvaWQgcmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7CisgICAgYm9vbCBpdGVtc0FyZUNs
b25lcyhIaXN0b3J5SXRlbSosIEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgYm9vbCBjdXJyZW50
RnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVCYWNr
Rm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApOwogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3NDE2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDExLTAxLTA1ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2Fu
Y2VsZWQgZnJhbWUgbG9hZHMgY2FuIGNvcnJ1cHQgYmFjayBmb3J3YXJkIGxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMjU0CisKKyAgICAgICAg
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sIGFib3J0cyBhIHNs
b3dseSBsb2FkaW5nCisgICAgICAgIHN1YmZyYW1lIGluIGEgZnJhbWUgdHJlZSBhbmQgZW5zdXJl
cyB0aGUgaGlzdG9yeSBpdGVtcyBhcmUgdXBkYXRlZCBwcm9wZXJseS4KKworICAgICAgICAqIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1l
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWw6IEFk
ZGVkLgorCiAyMDEwLTEyLTE1ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWJhc2VsaW5lIFdpbmRvd3MgWFAgcmVzdWx0cyBhZnRlciByNzM5OTMu
IFdpbmRvd3MgNyByZXN1bHRzIHdlcmUgbGFuZGVkIGluIHI3Mzk5OCwgYnV0IHNvbWUgWFAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhh
dCB0aGUgYmFja0ZvcndhcmQgbGlzdCBpcyBub3QgY29ycnVwdGVkIHdoZW4gYSBmcmFtZSBsb2Fk
IGlzIGNhbmNlbGVkLgorCitJZiB0ZXN0aW5nIG1hbnVhbGx5LCBjbGljayBoZXJlLgorCis9PT09
PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQorY3Vyci0+ICBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbCAgKipu
YXYgdGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwgICoqbmF2IHRh
cmdldCoqCisgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iKQorICAgICAgICAgICAgICAgIGFib3V0OmJsYW5rIChp
biBmcmFtZSAiZnJhbWUxIikKKyAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9vdGhlcnBhZ2UuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUxLS0+LS0+IikKKyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmln
YXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwK
KyAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9m
b3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPiIpCisgICAgICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L25hdmlnYXRpb24vcmVzb3VyY2VzL3Nsb3ctcmVzb3VyY2UtMS1zZWMucGwgKGluIGZyYW1lICJm
cmFtZTEiKSAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9vdGhlcnBhZ2UuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACis8c2NyaXB0PgorLy8gVGVzdCBzdGVw
czoKKy8vIDEuIFN0YXJ0IG9uIGEgcGFnZSB3aXRoIG5vIGZyYW1lcyAodGhpcyBwYWdlKS4KKy8v
IDIuIE5hdmlnYXRlIHRvIGEgcGFnZSB3aXRoIGEgZnJhbWUgdHJlZSAoR3JhbmRwYXJlbnQsIFBh
cmVudCwgQ2hpbGQsIFVuY2xlKS4KKy8vIDMuIE5hdmlnYXRlIGNoaWxkIGZyYW1lIHRvIGEgc2xv
d2x5IGxvYWRpbmcgVVJMLgorLy8gNC4gR28gYmFjayB0byBhYm91dDpibGFuayBpbiBjaGlsZCBm
cmFtZS4KKy8vICAgIEltcG9ydGFudCB0byB1c2UgYWJvdXQ6YmxhbmssIHdoaWNoIGNhbiBjb21t
aXQgaW1tZWRpYXRlbHkgd2hpbGUgd2Fsa2luZyB0aGUgdHJlZS4KKy8vIDUuIEdvIGZvcndhcmQg
dG8gc2xvdyBVUkwsIGJ1dCBzdG9wIGJlZm9yZSB0aGUgbmF2aWdhdGlvbiBjb21taXRzLgorLy8g
ICAgSW1wb3J0YW50IHRvIGNhbmNlbCB0aGUgbG9hZCBhbmQgZW5zdXJlIHRoZSBoaXN0b3J5IGlz
IG5vdCBjb3JydXB0ZWQuCisvLyA2LiBHbyBiYWNrIHRvIHN0YXJ0IHBhZ2Ugd2l0aCBubyBmcmFt
ZXMuCisvLyAgICBJbXBvcnRhbnQgZm9yIHRlc3RpbmcgdGhhdCBzdWJmcmFtZXMgY2FuIGJlIHJl
bW92ZWQuCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWQoInJl
c291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sIik7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkaW5nU2NyaXB0KCJmcmFtZXNbMF0uY2xpY2tM
aW5rKCk7Iik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVCYWNrTmF2aWdhdGlvbigx
KTsKKworICAgIC8vIEdvIGZvcndhcmQgdG8gc2xvdyBVUkwgaW4gY2hpbGQgZnJhbWUsIGJ1dCBz
dG9wIHJpZ2h0IGF3YXkuICBUaGlzIHNob3VsZAorICAgIC8vIHJlc2V0IHRoZSBiYWNrRm9yd2Fy
ZCBsaXN0IHRvIHRoZSBwcmV2aW91cyBlbnRyeS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZU5vbkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuZm9yd2FyZCgpOycsMCk7
IHNldFRpbWVvdXQoJ3dpbmRvdy5zdG9wKCk7JywxMCk7Iik7CisKKyAgICAvLyBOb3cgZ28gYmFj
ayB0byBtYWtlIHN1cmUgdGhlIGJhY2tGb3J3YXJkTGlzdCBpcyBub3QgY29ycnVwdGVkLgorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCgic2V0VGltZW91dCgn
aGlzdG9yeS5iYWNrKCk7Jyw1MCk7Iik7CisKKyAgICAvLyBXYWl0IHVudGlsIHdlIGdldCBiYWNr
IHRvIHRoaXMgcGFnZS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUxvYWRpbmdTY3Jp
cHQoImxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsiKTsKK30KKzwvc2NyaXB0
PgorPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBiYWNrRm9yd2FyZCBsaXN0IGlzIG5vdCBj
b3JydXB0ZWQgd2hlbiBhIGZyYW1lIGxvYWQgaXMgY2FuY2VsZWQuCis8cD5JZiB0ZXN0aW5nIG1h
bnVhbGx5LCA8YSBocmVmPSJyZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250
YWluZXIuaHRtbCI+Y2xpY2sgaGVyZTwvYT4uCisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgLy8gT25seSBub3RpZnkgZG9uZSB3aGVuIHdlIHJldHVy
biB0byB0aGlzIHBhZ2UgYSBzZWNvbmQgdGltZS4KKyAgICBpZiAoIXdpbmRvdy5sb2NhbFN0b3Jh
Z2Uuc3RhcnRlZCkgeworICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQgPSB0cnVl
OworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGV0ZSB3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0
ZWQ7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQt
YW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1m
cmFtZXMtY29udGFpbmVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorPCEtLSBH
cmFuZHBhcmVudCBwYWdlIC0tPgorCis8IS0tIFBhcmVudCBpZnJhbWUgLS0+Cis8aWZyYW1lIHNy
Yz0iZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sIiB3aWR0aD01MDAgaGVpZ2h0PTQwMD48
L2lmcmFtZT4KKworPCEtLSBVbmNsZSBpZnJhbWUgLS0+Cis8aWZyYW1lIHNyYz0ib3RoZXJwYWdl
Lmh0bWwiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1j
YW5jZWwtZnJhbWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCEtLSBQYXJlbnQgcGFnZSAtLT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBjbGlja0xpbmsoKSB7CisgIC8vIFNpbXVsYXRlIGEgbW91c2UgY2xpY2sgb24g
YSBsaW5rIHRhcmdldGluZyB0aGUgY2hpbGQgZnJhbWUuCisgIHZhciBldnQgPSBkb2N1bWVudC5j
cmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTsKKyAgZXZ0LmluaXRNb3VzZUV2ZW50KCJjbGljayIs
IHRydWUsIHRydWUsIHdpbmRvdywKKyAgICAgIDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAwLCBudWxsKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpbmsi
KS5kaXNwYXRjaEV2ZW50KGV2dCk7Cit9Cis8L3NjcmlwdD4KKzwhLS0gQ2hpbGQgaWZyYW1lIC0t
PgorPGlmcmFtZSBpZD0iZnJhbWUxIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT4KKzxicj4K
KzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgYmFja0ZvcndhcmQgbGlzdCBpcyBub3QgY29y
cnVwdGVkIHdoZW4gYSBmcmFtZSBsb2FkIGlzIGNhbmNlbGVkLgorPHA+SWYgdGVzdGluZyBtYW51
YWxseSwgPGEgaWQ9ImxpbmsiIGhyZWY9InNsb3ctcmVzb3VyY2UtMS1zZWMucGwiIHRhcmdldD0i
ZnJhbWUxIj5jbGljayBoZXJlPC9hPiBhbmQgdGhlbiBCYWNrLiAgVGhlbiBjbGljayBGb3J3YXJk
IGFuZCBxdWlja2x5IGNsaWNrIFN0b3AuICBFbnN1cmUgdGhhdCBCYWNrIGFuZCBGb3J3YXJkIHN0
aWxsIHdvcmsuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78246</attachid>
            <date>2011-01-07 09:57:08 -0800</date>
            <delta_ts>2011-01-07 11:39:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50254-20110107095706.patch</filename>
            <type>text/plain</type>
            <size>16511</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW5jZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAg
ICBBdm9pZHMgY2hhbmdpbmcgbV9jdXJyZW50SXRlbSB1bnRpbCB0aGUgbmF2aWdhdGlvbiBjb21t
aXRzLgorICAgICAgICBBbHNvIHJlc2V0cyB0b3AtbGV2ZWwgaGlzdG9yeSBpdGVtcyBpZiBhIHN1
YmZyYW1lIG5hdmlnYXRpb24gaXMgY2FuY2VsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oOgorCiAyMDEwLTEyLTE1ICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJv
ZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzNyw4ICsyMzM3LDkgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaAogICAgICAgICAgICAgLy8gQ2hlY2sg
YWxsIGNoaWxkcmVuIGZpcnN0LgogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
OwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAmJiBtX2ZyYW1l
ID09IHBhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVtID0gaGlzdG9y
eSgpLT5jdXJyZW50SXRlbSgpOworICAgICAgICAgICAgICAgIGlmIChpc0JhY2tGb3J3YXJkTG9h
ZFR5cGUobG9hZFR5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBiYWNr
IGZvcndhcmQgbGlzdCB0byB0aGUgbGFzdCBjb21taXR0ZWQgaGlzdG9yeSBpdGVtIGF0IHRoZSB0
b3AgbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBwYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKTsKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCEocGRs
LT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIXBkbC0+aXNTdG9wcGluZygpKSkgewpJbmRleDog
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzQxNjcpCisrKyBXZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2
ICsyMzUsMTMgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9yeQogICAg
IHBhZ2UtPmJhY2tGb3J3YXJkKCktPnNldEN1cnJlbnRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgcGFnZS0+c2V0R2xv
YmFsSGlzdG9yeUl0ZW0oKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKSA/IDAgOiB0YXJnZXRJdGVtKTsKKworICAgIC8vIEZpcnN0IHNldCB0aGUgcHJvdmlz
aW9uYWwgaXRlbSBvZiBhbnkgZnJhbWVzIHRoYXQgYXJlIG5vdCBhY3R1YWxseSBuYXZpZ2F0aW5n
LgorICAgIC8vIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0cnlpbmcgdG8gbmF2aWdhdGUgdGhl
IGRlc2lyZWQgZnJhbWUsIGJlY2F1c2Ugc29tZQorICAgIC8vIG5hdmlnYXRpb25zIGNhbiBjb21t
aXQgaW1tZWRpYXRlbHkgKHN1Y2ggYXMgYWJvdXQ6YmxhbmspLiAgV2UgbXVzdCBiZSBzdXJlIHRo
YXQKKyAgICAvLyBhbGwgZnJhbWVzIGhhdmUgcHJvdmlzaW9uYWwgaXRlbXMgc2V0IGJlZm9yZSB0
aGUgY29tbWl0LgorICAgIHJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbSh0YXJnZXRJdGVtLCBj
dXJyZW50SXRlbSwgdHlwZSk7CisgICAgLy8gTm93IHRoYXQgYWxsIG90aGVyIGZyYW1lcyBoYXZl
IHByb3Zpc2lvbmFsIGl0ZW1zLCBkbyB0aGUgYWN0dWFsIG5hdmlnYXRpb24uCiAgICAgcmVjdXJz
aXZlR29Ub0l0ZW0odGFyZ2V0SXRlbSwgY3VycmVudEl0ZW0sIHR5cGUpOwogfQogCkBAIC0zOTks
OSArNDA2LDUwIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgKICAg
ICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKICAgICAgICAgbV9jdXJyZW50SXRlbSA9
IG1fcHJvdmlzaW9uYWxJdGVtOwogICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisKKyAg
ICAgICAgLy8gVGVsbCBhbGwgb3RoZXIgZnJhbWVzIGluIHRoZSB0cmVlIHRvIGNvbW1pdCB0aGVp
ciBwcm92aXNpb25hbCBpdGVtcyBhbmQKKyAgICAgICAgLy8gcmVzdG9yZSB0aGVpciBzY3JvbGwg
cG9zaXRpb24uICBXZSdsbCBhdm9pZCB0aGlzIGZyYW1lICh3aGljaCBoYXMgYWxyZWFkeQorICAg
ICAgICAvLyBjb21taXR0ZWQpIGFuZCBpdHMgY2hpbGRyZW4gKHdoaWNoIHdpbGwgYmUgcmVwbGFj
ZWQpLgorICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgICAgICBBU1NF
UlQocGFnZSk7CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgp
LT5yZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKTsKICAgICB9CiB9CiAKK3ZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgpCit7CisgICAgLy8gVGhlIGZyYW1l
IHRoYXQgbmF2aWdhdGVkIHdpbGwgbm93IGhhdmUgYSBudWxsIHByb3Zpc2lvbmFsIGl0ZW0uCisg
ICAgLy8gSWdub3JlIGl0IGFuZCBpdHMgY2hpbGRyZW4uCisgICAgaWYgKCFtX3Byb3Zpc2lvbmFs
SXRlbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIGVhY2ggZnJhbWUgdGhhdCBhbHJl
YWR5IGhhZCB0aGUgY29udGVudCB0aGUgaXRlbSByZXF1ZXN0ZWQgKGJhc2VkIG9uCisgICAgLy8g
KGEgbWF0Y2hpbmcgVVJMIGFuZCBmcmFtZSB0cmVlIHNuYXBzaG90KSwganVzdCByZXN0b3JlIHRo
ZSBzY3JvbGwgcG9zaXRpb24uCisgICAgLy8gU2F2ZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1
cnJlbnRJdGVtLCBzaW5jZSBtX2ZyYW1lTG9hZENvbXBsZXRlIGlzIHRydWUpCisgICAgQVNTRVJU
KG1fZnJhbWVMb2FkQ29tcGxldGUpOworICAgIHNhdmVEb2N1bWVudFN0YXRlKCk7CisgICAgc2F2
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwor
CisgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgdmll
dy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOworCisgICAgLy8gTm93IGNvbW1pdCB0aGUg
cHJvdmlzaW9uYWwgaXRlbQorICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSBmYWxzZTsKKyAgICBt
X3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07CisgICAgbV9jdXJyZW50SXRlbSA9IG1fcHJv
dmlzaW9uYWxJdGVtOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKworICAgIC8vIFJlc3Rv
cmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSkKKyAgICByZXN0b3JlRG9jdW1l
bnRTdGF0ZSgpOworCisgICAgLy8gUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uICh3ZSBjaG9v
c2UgdG8gZG8gdGhpcyByYXRoZXIgdGhhbiBnb2luZyBiYWNrIHRvIHRoZSBhbmNob3IgcG9pbnQp
CisgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CisKKyAgICAvLyBJdGVy
YXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKQorICAgICAgICBjaGlsZC0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVj
dXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7Cit9CisKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogewogICAgIGlmIChtX2ZyYW1lLT5sb2Fk
ZXIoKS0+dXJsKCkuaXNFbXB0eSgpKQpAQCAtNTUxLDQ0ICs1OTksNDIgQEAgUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZQogCiAvLyBUaGUgZ2VuZXJhbCBpZGVhIGhlcmUg
aXMgdG8gdHJhdmVyc2UgdGhlIGZyYW1lIHRyZWUgYW5kIHRoZSBpdGVtIHRyZWUgaW4gcGFyYWxs
ZWwsCiAvLyB0cmFja2luZyB3aGV0aGVyIGVhY2ggZnJhbWUgYWxyZWFkeSBoYXMgdGhlIGNvbnRl
bnQgdGhlIGl0ZW0gcmVxdWVzdHMuICBJZiB0aGVyZSBpcwotLy8gYSBtYXRjaCAoYnkgVVJMKSwg
d2UganVzdCByZXN0b3JlIHNjcm9sbCBwb3NpdGlvbiBhbmQgcmVjdXJzZS4gIE90aGVyd2lzZSB3
ZSBtdXN0Ci0vLyByZWxvYWQgdGhhdCBmcmFtZSwgYW5kIGFsbCBpdHMga2lkcy4KLXZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBIaXN0
b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKKy8vIGEgbWF0Y2gsIHdlIHNl
dCB0aGUgcHJvdmlzaW9uYWwgaXRlbSBhbmQgcmVjdXJzZS4gIE90aGVyd2lzZSB3ZSB3aWxsIHJl
bG9hZCB0aGF0CisvLyBmcmFtZSBhbmQgYWxsIGl0cyBraWRzIGluIHJlY3Vyc2l2ZUdvVG9JdGVt
Lgordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlw
ZSkKIHsKICAgICBBU1NFUlQoaXRlbSk7CiAgICAgQVNTRVJUKGZyb21JdGVtKTsKIAotICAgIC8v
IElmIHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvIGlzIGEgY2xvbmUgb2YgdGhlIGl0ZW0gd2UncmUg
YXQsIHRoZW4gZG8KLSAgICAvLyBub3QgbG9hZCBpdCBhZ2FpbiwgYW5kIGNvbnRpbnVlIGhpc3Rv
cnkgdHJhdmVyc2FsIHRvIGl0cyBjaGlsZHJlbi4KLSAgICAvLyBUaGUgY3VycmVudCBmcmFtZSB0
cmVlIGFuZCB0aGUgZnJhbWUgdHJlZSBzbmFwc2hvdCBpbiB0aGUgaXRlbSBoYXZlCi0gICAgLy8g
dG8gbWF0Y2guCi0gICAgLy8gTm90ZTogSWYgaXRlbSBhbmQgZnJvbUl0ZW0gYXJlIHRoZSBzYW1l
LCB0aGVuIHdlIG5lZWQgdG8gY3JlYXRlIGEgbmV3Ci0gICAgLy8gZG9jdW1lbnQuCi0gICAgaWYg
KGl0ZW0gIT0gZnJvbUl0ZW0gCi0gICAgICAgICYmIGl0ZW0tPml0ZW1TZXF1ZW5jZU51bWJlcigp
ID09IGZyb21JdGVtLT5pdGVtU2VxdWVuY2VOdW1iZXIoKQotICAgICAgICAmJiBjdXJyZW50RnJh
bWVzTWF0Y2hJdGVtKGl0ZW0pCi0gICAgICAgICYmIGZyb21JdGVtLT5oYXNTYW1lRnJhbWVzKGl0
ZW0pKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBjb250ZW50IGlzIGdvb2QsIHNvIGxlYXZlIGl0
IGFsb25lIGFuZCBsb29rIGZvciBjaGlsZHJlbiB0aGF0IG5lZWQgcmVsb2FkaW5nCi0gICAgICAg
IC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2luY2UgbV9mcmFt
ZUxvYWRDb21wbGV0ZSBpcyB0cnVlKQotICAgICAgICBBU1NFUlQobV9mcmFtZUxvYWRDb21wbGV0
ZSk7Ci0gICAgICAgIHNhdmVEb2N1bWVudFN0YXRlKCk7Ci0gICAgICAgIHNhdmVTY3JvbGxQb3Np
dGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX2N1cnJlbnRJdGVtLmdldCgpKTsKKyAgICBpZiAoaXRl
bXNBcmVDbG9uZXMoaXRlbSwgZnJvbUl0ZW0pKSB7CisgICAgICAgIC8vIFNldCBwcm92aXNpb25h
bCBpdGVtLCB3aGljaCB3aWxsIGJlIGNvbW1pdHRlZCBpbiByZWN1cnNpdmVVcGRhdGVGb3JDb21t
aXQuCisgICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIAotICAgICAgICBpZiAoRnJh
bWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpKQotICAgICAgICAgICAgdmlldy0+c2V0V2Fz
U2Nyb2xsZWRCeVVzZXIoZmFsc2UpOworICAgICAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3RvciYg
Y2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7CiAKLSAgICAgICAgbV9wcmV2aW91c0l0ZW0g
PSBtX2N1cnJlbnRJdGVtOwotICAgICAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRlICh3b3JrcyBmcm9tIGN1cnJl
bnRJdGVtKQotICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgpOwotICAgICAgICAKLSAgICAg
ICAgLy8gUmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0aW9uICh3ZSBjaG9vc2UgdG8gZG8gdGhpcyBy
YXRoZXIgdGhhbiBnb2luZyBiYWNrIHRvIHRoZSBhbmNob3IgcG9pbnQpCi0gICAgICAgIHJlc3Rv
cmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwotICAgICAgICAKKyAgICAgICAgaW50IHNp
emUgPSBjaGlsZEl0ZW1zLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbXNb
aV0tPnRhcmdldCgpOworICAgICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBm
cm9tSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CisgICAgICAgICAg
ICBBU1NFUlQoZnJvbUNoaWxkSXRlbSk7CisgICAgICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9
IG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGQoY2hpbGRGcmFtZU5hbWUpOworICAgICAgICAgICAgQVNT
RVJUKGNoaWxkRnJhbWUpOworICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCktPmhpc3Rv
cnkoKS0+cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNoaWxkSXRlbXNbaV0uZ2V0KCksIGZy
b21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBXZSBub3cgdHJh
dmVyc2UgdGhlIGZyYW1lIHRyZWUgYW5kIGl0ZW0gdHJlZSBhIHNlY29uZCB0aW1lLCBsb2FkaW5n
IGZyYW1lcyB0aGF0CisvLyBkbyBoYXZlIHRoZSBjb250ZW50IHRoZSBpdGVtIHJlcXVlc3RzLgor
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0
ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQoreworICAgIEFT
U0VSVChpdGVtKTsKKyAgICBBU1NFUlQoZnJvbUl0ZW0pOworCisgICAgaWYgKGl0ZW1zQXJlQ2xv
bmVzKGl0ZW0sIGZyb21JdGVtKSkgeworICAgICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUg
cmVzdCwgbG9va2luZyBmb3IgZnJhbWVzIHRvIG5hdmlnYXRlLgogICAgICAgICBjb25zdCBIaXN0
b3J5SXRlbVZlY3RvciYgY2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7Ci0gICAgICAgIAor
CiAgICAgICAgIGludCBzaXplID0gY2hpbGRJdGVtcy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBTdHJpbmcgY2hpbGRGcmFtZU5h
bWUgPSBjaGlsZEl0ZW1zW2ldLT50YXJnZXQoKTsKQEAgLTYwMyw2ICs2NDksMjEgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlR29Ub0l0ZQogICAgIH0KIH0KIAorYm9vbCBIaXN0
b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0qIGl0ZW0xLCBIaXN0b3J5
SXRlbSogaXRlbTIpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIGl0ZW0gd2UncmUgZ29pbmcgdG8g
aXMgYSBjbG9uZSBvZiB0aGUgaXRlbSB3ZSdyZSBhdCwgdGhlbiB3ZSBkbworICAgIC8vIG5vdCBu
ZWVkIHRvIGxvYWQgaXQgYWdhaW4uICBUaGUgY3VycmVudCBmcmFtZSB0cmVlIGFuZCB0aGUgZnJh
bWUgdHJlZQorICAgIC8vIHNuYXBzaG90IGluIHRoZSBpdGVtIGhhdmUgdG8gbWF0Y2guCisgICAg
Ly8gTm90ZTogU29tZSBjbGllbnRzIHRyZWF0IGEgbmF2aWdhdGF0aW9uIHRvIHRoZSBjdXJyZW50
IGhpc3RvcnkgaXRlbSBhcworICAgIC8vIGEgcmVsb2FkLiAgVGh1cywgaWYgaXRlbTEgYW5kIGl0
ZW0yIGFyZSB0aGUgc2FtZSwgd2UgbmVlZCB0byBjcmVhdGUgYQorICAgIC8vIG5ldyBkb2N1bWVu
dCBhbmQgc2hvdWxkIG5vdCBjb25zaWRlciB0aGVtIGNsb25lcy4KKyAgICAvLyAoU2VlIGh0dHA6
Ly93ZWJraXQub3JnL2IvMzU1MzIgZm9yIGRldGFpbHMuKQorICAgIHJldHVybiBpdGVtMSAhPSBp
dGVtMgorICAgICAgICAmJiBpdGVtMS0+aXRlbVNlcXVlbmNlTnVtYmVyKCkgPT0gaXRlbTItPml0
ZW1TZXF1ZW5jZU51bWJlcigpCisgICAgICAgICYmIGN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0oaXRl
bTEpCisgICAgICAgICYmIGl0ZW0yLT5oYXNTYW1lRnJhbWVzKGl0ZW0xKTsKK30KKwogLy8gSGVs
cGVyIG1ldGhvZCB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFtZSB0cmVl
IG1hdGNoZXMgZ2l2ZW4gaGlzdG9yeSBpdGVtJ3MuCiBib29sIEhpc3RvcnlDb250cm9sbGVyOjpj
dXJyZW50RnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogewpJbmRleDog
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oCShyZXZpc2lvbiA3NDE2NykKKysrIFdlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDEw
IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlSXRlbShib29s
IHVzZU9yaWdpbmFsKTsKICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJl
ZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKIAorICAgIHZvaWQgcmVj
dXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiwgSGlzdG9yeUl0ZW0qLCBGcmFt
ZUxvYWRUeXBlKTsKICAgICB2b2lkIHJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiwgSGlz
dG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKKyAgICB2b2lkIHJlY3Vyc2l2ZVVwZGF0ZUZvckNv
bW1pdCgpOworICAgIGJvb2wgaXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0qLCBIaXN0b3J5SXRl
bSopIGNvbnN0OwogICAgIGJvb2wgY3VycmVudEZyYW1lc01hdGNoSXRlbShIaXN0b3J5SXRlbSop
IGNvbnN0OwogICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJv
b2wgZG9DbGlwKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzQxNjcpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMS0wNyAgQ2hh
cmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbmNlbGVkIGZyYW1lIGxvYWRzIGNhbiBjb3JydXB0
IGJhY2sgZm9yd2FyZCBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MDI1NAorCisgICAgICAgIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJk
LWFuZC1jYW5jZWwuaHRtbCBhYm9ydHMgYSBzbG93bHkgbG9hZGluZworICAgICAgICBzdWJmcmFt
ZSBpbiBhIGZyYW1lIHRyZWUgYW5kIGVuc3VyZXMgdGhlIGhpc3RvcnkgaXRlbXMgYXJlIHVwZGF0
ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5j
ZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sOiBBZGRlZC4KKwogMjAxMC0xMi0xNSAgQnJpYW4gV2Vp
bnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBXaW5k
b3dzIFhQIHJlc3VsdHMgYWZ0ZXIgcjczOTkzLiBXaW5kb3dzIDcgcmVzdWx0cyB3ZXJlIGxhbmRl
ZCBpbiByNzM5OTgsIGJ1dCBzb21lIFhQCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9mb3J3YXJkLWFuZC1jYW5jZWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90
IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KKworSWYgdGVzdGluZyBt
YW51YWxseSwgY2xpY2sgaGVyZS4KKworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3Qg
PT09PT09PT09PT09PT0KK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24v
Zm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJh
bWVzLWNvbnRhaW5lci5odG1sICAqKm5hdiB0YXJnZXQqKgorICAgICAgICAgICAgaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFt
ZXMuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IikKKyAg
ICAgICAgICAgICAgICBhYm91dDpibGFuayAoaW4gZnJhbWUgImZyYW1lMSIpCisgICAgICAgICAg
ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvb3RoZXJwYWdlLmh0
bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIpCisgICAgICAg
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1j
YW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sCisgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1s
IChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iKQorICAgICAgICAg
ICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zbG93LXJl
c291cmNlLTEtc2VjLnBsIChpbiBmcmFtZSAiZnJhbWUxIikgICoqbmF2IHRhcmdldCoqCisgICAg
ICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvb3RoZXJw
YWdlLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIpCis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFu
ZC1jYW5jZWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9mb3J3YXJkLWFuZC1jYW5jZWwuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MyBAQAorPHNjcmlwdD4KKy8vIFRlc3Qgc3RlcHM6CisvLyAxLiBTdGFydCBvbiBhIHBhZ2Ugd2l0
aCBubyBmcmFtZXMgKHRoaXMgcGFnZSkuCisvLyAyLiBOYXZpZ2F0ZSB0byBhIHBhZ2Ugd2l0aCBh
IGZyYW1lIHRyZWUgKEdyYW5kcGFyZW50LCBQYXJlbnQsIENoaWxkLCBVbmNsZSkuCisvLyAzLiBO
YXZpZ2F0ZSBjaGlsZCBmcmFtZSB0byBhIHNsb3dseSBsb2FkaW5nIFVSTC4KKy8vIDQuIEdvIGJh
Y2sgdG8gYWJvdXQ6YmxhbmsgaW4gY2hpbGQgZnJhbWUuCisvLyAgICBJbXBvcnRhbnQgdG8gdXNl
IGFib3V0OmJsYW5rLCB3aGljaCBjYW4gY29tbWl0IGltbWVkaWF0ZWx5IHdoaWxlIHdhbGtpbmcg
dGhlIHRyZWUuCisvLyA1LiBHbyBmb3J3YXJkIHRvIHNsb3cgVVJMLCBidXQgc3RvcCBiZWZvcmUg
dGhlIG5hdmlnYXRpb24gY29tbWl0cy4KKy8vICAgIEltcG9ydGFudCB0byBjYW5jZWwgdGhlIGxv
YWQgYW5kIGVuc3VyZSB0aGUgaGlzdG9yeSBpcyBub3QgY29ycnVwdGVkLgorLy8gNi4gR28gYmFj
ayB0byBzdGFydCBwYWdlIHdpdGggbm8gZnJhbWVzLgorLy8gICAgSW1wb3J0YW50IGZvciB0ZXN0
aW5nIHRoYXQgc3ViZnJhbWVzIGNhbiBiZSByZW1vdmVkLgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExp
c3QoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZy
YW1lcy1jb250YWluZXIuaHRtbCIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9h
ZGluZ1NjcmlwdCgiZnJhbWVzWzBdLmNsaWNrTGluaygpOyIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7CisKKyAgICAvLyBHbyBmb3J3YXJkIHRvIHNs
b3cgVVJMIGluIGNoaWxkIGZyYW1lLCBidXQgc3RvcCByaWdodCBhd2F5LiAgVGhpcyBzaG91bGQK
KyAgICAvLyByZXNldCB0aGUgYmFja0ZvcndhcmQgbGlzdCB0byB0aGUgcHJldmlvdXMgZW50cnku
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1l
b3V0KCdoaXN0b3J5LmZvcndhcmQoKTsnLDApOyBzZXRUaW1lb3V0KCd3aW5kb3cuc3RvcCgpOycs
MTApOyIpOworCisgICAgLy8gTm93IGdvIGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBiYWNrRm9yd2Fy
ZExpc3QgaXMgbm90IGNvcnJ1cHRlZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZU5v
bkxvYWRpbmdTY3JpcHQoInNldFRpbWVvdXQoJ2hpc3RvcnkuYmFjaygpOycsNTApOyIpOworCisg
ICAgLy8gV2FpdCB1bnRpbCB3ZSBnZXQgYmFjayB0byB0aGlzIHBhZ2UuCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIucXVldWVMb2FkaW5nU2NyaXB0KCJsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Iik7Cit9Cis8L3NjcmlwdD4KKzxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0
aGUgYmFja0ZvcndhcmQgbGlzdCBpcyBub3QgY29ycnVwdGVkIHdoZW4gYSBmcmFtZSBsb2FkIGlz
IGNhbmNlbGVkLgorPHA+SWYgdGVzdGluZyBtYW51YWxseSwgPGEgaHJlZj0icmVzb3VyY2VzL2Zv
cndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwiPmNsaWNrIGhlcmU8L2E+Lgor
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIC8vIE9u
bHkgbm90aWZ5IGRvbmUgd2hlbiB3ZSByZXR1cm4gdG8gdGhpcyBwYWdlIGEgc2Vjb25kIHRpbWUu
CisgICAgaWYgKCF3aW5kb3cubG9jYWxTdG9yYWdlLnN0YXJ0ZWQpIHsKKyAgICAgICAgd2luZG93
LmxvY2FsU3RvcmFnZS5zdGFydGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWxl
dGUgd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVkOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFt
ZXMtY29udGFpbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcgQEAKKzwhLS0gR3JhbmRwYXJlbnQgcGFnZSAtLT4KKworPCEtLSBQ
YXJlbnQgaWZyYW1lIC0tPgorPGlmcmFtZSBzcmM9ImZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMu
aHRtbCIgd2lkdGg9NTAwIGhlaWdodD00MDA+PC9pZnJhbWU+CisKKzwhLS0gVW5jbGUgaWZyYW1l
IC0tPgorPGlmcmFtZSBzcmM9Im90aGVycGFnZS5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3YXJk
LWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwh
LS0gUGFyZW50IHBhZ2UgLS0+Cis8c2NyaXB0PgorZnVuY3Rpb24gY2xpY2tMaW5rKCkgeworICAv
LyBTaW11bGF0ZSBhIG1vdXNlIGNsaWNrIG9uIGEgbGluayB0YXJnZXRpbmcgdGhlIGNoaWxkIGZy
YW1lLgorICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7Cisg
IGV2dC5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0cnVlLCB3aW5kb3csCisgICAgICAw
LCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7CisgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rIikuZGlzcGF0Y2hFdmVudChldnQpOworfQorPC9z
Y3JpcHQ+Cis8IS0tIENoaWxkIGlmcmFtZSAtLT4KKzxpZnJhbWUgaWQ9ImZyYW1lMSIgc3JjPSJh
Ym91dDpibGFuayI+PC9pZnJhbWU+Cis8YnI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhl
IGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3aGVuIGEgZnJhbWUgbG9hZCBpcyBj
YW5jZWxlZC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxhIGlkPSJsaW5rIiBocmVmPSJzbG93
LXJlc291cmNlLTEtc2VjLnBsIiB0YXJnZXQ9ImZyYW1lMSI+Y2xpY2sgaGVyZTwvYT4gYW5kIHRo
ZW4gQmFjay4gIFRoZW4gY2xpY2sgRm9yd2FyZCBhbmQgcXVpY2tseSBjbGljayBTdG9wLiAgRW5z
dXJlIHRoYXQgQmFjayBhbmQgRm9yd2FyZCBzdGlsbCB3b3JrLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78252</attachid>
            <date>2011-01-07 11:39:54 -0800</date>
            <delta_ts>2011-01-08 17:27:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50254-20110107113953.patch</filename>
            <type>text/plain</type>
            <size>16416</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTI1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMDcgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW5jZWxlZCBmcmFtZSBsb2FkcyBjYW4gY29ycnVwdCBiYWNrIGZvcndhcmQgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAyNTQKKworICAgICAg
ICBBdm9pZHMgY2hhbmdpbmcgbV9jdXJyZW50SXRlbSB1bnRpbCB0aGUgbmF2aWdhdGlvbiBjb21t
aXRzLgorICAgICAgICBBbHNvIHJlc2V0cyB0b3AtbGV2ZWwgaGlzdG9yeSBpdGVtcyBpZiBhIHN1
YmZyYW1lIG5hdmlnYXRpb24gaXMgY2FuY2VsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tM
b2FkQ29tcGxldGVGb3JUaGlzRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5oOgorCiAyMDExLTAxLTA2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNzUyNTIpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMzMsOCArMjMzMyw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNo
ZWNrTG9hZENvbXBsZXRlRm9yVGgKICAgICAgICAgICAgIC8vIENoZWNrIGFsbCBjaGlsZHJlbiBm
aXJzdC4KICAgICAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbTsKICAgICAgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIGlmIChp
c0JhY2tGb3J3YXJkTG9hZFR5cGUobG9hZFR5cGUoKSkgJiYgbV9mcmFtZSA9PSBwYWdlLT5tYWlu
RnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGhpc3RvcnkoKS0+Y3VycmVudEl0
ZW0oKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBl
KCkpKQorICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3Qg
dG8gdGhlIGxhc3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgorICAg
ICAgICAgICAgICAgICAgICBpdGVtID0gcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5oaXN0
b3J5KCktPmN1cnJlbnRJdGVtKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBib29s
IHNob3VsZFJlc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICghKHBkbC0+aXNMb2FkaW5nSW5B
UElTZW5zZSgpICYmICFwZGwtPmlzU3RvcHBpbmcoKSkpIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc1MjUyKQorKysgV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNiArMjM1LDEzIEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OmdvVG9JdGVtKEhpc3RvcnkKICAgICBwYWdlLT5iYWNrRm9y
d2FyZCgpLT5zZXRDdXJyZW50SXRlbSh0YXJnZXRJdGVtKTsKICAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHBhZ2UtPnNldEdsb2JhbEhpc3RvcnlJdGVt
KCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgPyAwIDog
dGFyZ2V0SXRlbSk7CisKKyAgICAvLyBGaXJzdCBzZXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0gb2Yg
YW55IGZyYW1lcyB0aGF0IGFyZSBub3QgYWN0dWFsbHkgbmF2aWdhdGluZy4KKyAgICAvLyBUaGlz
IG11c3QgYmUgZG9uZSBiZWZvcmUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRoZSBkZXNpcmVkIGZyYW1l
LCBiZWNhdXNlIHNvbWUKKyAgICAvLyBuYXZpZ2F0aW9ucyBjYW4gY29tbWl0IGltbWVkaWF0ZWx5
IChzdWNoIGFzIGFib3V0OmJsYW5rKS4gIFdlIG11c3QgYmUgc3VyZSB0aGF0CisgICAgLy8gYWxs
IGZyYW1lcyBoYXZlIHByb3Zpc2lvbmFsIGl0ZW1zIHNldCBiZWZvcmUgdGhlIGNvbW1pdC4KKyAg
ICByZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0odGFyZ2V0SXRlbSwgY3VycmVudEl0ZW0sIHR5
cGUpOworICAgIC8vIE5vdyB0aGF0IGFsbCBvdGhlciBmcmFtZXMgaGF2ZSBwcm92aXNpb25hbCBp
dGVtcywgZG8gdGhlIGFjdHVhbCBuYXZpZ2F0aW9uLgogICAgIHJlY3Vyc2l2ZUdvVG9JdGVtKHRh
cmdldEl0ZW0sIGN1cnJlbnRJdGVtLCB0eXBlKTsKIH0KIApAQCAtMzk5LDkgKzQwNiw1MCBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoCiAgICAgICAgIEFTU0VSVCht
X3Byb3Zpc2lvbmFsSXRlbSk7CiAgICAgICAgIG1fY3VycmVudEl0ZW0gPSBtX3Byb3Zpc2lvbmFs
SXRlbTsKICAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOworCisgICAgICAgIC8vIFRlbGwg
YWxsIG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9uYWwg
aXRlbXMgYW5kCisgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAgV2Un
bGwgYXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKKyAgICAgICAgLy8gY29tbWl0
dGVkKSBhbmQgaXRzIGNoaWxkcmVuICh3aGljaCB3aWxsIGJlIHJlcGxhY2VkKS4KKyAgICAgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgQVNTRVJUKHBhZ2UpOworICAg
ICAgICBwYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cmVjdXJzaXZlVXBk
YXRlRm9yQ29tbWl0KCk7CiAgICAgfQogfQogCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1
cnNpdmVVcGRhdGVGb3JDb21taXQoKQoreworICAgIC8vIFRoZSBmcmFtZSB0aGF0IG5hdmlnYXRl
ZCB3aWxsIG5vdyBoYXZlIGEgbnVsbCBwcm92aXNpb25hbCBpdGVtLgorICAgIC8vIElnbm9yZSBp
dCBhbmQgaXRzIGNoaWxkcmVuLgorICAgIGlmICghbV9wcm92aXNpb25hbEl0ZW0pCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIEZvciBlYWNoIGZyYW1lIHRoYXQgYWxyZWFkeSBoYWQgdGhlIGNv
bnRlbnQgdGhlIGl0ZW0gcmVxdWVzdGVkIChiYXNlZCBvbgorICAgIC8vIChhIG1hdGNoaW5nIFVS
TCBhbmQgZnJhbWUgdHJlZSBzbmFwc2hvdCksIGp1c3QgcmVzdG9yZSB0aGUgc2Nyb2xsIHBvc2l0
aW9uLgorICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSwgc2lu
Y2UgbV9mcmFtZUxvYWRDb21wbGV0ZSBpcyB0cnVlKQorICAgIEFTU0VSVChtX2ZyYW1lTG9hZENv
bXBsZXRlKTsKKyAgICBzYXZlRG9jdW1lbnRTdGF0ZSgpOworICAgIHNhdmVTY3JvbGxQb3NpdGlv
bkFuZFZpZXdTdGF0ZVRvSXRlbShtX2N1cnJlbnRJdGVtLmdldCgpKTsKKworICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCisgICAgICAgIHZpZXctPnNldFdhc1Njcm9s
bGVkQnlVc2VyKGZhbHNlKTsKKworICAgIC8vIE5vdyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0
ZW0KKyAgICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gZmFsc2U7CisgICAgbV9wcmV2aW91c0l0ZW0g
PSBtX2N1cnJlbnRJdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSBtX3Byb3Zpc2lvbmFsSXRlbTsK
KyAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisKKyAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCisgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKKwor
ICAgIC8vIFJlc3RvcmUgdGhlIHNjcm9sbCBwb3NpdGlvbiAod2UgY2hvb3NlIHRvIGRvIHRoaXMg
cmF0aGVyIHRoYW4gZ29pbmcgYmFjayB0byB0aGUgYW5jaG9yIHBvaW50KQorICAgIHJlc3RvcmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgpOworCisgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBy
ZXN0IG9mIHRoZSB0cmVlCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCkt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlY3Vyc2l2ZVVwZGF0ZUZv
ckNvbW1pdCgpOworfQorCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKCkKIHsKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLmlz
RW1wdHkoKSkKQEAgLTU1MSw0NCArNTk5LDQyIEBAIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhp
c3RvcnlDb250cm9sbGUKIAogLy8gVGhlIGdlbmVyYWwgaWRlYSBoZXJlIGlzIHRvIHRyYXZlcnNl
IHRoZSBmcmFtZSB0cmVlIGFuZCB0aGUgaXRlbSB0cmVlIGluIHBhcmFsbGVsLAogLy8gdHJhY2tp
bmcgd2hldGhlciBlYWNoIGZyYW1lIGFscmVhZHkgaGFzIHRoZSBjb250ZW50IHRoZSBpdGVtIHJl
cXVlc3RzLiAgSWYgdGhlcmUgaXMKLS8vIGEgbWF0Y2ggKGJ5IFVSTCksIHdlIGp1c3QgcmVzdG9y
ZSBzY3JvbGwgcG9zaXRpb24gYW5kIHJlY3Vyc2UuICBPdGhlcndpc2Ugd2UgbXVzdAotLy8gcmVs
b2FkIHRoYXQgZnJhbWUsIGFuZCBhbGwgaXRzIGtpZHMuCi12b2lkIEhpc3RvcnlDb250cm9sbGVy
OjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21J
dGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCisvLyBhIG1hdGNoLCB3ZSBzZXQgdGhlIHByb3Zpc2lv
bmFsIGl0ZW0gYW5kIHJlY3Vyc2UuICBPdGhlcndpc2Ugd2Ugd2lsbCByZWxvYWQgdGhhdAorLy8g
ZnJhbWUgYW5kIGFsbCBpdHMga2lkcyBpbiByZWN1cnNpdmVHb1RvSXRlbS4KK3ZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSogaXRl
bSwgSGlzdG9yeUl0ZW0qIGZyb21JdGVtLCBGcmFtZUxvYWRUeXBlIHR5cGUpCiB7CiAgICAgQVNT
RVJUKGl0ZW0pOwogICAgIEFTU0VSVChmcm9tSXRlbSk7CiAKLSAgICAvLyBJZiB0aGUgaXRlbSB3
ZSdyZSBnb2luZyB0byBpcyBhIGNsb25lIG9mIHRoZSBpdGVtIHdlJ3JlIGF0LCB0aGVuIGRvCi0g
ICAgLy8gbm90IGxvYWQgaXQgYWdhaW4sIGFuZCBjb250aW51ZSBoaXN0b3J5IHRyYXZlcnNhbCB0
byBpdHMgY2hpbGRyZW4uCi0gICAgLy8gVGhlIGN1cnJlbnQgZnJhbWUgdHJlZSBhbmQgdGhlIGZy
YW1lIHRyZWUgc25hcHNob3QgaW4gdGhlIGl0ZW0gaGF2ZQotICAgIC8vIHRvIG1hdGNoLgotICAg
IC8vIE5vdGU6IElmIGl0ZW0gYW5kIGZyb21JdGVtIGFyZSB0aGUgc2FtZSwgdGhlbiB3ZSBuZWVk
IHRvIGNyZWF0ZSBhIG5ldwotICAgIC8vIGRvY3VtZW50LgotICAgIGlmIChpdGVtICE9IGZyb21J
dGVtIAotICAgICAgICAmJiBpdGVtLT5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBmcm9tSXRlbS0+
aXRlbVNlcXVlbmNlTnVtYmVyKCkKLSAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbShp
dGVtKQotICAgICAgICAmJiBmcm9tSXRlbS0+aGFzU2FtZUZyYW1lcyhpdGVtKSkKLSAgICB7Ci0g
ICAgICAgIC8vIFRoaXMgY29udGVudCBpcyBnb29kLCBzbyBsZWF2ZSBpdCBhbG9uZSBhbmQgbG9v
ayBmb3IgY2hpbGRyZW4gdGhhdCBuZWVkIHJlbG9hZGluZwotICAgICAgICAvLyBTYXZlIGZvcm0g
c3RhdGUgKHdvcmtzIGZyb20gY3VycmVudEl0ZW0sIHNpbmNlIG1fZnJhbWVMb2FkQ29tcGxldGUg
aXMgdHJ1ZSkKLSAgICAgICAgQVNTRVJUKG1fZnJhbWVMb2FkQ29tcGxldGUpOwotICAgICAgICBz
YXZlRG9jdW1lbnRTdGF0ZSgpOwotICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3Rh
dGVUb0l0ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7CisgICAgaWYgKGl0ZW1zQXJlQ2xvbmVzKGl0
ZW0sIGZyb21JdGVtKSkgeworICAgICAgICAvLyBTZXQgcHJvdmlzaW9uYWwgaXRlbSwgd2hpY2gg
d2lsbCBiZSBjb21taXR0ZWQgaW4gcmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0LgorICAgICAgICBt
X3Byb3Zpc2lvbmFsSXRlbSA9IGl0ZW07CiAKLSAgICAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2Vy
KGZhbHNlKTsKKyAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW1WZWN0b3ImIGNoaWxkSXRlbXMgPSBp
dGVtLT5jaGlsZHJlbigpOwogCi0gICAgICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRl
bTsKLSAgICAgICAgbV9jdXJyZW50SXRlbSA9IGl0ZW07Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgIC8vIFJlc3RvcmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBjdXJyZW50SXRlbSkKLSAgICAg
ICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFJlc3RvcmUg
dGhlIHNjcm9sbCBwb3NpdGlvbiAod2UgY2hvb3NlIHRvIGRvIHRoaXMgcmF0aGVyIHRoYW4gZ29p
bmcgYmFjayB0byB0aGUgYW5jaG9yIHBvaW50KQotICAgICAgICByZXN0b3JlU2Nyb2xsUG9zaXRp
b25BbmRWaWV3U3RhdGUoKTsKLSAgICAgICAgCisgICAgICAgIGludCBzaXplID0gY2hpbGRJdGVt
cy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICBTdHJpbmcgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW1zW2ldLT50YXJnZXQoKTsK
KyAgICAgICAgICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxk
SXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5hbWUpOworICAgICAgICAgICAgQVNTRVJUKGZyb21D
aGlsZEl0ZW0pOworICAgICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLT50cmVl
KCktPmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1l
KTsKKyAgICAgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlY3Vyc2l2
ZVNldFByb3Zpc2lvbmFsSXRlbShjaGlsZEl0ZW1zW2ldLmdldCgpLCBmcm9tQ2hpbGRJdGVtLCB0
eXBlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gV2Ugbm93IHRyYXZlcnNlIHRoZSBmcmFt
ZSB0cmVlIGFuZCBpdGVtIHRyZWUgYSBzZWNvbmQgdGltZSwgbG9hZGluZyBmcmFtZXMgdGhhdAor
Ly8gZG8gaGF2ZSB0aGUgY29udGVudCB0aGUgaXRlbSByZXF1ZXN0cy4KK3ZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtLCBIaXN0b3J5SXRl
bSogZnJvbUl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQoaXRlbSk7Cisg
ICAgQVNTRVJUKGZyb21JdGVtKTsKKworICAgIGlmIChpdGVtc0FyZUNsb25lcyhpdGVtLCBmcm9t
SXRlbSkpIHsKKyAgICAgICAgLy8gSnVzdCBpdGVyYXRlIG92ZXIgdGhlIHJlc3QsIGxvb2tpbmcg
Zm9yIGZyYW1lcyB0byBuYXZpZ2F0ZS4KICAgICAgICAgY29uc3QgSGlzdG9yeUl0ZW1WZWN0b3Im
IGNoaWxkSXRlbXMgPSBpdGVtLT5jaGlsZHJlbigpOwotICAgICAgICAKKwogICAgICAgICBpbnQg
c2l6ZSA9IGNoaWxkSXRlbXMuc2l6ZSgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICAgICAgU3RyaW5nIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVt
c1tpXS0+dGFyZ2V0KCk7CkBAIC02MDMsNiArNjQ5LDIxIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnJlY3Vyc2l2ZUdvVG9JdGUKICAgICB9CiB9CiAKK2Jvb2wgSGlzdG9yeUNvbnRyb2xsZXI6
Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVtKiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBj
b25zdAoreworICAgIC8vIElmIHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvIGlzIGEgY2xvbmUgb2Yg
dGhlIGl0ZW0gd2UncmUgYXQsIHRoZW4gd2UgZG8KKyAgICAvLyBub3QgbmVlZCB0byBsb2FkIGl0
IGFnYWluLiAgVGhlIGN1cnJlbnQgZnJhbWUgdHJlZSBhbmQgdGhlIGZyYW1lIHRyZWUKKyAgICAv
LyBzbmFwc2hvdCBpbiB0aGUgaXRlbSBoYXZlIHRvIG1hdGNoLgorICAgIC8vIE5vdGU6IFNvbWUg
Y2xpZW50cyB0cmVhdCBhIG5hdmlnYXRpb24gdG8gdGhlIGN1cnJlbnQgaGlzdG9yeSBpdGVtIGFz
CisgICAgLy8gYSByZWxvYWQuICBUaHVzLCBpZiBpdGVtMSBhbmQgaXRlbTIgYXJlIHRoZSBzYW1l
LCB3ZSBuZWVkIHRvIGNyZWF0ZSBhCisgICAgLy8gbmV3IGRvY3VtZW50IGFuZCBzaG91bGQgbm90
IGNvbnNpZGVyIHRoZW0gY2xvbmVzLgorICAgIC8vIChTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8z
NTUzMiBmb3IgZGV0YWlscy4pCisgICAgcmV0dXJuIGl0ZW0xICE9IGl0ZW0yCisgICAgICAgICYm
IGl0ZW0xLT5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRlbVNlcXVlbmNlTnVtYmVy
KCkKKyAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbShpdGVtMSkKKyAgICAgICAgJiYg
aXRlbTItPmhhc1NhbWVGcmFtZXMoaXRlbTEpOworfQorCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQg
ZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBo
aXN0b3J5IGl0ZW0ncy4KIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRGcmFtZXNNYXRj
aEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmgJKHJldmlzaW9uIDc1MjUyKQorKysgV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsMTAgQEAgcHJpdmF0ZToKICAg
ICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtKGJvb2wgdXNlT3JpZ2luYWwpOwog
ICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRG
cmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCisgICAgdm9pZCByZWN1cnNpdmVTZXRQcm92aXNp
b25hbEl0ZW0oSGlzdG9yeUl0ZW0qLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwogICAg
IHZvaWQgcmVjdXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0qLCBIaXN0b3J5SXRlbSosIEZyYW1l
TG9hZFR5cGUpOworICAgIHZvaWQgcmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCk7CisgICAgYm9v
bCBpdGVtc0FyZUNsb25lcyhIaXN0b3J5SXRlbSosIEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAg
Ym9vbCBjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdm9p
ZCB1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApOwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3NTI1MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAxLTA3ICBDaGFybGllIFJlaXMgIDxjcmVp
c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2FuY2VsZWQgZnJhbWUgbG9hZHMgY2FuIGNvcnJ1cHQgYmFjayBmb3J3YXJkIGxp
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMjU0
CisKKyAgICAgICAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1s
IGFib3J0cyBhIHNsb3dseSBsb2FkaW5nCisgICAgICAgIHN1YmZyYW1lIGluIGEgZnJhbWUgdHJl
ZSBhbmQgZW5zdXJlcyB0aGUgaGlzdG9yeSBpdGVtcyBhcmUgdXBkYXRlZCBwcm9wZXJseS4KKwor
ICAgICAgICAqIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJkLWFuZC1j
YW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQt
Y2FuY2VsLWZyYW1lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFp
bmVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTA2ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Zvcndh
cmQtYW5kLWNhbmNlbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBiYWNr
Rm9yd2FyZCBsaXN0IGlzIG5vdCBjb3JydXB0ZWQgd2hlbiBhIGZyYW1lIGxvYWQgaXMgY2FuY2Vs
ZWQuCisKK0lmIHRlc3RpbmcgbWFudWFsbHksIGNsaWNrIGhlcmUuCisKKz09PT09PT09PT09PT09
IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9uYXZpZ2F0aW9uL2ZvcndhcmQtYW5kLWNhbmNlbC5odG1sICAqKm5hdiB0YXJnZXQq
KgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9y
d2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbCAgKipuYXYgdGFyZ2V0KioKKyAg
ICAgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3
YXJkLWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwgKGluIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPiIpCisgICAgICAgICAgICAgICAgYWJvdXQ6YmxhbmsgKGluIGZyYW1lICJm
cmFtZTEiKQorICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL290aGVycGFnZS5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTEtLT4tLT4iKQorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250YWluZXIuaHRtbAorICAgICAgICAg
ICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5k
LWNhbmNlbC1mcmFtZXMuaHRtbCAoaW4gZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUw
LS0+LS0+IikKKyAgICAgICAgICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvc2xvdy1yZXNvdXJjZS0xLXNlYy5wbCAoaW4gZnJhbWUgImZyYW1lMSIpICAq
Km5hdiB0YXJnZXQqKgorICAgICAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRp
b24vcmVzb3VyY2VzL290aGVycGFnZS5odG1sIChpbiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTEtLT4tLT4iKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9mb3J3YXJk
LWFuZC1jYW5jZWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vZm9yd2FyZC1hbmQtY2FuY2VsLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKzxzY3JpcHQ+CisvLyBUZXN0IHN0ZXBzOgorLy8gMS4g
U3RhcnQgb24gYSBwYWdlIHdpdGggbm8gZnJhbWVzICh0aGlzIHBhZ2UpLgorLy8gMi4gTmF2aWdh
dGUgdG8gYSBwYWdlIHdpdGggYSBmcmFtZSB0cmVlIChHcmFuZHBhcmVudCwgUGFyZW50LCBDaGls
ZCwgVW5jbGUpLgorLy8gMy4gTmF2aWdhdGUgY2hpbGQgZnJhbWUgdG8gYSBzbG93bHkgbG9hZGlu
ZyBVUkwuCisvLyA0LiBHbyBiYWNrIHRvIGFib3V0OmJsYW5rIGluIGNoaWxkIGZyYW1lLgorLy8g
ICAgSW1wb3J0YW50IHRvIHVzZSBhYm91dDpibGFuaywgd2hpY2ggY2FuIGNvbW1pdCBpbW1lZGlh
dGVseSB3aGlsZSB3YWxraW5nIHRoZSB0cmVlLgorLy8gNS4gR28gZm9yd2FyZCB0byBzbG93IFVS
TCwgYnV0IHN0b3AgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGNvbW1pdHMuCisvLyAgICBJbXBvcnRh
bnQgdG8gY2FuY2VsIHRoZSBsb2FkIGFuZCBlbnN1cmUgdGhlIGhpc3RvcnkgaXMgbm90IGNvcnJ1
cHRlZC4KKy8vIDYuIEdvIGJhY2sgdG8gc3RhcnQgcGFnZSB3aXRoIG5vIGZyYW1lcy4KKy8vICAg
IEltcG9ydGFudCBmb3IgdGVzdGluZyB0aGF0IHN1YmZyYW1lcyBjYW4gYmUgcmVtb3ZlZC4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2Zv
cndhcmQtYW5kLWNhbmNlbC1mcmFtZXMtY29udGFpbmVyLmh0bWwiKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5xdWV1ZUxvYWRpbmdTY3JpcHQoImZyYW1lc1swXS5jbGlja0xpbmsoKTsiKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworCisgICAg
Ly8gR28gZm9yd2FyZCB0byBzbG93IFVSTCBpbiBjaGlsZCBmcmFtZSwgYnV0IHN0b3AgcmlnaHQg
YXdheS4gIFRoaXMgc2hvdWxkCisgICAgLy8gcmVzZXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgdG8g
dGhlIHByZXZpb3VzIGVudHJ5LgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTm9uTG9h
ZGluZ1NjcmlwdCgic2V0VGltZW91dCgnaGlzdG9yeS5mb3J3YXJkKCk7JywwKTsgc2V0VGltZW91
dCgnd2luZG93LnN0b3AoKTsnLDEwKTsiKTsKKworICAgIC8vIE5vdyBnbyBiYWNrIHRvIG1ha2Ug
c3VyZSB0aGUgYmFja0ZvcndhcmRMaXN0IGlzIG5vdCBjb3JydXB0ZWQuCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIucXVldWVOb25Mb2FkaW5nU2NyaXB0KCJzZXRUaW1lb3V0KCdoaXN0b3J5LmJh
Y2soKTsnLDUwKTsiKTsKKworICAgIC8vIFdhaXQgdW50aWwgd2UgZ2V0IGJhY2sgdG8gdGhpcyBw
YWdlLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZGluZ1NjcmlwdCgibGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOyIpOworfQorPC9zY3JpcHQ+Cis8cD5UaGlz
IHRlc3QgY2hlY2tzIHRoYXQgdGhlIGJhY2tGb3J3YXJkIGxpc3QgaXMgbm90IGNvcnJ1cHRlZCB3
aGVuIGEgZnJhbWUgbG9hZCBpcyBjYW5jZWxlZC4KKzxwPklmIHRlc3RpbmcgbWFudWFsbHksIDxh
IGhyZWY9InJlc291cmNlcy9mb3J3YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1s
Ij5jbGljayBoZXJlPC9hPi4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAvLyBPbmx5IG5vdGlmeSBkb25lIHdoZW4gd2UgcmV0dXJuIHRvIHRoaXMg
cGFnZSBhIHNlY29uZCB0aW1lLgorICAgIGlmICghd2luZG93LmxvY2FsU3RvcmFnZS5zdGFydGVk
KSB7CisgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZCA9IHRydWU7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgZGVsZXRlIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc3RhcnRlZDsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9mb3J3
YXJkLWFuZC1jYW5jZWwtZnJhbWVzLWNvbnRhaW5lci5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2Vs
LWZyYW1lcy1jb250YWluZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy1jb250
YWluZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACis8IS0tIEdyYW5kcGFyZW50
IHBhZ2UgLS0+CisKKzwhLS0gUGFyZW50IGlmcmFtZSAtLT4KKzxpZnJhbWUgc3JjPSJmb3J3YXJk
LWFuZC1jYW5jZWwtZnJhbWVzLmh0bWwiIHdpZHRoPTUwMCBoZWlnaHQ9NDAwPjwvaWZyYW1lPgor
Cis8IS0tIFVuY2xlIGlmcmFtZSAtLT4KKzxpZnJhbWUgc3JjPSJvdGhlcnBhZ2UuaHRtbCI+PC9p
ZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2ZvcndhcmQtYW5kLWNhbmNlbC1mcmFt
ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvZm9yd2FyZC1hbmQtY2FuY2VsLWZyYW1lcy5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1IEBACis8IS0tIFBhcmVudCBwYWdlIC0tPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGNsaWNrTGluaygpIHsKKyAgLy8gU2ltdWxhdGUgYSBtb3VzZSBjbGljayBvbiBhIGxpbmsgdGFy
Z2V0aW5nIHRoZSBjaGlsZCBmcmFtZS4KKyAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50
KCJNb3VzZUV2ZW50cyIpOworICBldnQuaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwgdHJ1ZSwgdHJ1
ZSwgd2luZG93LAorICAgICAgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIDAsIG51bGwpOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGluayIpLmRpc3BhdGNo
RXZlbnQoZXZ0KTsKK30KKzwvc2NyaXB0PgorPCEtLSBDaGlsZCBpZnJhbWUgLS0+Cis8aWZyYW1l
IGlkPSJmcmFtZTEiIHNyYz0iYWJvdXQ6YmxhbmsiPjwvaWZyYW1lPgorPGJyPgorPHA+VGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IHRoZSBiYWNrRm9yd2FyZCBsaXN0IGlzIG5vdCBjb3JydXB0ZWQgd2hl
biBhIGZyYW1lIGxvYWQgaXMgY2FuY2VsZWQuCis8cD5JZiB0ZXN0aW5nIG1hbnVhbGx5LCA8YSBp
ZD0ibGluayIgaHJlZj0ic2xvdy1yZXNvdXJjZS0xLXNlYy5wbCIgdGFyZ2V0PSJmcmFtZTEiPmNs
aWNrIGhlcmU8L2E+IGFuZCB0aGVuIEJhY2suICBUaGVuIGNsaWNrIEZvcndhcmQgYW5kIHF1aWNr
bHkgY2xpY2sgU3RvcC4gIEVuc3VyZSB0aGF0IEJhY2sgYW5kIEZvcndhcmQgc3RpbGwgd29yay4K
</data>

          </attachment>
      

    </bug>

</bugzilla>