<?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>82498</bug_id>
          
          <creation_ts>2012-03-28 12:02:48 -0700</creation_ts>
          <short_desc>Fix usage of LayoutUnits and pixel snapping in RenderLayer</short_desc>
          <delta_ts>2012-04-02 19:45:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>590228</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-28 12:02:48 -0700</bug_when>
    <thetext>Fix usage of subpixel types and snapping/rounding in RenderLayer in preparation for turning on subpixel layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590326</commentid>
    <comment_count>1</comment_count>
      <attachid>134379</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-28 13:10:26 -0700</bug_when>
    <thetext>Created attachment 134379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590615</commentid>
    <comment_count>2</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-28 17:01:50 -0700</bug_when>
    <thetext>Eric, any chance you could take a look at this one too while you are at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591653</commentid>
    <comment_count>3</comment_count>
      <attachid>134379</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-29 15:39:58 -0700</bug_when>
    <thetext>Comment on attachment 134379
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:747
&gt; +        setSize(pixelSnappedIntSize(box-&gt;size(), box-&gt;location()));

It&apos;s kind of weird that the size - that comes from the RenderObject - is pixel snapped. Especially since we will use it back into a LayoutRect in calculateRects (which means 2 conversions). Won&apos;t we hit corner cases where the rounding / snapping could make us miss a paint or hit test? (I see that this matches the inline case as implemented now).

&gt; Source/WebCore/rendering/RenderLayer.cpp:2257
&gt; +    RenderBox* box = renderBox();
&gt; +    ASSERT(box);

Nit: just inline that below and do:

return snapSizeToPixel(m_scrollSize.width(), renderBox()-&gt;clientLeft());

That would be more readable and the scroll information requires a RenderBox.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2266
&gt; +    RenderBox* box = renderBox();
&gt; +    ASSERT(box);

Ditto.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2600
&gt; +        resizeControlRect = resizerCornerRect(this, box-&gt;borderBoxRect());

borderBoxRect returns a LayoutRect and resizerCornerRect takes an IntRect, is there something fishy here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592394</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-30 12:22:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 134379 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134379&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:747
&gt; &gt; +        setSize(pixelSnappedIntSize(box-&gt;size(), box-&gt;location()));
&gt; 
&gt; It&apos;s kind of weird that the size - that comes from the RenderObject - is pixel snapped. Especially since we will use it back into a LayoutRect in calculateRects (which means 2 conversions). Won&apos;t we hit corner cases where the rounding / snapping could make us miss a paint or hit test? (I see that this matches the inline case as implemented now).

It is a bit weird but is needed to ensure that the size of the layer is aligned to pixel bounds. The extra conversions for calcRects are unfortunate I agree but adding extra complexity to avoid the conversions seems like premature optimization.


&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2257
&gt; &gt; +    RenderBox* box = renderBox();
&gt; &gt; +    ASSERT(box);
&gt; 
&gt; Nit: just inline that below and do:
&gt; 
&gt; return snapSizeToPixel(m_scrollSize.width(), renderBox()-&gt;clientLeft());
&gt; 
&gt; That would be more readable and the scroll information requires a RenderBox.

Good idea, made the change here and below.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2266
&gt; &gt; +    RenderBox* box = renderBox();
&gt; &gt; +    ASSERT(box);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2600
&gt; &gt; +        resizeControlRect = resizerCornerRect(this, box-&gt;borderBoxRect());
&gt; 
&gt; borderBoxRect returns a LayoutRect and resizerCornerRect takes an IntRect, is there something fishy here?

We are changing borderBoxRect to return an IntRect in one of the other outstanding patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592436</commentid>
    <comment_count>5</comment_count>
      <attachid>134866</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-30 13:08:06 -0700</bug_when>
    <thetext>Created attachment 134866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593765</commentid>
    <comment_count>6</comment_count>
      <attachid>134866</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-02 13:31:48 -0700</bug_when>
    <thetext>Comment on attachment 134866
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:747
&gt; +        setSize(pixelSnappedIntSize(box-&gt;size(), box-&gt;location()));

&gt;&gt; It&apos;s kind of weird that the size - that comes from the RenderObject - is pixel snapped. Especially since we will use it back into a LayoutRect in calculateRects (which means 2 conversions). Won&apos;t we hit corner cases where the rounding / snapping could make us miss a paint or hit test? (I see that this matches the inline case as implemented now).
&gt; It is a bit weird but is needed to ensure that the size of the layer is aligned to pixel bounds. The extra conversions for calcRects are unfortunate I agree but adding extra complexity to avoid the conversions seems like premature optimization.

I am not 100% this is just an optimization and will not lead to corner cases&apos; issues. Please put a FIXME here that we shouldn&apos;t be doing those unneeded snapping.

&gt; Source/WebCore/rendering/RenderLayer.cpp:3143
&gt;          hitTestArea.intersect(pixelSnappedIntRect(frameVisibleRect(renderer())));

I don&apos;t think we should pixel snap our frameVisibleRect now as hitTestArea is a LayoutRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593795</commentid>
    <comment_count>7</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-02 13:51:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I am not 100% this is just an optimization and will not lead to corner cases&apos; issues. Please put a FIXME here that we shouldn&apos;t be doing those unneeded snapping.

Will do, thanks.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:3143
&gt; &gt;          hitTestArea.intersect(pixelSnappedIntRect(frameVisibleRect(renderer())));
&gt; 
&gt; I don&apos;t think we should pixel snap our frameVisibleRect now as hitTestArea is a LayoutRect.

Good point, reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593845</commentid>
    <comment_count>8</comment_count>
      <attachid>135185</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-02 14:26:49 -0700</bug_when>
    <thetext>Created attachment 135185
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593902</commentid>
    <comment_count>9</comment_count>
      <attachid>135185</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 15:09:51 -0700</bug_when>
    <thetext>Comment on attachment 135185
Patch for landing

Rejecting attachment 135185 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ded at 3022 with fuzz 2 (offset 118 lines).
Hunk #11 FAILED at 2929.
Hunk #12 succeeded at 3069 (offset 120 lines).
Hunk #13 succeeded at 3087 with fuzz 1 (offset 121 lines).
Hunk #14 succeeded at 3269 (offset 130 lines).
Hunk #15 succeeded at 3561 (offset 130 lines).
1 out of 15 hunks FAILED -- saving rejects to file Source/WebCore/rendering/RenderLayer.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12309780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593939</commentid>
    <comment_count>10</comment_count>
      <attachid>135209</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-04-02 15:47:58 -0700</bug_when>
    <thetext>Created attachment 135209
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594150</commentid>
    <comment_count>11</comment_count>
      <attachid>135209</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 19:45:00 -0700</bug_when>
    <thetext>Comment on attachment 135209
Patch for landing

Clearing flags on attachment: 135209

Committed r112977: &lt;http://trac.webkit.org/changeset/112977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594151</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 19:45:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134379</attachid>
            <date>2012-03-28 13:10:26 -0700</date>
            <delta_ts>2012-03-30 13:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82498-20120328131025.patch</filename>
            <type>text/plain</type>
            <size>10724</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjQyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAzLTI4ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggdXNhZ2Ugb2YgTGF5b3V0
