<?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>84063</bug_id>
          
          <creation_ts>2012-04-16 12:42:20 -0700</creation_ts>
          <short_desc>Make borderBoxRect sub-pixel precise and add a pixel snapped version</short_desc>
          <delta_ts>2012-04-16 16:24:39 -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="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603347</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-16 12:42:20 -0700</bug_when>
    <thetext>borderBoxRect is a mildly dangerous function in our sub-pixel world because it zero&apos;s the location of the box, which causes pixel snapping to be incorrect.

First, we tried to fix this by making it integer only, but there are a couple places in the code where we actually need the sub-pixel size. We could either refactor the code that needs sub-pixel precision off of borderBoxRect (which should really just be renamed borderBoxSize since the location part of the rect is always empty) or make the fact that we&apos;re pixel snapping explicit in the other locations. I&apos;m opting for the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603378</commentid>
    <comment_count>1</comment_count>
      <attachid>137389</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-16 13:22:06 -0700</bug_when>
    <thetext>Created attachment 137389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603405</commentid>
    <comment_count>2</comment_count>
      <attachid>137389</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-16 13:54:40 -0700</bug_when>
    <thetext>Comment on attachment 137389
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        at (0,0), and therefor won&apos;t snap to the same size as the element it&apos;s covering.

you mean &quot;therefore&quot;

&gt; Source/WebCore/rendering/RenderBox.h:458
&gt; +    bool hasVisualOverflow() const { return m_overflow &amp;&amp; !borderBoxRect().contains(m_overflow-&gt;visualOverflowRect()); }

Do we know what the concequences of having sub-pixel overflow detection here is?  Can we test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603485</commentid>
    <comment_count>3</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-16 15:12:31 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 137389 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137389&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        at (0,0), and therefor won&apos;t snap to the same size as the element it&apos;s covering.
&gt; 
&gt; you mean &quot;therefore&quot;

Thanks :)

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.h:458
&gt; &gt; +    bool hasVisualOverflow() const { return m_overflow &amp;&amp; !borderBoxRect().contains(m_overflow-&gt;visualOverflowRect()); }
&gt; 
&gt; Do we know what the concequences of having sub-pixel overflow detection here is?  Can we test this?

We&apos;ve done extensive testing to assure that overflow handling happens properly if and only if there will actually be rendered overflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603486</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-16 15:13:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 137389 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137389&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; &gt; +        at (0,0), and therefor won&apos;t snap to the same size as the element it&apos;s covering.
&gt; &gt; 
&gt; &gt; you mean &quot;therefore&quot;
&gt; 
&gt; Thanks :)
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderBox.h:458
&gt; &gt; &gt; +    bool hasVisualOverflow() const { return m_overflow &amp;&amp; !borderBoxRect().contains(m_overflow-&gt;visualOverflowRect()); }
&gt; &gt; 
&gt; &gt; Do we know what the concequences of having sub-pixel overflow detection here is?  Can we test this?
&gt; 
&gt; We&apos;ve done extensive testing to assure that overflow handling happens properly if and only if there will actually be rendered overflow.

Sorry, I meant to also say I&apos;ll add a test for that in our branch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603501</commentid>
    <comment_count>5</comment_count>
      <attachid>137415</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-04-16 15:24:41 -0700</bug_when>
    <thetext>Created attachment 137415
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603542</commentid>
    <comment_count>6</comment_count>
      <attachid>137415</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 16:24:34 -0700</bug_when>
    <thetext>Comment on attachment 137415
Patch for landing

Clearing flags on attachment: 137415

Committed r114315: &lt;http://trac.webkit.org/changeset/114315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603543</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 16:24:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137389</attachid>
            <date>2012-04-16 13:22:06 -0700</date>
            <delta_ts>2012-04-16 15:24:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84063-20120416132205.patch</filename>
            <type>text/plain</type>
            <size>15467</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDI4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTE2ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGJvcmRlckJveFJl
