<?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>96631</bug_id>
          
          <creation_ts>2012-09-13 04:32:15 -0700</creation_ts>
          <short_desc>[EFL] Remove a lot of C&apos;ism from Ewk_Tiled_Backing_Store</short_desc>
          <delta_ts>2012-09-13 08:09:11 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719332</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 04:32:15 -0700</bug_when>
    <thetext>Ewk_Tiled_Backing_Store contains a lot of C&apos;ism and does not always follow coding style. It needs to be cleaned up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719333</commentid>
    <comment_count>1</comment_count>
      <attachid>163838</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 04:34:16 -0700</bug_when>
    <thetext>Created attachment 163838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719361</commentid>
    <comment_count>2</comment_count>
      <attachid>163838</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-13 05:19:39 -0700</bug_when>
    <thetext>Comment on attachment 163838
Patch

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

LGTM but I guess someone else should have a look, lots of changes, easy to miss something

&gt; Source/WebKit/efl/ChangeLog:9
&gt; +        Remove a lot of C&apos;ism from Ewk_Tiled_Backing_Store and
&gt; +        fix coding style.

For WebKit2 we should really just use the tiled backing store Qt uses. It integrates very well with accelerated compositing etc and is 100% implemented in WebCore

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:202
&gt;          CRITICAL(&quot;item-&gt;tile=%p, but it should be 0!&quot;, item-&gt;tile);