VW5pdHMgYW5kIHBpeGVsIHNuYXBwaW5nIGluIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB1c2FnZSBvZiBzdWJwaXhlbCB0eXBl
cyBhbmQgc25hcHBpbmcvcm91bmRpbmcgaW4gUmVuZGVyTGF5ZXIgaW4KKyAgICAgICAgcHJlcGFy
YXRpb24gZm9yIHR1cm5pbmcgb24gc3VicGl4ZWwgbGF5b3V0LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6cGl4ZWxTbmFwcGVkSW50U2l6ZSk6CisgICAgICAgIEFkZCBuby1vcCBpbXBsZW1lbnRh
dGlvbiBvZiBwaXhlbFNuYXBwZWRJbnRTaXplLCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorICAg
ICAgICByZWFsIGltcGxlbWVudGF0aW9uIG9uY2Ugd2UgbWFrZSB0aGUgc3dpdGNoLgorICAgICAg
ICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICBTbmFwIFJlbmRl
ckJveCBzaXplIHdoZW4gdXBkYXRpbmcgdGhlIHNpemUgb2YgdGhlIGxheWVyLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXNpemUpOgorICAgICAgICBSb3VuZCBw
b3NpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBkdXJpbmcgcmVzaXplIG9wZXJh
dGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3Qp
OgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgor
ICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93
Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVj
dCBjYWxsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KToKKyAg
ICAgICAgRml4IGltcGxlbWVudGF0aW9uIG9mIHNjcm9sbFdpZHRoIGFuZCBIZWlnaHQgdG8gcGl4
ZWwgc25hcCB0aGUgdmFsdWVzLgorICAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0
VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxT
bmFwcGVkSW50UmVjdCBjYWxscy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgUGl4ZWwgc25hcCB2YWx1ZXMganVz
dCBiZWZvcmUgcGFpbnRpbmcgKGluc3RlYWQgb2YgZWFybGllciBvbikuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpoaXRUZXN0Q29udGVudHMpOgorICAgICAgICBDaGFuZ2UgdG8gdXNlIHN1YnBpeGVsIHR5
cGVzLgorCiAyMDEyLTAzLTI4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBzZXROZWVkc0xheW91dCh0cnVlLCBmYWxzZSkgaXMgc3VwZXIgY29uZnVzaW5nIHRvIHJl
YWQgYW5kIHNob3VsZCB1c2UgYW4gZW51bSBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGF5b3V0VHlwZXMuaAkocmV2aXNpb24gMTEyMzI5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDEyIEBA
IGlubGluZSBpbnQgc25hcFNpemVUb1BpeGVsKExheW91dFVuaXQgc2kKICAgICByZXR1cm4gc2l6
ZTsKIH0KIAoraW5saW5lIEludFNpemUgcGl4ZWxTbmFwcGVkSW50U2l6ZShMYXlvdXRTaXplIHNp
emUsIExheW91dFBvaW50IGxvY2F0aW9uKQoreworICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
CisgICAgcmV0dXJuIHNpemU7Cit9CisKIGlubGluZSBJbnRTaXplIHJvdW5kZWRJbnRTaXplKGNv
bnN0IExheW91dFNpemUmIHMpCiB7CiAgICAgcmV0dXJuIHM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDExMjMyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw3
ICs3NDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKICAgICAg
ICAgaW5saW5lQm91bmRpbmdCb3hPZmZzZXQgPSB0b1NpemUobGluZUJveC5sb2NhdGlvbigpKTsK
ICAgICAgICAgbG9jYWxQb2ludCArPSBpbmxpbmVCb3VuZGluZ0JveE9mZnNldDsKICAgICB9IGVs
c2UgaWYgKFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCkpIHsKLSAgICAgICAgc2V0U2l6ZShi
b3gtPnNpemUoKSk7CisgICAgICAgIHNldFNpemUocGl4ZWxTbmFwcGVkSW50U2l6ZShib3gtPnNp
emUoKSwgYm94LT5sb2NhdGlvbigpKSk7CiAgICAgICAgIGxvY2FsUG9pbnQgKz0gYm94LT50b3BM
ZWZ0TG9jYXRpb25PZmZzZXQoKTsKICAgICB9CiAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0Zm9ybU0KICAgICAgICAgfQogICAgICAgICBM
YXlvdXRVbml0IGJhc2VXaWR0aCA9IHJlbmRlcmVyLT53aWR0aCgpIC0gKGlzQm94U2l6aW5nQm9y
ZGVyID8gemVyb0xheW91dFVuaXQgOiByZW5kZXJlci0+Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCkp
OwogICAgICAgICBiYXNlV2lkdGggPSBiYXNlV2lkdGggLyB6b29tRmFjdG9yOwotICAgICAgICBz
dHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0
cmluZzo6bnVtYmVyKGJhc2VXaWR0aCArIGRpZmZlcmVuY2Uud2lkdGgoKSkgKyAicHgiLCBmYWxz
ZSk7CisgICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXaWR0aCwgU3RyaW5nOjpudW1iZXIocm91bmRUb0ludChiYXNlV2lkdGggKyBkaWZmZXJl
bmNlLndpZHRoKCkpKSArICJweCIsIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAocmVzaXplICE9
IFJFU0laRV9IT1JJWk9OVEFMICYmIGRpZmZlcmVuY2UuaGVpZ2h0KCkpIHsKQEAgLTE3NzIsNyAr
MTc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0Zm9ybU0KICAgICAg
ICAgfQogICAgICAgICBMYXlvdXRVbml0IGJhc2VIZWlnaHQgPSByZW5kZXJlci0+aGVpZ2h0KCkg
LSAoaXNCb3hTaXppbmdCb3JkZXIgPyB6ZXJvTGF5b3V0VW5pdCA6IHJlbmRlcmVyLT5ib3JkZXJB
bmRQYWRkaW5nSGVpZ2h0KCkpOwogICAgICAgICBiYXNlSGVpZ2h0ID0gYmFzZUhlaWdodCAvIHpv
b21GYWN0b3I7Ci0gICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNl
LmhlaWdodCgpKSArICJweCIsIGZhbHNlKTsKKyAgICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIocm91bmRU
b0ludChiYXNlSGVpZ2h0ICsgZGlmZmVyZW5jZS5oZWlnaHQoKSkpICsgInB4IiwgZmFsc2UpOwog
ICAgIH0KIAogICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKQEAgLTE4ODIsNyArMTg4Miw3
IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3QoKSAKICAgICBib29sIGhh
c1ZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIg
PSByZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORTsKICAgICBpZiAo
KGhhc0hvcml6b250YWxCYXIgJiYgaGFzVmVydGljYWxCYXIpIHx8IChoYXNSZXNpemVyICYmICho
YXNIb3Jpem9udGFsQmFyIHx8IGhhc1ZlcnRpY2FsQmFyKSkpCi0gICAgICAgIHJldHVybiBjb3Ju
ZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRlckJveFJl
Y3QoKSkpOworICAgICAgICByZXR1cm4gY29ybmVyUmVjdCh0aGlzLCByZW5kZXJCb3goKS0+Ym9y
ZGVyQm94UmVjdCgpKTsKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCkBAIC0yMjA2LDcgKzIy
MDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvCiAgICAgaWYg
KCFib3gpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEludFJlY3QgYm9yZGVyQm94ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRlckJveFJlY3QoKSk7CisgICAgY29uc3QgSW50
UmVjdCBib3JkZXJCb3ggPSBib3gtPmJvcmRlckJveFJlY3QoKTsKICAgICBjb25zdCBJbnRSZWN0
JiBzY3JvbGxDb3JuZXIgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3Vu
ZHMoYm9yZGVyQm94LmxvY2F0aW9uKCkgKyBvZmZzZXRGcm9tTGF5ZXIsIGJvcmRlckJveC5zaXpl
KCkpOwogICAgIGlmIChtX3ZCYXIpCkBAIC0yMjUzLDE2ICsyMjUzLDIwIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KIAogaW50IFJlbmRlckxheWVyOjpzY3JvbGxX
aWR0aCgpCiB7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBBU1NFUlQo
Ym94KTsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCiAgICAgICAgIGNvbXB1dGVT
Y3JvbGxEaW1lbnNpb25zKCk7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsU2l6ZS53aWR0aCgpOworICAg
IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwobV9zY3JvbGxTaXplLndpZHRoKCksIGJveC0+Y2xpZW50
TGVmdCgpKTsKIH0KIAogaW50IFJlbmRlckxheWVyOjpzY3JvbGxIZWlnaHQoKQogeworICAgIFJl
bmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CisgICAgQVNTRVJUKGJveCk7CiAgICAgaWYgKG1f
c2Nyb2xsRGltZW5zaW9uc0RpcnR5KQogICAgICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygp
OwotICAgIHJldHVybiBtX3Njcm9sbFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHNuYXBTaXpl
VG9QaXhlbChtX3Njcm9sbFNpemUuaGVpZ2h0KCksIGJveC0+Y2xpZW50VG9wKCkpOwogfQogCiBM
YXlvdXRVbml0IFJlbmRlckxheWVyOjpvdmVyZmxvd1RvcCgpIGNvbnN0CkBAIC0yMzA5LDcgKzIz
MTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9uCiAKICAgICBt
X3Njcm9sbFNpemUuc2V0V2lkdGgob3ZlcmZsb3dSaWdodCgpIC0gb3ZlcmZsb3dMZWZ0KCkpOwog
ICAgIG1fc2Nyb2xsU2l6ZS5zZXRIZWlnaHQob3ZlcmZsb3dCb3R0b20oKSAtIG92ZXJmbG93VG9w
KCkpOwotICAgIAorCiAgICAgc2V0U2Nyb2xsT3JpZ2luKEludFBvaW50KC1tX3Njcm9sbE92ZXJm
bG93LndpZHRoKCksIC1tX3Njcm9sbE92ZXJmbG93LmhlaWdodCgpKSk7CiAKICAgICBpZiAobmVl
ZEhCYXIpCkBAIC0yNTM4LDcgKzI1NDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6
ZXIoR3JhcGhpY3NDCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NF
UlQoYm94KTsKIAotICAgIEludFJlY3QgYWJzUmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMs
IHBpeGVsU25hcHBlZEludFJlY3QoYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICBJbnRSZWN0
IGFic1JlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSk7
CiAgICAgYWJzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICghYWJzUmVjdC5pbnRl
cnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yNTkzLDcgKzI1OTcsNyBA
QCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgCiAgICAgSW50
UmVjdCByZXNpemVDb250cm9sUmVjdDsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVz
aXplKCkgIT0gUkVTSVpFX05PTkUpIHsKLSAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSByZXNp
emVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+Ym9yZGVyQm94UmVj
dCgpKSk7CisgICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0gcmVzaXplckNvcm5lclJlY3QodGhp
cywgYm94LT5ib3JkZXJCb3hSZWN0KCkpOwogICAgICAgICBpZiAocmVzaXplQ29udHJvbFJlY3Qu
Y29udGFpbnMobG9jYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0yOTAxLDcgKzI5MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMo
UmVuCiAgICAgICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0
eVJlY3QsIGRhbWFnZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOyAvLyBC
YWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNlbGYuCiAKICAgICAg
ICAgICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kLgotICAgICAgICAgICAgUGFpbnRJbmZvIHBh
aW50SW5mbyhjb250ZXh0LCBkYW1hZ2VSZWN0LnJlY3QoKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dy
b3VuZCwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOworICAgICAg
ICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGRh
bWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIHBhaW50
aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+
cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKICAgICAgICAgICAgIC8vIFJlc3RvcmUg
dGhlIGNsaXAuCkBAIC0yOTI2LDcgKzI5MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoUmVuCiAjZW5kaWYKICAgICAgICAgICAgIC8vIFNldCB1cCB0aGUgY2xpcCB1
c2VkIHdoZW4gcGFpbnRpbmcgb3VyIGNoaWxkcmVuLgogICAgICAgICAgICAgY2xpcFRvUmVjdChy
b290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBwbHkpOwotICAg
ICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBjbGlwUmVjdFRvQXBwbHkucmVj
dCgpLCAKKyAgICAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFw
cGVkSW50UmVjdChjbGlwUmVjdFRvQXBwbHkucmVjdCgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0aW9uT25seSA/IFBhaW50UGhhc2VTZWxlY3Rpb24gOiBQYWludFBo
YXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JjZUJsYWNrVGV4dCwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKQEAg
LTI5NDYsNyArMjk1MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhS
ZW4KIAogICAgICAgICBpZiAoc2hvdWxkUGFpbnRPdXRsaW5lICYmICFvdXRsaW5lUmVjdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIFBhaW50IG91ciBvd24gb3V0bGluZQotICAgICAgICAg
ICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBvdXRsaW5lUmVjdC5yZWN0KCksIFBhaW50
UGhhc2VTZWxmT3V0bGluZSwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24s
IDApOworICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KG91dGxpbmVSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgZmFs
c2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAgICAgICAgICAgY2xp
cFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCwg
RG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAgICAgICAgICByZW5kZXJlcigp
LT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIHJlc3RvcmVDbGlw
KGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCk7CkBAIC0yOTYzLDcgKzI5Njcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVuCiAgICAgICAgIGNs
aXBUb1JlY3Qocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwg
RG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFpbnRpbmcgd2lsbCBo
YW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KIAogICAgICAgICAvLyBQYWludCB0aGUgbWFzay4KLSAg
ICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBkYW1hZ2VSZWN0LnJlY3QoKSwgUGFp
bnRQaGFzZU1hc2ssIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVnaW9uLCAwKTsK
KyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0
KGRhbWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBwYWludGluZ1Jvb3RG
b3JSZW5kZXJlciwgcmVnaW9uLCAwKTsKICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjbGlw
LgpAQCAtMzEzNiw3ICszMTQwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBI
aXRUZXN0UgogewogICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwog
ICAgIAotICAgIEludFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT5pc1JlbmRlckZsb3dU
aHJlYWQoKSA/IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgp
IDogcmVuZGVyZXIoKS0+dmlldygpLT5kb2N1bWVudFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGhp
dFRlc3RBcmVhID0gcmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkgPyB0b1JlbmRlckZs
b3dUaHJlYWQocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSA6IHJlbmRlcmVyKCktPnZpZXco
KS0+ZG9jdW1lbnRSZWN0KCk7CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCiAg
ICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lVmlz
aWJsZVJlY3QocmVuZGVyZXIoKSkpKTsKIApAQCAtMzQyOCw3ICszNDMyLDcgQEAgUmVuZGVyTGF5
ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUgogYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVz
dENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsIGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRQb2ludCYg
aGl0VGVzdFBvaW50LCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFyZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdFBvaW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24o
KSAtIHJlbmRlckJveExvY2F0aW9uKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
TGF5b3V0UG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFRlc3RGaWx0ZXIpKSB7CiAgICAgICAg
IC8vIEl0J3Mgd3JvbmcgdG8gc2V0IGlubmVyTm9kZSwgYnV0IHRoZW4gY2xhaW0gdGhhdCB5b3Ug
ZGlkbid0IGhpdCBhbnl0aGluZywgdW5sZXNzIGl0IGlzCiAgICAgICAgIC8vIGEgcmVjdC1iYXNl
ZCB0ZXN0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134866</attachid>
            <date>2012-03-30 13:08:06 -0700</date>
            <delta_ts>2012-04-02 14:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82498-20120330130805.patch</filename>
            <type>text/plain</type>
            <size>10679</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAzLTMwICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggdXNhZ2Ugb2YgTGF5b3V0
