<?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>39366</bug_id>
          
          <creation_ts>2010-05-19 10:22:20 -0700</creation_ts>
          <short_desc>Move view-related functions from Frame to FrameView</short_desc>
          <delta_ts>2010-05-25 09:49:23 -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>New Bugs</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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227870</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-19 10:22:20 -0700</bug_when>
    <thetext>Move view-related functions from Frame to FrameView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227883</commentid>
    <comment_count>1</comment_count>
      <attachid>56500</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-19 10:40:14 -0700</bug_when>
    <thetext>Created attachment 56500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227885</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-05-19 10:49:14 -0700</bug_when>
    <thetext>Attachment 56500 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/2265334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227897</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-19 11:06:08 -0700</bug_when>
    <thetext>Attachment 56500 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2284350</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228238</commentid>
    <comment_count>4</comment_count>
      <attachid>56500</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-20 00:51:52 -0700</bug_when>
    <thetext>Comment on attachment 56500
Patch

WebCore/css/CSSStyleSelector.cpp:4043
 +                          multiplier *= view-&gt;textZoomFactor();
much cleaner, thanks.

WebCore/dom/MouseRelatedEvent.cpp:137
 +      float zoomFactor = pageZoomFactor(this);
MUCH cleaner.  Thanks again!

WebCore/html/HTMLBodyElement.cpp:268
 +      document-&gt;updateLayoutIgnorePendingStylesheets();
This is a behavior change.  We didn&apos;t use to bother to layout when the view didn&apos;t exist.  Is this intentional?

WebCore/page/FrameView.h:297
 +      int m_borderX;
This is destined to be an IntSize in a later patch. :)

WebKit/efl/ewk/ewk_frame.cpp:974
 +          return -1;
-1?

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229993</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-24 17:24:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; WebCore/html/HTMLBodyElement.cpp:268
&gt;  +      document-&gt;updateLayoutIgnorePendingStylesheets();
&gt; This is a behavior change.  We didn&apos;t use to bother to layout when the view didn&apos;t exist.  Is this intentional?

It was intentional. I think it&apos;s safer to call the layout update function before looking at anything, including the view&apos;s existence.

&gt; WebCore/page/FrameView.h:297
&gt;  +      int m_borderX;
&gt; This is destined to be an IntSize in a later patch. :)

I thought the same thing.

&gt; WebKit/efl/ewk/ewk_frame.cpp:974
&gt;  +          return -1;
&gt; -1?

Just following the design of this EFL function. They made it return -1 when there is no frame. I don&apos;t understand it -- that&apos;s the downside of each port having its own API. Different quirks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229997</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-24 17:33:34 -0700</bug_when>
    <thetext>Committed r60104: &lt;http://trac.webkit.org/changeset/60104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230002</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 17:41:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60104 might have broken Qt Linux ARMv5 Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60104
http://trac.webkit.org/changeset/60101
http://trac.webkit.org/changeset/60102
http://trac.webkit.org/changeset/60103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230029</commentid>
    <comment_count>8</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-05-24 18:35:24 -0700</bug_when>
    <thetext>I think this change broke Chromium&apos;s compile on all platforms too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230317</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-25 09:47:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I think this change broke Chromium&apos;s compile on all platforms too.

Has it been fixed yet? Everything looks OK on &lt;http://build.webkit.org/waterfall&gt; at this point, so maybe I fixed it or someone else did. The fix should be simple if it hasn&apos;t been done yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230319</commentid>
    <comment_count>10</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2010-05-25 09:49:23 -0700</bug_when>
    <thetext>Yup, tc fixed it last night in r60111.  Thanks for following up!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56500</attachid>
            <date>2010-05-19 10:40:14 -0700</date>
            <delta_ts>2010-05-20 00:51:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39366-20100519104013.patch</filename>
            <type>text/plain</type>
            <size>49884</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMTAtMDUtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