Why not using the EINA_ERROR_CRIT ?

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:234
&gt; +    for (int i = 0; i &lt; priv-&gt;view.rows; ++i) {

unsigned?

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:239
&gt;          EINA_INLIST_FOREACH(list, item)
&gt;              if (item-&gt;tile)
&gt;                  _ewk_tiled_backing_store_tile_dissociate(priv, item, last_used);

This is wrong coding style, should use braces ebcause the content spans multiple actual lines

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1014
&gt; +    Eina_Inlist** iterator = priv-&gt;view.items;
&gt; +    Eina_Inlist** iteratorEnd = iterator + priv-&gt;view.rows;

it
end ?

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:1777
&gt;      }
&gt;  
&gt; -    if (!eina_tile_grid_slicer_setup(&amp;renderSlicer,
&gt; -        renderRect-&gt;x, renderRect-&gt;y, renderRect-&gt;w, renderRect-&gt;h, tileWidth, tileHeight)) {
&gt; +        Eina_Tile_Grid_Slicer renderSlicer;
&gt; +    if (!eina_tile_grid_slicer_setup(&amp;renderSlicer, renderRect-&gt;x, renderRect-&gt;y, renderRect-&gt;w, renderRect-&gt;h, tileWidth, tileHeight)) {

isnt that indented wrongly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719384</commentid>
    <comment_count>3</comment_count>
      <attachid>163838</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 05:57:32 -0700</bug_when>
    <thetext>Comment on attachment 163838
Patch

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

&gt;&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:202
&gt;&gt;          CRITICAL(&quot;item-&gt;tile=%p, but it should be 0!&quot;, item-&gt;tile);
&gt; 
&gt; Why not using the EINA_ERROR_CRIT ?

Well, it&apos;s not my code but it seems we use those macros in WK1 EFL. They are defined in ewk_private.h. Basically this macro is a wrapper for EINA_LOG_DOM_CRIT().

&gt;&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:234
&gt;&gt; +    for (int i = 0; i &lt; priv-&gt;view.rows; ++i) {
&gt; 
&gt; unsigned?

Hmm. It is defined as a long in the struct :(
I&apos;ll switch to &quot;unsigned long&quot; then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719417</commentid>
    <comment_count>4</comment_count>
      <attachid>163863</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-13 06:59:15 -0700</bug_when>
    <thetext>Created attachment 163863
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719496</commentid>
    <comment_count>5</comment_count>
      <attachid>163863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 08:08:07 -0700</bug_when>
    <thetext>Comment on attachment 163863
Patch

Rejecting attachment 163863 from commit-queue.

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

Last 500 characters of output:
  return self.open(self.click(*args, **kwds))
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 255, in _mech_open
    raise response
webkitpy.thirdparty.autoinstalled.mechanize._response.httperror_seek_wrapper: HTTP Error 500: Internal Server Error

Full output: http://queues.webkit.org/results/13839529</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719499</commentid>
    <comment_count>6</comment_count>
      <attachid>163863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 08:09:08 -0700</bug_when>
    <thetext>Comment on attachment 163863
Patch

Clearing flags on attachment: 163863

Committed r128464: &lt;http://trac.webkit.org/changeset/128464&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719500</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 08:09:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163838</attachid>
            <date>2012-09-13 04:34:16 -0700</date>
            <delta_ts>2012-09-13 06:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96631_tiled_backing_store_cism.patch</filename>
            <type>text/plain</type>
            <size>83243</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MmViZjQ3Li40ZmVkZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTEgQEAKKzIwMTItMDktMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUgYSBsb3Qgb2YgQydpc20g
ZnJvbSBFd2tfVGlsZWRfQmFja2luZ19TdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgQydpc20gZnJvbSBFd2tfVGlsZWRf
QmFja2luZ19TdG9yZSBhbmQKKyAgICAgICAgZml4IGNvZGluZyBzdHlsZS4KKworICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChfRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSk6CisgICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0
YSk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKToK
KyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyk6CisgICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXNpemUpOgorICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3RpbGVfYXNzb2NpYXRlKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9kZWwpOgorICAgICAgICAoX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdCk6CisgICAgICAgIChfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2NsZWFyKToKKyAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfcHJvY2Vzc19zaW5nbGUp
OgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9z
dGFydCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIp
OgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIpOgorICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbCk6CisgICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfY2hhbmdlZCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dmlld19jb2xzX2VuZF9kZWwpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Zp
ZXdfY29sc19lbmRfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3
X3Jvd19kZWwpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19y
YW5nZV9kZWwpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19h
bGxfZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJf
ZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJfYWRk
KToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9tZW1fZGJnKToKKyAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zaWdfdXNyKToKKyAgICAgICAgKF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9zbWFydF9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3NtYXJ0X2RlbCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRf
c2hvdyk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfaGlkZSk6Cisg
ICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVjYWxjX3JlbmRlcmVycyk6CisgICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3NpemUpOgorICAg
ICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKToKKyAgICAgICAgKF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfdXApOgorICAgICAgICAoX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9kb3duKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV92aWV3X3dyYXBfbGVmdCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlld193cmFwX3JpZ2h0KToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92
aWV3X3JlZmlsbCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19wb3Nf
YXBwbHkpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0
ZV9vZmZzZXRfZm9yY2UpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0
X2NhbGN1bGF0ZV9vZmZzZXQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Nt
YXJ0X2NhbGN1bGF0ZV9wb3MpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2Zp
bGxfcmVuZGVyZXJzKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9j
YWxjdWxhdGUpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3Nl
dCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9n
ZXQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNl
dF9zZXRfaW50ZXJuYWwpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xs
X2Z1bGxfb2Zmc2V0X3NldCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3Jv
bGxfZnVsbF9vZmZzZXRfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96
b29tX3NldF9pbnRlcm5hbCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29t
X3NldCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KToK
KyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpeF9vZmZzZXRzKToKKyAgICAgICAg
KGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zbW9vdGhfc2NhbGVfc2V0KToKKyAg
ICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldCk6CisgICAgICAgIChld2tf
dGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGUpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3Bvc3Rfc2V0KToKKyAgICAgICAgKGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQpOgorICAgICAgICAoZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfZmx1c2gpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJl
X3JlbmRlcl90aWxlX2FkZCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3NwaXJhbF9xdWV1ZSk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlZ2lvbik6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX2NhbmNlbCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlX3JlbmRlcik6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVf
cmVuZGVyKToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5o
OgorICAgICAgICAoX0V3a19UaWxlX1N0YXRzKToKKyAgICAgICAgKF9Fd2tfVGlsZSk6CisgICAg
ICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9y
ZW5kZXJfY2IpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3RvcmVf
YWRkKToKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNzg3Ni4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwCmluZGV4
IDkwMzQ5OGYuLjJiOTMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi0jZGVmaW5lIElEWChjb2x1
bW4sIHJvdywgcm93c3BhbikgKGNvbHVtbiArIChyb3cgKiByb3dzcGFuKSkKLQogdHlwZWRlZiBz
dHJ1Y3QgX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfRGF0YTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtIEV3
a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW07CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1By
ZV9SZW5kZXJfUmVxdWVzdDsKQEAgLTQ0LDkgKzQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCBFd2tfVGlsZWRfQmFja2luZ19T
dG8KIHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSB7CiAgICAgRUlOQV9JTkxJ
U1Q7CiAgICAgRXdrX1RpbGUqIHRpbGU7Ci0gICAgc3RydWN0IHsKLSAgICAgICAgRXZhc19Db29y
ZCB4LCB5LCB3aWR0aCwgaGVpZ2h0OwotICAgIH0gZ2VvbWV0cnk7CisgICAgRXZhc19Db29yZF9S
ZWN0YW5nbGUgZ2VvbWV0cnk7CiAgICAgYm9vbCBzbW9vdGhTY2FsZTsKIH07CiAKQEAgLTg5LDcg
Kzg1LDcgQEAgc3RydWN0IF9Fd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhIHsKICAgICAgICAg
RXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OwogICAgIH0gbW9kZWw7CiAgICAgc3RydWN0IHsKLSAg
ICAgICAgRWluYV9Cb29sICgqY2FsbGJhY2spKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlLCBj
b25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSk7CisgICAgICAgIGJvb2wgKCpjYWxsYmFjaykodm9p
ZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKTsKICAg
ICAgICAgdm9pZCogZGF0YTsKICAgICAgICAgRWluYV9Jbmxpc3QqIHByZVJlbmRlclJlcXVlc3Rz
OwogICAgICAgICBFY29yZV9JZGxlciogaWRsZXI7CkBAIC0xMjUsMTMgKzEyMSwxNCBAQCBzdGF0
aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05V
TEw7CiAgICAgfQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmlsbF9y
ZW5kZXJlcnMoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdik7Ci1zdGF0aWMgaW5s
aW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKGNvbnN0IEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpOwogc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHBy
aXYpOwogCisjaWZkZWYgREVCVUdfTUVNX0xFQUtTCitzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKGNvbnN0IEV3a19UaWxlZF9CYWNraW5nX1N0b3Jl
X0RhdGEqIHByaXYpOworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEq
IHByaXYpCiB7Ci0gICAgdm9pZCogZGF0YSA9IDA7Ci0KICAgICAvKiBEbyBub3QgcHJvY2VzcyB1
cGRhdGVzLiBOb3RlIHRoYXQgd2Ugc3RpbGwgd2FudCB0byBnZXQgdXBkYXRlcyByZXF1ZXN0cwog
ICAgICAqIGluIHRoZSBxdWV1ZSBpbiBvcmRlciB0byBub3QgbWlzcyBhbnkgdXBkYXRlcyBhZnRl
ciB0aGUgcmVuZGVyIGlzCiAgICAgICogcmVzdW1lZC4KQEAgLTEzOSw4ICsxMzYsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2VzcyhF
d2tfVGlsZWRfQmFja2luZ19TdAogICAgIGlmIChwcml2LT5yZW5kZXIuc3VzcGVuZCB8fCAhcHJp
di0+dmlldy52aXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocHJpdi0+cHJvY2Vz
cy5wcmVDYWxsYmFjaykKLSAgICAgICAgZGF0YSA9IHByaXYtPnByb2Nlc3MucHJlQ2FsbGJhY2so
cHJpdi0+cHJvY2Vzcy5wcmVEYXRhLCBwcml2LT5zZWxmKTsKKyAgICB2b2lkKiBkYXRhID0gcHJp
di0+cHJvY2Vzcy5wcmVDYWxsYmFjayA/IHByaXYtPnByb2Nlc3MucHJlQ2FsbGJhY2socHJpdi0+
cHJvY2Vzcy5wcmVEYXRhLCBwcml2LT5zZWxmKSA6IDA7CiAKICAgICBld2tfdGlsZV9tYXRyaXhf
dXBkYXRlc19wcm9jZXNzKHByaXYtPm1vZGVsLm1hdHJpeCk7CiAKQEAgLTE2NCwxNiArMTYwLDEz
IEBAIHN0YXRpYyBpbnQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKHZvaWQqIGRhdGEp
CiAKIHN0YXRpYyBFd2tfVGlsZSogX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfbmV3KEV3
a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIHVuc2lnbmVkIGxvbmcgY29sdW1uLCB1
bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSkKIHsKLSAgICBFd2tfVGlsZSogdGlsZTsKICAg
ICBFdmFzKiBldmFzID0gZXZhc19vYmplY3RfZXZhc19nZXQocHJpdi0+c2VsZik7CiAgICAgaWYg
KCFldmFzKSB7CiAgICAgICAgIENSSVRJQ0FMKCJldmFzX29iamVjdF9ldmFzX2dldCBmYWlsZWQh
Iik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHRpbGUgPSBld2tfdGlsZV9tYXRy
aXhfdGlsZV9uZXcKLSAgICAgICAgICAgICAgIChwcml2LT5tb2RlbC5tYXRyaXgsIGV2YXMsIGNv
bHVtbiwgcm93LCB6b29tKTsKLQorICAgIEV3a19UaWxlKiB0aWxlID0gZXdrX3RpbGVfbWF0cml4
X3RpbGVfbmV3KHByaXYtPm1vZGVsLm1hdHJpeCwgZXZhcywgY29sdW1uLCByb3csIHpvb20pOwog
ICAgIGlmICghdGlsZSkgewogICAgICAgICBDUklUSUNBTCgiZXdrX3RpbGVfbWF0cml4X3RpbGVf
bmV3IGZhaWxlZCEiKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTMsMjQgKzE4NiwyNSBAQCBz
dGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9tb3ZlKEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0l0ZW0qIGl0ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfaXRlbV9yZXNpemUoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbSwgRXZh
c19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCiB7Ci0gICAgaXRlbS0+Z2VvbWV0cnku
d2lkdGggPSB3aWR0aDsKLSAgICBpdGVtLT5nZW9tZXRyeS5oZWlnaHQgPSBoZWlnaHQ7CisgICAg
aXRlbS0+Z2VvbWV0cnkudyA9IHdpZHRoOworICAgIGl0ZW0tPmdlb21ldHJ5LmggPSBoZWlnaHQ7
CiAKLSAgICBpZiAoaXRlbS0+dGlsZSkgewotICAgICAgICBldmFzX29iamVjdF9yZXNpemUoaXRl
bS0+dGlsZS0+aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBldmFzX29iamVjdF9pbWFn
ZV9maWxsX3NldChpdGVtLT50aWxlLT5pbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdodCk7Ci0gICAg
fQorICAgIGlmICghaXRlbS0+dGlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZXZhc19vYmpl
Y3RfcmVzaXplKGl0ZW0tPnRpbGUtPmltYWdlLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBldmFzX29i
amVjdF9pbWFnZV9maWxsX3NldChpdGVtLT50aWxlLT5pbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdo
dCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Fzc29j
aWF0ZShFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFd2tfVGlsZSogdGlsZSwg
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbSkKIHsKICAgICBpZiAoaXRlbS0+dGls
ZSkKICAgICAgICAgQ1JJVElDQUwoIml0ZW0tPnRpbGU9JXAsIGJ1dCBpdCBzaG91bGQgYmUgMCEi
LCBpdGVtLT50aWxlKTsKKwogICAgIGl0ZW0tPnRpbGUgPSB0aWxlOwogICAgIGV2YXNfb2JqZWN0
X21vdmUoaXRlbS0+dGlsZS0+aW1hZ2UsIGl0ZW0tPmdlb21ldHJ5LngsIGl0ZW0tPmdlb21ldHJ5
LnkpOwotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShpdGVtLT50aWxlLT5pbWFnZSwgaXRlbS0+Z2Vv
bWV0cnkud2lkdGgsIGl0ZW0tPmdlb21ldHJ5LmhlaWdodCk7Ci0gICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQKLSAgICAgICAgKGl0ZW0tPnRpbGUtPmltYWdlLCAwLCAwLCBpdGVtLT5nZW9t
ZXRyeS53aWR0aCwgaXRlbS0+Z2VvbWV0cnkuaGVpZ2h0KTsKKyAgICBldmFzX29iamVjdF9yZXNp
emUoaXRlbS0+dGlsZS0+aW1hZ2UsIGl0ZW0tPmdlb21ldHJ5LncsIGl0ZW0tPmdlb21ldHJ5Lmgp
OworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KGl0ZW0tPnRpbGUtPmltYWdlLCAwLCAw
LCBpdGVtLT5nZW9tZXRyeS53LCBpdGVtLT5nZW9tZXRyeS5oKTsKICAgICBldmFzX29iamVjdF9p
bWFnZV9zbW9vdGhfc2NhbGVfc2V0KGl0ZW0tPnRpbGUtPmltYWdlLCBpdGVtLT5zbW9vdGhTY2Fs
ZSk7CiAgICAgZXZhc19vYmplY3RfaW1hZ2VfYWxwaGFfc2V0KGl0ZW0tPnRpbGUtPmltYWdlLCBw
cml2LT52aWV3LnRpbGUuaGFzQWxwaGEpOwogCkBAIC0yMjIsMTIgKzIxNiwxMiBAQCBzdGF0aWMg
dm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9hc3NvY2lhdGUoRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfRGF0YQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dGlsZV9kaXNzb2NpYXRlKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW0sIGRvdWJsZSBsYXN0VXNlZCkKIHsKLSAgICBF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZTsKICAgICBld2tfdGlsZV9oaWRl
KGl0ZW0tPnRpbGUpOwogICAgIGlmICghZXdrX3RpbGVfdmlzaWJsZV9nZXQoaXRlbS0+dGlsZSkp
CiAgICAgICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9kZWwoaXRlbS0+dGlsZS0+aW1hZ2Up
OworCiAgICAgZXdrX3RpbGVfbWF0cml4X3RpbGVfcHV0KHByaXYtPm1vZGVsLm1hdHJpeCwgaXRl
bS0+dGlsZSwgbGFzdFVzZWQpOwotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJp
eF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAgRXdrX1RpbGVfVW51
c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hl
X2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9hdXRv
X2ZsdXNoKHRpbGVVbnVzZWRDYWNoZSk7CiAKICAgICBpdGVtLT50aWxlID0gMDsKQEAgLTIzNSwy
NSArMjI5LDIyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rp
c3NvY2lhdGUoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0CiAKIHN0YXRpYyB2b2lkIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGVfYWxsKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAgRWluYV9Jbmxpc3QqIGxpc3Q7Ci0gICAgRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKLSAgICBpbnQgaTsKICAgICBkb3VibGUgbGFz
dF91c2VkID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHBy
aXYtPnZpZXcucm93czsgaSsrKSB7Ci0gICAgICAgIGxpc3QgPSBwcml2LT52aWV3Lml0ZW1zW2ld
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJpdi0+dmlldy5yb3dzOyArK2kpIHsKKyAgICAg
ICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKKyAgICAgICAgRWluYV9Jbmxp
c3QqIGxpc3QgPSBwcml2LT52aWV3Lml0ZW1zW2ldOwogICAgICAgICBFSU5BX0lOTElTVF9GT1JF
QUNIKGxpc3QsIGl0ZW0pCiAgICAgICAgICAgICBpZiAoaXRlbS0+dGlsZSkKICAgICAgICAgICAg
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9kaXNzb2NpYXRlKHByaXYsIGl0ZW0s
IGxhc3RfdXNlZCk7CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZChFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9EYXRhKiBwcml2LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyBy
b3csIGZsb2F0IHpvb20pCitzdGF0aWMgaW5saW5lIGJvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSog
cHJpdiwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29t
KQogewogICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVx
dWVzdCA9IG5ldyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3Q7CiAK
LSAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMgPSBlaW5hX2lubGlzdF9hcHBlbmQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpdi0+cmVuZGVy
LnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lOTElTVF9HRVQocmVxdWVzdCkpOworICAgIHByaXYt
PnJlbmRlci5wcmVSZW5kZXJSZXF1ZXN0cyA9IGVpbmFfaW5saXN0X2FwcGVuZChwcml2LT5yZW5k
ZXIucHJlUmVuZGVyUmVxdWVzdHMsIEVJTkFfSU5MSVNUX0dFVChyZXF1ZXN0KSk7CiAKICAgICBy
ZXF1ZXN0LT5jb2x1bW4gPSBjb2x1bW47CiAgICAgcmVxdWVzdC0+cm93ID0gcm93OwpAQCAtMjY0
LDE2ICsyNTUsMTMgQEAgc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGUKIAogc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZGVsKEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1By
ZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVy
UmVxdWVzdHMgPSBlaW5hX2lubGlzdF9yZW1vdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lO
TElTVF9HRVQocmVxdWVzdCkpOworICAgIHByaXYtPnJlbmRlci5wcmVSZW5kZXJSZXF1ZXN0cyA9
IGVpbmFfaW5saXN0X3JlbW92ZShwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMsIEVJTkFf
SU5MSVNUX0dFVChyZXF1ZXN0KSk7CiAgICAgZGVsZXRlIHJlcXVlc3Q7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KiBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZpcnN0KGNvbnN0IEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAgcmV0dXJuIEVJTkFfSU5MSVNUX0NP
TlRBSU5FUl9HRVQoCi0gICAgICAgICAgICAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVz
dHMsCi0gICAgICAgICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1Jl
cXVlc3QpOworICAgIHJldHVybiBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHByaXYtPnJlbmRl
ci5wcmVSZW5kZXJSZXF1ZXN0cywgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9S
ZXF1ZXN0KTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVxdWVzdF9mbHVzaChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQpA
QCAtMjkwLDEyICsyNzgsMTAgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVxdWVzdF9mbHVzaChFd2tfVGlsZWRfQmFja2luZ18KIHN0YXRpYyB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikKIHsKICAgICBFaW5hX0lubGlzdCoqIHByZVJl
bmRlckxpc3QgPSAmcHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzOwotICAgIEVpbmFfSW5s
aXN0KiBpdGVyID0gKnByZVJlbmRlckxpc3QsICpuZXh0OworICAgIEVpbmFfSW5saXN0KiBpdGVy
ID0gKnByZVJlbmRlckxpc3Q7CiAgICAgd2hpbGUgKGl0ZXIpIHsKLSAgICAgICAgRXdrX1RpbGVk
X0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KiByZXF1ZXN0ID0KLSAgICAgICAgICAg
IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoCi0gICAgICAgICAgICAgICAgaXRlciwgRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KTsKLSAgICAgICAgbmV4dCA9IGl0
ZXItPm5leHQ7CisgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVx
dWVzdCogcmVxdWVzdCA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoaXRlciwgRXdrX1RpbGVk
X0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KTsKKyAgICAgICAgRWluYV9Jbmxpc3Qq
IG5leHQgPSBpdGVyLT5uZXh0OwogICAgICAgICAqcHJlUmVuZGVyTGlzdCA9IGVpbmFfaW5saXN0
X3JlbW92ZSgqcHJlUmVuZGVyTGlzdCwgaXRlcik7CiAgICAgICAgIGl0ZXIgPSBuZXh0OwogICAg
ICAgICBkZWxldGUgcmVxdWVzdDsKQEAgLTMwNSw0OSArMjkxLDM5IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVk
X0JhY2tpbmdfCiAvKiBhc3N1bWVzIHByaXYtPnByb2Nlc3MucHJlQ2FsbGJhY2sgd2FzIGNhbGxl
ZCBpZiByZXF1aXJlZCEgKi8KIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlcXVlc3RfcHJvY2Vzc19zaW5nbGUoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
RGF0YSogcHJpdikKIHsKLSAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1Jl
cXVlc3QqIHJlcXVlc3Q7Ci0gICAgRWluYV9SZWN0YW5nbGUgYXJlYTsKICAgICBFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXggPSBwcml2LT5tb2RlbC5tYXRyaXg7Ci0gICAgRXdrX1RpbGUqIHRp
bGU7Ci0gICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7Ci0gICAgdW5z
aWduZWQgbG9uZyBjb2x1bW4sIHJvdzsKLSAgICBmbG9hdCB6b29tOwogICAgIGRvdWJsZSBsYXN0
X3VzZWQgPSBlY29yZV9sb29wX3RpbWVfZ2V0KCk7CiAKLSAgICByZXF1ZXN0ID0gX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdChwcml2KTsKKyAgICBFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqIHJlcXVlc3QgPSBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZpcnN0KHByaXYpOwogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29sdW1uID0gcmVxdWVzdC0+Y29s
dW1uOwotICAgIHJvdyA9IHJlcXVlc3QtPnJvdzsKLSAgICB6b29tID0gcmVxdWVzdC0+em9vbTsK
KyAgICB1bnNpZ25lZCBsb25nIGNvbHVtbiA9IHJlcXVlc3QtPmNvbHVtbjsKKyAgICB1bnNpZ25l
ZCBsb25nIHJvdyA9IHJlcXVlc3QtPnJvdzsKKyAgICBmbG9hdCB6b29tID0gcmVxdWVzdC0+em9v
bTsKIAogICAgIGlmIChld2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHModGlsZU1hdHJp
eCwgY29sdW1uLCByb3csIHpvb20pKSB7CiAgICAgICAgIERCRygibm8gcHJlLXJlbmRlciByZXF1
aXJlZCBmb3IgdGlsZSAlbHUsJWx1IEAgJWYuIiwgY29sdW1uLCByb3csIHpvb20pOwotICAgICAg
ICBnb3RvIGVuZDsKKyAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9kZWwocHJpdiwgcmVxdWVzdCk7CisgICAgICAgIGV3a190aWxlX3VudXNlZF9jYWNo
ZV9hdXRvX2ZsdXNoKGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVs
Lm1hdHJpeCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGlsZSA9IF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyhwcml2LCBjb2x1bW4sIHJvdywgem9vbSk7Ci0gICAg
aWYgKCF0aWxlKQotICAgICAgICBnb3RvIGVuZDsKKyAgICBFd2tfVGlsZSogdGlsZSA9IF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV90aWxlX25ldyhwcml2LCBjb2x1bW4sIHJvdywgem9vbSk7Cisg
ICAgaWYgKCF0aWxlKSB7CisgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZGVsKHByaXYsIHJlcXVlc3QpOworICAgICAgICBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfYXV0b19mbHVzaChld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5t
b2RlbC5tYXRyaXgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGFyZWEueCA9IDA7
Ci0gICAgYXJlYS55ID0gMDsKLSAgICBhcmVhLncgPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0g
ICAgYXJlYS5oID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKKyAgICBFaW5hX1JlY3RhbmdsZSBh
cmVhOworICAgIEVJTkFfUkVDVEFOR0xFX1NFVCgmYXJlYSwgMCwgMCwgcHJpdi0+dmlldy50aWxl
LndpZHRoLCBwcml2LT52aWV3LnRpbGUuaGVpZ2h0KTsKIAogICAgIHByaXYtPnJlbmRlci5jYWxs
YmFjayhwcml2LT5yZW5kZXIuZGF0YSwgdGlsZSwgJmFyZWEpOwotICAgIGV2YXNfb2JqZWN0X2lt
YWdlX2RhdGFfdXBkYXRlX2FkZCgKLSAgICAgICAgdGlsZS0+aW1hZ2UsCi0gICAgICAgIGFyZWEu
eCwgYXJlYS55LCBhcmVhLncsIGFyZWEuaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkKHRpbGUtPmltYWdlLCBhcmVhLngsIGFyZWEueSwgYXJlYS53LCBhcmVhLmgpOwog
ICAgIGV3a190aWxlX21hdHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIodGlsZU1hdHJpeCwgdGlsZSk7
CiAKICAgICBld2tfdGlsZV9tYXRyaXhfdGlsZV9wdXQodGlsZU1hdHJpeCwgdGlsZSwgbGFzdF91
c2VkKTsKLQotZW5kOgotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfZGVsKHByaXYsIHJlcXVlc3QpOwotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxl
X21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7Ci0gICAgZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2godGlsZVVudXNlZENhY2hlKTsKIH0KIAogc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX2Ni
KHZvaWQqIGRhdGEpCkBAIC0zODMsMTEgKzM1OSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydChFd2tfVGlsZWRf
QgogewogICAgIGlmIChwcml2LT5yZW5kZXIuaWRsZXIgfHwgIXByaXYtPnZpZXcudmlzaWJsZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHByaXYtPnJlbmRlci5pZGxlciA9IGVjb3JlX2lkbGVyX2Fk
ZCgKLSAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9j
YiwgcHJpdik7CisKKyAgICBwcml2LT5yZW5kZXIuaWRsZXIgPSBlY29yZV9pZGxlcl9hZGQoX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYiwgcHJpdik7CiB9CiAK
LXN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVy
KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCitzdGF0aWMgYm9vbCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
RGF0YSogcHJpdikKIHsKICAgICBpZiAocHJpdi0+cmVuZGVyLnN1c3BlbmQpCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMzk3LDcgKzM3Myw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2VuYWJsZV9yZW5kZXIoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikK
K3N0YXRpYyBib29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7CiAgICAgaWYgKCFwcml2LT5yZW5kZXIu
c3VzcGVuZCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MTAsNyArMzg2LDcgQEAgc3RhdGlj
IEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBF
aW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChFd2tfVGlsZWRfQmFj
a2luZ19TdG9yZV9EYXRhKiBwcml2LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVt
LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCitzdGF0aWMgaW5saW5l
IGJvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9EYXRhKiBwcml2LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCB1
bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCiB7CiAgICAgaWYgKCFwcml2
LT52aWV3LnZpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICszOTksNiBA
QCBzdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9m
aWxsKEV3a19UaWxlZF9CYWNraW5nX1N0bwogICAgICAgICBpZiAoaXRlbS0+dGlsZSkKICAgICAg
ICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUocHJpdiwgaXRl
bSwgbGFzdFVzZWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEV3a19UaWxlKiB0aWxlOwogICAg
ICAgICBjb25zdCBmbG9hdCB6b29tID0gcHJpdi0+dmlldy50aWxlLnpvb207CiAKICAgICAgICAg
aWYgKGl0ZW0tPnRpbGUpIHsKQEAgLTQzMSwxMSArNDA2LDEwIEBAIHN0YXRpYyBpbmxpbmUgRWlu
YV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tp
bmdfU3RvCiAgICAgICAgICAgICBpZiAob2xkLT5yb3cgIT0gY3VycmVudFJvdyB8fCBvbGQtPmNv
bHVtbiAhPSBjdXJyZW50Q29sdW1uIHx8IG9sZC0+em9vbSAhPSB6b29tKQogICAgICAgICAgICAg
ICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUocHJpdiwgaXRlbSwg
bGFzdFVzZWQpOwogICAgICAgICAgICAgZWxzZSBpZiAob2xkLT5yb3cgPT0gY3VycmVudFJvdyAm
JiBvbGQtPmNvbHVtbiA9PSBjdXJyZW50Q29sdW1uICYmIG9sZC0+em9vbSA9PSB6b29tKQotICAg
ICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgdGlsZSA9IGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChw
cml2LT5tb2RlbC5tYXRyaXgsIGN1cnJlbnRDb2x1bW4sIGN1cnJlbnRSb3csIHpvb20pOwotCisg
ICAgICAgIEV3a19UaWxlKiB0aWxlID0gZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KHBy
aXYtPm1vZGVsLm1hdHJpeCwgY3VycmVudENvbHVtbiwgY3VycmVudFJvdywgem9vbSk7CiAgICAg
ICAgIGlmICghdGlsZSkgewogICAgICAgICAgICAgLyogTk9URTogaXQgbmV2ZXIgcmV0dXJucyAw
IGlmIGl0ZW0tPnRpbGUgd2FzIHNldCEgKi8KICAgICAgICAgICAgIGlmIChpdGVtLT50aWxlKSB7
CkBAIC00NTcsMTAgKzQzMSw2IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLCBsYXN0
VXNlZCk7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9hc3NvY2lh
dGUocHJpdiwgdGlsZSwgaXRlbSk7CiAgICAgICAgIH0KLQotZW5kOgotCi0gICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDY4LDE0ICs0MzgsMTIgQEAg
ZW5kOgogCiBzdGF0aWMgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX2l0ZW1fYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYs
IHVuc2lnbmVkIGxvbmcgY29sdW1uLCB1bnNpZ25lZCBsb25nIHJvdykKIHsKLSAgICBFdmFzX0Nv
b3JkIHgsIHksIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKLQogICAgIERCRygiZXdrQmFja2luZ1N0
b3JlPSVwIiwgcHJpdi0+c2VsZik7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUu
d2lkdGg7Ci0gICAgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7Ci0gICAgeCA9
IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCArIHByaXYtPnZpZXcueCArIHRpbGVXaWR0aCAqIGNv
bHVtbjsKLSAgICB5ID0gcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ICsgcHJpdi0+dmlldy55ICsg
dGlsZUhlaWdodCAqIHJvdzsKKyAgICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcu
dGlsZS53aWR0aDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUu
aGVpZ2h0OworICAgIEV2YXNfQ29vcmQgeCA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCArIHBy
aXYtPnZpZXcueCArIHRpbGVXaWR0aCAqIGNvbHVtbjsKKyAgICBFdmFzX0Nvb3JkIHkgPSBwcml2
LT52aWV3Lm9mZnNldC5iYXNlLnkgKyBwcml2LT52aWV3LnkgKyB0aWxlSGVpZ2h0ICogcm93Owog
CiAgICAgT3duUHRyPEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0+IGl0ZW0gPSBhZG9wdFB0
cihuZXcgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk7CiAgICAgaXRlbS0+dGlsZSA9IDA7
CkBAIC00OTksNyArNDY3LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2l0ZW1fZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYKICAgICBkZWxldGUg
aXRlbTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fc21v
b3RoX3NjYWxlX3NldChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCBFaW5hX0Jv
b2wgc21vb3RoU2NhbGUpCitzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRl
bV9zbW9vdGhfc2NhbGVfc2V0KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW0sIGJv
b2wgc21vb3RoU2NhbGUpCiB7CiAgICAgaWYgKGl0ZW0tPnNtb290aFNjYWxlID09IHNtb290aFNj
YWxlKQogICAgICAgICByZXR1cm47CkBAIC01MTIsMjEgKzQ4MCwxOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YQogewogICAgIGlmIChwcml2LT5jaGFuZ2VkLmFueSkKICAgICAgICAgcmV0dXJu
OworCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2hhbmdlZChwcml2LT5zZWxmKTsKICAgICBwcml2
LT5jaGFuZ2VkLmFueSA9IHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBw
cml2LCBFaW5hX0lubGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGludCBjb3VudCkKIHsKLSAgICBF
aW5hX0lubGlzdCogbmV4dEl0ZW07Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0KICAgICBpZiAoIWNv
dW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXh0SXRlbSA9ICgqcm93TGlzdCktPmxhc3Q7
Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIEVpbmFfSW5saXN0KiBu
ZXh0SXRlbSA9ICgqcm93TGlzdCktPmxhc3Q7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0q
IGl0ZW07CiAgICAgICAgIGl0ZW0gPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKG5leHRJdGVt
LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKTsKICAgICAgICAgbmV4dEl0ZW0gPSBuZXh0
SXRlbS0+cHJldjsKQEAgLTUzNSwxNCArNTAwLDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
CiAgICAgfQogfQogCi1zdGF0aWMgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92
aWV3X2NvbHNfZW5kX2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5h
X0lubGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGludCBiYXNlQ29sdW1uLCB1bnNpZ25lZCBpbnQg
Y291bnQpCitzdGF0aWMgYm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2Vu
ZF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRWluYV9Jbmxpc3QqKiBy
b3dMaXN0LCB1bnNpZ25lZCBpbnQgYmFzZUNvbHVtbiwgdW5zaWduZWQgaW50IGNvdW50KQogewot
ICAgIHVuc2lnbmVkIGludCBpLCByb3cgPSByb3dMaXN0IC0gcHJpdi0+dmlldy5pdGVtczsKLQot
ICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrLCBiYXNlQ29sdW1uKyspIHsKLSAgICAgICAg
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgcm93ID0gcm93TGlzdCAtIHByaXYtPnZpZXcuaXRlbXM7CiAKLSAgICAgICAgaXRlbSA9IF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZChwcml2LCBiYXNlQ29sdW1uLCByb3cpOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytiYXNlQ29sdW1u
KSB7CisgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW0gPSBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQocHJpdiwgYmFzZUNvbHVtbiwgcm93KTsKICAgICAg
ICAgaWYgKCFpdGVtKSB7CiAgICAgICAgICAgICBDUklUSUNBTCgiZmFpbGVkIHRvIGFkZCBjb2x1
bW4gJXUgb2YgJXUgaW4gcm93ICV1LiIsIGksIGNvdW50LCByb3cpOwogICAgICAgICAgICAgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfZGVsKHByaXYsIHJvd0xpc3QsIGkp
OwpAQCAtNTU3LDggKzUyMCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0CiBzdGF0aWMgdm9p
ZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dfZGVsKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0RhdGEqIHByaXYsIEVpbmFfSW5saXN0KiByb3cpCiB7CiAgICAgd2hpbGUgKHJvdykg
ewotICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwotICAgICAgICBp
dGVtID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChyb3csIEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0l0ZW0pOworICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtID0g
RUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChyb3csIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0
ZW0pOwogICAgICAgICByb3cgPSByb3ctPm5leHQ7CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9pdGVtX2RlbChwcml2LCBpdGVtKTsKICAgICB9CkBAIC01NjYsNyArNTI4LDcgQEAg
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93X2RlbChFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhKgogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdmlld19yb3dzX3JhbmdlX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBw
cml2LCBFaW5hX0lubGlzdCoqIHN0YXJ0LCBFaW5hX0lubGlzdCoqIGVuZCkKIHsKLSAgICBmb3Ig
KDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHsKKyAgICBmb3IgKDsgc3RhcnQgPCBlbmQ7ICsrc3Rh
cnQpIHsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93X2RlbChwcml2
LCAqc3RhcnQpOwogICAgICAgICAqc3RhcnQgPSAwOwogICAgIH0KQEAgLTU3NCwxMSArNTM2LDgg
QEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19yYW5nZV9k
ZWwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmUKIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ZpZXdfcm93c19hbGxfZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEq
IHByaXYpCiB7Ci0gICAgRWluYV9Jbmxpc3QqKiBzdGFydDsKLSAgICBFaW5hX0lubGlzdCoqIGVu
ZDsKLQotICAgIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBlbmQgPSBwcml2LT52aWV3
Lml0ZW1zICsgcHJpdi0+dmlldy5yb3dzOworICAgIEVpbmFfSW5saXN0Kiogc3RhcnQgPSBwcml2
LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogZW5kID0gcHJpdi0+dmlldy5pdGVtcyAr
IHByaXYtPnZpZXcucm93czsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dz
X3JhbmdlX2RlbChwcml2LCBzdGFydCwgZW5kKTsKIAogICAgIGZyZWUocHJpdi0+dmlldy5pdGVt
cyk7CkBAIC02MjYsNiArNTg1LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3NtYXJ0X21lbWJlcl9kZWwoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG8KICAgICBQUklW
X0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwogICAgIGlmICghcHJp
di0+Y29udGVudHNDbGlwcGVyKQogICAgICAgICByZXR1cm47CisKICAgICBldmFzX29iamVjdF9j
bGlwX3Vuc2V0KG1lbWJlcik7CiAgICAgaWYgKCFldmFzX29iamVjdF9jbGlwZWVzX2dldChwcml2
LT5jb250ZW50c0NsaXBwZXIpKQogICAgICAgICBldmFzX29iamVjdF9oaWRlKHByaXYtPmNvbnRl
bnRzQ2xpcHBlcik7CkBAIC02MzYsNiArNTk2LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3NtYXJ0X21lbWJlcl9hZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG8K
ICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwogICAg
IGlmICghcHJpdi0+Y29udGVudHNDbGlwcGVyKQogICAgICAgICByZXR1cm47CisKICAgICBldmFz
X29iamVjdF9jbGlwX3NldChtZW1iZXIsIHByaXYtPmNvbnRlbnRzQ2xpcHBlcik7CiAgICAgaWYg
KHByaXYtPnZpZXcudmlzaWJsZSkKICAgICAgICAgZXZhc19vYmplY3Rfc2hvdyhwcml2LT5jb250
ZW50c0NsaXBwZXIpOwpAQCAtNjQ0LDkgKzYwNSw5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
CiAjaWZkZWYgREVCVUdfTUVNX0xFQUtTCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfbWVtX2RiZyhFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQogewotICAg
IHN0YXRpYyBpbnQgcnVuID0gMDsKKyAgICBzdGF0aWMgdW5zaWduZWQgcnVuID0gMDsKIAotICAg
IHJ1bisrOworICAgICsrcnVuOwogCiAgICAgcHJpbnRmKCJcbi0tLSBCRUdJTiBERUJVRyBUSUxF
RCBCQUNLSU5HIFNUT1JFIE1FTU9SWSBbJWRdIC0tXG4iCiAgICAgICAgICAgICJ0aWxlPSUwLjJm
LCBvYmo9JXAsIHByaXY9JXAsIHZpZXcuaXRlbXM9JXAsIG1hdHJpeD0lcFxuIiwKQEAgLTY1OSwz
MCArNjIwLDI4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9tZW1fZGJn
KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiAgICAgcHJpbnRmKCItLS0gRU5E
IERFQlVHIFRJTEVEIEJBQ0tJTkcgU1RPUkUgTUVNT1JZIFslZF0gLS1cblxuIiwgcnVuKTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2lnX3Vzcih2b2lk
KiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCitzdGF0aWMgYm9vbCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc2lnX3Vzcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCiB7
Ci0gICAgRWNvcmVfRXZlbnRfU2lnbmFsX1VzZXIqIHNpZ25hbFVzZXIgPSAoRWNvcmVfRXZlbnRf
U2lnbmFsX1VzZXIqKWV2ZW50OwotICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHBy
aXYgPSAoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSopZGF0YTsKKyAgICBFY29yZV9FdmVu
dF9TaWduYWxfVXNlciogc2lnbmFsVXNlciA9IHN0YXRpY19jYXN0PEVjb3JlX0V2ZW50X1NpZ25h
bF9Vc2VyKj4oZXZlbnQpOworICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYg
PSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKj4oZGF0YSk7CiAKICAg
ICBpZiAoc2lnbmFsVXNlci0+bnVtYmVyID09IDIpIHsKLSAgICAgICAgRXdrX1RpbGVfVW51c2Vk
X0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7Ci0gICAgICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190
aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAgICAg
IEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0gZXdrX3RpbGVfbWF0cml4
X3VudXNlZF9jYWNoZV9nZXQocHJpdi0+bW9kZWwubWF0cml4KTsKICAgICAgICAgZXdrX3RpbGVf
dW51c2VkX2NhY2hlX2F1dG9fZmx1c2godGlsZVVudXNlZENhY2hlKTsKICAgICB9CiAKICAgICBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19kYmcocHJpdik7CiAgICAgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX21lbV9kYmcocHJpdik7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRp
ZgogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfYWRkKEV2YXNf
T2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiB7Ci0gICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
RGF0YSogcHJpdjsKLQogICAgIERCRygiZXdrQmFja2luZ1N0b3JlPSVwIiwgZXdrQmFja2luZ1N0
b3JlKTsKIAotICAgIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKj4oY2FsbG9jKDEsIHNpemVvZigqcHJpdikpKTsKKyAgICBFd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9EYXRhKiBwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0
YSo+KGNhbGxvYygxLCBzaXplb2YoKnByaXYpKSk7CiAgICAgaWYgKCFwcml2KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTczNSw5ICs2OTQsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiB7CiAgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2KTsKICAgICBEQkco
ImV3a0JhY2tpbmdTdG9yZT0lcCIsIGV3a0JhY2tpbmdTdG9yZSk7Ci0gICAgRXdrX1RpbGVfVW51
c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7CiAKLSAgICB0aWxlVW51c2VkQ2FjaGUgPSBld2tf
dGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOworICAgIEV3
a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0gZXdrX3RpbGVfbWF0cml4X3Vu
dXNlZF9jYWNoZV9nZXQocHJpdi0+bW9kZWwubWF0cml4KTsKICAgICBld2tfdGlsZV91bnVzZWRf
Y2FjaGVfdW5sb2NrX2FyZWEodGlsZVVudXNlZENhY2hlKTsKIAogICAgIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9mbHVzaChwcml2KTsKQEAgLTc5OSw2ICs3NTcsNyBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfcmVzaXplKEV2YXNfT2JqZWN0KiBld2tCYWNr
aW5nU3RvcmUsCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfc2hv
dyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQogewogICAgIFBSSVZfREFUQV9HRVRfT1Jf
UkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdik7CisKICAgICBwcml2LT52aWV3LnZpc2libGUg
PSB0cnVlOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoZXdrQmFj
a2luZ1N0b3JlKTsKICAgICBfcGFyZW50X3NjLnNob3coZXdrQmFja2luZ1N0b3JlKTsKQEAgLTgw
Nyw2ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRf
c2hvdyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQogc3RhdGljIHZvaWQgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkK
IHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwor
CiAgICAgcHJpdi0+dmlldy52aXNpYmxlID0gZmFsc2U7CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfZGlzYWJsZV9yZW5kZXIoZXdrQmFja2luZ1N0b3JlKTsKICAgICBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdGlsZV9kaXNzb2NpYXRlX2FsbChwcml2KTsKQEAgLTgxNSwyNSArNzc1LDIy
IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9oaWRlKEV2YXNf
T2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHBy
aXYsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0LCBFdmFzX0Nvb3JkIHRpbGVX
aWR0aCwgRXZhc19Db29yZCB0aWxlSGVpZ2h0KQogewotICAgIGxvbmcgY29sdW1ucywgcm93cywg
b2xkUm93cywgb2xkQ29sczsKICAgICBJTkYoImV3a0JhY2tpbmdTdG9yZT0lcCwgbmV3IHNpemU6
ICVkeCVkIiwgcHJpdi0+c2VsZiwgd2lkdGgsIGhlaWdodCk7CiAKLSAgICBjb2x1bW5zID0gMSAr
IHN0YXRpY19jYXN0PGludD4oY2VpbCh3aWR0aCAvIHN0YXRpY19jYXN0PGZsb2F0Pih0aWxlV2lk
dGgpKSk7Ci0gICAgcm93cyA9IDEgKyBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoaGVpZ2h0IC8gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRpbGVIZWlnaHQpKSk7CisgICAgbG9uZyBjb2x1bW5zID0gMSArIHN0
YXRpY19jYXN0PGxvbmc+KGNlaWwod2lkdGggLyBzdGF0aWNfY2FzdDxmbG9hdD4odGlsZVdpZHRo
KSkpOworICAgIGxvbmcgcm93cyA9IDEgKyBzdGF0aWNfY2FzdDxsb25nPihjZWlsKGhlaWdodCAv
IHN0YXRpY19jYXN0PGZsb2F0Pih0aWxlSGVpZ2h0KSkpOwogCi0gICAgSU5GKCJld2tCYWNraW5n
U3RvcmU9JXAgbmV3IGdyaWQgc2l6ZSBjb2x1bW5zOiAlbGQsIHJvd3M6ICVsZCwgd2FzICVsZCwg
JWxkIiwKLSAgICAgICAgcHJpdi0+c2VsZiwgY29sdW1ucywgcm93cywgcHJpdi0+dmlldy5jb2x1
bW5zLCBwcml2LT52aWV3LnJvd3MpOworICAgIElORigiZXdrQmFja2luZ1N0b3JlPSVwIG5ldyBn
cmlkIHNpemUgY29sdW1uczogJWxkLCByb3dzOiAlbGQsIHdhcyAlbGQsICVsZCIsIHByaXYtPnNl
bGYsIGNvbHVtbnMsIHJvd3MsIHByaXYtPnZpZXcuY29sdW1ucywgcHJpdi0+dmlldy5yb3dzKTsK
IAogICAgIGlmIChwcml2LT52aWV3LmNvbHVtbnMgPT0gY29sdW1ucyAmJiBwcml2LT52aWV3LnJv
d3MgPT0gcm93cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgb2xkQ29scyA9IHByaXYtPnZpZXcu
Y29sdW1uczsKLSAgICBvbGRSb3dzID0gcHJpdi0+dmlldy5yb3dzOworICAgIGxvbmcgb2xkQ29s
cyA9IHByaXYtPnZpZXcuY29sdW1uczsKKyAgICBsb25nIG9sZFJvd3MgPSBwcml2LT52aWV3LnJv
d3M7CiAKICAgICBpZiAocm93cyA8IG9sZFJvd3MpIHsKLSAgICAgICAgRWluYV9Jbmxpc3QqKiBz
dGFydCwgKiplbmQ7Ci0gICAgICAgIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtcyArIHJvd3M7Ci0g
ICAgICAgIGVuZCA9IHByaXYtPnZpZXcuaXRlbXMgKyBvbGRSb3dzOworICAgICAgICBFaW5hX0lu
bGlzdCoqIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtcyArIHJvd3M7CisgICAgICAgIEVpbmFfSW5s
aXN0KiogZW5kID0gcHJpdi0+dmlldy5pdGVtcyArIG9sZFJvd3M7CiAgICAgICAgIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfcmFuZ2VfZGVsKHByaXYsIHN0YXJ0LCBlbmQpOwog
ICAgIH0KIApAQCAtODQ3LDkgKzgwNCw5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhCiAgICAg
aWYgKHJvd3MgPiBvbGRSb3dzKSB7CiAgICAgICAgIEVpbmFfSW5saXN0Kiogc3RhcnQgPSBwcml2
LT52aWV3Lml0ZW1zICsgb2xkUm93czsKICAgICAgICAgRWluYV9Jbmxpc3QqKiBlbmQgPSBwcml2
LT52aWV3Lml0ZW1zICsgcm93czsKLSAgICAgICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsr
KSB7CisgICAgICAgIGZvciAoOyBzdGFydCA8IGVuZDsgKytzdGFydCkgewogICAgICAgICAgICAg
KnN0YXJ0ID0gMDsKLSAgICAgICAgICAgIEVpbmFfQm9vbCByZXN1bHQgPSBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9hZGQocHJpdiwgc3RhcnQsIDAsIGNvbHVtbnMpOwor
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19j
b2xzX2VuZF9hZGQocHJpdiwgc3RhcnQsIDAsIGNvbHVtbnMpOwogICAgICAgICAgICAgaWYgKCFy
ZXN1bHQpIHsKICAgICAgICAgICAgICAgICBDUklUSUNBTCgiZmFpbGVkIHRvIGFsbG9jYXRlICVs
ZCBjb2x1bW5zIiwgY29sdW1ucyk7CiAgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ZpZXdfcm93c19yYW5nZV9kZWwocHJpdiwgcHJpdi0+dmlldy5pdGVtcyArIG9sZFJv
d3MsIHN0YXJ0KTsKQEAgLTg2NCwxMiArODIxLDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0Rh
CiAgICAgICAgIEVpbmFfSW5saXN0Kiogc3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zOwogICAgICAg
ICBFaW5hX0lubGlzdCoqIGVuZCA9IHN0YXJ0ICsgc3RkOjptaW4ob2xkUm93cywgcm93cyk7CiAg
ICAgICAgIGlmICh0b2RvID4gMCkgewotICAgICAgICAgICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBz
dGFydCsrKSB7Ci0gICAgICAgICAgICAgICAgRWluYV9Cb29sIHJlc3VsdCA9IF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2FkZChwcml2LCBzdGFydCwgb2xkQ29scywgdG9k
byk7CisgICAgICAgICAgICBmb3IgKDsgc3RhcnQgPCBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAg
ICAgICAgICBib29sIHJlc3VsdCA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNf
ZW5kX2FkZChwcml2LCBzdGFydCwgb2xkQ29scywgdG9kbyk7CiAgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgQ1JJVElDQUwoImZhaWxlZCB0byBhbGxv
Y2F0ZSAlZCBjb2x1bW5zISIsIHRvZG8pOwogCi0gICAgICAgICAgICAgICAgICAgIGZvciAoc3Rh
cnQtLTsgc3RhcnQgPj0gcHJpdi0+dmlldy5pdGVtczsgc3RhcnQtLSkKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIChzdGFydC0tOyBzdGFydCA+PSBwcml2LT52aWV3Lml0ZW1zOyAtLXN0YXJ0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29s
c19lbmRfZGVsKHByaXYsIHN0YXJ0LCB0b2RvKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJv
d3MgPiBvbGRSb3dzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHByaXYtPnZp
ZXcuaXRlbXMgKyBvbGRSb3dzOwpAQCAtODgyLDcgKzgzOSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0RhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAodG9kbyA8IDApIHsKICAg
ICAgICAgICAgIHRvZG8gPSAtdG9kbzsKLSAgICAgICAgICAgIGZvciAoOyBzdGFydCA8IGVuZDsg
c3RhcnQrKykKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCA8IGVuZDsgKytzdGFydCkKICAgICAg
ICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwocHJp
diwgc3RhcnQsIHRvZG8pOwogICAgICAgICB9CiAgICAgfQpAQCAtODk3LDE0ICs4NTQsMTMgQEAg
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9zaXpl
KEV3a19UaWxlZF9CYWNraW5nX1N0b3IKICAgICBwcml2LT52aWV3LndpZHRoID0gd2lkdGg7CiAg
ICAgcHJpdi0+dmlldy5oZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcmVjYWxjX3JlbmRlcmVycygKLSAgICAgICAgcHJpdiwgd2lkdGgsIGhlaWdodCwgcHJp
di0+dmlldy50aWxlLndpZHRoLCBwcml2LT52aWV3LnRpbGUuaGVpZ2h0KTsKKyAgICBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcmVjYWxjX3JlbmRlcmVycyhwcml2LCB3aWR0aCwgaGVpZ2h0LCBw
cml2LT52aWV3LnRpbGUud2lkdGgsIHByaXYtPnZpZXcudGlsZS5oZWlnaHQpOwogfQogCisjaWZk
ZWYgREVCVUdfTUVNX0xFQUtTCiAvLyBUT0RPOiByZW1vdmUgbWUgbGF0ZXIuCiBzdGF0aWMgaW5s
aW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKGNvbnN0IEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAgRWluYV9Jbmxpc3QqKiBzdGFydCwg
KiplbmQ7CiAgICAgcHJpbnRmKCJ0aWxlcz0lMmxkLCUybGQgIG1vZGVsPSUybGQsJTJsZCBbJWR4
JWRdIGJhc2U9JSszbGQsJSs0bGQgb2Zmc2V0PSUrNGQsJSs0ZCBvbGQ9JSs0ZCwlKzRkIGJhc2U9
JSszZCwlKzNkXG4iLAogICAgICAgICAgICBwcml2LT52aWV3LmNvbHVtbnMsIHByaXYtPnZpZXcu
cm93cywKICAgICAgICAgICAgcHJpdi0+bW9kZWwuY3VycmVudC5jb2x1bW5zLCBwcml2LT5tb2Rl
bC5jdXJyZW50LnJvd3MsCkBAIC05MTQsOSArODcwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2RiZyhjb25zdCBFd2tfVGlsZWRfQmFja2luZ19T
dG8KICAgICAgICAgICAgcHJpdi0+dmlldy5vZmZzZXQub2xkLngsIHByaXYtPnZpZXcub2Zmc2V0
Lm9sZC55LAogICAgICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNlLngsIHByaXYtPnZpZXcu
b2Zmc2V0LmJhc2UueSk7CiAKLSAgICBzdGFydCA9IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgZW5k
ID0gcHJpdi0+dmlldy5pdGVtcyArIHByaXYtPnZpZXcucm93czsKLSAgICBmb3IgKDsgc3RhcnQg
PCBlbmQ7IHN0YXJ0KyspIHsKKyAgICBFaW5hX0lubGlzdCoqIHN0YXJ0ID0gcHJpdi0+dmlldy5p
dGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IHByaXYtPnZpZXcuaXRlbXMgKyBwcml2LT52
aWV3LnJvd3M7CisgICAgZm9yICg7IHN0YXJ0IDwgZW5kOyArK3N0YXJ0KSB7CiAgICAgICAgIGNv
bnN0IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CiAKICAgICAgICAgRUlOQV9J
TkxJU1RfRk9SRUFDSCgqc3RhcnQsIGl0ZW0pIHsKQEAgLTkzMSw2ICs4ODcsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfZGJnKGNvbnN0IEV3a19U
aWxlZF9CYWNraW5nX1N0bwogICAgIH0KICAgICBwcmludGYoIi0tLVxuIik7CiB9CisjZW5kaWYK
IAogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTk1MiwyOSArOTA5LDI5IEBAIHN0YXRpYyB2b2lkIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfdXAoRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfRGF0YSoKICAgICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVp
Z2h0OwogICAgIEV2YXNfQ29vcmQgb2Zmc2V0WSA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSAr
IGNvdW50ICogdGlsZUhlaWdodDsKICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlvblkgPSB5ICsg
KGxhc3RSb3cgLSBjb3VudCArIDEpICogdGlsZUhlaWdodCArIG9mZnNldFk7Ci0gICAgRWluYV9J
bmxpc3QqKiBpdGVyYXRvclN0YXJ0LCAqKml0ZXJhdG9yRW5kOwogICAgIEV2YXNfQ29vcmQgb3Jp
Z2luWCA9IHggKyBwcml2LT52aWV3Lm9mZnNldC5iYXNlLng7CiAKLSAgICBpdGVyYXRvclN0YXJ0
ID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBpdGVyYXRvckVuZCA9IGl0ZXJhdG9yU3RhcnQgKyBs
YXN0Um93OworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JTdGFydCA9IHByaXYtPnZpZXcuaXRl
bXM7CisgICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvckVuZCA9IGl0ZXJhdG9yU3RhcnQgKyBsYXN0
Um93OwogCi0gICAgZm9yICg7IGNvdW50ID4gMDsgY291bnQtLSkgeworICAgIGZvciAoOyBjb3Vu
dCA+IDA7IC0tY291bnQpIHsKICAgICAgICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvckxpc3Q7CiAg
ICAgICAgIEVpbmFfSW5saXN0KiB0ZW1wID0gKml0ZXJhdG9yU3RhcnQ7Ci0gICAgICAgIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07Ci0gICAgICAgIEV2YXNfQ29vcmQgdGlsZVBv
c2l0aW9uWCA9IG9yaWdpblg7Ci0gICAgICAgIGludCBjb2x1bW4gPSAwOwogCi0gICAgICAgIGZv
ciAoaXRlcmF0b3JMaXN0ID0gaXRlcmF0b3JTdGFydDsgaXRlcmF0b3JMaXN0IDwgaXRlcmF0b3JF
bmQ7IGl0ZXJhdG9yTGlzdCsrKQorICAgICAgICBmb3IgKGl0ZXJhdG9yTGlzdCA9IGl0ZXJhdG9y
U3RhcnQ7IGl0ZXJhdG9yTGlzdCA8IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yTGlzdCkKICAgICAg
ICAgICAgICppdGVyYXRvckxpc3QgPSAqKGl0ZXJhdG9yTGlzdCArIDEpOwogICAgICAgICAqaXRl
cmF0b3JMaXN0ID0gdGVtcDsKIAotICAgICAgICBwcml2LT5tb2RlbC5iYXNlLnJvdysrOworICAg
ICAgICArK3ByaXYtPm1vZGVsLmJhc2Uucm93OworCisgICAgICAgIEV2YXNfQ29vcmQgdGlsZVBv
c2l0aW9uWCA9IG9yaWdpblg7CisgICAgICAgIGludCBjb2x1bW4gPSAwOworICAgICAgICBFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAgICAgICBFSU5BX0lOTElTVF9GT1JF
QUNIKHRlbXAsIGl0ZW0pIHsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9uWSk7CiAgICAgICAgICAg
ICB0aWxlUG9zaXRpb25YICs9IHRpbGVXaWR0aDsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9pdGVtX2ZpbGwocHJpdiwgaXRlbSwgY29sdW1uLCBsYXN0Um93KTsKLSAgICAg
ICAgICAgIGNvbHVtbisrOworICAgICAgICAgICAgKytjb2x1bW47CiAgICAgICAgIH0KICAgICAg
ICAgdGlsZVBvc2l0aW9uWSArPSB0aWxlSGVpZ2h0OwogICAgIH0KQEAgLTEwMDAsMjkgKzk1Nywy
OSBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX2Rvd24o
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YQogICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9
IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CiAgICAgRXZhc19Db29yZCBvZmZzZXRZID0gcHJpdi0+
dmlldy5vZmZzZXQuYmFzZS55IC0gY291bnQgKiB0aWxlSGVpZ2h0OwogICAgIEV2YXNfQ29vcmQg
dGlsZVBvc2l0aW9uWSA9IHkgKyBvZmZzZXRZICsgKGNvdW50IC0gMSkgKiB0aWxlSGVpZ2h0Owot
ICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JTdGFydCwgKippdGVyYXRvckVuZDsKICAgICBFdmFz
X0Nvb3JkIG9yaWdpblggPSB4ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54OwogCi0gICAgaXRl
cmF0b3JTdGFydCA9IHByaXYtPnZpZXcuaXRlbXMgKyBwcml2LT52aWV3LnJvd3MgLSAxOwotICAg
IGl0ZXJhdG9yRW5kID0gcHJpdi0+dmlldy5pdGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGl0ZXJh
dG9yU3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zICsgcHJpdi0+dmlldy5yb3dzIC0gMTsKKyAgICBF
aW5hX0lubGlzdCoqIGl0ZXJhdG9yRW5kID0gcHJpdi0+dmlldy5pdGVtczsKIAotICAgIGZvciAo
OyBjb3VudCA+IDA7IGNvdW50LS0pIHsKKyAgICBmb3IgKDsgY291bnQgPiAwOyAtLWNvdW50KSB7
CiAgICAgICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JMaXN0OwogICAgICAgICBFaW5hX0lubGlz
dCogdGVtcCA9ICppdGVyYXRvclN0YXJ0OwotICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtKiBpdGVtOwogICAgICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlvblggPSBvcmlnaW5Y
OwotICAgICAgICBpbnQgY29sdW1uID0gMDsKIAogICAgICAgICBmb3IgKGl0ZXJhdG9yTGlzdCA9
IGl0ZXJhdG9yU3RhcnQ7IGl0ZXJhdG9yTGlzdCA+IGl0ZXJhdG9yRW5kOyBpdGVyYXRvckxpc3Qt
LSkKICAgICAgICAgICAgICppdGVyYXRvckxpc3QgPSAqKGl0ZXJhdG9yTGlzdCAtIDEpOwogICAg
ICAgICAqaXRlcmF0b3JMaXN0ID0gdGVtcDsKIAotICAgICAgICBwcml2LT5tb2RlbC5iYXNlLnJv
dy0tOworICAgICAgICAtLXByaXYtPm1vZGVsLmJhc2Uucm93OworCisgICAgICAgIGludCBjb2x1
bW4gPSAwOworICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAg
ICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKHRlbXAsIGl0ZW0pIHsKICAgICAgICAgICAgIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0aW9uWCwgdGlsZVBv
c2l0aW9uWSk7CiAgICAgICAgICAgICB0aWxlUG9zaXRpb25YICs9IHRpbGVXaWR0aDsKICAgICAg
ICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwocHJpdiwgaXRlbSwgY29s
dW1uLCAwKTsKLSAgICAgICAgICAgIGNvbHVtbisrOworICAgICAgICAgICAgKytjb2x1bW47CiAg
ICAgICAgIH0KICAgICAgICAgdGlsZVBvc2l0aW9uWSAtPSB0aWxlSGVpZ2h0OwogICAgIH0KQEAg
LTEwNDQsMjkgKzEwMDEsMjYgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ZpZXdfd3JhcF9kb3duKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEKICAqLwogc3RhdGlj
IHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9sZWZ0KEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCB1bnNp
Z25lZCBpbnQgY291bnQpCiB7Ci0gICAgdW5zaWduZWQgaW50IHJvdywgbGFzdENvbHVtbiA9IHBy
aXYtPnZpZXcuY29sdW1ucyAtIDE7CisgICAgdW5zaWduZWQgaW50IGxhc3RDb2x1bW4gPSBwcml2
LT52aWV3LmNvbHVtbnMgLSAxOwogICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0gcHJpdi0+dmll
dy50aWxlLndpZHRoOwogICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGls
ZS5oZWlnaHQ7CiAgICAgRXZhc19Db29yZCBvZmZzZXRYID0gcHJpdi0+dmlldy5vZmZzZXQuYmFz
ZS54ICsgY291bnQgKiB0aWxlV2lkdGg7CiAgICAgRXZhc19Db29yZCBvZmZzZXRZID0geSArIHBy
aXYtPnZpZXcub2Zmc2V0LmJhc2UueTsKLSAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yOwotICAg
IEVpbmFfSW5saXN0KiogaXRlcmF0b3JFbmQ7CisKICAgICB1bnNpZ25lZCBpbnQgYmFzZUNvbHVt
biA9IGxhc3RDb2x1bW4gLSBjb3VudCArIDE7CiAgICAgRXZhc19Db29yZCBvcmlnaW5YID0geCAr
IGJhc2VDb2x1bW4gKiB0aWxlV2lkdGggKyBvZmZzZXRYOwogCi0gICAgaXRlcmF0b3IgPSBwcml2
LT52aWV3Lml0ZW1zOwotICAgIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJv
d3M7Ci0gICAgcm93ID0gMDsKKyAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yID0gcHJpdi0+dmll
dy5pdGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2
LT52aWV3LnJvd3M7CiAKICAgICBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiArPSBjb3VudDsKIAot
ICAgIGZvciAoOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyBpdGVyYXRvcisrLCByb3crKykgewor
ICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgKytpdGVy
YXRvciwgKytyb3cpIHsKICAgICAgICAgRXZhc19Db29yZCB0aWxlUG9zaXRpb25YID0gb3JpZ2lu
WDsKICAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbiA9IGJhc2VDb2x1bW47CiAKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrLCBjb2x1bW4rKywgdGlsZVBv
c2l0aW9uWCArPSB0aWxlV2lkdGgpIHsKLSAgICAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0l0ZW0qIGl0OwotICAgICAgICAgICAgaXQgPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VU
KCppdGVyYXRvciwgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytjb2x1bW4sIHRpbGVQb3NpdGlv
blggKz0gdGlsZVdpZHRoKSB7CisgICAgICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9J
dGVtKiBpdCA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoKml0ZXJhdG9yLCBFd2tfVGlsZWRf
QmFja2luZ19TdG9yZV9JdGVtKTsKICAgICAgICAgICAgICppdGVyYXRvciA9IGVpbmFfaW5saXN0
X2RlbW90ZSgqaXRlcmF0b3IsICppdGVyYXRvcik7CiAKICAgICAgICAgICAgIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXQsIHRpbGVQb3NpdGlvblgsIG9mZnNldFkpOwpAQCAt
MTA5MywyOCArMTA0NywyNSBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dmlld193cmFwX2xlZnQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YQogICovCiBzdGF0aWMg
dm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3JpZ2h0KEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCB1bnNp
Z25lZCBpbnQgY291bnQpCiB7Ci0gICAgdW5zaWduZWQgaW50IHJvdzsKICAgICBFdmFzX0Nvb3Jk
IHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKICAgICBFdmFzX0Nvb3JkIHRpbGVI
ZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OwogICAgIEV2YXNfQ29vcmQgb2Zmc2V0WCA9
IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCAtIGNvdW50ICogdGlsZVdpZHRoOwogICAgIEV2YXNf
Q29vcmQgdGlsZVBvc2l0aW9uWSA9IHkgKyBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnk7Ci0gICAg
RWluYV9Jbmxpc3QqKiBpdGVyYXRvciwgKiogaXRlcmF0b3JFbmQ7CisKICAgICB1bnNpZ25lZCBp
bnQgYmFzZUNvbHVtbiA9IGNvdW50IC0gMTsKICAgICBFdmFzX0Nvb3JkIG9yaWdpblggPSB4ICsg
YmFzZUNvbHVtbiAqIHRpbGVXaWR0aCArIG9mZnNldFg7CiAKLSAgICBpdGVyYXRvciA9IHByaXYt
PnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0b3JFbmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93
czsKLSAgICByb3cgPSAwOworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3IgPSBwcml2LT52aWV3
Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JFbmQgPSBpdGVyYXRvciArIHByaXYt
PnZpZXcucm93czsKIAogICAgIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uIC09IGNvdW50OwogCi0g
ICAgZm9yICg7IGl0ZXJhdG9yIDwgaXRlcmF0b3JFbmQ7IGl0ZXJhdG9yKyssIHJvdysrKSB7Cisg
ICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyArK2l0ZXJh
dG9yLCArK3JvdykgewogICAgICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlvblggPSBvcmlnaW5Y
OwogICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uID0gYmFzZUNvbHVtbjsKIAotICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyBpKyssIGNvbHVtbi0tLCB0aWxlUG9z
aXRpb25YIC09IHRpbGVXaWR0aCkgewotICAgICAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfSXRlbSogaXRlbTsKLSAgICAgICAgICAgIGl0ZW0gPSBFSU5BX0lOTElTVF9DT05UQUlORVJf
R0VUKCgqaXRlcmF0b3IpLT5sYXN0LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpLCAtLWNvbHVtbiwg
dGlsZVBvc2l0aW9uWCAtPSB0aWxlV2lkdGgpIHsKKyAgICAgICAgICAgIEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0l0ZW0qIGl0ZW0gPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKCgqaXRlcmF0
b3IpLT5sYXN0LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKTsKICAgICAgICAgICAgICpp
dGVyYXRvciA9IGVpbmFfaW5saXN0X3Byb21vdGUoKml0ZXJhdG9yLCAoKml0ZXJhdG9yKS0+bGFz
dCk7CiAKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXRl
bSwgdGlsZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9uWSk7CkBAIC0xMTI4LDMzICsxMDc5LDI4IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfcmlnaHQoRXdr
X1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV92aWV3X3JlZmlsbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgaW50IHN0ZXBYLCBpbnQgc3RlcFkpCiB7Ci0gICAg
RWluYV9Jbmxpc3QqKiBpdGVyYXRvciwgKippdGVyYXRvckVuZDsKLSAgICBFdmFzX0Nvb3JkIGJh
c2VUaWxlUG9zaXRpb25YLCB0aWxlUG9zaXRpb25ZLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0g
ICAgdW5zaWduZWQgaW50IHJvdzsKLQogICAgIGV2YXNfb2JqZWN0X21vdmUocHJpdi0+YmFzZS5j
bGlwcGVyLCB4LCB5KTsKIAotICAgIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsK
LSAgICB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKKyAgICBFdmFzX0Nvb3Jk
IHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVI
ZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OwogCi0gICAgYmFzZVRpbGVQb3NpdGlvblgg
PSB4ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54OwotICAgIHRpbGVQb3NpdGlvblkgPSB5ICsg
cHJpdi0+dmlldy5vZmZzZXQuYmFzZS55OworICAgIEV2YXNfQ29vcmQgYmFzZVRpbGVQb3NpdGlv
blggPSB4ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54OworICAgIEV2YXNfQ29vcmQgdGlsZVBv
c2l0aW9uWSA9IHkgKyBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnk7CiAKLSAgICBpdGVyYXRvciA9
IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0b3JFbmQgPSBpdGVyYXRvciArIHByaXYtPnZp
ZXcucm93czsKLSAgICByb3cgPSAwOworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3IgPSBwcml2
LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JFbmQgPSBpdGVyYXRvciAr
IHByaXYtPnZpZXcucm93czsKIAogICAgIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uIC09IHN0ZXBY
OwogICAgIHByaXYtPm1vZGVsLmJhc2Uucm93IC09IHN0ZXBZOwogCi0gICAgZm9yICg7IGl0ZXJh
dG9yIDwgaXRlcmF0b3JFbmQ7IGl0ZXJhdG9yKyssIHJvdysrKSB7CisgICAgZm9yICh1bnNpZ25l
ZCByb3cgPSAwOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyArK2l0ZXJhdG9yLCArK3Jvdykgewog
ICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAgICAgICBFdmFz
X0Nvb3JkIG5ld1RpbGVQb3NpdGlvblggPSBiYXNlVGlsZVBvc2l0aW9uWDsKICAgICAgICAgdW5z
aWduZWQgaW50IGNvbHVtbiA9IDA7CiAgICAgICAgIEVJTkFfSU5MSVNUX0ZPUkVBQ0goKml0ZXJh
dG9yLCBpdGVtKSB7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9m
aWxsKHByaXYsIGl0ZW0sIGNvbHVtbiwgcm93KTsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9pdGVtX21vdmUoaXRlbSwgbmV3VGlsZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9u
WSk7Ci0gICAgICAgICAgICBjb2x1bW4rKzsKKyAgICAgICAgICAgICsrY29sdW1uOwogICAgICAg
ICAgICAgbmV3VGlsZVBvc2l0aW9uWCArPSB0aWxlV2lkdGg7CiAgICAgICAgIH0KICAgICAgICAg
dGlsZVBvc2l0aW9uWSArPSB0aWxlSGVpZ2h0OwpAQCAtMTE2MywxOSArMTEwOSwxNiBAQCBzdGF0
aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yZWZpbGwoRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfRGF0YSogcAogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlld19wb3NfYXBwbHkoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7Ci0gICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvciwg
KippdGVyYXRvckVuZDsKLSAgICBFdmFzX0Nvb3JkIGJhc2VUaWxlUG9zaXRpb25YLCBiYXNlVGls
ZVBvc2l0aW9uWSwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0OwotCiAgICAgZXZhc19vYmplY3RfbW92
ZShwcml2LT5iYXNlLmNsaXBwZXIsIHgsIHkpOwogCi0gICAgdGlsZVdpZHRoID0gcHJpdi0+dmll
dy50aWxlLndpZHRoOwotICAgIHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0Owor
ICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOworICAgIEV2
YXNfQ29vcmQgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CiAKLSAgICBiYXNl
VGlsZVBvc2l0aW9uWCA9IHggKyBwcml2LT52aWV3Lm9mZnNldC5iYXNlLng7Ci0gICAgYmFzZVRp
bGVQb3NpdGlvblkgPSB5ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55OworICAgIEV2YXNfQ29v
cmQgYmFzZVRpbGVQb3NpdGlvblggPSB4ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54OworICAg
IEV2YXNfQ29vcmQgYmFzZVRpbGVQb3NpdGlvblkgPSB5ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFz
ZS55OwogCi0gICAgaXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1zOwotICAgIGl0ZXJhdG9yRW5k
ID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJvd3M7CisgICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRv
ciA9IHByaXYtPnZpZXcuaXRlbXM7CisgICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvckVuZCA9IGl0
ZXJhdG9yICsgcHJpdi0+dmlldy5yb3dzOwogICAgIGZvciAoOyBpdGVyYXRvciA8IGl0ZXJhdG9y
RW5kOyBpdGVyYXRvcisrKSB7CiAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0q
IGl0ZW07CiAgICAgICAgIEV2YXNfQ29vcmQgb2Zmc2V0WCA9IGJhc2VUaWxlUG9zaXRpb25YOwpA
QCAtMTE5MSw2MSArMTEzNCw0OSBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc21hcnRfY2FsY3VsYXRlX29mZnNldF9mb3JjZShFd2tfVGlsZWRfQmFjawogewogICAgIEV2
YXNfQ29vcmQgZGVsdGFYID0gcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54IC0gcHJpdi0+dmll
dy5vZmZzZXQub2xkLng7CiAgICAgRXZhc19Db29yZCBkZWx0YVkgPSBwcml2LT52aWV3Lm9mZnNl
dC5jdXJyZW50LnkgLSBwcml2LT52aWV3Lm9mZnNldC5vbGQueTsKLSAgICBFdmFzX0Nvb3JkIHRp
bGVXaWR0aCwgdGlsZUhlaWdodDsKLSAgICBpbnQgc3RlcFksIHN0ZXBYOwogCiAgICAgSU5GKCJl
d2tCYWNraW5nU3RvcmU9JXAsIG9mZnNldDogJSs0ZCwgJSs0ZCAoJSs0ZCwgJSs0ZCkiLAogICAg
ICAgICBwcml2LT5zZWxmLCBkZWx0YVgsIGRlbHRhWSwgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVu
dC54LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkpOwogCi0gICAgdGlsZVdpZHRoID0gcHJp
di0+dmlldy50aWxlLndpZHRoOwotICAgIHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVp
Z2h0OworICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOwor
ICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CiAKICAg
ICBsb25nIG5ld0NvbHVtbiA9IC1wcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggLyB0aWxlV2lk
dGg7Ci0gICAgc3RlcFggPSBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiAtIG5ld0NvbHVtbjsKKyAg
ICBpbnQgc3RlcFggPSBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiAtIG5ld0NvbHVtbjsKICAgICBs
b25nIG5ld1JvdyA9IC1wcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkgLyB0aWxlSGVpZ2h0Owot
ICAgIHN0ZXBZID0gcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuZXdSb3c7CisgICAgaW50IHN0ZXBZ
ID0gcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuZXdSb3c7CiAKICAgICBwcml2LT52aWV3Lm9mZnNl
dC5vbGQueCA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueDsKICAgICBwcml2LT52aWV3Lm9m
ZnNldC5vbGQueSA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueTsKLSAgICBldmFzX29iamVj
dF9tb3ZlKAotICAgICAgICBwcml2LT5jb250ZW50c0NsaXBwZXIsCi0gICAgICAgIHByaXYtPnZp
ZXcub2Zmc2V0LmN1cnJlbnQueCArIHByaXYtPnZpZXcueCwKLSAgICAgICAgcHJpdi0+dmlldy5v
ZmZzZXQuY3VycmVudC55ICsgcHJpdi0+dmlldy55KTsKKyAgICBldmFzX29iamVjdF9tb3ZlKHBy
aXYtPmNvbnRlbnRzQ2xpcHBlciwgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54ICsgcHJpdi0+
dmlldy54LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkgKyBwcml2LT52aWV3LnkpOwogCiAg
ICAgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54ICs9IGRlbHRhWCAtIHN0ZXBYICogdGlsZVdpZHRo
OwogICAgIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSArPSBkZWx0YVkgLSBzdGVwWSAqIHRpbGVI
ZWlnaHQ7CiAKLSAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yZWZpbGwKLSAgICAg
ICAgKHByaXYsIHByaXYtPnZpZXcueCwgcHJpdi0+dmlldy55LCBzdGVwWCwgc3RlcFkpOworICAg
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3JlZmlsbChwcml2LCBwcml2LT52aWV3Lngs
IHByaXYtPnZpZXcueSwgc3RlcFgsIHN0ZXBZKTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9vZmZzZXQoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgRXZh
c19Db29yZCBkZWx0YVggPSBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggLSBwcml2LT52aWV3
Lm9mZnNldC5vbGQueDsKICAgICBFdmFzX0Nvb3JkIGRlbHRhWSA9IHByaXYtPnZpZXcub2Zmc2V0
LmN1cnJlbnQueSAtIHByaXYtPnZpZXcub2Zmc2V0Lm9sZC55OwotICAgIEV2YXNfQ29vcmQgdGls
ZVdpZHRoLCB0aWxlSGVpZ2h0OwotICAgIGludCBzdGVwWSwgc3RlcFg7CiAKLSAgICBJTkYoImV3
a0JhY2tpbmdTdG9yZT0lcCwgb2Zmc2V0OiAlKzRkLCAlKzRkICglKzRkLCAlKzRkKSIsCi0gICAg
ICAgIHByaXYtPnNlbGYsIGRlbHRhWCwgZGVsdGFZLCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50
LngsIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSk7CisgICAgSU5GKCJld2tCYWNraW5nU3Rv
cmU9JXAsIG9mZnNldDogJSs0ZCwgJSs0ZCAoJSs0ZCwgJSs0ZCkiLCBwcml2LT5zZWxmLCBkZWx0
YVgsIGRlbHRhWSwgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54LCBwcml2LT52aWV3Lm9mZnNl
dC5jdXJyZW50LnkpOwogCiAgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOwotICAgIHRpbGVI
ZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OworICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRo
ID0gcHJpdi0+dmlldy50aWxlLndpZHRoOworICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9IHBy
aXYtPnZpZXcudGlsZS5oZWlnaHQ7CiAKICAgICBsb25nIG5ld0NvbCA9IC1wcml2LT52aWV3Lm9m
ZnNldC5jdXJyZW50LnggLyB0aWxlV2lkdGg7Ci0gICAgc3RlcFggPSBwcml2LT5tb2RlbC5iYXNl
LmNvbHVtbiAtIG5ld0NvbDsKKyAgICBpbnQgc3RlcFggPSBwcml2LT5tb2RlbC5iYXNlLmNvbHVt
biAtIG5ld0NvbDsKICAgICBsb25nIG5ld1JvdyA9IC1wcml2LT52aWV3Lm9mZnNldC5jdXJyZW50
LnkgLyB0aWxlSGVpZ2h0OwotICAgIHN0ZXBZID0gcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuZXdS
b3c7CisgICAgaW50IHN0ZXBZID0gcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuZXdSb3c7CiAKICAg
ICBwcml2LT52aWV3Lm9mZnNldC5vbGQueCA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueDsK
ICAgICBwcml2LT52aWV3Lm9mZnNldC5vbGQueSA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQu
eTsKLSAgICBldmFzX29iamVjdF9tb3ZlKAotICAgICAgICBwcml2LT5jb250ZW50c0NsaXBwZXIs
Ci0gICAgICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCArIHByaXYtPnZpZXcueCwKLSAg
ICAgICAgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55ICsgcHJpdi0+dmlldy55KTsKKyAgICBl
dmFzX29iamVjdF9tb3ZlKHByaXYtPmNvbnRlbnRzQ2xpcHBlciwgcHJpdi0+dmlldy5vZmZzZXQu
Y3VycmVudC54ICsgcHJpdi0+dmlldy54LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkgKyBw
cml2LT52aWV3LnkpOwogCiAgICAgaWYgKChzdGVwWCA8IDAgJiYgc3RlcFggPD0gLXByaXYtPnZp
ZXcuY29sdW1ucykKICAgICAgICAgfHwgKHN0ZXBYID4gMCAmJiBzdGVwWCA+PSBwcml2LT52aWV3
LmNvbHVtbnMpCkBAIC0xMjU1LDggKzExODYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldChFd2tfVGlsZWRfQmFja2luZ19TdAog
ICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnggKz0gZGVsdGFYIC0gc3RlcFggKiB0aWxl
V2lkdGg7CiAgICAgICAgIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSArPSBkZWx0YVkgLSBzdGVw
WSAqIHRpbGVIZWlnaHQ7CiAKLSAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdf
cmVmaWxsCi0gICAgICAgICAgICAocHJpdiwgcHJpdi0+dmlldy54LCBwcml2LT52aWV3LnksIHN0
ZXBYLCBzdGVwWSk7CisgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3JlZmls
bChwcml2LCBwcml2LT52aWV3LngsIHByaXYtPnZpZXcueSwgc3RlcFgsIHN0ZXBZKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI4MSwyMSArMTIxMSwxNiBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3BvcyhFd2tfVGlsZWRfQmFj
a2luZ19TdG9yZQogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Bvc19hcHBseShw
cml2LCB4LCB5KTsKICAgICBwcml2LT52aWV3LnggPSB4OwogICAgIHByaXYtPnZpZXcueSA9IHk7
Ci0gICAgZXZhc19vYmplY3RfbW92ZSgKLSAgICAgICAgcHJpdi0+Y29udGVudHNDbGlwcGVyLAot
ICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggKyBwcml2LT52aWV3LngsCi0gICAg
ICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSArIHByaXYtPnZpZXcueSk7CisgICAgZXZh
c19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIHByaXYtPnZpZXcub2Zmc2V0LmN1
cnJlbnQueCArIHByaXYtPnZpZXcueCwgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55ICsgcHJp
di0+dmlldy55KTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2Zp
bGxfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAg
RWluYV9Jbmxpc3QqIGxpc3Q7Ci0gICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRl
bTsKLSAgICBpbnQgaSwgajsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHByaXYtPnZpZXcucm93
czsgKytpKSB7CisgICAgICAgIEVpbmFfSW5saXN0KiBsaXN0ID0gcHJpdi0+dmlldy5pdGVtc1tp
XTsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBwcml2LT52aWV3LnJvd3M7IGkrKykgewotICAgICAg
ICBsaXN0ID0gcHJpdi0+dmlldy5pdGVtc1tpXTsKLSAgICAgICAgaiA9IDA7CisgICAgICAgIGlu
dCBqID0gMDsKKyAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKICAg
ICAgICAgRUlOQV9JTkxJU1RfRk9SRUFDSChsaXN0LCBpdGVtKQogICAgICAgICAgICAgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChwcml2LCBpdGVtLCBqKyssIGkpOwogICAgIH0K
QEAgLTEzMTgsMTAgKzEyNDMsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcgogICAgICAgICBl
d2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShwcml2LT5tb2RlbC5tYXRyaXgpOwogCiAgICAgaWYg
KCFwcml2LT5yZW5kZXIuc3VzcGVuZCAmJiAocHJpdi0+Y2hhbmdlZC5tb2RlbCB8fCBwcml2LT5j
aGFuZ2VkLmNvbnRlbnRzU2l6ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBjb2x1bW5zLCBy
b3dzOwotCi0gICAgICAgIGNvbHVtbnMgPSBwcml2LT5tb2RlbC53aWR0aCAvIHByaXYtPnZpZXcu
dGlsZS53aWR0aCArIDE7Ci0gICAgICAgIHJvd3MgPSBwcml2LT5tb2RlbC5oZWlnaHQgLyBwcml2
LT52aWV3LnRpbGUuaGVpZ2h0ICsgMTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjb2x1bW5zID0g
cHJpdi0+bW9kZWwud2lkdGggLyBwcml2LT52aWV3LnRpbGUud2lkdGggKyAxOworICAgICAgICB1
bnNpZ25lZCBsb25nIHJvd3MgPSBwcml2LT5tb2RlbC5oZWlnaHQgLyBwcml2LT52aWV3LnRpbGUu
aGVpZ2h0ICsgMTsKIAogICAgICAgICBwcml2LT5tb2RlbC5vbGQuY29sdW1ucyA9IHByaXYtPm1v
ZGVsLmN1cnJlbnQuY29sdW1uczsKICAgICAgICAgcHJpdi0+bW9kZWwub2xkLnJvd3MgPSBwcml2
LT5tb2RlbC5jdXJyZW50LnJvd3M7CkBAIC0xMzU5LDEwICsxMjgyLDggQEAgc3RhdGljIHZvaWQg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZShFdmFzX09iamVjdCogZXdr
QmFja2luZ1N0b3IKIAogICAgICAgICAvKiBNYWtlIHN1cmUgd2UgZG8gbm90IG1pc3MgYW55IGlt
cG9ydGFudCByZXBhaW50IGJ5CiAgICAgICAgICAqIHJlcGFpbnRpbmcgdGhlIHdob2xlIHZpZXdw
b3J0ICovCi0gICAgICAgIGNvbnN0IEVpbmFfUmVjdGFuZ2xlIHJlY3QgPQotICAgICAgICB7IDAs
IDAsIHByaXYtPm1vZGVsLndpZHRoLCBwcml2LT5tb2RlbC5oZWlnaHQgfTsKLSAgICAgICAgZXdr
X3RpbGVfbWF0cml4X3VwZGF0ZShwcml2LT5tb2RlbC5tYXRyaXgsICZyZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPnZpZXcudGlsZS56b29tKTsKKyAgICAgICAgY29u
c3QgRWluYV9SZWN0YW5nbGUgcmVjdCA9IHsgMCwgMCwgcHJpdi0+bW9kZWwud2lkdGgsIHByaXYt
Pm1vZGVsLmhlaWdodCB9OworICAgICAgICBld2tfdGlsZV9tYXRyaXhfdXBkYXRlKHByaXYtPm1v
ZGVsLm1hdHJpeCwgJnJlY3QsIHByaXYtPnZpZXcudGlsZS56b29tKTsKIAogICAgICAgICBwcml2
LT5jaGFuZ2VkLmNvbnRlbnRzU2l6ZSA9IGZhbHNlOwogICAgIH0KQEAgLTEzNzQsMTIgKzEyOTUs
MTIgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0
ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3IKICAgICBpZiAocHJpdi0+dmlldy5vZmZzZXQu
YmFzZS54ID4gMAogICAgICAgICB8fCBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnggPD0gLSBwcml2
LT52aWV3LnRpbGUud2lkdGgKICAgICAgICAgfHwgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ID4g
MAotICAgICAgICB8fCBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgPD0gLSBwcml2LT52aWV3LnRp
bGUuaGVpZ2h0KQorICAgICAgICB8fCBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgPD0gLSBwcml2
LT52aWV3LnRpbGUuaGVpZ2h0KSB7CiAgICAgICAgIEVSUigiaW5jb3JyZWN0IGJhc2Ugb2Zmc2V0
ICUrNGQsJSs0ZCwgdGlsZT0lZHglZCwgY3VycmVudD0lKzRkLCUrNGRcbiIsCiAgICAgICAgICAg
ICBwcml2LT52aWV3Lm9mZnNldC5iYXNlLngsIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSwKICAg
ICAgICAgICAgIHByaXYtPnZpZXcudGlsZS53aWR0aCwgcHJpdi0+dmlldy50aWxlLmhlaWdodCwK
ICAgICAgICAgICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCwgcHJpdi0+dmlldy5vZmZz
ZXQuY3VycmVudC55KTsKLQorICAgIH0KIH0KIAogRXZhc19PYmplY3QqIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2FkZChFdmFzKiBjYW52YXMpCkBAIC0xNDA5LDE3ICsxMzMwLDE5IEBAIEV2YXNf
T2JqZWN0KiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoRXZhcyogY2FudmFzKQogICAgIHJl
dHVybiBldmFzX29iamVjdF9zbWFydF9hZGQoY2FudmFzLCBzbWFydCk7CiB9CiAKLXZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChFdmFzX09iamVjdCogZXdrQmFja2lu
Z1N0b3JlLCBFaW5hX0Jvb2wgKCpjYWxsYmFjaykodm9pZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUs
IGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKSwgY29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChFdmFzX09iamVjdCogZXdrQmFja2lu
Z1N0b3JlLCBib29sICgqY2FsbGJhY2spKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlLCBjb25z
dCBFaW5hX1JlY3RhbmdsZSogYXJlYSksIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oY2FsbGJhY2spOwogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVU
VVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdik7CisKICAgICBwcml2LT5yZW5kZXIuY2FsbGJhY2sg
PSBjYWxsYmFjazsKLSAgICBwcml2LT5yZW5kZXIuZGF0YSA9ICh2b2lkKilkYXRhOworICAgIHBy
aXYtPnJlbmRlci5kYXRhID0gY29uc3RfY2FzdDx2b2lkKj4oZGF0YSk7CiB9CiAKIEV3a19UaWxl
X1VudXNlZF9DYWNoZSogZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiB7CiAgICAgUFJJVl9EQVRB
X0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCAwKTsKKwogICAgIHJldHVybiBl
d2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogfQog
CkBAIC0xNDMzLDcgKzEzNTYsNyBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVf
dW51c2VkX2NhY2hlX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLAogICAgIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9tb2RlbF9tYXRyaXhfY3JlYXRlKHByaXYsIHRpbGVVbnVzZWRD
YWNoZSk7CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Nj
cm9sbF9mdWxsX29mZnNldF9zZXRfaW50ZXJuYWwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0
YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCitzdGF0aWMgYm9vbCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9pbnRlcm5hbChFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkK
IHsKICAgICAvKiBUT0RPOiBjaGVjayBvZmZzZXQgZ28gb3V0IG9mIGJvdW5kcywgY2xhbXAgKi8K
ICAgICBpZiAocHJpdi0+cmVuZGVyLmRpc2FibGVkKQpAQCAtMTQ0OCw3ICsxMzcxLDcgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0
X3NldF9pbnRlcm5hbChFd2tfVGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmplY3Qq
IGV3a0JhY2tpbmdTdG9yZSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCitib29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmplY3QqIGV3
a0JhY2tpbmdTdG9yZSwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpCiB7CiAgICAgREJHKCJl
d2tCYWNraW5nU3RvcmU9JXAsIHg9JWQsIHk9JWQiLCBld2tCYWNraW5nU3RvcmUsIHgsIHkpOwog
CkBAIC0xNDU5LDcgKzEzODIsNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
c2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCogZXdrQmFja2luZwogICAgIHJldHVy
biBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldF9pbnRlcm5h
bChwcml2LCB4LCB5KTsKIH0KIAotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Nj
cm9sbF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19D
b29yZCBkZWx0YVgsIEV2YXNfQ29vcmQgZGVsdGFZKQorYm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUs
IEV2YXNfQ29vcmQgZGVsdGFYLCBFdmFzX0Nvb3JkIGRlbHRhWSkKIHsKICAgICBEQkcoImV3a0Jh
Y2tpbmdTdG9yZT0lcCwgZGVsdGFYPSVkLCBkZWx0YVk9JWQiLCBld2tCYWNraW5nU3RvcmUsIGRl
bHRhWCwgZGVsdGFZKTsKIApAQCAtMTQ2NywxMSArMTM5MCwxMCBAQCBFaW5hX0Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCogZXdr
QmFja2luZwogICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgcmV0dXJuIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZz
ZXRfc2V0X2ludGVybmFsCi0gICAgICAgICAgICAgICAocHJpdiwgcHJpdi0+dmlldy5vZmZzZXQu
Y3VycmVudC54ICsgZGVsdGFYLCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkgKyBkZWx0YVkp
OworICAgIHJldHVybiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0
X3NldF9pbnRlcm5hbChwcml2LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggKyBkZWx0YVgs
IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSArIGRlbHRhWSk7CiB9CiAKLXN0YXRpYyBFaW5h
X0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIGZsb2F0KiB6b29tLCBFdmFzX0Nvb3JkIGN1cnJl
bnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZLCBFdmFzX0Nvb3JkKiBvZmZzZXRYLCBFdmFzX0Nvb3Jk
KiBvZmZzZXRZKQorc3RhdGljIGJvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0
X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIGZsb2F0KiB6b29t
LCBFdmFzX0Nvb3JkIGN1cnJlbnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZLCBFdmFzX0Nvb3JkKiBv
ZmZzZXRYLCBFdmFzX0Nvb3JkKiBvZmZzZXRZKQogewogICAgICpvZmZzZXRYID0gcHJpdi0+dmll
dy5vZmZzZXQuY3VycmVudC54OwogICAgICpvZmZzZXRZID0gcHJpdi0+dmlldy5vZmZzZXQuY3Vy
cmVudC55OwpAQCAtMTQ3OSwxNiArMTQwMSwxNiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdAog
ICAgIGlmIChmYWJzZihwcml2LT52aWV3LnRpbGUuem9vbSAtICp6b29tKSA8IHpvb21TdGVwTWlu
aW11bSkgewogICAgICAgICBEQkcoImlnbm9yZWQgYXMgem9vbSBkaWZmZXJlbmNlIGlzIDwgJWY6
ICVmIiwKICAgICAgICAgICAgIChkb3VibGUpem9vbVN0ZXBNaW5pbXVtLCBmYWJzZihwcml2LT52
aWV3LnRpbGUuem9vbSAtICp6b29tKSk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9mbHVzaChw
cml2KTsKLSAgICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKIAogICAgICp6b29t
ID0gUk9VTkRFRF9aT09NKHByaXYtPnZpZXcudGlsZS53aWR0aCwgKnpvb20pOwogCi0gICAgdGls
ZVdpZHRoID0gcHJpdi0+dmlldy50aWxlLndpZHRoOwotICAgIHRpbGVIZWlnaHQgPSBwcml2LT52
aWV3LnRpbGUuaGVpZ2h0OworICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0gcHJpdi0+dmlldy50
aWxlLndpZHRoOworICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5o
ZWlnaHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9ICp6b29tIC8gcHJpdi0+dmlldy50aWxlLnpvb207
CiAKQEAgLTE1MDgsOCArMTQzMCw2IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgICAg
IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSA9IDA7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yLCAqKml0ZXJhdG9yRW5kOwotICAgIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CiAKICAgICBFdmFzX0Nvb3JkIG5ld1ggPSBj
dXJyZW50WCArIChwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggLSBjdXJyZW50WCkgKiBzY2Fs
ZTsKICAgICBFdmFzX0Nvb3JkIG5ld1kgPSBjdXJyZW50WSArIChwcml2LT52aWV3Lm9mZnNldC5j
dXJyZW50LnkgLSBjdXJyZW50WSkgKiBzY2FsZTsKQEAgLTE1NDYsMjMgKzE0NjYsMTkgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwo
RXdrX1RpbGVkX0JhY2tpbmdfU3QKICAgICAqb2Zmc2V0WCA9IHByaXYtPnZpZXcub2Zmc2V0LmN1
cnJlbnQueDsKICAgICAqb2Zmc2V0WSA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueTsKIAot
ICAgIGV2YXNfb2JqZWN0X21vdmUoCi0gICAgICAgIHByaXYtPmNvbnRlbnRzQ2xpcHBlciwKLSAg
ICAgICAgbmV3WCArIHByaXYtPnZpZXcueCwKLSAgICAgICAgbmV3WSArIHByaXYtPnZpZXcueSk7
CisgICAgZXZhc19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIG5ld1ggKyBwcml2
LT52aWV3LngsIG5ld1kgKyBwcml2LT52aWV3LnkpOwogCiAgICAgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2ZpbGxfcmVuZGVyZXJzKHByaXYpOwogCiAgICAgRXZhc19Db29yZCB0aWxlUG9zaXRp
b25ZID0gcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ICsgcHJpdi0+dmlldy55OwogICAgIEV2YXNf
Q29vcmQgYmFzZVRpbGVQb3NpdGlvblggPSBwcml2LT52aWV3LnggKyBwcml2LT52aWV3Lm9mZnNl
dC5iYXNlLng7CiAKLSAgICBpdGVyYXRvciA9IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0
b3JFbmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93czsKLQorICAgIEVpbmFfSW5saXN0Kiog
aXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JF
bmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93czsKICAgICBmb3IgKDsgaXRlcmF0b3IgPCBp
dGVyYXRvckVuZDsgaXRlcmF0b3IrKykgewogICAgICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlv
blggPSBiYXNlVGlsZVBvc2l0aW9uWDsKICAgICAgICAgRWluYV9Jbmxpc3QqIGxzdCA9ICppdGVy
YXRvcjsKLQorICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAg
ICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKGxzdCwgaXRlbSkgewogICAgICAgICAgICAgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92ZShpdGVtLCB0aWxlUG9zaXRpb25YLCB0aWxlUG9z
aXRpb25ZKTsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jlc2l6
ZShpdGVtLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOwpAQCAtMTU3NCw3ICsxNDkwLDcgQEAgc3Rh
dGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwo
RXdrX1RpbGVkX0JhY2tpbmdfU3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
cmUsIGZsb2F0KiB6b29tLCBFdmFzX0Nvb3JkIGN1cnJlbnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZ
LCBFdmFzX0Nvb3JkKiBvZmZzZXRYLCBFdmFzX0Nvb3JkKiBvZmZzZXRZKQorYm9vbCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBm
bG9hdCogem9vbSwgRXZhc19Db29yZCBjdXJyZW50WCwgRXZhc19Db29yZCBjdXJyZW50WSwgRXZh
c19Db29yZCogb2Zmc2V0WCwgRXZhc19Db29yZCogb2Zmc2V0WSkKIHsKICAgICBEQkcoImV3a0Jh
Y2tpbmdTdG9yZT0lcCwgem9vbT0lZiIsIGV3a0JhY2tpbmdTdG9yZSwgKnpvb20pOwogCkBAIC0x
NTgzLDIyICsxNDk5LDIwIEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29t
X3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBmbG9hdCoKICAgICByZXR1cm4gX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0X2ludGVybmFsKHByaXYsIHpvb20sIGN1cnJl
bnRYLCBjdXJyZW50WSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
cmUsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3VycmVudFgsIEV2YXNfQ29vcmQgY3VycmVudFkp
Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3Qq
IGV3a0JhY2tpbmdTdG9yZSwgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjdXJyZW50WCwgRXZhc19D
b29yZCBjdXJyZW50WSkKIHsKICAgICBEQkcoImV3a0JhY2tpbmdTdG9yZT0lcCwgem9vbT0lZiIs
IGV3a0JhY2tpbmdTdG9yZSwgem9vbSk7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdr
QmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKCFwcml2LT52aWV3LndpZHRoIHx8
ICFwcml2LT52aWV3LmhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEVpbmFfSW5s
aXN0KiogaXRlcmF0b3IsICoqIGl0ZXJhdG9yRW5kOwotICAgIEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0l0ZW0qIGl0ZW07Ci0gICAgRXZhc19Db29yZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0g
ICAgRWluYV9Cb29sIHJlQ2FsY3VsYXRlID0gZmFsc2U7CisKKyAgICBib29sIHJlQ2FsY3VsYXRl
ID0gZmFsc2U7CiAKICAgICBmbG9hdCBzY2FsZSA9IHpvb20gLyBwcml2LT52aWV3LnRpbGUuem9v
bTsKIAotICAgIHRpbGVXaWR0aCA9IFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS53
aWR0aCwgc2NhbGUpOworICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0gVElMRV9TSVpFX0FUX1pP
T00ocHJpdi0+dmlldy50aWxlLndpZHRoLCBzY2FsZSk7CiAgICAgc2NhbGUgPSBUSUxFX1pPT01f
QVRfU0laRSh0aWxlV2lkdGgsIHByaXYtPnZpZXcudGlsZS53aWR0aCk7Ci0gICAgdGlsZUhlaWdo
dCA9IFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS5oZWlnaHQsIHNjYWxlKTsKKyAg
ICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQgPSBUSUxFX1NJWkVfQVRfWk9PTShwcml2LT52aWV3LnRp
bGUuaGVpZ2h0LCBzY2FsZSk7CiAgICAgem9vbSA9IHNjYWxlICogcHJpdi0+dmlldy50aWxlLnpv
b207CiAKICAgICBFdmFzX0Nvb3JkIG1vZGVsV2lkdGggPSBwcml2LT5tb2RlbC53aWR0aCAqIHNj
YWxlOwpAQCAtMTYzNSwxNyArMTU0OSwxNCBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBmbAogICAg
IEV2YXNfQ29vcmQgYmFzZVRpbGVQb3NpdGlvblggPSBiYXNlWCArIHByaXYtPnZpZXcueDsKICAg
ICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlvblkgPSBiYXNlWSArIHByaXYtPnZpZXcueTsKIAotICAg
IGV2YXNfb2JqZWN0X21vdmUocHJpdi0+Y29udGVudHNDbGlwcGVyLAotICAgICAgICAgICAgICAg
ICAgICAgbmV3WCArIHByaXYtPnZpZXcueCwKLSAgICAgICAgICAgICAgICAgICAgIG5ld1kgKyBw
cml2LT52aWV3LnkpOwotCi0gICAgaXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1zOwotICAgIGl0
ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJvd3M7CisgICAgZXZhc19vYmplY3Rf
bW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIG5ld1ggKyBwcml2LT52aWV3LngsIG5ld1kgKyBw
cml2LT52aWV3LnkpOwogCi0gICAgZm9yICg7IGl0ZXJhdG9yIDwgaXRlcmF0b3JFbmQ7IGl0ZXJh
dG9yKyspIHsKKyAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yID0gcHJpdi0+dmlldy5pdGVtczsK
KyAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJv
d3M7CisgICAgZm9yICg7IGl0ZXJhdG9yIDwgaXRlcmF0b3JFbmQ7ICsraXRlcmF0b3IpIHsKICAg
ICAgICAgRXZhc19Db29yZCB0aWxlUG9zaXRpb25YID0gYmFzZVRpbGVQb3NpdGlvblg7CiAgICAg
ICAgIEVpbmFfSW5saXN0KiBsaXN0ID0gKml0ZXJhdG9yOwotCisgICAgICAgIEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CiAgICAgICAgIEVJTkFfSU5MSVNUX0ZPUkVBQ0gobGlz
dCwgaXRlbSkgewogICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92
ZShpdGVtLCB0aWxlUG9zaXRpb25YLCB0aWxlUG9zaXRpb25ZKTsKICAgICAgICAgICAgIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jlc2l6ZShpdGVtLCB0aWxlV2lkdGgsIHRpbGVIZWln
aHQpOwpAQCAtMTY2MCw4ICsxNTcxLDcgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgZmwKIHZvaWQg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4X29mZnNldHMoRXZhc19PYmplY3QqIGV3a0JhY2tp
bmdTdG9yZSwgRXZhc19Db29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpCiB7CiAgICAgUFJJ
Vl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2KTsKLSAgICBFaW5hX0lu
bGlzdCoqIGl0ZXJhdG9yLCAqKml0ZXJhdG9yRW5kOwotICAgIEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0l0ZW0qIGl0ZW07CisKICAgICBFdmFzX0Nvb3JkIG5ld1ggPSBwcml2LT52aWV3Lm9mZnNl
dC5jdXJyZW50Lng7CiAgICAgRXZhc19Db29yZCBuZXdZID0gcHJpdi0+dmlldy5vZmZzZXQuY3Vy
cmVudC55OwogICAgIEV2YXNfQ29vcmQgYmFzZVggPSBwcml2LT52aWV3Lm9mZnNldC5iYXNlLng7
CkBAIC0xNjk3LDIwICsxNjA3LDE3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4
X29mZnNldHMoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19Db29yCiAgICAgcHJp
di0+dmlldy5vZmZzZXQub2xkLnkgPSBuZXdZOwogICAgIHByaXYtPnZpZXcub2Zmc2V0LmJhc2Uu
eCA9IGJhc2VYOwogICAgIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSA9IGJhc2VZOwotICAgIGV2
YXNfb2JqZWN0X21vdmUocHJpdi0+Y29udGVudHNDbGlwcGVyLAotICAgICAgICAgICAgICAgICAg
ICAgbmV3WCArIHByaXYtPnZpZXcueCwKLSAgICAgICAgICAgICAgICAgICAgIG5ld1kgKyBwcml2
LT52aWV3LnkpOworICAgIGV2YXNfb2JqZWN0X21vdmUocHJpdi0+Y29udGVudHNDbGlwcGVyLCBu
ZXdYICsgcHJpdi0+dmlldy54LCBuZXdZICsgcHJpdi0+dmlldy55KTsKIAogICAgIEV2YXNfQ29v
cmQgdGlsZVBvc2l0aW9uWSA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSArIHByaXYtPnZpZXcu
eTsKICAgICBFdmFzX0Nvb3JkIGJhc2VUaWxlUG9zaXRpb25YID0gcHJpdi0+dmlldy54ICsgcHJp
di0+dmlldy5vZmZzZXQuYmFzZS54OwogCi0gICAgaXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1z
OwotICAgIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJvd3M7Ci0KKyAgICBF
aW5hX0lubGlzdCoqIGl0ZXJhdG9yID0gcHJpdi0+dmlldy5pdGVtczsKKyAgICBFaW5hX0lubGlz
dCoqIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJvd3M7CiAgICAgZm9yICg7
IGl0ZXJhdG9yIDwgaXRlcmF0b3JFbmQ7IGl0ZXJhdG9yKyspIHsKICAgICAgICAgRXZhc19Db29y
ZCB0aWxlUG9zaXRpb25YID0gYmFzZVRpbGVQb3NpdGlvblg7CiAgICAgICAgIEVpbmFfSW5saXN0
KiBsc3QgPSAqaXRlcmF0b3I7Ci0KKyAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRl
bSogaXRlbTsKICAgICAgICAgRUlOQV9JTkxJU1RfRk9SRUFDSChsc3QsIGl0ZW0pIHsKICAgICAg
ICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0
aW9uWCwgdGlsZVBvc2l0aW9uWSk7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9yZXNpemUoaXRlbSwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKQEAgLTE3MjAsNTMg
KzE2MjcsNTAgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFz
X09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3IKICAgICB9CiB9CiAKLXZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmpl
Y3QqIGV3a0JhY2tpbmdTdG9yZSwgRWluYV9Cb29sIHNtb290aFNjYWxlKQordm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCog
ZXdrQmFja2luZ1N0b3JlLCBib29sIHNtb290aFNjYWxlKQogewogICAgIFBSSVZfREFUQV9HRVRf
T1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdik7Ci0gICAgRWluYV9Jbmxpc3QqKiBpdGVy
YXRvciwgKippdGVyYXRvckVuZDsKIAotICAgIGl0ZXJhdG9yID0gcHJpdi0+dmlldy5pdGVtczsK
LSAgICBpdGVyYXRvckVuZCA9IGl0ZXJhdG9yICsgcHJpdi0+dmlldy5yb3dzOworICAgIEVpbmFf
SW5saXN0KiogaXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0Kiog
aXRlcmF0b3JFbmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93czsKICAgICBwcml2LT52aWV3
LnRpbGUuem9vbVdlYWtTbW9vdGhTY2FsZSA9IHNtb290aFNjYWxlOwogCi0gICAgZm9yICg7IGl0
ZXJhdG9yPCBpdGVyYXRvckVuZDsgaXRlcmF0b3IrKykgeworICAgIGZvciAoOyBpdGVyYXRvcjwg
aXRlcmF0b3JFbmQ7ICsraXRlcmF0b3IpIHsKICAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfSXRlbSogaXRlbTsKICAgICAgICAgRUlOQV9JTkxJU1RfRk9SRUFDSCgqaXRlcmF0b3IsIGl0
ZW0pCiAgICAgICAgICAgICBpZiAoaXRlbS0+dGlsZSkKLSAgICAgICAgICAgICAgICBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9zbW9vdGhfc2NhbGVfc2V0Ci0gICAgICAgICAgICAgICAg
ICAgIChpdGVtLCBzbW9vdGhTY2FsZSk7CisgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxlX3NldChpdGVtLCBzbW9vdGhTY2FsZSk7CiAgICAg
fQogfQogCi12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09iamVj
dCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX0Jvb2wgaGFzQWxwaGEpCit2b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBib29s
IGhhc0FscGhhKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9y
ZSwgcHJpdik7CiAgICAgcHJpdi0+dmlldy50aWxlLmhhc0FscGhhID0gaGFzQWxwaGE7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGUoRXZhc19PYmplY3QqIGV3
a0JhY2tpbmdTdG9yZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0ZSkKK2Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGNv
bnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUpCiB7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRV
Uk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CiAKICAgICBpZiAocHJpdi0+cmVuZGVy
LmRpc2FibGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZXdrX3RpbGVf
bWF0cml4X3VwZGF0ZShwcml2LT5tb2RlbC5tYXRyaXgsIHVwZGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcml2LT52aWV3LnRpbGUuem9vbSk7CisgICAgcmV0dXJuIGV3
a190aWxlX21hdHJpeF91cGRhdGUocHJpdi0+bW9kZWwubWF0cml4LCB1cGRhdGUsIHByaXYtPnZp
ZXcudGlsZS56b29tKTsKIH0KIAogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVz
X3Byb2Nlc3NfcHJlX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCB2b2lkKiAoKmNh
bGxiYWNrKSh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCAqZXdrQmFja2luZ1N0b3JlKSwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3Rv
cmUsIHByaXYpOwogICAgIHByaXYtPnByb2Nlc3MucHJlQ2FsbGJhY2sgPSBjYWxsYmFjazsKLSAg
ICBwcml2LT5wcm9jZXNzLnByZURhdGEgPSAodm9pZCopZGF0YTsKKyAgICBwcml2LT5wcm9jZXNz
LnByZURhdGEgPSBjb25zdF9jYXN0PHZvaWQqPihkYXRhKTsKIH0KIAogdm9pZCBld2tfdGlsZWRf
YmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcG9zdF9zZXQoRXZhc19PYmplY3QqIGV3a0Jh
Y2tpbmdTdG9yZSwgdm9pZCogKCpjYWxsYmFjaykodm9pZCogZGF0YSwgdm9pZCogcHJlRGF0YSwg
RXZhc19PYmplY3QgKmV3a0JhY2tpbmdTdG9yZSksIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2KTsKICAgICBwcml2
LT5wcm9jZXNzLnBvc3RDYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHByaXYtPnByb2Nlc3MucG9z
dERhdGEgPSAodm9pZCopZGF0YTsKKyAgICBwcml2LT5wcm9jZXNzLnBvc3REYXRhID0gY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSk7CiB9CiAKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBk
YXRlc19wcm9jZXNzKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCkBAIC0xNzk3LDcgKzE3
MDEsNyBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZShFdmFz
X09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzXwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9jaGFuZ2VkKHByaXYpOwogfQogCi12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rp
c2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRWluYV9Cb29s
IHZhbHVlKQordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGJvb2wgdmFsdWUpCiB7CiAgICAgUFJJVl9E
QVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2KTsKIApAQCAtMTgwOCw3ICsx
NzEyLDYgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0
KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEUKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RB
VEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwotICAgIEV3a19UaWxlX1Vu
dXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0gMDsKIAogICAgIHByaXYtPnZpZXcub2Zmc2V0
LmN1cnJlbnQueCA9IDA7CiAgICAgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55ID0gMDsKQEAg
LTE4MzMsNyArMTczNiw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZh
c19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIAogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gocHJpdik7CiAgICAgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwocHJpdik7Ci0gICAgdGlsZVVudXNlZENhY2hlID0g
ZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQocHJpdi0+bW9kZWwubWF0cml4KTsKKyAg
ICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJp
eF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CiAgICAgZXdrX3RpbGVfdW51
c2VkX2NhY2hlX2NsZWFyKHRpbGVVbnVzZWRDYWNoZSk7CiAKICNpZmRlZiBERUJVR19NRU1fTEVB
S1MKQEAgLTE4NDIsNyArMTc0NSw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1
c2goRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKICNlbmRpZgogfQogCi1FaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl90aWxlX2FkZChFdmFzX09iamVjdCog
ZXdrQmFja2luZ1N0b3JlLCBpbnQgY29sdW1uLCBpbnQgcm93LCBmbG9hdCB6b29tKQorYm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0KiBl
d2tCYWNraW5nU3RvcmUsIGludCBjb2x1bW4sIGludCByb3csIGZsb2F0IHpvb20pCiB7CiAgICAg
UFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7CiAK
QEAgLTE4NTUsNyArMTc1OCw3IEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3Rhbmds
ZSogdmlld1JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5LCBm
bG9hdCB6b29tKQorYm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJh
bF9xdWV1ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX1JlY3RhbmdsZSogdmll
d1JlY3QsIEVpbmFfUmVjdGFuZ2xlKiByZW5kZXJSZWN0LCBpbnQgbWF4TWVtb3J5LCBmbG9hdCB6
b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJp
diwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3UmVjdCwg
ZmFsc2UpOwpAQCAtMTg2NSwxNiArMTc2OCwxMyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIGV3a0JhY2tpbgog
ICAgIGNvbnN0IGludCB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKIAogICAg
IEVpbmFfVGlsZV9HcmlkX1NsaWNlciB2aWV3U2xpY2VyOwotICAgIEVpbmFfVGlsZV9HcmlkX1Ns
aWNlciByZW5kZXJTbGljZXI7Ci0KLSAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1
cCgmdmlld1NsaWNlciwKLSAgICAgICAgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVj
dC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICBpZiAoIWVp
bmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmdmlld1NsaWNlciwgdmlld1JlY3QtPngsIHZpZXdS
ZWN0LT55LCB2aWV3UmVjdC0+dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkp
IHsKICAgICAgICAgRVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCB2aWV3U2xpY2VyIGZvciAlZCwl
ZCslZHglZCB0aWxlPSVkeCVkIiwgdmlld1JlY3QtPngsIHZpZXdSZWN0LT55LCB2aWV3UmVjdC0+
dywgdmlld1JlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWVpbmFfdGlsZV9ncmlkX3NsaWNlcl9zZXR1cCgmcmVu
ZGVyU2xpY2VyLAotICAgICAgICByZW5kZXJSZWN0LT54LCByZW5kZXJSZWN0LT55LCByZW5kZXJS
ZWN0LT53LCByZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpKSB7CisgICAgICAg
IEVpbmFfVGlsZV9HcmlkX1NsaWNlciByZW5kZXJTbGljZXI7CisgICAgaWYgKCFlaW5hX3RpbGVf
Z3JpZF9zbGljZXJfc2V0dXAoJnJlbmRlclNsaWNlciwgcmVuZGVyUmVjdC0+eCwgcmVuZGVyUmVj
dC0+eSwgcmVuZGVyUmVjdC0+dywgcmVuZGVyUmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0
KSkgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIFJlbmRlclNsaWNlciBmb3Ig
JWQsJWQrJWR4JWQgdGlsZT0lZHglZCIsIHJlbmRlclJlY3QtPnksIHJlbmRlclJlY3QtPnksIHJl
bmRlclJlY3QtPncsIHJlbmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xODkxLDggKzE3OTEsOCBAQCBFaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxfcXVldWUoRXZhc19PYmpl
Y3QqIGV3a0JhY2tpbgogCiAgICAgaW50IHN0ZXAgPSAxOwogICAgIGNvbnN0IGludCBzcXVhcmVT
aWRlID0gNDsKLSAgICBmb3IgKGludCBsb29wID0gMDsgbG9vcCA8IG1heExvb3BDb3VudDsgbG9v
cCsrKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RlcCAqIHNxdWFyZVNpZGUgKyAx
OyBpKyspIHsKKyAgICBmb3IgKGludCBsb29wID0gMDsgbG9vcCA8IG1heExvb3BDb3VudDsgKyts
b29wKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RlcCAqIHNxdWFyZVNpZGUgKyAx
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChtZW1vcnlMaW1pdHMgPD0gMCkKICAgICAgICAgICAg
ICAgICBnb3RvIG1lbW9yeUxpbWl0c1JlYWNoZWQ7CiAgICAgICAgICAgICAvKgpAQCAtMTkwOCwx
MyArMTgwOCwxMyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9zcGlyYWxfcXVldWUoRXZhc19PYmplY3QqIGV3a0JhY2tpbgogICAgICAgICAgICAgICAgICAg
ICAgICAgIDMzMzMzMwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChpID4gMCAmJiBp
IDw9IHN0ZXApCi0gICAgICAgICAgICAgICAgY2VudGVyQ29sdW1uKys7IC8vIG1vdmUgbGVmdC4K
KyAgICAgICAgICAgICAgICArK2NlbnRlckNvbHVtbjsgLy8gbW92ZSBsZWZ0LgogICAgICAgICAg
ICAgZWxzZSBpZiAoaSA+IHN0ZXAgJiYgaSA8PSBzdGVwICogMikKLSAgICAgICAgICAgICAgICBj
ZW50ZXJSb3crKzsgLy8gbW92ZSBkb3duLgorICAgICAgICAgICAgICAgICsrY2VudGVyUm93OyAv
LyBtb3ZlIGRvd24uCiAgICAgICAgICAgICBlbHNlIGlmIChpID4gc3RlcCAqIDIgJiYgaSA8PSBz
dGVwICogMykKLSAgICAgICAgICAgICAgICBjZW50ZXJDb2x1bW4tLTsgLy8gbW92ZSByaWdodC4K
KyAgICAgICAgICAgICAgICAtLWNlbnRlckNvbHVtbjsgLy8gbW92ZSByaWdodC4KICAgICAgICAg
ICAgIGVsc2UgaWYgKGkgPiBzdGVwICogMyAmJiBpIDw9IHN0ZXAgKiA0KQotICAgICAgICAgICAg
ICAgIGNlbnRlclJvdy0tOyAvLyBtb3ZlIHVwLgorICAgICAgICAgICAgICAgIC0tY2VudGVyUm93
OyAvLyBtb3ZlIHVwLgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEVSUigiRVJS
T1IgOiBvdXQgb2YgYm91bmRzXHJcbiIpOwogCkBAIC0xOTMzLDEyICsxODMzLDEyIEBAIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFz
X09iamVjdCogZXdrQmFja2luCiAgICAgICAgICAgICAgICAgaWYgKCFld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX3RpbGVfYWRkKGV3a0JhY2tpbmdTdG9yZSwgY2VudGVyQ29sdW1u
LCBjZW50ZXJSb3csIHpvb20pKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBEQkcoIlI+WyVkICVkXSAiLCBjZW50ZXJDb2x1bW4sIGNlbnRlclJvdyk7Ci0g
ICAgICAgICAgICAgICAgbWVtb3J5TGltaXRzLS07CisgICAgICAgICAgICAgICAgLS1tZW1vcnlM
aW1pdHM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY2VudGVyUm93LS07Ci0g
ICAgICAgIGNlbnRlckNvbHVtbi0tOwotICAgICAgICBzdGVwID0gc3RlcCArIDI7CisgICAgICAg
IC0tY2VudGVyUm93OworICAgICAgICAtLWNlbnRlckNvbHVtbjsKKyAgICAgICAgc3RlcCArPSAy
OwogICAgIH0KIAogbWVtb3J5TGltaXRzUmVhY2hlZDoKQEAgLTE5NDcsMjQgKzE4NDcsMjIgQEAg
bWVtb3J5TGltaXRzUmVhY2hlZDoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tC
YWNraW5nU3RvcmUsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRo
LCBFdmFzX0Nvb3JkIGhlaWdodCwgZmxvYXQgem9vbSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVp
Z2h0LCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tp
bmdTdG9yZSwgcHJpdiwgZmFsc2UpOwotICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciBzbGljZXI7
Ci0gICAgY29uc3QgRWluYV9UaWxlX0dyaWRfSW5mbyogZ3JpZEluZm87Ci0gICAgRXZhc19Db29y
ZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0gICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxl
VW51c2VkQ2FjaGU7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0g
ICAgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CisgICAgRXZhc19Db29yZCB0
aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxlSGVp
Z2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICB6b29tID0gUk9VTkRFRF9aT09NKHBy
aXYtPnZpZXcudGlsZS53aWR0aCwgem9vbSk7CiAKKyAgICBFaW5hX1RpbGVfR3JpZF9TbGljZXIg
c2xpY2VyOwogICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZzbGljZXIsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKICAgICAgICAgRVJS
KCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBzbGljZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQi
LAogICAgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGNvbnN0IEVpbmFfVGlsZV9H
cmlkX0luZm8qIGdyaWRJbmZvOwogICAgIHdoaWxlIChlaW5hX3RpbGVfZ3JpZF9zbGljZXJfbmV4
dCgmc2xpY2VyLCAmZ3JpZEluZm8pKSB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgY29s
dW1uID0gZ3JpZEluZm8tPmNvbDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyByb3cgPSBn
cmlkSW5mby0+cm93OwpAQCAtMTk3NCw0MiArMTg3MiwzNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdT
dG9yZQogCiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9z
dGFydChwcml2KTsKIAotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVz
ZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAgRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlKiB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChw
cml2LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEo
dGlsZVVudXNlZENhY2hlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKKwogICAgIHJldHVy
biB0cnVlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRl
cl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgdW5zaWduZWQg
aW50IG4sIGZsb2F0IHpvb20pCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5k
ZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIHVuc2lnbmVk
IGludCBuLCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0Jh
Y2tpbmdTdG9yZSwgcHJpdiwgZmFsc2UpOwotICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRSb3csIGVu
ZFJvdywgc3RhcnRDb2wsIGVuZENvbCwgaSwgaiwgd2lkdGgsIGhlaWdodDsKLSAgICBFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZTsKIAotICAgIElORigicHJpdi0+bW9kZWwu
YmFzZS5yb3cgPSVsZCwgbj0ldSBwcml2LT52aWV3LnJvd3M9JWx1IiwKLSAgICAgICAgcHJpdi0+
bW9kZWwuYmFzZS5yb3csIG4sIHByaXYtPnZpZXcucm93cyk7Ci0gICAgc3RhcnRSb3cgPSAobG9u
Zylwcml2LT5tb2RlbC5iYXNlLnJvdyAtIG47Ci0gICAgc3RhcnRDb2wgPSAobG9uZylwcml2LT5t
b2RlbC5iYXNlLmNvbHVtbiAtIG47Ci0gICAgZW5kUm93ID0gc3RkOjptaW4ocHJpdi0+bW9kZWwu
Y3VycmVudC5yb3dzIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+bW9kZWwuYmFz
ZS5yb3cgKyBwcml2LT52aWV3LnJvd3MgKyBuIC0gMSk7Ci0gICAgZW5kQ29sID0gc3RkOjptaW4o
cHJpdi0+bW9kZWwuY3VycmVudC5jb2x1bW5zIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
cHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gKyBwcml2LT52aWV3LmNvbHVtbnMgKyBuIC0gMSk7Cisg
ICAgSU5GKCJwcml2LT5tb2RlbC5iYXNlLnJvdyA9JWxkLCBuPSV1IHByaXYtPnZpZXcucm93cz0l
bHUiLCBwcml2LT5tb2RlbC5iYXNlLnJvdywgbiwgcHJpdi0+dmlldy5yb3dzKTsKKyAgICB1bnNp
Z25lZCBsb25nIHN0YXJ0Um93ID0gKGxvbmcpcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuOworICAg
IHVuc2lnbmVkIGxvbmcgc3RhcnRDb2wgPSAobG9uZylwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiAt
IG47CisgICAgdW5zaWduZWQgbG9uZyBlbmRSb3cgPSBzdGQ6Om1pbihwcml2LT5tb2RlbC5jdXJy
ZW50LnJvd3MgLSAxLCBwcml2LT5tb2RlbC5iYXNlLnJvdyArIHByaXYtPnZpZXcucm93cyArIG4g
LSAxKTsKKyAgICB1bnNpZ25lZCBsb25nIGVuZENvbCA9IHN0ZDo6bWluKHByaXYtPm1vZGVsLmN1
cnJlbnQuY29sdW1ucyAtIDEsIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uICsgcHJpdi0+dmlldy5j
b2x1bW5zICsgbiAtIDEpOwogCi0gICAgSU5GKCJzdGFydFJvdz0lbHUsIGVuZFJvdz0lbHUsIHN0
YXJ0Q29sPSVsdSwgZW5kQ29sPSVsdSIsCi0gICAgICAgIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0
Q29sLCBlbmRDb2wpOworICAgIElORigic3RhcnRSb3c9JWx1LCBlbmRSb3c9JWx1LCBzdGFydENv
bD0lbHUsIGVuZENvbD0lbHUiLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbCwgZW5kQ29sKTsK
IAogICAgIHpvb20gPSBST1VOREVEX1pPT00ocHJpdi0+dmlldy50aWxlLndpZHRoLCB6b29tKTsK
IAotICAgIGZvciAoaSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKQotICAgICAgICBmb3Ig
KGogPSBzdGFydENvbDsgaiA8PSBlbmRDb2w7IGorKykKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcg
aSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGxv
bmcgaiA9IHN0YXJ0Q29sOyBqIDw9IGVuZENvbDsgKytqKQogICAgICAgICAgICAgaWYgKCFfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZChwcml2LCBqLCBpLCB6
b29tKSkKICAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0X3Byb2Nlc3Npbmc7CiAKIHN0YXJ0X3By
b2Nlc3Npbmc6CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxl
cl9zdGFydChwcml2KTsKIAotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91
bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7Ci0gICAgaGVpZ2h0ID0gKGVuZFJv
dyAtIHN0YXJ0Um93ICsgMSkgKiBUSUxFX1NJWkVfQVRfWk9PTShwcml2LT52aWV3LnRpbGUuaGVp
Z2h0LCB6b29tKTsKLSAgICB3aWR0aCA9IChlbmRDb2wgLSBzdGFydENvbCArIDEpICogVElMRV9T
SVpFX0FUX1pPT00ocHJpdi0+dmlldy50aWxlLndpZHRoLCB6b29tKTsKKyAgICBFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2Fj
aGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQgPSAo
ZW5kUm93IC0gc3RhcnRSb3cgKyAxKSAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGls
ZS5oZWlnaHQsIHpvb20pOworICAgIHVuc2lnbmVkIGxvbmcgd2lkdGggPSAoZW5kQ29sIC0gc3Rh
cnRDb2wgKyAxKSAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS53aWR0aCwgem9v
bSk7CiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2xvY2tfYXJlYSh0aWxlVW51c2VkQ2FjaGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbCAqIFRJTEVfU0la
RV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS53aWR0aCwgem9vbSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydFJvdyAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZp
ZXcudGlsZS5oZWlnaHQsIHpvb20pLCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKQEAgLTIwMjAsMjMg
KzE5MTMsMjQgQEAgc3RhcnRfcHJvY2Vzc2luZzoKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAg
ICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwotICAgIEV3
a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlOwogCiAgICAgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9jbGVhcihwcml2KTsKIAotICAgIHRpbGVV
bnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVs
Lm1hdHJpeCk7CisgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUgPSBl
d2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogICAg
IGV3a190aWxlX3VudXNlZF9jYWNoZV91bmxvY2tfYXJlYSh0aWxlVW51c2VkQ2FjaGUpOwogfQog
Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19P
YmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlz
YWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RB
VEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKKwogICAgIHJl
dHVybiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIocHJpdik7CiB9CiAK
LUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKEV2YXNfT2Jq
ZWN0KiBld2tCYWNraW5nU3RvcmUpCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJs
ZV9yZW5kZXIoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFf
R0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKICAgICBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfY2hhbmdlZChwcml2KTsKKwogICAgIHJldHVybiBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihwcml2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oCmluZGV4
IDJhYTBiMWQuLjE1MzYyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaApAQCAtMzMsMTAgKzMzLDEwIEBACiAg
Ki8KICN1bmRlZiBERUJVR19NRU1fTEVBS1MKIAotY29uc3QgaW50IGRlZmF1bHRUaWxlV2lkdGgg
PSAyNTY7Ci1jb25zdCBpbnQgZGVmYXVsdFRpbGVIZWlndGggPSAyNTY7CitzdGF0aWMgY29uc3Qg
aW50IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxl
SGVpZ3RoID0gMjU2OwogCi1jb25zdCBmbG9hdCB6b29tU3RlcE1pbmltdW0gPSAwLjAxOworc3Rh
dGljIGNvbnN0IGZsb2F0IHpvb21TdGVwTWluaW11bSA9IDAuMDE7CiAKICNkZWZpbmUgVElMRV9T
SVpFX0FUX1pPT00oU0laRSwgWk9PTSkgKChpbnQpcm91bmRmKChTSVpFKSAqIChaT09NKSkpCiAj
ZGVmaW5lIFRJTEVfWk9PTV9BVF9TSVpFKFNJWkUsIE9SSUdfVElMRSkgKChmbG9hdCkoU0laRSkg
LyAoZmxvYXQpKE9SSUdfVElMRSkpCkBAIC01NSwxMSArNTUsMTEgQEAgc3RydWN0IF9Fd2tfVGls
ZV9TdGF0cyB7CiAgICAgdW5zaWduZWQgaW50IG1pc3NlczsgICAgIC8qKjwgbnVtYmVyIG9mIHRp
bWVzIGl0IGJlY2FtZSBkaXJ0eSBidXQgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqIHJlcGFpbnRlZCBhdCBhbGwgc2luY2UgaXQgd2FzIG5vdCB2aXNpYmxlLgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICBFaW5hX0Jvb2wgZnVsbF91cGRhdGUgOiAxOyAv
Kio8IHRpbGUgcmVxdWlyZXMgZnVsbCBzaXplIHVwZGF0ZSAqLworICAgIGJvb2wgZnVsbF91cGRh
dGUgOiAxOyAvKio8IHRpbGUgcmVxdWlyZXMgZnVsbCBzaXplIHVwZGF0ZSAqLwogfTsKIAogc3Ry
dWN0IF9Fd2tfVGlsZSB7Ci0gICAgRWluYV9UaWxlciAqdXBkYXRlczsgICAgLyoqPCB1cGRhdGVk
L2RpcnR5IGFyZWFzICovCisgICAgRWluYV9UaWxlciogdXBkYXRlczsgICAgLyoqPCB1cGRhdGVk
L2RpcnR5IGFyZWFzICovCiAgICAgRXdrX1RpbGVfU3RhdHMgc3RhdHM7ICAgICAgIC8qKjwgdGls
ZSB1c2FnZSBzdGF0aXN0aWNzICovCiAgICAgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHJvdzsgLyoq
PCB0aWxlIHRpbGUgcG9zaXRpb24gKi8KICAgICBFdmFzX0Nvb3JkIHgsIHk7ICAgICAgICAvKio8
IHRpbGUgY29vcmRpbmF0ZSBwb3NpdGlvbiAqLwpAQCAtNzMsNDIgKzczLDQyIEBAIHN0cnVjdCBf
RXdrX1RpbGUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1l
bnQhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgaW50IHZpc2li
bGU7ICAgICAgICAgICAgICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxl
ICovCi0gICAgRXZhc19PYmplY3QgKmltYWdlOyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0
aGUgdGlsZSB0byBiZSByZW5kZXJlZCAqLworICAgIEV2YXNfT2JqZWN0KiBpbWFnZTsgICAgICAg
ICAgIC8qKjwgRXZhcyBJbWFnZSwgdGhlIHRpbGUgdG8gYmUgcmVuZGVyZWQgKi8KIH07CiAKIC8q
IHZpZXcgKi8KLUV2YXNfT2JqZWN0ICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoRXZhcyAq
ZSk7Ci0KLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChFdmFzX09i
amVjdCAqbywgRWluYV9Cb29sICgqY2IpKHZvaWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBF
aW5hX1JlY3RhbmdsZSAqYXJlYSksIGNvbnN0IHZvaWQgKmRhdGEpOwotCi1FaW5hX0Jvb2wgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCAq
bywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29v
cmQgZHgsIEV2YXNfQ29vcmQgZHkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3Njcm9sbF9pbm5lcl9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBF
dmFzX0Nvb3JkIGR5LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpOwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0ICp6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5LCBFdmFzX0Nvb3JkICpvZmZ4LCBFdmFzX0Nvb3JkICpvZmZ5KTsKLUVpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6
b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfZml4X29mZnNldHMoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19D
b29yZCBoKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9z
Y2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpOwotdm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9hbHBoYV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9v
bCBoYXNfYWxwaGEpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShF
dmFzX09iamVjdCAqbywgY29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSk7Ci12b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wcmVfc2V0KEV2YXNfT2JqZWN0ICpv
LCB2b2lkKigqY2IpKHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvKSwgY29uc3Qgdm9pZCAqZGF0
YSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wb3N0X3Nl
dChFdmFzX09iamVjdCAqbywgdm9pZCooKmNiKSh2b2lkICpkYXRhLCB2b2lkICpwcmVfZGF0YSwg
RXZhc19PYmplY3QgKm8pLCBjb25zdCB2b2lkICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdXBkYXRlc19jbGVhcihFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19D
b29yZCB3aWR0aCwgRXZhc19Db29yZCBoZWlnaHQpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmFsdWUp
Owotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaChFdmFzX09iamVjdCAqbyk7Ci12
b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9zY2FsZV9zZXQoRXZhc19PYmplY3Qg
Km8sIEVpbmFfQm9vbCB2YWx1ZSk7Ci0KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KEV2
YXNfT2JqZWN0ICpvLCBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci0KLUVpbmFfQm9vbCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywg
RXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBm
bG9hdCB6b29tKTsKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlbGF0aXZlX3JhZGl1cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpv
b20pOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFs
X3F1ZXVlKEV2YXNfT2JqZWN0ICpvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1Jl
Y3RhbmdsZSAqcmVuZGVyX3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKLXZvaWQg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QgKm8p
OwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZh
c19PYmplY3QgKm8pOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9y
ZW5kZXIoRXZhc19PYmplY3QgKm8pOworRXZhc19PYmplY3QqIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2FkZChFdmFzKiBlKTsKKwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJf
Y2Jfc2V0KEV2YXNfT2JqZWN0KiBvLCBib29sICgqY2IpKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0
LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSksIGNvbnN0IHZvaWQqIGRhdGEpOworCitib29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmpl
Y3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KTsKK2Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCogbywgRXZhc19Db29y
ZCBkeCwgRXZhc19Db29yZCBkeSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9s
bF9pbm5lcl9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nv
b3JkIGR5LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgpOworCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBmbG9hdCogem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19D
b29yZCogb2ZmeCwgRXZhc19Db29yZCogb2ZmeSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zm
c2V0cyhFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwordm9pZCBl
d2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09i
amVjdCogbywgYm9vbCBzbW9vdGhfc2NhbGUpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9hbHBoYV9zZXQoRXZhc19PYmplY3QqIG8sIGJvb2wgaGFzX2FscGhhKTsKK2Jvb2wgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFaW5hX1JlY3Rh
bmdsZSogdXBkYXRlKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9j
ZXNzX3ByZV9zZXQoRXZhc19PYmplY3QqIG8sIHZvaWQqICgqY2IpKHZvaWQqIGRhdGEsIEV2YXNf
T2JqZWN0KiBvKSwgY29uc3Qgdm9pZCogZGF0YSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3VwZGF0ZXNfcHJvY2Vzc19wb3N0X3NldChFdmFzX09iamVjdCogbywgdm9pZCogKCpjYiko
dm9pZCogZGF0YSwgdm9pZCogcHJlX2RhdGEsIEV2YXNfT2JqZWN0KiBvKSwgY29uc3Qgdm9pZCog
ZGF0YSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2VzcyhFdmFz
X09iamVjdCogbyk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfY2xlYXIo
RXZhc19PYmplY3QqIG8pOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19y
ZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0
KTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChFdmFz
X09iamVjdCogbywgYm9vbCB2YWx1ZSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Zs
dXNoKEV2YXNfT2JqZWN0KiBvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxl
X3NjYWxlX3NldChFdmFzX09iamVjdCogbywgYm9vbCB2YWx1ZSk7CisKK0V3a19UaWxlX1VudXNl
ZF9DYWNoZSogZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91
bnVzZWRfY2FjaGVfc2V0KEV2YXNfT2JqZWN0KiBvLCBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHR1
Yyk7CisKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2
YXNfQ29vcmQgaCwgZmxvYXQgem9vbSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25lZCBpbnQgbiwg
ZmxvYXQgem9vbSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3Bp
cmFsX3F1ZXVlKEV2YXNfT2JqZWN0KiBvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5h
X1JlY3RhbmdsZSogcmVuZGVyX3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKK3Zv
aWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3Qq
IG8pOworCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV2YXNf
T2JqZWN0KiBvKTsKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihF
dmFzX09iamVjdCogbyk7CiAKICNlbmRpZiAvLyBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCA3NjE1NzA3Li5mNDA0
YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTI5LDcg
KzI5LDcgQEAKIAogc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tf
VklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluYV9S
ZWN0YW5nbGUqIGFyZWEpCitzdGF0aWMgYm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKHZv
aWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsK
ICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Q
cml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBFaW5hX1JlY3RhbmdsZSByZWN0ID0ge2FyZWEtPngg
KyB0aWxlLT54LCBhcmVhLT55ICsgdGlsZS0+eSwgYXJlYS0+dywgYXJlYS0+aH07CkBAIC0zOCw3
ICszOCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lk
KiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluCiAgICAgRXdrX1BhaW50X0NvbnRleHQq
IGNvbnRleHQgPSBld2tfcGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywg
dGlsZS0+d2lkdGgsIHRpbGUtPmhlaWdodCwgdGlsZS0+Y3NwYWNlKTsKIAogICAgIGV3a19wYWlu
dF9jb250ZXh0X3RyYW5zbGF0ZShjb250ZXh0LCAtdGlsZS0+eCwgLXRpbGUtPnkpOwotICAgIEVp
bmFfQm9vbCByZXN1bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBjb250ZXh0LCAm
cmVjdCk7CisgICAgYm9vbCByZXN1bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBj
b250ZXh0LCAmcmVjdCk7CiAgICAgZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKIAog
ICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfc2V0KHRpbGUtPmltYWdlLCBwaXhlbHMpOwpAQCAt
NTYsOCArNTYsNyBAQCBzdGF0aWMgdm9pZCogX2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vz
c19wcmUodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIGV3a1ZpZQogc3RhdGljIEV2YXNfT2JqZWN0
KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQogewogICAgIEV2YXNfT2JqZWN0KiBiYWNraW5nU3RvcmUgPSBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQKLSAgICAgICAgKGJhY2tpbmdTdG9yZSwg
X2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYiwgc21hcnREYXRhLT5fcHJpdik7CisgICAgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChiYWNraW5nU3RvcmUsIF9ld2tfdmlld190
aWxlZF9yZW5kZXJfY2IsIHNtYXJ0RGF0YS0+X3ByaXYpOwogICAgIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wcmVfc2V0CiAgICAgICAgIChiYWNraW5nU3RvcmUsIF9l
d2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlLCBzbWFydERhdGEtPl9wcml2KTsKICAg
ICByZXR1cm4gYmFja2luZ1N0b3JlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163863</attachid>
            <date>2012-09-13 06:59:15 -0700</date>
            <delta_ts>2012-09-13 08:09:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96631_tiled_backing_store_cism.patch</filename>
            <type>text/plain</type>
            <size>90524</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA0MmViZjQ3Li45M2U3ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTIgQEAKKzIwMTItMDktMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUgYSBsb3Qgb2YgQydpc20g
ZnJvbSBFd2tfVGlsZWRfQmFja2luZ19TdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYSBsb3Qgb2YgQydpc20gZnJvbSBFd2tfVGlsZWRf
QmFja2luZ19TdG9yZSBhbmQKKyAgICAgICAgZml4IGNvZGluZyBzdHlsZS4KKworICAgICAgICAq
IGV3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHA6CisgICAgICAgIChfRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSk6CisgICAgICAgIChfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0
YSk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKToK
KyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaCk6CisgICAgICAgIChfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9uZXcpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX2l0ZW1fcmVzaXplKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV90aWxlX2Fzc29jaWF0ZSk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGls
ZV9kaXNzb2NpYXRlKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rp
c3NvY2lhdGVfYWxsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3JlcXVlc3RfZmlyc3QpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X3Byb2Nlc3Nfc2luZ2xlKToKKyAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Byb2Nlc3NfaWRsZXJfc3RhcnQpOgorICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKToKKyAgICAgICAgKF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKToKKyAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2l0ZW1fYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVt
X3Ntb290aF9zY2FsZV9zZXQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2No
YW5nZWQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRf
ZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2Fk
ZCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dfZGVsKToKKyAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfcmFuZ2VfZGVsKToKKyAg
ICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfYWxsX2RlbCk6CisgICAg
ICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbWVtYmVyX2RlbCk6CisgICAgICAg
IChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfbWVtYmVyX2FkZCk6CisgICAgICAgIChf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbWVtX2RiZyk6CisgICAgICAgIChfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc2lnX3Vzcik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
c21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9kZWwp
OgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X3Nob3cpOgorICAgICAg
ICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUpOgorICAgICAgICAoX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX3JlY2FsY19yZW5kZXJlcnMpOgorICAgICAgICAoX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2NhbGN1bGF0ZV9zaXplKToKKyAgICAgICAgKF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV92aWV3X2RiZyk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdmlld193cmFwX3VwKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92
aWV3X3dyYXBfZG93bik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193
cmFwX2xlZnQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9y
aWdodCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yZWZpbGwpOgor
ICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcG9zX2FwcGx5KToKKyAgICAg
ICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zmc2V0X2ZvcmNl
KToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVfb2Zm
c2V0KToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVf
cG9zKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maWxsX3JlbmRlcmVycyk6
CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKToKKyAg
ICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3JlbmRlcl9jYl9zZXQpOgorICAgICAgICAo
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KToKKyAgICAgICAg
KF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFs
KToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9z
ZXQpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0
X2FkZCk6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJu
YWwpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQpOgorICAgICAg
ICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3NldCk6CisgICAgICAgIChld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyk6CisgICAgICAgIChld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldCk6CisgICAgICAgIChld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9hbHBoYV9zZXQpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfdXBkYXRlKToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNf
cHJvY2Vzc19wcmVfc2V0KToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0
ZXNfcHJvY2Vzc19wb3N0X3NldCk6CisgICAgICAgIChld2tfdGlsZWRfYmFja2luZ19zdG9yZV9k
aXNhYmxlZF91cGRhdGVfc2V0KToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Zs
dXNoKToKKyAgICAgICAgKGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfdGlsZV9h
ZGQpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9zcGlyYWxf
cXVldWUpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdp
b24pOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9j
YW5jZWwpOgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIp
OgorICAgICAgICAoZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcik6CisgICAg
ICAgICogZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByaXZhdGUuaDoKKyAgICAgICAgKF9F
d2tfVGlsZV9TdGF0cyk6CisgICAgICAgIChfRXdrX1RpbGUpOgorICAgICAgICAqIGV3ay9ld2tf
dmlld190aWxlZC5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToKKyAg
ICAgICAgKF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZCk6CisKIDIwMTIt
MDktMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc4NzYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCA5MDM0OThmLi4yZjlk
N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZS5jcHAKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2RlZmluZSBJRFgoY29sdW1uLCByb3csIHJvd3Nw
YW4pIChjb2x1bW4gKyAocm93ICogcm93c3BhbikpCi0KIHR5cGVkZWYgc3RydWN0IF9Fd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGE7CiB0eXBl
ZGVmIHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSBFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9JdGVtOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19UaWxlZF9CYWNraW5nX1N0b3JlX1By
ZV9SZW5kZXJfUmVxdWVzdCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVl
c3Q7CkBAIC00NCw5ICs0Miw3IEBAIHR5cGVkZWYgc3RydWN0IF9Fd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QgRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiBzdHJ1Y3QgX0V3
a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0gewogICAgIEVJTkFfSU5MSVNUOwogICAgIEV3a19U
aWxlKiB0aWxlOwotICAgIHN0cnVjdCB7Ci0gICAgICAgIEV2YXNfQ29vcmQgeCwgeSwgd2lkdGgs
IGhlaWdodDsKLSAgICB9IGdlb21ldHJ5OworICAgIEV2YXNfQ29vcmRfUmVjdGFuZ2xlIGdlb21l
dHJ5OwogICAgIGJvb2wgc21vb3RoU2NhbGU7CiB9OwogCkBAIC02Myw3ICs1OSw3IEBAIHN0cnVj
dCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7CiAgICAgc3RydWN0IHsKICAgICAgICAg
RWluYV9Jbmxpc3QqKiBpdGVtczsKICAgICAgICAgRXZhc19Db29yZCB4LCB5LCB3aWR0aCwgaGVp
Z2h0OwotICAgICAgICBsb25nIGNvbHVtbnMsIHJvd3M7CisgICAgICAgIHVuc2lnbmVkIGxvbmcg
Y29sdW1ucywgcm93czsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIEV2YXNfQ29vcmQg
d2lkdGgsIGhlaWdodDsKICAgICAgICAgICAgIGZsb2F0IHpvb207CkBAIC04OSw3ICs4NSw3IEBA
IHN0cnVjdCBfRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSB7CiAgICAgICAgIEV2YXNfQ29v
cmQgd2lkdGgsIGhlaWdodDsKICAgICB9IG1vZGVsOwogICAgIHN0cnVjdCB7Ci0gICAgICAgIEVp
bmFfQm9vbCAoKmNhbGxiYWNrKSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpOworICAgICAgICBib29sICgqY2FsbGJhY2spKHZvaWQqIGRhdGEs
IEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSk7CiAgICAgICAgIHZv
aWQqIGRhdGE7CiAgICAgICAgIEVpbmFfSW5saXN0KiBwcmVSZW5kZXJSZXF1ZXN0czsKICAgICAg
ICAgRWNvcmVfSWRsZXIqIGlkbGVyOwpAQCAtMTI1LDEzICsxMjEsMTQgQEAgc3RhdGljIEV2YXNf
U21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogICAg
IH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpbGxfcmVuZGVyZXJz
KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpOwotc3RhdGljIGlubGluZSB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2RiZyhjb25zdCBFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9EYXRhKiBwcml2KTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfY2hhbmdlZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KTsKIAor
I2lmZGVmIERFQlVHX01FTV9MRUFLUworc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X2RiZyhjb25zdCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBw
cml2KTsKKyNlbmRpZgorCiBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3VwZGF0ZXNfcHJvY2VzcyhFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQog
ewotICAgIHZvaWQqIGRhdGEgPSAwOwotCiAgICAgLyogRG8gbm90IHByb2Nlc3MgdXBkYXRlcy4g
Tm90ZSB0aGF0IHdlIHN0aWxsIHdhbnQgdG8gZ2V0IHVwZGF0ZXMgcmVxdWVzdHMKICAgICAgKiBp
biB0aGUgcXVldWUgaW4gb3JkZXIgdG8gbm90IG1pc3MgYW55IHVwZGF0ZXMgYWZ0ZXIgdGhlIHJl
bmRlciBpcwogICAgICAqIHJlc3VtZWQuCkBAIC0xMzksOCArMTM2LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXdrX1RpbGVk
X0JhY2tpbmdfU3QKICAgICBpZiAocHJpdi0+cmVuZGVyLnN1c3BlbmQgfHwgIXByaXYtPnZpZXcu
dmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHByaXYtPnByb2Nlc3MucHJlQ2Fs
bGJhY2spCi0gICAgICAgIGRhdGEgPSBwcml2LT5wcm9jZXNzLnByZUNhbGxiYWNrKHByaXYtPnBy
b2Nlc3MucHJlRGF0YSwgcHJpdi0+c2VsZik7CisgICAgdm9pZCogZGF0YSA9IHByaXYtPnByb2Nl
c3MucHJlQ2FsbGJhY2sgPyBwcml2LT5wcm9jZXNzLnByZUNhbGxiYWNrKHByaXYtPnByb2Nlc3Mu
cHJlRGF0YSwgcHJpdi0+c2VsZikgOiAwOwogCiAgICAgZXdrX3RpbGVfbWF0cml4X3VwZGF0ZXNf
cHJvY2Vzcyhwcml2LT5tb2RlbC5tYXRyaXgpOwogCkBAIC0xNDgsNyArMTQ0LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3MoRXdr
X1RpbGVkX0JhY2tpbmdfU3QKICAgICAgICAgcHJpdi0+cHJvY2Vzcy5wb3N0Q2FsbGJhY2socHJp
di0+cHJvY2Vzcy5wb3N0RGF0YSwgZGF0YSwgcHJpdi0+c2VsZik7CiB9CiAKLXN0YXRpYyBpbnQg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKHZvaWQqIGRhdGEpCitzdGF0aWMgdm9pZCBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2godm9pZCogZGF0YSkKIHsKICAgICBFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVkX0JhY2tp
bmdfU3RvcmVfRGF0YSo+KGRhdGEpOwogICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZWRV
bnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVs
Lm1hdHJpeCk7CkBAIC0xNTgsMjIgKzE1NCwxNyBAQCBzdGF0aWMgaW50IF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9mbHVzaCh2b2lkKiBkYXRhKQogICAgICAgICBld2tfdGlsZV91bnVzZWRfY2Fj
aGVfYXV0b19mbHVzaCh0aWxlZFVudXNlZENhY2hlKTsKICAgICB9IGVsc2UKICAgICAgICAgRVJS
KCJubyBjYWNoZT8hIik7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIEV3a19UaWxlKiBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9uZXcoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
RGF0YSogcHJpdiwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9h
dCB6b29tKQogewotICAgIEV3a19UaWxlKiB0aWxlOwogICAgIEV2YXMqIGV2YXMgPSBldmFzX29i
amVjdF9ldmFzX2dldChwcml2LT5zZWxmKTsKICAgICBpZiAoIWV2YXMpIHsKICAgICAgICAgQ1JJ
VElDQUwoImV2YXNfb2JqZWN0X2V2YXNfZ2V0IGZhaWxlZCEiKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgdGlsZSA9IGV3a190aWxlX21hdHJpeF90aWxlX25ldwotICAgICAgICAg
ICAgICAgKHByaXYtPm1vZGVsLm1hdHJpeCwgZXZhcywgY29sdW1uLCByb3csIHpvb20pOwotCisg
ICAgRXdrX1RpbGUqIHRpbGUgPSBld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcocHJpdi0+bW9kZWwu
bWF0cml4LCBldmFzLCBjb2x1bW4sIHJvdywgem9vbSk7CiAgICAgaWYgKCF0aWxlKSB7CiAgICAg
ICAgIENSSVRJQ0FMKCJld2tfdGlsZV9tYXRyaXhfdGlsZV9uZXcgZmFpbGVkISIpOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTE5MywyNCArMTg0LDI1IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX21vdmUoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRl
CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jlc2l6ZShFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nv
b3JkIGhlaWdodCkKIHsKLSAgICBpdGVtLT5nZW9tZXRyeS53aWR0aCA9IHdpZHRoOwotICAgIGl0
ZW0tPmdlb21ldHJ5LmhlaWdodCA9IGhlaWdodDsKKyAgICBpdGVtLT5nZW9tZXRyeS53ID0gd2lk
dGg7CisgICAgaXRlbS0+Z2VvbWV0cnkuaCA9IGhlaWdodDsKIAotICAgIGlmIChpdGVtLT50aWxl
KSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShpdGVtLT50aWxlLT5pbWFnZSwgd2lkdGgs
IGhlaWdodCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KGl0ZW0tPnRpbGUt
PmltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9CisgICAgaWYgKCFpdGVtLT50aWxl
KQorICAgICAgICByZXR1cm47CisKKyAgICBldmFzX29iamVjdF9yZXNpemUoaXRlbS0+dGlsZS0+
aW1hZ2UsIHdpZHRoLCBoZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X2ltYWdlX2ZpbGxfc2V0KGl0
ZW0tPnRpbGUtPmltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogc3RhdGljIHZvaWQg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfYXNzb2NpYXRlKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0RhdGEqIHByaXYsIEV3a19UaWxlKiB0aWxlLCBFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtKiBpdGVtKQogewogICAgIGlmIChpdGVtLT50aWxlKQogICAgICAgICBDUklUSUNBTCgi
aXRlbS0+dGlsZT0lcCwgYnV0IGl0IHNob3VsZCBiZSAwISIsIGl0ZW0tPnRpbGUpOworCiAgICAg
aXRlbS0+dGlsZSA9IHRpbGU7CiAgICAgZXZhc19vYmplY3RfbW92ZShpdGVtLT50aWxlLT5pbWFn
ZSwgaXRlbS0+Z2VvbWV0cnkueCwgaXRlbS0+Z2VvbWV0cnkueSk7Ci0gICAgZXZhc19vYmplY3Rf
cmVzaXplKGl0ZW0tPnRpbGUtPmltYWdlLCBpdGVtLT5nZW9tZXRyeS53aWR0aCwgaXRlbS0+Z2Vv
bWV0cnkuaGVpZ2h0KTsKLSAgICBldmFzX29iamVjdF9pbWFnZV9maWxsX3NldAotICAgICAgICAo
aXRlbS0+dGlsZS0+aW1hZ2UsIDAsIDAsIGl0ZW0tPmdlb21ldHJ5LndpZHRoLCBpdGVtLT5nZW9t
ZXRyeS5oZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShpdGVtLT50aWxlLT5pbWFnZSwg
aXRlbS0+Z2VvbWV0cnkudywgaXRlbS0+Z2VvbWV0cnkuaCk7CisgICAgZXZhc19vYmplY3RfaW1h
Z2VfZmlsbF9zZXQoaXRlbS0+dGlsZS0+aW1hZ2UsIDAsIDAsIGl0ZW0tPmdlb21ldHJ5LncsIGl0
ZW0tPmdlb21ldHJ5LmgpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX3Ntb290aF9zY2FsZV9zZXQo
aXRlbS0+dGlsZS0+aW1hZ2UsIGl0ZW0tPnNtb290aFNjYWxlKTsKICAgICBldmFzX29iamVjdF9p
bWFnZV9hbHBoYV9zZXQoaXRlbS0+dGlsZS0+aW1hZ2UsIHByaXYtPnZpZXcudGlsZS5oYXNBbHBo
YSk7CiAKQEAgLTIyMiwxMiArMjE0LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV90aWxlX2Fzc29jaWF0ZShFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhCiAKIHN0
YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUoRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRl
bSogaXRlbSwgZG91YmxlIGxhc3RVc2VkKQogewotICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSog
dGlsZVVudXNlZENhY2hlOwogICAgIGV3a190aWxlX2hpZGUoaXRlbS0+dGlsZSk7CiAgICAgaWYg
KCFld2tfdGlsZV92aXNpYmxlX2dldChpdGVtLT50aWxlKSkKICAgICAgICAgZXZhc19vYmplY3Rf
c21hcnRfbWVtYmVyX2RlbChpdGVtLT50aWxlLT5pbWFnZSk7CisKICAgICBld2tfdGlsZV9tYXRy
aXhfdGlsZV9wdXQocHJpdi0+bW9kZWwubWF0cml4LCBpdGVtLT50aWxlLCBsYXN0VXNlZCk7Ci0g
ICAgdGlsZVVudXNlZENhY2hlID0gZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQocHJp
di0+bW9kZWwubWF0cml4KTsKKyAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRD
YWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJp
eCk7CiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2godGlsZVVudXNlZENhY2hl
KTsKIAogICAgIGl0ZW0tPnRpbGUgPSAwOwpAQCAtMjM1LDI1ICsyMjcsMjMgQEAgc3RhdGljIHZv
aWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfZGlzc29jaWF0ZShFd2tfVGlsZWRfQmFj
a2luZ19TdG9yZV9EYXQKIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Rp
bGVfZGlzc29jaWF0ZV9hbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikKIHsK
LSAgICBFaW5hX0lubGlzdCogbGlzdDsKLSAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVt
KiBpdGVtOwotICAgIGludCBpOwogICAgIGRvdWJsZSBsYXN0X3VzZWQgPSBlY29yZV9sb29wX3Rp
bWVfZ2V0KCk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgcHJpdi0+dmlldy5yb3dzOyBpKyspIHsK
LSAgICAgICAgbGlzdCA9IHByaXYtPnZpZXcuaXRlbXNbaV07Ci0gICAgICAgIEVJTkFfSU5MSVNU
X0ZPUkVBQ0gobGlzdCwgaXRlbSkKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IDA7IGkgPCBw
cml2LT52aWV3LnJvd3M7ICsraSkgeworICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9J
dGVtKiBpdGVtOworICAgICAgICBFaW5hX0lubGlzdCogbGlzdCA9IHByaXYtPnZpZXcuaXRlbXNb
aV07CisgICAgICAgIEVJTkFfSU5MSVNUX0ZPUkVBQ0gobGlzdCwgaXRlbSkgewogICAgICAgICAg
ICAgaWYgKGl0ZW0tPnRpbGUpCiAgICAgICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3RpbGVfZGlzc29jaWF0ZShwcml2LCBpdGVtLCBsYXN0X3VzZWQpOworICAgICAgICB9CiAg
ICAgfQogfQogCi1zdGF0aWMgaW5saW5lIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBw
cml2LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3csIGZsb2F0IHpvb20p
CitzdGF0aWMgaW5saW5lIGJvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgdW5zaWduZWQg
bG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewogICAgIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCA9IG5ldyBFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3Q7CiAKLSAgICBwcml2LT5yZW5k
ZXIucHJlUmVuZGVyUmVxdWVzdHMgPSBlaW5hX2lubGlzdF9hcHBlbmQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVl
c3RzLCBFSU5BX0lOTElTVF9HRVQocmVxdWVzdCkpOworICAgIHByaXYtPnJlbmRlci5wcmVSZW5k
ZXJSZXF1ZXN0cyA9IGVpbmFfaW5saXN0X2FwcGVuZChwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVx
dWVzdHMsIEVJTkFfSU5MSVNUX0dFVChyZXF1ZXN0KSk7CiAKICAgICByZXF1ZXN0LT5jb2x1bW4g
PSBjb2x1bW47CiAgICAgcmVxdWVzdC0+cm93ID0gcm93OwpAQCAtMjY0LDE2ICsyNTQsMTMgQEAg
c3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5k
ZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGUKIAogc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0RhdGEqIHByaXYsIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVz
dCogcmVxdWVzdCkKIHsKLSAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMgPSBlaW5h
X2lubGlzdF9yZW1vdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lOTElTVF9HRVQocmVxdWVz
dCkpOworICAgIHByaXYtPnJlbmRlci5wcmVSZW5kZXJSZXF1ZXN0cyA9IGVpbmFfaW5saXN0X3Jl
bW92ZShwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMsIEVJTkFfSU5MSVNUX0dFVChyZXF1
ZXN0KSk7CiAgICAgZGVsZXRlIHJlcXVlc3Q7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRXdrX1RpbGVk
X0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KiBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZpcnN0KGNvbnN0IEV3a19UaWxlZF9CYWNraW5nX1N0b3Jl
X0RhdGEqIHByaXYpCiB7Ci0gICAgcmV0dXJuIEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoCi0g
ICAgICAgICAgICAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMsCi0gICAgICAgICAg
ICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QpOworICAgIHJl
dHVybiBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHByaXYtPnJlbmRlci5wcmVSZW5kZXJSZXF1
ZXN0cywgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfUHJlX1JlbmRlcl9SZXF1ZXN0KTsKIH0KIAog
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9m
bHVzaChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2KQpAQCAtMjkwLDEyICsyNzcs
MTAgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVx
dWVzdF9mbHVzaChFd2tfVGlsZWRfQmFja2luZ18KIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfRGF0YSogcHJpdikKIHsKICAgICBFaW5hX0lubGlzdCoqIHByZVJlbmRlckxpc3QgPSAmcHJp
di0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzOwotICAgIEVpbmFfSW5saXN0KiBpdGVyID0gKnBy
ZVJlbmRlckxpc3QsICpuZXh0OworICAgIEVpbmFfSW5saXN0KiBpdGVyID0gKnByZVJlbmRlckxp
c3Q7CiAgICAgd2hpbGUgKGl0ZXIpIHsKLSAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
UHJlX1JlbmRlcl9SZXF1ZXN0KiByZXF1ZXN0ID0KLSAgICAgICAgICAgIEVJTkFfSU5MSVNUX0NP
TlRBSU5FUl9HRVQoCi0gICAgICAgICAgICAgICAgaXRlciwgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfUHJlX1JlbmRlcl9SZXF1ZXN0KTsKLSAgICAgICAgbmV4dCA9IGl0ZXItPm5leHQ7CisgICAg
ICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCA9
IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoaXRlciwgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
UHJlX1JlbmRlcl9SZXF1ZXN0KTsKKyAgICAgICAgRWluYV9Jbmxpc3QqIG5leHQgPSBpdGVyLT5u
ZXh0OwogICAgICAgICAqcHJlUmVuZGVyTGlzdCA9IGVpbmFfaW5saXN0X3JlbW92ZSgqcHJlUmVu
ZGVyTGlzdCwgaXRlcik7CiAgICAgICAgIGl0ZXIgPSBuZXh0OwogICAgICAgICBkZWxldGUgcmVx
dWVzdDsKQEAgLTMwNSw0OSArMjkwLDM5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVkX0JhY2tpbmdfCiAvKiBh
c3N1bWVzIHByaXYtPnByb2Nlc3MucHJlQ2FsbGJhY2sgd2FzIGNhbGxlZCBpZiByZXF1aXJlZCEg
Ki8KIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVl
c3RfcHJvY2Vzc19zaW5nbGUoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikKIHsK
LSAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqIHJlcXVlc3Q7
Ci0gICAgRWluYV9SZWN0YW5nbGUgYXJlYTsKICAgICBFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRy
aXggPSBwcml2LT5tb2RlbC5tYXRyaXg7Ci0gICAgRXdrX1RpbGUqIHRpbGU7Ci0gICAgRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7Ci0gICAgdW5zaWduZWQgbG9uZyBjb2x1
bW4sIHJvdzsKLSAgICBmbG9hdCB6b29tOwogICAgIGRvdWJsZSBsYXN0X3VzZWQgPSBlY29yZV9s
b29wX3RpbWVfZ2V0KCk7CiAKLSAgICByZXF1ZXN0ID0gX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdChwcml2KTsKKyAgICBFd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9QcmVfUmVuZGVyX1JlcXVlc3QqIHJlcXVlc3QgPSBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZpcnN0KHByaXYpOwogICAgIGlmICghcmVxdWVzdCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29sdW1uID0gcmVxdWVzdC0+Y29sdW1uOwotICAgIHJvdyA9
IHJlcXVlc3QtPnJvdzsKLSAgICB6b29tID0gcmVxdWVzdC0+em9vbTsKKyAgICB1bnNpZ25lZCBs
b25nIGNvbHVtbiA9IHJlcXVlc3QtPmNvbHVtbjsKKyAgICB1bnNpZ25lZCBsb25nIHJvdyA9IHJl
cXVlc3QtPnJvdzsKKyAgICBmbG9hdCB6b29tID0gcmVxdWVzdC0+em9vbTsKIAogICAgIGlmIChl
d2tfdGlsZV9tYXRyaXhfdGlsZV9leGFjdF9leGlzdHModGlsZU1hdHJpeCwgY29sdW1uLCByb3cs
IHpvb20pKSB7CiAgICAgICAgIERCRygibm8gcHJlLXJlbmRlciByZXF1aXJlZCBmb3IgdGlsZSAl
bHUsJWx1IEAgJWYuIiwgY29sdW1uLCByb3csIHpvb20pOwotICAgICAgICBnb3RvIGVuZDsKKyAg
ICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9kZWwocHJp
diwgcmVxdWVzdCk7CisgICAgICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9hdXRvX2ZsdXNoKGV3
a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCkpOworICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGlsZSA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV90aWxlX25ldyhwcml2LCBjb2x1bW4sIHJvdywgem9vbSk7Ci0gICAgaWYgKCF0aWxlKQotICAg
ICAgICBnb3RvIGVuZDsKKyAgICBFd2tfVGlsZSogdGlsZSA9IF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV90aWxlX25ldyhwcml2LCBjb2x1bW4sIHJvdywgem9vbSk7CisgICAgaWYgKCF0aWxlKSB7
CisgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZGVs
KHByaXYsIHJlcXVlc3QpOworICAgICAgICBld2tfdGlsZV91bnVzZWRfY2FjaGVfYXV0b19mbHVz
aChld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGFyZWEueCA9IDA7Ci0gICAgYXJlYS55ID0g
MDsKLSAgICBhcmVhLncgPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0gICAgYXJlYS5oID0gcHJp
di0+dmlldy50aWxlLmhlaWdodDsKKyAgICBFaW5hX1JlY3RhbmdsZSBhcmVhOworICAgIEVJTkFf
UkVDVEFOR0xFX1NFVCgmYXJlYSwgMCwgMCwgcHJpdi0+dmlldy50aWxlLndpZHRoLCBwcml2LT52
aWV3LnRpbGUuaGVpZ2h0KTsKIAogICAgIHByaXYtPnJlbmRlci5jYWxsYmFjayhwcml2LT5yZW5k
ZXIuZGF0YSwgdGlsZSwgJmFyZWEpOwotICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRl
X2FkZCgKLSAgICAgICAgdGlsZS0+aW1hZ2UsCi0gICAgICAgIGFyZWEueCwgYXJlYS55LCBhcmVh
LncsIGFyZWEuaCk7CisgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkKHRpbGUt
PmltYWdlLCBhcmVhLngsIGFyZWEueSwgYXJlYS53LCBhcmVhLmgpOwogICAgIGV3a190aWxlX21h
dHJpeF90aWxlX3VwZGF0ZXNfY2xlYXIodGlsZU1hdHJpeCwgdGlsZSk7CiAKICAgICBld2tfdGls
ZV9tYXRyaXhfdGlsZV9wdXQodGlsZU1hdHJpeCwgdGlsZSwgbGFzdF91c2VkKTsKLQotZW5kOgot
ICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZGVsKHByaXYs
IHJlcXVlc3QpOwotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRf
Y2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7Ci0gICAgZXdrX3RpbGVfdW51c2VkX2NhY2hl
X2F1dG9fZmx1c2godGlsZVVudXNlZENhY2hlKTsKIH0KIAogc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9wcm9jZXNzX2lkbGVyX2NiKHZvaWQqIGRhdGEpCkBA
IC0zODMsMTEgKzM1OCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydChFd2tfVGlsZWRfQgogewogICAgIGlmIChw
cml2LT5yZW5kZXIuaWRsZXIgfHwgIXByaXYtPnZpZXcudmlzaWJsZSkKICAgICAgICAgcmV0dXJu
OwotICAgIHByaXYtPnJlbmRlci5pZGxlciA9IGVjb3JlX2lkbGVyX2FkZCgKLSAgICAgICAgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYiwgcHJpdik7CisKKyAg
ICBwcml2LT5yZW5kZXIuaWRsZXIgPSBlY29yZV9pZGxlcl9hZGQoX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9jYiwgcHJpdik7CiB9CiAKLXN0YXRpYyBFaW5hX0Jv
b2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0RhdGEqIHByaXYpCitzdGF0aWMgYm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfZGlzYWJsZV9yZW5kZXIoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikKIHsK
ICAgICBpZiAocHJpdi0+cmVuZGVyLnN1c3BlbmQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
Mzk3LDcgKzM3Miw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2Rpc2FibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9y
ZW5kZXIoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdikKK3N0YXRpYyBib29sIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKEV3a19UaWxlZF9CYWNraW5nX1N0
b3JlX0RhdGEqIHByaXYpCiB7CiAgICAgaWYgKCFwcml2LT5yZW5kZXIuc3VzcGVuZCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC00MTAsNyArMzg1LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190
aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRh
KiBwcml2LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCB1bnNpZ25lZCBsb25n
IGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCitzdGF0aWMgaW5saW5lIGJvb2wgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBw
cml2LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCB1bnNpZ25lZCBsb25nIGNv
bHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCiB7CiAgICAgaWYgKCFwcml2LT52aWV3LnZpc2libGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICszOTgsNiBAQCBzdGF0aWMgaW5saW5l
IEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKEV3a19UaWxlZF9C
YWNraW5nX1N0bwogICAgICAgICBpZiAoaXRlbS0+dGlsZSkKICAgICAgICAgICAgIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUocHJpdiwgaXRlbSwgbGFzdFVzZWQpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIEV3a19UaWxlKiB0aWxlOwogICAgICAgICBjb25zdCBmbG9h
dCB6b29tID0gcHJpdi0+dmlldy50aWxlLnpvb207CiAKICAgICAgICAgaWYgKGl0ZW0tPnRpbGUp
IHsKQEAgLTQzMSwxMSArNDA1LDEwIEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiAgICAgICAg
ICAgICBpZiAob2xkLT5yb3cgIT0gY3VycmVudFJvdyB8fCBvbGQtPmNvbHVtbiAhPSBjdXJyZW50
Q29sdW1uIHx8IG9sZC0+em9vbSAhPSB6b29tKQogICAgICAgICAgICAgICAgIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV90aWxlX2Rpc3NvY2lhdGUocHJpdiwgaXRlbSwgbGFzdFVzZWQpOwogICAg
ICAgICAgICAgZWxzZSBpZiAob2xkLT5yb3cgPT0gY3VycmVudFJvdyAmJiBvbGQtPmNvbHVtbiA9
PSBjdXJyZW50Q29sdW1uICYmIG9sZC0+em9vbSA9PSB6b29tKQotICAgICAgICAgICAgICAgIGdv
dG8gZW5kOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgdGlsZSA9IGV3a190aWxlX21hdHJpeF90aWxlX2V4YWN0X2dldChwcml2LT5tb2RlbC5tYXRy
aXgsIGN1cnJlbnRDb2x1bW4sIGN1cnJlbnRSb3csIHpvb20pOwotCisgICAgICAgIEV3a19UaWxl
KiB0aWxlID0gZXdrX3RpbGVfbWF0cml4X3RpbGVfZXhhY3RfZ2V0KHByaXYtPm1vZGVsLm1hdHJp
eCwgY3VycmVudENvbHVtbiwgY3VycmVudFJvdywgem9vbSk7CiAgICAgICAgIGlmICghdGlsZSkg
ewogICAgICAgICAgICAgLyogTk9URTogaXQgbmV2ZXIgcmV0dXJucyAwIGlmIGl0ZW0tPnRpbGUg
d2FzIHNldCEgKi8KICAgICAgICAgICAgIGlmIChpdGVtLT50aWxlKSB7CkBAIC00NTcsMTAgKzQz
MCw2IEBAIHN0YXRpYyBpbmxpbmUgRWluYV9Cb29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX2ZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLCBsYXN0VXNlZCk7CiAgICAgICAg
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9hc3NvY2lhdGUocHJpdiwgdGlsZSwg
aXRlbSk7CiAgICAgICAgIH0KLQotZW5kOgotCi0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwpAQCAtNDY4LDE0ICs0MzcsMTIgQEAgZW5kOgogCiBzdGF0aWMg
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0
ZW1fYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIHVuc2lnbmVkIGxvbmcg
Y29sdW1uLCB1bnNpZ25lZCBsb25nIHJvdykKIHsKLSAgICBFdmFzX0Nvb3JkIHgsIHksIHRpbGVX
aWR0aCwgdGlsZUhlaWdodDsKLQogICAgIERCRygiZXdrQmFja2luZ1N0b3JlPSVwIiwgcHJpdi0+
c2VsZik7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0gICAgdGls
ZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7Ci0gICAgeCA9IHByaXYtPnZpZXcub2Zm
c2V0LmJhc2UueCArIHByaXYtPnZpZXcueCArIHRpbGVXaWR0aCAqIGNvbHVtbjsKLSAgICB5ID0g
cHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ICsgcHJpdi0+dmlldy55ICsgdGlsZUhlaWdodCAqIHJv
dzsKKyAgICBFdmFzX0Nvb3JkIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKKyAg
ICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OworICAgIEV2
YXNfQ29vcmQgeCA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCArIHByaXYtPnZpZXcueCArIHRp
bGVXaWR0aCAqIGNvbHVtbjsKKyAgICBFdmFzX0Nvb3JkIHkgPSBwcml2LT52aWV3Lm9mZnNldC5i
YXNlLnkgKyBwcml2LT52aWV3LnkgKyB0aWxlSGVpZ2h0ICogcm93OwogCiAgICAgT3duUHRyPEV3
a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0+IGl0ZW0gPSBhZG9wdFB0cihuZXcgRXdrX1RpbGVk
X0JhY2tpbmdfU3RvcmVfSXRlbSk7CiAgICAgaXRlbS0+dGlsZSA9IDA7CkBAIC00OTksNyArNDY2
LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZGVsKEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYKICAgICBkZWxldGUgaXRlbTsKIH0KIAotc3Rh
dGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxlX3NldChF
d2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtLCBFaW5hX0Jvb2wgc21vb3RoU2NhbGUp
CitzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9zbW9vdGhfc2NhbGVf
c2V0KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW0sIGJvb2wgc21vb3RoU2NhbGUp
CiB7CiAgICAgaWYgKGl0ZW0tPnNtb290aFNjYWxlID09IHNtb290aFNjYWxlKQogICAgICAgICBy
ZXR1cm47CkBAIC01MTIsMjEgKzQ3OSwxOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2NoYW5nZWQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YQogewog
ICAgIGlmIChwcml2LT5jaGFuZ2VkLmFueSkKICAgICAgICAgcmV0dXJuOworCiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2hhbmdlZChwcml2LT5zZWxmKTsKICAgICBwcml2LT5jaGFuZ2VkLmFueSA9
IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X2Nv
bHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5hX0lubGlz
dCoqIHJvd0xpc3QsIHVuc2lnbmVkIGludCBjb3VudCkKK3N0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKiBwcml2LCBFaW5hX0lubGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7
Ci0gICAgRWluYV9Jbmxpc3QqIG5leHRJdGVtOwotICAgIHVuc2lnbmVkIGludCBpOwotCiAgICAg
aWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbmV4dEl0ZW0gPSAoKnJvd0xpc3Qp
LT5sYXN0OwotCi0gICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICBFaW5hX0lu
bGlzdCogbmV4dEl0ZW0gPSAoKnJvd0xpc3QpLT5sYXN0OworICAgIGZvciAodW5zaWduZWQgbG9u
ZyBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3Rv
cmVfSXRlbSogaXRlbTsKICAgICAgICAgaXRlbSA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQo
bmV4dEl0ZW0sIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOwogICAgICAgICBuZXh0SXRl
bSA9IG5leHRJdGVtLT5wcmV2OwpAQCAtNTM1LDE2ICs0OTksMTQgQEAgc3RhdGljIHZvaWQgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfZGVsKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0QKICAgICB9CiB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHBy
aXYsIEVpbmFfSW5saXN0Kiogcm93TGlzdCwgdW5zaWduZWQgaW50IGJhc2VDb2x1bW4sIHVuc2ln
bmVkIGludCBjb3VudCkKK3N0YXRpYyBib29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3
X2NvbHNfZW5kX2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5hX0lu
bGlzdCoqIHJvd0xpc3QsIHVuc2lnbmVkIGxvbmcgYmFzZUNvbHVtbiwgdW5zaWduZWQgbG9uZyBj
b3VudCkKIHsKLSAgICB1bnNpZ25lZCBpbnQgaSwgcm93ID0gcm93TGlzdCAtIHByaXYtPnZpZXcu
aXRlbXM7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKywgYmFzZUNvbHVtbisrKSB7
Ci0gICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CisgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyByb3cgPSByb3dMaXN0IC0gcHJpdi0+dmlldy5pdGVtczsKIAotICAgICAg
ICBpdGVtID0gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fYWRkKHByaXYsIGJhc2VDb2x1
bW4sIHJvdyk7CisgICAgZm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIDwgY291bnQ7ICsraSwg
KytiYXNlQ29sdW1uKSB7CisgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0
ZW0gPSBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQocHJpdiwgYmFzZUNvbHVtbiwg
cm93KTsKICAgICAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgICAgICBDUklUSUNBTCgiZmFpbGVk
IHRvIGFkZCBjb2x1bW4gJXUgb2YgJXUgaW4gcm93ICV1LiIsIGksIGNvdW50LCByb3cpOworICAg
ICAgICAgICAgQ1JJVElDQUwoImZhaWxlZCB0byBhZGQgY29sdW1uICVsdSBvZiAlbHUgaW4gcm93
ICVsdS4iLCBpLCBjb3VudCwgcm93KTsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV92aWV3X2NvbHNfZW5kX2RlbChwcml2LCByb3dMaXN0LCBpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNTU3LDggKzUxOSw3IEBAIHN0YXRpYyBFaW5hX0Jv
b2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKEV3a19UaWxlZF9C
YWNraW5nX1N0CiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3df
ZGVsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEVpbmFfSW5saXN0KiByb3cp
CiB7CiAgICAgd2hpbGUgKHJvdykgewotICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9J
dGVtKiBpdGVtOwotICAgICAgICBpdGVtID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChyb3cs
IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOworICAgICAgICBFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9JdGVtKiBpdGVtID0gRUlOQV9JTkxJU1RfQ09OVEFJTkVSX0dFVChyb3csIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOwogICAgICAgICByb3cgPSByb3ctPm5leHQ7CiAgICAg
ICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2RlbChwcml2LCBpdGVtKTsKICAgICB9
CkBAIC01NjYsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ZpZXdfcm93X2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKgogCiBzdGF0aWMgdm9p
ZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19yb3dzX3JhbmdlX2RlbChFd2tfVGlsZWRf
QmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFaW5hX0lubGlzdCoqIHN0YXJ0LCBFaW5hX0lubGlz
dCoqIGVuZCkKIHsKLSAgICBmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHsKKyAgICBmb3Ig
KDsgc3RhcnQgPCBlbmQ7ICsrc3RhcnQpIHsKICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ZpZXdfcm93X2RlbChwcml2LCAqc3RhcnQpOwogICAgICAgICAqc3RhcnQgPSAwOwogICAg
IH0KQEAgLTU3NCwxMSArNTM1LDggQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ZpZXdfcm93c19yYW5nZV9kZWwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmUKIAogc3RhdGlj
IHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19hbGxfZGVsKEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAgRWluYV9Jbmxpc3QqKiBzdGFydDsK
LSAgICBFaW5hX0lubGlzdCoqIGVuZDsKLQotICAgIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtczsK
LSAgICBlbmQgPSBwcml2LT52aWV3Lml0ZW1zICsgcHJpdi0+dmlldy5yb3dzOworICAgIEVpbmFf
SW5saXN0Kiogc3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogZW5k
ID0gcHJpdi0+dmlldy5pdGVtcyArIHByaXYtPnZpZXcucm93czsKICAgICBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdmlld19yb3dzX3JhbmdlX2RlbChwcml2LCBzdGFydCwgZW5kKTsKIAogICAg
IGZyZWUocHJpdi0+dmlldy5pdGVtcyk7CkBAIC02MjYsNiArNTg0LDcgQEAgc3RhdGljIHZvaWQg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X21lbWJlcl9kZWwoRXZhc19PYmplY3QqIGV3
a0JhY2tpbmdTdG8KICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUs
IHByaXYpOwogICAgIGlmICghcHJpdi0+Y29udGVudHNDbGlwcGVyKQogICAgICAgICByZXR1cm47
CisKICAgICBldmFzX29iamVjdF9jbGlwX3Vuc2V0KG1lbWJlcik7CiAgICAgaWYgKCFldmFzX29i
amVjdF9jbGlwZWVzX2dldChwcml2LT5jb250ZW50c0NsaXBwZXIpKQogICAgICAgICBldmFzX29i
amVjdF9oaWRlKHByaXYtPmNvbnRlbnRzQ2xpcHBlcik7CkBAIC02MzYsNiArNTk1LDcgQEAgc3Rh
dGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X21lbWJlcl9hZGQoRXZhc19P
YmplY3QqIGV3a0JhY2tpbmdTdG8KICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNr
aW5nU3RvcmUsIHByaXYpOwogICAgIGlmICghcHJpdi0+Y29udGVudHNDbGlwcGVyKQogICAgICAg
ICByZXR1cm47CisKICAgICBldmFzX29iamVjdF9jbGlwX3NldChtZW1iZXIsIHByaXYtPmNvbnRl
bnRzQ2xpcHBlcik7CiAgICAgaWYgKHByaXYtPnZpZXcudmlzaWJsZSkKICAgICAgICAgZXZhc19v
YmplY3Rfc2hvdyhwcml2LT5jb250ZW50c0NsaXBwZXIpOwpAQCAtNjQ0LDkgKzYwNCw5IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9tZW1iZXJfYWRkKEV2YXNf
T2JqZWN0KiBld2tCYWNraW5nU3RvCiAjaWZkZWYgREVCVUdfTUVNX0xFQUtTCiBzdGF0aWMgdm9p
ZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfbWVtX2RiZyhFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9EYXRhKiBwcml2KQogewotICAgIHN0YXRpYyBpbnQgcnVuID0gMDsKKyAgICBzdGF0aWMgdW5z
aWduZWQgcnVuID0gMDsKIAotICAgIHJ1bisrOworICAgICsrcnVuOwogCiAgICAgcHJpbnRmKCJc
bi0tLSBCRUdJTiBERUJVRyBUSUxFRCBCQUNLSU5HIFNUT1JFIE1FTU9SWSBbJWRdIC0tXG4iCiAg
ICAgICAgICAgICJ0aWxlPSUwLjJmLCBvYmo9JXAsIHByaXY9JXAsIHZpZXcuaXRlbXM9JXAsIG1h
dHJpeD0lcFxuIiwKQEAgLTY1OSwzMCArNjE5LDI4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9tZW1fZGJnKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYp
CiAgICAgcHJpbnRmKCItLS0gRU5EIERFQlVHIFRJTEVEIEJBQ0tJTkcgU1RPUkUgTUVNT1JZIFsl
ZF0gLS1cblxuIiwgcnVuKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc2lnX3Vzcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCitzdGF0
aWMgYm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2lnX3Vzcih2b2lkKiBkYXRhLCBpbnQg
dHlwZSwgdm9pZCogZXZlbnQpCiB7Ci0gICAgRWNvcmVfRXZlbnRfU2lnbmFsX1VzZXIqIHNpZ25h
bFVzZXIgPSAoRWNvcmVfRXZlbnRfU2lnbmFsX1VzZXIqKWV2ZW50OwotICAgIEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0RhdGEqIHByaXYgPSAoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSop
ZGF0YTsKKyAgICBFY29yZV9FdmVudF9TaWduYWxfVXNlciogc2lnbmFsVXNlciA9IHN0YXRpY19j
YXN0PEVjb3JlX0V2ZW50X1NpZ25hbF9Vc2VyKj4oZXZlbnQpOworICAgIEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9EYXRhKj4oZGF0YSk7CiAKICAgICBpZiAoc2lnbmFsVXNlci0+bnVtYmVyID09IDIpIHsKLSAg
ICAgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7Ci0gICAgICAgIHRp
bGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1v
ZGVsLm1hdHJpeCk7CisgICAgICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENh
Y2hlID0gZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQocHJpdi0+bW9kZWwubWF0cml4
KTsKICAgICAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2F1dG9fZmx1c2godGlsZVVudXNlZENh
Y2hlKTsKICAgICB9CiAKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19kYmcocHJp
dik7CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX21lbV9kYmcocHJpdik7CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiB7Ci0gICAgRXdr
X1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdjsKLQogICAgIERCRygiZXdrQmFja2luZ1N0
b3JlPSVwIiwgZXdrQmFja2luZ1N0b3JlKTsKIAotICAgIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZigqcHJpdikpKTsKKyAg
ICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoKnByaXYpKSk7CiAgICAg
aWYgKCFwcml2KQogICAgICAgICByZXR1cm47CiAKQEAgLTczNSw5ICs2OTMsOCBAQCBzdGF0aWMg
dm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfZGVsKEV2YXNfT2JqZWN0KiBld2tC
YWNraW5nU3RvcmUpCiB7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0
b3JlLCBwcml2KTsKICAgICBEQkcoImV3a0JhY2tpbmdTdG9yZT0lcCIsIGV3a0JhY2tpbmdTdG9y
ZSk7Ci0gICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGU7CiAKLSAgICB0
aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2LT5t
b2RlbC5tYXRyaXgpOworICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hl
ID0gZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9nZXQocHJpdi0+bW9kZWwubWF0cml4KTsK
ICAgICBld2tfdGlsZV91bnVzZWRfY2FjaGVfdW5sb2NrX2FyZWEodGlsZVVudXNlZENhY2hlKTsK
IAogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9mbHVzaChwcml2KTsKQEAgLTc5OSw2ICs3
NTYsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfcmVzaXpl
KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc21hcnRfc2hvdyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQogewog
ICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdik7CisKICAg
ICBwcml2LT52aWV3LnZpc2libGUgPSB0cnVlOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3Jl
X2VuYWJsZV9yZW5kZXIoZXdrQmFja2luZ1N0b3JlKTsKICAgICBfcGFyZW50X3NjLnNob3coZXdr
QmFja2luZ1N0b3JlKTsKQEAgLTgwNyw2ICs3NjUsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc21hcnRfc2hvdyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlKQog
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3NtYXJ0X2hpZGUoRXZhc19PYmpl
Y3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tC
YWNraW5nU3RvcmUsIHByaXYpOworCiAgICAgcHJpdi0+dmlldy52aXNpYmxlID0gZmFsc2U7CiAg
ICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoZXdrQmFja2luZ1N0b3Jl
KTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9kaXNzb2NpYXRlX2FsbChwcml2
KTsKQEAgLTgxNSwyNSArNzc0LDIyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9zbWFydF9oaWRlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUpCiAKIHN0YXRpYyB2
b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVp
Z2h0LCBFdmFzX0Nvb3JkIHRpbGVXaWR0aCwgRXZhc19Db29yZCB0aWxlSGVpZ2h0KQogewotICAg
IGxvbmcgY29sdW1ucywgcm93cywgb2xkUm93cywgb2xkQ29sczsKICAgICBJTkYoImV3a0JhY2tp
bmdTdG9yZT0lcCwgbmV3IHNpemU6ICVkeCVkIiwgcHJpdi0+c2VsZiwgd2lkdGgsIGhlaWdodCk7
CiAKLSAgICBjb2x1bW5zID0gMSArIHN0YXRpY19jYXN0PGludD4oY2VpbCh3aWR0aCAvIHN0YXRp
Y19jYXN0PGZsb2F0Pih0aWxlV2lkdGgpKSk7Ci0gICAgcm93cyA9IDEgKyBzdGF0aWNfY2FzdDxp
bnQ+KGNlaWwoaGVpZ2h0IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbGVIZWlnaHQpKSk7CisgICAg
dW5zaWduZWQgbG9uZyBjb2x1bW5zID0gMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGNl
aWwod2lkdGggLyBzdGF0aWNfY2FzdDxmbG9hdD4odGlsZVdpZHRoKSkpOworICAgIHVuc2lnbmVk
IGxvbmcgcm93cyA9IDEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjZWlsKGhlaWdodCAv
IHN0YXRpY19jYXN0PGZsb2F0Pih0aWxlSGVpZ2h0KSkpOwogCi0gICAgSU5GKCJld2tCYWNraW5n
U3RvcmU9JXAgbmV3IGdyaWQgc2l6ZSBjb2x1bW5zOiAlbGQsIHJvd3M6ICVsZCwgd2FzICVsZCwg
JWxkIiwKLSAgICAgICAgcHJpdi0+c2VsZiwgY29sdW1ucywgcm93cywgcHJpdi0+dmlldy5jb2x1
bW5zLCBwcml2LT52aWV3LnJvd3MpOworICAgIElORigiZXdrQmFja2luZ1N0b3JlPSVwIG5ldyBn
cmlkIHNpemUgY29sdW1uczogJWx1LCByb3dzOiAlbHUsIHdhcyAlbHUsICVsdSIsIHByaXYtPnNl
bGYsIGNvbHVtbnMsIHJvd3MsIHByaXYtPnZpZXcuY29sdW1ucywgcHJpdi0+dmlldy5yb3dzKTsK
IAogICAgIGlmIChwcml2LT52aWV3LmNvbHVtbnMgPT0gY29sdW1ucyAmJiBwcml2LT52aWV3LnJv
d3MgPT0gcm93cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgb2xkQ29scyA9IHByaXYtPnZpZXcu
Y29sdW1uczsKLSAgICBvbGRSb3dzID0gcHJpdi0+dmlldy5yb3dzOworICAgIHVuc2lnbmVkIGxv
bmcgb2xkQ29scyA9IHByaXYtPnZpZXcuY29sdW1uczsKKyAgICB1bnNpZ25lZCBsb25nIG9sZFJv
d3MgPSBwcml2LT52aWV3LnJvd3M7CiAKICAgICBpZiAocm93cyA8IG9sZFJvd3MpIHsKLSAgICAg
ICAgRWluYV9Jbmxpc3QqKiBzdGFydCwgKiplbmQ7Ci0gICAgICAgIHN0YXJ0ID0gcHJpdi0+dmll
dy5pdGVtcyArIHJvd3M7Ci0gICAgICAgIGVuZCA9IHByaXYtPnZpZXcuaXRlbXMgKyBvbGRSb3dz
OworICAgICAgICBFaW5hX0lubGlzdCoqIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtcyArIHJvd3M7
CisgICAgICAgIEVpbmFfSW5saXN0KiogZW5kID0gcHJpdi0+dmlldy5pdGVtcyArIG9sZFJvd3M7
CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jvd3NfcmFuZ2VfZGVsKHBy
aXYsIHN0YXJ0LCBlbmQpOwogICAgIH0KIApAQCAtODQ3LDkgKzgwMyw5IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNr
aW5nX1N0b3JlX0RhCiAgICAgaWYgKHJvd3MgPiBvbGRSb3dzKSB7CiAgICAgICAgIEVpbmFfSW5s
aXN0Kiogc3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zICsgb2xkUm93czsKICAgICAgICAgRWluYV9J
bmxpc3QqKiBlbmQgPSBwcml2LT52aWV3Lml0ZW1zICsgcm93czsKLSAgICAgICAgZm9yICg7IHN0
YXJ0IDwgZW5kOyBzdGFydCsrKSB7CisgICAgICAgIGZvciAoOyBzdGFydCA8IGVuZDsgKytzdGFy
dCkgewogICAgICAgICAgICAgKnN0YXJ0ID0gMDsKLSAgICAgICAgICAgIEVpbmFfQm9vbCByZXN1
bHQgPSBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9hZGQocHJpdiwgc3Rh
cnQsIDAsIGNvbHVtbnMpOworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9hZGQocHJpdiwgc3RhcnQsIDAsIGNvbHVtbnMpOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBDUklUSUNBTCgiZmFp
bGVkIHRvIGFsbG9jYXRlICVsZCBjb2x1bW5zIiwgY29sdW1ucyk7CiAgICAgICAgICAgICAgICAg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcm93c19yYW5nZV9kZWwocHJpdiwgcHJpdi0+
dmlldy5pdGVtcyArIG9sZFJvd3MsIHN0YXJ0KTsKQEAgLTg2MCwxNiArODE2LDE2IEBAIHN0YXRp
YyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVyZXJzKEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhCiAgICAgfQogCiAgICAgaWYgKGNvbHVtbnMgIT0gb2xkQ29scykg
ewotICAgICAgICBpbnQgdG9kbyA9IGNvbHVtbnMgLSBvbGRDb2xzOworICAgICAgICBsb25nIHRv
ZG8gPSBjb2x1bW5zIC0gb2xkQ29sczsKICAgICAgICAgRWluYV9Jbmxpc3QqKiBzdGFydCA9IHBy
aXYtPnZpZXcuaXRlbXM7CiAgICAgICAgIEVpbmFfSW5saXN0KiogZW5kID0gc3RhcnQgKyBzdGQ6
Om1pbihvbGRSb3dzLCByb3dzKTsKICAgICAgICAgaWYgKHRvZG8gPiAwKSB7Ci0gICAgICAgICAg
ICBmb3IgKDsgc3RhcnQgPCBlbmQ7IHN0YXJ0KyspIHsKLSAgICAgICAgICAgICAgICBFaW5hX0Jv
b2wgcmVzdWx0ID0gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKHBy
aXYsIHN0YXJ0LCBvbGRDb2xzLCB0b2RvKTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCA8IGVu
ZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ZpZXdfY29sc19lbmRfYWRkKHByaXYsIHN0YXJ0LCBvbGRDb2xzLCB0b2Rv
KTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICBD
UklUSUNBTCgiZmFpbGVkIHRvIGFsbG9jYXRlICVkIGNvbHVtbnMhIiwgdG9kbyk7CisgICAgICAg
ICAgICAgICAgICAgIENSSVRJQ0FMKCJmYWlsZWQgdG8gYWxsb2NhdGUgJWxkIGNvbHVtbnMhIiwg
dG9kbyk7CiAKLSAgICAgICAgICAgICAgICAgICAgZm9yIChzdGFydC0tOyBzdGFydCA+PSBwcml2
LT52aWV3Lml0ZW1zOyBzdGFydC0tKQorICAgICAgICAgICAgICAgICAgICBmb3IgKHN0YXJ0LS07
IHN0YXJ0ID49IHByaXYtPnZpZXcuaXRlbXM7IC0tc3RhcnQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld19jb2xzX2VuZF9kZWwocHJpdiwgc3Rh
cnQsIHRvZG8pOwogICAgICAgICAgICAgICAgICAgICBpZiAocm93cyA+IG9sZFJvd3MpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtcyArIG9sZFJvd3M7
CkBAIC04ODIsNyArODM4LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3JlY2FsY19yZW5kZXJlcnMoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGEKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmICh0b2RvIDwgMCkgewogICAgICAgICAgICAgdG9kbyA9IC10
b2RvOwotICAgICAgICAgICAgZm9yICg7IHN0YXJ0IDwgZW5kOyBzdGFydCsrKQorICAgICAgICAg
ICAgZm9yICg7IHN0YXJ0IDwgZW5kOyArK3N0YXJ0KQogICAgICAgICAgICAgICAgIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV92aWV3X2NvbHNfZW5kX2RlbChwcml2LCBzdGFydCwgdG9kbyk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC04OTcsMTQgKzg1MywxMyBAQCBzdGF0aWMgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX3NpemUoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcgogICAgIHByaXYtPnZpZXcud2lkdGggPSB3aWR0aDsKICAgICBwcml2LT52aWV3LmhlaWdo
dCA9IGhlaWdodDsKIAotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZWNhbGNfcmVuZGVy
ZXJzKAotICAgICAgICBwcml2LCB3aWR0aCwgaGVpZ2h0LCBwcml2LT52aWV3LnRpbGUud2lkdGgs
IHByaXYtPnZpZXcudGlsZS5oZWlnaHQpOworICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9y
ZWNhbGNfcmVuZGVyZXJzKHByaXYsIHdpZHRoLCBoZWlnaHQsIHByaXYtPnZpZXcudGlsZS53aWR0
aCwgcHJpdi0+dmlldy50aWxlLmhlaWdodCk7CiB9CiAKKyNpZmRlZiBERUJVR19NRU1fTEVBS1MK
IC8vIFRPRE86IHJlbW92ZSBtZSBsYXRlci4KIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfdmlld19kYmcoY29uc3QgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0
YSogcHJpdikKIHsKLSAgICBFaW5hX0lubGlzdCoqIHN0YXJ0LCAqKmVuZDsKICAgICBwcmludGYo
InRpbGVzPSUybGQsJTJsZCAgbW9kZWw9JTJsZCwlMmxkIFslZHglZF0gYmFzZT0lKzNsZCwlKzRs
ZCBvZmZzZXQ9JSs0ZCwlKzRkIG9sZD0lKzRkLCUrNGQgYmFzZT0lKzNkLCUrM2RcbiIsCiAgICAg
ICAgICAgIHByaXYtPnZpZXcuY29sdW1ucywgcHJpdi0+dmlldy5yb3dzLAogICAgICAgICAgICBw
cml2LT5tb2RlbC5jdXJyZW50LmNvbHVtbnMsIHByaXYtPm1vZGVsLmN1cnJlbnQucm93cywKQEAg
LTkxNCw5ICs4NjksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX3ZpZXdfZGJnKGNvbnN0IEV3a19UaWxlZF9CYWNraW5nX1N0bwogICAgICAgICAgICBwcml2
LT52aWV3Lm9mZnNldC5vbGQueCwgcHJpdi0+dmlldy5vZmZzZXQub2xkLnksCiAgICAgICAgICAg
IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCwgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55KTsKIAot
ICAgIHN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBlbmQgPSBwcml2LT52aWV3Lml0ZW1z
ICsgcHJpdi0+dmlldy5yb3dzOwotICAgIGZvciAoOyBzdGFydCA8IGVuZDsgc3RhcnQrKykgewor
ICAgIEVpbmFfSW5saXN0Kiogc3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5s
aXN0KiogZW5kID0gcHJpdi0+dmlldy5pdGVtcyArIHByaXYtPnZpZXcucm93czsKKyAgICBmb3Ig
KDsgc3RhcnQgPCBlbmQ7ICsrc3RhcnQpIHsKICAgICAgICAgY29uc3QgRXdrX1RpbGVkX0JhY2tp
bmdfU3RvcmVfSXRlbSogaXRlbTsKIAogICAgICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKCpzdGFy
dCwgaXRlbSkgewpAQCAtOTMxLDYgKzg4Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdmlld19kYmcoY29uc3QgRXdrX1RpbGVkX0JhY2tpbmdfU3RvCiAg
ICAgfQogICAgIHByaW50ZigiLS0tXG4iKTsKIH0KKyNlbmRpZgogCiAvKioKICAqIEBpbnRlcm5h
bApAQCAtOTQ1LDM2ICs5MDEsMzYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X2RiZyhjb25zdCBFd2tfVGlsZWRfQmFja2luZ19TdG8KICAqCiAgKiBA
cGFyYW0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHByb2Nlc3MuCiAg
Ki8KLXN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3dyYXBfdXAoRXdr
X1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3Jk
IHksIHVuc2lnbmVkIGludCBjb3VudCkKK3N0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV92aWV3X3dyYXBfdXAoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgdW5z
aWduZWQgaW50IGxhc3RSb3cgPSBwcml2LT52aWV3LnJvd3MgLSAxOworICAgIHVuc2lnbmVkIGxv
bmcgbGFzdFJvdyA9IHByaXYtPnZpZXcucm93cyAtIDE7CiAgICAgRXZhc19Db29yZCB0aWxlV2lk
dGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CiAgICAgRXZhc19Db29yZCB0aWxlSGVpZ2h0ID0g
cHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICBFdmFzX0Nvb3JkIG9mZnNldFkgPSBwcml2LT52
aWV3Lm9mZnNldC5iYXNlLnkgKyBjb3VudCAqIHRpbGVIZWlnaHQ7CiAgICAgRXZhc19Db29yZCB0
aWxlUG9zaXRpb25ZID0geSArIChsYXN0Um93IC0gY291bnQgKyAxKSAqIHRpbGVIZWlnaHQgKyBv
ZmZzZXRZOwotICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JTdGFydCwgKippdGVyYXRvckVuZDsK
ICAgICBFdmFzX0Nvb3JkIG9yaWdpblggPSB4ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54Owog
Ci0gICAgaXRlcmF0b3JTdGFydCA9IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0b3JFbmQg
PSBpdGVyYXRvclN0YXJ0ICsgbGFzdFJvdzsKKyAgICBFaW5hX0lubGlzdCoqIHN0YXJ0ID0gcHJp
di0+dmlldy5pdGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IHN0YXJ0ICsgbGFzdFJvdzsK
IAotICAgIGZvciAoOyBjb3VudCA+IDA7IGNvdW50LS0pIHsKLSAgICAgICAgRWluYV9Jbmxpc3Qq
KiBpdGVyYXRvckxpc3Q7Ci0gICAgICAgIEVpbmFfSW5saXN0KiB0ZW1wID0gKml0ZXJhdG9yU3Rh
cnQ7Ci0gICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07Ci0gICAgICAg
IEV2YXNfQ29vcmQgdGlsZVBvc2l0aW9uWCA9IG9yaWdpblg7Ci0gICAgICAgIGludCBjb2x1bW4g
PSAwOworICAgIGZvciAoOyBjb3VudCA+IDA7IC0tY291bnQpIHsKKyAgICAgICAgRWluYV9Jbmxp
c3QqKiBpdDsKKyAgICAgICAgRWluYV9Jbmxpc3QqIHRlbXAgPSAqc3RhcnQ7CisKKyAgICAgICAg
Zm9yIChpdCA9IHN0YXJ0OyBpdCA8IGVuZDsgKytpdCkKKyAgICAgICAgICAgICppdCA9ICooaXQg
KyAxKTsKKyAgICAgICAgKml0ID0gdGVtcDsKIAotICAgICAgICBmb3IgKGl0ZXJhdG9yTGlzdCA9
IGl0ZXJhdG9yU3RhcnQ7IGl0ZXJhdG9yTGlzdCA8IGl0ZXJhdG9yRW5kOyBpdGVyYXRvckxpc3Qr
KykKLSAgICAgICAgICAgICppdGVyYXRvckxpc3QgPSAqKGl0ZXJhdG9yTGlzdCArIDEpOwotICAg
ICAgICAqaXRlcmF0b3JMaXN0ID0gdGVtcDsKKyAgICAgICAgKytwcml2LT5tb2RlbC5iYXNlLnJv
dzsKIAotICAgICAgICBwcml2LT5tb2RlbC5iYXNlLnJvdysrOworICAgICAgICBFdmFzX0Nvb3Jk
IHRpbGVQb3NpdGlvblggPSBvcmlnaW5YOworICAgICAgICB1bnNpZ25lZCBsb25nIGNvbHVtbiA9
IDA7CisgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CiAgICAgICAg
IEVJTkFfSU5MSVNUX0ZPUkVBQ0godGVtcCwgaXRlbSkgewogICAgICAgICAgICAgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92ZShpdGVtLCB0aWxlUG9zaXRpb25YLCB0aWxlUG9zaXRp
b25ZKTsKICAgICAgICAgICAgIHRpbGVQb3NpdGlvblggKz0gdGlsZVdpZHRoOwogICAgICAgICAg
ICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChwcml2LCBpdGVtLCBjb2x1bW4s
IGxhc3RSb3cpOwotICAgICAgICAgICAgY29sdW1uKys7CisgICAgICAgICAgICArK2NvbHVtbjsK
ICAgICAgICAgfQogICAgICAgICB0aWxlUG9zaXRpb25ZICs9IHRpbGVIZWlnaHQ7CiAgICAgfQpA
QCAtOTk0LDM1ICs5NTAsMzUgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ZpZXdfd3JhcF91cChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKgogICoKICAqIEBwYXJh
bSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJvY2Vzcy4KICAqLwot
c3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9kb3duKEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5
LCB1bnNpZ25lZCBpbnQgY291bnQpCitzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlld193cmFwX2Rvd24oRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZh
c19Db29yZCB4LCBFdmFzX0Nvb3JkIHksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7CiAgICAgRXZh
c19Db29yZCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CiAgICAgRXZhc19Db29y
ZCB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICBFdmFzX0Nvb3JkIG9m
ZnNldFkgPSBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgLSBjb3VudCAqIHRpbGVIZWlnaHQ7CiAg
ICAgRXZhc19Db29yZCB0aWxlUG9zaXRpb25ZID0geSArIG9mZnNldFkgKyAoY291bnQgLSAxKSAq
IHRpbGVIZWlnaHQ7Ci0gICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvclN0YXJ0LCAqKml0ZXJhdG9y
RW5kOwogICAgIEV2YXNfQ29vcmQgb3JpZ2luWCA9IHggKyBwcml2LT52aWV3Lm9mZnNldC5iYXNl
Lng7CiAKLSAgICBpdGVyYXRvclN0YXJ0ID0gcHJpdi0+dmlldy5pdGVtcyArIHByaXYtPnZpZXcu
cm93cyAtIDE7Ci0gICAgaXRlcmF0b3JFbmQgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFf
SW5saXN0Kiogc3RhcnQgPSBwcml2LT52aWV3Lml0ZW1zICsgcHJpdi0+dmlldy5yb3dzIC0gMTsK
KyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IHByaXYtPnZpZXcuaXRlbXM7CiAKLSAgICBmb3IgKDsg
Y291bnQgPiAwOyBjb3VudC0tKSB7Ci0gICAgICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3JMaXN0
OwotICAgICAgICBFaW5hX0lubGlzdCogdGVtcCA9ICppdGVyYXRvclN0YXJ0OwotICAgICAgICBF
d2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOworICAgIGZvciAoOyBjb3VudCA+IDA7
IC0tY291bnQpIHsKKyAgICAgICAgRWluYV9Jbmxpc3QqKiBpdDsKKyAgICAgICAgRWluYV9Jbmxp
c3QqIHRlbXAgPSAqc3RhcnQ7CiAgICAgICAgIEV2YXNfQ29vcmQgdGlsZVBvc2l0aW9uWCA9IG9y
aWdpblg7Ci0gICAgICAgIGludCBjb2x1bW4gPSAwOwogCi0gICAgICAgIGZvciAoaXRlcmF0b3JM
aXN0ID0gaXRlcmF0b3JTdGFydDsgaXRlcmF0b3JMaXN0ID4gaXRlcmF0b3JFbmQ7IGl0ZXJhdG9y
TGlzdC0tKQotICAgICAgICAgICAgKml0ZXJhdG9yTGlzdCA9ICooaXRlcmF0b3JMaXN0IC0gMSk7
Ci0gICAgICAgICppdGVyYXRvckxpc3QgPSB0ZW1wOworICAgICAgICBmb3IgKGl0ID0gc3RhcnQ7
IGl0ID4gZW5kOyAtLWl0KQorICAgICAgICAgICAgKml0ID0gKihpdCAtIDEpOworICAgICAgICAq
aXQgPSB0ZW1wOworCisgICAgICAgIC0tcHJpdi0+bW9kZWwuYmFzZS5yb3c7CiAKLSAgICAgICAg
cHJpdi0+bW9kZWwuYmFzZS5yb3ctLTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjb2x1bW4gPSAw
OworICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAgICAgICBF
SU5BX0lOTElTVF9GT1JFQUNIKHRlbXAsIGl0ZW0pIHsKICAgICAgICAgICAgIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9u
WSk7CiAgICAgICAgICAgICB0aWxlUG9zaXRpb25YICs9IHRpbGVXaWR0aDsKICAgICAgICAgICAg
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwocHJpdiwgaXRlbSwgY29sdW1uLCAw
KTsKLSAgICAgICAgICAgIGNvbHVtbisrOworICAgICAgICAgICAgKytjb2x1bW47CiAgICAgICAg
IH0KICAgICAgICAgdGlsZVBvc2l0aW9uWSAtPSB0aWxlSGVpZ2h0OwogICAgIH0KQEAgLTEwNDIs
MzUgKzk5OCwzMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193
cmFwX2Rvd24oRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YQogICoKICAqIEBwYXJhbSBjb3Vu
dCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJvY2Vzcy4KICAqLwotc3RhdGlj
IHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9sZWZ0KEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCB1bnNp
Z25lZCBpbnQgY291bnQpCitzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmll
d193cmFwX2xlZnQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZhc19Db29y
ZCB4LCBFdmFzX0Nvb3JkIHksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgdW5zaWduZWQg
aW50IHJvdywgbGFzdENvbHVtbiA9IHByaXYtPnZpZXcuY29sdW1ucyAtIDE7CisgICAgdW5zaWdu
ZWQgbG9uZyBsYXN0Q29sdW1uID0gcHJpdi0+dmlldy5jb2x1bW5zIC0gMTsKICAgICBFdmFzX0Nv
b3JkIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKICAgICBFdmFzX0Nvb3JkIHRp
bGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OwogICAgIEV2YXNfQ29vcmQgb2Zmc2V0
WCA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCArIGNvdW50ICogdGlsZVdpZHRoOwogICAgIEV2
YXNfQ29vcmQgb2Zmc2V0WSA9IHkgKyBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnk7Ci0gICAgRWlu
YV9Jbmxpc3QqKiBpdGVyYXRvcjsKLSAgICBFaW5hX0lubGlzdCoqIGl0ZXJhdG9yRW5kOwotICAg
IHVuc2lnbmVkIGludCBiYXNlQ29sdW1uID0gbGFzdENvbHVtbiAtIGNvdW50ICsgMTsKKworICAg
IHVuc2lnbmVkIGxvbmcgYmFzZUNvbHVtbiA9IGxhc3RDb2x1bW4gLSBjb3VudCArIDE7CiAgICAg
RXZhc19Db29yZCBvcmlnaW5YID0geCArIGJhc2VDb2x1bW4gKiB0aWxlV2lkdGggKyBvZmZzZXRY
OwogCi0gICAgaXRlcmF0b3IgPSBwcml2LT52aWV3Lml0ZW1zOwotICAgIGl0ZXJhdG9yRW5kID0g
aXRlcmF0b3IgKyBwcml2LT52aWV3LnJvd3M7Ci0gICAgcm93ID0gMDsKKyAgICBFaW5hX0lubGlz
dCoqIGl0ID0gcHJpdi0+dmlldy5pdGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IGl0ICsg
cHJpdi0+dmlldy5yb3dzOwogCiAgICAgcHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gKz0gY291bnQ7
CiAKLSAgICBmb3IgKDsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgaXRlcmF0b3IrKywgcm93Kysp
IHsKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcm93ID0gMDsgaXQgPCBlbmQ7ICsraXQsICsrcm93
KSB7CiAgICAgICAgIEV2YXNfQ29vcmQgdGlsZVBvc2l0aW9uWCA9IG9yaWdpblg7Ci0gICAgICAg
IHVuc2lnbmVkIGludCBjb2x1bW4gPSBiYXNlQ29sdW1uOworICAgICAgICB1bnNpZ25lZCBsb25n
IGNvbHVtbiA9IGJhc2VDb2x1bW47CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrLCBjb2x1bW4rKywgdGlsZVBvc2l0aW9uWCArPSB0aWxlV2lkdGgpIHsK
LSAgICAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0OwotICAgICAgICAg
ICAgaXQgPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKCppdGVyYXRvciwgRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSk7Ci0gICAgICAgICAgICAqaXRlcmF0b3IgPSBlaW5hX2lubGlzdF9k
ZW1vdGUoKml0ZXJhdG9yLCAqaXRlcmF0b3IpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvbmcg
aSA9IDA7IGkgPCBjb3VudDsgKytpLCArK2NvbHVtbiwgdGlsZVBvc2l0aW9uWCArPSB0aWxlV2lk
dGgpIHsKKyAgICAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW0gPSBF
SU5BX0lOTElTVF9DT05UQUlORVJfR0VUKCppdCwgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRl
bSk7CisgICAgICAgICAgICAqaXQgPSBlaW5hX2lubGlzdF9kZW1vdGUoKml0LCAqaXQpOwogCi0g
ICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9tb3ZlKGl0LCB0aWxlUG9z
aXRpb25YLCBvZmZzZXRZKTsKLSAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX2ZpbGwocHJpdiwgaXQsIGNvbHVtbiwgcm93KTsKKyAgICAgICAgICAgIF9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0aW9uWCwgb2Zmc2V0WSk7Cisg
ICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKHByaXYsIGl0ZW0s
IGNvbHVtbiwgcm93KTsKICAgICAgICAgfQogICAgICAgICBvZmZzZXRZICs9IHRpbGVIZWlnaHQ7
CiAgICAgfQpAQCAtMTA5MSwzMSArMTA0NCwyOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfdmlld193cmFwX2xlZnQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YQog
ICoKICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJv
Y2Vzcy4KICAqLwotc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3Jh
cF9yaWdodChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgs
IEV2YXNfQ29vcmQgeSwgdW5zaWduZWQgaW50IGNvdW50KQorc3RhdGljIHZvaWQgX2V3a190aWxl
ZF9iYWNraW5nX3N0b3JlX3ZpZXdfd3JhcF9yaWdodChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgdW5zaWduZWQgbG9uZyBjb3Vu
dCkKIHsKLSAgICB1bnNpZ25lZCBpbnQgcm93OwogICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoID0g
cHJpdi0+dmlldy50aWxlLndpZHRoOwogICAgIEV2YXNfQ29vcmQgdGlsZUhlaWdodCA9IHByaXYt
PnZpZXcudGlsZS5oZWlnaHQ7CiAgICAgRXZhc19Db29yZCBvZmZzZXRYID0gcHJpdi0+dmlldy5v
ZmZzZXQuYmFzZS54IC0gY291bnQgKiB0aWxlV2lkdGg7CiAgICAgRXZhc19Db29yZCB0aWxlUG9z
aXRpb25ZID0geSArIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueTsKLSAgICBFaW5hX0lubGlzdCoq
IGl0ZXJhdG9yLCAqKiBpdGVyYXRvckVuZDsKLSAgICB1bnNpZ25lZCBpbnQgYmFzZUNvbHVtbiA9
IGNvdW50IC0gMTsKKworICAgIHVuc2lnbmVkIGxvbmcgYmFzZUNvbHVtbiA9IGNvdW50IC0gMTsK
ICAgICBFdmFzX0Nvb3JkIG9yaWdpblggPSB4ICsgYmFzZUNvbHVtbiAqIHRpbGVXaWR0aCArIG9m
ZnNldFg7CiAKLSAgICBpdGVyYXRvciA9IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0b3JF
bmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93czsKLSAgICByb3cgPSAwOworICAgIEVpbmFf
SW5saXN0KiogaXQgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0KiogZW5kID0g
aXQgKyBwcml2LT52aWV3LnJvd3M7CiAKICAgICBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiAtPSBj
b3VudDsKIAotICAgIGZvciAoOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyBpdGVyYXRvcisrLCBy
b3crKykgeworICAgIGZvciAodW5zaWduZWQgbG9uZyByb3cgPSAwOyBpdCA8IGVuZDsgKytpdCwg
Kytyb3cpIHsKICAgICAgICAgRXZhc19Db29yZCB0aWxlUG9zaXRpb25YID0gb3JpZ2luWDsKLSAg
ICAgICAgdW5zaWduZWQgaW50IGNvbHVtbiA9IGJhc2VDb2x1bW47CisgICAgICAgIHVuc2lnbmVk
IGxvbmcgY29sdW1uID0gYmFzZUNvbHVtbjsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGNvdW50OyBpKyssIGNvbHVtbi0tLCB0aWxlUG9zaXRpb25YIC09IHRpbGVXaWR0
aCkgewotICAgICAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKLSAg
ICAgICAgICAgIGl0ZW0gPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKCgqaXRlcmF0b3IpLT5s
YXN0LCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKTsKLSAgICAgICAgICAgICppdGVyYXRv
ciA9IGVpbmFfaW5saXN0X3Byb21vdGUoKml0ZXJhdG9yLCAoKml0ZXJhdG9yKS0+bGFzdCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IGNvdW50OyArK2ksIC0tY29sdW1u
LCB0aWxlUG9zaXRpb25YIC09IHRpbGVXaWR0aCkgeworICAgICAgICAgICAgRXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSogaXRlbSA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQoKCppdCkt
Pmxhc3QsIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0pOworICAgICAgICAgICAgKml0ID0g
ZWluYV9pbmxpc3RfcHJvbW90ZSgqaXQsICgqaXQpLT5sYXN0KTsKIAogICAgICAgICAgICAgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92ZShpdGVtLCB0aWxlUG9zaXRpb25YLCB0aWxl
UG9zaXRpb25ZKTsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2Zp
bGwocHJpdiwgaXRlbSwgY29sdW1uLCByb3cpOwpAQCAtMTEyOCwzMyArMTA3OCwyOCBAQCBzdGF0
aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdmlld193cmFwX3JpZ2h0KEV3a19UaWxl
ZF9CYWNraW5nX1N0b3JlX0RhdAogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdmlld19yZWZpbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIGludCBzdGVwWCwgaW50IHN0ZXBZKQogewotICAgIEVpbmFf
SW5saXN0KiogaXRlcmF0b3IsICoqaXRlcmF0b3JFbmQ7Ci0gICAgRXZhc19Db29yZCBiYXNlVGls
ZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9uWSwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0OwotICAgIHVu
c2lnbmVkIGludCByb3c7Ci0KICAgICBldmFzX29iamVjdF9tb3ZlKHByaXYtPmJhc2UuY2xpcHBl
ciwgeCwgeSk7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0gICAg
dGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CisgICAgRXZhc19Db29yZCB0aWxl
V2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxlSGVpZ2h0
ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKIAotICAgIGJhc2VUaWxlUG9zaXRpb25YID0geCAr
IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueDsKLSAgICB0aWxlUG9zaXRpb25ZID0geSArIHByaXYt
PnZpZXcub2Zmc2V0LmJhc2UueTsKKyAgICBFdmFzX0Nvb3JkIGJhc2VUaWxlUG9zaXRpb25YID0g
eCArIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlv
blkgPSB5ICsgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55OwogCi0gICAgaXRlcmF0b3IgPSBwcml2
LT52aWV3Lml0ZW1zOwotICAgIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJv
d3M7Ci0gICAgcm93ID0gMDsKKyAgICBFaW5hX0lubGlzdCoqIGl0ID0gcHJpdi0+dmlldy5pdGVt
czsKKyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IGl0ICsgcHJpdi0+dmlldy5yb3dzOwogCiAgICAg
cHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gLT0gc3RlcFg7CiAgICAgcHJpdi0+bW9kZWwuYmFzZS5y
b3cgLT0gc3RlcFk7CiAKLSAgICBmb3IgKDsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgaXRlcmF0
b3IrKywgcm93KyspIHsKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcm93ID0gMDsgaXQgPCBlbmQ7
ICsraXQsICsrcm93KSB7CiAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0
ZW07CiAgICAgICAgIEV2YXNfQ29vcmQgbmV3VGlsZVBvc2l0aW9uWCA9IGJhc2VUaWxlUG9zaXRp
b25YOwotICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uID0gMDsKLSAgICAgICAgRUlOQV9JTkxJ
U1RfRk9SRUFDSCgqaXRlcmF0b3IsIGl0ZW0pIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjb2x1
bW4gPSAwOworICAgICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKCppdCwgaXRlbSkgewogICAgICAg
ICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZmlsbChwcml2LCBpdGVtLCBjb2x1
bW4sIHJvdyk7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9tb3Zl
KGl0ZW0sIG5ld1RpbGVQb3NpdGlvblgsIHRpbGVQb3NpdGlvblkpOwotICAgICAgICAgICAgY29s
dW1uKys7CisgICAgICAgICAgICArK2NvbHVtbjsKICAgICAgICAgICAgIG5ld1RpbGVQb3NpdGlv
blggKz0gdGlsZVdpZHRoOwogICAgICAgICB9CiAgICAgICAgIHRpbGVQb3NpdGlvblkgKz0gdGls
ZUhlaWdodDsKQEAgLTExNjMsMjMgKzExMDgsMjAgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3ZpZXdfcmVmaWxsKEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHAK
IAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcG9zX2FwcGx5KEV3
a19UaWxlZF9CYWNraW5nX1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29y
ZCB5KQogewotICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3IsICoqaXRlcmF0b3JFbmQ7Ci0gICAg
RXZhc19Db29yZCBiYXNlVGlsZVBvc2l0aW9uWCwgYmFzZVRpbGVQb3NpdGlvblksIHRpbGVXaWR0
aCwgdGlsZUhlaWdodDsKLQogICAgIGV2YXNfb2JqZWN0X21vdmUocHJpdi0+YmFzZS5jbGlwcGVy
LCB4LCB5KTsKIAotICAgIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKLSAgICB0
aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVX
aWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsKKyAgICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQg
PSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OwogCi0gICAgYmFzZVRpbGVQb3NpdGlvblggPSB4ICsg
cHJpdi0+dmlldy5vZmZzZXQuYmFzZS54OwotICAgIGJhc2VUaWxlUG9zaXRpb25ZID0geSArIHBy
aXYtPnZpZXcub2Zmc2V0LmJhc2UueTsKKyAgICBFdmFzX0Nvb3JkIGJhc2VUaWxlUG9zaXRpb25Y
ID0geCArIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueDsKKyAgICBFdmFzX0Nvb3JkIGJhc2VUaWxl
UG9zaXRpb25ZID0geSArIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueTsKIAotICAgIGl0ZXJhdG9y
ID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBpdGVyYXRvckVuZCA9IGl0ZXJhdG9yICsgcHJpdi0+
dmlldy5yb3dzOwotICAgIGZvciAoOyBpdGVyYXRvciA8IGl0ZXJhdG9yRW5kOyBpdGVyYXRvcisr
KSB7CisgICAgRWluYV9Jbmxpc3QqKiBpdCA9IHByaXYtPnZpZXcuaXRlbXM7CisgICAgRWluYV9J
bmxpc3QqKiBlbmQgPSBpdCArIHByaXYtPnZpZXcucm93czsKKyAgICBmb3IgKDsgaXQgPCBlbmQ7
ICsraXQpIHsKICAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKICAg
ICAgICAgRXZhc19Db29yZCBvZmZzZXRYID0gYmFzZVRpbGVQb3NpdGlvblg7Ci0gICAgICAgIEVJ
TkFfSU5MSVNUX0ZPUkVBQ0goKml0ZXJhdG9yLCBpdGVtKSB7CisgICAgICAgIEVJTkFfSU5MSVNU
X0ZPUkVBQ0goKml0LCBpdGVtKSB7CiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9tb3ZlKGl0ZW0sIG9mZnNldFgsIGJhc2VUaWxlUG9zaXRpb25ZKTsKICAgICAgICAg
ICAgIG9mZnNldFggKz0gdGlsZVdpZHRoOwogICAgICAgICB9CkBAIC0xMTkxLDcyICsxMTMzLDU5
IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9jYWxjdWxhdGVf
b2Zmc2V0X2ZvcmNlKEV3a19UaWxlZF9CYWNrCiB7CiAgICAgRXZhc19Db29yZCBkZWx0YVggPSBw
cml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggLSBwcml2LT52aWV3Lm9mZnNldC5vbGQueDsKICAg
ICBFdmFzX0Nvb3JkIGRlbHRhWSA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSAtIHByaXYt
PnZpZXcub2Zmc2V0Lm9sZC55OwotICAgIEV2YXNfQ29vcmQgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0
OwotICAgIGludCBzdGVwWSwgc3RlcFg7CiAKICAgICBJTkYoImV3a0JhY2tpbmdTdG9yZT0lcCwg
b2Zmc2V0OiAlKzRkLCAlKzRkICglKzRkLCAlKzRkKSIsCiAgICAgICAgIHByaXYtPnNlbGYsIGRl
bHRhWCwgZGVsdGFZLCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LngsIHByaXYtPnZpZXcub2Zm
c2V0LmN1cnJlbnQueSk7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7
Ci0gICAgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CisgICAgRXZhc19Db29y
ZCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxl
SGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKIAotICAgIGxvbmcgbmV3Q29sdW1uID0g
LXByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCAvIHRpbGVXaWR0aDsKLSAgICBzdGVwWCA9IHBy
aXYtPm1vZGVsLmJhc2UuY29sdW1uIC0gbmV3Q29sdW1uOwotICAgIGxvbmcgbmV3Um93ID0gLXBy
aXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSAvIHRpbGVIZWlnaHQ7Ci0gICAgc3RlcFkgPSBwcml2
LT5tb2RlbC5iYXNlLnJvdyAtIG5ld1JvdzsKKyAgICB1bnNpZ25lZCBsb25nIG5ld0NvbHVtbiA9
IC1wcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggLyB0aWxlV2lkdGg7CisgICAgaW50IHN0ZXBY
ID0gcHJpdi0+bW9kZWwuYmFzZS5jb2x1bW4gLSBuZXdDb2x1bW47CisgICAgdW5zaWduZWQgbG9u
ZyBuZXdSb3cgPSAtcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55IC8gdGlsZUhlaWdodDsKKyAg
ICBpbnQgc3RlcFkgPSBwcml2LT5tb2RlbC5iYXNlLnJvdyAtIG5ld1JvdzsKIAogICAgIHByaXYt
PnZpZXcub2Zmc2V0Lm9sZC54ID0gcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54OwogICAgIHBy
aXYtPnZpZXcub2Zmc2V0Lm9sZC55ID0gcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55OwotICAg
IGV2YXNfb2JqZWN0X21vdmUoCi0gICAgICAgIHByaXYtPmNvbnRlbnRzQ2xpcHBlciwKLSAgICAg
ICAgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54ICsgcHJpdi0+dmlldy54LAotICAgICAgICBw
cml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnkgKyBwcml2LT52aWV3LnkpOworICAgIGV2YXNfb2Jq
ZWN0X21vdmUocHJpdi0+Y29udGVudHNDbGlwcGVyLCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50
LnggKyBwcml2LT52aWV3LngsIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSArIHByaXYtPnZp
ZXcueSk7CiAKICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnggKz0gZGVsdGFYIC0gc3RlcFgg
KiB0aWxlV2lkdGg7CiAgICAgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ICs9IGRlbHRhWSAtIHN0
ZXBZICogdGlsZUhlaWdodDsKIAotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV92aWV3X3Jl
ZmlsbAotICAgICAgICAocHJpdiwgcHJpdi0+dmlldy54LCBwcml2LT52aWV3LnksIHN0ZXBYLCBz
dGVwWSk7CisgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcmVmaWxsKHByaXYsIHBy
aXYtPnZpZXcueCwgcHJpdi0+dmlldy55LCBzdGVwWCwgc3RlcFkpOwogfQogCiBzdGF0aWMgdm9p
ZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlX29mZnNldChFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkK
IHsKICAgICBFdmFzX0Nvb3JkIGRlbHRhWCA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCAt
IHByaXYtPnZpZXcub2Zmc2V0Lm9sZC54OwogICAgIEV2YXNfQ29vcmQgZGVsdGFZID0gcHJpdi0+
dmlldy5vZmZzZXQuY3VycmVudC55IC0gcHJpdi0+dmlldy5vZmZzZXQub2xkLnk7Ci0gICAgRXZh
c19Db29yZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0gICAgaW50IHN0ZXBZLCBzdGVwWDsKIAot
ICAgIElORigiZXdrQmFja2luZ1N0b3JlPSVwLCBvZmZzZXQ6ICUrNGQsICUrNGQgKCUrNGQsICUr
NGQpIiwKLSAgICAgICAgcHJpdi0+c2VsZiwgZGVsdGFYLCBkZWx0YVksIHByaXYtPnZpZXcub2Zm
c2V0LmN1cnJlbnQueCwgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55KTsKKyAgICBJTkYoImV3
a0JhY2tpbmdTdG9yZT0lcCwgb2Zmc2V0OiAlKzRkLCAlKzRkICglKzRkLCAlKzRkKSIsIHByaXYt
PnNlbGYsIGRlbHRhWCwgZGVsdGFZLCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LngsIHByaXYt
PnZpZXcub2Zmc2V0LmN1cnJlbnQueSk7CiAKICAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7
Ci0gICAgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CisgICAgRXZhc19Db29y
ZCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxl
SGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKIAogICAgIGxvbmcgbmV3Q29sID0gLXBy
aXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCAvIHRpbGVXaWR0aDsKLSAgICBzdGVwWCA9IHByaXYt
Pm1vZGVsLmJhc2UuY29sdW1uIC0gbmV3Q29sOworICAgIGxvbmcgc3RlcFggPSBwcml2LT5tb2Rl
bC5iYXNlLmNvbHVtbiAtIG5ld0NvbDsKICAgICBsb25nIG5ld1JvdyA9IC1wcml2LT52aWV3Lm9m
ZnNldC5jdXJyZW50LnkgLyB0aWxlSGVpZ2h0OwotICAgIHN0ZXBZID0gcHJpdi0+bW9kZWwuYmFz
ZS5yb3cgLSBuZXdSb3c7CisgICAgbG9uZyBzdGVwWSA9IHByaXYtPm1vZGVsLmJhc2Uucm93IC0g
bmV3Um93OwogCiAgICAgcHJpdi0+dmlldy5vZmZzZXQub2xkLnggPSBwcml2LT52aWV3Lm9mZnNl
dC5jdXJyZW50Lng7CiAgICAgcHJpdi0+dmlldy5vZmZzZXQub2xkLnkgPSBwcml2LT52aWV3Lm9m
ZnNldC5jdXJyZW50Lnk7Ci0gICAgZXZhc19vYmplY3RfbW92ZSgKLSAgICAgICAgcHJpdi0+Y29u
dGVudHNDbGlwcGVyLAotICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50LnggKyBwcml2
LT52aWV3LngsCi0gICAgICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSArIHByaXYtPnZp
ZXcueSk7CisgICAgZXZhc19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIHByaXYt
PnZpZXcub2Zmc2V0LmN1cnJlbnQueCArIHByaXYtPnZpZXcueCwgcHJpdi0+dmlldy5vZmZzZXQu
Y3VycmVudC55ICsgcHJpdi0+dmlldy55KTsKIAotICAgIGlmICgoc3RlcFggPCAwICYmIHN0ZXBY
IDw9IC1wcml2LT52aWV3LmNvbHVtbnMpCi0gICAgICAgIHx8IChzdGVwWCA+IDAgJiYgc3RlcFgg
Pj0gcHJpdi0+dmlldy5jb2x1bW5zKQotICAgICAgICB8fCAoc3RlcFkgPCAwICYmIHN0ZXBZIDw9
IC1wcml2LT52aWV3LnJvd3MpCi0gICAgICAgIHx8IChzdGVwWSA+IDAgJiYgc3RlcFkgPj0gcHJp
di0+dmlldy5yb3dzKSkgeworICAgIGlmICgoc3RlcFggPCAwICYmIHN0ZXBYIDw9IC1zdGF0aWNf
Y2FzdDxsb25nPihwcml2LT52aWV3LmNvbHVtbnMpKQorICAgICAgICB8fCAoc3RlcFggPiAwICYm
IHN0ZXBYID49IHN0YXRpY19jYXN0PGxvbmc+KHByaXYtPnZpZXcuY29sdW1ucykpCisgICAgICAg
IHx8IChzdGVwWSA8IDAgJiYgc3RlcFkgPD0gLXN0YXRpY19jYXN0PGxvbmc+KHByaXYtPnZpZXcu
cm93cykpCisgICAgICAgIHx8IChzdGVwWSA+IDAgJiYgc3RlcFkgPj0gc3RhdGljX2Nhc3Q8bG9u
Zz4ocHJpdi0+dmlldy5yb3dzKSkpIHsKIAogICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5iYXNl
LnggKz0gZGVsdGFYIC0gc3RlcFggKiB0aWxlV2lkdGg7CiAgICAgICAgIHByaXYtPnZpZXcub2Zm
c2V0LmJhc2UueSArPSBkZWx0YVkgLSBzdGVwWSAqIHRpbGVIZWlnaHQ7CiAKLSAgICAgICAgX2V3
a190aWxlZF9iYWNraW5nX3N0b3JlX3ZpZXdfcmVmaWxsCi0gICAgICAgICAgICAocHJpdiwgcHJp
di0+dmlldy54LCBwcml2LT52aWV3LnksIHN0ZXBYLCBzdGVwWSk7CisgICAgICAgIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV92aWV3X3JlZmlsbChwcml2LCBwcml2LT52aWV3LngsIHByaXYtPnZp
ZXcueSwgc3RlcFgsIHN0ZXBZKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI4MSwy
MSArMTIxMCwxNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRf
Y2FsY3VsYXRlX3BvcyhFd2tfVGlsZWRfQmFja2luZ19TdG9yZQogICAgIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV92aWV3X3Bvc19hcHBseShwcml2LCB4LCB5KTsKICAgICBwcml2LT52aWV3Lngg
PSB4OwogICAgIHByaXYtPnZpZXcueSA9IHk7Ci0gICAgZXZhc19vYmplY3RfbW92ZSgKLSAgICAg
ICAgcHJpdi0+Y29udGVudHNDbGlwcGVyLAotICAgICAgICBwcml2LT52aWV3Lm9mZnNldC5jdXJy
ZW50LnggKyBwcml2LT52aWV3LngsCi0gICAgICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQu
eSArIHByaXYtPnZpZXcueSk7CisgICAgZXZhc19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0Ns
aXBwZXIsIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCArIHByaXYtPnZpZXcueCwgcHJpdi0+
dmlldy5vZmZzZXQuY3VycmVudC55ICsgcHJpdi0+dmlldy55KTsKIH0KIAogc3RhdGljIHZvaWQg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZpbGxfcmVuZGVyZXJzKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0RhdGEqIHByaXYpCiB7Ci0gICAgRWluYV9Jbmxpc3QqIGxpc3Q7Ci0gICAgRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKLSAgICBpbnQgaSwgajsKKyAgICBmb3IgKHVu
c2lnbmVkIGxvbmcgaSA9IDA7IGkgPCBwcml2LT52aWV3LnJvd3M7ICsraSkgeworICAgICAgICBF
aW5hX0lubGlzdCogbGlzdCA9IHByaXYtPnZpZXcuaXRlbXNbaV07CiAKLSAgICBmb3IgKGkgPSAw
OyBpIDwgcHJpdi0+dmlldy5yb3dzOyBpKyspIHsKLSAgICAgICAgbGlzdCA9IHByaXYtPnZpZXcu
aXRlbXNbaV07Ci0gICAgICAgIGogPSAwOworICAgICAgICB1bnNpZ25lZCBsb25nIGogPSAwOwor
ICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAgICAgICBFSU5B
X0lOTElTVF9GT1JFQUNIKGxpc3QsIGl0ZW0pCiAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9maWxsKHByaXYsIGl0ZW0sIGorKywgaSk7CiAgICAgfQpAQCAtMTMxOCwx
MCArMTI0Miw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zbWFydF9j
YWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yCiAgICAgICAgIGV3a190aWxlX21h
dHJpeF9pbnZhbGlkYXRlKHByaXYtPm1vZGVsLm1hdHJpeCk7CiAKICAgICBpZiAoIXByaXYtPnJl
bmRlci5zdXNwZW5kICYmIChwcml2LT5jaGFuZ2VkLm1vZGVsIHx8IHByaXYtPmNoYW5nZWQuY29u
dGVudHNTaXplKSkgewotICAgICAgICB1bnNpZ25lZCBsb25nIGNvbHVtbnMsIHJvd3M7Ci0KLSAg
ICAgICAgY29sdW1ucyA9IHByaXYtPm1vZGVsLndpZHRoIC8gcHJpdi0+dmlldy50aWxlLndpZHRo
ICsgMTsKLSAgICAgICAgcm93cyA9IHByaXYtPm1vZGVsLmhlaWdodCAvIHByaXYtPnZpZXcudGls
ZS5oZWlnaHQgKyAxOworICAgICAgICB1bnNpZ25lZCBsb25nIGNvbHVtbnMgPSBwcml2LT5tb2Rl
bC53aWR0aCAvIHByaXYtPnZpZXcudGlsZS53aWR0aCArIDE7CisgICAgICAgIHVuc2lnbmVkIGxv
bmcgcm93cyA9IHByaXYtPm1vZGVsLmhlaWdodCAvIHByaXYtPnZpZXcudGlsZS5oZWlnaHQgKyAx
OwogCiAgICAgICAgIHByaXYtPm1vZGVsLm9sZC5jb2x1bW5zID0gcHJpdi0+bW9kZWwuY3VycmVu
dC5jb2x1bW5zOwogICAgICAgICBwcml2LT5tb2RlbC5vbGQucm93cyA9IHByaXYtPm1vZGVsLmN1
cnJlbnQucm93czsKQEAgLTEzNTksMTAgKzEyODEsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3Rv
cgogCiAgICAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBkbyBub3QgbWlzcyBhbnkgaW1wb3J0YW50IHJl
cGFpbnQgYnkKICAgICAgICAgICogcmVwYWludGluZyB0aGUgd2hvbGUgdmlld3BvcnQgKi8KLSAg
ICAgICAgY29uc3QgRWluYV9SZWN0YW5nbGUgcmVjdCA9Ci0gICAgICAgIHsgMCwgMCwgcHJpdi0+
bW9kZWwud2lkdGgsIHByaXYtPm1vZGVsLmhlaWdodCB9OwotICAgICAgICBld2tfdGlsZV9tYXRy
aXhfdXBkYXRlKHByaXYtPm1vZGVsLm1hdHJpeCwgJnJlY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpdi0+dmlldy50aWxlLnpvb20pOworICAgICAgICBjb25zdCBFaW5hX1Jl
Y3RhbmdsZSByZWN0ID0geyAwLCAwLCBwcml2LT5tb2RlbC53aWR0aCwgcHJpdi0+bW9kZWwuaGVp
Z2h0IH07CisgICAgICAgIGV3a190aWxlX21hdHJpeF91cGRhdGUocHJpdi0+bW9kZWwubWF0cml4
LCAmcmVjdCwgcHJpdi0+dmlldy50aWxlLnpvb20pOwogCiAgICAgICAgIHByaXYtPmNoYW5nZWQu
Y29udGVudHNTaXplID0gZmFsc2U7CiAgICAgfQpAQCAtMTM3NCwxMiArMTI5NCwxMiBAQCBzdGF0
aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2Jq
ZWN0KiBld2tCYWNraW5nU3RvcgogICAgIGlmIChwcml2LT52aWV3Lm9mZnNldC5iYXNlLnggPiAw
CiAgICAgICAgIHx8IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueCA8PSAtIHByaXYtPnZpZXcudGls
ZS53aWR0aAogICAgICAgICB8fCBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgPiAwCi0gICAgICAg
IHx8IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSA8PSAtIHByaXYtPnZpZXcudGlsZS5oZWlnaHQp
CisgICAgICAgIHx8IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueSA8PSAtIHByaXYtPnZpZXcudGls
ZS5oZWlnaHQpIHsKICAgICAgICAgRVJSKCJpbmNvcnJlY3QgYmFzZSBvZmZzZXQgJSs0ZCwlKzRk
LCB0aWxlPSVkeCVkLCBjdXJyZW50PSUrNGQsJSs0ZFxuIiwKICAgICAgICAgICAgIHByaXYtPnZp
ZXcub2Zmc2V0LmJhc2UueCwgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55LAogICAgICAgICAgICAg
cHJpdi0+dmlldy50aWxlLndpZHRoLCBwcml2LT52aWV3LnRpbGUuaGVpZ2h0LAogICAgICAgICAg
ICAgcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50
LnkpOwotCisgICAgfQogfQogCiBFdmFzX09iamVjdCogZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
YWRkKEV2YXMqIGNhbnZhcykKQEAgLTE0MDksMTcgKzEzMjksMTkgQEAgRXZhc19PYmplY3QqIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzKiBjYW52YXMpCiAgICAgcmV0dXJuIGV2YXNf
b2JqZWN0X3NtYXJ0X2FkZChjYW52YXMsIHNtYXJ0KTsKIH0KIAotdm9pZCBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEVp
bmFfQm9vbCAoKmNhbGxiYWNrKSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWlu
YV9SZWN0YW5nbGUqIGFyZWEpLCBjb25zdCB2b2lkKiBkYXRhKQordm9pZCBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGJv
b2wgKCpjYWxsYmFjaykodm9pZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUsIGNvbnN0IEVpbmFfUmVj
dGFuZ2xlKiBhcmVhKSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihjYWxsYmFjayk7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFj
a2luZ1N0b3JlLCBwcml2KTsKKwogICAgIHByaXYtPnJlbmRlci5jYWxsYmFjayA9IGNhbGxiYWNr
OwotICAgIHByaXYtPnJlbmRlci5kYXRhID0gKHZvaWQqKWRhdGE7CisgICAgcHJpdi0+cmVuZGVy
LmRhdGEgPSBjb25zdF9jYXN0PHZvaWQqPihkYXRhKTsKIH0KIAogRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlKiBld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX3VudXNlZF9jYWNoZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JF
VFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIDApOworCiAgICAgcmV0dXJuIGV3a190aWxlX21h
dHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CiB9CiAKQEAgLTE0MzMs
NyArMTM1NSw3IEBAIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2Fj
aGVfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsCiAgICAgX2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX21vZGVsX21hdHJpeF9jcmVhdGUocHJpdiwgdGlsZVVudXNlZENhY2hlKTsKIH0K
IAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxf
b2Zmc2V0X3NldF9pbnRlcm5hbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKK3N0YXRpYyBib29sIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5n
X1N0b3JlX0RhdGEqIHByaXYsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5KQogewogICAgIC8q
IFRPRE86IGNoZWNrIG9mZnNldCBnbyBvdXQgb2YgYm91bmRzLCBjbGFtcCAqLwogICAgIGlmIChw
cml2LT5yZW5kZXIuZGlzYWJsZWQpCkBAIC0xNDQ4LDcgKzEzNzAsNyBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVy
bmFsKEV3a19UaQogICAgIHJldHVybiB0cnVlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCogZXdrQmFja2lu
Z1N0b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0
b3JlLCBFdmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSkKIHsKICAgICBEQkcoImV3a0JhY2tpbmdT
dG9yZT0lcCwgeD0lZCwgeT0lZCIsIGV3a0JhY2tpbmdTdG9yZSwgeCwgeSk7CiAKQEAgLTE0NTks
NyArMTM4MSw3IEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVs
bF9vZmZzZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nCiAgICAgcmV0dXJuIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVybmFsKHByaXYsIHgs
IHkpOwogfQogCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xsX2Z1bGxf
b2Zmc2V0X2FkZChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3JkIGRlbHRh
WCwgRXZhc19Db29yZCBkZWx0YVkpCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9s
bF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19Db29y
ZCBkZWx0YVgsIEV2YXNfQ29vcmQgZGVsdGFZKQogewogICAgIERCRygiZXdrQmFja2luZ1N0b3Jl
PSVwLCBkZWx0YVg9JWQsIGRlbHRhWT0lZCIsIGV3a0JhY2tpbmdTdG9yZSwgZGVsdGFYLCBkZWx0
YVkpOwogCkBAIC0xNDY3LDExICsxMzg5LDEwIEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nCiAg
ICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBy
ZXR1cm4gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXRfaW50
ZXJuYWwKLSAgICAgICAgICAgICAgIChwcml2LCBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50Lngg
KyBkZWx0YVgsIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSArIGRlbHRhWSk7CisgICAgcmV0
dXJuIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9zY3JvbGxfZnVsbF9vZmZzZXRfc2V0X2ludGVy
bmFsKHByaXYsIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCArIGRlbHRhWCwgcHJpdi0+dmll
dy5vZmZzZXQuY3VycmVudC55ICsgZGVsdGFZKTsKIH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YSogcHJpdiwgZmxvYXQqIHpvb20sIEV2YXNfQ29vcmQgY3VycmVudFgsIEV2YXNf
Q29vcmQgY3VycmVudFksIEV2YXNfQ29vcmQqIG9mZnNldFgsIEV2YXNfQ29vcmQqIG9mZnNldFkp
CitzdGF0aWMgYm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwo
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgZmxvYXQqIHpvb20sIEV2YXNfQ29v
cmQgY3VycmVudFgsIEV2YXNfQ29vcmQgY3VycmVudFksIEV2YXNfQ29vcmQqIG9mZnNldFgsIEV2
YXNfQ29vcmQqIG9mZnNldFkpCiB7CiAgICAgKm9mZnNldFggPSBwcml2LT52aWV3Lm9mZnNldC5j
dXJyZW50Lng7CiAgICAgKm9mZnNldFkgPSBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50Lnk7CkBA
IC0xNDc5LDE2ICsxNDAwLDE2IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3pvb21fc2V0X2ludGVybmFsKEV3a19UaWxlZF9CYWNraW5nX1N0CiAgICAgaWYgKGZh
YnNmKHByaXYtPnZpZXcudGlsZS56b29tIC0gKnpvb20pIDwgem9vbVN0ZXBNaW5pbXVtKSB7CiAg
ICAgICAgIERCRygiaWdub3JlZCBhcyB6b29tIGRpZmZlcmVuY2UgaXMgPCAlZjogJWYiLAogICAg
ICAgICAgICAgKGRvdWJsZSl6b29tU3RlcE1pbmltdW0sIGZhYnNmKHByaXYtPnZpZXcudGlsZS56
b29tIC0gKnpvb20pKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBfZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2ZsdXNoKHByaXYpOwotICAg
IEV2YXNfQ29vcmQgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0OwogCiAgICAgKnpvb20gPSBST1VOREVE
X1pPT00ocHJpdi0+dmlldy50aWxlLndpZHRoLCAqem9vbSk7CiAKLSAgICB0aWxlV2lkdGggPSBw
cml2LT52aWV3LnRpbGUud2lkdGg7Ci0gICAgdGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5o
ZWlnaHQ7CisgICAgRXZhc19Db29yZCB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7
CisgICAgRXZhc19Db29yZCB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKIAog
ICAgIGZsb2F0IHNjYWxlID0gKnpvb20gLyBwcml2LT52aWV3LnRpbGUuem9vbTsKIApAQCAtMTUw
OCw4ICsxNDI5LDYgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
em9vbV9zZXRfaW50ZXJuYWwoRXdrX1RpbGVkX0JhY2tpbmdfU3QKICAgICAgICAgcHJpdi0+dmll
dy5vZmZzZXQuYmFzZS55ID0gMDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIEVp
bmFfSW5saXN0KiogaXRlcmF0b3IsICoqaXRlcmF0b3JFbmQ7Ci0gICAgRXdrX1RpbGVkX0JhY2tp
bmdfU3RvcmVfSXRlbSogaXRlbTsKIAogICAgIEV2YXNfQ29vcmQgbmV3WCA9IGN1cnJlbnRYICsg
KHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCAtIGN1cnJlbnRYKSAqIHNjYWxlOwogICAgIEV2
YXNfQ29vcmQgbmV3WSA9IGN1cnJlbnRZICsgKHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueSAt
IGN1cnJlbnRZKSAqIHNjYWxlOwpAQCAtMTU0NiwyMyArMTQ2NSwxOSBAQCBzdGF0aWMgRWluYV9C
b29sIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldF9pbnRlcm5hbChFd2tfVGlsZWRf
QmFja2luZ19TdAogICAgICpvZmZzZXRYID0gcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC54Owog
ICAgICpvZmZzZXRZID0gcHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55OwogCi0gICAgZXZhc19v
YmplY3RfbW92ZSgKLSAgICAgICAgcHJpdi0+Y29udGVudHNDbGlwcGVyLAotICAgICAgICBuZXdY
ICsgcHJpdi0+dmlldy54LAotICAgICAgICBuZXdZICsgcHJpdi0+dmlldy55KTsKKyAgICBldmFz
X29iamVjdF9tb3ZlKHByaXYtPmNvbnRlbnRzQ2xpcHBlciwgbmV3WCArIHByaXYtPnZpZXcueCwg
bmV3WSArIHByaXYtPnZpZXcueSk7CiAKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmls
bF9yZW5kZXJlcnMocHJpdik7CiAKICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlvblkgPSBwcml2
LT52aWV3Lm9mZnNldC5iYXNlLnkgKyBwcml2LT52aWV3Lnk7CiAgICAgRXZhc19Db29yZCBiYXNl
VGlsZVBvc2l0aW9uWCA9IHByaXYtPnZpZXcueCArIHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueDsK
IAotICAgIGl0ZXJhdG9yID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBpdGVyYXRvckVuZCA9IGl0
ZXJhdG9yICsgcHJpdi0+dmlldy5yb3dzOwotCi0gICAgZm9yICg7IGl0ZXJhdG9yIDwgaXRlcmF0
b3JFbmQ7IGl0ZXJhdG9yKyspIHsKKyAgICBFaW5hX0lubGlzdCoqIGl0ID0gcHJpdi0+dmlldy5p
dGVtczsKKyAgICBFaW5hX0lubGlzdCoqIGVuZCA9IGl0ICsgcHJpdi0+dmlldy5yb3dzOworICAg
IGZvciAoOyBpdCA8IGVuZDsgKytpdCkgewogICAgICAgICBFdmFzX0Nvb3JkIHRpbGVQb3NpdGlv
blggPSBiYXNlVGlsZVBvc2l0aW9uWDsKLSAgICAgICAgRWluYV9Jbmxpc3QqIGxzdCA9ICppdGVy
YXRvcjsKLQorICAgICAgICBFaW5hX0lubGlzdCogbHN0ID0gKml0OworICAgICAgICBFd2tfVGls
ZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtOwogICAgICAgICBFSU5BX0lOTElTVF9GT1JFQUNI
KGxzdCwgaXRlbSkgewogICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1f
bW92ZShpdGVtLCB0aWxlUG9zaXRpb25YLCB0aWxlUG9zaXRpb25ZKTsKICAgICAgICAgICAgIF9l
d2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jlc2l6ZShpdGVtLCB0aWxlV2lkdGgsIHRpbGVI
ZWlnaHQpOwpAQCAtMTU3NCw3ICsxNDg5LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfem9vbV9zZXRfaW50ZXJuYWwoRXdrX1RpbGVkX0JhY2tpbmdfU3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGZsb2F0KiB6b29tLCBFdmFzX0Nv
b3JkIGN1cnJlbnRYLCBFdmFzX0Nvb3JkIGN1cnJlbnRZLCBFdmFzX0Nvb3JkKiBvZmZzZXRYLCBF
dmFzX0Nvb3JkKiBvZmZzZXRZKQorYm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3Nl
dChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBmbG9hdCogem9vbSwgRXZhc19Db29yZCBj
dXJyZW50WCwgRXZhc19Db29yZCBjdXJyZW50WSwgRXZhc19Db29yZCogb2Zmc2V0WCwgRXZhc19D
b29yZCogb2Zmc2V0WSkKIHsKICAgICBEQkcoImV3a0JhY2tpbmdTdG9yZT0lcCwgem9vbT0lZiIs
IGV3a0JhY2tpbmdTdG9yZSwgKnpvb20pOwogCkBAIC0xNTgzLDIyICsxNDk4LDIwIEBAIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3NldChFdmFzX09iamVjdCogZXdrQmFj
a2luZ1N0b3JlLCBmbG9hdCoKICAgICByZXR1cm4gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0X2ludGVybmFsKHByaXYsIHpvb20sIGN1cnJlbnRYLCBjdXJyZW50WSwgb2Zmc2V0WCwg
b2Zmc2V0WSk7CiB9CiAKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dl
YWtfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGZsb2F0IHpvb20sIEV2YXNfQ29v
cmQgY3VycmVudFgsIEV2YXNfQ29vcmQgY3VycmVudFkpCitib29sIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgZmxvYXQg
em9vbSwgRXZhc19Db29yZCBjdXJyZW50WCwgRXZhc19Db29yZCBjdXJyZW50WSkKIHsKICAgICBE
QkcoImV3a0JhY2tpbmdTdG9yZT0lcCwgem9vbT0lZiIsIGV3a0JhY2tpbmdTdG9yZSwgem9vbSk7
CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxz
ZSk7CiAgICAgaWYgKCFwcml2LT52aWV3LndpZHRoIHx8ICFwcml2LT52aWV3LmhlaWdodCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3IsICoqIGl0ZXJh
dG9yRW5kOwotICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07Ci0gICAgRXZh
c19Db29yZCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0gICAgRWluYV9Cb29sIHJlQ2FsY3VsYXRl
ID0gZmFsc2U7CisKKyAgICBib29sIHJlQ2FsY3VsYXRlID0gZmFsc2U7CiAKICAgICBmbG9hdCBz
Y2FsZSA9IHpvb20gLyBwcml2LT52aWV3LnRpbGUuem9vbTsKIAotICAgIHRpbGVXaWR0aCA9IFRJ
TEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS53aWR0aCwgc2NhbGUpOworICAgIEV2YXNf
Q29vcmQgdGlsZVdpZHRoID0gVElMRV9TSVpFX0FUX1pPT00ocHJpdi0+dmlldy50aWxlLndpZHRo
LCBzY2FsZSk7CiAgICAgc2NhbGUgPSBUSUxFX1pPT01fQVRfU0laRSh0aWxlV2lkdGgsIHByaXYt
PnZpZXcudGlsZS53aWR0aCk7Ci0gICAgdGlsZUhlaWdodCA9IFRJTEVfU0laRV9BVF9aT09NKHBy
aXYtPnZpZXcudGlsZS5oZWlnaHQsIHNjYWxlKTsKKyAgICBFdmFzX0Nvb3JkIHRpbGVIZWlnaHQg
PSBUSUxFX1NJWkVfQVRfWk9PTShwcml2LT52aWV3LnRpbGUuaGVpZ2h0LCBzY2FsZSk7CiAgICAg
em9vbSA9IHNjYWxlICogcHJpdi0+dmlldy50aWxlLnpvb207CiAKICAgICBFdmFzX0Nvb3JkIG1v
ZGVsV2lkdGggPSBwcml2LT5tb2RlbC53aWR0aCAqIHNjYWxlOwpAQCAtMTYwNiw4ICsxNTE5LDgg
QEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19zZXQoRXZhc19P
YmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgZmwKIAogICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShwcml2
LT5jb250ZW50c0NsaXBwZXIsIG1vZGVsV2lkdGgsIG1vZGVsSGVpZ2h0KTsKIAotICAgIGludCB2
cm93cyA9IHN0YXRpY19jYXN0PGludD4oY2VpbChwcml2LT52aWV3LmhlaWdodCAvc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHRpbGVIZWlnaHQpKSArIDEpOwotICAgIGludCB2Y29scyA9IHN0YXRpY19jYXN0
PGludD4oY2VpbChwcml2LT52aWV3LndpZHRoIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbGVXaWR0
aCkpICsgMSk7CisgICAgdW5zaWduZWQgbG9uZyB2cm93cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KGNlaWwocHJpdi0+dmlldy5oZWlnaHQgL3N0YXRpY19jYXN0PGZsb2F0Pih0aWxlSGVp
Z2h0KSkgKyAxKTsKKyAgICB1bnNpZ25lZCBsb25nIHZjb2xzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oY2VpbChwcml2LT52aWV3LndpZHRoIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbGVX
aWR0aCkpICsgMSk7CiAgICAgRXZhc19Db29yZCBuZXdYID0gY3VycmVudFggKyAocHJpdi0+dmll
dy5vZmZzZXQuY3VycmVudC54IC0gY3VycmVudFgpICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBu
ZXdZID0gY3VycmVudFkgKyAocHJpdi0+dmlldy5vZmZzZXQuY3VycmVudC55IC0gY3VycmVudFkp
ICogc2NhbGU7CiAgICAgRXZhc19Db29yZCBiYXNlWCA9IG5ld1ggJSB0aWxlV2lkdGg7CkBAIC0x
NjM1LDE3ICsxNTQ4LDE0IEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29t
X3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGZsCiAgICAgRXZhc19Db29y
ZCBiYXNlVGlsZVBvc2l0aW9uWCA9IGJhc2VYICsgcHJpdi0+dmlldy54OwogICAgIEV2YXNfQ29v
cmQgdGlsZVBvc2l0aW9uWSA9IGJhc2VZICsgcHJpdi0+dmlldy55OwogCi0gICAgZXZhc19vYmpl
Y3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsCi0gICAgICAgICAgICAgICAgICAgICBuZXdY
ICsgcHJpdi0+dmlldy54LAotICAgICAgICAgICAgICAgICAgICAgbmV3WSArIHByaXYtPnZpZXcu
eSk7CisgICAgZXZhc19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIG5ld1ggKyBw
cml2LT52aWV3LngsIG5ld1kgKyBwcml2LT52aWV3LnkpOwogCi0gICAgaXRlcmF0b3IgPSBwcml2
LT52aWV3Lml0ZW1zOwotICAgIGl0ZXJhdG9yRW5kID0gaXRlcmF0b3IgKyBwcml2LT52aWV3LnJv
d3M7Ci0KLSAgICBmb3IgKDsgaXRlcmF0b3IgPCBpdGVyYXRvckVuZDsgaXRlcmF0b3IrKykgewor
ICAgIEVpbmFfSW5saXN0KiogaXQgPSBwcml2LT52aWV3Lml0ZW1zOworICAgIEVpbmFfSW5saXN0
KiogZW5kID0gaXQgKyBwcml2LT52aWV3LnJvd3M7CisgICAgZm9yICg7IGl0IDwgZW5kOyArK2l0
KSB7CiAgICAgICAgIEV2YXNfQ29vcmQgdGlsZVBvc2l0aW9uWCA9IGJhc2VUaWxlUG9zaXRpb25Y
OwotICAgICAgICBFaW5hX0lubGlzdCogbGlzdCA9ICppdGVyYXRvcjsKLQorICAgICAgICBFaW5h
X0lubGlzdCogbGlzdCA9ICppdDsKKyAgICAgICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRl
bSogaXRlbTsKICAgICAgICAgRUlOQV9JTkxJU1RfRk9SRUFDSChsaXN0LCBpdGVtKSB7CiAgICAg
ICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9tb3ZlKGl0ZW0sIHRpbGVQb3Np
dGlvblgsIHRpbGVQb3NpdGlvblkpOwogICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0
b3JlX2l0ZW1fcmVzaXplKGl0ZW0sIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CkBAIC0xNjYwLDgg
KzE1NzAsNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Nl
dChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBmbAogdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nv
b3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhlaWdodCkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JF
VFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwotICAgIEVpbmFfSW5saXN0KiogaXRlcmF0b3Is
ICoqaXRlcmF0b3JFbmQ7Ci0gICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsK
KwogICAgIEV2YXNfQ29vcmQgbmV3WCA9IHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueDsKICAg
ICBFdmFzX0Nvb3JkIG5ld1kgPSBwcml2LT52aWV3Lm9mZnNldC5jdXJyZW50Lnk7CiAgICAgRXZh
c19Db29yZCBiYXNlWCA9IHByaXYtPnZpZXcub2Zmc2V0LmJhc2UueDsKQEAgLTE2OTcsMjAgKzE2
MDYsMTcgQEAgdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09i
amVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFzX0Nvb3IKICAgICBwcml2LT52aWV3Lm9mZnNldC5v
bGQueSA9IG5ld1k7CiAgICAgcHJpdi0+dmlldy5vZmZzZXQuYmFzZS54ID0gYmFzZVg7CiAgICAg
cHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ID0gYmFzZVk7Ci0gICAgZXZhc19vYmplY3RfbW92ZShw
cml2LT5jb250ZW50c0NsaXBwZXIsCi0gICAgICAgICAgICAgICAgICAgICBuZXdYICsgcHJpdi0+
dmlldy54LAotICAgICAgICAgICAgICAgICAgICAgbmV3WSArIHByaXYtPnZpZXcueSk7CisgICAg
ZXZhc19vYmplY3RfbW92ZShwcml2LT5jb250ZW50c0NsaXBwZXIsIG5ld1ggKyBwcml2LT52aWV3
LngsIG5ld1kgKyBwcml2LT52aWV3LnkpOwogCiAgICAgRXZhc19Db29yZCB0aWxlUG9zaXRpb25Z
ID0gcHJpdi0+dmlldy5vZmZzZXQuYmFzZS55ICsgcHJpdi0+dmlldy55OwogICAgIEV2YXNfQ29v
cmQgYmFzZVRpbGVQb3NpdGlvblggPSBwcml2LT52aWV3LnggKyBwcml2LT52aWV3Lm9mZnNldC5i
YXNlLng7CiAKLSAgICBpdGVyYXRvciA9IHByaXYtPnZpZXcuaXRlbXM7Ci0gICAgaXRlcmF0b3JF
bmQgPSBpdGVyYXRvciArIHByaXYtPnZpZXcucm93czsKLQotICAgIGZvciAoOyBpdGVyYXRvciA8
IGl0ZXJhdG9yRW5kOyBpdGVyYXRvcisrKSB7CisgICAgRWluYV9Jbmxpc3QqKiBpdCA9IHByaXYt
PnZpZXcuaXRlbXM7CisgICAgRWluYV9Jbmxpc3QqKiBlbmQgPSBpdCArIHByaXYtPnZpZXcucm93
czsKKyAgICBmb3IgKDsgaXQgPCBlbmQ7ICsraXQpIHsKICAgICAgICAgRXZhc19Db29yZCB0aWxl
UG9zaXRpb25YID0gYmFzZVRpbGVQb3NpdGlvblg7Ci0gICAgICAgIEVpbmFfSW5saXN0KiBsc3Qg
PSAqaXRlcmF0b3I7Ci0KKyAgICAgICAgRWluYV9Jbmxpc3QqIGxzdCA9ICppdDsKKyAgICAgICAg
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKICAgICAgICAgRUlOQV9JTkxJU1Rf
Rk9SRUFDSChsc3QsIGl0ZW0pIHsKICAgICAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9pdGVtX21vdmUoaXRlbSwgdGlsZVBvc2l0aW9uWCwgdGlsZVBvc2l0aW9uWSk7CiAgICAgICAg
ICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXNpemUoaXRlbSwgdGlsZVdpZHRo
LCB0aWxlSGVpZ2h0KTsKQEAgLTE3MjAsNTMgKzE2MjYsNTAgQEAgdm9pZCBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFz
X0Nvb3IKICAgICB9CiB9CiAKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFr
X3Ntb290aF9zY2FsZV9zZXQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRWluYV9Cb29s
IHNtb290aFNjYWxlKQordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV96b29tX3dlYWtfc21v
b3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBib29sIHNtb290aFNj
YWxlKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJp
dik7Ci0gICAgRWluYV9Jbmxpc3QqKiBpdGVyYXRvciwgKippdGVyYXRvckVuZDsKIAotICAgIGl0
ZXJhdG9yID0gcHJpdi0+dmlldy5pdGVtczsKLSAgICBpdGVyYXRvckVuZCA9IGl0ZXJhdG9yICsg
cHJpdi0+dmlldy5yb3dzOworICAgIEVpbmFfSW5saXN0KiogaXQgPSBwcml2LT52aWV3Lml0ZW1z
OworICAgIEVpbmFfSW5saXN0KiogZW5kID0gaXQgKyBwcml2LT52aWV3LnJvd3M7CiAgICAgcHJp
di0+dmlldy50aWxlLnpvb21XZWFrU21vb3RoU2NhbGUgPSBzbW9vdGhTY2FsZTsKIAotICAgIGZv
ciAoOyBpdGVyYXRvcjwgaXRlcmF0b3JFbmQ7IGl0ZXJhdG9yKyspIHsKKyAgICBmb3IgKDsgaXQ8
IGVuZDsgKytpdCkgewogICAgICAgICBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVt
OwotICAgICAgICBFSU5BX0lOTElTVF9GT1JFQUNIKCppdGVyYXRvciwgaXRlbSkKKyAgICAgICAg
RUlOQV9JTkxJU1RfRk9SRUFDSCgqaXQsIGl0ZW0pCiAgICAgICAgICAgICBpZiAoaXRlbS0+dGls
ZSkKLSAgICAgICAgICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9zbW9vdGhf
c2NhbGVfc2V0Ci0gICAgICAgICAgICAgICAgICAgIChpdGVtLCBzbW9vdGhTY2FsZSk7CisgICAg
ICAgICAgICAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxlX3Nl
dChpdGVtLCBzbW9vdGhTY2FsZSk7CiAgICAgfQogfQogCi12b2lkIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2FscGhhX3NldChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFaW5hX0Jvb2wg
aGFzQWxwaGEpCit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FscGhhX3NldChFdmFzX09i
amVjdCogZXdrQmFja2luZ1N0b3JlLCBib29sIGhhc0FscGhhKQogewogICAgIFBSSVZfREFUQV9H
RVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdTdG9yZSwgcHJpdik7CiAgICAgcHJpdi0+dmlldy50aWxl
Lmhhc0FscGhhID0gaGFzQWxwaGE7CiB9CiAKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV91cGRhdGUoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgY29uc3QgRWluYV9SZWN0
YW5nbGUqIHVwZGF0ZSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlKEV2YXNf
T2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiB1cGRhdGUpCiB7
CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxz
ZSk7CiAKICAgICBpZiAocHJpdi0+cmVuZGVyLmRpc2FibGVkKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gZXdrX3RpbGVfbWF0cml4X3VwZGF0ZShwcml2LT5tb2RlbC5tYXRy
aXgsIHVwZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT52aWV3
LnRpbGUuem9vbSk7CisgICAgcmV0dXJuIGV3a190aWxlX21hdHJpeF91cGRhdGUocHJpdi0+bW9k
ZWwubWF0cml4LCB1cGRhdGUsIHByaXYtPnZpZXcudGlsZS56b29tKTsKIH0KIAogdm9pZCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3NfcHJlX3NldChFdmFzX09iamVjdCog
ZXdrQmFja2luZ1N0b3JlLCB2b2lkKiAoKmNhbGxiYWNrKSh2b2lkKiBkYXRhLCBFdmFzX09iamVj
dCAqZXdrQmFja2luZ1N0b3JlKSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBQUklWX0RBVEFf
R0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwogICAgIHByaXYtPnByb2Nlc3Mu
cHJlQ2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICBwcml2LT5wcm9jZXNzLnByZURhdGEgPSAodm9p
ZCopZGF0YTsKKyAgICBwcml2LT5wcm9jZXNzLnByZURhdGEgPSBjb25zdF9jYXN0PHZvaWQqPihk
YXRhKTsKIH0KIAogdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV91cGRhdGVzX3Byb2Nlc3Nf
cG9zdF9zZXQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgdm9pZCogKCpjYWxsYmFjayko
dm9pZCogZGF0YSwgdm9pZCogcHJlRGF0YSwgRXZhc19PYmplY3QgKmV3a0JhY2tpbmdTdG9yZSks
IGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFj
a2luZ1N0b3JlLCBwcml2KTsKICAgICBwcml2LT5wcm9jZXNzLnBvc3RDYWxsYmFjayA9IGNhbGxi
YWNrOwotICAgIHByaXYtPnByb2Nlc3MucG9zdERhdGEgPSAodm9pZCopZGF0YTsKKyAgICBwcml2
LT5wcm9jZXNzLnBvc3REYXRhID0gY29uc3RfY2FzdDx2b2lkKj4oZGF0YSk7CiB9CiAKIHZvaWQg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzKEV2YXNfT2JqZWN0KiBld2tC
YWNraW5nU3RvcmUpCkBAIC0xNzk3LDcgKzE3MDAsNyBAQCB2b2lkIGV3a190aWxlZF9iYWNraW5n
X3N0b3JlX2NvbnRlbnRzX3Jlc2l6ZShFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBFdmFz
XwogICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jaGFuZ2VkKHByaXYpOwogfQogCi12b2lk
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVkX3VwZGF0ZV9zZXQoRXZhc19PYmplY3Qq
IGV3a0JhY2tpbmdTdG9yZSwgRWluYV9Cb29sIHZhbHVlKQordm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUs
IGJvb2wgdmFsdWUpCiB7CiAgICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0
b3JlLCBwcml2KTsKIApAQCAtMTgwOCw3ICsxNzExLDYgQEAgdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9kaXNhYmxlZF91cGRhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUs
IEUKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a0Jh
Y2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihld2tCYWNraW5nU3Rv
cmUsIHByaXYpOwotICAgIEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlID0g
MDsKIAogICAgIHByaXYtPnZpZXcub2Zmc2V0LmN1cnJlbnQueCA9IDA7CiAgICAgcHJpdi0+dmll
dy5vZmZzZXQuY3VycmVudC55ID0gMDsKQEAgLTE4MzMsNyArMTczNSw3IEBAIHZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIAog
ICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2gocHJp
dik7CiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwocHJp
dik7Ci0gICAgdGlsZVVudXNlZENhY2hlID0gZXdrX3RpbGVfbWF0cml4X3VudXNlZF9jYWNoZV9n
ZXQocHJpdi0+bW9kZWwubWF0cml4KTsKKyAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVV
bnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVs
Lm1hdHJpeCk7CiAgICAgZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKHRpbGVVbnVzZWRDYWNo
ZSk7CiAKICNpZmRlZiBERUJVR19NRU1fTEVBS1MKQEAgLTE4NDIsNyArMTc0NCw3IEBAIHZvaWQg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZmx1c2goRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9y
ZSkKICNlbmRpZgogfQogCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3Jl
bmRlcl90aWxlX2FkZChFdmFzX09iamVjdCogZXdrQmFja2luZ1N0b3JlLCBpbnQgY29sdW1uLCBp
bnQgcm93LCBmbG9hdCB6b29tKQorYm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3RpbGVfYWRkKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIHVuc2lnbmVkIGxvbmcg
Y29sdW1uLCB1bnNpZ25lZCBsb25nIHJvdywgZmxvYXQgem9vbSkKIHsKICAgICBQUklWX0RBVEFf
R0VUX09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKIApAQCAtMTg1NSw3
ICsxNzU3LDcgQEAgRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
dGlsZV9hZGQoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG8KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1
ZXVlKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEVpbmFfUmVjdGFuZ2xlKiB2aWV3UmVj
dCwgRWluYV9SZWN0YW5nbGUqIHJlbmRlclJlY3QsIGludCBtYXhNZW1vcnksIGZsb2F0IHpvb20p
Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2
YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIEVpbmFfUmVjdGFuZ2xlKiB2aWV3UmVjdCwgRWlu
YV9SZWN0YW5nbGUqIHJlbmRlclJlY3QsIGludCBtYXhNZW1vcnksIGZsb2F0IHpvb20pCiB7CiAg
ICAgUFJJVl9EQVRBX0dFVF9PUl9SRVRVUk4oZXdrQmFja2luZ1N0b3JlLCBwcml2LCBmYWxzZSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXdSZWN0LCBmYWxzZSk7CkBA
IC0xODY1LDM0ICsxNzY3LDMxIEBAIEVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFzX09iamVjdCogZXdrQmFja2luCiAgICAgY29uc3Qg
aW50IHRpbGVIZWlnaHQgPSBwcml2LT52aWV3LnRpbGUuaGVpZ2h0OwogCiAgICAgRWluYV9UaWxl
X0dyaWRfU2xpY2VyIHZpZXdTbGljZXI7Ci0gICAgRWluYV9UaWxlX0dyaWRfU2xpY2VyIHJlbmRl
clNsaWNlcjsKLQotICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZ2aWV3U2xp
Y2VyLAotICAgICAgICB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3
UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KSkgeworICAgIGlmICghZWluYV90aWxlX2dy
aWRfc2xpY2VyX3NldHVwKCZ2aWV3U2xpY2VyLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZp
ZXdSZWN0LT53LCB2aWV3UmVjdC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KSkgewogICAgICAg
ICBFUlIoImNvdWxkIG5vdCBzZXR1cCBncmlkIHZpZXdTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRp
bGU9JWR4JWQiLCB2aWV3UmVjdC0+eCwgdmlld1JlY3QtPnksIHZpZXdSZWN0LT53LCB2aWV3UmVj
dC0+aCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZyZW5kZXJTbGljZXIs
Ci0gICAgICAgIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3QtPnksIHJlbmRlclJlY3QtPncsIHJl
bmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKKyAgICBFaW5hX1RpbGVfR3Jp
ZF9TbGljZXIgcmVuZGVyU2xpY2VyOworICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3Nl
dHVwKCZyZW5kZXJTbGljZXIsIHJlbmRlclJlY3QtPngsIHJlbmRlclJlY3QtPnksIHJlbmRlclJl
Y3QtPncsIHJlbmRlclJlY3QtPmgsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKICAgICAgICAg
RVJSKCJjb3VsZCBub3Qgc2V0dXAgZ3JpZCBSZW5kZXJTbGljZXIgZm9yICVkLCVkKyVkeCVkIHRp
bGU9JWR4JWQiLCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT55LCByZW5kZXJSZWN0LT53LCBy
ZW5kZXJSZWN0LT5oLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgLy8gc2V0IGxpbWl0cyBvZiB0aGUgbG9vcC4KICAgICBpbnQgbWVt
b3J5TGltaXRzID0gbWF4TWVtb3J5IC8gKEVXS19BUkdCX0JZVEVTX1NJWkUgKiB0aWxlV2lkdGgg
KiB0aWxlSGVpZ2h0KTsKLSAgICBjb25zdCBpbnQgbWF4Vmlld1NpZGVMZW5ndGggPSBzdGQ6Om1h
eCh2aWV3U2xpY2VyLmNvbDIgLSB2aWV3U2xpY2VyLmNvbDEsIHZpZXdTbGljZXIucm93MiAtIHZp
ZXdTbGljZXIucm93MSk7Ci0gICAgY29uc3QgaW50IG1heFJlbmRlclNpZGVMZW5ndGggPSBzdGQ6
Om1heChyZW5kZXJTbGljZXIuY29sMiAtIHJlbmRlclNsaWNlci5jb2wxLCByZW5kZXJTbGljZXIu
cm93MiAtIHJlbmRlclNsaWNlci5yb3cxKTsKLSAgICBjb25zdCBpbnQgbWF4TG9vcENvdW50ID0g
bWF4Vmlld1NpZGVMZW5ndGggKyBtYXhSZW5kZXJTaWRlTGVuZ3RoOworICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgbWF4Vmlld1NpZGVMZW5ndGggPSBzdGQ6Om1heCh2aWV3U2xpY2VyLmNvbDIgLSB2
aWV3U2xpY2VyLmNvbDEsIHZpZXdTbGljZXIucm93MiAtIHZpZXdTbGljZXIucm93MSk7CisgICAg
Y29uc3QgdW5zaWduZWQgbG9uZyBtYXhSZW5kZXJTaWRlTGVuZ3RoID0gc3RkOjptYXgocmVuZGVy
U2xpY2VyLmNvbDIgLSByZW5kZXJTbGljZXIuY29sMSwgcmVuZGVyU2xpY2VyLnJvdzIgLSByZW5k
ZXJTbGljZXIucm93MSk7CisgICAgY29uc3QgdW5zaWduZWQgbG9uZyBtYXhMb29wQ291bnQgPSBt
YXhWaWV3U2lkZUxlbmd0aCArIG1heFJlbmRlclNpZGVMZW5ndGg7CiAKICAgICAvLyBzcGlyZSBz
dGFydHMgZnJvbSB0aGUgY2VudGVyIG9mIHRoZSB2aWV3IGFyZWEuCi0gICAgaW50IGNlbnRlckNv
bHVtbiA9ICh2aWV3U2xpY2VyLmNvbDEgKyB2aWV3U2xpY2VyLmNvbDIpIC8gMjsKLSAgICBpbnQg
Y2VudGVyUm93ID0gKHZpZXdTbGljZXIucm93MSArIHZpZXdTbGljZXIucm93MikgLyAyOworICAg
IHVuc2lnbmVkIGxvbmcgY2VudGVyQ29sdW1uID0gKHZpZXdTbGljZXIuY29sMSArIHZpZXdTbGlj
ZXIuY29sMikgLyAyOworICAgIHVuc2lnbmVkIGxvbmcgY2VudGVyUm93ID0gKHZpZXdTbGljZXIu
cm93MSArIHZpZXdTbGljZXIucm93MikgLyAyOwogCi0gICAgaW50IHN0ZXAgPSAxOwotICAgIGNv
bnN0IGludCBzcXVhcmVTaWRlID0gNDsKLSAgICBmb3IgKGludCBsb29wID0gMDsgbG9vcCA8IG1h
eExvb3BDb3VudDsgbG9vcCsrKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RlcCAq
IHNxdWFyZVNpZGUgKyAxOyBpKyspIHsKKyAgICB1bnNpZ25lZCBsb25nIHN0ZXAgPSAxOworICAg
IGNvbnN0IHVuc2lnbmVkIHNxdWFyZVNpZGUgPSA0OworICAgIGZvciAodW5zaWduZWQgbG9vcCA9
IDA7IGxvb3AgPCBtYXhMb29wQ291bnQ7ICsrbG9vcCkgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGxvbmcgaSA9IDE7IGkgPCBzdGVwICogc3F1YXJlU2lkZSArIDE7ICsraSkgewogICAgICAgICAg
ICAgaWYgKG1lbW9yeUxpbWl0cyA8PSAwKQogICAgICAgICAgICAgICAgIGdvdG8gbWVtb3J5TGlt
aXRzUmVhY2hlZDsKICAgICAgICAgICAgIC8qCkBAIC0xOTA4LDM3ICsxODA3LDM3IEBAIEVpbmFf
Qm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3NwaXJhbF9xdWV1ZShFdmFz
X09iamVjdCogZXdrQmFja2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgMzMzMzMzCiAgICAg
ICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGkgPiAwICYmIGkgPD0gc3RlcCkKLSAgICAgICAg
ICAgICAgICBjZW50ZXJDb2x1bW4rKzsgLy8gbW92ZSBsZWZ0LgorICAgICAgICAgICAgICAgICsr
Y2VudGVyQ29sdW1uOyAvLyBtb3ZlIGxlZnQuCiAgICAgICAgICAgICBlbHNlIGlmIChpID4gc3Rl
cCAmJiBpIDw9IHN0ZXAgKiAyKQotICAgICAgICAgICAgICAgIGNlbnRlclJvdysrOyAvLyBtb3Zl
IGRvd24uCisgICAgICAgICAgICAgICAgKytjZW50ZXJSb3c7IC8vIG1vdmUgZG93bi4KICAgICAg
ICAgICAgIGVsc2UgaWYgKGkgPiBzdGVwICogMiAmJiBpIDw9IHN0ZXAgKiAzKQotICAgICAgICAg
ICAgICAgIGNlbnRlckNvbHVtbi0tOyAvLyBtb3ZlIHJpZ2h0LgorICAgICAgICAgICAgICAgIC0t
Y2VudGVyQ29sdW1uOyAvLyBtb3ZlIHJpZ2h0LgogICAgICAgICAgICAgZWxzZSBpZiAoaSA+IHN0
ZXAgKiAzICYmIGkgPD0gc3RlcCAqIDQpCi0gICAgICAgICAgICAgICAgY2VudGVyUm93LS07IC8v
IG1vdmUgdXAuCisgICAgICAgICAgICAgICAgLS1jZW50ZXJSb3c7IC8vIG1vdmUgdXAuCiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgRVJSKCJFUlJPUiA6IG91dCBvZiBib3VuZHNc
clxuIik7CiAKICAgICAgICAgICAgIC8vIHNraXAgaW4gdmlldyBwb3J0IGFyZWEuCi0gICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLmNvbDEpIDwgY2VudGVyQ29sdW1u
Ci0gICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xpY2VyLmNvbDIpID4g
Y2VudGVyQ29sdW1uCi0gICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50Pih2aWV3U2xp
Y2VyLnJvdzEpIDwgY2VudGVyUm93Ci0gICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8aW50
Pih2aWV3U2xpY2VyLnJvdzIpID4gY2VudGVyUm93KQorICAgICAgICAgICAgaWYgKHZpZXdTbGlj
ZXIuY29sMSA8IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHZpZXdTbGljZXIuY29s
MiA+IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHZpZXdTbGljZXIucm93MSA8IGNl
bnRlclJvdworICAgICAgICAgICAgICAgICYmIHZpZXdTbGljZXIucm93MiA+IGNlbnRlclJvdykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PGludD4ocmVuZGVyU2xpY2VyLmNvbDEpIDw9IGNlbnRlckNvbHVtbgotICAgICAgICAgICAgICAg
ICYmIHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLmNvbDIpID49IGNlbnRlckNvbHVtbgot
ICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xpY2VyLnJvdzEpIDw9
IGNlbnRlclJvdwotICAgICAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PGludD4ocmVuZGVyU2xp
Y2VyLnJvdzIpID49IGNlbnRlclJvdykgeworICAgICAgICAgICAgaWYgKHJlbmRlclNsaWNlci5j
b2wxIDw9IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHJlbmRlclNsaWNlci5jb2wy
ID49IGNlbnRlckNvbHVtbgorICAgICAgICAgICAgICAgICYmIHJlbmRlclNsaWNlci5yb3cxIDw9
IGNlbnRlclJvdworICAgICAgICAgICAgICAgICYmIHJlbmRlclNsaWNlci5yb3cyID49IGNlbnRl
clJvdykgewogCiAgICAgICAgICAgICAgICAgaWYgKCFld2tfdGlsZWRfYmFja2luZ19zdG9yZV9w
cmVfcmVuZGVyX3RpbGVfYWRkKGV3a0JhY2tpbmdTdG9yZSwgY2VudGVyQ29sdW1uLCBjZW50ZXJS
b3csIHpvb20pKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICBEQkcoIlI+WyVkICVkXSAiLCBjZW50ZXJDb2x1bW4sIGNlbnRlclJvdyk7Ci0gICAgICAgICAg
ICAgICAgbWVtb3J5TGltaXRzLS07CisgICAgICAgICAgICAgICAgREJHKCJSPlslbHUgJWx1XSAi
LCBjZW50ZXJDb2x1bW4sIGNlbnRlclJvdyk7CisgICAgICAgICAgICAgICAgLS1tZW1vcnlMaW1p
dHM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY2VudGVyUm93LS07Ci0gICAg
ICAgIGNlbnRlckNvbHVtbi0tOwotICAgICAgICBzdGVwID0gc3RlcCArIDI7CisgICAgICAgIC0t
Y2VudGVyUm93OworICAgICAgICAtLWNlbnRlckNvbHVtbjsKKyAgICAgICAgc3RlcCArPSAyOwog
ICAgIH0KIAogbWVtb3J5TGltaXRzUmVhY2hlZDoKQEAgLTE5NDcsMjQgKzE4NDYsMjIgQEAgbWVt
b3J5TGltaXRzUmVhY2hlZDoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotRWluYV9Cb29sIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBld2tCYWNr
aW5nU3RvcmUsIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHdpZHRoLCBF
dmFzX0Nvb3JkIGhlaWdodCwgZmxvYXQgem9vbSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgRXZhc19D
b29yZCB4LCBFdmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0
LCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tpbmdT
dG9yZSwgcHJpdiwgZmFsc2UpOwotICAgIEVpbmFfVGlsZV9HcmlkX1NsaWNlciBzbGljZXI7Ci0g
ICAgY29uc3QgRWluYV9UaWxlX0dyaWRfSW5mbyogZ3JpZEluZm87Ci0gICAgRXZhc19Db29yZCB0
aWxlV2lkdGgsIHRpbGVIZWlnaHQ7Ci0gICAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51
c2VkQ2FjaGU7CiAKLSAgICB0aWxlV2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7Ci0gICAg
dGlsZUhlaWdodCA9IHByaXYtPnZpZXcudGlsZS5oZWlnaHQ7CisgICAgRXZhc19Db29yZCB0aWxl
V2lkdGggPSBwcml2LT52aWV3LnRpbGUud2lkdGg7CisgICAgRXZhc19Db29yZCB0aWxlSGVpZ2h0
ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICB6b29tID0gUk9VTkRFRF9aT09NKHByaXYt
PnZpZXcudGlsZS53aWR0aCwgem9vbSk7CiAKKyAgICBFaW5hX1RpbGVfR3JpZF9TbGljZXIgc2xp
Y2VyOwogICAgIGlmICghZWluYV90aWxlX2dyaWRfc2xpY2VyX3NldHVwKCZzbGljZXIsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkpIHsKICAgICAgICAgRVJSKCJj
b3VsZCBub3Qgc2V0dXAgZ3JpZCBzbGljZXIgZm9yICVkLCVkKyVkeCVkIHRpbGU9JWR4JWQiLAog
ICAgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGNvbnN0IEVpbmFfVGlsZV9Hcmlk
X0luZm8qIGdyaWRJbmZvOwogICAgIHdoaWxlIChlaW5hX3RpbGVfZ3JpZF9zbGljZXJfbmV4dCgm
c2xpY2VyLCAmZ3JpZEluZm8pKSB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgY29sdW1u
ID0gZ3JpZEluZm8tPmNvbDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyByb3cgPSBncmlk
SW5mby0+cm93OwpAQCAtMTk3NCw0MiArMTg3MSwzNyBAQCBFaW5hX0Jvb2wgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9y
ZQogCiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFy
dChwcml2KTsKIAotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRf
Y2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hl
KiB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRyaXhfdW51c2VkX2NhY2hlX2dldChwcml2
LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV9sb2NrX2FyZWEodGls
ZVVudXNlZENhY2hlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKKwogICAgIHJldHVybiB0
cnVlOwogfQogCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9y
ZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSwgdW5zaWduZWQgaW50
IG4sIGZsb2F0IHpvb20pCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVsYXRpdmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBld2tCYWNraW5nU3RvcmUsIHVuc2lnbmVkIGlu
dCBuLCBmbG9hdCB6b29tKQogewogICAgIFBSSVZfREFUQV9HRVRfT1JfUkVUVVJOKGV3a0JhY2tp
bmdTdG9yZSwgcHJpdiwgZmFsc2UpOwotICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRSb3csIGVuZFJv
dywgc3RhcnRDb2wsIGVuZENvbCwgaSwgaiwgd2lkdGgsIGhlaWdodDsKLSAgICBFd2tfVGlsZV9V
bnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZTsKIAotICAgIElORigicHJpdi0+bW9kZWwuYmFz
ZS5yb3cgPSVsZCwgbj0ldSBwcml2LT52aWV3LnJvd3M9JWx1IiwKLSAgICAgICAgcHJpdi0+bW9k
ZWwuYmFzZS5yb3csIG4sIHByaXYtPnZpZXcucm93cyk7Ci0gICAgc3RhcnRSb3cgPSAobG9uZylw
cml2LT5tb2RlbC5iYXNlLnJvdyAtIG47Ci0gICAgc3RhcnRDb2wgPSAobG9uZylwcml2LT5tb2Rl
bC5iYXNlLmNvbHVtbiAtIG47Ci0gICAgZW5kUm93ID0gc3RkOjptaW4ocHJpdi0+bW9kZWwuY3Vy
cmVudC5yb3dzIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+bW9kZWwuYmFzZS5y
b3cgKyBwcml2LT52aWV3LnJvd3MgKyBuIC0gMSk7Ci0gICAgZW5kQ29sID0gc3RkOjptaW4ocHJp
di0+bW9kZWwuY3VycmVudC5jb2x1bW5zIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgcHJp
di0+bW9kZWwuYmFzZS5jb2x1bW4gKyBwcml2LT52aWV3LmNvbHVtbnMgKyBuIC0gMSk7CisgICAg
SU5GKCJwcml2LT5tb2RlbC5iYXNlLnJvdyA9JWxkLCBuPSV1IHByaXYtPnZpZXcucm93cz0lbHUi
LCBwcml2LT5tb2RlbC5iYXNlLnJvdywgbiwgcHJpdi0+dmlldy5yb3dzKTsKKyAgICB1bnNpZ25l
ZCBsb25nIHN0YXJ0Um93ID0gcHJpdi0+bW9kZWwuYmFzZS5yb3cgLSBuOworICAgIHVuc2lnbmVk
IGxvbmcgc3RhcnRDb2wgPSBwcml2LT5tb2RlbC5iYXNlLmNvbHVtbiAtIG47CisgICAgdW5zaWdu
ZWQgbG9uZyBlbmRSb3cgPSBzdGQ6Om1pbihwcml2LT5tb2RlbC5jdXJyZW50LnJvd3MgLSAxLCBw
cml2LT5tb2RlbC5iYXNlLnJvdyArIHByaXYtPnZpZXcucm93cyArIG4gLSAxKTsKKyAgICB1bnNp
Z25lZCBsb25nIGVuZENvbCA9IHN0ZDo6bWluKHByaXYtPm1vZGVsLmN1cnJlbnQuY29sdW1ucyAt
IDEsIHByaXYtPm1vZGVsLmJhc2UuY29sdW1uICsgcHJpdi0+dmlldy5jb2x1bW5zICsgbiAtIDEp
OwogCi0gICAgSU5GKCJzdGFydFJvdz0lbHUsIGVuZFJvdz0lbHUsIHN0YXJ0Q29sPSVsdSwgZW5k
Q29sPSVsdSIsCi0gICAgICAgIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sLCBlbmRDb2wpOwor
ICAgIElORigic3RhcnRSb3c9JWx1LCBlbmRSb3c9JWx1LCBzdGFydENvbD0lbHUsIGVuZENvbD0l
bHUiLCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbCwgZW5kQ29sKTsKIAogICAgIHpvb20gPSBS
T1VOREVEX1pPT00ocHJpdi0+dmlldy50aWxlLndpZHRoLCB6b29tKTsKIAotICAgIGZvciAoaSA9
IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKQotICAgICAgICBmb3IgKGogPSBzdGFydENvbDsg
aiA8PSBlbmRDb2w7IGorKykKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaSA9IHN0YXJ0Um93OyBp
IDw9IGVuZFJvdzsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgaiA9IHN0YXJ0Q29s
OyBqIDw9IGVuZENvbDsgKytqKQogICAgICAgICAgICAgaWYgKCFfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2FkZChwcml2LCBqLCBpLCB6b29tKSkKICAgICAgICAg
ICAgICAgICBnb3RvIHN0YXJ0X3Byb2Nlc3Npbmc7CiAKIHN0YXJ0X3Byb2Nlc3Npbmc6CiAgICAg
X2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcHJvY2Vzc19pZGxlcl9zdGFydChwcml2KTsK
IAotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0
KHByaXYtPm1vZGVsLm1hdHJpeCk7Ci0gICAgaGVpZ2h0ID0gKGVuZFJvdyAtIHN0YXJ0Um93ICsg
MSkgKiBUSUxFX1NJWkVfQVRfWk9PTShwcml2LT52aWV3LnRpbGUuaGVpZ2h0LCB6b29tKTsKLSAg
ICB3aWR0aCA9IChlbmRDb2wgLSBzdGFydENvbCArIDEpICogVElMRV9TSVpFX0FUX1pPT00ocHJp
di0+dmlldy50aWxlLndpZHRoLCB6b29tKTsKKyAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRp
bGVVbnVzZWRDYWNoZSA9IGV3a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1v
ZGVsLm1hdHJpeCk7CisgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQgPSAoZW5kUm93IC0gc3RhcnRS
b3cgKyAxKSAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS5oZWlnaHQsIHpvb20p
OworICAgIHVuc2lnbmVkIGxvbmcgd2lkdGggPSAoZW5kQ29sIC0gc3RhcnRDb2wgKyAxKSAqIFRJ
TEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS53aWR0aCwgem9vbSk7CiAgICAgZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2xvY2tfYXJlYSh0aWxlVW51c2VkQ2FjaGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbCAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYt
PnZpZXcudGlsZS53aWR0aCwgem9vbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydFJvdyAqIFRJTEVfU0laRV9BVF9aT09NKHByaXYtPnZpZXcudGlsZS5oZWlnaHQs
IHpvb20pLCB3aWR0aCwgaGVpZ2h0LCB6b29tKTsKQEAgLTIwMjAsMjMgKzE5MTIsMjQgQEAgc3Rh
cnRfcHJvY2Vzc2luZzoKIHZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9j
YW5jZWwoRXZhc19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VU
X09SX1JFVFVSTihld2tCYWNraW5nU3RvcmUsIHByaXYpOwotICAgIEV3a19UaWxlX1VudXNlZF9D
YWNoZSogdGlsZVVudXNlZENhY2hlOwogCiAgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVxdWVzdF9jbGVhcihwcml2KTsKIAotICAgIHRpbGVVbnVzZWRDYWNoZSA9IGV3
a190aWxlX21hdHJpeF91bnVzZWRfY2FjaGVfZ2V0KHByaXYtPm1vZGVsLm1hdHJpeCk7CisgICAg
RXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUgPSBld2tfdGlsZV9tYXRyaXhf
dW51c2VkX2NhY2hlX2dldChwcml2LT5tb2RlbC5tYXRyaXgpOwogICAgIGV3a190aWxlX3VudXNl
ZF9jYWNoZV91bmxvY2tfYXJlYSh0aWxlVW51c2VkQ2FjaGUpOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmplY3QqIGV3a0JhY2tp
bmdTdG9yZSkKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZh
c19PYmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVS
Tihld2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKKwogICAgIHJldHVybiBfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIocHJpdik7CiB9CiAKLUVpbmFfQm9vbCBld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9lbmFibGVfcmVuZGVyKEV2YXNfT2JqZWN0KiBld2tCYWNraW5n
U3RvcmUpCitib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19P
YmplY3QqIGV3a0JhY2tpbmdTdG9yZSkKIHsKICAgICBQUklWX0RBVEFfR0VUX09SX1JFVFVSTihl
d2tCYWNraW5nU3RvcmUsIHByaXYsIGZhbHNlKTsKICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfY2hhbmdlZChwcml2KTsKKwogICAgIHJldHVybiBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
ZW5hYmxlX3JlbmRlcihwcml2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJpdmF0ZS5oCmluZGV4IDJhYTBiMWQuLjE1MzYy
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3ByaXZhdGUuaApAQCAtMzMsMTAgKzMzLDEwIEBACiAgKi8KICN1bmRlZiBERUJV
R19NRU1fTEVBS1MKIAotY29uc3QgaW50IGRlZmF1bHRUaWxlV2lkdGggPSAyNTY7Ci1jb25zdCBp
bnQgZGVmYXVsdFRpbGVIZWlndGggPSAyNTY7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxl
V2lkdGggPSAyNTY7CitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlSGVpZ3RoID0gMjU2Owog
Ci1jb25zdCBmbG9hdCB6b29tU3RlcE1pbmltdW0gPSAwLjAxOworc3RhdGljIGNvbnN0IGZsb2F0
IHpvb21TdGVwTWluaW11bSA9IDAuMDE7CiAKICNkZWZpbmUgVElMRV9TSVpFX0FUX1pPT00oU0la
RSwgWk9PTSkgKChpbnQpcm91bmRmKChTSVpFKSAqIChaT09NKSkpCiAjZGVmaW5lIFRJTEVfWk9P
TV9BVF9TSVpFKFNJWkUsIE9SSUdfVElMRSkgKChmbG9hdCkoU0laRSkgLyAoZmxvYXQpKE9SSUdf
VElMRSkpCkBAIC01NSwxMSArNTUsMTEgQEAgc3RydWN0IF9Fd2tfVGlsZV9TdGF0cyB7CiAgICAg
dW5zaWduZWQgaW50IG1pc3NlczsgICAgIC8qKjwgbnVtYmVyIG9mIHRpbWVzIGl0IGJlY2FtZSBk
aXJ0eSBidXQgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlcGFpbnRlZCBh
dCBhbGwgc2luY2UgaXQgd2FzIG5vdCB2aXNpYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KLSAgICBFaW5hX0Jvb2wgZnVsbF91cGRhdGUgOiAxOyAvKio8IHRpbGUgcmVxdWly
ZXMgZnVsbCBzaXplIHVwZGF0ZSAqLworICAgIGJvb2wgZnVsbF91cGRhdGUgOiAxOyAvKio8IHRp
bGUgcmVxdWlyZXMgZnVsbCBzaXplIHVwZGF0ZSAqLwogfTsKIAogc3RydWN0IF9Fd2tfVGlsZSB7
Ci0gICAgRWluYV9UaWxlciAqdXBkYXRlczsgICAgLyoqPCB1cGRhdGVkL2RpcnR5IGFyZWFzICov
CisgICAgRWluYV9UaWxlciogdXBkYXRlczsgICAgLyoqPCB1cGRhdGVkL2RpcnR5IGFyZWFzICov
CiAgICAgRXdrX1RpbGVfU3RhdHMgc3RhdHM7ICAgICAgIC8qKjwgdGlsZSB1c2FnZSBzdGF0aXN0
aWNzICovCiAgICAgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHJvdzsgLyoqPCB0aWxlIHRpbGUgcG9z
aXRpb24gKi8KICAgICBFdmFzX0Nvb3JkIHgsIHk7ICAgICAgICAvKio8IHRpbGUgY29vcmRpbmF0
ZSBwb3NpdGlvbiAqLwpAQCAtNzMsNDIgKzczLDQyIEBAIHN0cnVjdCBfRXdrX1RpbGUgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFsaWduZW1lbnQhCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgaW50IHZpc2libGU7ICAgICAgICAgICAg
ICAgICAgLyoqPCB2aXNpYmlsaXR5IGNvdW50ZXIgb2YgdGhpcyB0aWxlICovCi0gICAgRXZhc19P
YmplY3QgKmltYWdlOyAgICAgICAgICAgLyoqPCBFdmFzIEltYWdlLCB0aGUgdGlsZSB0byBiZSBy
ZW5kZXJlZCAqLworICAgIEV2YXNfT2JqZWN0KiBpbWFnZTsgICAgICAgICAgIC8qKjwgRXZhcyBJ
bWFnZSwgdGhlIHRpbGUgdG8gYmUgcmVuZGVyZWQgKi8KIH07CiAKIC8qIHZpZXcgKi8KLUV2YXNf
T2JqZWN0ICpld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hZGQoRXZhcyAqZSk7Ci0KLXZvaWQgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcmVuZGVyX2NiX3NldChFdmFzX09iamVjdCAqbywgRWluYV9C
b29sICgqY2IpKHZvaWQgKmRhdGEsIEV3a19UaWxlICp0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSAq
YXJlYSksIGNvbnN0IHZvaWQgKmRhdGEpOwotCi1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfc2Nyb2xsX2Z1bGxfb2Zmc2V0X3NldChFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9s
bF9mdWxsX29mZnNldF9hZGQoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgZHgsIEV2YXNfQ29v
cmQgZHkpOwotRWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9pbm5lcl9v
ZmZzZXRfYWRkKEV2YXNfT2JqZWN0ICpvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBF
dmFzX0Nvb3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwot
Ci1FaW5hX0Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV9zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0ICp6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5LCBFdmFzX0Nvb3Jk
ICpvZmZ4LCBFdmFzX0Nvb3JkICpvZmZ5KTsKLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV96b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3Jk
IGN4LCBFdmFzX0Nvb3JkIGN5KTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZml4X29m
ZnNldHMoRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKTsKLXZvaWQg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9zZXQoRXZhc19P
YmplY3QgKm8sIEVpbmFfQm9vbCBzbW9vdGhfc2NhbGUpOwotdm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9hbHBoYV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBoYXNfYWxwaGEpOwot
RWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZShFdmFzX09iamVjdCAqbywg
Y29uc3QgRWluYV9SZWN0YW5nbGUgKnVwZGF0ZSk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3VwZGF0ZXNfcHJvY2Vzc19wcmVfc2V0KEV2YXNfT2JqZWN0ICpvLCB2b2lkKigqY2IpKHZv
aWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvKSwgY29uc3Qgdm9pZCAqZGF0YSk7Ci12b2lkIGV3a190
aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2Vzc19wb3N0X3NldChFdmFzX09iamVjdCAq
bywgdm9pZCooKmNiKSh2b2lkICpkYXRhLCB2b2lkICpwcmVfZGF0YSwgRXZhc19PYmplY3QgKm8p
LCBjb25zdCB2b2lkICpkYXRhKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRl
c19wcm9jZXNzKEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dXBkYXRlc19jbGVhcihFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX2NvbnRlbnRzX3Jlc2l6ZShFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB3aWR0aCwgRXZh
c19Db29yZCBoZWlnaHQpOwotdm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9kaXNhYmxlZF91
cGRhdGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgdmFsdWUpOwotdm9pZCBld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9mbHVzaChFdmFzX09iamVjdCAqbyk7Ci12b2lkIGV3a190aWxlZF9i
YWNraW5nX3N0b3JlX2VuYWJsZV9zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCB2
YWx1ZSk7Ci0KLUV3a19UaWxlX1VudXNlZF9DYWNoZSAqZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVf
dGlsZV91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLXZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUgKnR1Yyk7Ci0KLUVpbmFfQm9vbCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCAqbywgRXZhc19Db29yZCB4LCBF
dmFzX0Nvb3JkIHksIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoLCBmbG9hdCB6b29tKTsKLUVp
bmFfQm9vbCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyhFdmFzX09iamVjdCAqbywgdW5zaWduZWQgaW50IG4sIGZsb2F0IHpvb20pOwotRWluYV9Cb29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNfT2Jq
ZWN0ICpvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3RhbmdsZSAqcmVuZGVy
X3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKLXZvaWQgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QgKm8pOwotCi1FaW5hX0Jvb2wg
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZV9yZW5kZXIoRXZhc19PYmplY3QgKm8pOwot
RWluYV9Cb29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2VuYWJsZV9yZW5kZXIoRXZhc19PYmpl
Y3QgKm8pOworRXZhc19PYmplY3QqIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2FkZChFdmFzKiBl
KTsKKwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9yZW5kZXJfY2Jfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBib29sICgqY2IpKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1Jl
Y3RhbmdsZSogYXJlYSksIGNvbnN0IHZvaWQqIGRhdGEpOworCitib29sIGV3a190aWxlZF9iYWNr
aW5nX3N0b3JlX3Njcm9sbF9mdWxsX29mZnNldF9zZXQoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29v
cmQgeCwgRXZhc19Db29yZCB5KTsKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfc2Nyb2xs
X2Z1bGxfb2Zmc2V0X2FkZChFdmFzX09iamVjdCogbywgRXZhc19Db29yZCBkeCwgRXZhc19Db29y
ZCBkeSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3Njcm9sbF9pbm5lcl9vZmZzZXRf
YWRkKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIGR4LCBFdmFzX0Nvb3JkIGR5LCBFdmFzX0Nv
b3JkIHgsIEV2YXNfQ29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOworCitib29s
IGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCog
em9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSwgRXZhc19Db29yZCogb2ZmeCwgRXZh
c19Db29yZCogb2ZmeSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3pvb21fd2Vha19z
ZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQg
Y3kpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9maXhfb2Zmc2V0cyhFdmFzX09iamVj
dCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgpOwordm9pZCBld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV96b29tX3dlYWtfc21vb3RoX3NjYWxlX3NldChFdmFzX09iamVjdCogbywgYm9vbCBz
bW9vdGhfc2NhbGUpOwordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9hbHBoYV9zZXQoRXZh
c19PYmplY3QqIG8sIGJvb2wgaGFzX2FscGhhKTsKK2Jvb2wgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfdXBkYXRlKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKTsK
K3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdXBkYXRlc19wcm9jZXNzX3ByZV9zZXQoRXZh
c19PYmplY3QqIG8sIHZvaWQqICgqY2IpKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvKSwgY29u
c3Qgdm9pZCogZGF0YSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJv
Y2Vzc19wb3N0X3NldChFdmFzX09iamVjdCogbywgdm9pZCogKCpjYikodm9pZCogZGF0YSwgdm9p
ZCogcHJlX2RhdGEsIEV2YXNfT2JqZWN0KiBvKSwgY29uc3Qgdm9pZCogZGF0YSk7Cit2b2lkIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfcHJvY2VzcyhFdmFzX09iamVjdCogbyk7Cit2
b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNfY2xlYXIoRXZhc19PYmplY3QqIG8p
Owordm9pZCBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9jb250ZW50c19yZXNpemUoRXZhc19PYmpl
Y3QqIG8sIEV2YXNfQ29vcmQgd2lkdGgsIEV2YXNfQ29vcmQgaGVpZ2h0KTsKK3ZvaWQgZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfZGlzYWJsZWRfdXBkYXRlX3NldChFdmFzX09iamVjdCogbywgYm9v
bCB2YWx1ZSk7Cit2b2lkIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2ZsdXNoKEV2YXNfT2JqZWN0
KiBvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3NjYWxlX3NldChFdmFz
X09iamVjdCogbywgYm9vbCB2YWx1ZSk7CisKK0V3a19UaWxlX1VudXNlZF9DYWNoZSogZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBvKTsKK3ZvaWQgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV91bnVzZWRfY2FjaGVfc2V0
KEV2YXNfT2JqZWN0KiBvLCBFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHR1Yyk7CisKK2Jvb2wgZXdr
X3RpbGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmplY3QqIG8sIEV2
YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCwgZmxv
YXQgem9vbSk7Citib29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKEV2YXNfT2JqZWN0KiBvLCB1bnNpZ25lZCBpbnQgbiwgZmxvYXQgem9vbSk7Citi
b29sIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJfc3BpcmFsX3F1ZXVlKEV2YXNf
T2JqZWN0KiBvLCBFaW5hX1JlY3RhbmdsZSogdmlld19yZWN0LCBFaW5hX1JlY3RhbmdsZSogcmVu
ZGVyX3JlY3QsIGludCBtYXhfbWVtb3J5LCBmbG9hdCB6b29tKTsKK3ZvaWQgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9jYW5jZWwoRXZhc19PYmplY3QqIG8pOworCitib29sIGV3
a190aWxlZF9iYWNraW5nX3N0b3JlX2Rpc2FibGVfcmVuZGVyKEV2YXNfT2JqZWN0KiBvKTsKK2Jv
b2wgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfZW5hYmxlX3JlbmRlcihFdmFzX09iamVjdCogbyk7
CiAKICNlbmRpZiAvLyBld2tfdGlsZWRfYmFja2luZ19zdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCA3NjE1NzA3Li5mNDA0YjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogc3Rh
dGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9DTEFT
U19JTklUX05VTEw7CiAKLXN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9j
Yih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEp
CitzdGF0aWMgYm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19U
aWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsKICAgICBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihk
YXRhKTsKICAgICBFaW5hX1JlY3RhbmdsZSByZWN0ID0ge2FyZWEtPnggKyB0aWxlLT54LCBhcmVh
LT55ICsgdGlsZS0+eSwgYXJlYS0+dywgYXJlYS0+aH07CkBAIC0zOCw3ICszOCw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGls
ZSogdGlsZSwgY29uc3QgRWluCiAgICAgRXdrX1BhaW50X0NvbnRleHQqIGNvbnRleHQgPSBld2tf
cGFpbnRfY29udGV4dF9mcm9tX2ltYWdlX2RhdGFfbmV3KHBpeGVscywgdGlsZS0+d2lkdGgsIHRp
bGUtPmhlaWdodCwgdGlsZS0+Y3NwYWNlKTsKIAogICAgIGV3a19wYWludF9jb250ZXh0X3RyYW5z
bGF0ZShjb250ZXh0LCAtdGlsZS0+eCwgLXRpbGUtPnkpOwotICAgIEVpbmFfQm9vbCByZXN1bHQg
PSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBjb250ZXh0LCAmcmVjdCk7CisgICAgYm9v
bCByZXN1bHQgPSBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCBjb250ZXh0LCAmcmVjdCk7
CiAgICAgZXdrX3BhaW50X2NvbnRleHRfZnJlZShjb250ZXh0KTsKIAogICAgIGV2YXNfb2JqZWN0
X2ltYWdlX2RhdGFfc2V0KHRpbGUtPmltYWdlLCBwaXhlbHMpOwpAQCAtNTYsOCArNTYsNyBAQCBz
dGF0aWMgdm9pZCogX2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCogZGF0
YSwgRXZhc19PYmplY3QqIGV3a1ZpZQogc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfdGls
ZWRfc21hcnRfYmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogewogICAgIEV2YXNfT2JqZWN0KiBiYWNraW5nU3RvcmUgPSBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9hZGQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGV3a190aWxlZF9iYWNraW5nX3N0
b3JlX3JlbmRlcl9jYl9zZXQKLSAgICAgICAgKGJhY2tpbmdTdG9yZSwgX2V3a192aWV3X3RpbGVk
X3JlbmRlcl9jYiwgc21hcnREYXRhLT5fcHJpdik7CisgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfcmVuZGVyX2NiX3NldChiYWNraW5nU3RvcmUsIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Is
IHNtYXJ0RGF0YS0+X3ByaXYpOwogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX3VwZGF0ZXNf
cHJvY2Vzc19wcmVfc2V0CiAgICAgICAgIChiYWNraW5nU3RvcmUsIF9ld2tfdmlld190aWxlZF91
cGRhdGVzX3Byb2Nlc3NfcHJlLCBzbWFydERhdGEtPl9wcml2KTsKICAgICByZXR1cm4gYmFja2lu
Z1N0b3JlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>