VW5pdHMgYW5kIHBpeGVsIHNuYXBwaW5nIGluIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB1c2FnZSBvZiBzdWJwaXhlbCB0eXBl
cyBhbmQgc25hcHBpbmcvcm91bmRpbmcgaW4gUmVuZGVyTGF5ZXIgaW4KKyAgICAgICAgcHJlcGFy
YXRpb24gZm9yIHR1cm5pbmcgb24gc3VicGl4ZWwgbGF5b3V0LgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6cGl4ZWxTbmFwcGVkSW50U2l6ZSk6CisgICAgICAgIEFkZCBuby1vcCBpbXBsZW1lbnRh
dGlvbiBvZiBwaXhlbFNuYXBwZWRJbnRTaXplLCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorICAg
ICAgICByZWFsIGltcGxlbWVudGF0aW9uIG9uY2Ugd2UgbWFrZSB0aGUgc3dpdGNoLgorICAgICAg
ICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICBTbmFwIFJlbmRl
ckJveCBzaXplIHdoZW4gdXBkYXRpbmcgdGhlIHNpemUgb2YgdGhlIGxheWVyLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXNpemUpOgorICAgICAgICBSb3VuZCBw
b3NpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBkdXJpbmcgcmVzaXplIG9wZXJh
dGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3Qp
OgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgor
ICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93
Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVj
dCBjYWxsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KToKKyAg
ICAgICAgRml4IGltcGxlbWVudGF0aW9uIG9mIHNjcm9sbFdpZHRoIGFuZCBIZWlnaHQgdG8gcGl4
ZWwgc25hcCB0aGUgdmFsdWVzLgorICAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0
VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxT
bmFwcGVkSW50UmVjdCBjYWxscy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgUGl4ZWwgc25hcCB2YWx1ZXMganVz
dCBiZWZvcmUgcGFpbnRpbmcgKGluc3RlYWQgb2YgZWFybGllciBvbikuCisKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpoaXRUZXN0Q29udGVudHMpOgorICAgICAgICBDaGFuZ2UgdG8gdXNlIHN1YnBpeGVsIHR5
cGVzLgorCiAyMDEyLTAzLTMwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgU2hvdyBhIHNjcm9sbGluZyBpbmRpY2F0b3IgbGlnaHQgd2hlbiBjb21wb3Np
dGluZyBib3JkZXJzIGFyZSB0dXJuZWQgb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRUeXBlcy5oCShyZXZpc2lvbiAxMTI3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTIgQEAgaW5saW5l
IGludCBzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0VW5pdCBzaQogICAgIHJldHVybiBzaXplOwogfQog
CitpbmxpbmUgSW50U2l6ZSBwaXhlbFNuYXBwZWRJbnRTaXplKExheW91dFNpemUgc2l6ZSwgTGF5
b3V0UG9pbnQgbG9jYXRpb24pCit7CisgICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICBy
ZXR1cm4gc2l6ZTsKK30KKwogaW5saW5lIEludFNpemUgcm91bmRlZEludFNpemUoY29uc3QgTGF5
b3V0U2l6ZSYgcykKIHsKICAgICByZXR1cm4gczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTEyNzA5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQ0LDcgKzc0NCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgICAgICBpbmxp
bmVCb3VuZGluZ0JveE9mZnNldCA9IHRvU2l6ZShsaW5lQm94LmxvY2F0aW9uKCkpOwogICAgICAg
ICBsb2NhbFBvaW50ICs9IGlubGluZUJvdW5kaW5nQm94T2Zmc2V0OwogICAgIH0gZWxzZSBpZiAo
UmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKSkgewotICAgICAgICBzZXRTaXplKGJveC0+c2l6
ZSgpKTsKKyAgICAgICAgc2V0U2l6ZShwaXhlbFNuYXBwZWRJbnRTaXplKGJveC0+c2l6ZSgpLCBi
b3gtPmxvY2F0aW9uKCkpKTsKICAgICAgICAgbG9jYWxQb2ludCArPSBib3gtPnRvcExlZnRMb2Nh
dGlvbk9mZnNldCgpOwogICAgIH0KIApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cmVzaXplKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICB9CiAgICAgICAgIExheW91dFVu
aXQgYmFzZVdpZHRoID0gcmVuZGVyZXItPndpZHRoKCkgLSAoaXNCb3hTaXppbmdCb3JkZXIgPyB6
ZXJvTGF5b3V0VW5pdCA6IHJlbmRlcmVyLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSk7CiAgICAg
ICAgIGJhc2VXaWR0aCA9IGJhc2VXaWR0aCAvIHpvb21GYWN0b3I7Ci0gICAgICAgIHN0eWxlZEVs
ZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgU3RyaW5nOjpu
dW1iZXIoYmFzZVdpZHRoICsgZGlmZmVyZW5jZS53aWR0aCgpKSArICJweCIsIGZhbHNlKTsKKyAg
ICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdp
ZHRoLCBTdHJpbmc6Om51bWJlcihyb3VuZFRvSW50KGJhc2VXaWR0aCArIGRpZmZlcmVuY2Uud2lk
dGgoKSkpICsgInB4IiwgZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChyZXNpemUgIT0gUkVTSVpF
X0hPUklaT05UQUwgJiYgZGlmZmVyZW5jZS5oZWlnaHQoKSkgewpAQCAtMTc3Miw3ICsxNzcyLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cmVzaXplKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICB9CiAg
ICAgICAgIExheW91dFVuaXQgYmFzZUhlaWdodCA9IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChpc0Jv
eFNpemluZ0JvcmRlciA/IHplcm9MYXlvdXRVbml0IDogcmVuZGVyZXItPmJvcmRlckFuZFBhZGRp
bmdIZWlnaHQoKSk7CiAgICAgICAgIGJhc2VIZWlnaHQgPSBiYXNlSGVpZ2h0IC8gem9vbUZhY3Rv
cjsKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1iZXIoYmFzZUhlaWdodCArIGRpZmZlcmVuY2UuaGVpZ2h0
KCkpICsgInB4IiwgZmFsc2UpOworICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihyb3VuZFRvSW50KGJh
c2VIZWlnaHQgKyBkaWZmZXJlbmNlLmhlaWdodCgpKSkgKyAicHgiLCBmYWxzZSk7CiAgICAgfQog
CiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dCgpOwpAQCAtMTg4Miw3ICsxODgyLDcgQEAgSW50
UmVjdCBSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyUmVjdCgpIAogICAgIGJvb2wgaGFzVmVydGlj
YWxCYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpOwogICAgIGJvb2wgaGFzUmVzaXplciA9IHJlbmRl
cmVyKCktPnN0eWxlKCktPnJlc2l6ZSgpICE9IFJFU0laRV9OT05FOwogICAgIGlmICgoaGFzSG9y
aXpvbnRhbEJhciAmJiBoYXNWZXJ0aWNhbEJhcikgfHwgKGhhc1Jlc2l6ZXIgJiYgKGhhc0hvcml6
b250YWxCYXIgfHwgaGFzVmVydGljYWxCYXIpKSkKLSAgICAgICAgcmV0dXJuIGNvcm5lclJlY3Qo
dGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKSk7
CisgICAgICAgIHJldHVybiBjb3JuZXJSZWN0KHRoaXMsIHJlbmRlckJveCgpLT5ib3JkZXJCb3hS
ZWN0KCkpOwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKQEAgLTIyMDYsNyArMjIwNiw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBpZiAoIWJveCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSBwaXhlbFNu
YXBwZWRJbnRSZWN0KGJveC0+Ym9yZGVyQm94UmVjdCgpKTsKKyAgICBjb25zdCBJbnRSZWN0IGJv
cmRlckJveCA9IGJveC0+Ym9yZGVyQm94UmVjdCgpOwogICAgIGNvbnN0IEludFJlY3QmIHNjcm9s
bENvcm5lciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBJbnRSZWN0IGFic0JvdW5kcyhib3Jk
ZXJCb3gubG9jYXRpb24oKSArIG9mZnNldEZyb21MYXllciwgYm9yZGVyQm94LnNpemUoKSk7CiAg
ICAgaWYgKG1fdkJhcikKQEAgLTIyNTMsMTYgKzIyNTMsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6
cG9zaXRpb25PdmVyZmxvd0NvbnRybwogCiBpbnQgUmVuZGVyTGF5ZXI6OnNjcm9sbFdpZHRoKCkK
IHsKKyAgICBBU1NFUlQocmVuZGVyQm94KCkpOwogICAgIGlmIChtX3Njcm9sbERpbWVuc2lvbnNE
aXJ0eSkKICAgICAgICAgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKLSAgICByZXR1cm4gbV9z
Y3JvbGxTaXplLndpZHRoKCk7CisgICAgcmV0dXJuIHNuYXBTaXplVG9QaXhlbChtX3Njcm9sbFNp
emUud2lkdGgoKSwgcmVuZGVyQm94KCktPmNsaWVudExlZnQoKSk7CiB9CiAKIGludCBSZW5kZXJM
YXllcjo6c2Nyb2xsSGVpZ2h0KCkKIHsKKyAgICBBU1NFUlQocmVuZGVyQm94KCkpOwogICAgIGlm
IChtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSkKICAgICAgICAgY29tcHV0ZVNjcm9sbERpbWVuc2lv
bnMoKTsKLSAgICByZXR1cm4gbV9zY3JvbGxTaXplLmhlaWdodCgpOworICAgIHJldHVybiBzbmFw
U2l6ZVRvUGl4ZWwobV9zY3JvbGxTaXplLmhlaWdodCgpLCByZW5kZXJCb3goKS0+Y2xpZW50VG9w
KCkpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckxheWVyOjpvdmVyZmxvd1RvcCgpIGNvbnN0CkBA
IC0yMzA5LDcgKzIzMTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5z
aW9uCiAKICAgICBtX3Njcm9sbFNpemUuc2V0V2lkdGgob3ZlcmZsb3dSaWdodCgpIC0gb3ZlcmZs
b3dMZWZ0KCkpOwogICAgIG1fc2Nyb2xsU2l6ZS5zZXRIZWlnaHQob3ZlcmZsb3dCb3R0b20oKSAt
IG92ZXJmbG93VG9wKCkpOwotICAgIAorCiAgICAgc2V0U2Nyb2xsT3JpZ2luKEludFBvaW50KC1t
X3Njcm9sbE92ZXJmbG93LndpZHRoKCksIC1tX3Njcm9sbE92ZXJmbG93LmhlaWdodCgpKSk7CiAK
ICAgICBpZiAobmVlZEhCYXIpCkBAIC0yNTM4LDcgKzI1NDAsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3go
KTsKICAgICBBU1NFUlQoYm94KTsKIAotICAgIEludFJlY3QgYWJzUmVjdCA9IHJlc2l6ZXJDb3Ju
ZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsK
KyAgICBJbnRSZWN0IGFic1JlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPmJvcmRl
ckJveFJlY3QoKSk7CiAgICAgYWJzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICgh
YWJzUmVjdC5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yNTkz
LDcgKzI1OTUsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAg
ICAgCiAgICAgSW50UmVjdCByZXNpemVDb250cm9sUmVjdDsKICAgICBpZiAocmVuZGVyZXIoKS0+
c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpFX05PTkUpIHsKLSAgICAgICAgcmVzaXplQ29udHJv
bFJlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+
Ym9yZGVyQm94UmVjdCgpKSk7CisgICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0gcmVzaXplckNv
cm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpOwogICAgICAgICBpZiAocmVzaXpl
Q29udHJvbFJlY3QuY29udGFpbnMobG9jYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0yOTAxLDcgKzI5MDMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyQ29udGVudHMoUmVuCiAgICAgICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4
dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJS
YWRpdXMpOyAvLyBCYWNrZ3JvdW5kIHBhaW50aW5nIHdpbGwgaGFuZGxlIGNsaXBwaW5nIHRvIHNl
bGYuCiAKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kLgotICAgICAgICAgICAg
UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBkYW1hZ2VSZWN0LnJlY3QoKSwgUGFpbnRQaGFz
ZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24s
IDApOworICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGRhbWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwg
ZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAgICAgICAgICAg
cmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKICAgICAgICAgICAg
IC8vIFJlc3RvcmUgdGhlIGNsaXAuCkBAIC0yOTI2LDcgKzI5MjgsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQ29udGVudHMoUmVuCiAjZW5kaWYKICAgICAgICAgICAgIC8vIFNldCB1
cCB0aGUgY2xpcCB1c2VkIHdoZW4gcGFpbnRpbmcgb3VyIGNoaWxkcmVuLgogICAgICAgICAgICAg
Y2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRv
QXBwbHkpOwotICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBjbGlwUmVj
dFRvQXBwbHkucmVjdCgpLCAKKyAgICAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4
dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChjbGlwUmVjdFRvQXBwbHkucmVjdCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT25seSA/IFBhaW50UGhhc2VTZWxlY3Rp
b24gOiBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JjZUJsYWNrVGV4dCwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJl
Z2lvbiwgMCk7CiAgICAgICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKQEAgLTI5NDYsNyArMjk0OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhSZW4KIAogICAgICAgICBpZiAoc2hvdWxkUGFpbnRPdXRsaW5lICYmICFvdXRs
aW5lUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIFBhaW50IG91ciBvd24gb3V0bGlu
ZQotICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBvdXRsaW5lUmVjdC5y
ZWN0KCksIFBhaW50UGhhc2VTZWxmT3V0bGluZSwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRl
cmVyLCByZWdpb24sIDApOworICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KG91dGxpbmVSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VTZWxm
T3V0bGluZSwgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAg
ICAgICAgICAgY2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBv
dXRsaW5lUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CiAgICAgICAgICAg
ICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAg
IHJlc3RvcmVDbGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBvdXRsaW5lUmVjdCk7CkBAIC0y
OTYzLDcgKzI5NjUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVu
CiAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwg
ZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7IC8vIE1hc2sgcGFp
bnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2VsZi4KIAogICAgICAgICAvLyBQYWludCB0
aGUgbWFzay4KLSAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBkYW1hZ2VSZWN0
LnJlY3QoKSwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwg
cmVnaW9uLCAwKTsKKyAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBwaXhlbFNu
YXBwZWRJbnRSZWN0KGRhbWFnZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZU1hc2ssIGZhbHNlLCBw
YWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVnaW9uLCAwKTsKICAgICAgICAgcmVuZGVyZXIoKS0+
cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIAogICAgICAgICAvLyBSZXN0
b3JlIHRoZSBjbGlwLgpAQCAtMzEzNiw3ICszMTM4LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0
VGVzdChjb25zdCBIaXRUZXN0UgogewogICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwogICAgIAotICAgIEludFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT5p
c1JlbmRlckZsb3dUaHJlYWQoKSA/IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS0+Ym9y
ZGVyQm94UmVjdCgpIDogcmVuZGVyZXIoKS0+dmlldygpLT5kb2N1bWVudFJlY3QoKTsKKyAgICBM
YXlvdXRSZWN0IGhpdFRlc3RBcmVhID0gcmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkg
PyB0b1JlbmRlckZsb3dUaHJlYWQocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSA6IHJlbmRl
cmVyKCktPnZpZXcoKS0+ZG9jdW1lbnRSZWN0KCk7CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNs
aXBwaW5nKCkpCiAgICAgICAgIGhpdFRlc3RBcmVhLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRS
ZWN0KGZyYW1lVmlzaWJsZVJlY3QocmVuZGVyZXIoKSkpKTsKIApAQCAtMzQyOCw3ICszNDMwLDcg
QEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUgogYm9vbCBSZW5kZXJM
YXllcjo6aGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBM
YXlvdXRQb2ludCYgaGl0VGVzdFBvaW50LCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgaGl0
VGVzdFBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9pbnQobGF5ZXJCb3Vu
ZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvTGF5b3V0UG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJv
eExvY2F0aW9uKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFRlc3RGaWx0ZXIp
KSB7CiAgICAgICAgIC8vIEl0J3Mgd3JvbmcgdG8gc2V0IGlubmVyTm9kZSwgYnV0IHRoZW4gY2xh
aW0gdGhhdCB5b3UgZGlkbid0IGhpdCBhbnl0aGluZywgdW5sZXNzIGl0IGlzCiAgICAgICAgIC8v
IGEgcmVjdC1iYXNlZCB0ZXN0Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135185</attachid>
            <date>2012-04-02 14:26:49 -0700</date>
            <delta_ts>2012-04-02 15:47:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82498-20120402142648.patch</filename>
            <type>text/plain</type>
            <size>10987</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0LTAyICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggdXNhZ2Ugb2YgTGF5b3V0