dmlldy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEZyYW1lIHRvIEZyYW1lVmlldworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzNjYKKworICAgICAgICBS
ZWZhY3RvcmluZyBvbmx5IHNvIGFkZHMgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogV2ViQ29y
ZS5iYXNlLmV4cDogVXBkYXRlZC4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRG9jdW1lbnQp
OiBDYWxsIHpvb20gZmFjdG9yIGZ1bmN0aW9uCisgICAgICAgIG9uIEZyYW1lVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVj
aWZpZWRTaXplKTogRGl0dG8uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6IERpdHRvLgorICAgICAgICAq
IGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c1gp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRzWSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6cGFnZVpvb21GYWN0b3IpOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6IFVzZSBo
ZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6cmVjZWl2ZWRUYXJn
ZXQpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQpOiBDYWxsIHpvb20gZmFjdG9yIGZ1bmN0aW9uIG9uIEZy
YW1lVmlldy4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpc3BhdGNoV2hlZWxFdmVudCk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkanVzdEZvclpvb20pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxl
bWVudDo6c2V0U2Nyb2xsTGVmdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlF
bGVtZW50OjpzZXRTY3JvbGxUb3ApOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lkdGgpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmhlaWdodCk6IERpdHRv
LgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBhZ2Vab29tRmFjdG9yKTogQWRkZWQgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VUb2tlbml6ZXI6OmZpbmlzaCk6IFVzZSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURvY3VtZW50OjpyZXNpemVJbWFnZVRvRml0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURvY3VtZW50OjppbWFnZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRG9jdW1lbnQ6OnJlc3RvcmVJbWFnZVNpemUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0luV2luZG93KTogRGl0dG8uCisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppbm5l
ckhlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojppbm5lcldpZHRo
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbFgpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzY3JvbGxUbyk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFVuZGVyTW91c2UpOiBE
aXR0by4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OkZyYW1lKTogUmVtb3ZlZCBjb2RlIHRvIGluaXRpYWxpemUgbV96b29tRmFjdG9yLgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuaDogTW92ZWQgZnVuY3Rpb25zIHRvIEZyYW1lVmlldy4gTW92ZWQg
YWxsICNpZiB0byB0aGUgbGVmdAorICAgICAgICBtYXJnaW4gdG8gbWFrZSB0aGUgc3R5bGUgY29u
c2lzdGVudC4gUmVtb3ZlZCBlbXB0eSBmdW5jdGlvbgorICAgICAgICByZW1vdmVFZGl0aW5nU3R5
bGVGcm9tQm9keUVsZW1lbnQuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJlbnRab29tRmFjdG9yKTogQWRkZWQgaGVscGVyIGZ1bmN0aW9uIGZv
ciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJhbWVWaWV3KTog
QWRkZWQgaW5pdGlhbGl6YXRpb24gb2YgbV96b29tRmFjdG9yLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzaG91bGRBcHBseVRleHRab29tKTogTW92ZWQgdGhpcyBoZXJlIGZyb20gRnJh
bWUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNob3VsZEFwcGx5UGFnZVpvb20pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Wm9vbUZhY3Rvcik6IERpdHRv
LgorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDogQWRkZWQgbWVtYmVycyBtb3ZlZCBoZXJl
IGZyb20gRnJhbWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp6b29tRmFjdG9yKTogQ2FsbCBGcmFtZVZpZXcgaW5z
dGVhZCBvZiBGcmFtZS4KKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZSk6IERpdHRvLgorCiAyMDEw
LTA1LTE5ICBKdXN0aW4gU2NodWggIDxqc2NodWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiA1OTc3MCkKKysr
IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtNTM0LDcgKzUzNCw2
IEBAIF9fWk43V2ViQ29yZTVDYWNoZTEzc2V0Q2FwYWNpdGllc0VqamoKIF9fWk43V2ViQ29yZTVG
cmFtZTEwY3JlYXRlVmlld0VSS05TXzdJbnRTaXplRVJLTlNfNUNvbG9yRWJTM19iTlNfMTNTY3Jv
bGxiYXJNb2RlRWJTN19iCiBfX1pON1dlYkNvcmU1RnJhbWUxMGZpbmRTdHJpbmdFUktOU182U3Ry
aW5nRWJiYmIKIF9fWk43V2ViQ29yZTVGcmFtZTEzcmVhcHBseVN0eWxlc0V2Ci1fX1pON1dlYkNv
cmU1RnJhbWUxM3NldFpvb21GYWN0b3JFZk5TXzhab29tTW9kZUUKIF9fWk43V2ViQ29yZTVGcmFt
ZTE0ZnJhbWVGb3JXaWRnZXRFUEtOU182V2lkZ2V0RQogX19aTjdXZWJDb3JlNUZyYW1lMTVyZXZl
YWxTZWxlY3Rpb25FUktOU18xNVNjcm9sbEFsaWdubWVudEViCiBfX1pON1dlYkNvcmU1RnJhbWUy
MHNldFNlbGVjdGlvbkZyb21Ob25lRXYKQEAgLTcwNCw2ICs3MDMsNyBAQCBfX1pON1dlYkNvcmU5
RnJhbWVUcmVlN3NldE5hbWVFUktOU18xMkF0CiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlOWNsZWFy
TmFtZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTFmb3JjZUxheW91dEViCiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTJzZXRNZWRpYVR5cGVFUktOU182U3RyaW5nRQorX19aTjdXZWJDb3JlOUZy
YW1lVmlldzEzc2V0Wm9vbUZhY3RvckVmTlNfOFpvb21Nb2RlRQogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzE0YWRqdXN0Vmlld1NpemVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TWFyZ2lu
V2lkdGhFaQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE0c2V0TmVlZHNMYXlvdXRFdgpAQCAtOTIw
LDcgKzkyMCw2IEBAIF9fWk5LN1dlYkNvcmU1RnJhbWUxOHNlbGVjdGlvblRleHRSZWN0c0UKIF9f
Wk5LN1dlYkNvcmU1RnJhbWUyMHNlbGVjdGlvbkdyYW51bGFyaXR5RXYKIF9fWk5LN1dlYkNvcmU1
RnJhbWUzMGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlNUZy
YW1lMzFmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0RXYKLV9fWk5LN1dlYkNvcmU1RnJh
bWUzM3JlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlNUZy
YW1lMzdiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0RXYKIF9fWk5LN1dlYkNv
cmU1RnJhbWU4c2V0dGluZ3NFdgogX19aTks3V2ViQ29yZTVGcmFtZTlkb21XaW5kb3dFdgpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksMTAgKzEwOTks
MTIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFVBUnVsZXMoaW50JgogCiBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckRvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygp
OworCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlID0gUmVuZGVyU3R5bGU6
OmNyZWF0ZSgpOwogICAgIGRvY3VtZW50U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogICAgIGRv
Y3VtZW50U3R5bGUtPnNldFZpc3VhbGx5T3JkZXJlZChkb2N1bWVudC0+dmlzdWFsbHlPcmRlcmVk
KCkpOwotICAgIGRvY3VtZW50U3R5bGUtPnNldFpvb20oZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2Va
b29tRmFjdG9yKCkpOworICAgIGRvY3VtZW50U3R5bGUtPnNldFpvb20odmlldyA/IHZpZXctPnBh
Z2Vab29tRmFjdG9yKCkgOiAxKTsKICAgICAKICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChkb2N1bWVudC0+
cHJpbnRpbmcoKSk7CkBAIC00MDM1LDggKzQwMzcsMTIgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgtMTAw
LjAsIFBlcmNlbnQpOwogICAgICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0
VHlwZUxlbmd0aCh0eXBlKSkgewogICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSB6b29t
RmFjdG9yOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkgJiYgbV9j
aGVja2VyLm1fZG9jdW1lbnQtPmZyYW1lKCkgJiYgbV9jaGVja2VyLm1fZG9jdW1lbnQtPmZyYW1l
KCktPnNob3VsZEFwcGx5VGV4dFpvb20oKSkKLSAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9
IG1fY2hlY2tlci5tX2RvY3VtZW50LT5mcmFtZSgpLT50ZXh0Wm9vbUZhY3RvcigpOworICAgICAg
ICAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnZpZXcoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAodmlldy0+c2hvdWxkQXBwbHlUZXh0Wm9vbSgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSB2aWV3LT50ZXh0Wm9vbUZhY3RvcigpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpbmVIZWlnaHQg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCAgbXVsdGlwbGllciksIEZpeGVkKTsKICAgICAgICAgfSBl
bHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAg
ICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgoKG1fc3R5bGUtPmZvbnRTaXplKCkgKiBwcmltaXRp
dmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKQEAgLTU5MTYsOCArNTkyMiw4
IEBAIGZsb2F0IENTU1N0eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUYKICAgICBmbG9hdCB6
b29tRmFjdG9yID0gMS4wZjsKICAgICBpZiAoIXVzZVNWR1pvb21SdWxlcykgewogICAgICAgICB6
b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKLSAgICAgICAgaWYgKGRvY3VtZW50
LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5zaG91bGRBcHBseVRleHRab29tKCkpCi0g
ICAgICAgICAgICB6b29tRmFjdG9yICo9IGRvY3VtZW50LT5mcmFtZSgpLT50ZXh0Wm9vbUZhY3Rv
cigpOworICAgICAgICBpZiAoZG9jdW1lbnQtPnZpZXcoKSAmJiBkb2N1bWVudC0+dmlldygpLT5z
aG91bGRBcHBseVRleHRab29tKCkpCisgICAgICAgICAgICB6b29tRmFjdG9yICo9IGRvY3VtZW50
LT52aWV3KCktPnRleHRab29tRmFjdG9yKCk7CiAgICAgfQogCiAgICAgLy8gV2Ugc3VwcG9ydCB0
d28gdHlwZXMgb2YgbWluaW11bSBmb250IHNpemUuICBUaGUgZmlyc3QgaXMgYSBoYXJkIG92ZXJy
aWRlIHRoYXQgYXBwbGllcyB0bwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNTk3NzApCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDksNyArMTAwOSw3
IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50RnJvbVBvaW50KGludCAKICAgICBpZiAoIWZy
YW1lVmlldykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lVmlldy0+
cGFnZVpvb21GYWN0b3IoKTsKICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChG
bG9hdFBvaW50KHggKiB6b29tRmFjdG9yICArIHZpZXcoKS0+c2Nyb2xsWCgpLCB5ICogem9vbUZh
Y3RvciArIHZpZXcoKS0+c2Nyb2xsWSgpKSk7CiAKICAgICBpZiAoIWZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgUGFz
c1JlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcgogICAgIGlmICghZnJhbWVWaWV3
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFn
ZVpvb21GYWN0b3IoKTsKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWVWaWV3LT5wYWdlWm9v
bUZhY3RvcigpOwogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KEZsb2F0UG9p
bnQoeCAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgeSAqIHpvb21GYWN0b3IgKyB2
aWV3KCktPnNjcm9sbFkoKSkpOwogCiAgICAgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50
UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkKSW5kZXg6IFdlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJ
KHJldmlzaW9uIDU5NzcwKQorKysgV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBpbnQgY29udGVudHNYKEFic3Ry
YWN0VmlldyogYWJzdHIKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7
CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFt
ZVZpZXctPnNjcm9sbFgoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgIHJldHVybiBm
cmFtZVZpZXctPnNjcm9sbFgoKSAvIGZyYW1lVmlldy0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAog
c3RhdGljIGludCBjb250ZW50c1koQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCkBAIC03MCw3
ICs3MCw3IEBAIHN0YXRpYyBpbnQgY29udGVudHNZKEFic3RyYWN0VmlldyogYWJzdHIKICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFtZVZpZXctPnNjcm9sbFkoKSAvIGZy
YW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgIHJldHVybiBmcmFtZVZpZXctPnNjcm9sbFkoKSAv
IGZyYW1lVmlldy0+cGFnZVpvb21GYWN0b3IoKTsKIH0KIAogTW91c2VSZWxhdGVkRXZlbnQ6Ok1v
dXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlld0FyZywK
QEAgLTExOCw5ICsxMTgsMjMgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5h
dGVzKAogICAgIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsKIH0KIAorc3RhdGljIGZsb2F0IHBhZ2Va
b29tRmFjdG9yKFVJRXZlbnQqIGV2ZW50KQoreworICAgIERPTVdpbmRvdyogd2luZG93ID0gZXZl
bnQtPnZpZXcoKTsKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuIDE7CisgICAgRnJh
bWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybiAxOworICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2
aWV3KQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gdmlldy0+cGFnZVpvb21GYWN0b3Io
KTsKK30KKwogdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbigpCiB7
Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9ICh2aWV3KCkgJiYgdmlldygpLT5mcmFtZSgpKSA/IHZp
ZXcoKS0+ZnJhbWUoKS0+cGFnZVpvb21GYWN0b3IoKSA6IDEuMGY7CisgICAgZmxvYXQgem9vbUZh
Y3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpOwogICAgIHNldEFic29sdXRlTG9jYXRpb24ocm91
bmRlZEludFBvaW50KEZsb2F0UG9pbnQocGFnZVgoKSAqIHpvb21GYWN0b3IsIHBhZ2VZKCkgKiB6
b29tRmFjdG9yKSkpOwogfQogCkBAIC0xNDQsNyArMTU4LDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRF
dmVudDo6cmVjZWl2ZWRUYXJnZXQoKQogICAgIGlmICghaXNTaW11bGF0ZWQoKSkgewogICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByID0gdGFyZy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAg
RmxvYXRQb2ludCBsb2NhbFBvcyA9IHItPmFic29sdXRlVG9Mb2NhbChhYnNvbHV0ZUxvY2F0aW9u
KCksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSAodmlldygp
ICYmIHZpZXcoKS0+ZnJhbWUoKSkgPyB2aWV3KCktPmZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkg
OiAxLjBmOworICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRo
aXMpOwogICAgICAgICAgICAgbV9vZmZzZXRYID0gbHJvdW5kZihsb2NhbFBvcy54KCkgLyB6b29t
RmFjdG9yKTsKICAgICAgICAgICAgIG1fb2Zmc2V0WSA9IGxyb3VuZGYobG9jYWxQb3MueSgpIC8g
em9vbUZhY3Rvcik7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYkNv
cmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODM5LDggKzI4MzksOCBAQCBib29s
IE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9tCiAKICAgICBpbnQgYWRqdXN0ZWRQ
YWdlWCA9IHBhZ2VYOwogICAgIGludCBhZGp1c3RlZFBhZ2VZID0gcGFnZVk7Ci0gICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZmxvYXQgcGFnZVpv
b20gPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
ZG9jdW1lbnQoKS0+dmlldygpKSB7CisgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gdmlldy0+cGFn
ZVpvb21GYWN0b3IoKTsKICAgICAgICAgaWYgKHBhZ2Vab29tICE9IDEuMGYpIHsKICAgICAgICAg
ICAgIC8vIEFkanVzdCBvdXIgcGFnZVggYW5kIHBhZ2VZIHRvIGFjY291bnQgZm9yIHRoZSBwYWdl
IHpvb20uCiAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYID0gbHJvdW5kZihwYWdlWCAvIHBhZ2Va
b29tKTsKQEAgLTI4OTYsOCArMjg5Niw4IEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50
KFBsYXRmb3JtV2gKIAogICAgIGludCBhZGp1c3RlZFBhZ2VYID0gcG9zLngoKTsKICAgICBpbnQg
YWRqdXN0ZWRQYWdlWSA9IHBvcy55KCk7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZmxvYXQgcGFnZVpvb20gPSBmcmFtZS0+cGFnZVpvb21G
YWN0b3IoKTsKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQoKS0+dmlldygpKSB7
CisgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gdmlldy0+cGFnZVpvb21GYWN0b3IoKTsKICAgICAg
ICAgaWYgKHBhZ2Vab29tICE9IDEuMGYpIHsKICAgICAgICAgICAgIC8vIEFkanVzdCBvdXIgcGFn
ZVggYW5kIHBhZ2VZIHRvIGFjY291bnQgZm9yIHRoZSBwYWdlIHpvb20uCiAgICAgICAgICAgICBh
ZGp1c3RlZFBhZ2VYID0gbHJvdW5kZihwb3MueCgpIC8gcGFnZVpvb20pOwpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViQ29yZS9odG1sL0hUTUxC
b2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEhU
TUxCb2R5RWxlbWVudDo6c2V0VkxpbmsoY29uc3QgU3RyCiAKIHN0YXRpYyBpbnQgYWRqdXN0Rm9y
Wm9vbShpbnQgdmFsdWUsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIGZsb2F0IHpvb21G
YWN0b3IgPSBmcmFtZVZpZXctPmZyYW1lKCktPnpvb21GYWN0b3IoKTsKKyAgICBmbG9hdCB6b29t
RmFjdG9yID0gZnJhbWVWaWV3LT56b29tRmFjdG9yKCk7CiAgICAgaWYgKHpvb21GYWN0b3IgPT0g
MSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIC8vIE5lZWRlZCBiZWNhdXNlIG9mIHRydW5j
YXRpb24gKHJhdGhlciB0aGFuIHJvdW5kaW5nKSB3aGVuIHNjYWxpbmcgdXAuCkBAIC0yNjQsMTIg
KzI2NCwxMiBAQCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxMZWZ0KCkgY29uc3QKIAogdm9p
ZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbExlZnQoaW50IHNjcm9sbExlZnQpCiB7Ci0gICAg
RnJhbWVWaWV3KiBzdmlldyA9IG93bmVyRG9jdW1lbnQoKS0+dmlldygpOwotICAgIGlmIChzdmll
dykgewotICAgICAgICAvLyBVcGRhdGUgdGhlIGRvY3VtZW50J3MgbGF5b3V0Ci0gICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwotICAgICAg
ICBzdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc3RhdGljX2Nhc3Q8aW50PihzY3Jv
bGxMZWZ0ICogc3ZpZXctPmZyYW1lKCktPnpvb21GYWN0b3IoKSksIHN2aWV3LT5zY3JvbGxZKCkp
KTsKLSAgICB9ICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
CisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwor
ICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQor
ICAgICAgICByZXR1cm47CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50PihzY3JvbGxMZWZ0ICogdmlldy0+em9vbUZhY3RvcigpKSwgdmlldy0+c2Ny
b2xsWSgpKSk7CiB9CiAKIGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpIGNvbnN0CkBA
IC0yODMsMTIgKzI4MywxMiBAQCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3AoKSBjb25z
dAogCiB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xsVG9wKGludCBzY3JvbGxUb3ApCiB7
Ci0gICAgRnJhbWVWaWV3KiBzdmlldyA9IG93bmVyRG9jdW1lbnQoKS0+dmlldygpOwotICAgIGlm
IChzdmlldykgewotICAgICAgICAvLyBVcGRhdGUgdGhlIGRvY3VtZW50J3MgbGF5b3V0Ci0gICAg
ICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwot
ICAgICAgICBzdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc3ZpZXctPnNjcm9sbFgo
KSwgc3RhdGljX2Nhc3Q8aW50PihzY3JvbGxUb3AgKiBzdmlldy0+ZnJhbWUoKS0+em9vbUZhY3Rv
cigpKSkpOwotICAgIH0gICAgICAgIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRv
Y3VtZW50KCk7CisgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0cygpOworICAgIEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50LT52aWV3KCk7CisgICAgaWYg
KCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50
UG9pbnQodmlldy0+c2Nyb2xsWCgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNjcm9sbFRvcCAqIHZpZXct
Pnpvb21GYWN0b3IoKSkpKTsKIH0KIAogaW50IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsSGVpZ2h0
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDU5Nzcw
KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
QEAgLTI1NSw3ICsyNTUsNyBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6d2lkdGgoYm9vbCBpZ25v
cmVQCiAKICAgICAgICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyB3aWR0
aAogICAgICAgICBpZiAobV9pbWFnZUxvYWRlci5pbWFnZSgpKSB7Ci0gICAgICAgICAgICBmbG9h
dCB6b29tRmFjdG9yID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSA/IGRvY3VtZW50KCktPmZyYW1lKCkt
PnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOworICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9
IGRvY3VtZW50KCktPnZpZXcoKSA/IGRvY3VtZW50KCktPnZpZXcoKS0+cGFnZVpvb21GYWN0b3Io
KSA6IDEuMGY7CiAgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUxvYWRlci5pbWFnZSgpLT5pbWFn
ZVNpemUoem9vbUZhY3Rvcikud2lkdGgoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3OSw3ICsy
NzksNyBAQCBpbnQgSFRNTEltYWdlRWxlbWVudDo6aGVpZ2h0KGJvb2wgaWdub3JlCiAKICAgICAg
ICAgLy8gaWYgdGhlIGltYWdlIGlzIGF2YWlsYWJsZSwgdXNlIGl0cyBoZWlnaHQKICAgICAgICAg
aWYgKG1faW1hZ2VMb2FkZXIuaW1hZ2UoKSkgewotICAgICAgICAgICAgZmxvYXQgem9vbUZhY3Rv
ciA9IGRvY3VtZW50KCktPmZyYW1lKCkgPyBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlWm9vbUZh
Y3RvcigpIDogMS4wZjsKKyAgICAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBkb2N1bWVudCgp
LT52aWV3KCkgPyBkb2N1bWVudCgpLT52aWV3KCktPnBhZ2Vab29tRmFjdG9yKCkgOiAxLjBmOwog
ICAgICAgICAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIuaW1hZ2UoKS0+aW1hZ2VTaXplKHpvb21G
YWN0b3IpLmhlaWdodCgpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
SW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1
bWVudC5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsMTIgQEAgcHJpdmF0ZToKIAogLy8g
LS0tLS0tLS0KIAorc3RhdGljIGZsb2F0IHBhZ2Vab29tRmFjdG9yKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOworICAgIHJldHVy
biB2aWV3ID8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSA6IDE7Cit9CisKIHZvaWQgSW1hZ2VUb2tl
bml6ZXI6OndyaXRlKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYsIGJvb2wpCiB7CiAgICAgLy8gPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTM5Nz46IEpTIGNvZGUgY2Fu
IGFsd2F5cyBjYWxsIGRvY3VtZW50LndyaXRlLCB3ZSBuZWVkIHRvIGhhbmRsZSBpdC4KQEAgLTE0
NSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlVG9rZW5pemVyOjpmaW5pc2goKQogCiAgICAgICAgIGNh
Y2hlZEltYWdlLT5zZXRSZXNwb25zZShtX2RvYy0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPnJlc3BvbnNlKCkpOwogCi0gICAgICAgIEludFNpemUgc2l6ZSA9IGNhY2hlZElt
YWdlLT5pbWFnZVNpemUobV9kb2MtPmZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkpOworICAgICAg
ICBJbnRTaXplIHNpemUgPSBjYWNoZWRJbWFnZS0+aW1hZ2VTaXplKHBhZ2Vab29tRmFjdG9yKG1f
ZG9jKSk7CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkpIHsKICAgICAgICAgICAgIC8vIENvbXB1
dGUgdGhlIHRpdGxlLCB3ZSB1c2UgdGhlIGRlY29kZWQgZmlsZW5hbWUgb2YgdGhlIHJlc291cmNl
LCBmYWxsaW5nCiAgICAgICAgICAgICAvLyBiYWNrIG9uIHRoZSAoZGVjb2RlZCkgaG9zdG5hbWUg
aWYgdGhlcmUgaXMgbm8gcGF0aC4KQEAgLTIyMCw4ICsyMjYsMTIgQEAgZmxvYXQgSW1hZ2VEb2N1
bWVudDo6c2NhbGUoKSBjb25zdAogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiAxLjBmOwogCi0gICAgSW50U2l6ZSBpbWFnZVNpemUgPSBtX2ltYWdlRWxlbWVudC0+Y2Fj
aGVkSW1hZ2UoKS0+aW1hZ2VTaXplKGZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkpOwotICAgIElu
dFNpemUgd2luZG93U2l6ZSA9IEludFNpemUoZnJhbWUoKS0+dmlldygpLT53aWR0aCgpLCBmcmFt
ZSgpLT52aWV3KCktPmhlaWdodCgpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSgpLT52
aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gMTsKKworICAgIEludFNpemUg
aW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZSh2aWV3
LT5wYWdlWm9vbUZhY3RvcigpKTsKKyAgICBJbnRTaXplIHdpbmRvd1NpemUgPSBJbnRTaXplKHZp
ZXctPndpZHRoKCksIHZpZXctPmhlaWdodCgpKTsKICAgICAKICAgICBmbG9hdCB3aWR0aFNjYWxl
ID0gKGZsb2F0KXdpbmRvd1NpemUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpOwogICAgIGZs
b2F0IGhlaWdodFNjYWxlID0gKGZsb2F0KXdpbmRvd1NpemUuaGVpZ2h0KCkgLyBpbWFnZVNpemUu
aGVpZ2h0KCk7CkBAIC0yMzQsNyArMjQ0LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpyZXNpemVJ
bWFnZVRvRml0KCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBJbnRTaXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5p
bWFnZVNpemUoZnJhbWUoKS0+cGFnZVpvb21GYWN0b3IoKSk7CisgICAgSW50U2l6ZSBpbWFnZVNp
emUgPSBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKHBhZ2Vab29tRmFj
dG9yKHRoaXMpKTsKIAogICAgIGZsb2F0IHNjYWxlID0gdGhpcy0+c2NhbGUoKTsKICAgICBtX2lt
YWdlRWxlbWVudC0+c2V0V2lkdGgoc3RhdGljX2Nhc3Q8aW50PihpbWFnZVNpemUud2lkdGgoKSAq
IHNjYWxlKSk7CkBAIC0yNzQsNyArMjg0LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjppbWFnZUNo
YW5nZWQoKQogICAgIGlmIChtX2ltYWdlU2l6ZUlzS25vd24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKGZyYW1lKCkt
PnBhZ2Vab29tRmFjdG9yKCkpLmlzRW1wdHkoKSkKKyAgICBpZiAobV9pbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCktPmltYWdlU2l6ZShwYWdlWm9vbUZhY3Rvcih0aGlzKSkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9pbWFnZVNpemVJc0tub3duID0gdHJ1ZTsKQEAg
LTI5MCw4ICszMDAsOCBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnJlc3RvcmVJbWFnZVNpemUoKQog
ICAgIGlmICghbV9pbWFnZUVsZW1lbnQgfHwgIW1faW1hZ2VTaXplSXNLbm93bikKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRXaWR0aChtX2ltYWdlRWxlbWVu
dC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKGZyYW1lKCktPnBhZ2Vab29tRmFjdG9yKCkpLndp
ZHRoKCkpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRIZWlnaHQobV9pbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCktPmltYWdlU2l6ZShmcmFtZSgpLT5wYWdlWm9vbUZhY3RvcigpKS5oZWlnaHQo
KSk7CisgICAgbV9pbWFnZUVsZW1lbnQtPnNldFdpZHRoKG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJ
bWFnZSgpLT5pbWFnZVNpemUocGFnZVpvb21GYWN0b3IodGhpcykpLndpZHRoKCkpOworICAgIG1f
aW1hZ2VFbGVtZW50LT5zZXRIZWlnaHQobV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmlt
YWdlU2l6ZShwYWdlWm9vbUZhY3Rvcih0aGlzKSkuaGVpZ2h0KCkpOwogICAgIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CiAgICAgaWYgKGltYWdlRml0c0luV2luZG93KCkpCkBAIC0zMDcsOCArMzE3
LDEwIEBAIGJvb2wgSW1hZ2VEb2N1bWVudDo6aW1hZ2VGaXRzSW5XaW5kb3coKSAKICAgICBpZiAo
IW1faW1hZ2VFbGVtZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEludFNpemUgaW1h
Z2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZShmcmFtZSgp
LT5wYWdlWm9vbUZhY3RvcigpKTsKLSAgICBJbnRTaXplIHdpbmRvd1NpemUgPSBJbnRTaXplKGZy
YW1lKCktPnZpZXcoKS0+d2lkdGgoKSwgZnJhbWUoKS0+dmlldygpLT5oZWlnaHQoKSk7CisgICAg
RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUoKS0+dmlldygpOworCisgICAgSW50U2l6ZSBpbWFnZVNp
emUgPSBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplKHZpZXctPnBhZ2Va
b29tRmFjdG9yKCkpOworICAgIEludFNpemUgd2luZG93U2l6ZSA9IEludFNpemUodmlldy0+d2lk
dGgoKSwgdmlldy0+aGVpZ2h0KCkpOwogICAgIAogICAgIHJldHVybiBpbWFnZVNpemUud2lkdGgo
KSA8PSB3aW5kb3dTaXplLndpZHRoKCkgJiYgaW1hZ2VTaXplLmhlaWdodCgpIDw9IHdpbmRvd1Np
emUuaGVpZ2h0KCk7ICAgIAogfQpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDU5NzcwKQor
KysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NCw3ICs5
NTQsNyBAQCBpbnQgRE9NV2luZG93Ojppbm5lckhlaWdodCgpIGNvbnN0CiAgICAgaWYgKCF2aWV3
KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2
aWV3LT5oZWlnaHQoKSAvIG1fZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHZpZXctPmhlaWdodCgpIC8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSk7
CiB9CiAKIGludCBET01XaW5kb3c6OmlubmVyV2lkdGgoKSBjb25zdApAQCAtOTY2LDcgKzk2Niw3
IEBAIGludCBET01XaW5kb3c6OmlubmVyV2lkdGgoKSBjb25zdAogICAgIGlmICghdmlldykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2aWV3LT53aWR0
aCgpIC8gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4odmlldy0+d2lkdGgoKSAvIHZpZXctPnBhZ2Vab29tRmFjdG9yKCkpOwogfQogCiBpbnQg
RE9NV2luZG93OjpzY3JlZW5YKCkgY29uc3QKQEAgLTEwMDQsNyArMTAwNCw3IEBAIGludCBET01X
aW5kb3c6OnNjcm9sbFgoKSBjb25zdAogCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50Pih2aWV3LT5zY3JvbGxYKCkgLyBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2aWV3LT5zY3JvbGxYKCkgLyB2aWV3LT5wYWdlWm9v
bUZhY3RvcigpKTsKIH0KIAogaW50IERPTVdpbmRvdzo6c2Nyb2xsWSgpIGNvbnN0CkBAIC0xMDE4
LDcgKzEwMTgsNyBAQCBpbnQgRE9NV2luZG93OjpzY3JvbGxZKCkgY29uc3QKIAogICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+c2Nyb2xsWSgpIC8gbV9mcmFtZS0+
cGFnZVpvb21GYWN0b3IoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlldy0+c2Ny
b2xsWSgpIC8gdmlldy0+cGFnZVpvb21GYWN0b3IoKSk7CiB9CiAKIGJvb2wgRE9NV2luZG93Ojpj
bG9zZWQoKSBjb25zdApAQCAtMTI0MCw4ICsxMjQwLDggQEAgdm9pZCBET01XaW5kb3c6OnNjcm9s
bFRvKGludCB4LCBpbnQgeSkgYwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW50IHpvb21lZFggPSBzdGF0aWNfY2FzdDxpbnQ+KHggKiBtX2ZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpKTsKLSAgICBpbnQgem9vbWVkWSA9IHN0YXRpY19jYXN0PGludD4oeSAqIG1fZnJhbWUt
PnBhZ2Vab29tRmFjdG9yKCkpOworICAgIGludCB6b29tZWRYID0gc3RhdGljX2Nhc3Q8aW50Pih4
ICogdmlldy0+cGFnZVpvb21GYWN0b3IoKSk7CisgICAgaW50IHpvb21lZFkgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHkgKiB2aWV3LT5wYWdlWm9vbUZhY3RvcigpKTsKICAgICB2aWV3LT5zZXRTY3JvbGxQ
b3NpdGlvbihJbnRQb2ludCh6b29tZWRYLCB6b29tZWRZKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNTk3NzApCisrKyBXZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNyArMjY4LDggQEAgc3RhdGljIEhUTUxJ
bnB1dEVsZW1lbnQqIGFzRmlsZUlucHV0KE5vZAogCiBzdGF0aWMgRWxlbWVudCogZWxlbWVudFVu
ZGVyTW91c2UoRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSwgY29uc3QgSW50UG9pbnQmIHAp
CiB7Ci0gICAgZmxvYXQgem9vbUZhY3RvciA9IGRvY3VtZW50VW5kZXJNb3VzZS0+ZnJhbWUoKS0+
cGFnZVpvb21GYWN0b3IoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudFVuZGVyTW91
c2UtPnZpZXcoKTsKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gdmlldyA/IHZpZXctPnBhZ2Vab29t
RmFjdG9yKCkgOiAxOwogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KEZsb2F0
UG9pbnQocC54KCkgKiB6b29tRmFjdG9yLCBwLnkoKSAqIHpvb21GYWN0b3IpKTsKIAogICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDkgKzE1MSw2IEBAIEZyYW1lOjpG
cmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckUKICAgICAsIG1faXNEaXNjb25uZWN0ZWQo
ZmFsc2UpCiAgICAgLCBtX2V4Y2x1ZGVGcm9tVGV4dFNlYXJjaChmYWxzZSkKIHsKLSAgICBGcmFt
ZSogcGFyZW50ID0gcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpOwotICAgIG1f
em9vbUZhY3RvciA9IHBhcmVudCA/IHBhcmVudC0+bV96b29tRmFjdG9yIDogMS4wZjsKLQogICAg
IEF0b21pY1N0cmluZzo6aW5pdCgpOwogICAgIEhUTUxOYW1lczo6aW5pdCgpOwogICAgIFF1YWxp
ZmllZE5hbWU6OmluaXQoKTsKQEAgLTYwNyw1NiArNjA0LDYgQEAgdm9pZCBGcmFtZTo6cGFpbnRE
cmFnQ2FyZXQoR3JhcGhpY3NDb250ZQogI2VuZGlmCiB9CiAKLVpvb21Nb2RlIEZyYW1lOjp6b29t
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUo
KTsKLX0KLQotYm9vbCBGcmFtZTo6c2hvdWxkQXBwbHlUZXh0Wm9vbSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fem9vbUZhY3RvciAhPSAxLjBmICYmIHpvb21Nb2RlKCkgPT0gWm9vbVRleHRPbmx5
OwotfQotCi1ib29sIEZyYW1lOjpzaG91bGRBcHBseVBhZ2Vab29tKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV96b29tRmFjdG9yICE9IDEuMGYgJiYgem9vbU1vZGUoKSA9PSBab29tUGFnZTsKLX0K
LQotdm9pZCBGcmFtZTo6c2V0Wm9vbUZhY3RvcihmbG9hdCBwZXJjZW50LCBab29tTW9kZSBtb2Rl
KQotewotICAgIGlmIChtX3pvb21GYWN0b3IgPT0gcGVyY2VudCAmJiB6b29tTW9kZSgpID09IG1v
ZGUpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAgLy8gUmVzcGVjdCBT
VkdzIHpvb21BbmRQYW49ImRpc2FibGVkIiBwcm9wZXJ0eSBpbiBzdGFuZGFsb25lIFNWRyBkb2N1
bWVudHMuCi0gICAgLy8gRklYTUU6IEhvdyB0byBoYW5kbGUgY29tcG91bmQgZG9jdW1lbnRzICsg
em9vbUFuZFBhbj0iZGlzYWJsZWQiPyBOZWVkcyBTVkcgV0cgY2xhcmlmaWNhdGlvbi4KLSAgICBp
ZiAobV9kb2MtPmlzU1ZHRG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoIXN0YXRpY19jYXN0PFNW
R0RvY3VtZW50Kj4obV9kb2MuZ2V0KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAobV9kb2MtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBt
X2RvYy0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBpZiAobW9kZSA9PSBab29tUGFnZSkgewotICAgICAgICAvLyBVcGRhdGUgdGhlIHNjcm9s
bCBwb3NpdGlvbiB3aGVuIGRvaW5nIGEgZnVsbCBwYWdlIHpvb20sIHNvIHRoZSBjb250ZW50IHN0
YXlzIGluIHJlbGF0aXZlbHkgdGhlIHNhbWUgcG9zaXRpb24uCi0gICAgICAgIEludFBvaW50IHNj
cm9sbFBvc2l0aW9uID0gdmlldygpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBmbG9hdCBw
ZXJjZW50RGlmZmVyZW5jZSA9IChwZXJjZW50IC8gbV96b29tRmFjdG9yKTsKLSAgICAgICAgdmll
dygpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzY3JvbGxQb3NpdGlvbi54KCkgKiBwZXJj
ZW50RGlmZmVyZW5jZSwgc2Nyb2xsUG9zaXRpb24ueSgpICogcGVyY2VudERpZmZlcmVuY2UpKTsK
LSAgICB9Ci0KLSAgICBtX3pvb21GYWN0b3IgPSBwZXJjZW50OwotICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS0+c2V0Wm9vbU1vZGUobW9kZSk7Ci0KLSAgICBtX2RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6
Rm9yY2UpOwotCi0gICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hp
bGQtPnNldFpvb21GYWN0b3IobV96b29tRmFjdG9yLCBtb2RlKTsKLQotICAgIGlmIChtX2RvYy0+
cmVuZGVyZXIoKSAmJiBtX2RvYy0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3KCkt
PmRpZEZpcnN0TGF5b3V0KCkpCi0gICAgICAgIHZpZXcoKS0+bGF5b3V0KCk7Ci19Ci0KIHZvaWQg
RnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGZsb2F0IG1pblBhZ2VXaWR0aCwgZmxv
YXQgbWF4UGFnZVdpZHRoLCBib29sIGFkanVzdFZpZXdTaXplKQogewogICAgIG1fZG9jLT5zZXRQ
cmludGluZyhwcmludGluZyk7CkBAIC05MzEsMTIgKzg3OCw2IEBAIHZvaWQgRnJhbWU6OmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWUKICAgICAgICAgYXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1l
bnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGxpc3QtPml0ZW0oaSkpKTsKIH0KIAotdm9pZCBGcmFt
ZTo6cmVtb3ZlRWRpdGluZ1N0eWxlRnJvbUJvZHlFbGVtZW50KCkgY29uc3QKLXsKLSAgICAvLyBG
SVhNRTogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIFdlIHNob3VsZCBlaXRoZXIgaW1wbGVt
ZW50IGl0Ci0gICAgLy8gb3IgcmVtb3ZlIGl0IGFsb25nIHdpdGggYWxsIGNhbGwgc2l0ZXMuCi19
Ci0KIHZvaWQgRnJhbWU6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiB7CiAgICAgaWYgKCFlbGVtZW50KQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDU5NzcwKQor
KysgV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw5ICsxNDksOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SW5WaWV3U291cmNlTW9kZShi
b29sID0gdHJ1ZSk7CiAKICAgICAgICAgdm9pZCBrZWVwQWxpdmUoKTsgLy8gVXNlZCB0byBrZWVw
IHRoZSBmcmFtZSBhbGl2ZSB3aGVuIHJ1bm5pbmcgYSBzY3JpcHQgdGhhdCBtaWdodCBkZXN0cm95
IGl0LgotICAgICNpZm5kZWYgTkRFQlVHCisjaWZuZGVmIE5ERUJVRwogICAgICAgICBzdGF0aWMg
dm9pZCBjYW5jZWxBbGxLZWVwQWxpdmUoKTsKLSAgICAjZW5kaWYKKyNlbmRpZgogCiAgICAgICAg
IHZvaWQgc2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxEb2N1bWVudD4pOwogCkBAIC0xODksMTcgKzE4
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGxp
ZmVTdXBwb3J0VGltZXJGaXJlZChUaW1lcjxGcmFtZT4qKTsKIAotICAgIC8vID09PSB0byBiZSBt
b3ZlZCBpbnRvIEZyYW1lVmlldwotCi0gICAgcHVibGljOgotICAgICAgICB2b2lkIHNldFpvb21G
YWN0b3IoZmxvYXQgc2NhbGUsIFpvb21Nb2RlKTsKLSAgICAgICAgZmxvYXQgem9vbUZhY3Rvcigp
IGNvbnN0OwotICAgICAgICBab29tTW9kZSB6b29tTW9kZSgpIGNvbnN0OwotICAgICAgICBib29s
IHNob3VsZEFwcGx5VGV4dFpvb20oKSBjb25zdDsKLSAgICAgICAgYm9vbCBzaG91bGRBcHBseVBh
Z2Vab29tKCkgY29uc3Q7Ci0gICAgICAgIGZsb2F0IHBhZ2Vab29tRmFjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gc2hvdWxkQXBwbHlQYWdlWm9vbSgpID8gem9vbUZhY3RvcigpIDogMS4wZjsgfQotICAg
ICAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEFwcGx5VGV4
dFpvb20oKSA/IHpvb21GYWN0b3IoKSA6IDEuMGY7IH0KLQogICAgIC8vID09PSB0byBiZSBtb3Zl
ZCBpbnRvIENocm9tZQogCiAgICAgcHVibGljOgpAQCAtMjI1LDcgKzIxNCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoQ1NTU3R5
bGVEZWNsYXJhdGlvbiogLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKICAg
ICAgICAgU3RyaW5nIHNlbGVjdGlvblN0YXJ0U3R5bGVQcm9wZXJ0eVZhbHVlKGludCBzdHlsZVBy
b3BlcnR5SUQpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxl
bWVudCgpIGNvbnN0OwotICAgICAgICB2b2lkIHJlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxl
bWVudCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVs
ZW1lbnQqKSBjb25zdDsKIAogICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdl
KikgY29uc3Q7CkBAIC0yODUsOSArMjczLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCk7Ci0gICAgICAgIAotICAgIHByaXZhdGU6CisKICNpZiBF
TkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKKworICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50IGludGVyZmFjZQogICAgICAgICB2aXJ0dWFsIHZvaWQgdGls
ZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKQEAgLTI5
Niw3ICsyODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgSW50UmVj
dCB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCk7CiAjZW5kaWYKIAotICAgICNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKQogCiAgICAgLy8gPT09IHVuZGVjaWRlZCwgd291
bGQgbGlrZSB0byBjb25zaWRlciBtb3ZpbmcgdG8gYW5vdGhlciBjbGFzcwogCkBAIC0zMDUsOSAr
Mjk0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOU1N0cmluZyogc2VhcmNoRm9y
TGFiZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJl
c3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAgTlNTdHJp
bmcqIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoTlNBcnJheSogbGFiZWxzLCBFbGVtZW50Kik7
CiAKLSAgICAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKICAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogZGFzaGJvYXJkUmVnaW9u
c0RpY3Rpb25hcnkoKTsKLSAgICAjZW5kaWYKKyNlbmRpZgogCiAgICAgICAgIE5TSW1hZ2UqIHNl
bGVjdGlvbkltYWdlKGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAg
IE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNS
ZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7CkBAIC0zMjIsMTUgKzMxMSwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIE5TRGljdGlvbmFyeSogZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rp
b25TdGFydCgpIGNvbnN0OwogICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gYmFzZVdyaXRpbmdE
aXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogCi0gICAgI2VuZGlmCisjZW5kaWYK
IAotICAgICNpZiBQTEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOKQogCiAgICAgcHVibGlj
OgogICAgICAgICAvLyBGSVhNRSAtIFdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIHZlcnNpb24gb2Yg
bm9kZUltYWdlIGluc3RlYWQgb2YgdXNpbmcgcGxhdGZvcm0gdHlwZXMuCiAgICAgICAgIEhCSVRN
QVAgbm9kZUltYWdlKE5vZGUqKSBjb25zdDsKIAotICAgICNlbmRpZgorI2VuZGlmCiAKICAgICBw
cml2YXRlOgogICAgICAgICBQYWdlKiBtX3BhZ2U7CkBAIC0zNTAsOCArMzM5LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9ranNTdGF0dXNCYXJUZXh0OwogICAgICAg
ICBTdHJpbmcgbV9ranNEZWZhdWx0U3RhdHVzQmFyVGV4dDsKIAotICAgICAgICBmbG9hdCBtX3pv
b21GYWN0b3I7Ci0KICAgICAgICAgbXV0YWJsZSBTZWxlY3Rpb25Db250cm9sbGVyIG1fc2VsZWN0
aW9uQ29udHJvbGxlcjsKICAgICAgICAgbXV0YWJsZSBWaXNpYmxlU2VsZWN0aW9uIG1fbWFyazsK
ICAgICAgICAgbXV0YWJsZSBFZGl0b3IgbV9lZGl0b3I7CkBAIC00MzcsMTEgKzQyNCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgbV9tYXJrID0gczsKICAgICB9CiAKLSAgICBpbmxp
bmUgZmxvYXQgRnJhbWU6Onpvb21GYWN0b3IoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fem9vbUZhY3RvcjsKLSAgICB9Ci0KICAgICBpbmxpbmUgU3RyaW5nIEZyYW1lOjpqc1N0YXR1
c0JhclRleHQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fa2pzU3RhdHVzQmFyVGV4
dDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDE3IEBAIHN0cnVjdCBT
Y2hlZHVsZWRFdmVudCA6IE5vbmNvcHlhYmxlIHsKICAgICBSZWZQdHI8Tm9kZT4gbV9ldmVudFRh
cmdldDsKIH07CiAKK3N0YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50Wm9vbUZhY3RvcihGcmFtZSog
ZnJhbWUpCit7CisgICAgRnJhbWUqIHBhcmVudCA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpOwor
ICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gMTsKKyAgICBGcmFtZVZpZXcqIHBhcmVu
dFZpZXcgPSBwYXJlbnQtPnZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJl
dHVybiAxOworICAgIHJldHVybiBwYXJlbnRWaWV3LT56b29tRmFjdG9yKCk7Cit9CisKIEZyYW1l
Vmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAg
LCBtX2NhbkhhdmVTY3JvbGxiYXJzKHRydWUpCkBAIC0xMjgsNiArMTM5LDcgQEAgRnJhbWVWaWV3
OjpGcmFtZVZpZXcoRnJhbWUqIGZyYW1lKQogICAgICwgbV9kZWZlclNldE5lZWRzTGF5b3V0cygw
KQogICAgICwgbV9zZXROZWVkc0xheW91dFdhc0RlZmVycmVkKGZhbHNlKQogICAgICwgbV9zY3Jv
bGxDb3JuZXIoMCkKKyAgICAsIG1fem9vbUZhY3RvcihwYXJlbnRab29tRmFjdG9yKGZyYW1lKSkK
IHsKICAgICBpbml0KCk7CiB9CkBAIC0yMTMwLDQgKzIxNDIsNzIgQEAgSW50UG9pbnQgRnJhbWVW
aWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbgogICAgIHJldHVybiBwYXJlbnRQb2ludDsKIH0KIAor
Ym9vbCBGcmFtZVZpZXc6OnNob3VsZEFwcGx5VGV4dFpvb20oKSBjb25zdAoreworICAgIGlmICht
X3pvb21GYWN0b3IgPT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9mcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+c2V0dGluZ3MoKS0+em9vbU1vZGUoKSA9PSBa
b29tVGV4dE9ubHk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3OjpzaG91bGRBcHBseVBhZ2Vab29tKCkg
Y29uc3QKK3sKKyAgICBpZiAobV96b29tRmFjdG9yID09IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPnNldHRpbmdz
KCktPnpvb21Nb2RlKCkgPT0gWm9vbVBhZ2U7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzZXRab29t
RmFjdG9yKGZsb2F0IHBlcmNlbnQsIFpvb21Nb2RlIG1vZGUpCit7CisgICAgaWYgKCFtX2ZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwor
ICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fem9vbUZhY3RvciA9
PSBwZXJjZW50ICYmIHBhZ2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkgPT0gbW9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoU1ZH
KQorICAgIC8vIFJlc3BlY3QgU1ZHcyB6b29tQW5kUGFuPSJkaXNhYmxlZCIgcHJvcGVydHkgaW4g
c3RhbmRhbG9uZSBTVkcgZG9jdW1lbnRzLgorICAgIC8vIEZJWE1FOiBIb3cgdG8gaGFuZGxlIGNv
bXBvdW5kIGRvY3VtZW50cyArIHpvb21BbmRQYW49ImRpc2FibGVkIj8gTmVlZHMgU1ZHIFdHIGNs
YXJpZmljYXRpb24uCisgICAgaWYgKGRvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpIHsKKyAgICAg
ICAgaWYgKCFzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KGRvY3VtZW50KS0+em9vbUFuZFBhbkVu
YWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGRvY3VtZW50LT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0
KHRydWUpOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG1vZGUgPT0gWm9vbVBhZ2UpIHsKKyAg
ICAgICAgLy8gVXBkYXRlIHRoZSBzY3JvbGwgcG9zaXRpb24gd2hlbiBkb2luZyBhIGZ1bGwgcGFn
ZSB6b29tLCBzbyB0aGUgY29udGVudCBzdGF5cyBpbiByZWxhdGl2ZWx5IHRoZSBzYW1lIHBvc2l0
aW9uLgorICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHRoaXMtPnNjcm9sbFBvc2l0
aW9uKCk7CisgICAgICAgIGZsb2F0IHBlcmNlbnREaWZmZXJlbmNlID0gKHBlcmNlbnQgLyBtX3pv
b21GYWN0b3IpOworICAgICAgICBzZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzY3JvbGxQb3Np
dGlvbi54KCkgKiBwZXJjZW50RGlmZmVyZW5jZSwgc2Nyb2xsUG9zaXRpb24ueSgpICogcGVyY2Vu
dERpZmZlcmVuY2UpKTsKKyAgICB9CisKKyAgICBtX3pvb21GYWN0b3IgPSBwZXJjZW50OworICAg
IHBhZ2UtPnNldHRpbmdzKCktPnNldFpvb21Nb2RlKG1vZGUpOworCisgICAgZG9jdW1lbnQtPnJl
Y2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKKworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFt
ZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKEZyYW1lVmlldyogY2hpbGRWaWV3ID0gY2hpbGQt
PnZpZXcoKSkKKyAgICAgICAgICAgIGNoaWxkVmlldy0+c2V0Wm9vbUZhY3RvcihtX3pvb21GYWN0
b3IsIG1vZGUpOworICAgIH0KKworICAgIGlmIChkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBkb2N1
bWVudC0+cmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiBkaWRGaXJzdExheW91dCgpKQorICAg
ICAgICBsYXlvdXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAkocmV2aXNpb24gNTk3NzApCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNCw2ICsyMTQsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVZpZXdT
Y3JvbGxDb3JuZXIoUmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KICAgICB2b2lkIGludmFsaWRh
dGVTY3JvbGxDb3JuZXIoKTsKIAorICAgIHZvaWQgc2V0Wm9vbUZhY3RvcihmbG9hdCBzY2FsZSwg
Wm9vbU1vZGUpOworICAgIGZsb2F0IHpvb21GYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3pvb21G
YWN0b3I7IH0KKyAgICBib29sIHNob3VsZEFwcGx5VGV4dFpvb20oKSBjb25zdDsKKyAgICBib29s
IHNob3VsZEFwcGx5UGFnZVpvb20oKSBjb25zdDsKKyAgICBmbG9hdCBwYWdlWm9vbUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIHNob3VsZEFwcGx5UGFnZVpvb20oKSA/IG1fem9vbUZhY3RvciA6IDEu
MGY7IH0KKyAgICBmbG9hdCB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEFw
cGx5VGV4dFpvb20oKSA/IG1fem9vbUZhY3RvciA6IDEuMGY7IH0KKwogcHJpdmF0ZToKICAgICBG
cmFtZVZpZXcoRnJhbWUqKTsKIApAQCAtMjg3LDcgKzI5NCw4IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9zbG93UmVwYWludE9iamVjdENvdW50OwogICAgIHVuc2lnbmVkIG1fZml4ZWRPYmpl
Y3RDb3VudDsKIAotICAgIGludCBtX2JvcmRlclgsIG1fYm9yZGVyWTsKKyAgICBpbnQgbV9ib3Jk
ZXJYOworICAgIGludCBtX2JvcmRlclk7CiAKICAgICBUaW1lcjxGcmFtZVZpZXc+IG1fbGF5b3V0
VGltZXI7CiAgICAgYm9vbCBtX2RlbGF5ZWRMYXlvdXQ7CkBAIC0zNDMsNiArMzUxLDggQEAgcHJp
dmF0ZToKIAogICAgIC8vIFJlbmRlcmVyIHRvIGhvbGQgb3VyIGN1c3RvbSBzY3JvbGwgY29ybmVy
LgogICAgIFJlbmRlclNjcm9sbGJhclBhcnQqIG1fc2Nyb2xsQ29ybmVyOworCisgICAgZmxvYXQg
bV96b29tRmFjdG9yOwogfTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gNTk3NzApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDEwICs2NDQsOSBAQCBpbnQgUmVu
ZGVyVmlldzo6dmlld1dpZHRoKCkgY29uc3QKIAogZmxvYXQgUmVuZGVyVmlldzo6em9vbUZhY3Rv
cigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZnJhbWVWaWV3LT5mcmFtZSgpICYmIG1fZnJhbWVWaWV3
LT5mcmFtZSgpLT5zaG91bGRBcHBseVBhZ2Vab29tKCkpCi0gICAgICAgIHJldHVybiBtX2ZyYW1l
Vmlldy0+ZnJhbWUoKS0+em9vbUZhY3RvcigpOwotCi0gICAgcmV0dXJuIDEuMGY7CisgICAgaWYg
KCFtX2ZyYW1lVmlldy0+c2hvdWxkQXBwbHlQYWdlWm9vbSgpKQorICAgICAgICByZXR1cm4gMTsK
KyAgICByZXR1cm4gbV9mcmFtZVZpZXctPnpvb21GYWN0b3IoKTsKIH0KIAogLy8gVGhlIGlkZWEg
aGVyZSBpcyB0byB0YWtlIGludG8gYWNjb3VudCB3aGF0IG9iamVjdCBpcyBtb3ZpbmcgdGhlIHBh
Z2luYXRpb24gcG9pbnQsIGFuZApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDU5
NzcwKQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJNYXBwZWRBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCkBAIC0xODgs
MTggKzE4OCwxOCBAQCBTVkdWaWV3U3BlYyogU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXcoCiBm
bG9hdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUoKSBjb25zdAogewogICAgIC8vIE9ubHkg
dGhlIHBhZ2Ugem9vbSBmYWN0b3IgaXMgcmVsZXZhbnQgZm9yIFNWRwotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gZnJhbWUtPnBhZ2Va
b29tRmFjdG9yKCk7CisgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50KCktPnZpZXco
KSkKKyAgICAgICAgcmV0dXJuIHZpZXctPnBhZ2Vab29tRmFjdG9yKCk7CiAgICAgcmV0dXJuIG1f
c2NhbGU7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNj
YWxlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Cisg
ICAgaWYgKEZyYW1lVmlldyogdmlldyA9IGRvY3VtZW50KCktPnZpZXcoKSkgewogICAgICAgICAv
LyBDYWxsaW5nIHNldEN1cnJlbnRTY2FsZSgpIG9uIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVu
dCBpbiBhIHN0YW5kYWxvbmUgU1ZHIGRvY3VtZW50CiAgICAgICAgIC8vIGlzIGFsbG93ZWQgdG8g
Y2hhbmdlIHRoZSBwYWdlIHpvb20gZmFjdG9yLCBpbmZsdWVuY2luZyB0aGUgZG9jdW1lbnQgc2l6
ZSwgc2Nyb2xsYmFycyBldGMuCiAgICAgICAgIGlmIChwYXJlbnROb2RlKCkgPT0gZG9jdW1lbnQo
KSkKLSAgICAgICAgICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHNjYWxlLCBab29tUGFnZSk7Cisg
ICAgICAgICAgICB2aWV3LT5zZXRab29tRmFjdG9yKHNjYWxlLCBab29tUGFnZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gNTk3NzApCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUtMTkgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgdmlldy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEZyYW1lIHRvIEZyYW1l
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzkz
NjYKKworICAgICAgICAqIGVmbC9ld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFt
ZV9lZGl0YWJsZV9zZXQpOiBSZW1vdmVkIGNhbGwgdG8gZW1wdHkgZnVuY3Rpb24sCisgICAgICAg
IHJlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudC4KKyAgICAgICAgKGV3a19mcmFtZV96
b29tX2dldCk6IENhbGwgZnVuY3Rpb24gb24gRnJhbWVWaWV3LgorICAgICAgICAoZXdrX2ZyYW1l
X3pvb21fc2V0KTogRGl0dG8uCisgICAgICAgIChld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0
KTogRGl0dG8uCisKIDIwMTAtMDUtMTUgIExlYW5kcm8gUGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVz
aW9uLm1vYmk+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBUcmVhdC4KSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTk3NzApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUtMTkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdmlldy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEZyYW1lIHRvIEZyYW1lVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzNjYK
KworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzZXRab29tTGV2ZWwpOiBDYWxsIHNldFpvb21MZXZlbCBvbiBGcmFtZVZpZXcuCisK
IDIwMTAtMDUtMTcgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NTYsOSArMTQ1NiwxMiBAQCBpbnQgV2ViVmll
d0ltcGw6OnNldFpvb21MZXZlbChib29sIHRleHRPCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1heFRleHRTaXplTXVsdGlwbGllciksCiAgICAgICAgICAgICAgICAgIG1pblRleHRTaXplTXVs
dGlwbGllcikpOwogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKTsK
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIG1fem9vbUxldmVsOwogICAgIGlmICh6b29tRmFjdG9yICE9IGZyYW1lLT56
b29tRmFjdG9yKCkpIHsKICAgICAgICAgbV96b29tTGV2ZWwgPSB6b29tTGV2ZWw7Ci0gICAgICAg
IGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRleHRPbmx5ID8gWm9vbVRleHRPbmx5
IDogWm9vbVBhZ2UpOworICAgICAgICB2aWV3LT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3IsIHRl
eHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwogICAgIH0KICAgICByZXR1cm4gbV96
b29tTGV2ZWw7CiB9CkluZGV4OiBXZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysg
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDggKzYz
NCw2IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2IKICAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKICAgICBpZiAoZWRpdGFibGUpCiAgICAgICAgIHNkLT5mcmFtZS0+
YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+
ZnJhbWUtPnJlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudCgpOwogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKQEAgLTk3MSw3ICs5NjksMTAgQEAgZmxvYXQgZXdrX2ZyYW1lX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCAtMS4wKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1l
LCAtMS4wKTsKLSAgICByZXR1cm4gc2QtPmZyYW1lLT56b29tRmFjdG9yKCk7CisgICAgRnJhbWVW
aWV3KiB2aWV3ID0gc2QtPmZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICBy
ZXR1cm4gLTE7CisgICAgcmV0dXJuIHZpZXctPnpvb21GYWN0b3IoKTsKIH0KIAogLyoqCkBAIC05
OTMsNyArOTk0LDEwIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QK
ICAgICAgICAgem9vbU1vZGUgPSBXZWJDb3JlOjpab29tVGV4dE9ubHk7CiAgICAgZWxzZQogICAg
ICAgICB6b29tTW9kZSA9IFdlYkNvcmU6Olpvb21QYWdlOwotICAgIHNkLT5mcmFtZS0+c2V0Wm9v
bUZhY3Rvcih6b29tLCB6b29tTW9kZSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gc2QtPmZyYW1l
LT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAg
ICB2aWV3LT5zZXRab29tRmFjdG9yKHpvb20sIHpvb21Nb2RlKTsKICAgICByZXR1cm4gRUlOQV9U
UlVFOwogfQogCkBAIC0xMDMyLDcgKzEwMzYsMTAgQEAgRWluYV9Cb29sIGV3a19mcmFtZV96b29t
X3RleHRfb25seV9zZXQoRQogICAgICAgICB6b29tTW9kZSA9IFdlYkNvcmU6Olpvb21UZXh0T25s
eTsKICAgICBlbHNlCiAgICAgICAgIHpvb21Nb2RlID0gV2ViQ29yZTo6Wm9vbVBhZ2U7Ci0gICAg
c2QtPmZyYW1lLT5zZXRab29tRmFjdG9yKHNkLT5mcmFtZS0+em9vbUZhY3RvcigpLCB6b29tTW9k
ZSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gc2QtPmZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2
aWV3KQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKKyAgICB2aWV3LT5zZXRab29tRmFjdG9y
KHZpZXctPnpvb21GYWN0b3IoKSwgem9vbU1vZGUpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9
CiAKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMTkgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdmlldy1yZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIEZyYW1lIHRvIEZyYW1lVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzNjYK
KworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19zZXRfZWRpdGFibGUpOiBSZW1vdmUgY2FsbCB0byBlbXB0eSBmdW5jdGlvbgorICAg
ICAgICByZW1vdmVFZGl0bmdTdHlsZUZyb21Cb2R5RWxlbWVudC4KKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19nZXRfem9vbV9sZXZlbCk6IENhbGwgZnVuY3Rpb25zIG9uIEZyYW1lVmlldy4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19hcHBseV96b29tX2xldmVsKTogRGl0dG8uCisKIDIwMTAt
MDUtMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYzLDggKzM1NjMsNyBAQCB2b2lkIHdlYmtpdF93ZWJf
dmlld19zZXRfZWRpdGFibGUoV2ViS2l0CiAgICAgICAgIC8vIFRPRE86IElmIHRoZSBXZWJLaXRX
ZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBp
dCB0byBzb21ldGhpbmcuCiAgICAgICAgIC8vaWYgKCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NlbGVj
dGVkX2RvbV9yYW5nZSh3ZWJWaWV3KSkKICAgICAgICAgLy8gICAgbWFpbkZyYW1lLT5zZXRTZWxl
Y3Rpb25Gcm9tTm9uZSgpOwotICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+cmVtb3ZlRWRpdGlu
Z1N0eWxlRnJvbUJvZHlFbGVtZW50KCk7CisgICAgfQogICAgIGdfb2JqZWN0X25vdGlmeShHX09C
SkVDVCh3ZWJWaWV3KSwgImVkaXRhYmxlIik7CiB9CiAKQEAgLTM2ODgsNyArMzY4NywxMSBAQCBn
ZmxvYXQgd2Via2l0X3dlYl92aWV3X2dldF96b29tX2xldmVsKFdlCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIDEuMGY7CiAKLSAgICByZXR1cm4gZnJhbWUtPnpvb21GYWN0b3IoKTsK
KyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAg
ICAgICAgcmV0dXJuIDE7CisKKyAgICByZXR1cm4gdmlldy0+em9vbUZhY3RvcigpOwogfQogCiBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYXBwbHlfem9vbV9sZXZlbChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBnZmxvYXQgem9vbUxldmVsKQpAQCAtMzY5Nyw4ICszNzAwLDEyIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld19hcHBseV96b29tX2wKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAg
IGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworCiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUq
IHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGZyYW1lLT5zZXRab29tRmFjdG9yKHpvb21MZXZl
bCwgcHJpdi0+em9vbUZ1bGxDb250ZW50ID8gWm9vbVBhZ2UgOiBab29tVGV4dE9ubHkpOworICAg
IHZpZXctPnNldFpvb21GYWN0b3Ioem9vbUxldmVsLCBwcml2LT56b29tRnVsbENvbnRlbnQgPyBa
b29tUGFnZSA6IFpvb21UZXh0T25seSk7CiB9CiAKIC8qKgpJbmRleDogV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5Nzcw
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMC0wNS0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB2aWV3LXJlbGF0ZWQg
ZnVuY3Rpb25zIGZyb20gRnJhbWUgdG8gRnJhbWVWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM2NgorCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRab29tTXVsdGlwbGllcjppc1RleHRPbmx5
Ol0pOiBDYWxsIGZ1bmN0aW9uIG9uIEZyYW1lVmlldy4KKyAgICAgICAgKC1bV2ViVmlldyBzZXRF
ZGl0YWJsZTpdKTogR2V0IHJpZCBvZiBjYWxsIHRvIGVtcHR5IGZ1bmN0aW9uLAorICAgICAgICBy
ZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9keUVsZW1lbnQuCisKIDIwMTAtMDUtMTggIFRvbnkgQ2hh
bmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgxLDE5ICszMTgxLDIy
IEBAIC0gKGZsb2F0KXRleHRTaXplTXVsdGlwbGllcgogICAgIHJldHVybiBbc2VsZiBfcmVhbFpv
b21NdWx0aXBsaWVySXNUZXh0T25seV0gPyBfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgOiAxLjBm
OwogfQogCi0tICh2b2lkKV9zZXRab29tTXVsdGlwbGllcjooZmxvYXQpbSBpc1RleHRPbmx5OihC
T09MKWlzVGV4dE9ubHkKKy0gKHZvaWQpX3NldFpvb21NdWx0aXBsaWVyOihmbG9hdCltdWx0aXBs
aWVyIGlzVGV4dE9ubHk6KEJPT0wpaXNUZXh0T25seQogewogICAgIC8vIE5PVEU6IFRoaXMgaGFz
IG5vIHZpc2libGUgZWZmZWN0IHdoZW4gdmlld2luZyBhIFBERiAoc2VlIDxyZGFyOi8vcHJvYmxl
bS80NzM3MzgwPikKLSAgICBfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgPSBtOworICAgIF9wcml2
YXRlLT56b29tTXVsdGlwbGllciA9IG11bHRpcGxpZXI7CisKICAgICBBU1NFUlQoX3ByaXZhdGUt
PnBhZ2UpOwogICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCktPnNldFpvb21Nb2RlKGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29t
UGFnZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8gcmV3b3JrIHRo
aXMgY29kZSBzbyB0aGF0IF9wcml2YXRlLT56b29tTXVsdGlwbGllciBkb2Vzbid0IGV4aXN0IGFu
ZCBjYWxsZXJzCi0gICAgLy8gYWxsIGFjY2VzcyBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS4K
KworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHJld29yayB0aGlzIGNvZGUgc28g
dGhhdCBfcHJpdmF0ZS0+em9vbU11bHRpcGxpZXIgZG9lc24ndCBleGlzdAorICAgIC8vIGFuZCBp
bnN0ZWFkIEZyYW1lVmlldzo6em9vbUZhY3RvciBpcyB1c2VkLgogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAg
Y29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG0sIGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBa
b29tUGFnZSk7CisgICAgaWYgKGNvcmVGcmFtZSkgeworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2
aWV3ID0gY29yZUZyYW1lLT52aWV3KCkpCisgICAgICAgICAgICB2aWV3LT5zZXRab29tRmFjdG9y
KG11bHRpcGxpZXIsIGlzVGV4dE9ubHkgPyBab29tVGV4dE9ubHkgOiBab29tUGFnZSk7CisgICAg
fQogfQogCiAtIChmbG9hdClfem9vbU11bHRpcGxpZXI6KEJPT0wpaXNUZXh0T25seQpAQCAtNDY2
Miw4ICs0NjY1LDcgQEAgLSAodm9pZClzZXRFZGl0YWJsZTooQk9PTClmbGFnCiAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJsZSBhbmQgdGhlIHNlbGVjdGlv
biBpcyBlbXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAgICAgICAgICAgICBpZiAoIVtz
ZWxmIHNlbGVjdGVkRE9NUmFuZ2VdKQogICAgICAgICAgICAgICAgICAgICBtYWluRnJhbWUtPnNl
dFNlbGVjdGlvbkZyb21Ob25lKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBtYWluRnJhbWUtPnJlbW92ZUVkaXRpbmdTdHlsZUZyb21Cb2R5RWxlbWVudCgpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1OTc3MCkKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0w
NS0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB2aWV3LXJlbGF0ZWQgZnVuY3Rpb25z
IGZyb20gRnJhbWUgdG8gRnJhbWVWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zOTM2NgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Cisg
ICAgICAgIChRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGllcik6IENhbGwgZnVuY3Rpb25z
IG9uIEZyYW1lVmlldy4KKyAgICAgICAgKFFXZWJGcmFtZTo6dGV4dFNpemVNdWx0aXBsaWVyKTog
RGl0dG8uCisgICAgICAgIChRV2ViRnJhbWU6OnNldFpvb21GYWN0b3IpOiBEaXR0by4KKyAgICAg
ICAgKFFXZWJGcmFtZTo6em9vbUZhY3Rvcik6IERpdHRvLgorICAgICAgICAqIEFwaS9xd2VicGFn
ZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKTogUmVtb3ZlZCBj
YWxsIHRvIGVtcHR5IGZ1bmN0aW9uLAorICAgICAgICByZW1vdmVFZGl0aW5nU3R5bGVGcm9tQm9k
eUVsZW1lbnQuCisKIDIwMTAtMDUtMTkgIEFudHRpIEtvaXZpc3RvICA8a29pdmlzdG9AaWtpLmZp
PgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNTk3NzApCisrKyBXZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzksNyArMTA3OSwxMSBAQCB2b2lk
IFFXZWJGcmFtZTo6cmVuZGVyKFFQYWludGVyKiBwYWludGVyCiAqLwogdm9pZCBRV2ViRnJhbWU6
OnNldFRleHRTaXplTXVsdGlwbGllcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAgZC0+ZnJhbWUtPnNl
dFpvb21GYWN0b3IoZmFjdG9yLCBab29tVGV4dE9ubHkpOworICAgIEZyYW1lVmlldyogdmlldyA9
IGQtPmZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICB2aWV3LT5zZXRab29tRmFjdG9yKGZhY3RvciwgWm9vbVRleHRPbmx5KTsKIH0KIAogLyohCkBA
IC0xMDg3LDcgKzEwOTEsMTEgQEAgdm9pZCBRV2ViRnJhbWU6OnNldFRleHRTaXplTXVsdGlwbGll
cihxcgogKi8KIHFyZWFsIFFXZWJGcmFtZTo6dGV4dFNpemVNdWx0aXBsaWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZC0+ZnJhbWUtPnpvb21GYWN0b3IoKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcg
PSBkLT5mcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIDE7CisK
KyAgICByZXR1cm4gdmlldy0+em9vbUZhY3RvcigpOwogfQogCiAvKiEKQEAgLTEwOTgsMTIgKzEx
MDYsMjQgQEAgcXJlYWwgUVdlYkZyYW1lOjp0ZXh0U2l6ZU11bHRpcGxpZXIoKSBjbwogCiB2b2lk
IFFXZWJGcmFtZTo6c2V0Wm9vbUZhY3RvcihxcmVhbCBmYWN0b3IpCiB7Ci0gICAgZC0+ZnJhbWUt
PnNldFpvb21GYWN0b3IoZmFjdG9yLCBkLT5mcmFtZS0+em9vbU1vZGUoKSk7CisgICAgUGFnZSog
cGFnZSA9IGQtPmZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBkLT5mcmFtZS0+dmlldygpOworICAgIGlmICghdmll
dykKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlldy0+c2V0Wm9vbUZhY3RvcihmYWN0b3IsIHBh
Z2UtPnNldHRpbmdzKCktPnpvb21Nb2RlKCkpOwogfQogCiBxcmVhbCBRV2ViRnJhbWU6Onpvb21G
YWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBkLT5mcmFtZS0+em9vbUZhY3RvcigpOworICAg
IEZyYW1lVmlldyogdmlldyA9IGQtPmZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAg
ICAgICByZXR1cm4gMTsKKworICAgIHJldHVybiB2aWV3LT56b29tRmFjdG9yKCk7CiB9CiAKIC8q
IQpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MzgsOCArMjYzOCw3IEBAIHZvaWQgUVdl
YlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZShib29sIGUKICAgICAgICAgICAgICAgICBmcmFtZS0+
YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IG1hYyBwb3J0IGNhbGxzIHRoaXMgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWRET01SYW5nZQog
ICAgICAgICAgICAgICAgIC8vZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZS0+cmVtb3ZlRWRpdGluZ1N0eWxlRnJv
bUJvZHlFbGVtZW50KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBkLT51
cGRhdGVFZGl0b3JBY3Rpb25zKCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTk3NzApCisrKyBXZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA1LTE5
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHZpZXctcmVsYXRlZCBmdW5jdGlvbnMgZnJv
bSBGcmFtZSB0byBGcmFtZVZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5MzY2CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJGcmFtZTo6c2V0VGV4dFNpemVNdWx0aXBsaWVyKTogQ2FsbCBmdW5jdGlvbiBvbiBGcmFtZVZp
ZXcuCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzZXRab29tTXVs
dGlwbGllcik6IERpdHRvLgorCiAyMDEwLTA1LTEzICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0
ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KSW5kZXg6
IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJh
bWUuY3BwCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAzLDcgKzExMDMsOSBAQCB2b2lkIFdlYkZyYW1lOjpzZXRUZXh0U2l6
ZU11bHRpcGxpZXIoZmxvCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAg
ICAgQVNTRVJUKGNvcmVGcmFtZSk7Ci0gICAgY29yZUZyYW1lLT5zZXRab29tRmFjdG9yKG11bHRp
cGxpZXIsIFpvb21UZXh0T25seSk7CisKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZy
YW1lLT52aWV3KCkpCisgICAgICAgIHZpZXctPnNldFpvb21GYWN0b3IobXVsdGlwbGllciwgWm9v
bVRleHRPbmx5KTsKIH0KIAogSFJFU1VMVCBXZWJGcmFtZTo6aW5WaWV3U291cmNlTW9kZShCT09M
KiBmbGFnKQpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MTEsOCArMjkxMSwxMCBAQCB2b2lkIFdlYlZpZXc6
OnNldFpvb21NdWx0aXBsaWVyKGZsb2F0IG11CiB7CiAgICAgbV96b29tTXVsdGlwbGllciA9IG11
bHRpcGxpZXI7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRab29tTW9kZShpc1RleHRPbmx5
ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOwotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
Y29yZShtX21haW5GcmFtZSkpCi0gICAgICAgIGNvcmVGcmFtZS0+c2V0Wm9vbUZhY3RvcihtdWx0
aXBsaWVyLCBpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2UpOworICAgIGlmIChG
cmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSkpIHsKKyAgICAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpKQorICAgICAgICAgICAgdmlldy0+c2V0Wm9v
bUZhY3RvcihtdWx0aXBsaWVyLCBpc1RleHRPbmx5ID8gWm9vbVRleHRPbmx5IDogWm9vbVBhZ2Up
OworICAgIH0KIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp0ZXh0U2l6
ZU11bHRpcGxpZXIoIApJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA1OTc3MCkKKysrIFdlYktpdC93eC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNS0xOSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB2aWV3LXJlbGF0ZWQgZnVuY3Rpb25zIGZyb20gRnJhbWUgdG8g
RnJhbWVWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTM2NgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFtZTo6
Q2FuSW5jcmVhc2VUZXh0U2l6ZSk6IENoZWNrIEZyYW1lVmlldyBpcyBub3QgbnVsbC4KKyAgICAg
ICAgKHd4V2ViRnJhbWU6OkluY3JlYXNlVGV4dFNpemUpOiBDYWxsIGZ1bmN0aW9uIG9uIEZyYW1l
Vmlldy4KKyAgICAgICAgKHd4V2ViRnJhbWU6OkNhbkRlY3JlYXNlVGV4dFNpemUpOiBEaXR0by4K
KyAgICAgICAgKHd4V2ViRnJhbWU6OkRlY3JlYXNlVGV4dFNpemUpOiBEaXR0by4KKyAgICAgICAg
KHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUpOiBEaXR0by4KKwogMjAxMC0wNS0xMSAgS2V2aW4g
V2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2V2aW4gT2xsaXZpZXIuCkluZGV4OiBXZWJLaXQvd3gvV2ViRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93eC9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU5NzcwKQorKysgV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgd3hX
ZWJGcmFtZTo6Q2FuUmVkbygpCiAKIGJvb2wgd3hXZWJGcmFtZTo6Q2FuSW5jcmVhc2VUZXh0U2l6
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1faW1wbC0+ZnJhbWUpIHsKKyAgICBpZiAobV9pbXBsLT5m
cmFtZSAmJiBtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgaWYgKG1fdGV4dE1hZ25p
ZmllcipUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbyA8PSBNYXhpbXVtVGV4dFNpemVNdWx0aXBsaWVy
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE2LDEzICszMTYsMTMgQEAg
dm9pZCB3eFdlYkZyYW1lOjpJbmNyZWFzZVRleHRTaXplKCkKIHsKICAgICBpZiAoQ2FuSW5jcmVh
c2VUZXh0U2l6ZSgpKSB7CiAgICAgICAgIG1fdGV4dE1hZ25pZmllciA9IG1fdGV4dE1hZ25pZmll
cipUZXh0U2l6ZU11bHRpcGxpZXJSYXRpbzsKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0Wm9v
bUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpvb21UZXh0T25seSk7CisgICAgICAg
IG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdl
YkNvcmU6Olpvb21UZXh0T25seSk7CiAgICAgfQogfQogCiBib29sIHd4V2ViRnJhbWU6OkNhbkRl
Y3JlYXNlVGV4dFNpemUoKSBjb25zdAogewotICAgIGlmIChtX2ltcGwtPmZyYW1lKSB7CisgICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+dmlldygpKSB7CiAgICAgICAgIGlm
IChtX3RleHRNYWduaWZpZXIvVGV4dFNpemVNdWx0aXBsaWVyUmF0aW8gPj0gTWluaW11bVRleHRT
aXplTXVsdGlwbGllcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMzMywx
NSArMzMzLDE1IEBAIHZvaWQgd3hXZWJGcmFtZTo6RGVjcmVhc2VUZXh0U2l6ZSgpCiB7ICAgICAg
ICAKICAgICBpZiAoQ2FuRGVjcmVhc2VUZXh0U2l6ZSgpKSB7CiAgICAgICAgIG1fdGV4dE1hZ25p
ZmllciA9IG1fdGV4dE1hZ25pZmllci9UZXh0U2l6ZU11bHRpcGxpZXJSYXRpbzsKLSAgICAgICAg
bV9pbXBsLT5mcmFtZS0+c2V0Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpv
b21UZXh0T25seSk7CisgICAgICAgIG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+c2V0Wm9vbUZhY3Rv
cihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpvb21UZXh0T25seSk7CiAgICAgfQogfQogCiB2
b2lkIHd4V2ViRnJhbWU6OlJlc2V0VGV4dFNpemUoKQogewogICAgIG1fdGV4dE1hZ25pZmllciA9
IDEuMDsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSkKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+c2V0
Wm9vbUZhY3RvcihtX3RleHRNYWduaWZpZXIsIFdlYkNvcmU6Olpvb21UZXh0T25seSk7CisgICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+dmlldygpKQorICAgICAgICBtX2lt
cGwtPmZyYW1lLT52aWV3KCktPnNldFpvb21GYWN0b3IobV90ZXh0TWFnbmlmaWVyLCBXZWJDb3Jl
Ojpab29tVGV4dE9ubHkpOwogfQogCiB2b2lkIHd4V2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29s
IGVuYWJsZSkK
</data>
<flag name="review"
          id="40926"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>