<?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>46258</bug_id>
          
          <creation_ts>2010-09-22 05:40:30 -0700</creation_ts>
          <short_desc>[EFL] Add support for scaling the contents</short_desc>
          <delta_ts>2011-09-22 01:29:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alex Bredariol Grilo">abgrilo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abgrilo</cc>
    
    <cc>antognolli+webkit</cc>
    
    <cc>bdakin</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>jprvita</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>leandro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>282886</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-09-22 05:40:30 -0700</bug_when>
    <thetext>[EFL] Add support for scaling the contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282890</commentid>
    <comment_count>1</comment_count>
      <attachid>68361</attachid>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-09-22 05:51:51 -0700</bug_when>
    <thetext>Created attachment 68361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282908</commentid>
    <comment_count>2</comment_count>
      <attachid>68367</attachid>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-09-22 07:05:25 -0700</bug_when>
    <thetext>Created attachment 68367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283006</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-22 10:05:47 -0700</bug_when>
    <thetext>Hyatt, there are some ScrollView changes here that it would be nice if you could have a look at.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283027</commentid>
    <comment_count>4</comment_count>
      <attachid>68367</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-22 10:23:45 -0700</bug_when>
    <thetext>Comment on attachment 68367
Patch

Why do you guys need all these changes? Can&apos;t you scale in the painting system instead? That works pretty well for Qt and we do not require changes like the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283048</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-09-22 10:44:24 -0700</bug_when>
    <thetext>(In reply to comment #4)

Kenneth, all these changes were made because all scrollbars and innerframes are scaled too. We also apply scaling in the painting system as you said, to get the contents scaled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283051</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-22 10:52:41 -0700</bug_when>
    <thetext>You don&apos;t want those to be scaled or?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283073</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-09-22 11:14:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; You don&apos;t want those to be scaled or?

We want them to be scaled. The patch includes this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310477</commentid>
    <comment_count>8</comment_count>
      <attachid>68367</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-17 13:13:15 -0800</bug_when>
    <thetext>Comment on attachment 68367
Patch

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

&gt; WebCore/platform/ScrollView.cpp:148
&gt; -        updateScrollbars(scrollOffset());
&gt; +        updateScrollbars(m_scrollOffset);

scrollOffset should be inline anyway, I do not really like this change

&gt; WebCore/platform/ScrollView.cpp:223
&gt; -    return IntRect(IntPoint(m_scrollOffset.width(), m_scrollOffset.height()),
&gt; -                   IntSize(max(0, width() - (verticalScrollbar() &amp;&amp; !includeScrollbars ? verticalScrollbar()-&gt;width() : 0)), 
&gt; -                           max(0, height() - (horizontalScrollbar() &amp;&amp; !includeScrollbars ? horizontalScrollbar()-&gt;height() : 0))));
&gt; +
&gt; +    int w = width() - (verticalScrollbar() &amp;&amp; !includeScrollbars ? verticalScrollbar()-&gt;width() : 0);
&gt; +    int h = height() - (horizontalScrollbar() &amp;&amp; !includeScrollbars ? horizontalScrollbar()-&gt;height() : 0);
&gt; +
&gt; +    if (useScale) {
&gt; +        float scale = (this == root()) ? scaleFactor() : 1.0f;
&gt; +        return IntRect(static_cast&lt;int&gt;(ceil(m_scrollOffset.width() / scale)),
&gt; +                       static_cast&lt;int&gt;(ceil(m_scrollOffset.height() / scale)),
&gt; +                       max(0, static_cast&lt;int&gt;(ceil(w / scale))),
&gt; +                       max(0, static_cast&lt;int&gt;(ceil(h / scale))));
&gt; +    } else {
&gt; +        return IntRect(m_scrollOffset.width(), m_scrollOffset.height(),
&gt; +                       max(0, w), max(0, h));
&gt; +    }

Hyatt needs to look at this. This probably also wont work for webkit2. I think you need something like the setActualVisibleContentRect that we introduced a little while ago. I will have some patches soon that makes that actually work 100%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310491</commentid>
    <comment_count>9</comment_count>
      <attachid>68367</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-17 13:33:52 -0800</bug_when>
    <thetext>Comment on attachment 68367
Patch

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

Whoa, this one is all over the place.
Please break this up into smaller patches, preferably separating the EFL-specific changes from the WebCore changes.

&gt; WebCore/platform/ScrollView.cpp:870
&gt; -    context-&gt;clip(visibleContentRect());
&gt; +    IntRect visibleRect = visibleContentRect();
&gt; +    context-&gt;clip(visibleRect);

What&apos;s going on here?

&gt; WebCore/rendering/RenderBoxModelObject.cpp:114
&gt; -    bool contextIsScaled = !currentTransform.isIdentityOrTranslationOrFlipped();
&gt; +    bool contextIsScaled = false;

Please explain this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311415</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-11-19 06:23:37 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 68367 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68367&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/ScrollView.cpp:870
&gt; &gt; -    context-&gt;clip(visibleContentRect());
&gt; &gt; +    IntRect visibleRect = visibleContentRect();
&gt; &gt; +    context-&gt;clip(visibleRect);
&gt; 
&gt; What&apos;s going on here?

It remains of some previous multiplication that was removed later.
Sorry for that, it will be removed in the updated patch.

&gt; &gt; WebCore/rendering/RenderBoxModelObject.cpp:114
&gt; &gt; -    bool contextIsScaled = !currentTransform.isIdentityOrTranslationOrFlipped();
&gt; &gt; +    bool contextIsScaled = false;
&gt; 
&gt; Please explain this change.

Sorry for that too. This remains of an old implementation. It will
also be removed in the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317647</commentid>
    <comment_count>11</comment_count>
      <attachid>75701</attachid>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-12-06 08:47:35 -0800</bug_when>
    <thetext>Created attachment 75701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317657</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Bredariol Grilo">abgrilo</who>
    <bug_when>2010-12-06 09:11:08 -0800</bug_when>
    <thetext>This patch corrects the problems pointed by Kling and the first problem pointed by Kenneth. We are still working on the other suggestion made by Kenneth.

Hyatt, do you have any other suggestion about the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317661</commentid>
    <comment_count>13</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-06 09:20:05 -0800</bug_when>
    <thetext>Isn&apos;t this entire patch unnecessary?  Beth already added fixed scaling using transforms.  Is there any reason why that doesn&apos;t work for you?

See the page scale stuff.

Frame.h: pageScaleFactor()

etc.

I think that does what you want... perfectly applies a scale without doing any relayout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317674</commentid>
    <comment_count>14</comment_count>
      <attachid>75701</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-06 09:36:21 -0800</bug_when>
    <thetext>Comment on attachment 75701
Patch

it changes much of cross platform code, and comes without a single test. that wont get in like this I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318593</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:33:57 -0800</bug_when>
    <thetext>Attachment 75701 did not build on gtk:
Build output: http://queues.webkit.org/results/6725106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471427</commentid>
    <comment_count>16</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-09-22 01:29:43 -0700</bug_when>
    <thetext>Close bug because WebCore already have this feature as another way.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68361</attachid>
            <date>2010-09-22 05:51:51 -0700</date>
            <delta_ts>2010-09-22 07:05:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46258-20100922095148.patch</filename>
            <type>text/plain</type>
            <size>55328</size>
            <attacher name="Alex Bredariol Grilo">abgrilo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjRiZTM4ZTdlZWYzNjAwYWVmMjZmNTQ2MjgyODg0YWNjNGNkNDg5Ni4uZWYwNTU2ZGMzZmNmYzZk
Y2ExZjdmMWQ1Zjk0YTA1M2YzOWUxZTJkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOS0yMSAgQWxl
eCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdIFdlYkNvcmUgY2hhZ2Vz
IGZvciBzY2FsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjI1OAorCisgICAgICAgIEluIG9yZGVyIHRvIHNjYWxlIHRvb2xiYXJzIGFuZCBpbm5l
ciBmcmFtZXMgdG9vLCBzb21lIGNoYW5nZXMgd2VyZQorICAgICAgICBuZWNlc3Nhcnkgb24gV2Vi
Q29yZSAobWFpbmx5IFNjcm9sbFZpZXcuY3BwKS4KKworICAgICAgICBUaGUgbWFpbiBjaGFuZ2Ug
d2FzIGludHJvZHVjaW5nIGEgbmV3IGF0dHJpYnV0ZSB0byB0aGUgU2Nyb2xsVmlldyBjYWxsZWQK
KyAgICAgICAgc2NhbGVGYWN0b3IuIFRoaXMgYXR0cmlidXRlIGlzIHRha2VuIGludG8gYWNjb3Vu
dCB3aGVuIGNoYW5naW5nIHRoZSBzY3JvbGxiYXJzCisgICAgICAgIHNpemUsIG9yIHdoZW4gcmV0
dXJuaW5nIHRoZSB2aXNpYmxlRnJhbWVSZWN0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJNb2Rlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6bGF5b3V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bGF5
b3V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEZpeGVkTGF5b3V0
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRVc2VGaXhlZExheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRDb250ZW50c1NpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6c2V0U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nh
bGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVs
RXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9TY3JvbGxiYXJFZmwuY3BwOgorICAgICAg
ICAoU2Nyb2xsYmFyRWZsOjpmcmFtZVJlY3RzQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1dpZGdldEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmZyYW1lUmVjdHND
aGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisKIDIwMTAtMDgt
MjcgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmgKaW5kZXggNjc0NzM5MmU2ODk3Yzk0ZjRmNzg2YWZmOWQ5NjlhNTEyNjkyMGIy
Zi4uYjAzMGI2ZTQwZmViNWY3NDViNGI4MWM2NDJjZWEwZTM4MzdmYjVkNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC0xMjUsNyArMTI1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShFRkwpCi0gICAgICAgIFBsYXRmb3JtV2hl
ZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKik7CisgICAgICAgIFBsYXRmb3Jt
V2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgSW50UG9pbnQpOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQoX19PQkpDX18pCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAppbmRleCBkZDdlNjc4MjVmM2FlMDRkNzViNzA2YjVlNTMxNWU1NGQzMWM1Yzc0
Li4yZGE4Mjg5MjU2ODk2ZTZlNWJiNmM1MWQyNWEwMzQ1OGY0OTkwYjQ1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgU2Nyb2xsVmlldzo6U2Nyb2xsVmlldygpCiAg
ICAgLCBtX2RyYXdQYW5TY3JvbGxJY29uKGZhbHNlKQogICAgICwgbV91c2VGaXhlZExheW91dChm
YWxzZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29udGVudHMoZmFsc2UpCisgICAgLCBtX3NjYWxl
RmFjdG9yKDEuMGYpCiB7CiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC0xNDQsNyArMTQ1LDcg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJNb2RlIGhvcml6
b250YWxNb2RlLCBTY3JvbGxiYXJNb2RlIHYKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAg
ICAgICAgcGxhdGZvcm1TZXRTY3JvbGxiYXJNb2RlcygpOwogICAgIGVsc2UKLSAgICAgICAgdXBk
YXRlU2Nyb2xsYmFycyhzY3JvbGxPZmZzZXQoKSk7CisgICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMo
bV9zY3JvbGxPZmZzZXQpOwogfQogI2VuZGlmCiAKQEAgLTIwMiwyNCArMjAzLDM1IEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2V0UGFpbnRzRW50aXJlQ29udGVudHMoYm9vbCBwYWludHNFbnRpcmVDb250
ZW50cykKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9sbFZpZXc6OnZpc2li
bGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAorSW50UmVjdCBTY3Jv
bGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycywgYm9vbCB1
c2VTY2FsZSkgY29uc3QKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcmV0
dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3JvbGxiYXJzKTsKLSAgICBy
ZXR1cm4gSW50UmVjdChJbnRQb2ludChtX3Njcm9sbE9mZnNldC53aWR0aCgpLCBtX3Njcm9sbE9m
ZnNldC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgd2lkdGgo
KSAtICh2ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFpbmNsdWRlU2Nyb2xsYmFycyA/IHZlcnRpY2Fs
U2Nyb2xsYmFyKCktPndpZHRoKCkgOiAwKSksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF4KDAsIGhlaWdodCgpIC0gKGhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhaW5jbHVkZVNjcm9s
bGJhcnMgPyBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpIDogMCkpKSk7CisKKyAgICBp
bnQgdyA9IHdpZHRoKCkgLSAodmVydGljYWxTY3JvbGxiYXIoKSAmJiAhaW5jbHVkZVNjcm9sbGJh
cnMgPyB2ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0aCgpIDogMCk7CisgICAgaW50IGggPSBoZWln
aHQoKSAtIChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIWluY2x1ZGVTY3JvbGxiYXJzID8gaG9y
aXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDApOworCisgICAgaWYgKHVzZVNjYWxlKSB7
CisgICAgICAgIGZsb2F0IHNjYWxlID0gKHRoaXMgPT0gcm9vdCgpKSA/IHNjYWxlRmFjdG9yKCkg
OiAxLjBmOworICAgICAgICByZXR1cm4gSW50UmVjdChzdGF0aWNfY2FzdDxpbnQ+KGNlaWwobV9z
Y3JvbGxPZmZzZXQud2lkdGgoKSAvIHNjYWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4oY2VpbChtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSAvIHNjYWxlKSksCisg
ICAgICAgICAgICAgICAgICAgICAgIG1heCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwodyAvIHNj
YWxlKSkpLAorICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgc3RhdGljX2Nhc3Q8aW50Pihj
ZWlsKGggLyBzY2FsZSkpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEludFJlY3Qo
bV9zY3JvbGxPZmZzZXQud2lkdGgoKSwgbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgIG1heCgwLCB3KSwgbWF4KDAsIGgpKTsKKyAgICB9CiB9CiAjZW5kaWYK
IAogaW50IFNjcm9sbFZpZXc6OmxheW91dFdpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9m
aXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZVdp
ZHRoKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpOworICAgIHJldHVybiBtX2ZpeGVkTGF5
b3V0U2l6ZS5pc0VtcHR5KCkgfHwgIW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlV2lkdGgoKSAq
IHNjYWxlRmFjdG9yKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpOwogfQogCiBpbnQgU2Ny
b2xsVmlldzo6bGF5b3V0SGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9maXhlZExheW91
dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZUhlaWdodCgpIDog
bV9maXhlZExheW91dFNpemUuaGVpZ2h0KCk7CisgICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXpl
LmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVIZWlnaHQoKSAqIHNjYWxl
RmFjdG9yKCkgOiBtX2ZpeGVkTGF5b3V0U2l6ZS5oZWlnaHQoKTsKIH0KIAogSW50U2l6ZSBTY3Jv
bGxWaWV3OjpmaXhlZExheW91dFNpemUoKSBjb25zdApAQCAtMjMyLDcgKzI0NCw3IEBAIHZvaWQg
U2Nyb2xsVmlldzo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAg
ICAgaWYgKGZpeGVkTGF5b3V0U2l6ZSgpID09IG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2ZpeGVkTGF5b3V0U2l6ZSA9IG5ld1NpemU7Ci0gICAgdXBkYXRlU2Nyb2xsYmFycyhzY3Jv
bGxPZmZzZXQoKSk7CisgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiB9CiAK
IGJvb2wgU2Nyb2xsVmlldzo6dXNlRml4ZWRMYXlvdXQoKSBjb25zdApAQCAtMjQ1LDcgKzI1Nyw3
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBlbmFibGUpCiAgICAg
aWYgKHVzZUZpeGVkTGF5b3V0KCkgPT0gZW5hYmxlKQogICAgICAgICByZXR1cm47CiAgICAgbV91
c2VGaXhlZExheW91dCA9IGVuYWJsZTsKLSAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNl
dCgpKTsKKyAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAogSW50U2l6
ZSBTY3JvbGxWaWV3Ojpjb250ZW50c1NpemUoKSBjb25zdApAQCAtMjYzLDEyICsyNzUsMTMgQEAg
dm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkK
ICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgcGxhdGZvcm1TZXRDb250ZW50c1Np
emUoKTsKICAgICBlbHNlCi0gICAgICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkp
OworICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAogSW50UG9p
bnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBJbnRT
aXplIG1heGltdW1PZmZzZXQgPSBjb250ZW50c1NpemUoKSAtIHZpc2libGVDb250ZW50UmVjdCgp
LnNpemUoKTsKKyAgICBtYXhpbXVtT2Zmc2V0LnNjYWxlKHNjYWxlRmFjdG9yKCkpOwogICAgIG1h
eGltdW1PZmZzZXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogICAgIHJldHVybiBJbnRQb2ludCht
YXhpbXVtT2Zmc2V0LndpZHRoKCksIG1heGltdW1PZmZzZXQuaGVpZ2h0KCkpOwogfQpAQCAtMzMy
LDEyICszNDUsMjQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsUG9pbnQpCiAgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBz
Y3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgbmV3U2Ny
b2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogCi0gICAgaWYgKG5ld1Njcm9sbFBv
c2l0aW9uID09IHNjcm9sbFBvc2l0aW9uKCkpCisgICAgSW50UG9pbnQgc2Nyb2xsUG9zOworICAg
IHNjcm9sbFBvcy5zZXRYKG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkpOworICAgIHNjcm9sbFBvcy5z
ZXRZKG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKTsKKyAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24g
PT0gc2Nyb2xsUG9zKQogICAgICAgICByZXR1cm47CiAKICAgICB1cGRhdGVTY3JvbGxiYXJzKElu
dFNpemUobmV3U2Nyb2xsUG9zaXRpb24ueCgpLCBuZXdTY3JvbGxQb3NpdGlvbi55KCkpKTsKIH0K
IAordm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBzKQoreworICAgIElu
dFBvaW50IHNjcm9sbFBvczsKKyAgICBzY3JvbGxQb3Muc2V0WChtX3Njcm9sbE9mZnNldC53aWR0
aCgpKTsKKyAgICBzY3JvbGxQb3Muc2V0WShtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSk7CisKKyAg
ICBzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3MgKyBzKTsKK30KKwogYm9vbCBTY3JvbGxWaWV3
OjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCkBAIC00NDMsMTMgKzQ2OCwy
MCBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVz
aXJlZE9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pblVwZGF0ZVNjcm9sbGJhcnMg
PSB0cnVlOwotICAgIEludFNpemUgbWF4U2Nyb2xsUG9zaXRpb24oY29udGVudHNXaWR0aCgpIC0g
dmlzaWJsZVdpZHRoKCksIGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkpOworICAg
IEludFNpemUgbWF4U2Nyb2xsUG9zaXRpb247CisgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBJbnRT
aXplKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0g
dmlzaWJsZUhlaWdodCgpKTsKKyAgICBtYXhTY3JvbGxQb3NpdGlvbi5zY2FsZShyb290KCktPnNj
YWxlRmFjdG9yKCkpOwogICAgIEludFNpemUgc2Nyb2xsID0gZGVzaXJlZE9mZnNldC5zaHJ1bmtU
byhtYXhTY3JvbGxQb3NpdGlvbik7CiAgICAgc2Nyb2xsLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsK
ICAKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRX
aWR0aCA9IHZpc2libGVXaWR0aCgpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOworICAgICAgICBpbnQgY29u
dGVudHNXID0gY29udGVudHNXaWR0aCgpOworICAgICAgICBpZiAodGhpcyA9PSByb290KCkpIHsK
KyAgICAgICAgICAgIGNvbnRlbnRzVyAqPSBzY2FsZUZhY3RvcigpOworICAgICAgICAgICAgY2xp
ZW50V2lkdGggKj0gc2NhbGVGYWN0b3IoKTsKKyAgICAgICAgfQorICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXID4gY2xpZW50V2lkdGgpOwogICAgICAg
ICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1p
bkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4
T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hv
cml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVj
dCA9IEludFJlY3QoMCwKQEAgLTQ2Myw3ICs0OTUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0
ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAgaWYgKG1f
c2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXAp
OwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lk
dGgsIGNvbnRlbnRzV2lkdGgoKSk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXKTsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Ny
b2xsQW5pbWF0b3IpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFs
c2UpOyAKQEAgLTQ3MSw3ICs1MDMsMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxi
YXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAKICAgICBpZiAobV92ZXJ0aWNhbFNj
cm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gdmlzaWJsZUhlaWdodCgpOwot
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkg
PiBjbGllbnRIZWlnaHQpOworICAgICAgICBpbnQgY29udGVudHNIID0gY29udGVudHNIZWlnaHQo
KTsKKyAgICAgICAgaWYgKHRoaXMgPT0gcm9vdCgpKSB7CisgICAgICAgICAgICBjb250ZW50c0gg
Kj0gc2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIGNsaWVudEhlaWdodCAqPSBzY2FsZUZhY3Rv
cigpOworICAgICAgICB9CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJsZWQo
Y29udGVudHNIID4gY2xpZW50SGVpZ2h0KTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KG1h
eDxpbnQ+KGNsaWVudEhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFn
aW5nKCksIGNsaWVudEhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygp
KSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFt
ZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgdkJhclJlY3QgPSBJbnRSZWN0KHdpZHRoKCkgLSBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLCAKQEAgLTQ4NSw3ICs1MjIsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkK
ICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgp
LCBwYWdlU3RlcCk7Ci0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24o
Y2xpZW50SGVpZ2h0LCBjb250ZW50c0hlaWdodCgpKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSCk7CiAgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC5oZWlnaHQoKSwgU2Nyb2xsYmFyOjpO
b3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3Nl
ZCkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0
aW9uKGZhbHNlKTsKQEAgLTUyMCw4ICs1NTcsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENv
bnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAgIC8vIHdpdGggdGhlIGNsaXAg
cmVjdCBldmVyeSB0aW1lIHRvIGtlZXAgaXQgc21vb3RoLgogICAgIEludFJlY3QgY2xpcFJlY3Qg
PSB3aW5kb3dDbGlwUmVjdCgpOwogICAgIEludFJlY3Qgc2Nyb2xsVmlld1JlY3QgPSBjb252ZXJ0
VG9Db250YWluaW5nV2luZG93KEludFJlY3QoMCwgMCwgdmlzaWJsZVdpZHRoKCksIHZpc2libGVI
ZWlnaHQoKSkpOwotICAgIEludFJlY3QgdXBkYXRlUmVjdCA9IGNsaXBSZWN0OwotICAgIHVwZGF0
ZVJlY3QuaW50ZXJzZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyAgICBJbnRSZWN0IHVwZGF0ZVJlY3Qg
PSBzY3JvbGxWaWV3UmVjdDsKKyAgICBpZiAoIXJvb3QoKS0+cGFpbnRzRW50aXJlQ29udGVudHMo
KSkKKyAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNlY3QoY2xpcFJlY3QpOwogCiAgICAgLy8gSW52
YWxpZGF0ZSB0aGUgd2luZG93IChub3QgdGhlIGJhY2tpbmcgc3RvcmUpLgogICAgIGhvc3RXaW5k
b3coKS0+aW52YWxpZGF0ZVdpbmRvdyh1cGRhdGVSZWN0LCBmYWxzZSAvKmltbWVkaWF0ZSovKTsK
QEAgLTY4MSw4ICs3MTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3Jt
V2hlZWxFdmVudCYgZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEludFBvaW50IHNj
cm9sbFBvczsKKyAgICBzY3JvbGxQb3Muc2V0WChtX3Njcm9sbE9mZnNldC53aWR0aCgpKTsKKyAg
ICBzY3JvbGxQb3Muc2V0WShtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSk7CisKICAgICAvLyBEZXRl
cm1pbmUgaG93IG11Y2ggd2Ugd2FudCB0byBzY3JvbGwuICBJZiB3ZSBjYW4gbW92ZSBhdCBhbGws
IHdlIHdpbGwgYWNjZXB0IHRoZSBldmVudC4KLSAgICBJbnRTaXplIG1heFNjcm9sbERlbHRhID0g
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbigpOworICAgIEludFNpemUg
bWF4U2Nyb2xsRGVsdGEgPSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIHNjcm9sbFBvczsKICAg
ICBpZiAoKGUuZGVsdGFYKCkgPCAwICYmIG1heFNjcm9sbERlbHRhLndpZHRoKCkgPiAwKSB8fAog
ICAgICAgICAoZS5kZWx0YVgoKSA+IDAgJiYgc2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSA+IDApIHx8
CiAgICAgICAgIChlLmRlbHRhWSgpIDwgMCAmJiBtYXhTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDAp
IHx8CkBAIC03MjksNiArNzcxLDkgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYgbmV3UmVjdCkKIAogdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdl
ZCgpCiB7CisgICAgV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpOworICAgIHVwZGF0ZVNjcm9s
bGJhcnMobV9zY3JvbGxPZmZzZXQpOworCiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtODIxLDcgKzg2Niw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKICAgICBkb2N1bWVudERpcnR5
UmVjdC5tb3ZlKHNjcm9sbFgoKSwgc2Nyb2xsWSgpKTsKIAotICAgIGNvbnRleHQtPmNsaXAodmlz
aWJsZUNvbnRlbnRSZWN0KCkpOworICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB2aXNpYmxlQ29u
dGVudFJlY3QoKTsKKyAgICBjb250ZXh0LT5jbGlwKHZpc2libGVSZWN0KTsKIAogICAgIHBhaW50
Q29udGVudHMoY29udGV4dCwgZG9jdW1lbnREaXJ0eVJlY3QpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CmluZGV4IGJiMmM4MDMyNDE2ZWE3NWUyNWRiZWQxYzU3YjA1NWRjYjM4YzVlZWQuLjUwZWI4MzRl
ZmQ2ODBhZDM3MmI1NWFmNTk3ODIxNmIwOTE5ODkwM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBA
IC0xMjYsNyArMTI2LDkgQEAgcHVibGljOgogICAgIC8vIFRoZSB2aXNpYmxlIGNvbnRlbnQgcmVj
dCBoYXMgYSBsb2NhdGlvbiB0aGF0IGlzIHRoZSBzY3JvbGxlZCBvZmZzZXQgb2YgdGhlIGRvY3Vt
ZW50LiBUaGUgd2lkdGggYW5kIGhlaWdodCBhcmUgdGhlIHZpZXdwb3J0IHdpZHRoCiAgICAgLy8g
YW5kIGhlaWdodC4gQnkgZGVmYXVsdCB0aGUgc2Nyb2xsYmFycyB0aGVtc2VsdmVzIGFyZSBleGNs
dWRlZCBmcm9tIHRoaXMgcmVjdGFuZ2xlLCBidXQgYW4gb3B0aW9uYWwgYm9vbGVhbiBhcmd1bWVu
dCBhbGxvd3MgdGhlbSB0byBiZQogICAgIC8vIGluY2x1ZGVkLgotICAgIEludFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3Q7CisgICAg
Ly8gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IGlmIHRoZSBjdXJyZW50IHNjYWxlIGxl
dmVsIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZQorICAgIC8vIHZhbHVlcyAoYnkgZGVmYXVs
dCwgaXQgaXMpLgorICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNj
cm9sbGJhcnMgPSBmYWxzZSwgYm9vbCB1c2VTY2FsZSA9IHRydWUpIGNvbnN0OwogICAgIGludCB2
aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgp
OyB9CiAgICAgaW50IHZpc2libGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVu
dFJlY3QoKS5oZWlnaHQoKTsgfQogCkBAIC0xNTUsOSArMTU3LDggQEAgcHVibGljOgogICAgIAog
ICAgIC8vIEZ1bmN0aW9ucyBmb3Igc2Nyb2xsaW5nIHRoZSB2aWV3LgogICAgIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKLSAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IElu
dFNpemUmIHMpIHsgcmV0dXJuIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBz
KTsgfQorICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgcyk7CiAKLSAgICAvLyBUaGlz
IGZ1bmN0aW9uIHNjcm9sbHMgYnkgbGluZXMsIHBhZ2VzIG9yIHBpeGVscy4KICAgICBib29sIHNj
cm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KTsKICAgICAgICAgCiAgICAg
Ly8gU2Nyb2xsIHRoZSBhY3R1YWwgY29udGVudHMgb2YgdGhlIHZpZXcgKGVpdGhlciBibGl0dGlu
ZyBvciBpbnZhbGlkYXRpbmcgYXMgbmVlZGVkKS4KQEAgLTE4Miw2ICsxODMsOSBAQCBwdWJsaWM6
CiAgICAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBhbnN3ZXIgd2hldGhl
ciBvciBub3QgdGhlIHNjcm9sbCB2aWV3IGlzIGN1cnJlbnRseSB2aXNpYmxlLiBBbmltYXRpb25z
IGFuZCBwYWludGluZyB1cGRhdGVzIGNhbiBiZSBzdXNwZW5kZWQgaWYKICAgICAvLyB3ZSBrbm93
IHRoYXQgd2UgYXJlIGVpdGhlciBub3QgaW4gYSB3aW5kb3cgcmlnaHQgbm93IG9yIGlmIHRoYXQg
d2luZG93IGlzIG5vdCB2aXNpYmxlLgogICAgIGJvb2wgaXNPZmZzY3JlZW4oKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0U2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpIHsgbV9zY2FsZUZhY3Rv
ciA9IHNjYWxlRmFjdG9yOyB9CisgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlRmFjdG9yOyB9CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2Vk
IHRvIGVuYWJsZSBzY3JvbGxiYXJzIHRvIGF2b2lkIHdpbmRvdyByZXNpemVyIGNvbnRyb2xzIHRo
YXQgb3ZlcmxhcCB0aGUgc2Nyb2xsIHZpZXcuIFRoaXMgaGFwcGVucyBvbiBNYWMKICAgICAvLyBm
b3IgZXhhbXBsZS4KQEAgLTI5OCw2ICszMDIsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Bh
aW50c0VudGlyZUNvbnRlbnRzOwogCisgICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKKwogICAgIHZv
aWQgaW5pdCgpOwogICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcAppbmRleCA3MDRkYjM4YTJiODc3ZTlhOGE4NGEx
OTg4ODcyOTU1MTFmMDQyYjgwLi40ZTZjY2UxNzRmY2UyNjBjMDY0YThjMmIxMTRlMjE1MDc3NThj
YjFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRF
ZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5j
cHAKQEAgLTQyLDggKzQyLDggQEAgZW51bSB7CiAgICAgSG9yaXpvbnRhbFNjcm9sbERpcmVjdGlv
biA9IDEKIH07CiAKLVBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2KQotICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChl
di0+Y2FudmFzLngsIGV2LT5jYW52YXMueSkpCitQbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3Jt
V2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiwgSW50UG9pbnQgcG9z
KQorICAgIDogbV9wb3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFzLnggLSBwb3MueCgpLCBldi0+
Y2FudmFzLnkgLSBwb3MueSgpKSkKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oSW50UG9pbnQoZXYt
PmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQogICAgICwgbV9ncmFudWxhcml0eShTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCkKICAgICAsIG1faXNBY2NlcHRlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9TY3JvbGxiYXJFZmwuY3BwCmluZGV4IDZiMDBhMzc4NGU4OTM4ZDhjYzYyMDFlMDUzMzQwMzU2
ZTQxZGNiZTkuLmQ2ZGRkZTk3MDFlNjgyODIzNTc1MzNhYWVjMWYwNWM2NWFiYzJmYjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcApAQCAtMjA1LDkgKzIwNSwxNSBAQCB2b2lk
IFNjcm9sbGJhckVmbDo6ZnJhbWVSZWN0c0NoYW5nZWQoKQogICAgIGVsc2UKICAgICAgICAgcmVj
dC5zZXRMb2NhdGlvbihwYXJlbnQoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkp
KTsKIAorICAgIGZsb2F0IHNjYWxlOworICAgIGlmIChyb290KCkgPT0gcGFyZW50KCkpCisgICAg
ICAgIHNjYWxlID0gMS4wZjsKKyAgICBlbHNlCisgICAgICAgIHNjYWxlID0gcm9vdCgpLT5zY2Fs
ZUZhY3RvcigpOworCiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHJvb3QoKS0+ZXZhc09i
amVjdCgpLCAmeCwgJnksIDAsIDApOwotICAgIGV2YXNfb2JqZWN0X21vdmUobywgeCArIHJlY3Qu
eCgpLCB5ICsgcmVjdC55KCkpOwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShvLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X21vdmUobywgeCArIHJlY3QueCgp
ICogc2NhbGUsIHkgKyByZWN0LnkoKSAqIHNjYWxlKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUo
bywgcmVjdC53aWR0aCgpICogc2NhbGUsIHJlY3QuaGVpZ2h0KCkgKiBzY2FsZSk7CiB9CiAKIHZv
aWQgU2Nyb2xsYmFyRWZsOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcAppbmRleCBkODJlOTllNjFl
MzUzNGMzNDI1YmRkOTgzYzQ0OTU2ODdhYzQ1NjRjLi40YzA4ZGQ1Y2MwZThjODNjNzVmOTJiZmZh
YmJiYWMzMTMzOTkyNWVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRF
ZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAKQEAgLTE5NSw5
ICsxOTUsMTAgQEAgdm9pZCBXaWRnZXQ6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKICAgICBlbHNlCiAg
ICAgICAgIHJlY3Quc2V0TG9jYXRpb24ocGFyZW50KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5s
b2NhdGlvbigpKSk7CiAKKyAgICBmbG9hdCBzY2FsZSA9IHJvb3QoKS0+c2NhbGVGYWN0b3IoKTsK
ICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQocm9vdCgpLT5ldmFzT2JqZWN0KCksICZ4LCAm
eSwgMCwgMCk7Ci0gICAgZXZhc19vYmplY3RfbW92ZShvLCB4ICsgcmVjdC54KCksIHkgKyByZWN0
LnkoKSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG8sIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CisgICAgZXZhc19vYmplY3RfbW92ZShvLCB4ICsgcmVjdC54KCkgKiBzY2FsZSwgeSAr
IHJlY3QueSgpICogc2NhbGUpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShvLCByZWN0LndpZHRo
KCkgKiBzY2FsZSwgcmVjdC5oZWlnaHQoKSAqIHNjYWxlKTsKIH0KIAogdm9pZCBXaWRnZXQ6OnNl
dEZvY3VzKGJvb2wgZm9jdXNlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCAwZmJjOWYyNjlkNmM5ZWJkOTEyZGFjY2ZjZTY0NjlmNTI3NzZiZWU1Li4w
NzNjYmU5YmQzNmI1ZWVjYTQzODNmMDRjYWJkZjFhNjBjNGZiZDJjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFIKICAgICBMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpID0gbV9s
YXN0UGFpbnRTaXplTWFwLmZpbmQob2JqZWN0KTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwotICAgIGJvb2wgY29udGV4
dElzU2NhbGVkID0gIWN1cnJlbnRUcmFuc2Zvcm0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZs
aXBwZWQoKTsKKyAgICBib29sIGNvbnRleHRJc1NjYWxlZCA9IGZhbHNlOwogICAgIGlmICghY29u
dGV4dElzU2NhbGVkICYmIGltYWdlU2l6ZSA9PSBzaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlz
IG5vIHNjYWxlIGluIGVmZmVjdC4gSWYgd2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwg
d2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMgb2JqZWN0IGZyb20gdGhlIGxpc3QuCiAgICAgICAgIGlm
IChpICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCAxNDc3YTIzZDU3ZjM1NGY0NjFjNTJjOGFkN2Y0YjI1YmRlNTZiNTZiLi5jMDk4YTU0
Y2U2MzlkNjIwNDY0OTcxOGU3YTE5NjY0ZDg3ZTRhMWMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0xNDI0LDcgKzE0MjQsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVj
dFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9yLAogICAg
IH0gZWxzZSBpZiAoIXBhcmVudExheWVyICYmIHJlbmRlcmVyKCktPmlzQm94KCkgJiYgcmVuZGVy
Qm94KCktPmNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoc2Nyb2xsVG9BbmNob3IpKSB7CiAg
ICAgICAgIGlmIChmcmFtZVZpZXcpIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5kb2N1
bWVudCgpICYmIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpICYmIHJlbmRl
cmVyKCktPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpKSB7CisgICAgICAg
ICAgICAgICAgZmxvYXQgc2NhbGUgPSBmcmFtZVZpZXctPnJvb3QoKS0+c2NhbGVGYWN0b3IoKTsK
ICAgICAgICAgICAgICAgICBJbnRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxlQ29u
dGVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICB2aWV3UmVjdC5zZXRXaWR0aCh2aWV3UmVjdC53
aWR0aCgpICogc2NhbGUpOworICAgICAgICAgICAgICAgIHZpZXdSZWN0LnNldEhlaWdodCh2aWV3
UmVjdC5oZWlnaHQoKSAqIHNjYWxlKTsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHIgPSBnZXRS
ZWN0VG9FeHBvc2Uodmlld1JlY3QsIHJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICB4T2Zmc2V0ID0gci54KCk7CkBAIC0xNDMzLDEzICsxNDM2
LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgSW50UmVj
dCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAgICAgICAgICAgICAgICB4T2Zmc2V0ID0g
bWF4KDAsIG1pbihmcmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSwgeE9mZnNldCkpOwogICAgICAg
ICAgICAgICAgIHlPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQo
KSwgeU9mZnNldCkpOwogCi0gICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRTY3JvbGxQb3Np
dGlvbihJbnRQb2ludCh4T2Zmc2V0LCB5T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgZnJhbWVW
aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh4T2Zmc2V0ICogc2NhbGUsIHlPZmZzZXQg
KiBzY2FsZSkpOwogICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0gcmVuZGVyZXIoKS0+ZG9j
dW1lbnQoKS0+b3duZXJFbGVtZW50KCktPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CiAg
ICAgICAgICAgICAgICAgbmV3UmVjdC5zZXRYKHJlY3QueCgpIC0gZnJhbWVWaWV3LT5zY3JvbGxY
KCkgKyBmcmFtZVZpZXctPngoKSk7CiAgICAgICAgICAgICAgICAgbmV3UmVjdC5zZXRZKHJlY3Qu
eSgpIC0gZnJhbWVWaWV3LT5zY3JvbGxZKCkgKyBmcmFtZVZpZXctPnkoKSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEludFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXct
PnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxlID0gZnJh
bWVWaWV3LT5yb290KCktPnNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICAgICAgSW50UmVjdCB2
aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpOwogICAgICAgICAg
ICAgICAgIEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwgYWxpZ25Y
LCBhbGlnblkpOworICAgICAgICAgICAgICAgIHIuc2NhbGUoc2NhbGUpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oci5sb2Nh
dGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9XZWJLaXQvZWZs
L0NoYW5nZUxvZwppbmRleCAxYzM5YjYyN2EyMGUwNjY0NjUzNDYzMWU5NzY1NDcxZGE5NDJlODc0
Li5mOWE1NDk1ZWQ2NjA5MWViMDU4M2M1N2E2ZmE2MWE2NDFiZjg4MGNlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUxIEBACisyMDEwLTA5LTIxICBBbGV4IEJyZWRhcmlvbCBHcmlsbyAgPGFiZ3JpbG9AcHJvZnVz
aW9uLm1vYmk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0VGTF0gQWRkIHN1cHBvcnQgZm9yIHNjYWxpbmcgdGhlIGNvbnRlbnRzIGluc3RlYWQgb2Yg
em9vbWluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ2MjU4CisKKyAgICAgICAgQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCB6b29taW5nLCBub3Qg
c2NhbGluZy4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzCisgICAgICAgIHNjYWxpbmcgb24gRUZMIHBv
cnQsIHVzaW5nIHRoZSBDYWlybyBzY2FsaW5nIGFsZ29yaXRobS4KKworICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fZ2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV96b29tX3NldCk6CisgICAgICAgIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5n
X2dldCk6CisgICAgICAgIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX3NldCk6CisgICAg
ICAgIChld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRf
bW91c2Vfd2hlZWwpOgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bik6CisgICAg
ICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV91cCk6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF9t
b3VzZV9tb3ZlKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3
a19wcml2YXRlLmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tf
dmlld19zbWFydF9hZGQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2NhbGN1bGF0ZSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQpOgorICAgICAgICAoX2V3a192aWV3X3Nt
YXJ0X3pvb21fY2Fpcm9fc2NhbGluZ19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmFzZV9zbWFy
dF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfY29udGV4dF9t
ZW51X2ZvcndhcmRfZXZlbnQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9jYWlyb19zY2FsaW5n
X2dldCk6CisgICAgICAgIChld2tfdmlld196b29tX2NhaXJvX3NjYWxpbmdfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3Njcm9sbCk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6CisgICAgICAg
ICogZXdrL2V3a192aWV3X3NpbmdsZS5jOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9jb250
ZW50c19zaXplX2NoYW5nZWRfY2IpOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9h
ZGQpOgorICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUpOgorICAgICAgICAo
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQpOgorICAgICAgICAoX2V3a192aWV3
X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUpOgorICAgICAgICAoX2V3a192aWV3X3Npbmds
ZV9zbWFydF9yZXBhaW50c19wcm9jZXNzKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21h
cnRfem9vbV93ZWFrX3NldCk6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmM6CisgICAg
ICAgIChfZXdrX3ZpZXdfdGlsZWRfc2Nyb2xsX3JlcGFpbnRfYWRkKToKKyAgICAgICAgKF9ld2tf
dmlld190aWxlZF9zbWFydF9zY3JvbGxzX3Byb2Nlc3MpOgorICAgICAgICAoX2V3a192aWV3X3Rp
bGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgorCiAyMDEwLTA5LTE0ICBKb8OjbyBQYXVsbyBS
ZWNoaSBWaXRhICA8anBydml0YUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAgYi9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGEyOTM3Yjc2MjUyODZjNjdl
M2I4YzBjZTRhMDBlZWRkYjI0N2Q0MDguLjZiMjQzZmE0M2JjY2UzMzY5OGMwMDMzODc3MjMyMTZi
ZmFhYjA1ZGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEgewogICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAgICAgfSBjb250
ZW50c19zaXplOwogICAgIEVpbmFfQm9vbCB0ZXh0Wm9vbToxOworICAgIEVpbmFfQm9vbCBjYWly
b19zY2FsaW5nOjE7CiAgICAgRWluYV9Cb29sIGVkaXRhYmxlOjE7CiB9OwogCkBAIC0xMDIwLDEz
ICsxMDIxLDE5IEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCog
bykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgLTEuMCk7CisgICAgZmxv
YXQgcmV0OwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5mcmFtZS0+dmlldygp
OwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHNkLT50ZXh0
Wm9vbSkKLSAgICAgICAgcmV0dXJuIHZpZXctPnRleHRab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJu
IHZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgaWYgKHNkLT5jYWlyb19zY2FsaW5nKQorICAg
ICAgICByZXQgPSB2aWV3LT5zY2FsZUZhY3RvcigpOworICAgIGVsc2UgaWYgKHNkLT50ZXh0Wm9v
bSkKKyAgICAgICAgcmV0ID0gdmlldy0+dGV4dFpvb21GYWN0b3IoKTsKKyAgICBlbHNlCisgICAg
ICAgIHJldCA9IHZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CisKKyAgICByZXR1cm4gcmV0OwogfQog
CiAvKioKQEAgLTEwMzgsNiArMTA0NSw3IEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogbykKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3Ig
QGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfc2V0KCkK
ICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQg
em9vbSkKIHsKQEAgLTEwNDYsMTAgKzEwNTQsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29t
X3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBzZC0+ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOwotICAgIGlmIChzZC0+dGV4dFpvb20pCisKKyAgICBpZiAoc2QtPmNhaXJv
X3NjYWxpbmcpCisgICAgICAgIHZpZXctPnNldFNjYWxlRmFjdG9yKHpvb20pOworICAgIGVsc2Ug
aWYgKHNkLT50ZXh0Wm9vbSkKICAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbSk7
CiAgICAgZWxzZQogICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKwogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKQEAgLTEwNzAsNyArMTA4Miw3IEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICogU2V0
IGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgYW5kIG5vdCBvdGhlciBlbGVtZW50
cy4KICAqCiAgKiBAcGFyYW0gbyBmcmFtZSB0byBjaGFuZ2Ugc2V0dGluZy4KLSAqIEBwYXJhbSBz
ZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIHNob3VsZCBqdXN0IGJlIGFwcGxpZWQgdG8gdGV4
dC4KKyAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIGFwcGxpZXMg
dG8gdGV4dCBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgogICoKICAqIEByZXR1cm4gQGMgRUlOQV9U
UlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCkBAIC0xMDk1LDYg
KzExMDcsNDAgQEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBzZXR0aW5nKQogfQogCiAvKioKKyAqIFF1ZXJ5IGlmIHpvb20g
dXNlcyBjYWlybyBzY2FsaW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVy
eSBzZXR0aW5nLgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNob3VsZCB1c2UgY2Fp
cm8gc2NhbGluZywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tf
ZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK3sKKyAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0
dXJuIHNkLT5jYWlyb19zY2FsaW5nOworfQorCisvKioKKyAqIFNldCBpZiB6b29tIHNob3VsZCB1
c2UgY2Fpcm8gc2NhbGluZyBvciBub3QuCisgKgorICogQHBhcmFtIG8gZnJhbWUgdG8gY2hhbmdl
IHNldHRpbmcuCisgKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVzZSBj
YWlybyBzY2FsaW5nLAorICAgICAgICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Uu
CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCit7CisgICAgRVdLX0ZSQU1FX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIHNldHRpbmcgPSAhIXNl
dHRpbmc7CisgICAgaWYgKHNkLT5jYWlyb19zY2FsaW5nID09IHNldHRpbmcpCisgICAgICAgIHJl
dHVybiBFSU5BX1RSVUU7CisKKyAgICBzZC0+Y2Fpcm9fc2NhbGluZyA9IHNldHRpbmc7CisgICAg
cmV0dXJuIEVJTkFfVFJVRTsKK30KKworLyoqCiAgKiBGcmVlIGhpdCB0ZXN0IGNyZWF0ZWQgd2l0
aCBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCiAgKgogICogQHBhcmFtIGhpdF90ZXN0IGluc3Rh
bmNlLiBNdXN0IEBiIG5vdCBiZSBAYyBOVUxMLgpAQCAtMTI3MSw3ICsxMzE3LDcgQEAgZXdrX2Zy
YW1lX3Njcm9sbF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHgsIGludCogeSkK
ICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZS0+dmlldygpLCBFSU5B
X0ZBTFNFKTsKLSAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3MgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+
c2Nyb2xsUG9zaXRpb24oKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3MgPSBzZC0+ZnJhbWUt
PnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlLCBmYWxzZSkubG9jYXRpb24oKTsKICAg
ICBpZiAoeCkKICAgICAgICAgKnggPSBwb3MueCgpOwogICAgIGlmICh5KQpAQCAtMTQwMSw3ICsx
NDQ3LDE4IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVj
dCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlCiAgICAgICAgIG8sIHZpZXcsIGV2LT5k
aXJlY3Rpb24sIGV2LT56LCBldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOwogCi0gICAgV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50IGV2ZW50KGV2KTsKKyAgICBFdmFzX0Nvb3JkIHgsIHk7Cisg
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3LCAmeCwgJnksIDAsIDApOworCisg
ICAgZmxvYXQgem9vbSA9IDEuMDsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGlu
Z19nZXQobykpCisgICAgICAgIHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQobyk7CisKKyAgICBF
dmFzX0V2ZW50X01vdXNlX1doZWVsIGV2MSA9ICpldjsKKyAgICBldjEuY2FudmFzLnggPSBldjEu
Y2FudmFzLnggLyB6b29tOworICAgIGV2MS5jYW52YXMueSA9IGV2MS5jYW52YXMueSAvIHpvb207
CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6
SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCkBAIC0xNDI3LDcgKzE0
ODQsMTUgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3Qq
IG8sIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93bioKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAg
ICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3LCAmeCwgJnksIDAsIDApOwogCi0g
ICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGV2LCBXZWJDb3JlOjpJbnRQb2lu
dCh4LCB5KSk7CisgICAgZmxvYXQgem9vbSA9IDEuMDsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21f
Y2Fpcm9fc2NhbGluZ19nZXQobykpCisgICAgICAgIHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQo
byk7CisKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gZXYxID0gKmV2OworICAgIGV2MS5jYW52
YXMueCA9IGV2MS5jYW52YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYxLmNhbnZh
cy55IC8gem9vbTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwg
V2ViQ29yZTo6SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CisKICAgICByZXR1cm4gc2Qt
PmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKIH0K
IApAQCAtMTQ1Myw3ICsxNTE4LDE1IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91
cChFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCiAgICAgRXZh
c19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzZC0+dmlldywgJngs
ICZ5LCAwLCAwKTsKIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChldiwg
V2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpOworICAgIGZsb2F0IHpvb20gPSAxLjA7CisgICAgaWYg
KGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KG8pKQorICAgICAgICB6b29tID0gZXdr
X2ZyYW1lX3pvb21fZ2V0KG8pOworCisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCBldjEgPSAqZXY7
CisgICAgZXYxLmNhbnZhcy54ID0gZXYxLmNhbnZhcy54IC8gem9vbTsKKyAgICBldjEuY2FudmFz
LnkgPSBldjEuY2FudmFzLnkgLyB6b29tOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVu
dCBldmVudCgmZXYxLCBXZWJDb3JlOjpJbnRQb2ludCh4IC8gem9vbSwgeSAvIHpvb20pKTsKKwog
ICAgIHJldHVybiBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChldmVudCk7CiB9CiAKQEAgLTE0ODAsNyArMTU1MywxNSBAQCBFaW5hX0Jvb2wgZXdrX2Zy
YW1lX2ZlZWRfbW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Nb3ZlKgogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9n
ZXQoc2QtPnZpZXcsICZ4LCAmeSwgMCwgMCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsKKyAgICBmbG9hdCB6b29t
ID0gMS4wOworICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChvKSkKKyAg
ICAgICAgem9vbSA9IGV3a19mcmFtZV96b29tX2dldChvKTsKKworICAgIEV2YXNfRXZlbnRfTW91
c2VfTW92ZSBldjEgPSAqZXY7CisgICAgZXYxLmN1ci5jYW52YXMueCA9IGV2MS5jdXIuY2FudmFz
LnggLyB6b29tOworICAgIGV2MS5jdXIuY2FudmFzLnkgPSBldjEuY3VyLmNhbnZhcy55IC8gem9v
bTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6
SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CisKICAgICByZXR1cm4gc2QtPmZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZChldmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5kZXgg
OTM5NDQ0NmFmMjg3ZjVhNTc0MzJkMzRiMzcyZTVhYzU2Yzc1N2NkZC4uNzU5ODhhNjE0MmEzNjc5
MzI2OWQwMGRjMDg1ZTMwMTVmMTk2ZTJlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmgKKysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTE3Niw2ICsxNzYs
OCBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19P
YmplY3QgKm8sIGludCBzdGVwcyk7CiAKIEVBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV96b29t
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVf
em9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pOworRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwor
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCB2YWx1ZSk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVf
em9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBzZXR0aW5nKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBi
L1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggZWFhZDEzYzM3ZmJmZDRjZWJlMDNh
OTEzOGM5NmE1NjY4Y2M3OWE5Ny4uODA0MDBkOGQ5YTNkODFmMTFjZTFjMDJjNDU5ZTI1YjE4MWI0
YTFmOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9XZWJL
aXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCkBAIC0xMDUsNiArMTA1LDkgQEAgdm9pZCBld2tfdmll
d19wb3B1cF9uZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50LCBpbnQgc2UKIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBm
bG9hdCB3LCBmbG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUsIGZsb2F0
IG1pbl9zY2FsZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CiAKIHZvaWQgZXdrX3ZpZXdfZG93bmxv
YWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCk7Cit2b2lk
IGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQoRXZhc19PYmplY3Qg
Km8pOwordm9pZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2
YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5n
KEV2YXNfT2JqZWN0ICpvKTsKIAogRXdrX0hpc3RvcnkgKmV3a19oaXN0b3J5X25ldyhXZWJDb3Jl
OjpCYWNrRm9yd2FyZExpc3QgKmhpc3RvcnkpOwogdm9pZCBld2tfaGlzdG9yeV9mcmVlKEV3a19I
aXN0b3J5ICpoaXN0b3J5KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cCBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBiMTM5YWJjYTgzYTkzMGMyODM4
MjRmMTBkZDJkYzY1MDk2MWJkMDAyLi5hODJlNjJlNGI0YTNjMjg3YTFiOTdjYWNhMzZkZTc4YjQz
ZTk2ZmMxIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC03MDksNiArNzA5LDExIEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBzZC0+YmdfcmVjdC5iZ19yZWN0ID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2Fk
ZChzZC0+YmFzZS5ldmFzKTsKKyAgICBld2tfdmlld19iZ19yZWN0X2NvbG9yX3NldChvLCAyNTUs
IDI1NSwgMjU1LCAyNTUpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJn
X3JlY3QuYmdfcmVjdCwgbyk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmdfcmVjdC5iZ19y
ZWN0KTsKKwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3Rv
cmUsIG8pOwogICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOwogICAgIGV2
YXNfb2JqZWN0X3Bhc3NfZXZlbnRzX3NldChzZC0+YmFja2luZ19zdG9yZSwgRUlOQV9UUlVFKTsK
QEAgLTgxMiw2ICs4MTcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRl
KEV2YXNfT2JqZWN0KiBvKQogICAgICAgICB9CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShz
ZC0+bWFpbl9mcmFtZSwgdywgaCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+ZXZl
bnRzX3JlY3QsIHcsIGgpOworICAgICAgICBldmFzX29iamVjdF9yZXNpemUoc2QtPmJnX3JlY3Qu
YmdfcmVjdCwgdywgaCk7CiAgICAgICAgIHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX1RS
VUU7CiAgICAgICAgIHNkLT52aWV3LncgPSB3OwogICAgICAgICBzZC0+dmlldy5oID0gaDsKQEAg
LTgyNSw2ICs4MzEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2
YXNfT2JqZWN0KiBvKQogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5tYWluX2ZyYW1lLCB4
LCB5KTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7
CiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc2QtPmV2ZW50c19yZWN0LCB4LCB5KTsKKyAgICAg
ICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmdfcmVjdC5iZ19yZWN0LCB4LCB5KTsKICAgICAgICAg
c2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJVRTsKICAgICAgICAgc2QtPnZpZXcueCA9
IHg7CiAgICAgICAgIHNkLT52aWV3LnkgPSB5OwpAQCAtODk4LDkgKzkwNSwyMSBAQCBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCwgZmxvYXQgem9vbSwgRQogICAgIHkgPSAoaCArIHNkLT52aWV3LmgpICogcHkgLSBjeTsKICAg
ICBld2tfZnJhbWVfc2Nyb2xsX3NldChzZC0+bWFpbl9mcmFtZSwgeCwgeSk7CiAKKyAgICBpZiAo
ZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7CisgICAg
ICAgIF9ld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIDAsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZC0+dmlldy53IC8gem9vbSwgc2QtPnZpZXcuaCAvIHpvb20pOwor
ICAgICAgICBzZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9UUlVFOworICAgICAgICBfZXdr
X3ZpZXdfc21hcnRfY2hhbmdlZChzZCk7CisgICAgfQorCiAgICAgcmV0dXJuIHJldDsKIH0KIAor
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9jYWlyb19zY2FsaW5nX3NldChF
d2tfVmlld19TbWFydF9EYXRhICpzZCwgRWluYV9Cb29sIHZhbHVlKQoreworICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX3NldChzZC0+bWFpbl9mcmFtZSwgdmFsdWUpOwor
fQorCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAg
LTEwNTQsNiArMTA3Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tf
Vmlld19TbWFydF9DbGFzcyogYXBpKQogCiAgICAgYXBpLT5jb250ZW50c19yZXNpemUgPSBfZXdr
X3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplOwogICAgIGFwaS0+em9vbV9zZXQgPSBfZXdrX3Zp
ZXdfc21hcnRfem9vbV9zZXQ7CisgICAgYXBpLT56b29tX2NhaXJvX3NjYWxpbmdfc2V0ID0gX2V3
a192aWV3X3NtYXJ0X3pvb21fY2Fpcm9fc2NhbGluZ19zZXQ7CiAgICAgYXBpLT5mbHVzaCA9IF9l
d2tfdmlld19zbWFydF9mbHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9uID0gX2V3a192
aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMgPSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CkBA
IC0xMzc3LDYgKzEzOTcsOTggQEAgdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8sIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKIH0KIAogLyoqCisg
KiBTZXQgdmlldydzIGJhY2tncm91bmQgcmVjdCBjb2xvcgorICoKKyAqIFRoaXMgaXMgdXNlZCBm
b3Igc2V0dGluZyB0aGUgY29sb3Igb2YgdGhlIHJlY3RhbmdsZSBiZWhpbmQgdGhlIHZpZXcuIFVu
bGlrZQorICogd2hhdCBpcyBkb25lIGluIGV3a192aWV3X2JnX2NvbG9yX3NldCgpLCB0aGlzIGNv
bG9yIGlzIG5vdCBwYXNzZWQgdG8gV2ViQ29yZS4KKyAqIEl0J3Mgc29sZSBwdXJwb3NlIGlzIGlu
c3RlYWQgdG8gcHV0IGEgcmVjdGFuZ2xlIGJlaGluZCB0aGUgdmlldyBpbiBvcmRlciB0bworICog
YmUgcG9zc2libGUgdG8gaGF2ZSBkaWZmZXJlbnQgYmFja2dyb3VuZHMgZm9yIGJvdW5jZXIgZWZm
ZWN0cyBhbmQgZm9yIGFyZWFzCisgKiBub3QgcmVuZGVyZWQgeWV0LgorICoKKyAqIEp1c3QgYXMg
aW4gRXZhcywgY29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBpcworICogKDEy
OCwgMCwgMCwgMTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCisgKgorICogQHBhcmFtIG8g
dmlldyBvYmplY3QgdG8gY2hhbmdlLgorICogQHBhcmFtIHIgcmVkIGNvbXBvbmVudC4KKyAqIEBw
YXJhbSBnIGdyZWVuIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBiIGJsdWUgY29tcG9uZW50LgorICog
QHBhcmFtIGEgdHJhbnNwYXJlbmN5LgorICovCit2b2lkIGV3a192aWV3X2JnX3JlY3RfY29sb3Jf
c2V0KEV2YXNfT2JqZWN0KiBvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YmdfcmVjdC5iZ19yZWN0KTsKKworICAgIGlmIChhIDwgMCkgeworICAgICAg
ICBXUk4oIkFscGhhIGxlc3MgdGhhbiB6ZXJvICglZCkuIiwgYSk7CisgICAgICAgIGEgPSAwOwor
ICAgIH0gZWxzZSBpZiAoYSA+IDI1NSkgeworICAgICAgICBXUk4oIkFscGhhIGlzIGxhcmdlciB0
aGFuIDI1NSAoJWQpLiIsIGEpOworICAgICAgICBhID0gMjU1OworICAgIH0KKworI2RlZmluZSBD
SEVDS19QUkVNVUxfQ09MT1IoYywgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGlmIChjIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAi
I2MiIGlzIGxlc3MgdGhhbiB6ZXJvICglZCkuIiwgYyk7ICAgICAgICAgXAorICAgICAgICBjID0g
MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gZWxzZSBpZiAoYyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2Mi
IGlzIGdyZWF0ZXIgdGhhbiBhbHBoYSAoJWQsIGFscGhhPSVkKS4iLCBcCisgICAgICAgICAgICBj
LCBhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGMgPSBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorICAgIENIRUNLX1BSRU1VTF9DT0xPUihyLCBh
KTsKKyAgICBDSEVDS19QUkVNVUxfQ09MT1IoZywgYSk7CisgICAgQ0hFQ0tfUFJFTVVMX0NPTE9S
KGIsIGEpOworI3VuZGVmIENIRUNLX1BSRU1VTF9DT0xPUgorCisgICAgc2QtPmJnX3JlY3QuY29s
b3IuciA9IHI7CisgICAgc2QtPmJnX3JlY3QuY29sb3IuZyA9IGc7CisgICAgc2QtPmJnX3JlY3Qu
Y29sb3IuYiA9IGI7CisgICAgc2QtPmJnX3JlY3QuY29sb3IuYSA9IGE7CisgICAgZXZhc19vYmpl
Y3RfY29sb3Jfc2V0KHNkLT5iZ19yZWN0LmJnX3JlY3QsIHNkLT5iZ19yZWN0LmNvbG9yLnIsIHNk
LT5iZ19yZWN0LmNvbG9yLmcsCisgICAgICAgICAgICBzZC0+YmdfcmVjdC5jb2xvci5iLCBzZC0+
YmdfcmVjdC5jb2xvci5hKTsKK30KKworLyoqCisgKiBHZXQgdmlldydzIGJhY2tncm91bmQgcmVj
dCBjb2xvcgorICoKKyAqIFRoaXMgaXMgdXNlZCBmb3IgZ2V0dGluZyB0aGUgY29sb3Igb2YgdGhl
IHJlY3RhbmdsZSBiZWhpbmQgdGhlIHZpZXcuIFVubGlrZQorICogd2hhdCBpcyBkb25lIGluIGV3
a192aWV3X2JnX2NvbG9yX2dldCgpLCB0aGlzIGNvbG9yIGlzIG5vdCBwYXNzZWQgdG8gV2ViQ29y
ZS4KKyAqIEl0J3Mgc29sZSBwdXJwb3NlIGlzIGluc3RlYWQgdG8gcHV0IGEgcmVjdGFuZ2xlIGJl
aGluZCB0aGUgdmlldyBpbiBvcmRlciB0bworICogYmUgcG9zc2libGUgdG8gaGF2ZSBkaWZmZXJl
bnQgYmFja2dyb3VuZHMgZm9yIGJvdW5jZXIgZWZmZWN0cyBhbmQgZm9yIGFyZWFzCisgKiBub3Qg
cmVuZGVyZWQgeWV0LgorICoKKyAqIEp1c3QgYXMgaW4gRXZhcywgY29sb3JzIGFyZSBwcmUtbXVs
dGlwbGllZCwgc28gNTAlIHJlZCBpcworICogKDEyOCwgMCwgMCwgMTI4KSBhbmQgbm90ICgyNTUs
IDAsIDAsIDEyOCkhCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkuCisgKiBA
cGFyYW0gciB3aGVyZSB0byByZXR1cm4gcmVkIGNvbG9yIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBn
IHdoZXJlIHRvIHJldHVybiBncmVlbiBjb2xvciBjb21wb25lbnQuCisgKiBAcGFyYW0gYiB3aGVy
ZSB0byByZXR1cm4gYmx1ZSBjb2xvciBjb21wb25lbnQuCisgKiBAcGFyYW0gYSB3aGVyZSB0byBy
ZXR1cm4gYWxwaGEgdmFsdWUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8sIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKK3sK
KyAgICBpZiAocikKKyAgICAgICAgKnIgPSAwOworICAgIGlmIChnKQorICAgICAgICAqZyA9IDA7
CisgICAgaWYgKGIpCisgICAgICAgICpiID0gMDsKKyAgICBpZiAoYSkKKyAgICAgICAgKmEgPSAw
OworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIGlmIChyKQorICAg
ICAgICAqciA9IHNkLT5iZ19yZWN0LmNvbG9yLnI7CisgICAgaWYgKGcpCisgICAgICAgICpnID0g
c2QtPmJnX3JlY3QuY29sb3IuZzsKKyAgICBpZiAoYikKKyAgICAgICAgKmIgPSBzZC0+YmdfcmVj
dC5jb2xvci5iOworICAgIGlmIChhKQorICAgICAgICAqYSA9IHNkLT5iZ19yZWN0LmNvbG9yLmE7
Cit9CisKKy8qKgogICogU2VhcmNoIHRoZSBnaXZlbiB0ZXh0IHN0cmluZyBpbiBkb2N1bWVudC4K
ICAqCiAgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB3aGVyZSB0byBzZWFyY2ggdGV4dC4KQEAgLTE2
MDMsNyArMTcxNSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRf
ZXZlbnQoRXZhc19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTQogICAgIEV2YXNfQ29vcmQg
eCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwg
MCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6
OkludFBvaW50KHgsIHkpKTsKKyAgICBmbG9hdCB6b29tID0gMS4wOworICAgIGlmIChld2tfdmll
d196b29tX2NhaXJvX3NjYWxpbmdfZ2V0KG8pKQorICAgICAgICB6b29tID0gZXdrX3ZpZXdfem9v
bV9nZXQobyk7CisKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gZXYxID0gKmV2OworICAgIGV2
MS5jYW52YXMueCA9IGV2MS5jYW52YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYx
LmNhbnZhcy55IC8gem9vbTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQo
JmV2MSwgV2ViQ29yZTo6SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CiAKICAgICBpZiAo
bWFpbl9mcmFtZS0+dmlldygpKSB7CiAgICAgICAgIG1vdXNlX3ByZXNzX2hhbmRsZWQgPQpAQCAt
MjE2NCw2ICsyMjgzLDQ0IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQo
RXZhc19PYmplY3QqIG8sIEVpbmFfQm9vbCBzZXR0aW5nKQogfQogCiAvKioKKyAqIFF1ZXJ5IGlm
IHpvb20gdXNlcyBjYWlybyBzY2FsaW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRv
IHF1ZXJ5IHNldHRpbmcuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVz
ZSBjYWlybyBzY2FsaW5nLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29s
IGV3a192aWV3X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCit7
CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgcmV0dXJuIGV3
a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoq
CisgKiBTZXQgaWYgem9vbSBzaG91bGQgdXNlIGNhaXJvIHNjYWxpbmcgb3Igbm90LgorICoKKyAq
IFRoaXMgZnVuY3Rpb24gZW5hYmxlcyB1c2luZyBjYWlybyBzY2FsaW5nIHRvIGRvIHpvb20gaW4v
b3V0LCBpbnN0ZWFkIG9mCisgKiBkZWZhdWx0IHdlYmtpdCB6b29tLiBUaGlzIG1lYW5zIHRoZSBw
YWdlIHJlbWFpbnMgdGhlIHNhbWUsIG5vIHJlbGF5b3V0CisgKiBpcyB0cmlnZ2VyZWQsIGFuZCB3
ZSBoYXZlIGEgZmFzdGVyIHpvb20gb3BlcmF0aW9uLgorICoKKyAqIFRoZSBjYWlybyBzY2FsaW5n
IHpvb20gc2hvdWxkIGJlIHNldCBiZWZvcmUgYW55IHpvb20gbGV2ZWwgY2hhbmdlCisgKiAoaW4g
ZmFjdCwgeW91IHNob3VsZCBzZXQgaXQgYmVmb3JlIGxvYWRpbmcgYW55IHdlYnBhZ2UpLiBJdCdz
IG5vdCBzYWZlCisgKiB0byBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBzb21lIHpvb20gbGV2
ZWwgY2hhbmdlcy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRvIGNoYW5nZSBzZXR0aW5nLgorICog
QHBhcmFtIHZhbHVlIEBjIEVJTkFfVFJVRSBpZiBzaG91bGQgdXNlIGNhaXJvIHNjYWxpbmcsCisg
ICAgICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0Vp
bmFfQm9vbCBld2tfdmlld196b29tX2NhaXJvX3NjYWxpbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgdmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGks
IEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBp
LT56b29tX2NhaXJvX3NjYWxpbmdfc2V0LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gc2QtPmFw
aS0+em9vbV9jYWlyb19zY2FsaW5nX3NldChzZCwgdmFsdWUpOworfQorCisvKioKICAqIEhpbnQg
ZW5naW5lIHRvIHByZS1yZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcg
c3RvcmUgbWlnaHQgYmUgYWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4KQEAgLTM5MTcsNiAr
NDA3NCwxMCBAQCB2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogbywgRXZhc19Db29y
ZCBkeCwgRXZhc19Db29yZCBkeSwgRXZhc19Db29yZCBzeAogICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzZCwgcHJpdik7CiAgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRVUk4oIWR4
ICYmICFkeSk7CiAKKyAgICBmbG9hdCB6b29tID0gMS4wZjsKKyAgICBpZiAoZXdrX2ZyYW1lX3pv
b21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKQorICAgICAgICB6b29tID0gZXdr
X2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBfZXdrX3ZpZXdfc2Nyb2xsX2Fk
ZChwcml2LCBkeCwgZHksIHN4ICogem9vbSwgc3kgKiB6b29tLCBzdyAqIHpvb20sIHNoICogem9v
bSwgbWFpbl9mcmFtZSk7CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuaAppbmRleCBjYzJiNGY5N2I3ZDc2NTg4Yzc4Zjc2ZjcwMmYyNjQ1ZGY4NGU2NjY2Li5l
ZDk0OGMwYWY2MzY5MTY4MzNhMTEzNTI5OGY3Y2ZhM2U1OGJhZGEyIDEwMDY0NAotLS0gYS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5oCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAg
LTEwOSw2ICsxMDksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFaW5h
X0Jvb2wgKCpyZXBhaW50c19wcm9jZXNzKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7IC8qKjwg
bXVzdCBiZSBkZWZpbmVkICovCiAgICAgRWluYV9Cb29sICgqY29udGVudHNfcmVzaXplKShFd2tf
Vmlld19TbWFydF9EYXRhICpzZCwgaW50IHcsIGludCBoKTsKICAgICBFaW5hX0Jvb2wgKCp6b29t
X3NldCkoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3kpOworICAgIEVpbmFfQm9vbCAoKnpvb21fY2Fpcm9fc2NhbGluZ19zZXQp
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgdmFsdWUpOwogICAgIEVpbmFfQm9v
bCAoKnpvb21fd2Vha19zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKICAgICB2b2lkICgqem9vbV93ZWFrX3Ntb290
aF9zY2FsZV9zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgc21vb3RoX3Nj
YWxlKTsKICAgICB2b2lkICgqYmdfY29sb3Jfc2V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
dW5zaWduZWQgY2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5zaWdu
ZWQgY2hhciBhKTsKQEAgLTI3Myw2ICsyNzQsMTIgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9E
YXRhIHsKICAgICBFdmFzX09iamVjdCAqbWFpbl9mcmFtZTsgLyoqPCByZWZlcmVuY2UgdG8gbWFp
biBmcmFtZSBvYmplY3QgKi8KICAgICBFdmFzX09iamVjdCAqYmFja2luZ19zdG9yZTsgLyoqPCBy
ZWZlcmVuY2UgdG8gYmFja2luZyBzdG9yZSAqLwogICAgIEV2YXNfT2JqZWN0ICpldmVudHNfcmVj
dDsgLyoqPCByZWN0YW5nbGUgdGhhdCBzaG91bGQgcmVjZWl2ZSBtb3VzZSBldmVudHMgKi8KKyAg
ICBzdHJ1Y3QgeworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBy
LCBnLCBiLCBhOworICAgICAgICB9IGNvbG9yOworICAgICAgICBFdmFzX09iamVjdCAqYmdfcmVj
dDsKKyAgICB9IGJnX3JlY3Q7IC8qKjwgYmFja2dyb3VuZCByZWN0YW5nbGUgdG8gc2hvdyBhIGRl
c2lyZWQgYmFja2dyb3VuZCBjb2xvciBvbiB0aGlzIHZpZXcgKi8KICAgICBFd2tfVmlld19Qcml2
YXRlX0RhdGEgKl9wcml2OyAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZm
ICovCiAgICAgc3RydWN0IHsKICAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAvKio8IGxh
c3QgdXNlZCB2aWV3cG9ydCAqLwpAQCAtMzQ4LDYgKzM1NSw5IEBAIEVBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxl
KTsKIEVBUEkgdm9pZCAgICAgICAgIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAq
bywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOwogRUFQSSB2b2lkICAgICAgICAgZXdrX3Zp
ZXdfYmdfY29sb3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIsIGludCAqZywgaW50
ICpiLCBpbnQgKmEpOwogCitFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19iZ19yZWN0X2NvbG9y
X3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworRUFQSSB2
b2lkICAgICAgICAgZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGludCAqYSk7CisKIEVBUEkgY2hhciAgICAgICAg
KmV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2VsZWN0X25vbmUoRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfc2VsZWN0X2FsbChFdmFzX09iamVjdCAqbyk7CkBAIC00MDEsNiAr
NDExLDggQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0
b3AoRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFz
X0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pv
b21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBz
ZXR0aW5nKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fY2Fpcm9fc2NhbGluZ19n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9v
bV9jYWlyb19zY2FsaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwog
CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVj
dCAqbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29y
ZCBoLCBmbG9hdCB6b29tKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuYyBiL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3NpbmdsZS5jCmluZGV4IDgwM2IyMTljMzFjMzQwZjg4NWM0YjJlODM4Y2UwNWVlYmZk
ZDU1ODIuLmY2NDBkMjAwNGU3NjU3NTMzZGExMmM2ZGVlN2ZlOWU0NWExMzE3YzQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jCisrKyBiL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3X3NpbmdsZS5jCkBAIC0xOSwxMyArMTksMTMgQEAKICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgi
CisjaW5jbHVkZSAiRVdlYktpdC5oIgogI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAKICNpbmNs
dWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisjaW5jbHVkZSA8
bWF0aC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xh
c3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKQEAgLTM2LDYg
KzM2LDE2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfb25fZGVsKHZvaWQgKmRhdGEs
IEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2b2lkICplCiAgICAgZXZhc19vYmplY3RfZGVsKGNs
aXApOwogfQogCitzdGF0aWMgdm9pZAorX2V3a192aWV3X3NpbmdsZV9jb250ZW50c19zaXplX2No
YW5nZWRfY2Iodm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCit7
CisgICAgRXZhc19Db29yZCB3LCBoOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQo
c2QtPmJhY2tpbmdfc3RvcmUsIE5VTEwsIE5VTEwsICZ3LCAmaCk7CisgICAgZXdrX3ZpZXdfcmVw
YWludF9hZGQoc2QtPl9wcml2LCAwLCAwLCB3LCBoKTsKK30KKwogc3RhdGljIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSAqc2Q7CkBAIC01MSw2ICs2MSwxMCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCAqbykKIAogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2Nh
bGxiYWNrX2FkZAogICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIEVWQVNfQ0FMTEJBQ0tfREVM
LCBfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCwgY2xpcCk7CisKKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQKKyAgICAgICAgKHNkLT5tYWluX2ZyYW1lLCAiY29udGVudHMsc2l6ZSxj
aGFuZ2VkIiwKKyAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfY29udGVudHNfc2l6ZV9jaGFuZ2Vk
X2NiLCBzZCk7CiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKQEAgLTc2LDYgKzkw
LDExIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2Jq
ZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vCiAgICAgICAgIGV2YXNfb2JqZWN0X2dlb21l
dHJ5X2dldChzZC0+YmFja2luZ19zdG9yZSwgJngsICZ5LCAwLCAwKTsKICAgICAgICAgZXZhc19v
YmplY3RfbW92ZShjbGlwLCB4LCB5KTsKICAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVf
Z2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZjaCk7CisgICAgICAgIGlmIChld2tfZnJhbWVfem9v
bV9jYWlyb19zY2FsaW5nX2dldChzZC0+bWFpbl9mcmFtZSkpIHsKKyAgICAgICAgICAgIGNvbnN0
IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAg
ICAgICAgY3cgKj0gem9vbTsKKyAgICAgICAgICAgIGNoICo9IHpvb207CisgICAgICAgIH0KICAg
ICAgICAgaWYgKHcgPiBjdykKICAgICAgICAgICAgIHcgPSBjdzsKICAgICAgICAgaWYgKGggPiBj
aCkKQEAgLTE5Nyw2ICsyMTYsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9t
b3ZlX3JlZ2lvbih1aW50MzJfdCAqaW1hZ2UsIGludCBkeCwgaW50IGR5LCBzaXoKICAgICB9CiB9
CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBhaW50X2Fk
ZChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2
YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQoreworICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5
LCB3LCBoKTsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1h
aW5fZnJhbWUpKSB7CisgICAgICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9n
ZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAgICB4ID0gY2VpbCh4IC8gem9vbSk7CisgICAgICAg
IHkgPSBjZWlsKHkgLyB6b29tKTsKKyAgICAgICAgdyA9IGNlaWwodyAvIHpvb20pOworICAgICAg
ICBoID0gY2VpbChoIC8gem9vbSk7CisgICAgICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5LCB3
LCBoKTsKKyAgICB9CisgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCB4LCB5LCB3
LCBoKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3By
b2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB2b2lkICpwaXhlbHMsIEV2YXNf
Q29vcmQgb3csIEV2YXNfQ29vcmQgb2gsIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3IpCiB7
CiAgICAgRXZhc19Db29yZCBzeCwgc3ksIHN3LCBzaDsKQEAgLTIxMyw3ICsyNDYsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAvKiBkb3VidCB3ZWJraXQgd291bGQgYmUgc28g
c3R1cGlkLi4uICovCiAgICAgICAgIERCRygiZnVsbCBwYWdlIHNjcm9sbCAlKzAzZCwlKzAzZC4g
Y29udmVydCB0byByZXBhaW50ICVkLCVkICsgJWR4JWQiLAogICAgICAgICAgICAgc3ItPmR4LCBz
ci0+ZHksIHN4LCBzeSwgc3csIHNoKTsKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2Qt
Pl9wcml2LCBzeCwgc3ksIHN3LCBzaCk7CisgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xs
X3JlcGFpbnRfYWRkKHNkLCBzeCwgc3ksIHN3LCBzaCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTI0OSw3ICsyODIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Npbmds
ZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAg
ICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNk
LT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3LCBzaCArIHNyLT5keSk7CiAKLSAgICAgICAgICAg
IGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3
LCAtc3ItPmR5KTsKKyAgICAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRf
YWRkKHNkLCBzeCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+ZHkpOwogICAgICAgICB9IGVs
c2UgaWYgKHNyLT5keSA+IDApIHsKICAgICAgICAgICAgIERCRygic2Nyb2xsIGRvd246ICUrMDNk
LCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwgIgogICAgICAgICAgICAgICAgICJyZXBhaW50PSVk
LCVkKyVkeCVkIiwKQEAgLTI2MSw3ICsyOTQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwog
ICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAg
ICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3kgKyBzci0+ZHksIHN3LCBzaCAtIHNyLT5k
eSk7CiAKLSAgICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5
LCBzdywgc3ItPmR5KTsKKyAgICAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFp
bnRfYWRkKHNkLCBzeCwgc3ksIHN3LCBzci0+ZHkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
ICghc3ItPmR5KSB7CiAgICAgICAgIGlmIChzci0+ZHggPCAwKSB7CkBAIC0yNzUsOSArMzA4LDkg
QEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2lu
Z2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdl
X2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gs
IHN5LCBzdyArIHNyLT5keCwgc2gpOwogCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2Fk
ZChzZC0+X3ByaXYsIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CisgICAgICAg
ICAgICBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBhaW50X2FkZChzZCwgc3ggKyBzdyArIHNy
LT5keCwgc3ksIC1zci0+ZHgsIHNoKTsKICAgICAgICAgfSBlbHNlIGlmIChzci0+ZHggPiAwKSB7
Ci0gICAgICAgICAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVk
eCVkLCAiCisgICAgICAgICAgICBEQkcoInNjcm9sbCByaWdodDogJSswM2QsJSswM2QgdXBkYXRl
PSVkLCVkKyVkeCVkLCAiCiAgICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAog
ICAgICAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3It
PmR4LCBzaCwKICAgICAgICAgICAgICAgICBzeCwgc3ksIHNyLT5keCwgc2gpOwpAQCAtMjg3LDcg
KzMyMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9j
ZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhICpzCiAgICAgICAgICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3Rv
cmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cgLSBzci0+ZHgsIHNoKTsKIAotICAgICAgICAgICAgZXdr
X3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHNyLT5keCwgc2gpOworICAgICAg
ICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQoc2QsIHN4LCBzeSwgc3It
PmR4LCBzaCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBFdmFzX0Nvb3JkIG14
LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBhaCwgYngsIGJ5LCBidywgYmg7CkBAIC0zMjksOCAr
MzYyLDggQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nl
c3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMKICAgICAgICAgICAgICgodWludDMyX3Qq
KXBpeGVscywgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAKICAgICAgICAg
ZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBteCwg
bXksIG13LCBtaCk7Ci0gICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgs
IGF5LCBhdywgYWgpOwotICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGJ4
LCBieSwgYncsIGJoKTsKKyAgICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9h
ZGQoc2QsIGF4LCBheSwgYXcsIGFoKTsKKyAgICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxf
cmVwYWludF9hZGQoc2QsIGJ4LCBieSwgYncsIGJoKTsKICAgICB9CiB9CiAKQEAgLTM4MCw2ICs0
MTMsMTEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICAgICAgaCA9IHNkLT52aWV3Lmg7
CiAKICAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAm
Y3csICZjaCk7CisgICAgICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChz
ZC0+bWFpbl9mcmFtZSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJh
bWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAgICAgICAgY3cgKj0gem9vbTsKKyAg
ICAgICAgICAgIGNoICo9IHpvb207CisgICAgICAgIH0KICAgICAgICAgaWYgKHcgPiBjdykKICAg
ICAgICAgICAgIHcgPSBjdzsKICAgICAgICAgaWYgKGggPiBjaCkKQEAgLTM5NSw2ICs0MzMsMTMg
QEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nl
c3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICBlbHNlCiAgICAgICAgIGZvcm1hdCA9IENB
SVJPX0ZPUk1BVF9SR0IyNDsKIAorICAgIGZsb2F0IHpvb20gPSAxLjA7CisgICAgaWYgKGV3a19m
cmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKSkKKyAgICAgICAgem9v
bSA9IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CisKKyAgICBjb25zdCBpbnQg
c2NhbGVkX3cgPSAoaW50KWNlaWwoKG93ICsgMSkgLyB6b29tKTsKKyAgICBjb25zdCBpbnQgc2Nh
bGVkX2ggPSAoaW50KWNlaWwoKG9oICsgMSkgLyB6b29tKTsKKwogICAgIHN1cmZhY2UgPSBjYWly
b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YQogICAgICAgICAoKHVuc2lnbmVkIGNoYXIq
KXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CiAgICAgc3RhdHVzID0gY2Fpcm9fc3Vy
ZmFjZV9zdGF0dXMoc3VyZmFjZSk7CkBAIC00MTMsNiArNDU4LDggQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QKICAgICAgICAgZ290byBlcnJvcl9jYWlybzsKICAgICB9CiAKKyAgICBjYWlyb19z
ZXRfYW50aWFsaWFzKGNhaXJvLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CisKICAgICBjdHh0ID0g
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXcoc2QtPl9wcml2LCBjYWlybyk7CiAgICAgaWYgKCFj
dHh0KSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7CkBA
IC00MjAsMTcgKzQ2NywyMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21h
cnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZAogICAgICAgICBnb3Rv
IGVycm9yX3BhaW50X2NvbnRleHQ7CiAgICAgfQogCi0gICAgdGlsZXIgPSBlaW5hX3RpbGVyX25l
dyhvdywgb2gpOworICAgIHRpbGVyID0gZWluYV90aWxlcl9uZXcoc2NhbGVkX3csIHNjYWxlZF9o
KTsKICAgICBpZiAoIXRpbGVyKSB7Ci0gICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxl
ciAlZHglZCIsIG93LCBvaCk7CisgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAl
ZHglZCIsIHNjYWxlZF93LCBzY2FsZWRfaCk7CiAgICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CiAg
ICAgICAgIGdvdG8gZXJyb3JfdGlsZXI7CiAgICAgfQogCisgICAgaW50IHN4LCBzeTsKKyAgICBl
d2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc2QtPm1haW5fZnJhbWUsICZzeCwgJnN5KTsKKwogICAg
IHByID0gZXdrX3ZpZXdfcmVwYWludHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsKICAgICBwcl9l
bmQgPSBwciArIGNvdW50OwotICAgIGZvciAoOyBwciA8IHByX2VuZDsgcHIrKykKKyAgICBmb3Ig
KDsgcHIgPCBwcl9lbmQ7IHByKyspIHsKKyAgICAgICAgREJHKCJQcm9jZXNzaW5nIHJlcGFpbnQ6
JWQsJWQrJWR4JWQgdGlsZXI6JWR4JWQiLCBwci0+eCwgcHItPnksIHByLT53LCBwci0+aCwgc2Nh
bGVkX3csIHNjYWxlZF9oKTsKICAgICAgICAgZWluYV90aWxlcl9yZWN0X2FkZCh0aWxlciwgcHIp
OworICAgIH0KIAogICAgIGl0ciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAg
ICBpZiAoIWl0cikgewpAQCAtNDM5LDI2ICs0OTEsMzEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2QKICAgICAgICAgZ290byBlcnJvcl9pdGVyYXRvcjsKICAgICB9CiAKLSAgICBpbnQgc3gsIHN5
OwotICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFpbl9mcmFtZSwgJnN4LCAmc3kp
OwotCiAgICAgRUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0ciwgcikgewotICAgICAgICBFaW5hX1Jl
Y3RhbmdsZSBzY3JvbGxlZF9yZWN0ID0gewotICAgICAgICAgICAgci54ICsgc3gsIHIueSArIHN5
LAotICAgICAgICAgICAgci53LCByLmgKKyAgICAgICAgRWluYV9SZWN0YW5nbGUgcmVwYWludF9y
ZWN0ID0geworICAgICAgICAgICAgci54IC0gZmxvb3Ioc3ggLyB6b29tKSwKKyAgICAgICAgICAg
IHIueSAtIGZsb29yKHN5IC8gem9vbSksCisgICAgICAgICAgICByLncgKyAyICogZmxvb3IoKHN4
ICsgMSkgLyB6b29tKSwKKyAgICAgICAgICAgIHIuaCArIDIgKiBmbG9vcigoc3kgKyAxKSAvIHpv
b20pCiAgICAgICAgIH07CiAKKyAgICAgICAgREJHKCJyZXBhaW50X3JlY3Q6JWQsJWQrJWR4JWQg
c2Nyb2xsOiVkLCVkIHpvb206JWYiLCByZXBhaW50X3JlY3QueCwgcmVwYWludF9yZWN0LnksIHJl
cGFpbnRfcmVjdC53LCByZXBhaW50X3JlY3QuaCwgc3gsIHN5LCB6b29tKTsKKwogICAgICAgICBl
d2tfdmlld19wYWludF9jb250ZXh0X3NhdmUoY3R4dCk7CiAKLSAgICAgICAgaWYgKChzeCkgfHwg
KHN5KSkKLSAgICAgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKGN0eHQs
IC1zeCwgLXN5KTsKKyAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoY3R4
dCwgLXN4LCAtc3kpOworICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKGN0eHQs
IHpvb20sIHpvb20pOwogCi0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChjdHh0
LCAmc2Nyb2xsZWRfcmVjdCk7Ci0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRf
Y29udGVudHMoY3R4dCwgJnNjcm9sbGVkX3JlY3QpOworICAgICAgICBld2tfdmlld19wYWludF9j
b250ZXh0X2NsaXAoY3R4dCwgJnJlcGFpbnRfcmVjdCk7CisgICAgICAgIGV3a192aWV3X3BhaW50
X2NvbnRleHRfcGFpbnRfY29udGVudHMoY3R4dCwgJnJlcGFpbnRfcmVjdCk7CiAKICAgICAgICAg
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9yZXN0b3JlKGN0eHQpOwogICAgICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwg
ci54LCByLnksIHIudywgci5oKTsKKyAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwKKyAg
ICAgICAgICAgICBscmludGYoem9vbSAqIHIueCksCisgICAgICAgICAgICAgbHJpbnRmKHpvb20g
KiByLnkpLAorICAgICAgICAgICAgIGxyaW50Zih6b29tICogci53KSwKKyAgICAgICAgICAgICBs
cmludGYoem9vbSAqIHIuaCkpOwogICAgIH0KICAgICBlaW5hX2l0ZXJhdG9yX2ZyZWUoaXRyKTsK
IApAQCAtNTA1LDEwICs1NjIsMjAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X3pvb21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGYKICAgICB9CiAg
ICAgZXZhc19vYmplY3RfbW92ZShjbGlwLCBzZC0+dmlldy54ICsgZHgsIHNkLT52aWV3LnkgKyBk
eSk7CiAKLSAgICBpZiAoY3cgPCBzZC0+dmlldy53KQotICAgICAgICB3ID0gY3cgKiBzY2FsZTsK
LSAgICBpZiAoY2ggPCBzZC0+dmlldy5oKQotICAgICAgICBoID0gY2ggKiBzY2FsZTsKKyAgICBp
ZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7Cisg
ICAgICAgIGN3ICo9IHpvb207CisgICAgICAgIGNoICo9IHpvb207CisgICAgICAgIGlmIChjdyA8
IHcpCisgICAgICAgICAgICB3ID0gY3c7CisgICAgICAgIGlmIChjaCA8IGgpCisgICAgICAgICAg
ICBoID0gY2g7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGN3IDwgc2QtPnZpZXcudykKKyAg
ICAgICAgICAgIHcgPSBjdyAqIHNjYWxlOworICAgICAgICBpZiAoY2ggPCBzZC0+dmlldy5oKQor
ICAgICAgICAgICAgaCA9IGNoICogc2NhbGU7CisgICAgfQorCiAgICAgZXZhc19vYmplY3RfcmVz
aXplKGNsaXAsIHcsIGgpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
dGlsZWQuYwppbmRleCBkMzgwZThlNjFjOWY1MjM1N2JlOWIwMGFiZjg3NzllMmEyYmU4YTc3Li5h
OWY1NTk1NDQwOGE2ZjljNGE1NGZjYzNkZmNlY2Y0MTBhYjY3NDczIDEwMDY0NAotLS0gYS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3RpbGVkLmMKQEAgLTc3LDYgKzc3LDE4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9z
bWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiAgICAgZXdrX2ZyYW1lX3BhaW50X2Z1bGxfc2V0KHNk
LT5tYWluX2ZyYW1lLCBFSU5BX1RSVUUpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3X3RpbGVkX3Njcm9sbF9yZXBhaW50X2FkZChFd2tfVmlld19TbWFydF9EYXRhICpzZCwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQorewor
ICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChzZC0+bWFpbl9mcmFtZSkp
IHsKKyAgICAgICAgY29uc3QgZmxvYXQgem9vbSA9IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFp
bl9mcmFtZSk7CisgICAgICAgIHggPSB4IC8gem9vbTsKKyAgICAgICAgeSA9IHkgLyB6b29tOwor
ICAgICAgICB3ID0gdyAvIHpvb207CisgICAgICAgIGggPSBoIC8gem9vbTsKKyAgICB9CisgICAg
ZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCB4LCB5LCB3LCBoKTsKK30KKwogc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfc2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkKQogewogICAgIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3I7CkBA
IC0xMDQsNyArMTE2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRf
c2Nyb2xsc19wcm9jZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkKQogICAgICAgICAgICAgICAg
IC8qIGRvdWJ0IHdlYmtpdCB3b3VsZCBiZSBzbyAgICAgc3R1cGlkLi4uICovCiAgICAgICAgICAg
ICAgICAgREJHKCJmdWxsIHBhZ2Ugc2Nyb2xsICUrMDNkLCUrMDNkLiBjb252ZXJ0IHRvIHJlcGFp
bnQgJWQsJWQgKyAlZHglZCIsCiAgICAgICAgICAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBz
eCwgc3ksIHN3LCBzaCk7Ci0gICAgICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2Qt
Pl9wcml2LCBzeCwgc3ksIHN3LCBzaCk7CisgICAgICAgICAgICAgICAgX2V3a192aWV3X3RpbGVk
X3Njcm9sbF9yZXBhaW50X2FkZChzZCwgc3gsIHN5LCBzdywgc2gpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBAIC0xMjEsMTEgKzEzMyw3IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3NtYXJ0X3Njcm9sbHNfcHJvY2VzcyhFd2tfVmlld19T
bWFydF9EYXRhICpzZCkKICAgICAgICAgICAgIGlmICghc3cgfHwgIXNoKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBzeCAtPSBhYnMoc3ItPmR4KTsKLSAgICAgICAg
ICAgIHN5IC09IGFicyhzci0+ZHkpOwotICAgICAgICAgICAgc3cgKz0gYWJzKHNyLT5keCk7Ci0g
ICAgICAgICAgICBzaCArPSBhYnMoc3ItPmR5KTsKLSAgICAgICAgICAgIGV3a192aWV3X3JlcGFp
bnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5LCBzdywgc2gpOworICAgICAgICAgICAgX2V3a192aWV3
X3RpbGVkX3Njcm9sbF9yZXBhaW50X2FkZChzZCwgc3gsIHN5LCBzdywgc2gpOwogICAgICAgICAg
ICAgSU5GKCJ1c2luZyByZXBhaW50IGZvciBpbm5lciBmcmFtZSBzY29sbGluZyEiKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTEzOSwxNCArMTQ3LDE4IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3RpbGVkX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qp
CiAgICAgc2l6ZV90IGNvdW50OwogICAgIGludCBzeCwgc3k7CiAKKyAgICBmbG9hdCBzY2FsZSA9
IDE7CisgICAgaWYgKGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2Zy
YW1lKSkKKyAgICAgICAgc2NhbGUgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworCiAgICAgZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmc3gsICZz
eSk7CiAKICAgICBwciA9IGV3a192aWV3X3JlcGFpbnRzX2dldChzZC0+X3ByaXYsICZjb3VudCk7
CiAgICAgcHJfZW5kID0gcHIgKyBjb3VudDsKICAgICBmb3IgKDsgcHIgPCBwcl9lbmQ7IHByKysp
IHsKICAgICAgICAgRWluYV9SZWN0YW5nbGUgcjsKLSAgICAgICAgci54ID0gcHItPnggKyBzeDsK
LSAgICAgICAgci55ID0gcHItPnkgKyBzeTsKKyAgICAgICAgci54ID0gcHItPnggKyAoc3ggLyBz
Y2FsZSk7CisgICAgICAgIHIueSA9IHByLT55ICsgKHN5IC8gc2NhbGUpOwogICAgICAgICByLncg
PSBwci0+dzsKICAgICAgICAgci5oID0gcHItPmg7CiAgICAgICAgIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3VwZGF0ZShzZC0+YmFja2luZ19zdG9yZSwgJnIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68367</attachid>
            <date>2010-09-22 07:05:25 -0700</date>
            <delta_ts>2010-12-06 08:47:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46258-20100922110522.patch</filename>
            <type>text/plain</type>
            <size>52531</size>
            <attacher name="Alex Bredariol Grilo">abgrilo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjRiZTM4ZTdlZWYzNjAwYWVmMjZmNTQ2MjgyODg0YWNjNGNkNDg5Ni4uYWVkMTUzMWE1NTMzNzEx
ODY3NDZkYjA0MjllN2NhMmFkODllYWE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0wOS0yMSAgQWxl
eCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdIFdlYkNvcmUgY2hhbmdl
cyBmb3Igc2NhbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDYyNTgKKworICAgICAgICBJbiBvcmRlciB0byBzY2FsZSB0b29sYmFycyBhbmQgaW5u
ZXIgZnJhbWVzIHRvbywgc29tZSBjaGFuZ2VzIHdlcmUKKyAgICAgICAgbmVjZXNzYXJ5IG9uIFdl
YkNvcmUgKG1haW5seSBTY3JvbGxWaWV3LmNwcCkuCisKKyAgICAgICAgVGhlIG1haW4gY2hhbmdl
IHdhcyBpbnRyb2R1Y2luZyBhIG5ldyBhdHRyaWJ1dGUgdG8gdGhlIFNjcm9sbFZpZXcgY2FsbGVk
CisgICAgICAgIHNjYWxlRmFjdG9yLiBUaGlzIGF0dHJpYnV0ZSBpcyB0YWtlbiBpbnRvIGFjY291
bnQgd2hlbiBjaGFuZ2luZyB0aGUgc2Nyb2xsYmFycworICAgICAgICBzaXplLCBvciB3aGVuIHJl
dHVybmluZyB0aGUgdmlzaWJsZUZyYW1lUmVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Omxh
eW91dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRGaXhlZExheW91
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0VXNlRml4ZWRMYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9s
bENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OnNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNj
YWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVl
bEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcDoKKyAgICAg
ICAgKFNjcm9sbGJhckVmbDo6ZnJhbWVSZWN0c0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9XaWRnZXRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpmcmFtZVJlY3Rz
Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRM
b3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorCiAyMDEwLTA4
LTI3ICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCmluZGV4IDY3NDczOTJlNjg5N2M5NGY0Zjc4NmFmZjlkOTY5YTUxMjY5MjBi
MmYuLmIwMzBiNmU0MGZlYjVmNzQ1YjRiODFjNjQyY2VhMGUzODM3ZmI1ZDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTI1LDcgKzEyNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQotICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopOworICAgICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIEludFBvaW50KTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggZGQ3ZTY3ODI1ZjNhZTA0ZDc1YjcwNmI1ZTUzMTVlNTRkMzFjNWM3
NC4uMmRhODI4OTI1Njg5NmU2ZTViYjZjNTFkMjVhMDM0NThmNDk5MGI0NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCkBAIC01Myw2ICs1Myw3IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQog
ICAgICwgbV9kcmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICAsIG1fdXNlRml4ZWRMYXlvdXQo
ZmFsc2UpCiAgICAgLCBtX3BhaW50c0VudGlyZUNvbnRlbnRzKGZhbHNlKQorICAgICwgbV9zY2Fs
ZUZhY3RvcigxLjBmKQogewogICAgIHBsYXRmb3JtSW5pdCgpOwogfQpAQCAtMTQ0LDcgKzE0NSw3
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSBob3Jp
em9udGFsTW9kZSwgU2Nyb2xsYmFyTW9kZSB2CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAg
ICAgICAgIHBsYXRmb3JtU2V0U2Nyb2xsYmFyTW9kZXMoKTsKICAgICBlbHNlCi0gICAgICAgIHVw
ZGF0ZVNjcm9sbGJhcnMoc2Nyb2xsT2Zmc2V0KCkpOworICAgICAgICB1cGRhdGVTY3JvbGxiYXJz
KG1fc2Nyb2xsT2Zmc2V0KTsKIH0KICNlbmRpZgogCkBAIC0yMDIsMjQgKzIwMywzNSBAQCB2b2lk
IFNjcm9sbFZpZXc6OnNldFBhaW50c0VudGlyZUNvbnRlbnRzKGJvb2wgcGFpbnRzRW50aXJlQ29u
dGVudHMpCiB9CiAKICNpZiAhUExBVEZPUk0oR1RLKQotSW50UmVjdCBTY3JvbGxWaWV3Ojp2aXNp
YmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycykgY29uc3QKK0ludFJlY3QgU2Ny
b2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMsIGJvb2wg
dXNlU2NhbGUpIGNvbnN0CiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgIHJl
dHVybiBwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChpbmNsdWRlU2Nyb2xsYmFycyk7Ci0gICAg
cmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwgbV9zY3JvbGxP
ZmZzZXQuaGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgIEludFNpemUobWF4KDAsIHdpZHRo
KCkgLSAodmVydGljYWxTY3JvbGxiYXIoKSAmJiAhaW5jbHVkZVNjcm9sbGJhcnMgPyB2ZXJ0aWNh
bFNjcm9sbGJhcigpLT53aWR0aCgpIDogMCkpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heCgwLCBoZWlnaHQoKSAtIChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIWluY2x1ZGVTY3Jv
bGxiYXJzID8gaG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDApKSkpOworCisgICAg
aW50IHcgPSB3aWR0aCgpIC0gKHZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIWluY2x1ZGVTY3JvbGxi
YXJzID8gdmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKSA6IDApOworICAgIGludCBoID0gaGVp
Z2h0KCkgLSAoaG9yaXpvbnRhbFNjcm9sbGJhcigpICYmICFpbmNsdWRlU2Nyb2xsYmFycyA/IGhv
cml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCkgOiAwKTsKKworICAgIGlmICh1c2VTY2FsZSkg
eworICAgICAgICBmbG9hdCBzY2FsZSA9ICh0aGlzID09IHJvb3QoKSkgPyBzY2FsZUZhY3Rvcigp
IDogMS4wZjsKKyAgICAgICAgcmV0dXJuIEludFJlY3Qoc3RhdGljX2Nhc3Q8aW50PihjZWlsKG1f
c2Nyb2xsT2Zmc2V0LndpZHRoKCkgLyBzY2FsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KGNlaWwobV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkgLyBzY2FsZSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKHcgLyBz
Y2FsZSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIHN0YXRpY19jYXN0PGludD4o
Y2VpbChoIC8gc2NhbGUpKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBJbnRSZWN0
KG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCksIG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICBtYXgoMCwgdyksIG1heCgwLCBoKSk7CisgICAgfQogfQogI2VuZGlm
CiAKIGludCBTY3JvbGxWaWV3OjpsYXlvdXRXaWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Zml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVX
aWR0aCgpIDogbV9maXhlZExheW91dFNpemUud2lkdGgoKTsKKyAgICByZXR1cm4gbV9maXhlZExh
eW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlzaWJsZVdpZHRoKCkg
KiBzY2FsZUZhY3RvcigpIDogbV9maXhlZExheW91dFNpemUud2lkdGgoKTsKIH0KIAogaW50IFNj
cm9sbFZpZXc6OmxheW91dEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZml4ZWRMYXlv
dXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2libGVIZWlnaHQoKSA6
IG1fZml4ZWRMYXlvdXRTaXplLmhlaWdodCgpOworICAgIHJldHVybiBtX2ZpeGVkTGF5b3V0U2l6
ZS5pc0VtcHR5KCkgfHwgIW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlSGVpZ2h0KCkgKiBzY2Fs
ZUZhY3RvcigpIDogbV9maXhlZExheW91dFNpemUuaGVpZ2h0KCk7CiB9CiAKIEludFNpemUgU2Ny
b2xsVmlldzo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKQEAgLTIzMiw3ICsyNDQsNyBAQCB2b2lk
IFNjcm9sbFZpZXc6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQog
ICAgIGlmIChmaXhlZExheW91dFNpemUoKSA9PSBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9maXhlZExheW91dFNpemUgPSBuZXdTaXplOwotICAgIHVwZGF0ZVNjcm9sbGJhcnMoc2Ny
b2xsT2Zmc2V0KCkpOworICAgIHVwZGF0ZVNjcm9sbGJhcnMobV9zY3JvbGxPZmZzZXQpOwogfQog
CiBib29sIFNjcm9sbFZpZXc6OnVzZUZpeGVkTGF5b3V0KCkgY29uc3QKQEAgLTI0NSw3ICsyNTcs
NyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZW5hYmxlKQogICAg
IGlmICh1c2VGaXhlZExheW91dCgpID09IGVuYWJsZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
dXNlRml4ZWRMYXlvdXQgPSBlbmFibGU7Ci0gICAgdXBkYXRlU2Nyb2xsYmFycyhzY3JvbGxPZmZz
ZXQoKSk7CisgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiB9CiAKIEludFNp
emUgU2Nyb2xsVmlldzo6Y29udGVudHNTaXplKCkgY29uc3QKQEAgLTI2MywxMiArMjc1LDEzIEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUp
CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgIHBsYXRmb3JtU2V0Q29udGVudHNT
aXplKCk7CiAgICAgZWxzZQotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKHNjcm9sbE9mZnNldCgp
KTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiB9CiAKIEludFBv
aW50IFNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgSW50
U2l6ZSBtYXhpbXVtT2Zmc2V0ID0gY29udGVudHNTaXplKCkgLSB2aXNpYmxlQ29udGVudFJlY3Qo
KS5zaXplKCk7CisgICAgbWF4aW11bU9mZnNldC5zY2FsZShzY2FsZUZhY3RvcigpKTsKICAgICBt
YXhpbXVtT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKICAgICByZXR1cm4gSW50UG9pbnQo
bWF4aW11bU9mZnNldC53aWR0aCgpLCBtYXhpbXVtT2Zmc2V0LmhlaWdodCgpKTsKIH0KQEAgLTMz
MiwxMiArMzQ1LDI0IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KQogICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0g
c2Nyb2xsUG9pbnQuc2hydW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOwogICAgIG5ld1Nj
cm9sbFBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKIAotICAgIGlmIChuZXdTY3JvbGxQ
b3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQorICAgIEludFBvaW50IHNjcm9sbFBvczsKKyAg
ICBzY3JvbGxQb3Muc2V0WChtX3Njcm9sbE9mZnNldC53aWR0aCgpKTsKKyAgICBzY3JvbGxQb3Mu
c2V0WShtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSk7CisgICAgaWYgKG5ld1Njcm9sbFBvc2l0aW9u
ID09IHNjcm9sbFBvcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgdXBkYXRlU2Nyb2xsYmFycyhJ
bnRTaXplKG5ld1Njcm9sbFBvc2l0aW9uLngoKSwgbmV3U2Nyb2xsUG9zaXRpb24ueSgpKSk7CiB9
CiAKK3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgcykKK3sKKyAgICBJ
bnRQb2ludCBzY3JvbGxQb3M7CisgICAgc2Nyb2xsUG9zLnNldFgobV9zY3JvbGxPZmZzZXQud2lk
dGgoKSk7CisgICAgc2Nyb2xsUG9zLnNldFkobV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOworCisg
ICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zICsgcyk7Cit9CisKIGJvb2wgU2Nyb2xsVmll
dzo6c2Nyb2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQpAQCAtNDQzLDEzICs0Njgs
MjAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRl
c2lyZWRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW5VcGRhdGVTY3JvbGxiYXJz
ID0gdHJ1ZTsKLSAgICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRzV2lkdGgoKSAt
IHZpc2libGVXaWR0aCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpKTsKKyAg
ICBJbnRTaXplIG1heFNjcm9sbFBvc2l0aW9uOworICAgIG1heFNjcm9sbFBvc2l0aW9uID0gSW50
U2l6ZShjb250ZW50c1dpZHRoKCkgLSB2aXNpYmxlV2lkdGgoKSwgY29udGVudHNIZWlnaHQoKSAt
IHZpc2libGVIZWlnaHQoKSk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24uc2NhbGUocm9vdCgpLT5z
Y2FsZUZhY3RvcigpKTsKICAgICBJbnRTaXplIHNjcm9sbCA9IGRlc2lyZWRPZmZzZXQuc2hydW5r
VG8obWF4U2Nyb2xsUG9zaXRpb24pOwogICAgIHNjcm9sbC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
CiAgCiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50
V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5z
ZXRFbmFibGVkKGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKKyAgICAgICAgaW50IGNv
bnRlbnRzVyA9IGNvbnRlbnRzV2lkdGgoKTsKKyAgICAgICAgaWYgKHRoaXMgPT0gcm9vdCgpKSB7
CisgICAgICAgICAgICBjb250ZW50c1cgKj0gc2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIGNs
aWVudFdpZHRoICo9IHNjYWxlRmFjdG9yKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzVyA+IGNsaWVudFdpZHRoKTsKICAgICAg
ICAgaW50IHBhZ2VTdGVwID0gbWF4KG1heDxpbnQ+KGNsaWVudFdpZHRoICogU2Nyb2xsYmFyOjpt
aW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50V2lkdGggLSBTY3JvbGxiYXI6Om1h
eE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9o
b3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJl
Y3QgPSBJbnRSZWN0KDAsCkBAIC00NjMsNyArNDk1LDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAgICAgICAgIGlmICht
X3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
LT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVw
KTsKLSAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdp
ZHRoLCBjb250ZW50c1dpZHRoKCkpOworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzVyk7CiAgICAgICAgIG1faG9yaXpvbnRh
bFNjcm9sbGJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCksIFNjcm9sbGJhcjo6Tm90RnJvbVNj
cm9sbEFuaW1hdG9yKTsKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAg
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZh
bHNlKTsgCkBAIC00NzEsNyArNTAzLDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KQogCiAgICAgaWYgKG1fdmVydGljYWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsK
LSAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgp
ID4gY2xpZW50SGVpZ2h0KTsKKyAgICAgICAgaW50IGNvbnRlbnRzSCA9IGNvbnRlbnRzSGVpZ2h0
KCk7CisgICAgICAgIGlmICh0aGlzID09IHJvb3QoKSkgeworICAgICAgICAgICAgY29udGVudHNI
ICo9IHNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBjbGllbnRIZWlnaHQgKj0gc2NhbGVGYWN0
b3IoKTsKKyAgICAgICAgfQorICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVk
KGNvbnRlbnRzSCA+IGNsaWVudEhlaWdodCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9IG1heCht
YXg8aW50PihjbGllbnRIZWlnaHQgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBh
Z2luZygpLCBjbGllbnRIZWlnaHQgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMo
KSksIDEpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJh
bWVSZWN0KCkpOwogICAgICAgICBJbnRSZWN0IHZCYXJSZWN0ID0gSW50UmVjdCh3aWR0aCgpIC0g
bV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwgCkBAIC00ODUsNyArNTIyLDcgQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQp
CiAgICAgICAgIGlmIChtX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQogICAgICAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CiAgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAo
KSwgcGFnZVN0ZXApOwotICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRQcm9wb3J0aW9u
KGNsaWVudEhlaWdodCwgY29udGVudHNIZWlnaHQoKSk7CisgICAgICAgIG1fdmVydGljYWxTY3Jv
bGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBjb250ZW50c0gpOwogICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCksIFNjcm9sbGJhcjo6
Tm90RnJvbVNjcm9sbEFuaW1hdG9yKTsKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNz
ZWQpCiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRh
dGlvbihmYWxzZSk7CkBAIC01MjAsOCArNTU3LDkgQEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxD
b250ZW50cyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICAvLyB3aXRoIHRoZSBjbGlw
IHJlY3QgZXZlcnkgdGltZSB0byBrZWVwIGl0IHNtb290aC4KICAgICBJbnRSZWN0IGNsaXBSZWN0
ID0gd2luZG93Q2xpcFJlY3QoKTsKICAgICBJbnRSZWN0IHNjcm9sbFZpZXdSZWN0ID0gY29udmVy
dFRvQ29udGFpbmluZ1dpbmRvdyhJbnRSZWN0KDAsIDAsIHZpc2libGVXaWR0aCgpLCB2aXNpYmxl
SGVpZ2h0KCkpKTsKLSAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBjbGlwUmVjdDsKLSAgICB1cGRh
dGVSZWN0LmludGVyc2VjdChzY3JvbGxWaWV3UmVjdCk7CisgICAgSW50UmVjdCB1cGRhdGVSZWN0
ID0gc2Nyb2xsVmlld1JlY3Q7CisgICAgaWYgKCFyb290KCktPnBhaW50c0VudGlyZUNvbnRlbnRz
KCkpCisgICAgICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsKIAogICAgIC8vIElu
dmFsaWRhdGUgdGhlIHdpbmRvdyAobm90IHRoZSBiYWNraW5nIHN0b3JlKS4KICAgICBob3N0V2lu
ZG93KCktPmludmFsaWRhdGVXaW5kb3codXBkYXRlUmVjdCwgZmFsc2UgLyppbW1lZGlhdGUqLyk7
CkBAIC02ODEsOCArNzE5LDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9y
bVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBJbnRQb2ludCBz
Y3JvbGxQb3M7CisgICAgc2Nyb2xsUG9zLnNldFgobV9zY3JvbGxPZmZzZXQud2lkdGgoKSk7Cisg
ICAgc2Nyb2xsUG9zLnNldFkobV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpOworCiAgICAgLy8gRGV0
ZXJtaW5lIGhvdyBtdWNoIHdlIHdhbnQgdG8gc2Nyb2xsLiAgSWYgd2UgY2FuIG1vdmUgYXQgYWxs
LCB3ZSB3aWxsIGFjY2VwdCB0aGUgZXZlbnQuCi0gICAgSW50U2l6ZSBtYXhTY3JvbGxEZWx0YSA9
IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRpb24oKTsKKyAgICBJbnRTaXpl
IG1heFNjcm9sbERlbHRhID0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3M7CiAg
ICAgaWYgKChlLmRlbHRhWCgpIDwgMCAmJiBtYXhTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkgfHwK
ICAgICAgICAgKGUuZGVsdGFYKCkgPiAwICYmIHNjcm9sbE9mZnNldCgpLndpZHRoKCkgPiAwKSB8
fAogICAgICAgICAoZS5kZWx0YVkoKSA8IDAgJiYgbWF4U2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAw
KSB8fApAQCAtNzI5LDYgKzc3MSw5IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmIG5ld1JlY3QpCiAKIHZvaWQgU2Nyb2xsVmlldzo6ZnJhbWVSZWN0c0NoYW5n
ZWQoKQogeworICAgIFdpZGdldDo6ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICB1cGRhdGVTY3Jv
bGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKKwogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTgyMSw3ICs4NjYsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBjb250
ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CiAgICAgZG9jdW1lbnREaXJ0
eVJlY3QubW92ZShzY3JvbGxYKCksIHNjcm9sbFkoKSk7CiAKLSAgICBjb250ZXh0LT5jbGlwKHZp
c2libGVDb250ZW50UmVjdCgpKTsKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gdmlzaWJsZUNv
bnRlbnRSZWN0KCk7CisgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlUmVjdCk7CiAKICAgICBwYWlu
dENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0KTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
aAppbmRleCBiYjJjODAzMjQxNmVhNzVlMjVkYmVkMWM1N2IwNTVkY2IzOGM1ZWVkLi41MGViODM0
ZWZkNjgwYWQzNzJiNTVhZjU5NzgyMTZiMDkxOTg5MDNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApA
QCAtMTI2LDcgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgdmlzaWJsZSBjb250ZW50IHJl
Y3QgaGFzIGEgbG9jYXRpb24gdGhhdCBpcyB0aGUgc2Nyb2xsZWQgb2Zmc2V0IG9mIHRoZSBkb2N1
bWVudC4gVGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHRoZSB2aWV3cG9ydCB3aWR0aAogICAgIC8v
IGFuZCBoZWlnaHQuIEJ5IGRlZmF1bHQgdGhlIHNjcm9sbGJhcnMgdGhlbXNlbHZlcyBhcmUgZXhj
bHVkZWQgZnJvbSB0aGlzIHJlY3RhbmdsZSwgYnV0IGFuIG9wdGlvbmFsIGJvb2xlYW4gYXJndW1l
bnQgYWxsb3dzIHRoZW0gdG8gYmUKICAgICAvLyBpbmNsdWRlZC4KLSAgICBJbnRSZWN0IHZpc2li
bGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzID0gZmFsc2UpIGNvbnN0OworICAg
IC8vIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSBpZiB0aGUgY3VycmVudCBzY2FsZSBs
ZXZlbCBzaG91bGQgYmUgY29uc2lkZXJlZCBpbiB0aGUKKyAgICAvLyB2YWx1ZXMgKGJ5IGRlZmF1
bHQsIGl0IGlzKS4KKyAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVT
Y3JvbGxiYXJzID0gZmFsc2UsIGJvb2wgdXNlU2NhbGUgPSB0cnVlKSBjb25zdDsKICAgICBpbnQg
dmlzaWJsZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgo
KTsgfQogICAgIGludCB2aXNpYmxlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRl
bnRSZWN0KCkuaGVpZ2h0KCk7IH0KIApAQCAtMTU1LDkgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICAvLyBGdW5jdGlvbnMgZm9yIHNjcm9sbGluZyB0aGUgdmlldy4KICAgICB2b2lkIHNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7Ci0gICAgdm9pZCBzY3JvbGxCeShjb25zdCBJ
bnRTaXplJiBzKSB7IHJldHVybiBzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbigpICsg
cyk7IH0KKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmIHMpOwogCi0gICAgLy8gVGhp
cyBmdW5jdGlvbiBzY3JvbGxzIGJ5IGxpbmVzLCBwYWdlcyBvciBwaXhlbHMuCiAgICAgYm9vbCBz
Y3JvbGwoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgICAgIAogICAg
IC8vIFNjcm9sbCB0aGUgYWN0dWFsIGNvbnRlbnRzIG9mIHRoZSB2aWV3IChlaXRoZXIgYmxpdHRp
bmcgb3IgaW52YWxpZGF0aW5nIGFzIG5lZWRlZCkuCkBAIC0xODIsNiArMTgzLDkgQEAgcHVibGlj
OgogICAgIC8vIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdG8gYW5zd2VyIHdoZXRo
ZXIgb3Igbm90IHRoZSBzY3JvbGwgdmlldyBpcyBjdXJyZW50bHkgdmlzaWJsZS4gQW5pbWF0aW9u
cyBhbmQgcGFpbnRpbmcgdXBkYXRlcyBjYW4gYmUgc3VzcGVuZGVkIGlmCiAgICAgLy8gd2Uga25v
dyB0aGF0IHdlIGFyZSBlaXRoZXIgbm90IGluIGEgd2luZG93IHJpZ2h0IG5vdyBvciBpZiB0aGF0
IHdpbmRvdyBpcyBub3QgdmlzaWJsZS4KICAgICBib29sIGlzT2Zmc2NyZWVuKCkgY29uc3Q7CisK
KyAgICB2b2lkIHNldFNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKSB7IG1fc2NhbGVGYWN0
b3IgPSBzY2FsZUZhY3RvcjsgfQorICAgIGZsb2F0IHNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gbV9zY2FsZUZhY3RvcjsgfQogICAgIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNl
ZCB0byBlbmFibGUgc2Nyb2xsYmFycyB0byBhdm9pZCB3aW5kb3cgcmVzaXplciBjb250cm9scyB0
aGF0IG92ZXJsYXAgdGhlIHNjcm9sbCB2aWV3LiBUaGlzIGhhcHBlbnMgb24gTWFjCiAgICAgLy8g
Zm9yIGV4YW1wbGUuCkBAIC0yOTgsNiArMzAyLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9w
YWludHNFbnRpcmVDb250ZW50czsKIAorICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CisKICAgICB2
b2lkIGluaXQoKTsKICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKaW5kZXggNzA0ZGIzOGEyYjg3N2U5YThhODRh
MTk4ODg3Mjk1NTExZjA0MmI4MC4uNGU2Y2NlMTc0ZmNlMjYwYzA2NGE4YzJiMTE0ZTIxNTA3NzU4
Y2IxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50
RWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVsRXZlbnRFZmwu
Y3BwCkBAIC00Miw4ICs0Miw4IEBAIGVudW0gewogICAgIEhvcml6b250YWxTY3JvbGxEaXJlY3Rp
b24gPSAxCiB9OwogCi1QbGF0Zm9ybVdoZWVsRXZlbnQ6OlBsYXRmb3JtV2hlZWxFdmVudChjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldikKLSAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQo
ZXYtPmNhbnZhcy54LCBldi0+Y2FudmFzLnkpKQorUGxhdGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9y
bVdoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYsIEludFBvaW50IHBv
cykKKyAgICA6IG1fcG9zaXRpb24oSW50UG9pbnQoZXYtPmNhbnZhcy54IC0gcG9zLngoKSwgZXYt
PmNhbnZhcy55IC0gcG9zLnkoKSkpCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKEludFBvaW50KGV2
LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoU2Nyb2xsQnlQ
aXhlbFdoZWVsRXZlbnQpCiAgICAgLCBtX2lzQWNjZXB0ZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJFZmwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyRWZsLmNwcAppbmRleCA2YjAwYTM3ODRlODkzOGQ4Y2M2MjAxZTA1MzM0MDM1
NmU0MWRjYmU5Li5kNmRkZGU5NzAxZTY4MjgyMzU3NTMzYWFlYzFmMDVjNjVhYmMyZmI0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJFZmwuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5jcHAKQEAgLTIwNSw5ICsyMDUsMTUgQEAgdm9p
ZCBTY3JvbGxiYXJFZmw6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKICAgICBlbHNlCiAgICAgICAgIHJl
Y3Quc2V0TG9jYXRpb24ocGFyZW50KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigp
KSk7CiAKKyAgICBmbG9hdCBzY2FsZTsKKyAgICBpZiAocm9vdCgpID09IHBhcmVudCgpKQorICAg
ICAgICBzY2FsZSA9IDEuMGY7CisgICAgZWxzZQorICAgICAgICBzY2FsZSA9IHJvb3QoKS0+c2Nh
bGVGYWN0b3IoKTsKKwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChyb290KCktPmV2YXNP
YmplY3QoKSwgJngsICZ5LCAwLCAwKTsKLSAgICBldmFzX29iamVjdF9tb3ZlKG8sIHggKyByZWN0
LngoKSwgeSArIHJlY3QueSgpKTsKLSAgICBldmFzX29iamVjdF9yZXNpemUobywgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBldmFzX29iamVjdF9tb3ZlKG8sIHggKyByZWN0Lngo
KSAqIHNjYWxlLCB5ICsgcmVjdC55KCkgKiBzY2FsZSk7CisgICAgZXZhc19vYmplY3RfcmVzaXpl
KG8sIHJlY3Qud2lkdGgoKSAqIHNjYWxlLCByZWN0LmhlaWdodCgpICogc2NhbGUpOwogfQogCiB2
b2lkIFNjcm9sbGJhckVmbDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZs
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAKaW5kZXggZDgyZTk5ZTYx
ZTM1MzRjMzQyNWJkZDk4M2M0NDk1Njg3YWM0NTY0Yy4uNGMwOGRkNWNjMGU4YzgzYzc1ZjkyYmZm
YWJiYmFjMzEzMzk5MjVlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0
RWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCkBAIC0xOTUs
OSArMTk1LDEwIEBAIHZvaWQgV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgZWxzZQog
ICAgICAgICByZWN0LnNldExvY2F0aW9uKHBhcmVudCgpLT5jb250ZW50c1RvV2luZG93KHJlY3Qu
bG9jYXRpb24oKSkpOwogCisgICAgZmxvYXQgc2NhbGUgPSByb290KCktPnNjYWxlRmFjdG9yKCk7
CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHJvb3QoKS0+ZXZhc09iamVjdCgpLCAmeCwg
JnksIDAsIDApOwotICAgIGV2YXNfb2JqZWN0X21vdmUobywgeCArIHJlY3QueCgpLCB5ICsgcmVj
dC55KCkpOwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShvLCByZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOworICAgIGV2YXNfb2JqZWN0X21vdmUobywgeCArIHJlY3QueCgpICogc2NhbGUsIHkg
KyByZWN0LnkoKSAqIHNjYWxlKTsKKyAgICBldmFzX29iamVjdF9yZXNpemUobywgcmVjdC53aWR0
aCgpICogc2NhbGUsIHJlY3QuaGVpZ2h0KCkgKiBzY2FsZSk7CiB9CiAKIHZvaWQgV2lkZ2V0Ojpz
ZXRGb2N1cyhib29sIGZvY3VzZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKaW5kZXggMGZiYzlmMjY5ZDZjOWViZDkxMmRhY2NmY2U2NDY5ZjUyNzc2YmVlNS4u
MDczY2JlOWJkMzZiNWVlY2E0MzgzZjA0Y2FiZGYxYTYwYzRmYmQyYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBSCiAgICAgTGFzdFBhaW50U2l6ZU1hcDo6aXRlcmF0b3IgaSA9IG1f
bGFzdFBhaW50U2l6ZU1hcC5maW5kKG9iamVjdCk7CiAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBib29sIGNvbnRl
eHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JG
bGlwcGVkKCk7CisgICAgYm9vbCBjb250ZXh0SXNTY2FsZWQgPSBmYWxzZTsKICAgICBpZiAoIWNv
bnRleHRJc1NjYWxlZCAmJiBpbWFnZVNpemUgPT0gc2l6ZSkgewogICAgICAgICAvLyBUaGVyZSBp
cyBubyBzY2FsZSBpbiBlZmZlY3QuIElmIHdlIGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUs
IHdlIGNhbiBqdXN0IHJlbW92ZSB0aGlzIG9iamVjdCBmcm9tIHRoZSBsaXN0LgogICAgICAgICBp
ZiAoaSAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggMTQ3N2EyM2Q1N2YzNTRmNDYxYzUyYzhhZDdmNGIyNWJkZTU2YjU2Yi4uYzA5OGE1
NGNlNjM5ZDYyMDQ2NDk3MThlN2ExOTY2NGQ4N2U0YTFjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMTQyNCw3ICsxNDI0LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJl
Y3RUb1Zpc2libGUoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzY3JvbGxUb0FuY2hvciwKICAg
ICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllciAmJiByZW5kZXJlcigpLT5pc0JveCgpICYmIHJlbmRl
ckJveCgpLT5jYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKHNjcm9sbFRvQW5jaG9yKSkgewog
ICAgICAgICBpZiAoZnJhbWVWaWV3KSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKS0+ZG9j
dW1lbnQoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSAmJiByZW5k
ZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgeworICAgICAg
ICAgICAgICAgIGZsb2F0IHNjYWxlID0gZnJhbWVWaWV3LT5yb290KCktPnNjYWxlRmFjdG9yKCk7
CiAgICAgICAgICAgICAgICAgSW50UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KCk7CisgICAgICAgICAgICAgICAgdmlld1JlY3Quc2V0V2lkdGgodmlld1JlY3Qu
d2lkdGgoKSAqIHNjYWxlKTsKKyAgICAgICAgICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQodmll
d1JlY3QuaGVpZ2h0KCkgKiBzY2FsZSk7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByID0gZ2V0
UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCByZWN0LCBhbGlnblgsIGFsaWduWSk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgeE9mZnNldCA9IHIueCgpOwpAQCAtMTQzMywxMyArMTQz
NiwxNSBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAgICAgICAgICAgICAgICAgeE9mZnNldCA9
IG1heCgwLCBtaW4oZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCksIHhPZmZzZXQpKTsKICAgICAg
ICAgICAgICAgICB5T2Zmc2V0ID0gbWF4KDAsIG1pbihmcmFtZVZpZXctPmNvbnRlbnRzSGVpZ2h0
KCksIHlPZmZzZXQpKTsKIAotICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsUG9z
aXRpb24oSW50UG9pbnQoeE9mZnNldCwgeU9mZnNldCkpOworICAgICAgICAgICAgICAgIGZyYW1l
Vmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoeE9mZnNldCAqIHNjYWxlLCB5T2Zmc2V0
ICogc2NhbGUpKTsKICAgICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IHJlbmRlcmVyKCktPmRv
Y3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOwog
ICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmlldy0+c2Nyb2xs
WCgpICsgZnJhbWVWaWV3LT54KCkpOwogICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WShyZWN0
LnkoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3
LT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBzY2FsZSA9IGZy
YW1lVmlldy0+cm9vdCgpLT5zY2FsZUZhY3RvcigpOworICAgICAgICAgICAgICAgIEludFJlY3Qg
dmlld1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCh0cnVlKTsKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHIgPSBnZXRSZWN0VG9FeHBvc2Uodmlld1JlY3QsIHJlY3QsIGFsaWdu
WCwgYWxpZ25ZKTsKKyAgICAgICAgICAgICAgICByLnNjYWxlKHNjYWxlKTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHIubG9j
YXRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKaW5kZXggMWMzOWI2MjdhMjBlMDY2NDY1MzQ2MzFlOTc2NTQ3MWRhOTQyZTg3
NC4uOWI4ZDJiZDBlZGFjNWE5YmI3NWE1N2Y3NWMyNzczYjYzMWM1ZDQwYyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NyBAQAorMjAxMC0wOS0yMiAgQWxleCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1
c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtFRkxdIEFkZCBzdXBwb3J0IGZvciBzY2FsaW5nIHRoZSBjb250ZW50cyBpbnN0ZWFkIG9m
IHpvb21pbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NjI1OAorCisgICAgICAgIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgem9vbWluZywgbm90
IHNjYWxpbmcuIFRoaXMgcGF0Y2ggaW1wbGVtZW50cworICAgICAgICBzY2FsaW5nIG9uIEVGTCBw
b3J0LCB1c2luZyB0aGUgQ2Fpcm8gc2NhbGluZyBhbGdvcml0aG0uCisKKyAgICAgICAgKiBld2sv
ZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV96b29tX2dldCk6CisgICAgICAgIChl
d2tfZnJhbWVfem9vbV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGlu
Z19nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19zZXQpOgorICAg
ICAgICAoZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVk
X21vdXNlX3doZWVsKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24pOgorICAg
ICAgICAoZXdrX2ZyYW1lX2ZlZWRfbW91c2VfdXApOgorICAgICAgICAoZXdrX2ZyYW1lX2ZlZWRf
bW91c2VfbW92ZSk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5oOgorICAgICAgICAqIGV3ay9l
d2tfcHJpdmF0ZS5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUpOgor
ICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KToKKyAgICAgICAgKF9ld2tfdmlld19z
bWFydF96b29tX2NhaXJvX3NjYWxpbmdfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2Jhc2Vfc21h
cnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X2JnX3JlY3RfY29sb3Jfc2V0KToKKyAgICAgICAg
KGV3a192aWV3X2JnX3JlY3RfY29sb3JfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2NvbnRleHRf
bWVudV9mb3J3YXJkX2V2ZW50KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fY2Fpcm9fc2NhbGlu
Z19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9jYWlyb19zY2FsaW5nX3NldCk6CisgICAg
ICAgIChld2tfdmlld19zY3JvbGwpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5oOgorICAgICAg
ICAqIGV3ay9ld2tfdmlld19zaW5nbGUuYzoKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfY29u
dGVudHNfc2l6ZV9jaGFuZ2VkX2NiKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRf
YWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKToKKyAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2Vzcyk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Nt
YXJ0X3pvb21fd2Vha19zZXQpOgorCiAyMDEwLTA5LTE0ICBKb8OjbyBQYXVsbyBSZWNoaSBWaXRh
ICA8anBydml0YUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGEyOTM3Yjc2MjUyODZjNjdlM2I4YzBjZTRh
MDBlZWRkYjI0N2Q0MDguLjZiMjQzZmE0M2JjY2UzMzY5OGMwMDMzODc3MjMyMTZiZmFhYjA1ZGMg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdHJ1Y3QgRXdrX0ZyYW1lX1Nt
YXJ0X0RhdGEgewogICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAgICAgfSBjb250ZW50c19zaXpl
OwogICAgIEVpbmFfQm9vbCB0ZXh0Wm9vbToxOworICAgIEVpbmFfQm9vbCBjYWlyb19zY2FsaW5n
OjE7CiAgICAgRWluYV9Cb29sIGVkaXRhYmxlOjE7CiB9OwogCkBAIC0xMDIwLDEzICsxMDIxLDE5
IEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgLTEuMCk7CisgICAgZmxvYXQgcmV0Owog
ICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHNkLT5mcmFtZS0+dmlldygpOwogICAgIGlm
ICghdmlldykKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHNkLT50ZXh0Wm9vbSkKLSAg
ICAgICAgcmV0dXJuIHZpZXctPnRleHRab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIHZpZXctPnBh
Z2Vab29tRmFjdG9yKCk7CisgICAgaWYgKHNkLT5jYWlyb19zY2FsaW5nKQorICAgICAgICByZXQg
PSB2aWV3LT5zY2FsZUZhY3RvcigpOworICAgIGVsc2UgaWYgKHNkLT50ZXh0Wm9vbSkKKyAgICAg
ICAgcmV0ID0gdmlldy0+dGV4dFpvb21GYWN0b3IoKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9
IHZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKioKQEAg
LTEwMzgsNiArMTA0NSw3IEBAIGZsb2F0IGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9G
QUxTRSBvbiBmYWlsdXJlLgogICoKICAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3Nl
dCgpCisgKiBAc2VlIGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfc2V0KCkKICAqLwogRWlu
YV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsK
QEAgLTEwNDYsMTAgKzEwNTQsMTQgQEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSkKICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBz
ZC0+ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBFSU5BX0ZB
TFNFOwotICAgIGlmIChzZC0+dGV4dFpvb20pCisKKyAgICBpZiAoc2QtPmNhaXJvX3NjYWxpbmcp
CisgICAgICAgIHZpZXctPnNldFNjYWxlRmFjdG9yKHpvb20pOworICAgIGVsc2UgaWYgKHNkLT50
ZXh0Wm9vbSkKICAgICAgICAgdmlldy0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbSk7CiAgICAgZWxz
ZQogICAgICAgICB2aWV3LT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKwogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKQEAgLTEwNzAsNyArMTA4Miw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVf
em9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICogU2V0IGlmIHpvb20g
bGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KICAqCiAg
KiBAcGFyYW0gbyBmcmFtZSB0byBjaGFuZ2Ugc2V0dGluZy4KLSAqIEBwYXJhbSBzZXR0aW5nIEBj
IEVJTkFfVFJVRSBpZiB6b29tIHNob3VsZCBqdXN0IGJlIGFwcGxpZWQgdG8gdGV4dC4KKyAqIEBw
YXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIGFwcGxpZXMgdG8gdGV4dCBh
bmQgbm90IG90aGVyIGVsZW1lbnRzLgogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1
Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlLgogICovCkBAIC0xMDk1LDYgKzExMDcsNDAg
QEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QqIG8s
IEVpbmFfQm9vbCBzZXR0aW5nKQogfQogCiAvKioKKyAqIFF1ZXJ5IGlmIHpvb20gdXNlcyBjYWly
byBzY2FsaW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVyeSBzZXR0aW5n
LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHNob3VsZCB1c2UgY2Fpcm8gc2NhbGlu
ZywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfem9v
bV9jYWlyb19zY2FsaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAqbykKK3sKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIHNkLT5j
YWlyb19zY2FsaW5nOworfQorCisvKioKKyAqIFNldCBpZiB6b29tIHNob3VsZCB1c2UgY2Fpcm8g
c2NhbGluZyBvciBub3QuCisgKgorICogQHBhcmFtIG8gZnJhbWUgdG8gY2hhbmdlIHNldHRpbmcu
CisgKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVzZSBjYWlybyBzY2Fs
aW5nLAorICAgICAgICAgICAgICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2Uu
CisgKi8KK0VpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpCit7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOworICAgIHNldHRpbmcgPSAhIXNldHRpbmc7Cisg
ICAgaWYgKHNkLT5jYWlyb19zY2FsaW5nID09IHNldHRpbmcpCisgICAgICAgIHJldHVybiBFSU5B
X1RSVUU7CisKKyAgICBzZC0+Y2Fpcm9fc2NhbGluZyA9IHNldHRpbmc7CisgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKK30KKworLyoqCiAgKiBGcmVlIGhpdCB0ZXN0IGNyZWF0ZWQgd2l0aCBld2tfZnJh
bWVfaGl0X3Rlc3RfbmV3KCkuCiAgKgogICogQHBhcmFtIGhpdF90ZXN0IGluc3RhbmNlLiBNdXN0
IEBiIG5vdCBiZSBAYyBOVUxMLgpAQCAtMTI3MSw3ICsxMzE3LDcgQEAgZXdrX2ZyYW1lX3Njcm9s
bF9wb3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQqIHgsIGludCogeSkKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZS0+dmlldygpLCBFSU5BX0ZBTFNFKTsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3MgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9z
aXRpb24oKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBwb3MgPSBzZC0+ZnJhbWUtPnZpZXcoKS0+
dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlLCBmYWxzZSkubG9jYXRpb24oKTsKICAgICBpZiAoeCkK
ICAgICAgICAgKnggPSBwb3MueCgpOwogICAgIGlmICh5KQpAQCAtMTQwMSw3ICsxNDQ3LDE4IEBA
IEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbChFdmFzX09iamVjdCogbywgY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlCiAgICAgICAgIG8sIHZpZXcsIGV2LT5kaXJlY3Rpb24s
IGV2LT56LCBldi0+Y2FudmFzLngsIGV2LT5jYW52YXMueSk7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHZpZXcsIEVJTkFfRkFMU0UpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50IGV2ZW50KGV2KTsKKyAgICBFdmFzX0Nvb3JkIHgsIHk7CisgICAgZXZhc19v
YmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3LCAmeCwgJnksIDAsIDApOworCisgICAgZmxvYXQg
em9vbSA9IDEuMDsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQobykp
CisgICAgICAgIHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQobyk7CisKKyAgICBFdmFzX0V2ZW50
X01vdXNlX1doZWVsIGV2MSA9ICpldjsKKyAgICBldjEuY2FudmFzLnggPSBldjEuY2FudmFzLngg
LyB6b29tOworICAgIGV2MS5jYW52YXMueSA9IGV2MS5jYW52YXMueSAvIHpvb207CisKKyAgICBX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6SW50UG9pbnQo
eCAvIHpvb20sIHkgLyB6b29tKSk7CiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwogfQogCkBAIC0xNDI3LDcgKzE0ODQsMTUgQEAg
RWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX2Rvd24oRXZhc19PYmplY3QqIG8sIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfRG93bioKICAgICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19v
YmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3LCAmeCwgJnksIDAsIDApOwogCi0gICAgV2ViQ29y
ZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGV2LCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSk7
CisgICAgZmxvYXQgem9vbSA9IDEuMDsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2Nh
bGluZ19nZXQobykpCisgICAgICAgIHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQobyk7CisKKyAg
ICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gZXYxID0gKmV2OworICAgIGV2MS5jYW52YXMueCA9IGV2
MS5jYW52YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYxLmNhbnZhcy55IC8gem9v
bTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6
SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CisKICAgICByZXR1cm4gc2QtPmZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKIH0KIApAQCAtMTQ1
Myw3ICsxNTE4LDE1IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZmVlZF9tb3VzZV91cChFdmFzX09i
amVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYpCiAgICAgRXZhc19Db29yZCB4
LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzZC0+dmlldywgJngsICZ5LCAwLCAw
KTsKIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChldiwgV2ViQ29yZTo6
SW50UG9pbnQoeCwgeSkpOworICAgIGZsb2F0IHpvb20gPSAxLjA7CisgICAgaWYgKGV3a19mcmFt
ZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KG8pKQorICAgICAgICB6b29tID0gZXdrX2ZyYW1lX3pv
b21fZ2V0KG8pOworCisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCBldjEgPSAqZXY7CisgICAgZXYx
LmNhbnZhcy54ID0gZXYxLmNhbnZhcy54IC8gem9vbTsKKyAgICBldjEuY2FudmFzLnkgPSBldjEu
Y2FudmFzLnkgLyB6b29tOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudCgm
ZXYxLCBXZWJDb3JlOjpJbnRQb2ludCh4IC8gem9vbSwgeSAvIHpvb20pKTsKKwogICAgIHJldHVy
biBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChldmVu
dCk7CiB9CiAKQEAgLTE0ODAsNyArMTU1MywxNSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRf
bW91c2VfbW92ZShFdmFzX09iamVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKgog
ICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnZp
ZXcsICZ4LCAmeSwgMCwgMCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZl
bnQoZXYsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsKKyAgICBmbG9hdCB6b29tID0gMS4wOwor
ICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChvKSkKKyAgICAgICAgem9v
bSA9IGV3a19mcmFtZV96b29tX2dldChvKTsKKworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSBl
djEgPSAqZXY7CisgICAgZXYxLmN1ci5jYW52YXMueCA9IGV2MS5jdXIuY2FudmFzLnggLyB6b29t
OworICAgIGV2MS5jdXIuY2FudmFzLnkgPSBldjEuY3VyLmNhbnZhcy55IC8gem9vbTsKKyAgICBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6SW50UG9pbnQo
eCAvIHpvb20sIHkgLyB6b29tKSk7CisKICAgICByZXR1cm4gc2QtPmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+bW91c2VNb3ZlZChldmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKaW5kZXggOTM5NDQ0NmFm
Mjg3ZjVhNTc0MzJkMzRiMzcyZTVhYzU2Yzc1N2NkZC4uNzU5ODhhNjE0MmEzNjc5MzI2OWQwMGRj
MDg1ZTMwMTVmMTk2ZTJlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgK
KysrIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKQEAgLTE3Niw2ICsxNzYsOCBAQCBFQVBJ
IEVpbmFfQm9vbCAgICBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8s
IGludCBzdGVwcyk7CiAKIEVBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV9zZXQo
RXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1l
X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19zZXQoRXZhc19PYmplY3QgKm8s
IEVpbmFfQm9vbCB2YWx1ZSk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5n
KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaCBiL1dlYktpdC9l
ZmwvZXdrL2V3a19wcml2YXRlLmgKaW5kZXggZWFhZDEzYzM3ZmJmZDRjZWJlMDNhOTEzOGM5NmE1
NjY4Y2M3OWE5Ny4uODA0MDBkOGQ5YTNkODFmMTFjZTFjMDJjNDU5ZTI1YjE4MWI0YTFmOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAorKysgYi9XZWJLaXQvZWZsL2V3
ay9ld2tfcHJpdmF0ZS5oCkBAIC0xMDUsNiArMTA1LDkgQEAgdm9pZCBld2tfdmlld19wb3B1cF9u
ZXcoRXZhc19PYmplY3QgKm8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50LCBpbnQg
c2UKIHZvaWQgZXdrX3ZpZXdfdmlld3BvcnRfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB3LCBm
bG9hdCBoLCBmbG9hdCBpbml0X3NjYWxlLCBmbG9hdCBtYXhfc2NhbGUsIGZsb2F0IG1pbl9zY2Fs
ZSwgZmxvYXQgdXNlcl9zY2FsYWJsZSk7CiAKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVz
dChFdmFzX09iamVjdCAqbywgRXdrX0Rvd25sb2FkICpkb3dubG9hZCk7Cit2b2lkIGV3a192aWV3
X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlvdXQoRXZhc19PYmplY3QgKm8pOwordm9p
ZCBld2tfdmlld190cmFuc2l0aW9uX3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0
ICpvKTsKK3ZvaWQgZXdrX3ZpZXdfZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2Jq
ZWN0ICpvKTsKIAogRXdrX0hpc3RvcnkgKmV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3QgKmhpc3RvcnkpOwogdm9pZCBld2tfaGlzdG9yeV9mcmVlKEV3a19IaXN0b3J5ICpo
aXN0b3J5KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBiMTM5YWJjYTgzYTkzMGMyODM4MjRmMTBkZDJk
YzY1MDk2MWJkMDAyLi5hODJlNjJlNGI0YTNjMjg3YTFiOTdjYWNhMzZkZTc4YjQzZTk2ZmMxIDEw
MDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCkBAIC03MDksNiArNzA5LDExIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBzZC0+YmdfcmVjdC5iZ19yZWN0ID0gZXZhc19vYmplY3RfcmVjdGFuZ2xlX2FkZChzZC0+YmFz
ZS5ldmFzKTsKKyAgICBld2tfdmlld19iZ19yZWN0X2NvbG9yX3NldChvLCAyNTUsIDI1NSwgMjU1
LCAyNTUpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJnX3JlY3QuYmdf
cmVjdCwgbyk7CisgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmdfcmVjdC5iZ19yZWN0KTsKKwog
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc2QtPmJhY2tpbmdfc3RvcmUsIG8pOwog
ICAgIGV2YXNfb2JqZWN0X3Nob3coc2QtPmJhY2tpbmdfc3RvcmUpOwogICAgIGV2YXNfb2JqZWN0
X3Bhc3NfZXZlbnRzX3NldChzZC0+YmFja2luZ19zdG9yZSwgRUlOQV9UUlVFKTsKQEAgLTgxMiw2
ICs4MTcsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBvKQogICAgICAgICB9CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+bWFpbl9m
cmFtZSwgdywgaCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+ZXZlbnRzX3JlY3Qs
IHcsIGgpOworICAgICAgICBldmFzX29iamVjdF9yZXNpemUoc2QtPmJnX3JlY3QuYmdfcmVjdCwg
dywgaCk7CiAgICAgICAgIHNkLT5jaGFuZ2VkLmZyYW1lX3JlY3QgPSBFSU5BX1RSVUU7CiAgICAg
ICAgIHNkLT52aWV3LncgPSB3OwogICAgICAgICBzZC0+dmlldy5oID0gaDsKQEAgLTgyNSw2ICs4
MzEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
KiBvKQogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5tYWluX2ZyYW1lLCB4LCB5KTsKICAg
ICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+YmFja2luZ19zdG9yZSwgeCwgeSk7CiAgICAgICAg
IGV2YXNfb2JqZWN0X21vdmUoc2QtPmV2ZW50c19yZWN0LCB4LCB5KTsKKyAgICAgICAgZXZhc19v
YmplY3RfbW92ZShzZC0+YmdfcmVjdC5iZ19yZWN0LCB4LCB5KTsKICAgICAgICAgc2QtPmNoYW5n
ZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJVRTsKICAgICAgICAgc2QtPnZpZXcueCA9IHg7CiAgICAg
ICAgIHNkLT52aWV3LnkgPSB5OwpAQCAtODk4LDkgKzkwNSwyMSBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQg
em9vbSwgRQogICAgIHkgPSAoaCArIHNkLT52aWV3LmgpICogcHkgLSBjeTsKICAgICBld2tfZnJh
bWVfc2Nyb2xsX3NldChzZC0+bWFpbl9mcmFtZSwgeCwgeSk7CiAKKyAgICBpZiAoZXdrX2ZyYW1l
X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7CisgICAgICAgIF9ld2tf
dmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZC0+dmlldy53IC8gem9vbSwgc2QtPnZpZXcuaCAvIHpvb20pOworICAgICAgICBz
ZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9UUlVFOworICAgICAgICBfZXdrX3ZpZXdfc21h
cnRfY2hhbmdlZChzZCk7CisgICAgfQorCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9jYWlyb19zY2FsaW5nX3NldChFd2tfVmlld19T
bWFydF9EYXRhICpzZCwgRWluYV9Cb29sIHZhbHVlKQoreworICAgIHJldHVybiBld2tfZnJhbWVf
em9vbV9jYWlyb19zY2FsaW5nX3NldChzZC0+bWFpbl9mcmFtZSwgdmFsdWUpOworfQorCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QpCiB7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTEwNTQsNiAr
MTA3Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFy
dF9DbGFzcyogYXBpKQogCiAgICAgYXBpLT5jb250ZW50c19yZXNpemUgPSBfZXdrX3ZpZXdfc21h
cnRfY29udGVudHNfcmVzaXplOwogICAgIGFwaS0+em9vbV9zZXQgPSBfZXdrX3ZpZXdfc21hcnRf
em9vbV9zZXQ7CisgICAgYXBpLT56b29tX2NhaXJvX3NjYWxpbmdfc2V0ID0gX2V3a192aWV3X3Nt
YXJ0X3pvb21fY2Fpcm9fc2NhbGluZ19zZXQ7CiAgICAgYXBpLT5mbHVzaCA9IF9ld2tfdmlld19z
bWFydF9mbHVzaDsKICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9uID0gX2V3a192aWV3X3NtYXJ0
X3ByZV9yZW5kZXJfcmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMg
PSBfZXdrX3ZpZXdfc21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CkBAIC0xMzc3LDYg
KzEzOTcsOTggQEAgdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8sIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKIH0KIAogLyoqCisgKiBTZXQgdmll
dydzIGJhY2tncm91bmQgcmVjdCBjb2xvcgorICoKKyAqIFRoaXMgaXMgdXNlZCBmb3Igc2V0dGlu
ZyB0aGUgY29sb3Igb2YgdGhlIHJlY3RhbmdsZSBiZWhpbmQgdGhlIHZpZXcuIFVubGlrZQorICog
d2hhdCBpcyBkb25lIGluIGV3a192aWV3X2JnX2NvbG9yX3NldCgpLCB0aGlzIGNvbG9yIGlzIG5v
dCBwYXNzZWQgdG8gV2ViQ29yZS4KKyAqIEl0J3Mgc29sZSBwdXJwb3NlIGlzIGluc3RlYWQgdG8g
cHV0IGEgcmVjdGFuZ2xlIGJlaGluZCB0aGUgdmlldyBpbiBvcmRlciB0bworICogYmUgcG9zc2li
bGUgdG8gaGF2ZSBkaWZmZXJlbnQgYmFja2dyb3VuZHMgZm9yIGJvdW5jZXIgZWZmZWN0cyBhbmQg
Zm9yIGFyZWFzCisgKiBub3QgcmVuZGVyZWQgeWV0LgorICoKKyAqIEp1c3QgYXMgaW4gRXZhcywg
Y29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBpcworICogKDEyOCwgMCwgMCwg
MTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCisgKgorICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gY2hhbmdlLgorICogQHBhcmFtIHIgcmVkIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBnIGdy
ZWVuIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBiIGJsdWUgY29tcG9uZW50LgorICogQHBhcmFtIGEg
dHJhbnNwYXJlbmN5LgorICovCit2b2lkIGV3a192aWV3X2JnX3JlY3RfY29sb3Jfc2V0KEV2YXNf
T2JqZWN0KiBvLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHNkKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YmdfcmVjdC5iZ19yZWN0KTsKKworICAgIGlmIChhIDwgMCkgeworICAgICAgICBXUk4oIkFs
cGhhIGxlc3MgdGhhbiB6ZXJvICglZCkuIiwgYSk7CisgICAgICAgIGEgPSAwOworICAgIH0gZWxz
ZSBpZiAoYSA+IDI1NSkgeworICAgICAgICBXUk4oIkFscGhhIGlzIGxhcmdlciB0aGFuIDI1NSAo
JWQpLiIsIGEpOworICAgICAgICBhID0gMjU1OworICAgIH0KKworI2RlZmluZSBDSEVDS19QUkVN
VUxfQ09MT1IoYywgYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGlmIChjIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGxl
c3MgdGhhbiB6ZXJvICglZCkuIiwgYyk7ICAgICAgICAgXAorICAgICAgICBjID0gMDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gZWxzZSBpZiAoYyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGdyZWF0
ZXIgdGhhbiBhbHBoYSAoJWQsIGFscGhhPSVkKS4iLCBcCisgICAgICAgICAgICBjLCBhKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGMgPSBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfQorICAgIENIRUNLX1BSRU1VTF9DT0xPUihyLCBhKTsKKyAgICBD
SEVDS19QUkVNVUxfQ09MT1IoZywgYSk7CisgICAgQ0hFQ0tfUFJFTVVMX0NPTE9SKGIsIGEpOwor
I3VuZGVmIENIRUNLX1BSRU1VTF9DT0xPUgorCisgICAgc2QtPmJnX3JlY3QuY29sb3IuciA9IHI7
CisgICAgc2QtPmJnX3JlY3QuY29sb3IuZyA9IGc7CisgICAgc2QtPmJnX3JlY3QuY29sb3IuYiA9
IGI7CisgICAgc2QtPmJnX3JlY3QuY29sb3IuYSA9IGE7CisgICAgZXZhc19vYmplY3RfY29sb3Jf
c2V0KHNkLT5iZ19yZWN0LmJnX3JlY3QsIHNkLT5iZ19yZWN0LmNvbG9yLnIsIHNkLT5iZ19yZWN0
LmNvbG9yLmcsCisgICAgICAgICAgICBzZC0+YmdfcmVjdC5jb2xvci5iLCBzZC0+YmdfcmVjdC5j
b2xvci5hKTsKK30KKworLyoqCisgKiBHZXQgdmlldydzIGJhY2tncm91bmQgcmVjdCBjb2xvcgor
ICoKKyAqIFRoaXMgaXMgdXNlZCBmb3IgZ2V0dGluZyB0aGUgY29sb3Igb2YgdGhlIHJlY3Rhbmds
ZSBiZWhpbmQgdGhlIHZpZXcuIFVubGlrZQorICogd2hhdCBpcyBkb25lIGluIGV3a192aWV3X2Jn
X2NvbG9yX2dldCgpLCB0aGlzIGNvbG9yIGlzIG5vdCBwYXNzZWQgdG8gV2ViQ29yZS4KKyAqIEl0
J3Mgc29sZSBwdXJwb3NlIGlzIGluc3RlYWQgdG8gcHV0IGEgcmVjdGFuZ2xlIGJlaGluZCB0aGUg
dmlldyBpbiBvcmRlciB0bworICogYmUgcG9zc2libGUgdG8gaGF2ZSBkaWZmZXJlbnQgYmFja2dy
b3VuZHMgZm9yIGJvdW5jZXIgZWZmZWN0cyBhbmQgZm9yIGFyZWFzCisgKiBub3QgcmVuZGVyZWQg
eWV0LgorICoKKyAqIEp1c3QgYXMgaW4gRXZhcywgY29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwg
c28gNTAlIHJlZCBpcworICogKDEyOCwgMCwgMCwgMTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEy
OCkhCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkuCisgKiBAcGFyYW0gciB3
aGVyZSB0byByZXR1cm4gcmVkIGNvbG9yIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBnIHdoZXJlIHRv
IHJldHVybiBncmVlbiBjb2xvciBjb21wb25lbnQuCisgKiBAcGFyYW0gYiB3aGVyZSB0byByZXR1
cm4gYmx1ZSBjb2xvciBjb21wb25lbnQuCisgKiBAcGFyYW0gYSB3aGVyZSB0byByZXR1cm4gYWxw
aGEgdmFsdWUuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQoY29uc3QgRXZh
c19PYmplY3QqIG8sIGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKK3sKKyAgICBpZiAo
cikKKyAgICAgICAgKnIgPSAwOworICAgIGlmIChnKQorICAgICAgICAqZyA9IDA7CisgICAgaWYg
KGIpCisgICAgICAgICpiID0gMDsKKyAgICBpZiAoYSkKKyAgICAgICAgKmEgPSAwOworICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QpOworICAgIGlmIChyKQorICAgICAgICAqciA9
IHNkLT5iZ19yZWN0LmNvbG9yLnI7CisgICAgaWYgKGcpCisgICAgICAgICpnID0gc2QtPmJnX3Jl
Y3QuY29sb3IuZzsKKyAgICBpZiAoYikKKyAgICAgICAgKmIgPSBzZC0+YmdfcmVjdC5jb2xvci5i
OworICAgIGlmIChhKQorICAgICAgICAqYSA9IHNkLT5iZ19yZWN0LmNvbG9yLmE7Cit9CisKKy8q
KgogICogU2VhcmNoIHRoZSBnaXZlbiB0ZXh0IHN0cmluZyBpbiBkb2N1bWVudC4KICAqCiAgKiBA
cGFyYW0gbyB2aWV3IG9iamVjdCB3aGVyZSB0byBzZWFyY2ggdGV4dC4KQEAgLTE2MDMsNyArMTcx
NSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZh
c19PYmplY3QqIG8sIGNvbnN0IEV2YXNfRXZlbnRfTQogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAg
ICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwgMCk7CiAKLSAg
ICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6OkludFBvaW50
KHgsIHkpKTsKKyAgICBmbG9hdCB6b29tID0gMS4wOworICAgIGlmIChld2tfdmlld196b29tX2Nh
aXJvX3NjYWxpbmdfZ2V0KG8pKQorICAgICAgICB6b29tID0gZXdrX3ZpZXdfem9vbV9nZXQobyk7
CisKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24gZXYxID0gKmV2OworICAgIGV2MS5jYW52YXMu
eCA9IGV2MS5jYW52YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYxLmNhbnZhcy55
IC8gem9vbTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwgV2Vi
Q29yZTo6SW50UG9pbnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CiAKICAgICBpZiAobWFpbl9mcmFt
ZS0+dmlldygpKSB7CiAgICAgICAgIG1vdXNlX3ByZXNzX2hhbmRsZWQgPQpAQCAtMjE2NCw2ICsy
MjgzLDQ0IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmpl
Y3QqIG8sIEVpbmFfQm9vbCBzZXR0aW5nKQogfQogCiAvKioKKyAqIFF1ZXJ5IGlmIHpvb20gdXNl
cyBjYWlybyBzY2FsaW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRvIHF1ZXJ5IHNl
dHRpbmcuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVzZSBjYWlybyBz
Y2FsaW5nLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3
X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCit7CisgICAgRVdL
X1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgcmV0dXJuIGV3a19mcmFtZV96
b29tX2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoqCisgKiBTZXQg
aWYgem9vbSBzaG91bGQgdXNlIGNhaXJvIHNjYWxpbmcgb3Igbm90LgorICoKKyAqIFRoaXMgZnVu
Y3Rpb24gZW5hYmxlcyB1c2luZyBjYWlybyBzY2FsaW5nIHRvIGRvIHpvb20gaW4vb3V0LCBpbnN0
ZWFkIG9mCisgKiBkZWZhdWx0IHdlYmtpdCB6b29tLiBUaGlzIG1lYW5zIHRoZSBwYWdlIHJlbWFp
bnMgdGhlIHNhbWUsIG5vIHJlbGF5b3V0CisgKiBpcyB0cmlnZ2VyZWQsIGFuZCB3ZSBoYXZlIGEg
ZmFzdGVyIHpvb20gb3BlcmF0aW9uLgorICoKKyAqIFRoZSBjYWlybyBzY2FsaW5nIHpvb20gc2hv
dWxkIGJlIHNldCBiZWZvcmUgYW55IHpvb20gbGV2ZWwgY2hhbmdlCisgKiAoaW4gZmFjdCwgeW91
IHNob3VsZCBzZXQgaXQgYmVmb3JlIGxvYWRpbmcgYW55IHdlYnBhZ2UpLiBJdCdzIG5vdCBzYWZl
CisgKiB0byBjaGFuZ2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBzb21lIHpvb20gbGV2ZWwgY2hhbmdl
cy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRvIGNoYW5nZSBzZXR0aW5nLgorICogQHBhcmFtIHZh
bHVlIEBjIEVJTkFfVFJVRSBpZiBzaG91bGQgdXNlIGNhaXJvIHNjYWxpbmcsCisgICAgICAgICAg
ICAgICAgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RS
VUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBl
d2tfdmlld196b29tX2NhaXJvX3NjYWxpbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
dmFsdWUpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFM
U0UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX2Nh
aXJvX3NjYWxpbmdfc2V0LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gc2QtPmFwaS0+em9vbV9j
YWlyb19zY2FsaW5nX3NldChzZCwgdmFsdWUpOworfQorCisvKioKICAqIEhpbnQgZW5naW5lIHRv
IHByZS1yZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWln
aHQgYmUgYWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4KQEAgLTM5MTcsNiArNDA3NCwxMCBA
QCB2b2lkIGV3a192aWV3X3Njcm9sbChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCBkeCwgRXZh
c19Db29yZCBkeSwgRXZhc19Db29yZCBzeAogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVS
TihzZCwgcHJpdik7CiAgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRVUk4oIWR4ICYmICFkeSk7
CiAKKyAgICBmbG9hdCB6b29tID0gMS4wZjsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9f
c2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKQorICAgICAgICB6b29tID0gZXdrX2ZyYW1lX3pv
b21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChwcml2LCBk
eCwgZHksIHN4ICogem9vbSwgc3kgKiB6b29tLCBzdyAqIHpvb20sIHNoICogem9vbSwgbWFpbl9m
cmFtZSk7CiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApp
bmRleCBjYzJiNGY5N2I3ZDc2NTg4Yzc4Zjc2ZjcwMmYyNjQ1ZGY4NGU2NjY2Li5lZDk0OGMwYWY2
MzY5MTY4MzNhMTEzNTI5OGY3Y2ZhM2U1OGJhZGEyIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5oCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTEwOSw2ICsx
MDksNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCpy
ZXBhaW50c19wcm9jZXNzKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7IC8qKjwgbXVzdCBiZSBk
ZWZpbmVkICovCiAgICAgRWluYV9Cb29sICgqY29udGVudHNfcmVzaXplKShFd2tfVmlld19TbWFy
dF9EYXRhICpzZCwgaW50IHcsIGludCBoKTsKICAgICBFaW5hX0Jvb2wgKCp6b29tX3NldCkoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29v
cmQgY3kpOworICAgIEVpbmFfQm9vbCAoKnpvb21fY2Fpcm9fc2NhbGluZ19zZXQpKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgdmFsdWUpOwogICAgIEVpbmFfQm9vbCAoKnpvb21f
d2Vha19zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3Jk
IGN4LCBFdmFzX0Nvb3JkIGN5KTsKICAgICB2b2lkICgqem9vbV93ZWFrX3Ntb290aF9zY2FsZV9z
ZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKICAg
ICB2b2lkICgqYmdfY29sb3Jfc2V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQg
Y2hhciByLCB1bnNpZ25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5zaWduZWQgY2hhciBh
KTsKQEAgLTI3Myw2ICsyNzQsMTIgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKICAg
ICBFdmFzX09iamVjdCAqbWFpbl9mcmFtZTsgLyoqPCByZWZlcmVuY2UgdG8gbWFpbiBmcmFtZSBv
YmplY3QgKi8KICAgICBFdmFzX09iamVjdCAqYmFja2luZ19zdG9yZTsgLyoqPCByZWZlcmVuY2Ug
dG8gYmFja2luZyBzdG9yZSAqLwogICAgIEV2YXNfT2JqZWN0ICpldmVudHNfcmVjdDsgLyoqPCBy
ZWN0YW5nbGUgdGhhdCBzaG91bGQgcmVjZWl2ZSBtb3VzZSBldmVudHMgKi8KKyAgICBzdHJ1Y3Qg
eworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciByLCBnLCBiLCBh
OworICAgICAgICB9IGNvbG9yOworICAgICAgICBFdmFzX09iamVjdCAqYmdfcmVjdDsKKyAgICB9
IGJnX3JlY3Q7IC8qKjwgYmFja2dyb3VuZCByZWN0YW5nbGUgdG8gc2hvdyBhIGRlc2lyZWQgYmFj
a2dyb3VuZCBjb2xvciBvbiB0aGlzIHZpZXcgKi8KICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEg
Kl9wcml2OyAvKio8IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmICovCiAgICAg
c3RydWN0IHsKICAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAvKio8IGxhc3QgdXNlZCB2
aWV3cG9ydCAqLwpAQCAtMzQ4LDYgKzM1NSw5IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X2VkaXRhYmxlX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKTsKIEVBUEkg
dm9pZCAgICAgICAgIGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIs
IGludCBnLCBpbnQgYiwgaW50IGEpOwogRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfYmdfY29s
b3JfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIsIGludCAqZywgaW50ICpiLCBpbnQg
KmEpOwogCitFQVBJIHZvaWQgICAgICAgICBld2tfdmlld19iZ19yZWN0X2NvbG9yX3NldChFdmFz
X09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworRUFQSSB2b2lkICAgICAg
ICAgZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAq
ciwgaW50ICpnLCBpbnQgKmIsIGludCAqYSk7CisKIEVBUEkgY2hhciAgICAgICAgKmV3a192aWV3
X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2VsZWN0X25vbmUoRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfc2VsZWN0X2FsbChFdmFzX09iamVjdCAqbyk7CkBAIC00MDEsNiArNDExLDggQEAg
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19P
YmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQo
RXZhc19PYmplY3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4
LCBFdmFzX0Nvb3JkIGN5KTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4dF9v
bmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmll
d196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKTsK
K0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3Qg
RXZhc19PYmplY3QgKm8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9jYWlyb19z
Y2FsaW5nX3NldChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwogCiBFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9h
dCB6b29tKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVf
cmFkaXVzKEV2YXNfT2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuYyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Np
bmdsZS5jCmluZGV4IDgwM2IyMTljMzFjMzQwZjg4NWM0YjJlODM4Y2UwNWVlYmZkZDU1ODIuLmY2
NDBkMjAwNGU3NjU3NTMzZGExMmM2ZGVlN2ZlOWU0NWExMzE3YzQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3NpbmdsZS5jCkBAIC0xOSwxMyArMTksMTMgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJld2tfdmlldy5oIgogCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVk
ZSAiRVdlYktpdC5oIgogI2luY2x1ZGUgImV3a19sb2dnaW5nLmgiCiAKICNpbmNsdWRlIDxFdmFz
Lmg+CiAjaW5jbHVkZSA8ZWluYV9zYWZldHlfY2hlY2tzLmg+CisjaW5jbHVkZSA8bWF0aC5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVu
dF9zYyA9IEVXS19WSUVXX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKQEAgLTM2LDYgKzM2LDE2IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfb25fZGVsKHZvaWQgKmRhdGEsIEV2YXMgKmUs
IEV2YXNfT2JqZWN0ICpvLCB2b2lkICplCiAgICAgZXZhc19vYmplY3RfZGVsKGNsaXApOwogfQog
CitzdGF0aWMgdm9pZAorX2V3a192aWV3X3NpbmdsZV9jb250ZW50c19zaXplX2NoYW5nZWRfY2Io
dm9pZCAqZGF0YSwgRXZhc19PYmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgRXZh
c19Db29yZCB3LCBoOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqKWRhdGE7CisKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPmJhY2tp
bmdfc3RvcmUsIE5VTEwsIE5VTEwsICZ3LCAmaCk7CisgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQo
c2QtPl9wcml2LCAwLCAwLCB3LCBoKTsKK30KKwogc3RhdGljIHZvaWQgX2V3a192aWV3X3Npbmds
ZV9zbWFydF9hZGQoRXZhc19PYmplY3QgKm8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAq
c2Q7CkBAIC01MSw2ICs2MSwxMCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X2FkZChFdmFzX09iamVjdCAqbykKIAogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2Fk
ZAogICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIEVWQVNfQ0FMTEJBQ0tfREVMLCBfZXdrX3Zp
ZXdfc2luZ2xlX29uX2RlbCwgY2xpcCk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFj
a19hZGQKKyAgICAgICAgKHNkLT5tYWluX2ZyYW1lLCAiY29udGVudHMsc2l6ZSxjaGFuZ2VkIiwK
KyAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiLCBzZCk7
CiB9CiAKIHN0YXRpYyBFdmFzX09iamVjdCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5n
X3N0b3JlX2FkZChFd2tfVmlld19TbWFydF9EYXRhICpzZCkKQEAgLTc2LDYgKzkwLDExIEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBF
dmFzX0Nvb3JkIHcsIEV2YXNfQ29vCiAgICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChz
ZC0+YmFja2luZ19zdG9yZSwgJngsICZ5LCAwLCAwKTsKICAgICAgICAgZXZhc19vYmplY3RfbW92
ZShjbGlwLCB4LCB5KTsKICAgICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNkLT5t
YWluX2ZyYW1lLCAmY3csICZjaCk7CisgICAgICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19z
Y2FsaW5nX2dldChzZC0+bWFpbl9mcmFtZSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IHpv
b20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAgICAgICAgY3cg
Kj0gem9vbTsKKyAgICAgICAgICAgIGNoICo9IHpvb207CisgICAgICAgIH0KICAgICAgICAgaWYg
KHcgPiBjdykKICAgICAgICAgICAgIHcgPSBjdzsKICAgICAgICAgaWYgKGggPiBjaCkKQEAgLTE5
Nyw2ICsyMTYsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lv
bih1aW50MzJfdCAqaW1hZ2UsIGludCBkeCwgaW50IGR5LCBzaXoKICAgICB9CiB9CiAKK3N0YXRp
YyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBhaW50X2FkZChFd2tfVmll
d19TbWFydF9EYXRhICpzZCwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQg
dywgRXZhc19Db29yZCBoKQoreworICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsK
KyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUp
KSB7CisgICAgICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1h
aW5fZnJhbWUpOworICAgICAgICB4ID0gY2VpbCh4IC8gem9vbSk7CisgICAgICAgIHkgPSBjZWls
KHkgLyB6b29tKTsKKyAgICAgICAgdyA9IGNlaWwodyAvIHpvb20pOworICAgICAgICBoID0gY2Vp
bChoIC8gem9vbSk7CisgICAgICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsKKyAg
ICB9CisgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCB4LCB5LCB3LCBoKTsKK30K
Kwogc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2lu
Z2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCB2b2lkICpwaXhlbHMsIEV2YXNfQ29vcmQgb3cs
IEV2YXNfQ29vcmQgb2gsIGNvbnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3IpCiB7CiAgICAgRXZh
c19Db29yZCBzeCwgc3ksIHN3LCBzaDsKQEAgLTIxMyw3ICsyNDYsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21h
cnRfRGF0YSAqcwogICAgICAgICAvKiBkb3VidCB3ZWJraXQgd291bGQgYmUgc28gc3R1cGlkLi4u
ICovCiAgICAgICAgIERCRygiZnVsbCBwYWdlIHNjcm9sbCAlKzAzZCwlKzAzZC4gY29udmVydCB0
byByZXBhaW50ICVkLCVkICsgJWR4JWQiLAogICAgICAgICAgICAgc3ItPmR4LCBzci0+ZHksIHN4
LCBzeSwgc3csIHNoKTsKLSAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBz
eCwgc3ksIHN3LCBzaCk7CisgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRf
YWRkKHNkLCBzeCwgc3ksIHN3LCBzaCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0
OSw3ICsyODIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxf
cHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5n
X3N0b3JlLCBzeCwgc3ksIHN3LCBzaCArIHNyLT5keSk7CiAKLSAgICAgICAgICAgIGV3a192aWV3
X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3LCAtc3ItPmR5
KTsKKyAgICAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKHNkLCBz
eCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+ZHkpOwogICAgICAgICB9IGVsc2UgaWYgKHNy
LT5keSA+IDApIHsKICAgICAgICAgICAgIERCRygic2Nyb2xsIGRvd246ICUrMDNkLCUrMDNkIHVw
ZGF0ZT0lZCwlZCslZHglZCwgIgogICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVk
IiwKQEAgLTI2MSw3ICsyOTQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Npbmds
ZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAg
ICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNk
LT5iYWNraW5nX3N0b3JlLCBzeCwgc3kgKyBzci0+ZHksIHN3LCBzaCAtIHNyLT5keSk7CiAKLSAg
ICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5LCBzdywgc3It
PmR5KTsKKyAgICAgICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKHNk
LCBzeCwgc3ksIHN3LCBzci0+ZHkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghc3ItPmR5
KSB7CiAgICAgICAgIGlmIChzci0+ZHggPCAwKSB7CkBAIC0yNzUsOSArMzA4LDkgQEAgc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnMKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBk
YXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdyAr
IHNyLT5keCwgc2gpOwogCi0gICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3By
aXYsIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CisgICAgICAgICAgICBfZXdr
X3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBhaW50X2FkZChzZCwgc3ggKyBzdyArIHNyLT5keCwgc3ks
IC1zci0+ZHgsIHNoKTsKICAgICAgICAgfSBlbHNlIGlmIChzci0+ZHggPiAwKSB7Ci0gICAgICAg
ICAgICBEQkcoInNjcm9sbCB1cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisg
ICAgICAgICAgICBEQkcoInNjcm9sbCByaWdodDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVk
eCVkLCAiCiAgICAgICAgICAgICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAogICAgICAgICAg
ICAgICAgIHNyLT5keCwgc3ItPmR5LCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3ItPmR4LCBzaCwK
ICAgICAgICAgICAgICAgICBzeCwgc3ksIHNyLT5keCwgc2gpOwpAQCAtMjg3LDcgKzMyMCw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3Npbmds
ZShFd2tfVmlld19TbWFydF9EYXRhICpzCiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9k
YXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4ICsg
c3ItPmR4LCBzeSwgc3cgLSBzci0+ZHgsIHNoKTsKIAotICAgICAgICAgICAgZXdrX3ZpZXdfcmVw
YWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHNyLT5keCwgc2gpOworICAgICAgICAgICAgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQoc2QsIHN4LCBzeSwgc3ItPmR4LCBzaCk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBFdmFzX0Nvb3JkIG14LCBteSwgbXcs
IG1oLCBheCwgYXksIGF3LCBhaCwgYngsIGJ5LCBidywgYmg7CkBAIC0zMjksOCArMzYyLDggQEAg
c3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xl
KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMKICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywg
c3ItPmR4LCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAKICAgICAgICAgZXZhc19vYmpl
Y3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBteCwgbXksIG13LCBt
aCk7Ci0gICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgsIGF5LCBhdywg
YWgpOwotICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGJ4LCBieSwgYncs
IGJoKTsKKyAgICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQoc2QsIGF4
LCBheSwgYXcsIGFoKTsKKyAgICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9h
ZGQoc2QsIGJ4LCBieSwgYncsIGJoKTsKICAgICB9CiB9CiAKQEAgLTM4MCw2ICs0MTMsMTEgQEAg
c3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3Mo
RXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICAgICAgaCA9IHNkLT52aWV3Lmg7CiAKICAgICAg
ICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZjaCk7
CisgICAgICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChzZC0+bWFpbl9m
cmFtZSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9n
ZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAgICAgICAgY3cgKj0gem9vbTsKKyAgICAgICAgICAg
IGNoICo9IHpvb207CisgICAgICAgIH0KICAgICAgICAgaWYgKHcgPiBjdykKICAgICAgICAgICAg
IHcgPSBjdzsKICAgICAgICAgaWYgKGggPiBjaCkKQEAgLTM5NSw2ICs0MzMsMTMgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1Zp
ZXdfU21hcnRfRGF0YSAqc2QKICAgICBlbHNlCiAgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1B
VF9SR0IyNDsKIAorICAgIGZsb2F0IHpvb20gPSAxLjA7CisgICAgaWYgKGV3a19mcmFtZV96b29t
X2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKSkKKyAgICAgICAgem9vbSA9IGV3a19m
cmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CisKKyAgICBjb25zdCBpbnQgc2NhbGVkX3cg
PSAoaW50KWNlaWwoKG93ICsgMSkgLyB6b29tKTsKKyAgICBjb25zdCBpbnQgc2NhbGVkX2ggPSAo
aW50KWNlaWwoKG9oICsgMSkgLyB6b29tKTsKKwogICAgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9z
dXJmYWNlX2NyZWF0ZV9mb3JfZGF0YQogICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXBpeGVscywg
Zm9ybWF0LCBvdywgb2gsIG93ICogNCk7CiAgICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0
dXMoc3VyZmFjZSk7CkBAIC00MTMsNiArNDU4LDggQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QK
ICAgICAgICAgZ290byBlcnJvcl9jYWlybzsKICAgICB9CiAKKyAgICBjYWlyb19zZXRfYW50aWFs
aWFzKGNhaXJvLCBDQUlST19BTlRJQUxJQVNfTk9ORSk7CisKICAgICBjdHh0ID0gZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9uZXcoc2QtPl9wcml2LCBjYWlybyk7CiAgICAgaWYgKCFjdHh0KSB7CiAg
ICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7CkBAIC00MjAsMTcg
KzQ2NywyMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWlu
dHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhICpzZAogICAgICAgICBnb3RvIGVycm9yX3Bh
aW50X2NvbnRleHQ7CiAgICAgfQogCi0gICAgdGlsZXIgPSBlaW5hX3RpbGVyX25ldyhvdywgb2gp
OworICAgIHRpbGVyID0gZWluYV90aWxlcl9uZXcoc2NhbGVkX3csIHNjYWxlZF9oKTsKICAgICBp
ZiAoIXRpbGVyKSB7Ci0gICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIs
IG93LCBvaCk7CisgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIHNj
YWxlZF93LCBzY2FsZWRfaCk7CiAgICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CiAgICAgICAgIGdv
dG8gZXJyb3JfdGlsZXI7CiAgICAgfQogCisgICAgaW50IHN4LCBzeTsKKyAgICBld2tfZnJhbWVf
c2Nyb2xsX3Bvc19nZXQoc2QtPm1haW5fZnJhbWUsICZzeCwgJnN5KTsKKwogICAgIHByID0gZXdr
X3ZpZXdfcmVwYWludHNfZ2V0KHNkLT5fcHJpdiwgJmNvdW50KTsKICAgICBwcl9lbmQgPSBwciAr
IGNvdW50OwotICAgIGZvciAoOyBwciA8IHByX2VuZDsgcHIrKykKKyAgICBmb3IgKDsgcHIgPCBw
cl9lbmQ7IHByKyspIHsKKyAgICAgICAgREJHKCJQcm9jZXNzaW5nIHJlcGFpbnQ6JWQsJWQrJWR4
JWQgdGlsZXI6JWR4JWQiLCBwci0+eCwgcHItPnksIHByLT53LCBwci0+aCwgc2NhbGVkX3csIHNj
YWxlZF9oKTsKICAgICAgICAgZWluYV90aWxlcl9yZWN0X2FkZCh0aWxlciwgcHIpOworICAgIH0K
IAogICAgIGl0ciA9IGVpbmFfdGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAgICBpZiAoIWl0
cikgewpAQCAtNDM5LDI2ICs0OTEsMzEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICAg
ICAgZ290byBlcnJvcl9pdGVyYXRvcjsKICAgICB9CiAKLSAgICBpbnQgc3gsIHN5OwotICAgIGV3
a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFpbl9mcmFtZSwgJnN4LCAmc3kpOwotCiAgICAg
RUlOQV9JVEVSQVRPUl9GT1JFQUNIKGl0ciwgcikgewotICAgICAgICBFaW5hX1JlY3RhbmdsZSBz
Y3JvbGxlZF9yZWN0ID0gewotICAgICAgICAgICAgci54ICsgc3gsIHIueSArIHN5LAotICAgICAg
ICAgICAgci53LCByLmgKKyAgICAgICAgRWluYV9SZWN0YW5nbGUgcmVwYWludF9yZWN0ID0gewor
ICAgICAgICAgICAgci54IC0gZmxvb3Ioc3ggLyB6b29tKSwKKyAgICAgICAgICAgIHIueSAtIGZs
b29yKHN5IC8gem9vbSksCisgICAgICAgICAgICByLncgKyAyICogZmxvb3IoKHN4ICsgMSkgLyB6
b29tKSwKKyAgICAgICAgICAgIHIuaCArIDIgKiBmbG9vcigoc3kgKyAxKSAvIHpvb20pCiAgICAg
ICAgIH07CiAKKyAgICAgICAgREJHKCJyZXBhaW50X3JlY3Q6JWQsJWQrJWR4JWQgc2Nyb2xsOiVk
LCVkIHpvb206JWYiLCByZXBhaW50X3JlY3QueCwgcmVwYWludF9yZWN0LnksIHJlcGFpbnRfcmVj
dC53LCByZXBhaW50X3JlY3QuaCwgc3gsIHN5LCB6b29tKTsKKwogICAgICAgICBld2tfdmlld19w
YWludF9jb250ZXh0X3NhdmUoY3R4dCk7CiAKLSAgICAgICAgaWYgKChzeCkgfHwgKHN5KSkKLSAg
ICAgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfdHJhbnNsYXRlKGN0eHQsIC1zeCwgLXN5
KTsKKyAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoY3R4dCwgLXN4LCAt
c3kpOworICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKGN0eHQsIHpvb20sIHpv
b20pOwogCi0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChjdHh0LCAmc2Nyb2xs
ZWRfcmVjdCk7Ci0gICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfcGFpbnRfY29udGVudHMo
Y3R4dCwgJnNjcm9sbGVkX3JlY3QpOworICAgICAgICBld2tfdmlld19wYWludF9jb250ZXh0X2Ns
aXAoY3R4dCwgJnJlcGFpbnRfcmVjdCk7CisgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRf
cGFpbnRfY29udGVudHMoY3R4dCwgJnJlcGFpbnRfcmVjdCk7CiAKICAgICAgICAgZXdrX3ZpZXdf
cGFpbnRfY29udGV4dF9yZXN0b3JlKGN0eHQpOwogICAgICAgICBldmFzX29iamVjdF9pbWFnZV9k
YXRhX3VwZGF0ZV9hZGQKLSAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgci54LCByLnks
IHIudywgci5oKTsKKyAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwKKyAgICAgICAgICAg
ICBscmludGYoem9vbSAqIHIueCksCisgICAgICAgICAgICAgbHJpbnRmKHpvb20gKiByLnkpLAor
ICAgICAgICAgICAgIGxyaW50Zih6b29tICogci53KSwKKyAgICAgICAgICAgICBscmludGYoem9v
bSAqIHIuaCkpOwogICAgIH0KICAgICBlaW5hX2l0ZXJhdG9yX2ZyZWUoaXRyKTsKIApAQCAtNTA1
LDEwICs1NjIsMjAgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3pv
b21fd2Vha19zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QsIGYKICAgICB9CiAgICAgZXZhc19v
YmplY3RfbW92ZShjbGlwLCBzZC0+dmlldy54ICsgZHgsIHNkLT52aWV3LnkgKyBkeSk7CiAKLSAg
ICBpZiAoY3cgPCBzZC0+dmlldy53KQotICAgICAgICB3ID0gY3cgKiBzY2FsZTsKLSAgICBpZiAo
Y2ggPCBzZC0+dmlldy5oKQotICAgICAgICBoID0gY2ggKiBzY2FsZTsKKyAgICBpZiAoZXdrX2Zy
YW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7CisgICAgICAgIGN3
ICo9IHpvb207CisgICAgICAgIGNoICo9IHpvb207CisgICAgICAgIGlmIChjdyA8IHcpCisgICAg
ICAgICAgICB3ID0gY3c7CisgICAgICAgIGlmIChjaCA8IGgpCisgICAgICAgICAgICBoID0gY2g7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGN3IDwgc2QtPnZpZXcudykKKyAgICAgICAgICAg
IHcgPSBjdyAqIHNjYWxlOworICAgICAgICBpZiAoY2ggPCBzZC0+dmlldy5oKQorICAgICAgICAg
ICAgaCA9IGNoICogc2NhbGU7CisgICAgfQorCiAgICAgZXZhc19vYmplY3RfcmVzaXplKGNsaXAs
IHcsIGgpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75701</attachid>
            <date>2010-12-06 08:47:35 -0800</date>
            <delta_ts>2010-12-06 09:36:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46258-20101206144717.patch</filename>
            <type>text/plain</type>
            <size>50306</size>
            <attacher name="Alex Bredariol Grilo">abgrilo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDk1NmMxMjhlYzg0NDI0MzNmZDkzZDU2OTY3YjlmYjg2MmJiNWEwYy4uMDYyNTBkZmVhODhiMjRl
N2VkY2Y2MmVkNGQ3OTM5NTI0ZDMzNGVmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0xMi0wNiAgQWxl
eCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdIFdlYkNvcmUgY2hhbmdl
cyBmb3Igc2NhbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDYyNTgKKworICAgICAgICBJbiBvcmRlciB0byBzY2FsZSB0b29sYmFycyBhbmQgaW5u
ZXIgZnJhbWVzIHRvbywgc29tZSBjaGFuZ2VzIHdlcmUKKyAgICAgICAgbmVjZXNzYXJ5IG9uIFdl
YkNvcmUgKG1haW5seSBTY3JvbGxWaWV3LmNwcCkuCisKKyAgICAgICAgVGhlIG1haW4gY2hhbmdl
IHdhcyBpbnRyb2R1Y2luZyBhIG5ldyBhdHRyaWJ1dGUgdG8gdGhlIFNjcm9sbFZpZXcgY2FsbGVk
CisgICAgICAgIHNjYWxlRmFjdG9yLiBUaGlzIGF0dHJpYnV0ZSBpcyB0YWtlbiBpbnRvIGFjY291
bnQgd2hlbiBjaGFuZ2luZyB0aGUgc2Nyb2xsYmFycworICAgICAgICBzaXplLCBvciB3aGVuIHJl
dHVybmluZyB0aGUgdmlzaWJsZUZyYW1lUmVjdC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChP
T1BTISkKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OmxheW91dFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Omxh
eW91dEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRGaXhlZExheW91
dFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0VXNlRml4ZWRMYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0Q29udGVudHNTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9s
bENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OndoZWVsRXZlbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OnNldFNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNj
YWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVl
bEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcDoKKyAgICAg
ICAgKFNjcm9sbGJhckVmbDo6ZnJhbWVSZWN0c0NoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9XaWRnZXRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpmcmFtZVJlY3Rz
Q2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRM
b3dRdWFsaXR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorCiAyMDEwLTEy
LTA2ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCmluZGV4IDY3NDczOTJlNjg5N2M5NGY0Zjc4NmFmZjlkOTY5YTUxMjY5MjBiMmYu
LmIwMzBiNmU0MGZlYjVmNzQ1YjRiODFjNjQyY2VhMGUzODM3ZmI1ZDYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaApAQCAtMTI1LDcgKzEyNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQotICAgICAgICBQbGF0Zm9ybVdoZWVs
RXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopOworICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIEludFBvaW50KTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKaW5kZXggYWI5ZWU4YTIyZmZkMjI1NzUwMWRmMTRhYmE0NmZhYWIyMDYwMWI4YS4u
NzVhOTNiYzhkYjAwZDBhZjIxNWEwMjNhMGUzYmI2ZmQzMTgyOTI1NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCkBAIC01NCw2ICs1NCw3IEBAIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXcoKQogICAg
ICwgbV91c2VGaXhlZExheW91dChmYWxzZSkKICAgICAsIG1fcGFpbnRzRW50aXJlQ29udGVudHMo
ZmFsc2UpCiAgICAgLCBtX2RlbGVnYXRlc1Njcm9sbGluZyhmYWxzZSkKKyAgICAsIG1fc2NhbGVG
YWN0b3IoMS4wZikKIHsKICAgICBwbGF0Zm9ybUluaXQoKTsKIH0KQEAgLTIwOCw3ICsyMDksNyBA
QCB2b2lkIFNjcm9sbFZpZXc6OnNldERlbGVnYXRlc1Njcm9sbGluZyhib29sIGRlbGVnYXRlc1Nj
cm9sbGluZykKIH0KIAogI2lmICFQTEFURk9STShHVEspCi1JbnRSZWN0IFNjcm9sbFZpZXc6OnZp
c2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVTY3JvbGxiYXJzKSBjb25zdAorSW50UmVjdCBT
Y3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoYm9vbCBpbmNsdWRlU2Nyb2xsYmFycywgYm9v
bCB1c2VTY2FsZSkgY29uc3QKIHsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAg
cmV0dXJuIHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGluY2x1ZGVTY3JvbGxiYXJzKTsKQEAg
LTIxNiwyMCArMjE3LDMwIEBAIEludFJlY3QgU2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0
KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CiAgICAgaWYgKHBhaW50c0VudGlyZUNvbnRl
bnRzKCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KDAsIDApLCBjb250ZW50c1Np
emUoKSk7CiAKLSAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChtX3Njcm9sbE9mZnNldC53aWR0
aCgpLCBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSksCi0gICAgICAgICAgICAgICAgICAgSW50U2l6
ZShtYXgoMCwgd2lkdGgoKSAtICh2ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFpbmNsdWRlU2Nyb2xs
YmFycyA/IHZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCkgOiAwKSksIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgpIC0gKGhvcml6b250YWxTY3JvbGxiYXIoKSAm
JiAhaW5jbHVkZVNjcm9sbGJhcnMgPyBob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpIDog
MCkpKSk7CisgICAgaW50IHcgPSB3aWR0aCgpIC0gKHZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIWlu
Y2x1ZGVTY3JvbGxiYXJzID8gdmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKSA6IDApOworICAg
IGludCBoID0gaGVpZ2h0KCkgLSAoaG9yaXpvbnRhbFNjcm9sbGJhcigpICYmICFpbmNsdWRlU2Ny
b2xsYmFycyA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCkgOiAwKTsKKworICAgIGlm
ICh1c2VTY2FsZSkgeworICAgICAgICBmbG9hdCBzY2FsZSA9ICh0aGlzID09IHJvb3QoKSkgPyBz
Y2FsZUZhY3RvcigpIDogMS4wZjsKKyAgICAgICAgcmV0dXJuIEludFJlY3Qoc3RhdGljX2Nhc3Q8
aW50PihjZWlsKG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkgLyBzY2FsZSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwobV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkg
LyBzY2FsZSkpLAorICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgc3RhdGljX2Nhc3Q8aW50
PihjZWlsKHcgLyBzY2FsZSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIHN0YXRp
Y19jYXN0PGludD4oY2VpbChoIC8gc2NhbGUpKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dHVybiBJbnRSZWN0KG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCksIG1fc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgdyksIG1heCgwLCBoKSk7CisgICAg
fQogfQogI2VuZGlmCiAKIGludCBTY3JvbGxWaWV3OjpsYXlvdXRXaWR0aCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91
dCA/IHZpc2libGVXaWR0aCgpIDogbV9maXhlZExheW91dFNpemUud2lkdGgoKTsKKyAgICByZXR1
cm4gbV9maXhlZExheW91dFNpemUuaXNFbXB0eSgpIHx8ICFtX3VzZUZpeGVkTGF5b3V0ID8gdmlz
aWJsZVdpZHRoKCkgKiBzY2FsZUZhY3RvcigpIDogbV9maXhlZExheW91dFNpemUud2lkdGgoKTsK
IH0KIAogaW50IFNjcm9sbFZpZXc6OmxheW91dEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZml4ZWRMYXlvdXRTaXplLmlzRW1wdHkoKSB8fCAhbV91c2VGaXhlZExheW91dCA/IHZpc2li
bGVIZWlnaHQoKSA6IG1fZml4ZWRMYXlvdXRTaXplLmhlaWdodCgpOworICAgIHJldHVybiBtX2Zp
eGVkTGF5b3V0U2l6ZS5pc0VtcHR5KCkgfHwgIW1fdXNlRml4ZWRMYXlvdXQgPyB2aXNpYmxlSGVp
Z2h0KCkgKiBzY2FsZUZhY3RvcigpIDogbV9maXhlZExheW91dFNpemUuaGVpZ2h0KCk7CiB9CiAK
IEludFNpemUgU2Nyb2xsVmlldzo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKQEAgLTI3OCw5ICsy
ODksMTAgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYg
bmV3U2l6ZSkKIAogSW50UG9pbnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3QKIHsKLSAgICBJbnRQb2ludCBtYXhpbXVtT2Zmc2V0KGNvbnRlbnRzV2lkdGgoKSAtIHZp
c2libGVXaWR0aCgpIC0gbV9zY3JvbGxPcmlnaW4ueCgpLCBjb250ZW50c0hlaWdodCgpIC0gdmlz
aWJsZUhlaWdodCgpIC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKKyAgICBJbnRTaXplIG1heGltdW1P
ZmZzZXQoY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkgLSBtX3Njcm9sbE9yaWdpbi54
KCksIGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBtX3Njcm9sbE9yaWdpbi55
KCkpOworICAgIG1heGltdW1PZmZzZXQuc2NhbGUoc2NhbGVGYWN0b3IoKSk7CiAgICAgbWF4aW11
bU9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgcmV0dXJuIG1heGltdW1PZmZzZXQ7
CisgICAgcmV0dXJuIEludFBvaW50KG1heGltdW1PZmZzZXQud2lkdGgoKSwgbWF4aW11bU9mZnNl
dC5oZWlnaHQoKSk7CiB9CiAKIEludFBvaW50IFNjcm9sbFZpZXc6Om1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0CkBAIC0zNjIsMTIgKzM3NCwyNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKIAogICAgIEludFBvaW50
IG5ld1Njcm9sbFBvc2l0aW9uID0gYWRqdXN0U2Nyb2xsUG9zaXRpb25XaXRoaW5SYW5nZShzY3Jv
bGxQb2ludCk7CiAKLSAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24o
KSkKKyAgICBJbnRQb2ludCBzY3JvbGxQb3M7CisgICAgc2Nyb2xsUG9zLnNldFgobV9zY3JvbGxP
ZmZzZXQud2lkdGgoKSk7CisgICAgc2Nyb2xsUG9zLnNldFkobV9zY3JvbGxPZmZzZXQuaGVpZ2h0
KCkpOworICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3JvbGxQb3MpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHVwZGF0ZVNjcm9sbGJhcnMoSW50U2l6ZShuZXdTY3JvbGxQb3NpdGlvbi54
KCksIG5ld1Njcm9sbFBvc2l0aW9uLnkoKSkpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNjcm9s
bEJ5KGNvbnN0IEludFNpemUmIHMpCit7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zOworICAgIHNj
cm9sbFBvcy5zZXRYKG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkpOworICAgIHNjcm9sbFBvcy5zZXRZ
KG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKTsKKworICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9s
bFBvcyArIHMpOworfQorCiBib29sIFNjcm9sbFZpZXc6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBpZiAocGxh
dGZvcm1XaWRnZXQoKSkKQEAgLTQ5MSw3ICs1MTUsMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAKICAgICBpZiAobV9o
b3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVX
aWR0aCgpOwotICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVu
dHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOworICAgICAgICBpbnQgY29udGVudHNXID0gY29udGVu
dHNXaWR0aCgpOworICAgICAgICBpZiAodGhpcyA9PSByb290KCkpIHsKKyAgICAgICAgICAgIGNv
bnRlbnRzVyAqPSBzY2FsZUZhY3RvcigpOworICAgICAgICAgICAgY2xpZW50V2lkdGggKj0gc2Nh
bGVGYWN0b3IoKTsKKyAgICAgICAgfQorICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNl
dEVuYWJsZWQoY29udGVudHNXID4gY2xpZW50V2lkdGgpOwogICAgICAgICBpbnQgcGFnZVN0ZXAg
PSBtYXgobWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVw
V2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5Q
YWdlcygpKSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6b250YWxTY3JvbGxi
YXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdCA9IEludFJlY3QoMCwK
QEAgLTUwNSw3ICs1MzQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHBy
ZXNzZWQpCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52
YWxpZGF0aW9uKHRydWUpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN0ZXBz
KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwotICAgICAgICBtX2hv
cml6b250YWxTY3JvbGxiYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIGNvbnRlbnRzV2lk
dGgoKSk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGll
bnRXaWR0aCwgY29udGVudHNXKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRW
YWx1ZShzY3JvbGwud2lkdGgoKSArIG1fc2Nyb2xsT3JpZ2luLngoKSwgU2Nyb2xsYmFyOjpOb3RG
cm9tU2Nyb2xsQW5pbWF0b3IpOwogICAgICAgICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkK
ICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRp
b24oZmFsc2UpOyAKQEAgLTUxMyw3ICs1NDIsMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVT
Y3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAKICAgICBpZiAobV92ZXJ0
aWNhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gdmlzaWJsZUhlaWdo
dCgpOwotICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVp
Z2h0KCkgPiBjbGllbnRIZWlnaHQpOworICAgICAgICBpbnQgY29udGVudHNIID0gY29udGVudHNI
ZWlnaHQoKTsKKyAgICAgICAgaWYgKHRoaXMgPT0gcm9vdCgpKSB7CisgICAgICAgICAgICBjb250
ZW50c0ggKj0gc2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIGNsaWVudEhlaWdodCAqPSBzY2Fs
ZUZhY3RvcigpOworICAgICAgICB9CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldEVu
YWJsZWQoY29udGVudHNIID4gY2xpZW50SGVpZ2h0KTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0g
bWF4KG1heDxpbnQ+KGNsaWVudEhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBX
aGVuUGFnaW5nKCksIGNsaWVudEhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5Q
YWdlcygpKSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgdkJhclJlY3QgPSBJbnRSZWN0KHdpZHRo
KCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLCAKQEAgLTUyNyw3ICs1NjEsNyBAQCB2
b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9m
ZnNldCkKICAgICAgICAgaWYgKG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCiAgICAgICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKICAgICAg
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5l
U3RlcCgpLCBwYWdlU3RlcCk7Ci0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFByb3Bv
cnRpb24oY2xpZW50SGVpZ2h0LCBjb250ZW50c0hlaWdodCgpKTsKKyAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSCk7CiAgICAg
ICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC5oZWlnaHQoKSArIG1fc2Ny
b2xsT3JpZ2luLnkoKSwgU2Nyb2xsYmFyOjpOb3RGcm9tU2Nyb2xsQW5pbWF0b3IpOwogICAgICAg
ICBpZiAobV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3Jv
bGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKQEAgLTU2Miw4ICs1OTYsOSBA
QCB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQogICAgIC8vIHdpdGggdGhlIGNsaXAgcmVjdCBldmVyeSB0aW1lIHRvIGtlZXAgaXQgc21v
b3RoLgogICAgIEludFJlY3QgY2xpcFJlY3QgPSB3aW5kb3dDbGlwUmVjdCgpOwogICAgIEludFJl
Y3Qgc2Nyb2xsVmlld1JlY3QgPSBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KEludFJlY3QoMCwg
MCwgdmlzaWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSkpOwotICAgIEludFJlY3QgdXBkYXRl
UmVjdCA9IGNsaXBSZWN0OwotICAgIHVwZGF0ZVJlY3QuaW50ZXJzZWN0KHNjcm9sbFZpZXdSZWN0
KTsKKyAgICBJbnRSZWN0IHVwZGF0ZVJlY3QgPSBzY3JvbGxWaWV3UmVjdDsKKyAgICBpZiAoIXJv
b3QoKS0+cGFpbnRzRW50aXJlQ29udGVudHMoKSkKKyAgICAgICAgdXBkYXRlUmVjdC5pbnRlcnNl
Y3QoY2xpcFJlY3QpOwogCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgd2luZG93IChub3QgdGhlIGJh
Y2tpbmcgc3RvcmUpLgogICAgIGhvc3RXaW5kb3coKS0+aW52YWxpZGF0ZVdpbmRvdyh1cGRhdGVS
ZWN0LCBmYWxzZSAvKmltbWVkaWF0ZSovKTsKQEAgLTczMSw5ICs3NjYsMTMgQEAgdm9pZCBTY3Jv
bGxWaWV3Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIAogICAgIC8vIEFjY2Vw
dCB0aGUgZXZlbnQgaWYgd2UgaGF2ZSBhIHNjcm9sbGJhciBpbiB0aGF0IGRpcmVjdGlvbiBhbmQg
Y2FuIHN0aWxsCiAgICAgLy8gc2Nyb2xsIGFueSBmdXJ0aGVyLgorICAgIEludFBvaW50IHNjcm9s
bFBvczsKKyAgICBzY3JvbGxQb3Muc2V0WChtX3Njcm9sbE9mZnNldC53aWR0aCgpKTsKKyAgICBz
Y3JvbGxQb3Muc2V0WShtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSk7CisKICAgICBmbG9hdCBkZWx0
YVggPSBtX2hvcml6b250YWxTY3JvbGxiYXIgPyBlLmRlbHRhWCgpIDogMDsKICAgICBmbG9hdCBk
ZWx0YVkgPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyID8gZS5kZWx0YVkoKSA6IDA7Ci0gICAgSW50U2l6
ZSBtYXhTY3JvbGxEZWx0YSA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRp
b24oKTsKKyAgICBJbnRTaXplIG1heFNjcm9sbERlbHRhID0gbWF4aW11bVNjcm9sbFBvc2l0aW9u
KCkgLSBzY3JvbGxQb3M7CiAgICAgaWYgKChkZWx0YVggPCAwICYmIG1heFNjcm9sbERlbHRhLndp
ZHRoKCkgPiAwKQogICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBzY3JvbGxPZmZzZXQoKS53aWR0
aCgpID4gMCkKICAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4U2Nyb2xsRGVsdGEuaGVpZ2h0
KCkgPiAwKQpAQCAtNzc3LDYgKzgxNiw5IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpCiAKIHZvaWQgU2Nyb2xsVmlldzo6ZnJhbWVSZWN0c0No
YW5nZWQoKQogeworICAgIFdpZGdldDo6ZnJhbWVSZWN0c0NoYW5nZWQoKTsKKyAgICB1cGRhdGVT
Y3JvbGxiYXJzKHNjcm9sbE9mZnNldCgpKTsKKwogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5kZXggN2U4NDZiYzM5ZThjMmU3
OGRjZjQ4ZTdmOWRjYjYzOTg5YjMxOGQ1OC4uZTY4ZTQwN2U0ZjM0NzQ0ZjM1NjU0NGJiNmEwMmM3
YjE2YWViNDM5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTEzNCw3ICsxMzQsOSBAQCBwdWJs
aWM6CiAgICAgLy8gaW5jbHVkZWQuCiAgICAgLy8gSW4gdGhlIHNpdHVhdGlvbiB0aGUgY2xpZW50
IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsaW5nIChpZS4gd2l0aCBhIHRpbGVkIGJhY2tp
bmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQogICAgIC8vIHRoZSBhY3R1YWxWaXNpYmxl
Q29udGVudFJlY3QgaW5zdGVhZCwgdGhvdWdoIHRoaXMgbXVzdCBiZSB1cGRhdGVkIG1hbnVhbGx5
LCBlLmcgYWZ0ZXIgcGFubmluZyBlbmRzLgotICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBmYWxzZSkgY29uc3Q7CisgICAgLy8gSXQgaXMgYWxz
byBwb3NzaWJsZSB0byBzcGVjaWZ5IGlmIHRoZSBjdXJyZW50IHNjYWxlIGxldmVsIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGluIHRoZQorICAgIC8vIHZhbHVlcyAoYnkgZGVmYXVsdCwgaXQgaXMpLgor
ICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBm
YWxzZSwgYm9vbCB1c2VTY2FsZSA9IHRydWUpIGNvbnN0OwogICAgIEludFJlY3QgYWN0dWFsVmlz
aWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hY3R1YWxWaXNpYmxlQ29udGVudFJl
Y3QuaXNFbXB0eSgpID8gdmlzaWJsZUNvbnRlbnRSZWN0KCkgOiBtX2FjdHVhbFZpc2libGVDb250
ZW50UmVjdDsgfQogICAgIHZvaWQgc2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIGFjdHVhbFZpc2libGVDb250ZW50UmVjdCkgeyBtX2FjdHVhbFZpc2libGVDb250ZW50
UmVjdCA9IGFjdHVhbFZpc2libGVDb250ZW50UmVjdDsgfQogICAgIGludCB2aXNpYmxlV2lkdGgo
KSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9CkBAIC0xNjgs
NyArMTcwLDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBmb3Igc2Nyb2xsaW5n
IHRoZSB2aWV3LgogICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsK
LSAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmIHMpIHsgcmV0dXJuIHNldFNjcm9sbFBv
c2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBzKTsgfQorICAgIHZvaWQgc2Nyb2xsQnkoY29uc3Qg
SW50U2l6ZSYgcyk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNjcm9sbHMgYnkgbGluZXMsIHBh
Z2VzIG9yIHBpeGVscy4KICAgICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdy
YW51bGFyaXR5KTsKQEAgLTE5NSw2ICsxOTcsOSBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHB1cnBv
c2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byBhbnN3ZXIgd2hldGhlciBvciBub3QgdGhlIHNjcm9s
bCB2aWV3IGlzIGN1cnJlbnRseSB2aXNpYmxlLiBBbmltYXRpb25zIGFuZCBwYWludGluZyB1cGRh
dGVzIGNhbiBiZSBzdXNwZW5kZWQgaWYKICAgICAvLyB3ZSBrbm93IHRoYXQgd2UgYXJlIGVpdGhl
ciBub3QgaW4gYSB3aW5kb3cgcmlnaHQgbm93IG9yIGlmIHRoYXQgd2luZG93IGlzIG5vdCB2aXNp
YmxlLgogICAgIGJvb2wgaXNPZmZzY3JlZW4oKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2NhbGVG
YWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpIHsgbV9zY2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yOyB9
CisgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlRmFjdG9yOyB9
CiAgICAgCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGVuYWJsZSBzY3JvbGxi
YXJzIHRvIGF2b2lkIHdpbmRvdyByZXNpemVyIGNvbnRyb2xzIHRoYXQgb3ZlcmxhcCB0aGUgc2Ny
b2xsIHZpZXcuIFRoaXMgaGFwcGVucyBvbiBNYWMKICAgICAvLyBmb3IgZXhhbXBsZS4KQEAgLTMz
Myw2ICszMzgsOCBAQCBwcml2YXRlOgogICAgIC8vIHZlcnRpY2FsLXJsIC8gcnRsICAgICAgICAg
ICAgWUVTICAgICAgICAgICAgICAgICAgICAgWUVTCiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmln
aW47CiAKKyAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOworCiAgICAgdm9pZCBpbml0KCk7CiAgICAg
dm9pZCBkZXN0cm95KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtV2hlZWxFdmVudEVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVdoZWVs
RXZlbnRFZmwuY3BwCmluZGV4IDcwNGRiMzhhMmI4NzdlOWE4YTg0YTE5ODg4NzI5NTUxMWYwNDJi
ODAuLjRlNmNjZTE3NGZjZTI2MGMwNjRhOGMyYjExNGUyMTUwNzc1OGNiMWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtV2hlZWxFdmVudEVmbC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1XaGVlbEV2ZW50RWZsLmNwcApAQCAtNDIsOCArNDIs
OCBAQCBlbnVtIHsKICAgICBIb3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gMQogfTsKIAotUGxh
dGZvcm1XaGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCogZXYpCi0gICAgOiBtX3Bvc2l0aW9uKEludFBvaW50KGV2LT5jYW52YXMueCwgZXYt
PmNhbnZhcy55KSkKK1BsYXRmb3JtV2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2LCBJbnRQb2ludCBwb3MpCisgICAgOiBtX3Bvc2l0
aW9uKEludFBvaW50KGV2LT5jYW52YXMueCAtIHBvcy54KCksIGV2LT5jYW52YXMueSAtIHBvcy55
KCkpKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihJbnRQb2ludChldi0+Y2FudmFzLngsIGV2LT5j
YW52YXMueSkpCiAgICAgLCBtX2dyYW51bGFyaXR5KFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50KQog
ICAgICwgbV9pc0FjY2VwdGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhckVmbC5j
cHAKaW5kZXggMjgyY2E3Y2JjMWM3MWMyYWIzMTdjZjE3ZGY2YjdiNzkxYjg5ZGM4Ni4uOGMzMjBh
ZGNmYjdlOTRiZGY4ZGIzOGM0ZDZjMzIyMjcyYTdiNjg1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyRWZsLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9T
Y3JvbGxiYXJFZmwuY3BwCkBAIC0yMDUsOSArMjA1LDE1IEBAIHZvaWQgU2Nyb2xsYmFyRWZsOjpm
cmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgZWxzZQogICAgICAgICByZWN0LnNldExvY2F0aW9uKHBh
cmVudCgpLT5jb250ZW50c1RvV2luZG93KHJlY3QubG9jYXRpb24oKSkpOwogCisgICAgZmxvYXQg
c2NhbGU7CisgICAgaWYgKHJvb3QoKSA9PSBwYXJlbnQoKSkKKyAgICAgICAgc2NhbGUgPSAxLjBm
OworICAgIGVsc2UKKyAgICAgICAgc2NhbGUgPSByb290KCktPnNjYWxlRmFjdG9yKCk7CisKICAg
ICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQocm9vdCgpLT5ldmFzT2JqZWN0KCksICZ4LCAmeSwg
MCwgMCk7Ci0gICAgZXZhc19vYmplY3RfbW92ZShvLCB4ICsgcmVjdC54KCksIHkgKyByZWN0Lnko
KSk7Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKG8sIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSk7CisgICAgZXZhc19vYmplY3RfbW92ZShvLCB4ICsgcmVjdC54KCkgKiBzY2FsZSwgeSArIHJl
Y3QueSgpICogc2NhbGUpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShvLCByZWN0LndpZHRoKCkg
KiBzY2FsZSwgcmVjdC5oZWlnaHQoKSAqIHNjYWxlKTsKIH0KIAogdm9pZCBTY3JvbGxiYXJFZmw6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDY0MGU2ZTM3M2E3NDQ1MDY3MGFkMDk3NGQz
NGE1NmU0YmFjNzZjNmQuLmU0OThmZWIxM2MxNDU1ZTBmNzNiMjY5NGE1ZDVhMWMwYTI3NzRiM2Mg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcApAQCAtMTk1LDkgKzE5NSwxMCBAQCB2b2lk
IFdpZGdldDo6ZnJhbWVSZWN0c0NoYW5nZWQoKQogICAgIGVsc2UKICAgICAgICAgcmVjdC5zZXRM
b2NhdGlvbihwYXJlbnQoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkpKTsKIAor
ICAgIGZsb2F0IHNjYWxlID0gcm9vdCgpLT5zY2FsZUZhY3RvcigpOwogICAgIGV2YXNfb2JqZWN0
X2dlb21ldHJ5X2dldChyb290KCktPmV2YXNPYmplY3QoKSwgJngsICZ5LCAwLCAwKTsKLSAgICBl
dmFzX29iamVjdF9tb3ZlKG8sIHggKyByZWN0LngoKSwgeSArIHJlY3QueSgpKTsKLSAgICBldmFz
X29iamVjdF9yZXNpemUobywgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBldmFz
X29iamVjdF9tb3ZlKG8sIHggKyByZWN0LngoKSAqIHNjYWxlLCB5ICsgcmVjdC55KCkgKiBzY2Fs
ZSk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG8sIHJlY3Qud2lkdGgoKSAqIHNjYWxlLCByZWN0
LmhlaWdodCgpICogc2NhbGUpOwogfQogCiB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9vbCBmb2N1
c2VkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRjMjhmZWU4MDU0Y2ExZjg5ZWI2
ZmJiZTUyZTIzMzU3MzVlZTA2ZDQuLmE0MTIwODEwOTExMDE4MDdlMjk4Y2QyMTQ1NWYxM2EwODQ5
MTljNTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE0NTksNyArMTQ1OSwxMCBA
QCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGJvb2wgc2Nyb2xsVG9BbmNob3IsCiAgICAgfSBlbHNlIGlmICghcGFyZW50TGF5ZXIgJiYg
cmVuZGVyZXIoKS0+aXNCb3goKSAmJiByZW5kZXJCb3goKS0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlT
Y3JvbGxlZChzY3JvbGxUb0FuY2hvcikpIHsKICAgICAgICAgaWYgKGZyYW1lVmlldykgewogICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKS0+b3duZXJFbGVtZW50KCkgJiYgcmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVt
ZW50KCktPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBzY2FsZSA9IGZyYW1l
Vmlldy0+cm9vdCgpLT5zY2FsZUZhY3RvcigpOwogICAgICAgICAgICAgICAgIEludFJlY3Qgdmll
d1JlY3QgPSBmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAgICAg
IHZpZXdSZWN0LnNldFdpZHRoKHZpZXdSZWN0LndpZHRoKCkgKiBzY2FsZSk7CisgICAgICAgICAg
ICAgICAgdmlld1JlY3Quc2V0SGVpZ2h0KHZpZXdSZWN0LmhlaWdodCgpICogc2NhbGUpOwogICAg
ICAgICAgICAgICAgIEludFJlY3QgciA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgcmVjdCwg
YWxpZ25YLCBhbGlnblkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHhPZmZz
ZXQgPSByLngoKTsKQEAgLTE0NjgsMTMgKzE0NzEsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHNjcm9sbFRvQW5jaG9y
LAogICAgICAgICAgICAgICAgIHhPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1lVmlldy0+Y29udGVu
dHNXaWR0aCgpLCB4T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgeU9mZnNldCA9IG1heCgwLCBt
aW4oZnJhbWVWaWV3LT5jb250ZW50c0hlaWdodCgpLCB5T2Zmc2V0KSk7CiAKLSAgICAgICAgICAg
ICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHhPZmZzZXQsIHlPZmZz
ZXQpKTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBvc2l0aW9uKEludFBv
aW50KHhPZmZzZXQgKiBzY2FsZSwgeU9mZnNldCAqIHNjYWxlKSk7CiAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVu
ZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFgo
cmVjdC54KCkgLSBmcmFtZVZpZXctPnNjcm9sbFgoKSArIGZyYW1lVmlldy0+eCgpKTsKICAgICAg
ICAgICAgICAgICBuZXdSZWN0LnNldFkocmVjdC55KCkgLSBmcmFtZVZpZXctPnNjcm9sbFkoKSAr
IGZyYW1lVmlldy0+eSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
SW50UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAg
ICAgICAgICAgICAgZmxvYXQgc2NhbGUgPSBmcmFtZVZpZXctPnJvb3QoKS0+c2NhbGVGYWN0b3Io
KTsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LT52aXNpYmxl
Q29udGVudFJlY3QodHJ1ZSk7CiAgICAgICAgICAgICAgICAgSW50UmVjdCByID0gZ2V0UmVjdFRv
RXhwb3NlKHZpZXdSZWN0LCByZWN0LCBhbGlnblgsIGFsaWduWSk7CisgICAgICAgICAgICAgICAg
ci5zY2FsZShzY2FsZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZnJhbWVW
aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihyLmxvY2F0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL0NoYW5nZUxvZyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGNmYjJmMTE4OWU0
MDcxY2RjYTcwMjdlODFiNmZkYTE3OGVlMzI0OTAuLmZlYWM5OGJlOTk4N2IyODY1MzI2MzliMzM2
Y2FjYzZiZGEwOTU2OTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMTItMDYgIEFsZXggQnJl
ZGFyaW9sIEdyaWxvICA8YWJncmlsb0Bwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBBZGQgc3VwcG9ydCBmb3Igc2Nh
bGluZyB0aGUgY29udGVudHMgaW5zdGVhZCBvZiB6b29taW5nLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYyNTgKKworICAgICAgICBDdXJyZW50bHkg
d2Ugb25seSBzdXBwb3J0IHpvb21pbmcsIG5vdCBzY2FsaW5nLiBUaGlzIHBhdGNoIGltcGxlbWVu
dHMKKyAgICAgICAgc2NhbGluZyBvbiBFRkwgcG9ydCwgdXNpbmcgdGhlIENhaXJvIHNjYWxpbmcg
YWxnb3JpdGhtLgorCisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tf
ZnJhbWVfem9vbV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fc2V0KToKKyAgICAgICAg
KGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV96
b29tX2NhaXJvX3NjYWxpbmdfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9zY3JvbGxfcG9zX2dl
dCk6CisgICAgICAgIChld2tfZnJhbWVfZmVlZF9tb3VzZV93aGVlbCk6CisgICAgICAgIChld2tf
ZnJhbWVfZmVlZF9tb3VzZV9kb3duKToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNlX3Vw
KToKKyAgICAgICAgKGV3a19mcmFtZV9mZWVkX21vdXNlX21vdmUpOgorICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuaDoKKyAgICAgICAgKiBld2svZXdrX3ByaXZhdGUuaDoKKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29t
X3NldCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV9jYWlyb19zY2FsaW5nX3NldCk6
CisgICAgICAgIChld2tfdmlld19iYXNlX3NtYXJ0X3NldCk6CisgICAgICAgIChld2tfdmlld19i
Z19yZWN0X2NvbG9yX3NldCk6CisgICAgICAgIChld2tfdmlld19iZ19yZWN0X2NvbG9yX2dldCk6
CisgICAgICAgIChld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVudCk6CisgICAgICAg
IChld2tfdmlld196b29tX2NhaXJvX3NjYWxpbmdfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pv
b21fY2Fpcm9fc2NhbGluZ19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2Nyb2xsKToKKyAgICAg
ICAgKiBld2svZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmM6Cisg
ICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYik6CisgICAg
ICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBh
aW50X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3Npbmds
ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MpOgor
ICAgICAgICAoX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29tX3dlYWtfc2V0KToKKwogMjAxMC0x
Mi0wMyAgQWxleCBCcmVkYXJpb2wgR3JpbG8gIDxhYmdyaWxvQHByb2Z1c2lvbi5tb2JpPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwIGIvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA1
MDc2YmU1ZDk0NGRjODQyNmJkMzU5NzYxNWI1M2MwYTZmZjZlYWEyLi5mMDUwMTJlNTU1ODg2Yzg5
ZjMxMjg2MWNiYWUzY2QzYzczYjhlZGFhIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTcxLDYgKzcx
LDcgQEAgc3RydWN0IEV3a19GcmFtZV9TbWFydF9EYXRhIHsKICAgICAgICAgRXZhc19Db29yZCB3
LCBoOwogICAgIH0gY29udGVudHNfc2l6ZTsKICAgICBFaW5hX0Jvb2wgdGV4dFpvb206MTsKKyAg
ICBFaW5hX0Jvb2wgY2Fpcm9fc2NhbGluZzoxOwogICAgIEVpbmFfQm9vbCBlZGl0YWJsZToxOwog
fTsKIApAQCAtMTAyMCwxMCArMTAyMSwxNiBAQCBmbG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIC0xLjApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IC0xLjApOworICAgIGZsb2F0IHJldDsKIAotICAgIGlmIChzZC0+dGV4dFpvb20pCi0gICAgICAg
IHJldHVybiBzZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCk7Ci0gICAgcmV0dXJuIHNkLT5mcmFt
ZS0+cGFnZVpvb21GYWN0b3IoKTsKKyAgICBpZiAoc2QtPmNhaXJvX3NjYWxpbmcpCisgICAgICAg
IHJldCA9IHNkLT5mcmFtZS0+dmlldygpLT5zY2FsZUZhY3RvcigpOworICAgIGVsc2UgaWYgKHNk
LT50ZXh0Wm9vbSkKKyAgICAgICAgcmV0ID0gc2QtPmZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwor
ICAgIGVsc2UKKyAgICAgICAgcmV0ID0gc2QtPmZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworCisg
ICAgcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC0xMDM1LDEyICsxMDQyLDE1IEBAIGZsb2F0IGV3
a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlLgogICoKICAqIEBz
ZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV96b29t
X2NhaXJvX3NjYWxpbmdfc2V0KCkKICAqLwogRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3NldChF
dmFzX09iamVjdCogbywgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHNkLT50ZXh0Wm9vbSkKKyAgICBp
ZiAoc2QtPmNhaXJvX3NjYWxpbmcpCisgICAgICAgIHNkLT5mcmFtZS0+dmlldygpLT5zZXRTY2Fs
ZUZhY3Rvcih6b29tKTsKKyAgICBlbHNlIGlmIChzZC0+dGV4dFpvb20pCiAgICAgICAgIHNkLT5m
cmFtZS0+c2V0VGV4dFpvb21GYWN0b3Ioem9vbSk7CiAgICAgZWxzZQogICAgICAgICBzZC0+ZnJh
bWUtPnNldFBhZ2Vab29tRmFjdG9yKHpvb20pOwpAQCAtMTA2NCw3ICsxMDc0LDcgQEAgRWluYV9C
b29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiAg
KiBTZXQgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBhbmQgbm90IG90aGVyIGVs
ZW1lbnRzLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIHRvIGNoYW5nZSBzZXR0aW5nLgotICogQHBh
cmFtIHNldHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gc2hvdWxkIGp1c3QgYmUgYXBwbGllZCB0
byB0ZXh0LgorICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgYXBw
bGllcyB0byB0ZXh0IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCiAgKgogICogQHJldHVybiBAYyBF
SU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCiAgKi8KQEAgLTEw
ODUsNiArMTA5NSw0MCBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChF
dmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCiB9CiAKIC8qKgorICogUXVlcnkgaWYg
em9vbSB1c2VzIGNhaXJvIHNjYWxpbmcgb3Igbm90LgorICoKKyAqIEBwYXJhbSBvIGZyYW1lIHRv
IHF1ZXJ5IHNldHRpbmcuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVz
ZSBjYWlybyBzY2FsaW5nLCBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29s
IGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKQor
eworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAg
ICByZXR1cm4gc2QtPmNhaXJvX3NjYWxpbmc7Cit9CisKKy8qKgorICogU2V0IGlmIHpvb20gc2hv
dWxkIHVzZSBjYWlybyBzY2FsaW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSB0byBj
aGFuZ2Ugc2V0dGluZy4KKyAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiBzaG91bGQg
dXNlIGNhaXJvIHNjYWxpbmcsCisgICAgICAgICAgICAgICAgICBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZS4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBAYyBFSU5BX0ZB
TFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxp
bmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZykKK3sKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CisgICAgc2V0dGluZyA9
ICEhc2V0dGluZzsKKyAgICBpZiAoc2QtPmNhaXJvX3NjYWxpbmcgPT0gc2V0dGluZykKKyAgICAg
ICAgcmV0dXJuIEVJTkFfVFJVRTsKKworICAgIHNkLT5jYWlyb19zY2FsaW5nID0gc2V0dGluZzsK
KyAgICByZXR1cm4gRUlOQV9UUlVFOworfQorCisvKioKICAqIEZyZWUgaGl0IHRlc3QgY3JlYXRl
ZCB3aXRoIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoKS4KICAqCiAgKiBAcGFyYW0gaGl0X3Rlc3Qg
aW5zdGFuY2UuIE11c3QgQGIgbm90IGJlIEBjIE5VTEwuCkBAIC0xMjYxLDcgKzEzMDUsNyBAQCBl
d2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogeCwgaW50
KiB5KQogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNF
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLT52aWV3KCks
IEVJTkFfRkFMU0UpOwotICAgIFdlYkNvcmU6OkludFBvaW50IHBvcyA9IHNkLT5mcmFtZS0+dmll
dygpLT5zY3JvbGxQb3NpdGlvbigpOworICAgIFdlYkNvcmU6OkludFBvaW50IHBvcyA9IHNkLT5m
cmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoZmFsc2UsIGZhbHNlKS5sb2NhdGlvbigp
OwogICAgIGlmICh4KQogICAgICAgICAqeCA9IHBvcy54KCk7CiAgICAgaWYgKHkpCkBAIC0xMzkx
LDcgKzE0MzUsMTggQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21vdXNlX3doZWVsKEV2YXNf
T2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWUKICAgICAgICAgbywgdmlldywg
ZXYtPmRpcmVjdGlvbiwgZXYtPnosIGV2LT5jYW52YXMueCwgZXYtPmNhbnZhcy55KTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgRUlOQV9GQUxTRSk7CiAKLSAgICBX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgZXZlbnQoZXYpOworICAgIEV2YXNfQ29vcmQgeCwg
eTsKKyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnZpZXcsICZ4LCAmeSwgMCwgMCk7
CisKKyAgICBmbG9hdCB6b29tID0gMS4wOworICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19z
Y2FsaW5nX2dldChvKSkKKyAgICAgICAgem9vbSA9IGV3a19mcmFtZV96b29tX2dldChvKTsKKwor
ICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgZXYxID0gKmV2OworICAgIGV2MS5jYW52YXMueCA9
IGV2MS5jYW52YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYxLmNhbnZhcy55IC8g
em9vbTsKKworICAgIFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCBldmVudCgmZXYxLCBXZWJD
b3JlOjpJbnRQb2ludCh4IC8gem9vbSwgeSAvIHpvb20pKTsKICAgICByZXR1cm4gc2QtPmZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChldmVudCk7CiB9CiAKQEAgLTE0MTcs
NyArMTQ3MiwxNSBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2ZlZWRfbW91c2VfZG93bihFdmFzX09i
amVjdCogbywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKgogICAgIEV2YXNfQ29vcmQgeCwg
eTsKICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPnZpZXcsICZ4LCAmeSwgMCwgMCk7
CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6Oklu
dFBvaW50KHgsIHkpKTsKKyAgICBmbG9hdCB6b29tID0gMS4wOworICAgIGlmIChld2tfZnJhbWVf
em9vbV9jYWlyb19zY2FsaW5nX2dldChvKSkKKyAgICAgICAgem9vbSA9IGV3a19mcmFtZV96b29t
X2dldChvKTsKKworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldjEgPSAqZXY7CisgICAgZXYx
LmNhbnZhcy54ID0gZXYxLmNhbnZhcy54IC8gem9vbTsKKyAgICBldjEuY2FudmFzLnkgPSBldjEu
Y2FudmFzLnkgLyB6b29tOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudCgm
ZXYxLCBXZWJDb3JlOjpJbnRQb2ludCh4IC8gem9vbSwgeSAvIHpvb20pKTsKKwogICAgIHJldHVy
biBzZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoZXZlbnQp
OwogfQogCkBAIC0xNDQzLDcgKzE1MDYsMTUgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9mZWVkX21v
dXNlX3VwKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldikKICAg
ICBFdmFzX0Nvb3JkIHgsIHk7CiAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHNkLT52aWV3
LCAmeCwgJnksIDAsIDApOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50
KGV2LCBXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSk7CisgICAgZmxvYXQgem9vbSA9IDEuMDsKKyAg
ICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQobykpCisgICAgICAgIHpvb20g
PSBld2tfZnJhbWVfem9vbV9nZXQobyk7CisKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwIGV2MSA9
ICpldjsKKyAgICBldjEuY2FudmFzLnggPSBldjEuY2FudmFzLnggLyB6b29tOworICAgIGV2MS5j
YW52YXMueSA9IGV2MS5jYW52YXMueSAvIHpvb207CisgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50KCZldjEsIFdlYkNvcmU6OkludFBvaW50KHggLyB6b29tLCB5IC8gem9vbSkp
OworCiAgICAgcmV0dXJuIHNkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGV2ZW50KTsKIH0KIApAQCAtMTQ3MCw3ICsxNTQxLDE1IEBAIEVpbmFfQm9vbCBl
d2tfZnJhbWVfZmVlZF9tb3VzZV9tb3ZlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFdmFzX0V2ZW50
X01vdXNlX01vdmUqCiAgICAgRXZhc19Db29yZCB4LCB5OwogICAgIGV2YXNfb2JqZWN0X2dlb21l
dHJ5X2dldChzZC0+dmlldywgJngsICZ5LCAwLCAwKTsKIAotICAgIFdlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCBldmVudChldiwgV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpOworICAgIGZsb2F0
IHpvb20gPSAxLjA7CisgICAgaWYgKGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KG8p
KQorICAgICAgICB6b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KG8pOworCisgICAgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlIGV2MSA9ICpldjsKKyAgICBldjEuY3VyLmNhbnZhcy54ID0gZXYxLmN1ci5j
YW52YXMueCAvIHpvb207CisgICAgZXYxLmN1ci5jYW52YXMueSA9IGV2MS5jdXIuY2FudmFzLnkg
LyB6b29tOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudCgmZXYxLCBXZWJD
b3JlOjpJbnRQb2ludCh4IC8gem9vbSwgeSAvIHpvb20pKTsKKwogICAgIHJldHVybiBzZC0+ZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5tb3VzZU1vdmVkKGV2ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApp
bmRleCAxNTZiZDgyM2U2NWZkNTBhOGNkNTA1YjAwMDA0NTU2ZmI3MjgyMjE3Li45M2U5ODZmMTkw
ZWIzNWFkZDQzMTViOTgwMjkxZjNlY2EzOWYxODY2IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuaAorKysgYi9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaApAQCAtMTc2LDYg
KzE3Niw4IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShF
dmFzX09iamVjdCAqbywgaW50IHN0ZXBzKTsKIAogRUFQSSBmbG9hdCAgICAgICAgZXdrX2ZyYW1l
X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CitFQVBJIEVpbmFfQm9v
bCAgICBld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHZhbHVlKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a19m
cmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCAqbywgRWlu
YV9Cb29sIHNldHRpbmcpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0
ZS5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ByaXZhdGUuaAppbmRleCBjMTU5OWUzNzNjMWFjOTk4
NTczZjViNjgxNWZjZmQ0YmM5MDA4MTNiLi5lMDUxMzg5MmU0YzE2NTBmMjQ2YzVlMDhkMDlmOGVh
MjAxZmFkYzM2IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfcHJpdmF0ZS5oCisrKyBi
L1dlYktpdC9lZmwvZXdrL2V3a19wcml2YXRlLmgKQEAgLTEwNSw2ICsxMDUsOSBAQCB2b2lkIGV3
a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVjdCAqbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBjbGllbnQsIGludCBzZQogdm9pZCBld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX3NldChF
dmFzX09iamVjdCAqbywgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50
cyk7CiAKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfcmVxdWVzdChFdmFzX09iamVjdCAqbywgRXdr
X0Rvd25sb2FkICpkb3dubG9hZCk7Cit2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9u
b25lbXB0eV9sYXlvdXQoRXZhc19PYmplY3QgKm8pOwordm9pZCBld2tfdmlld190cmFuc2l0aW9u
X3RvX2NvbW1pdGVkX2Zvcl9uZXdwYWdlKEV2YXNfT2JqZWN0ICpvKTsKK3ZvaWQgZXdrX3ZpZXdf
ZGlzcGF0Y2hfZGlkX2ZpbmlzaF9sb2FkaW5nKEV2YXNfT2JqZWN0ICpvKTsKIAogaW50IGV3a192
aWV3X2RwaV9nZXQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDUxNDdiNmQ5YjdjZTUxOGRlYjhl
MWI4NjRmZTc3M2MxOTMxZGI0MmUuLjU3YWY4NGE0ZGM4ZGJmZWFhYjVkMmRjODg4ODZmZTJmZDFj
MDZkM2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTcyNiw2ICs3MjYsMTEgQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIHNkLT5iZ19yZWN0LmJnX3JlY3QgPSBldmFzX29iamVjdF9yZWN0YW5nbGVfYWRk
KHNkLT5iYXNlLmV2YXMpOworICAgIGV3a192aWV3X2JnX3JlY3RfY29sb3Jfc2V0KG8sIDI1NSwg
MjU1LCAyNTUsIDI1NSk7CisgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzZC0+Ymdf
cmVjdC5iZ19yZWN0LCBvKTsKKyAgICBldmFzX29iamVjdF9zaG93KHNkLT5iZ19yZWN0LmJnX3Jl
Y3QpOworCiAgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVyX2FkZChzZC0+YmFja2luZ19zdG9y
ZSwgbyk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhzZC0+YmFja2luZ19zdG9yZSk7CiAgICAgZXZh
c19vYmplY3RfcGFzc19ldmVudHNfc2V0KHNkLT5iYWNraW5nX3N0b3JlLCBFSU5BX1RSVUUpOwpA
QCAtODI1LDYgKzgzMCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUo
RXZhc19PYmplY3QqIG8pCiAgICAgICAgIH0KICAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKHNk
LT5tYWluX2ZyYW1lLCB3LCBoKTsKICAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKHNkLT5ldmVu
dHNfcmVjdCwgdywgaCk7CisgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShzZC0+YmdfcmVjdC5i
Z19yZWN0LCB3LCBoKTsKICAgICAgICAgc2QtPmNoYW5nZWQuZnJhbWVfcmVjdCA9IEVJTkFfVFJV
RTsKICAgICAgICAgc2QtPnZpZXcudyA9IHc7CiAgICAgICAgIHNkLT52aWV3LmggPSBoOwpAQCAt
ODM4LDYgKzg0NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZh
c19PYmplY3QqIG8pCiAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUoc2QtPm1haW5fZnJhbWUsIHgs
IHkpOwogICAgICAgICBldmFzX29iamVjdF9tb3ZlKHNkLT5iYWNraW5nX3N0b3JlLCB4LCB5KTsK
ICAgICAgICAgZXZhc19vYmplY3RfbW92ZShzZC0+ZXZlbnRzX3JlY3QsIHgsIHkpOworICAgICAg
ICBldmFzX29iamVjdF9tb3ZlKHNkLT5iZ19yZWN0LmJnX3JlY3QsIHgsIHkpOwogICAgICAgICBz
ZC0+Y2hhbmdlZC5mcmFtZV9yZWN0ID0gRUlOQV9UUlVFOwogICAgICAgICBzZC0+dmlldy54ID0g
eDsKICAgICAgICAgc2QtPnZpZXcueSA9IHk7CkBAIC05MTAsOSArOTE3LDIyIEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
LCBmbG9hdCB6b29tLCBFCiAgICAgeCA9ICh3ICsgc2QtPnZpZXcudykgKiBweCAtIGN4OwogICAg
IHkgPSAoaCArIHNkLT52aWV3LmgpICogcHkgLSBjeTsKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Nl
dChzZC0+bWFpbl9mcmFtZSwgeCwgeSk7CisKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9f
c2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7CisgICAgICAgIF9ld2tfdmlld19yZXBhaW50
X2FkZChzZC0+X3ByaXYsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZC0+
dmlldy53IC8gem9vbSwgc2QtPnZpZXcuaCAvIHpvb20pOworICAgICAgICBzZC0+Y2hhbmdlZC5m
cmFtZV9yZWN0ID0gRUlOQV9UUlVFOworICAgICAgICBfZXdrX3ZpZXdfc21hcnRfY2hhbmdlZChz
ZCk7CisgICAgfQorCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfem9vbV9jYWlyb19zY2FsaW5nX3NldChFd2tfVmlld19TbWFydF9EYXRhICpz
ZCwgRWluYV9Cb29sIHZhbHVlKQoreworICAgIHJldHVybiBld2tfZnJhbWVfem9vbV9jYWlyb19z
Y2FsaW5nX3NldChzZC0+bWFpbl9mcmFtZSwgdmFsdWUpOworfQorCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfZmx1c2goRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2KTsKQEAgLTEwODYsNiArMTEwNiw3IEBAIEVp
bmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBp
KQogCiAgICAgYXBpLT5jb250ZW50c19yZXNpemUgPSBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNf
cmVzaXplOwogICAgIGFwaS0+em9vbV9zZXQgPSBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQ7Cisg
ICAgYXBpLT56b29tX2NhaXJvX3NjYWxpbmdfc2V0ID0gX2V3a192aWV3X3NtYXJ0X3pvb21fY2Fp
cm9fc2NhbGluZ19zZXQ7CiAgICAgYXBpLT5mbHVzaCA9IF9ld2tfdmlld19zbWFydF9mbHVzaDsK
ICAgICBhcGktPnByZV9yZW5kZXJfcmVnaW9uID0gX2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJf
cmVnaW9uOwogICAgIGFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMgPSBfZXdrX3ZpZXdf
c21hcnRfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXM7CkBAIC0xNDA5LDYgKzE0MzAsOTggQEAg
dm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCogciwg
aW50KiBnLCBpbnQqIGIsIGludCogYSkKIH0KIAogLyoqCisgKiBTZXQgdmlldydzIGJhY2tncm91
bmQgcmVjdCBjb2xvcgorICoKKyAqIFRoaXMgaXMgdXNlZCBmb3Igc2V0dGluZyB0aGUgY29sb3Ig
b2YgdGhlIHJlY3RhbmdsZSBiZWhpbmQgdGhlIHZpZXcuIFVubGlrZQorICogd2hhdCBpcyBkb25l
IGluIGV3a192aWV3X2JnX2NvbG9yX3NldCgpLCB0aGlzIGNvbG9yIGlzIG5vdCBwYXNzZWQgdG8g
V2ViQ29yZS4KKyAqIEl0J3Mgc29sZSBwdXJwb3NlIGlzIGluc3RlYWQgdG8gcHV0IGEgcmVjdGFu
Z2xlIGJlaGluZCB0aGUgdmlldyBpbiBvcmRlciB0bworICogYmUgcG9zc2libGUgdG8gaGF2ZSBk
aWZmZXJlbnQgYmFja2dyb3VuZHMgZm9yIGJvdW5jZXIgZWZmZWN0cyBhbmQgZm9yIGFyZWFzCisg
KiBub3QgcmVuZGVyZWQgeWV0LgorICoKKyAqIEp1c3QgYXMgaW4gRXZhcywgY29sb3JzIGFyZSBw
cmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBpcworICogKDEyOCwgMCwgMCwgMTI4KSBhbmQgbm90
ICgyNTUsIDAsIDAsIDEyOCkhCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gY2hhbmdl
LgorICogQHBhcmFtIHIgcmVkIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBnIGdyZWVuIGNvbXBvbmVu
dC4KKyAqIEBwYXJhbSBiIGJsdWUgY29tcG9uZW50LgorICogQHBhcmFtIGEgdHJhbnNwYXJlbmN5
LgorICovCit2b2lkIGV3a192aWV3X2JnX3JlY3RfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBp
bnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YmdfcmVjdC5i
Z19yZWN0KTsKKworICAgIGlmIChhIDwgMCkgeworICAgICAgICBXUk4oIkFscGhhIGxlc3MgdGhh
biB6ZXJvICglZCkuIiwgYSk7CisgICAgICAgIGEgPSAwOworICAgIH0gZWxzZSBpZiAoYSA+IDI1
NSkgeworICAgICAgICBXUk4oIkFscGhhIGlzIGxhcmdlciB0aGFuIDI1NSAoJWQpLiIsIGEpOwor
ICAgICAgICBhID0gMjU1OworICAgIH0KKworI2RlZmluZSBDSEVDS19QUkVNVUxfQ09MT1IoYywg
YSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChjIDwg
MCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGxlc3MgdGhhbiB6ZXJv
ICglZCkuIiwgYyk7ICAgICAgICAgXAorICAgICAgICBjID0gMDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gZWxzZSBpZiAo
YyA+IGEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBXUk4oIkNvbG9yIGNvbXBvbmVudCAiI2MiIGlzIGdyZWF0ZXIgdGhhbiBhbHBo
YSAoJWQsIGFscGhhPSVkKS4iLCBcCisgICAgICAgICAgICBjLCBhKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGMgPSBhOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfQorICAgIENIRUNLX1BSRU1VTF9DT0xPUihyLCBhKTsKKyAgICBDSEVDS19QUkVNVUxf
Q09MT1IoZywgYSk7CisgICAgQ0hFQ0tfUFJFTVVMX0NPTE9SKGIsIGEpOworI3VuZGVmIENIRUNL
X1BSRU1VTF9DT0xPUgorCisgICAgc2QtPmJnX3JlY3QuY29sb3IuciA9IHI7CisgICAgc2QtPmJn
X3JlY3QuY29sb3IuZyA9IGc7CisgICAgc2QtPmJnX3JlY3QuY29sb3IuYiA9IGI7CisgICAgc2Qt
PmJnX3JlY3QuY29sb3IuYSA9IGE7CisgICAgZXZhc19vYmplY3RfY29sb3Jfc2V0KHNkLT5iZ19y
ZWN0LmJnX3JlY3QsIHNkLT5iZ19yZWN0LmNvbG9yLnIsIHNkLT5iZ19yZWN0LmNvbG9yLmcsCisg
ICAgICAgICAgICBzZC0+YmdfcmVjdC5jb2xvci5iLCBzZC0+YmdfcmVjdC5jb2xvci5hKTsKK30K
KworLyoqCisgKiBHZXQgdmlldydzIGJhY2tncm91bmQgcmVjdCBjb2xvcgorICoKKyAqIFRoaXMg
aXMgdXNlZCBmb3IgZ2V0dGluZyB0aGUgY29sb3Igb2YgdGhlIHJlY3RhbmdsZSBiZWhpbmQgdGhl
IHZpZXcuIFVubGlrZQorICogd2hhdCBpcyBkb25lIGluIGV3a192aWV3X2JnX2NvbG9yX2dldCgp
LCB0aGlzIGNvbG9yIGlzIG5vdCBwYXNzZWQgdG8gV2ViQ29yZS4KKyAqIEl0J3Mgc29sZSBwdXJw
b3NlIGlzIGluc3RlYWQgdG8gcHV0IGEgcmVjdGFuZ2xlIGJlaGluZCB0aGUgdmlldyBpbiBvcmRl
ciB0bworICogYmUgcG9zc2libGUgdG8gaGF2ZSBkaWZmZXJlbnQgYmFja2dyb3VuZHMgZm9yIGJv
dW5jZXIgZWZmZWN0cyBhbmQgZm9yIGFyZWFzCisgKiBub3QgcmVuZGVyZWQgeWV0LgorICoKKyAq
IEp1c3QgYXMgaW4gRXZhcywgY29sb3JzIGFyZSBwcmUtbXVsdGlwbGllZCwgc28gNTAlIHJlZCBp
cworICogKDEyOCwgMCwgMCwgMTI4KSBhbmQgbm90ICgyNTUsIDAsIDAsIDEyOCkhCisgKgorICog
QHBhcmFtIG8gdmlldyBvYmplY3QgdG8gcXVlcnkuCisgKiBAcGFyYW0gciB3aGVyZSB0byByZXR1
cm4gcmVkIGNvbG9yIGNvbXBvbmVudC4KKyAqIEBwYXJhbSBnIHdoZXJlIHRvIHJldHVybiBncmVl
biBjb2xvciBjb21wb25lbnQuCisgKiBAcGFyYW0gYiB3aGVyZSB0byByZXR1cm4gYmx1ZSBjb2xv
ciBjb21wb25lbnQuCisgKiBAcGFyYW0gYSB3aGVyZSB0byByZXR1cm4gYWxwaGEgdmFsdWUuCisg
Ki8KK3ZvaWQgZXdrX3ZpZXdfYmdfcmVjdF9jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8s
IGludCogciwgaW50KiBnLCBpbnQqIGIsIGludCogYSkKK3sKKyAgICBpZiAocikKKyAgICAgICAg
KnIgPSAwOworICAgIGlmIChnKQorICAgICAgICAqZyA9IDA7CisgICAgaWYgKGIpCisgICAgICAg
ICpiID0gMDsKKyAgICBpZiAoYSkKKyAgICAgICAgKmEgPSAwOworICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4obywgc2QpOworICAgIGlmIChyKQorICAgICAgICAqciA9IHNkLT5iZ19yZWN0
LmNvbG9yLnI7CisgICAgaWYgKGcpCisgICAgICAgICpnID0gc2QtPmJnX3JlY3QuY29sb3IuZzsK
KyAgICBpZiAoYikKKyAgICAgICAgKmIgPSBzZC0+YmdfcmVjdC5jb2xvci5iOworICAgIGlmIChh
KQorICAgICAgICAqYSA9IHNkLT5iZ19yZWN0LmNvbG9yLmE7Cit9CisKKy8qKgogICogU2VhcmNo
IHRoZSBnaXZlbiB0ZXh0IHN0cmluZyBpbiBkb2N1bWVudC4KICAqCiAgKiBAcGFyYW0gbyB2aWV3
IG9iamVjdCB3aGVyZSB0byBzZWFyY2ggdGV4dC4KQEAgLTE2MzUsNyArMTc0OCwxNCBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9tZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIG8s
IGNvbnN0IEV2YXNfRXZlbnRfTQogICAgIEV2YXNfQ29vcmQgeCwgeTsKICAgICBldmFzX29iamVj
dF9nZW9tZXRyeV9nZXQoc2QtPnNlbGYsICZ4LCAmeSwgMCwgMCk7CiAKLSAgICBXZWJDb3JlOjpQ
bGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoZXYsIFdlYkNvcmU6OkludFBvaW50KHgsIHkpKTsKKyAg
ICBmbG9hdCB6b29tID0gMS4wOworICAgIGlmIChld2tfdmlld196b29tX2NhaXJvX3NjYWxpbmdf
Z2V0KG8pKQorICAgICAgICB6b29tID0gZXdrX3ZpZXdfem9vbV9nZXQobyk7CisKKyAgICBFdmFz
X0V2ZW50X01vdXNlX0Rvd24gZXYxID0gKmV2OworICAgIGV2MS5jYW52YXMueCA9IGV2MS5jYW52
YXMueCAvIHpvb207CisgICAgZXYxLmNhbnZhcy55ID0gZXYxLmNhbnZhcy55IC8gem9vbTsKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoJmV2MSwgV2ViQ29yZTo6SW50UG9p
bnQoeCAvIHpvb20sIHkgLyB6b29tKSk7CiAKICAgICBpZiAobWFpbl9mcmFtZS0+dmlldygpKSB7
CiAgICAgICAgIG1vdXNlX3ByZXNzX2hhbmRsZWQgPQpAQCAtMjE5Niw2ICsyMzE2LDQ0IEBAIEVp
bmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QqIG8sIEVpbmFf
Qm9vbCBzZXR0aW5nKQogfQogCiAvKioKKyAqIFF1ZXJ5IGlmIHpvb20gdXNlcyBjYWlybyBzY2Fs
aW5nIG9yIG5vdC4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IHRvIHF1ZXJ5IHNldHRpbmcuCisgKgor
ICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgc2hvdWxkIHVzZSBjYWlybyBzY2FsaW5nLCBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRWluYV9Cb29sIGV3a192aWV3X3pvb21fY2Fpcm9f
c2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pCit7CisgICAgRVdLX1ZJRVdfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgMCk7CisgICAgcmV0dXJuIGV3a19mcmFtZV96b29tX2NhaXJvX3Nj
YWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworLyoqCisgKiBTZXQgaWYgem9vbSBzaG91
bGQgdXNlIGNhaXJvIHNjYWxpbmcgb3Igbm90LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gZW5hYmxl
cyB1c2luZyBjYWlybyBzY2FsaW5nIHRvIGRvIHpvb20gaW4vb3V0LCBpbnN0ZWFkIG9mCisgKiBk
ZWZhdWx0IHdlYmtpdCB6b29tLiBUaGlzIG1lYW5zIHRoZSBwYWdlIHJlbWFpbnMgdGhlIHNhbWUs
IG5vIHJlbGF5b3V0CisgKiBpcyB0cmlnZ2VyZWQsIGFuZCB3ZSBoYXZlIGEgZmFzdGVyIHpvb20g
b3BlcmF0aW9uLgorICoKKyAqIFRoZSBjYWlybyBzY2FsaW5nIHpvb20gc2hvdWxkIGJlIHNldCBi
ZWZvcmUgYW55IHpvb20gbGV2ZWwgY2hhbmdlCisgKiAoaW4gZmFjdCwgeW91IHNob3VsZCBzZXQg
aXQgYmVmb3JlIGxvYWRpbmcgYW55IHdlYnBhZ2UpLiBJdCdzIG5vdCBzYWZlCisgKiB0byBjaGFu
Z2UgdGhpcyBwcm9wZXJ0eSBhZnRlciBzb21lIHpvb20gbGV2ZWwgY2hhbmdlcy4KKyAqCisgKiBA
cGFyYW0gbyB2aWV3IHRvIGNoYW5nZSBzZXR0aW5nLgorICogQHBhcmFtIHZhbHVlIEBjIEVJTkFf
VFJVRSBpZiBzaG91bGQgdXNlIGNhaXJvIHNjYWxpbmcsCisgICAgICAgICAgICAgICAgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vz
cywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UuCisgKi8KK0VpbmFfQm9vbCBld2tfdmlld196b29t
X2NhaXJvX3NjYWxpbmdfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmFsdWUpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5hcGksIEVJTkFfRkFMU0UpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+YXBpLT56b29tX2NhaXJvX3NjYWxpbmdf
c2V0LCBFSU5BX0ZBTFNFKTsKKyAgICByZXR1cm4gc2QtPmFwaS0+em9vbV9jYWlyb19zY2FsaW5n
X3NldChzZCwgdmFsdWUpOworfQorCisvKioKICAqIEhpbnQgZW5naW5lIHRvIHByZS1yZW5kZXIg
cmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWlnaHQgYmUgYWJsZSB0
byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4KQEAgLTQwNzUsNiArNDIzMywxMCBAQCB2b2lkIGV3a192
aWV3X3Njcm9sbChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29yZCBkeSwg
RXZhc19Db29yZCBzeAogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdik7
CiAgICAgRUlOQV9TQUZFVFlfT05fVFJVRV9SRVRVUk4oIWR4ICYmICFkeSk7CiAKKyAgICBmbG9h
dCB6b29tID0gMS4wZjsKKyAgICBpZiAoZXdrX2ZyYW1lX3pvb21fY2Fpcm9fc2NhbGluZ19nZXQo
c2QtPm1haW5fZnJhbWUpKQorICAgICAgICB6b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5t
YWluX2ZyYW1lKTsKKyAgICBfZXdrX3ZpZXdfc2Nyb2xsX2FkZChwcml2LCBkeCwgZHksIHN4ICog
em9vbSwgc3kgKiB6b29tLCBzdyAqIHpvb20sIHNoICogem9vbSwgbWFpbl9mcmFtZSk7CiAgICAg
X2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc2QpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5oIGIvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCA2OTAyOTQ5
ZDI5ZDFlN2NlNTRhNGJlODNhNTJmMzRkMjA1YjFkZDUyLi5iN2M5NzAyYTJlMGI1MTNlMTU1ODEw
Y2RhNjRjZDYyMWM2MTNhOWM2IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5o
CisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBzdHJ1
Y3QgX0V3a19WaWV3X1NtYXJ0X0NsYXNzIHsKICAgICBFaW5hX0Jvb2wgKCpyZXBhaW50c19wcm9j
ZXNzKShFd2tfVmlld19TbWFydF9EYXRhICpzZCk7IC8qKjwgbXVzdCBiZSBkZWZpbmVkICovCiAg
ICAgRWluYV9Cb29sICgqY29udGVudHNfcmVzaXplKShFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
aW50IHcsIGludCBoKTsKICAgICBFaW5hX0Jvb2wgKCp6b29tX3NldCkoRXdrX1ZpZXdfU21hcnRf
RGF0YSAqc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOworICAg
IEVpbmFfQm9vbCAoKnpvb21fY2Fpcm9fc2NhbGluZ19zZXQpKEV3a19WaWV3X1NtYXJ0X0RhdGEg
KnNkLCBFaW5hX0Jvb2wgdmFsdWUpOwogICAgIEVpbmFfQm9vbCAoKnpvb21fd2Vha19zZXQpKEV3
a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nv
b3JkIGN5KTsKICAgICB2b2lkICgqem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQpKEV3a19WaWV3
X1NtYXJ0X0RhdGEgKnNkLCBFaW5hX0Jvb2wgc21vb3RoX3NjYWxlKTsKICAgICB2b2lkICgqYmdf
Y29sb3Jfc2V0KShFd2tfVmlld19TbWFydF9EYXRhICpzZCwgdW5zaWduZWQgY2hhciByLCB1bnNp
Z25lZCBjaGFyIGcsIHVuc2lnbmVkIGNoYXIgYiwgdW5zaWduZWQgY2hhciBhKTsKQEAgLTI3Myw2
ICsyNzQsMTIgQEAgc3RydWN0IF9Fd2tfVmlld19TbWFydF9EYXRhIHsKICAgICBFdmFzX09iamVj
dCAqbWFpbl9mcmFtZTsgLyoqPCByZWZlcmVuY2UgdG8gbWFpbiBmcmFtZSBvYmplY3QgKi8KICAg
ICBFdmFzX09iamVjdCAqYmFja2luZ19zdG9yZTsgLyoqPCByZWZlcmVuY2UgdG8gYmFja2luZyBz
dG9yZSAqLwogICAgIEV2YXNfT2JqZWN0ICpldmVudHNfcmVjdDsgLyoqPCByZWN0YW5nbGUgdGhh
dCBzaG91bGQgcmVjZWl2ZSBtb3VzZSBldmVudHMgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciByLCBnLCBiLCBhOworICAgICAgICB9
IGNvbG9yOworICAgICAgICBFdmFzX09iamVjdCAqYmdfcmVjdDsKKyAgICB9IGJnX3JlY3Q7IC8q
KjwgYmFja2dyb3VuZCByZWN0YW5nbGUgdG8gc2hvdyBhIGRlc2lyZWQgYmFja2dyb3VuZCBjb2xv
ciBvbiB0aGlzIHZpZXcgKi8KICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEgKl9wcml2OyAvKio8
IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZCwgYysrIHN0dWZmICovCiAgICAgc3RydWN0IHsKICAg
ICAgICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOyAvKio8IGxhc3QgdXNlZCB2aWV3cG9ydCAqLwpA
QCAtMzQ2LDYgKzM1Myw5IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X2VkaXRhYmxlX3Nl
dChFdmFzX09iamVjdCAqbywgRWluYV9Cb29sIGVkaXRhYmxlKTsKIEVBUEkgdm9pZCAgICAgICAg
IGV3a192aWV3X2JnX2NvbG9yX3NldChFdmFzX09iamVjdCAqbywgaW50IHIsIGludCBnLCBpbnQg
YiwgaW50IGEpOwogRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdfYmdfY29sb3JfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0ICpvLCBpbnQgKnIsIGludCAqZywgaW50ICpiLCBpbnQgKmEpOwogCitFQVBJ
IHZvaWQgICAgICAgICBld2tfdmlld19iZ19yZWN0X2NvbG9yX3NldChFdmFzX09iamVjdCAqbywg
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworRUFQSSB2b2lkICAgICAgICAgZXdrX3ZpZXdf
YmdfcmVjdF9jb2xvcl9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50ICpnLCBp
bnQgKmIsIGludCAqYSk7CisKIEVBUEkgY2hhciAgICAgICAgKmV3a192aWV3X3NlbGVjdGlvbl9n
ZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2Vs
ZWN0X25vbmUoRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2Vs
ZWN0X2FsbChFdmFzX09iamVjdCAqbyk7CkBAIC0zOTksNiArNDA5LDggQEAgRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QgKm8pOwog
RUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5KTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3RleHRf
b25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKTsKK0VBUEkgRWluYV9C
b29sICAgIGV3a192aWV3X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9jYWlyb19zY2FsaW5nX3NldChF
dmFzX09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwogCiBFQVBJIEVpbmFfQm9vbCAgICBl
d2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKIEVB
UEkgRWluYV9Cb29sICAgIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNf
T2JqZWN0ICpvLCB1bnNpZ25lZCBpbnQgbik7CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld19zaW5nbGUuYyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jCmluZGV4
IDZkOTY1ZDBjNTU1ZTIwNzlmMWZkZjlhZWU5NThiNGM5ZmRmZDcwMDcuLmRmZWY4MTc0YzIyNDZm
YjNkZjk4YTZiNDRlMzQ4NDZkZWUyM2QwYmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3X3NpbmdsZS5jCisrKyBiL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jCkBA
IC0yMSwxMSArMjEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJld2tfdmll
dy5oIgogCi0jaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCisjaW5jbHVkZSAiRVdlYktpdC5oIgogI2lu
Y2x1ZGUgImV3a19sb2dnaW5nLmgiCiAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8ZWlu
YV9zYWZldHlfY2hlY2tzLmg+CisjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgogCiBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NN
QVJUX0NMQVNTX0lOSVRfTlVMTDsKQEAgLTM2LDYgKzM3LDE2IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19zaW5nbGVfb25fZGVsKHZvaWQgKmRhdGEsIEV2YXMgKmUsIEV2YXNfT2JqZWN0ICpvLCB2
b2lkICplCiAgICAgZXZhc19vYmplY3RfZGVsKGNsaXApOwogfQogCitzdGF0aWMgdm9pZAorX2V3
a192aWV3X3NpbmdsZV9jb250ZW50c19zaXplX2NoYW5nZWRfY2Iodm9pZCAqZGF0YSwgRXZhc19P
YmplY3QgKm8sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgRXZhc19Db29yZCB3LCBoOworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisK
KyAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQoc2QtPmJhY2tpbmdfc3RvcmUsIE5VTEwsIE5V
TEwsICZ3LCAmaCk7CisgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCAwLCAwLCB3
LCBoKTsKK30KKwogc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19P
YmplY3QgKm8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Q7CkBAIC01MSw2ICs2Miwx
MCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChFdmFzX09iamVjdCAq
bykKIAogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZAogICAgICAgICAoc2QtPmJh
Y2tpbmdfc3RvcmUsIEVWQVNfQ0FMTEJBQ0tfREVMLCBfZXdrX3ZpZXdfc2luZ2xlX29uX2RlbCwg
Y2xpcCk7CisKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQKKyAgICAgICAgKHNk
LT5tYWluX2ZyYW1lLCAiY29udGVudHMsc2l6ZSxjaGFuZ2VkIiwKKyAgICAgICAgIF9ld2tfdmll
d19zaW5nbGVfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiLCBzZCk7CiB9CiAKIHN0YXRpYyBFdmFz
X09iamVjdCAqX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmll
d19TbWFydF9EYXRhICpzZCkKQEAgLTc2LDYgKzkxLDExIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19zaW5nbGVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vCiAgICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldChzZC0+YmFja2luZ19zdG9yZSwg
JngsICZ5LCAwLCAwKTsKICAgICAgICAgZXZhc19vYmplY3RfbW92ZShjbGlwLCB4LCB5KTsKICAg
ICAgICAgZXdrX2ZyYW1lX2NvbnRlbnRzX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZj
aCk7CisgICAgICAgIGlmIChld2tfZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChzZC0+bWFp
bl9mcmFtZSkpIHsKKyAgICAgICAgICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAgICAgICAgY3cgKj0gem9vbTsKKyAgICAgICAg
ICAgIGNoICo9IHpvb207CisgICAgICAgIH0KICAgICAgICAgaWYgKHcgPiBjdykKICAgICAgICAg
ICAgIHcgPSBjdzsKICAgICAgICAgaWYgKGggPiBjaCkKQEAgLTE5Nyw2ICsyMTcsMjAgQEAgc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbih1aW50MzJfdCAqaW1hZ2Us
IGludCBkeCwgaW50IGR5LCBzaXoKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZXdr
X3ZpZXdfc2luZ2xlX3Njcm9sbF9yZXBhaW50X2FkZChFd2tfVmlld19TbWFydF9EYXRhICpzZCwg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQor
eworICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsKKyAgICBpZiAoZXdrX2ZyYW1l
X3pvb21fY2Fpcm9fc2NhbGluZ19nZXQoc2QtPm1haW5fZnJhbWUpKSB7CisgICAgICAgIGNvbnN0
IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgICAg
ICB4ID0gY2VpbCh4IC8gem9vbSk7CisgICAgICAgIHkgPSBjZWlsKHkgLyB6b29tKTsKKyAgICAg
ICAgdyA9IGNlaWwodyAvIHpvb20pOworICAgICAgICBoID0gY2VpbChoIC8gem9vbSk7CisgICAg
ICAgIERCRygiJWQsJWQrJWR4JWQiLCB4LCB5LCB3LCBoKTsKKyAgICB9CisgICAgZXdrX3ZpZXdf
cmVwYWludF9hZGQoc2QtPl9wcml2LCB4LCB5LCB3LCBoKTsKK30KKwogc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0
X0RhdGEgKnNkLCB2b2lkICpwaXhlbHMsIEV2YXNfQ29vcmQgb3csIEV2YXNfQ29vcmQgb2gsIGNv
bnN0IEV3a19TY3JvbGxfUmVxdWVzdCAqc3IpCiB7CiAgICAgRXZhc19Db29yZCBzeCwgc3ksIHN3
LCBzaDsKQEAgLTIxMyw3ICsyNDcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Np
bmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAg
ICAvKiBkb3VidCB3ZWJraXQgd291bGQgYmUgc28gc3R1cGlkLi4uICovCiAgICAgICAgIERCRygi
ZnVsbCBwYWdlIHNjcm9sbCAlKzAzZCwlKzAzZC4gY29udmVydCB0byByZXBhaW50ICVkLCVkICsg
JWR4JWQiLAogICAgICAgICAgICAgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwgc3csIHNoKTsKLSAg
ICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBzeCwgc3ksIHN3LCBzaCk7Cisg
ICAgICAgIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKHNkLCBzeCwgc3ksIHN3
LCBzaCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0OSw3ICsyODMsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdr
X1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3
LCBzaCArIHNyLT5keSk7CiAKLSAgICAgICAgICAgIGV3a192aWV3X3JlcGFpbnRfYWRkKHNkLT5f
cHJpdiwgc3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3LCAtc3ItPmR5KTsKKyAgICAgICAgICAgIF9l
d2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKHNkLCBzeCwgc3kgKyBzaCArIHNyLT5k
eSwgc3csIC1zci0+ZHkpOwogICAgICAgICB9IGVsc2UgaWYgKHNyLT5keSA+IDApIHsKICAgICAg
ICAgICAgIERCRygic2Nyb2xsIGRvd246ICUrMDNkLCUrMDNkIHVwZGF0ZT0lZCwlZCslZHglZCwg
IgogICAgICAgICAgICAgICAgICJyZXBhaW50PSVkLCVkKyVkeCVkIiwKQEAgLTI2MSw3ICsyOTUs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19z
aW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSAqcwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1h
Z2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBz
eCwgc3kgKyBzci0+ZHksIHN3LCBzaCAtIHNyLT5keSk7CiAKLSAgICAgICAgICAgIGV3a192aWV3
X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgc3gsIHN5LCBzdywgc3ItPmR5KTsKKyAgICAgICAgICAg
IF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3JlcGFpbnRfYWRkKHNkLCBzeCwgc3ksIHN3LCBzci0+
ZHkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghc3ItPmR5KSB7CiAgICAgICAgIGlmIChz
ci0+ZHggPCAwKSB7CkBAIC0yNzUsOSArMzA5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEgKnMK
ICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAg
ICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gpOwogCi0g
ICAgICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIHN4ICsgc3cgKyBzci0+
ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CisgICAgICAgICAgICBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9s
bF9yZXBhaW50X2FkZChzZCwgc3ggKyBzdyArIHNyLT5keCwgc3ksIC1zci0+ZHgsIHNoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChzci0+ZHggPiAwKSB7Ci0gICAgICAgICAgICBEQkcoInNjcm9sbCB1
cDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCisgICAgICAgICAgICBEQkcoInNj
cm9sbCByaWdodDogJSswM2QsJSswM2QgdXBkYXRlPSVkLCVkKyVkeCVkLCAiCiAgICAgICAgICAg
ICAgICAgInJlcGFpbnQ9JWQsJWQrJWR4JWQiLAogICAgICAgICAgICAgICAgIHNyLT5keCwgc3It
PmR5LCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3ItPmR4LCBzaCwKICAgICAgICAgICAgICAgICBz
eCwgc3ksIHNyLT5keCwgc2gpOwpAQCAtMjg3LDcgKzMyMSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9E
YXRhICpzCiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAg
ICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cgLSBz
ci0+ZHgsIHNoKTsKIAotICAgICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2
LCBzeCwgc3ksIHNyLT5keCwgc2gpOworICAgICAgICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3Jv
bGxfcmVwYWludF9hZGQoc2QsIHN4LCBzeSwgc3ItPmR4LCBzaCk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UgewogICAgICAgICBFdmFzX0Nvb3JkIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBh
aCwgYngsIGJ5LCBidywgYmg7CkBAIC0zMjksOCArMzYzLDggQEAgc3RhdGljIGlubGluZSB2b2lk
IF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0Rh
dGEgKnMKICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4LCBzci0+ZHksIHN4
LCBzeSwgc3csIHNoLCBvdyk7CiAKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRh
dGVfYWRkKHNkLT5iYWNraW5nX3N0b3JlLCBteCwgbXksIG13LCBtaCk7Ci0gICAgICAgIGV3a192
aWV3X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgsIGF5LCBhdywgYWgpOwotICAgICAgICBld2tf
dmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGJ4LCBieSwgYncsIGJoKTsKKyAgICAgICAgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQoc2QsIGF4LCBheSwgYXcsIGFoKTsKKyAg
ICAgICAgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcmVwYWludF9hZGQoc2QsIGJ4LCBieSwgYncs
IGJoKTsKICAgICB9CiB9CiAKQEAgLTM4Miw2ICs0MTYsMTEgQEAgc3RhdGljIEVpbmFfQm9vbCBf
ZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QKICAgICAgICAgaCA9IHNkLT52aWV3Lmg7CiAKICAgICAgICAgZXdrX2ZyYW1lX2NvbnRl
bnRzX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmY3csICZjaCk7CisgICAgICAgIGlmIChld2tf
ZnJhbWVfem9vbV9jYWlyb19zY2FsaW5nX2dldChzZC0+bWFpbl9mcmFtZSkpIHsKKyAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IHpvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworICAgICAgICAgICAgY3cgKj0gem9vbTsKKyAgICAgICAgICAgIGNoICo9IHpvb207CisgICAg
ICAgIH0KICAgICAgICAgaWYgKHcgPiBjdykKICAgICAgICAgICAgIHcgPSBjdzsKICAgICAgICAg
aWYgKGggPiBjaCkKQEAgLTM5Nyw2ICs0MzYsMTMgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QK
ICAgICBlbHNlCiAgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IyNDsKIAorICAgIGZs
b2F0IHpvb20gPSAxLjA7CisgICAgaWYgKGV3a19mcmFtZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0
KHNkLT5tYWluX2ZyYW1lKSkKKyAgICAgICAgem9vbSA9IGV3a19mcmFtZV96b29tX2dldChzZC0+
bWFpbl9mcmFtZSk7CisKKyAgICBjb25zdCBpbnQgc2NhbGVkX3cgPSAoaW50KWNlaWwoKG93ICsg
MSkgLyB6b29tKTsKKyAgICBjb25zdCBpbnQgc2NhbGVkX2ggPSAoaW50KWNlaWwoKG9oICsgMSkg
LyB6b29tKTsKKwogICAgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3Jf
ZGF0YQogICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93
ICogNCk7CiAgICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7CkBAIC00
MTUsNiArNDYxLDggQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3Jl
cGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICAgICAgZ290byBlcnJv
cl9jYWlybzsKICAgICB9CiAKKyAgICBjYWlyb19zZXRfYW50aWFsaWFzKGNhaXJvLCBDQUlST19B
TlRJQUxJQVNfTk9ORSk7CisKICAgICBjdHh0ID0gZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9uZXco
c2QtPl9wcml2LCBjYWlybyk7CiAgICAgaWYgKCFjdHh0KSB7CiAgICAgICAgIEVSUigiY291bGQg
bm90IGNyZWF0ZSBwYWludCBjb250ZXh0Iik7CkBAIC00MjIsMTcgKzQ3MCwyMiBAQCBzdGF0aWMg
RWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmll
d19TbWFydF9EYXRhICpzZAogICAgICAgICBnb3RvIGVycm9yX3BhaW50X2NvbnRleHQ7CiAgICAg
fQogCi0gICAgdGlsZXIgPSBlaW5hX3RpbGVyX25ldyhvdywgb2gpOworICAgIHRpbGVyID0gZWlu
YV90aWxlcl9uZXcoc2NhbGVkX3csIHNjYWxlZF9oKTsKICAgICBpZiAoIXRpbGVyKSB7Ci0gICAg
ICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIG93LCBvaCk7CisgICAgICAg
IEVSUigiY291bGQgbm90IGNyZWF0ZSB0aWxlciAlZHglZCIsIHNjYWxlZF93LCBzY2FsZWRfaCk7
CiAgICAgICAgIHJldCA9IEVJTkFfRkFMU0U7CiAgICAgICAgIGdvdG8gZXJyb3JfdGlsZXI7CiAg
ICAgfQogCisgICAgaW50IHN4LCBzeTsKKyAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc2Qt
Pm1haW5fZnJhbWUsICZzeCwgJnN5KTsKKwogICAgIHByID0gZXdrX3ZpZXdfcmVwYWludHNfZ2V0
KHNkLT5fcHJpdiwgJmNvdW50KTsKICAgICBwcl9lbmQgPSBwciArIGNvdW50OwotICAgIGZvciAo
OyBwciA8IHByX2VuZDsgcHIrKykKKyAgICBmb3IgKDsgcHIgPCBwcl9lbmQ7IHByKyspIHsKKyAg
ICAgICAgREJHKCJQcm9jZXNzaW5nIHJlcGFpbnQ6JWQsJWQrJWR4JWQgdGlsZXI6JWR4JWQiLCBw
ci0+eCwgcHItPnksIHByLT53LCBwci0+aCwgc2NhbGVkX3csIHNjYWxlZF9oKTsKICAgICAgICAg
ZWluYV90aWxlcl9yZWN0X2FkZCh0aWxlciwgcHIpOworICAgIH0KIAogICAgIGl0ciA9IGVpbmFf
dGlsZXJfaXRlcmF0b3JfbmV3KHRpbGVyKTsKICAgICBpZiAoIWl0cikgewpAQCAtNDQxLDI2ICs0
OTQsMzEgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRz
X3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QKICAgICAgICAgZ290byBlcnJvcl9pdGVy
YXRvcjsKICAgICB9CiAKLSAgICBpbnQgc3gsIHN5OwotICAgIGV3a19mcmFtZV9zY3JvbGxfcG9z
X2dldChzZC0+bWFpbl9mcmFtZSwgJnN4LCAmc3kpOwotCiAgICAgRUlOQV9JVEVSQVRPUl9GT1JF
QUNIKGl0ciwgcikgewotICAgICAgICBFaW5hX1JlY3RhbmdsZSBzY3JvbGxlZF9yZWN0ID0gewot
ICAgICAgICAgICAgci0+eCArIHN4LCByLT55ICsgc3ksCi0gICAgICAgICAgICByLT53LCByLT5o
CisgICAgICAgIEVpbmFfUmVjdGFuZ2xlIHJlcGFpbnRfcmVjdCA9IHsKKyAgICAgICAgICAgIHIt
PnggLSBmbG9vcihzeCAvIHpvb20pLAorICAgICAgICAgICAgci0+eSAtIGZsb29yKHN5IC8gem9v
bSksCisgICAgICAgICAgICByLT53ICsgMiAqIGZsb29yKChzeCArIDEpIC8gem9vbSksCisgICAg
ICAgICAgICByLT5oICsgMiAqIGZsb29yKChzeSArIDEpIC8gem9vbSkKICAgICAgICAgfTsKIAor
ICAgICAgICBEQkcoInJlcGFpbnRfcmVjdDolZCwlZCslZHglZCBzY3JvbGw6JWQsJWQgem9vbTol
ZiIsIHJlcGFpbnRfcmVjdC54LCByZXBhaW50X3JlY3QueSwgcmVwYWludF9yZWN0LncsIHJlcGFp
bnRfcmVjdC5oLCBzeCwgc3ksIHpvb20pOworCiAgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRl
eHRfc2F2ZShjdHh0KTsKIAotICAgICAgICBpZiAoKHN4KSB8fCAoc3kpKQotICAgICAgICAgICAg
ZXdrX3ZpZXdfcGFpbnRfY29udGV4dF90cmFuc2xhdGUoY3R4dCwgLXN4LCAtc3kpOworICAgICAg
ICBld2tfdmlld19wYWludF9jb250ZXh0X3RyYW5zbGF0ZShjdHh0LCAtc3gsIC1zeSk7CisgICAg
ICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfc2NhbGUoY3R4dCwgem9vbSwgem9vbSk7CiAKLSAg
ICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9jbGlwKGN0eHQsICZzY3JvbGxlZF9yZWN0KTsK
LSAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250ZW50cyhjdHh0LCAmc2Ny
b2xsZWRfcmVjdCk7CisgICAgICAgIGV3a192aWV3X3BhaW50X2NvbnRleHRfY2xpcChjdHh0LCAm
cmVwYWludF9yZWN0KTsKKyAgICAgICAgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9wYWludF9jb250
ZW50cyhjdHh0LCAmcmVwYWludF9yZWN0KTsKIAogICAgICAgICBld2tfdmlld19wYWludF9jb250
ZXh0X3Jlc3RvcmUoY3R4dCk7CiAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRl
X2FkZAotICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCByLT54LCByLT55LCByLT53LCBy
LT5oKTsKKyAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwKKyAgICAgICAgICAgICBscmlu
dGYoem9vbSAqIHItPngpLAorICAgICAgICAgICAgIGxyaW50Zih6b29tICogci0+eSksCisgICAg
ICAgICAgICAgbHJpbnRmKHpvb20gKiByLT53KSwKKyAgICAgICAgICAgICBscmludGYoem9vbSAq
IHItPmgpKTsKICAgICB9CiAgICAgZWluYV9pdGVyYXRvcl9mcmVlKGl0cik7CiAKQEAgLTUwNywx
MCArNTY1LDIwIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF96b29t
X3dlYWtfc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkLCBmCiAgICAgfQogICAgIGV2YXNfb2Jq
ZWN0X21vdmUoY2xpcCwgc2QtPnZpZXcueCArIGR4LCBzZC0+dmlldy55ICsgZHkpOwogCi0gICAg
aWYgKGN3IDwgc2QtPnZpZXcudykKLSAgICAgICAgdyA9IGN3ICogc2NhbGU7Ci0gICAgaWYgKGNo
IDwgc2QtPnZpZXcuaCkKLSAgICAgICAgaCA9IGNoICogc2NhbGU7CisgICAgaWYgKGV3a19mcmFt
ZV96b29tX2NhaXJvX3NjYWxpbmdfZ2V0KHNkLT5tYWluX2ZyYW1lKSkgeworICAgICAgICBjdyAq
PSB6b29tOworICAgICAgICBjaCAqPSB6b29tOworICAgICAgICBpZiAoY3cgPCB3KQorICAgICAg
ICAgICAgdyA9IGN3OworICAgICAgICBpZiAoY2ggPCBoKQorICAgICAgICAgICAgaCA9IGNoOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjdyA8IHNkLT52aWV3LncpCisgICAgICAgICAgICB3
ID0gY3cgKiBzY2FsZTsKKyAgICAgICAgaWYgKGNoIDwgc2QtPnZpZXcuaCkKKyAgICAgICAgICAg
IGggPSBjaCAqIHNjYWxlOworICAgIH0KKwogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjbGlwLCB3
LCBoKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQo=
</data>
<flag name="review"
          id="66529"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
      

    </bug>

</bugzilla>