VW5pdHMgYW5kIHBpeGVsIHNuYXBwaW5nIGluIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEp1bGllbiBDaGFmZnJhaXguCisKKyAgICAgICAgRml4IHVzYWdlIG9mIHN1YnBpeGVsIHR5
cGVzIGFuZCBzbmFwcGluZy9yb3VuZGluZyBpbiBSZW5kZXJMYXllciBpbgorICAgICAgICBwcmVw
YXJhdGlvbiBmb3IgdHVybmluZyBvbiBzdWJwaXhlbCBsYXlvdXQuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkSW50U2l6ZSk6
CisgICAgICAgIEFkZCBuby1vcCBpbXBsZW1lbnRhdGlvbiBvZiBwaXhlbFNuYXBwZWRJbnRTaXpl
LCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorICAgICAgICByZWFsIGltcGxlbWVudGF0aW9uIG9u
Y2Ugd2UgbWFrZSB0aGUgc3dpdGNoLgorICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVy
UG9zaXRpb24pOgorICAgICAgICBTbmFwIFJlbmRlckJveCBzaXplIHdoZW4gdXBkYXRpbmcgdGhl
IHNpemUgb2YgdGhlIGxheWVyLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpyZXNpemUpOgorICAgICAgICBSb3VuZCBwb3NpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGlu
bGluZSBzdHlsZSBkdXJpbmcgcmVzaXplIG9wZXJhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3QpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3Nh
cnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgorICAgICAgICAKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KToKKyAgICAgICAgRml4IGltcGxlbWVudGF0aW9uIG9m
IHNjcm9sbFdpZHRoIGFuZCBIZWlnaHQgdG8gcGl4ZWwgc25hcCB0aGUgdmFsdWVzLgorICAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAg
ICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxscy4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToK
KyAgICAgICAgUGl4ZWwgc25hcCB2YWx1ZXMganVzdCBiZWZvcmUgcGFpbnRpbmcgKGluc3RlYWQg
b2YgZWFybGllciBvbikuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0Q29udGVudHMpOgorICAg
ICAgICBDaGFuZ2UgdG8gdXNlIHN1YnBpeGVsIHR5cGVzLgorCiAyMDEyLTAzLTMwICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdyBhIHNjcm9sbGlu
ZyBpbmRpY2F0b3IgbGlnaHQgd2hlbiBjb21wb3NpdGluZyBib3JkZXJzIGFyZSB0dXJuZWQgb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAxMTI3
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtODAsNiArODAsMTIgQEAgaW5saW5lIGludCBzbmFwU2l6ZVRvUGl4ZWwoTGF5b3V0
VW5pdCBzaQogICAgIHJldHVybiBzaXplOwogfQogCitpbmxpbmUgSW50U2l6ZSBwaXhlbFNuYXBw
ZWRJbnRTaXplKExheW91dFNpemUgc2l6ZSwgTGF5b3V0UG9pbnQgbG9jYXRpb24pCit7CisgICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKKyAgICByZXR1cm4gc2l6ZTsKK30KKwogaW5saW5lIElu
dFNpemUgcm91bmRlZEludFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgcykKIHsKICAgICByZXR1cm4g
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gMTEyNzA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQ0LDcgKzc0NCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUxheWVyUG9zaXRpb24oKQogICAgICAgICBpbmxpbmVCb3VuZGluZ0JveE9mZnNldCA9IHRvU2l6
ZShsaW5lQm94LmxvY2F0aW9uKCkpOwogICAgICAgICBsb2NhbFBvaW50ICs9IGlubGluZUJvdW5k
aW5nQm94T2Zmc2V0OwogICAgIH0gZWxzZSBpZiAoUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3go
KSkgewotICAgICAgICBzZXRTaXplKGJveC0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRklYTUU6IElz
IHNuYXBwaW5nIHRoZSBzaXplIHJlYWxseSBuZWVkZWQgaGVyZSBmb3IgdGhlIFJlbmRlckJveCBj
YXNlPworICAgICAgICBzZXRTaXplKHBpeGVsU25hcHBlZEludFNpemUoYm94LT5zaXplKCksIGJv
eC0+bG9jYXRpb24oKSkpOwogICAgICAgICBsb2NhbFBvaW50ICs9IGJveC0+dG9wTGVmdExvY2F0
aW9uT2Zmc2V0KCk7CiAgICAgfQogCkBAIC0xNzYxLDcgKzE3NjIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIH0KICAgICAgICAgTGF5b3V0VW5p
dCBiYXNlV2lkdGggPSByZW5kZXJlci0+d2lkdGgoKSAtIChpc0JveFNpemluZ0JvcmRlciA/IHpl
cm9MYXlvdXRVbml0IDogcmVuZGVyZXItPmJvcmRlckFuZFBhZGRpbmdXaWR0aCgpKTsKICAgICAg
ICAgYmFzZVdpZHRoID0gYmFzZVdpZHRoIC8gem9vbUZhY3RvcjsKLSAgICAgICAgc3R5bGVkRWxl
bWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBTdHJpbmc6Om51
bWJlcihiYXNlV2lkdGggKyBkaWZmZXJlbmNlLndpZHRoKCkpICsgInB4IiwgZmFsc2UpOworICAg
ICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lk
dGgsIFN0cmluZzo6bnVtYmVyKHJvdW5kVG9JbnQoYmFzZVdpZHRoICsgZGlmZmVyZW5jZS53aWR0
aCgpKSkgKyAicHgiLCBmYWxzZSk7CiAgICAgfQogCiAgICAgaWYgKHJlc2l6ZSAhPSBSRVNJWkVf
SE9SSVpPTlRBTCAmJiBkaWZmZXJlbmNlLmhlaWdodCgpKSB7CkBAIC0xNzcyLDcgKzE3NzMsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIH0KICAg
ICAgICAgTGF5b3V0VW5pdCBiYXNlSGVpZ2h0ID0gcmVuZGVyZXItPmhlaWdodCgpIC0gKGlzQm94
U2l6aW5nQm9yZGVyID8gemVyb0xheW91dFVuaXQgOiByZW5kZXJlci0+Ym9yZGVyQW5kUGFkZGlu
Z0hlaWdodCgpKTsKICAgICAgICAgYmFzZUhlaWdodCA9IGJhc2VIZWlnaHQgLyB6b29tRmFjdG9y
OwotICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihiYXNlSGVpZ2h0ICsgZGlmZmVyZW5jZS5oZWlnaHQo
KSkgKyAicHgiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVtYmVyKHJvdW5kVG9JbnQoYmFz
ZUhlaWdodCArIGRpZmZlcmVuY2UuaGVpZ2h0KCkpKSArICJweCIsIGZhbHNlKTsKICAgICB9CiAK
ICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CkBAIC0xODgyLDcgKzE4ODMsNyBAQCBJbnRS
ZWN0IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KCkgCiAgICAgYm9vbCBoYXNWZXJ0aWNh
bEJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgYm9vbCBoYXNSZXNpemVyID0gcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNIb3Jp
em9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9yaXpv
bnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gY29ybmVyUmVjdCh0
aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpKTsK
KyAgICAgICAgcmV0dXJuIGNvcm5lclJlY3QodGhpcywgcmVuZGVyQm94KCktPmJvcmRlckJveFJl
Y3QoKSk7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIApAQCAtMjIwNiw3ICsyMjA3LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRybwogICAgIGlmICghYm94KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IHBpeGVsU25h
cHBlZEludFJlY3QoYm94LT5ib3JkZXJCb3hSZWN0KCkpOworICAgIGNvbnN0IEludFJlY3QgYm9y
ZGVyQm94ID0gYm94LT5ib3JkZXJCb3hSZWN0KCk7CiAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xs
Q29ybmVyID0gc2Nyb2xsQ29ybmVyUmVjdCgpOwogICAgIEludFJlY3QgYWJzQm91bmRzKGJvcmRl
ckJveC5sb2NhdGlvbigpICsgb2Zmc2V0RnJvbUxheWVyLCBib3JkZXJCb3guc2l6ZSgpKTsKICAg
ICBpZiAobV92QmFyKQpAQCAtMjI1MywxNiArMjI1NCwxOCBAQCB2b2lkIFJlbmRlckxheWVyOjpw
b3NpdGlvbk92ZXJmbG93Q29udHJvCiAKIGludCBSZW5kZXJMYXllcjo6c2Nyb2xsV2lkdGgoKQog
eworICAgIEFTU0VSVChyZW5kZXJCb3goKSk7CiAgICAgaWYgKG1fc2Nyb2xsRGltZW5zaW9uc0Rp
cnR5KQogICAgICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwotICAgIHJldHVybiBtX3Nj
cm9sbFNpemUud2lkdGgoKTsKKyAgICByZXR1cm4gc25hcFNpemVUb1BpeGVsKG1fc2Nyb2xsU2l6
ZS53aWR0aCgpLCByZW5kZXJCb3goKS0+Y2xpZW50TGVmdCgpKTsKIH0KIAogaW50IFJlbmRlckxh
eWVyOjpzY3JvbGxIZWlnaHQoKQogeworICAgIEFTU0VSVChyZW5kZXJCb3goKSk7CiAgICAgaWYg
KG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KQogICAgICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9u
cygpOwotICAgIHJldHVybiBtX3Njcm9sbFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIHNuYXBT
aXplVG9QaXhlbChtX3Njcm9sbFNpemUuaGVpZ2h0KCksIHJlbmRlckJveCgpLT5jbGllbnRUb3Ao
KSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyTGF5ZXI6Om92ZXJmbG93VG9wKCkgY29uc3QKQEAg
LTIzMDksNyArMjMxMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNp
b24KIAogICAgIG1fc2Nyb2xsU2l6ZS5zZXRXaWR0aChvdmVyZmxvd1JpZ2h0KCkgLSBvdmVyZmxv
d0xlZnQoKSk7CiAgICAgbV9zY3JvbGxTaXplLnNldEhlaWdodChvdmVyZmxvd0JvdHRvbSgpIC0g
b3ZlcmZsb3dUb3AoKSk7Ci0gICAgCisKICAgICBzZXRTY3JvbGxPcmlnaW4oSW50UG9pbnQoLW1f
c2Nyb2xsT3ZlcmZsb3cud2lkdGgoKSwgLW1fc2Nyb2xsT3ZlcmZsb3cuaGVpZ2h0KCkpKTsKIAog
ICAgIGlmIChuZWVkSEJhcikKQEAgLTI1MzgsNyArMjU0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgp
OwogICAgIEFTU0VSVChib3gpOwogCi0gICAgSW50UmVjdCBhYnNSZWN0ID0gcmVzaXplckNvcm5l
clJlY3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRlckJveFJlY3QoKSkpOwor
ICAgIEludFJlY3QgYWJzUmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVy
Qm94UmVjdCgpKTsKICAgICBhYnNSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFh
YnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1OTMs
NyArMjU5Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wKICAg
ICAKICAgICBJbnRSZWN0IHJlc2l6ZUNvbnRyb2xSZWN0OwogICAgIGlmIChyZW5kZXJlcigpLT5z
dHlsZSgpLT5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORSkgewotICAgICAgICByZXNpemVDb250cm9s
UmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoYm94LT5i
b3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSByZXNpemVyQ29y
bmVyUmVjdCh0aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSk7CiAgICAgICAgIGlmIChyZXNpemVD
b250cm9sUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTI5MDEsNyArMjkwNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJDb250ZW50cyhSZW4KICAgICAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExheWVyLCBjb250ZXh0
LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCwgRG9Ob3RJbmNsdWRlU2VsZkZvckJvcmRlclJh
ZGl1cyk7IC8vIEJhY2tncm91bmQgcGFpbnRpbmcgd2lsbCBoYW5kbGUgY2xpcHBpbmcgdG8gc2Vs
Zi4KIAogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQuCi0gICAgICAgICAgICBQ
YWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGRhbWFnZVJlY3QucmVjdCgpLCBQYWludFBoYXNl
QmxvY2tCYWNrZ3JvdW5kLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwg
MCk7CisgICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBl
ZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kLCBm
YWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7CiAgICAgICAgICAgICBy
ZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgICAgICAgICAg
Ly8gUmVzdG9yZSB0aGUgY2xpcC4KQEAgLTI5MjYsNyArMjkyOSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW4KICNlbmRpZgogICAgICAgICAgICAgLy8gU2V0IHVw
IHRoZSBjbGlwIHVzZWQgd2hlbiBwYWludGluZyBvdXIgY2hpbGRyZW4uCiAgICAgICAgICAgICBj
bGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9B
cHBseSk7Ci0gICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGNsaXBSZWN0
VG9BcHBseS5yZWN0KCksIAorICAgICAgICAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0
LCBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBSZWN0VG9BcHBseS5yZWN0KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Pbmx5ID8gUGFpbnRQaGFzZVNlbGVjdGlv
biA6IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcmNlQmxhY2tUZXh0LCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVn
aW9uLCAwKTsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQpOwpAQCAtMjk0Niw3ICsyOTQ5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckNvbnRlbnRzKFJlbgogCiAgICAgICAgIGlmIChzaG91bGRQYWludE91dGxpbmUgJiYgIW91dGxp
bmVSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gUGFpbnQgb3VyIG93biBvdXRsaW5l
Ci0gICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIG91dGxpbmVSZWN0LnJl
Y3QoKSwgUGFpbnRQaGFzZVNlbGZPdXRsaW5lLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVy
ZXIsIHJlZ2lvbiwgMCk7CisgICAgICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQs
IHBpeGVsU25hcHBlZEludFJlY3Qob3V0bGluZVJlY3QucmVjdCgpKSwgUGFpbnRQaGFzZVNlbGZP
dXRsaW5lLCBmYWxzZSwgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIHJlZ2lvbiwgMCk7CiAgICAg
ICAgICAgICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIG91
dGxpbmVSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKICAgICAgICAgICAg
IHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAgICAgICAg
cmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIG91dGxpbmVSZWN0KTsKQEAgLTI5
NjMsNyArMjk2Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW4K
ICAgICAgICAgY2xpcFRvUmVjdChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBk
YW1hZ2VSZWN0LCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWlu
dGluZyB3aWxsIGhhbmRsZSBjbGlwcGluZyB0byBzZWxmLgogCiAgICAgICAgIC8vIFBhaW50IHRo
ZSBtYXNrLgotICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGRhbWFnZVJlY3Qu
cmVjdCgpLCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCBy
ZWdpb24sIDApOworICAgICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25h
cHBlZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBh
aW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAgICAgICByZW5kZXJlcigpLT5w
YWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgCiAgICAgICAgIC8vIFJlc3Rv
cmUgdGhlIGNsaXAuCkBAIC0zMTM2LDkgKzMxMzksOSBAQCBib29sIFJlbmRlckxheWVyOjpoaXRU
ZXN0KGNvbnN0IEhpdFRlc3RSCiB7CiAgICAgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CiAgICAgCi0gICAgSW50UmVjdCBoaXRUZXN0QXJlYSA9IHJlbmRlcmVyKCktPmlz
UmVuZGVyRmxvd1RocmVhZCgpID8gdG9SZW5kZXJGbG93VGhyZWFkKHJlbmRlcmVyKCkpLT5ib3Jk
ZXJCb3hSZWN0KCkgOiByZW5kZXJlcigpLT52aWV3KCktPmRvY3VtZW50UmVjdCgpOworICAgIExh
eW91dFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJlYWQoKSA/
IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpIDogcmVuZGVy
ZXIoKS0+dmlldygpLT5kb2N1bWVudFJlY3QoKTsKICAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xp
cHBpbmcoKSkKLSAgICAgICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0KHBpeGVsU25hcHBlZEludFJl
Y3QoZnJhbWVWaXNpYmxlUmVjdChyZW5kZXJlcigpKSkpOworICAgICAgICBoaXRUZXN0QXJlYS5p
bnRlcnNlY3QoZnJhbWVWaXNpYmxlUmVjdChyZW5kZXJlcigpKSk7CiAKICAgICBSZW5kZXJMYXll
ciogaW5zaWRlTGF5ZXIgPSBoaXRUZXN0TGF5ZXIodGhpcywgMCwgcmVxdWVzdCwgcmVzdWx0LCBo
aXRUZXN0QXJlYSwgcmVzdWx0LnBvaW50KCksIGZhbHNlKTsKICAgICBpZiAoIWluc2lkZUxheWVy
KSB7CkBAIC0zNDI4LDcgKzM0MzEsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRl
c3RMYXllcihSCiBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0Q29udGVudHMoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsIEhpdFRlc3RG
aWx0ZXIgaGl0VGVzdEZpbHRlcikgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCktPmhpdFRl
c3QocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0UG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9Qb2ludChsYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24o
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9MYXlvdXRQb2ludChsYXllckJvdW5k
cy5sb2NhdGlvbigpIC0gcmVuZGVyQm94TG9jYXRpb24oKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGl0VGVzdEZpbHRlcikpIHsKICAgICAgICAgLy8gSXQncyB3cm9uZyB0byBzZXQg
aW5uZXJOb2RlLCBidXQgdGhlbiBjbGFpbSB0aGF0IHlvdSBkaWRuJ3QgaGl0IGFueXRoaW5nLCB1
bmxlc3MgaXQgaXMKICAgICAgICAgLy8gYSByZWN0LWJhc2VkIHRlc3QuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135209</attachid>
            <date>2012-04-02 15:47:58 -0700</date>
            <delta_ts>2012-04-02 19:45:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82498-20120402154757.patch</filename>
            <type>text/plain</type>
            <size>10793</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA0LTAyICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggdXNhZ2Ugb2YgTGF5b3V0