Y3Qgc3ViLXBpeGVsIHByZWNpc2UgYW5kIGFkZCBhIHBpeGVsIHNuYXBwZWQgdmVyc2lvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBhbiBlZmZvcnQg
dG8gcHJldmVudCBtaXN1c2UsIHdlIHByZXZpb3VzbHkgZGVjaWRlZCB0byBoYXZlIGJvcmRlckJv
eFJlY3QgcmV0dXJuIGEKKyAgICAgICAgcGl4ZWwtc25hcHBlZCBJbnRSZWN0LiBUaGlzIGlzIGJl
Y2F1c2UgYm9yZGVyQm94UmVjdCByZXR1cm5zIGEgcmVjdCB0aGF0J3MgcG9zaXRpb25lZAorICAg
ICAgICBhdCAoMCwwKSwgYW5kIHRoZXJlZm9yIHdvbid0IHNuYXAgdG8gdGhlIHNhbWUgc2l6ZSBh
cyB0aGUgZWxlbWVudCBpdCdzIGNvdmVyaW5nLgorCisgICAgICAgIFRoZXJlIGFyZSBhIGNvdXBs
ZSB1c2VzIG9mIGJvcmRlckJveFJlY3QgdGhhdCBkb24ndCBwaXhlbCBzbmFwIHRoZSB2YWx1ZXMg
YW5kIHJlcXVpcmUKKyAgICAgICAgc3ViLXBpeGVsIHByZWNpc2lvbi4gVGhpcyBwYXRjaCBhZGRz
IGEgcGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCB0aGF0IG1ha2VzIHRoZSBzbmFwcGluZworICAg
ICAgICBleHBsaWNpdCwgYW5kIG1vdmVzIHVzZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgcGl4ZWwg
c25hcCB0aGUgcmVjdCB0byB0aGlzIHZlcnNpb24gdG8KKyAgICAgICAgYXZvaWQgcHJvZHVjaW5n
IGEgcmVjdCBvZiB0aGUgaW5jb3JyZWN0IHNpemUuIEZvciBkZXRhaWxzIGFib3V0IHBpeGVsIHNu
YXBwaW5nIHdpdGgKKyAgICAgICAgTGF5b3V0VW5pdHMsIHBsZWFzZSBzZWUgaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvd2lraS9MYXlvdXRVbml0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkVmlzdWFsT3ZlcmZsb3dGcm9tVGhl
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6Ym9yZGVyQm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpib3JkZXJCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Omhhc1Zp
c3VhbE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lckFuZFJlc2l6ZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFyU3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6
OmFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jvb3Q6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQpOgorCiAyMDEyLTA0LTE2ICBMdWl6IEFnb3N0aW5p
ICA8bHVpei5hZ29zdGluaUBwYWxtLmNvbT4KIAogICAgICAgICBtYXRjaE1lZGlhKCkgTWVkaWFR
dWVyeUxpc3Qgbm90IHVwZGF0aW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHJldmlzaW9uIDExNDI4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFNwaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kCiAgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0
YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCk7CiAgICAgSW50UG9pbnQgbG9jYWwgPSByb3Vu
ZGVkSW50UG9pbnQoYm94LT5hYnNvbHV0ZVRvTG9jYWwobW91c2VFdmVudC0+YWJzb2x1dGVMb2Nh
dGlvbigpLCBmYWxzZSwgdHJ1ZSkpOwogICAgIGlmIChtb3VzZUV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIG1vdXNlRXZlbnQtPmJ1dHRvbigpID09IExlZnRC
dXR0b24pIHsKLSAgICAgICAgaWYgKGJveC0+Ym9yZGVyQm94UmVjdCgpLmNvbnRhaW5zKGxvY2Fs
KSkgeworICAgICAgICBpZiAoYm94LT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuY29udGFp
bnMobG9jYWwpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiBI
VE1MSW5wdXRFbGVtZW50IG1heSBydW4gSmF2YVNjcmlwdAogICAgICAgICAgICAgLy8gY29kZSB3
aGljaCBkZXRhY2hlcyB0aGlzIHNoYWRvdyBub2RlLiBXZSBuZWVkIHRvIHRha2UgYSByZWZlcmVu
Y2UKICAgICAgICAgICAgIC8vIGFuZCBjaGVjayByZW5kZXJlcigpIGFmdGVyIHN1Y2ggZnVuY3Rp
b24gY2FsbHMuCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZAogICAgIH0gZWxzZSBpZiAobW91c2VFdmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRv
bikKICAgICAgICAgc3RvcFJlcGVhdGluZ1RpbWVyKCk7CiAgICAgZWxzZSBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKLSAgICAgICAgaWYgKGJveC0+
Ym9yZGVyQm94UmVjdCgpLmNvbnRhaW5zKGxvY2FsKSkgeworICAgICAgICBpZiAoYm94LT5waXhl
bFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkuY29udGFpbnMobG9jYWwpKSB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2FwdHVyaW5nKSB7CiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDExNDI4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NjYsNyArMTY2Niw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZFZpc3VhbE92ZXJmbG93RnJv
bVQKICAgICBpZiAoIXN0eWxlKCktPmhhc0FwcGVhcmFuY2UoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CisgICAgSW50UmVj
dCBpbmZsYXRlZFJlY3QgPSBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCk7CiAgICAgdGhlbWUo
KS0+YWRqdXN0UmVwYWludFJlY3QodGhpcywgaW5mbGF0ZWRSZWN0KTsKICAgICBhZGRWaXN1YWxP
dmVyZmxvdyhpbmZsYXRlZFJlY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAkocmV2aXNpb24gMTE0MjgwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOCArMTMzLDkgQEAgcHVibGljOgogICAg
IEludFJlY3QgcGl4ZWxTbmFwcGVkRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChtX2ZyYW1lUmVjdCk7IH0KICAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBM
YXlvdXRSZWN0JiByZWN0KSB7IG1fZnJhbWVSZWN0ID0gcmVjdDsgfQogCi0gICAgSW50UmVjdCBi
b3JkZXJCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXpl
KG1fZnJhbWVSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCksIG1fZnJhbWVSZWN0LnBpeGVsU25hcHBl
ZEhlaWdodCgpKSk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBib3JkZXJCb3hSZWN0KCk7IH0gCisgICAgTGF5b3V0UmVjdCBib3JkZXJC
b3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdChMYXlvdXRQb2ludCgpLCBzaXplKCkp
OyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gSW50UmVjdChJbnRQb2ludCgpLCBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRTaXplKCkpOyB9
CisgICAgdmlydHVhbCBJbnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4g
cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOyB9IAogCiAgICAgLy8gVGhlIGNvbnRlbnQgYXJl
YSBvZiB0aGUgYm94IChleGNsdWRlcyBwYWRkaW5nIC0gYW5kIGludHJpbnNpYyBwYWRkaW5nIGZv
ciB0YWJsZSBjZWxscywgZXRjLi4uIC0gYW5kIGJvcmRlcikuCiAgICAgTGF5b3V0UmVjdCBjb250
ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCksIGNvbnRlbnRXaWR0aCgpLCBj
b250ZW50SGVpZ2h0KCkpOyB9CkBAIC00NTQsNyArNDU1LDcgQEAgcHVibGljOgogICAgIExheW91
dFJlY3QgbGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oUmVuZGVyU3R5bGUqKSBjb25z
dDsKIAogICAgIFJlbmRlck92ZXJmbG93KiBoYXNSZW5kZXJPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG1fb3ZlcmZsb3cuZ2V0KCk7IH0gICAgCi0gICAgYm9vbCBoYXNWaXN1YWxPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgJiYgIWJvcmRlckJveFJlY3QoKS5jb250YWlucyhw
aXhlbFNuYXBwZWRJbnRSZWN0KG1fb3ZlcmZsb3ctPnZpc3VhbE92ZXJmbG93UmVjdCgpKSk7IH0K
KyAgICBib29sIGhhc1Zpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyAm
JiAhYm9yZGVyQm94UmVjdCgpLmNvbnRhaW5zKG1fb3ZlcmZsb3ctPnZpc3VhbE92ZXJmbG93UmVj
dCgpKTsgfQogCiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxh
dGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZv
cm1hdGlvbihGbG9hdFNpemUmIC8qIGludHJpbnNpY1NpemUgKi8sIGRvdWJsZSYgLyogaW50cmlu
c2ljUmF0aW8gKi8sIGJvb2wmIC8qIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUgKi8pIGNvbnN0
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZp
c2lvbiAxMTQyODApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgxLDcgKzE5ODEsNyBAQCBJbnRSZWN0IFJlbmRlckxheWVy
OjpzY3JvbGxDb3JuZXJSZWN0KCkgCiAgICAgYm9vbCBoYXNWZXJ0aWNhbEJhciA9IHZlcnRpY2Fs
U2Nyb2xsYmFyKCk7CiAgICAgYm9vbCBoYXNSZXNpemVyID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+
cmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNIb3Jpem9udGFsQmFyICYmIGhh
c1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9yaXpvbnRhbEJhciB8fCBoYXNW
ZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gY29ybmVyUmVjdCh0aGlzLCByZW5kZXJCb3go
KS0+Ym9yZGVyQm94UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGNvcm5lclJlY3QodGhpcywgcmVu
ZGVyQm94KCktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKSk7CiAgICAgcmV0dXJuIEludFJl
Y3QoKTsKIH0KIApAQCAtMjAwMCw3ICsyMDAwLDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6c2Ny
b2xsQ29ybmVyQW5kUmVzaQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIEludFJlY3Qg
c2Nyb2xsQ29ybmVyQW5kUmVzaXplciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBpZiAoc2Ny
b2xsQ29ybmVyQW5kUmVzaXplci5pc0VtcHR5KCkpCi0gICAgICAgIHNjcm9sbENvcm5lckFuZFJl
c2l6ZXIgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+
Ym9yZGVyQm94UmVjdCgpKSk7CisgICAgICAgIHNjcm9sbENvcm5lckFuZFJlc2l6ZXIgPSByZXNp
emVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKSk7CiAg
ICAgcmV0dXJuIHNjcm9sbENvcm5lckFuZFJlc2l6ZXI7CiB9CiAKQEAgLTIxMDIsNyArMjEwMiw3
IEBAIExheW91dFVuaXQgUmVuZGVyTGF5ZXI6Omhvcml6b250YWxTY3JvbGwKICAgICBjb25zdCBS
ZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgIGludCB4ID0gbWluWCArIGJveC0+Ym9y
ZGVyTGVmdCgpOwogICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5zaG91bGRQbGFjZUJsb2Nr
RGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKQotICAgICAgICB4ICs9IG1fdkJhciA/
IG1fdkJhci0+d2lkdGgoKSA6IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94
UmVjdCgpKS53aWR0aCgpOworICAgICAgICB4ICs9IG1fdkJhciA/IG1fdkJhci0+d2lkdGgoKSA6
IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgp
KS53aWR0aCgpOwogICAgIHJldHVybiB4OwogfQogCkBAIC0yMzA1LDcgKzIzMDUsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvCiAgICAgaWYgKCFib3gpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IEludFJlY3QgYm9yZGVyQm94ID0gYm94LT5ib3JkZXJC
b3hSZWN0KCk7CisgICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSBib3gtPnBpeGVsU25hcHBl
ZEJvcmRlckJveFJlY3QoKTsKICAgICBjb25zdCBJbnRSZWN0JiBzY3JvbGxDb3JuZXIgPSBzY3Jv
bGxDb3JuZXJSZWN0KCk7CiAgICAgSW50UmVjdCBhYnNCb3VuZHMoYm9yZGVyQm94LmxvY2F0aW9u
KCkgKyBvZmZzZXRGcm9tTGF5ZXIsIGJvcmRlckJveC5zaXplKCkpOwogICAgIGlmIChtX3ZCYXIp
CkBAIC0yNjQ0LDcgKzI2NDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3Jh
cGhpY3NDCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94
KTsKIAotICAgIEludFJlY3QgYWJzUmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+
Ym9yZGVyQm94UmVjdCgpKTsKKyAgICBJbnRSZWN0IGFic1JlY3QgPSByZXNpemVyQ29ybmVyUmVj
dCh0aGlzLCBib3gtPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKSk7CiAgICAgYWJzUmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICghYWJzUmVjdC5pbnRlcnNlY3RzKGRhbWFnZVJl
Y3QpKQogICAgICAgICByZXR1cm47CkBAIC0yNjk5LDcgKzI2OTksNyBAQCBib29sIFJlbmRlckxh
eWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgCiAgICAgSW50UmVjdCByZXNpemVDb250
cm9sUmVjdDsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpF
X05PTkUpIHsKLSAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0
aGlzLCBib3gtPmJvcmRlckJveFJlY3QoKSk7CisgICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0g
cmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkp
OwogICAgICAgICBpZiAocmVzaXplQ29udHJvbFJlY3QuY29udGFpbnMobG9jYWxQb2ludCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMTE0MjgwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
R3JhcGhpY3NMCiAgICAgfQogICAgIAogICAgIGlmIChtX293bmluZ0xheWVyLT5oYXNUcmFuc2Zv
cm0oKSkgewotICAgICAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IHRvUmVuZGVyQm94KHJl
bmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCk7CisgICAgICAgIGNvbnN0IEludFJlY3QgYm9yZGVy
Qm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3Qo
KTsKIAogICAgICAgICAvLyBHZXQgbGF5b3V0IGJvdW5kcyBpbiB0aGUgY29vcmRzIG9mIGNvbXBB
bmNlc3RvciB0byBtYXRjaCByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLgogICAgICAgICBJbnRS
ZWN0IGxheWVyQm91bmRzID0gSW50UmVjdChkZWx0YSwgYm9yZGVyQm94LnNpemUoKSk7CkBAIC0x
Mjg3LDcgKzEyODcsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24o
CiAgICAgYm9vbCBkaWRBbmltYXRlRmlsdGVyID0gZmFsc2U7CiAjZW5kaWYKICAgICAKLSAgICBp
ZiAoaGFzVHJhbnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9y
bVZlY3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCks
IGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKSB7CisgICAgaWYg
KGhhc1RyYW5zZm9ybSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1W
ZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0
KCkuc2l6ZSgpLCBhbmltLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1lT2Zmc2V0KSkg
ewogICAgICAgICBkaWRBbmltYXRlVHJhbnNmb3JtID0gdHJ1ZTsKICAgICAgICAgY29tcG9zaXRv
cigpLT5kaWRTdGFydEFjY2VsZXJhdGVkQW5pbWF0aW9uKENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtKTsKICAgICB9CkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6c3RhcnRUcmFuc2l0aW9uCiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zv
cm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiAgICAgICAgICAgICB0
cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMSwgJnRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3Jt
VmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpLnNpemUoKSwg
dHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24o
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CisgICAgICAg
ICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCB0
b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpLnNpemUo
KSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRp
b24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZp
c2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zv
cm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0odG9TdHlsZSk7CiAgICAg
ICAgICAgICAgICAgZGlkQW5pbWF0ZVRyYW5zZm9ybSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDExNDI4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
OSw3ICs1MDksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjphZGRPdmVyZmxvd0Zyb21DaGlsZHJlCiAg
ICAgICAgIGludCBib3R0b21Cb3JkZXJPdmVyZmxvdyA9IGhlaWdodCgpICsgb3V0ZXJCb3JkZXJC
b3R0b20oKSAtIGJvcmRlckJvdHRvbSgpOwogICAgICAgICBpbnQgdG9wQm9yZGVyT3ZlcmZsb3cg
PSBib3JkZXJUb3AoKSAtIG91dGVyQm9yZGVyVG9wKCk7CiAgICAgICAgIEludFJlY3QgYm9yZGVy
T3ZlcmZsb3dSZWN0KGxlZnRCb3JkZXJPdmVyZmxvdywgdG9wQm9yZGVyT3ZlcmZsb3csIHJpZ2h0
Qm9yZGVyT3ZlcmZsb3cgLSBsZWZ0Qm9yZGVyT3ZlcmZsb3csIGJvdHRvbUJvcmRlck92ZXJmbG93
IC0gdG9wQm9yZGVyT3ZlcmZsb3cpOwotICAgICAgICBpZiAoYm9yZGVyT3ZlcmZsb3dSZWN0ICE9
IGJvcmRlckJveFJlY3QoKSkgeworICAgICAgICBpZiAoYm9yZGVyT3ZlcmZsb3dSZWN0ICE9IHBp
eGVsU25hcHBlZEJvcmRlckJveFJlY3QoKSkgewogICAgICAgICAgICAgYWRkTGF5b3V0T3ZlcmZs
b3coYm9yZGVyT3ZlcmZsb3dSZWN0KTsKICAgICAgICAgICAgIGFkZFZpc3VhbE92ZXJmbG93KGJv
cmRlck92ZXJmbG93UmVjdCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDExNDI4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzNCw3
ICsxNTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbgogCiAg
ICAgZmxvYXQgem9vbUxldmVsID0gby0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAg
RmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBjYW5jZWxCdXR0b25SZWN0Rm9yQm91bmRz
Ok5TUmVjdChpbnB1dC0+cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSldOworICAgIEZsb2F0
UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZvckJvdW5kczpOU1Jl
Y3QoaW5wdXQtPnJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkpXTsKIAog
I2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLy8gVGFrZSBjYXJlIG9mIGNhc2VzIHdoZXJl
IHRoZSBjYW5jZWwgYnV0dG9uIHdhcyBub3QgYWxpZ25lZCB3aXRoIHRoZSByaWdodCBib3JkZXIg
b2YgdGhlIGlucHV0IGVsZW1lbnQgKGZvciBlLmcuCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzCiAKICAgICB1cGRhdGVBY3RpdmVT
dGF0ZShbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdLCBvKTsKIAotICAgIEZsb2F0UmVjdCBsb2Nh
bEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3QoaW5wdXQt
PnJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpXTsKKyAgICBGbG9hdFJlY3QgbG9jYWxCb3Vu
ZHMgPSBbc2VhcmNoIHNlYXJjaEJ1dHRvblJlY3RGb3JCb3VuZHM6TlNSZWN0KGlucHV0LT5yZW5k
ZXJCb3goKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpKV07CiAgICAgbG9jYWxCb3VuZHMg
PSBjb252ZXJ0VG9QYWludGluZ1JlY3QoaW5wdXQtPnJlbmRlcmVyKCksIG8sIGxvY2FsQm91bmRz
LCByKTsKIAogICAgIFtbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6bG9j
YWxCb3VuZHMgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihvKV07CkBAIC0xNjU1LDcgKzE2NTUsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAgICAgZmxv
YXQgem9vbUxldmVsID0gby0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgRmxvYXRS
ZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVj
dChpbnB1dC0+cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSldOworICAgIEZsb2F0UmVjdCBs
b2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3QoaW5w
dXQtPnJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkpXTsKICAgICBsb2Nh
bEJvdW5kcyA9IGNvbnZlcnRUb1BhaW50aW5nUmVjdChpbnB1dC0+cmVuZGVyZXIoKSwgbywgbG9j
YWxCb3VuZHMsIHIpOwogICAgIAogICAgIEludFJlY3QgdW56b29tZWRSZWN0KGxvY2FsQm91bmRz
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAkocmV2aXNpb24gMTE0MjgwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6bGF5b3V0KCkKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNl
ZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkUGFpbnRP
ZmZzZXQpCiB7CiAgICAgLy8gQW4gZW1wdHkgdmlld3BvcnQgZGlzYWJsZXMgcmVuZGVyaW5nLgot
ICAgIGlmIChib3JkZXJCb3hSZWN0KCkuaXNFbXB0eSgpKQorICAgIGlmIChwaXhlbFNuYXBwZWRC
b3JkZXJCb3hSZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBEb24n
dCBwYWludCwgaWYgdGhlIGNvbnRleHQgZXhwbGljaXRlbHkgZGlzYWJsZWQgaXQuCkBAIC0zNjgs
NyArMzY4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUgogICAg
IHJlcGFpbnRSZWN0ID0gbV9sb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtLm1hcFJlY3QocmVwYWlu
dFJlY3QpOwogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwIC0gbm90IGFmZmVj
dGVkIGJ5IG92ZXJmbG93IHNldHRpbmdzICAgIAotICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChi
b3JkZXJCb3hSZWN0KCkpOworICAgIHJlcGFpbnRSZWN0LmludGVyc2VjdChwaXhlbFNuYXBwZWRC
b3JkZXJCb3hSZWN0KCkpOwogCiAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0g
c3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICBpZiAoY29uc3QgU2hhZG93RGF0YSogc2hhZG93ID0g
c3ZnU3R5bGUtPnNoYWRvdygpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137415</attachid>
            <date>2012-04-16 15:24:41 -0700</date>
            <delta_ts>2012-04-16 16:24:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-84063-20120416152440.patch</filename>
            <type>text/plain</type>
            <size>15481</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTE2ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGJvcmRlckJveFJl
Y3Qgc3ViLXBpeGVsIHByZWNpc2UgYW5kIGFkZCBhIHBpeGVsIHNuYXBwZWQgdmVyc2lvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBJbiBhbiBlZmZvcnQgdG8g
cHJldmVudCBtaXN1c2UsIHdlIHByZXZpb3VzbHkgZGVjaWRlZCB0byBoYXZlIGJvcmRlckJveFJl
Y3QgcmV0dXJuIGEKKyAgICAgICAgcGl4ZWwtc25hcHBlZCBJbnRSZWN0LiBUaGlzIGlzIGJlY2F1
c2UgYm9yZGVyQm94UmVjdCByZXR1cm5zIGEgcmVjdCB0aGF0J3MgcG9zaXRpb25lZAorICAgICAg
ICBhdCAoMCwwKSwgYW5kIHRoZXJlZm9yZSB3b24ndCBzbmFwIHRvIHRoZSBzYW1lIHNpemUgYXMg
dGhlIGVsZW1lbnQgaXQncyBjb3ZlcmluZy4KKworICAgICAgICBUaGVyZSBhcmUgYSBjb3VwbGUg
dXNlcyBvZiBib3JkZXJCb3hSZWN0IHRoYXQgZG9uJ3QgcGl4ZWwgc25hcCB0aGUgdmFsdWVzIGFu
ZCByZXF1aXJlCisgICAgICAgIHN1Yi1waXhlbCBwcmVjaXNpb24uIFRoaXMgcGF0Y2ggYWRkcyBh
IHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QgdGhhdCBtYWtlcyB0aGUgc25hcHBpbmcKKyAgICAg
ICAgZXhwbGljaXQsIGFuZCBtb3ZlcyB1c2VzIHRoYXQgd291bGQgb3RoZXJ3aXNlIHBpeGVsIHNu
YXAgdGhlIHJlY3QgdG8gdGhpcyB2ZXJzaW9uIHRvCisgICAgICAgIGF2b2lkIHByb2R1Y2luZyBh
IHJlY3Qgb2YgdGhlIGluY29ycmVjdCBzaXplLiBGb3IgZGV0YWlscyBhYm91dCBwaXhlbCBzbmFw
cGluZyB3aXRoCisgICAgICAgIExheW91dFVuaXRzLCBwbGVhc2Ugc2VlIGh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL3dpa2kvTGF5b3V0VW5pdAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZFZpc3VhbE92ZXJmbG93RnJvbVRoZW1l
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmJvcmRlckJveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpw
aXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Ym9yZGVyQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNWaXN1
YWxPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJBbmRSZXNpemVyUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJhclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjph
ZGRPdmVyZmxvd0Zyb21DaGlsZHJlbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmll
bGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KToKKwogMjAxMi0wNC0xNiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdG8gdXBkYXRlWk9yZGVy
TGlzdHNTbG93Q2FzZSB0byByZWJ1aWxkWk9yZGVyTGlzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAko
cmV2aXNpb24gMTE0MzA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZv
aWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICBNb3VzZUV2ZW50KiBt
b3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KTsKICAgICBJbnRQb2lu
dCBsb2NhbCA9IHJvdW5kZWRJbnRQb2ludChib3gtPmFic29sdXRlVG9Mb2NhbChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKSk7CiAgICAgaWYgKG1vdXNlRXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAgICAgICBpZiAoYm94LT5ib3JkZXJCb3hSZWN0KCku
Y29udGFpbnMobG9jYWwpKSB7CisgICAgICAgIGlmIChib3gtPnBpeGVsU25hcHBlZEJvcmRlckJv
eFJlY3QoKS5jb250YWlucyhsb2NhbCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
ZnVuY3Rpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQgbWF5IHJ1biBKYXZhU2NyaXB0CiAgICAgICAg
ICAgICAvLyBjb2RlIHdoaWNoIGRldGFjaGVzIHRoaXMgc2hhZG93IG5vZGUuIFdlIG5lZWQgdG8g
dGFrZSBhIHJlZmVyZW5jZQogICAgICAgICAgICAgLy8gYW5kIGNoZWNrIHJlbmRlcmVyKCkgYWZ0
ZXIgc3VjaCBmdW5jdGlvbiBjYWxscy4KQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFNwaW5CdXR0
b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kCiAgICAgfSBlbHNlIGlmIChtb3VzZUV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBtb3VzZUV2ZW50LT5idXR0b24o
KSA9PSBMZWZ0QnV0dG9uKQogICAgICAgICBzdG9wUmVwZWF0aW5nVGltZXIoKTsKICAgICBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgewotICAg
ICAgICBpZiAoYm94LT5ib3JkZXJCb3hSZWN0KCkuY29udGFpbnMobG9jYWwpKSB7CisgICAgICAg
IGlmIChib3gtPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5jb250YWlucyhsb2NhbCkpIHsK
ICAgICAgICAgICAgIGlmICghbV9jYXB0dXJpbmcpIHsKICAgICAgICAgICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24g
MTE0MzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkVmlz
dWFsT3ZlcmZsb3dGcm9tVAogICAgIGlmICghc3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IGJvcmRlckJveFJlY3Qo
KTsKKyAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3Qo
KTsKICAgICB0aGVtZSgpLT5hZGp1c3RSZXBhaW50UmVjdCh0aGlzLCBpbmZsYXRlZFJlY3QpOwog
ICAgIGFkZFZpc3VhbE92ZXJmbG93KGluZmxhdGVkUmVjdCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAxMTQzMDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw4ICsxMzMsOSBA
QCBwdWJsaWM6CiAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRGcmFtZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KG1fZnJhbWVSZWN0KTsgfQogICAgIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpIHsgbV9mcmFtZVJlY3QgPSByZWN0OyB9CiAK
LSAgICBJbnRSZWN0IGJvcmRlckJveFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBv
aW50KCksIEludFNpemUobV9mcmFtZVJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSwgbV9mcmFtZVJl
Y3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkpKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJC
b3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsgfSAKKyAgICBMYXlv
dXRSZWN0IGJvcmRlckJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KExheW91dFBv
aW50KCksIHNpemUoKSk7IH0KKyAgICBJbnRSZWN0IHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3Qo
KSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIG1fZnJhbWVSZWN0LnBpeGVsU25h
cHBlZFNpemUoKSk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCk7IH0gCiAKICAgICAvLyBU
aGUgY29udGVudCBhcmVhIG9mIHRoZSBib3ggKGV4Y2x1ZGVzIHBhZGRpbmcgLSBhbmQgaW50cmlu
c2ljIHBhZGRpbmcgZm9yIHRhYmxlIGNlbGxzLCBldGMuLi4gLSBhbmQgYm9yZGVyKS4KICAgICBM
YXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdChib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSwgY29u
dGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7IH0KQEAgLTQ1NCw3ICs0NTUsNyBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0UmVjdCBsYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9wYWdhdGlvbihSZW5k
ZXJTdHlsZSopIGNvbnN0OwogCiAgICAgUmVuZGVyT3ZlcmZsb3cqIGhhc1JlbmRlck92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdy5nZXQoKTsgfSAgICAKLSAgICBib29sIGhhc1Zp
c3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyAmJiAhYm9yZGVyQm94UmVj
dCgpLmNvbnRhaW5zKHBpeGVsU25hcHBlZEludFJlY3QobV9vdmVyZmxvdy0+dmlzdWFsT3ZlcmZs
b3dSZWN0KCkpKTsgfQorICAgIGJvb2wgaGFzVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBtX292ZXJmbG93ICYmICFib3JkZXJCb3hSZWN0KCkuY29udGFpbnMobV9vdmVyZmxvdy0+dmlz
dWFsT3ZlcmZsb3dSZWN0KCkpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQcmVmZXJyZWRX
aWR0aHNSZWNhbGN1bGF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgLyogaW50cmluc2ljU2l6ZSAqLywgZG91
YmxlJiAvKiBpbnRyaW5zaWNSYXRpbyAqLywgYm9vbCYgLyogaXNQZXJjZW50YWdlSW50cmluc2lj
U2l6ZSAqLykgY29uc3QgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHJldmlzaW9uIDExNDMwNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTQsNyArMTk5NCw3IEBAIEludFJl
Y3QgUmVuZGVyTGF5ZXI6OnNjcm9sbENvcm5lclJlY3QoKSAKICAgICBib29sIGhhc1ZlcnRpY2Fs
QmFyID0gdmVydGljYWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Jlc2l6ZXIgPSByZW5kZXJl
cigpLT5zdHlsZSgpLT5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORTsKICAgICBpZiAoKGhhc0hvcml6
b250YWxCYXIgJiYgaGFzVmVydGljYWxCYXIpIHx8IChoYXNSZXNpemVyICYmIChoYXNIb3Jpem9u
dGFsQmFyIHx8IGhhc1ZlcnRpY2FsQmFyKSkpCi0gICAgICAgIHJldHVybiBjb3JuZXJSZWN0KHRo
aXMsIHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpOworICAgICAgICByZXR1cm4gY29ybmVy
UmVjdCh0aGlzLCByZW5kZXJCb3goKS0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpKTsKICAg
ICByZXR1cm4gSW50UmVjdCgpOwogfQogCkBAIC0yMDEzLDcgKzIwMTMsNyBAQCBJbnRSZWN0IFJl
bmRlckxheWVyOjpzY3JvbGxDb3JuZXJBbmRSZXNpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CiAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJBbmRSZXNpemVyID0gc2Nyb2xsQ29ybmVyUmVjdCgp
OwogICAgIGlmIChzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmlzRW1wdHkoKSkKLSAgICAgICAgc2Ny
b2xsQ29ybmVyQW5kUmVzaXplciA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBl
ZEludFJlY3QoYm94LT5ib3JkZXJCb3hSZWN0KCkpKTsKKyAgICAgICAgc2Nyb2xsQ29ybmVyQW5k
UmVzaXplciA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVy
Qm94UmVjdCgpKTsKICAgICByZXR1cm4gc2Nyb2xsQ29ybmVyQW5kUmVzaXplcjsKIH0KIApAQCAt
MjExNSw3ICsyMTE1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9s
bAogICAgIGNvbnN0IFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgaW50IHggPSBt
aW5YICsgYm94LT5ib3JkZXJMZWZ0KCk7CiAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnNo
b3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCi0gICAgICAg
IHggKz0gbV92QmFyID8gbV92QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywg
Ym94LT5ib3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CisgICAgICAgIHggKz0gbV92QmFyID8gbV92
QmFyLT53aWR0aCgpIDogcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5waXhlbFNuYXBwZWRC
b3JkZXJCb3hSZWN0KCkpLndpZHRoKCk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTIzMTgsNyAr
MjMxOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBp
ZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3gg
PSBib3gtPmJvcmRlckJveFJlY3QoKTsKKyAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IGJv
eC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpOwogICAgIGNvbnN0IEludFJlY3QmIHNjcm9s
bENvcm5lciA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBJbnRSZWN0IGFic0JvdW5kcyhib3Jk
ZXJCb3gubG9jYXRpb24oKSArIG9mZnNldEZyb21MYXllciwgYm9yZGVyQm94LnNpemUoKSk7CiAg
ICAgaWYgKG1fdkJhcikKQEAgLTI2NTcsNyArMjY1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50UmVzaXplcihHcmFwaGljc0MKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwog
ICAgIEFTU0VSVChib3gpOwogCi0gICAgSW50UmVjdCBhYnNSZWN0ID0gcmVzaXplckNvcm5lclJl
Y3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpOworICAgIEludFJlY3QgYWJzUmVjdCA9IHJl
c2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+cGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpKTsK
ICAgICBhYnNSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFhYnNSZWN0LmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3MTIsNyArMjcxMiw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxvd0NvbnRyb2wKICAgICAKICAgICBJbnRS
ZWN0IHJlc2l6ZUNvbnRyb2xSZWN0OwogICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNp
emUoKSAhPSBSRVNJWkVfTk9ORSkgewotICAgICAgICByZXNpemVDb250cm9sUmVjdCA9IHJlc2l6
ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKTsKKyAgICAgICAgcmVzaXpl
Q29udHJvbFJlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBib3gtPnBpeGVsU25hcHBlZEJv
cmRlckJveFJlY3QoKSk7CiAgICAgICAgIGlmIChyZXNpemVDb250cm9sUmVjdC5jb250YWlucyhs
b2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lv
biAxMTQzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVHcmFwaGljc0wKICAgICB9CiAgICAgCiAgICAgaWYgKG1fb3duaW5nTGF5
ZXItPmhhc1RyYW5zZm9ybSgpKSB7Ci0gICAgICAgIGNvbnN0IEludFJlY3QgYm9yZGVyQm94ID0g
dG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKTsKKyAgICAgICAgY29uc3Qg
SW50UmVjdCBib3JkZXJCb3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+cGl4ZWxTbmFwcGVk
Qm9yZGVyQm94UmVjdCgpOwogCiAgICAgICAgIC8vIEdldCBsYXlvdXQgYm91bmRzIGluIHRoZSBj
b29yZHMgb2YgY29tcEFuY2VzdG9yIHRvIG1hdGNoIHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMu
CiAgICAgICAgIEludFJlY3QgbGF5ZXJCb3VuZHMgPSBJbnRSZWN0KGRlbHRhLCBib3JkZXJCb3gu
c2l6ZSgpKTsKQEAgLTEyOTYsNyArMTI5Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpz
dGFydEFuaW1hdGlvbigKICAgICBib29sIGRpZEFuaW1hdGVGaWx0ZXIgPSBmYWxzZTsKICNlbmRp
ZgogICAgIAotICAgIGlmIChoYXNUcmFuc2Zvcm0gJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94
UmVjdCgpLnNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNl
dCkpIHsKKyAgICBpZiAoaGFzVHJhbnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPnBpeGVsU25hcHBl
ZEJvcmRlckJveFJlY3QoKS5zaXplKCksIGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCks
IHRpbWVPZmZzZXQpKSB7CiAgICAgICAgIGRpZEFuaW1hdGVUcmFuc2Zvcm0gPSB0cnVlOwogICAg
ICAgICBjb21wb3NpdG9yKCktPmRpZFN0YXJ0QWNjZWxlcmF0ZWRBbmltYXRpb24oQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm0pOwogICAgIH0KQEAgLTEzNjEsNyArMTM2MSw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24KICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsK
ICAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKDAsICZmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICB0cmFuc2Zv
cm1WZWN0b3IuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgxLCAmdG9TdHlsZS0+
dHJhbnNmb3JtKCkpKTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1h
dGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hS
ZWN0KCkuc2l6ZSgpLCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9mZnNl
dCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFu
c2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5waXhlbFNuYXBwZWRCb3JkZXJC
b3hSZWN0KCkuc2l6ZSgpLCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25O
YW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSwgdGltZU9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0
cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhl
IGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRyYW5zZm9ybSh0
b1N0eWxlKTsKICAgICAgICAgICAgICAgICBkaWRBbmltYXRlVHJhbnNmb3JtID0gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMTE0
MzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmFkZE92ZXJmbG93
RnJvbUNoaWxkcmUKICAgICAgICAgaW50IGJvdHRvbUJvcmRlck92ZXJmbG93ID0gaGVpZ2h0KCkg
KyBvdXRlckJvcmRlckJvdHRvbSgpIC0gYm9yZGVyQm90dG9tKCk7CiAgICAgICAgIGludCB0b3BC
b3JkZXJPdmVyZmxvdyA9IGJvcmRlclRvcCgpIC0gb3V0ZXJCb3JkZXJUb3AoKTsKICAgICAgICAg
SW50UmVjdCBib3JkZXJPdmVyZmxvd1JlY3QobGVmdEJvcmRlck92ZXJmbG93LCB0b3BCb3JkZXJP
dmVyZmxvdywgcmlnaHRCb3JkZXJPdmVyZmxvdyAtIGxlZnRCb3JkZXJPdmVyZmxvdywgYm90dG9t
Qm9yZGVyT3ZlcmZsb3cgLSB0b3BCb3JkZXJPdmVyZmxvdyk7Ci0gICAgICAgIGlmIChib3JkZXJP
dmVyZmxvd1JlY3QgIT0gYm9yZGVyQm94UmVjdCgpKSB7CisgICAgICAgIGlmIChib3JkZXJPdmVy
Zmxvd1JlY3QgIT0gcGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCgpKSB7CiAgICAgICAgICAgICBh
ZGRMYXlvdXRPdmVyZmxvdyhib3JkZXJPdmVyZmxvd1JlY3QpOwogICAgICAgICAgICAgYWRkVmlz
dWFsT3ZlcmZsb3coYm9yZGVyT3ZlcmZsb3dSZWN0KTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMTE0MzA2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTM0LDcgKzE1MzQsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkQ2FuCiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLT5zdHlsZSgpLT5lZmZlY3RpdmVa
b29tKCk7CiAKLSAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBbc2VhcmNoIGNhbmNlbEJ1dHRv
blJlY3RGb3JCb3VuZHM6TlNSZWN0KGlucHV0LT5yZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgp
KV07CisgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBjYW5jZWxCdXR0b25SZWN0
Rm9yQm91bmRzOk5TUmVjdChpbnB1dC0+cmVuZGVyQm94KCktPnBpeGVsU25hcHBlZEJvcmRlckJv
eFJlY3QoKSldOwogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAvLyBUYWtlIGNhcmUg
b2YgY2FzZXMgd2hlcmUgdGhlIGNhbmNlbCBidXR0b24gd2FzIG5vdCBhbGlnbmVkIHdpdGggdGhl
IHJpZ2h0IGJvcmRlciBvZiB0aGUgaW5wdXQgZWxlbWVudCAoZm9yIGUuZy4KQEAgLTE2MTksNyAr
MTYxOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXMKIAogICAg
IHVwZGF0ZUFjdGl2ZVN0YXRlKFtzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0sIG8pOwogCi0gICAg
RmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRz
Ok5TUmVjdChpbnB1dC0+cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSldOworICAgIEZsb2F0
UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1Jl
Y3QoaW5wdXQtPnJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRCb3JkZXJCb3hSZWN0KCkpXTsKICAg
ICBsb2NhbEJvdW5kcyA9IGNvbnZlcnRUb1BhaW50aW5nUmVjdChpbnB1dC0+cmVuZGVyZXIoKSwg
bywgbG9jYWxCb3VuZHMsIHIpOwogCiAgICAgW1tzZWFyY2ggc2VhcmNoQnV0dG9uQ2VsbF0gZHJh
d1dpdGhGcmFtZTpsb2NhbEJvdW5kcyBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsKQEAgLTE2
NTUsNyArMTY1NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXMK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250
ZXh0KTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7
CiAKLSAgICBGbG9hdFJlY3QgbG9jYWxCb3VuZHMgPSBbc2VhcmNoIHNlYXJjaEJ1dHRvblJlY3RG
b3JCb3VuZHM6TlNSZWN0KGlucHV0LT5yZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKV07Cisg
ICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91
bmRzOk5TUmVjdChpbnB1dC0+cmVuZGVyQm94KCktPnBpeGVsU25hcHBlZEJvcmRlckJveFJlY3Qo
KSldOwogICAgIGxvY2FsQm91bmRzID0gY29udmVydFRvUGFpbnRpbmdSZWN0KGlucHV0LT5yZW5k
ZXJlcigpLCBvLCBsb2NhbEJvdW5kcywgcik7CiAgICAgCiAgICAgSW50UmVjdCB1bnpvb21lZFJl
Y3QobG9jYWxCb3VuZHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAxMTQzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyAr
MjU2LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpsYXlvdXQoKQogdm9pZCBSZW5kZXJTVkdSb290
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
YWRqdXN0ZWRQYWludE9mZnNldCkKIHsKICAgICAvLyBBbiBlbXB0eSB2aWV3cG9ydCBkaXNhYmxl
cyByZW5kZXJpbmcuCi0gICAgaWYgKGJvcmRlckJveFJlY3QoKS5pc0VtcHR5KCkpCisgICAgaWYg
KHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIERvbid0IHBhaW50LCBpZiB0aGUgY29udGV4dCBleHBsaWNpdGVseSBkaXNhYmxl
ZCBpdC4KQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVGbG9h
dFJlY3RGb3JSCiAgICAgcmVwYWludFJlY3QgPSBtX2xvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0u
bWFwUmVjdChyZXBhaW50UmVjdCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNs
aXAgLSBub3QgYWZmZWN0ZWQgYnkgb3ZlcmZsb3cgc2V0dGluZ3MgICAgCi0gICAgcmVwYWludFJl
Y3QuaW50ZXJzZWN0KGJvcmRlckJveFJlY3QoKSk7CisgICAgcmVwYWludFJlY3QuaW50ZXJzZWN0
KHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QoKSk7CiAKICAgICBjb25zdCBTVkdSZW5kZXJTdHls
ZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwogICAgIGlmIChjb25zdCBTaGFkb3dE
YXRhKiBzaGFkb3cgPSBzdmdTdHlsZS0+c2hhZG93KCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>