VW5pdHMgYW5kIHBpeGVsIHNuYXBwaW5nIGluIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjQ5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEp1bGllbiBDaGFmZnJhaXguCisKKyAgICAgICAgRml4IHVzYWdlIG9mIHN1YnBpeGVsIHR5
cGVzIGFuZCBzbmFwcGluZy9yb3VuZGluZyBpbiBSZW5kZXJMYXllciBpbgorICAgICAgICBwcmVw
YXJhdGlvbiBmb3IgdHVybmluZyBvbiBzdWJwaXhlbCBsYXlvdXQuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9MYXlvdXRUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6cGl4ZWxTbmFwcGVkSW50U2l6ZSk6
CisgICAgICAgIEFkZCBuby1vcCBpbXBsZW1lbnRhdGlvbiBvZiBwaXhlbFNuYXBwZWRJbnRTaXpl
LCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorICAgICAgICByZWFsIGltcGxlbWVudGF0aW9uIG9u
Y2Ugd2UgbWFrZSB0aGUgc3dpdGNoLgorICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVy
UG9zaXRpb24pOgorICAgICAgICBTbmFwIFJlbmRlckJveCBzaXplIHdoZW4gdXBkYXRpbmcgdGhl
IHNpemUgb2YgdGhlIGxheWVyLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpyZXNpemUpOgorICAgICAgICBSb3VuZCBwb3NpdGlvbiB3aGVuIHNldHRpbmcgdGhlIGlu
bGluZSBzdHlsZSBkdXJpbmcgcmVzaXplIG9wZXJhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3QpOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3Nh
cnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICBSZW1vdmUg
dW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxsLgorICAgICAgICAKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KToKKyAgICAgICAgRml4IGltcGxlbWVudGF0aW9uIG9m
IHNjcm9sbFdpZHRoIGFuZCBIZWlnaHQgdG8gcGl4ZWwgc25hcCB0aGUgdmFsdWVzLgorICAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAg
ICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcGl4ZWxTbmFwcGVkSW50UmVjdCBjYWxscy4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToK
KyAgICAgICAgUGl4ZWwgc25hcCB2YWx1ZXMganVzdCBiZWZvcmUgcGFpbnRpbmcgKGluc3RlYWQg
b2YgZWFybGllciBvbikuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0Q29udGVudHMpOgorICAg
ICAgICBDaGFuZ2UgdG8gdXNlIHN1YnBpeGVsIHR5cGVzLgorCiAyMDEyLTA0LTAyICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2ltcGxpZnkgbWFpbiByZXNv
dXJjZSBsb2FkIHN0YXJ0L2VuZCBpbiBGcmFtZUxvYWRlcgpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDExMjk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxMiBA
QCBpbmxpbmUgaW50IHNuYXBTaXplVG9QaXhlbChMYXlvdXRVbml0IHNpCiAgICAgcmV0dXJuIHNp
emU7CiB9CiAKK2lubGluZSBJbnRTaXplIHBpeGVsU25hcHBlZEludFNpemUoTGF5b3V0U2l6ZSBz
aXplLCBMYXlvdXRQb2ludCBsb2NhdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24p
OworICAgIHJldHVybiBzaXplOworfQorCiBpbmxpbmUgSW50U2l6ZSByb3VuZGVkSW50U2l6ZShj
b25zdCBMYXlvdXRTaXplJiBzKQogewogICAgIHJldHVybiBzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMTI5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjUs
NyArNzY1LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAgICAg
ICAgIGlubGluZUJvdW5kaW5nQm94T2Zmc2V0ID0gdG9TaXplKGxpbmVCb3gubG9jYXRpb24oKSk7
CiAgICAgICAgIGxvY2FsUG9pbnQgKz0gaW5saW5lQm91bmRpbmdCb3hPZmZzZXQ7CiAgICAgfSBl
bHNlIGlmIChSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpKSB7Ci0gICAgICAgIHNldFNpemUo
Ym94LT5zaXplKCkpOworICAgICAgICAvLyBGSVhNRTogSXMgc25hcHBpbmcgdGhlIHNpemUgcmVh
bGx5IG5lZWRlZCBoZXJlIGZvciB0aGUgUmVuZGVyQm94IGNhc2U/CisgICAgICAgIHNldFNpemUo
cGl4ZWxTbmFwcGVkSW50U2l6ZShib3gtPnNpemUoKSwgYm94LT5sb2NhdGlvbigpKSk7CiAgICAg
ICAgIGxvY2FsUG9pbnQgKz0gYm94LT50b3BMZWZ0TG9jYXRpb25PZmZzZXQoKTsKICAgICB9CiAK
QEAgLTE4NTYsNyArMTg1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlc2l6ZShjb25zdCBQbGF0
Zm9ybU0KICAgICAgICAgfQogICAgICAgICBMYXlvdXRVbml0IGJhc2VXaWR0aCA9IHJlbmRlcmVy
LT53aWR0aCgpIC0gKGlzQm94U2l6aW5nQm9yZGVyID8gemVyb0xheW91dFVuaXQgOiByZW5kZXJl
ci0+Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCkpOwogICAgICAgICBiYXNlV2lkdGggPSBiYXNlV2lk
dGggLyB6b29tRmFjdG9yOwotICAgICAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmluZzo6bnVtYmVyKGJhc2VXaWR0aCArIGRpZmZl
cmVuY2Uud2lkdGgoKSkgKyAicHgiLCBmYWxzZSk7CisgICAgICAgIHN0eWxlZEVsZW1lbnQtPnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgU3RyaW5nOjpudW1iZXIocm91
bmRUb0ludChiYXNlV2lkdGggKyBkaWZmZXJlbmNlLndpZHRoKCkpKSArICJweCIsIGZhbHNlKTsK
ICAgICB9CiAKICAgICBpZiAocmVzaXplICE9IFJFU0laRV9IT1JJWk9OVEFMICYmIGRpZmZlcmVu
Y2UuaGVpZ2h0KCkpIHsKQEAgLTE4NjcsNyArMTg2OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJl
c2l6ZShjb25zdCBQbGF0Zm9ybU0KICAgICAgICAgfQogICAgICAgICBMYXlvdXRVbml0IGJhc2VI
ZWlnaHQgPSByZW5kZXJlci0+aGVpZ2h0KCkgLSAoaXNCb3hTaXppbmdCb3JkZXIgPyB6ZXJvTGF5
b3V0VW5pdCA6IHJlbmRlcmVyLT5ib3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCkpOwogICAgICAgICBi
YXNlSGVpZ2h0ID0gYmFzZUhlaWdodCAvIHpvb21GYWN0b3I7Ci0gICAgICAgIHN0eWxlZEVsZW1l
bnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVt
YmVyKGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNlLmhlaWdodCgpKSArICJweCIsIGZhbHNlKTsKKyAg
ICAgICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhl
aWdodCwgU3RyaW5nOjpudW1iZXIocm91bmRUb0ludChiYXNlSGVpZ2h0ICsgZGlmZmVyZW5jZS5o
ZWlnaHQoKSkpICsgInB4IiwgZmFsc2UpOwogICAgIH0KIAogICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXQoKTsKQEAgLTE5NzcsNyArMTk3OCw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OnNjcm9s
bENvcm5lclJlY3QoKSAKICAgICBib29sIGhhc1ZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxi
YXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSByZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNpemUo
KSAhPSBSRVNJWkVfTk9ORTsKICAgICBpZiAoKGhhc0hvcml6b250YWxCYXIgJiYgaGFzVmVydGlj
YWxCYXIpIHx8IChoYXNSZXNpemVyICYmIChoYXNIb3Jpem9udGFsQmFyIHx8IGhhc1ZlcnRpY2Fs
QmFyKSkpCi0gICAgICAgIHJldHVybiBjb3JuZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBlZEludFJl
Y3QocmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkpOworICAgICAgICByZXR1cm4gY29ybmVy
UmVjdCh0aGlzLCByZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKTsKICAgICByZXR1cm4gSW50
UmVjdCgpOwogfQogCkBAIC0yMzAxLDcgKzIzMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwb3Np
dGlvbk92ZXJmbG93Q29udHJvCiAgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbnN0IEludFJlY3QgYm9yZGVyQm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRl
ckJveFJlY3QoKSk7CisgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSBib3gtPmJvcmRlckJv
eFJlY3QoKTsKICAgICBjb25zdCBJbnRSZWN0JiBzY3JvbGxDb3JuZXIgPSBzY3JvbGxDb3JuZXJS
ZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94LmxvY2F0aW9uKCkgKyBvZmZz
ZXRGcm9tTGF5ZXIsIGJvcmRlckJveC5zaXplKCkpOwogICAgIGlmIChtX3ZCYXIpCkBAIC0yMzQ4
LDE2ICsyMzQ5LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8K
IAogaW50IFJlbmRlckxheWVyOjpzY3JvbGxXaWR0aCgpCiB7CisgICAgQVNTRVJUKHJlbmRlckJv
eCgpKTsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCiAgICAgICAgIGNvbXB1dGVT
Y3JvbGxEaW1lbnNpb25zKCk7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsU2l6ZS53aWR0aCgpOworICAg
IHJldHVybiBzbmFwU2l6ZVRvUGl4ZWwobV9zY3JvbGxTaXplLndpZHRoKCksIHJlbmRlckJveCgp
LT5jbGllbnRMZWZ0KCkpOwogfQogCiBpbnQgUmVuZGVyTGF5ZXI6OnNjcm9sbEhlaWdodCgpCiB7
CisgICAgQVNTRVJUKHJlbmRlckJveCgpKTsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGly
dHkpCiAgICAgICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7Ci0gICAgcmV0dXJuIG1fc2Ny
b2xsU2l6ZS5oZWlnaHQoKTsKKyAgICByZXR1cm4gc25hcFNpemVUb1BpeGVsKG1fc2Nyb2xsU2l6
ZS5oZWlnaHQoKSwgcmVuZGVyQm94KCktPmNsaWVudFRvcCgpKTsKIH0KIAogTGF5b3V0VW5pdCBS
ZW5kZXJMYXllcjo6b3ZlcmZsb3dUb3AoKSBjb25zdApAQCAtMjQwNCw3ICsyNDA3LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbgogCiAgICAgbV9zY3JvbGxTaXpl
LnNldFdpZHRoKG92ZXJmbG93UmlnaHQoKSAtIG92ZXJmbG93TGVmdCgpKTsKICAgICBtX3Njcm9s
bFNpemUuc2V0SGVpZ2h0KG92ZXJmbG93Qm90dG9tKCkgLSBvdmVyZmxvd1RvcCgpKTsKLSAgICAK
KwogICAgIHNldFNjcm9sbE9yaWdpbihJbnRQb2ludCgtbV9zY3JvbGxPdmVyZmxvdy53aWR0aCgp
LCAtbV9zY3JvbGxPdmVyZmxvdy5oZWlnaHQoKSkpOwogCiAgICAgaWYgKG5lZWRIQmFyKQpAQCAt
MjYzMyw3ICsyNjM2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNz
QwogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7CiAK
LSAgICBJbnRSZWN0IGFic1JlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBw
ZWRJbnRSZWN0KGJveC0+Ym9yZGVyQm94UmVjdCgpKSk7CisgICAgSW50UmVjdCBhYnNSZWN0ID0g
cmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpOwogICAgIGFic1Jl
Y3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1h
Z2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY4OCw3ICsyNjkxLDcgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbAogICAgIAogICAgIEludFJlY3QgcmVzaXpl
Q29udHJvbFJlY3Q7CiAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnJlc2l6ZSgpICE9IFJF
U0laRV9OT05FKSB7Ci0gICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0gcmVzaXplckNvcm5lclJl
Y3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRlckJveFJlY3QoKSkpOworICAg
ICAgICByZXNpemVDb250cm9sUmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9y
ZGVyQm94UmVjdCgpKTsKICAgICAgICAgaWYgKHJlc2l6ZUNvbnRyb2xSZWN0LmNvbnRhaW5zKGxv
Y2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzAxOSw3ICsz
MDIyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBQYWludCB0aGUgYmFja2dyb3Vu
ZC4KLSAgICAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgZGFtYWdlUmVjdC5y
ZWN0KCksIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JS
ZW5kZXJlciwgcmVnaW9uLCAwKTsKKyAgICAgICAgICAgIFBhaW50SW5mbyBwYWludEluZm8oY29u
dGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChkYW1hZ2VSZWN0LnJlY3QoKSksIFBhaW50UGhhc2VC
bG9ja0JhY2tncm91bmQsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVnaW9uLCAw
KTsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
OwogCiAgICAgICAgICAgICBpZiAodXNlQ2xpcFJlY3QpIHsKQEAgLTMwNDQsNyArMzA0Nyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW4KICAgICAgICAgICAgICAg
ICBjbGlwVG9SZWN0KHJvb3RMYXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGNsaXBSZWN0
VG9BcHBseSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFBhaW50
SW5mbyBwYWludEluZm8oY29udGV4dCwgY2xpcFJlY3RUb0FwcGx5LnJlY3QoKSwgCisgICAgICAg
ICAgICBQYWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoY2xp
cFJlY3RUb0FwcGx5LnJlY3QoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdGlvbk9ubHkgPyBQYWludFBoYXNlU2VsZWN0aW9uIDogUGFpbnRQaGFzZUNoaWxkQmxvY2tC
YWNrZ3JvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VCbGFja1Rl
eHQsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOwogICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CkBAIC0zMDY2LDcgKzMwNjks
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoUmVuCiAKICAgICAgICAg
aWYgKHNob3VsZFBhaW50T3V0bGluZSAmJiAhb3V0bGluZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBQYWludCBvdXIgb3duIG91dGxpbmUKLSAgICAgICAgICAgIFBhaW50SW5mbyBw
YWludEluZm8oY29udGV4dCwgb3V0bGluZVJlY3QucmVjdCgpLCBQYWludFBoYXNlU2VsZk91dGxp
bmUsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgcmVnaW9uLCAwKTsKKyAgICAgICAg
ICAgIFBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChvdXRs
aW5lUmVjdC5yZWN0KCkpLCBQYWludFBoYXNlU2VsZk91dGxpbmUsIGZhbHNlLCBwYWludGluZ1Jv
b3RGb3JSZW5kZXJlciwgcmVnaW9uLCAwKTsKICAgICAgICAgICAgIGNsaXBUb1JlY3Qocm9vdExh
eWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgb3V0bGluZVJlY3QsIERvTm90SW5jbHVkZVNl
bGZGb3JCb3JkZXJSYWRpdXMpOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWlu
dERpcnR5UmVjdCwgb3V0bGluZVJlY3QpOwpAQCAtMzA4NCw3ICszMDg3LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbgogICAgICAgICAgICAgY2xpcFRvUmVjdChy
b290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0LCBEb05vdEluY2x1
ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsgLy8gTWFzayBwYWludGluZyB3aWxsIGhhbmRsZSBjbGlw
cGluZyB0byBzZWxmLgogCiAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrLgotICAgICAgICBQYWlu
dEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIGRhbWFnZVJlY3QucmVjdCgpLCBQYWludFBoYXNlTWFz
aywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCByZWdpb24sIDApOworICAgICAgICBQ
YWludEluZm8gcGFpbnRJbmZvKGNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QoZGFtYWdlUmVj
dC5yZWN0KCkpLCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVy
LCByZWdpb24sIDApOwogICAgICAgICByZW5kZXJlcigpLT5wYWludChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKICAgICAgICAgCiAgICAgICAgIGlmICh1c2VDbGlwUmVjdCkgewpAQCAtMzI2Niw5
ICszMjY5LDkgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0Ugogewog
ICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIAotICAgIElu
dFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJlYWQoKSA/IHRv
UmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpIDogcmVuZGVyZXIo
KS0+dmlldygpLT5kb2N1bWVudFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IGhpdFRlc3RBcmVhID0g
cmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkgPyB0b1JlbmRlckZsb3dUaHJlYWQocmVu
ZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSA6IHJlbmRlcmVyKCktPnZpZXcoKS0+ZG9jdW1lbnRS
ZWN0KCk7CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRl
c3RBcmVhLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1lVmlzaWJsZVJlY3QocmVu
ZGVyZXIoKSkpKTsKKyAgICAgICAgaGl0VGVzdEFyZWEuaW50ZXJzZWN0KGZyYW1lVmlzaWJsZVJl
Y3QocmVuZGVyZXIoKSkpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVz
dExheWVyKHRoaXMsIDAsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdEFyZWEsIHJlc3VsdC5wb2lu
dCgpLCBmYWxzZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewpAQCAtMzU1OCw3ICszNTYxLDcg
QEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUgogYm9vbCBSZW5kZXJM
YXllcjo6aGl0VGVzdENvbnRlbnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBM
YXlvdXRQb2ludCYgaGl0VGVzdFBvaW50LCBIaXRUZXN0RmlsdGVyIGhpdFRlc3RGaWx0ZXIpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCwgaGl0
VGVzdFBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUG9pbnQobGF5ZXJCb3Vu
ZHMubG9jYXRpb24oKSAtIHJlbmRlckJveExvY2F0aW9uKCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvTGF5b3V0UG9pbnQobGF5ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlbmRlckJv
eExvY2F0aW9uKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdFRlc3RGaWx0ZXIp
KSB7CiAgICAgICAgIC8vIEl0J3Mgd3JvbmcgdG8gc2V0IGlubmVyTm9kZSwgYnV0IHRoZW4gY2xh
aW0gdGhhdCB5b3UgZGlkbid0IGhpdCBhbnl0aGluZywgdW5sZXNzIGl0IGlzCiAgICAgICAgIC8v
IGEgcmVjdC1iYXNlZCB0ZXN0Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>