<?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>116037</bug_id>
          
          <creation_ts>2013-05-13 08:49:43 -0700</creation_ts>
          <short_desc>Frame::editor() should return a reference</short_desc>
          <delta_ts>2013-05-15 13:47:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>888299</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-13 08:49:43 -0700</bug_when>
    <thetext>Frame::editor() should return a reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888302</commentid>
    <comment_count>1</comment_count>
      <attachid>201571</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-13 08:56:34 -0700</bug_when>
    <thetext>Created attachment 201571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888623</commentid>
    <comment_count>2</comment_count>
      <attachid>201571</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-13 18:23:55 -0700</bug_when>
    <thetext>Comment on attachment 201571
Patch

Seems fine. Don’t break everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889269</commentid>
    <comment_count>3</comment_count>
      <attachid>201824</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 07:17:31 -0700</bug_when>
    <thetext>Created attachment 201824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889276</commentid>
    <comment_count>4</comment_count>
      <attachid>201824</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 07:25:42 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/468872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889277</commentid>
    <comment_count>5</comment_count>
      <attachid>201824</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 07:25:49 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/479418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889278</commentid>
    <comment_count>6</comment_count>
      <attachid>201824</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 07:28:29 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/479422</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889279</commentid>
    <comment_count>7</comment_count>
      <attachid>201824</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 07:30:39 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/472586</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889281</commentid>
    <comment_count>8</comment_count>
      <attachid>201824</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-15 07:33:47 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/481054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889285</commentid>
    <comment_count>9</comment_count>
      <attachid>201824</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-15 07:42:28 -0700</bug_when>
    <thetext>Comment on attachment 201824
Patch

Attachment 201824 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/472589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889286</commentid>
    <comment_count>10</comment_count>
      <attachid>201830</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 07:44:18 -0700</bug_when>
    <thetext>Created attachment 201830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889287</commentid>
    <comment_count>11</comment_count>
      <attachid>201830</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 07:51:52 -0700</bug_when>
    <thetext>Comment on attachment 201830
Patch

Attachment 201830 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/474522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889288</commentid>
    <comment_count>12</comment_count>
      <attachid>201830</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 07:52:11 -0700</bug_when>
    <thetext>Comment on attachment 201830
Patch

Attachment 201830 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/470550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889291</commentid>
    <comment_count>13</comment_count>
      <attachid>201830</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 07:58:40 -0700</bug_when>
    <thetext>Comment on attachment 201830
Patch

Attachment 201830 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/477472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889293</commentid>
    <comment_count>14</comment_count>
      <attachid>201830</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-15 08:03:20 -0700</bug_when>
    <thetext>Comment on attachment 201830
Patch

Attachment 201830 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/477471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889297</commentid>
    <comment_count>15</comment_count>
      <attachid>201830</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 08:08:12 -0700</bug_when>
    <thetext>Comment on attachment 201830
Patch

Attachment 201830 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/477475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889299</commentid>
    <comment_count>16</comment_count>
      <attachid>201832</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 08:17:06 -0700</bug_when>
    <thetext>Created attachment 201832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889301</commentid>
    <comment_count>17</comment_count>
      <attachid>201832</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 08:22:46 -0700</bug_when>
    <thetext>Comment on attachment 201832
Patch

Attachment 201832 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/468889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889302</commentid>
    <comment_count>18</comment_count>
      <attachid>201832</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 08:23:54 -0700</bug_when>
    <thetext>Comment on attachment 201832
Patch

Attachment 201832 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/477480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889303</commentid>
    <comment_count>19</comment_count>
      <attachid>201832</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 08:24:30 -0700</bug_when>
    <thetext>Comment on attachment 201832
Patch

Attachment 201832 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/467913</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889305</commentid>
    <comment_count>20</comment_count>
      <attachid>201832</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 08:26:02 -0700</bug_when>
    <thetext>Comment on attachment 201832
Patch

Attachment 201832 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/477481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889306</commentid>
    <comment_count>21</comment_count>
      <attachid>201833</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 08:30:51 -0700</bug_when>
    <thetext>Created attachment 201833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889310</commentid>
    <comment_count>22</comment_count>
      <attachid>201833</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 08:36:23 -0700</bug_when>
    <thetext>Comment on attachment 201833
Patch

Attachment 201833 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/471596</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889316</commentid>
    <comment_count>23</comment_count>
      <attachid>201833</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-15 08:57:11 -0700</bug_when>
    <thetext>Comment on attachment 201833
Patch

Attachment 201833 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/476554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889331</commentid>
    <comment_count>24</comment_count>
      <attachid>201842</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 09:20:26 -0700</bug_when>
    <thetext>Created attachment 201842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889358</commentid>
    <comment_count>25</comment_count>
      <attachid>201842</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-15 09:49:59 -0700</bug_when>
    <thetext>Comment on attachment 201842
Patch

Attachment 201842 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/475553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889367</commentid>
    <comment_count>26</comment_count>
      <attachid>201842</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-15 09:56:53 -0700</bug_when>
    <thetext>Comment on attachment 201842
Patch

Attachment 201842 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/480104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889382</commentid>
    <comment_count>27</comment_count>
      <attachid>201850</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 10:16:32 -0700</bug_when>
    <thetext>Created attachment 201850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889451</commentid>
    <comment_count>28</comment_count>
      <attachid>201865</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 12:39:44 -0700</bug_when>
    <thetext>Created attachment 201865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889459</commentid>
    <comment_count>29</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-15 12:47:29 -0700</bug_when>
    <thetext>Committed r150140: &lt;http://trac.webkit.org/changeset/150140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201571</attachid>
            <date>2013-05-13 08:56:34 -0700</date>
            <delta_ts>2013-05-15 07:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130513085530.patch</filename>
            <type>text/plain</type>
            <size>256603</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDViMjFjMTZiNzBkNTBi
NGMwYjUyYzdhZWExZTcwNTIyMGNkZWU1Yi4uYzA3MDg1ZDgyMTQyMDJhMjY5MzM2NjJmN2IxMDlj
MjFjYTY0OThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTEzICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWls
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIHJlZmVyZW5jZXMg
ZnJvbSBwcm9qZWN0cyBpbiBWaXN1YWwgU3R1ZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwppbmRleCBlNjU1YzNjMTQyNzdlMDg4ODMyYmQyOTM4YTVlNjdkNWIxN2E0NzM3Li5iMjYxNGZj
YjFmNzJiNGRhNWVkZjZiMTRhMWQxYTQ4MDk2ODRjNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0
dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkU3BlbGxDaGVja0Zv
Y3VzZWRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpET01TdXBwb3J0OjplbGVtZW50SGFz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0luUGFnZVNlYXJjaE1hbmFnZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
blBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpJblBhZ2VTZWFyY2hNYW5hZ2VyOjpzY29wZVN0cmluZ01hdGNoZXMpOgorICAg
ICAgICAqIFdlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OlNlbGVjdGlvbkhhbmRsZXI6OnNlbGVjdGVkVGV4dCk6CisKIDIwMTMt
MDUtMTAgIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgVVNFKE9TX1JBTkRPTU5FU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYWM4NGY0NGMwYjFh
Zjc3MjhmNTBlYWQxZDk2NjUwODA5MzU4ZGViNC4uZmI2ZGQ3YjgwZTY0NjQ1ZWZiZGFlMjZlNDdk
ZjNkOWUxM2E3YzlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA1
LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJh
bWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEVmbDo6aXNDb21tYW5kRW5hYmxlZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKKyAgICAgICAgKGV3a19mcmFtZV9lZGl0YWJsZV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1l
X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfc2VhcmNoKToKKyAgICAg
ICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayk6CisgICAgICAgIChld2tfZnJhbWVfdGV4
dF9tYXRjaGVzX2hpZ2hsaWdodF9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfZ2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
ZXdrX3ZpZXdfc2VsZWN0aW9uX2dldCk6CisgICAgICAgIChld2tfdmlld19lZGl0b3JfY29tbWFu
ZF9leGVjdXRlKToKKwogMjAxMy0wNS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFN0b3AgaW5jbHVkaW5nIFVudXNlZFBhcmFtLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCAzZjAyMmE0ZjE2ZDdjYjQwMDkwYWFiMDIzNjFmMTMxOTBkZDQ5ODM2Li5mYjMz
Yjk0YjdiMzljZGU5NDdlOWQ3NjQxNDA0MjQxYWE3ODllMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTMtMDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBGcmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVy
ZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnBhaW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVj
dXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
Ojppc0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1l
dGhvZEZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRl
cjo6Y2FuRWRpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6
Y29uZmlybUNvbXBvc2l0aW9uVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1l
dGhvZEZpbHRlcjo6Y29uZmlybUN1cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9m
cmFtZV9yZXBsYWNlX3NlbGVjdGlvbik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAoZ2V0TG9jYXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfcmVhbF9zZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19yZWFsX2N1dF9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29w
eV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19yZWFsX3Bhc3RlX2NsaXBib2FyZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hp
Z2hsaWdodF90ZXh0X21hdGNoZXMpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRf
Y2xpcGJvYXJkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2RlbGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X3NldF9lZGl0YWJsZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8p
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xMiAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgaW5jbHVk
aW5nIFVudXNlZFBhcmFtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAzNjc1M2RjNjA0ZWQyNTcwZDg0
NGRlNmI4ZWQyMzcwOWIyNTczODJmLi42ZWYwMDc5NDRiYmViZjYyNTY1YWMzNzg4ZTc2NzMxNjZj
NDMxZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTMtMDUtMTMgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFtZTo6ZWRp
dG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfc2VsZWN0ZWRTdHJpbmddKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2ZpcnN0
UmVjdEZvckRPTVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfbWFya0RPTVJhbmdlXSk6
CisgICAgICAgICgtW1dlYkZyYW1lIF9pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3NldFR5cGluZ1N0eWxlOndpdGhVbmRvQWN0
aW9uOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVu
dDpzZWxlY3RSZXBsYWNlbWVudDpzbWFydFJlcGxhY2U6bWF0Y2hTdHlsZTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJl
cHJlc2VudGF0aW9uIGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9wYXN0ZVdp
dGhQYXN0ZWJvYXJkOmFsbG93UGxhaW5UZXh0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
c2hvdWxkRGVsZXRlUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5FZGl0XSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5FZGl0UmljaGx5XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IF9pbnNlcnRPcmRlcmVkTGlzdF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0VW5vcmRlcmVkTGlzdF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuSW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkRlY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9pbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBfZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
RWRpdG9yOjpjb3JlQ29tbWFuZEJ5U2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IEVkaXRvcjo6Y29yZUNvbW1hbmRCeU5hbWU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZh
bGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IF9zZWxlY3Rpb25TdGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX2FwcGx5U3R5bGVUb1NlbGVjdGlvbjp3aXRoVW5kb0FjdGlvbjpdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgX2NoYW5nZUNTU0NvbG9yVXNpbmdTZWxlY3RvcjppblJhbmdlOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGVja1NwZWxsaW5nOl0pOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBzaG93R3Vlc3NQYW5lbDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdG9nZ2xl
QmFzZVdyaXRpbmdEaXJlY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNoYW5nZUJh
c2VXcml0aW5nRGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2hhbmdlQmFz
ZVdyaXRpbmdEaXJlY3Rpb25UbzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3VwZGF0ZUZv
bnRQYW5lbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtYXJrZWRSYW5nZV0pOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBoYXNNYXJrZWRUZXh0XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3
IHVubWFya1RleHRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dDpzZWxl
Y3RlZFJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBkb0NvbW1hbmRCeVNlbGVjdG9y
Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBpbnNlcnRUZXh0Ol0pOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBfdXBkYXRlU2VsZWN0aW9uRm9ySW5wdXRNYW5hZ2VyXSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IGNvdW50TWF0Y2hlc0ZvclRleHQ6aW5ET01SYW5nZTpvcHRpb25zOmxpbWl0
Om1hcmtNYXRjaGVzOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRNYXJrZWRUZXh0TWF0
Y2hlc0FyZUhpZ2hsaWdodGVkOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9maW5kU3Ry
aW5nOm9wdGlvbnM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9leGVjdXRlQ29yZUNvbW1hbmRCeU5hbWU6dmFsdWU6XSk6CisgICAgICAgICgt
W1dlYlZpZXcgZWRpdGFibGVET01SYW5nZUZvclBvaW50Ol0pOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEVkaXRhYmxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRlbGV0ZVNlbGVjdGlvbl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGFwcGx5U3R5bGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgdHlw
aW5nQXR0cmlidXRlc10pOgorICAgICAgICAoLVtXZWJWaWV3IF9zaW1wbGlmeU1hcmt1cDplbmRO
b2RlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0
Ol0pOgorCiAyMDEzLTA1LTEzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViUHJvY2VzcyBjb25zdW1pbmcgdmVyeSBoaWdoIENQVSBvbiBsaW5rZWRpbi5jb20K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggMTVjZmZiMmQ3M2JkYjM4MDU0NWVmMWU3NDY4ZDBiMGVmN2IzZjc0
ZS4uNWIzY2Y2OTQ1NzEyYjQ4M2MyOGQyOGY5M2Q5OTAzYmE4ZjE2N2Y0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0wOSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW1F0XVtXSzFdUkVHUkVTU0lPTihyMTQ5NTMyKSB0c3RfcXdlYmVsZW1lbnQgYW5kIHRzdF9x
d2ViZnJhbWUgQVBJIHRlc3RzIGNyYXNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDExYWQ3NWYwMWYw
MWE5M2RkM2M2MTYwMjY4YzQyNzVkYzJhMWE2NGEuLmIyZGI3NWVhNTAwM2JkMzFjZjEwNWYyNjcw
OTg0YjgzMmE4Y2M3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMy0w
NS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZy
YW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hX
aXRoR29vZ2xlKToKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6
aGFzU3BlbGxpbmdNYXJrZXIpOgorICAgICAgICAoV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24p
OgorICAgICAgICAoV2ViRnJhbWU6OnNlbGVjdGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1l
OjpzZWxlY3RBbGwpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
ZXhlY0NvbW1hbmQpOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZl
bnQpOgorICAgICAgICAoV2ViVmlldzo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKToKKyAgICAg
ICAgKFdlYlZpZXc6OnNlbGVjdGVkVGV4dCk6CisgICAgICAgIChXZWJWaWV3OjpkZWxldGVFbmFi
bGVkKToKKyAgICAgICAgKFdlYlZpZXc6OmVkaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYlZp
ZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCk6CisgICAgICAgIChXZWJWaWV3Ojpjb3B5KToK
KyAgICAgICAgKFdlYlZpZXc6OmN1dCk6CisgICAgICAgIChXZWJWaWV3OjpwYXN0ZSk6CisgICAg
ICAgIChXZWJWaWV3Ojpjb3B5VVJMKToKKyAgICAgICAgKFdlYlZpZXc6OmRlbGV0ZV8pOgorICAg
ICAgICAoV2ViVmlldzo6Y2hlY2tTcGVsbGluZyk6CisgICAgICAgIChXZWJWaWV3OjpzaG93R3Vl
c3NQYW5lbCk6CisgICAgICAgIChXZWJWaWV3OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucyk6Cisg
ICAgICAgIChXZWJWaWV3OjpwcmVwYXJlQ2FuZGlkYXRlV2luZG93KToKKyAgICAgICAgKFdlYlZp
ZXc6OnJlc2V0SU1FKToKKyAgICAgICAgKFdlYlZpZXc6OnVwZGF0ZVNlbGVjdGlvbkZvcklNRSk6
CisgICAgICAgIChXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYlZpZXc6
Om9uSU1FRW5kQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0Q2hh
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FUmVxdWVzdCk6CisgICAgICAgIChX
ZWJWaWV3OjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6aGFz
Q29tcG9zaXRpb25Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYlZpZXc6OmNvbmZpcm1Db21wb3Np
dGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6Y29tcG9zaXRpb25SYW5nZUZvclRl
c3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VGb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYlZpZXc6OnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKToKKwog
MjAxMy0wNS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3AgaW5jbHVkaW5nIFVudXNlZFBhcmFtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXgg
ZWNiOWEyYzAwZDVkZmI5YTNlOWEwYjFkNTIwNGVjYjdhOThmNGU1NC4uOGUzNGMwMTgyMzA0MzFl
NDExMTc5ZmU0YmQ3N2M1ZGY3ZTZlZjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKwogMjAxMy0wNC0yOSAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NDczZmFmODQ1MTBmM2Y1ZjYzM2E3NWY4M2JhNzNi
NjU3YWNkZTUxLi44MGJmMGJiZWU2YjZkODY3NzVlNTRhZTliNDNkYTU0Njc2N2I4NGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTMtMDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVy
biBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29n
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVHbG9iYWxTZWxl
Y3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRv
ckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6aGFuZGxl
SW5wdXRNZXRob2RLZXlkb3duKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JD
bGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OmNoYW5nZVdvcmRDYXNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c2VsZWN0aW9uQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c2V0VGV4dERp
cmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmV4ZWN1dGVFZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dmFs
aWRhdGVDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tl
eWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cHBlcmNhc2VXb3JkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG93ZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNhcGl0YWxpemVXb3JkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxl
QWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRD
b21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNDb21w
b3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb25maXJtQ29t
cG9zaXRpb25Gb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYW5j
ZWxDb21wb3NpdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5k
c0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRDb21wb3NpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydERpY3Rh
dGVkVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQp
OgorCiAyMDEzLTA1LTEzICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViUHJvY2VzcyBjb25zdW1pbmcgdmVyeSBoaWdoIENQVSBvbiBsaW5rZWRpbi5jb20KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IGU2Y2YzYWFjODlhNzdlOTgzNDEzZjc2OTQyZDQ3ZjcyMzgyMzdmNTQuLjlkMjFm
YWEzOTgwZDMwMDMwOGVlMDBmNGFhMjk0Yjc5YzAwNDFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIwLDEx
ICszMjAsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3NwZWxsaW5nKCkgY29u
c3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgRWRp
dG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKICAg
ICAKLSAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3ItPnRleHRDaGVj
a2VyKCk7CisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyID0gZWRpdG9yLnRleHRD
aGVja2VyKCk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA0NDdmYzE3
MDU5YjdhYTJiYjc4ZDliNmRlNzgwMzViMDEwYjJkYmZkLi45ZjNhOTU4NTg2N2RkM2FiZTA4NmY2
YTEwYjM3ZTc2YTYzYzRkYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtNzI0LDcgKzcyNCw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0
U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKIHsKICAgICBp
ZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKSkg
ewogICAgICAgICAvLyBDaGVjayB0aGUgc3BlbGxpbmcgZGlyZWN0bHkgc2luY2UgZG9jdW1lbnQt
Pm1hcmtlcnNGb3JOb2RlKCkgZG9lcyBub3Qgc3RvcmUgdGhlIG1pc3NwZWxsZWQgbWFya2luZyB3
aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLgotICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCog
Y2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tl
cigpOworICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLnRleHRDaGVja2VyKCk7CiAgICAgICAgIAogICAgICAgICAv
LyBjaGVja1RleHRPZlBhcmFncmFwaCBpcyB0aGUgb25seSBzcGVsbGluZy9ncmFtbWFyIGNoZWNr
ZXIgaW1wbGVtZW50ZWQgaW4gV0sxIGFuZCBXSzIKICAgICAgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKQEAgLTc0Miw3ICs3NDIsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJp
bmcsCiAgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7CiAgICAgd2hpbGUgKGNoYXJMZW5ndGgg
PiAwKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBv
c2l0aW9uOwotICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOworICAgICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LnRleHRDaGVja2VyKCk7CiAgICAgICAgIAogICAgICAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlv
biA9IC0xOwogICAgICAgICBpbnQgbWlzc3BlbGxpbmdMZW5ndGggPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDYwZTJmMTFmY2Y1OTY2NmZiNmY5YTkzNjU0ZmQ3YzUy
ZjcwN2QzZWMuLmQxNjZiOTdjZDRjOTM3ZDNhODNkYzUyMjkxODFjZmVjODNhODA4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTg0MSw3ICs4NDEsNyBAQCB2b2lkIENv
bnRhaW5lck5vZGU6OmNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlICpjbG9uZSkKICNpZiBF
TkFCTEUoREVMRVRJT05fVUkpCiAgICAgSFRNTEVsZW1lbnQqIGRlbGV0ZUJ1dHRvbkNvbnRhaW5l
ckVsZW1lbnQgPSAwOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
KQotICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50ID0gZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmNvbnRhaW5lckVsZW1lbnQoKTsKKyAgICAgICAg
ZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS5kZWxldGVCdXR0
b25Db250cm9sbGVyKCktPmNvbnRhaW5lckVsZW1lbnQoKTsKICAgICBjbG9uZUNoaWxkTm9kZXNB
dm9pZGluZ0RlbGV0ZUJ1dHRvbih0aGlzLCBjbG9uZSwgZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxl
bWVudCk7CiAjZWxzZQogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDM3ZjVlNjE3NTkyOWFm
MzY2Nzg3ZjgzMDUyMzY2NDNhMDMxN2RiYTIuLjY0NmIwYjE0MzUxYTg5OTJiYzIzMjFjYmZlZDQ3
ZWFkYTZlZDMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBA
IHN0YXRpYyBib29sIGFjY2VwdHNFZGl0aW5nRm9jdXMoTm9kZSogbm9kZSkKICAgICBpZiAoIWZy
YW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLT5zaG91bGRCZWdpbkVkaXRpbmcocmFuZ2VPZkNvbnRlbnRzKHJvb3QpLmdldCgp
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZU9m
Q29udGVudHMocm9vdCkuZ2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NBbmNlc3Rv
cihjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlU2VjdXJpdHlPcmlnaW4sIEZyYW1lKiB0YXJn
ZXRGcmFtZSkKQEAgLTMzNjAsNyArMzM2MCw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRO
b2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJwTmV3Rm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAob2xkRm9j
dXNlZE5vZGUtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICAgICAgICAgZnJhbWUoKS0+
ZWRpdG9yKCktPmRpZEVuZEVkaXRpbmcoKTsKKyAgICAgICAgICAgIGZyYW1lKCktPmVkaXRvcigp
LmRpZEVuZEVkaXRpbmcoKTsKIAogICAgICAgICBpZiAodmlldygpKSB7CiAgICAgICAgICAgICBX
aWRnZXQqIG9sZFdpZGdldCA9IHdpZGdldEZvck5vZGUob2xkRm9jdXNlZE5vZGUuZ2V0KCkpOwpA
QCAtMzQwOSw3ICszNDA5LDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1Jl
ZlB0cjxOb2RlPiBwcnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgbV9m
b2N1c2VkTm9kZS0+c2V0Rm9jdXModHJ1ZSk7CiAKICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUt
PmlzUm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkt
PmRpZEJlZ2luRWRpdGluZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkQmVn
aW5FZGl0aW5nKCk7CiAKICAgICAgICAgLy8gZXd3LCBJIHN1Y2suIHNldCB0aGUgcXQgZm9jdXMg
Y29ycmVjdGx5CiAgICAgICAgIC8vICMjIyBmaW5kIGEgYmV0dGVyIHBsYWNlIGluIHRoZSBjb2Rl
IGZvciB0aGlzCkBAIC00MTkwLDcgKzQxOTAsNyBAQCBzdGF0aWMgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBibwog
CiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUsCisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lLAogICAgICAgICB1c2VySW50ZXJmYWNlID8gQ29tbWFu
ZEZyb21ET01XaXRoVXNlckludGVyZmFjZSA6IENvbW1hbmRGcm9tRE9NKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggNjEzYWFmOTg4OTAzYjQ3OTEzNWRmZGJlMWE4ZGJmZTVkZDc0ODUzNy4uOWVlZWUyZDA1
ODdhNTU0NjIxY2E0MGI1MGMzZjBhMzQ0ZTBlOGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMzksNyArMzM5
LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KikKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0
KHNlbGVjdGlvbi5zdGFydCgpLCBzZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBwID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsK
ICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlv
bihwLCBzdGFydCk7Ci0gICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRD
aGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBh
bmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVu
dCB8IFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBlUmV2ZXJzaW9uOiB7CkBAIC03NDIsOSArNzQyLDkgQEAg
VmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0aW9uQWx0ZXJu
YXRpdmVzRm9yTWFya2VyKGNvbnN0IEQKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6
YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5n
KQogewogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIEVkaXRvciogZWRpdG9y
ID0gbV9mcmFtZS0+ZWRpdG9yKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBlZGl0
b3ItPnNlbGVjdGVkUmFuZ2UoKTsKLSAgICBpZiAoIXNlbGVjdGlvbiB8fCAhZWRpdG9yLT5zaG91
bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvblBhc3RlZCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3Io
KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci5zZWxlY3RlZFJhbmdlKCk7
CisgICAgaWYgKCFzZWxlY3Rpb24gfHwgIWVkaXRvci5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0
aXZlU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBz
ZWxlY3Rpb24tPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKICAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0gbWFy
a2Vycy0+bWFya2Vyc0luUmFuZ2Uoc2VsZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZTdmOWYwMGI2NjkzMjMyMmNkZDNlNTgwOTFhNzcxZGM4
ZmM5NThmNi4uZDIyZjhiOTE5Mjk5OTUzOGY4MjY4MTQzYTAxNThmYTRjZmI4Nzk4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkoKQogICAg
ICAgICAgICAgbV9jb21tYW5kc1tpIC0gMV0tPmRvVW5hcHBseSgpOwogICAgIH0KIAotICAgIGZy
YW1lLT5lZGl0b3IoKS0+dW5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkudW5hcHBsaWVkRWRpdGluZyh0aGlzKTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOjpyZWFwcGx5KCkKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9z
aXRpb246OnJlYXBwbHkoKQogICAgICAgICAgICAgbV9jb21tYW5kc1tpXS0+ZG9SZWFwcGx5KCk7
CiAgICAgfQogICAgIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVhcHBsaWVkRWRpdGluZyh0aGlz
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucmVhcHBsaWVkRWRpdGluZyh0aGlzKTsKIH0KIAogdm9p
ZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjphcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqIGNvbW1h
bmQpCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHko
KQogICAgIC8vIE9ubHkgbmVlZCB0byBjYWxsIGFwcGxpZWRFZGl0aW5nIGZvciB0b3AtbGV2ZWwg
Y29tbWFuZHMsCiAgICAgLy8gYW5kIFR5cGluZ0NvbW1hbmRzIGRvIGl0IG9uIHRoZWlyIG93biAo
c2VlIFR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZCkuCiAgICAgaWYgKCFj
YWxsc0FwcGxpZWRFZGl0aW5nSW5Eb0FwcGx5KCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
YXBwbGllZEVkaXRpbmcodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRp
dGluZyh0aGlzKTsKICAgICBzZXRTaG91bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihm
YWxzZSk7CiB9CiAKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFw
CiAgICAgLy8gRklYTUUgKDUwOTg5MzEpOiBXZSBzaG91bGQgYWRkIGEgbmV3IGluc2VydCBhY3Rp
b24gIldlYlZpZXdJbnNlcnRBY3Rpb25Nb3ZlZCIgYW5kIGNhbGwgc2hvdWxkSW5zZXJ0RnJhZ21l
bnQgaGVyZS4KICAgICAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihz
dGFydCwgZW5kLCBET1dOU1RSRUFNKSk7Ci0gICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCktPmNsZWFyTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7Cisg
ICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY2xlYXJNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpOwogCiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFs
ZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRvY3VtZW50KCkpOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZyYWdtZW50LCBvcHRpb25z
KSk7CiAKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+bWFya01pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOworICAgIGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLm1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlv
bigpKTsKIAogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gaXMgaW4gYW4gZW1wdHkgcGFyYWdyYXBo
LCByZXN0b3JlIHN0eWxlcyBmcm9tIHRoZSBvbGQgZW1wdHkgcGFyYWdyYXBoIHRvIHRoZSBuZXcg
ZW1wdHkgcGFyYWdyYXBoLgogICAgIGJvb2wgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCA9IGVu
ZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXQoKSAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgoZW5kaW5nU2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0
aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24u
Y3BwCmluZGV4IDI0NmE5NTIyNmRhOTYwNjUxNTIxZTMyMTFjYzc5MmM0NThiZWJhZjMuLjc3MmIy
YTkzNmQwM2YzMzY4MTVjZGNkMGU0ZjljYjc0ODUwNzhhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxEZWxldGVC
dXR0b24+IERlbGV0ZUJ1dHRvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHZvaWQgRGVs
ZXRlQnV0dG9uOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBkb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5kZWxl
dGVUYXJnZXQoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuZGVsZXRl
QnV0dG9uQ29udHJvbGxlcigpLT5kZWxldGVUYXJnZXQoKTsKICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAppbmRleCBlZDRiM2I3YWVj
M2U2MGQzYmJhNzU0NjM1MTA2MWM2MDU4NGUyOGRjLi5mNWQ2NTE1OGM5MGVhZDFkMGQ4ZjZhODdm
YzQ0MWVkODg3NzY2OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
QnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIERlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbmFibGVk
KCkgfHwgIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmluRG9jdW1lbnQoKSB8fCAhaXNEZWxldGFibGVF
bGVtZW50KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCA9IG1fZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKTsKKyAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCA9IG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpOwogICAgIGlmICghY2xpZW50IHx8ICFj
bGllbnQtPnNob3VsZFNob3dEZWxldGVJbnRlcmZhY2UoZWxlbWVudCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIu
aAppbmRleCBmYTBjYjlmYzU2YWU4MjlkMWI0N2I5M2EwN2EwMmQwZWE1NzQzMzNlLi43YTExM2E5
Mzk5YmI3ZGRhNzg1YzhiMjc0MGNhNTc3ZWY0OGQzNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaApAQCAtODMsMTMgKzgzLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1l
KQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCkt
PmRpc2FibGUoKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250
cm9sbGVyKCktPmRpc2FibGUoKTsKICAgICB9CiAKICAgICB+RGVsZXRlQnV0dG9uQ29udHJvbGxl
ckRpc2FibGVTY29wZSgpCiAgICAgewogICAgICAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwor
ICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5l
bmFibGUoKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA2ZTdmNDRhYTRlNjRmNzI2OGVkYjdh
ODZjMWRlNTJmOThiYjU0YmE4Li40M2E4ZWM5MjM1OWJiN2U5ZTQyMjkwYTFlYjcxMzU2NzgwOWE0
ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
Om1lcmdlUGFyYWdyYXBocygpCiAgICAgCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlVG9CZVJlcGxhY2VkID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURl
c3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1l
cmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSk7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50KCktPnNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBsYWNlZC5n
ZXQoKSkpCisgICAgaWYgKCFkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5jbGllbnQoKS0+
c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2Vk
LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIG1vdmVQYXJhZ3JhcGhzIHdp
bGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBpZiBpdCByZW1vdmVzIGJsb2NrcyB0aGF0IHdvdWxkIHJl
cXVpcmUgdGhlaXIgdXNlLCBkb24ndCBsZXQgYmxvY2sKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lk
IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIGlmICghbV9yZXBsYWNlKSB7
CiAgICAgICAgIEVsZW1lbnQqIHRleHRDb250cm9sID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9s
KG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKSk7CiAgICAgICAgIGlmICh0ZXh0Q29udHJvbCAm
JiB0ZXh0Q29udHJvbC0+Zm9jdXNlZCgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQodGV4dENvbnRyb2wpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudGV4dFdpbGxCZURlbGV0
ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CiAgICAgfQogCiAgICAgLy8gc2F2ZSB0aGlzIHRv
IGxhdGVyIG1ha2UgdGhlIHNlbGVjdGlvbiB3aXRoCkBAIC04NTQsNyArODU0LDcgQEAgdm9pZCBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKIAogICAgIGlmICghb3JpZ2luYWxTdHJp
bmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5m
cmFtZSgpKQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVkQXV0b2NvcnJlY3Rp
b25BdFBvc2l0aW9uKG1fZW5kaW5nUG9zaXRpb24sIG9yaWdpbmFsU3RyaW5nKTsKKyAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKG1fZW5k
aW5nUG9zaXRpb24sIG9yaWdpbmFsU3RyaW5nKTsKICAgICB9CiAKICAgICBzZXRFbmRpbmdTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX2VuZGluZ1Bvc2l0aW9uLCBhZmZpbml0eSwgZW5kaW5n
U2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuY3BwCmluZGV4IGJlNWVmMTU2NmZlYzdjMmFmY2UyNmQwN2E2NzEwZjM2NzEyOGI3MmQu
LmViNTI3NjhkZjQxOWRlNzkwMjJiNzJhZmVlN2Q0YTg4N2EzMGZmYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIEVkaXRDb21tYW5kOjpF
ZGl0Q29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQp
OwogICAgIEFTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBzZXRTdGFydGluZ1NlbGVj
dGlvbihtX2RvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+YXZvaWRJbnRlcnNlY3Rpb25XaXRo
RGVsZXRlQnV0dG9uQ29udHJvbGxlcihtX2RvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkpKTsKKyAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihtX2RvY3VtZW50LT5mcmFt
ZSgpLT5lZGl0b3IoKS5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOwogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0aW5nU2VsZWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDE4ZWU1ZTYzZTE3Y2QwMDE3Y2JmNDNlMjQ1
ZTkwMzQyMDFmNTQ1MmYuLjA4MWM1ZGVkOTVmNjQyY2FmN2I3YzQ2YTdkNmZlMGQ0OWIwYzg1ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEzNDQsNyArMTM0
NCw3IEBAIFN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0
PiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oc3R5bGUtPnN0eWxlKCksIGNvbXB1
dGVkU3R5bGUuZ2V0KCkpOwogCiAgICAgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVz
KG11dGFibGVTdHlsZS5nZXQoKSk7Ci0gICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9y
KCktPnNob3VsZFN0eWxlV2l0aENTUygpKQorICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCktPmVk
aXRvcigpLnNob3VsZFN0eWxlV2l0aENTUygpKQogICAgICAgICBleHRyYWN0VGV4dFN0eWxlcyhk
b2N1bWVudCwgbXV0YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxlLT51c2VGaXhlZEZvbnRE
ZWZhdWx0U2l6ZSgpKTsKIAogICAgIC8vIENoYW5naW5nIHRoZSB3aGl0ZXNwYWNlIHN0eWxlIGlu
IGEgdGFiIHNwYW4gd291bGQgY29sbGFwc2UgdGhlIHRhYiBpbnRvIGEgc3BhY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYzBlYmUwODNiZTA3MzY2MjQ1ZGRiMTAzY2I5Yjk5Zjdh
ODhlMzg2Ni4uN2Q0ODIzMjBmYjY2MWM2OTViOTExYTQyOWIxNjAxNDNlMzQ0YWNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjAwOCw5ICsyMDA4LDkgQEAgdm9pZCBFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24g
JndvcmRTdGFydCwKICAgICAgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rp
b24obmV3U2VsZWN0aW9uKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghZnJhbWUoKS0+ZWRp
dG9yKCktPnNob3VsZEluc2VydFRleHQoYXV0b2NvcnJlY3RlZFN0cmluZywgbWlzc3BlbGxpbmdS
YW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQorICAgICAgICBpZiAoIWZyYW1l
KCktPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQoYXV0b2NvcnJlY3RlZFN0cmluZywgbWlzc3Bl
bGxpbmdSYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGZyYW1lKCkt
PmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBm
YWxzZSwgZmFsc2UpOwogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3Rl
ciBmdXJ0aGVyLgogICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+bW92ZVRvKGZyYW1lKCkt
PnNlbGVjdGlvbigpLT5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcAppbmRleCBiMzBmZjhhNjE3ZjA0MTQ4OWZlYzRiZmUyZjQ3NjllNzc1NzQ5ZDc4Li45OGMz
MDFiMmVhM2Y4MmE1NDY5ZDU0ZjJkNjUwNGJhMWNhNDc3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTEwNSwxMSArMTA1LDExIEBAIHN0YXRpYyBib29s
IGFwcGx5Q29tbWFuZFRvRnJhbWUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgRWRpdEFjCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHls
ZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0
PwogICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJp
bmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0
eWxlLCBhY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0
aW9uKHN0eWxlLCBhY3Rpb24pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1h
bmRGcm9tRE9NOgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjQsMTAgKzE2NCwxMCBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdAogICAgIC8vIG90aGVyOiBwcmVzZW50IHRocm91Z2hvdXQgdGhlIHNl
bGVjdGlvbgogCiAgICAgYm9vbCBzdHlsZUlzUHJlc2VudDsKLSAgICBpZiAoZnJhbWUtPmVkaXRv
cigpLT5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24o
KSkKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7CisgICAgaWYgKGZyYW1lLT5lZGl0b3Io
KS5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkK
KyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRI
YXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlSXNQ
cmVzZW50ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBv
blZhbHVlKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgICAgIHN0eWxlSXNQcmVzZW50ID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVU
cmlTdGF0ZTsKIAogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUocHJvcGVydHlJRCwgc3R5bGVJc1ByZXNlbnQgPyBvZmZWYWx1ZSA6IG9uVmFsdWUp
OwogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwg
c3R5bGUtPnN0eWxlKCkpOwpAQCAtMTgwLDExICsxODAsMTEgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4g
dGhlIHNvdXJjZSBpcyBET007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAg
c3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24o
c3R5bGUuZ2V0KCksIGFjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFn
cmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURP
TVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5UGFyYWdy
YXBoU3R5bGUoc3R5bGUuZ2V0KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlQYXJh
Z3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgYm9vbCBl
eHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lKiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgUmVmUHRyPFJhbmdlPiBvbGRS
YW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2Uo
KTsKICAgICBFQWZmaW5pdHkgYWZmaW5pdHkgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmFmZmluaXR5
KCk7Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxl
Y3RlZFJhbmdlKG9sZFJhbmdlLmdldCgpLCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNl
KSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkQ2hhbmdlU2VsZWN0
ZWRSYW5nZShvbGRSYW5nZS5nZXQoKSwgbmV3UmFuZ2UuZ2V0KCksIGFmZmluaXR5LCBmYWxzZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVj
dGVkUmFuZ2UobmV3UmFuZ2UuZ2V0KCksIGFmZmluaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTIyNiwxNiArMjI2LDE2IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3Jh
bnVsYXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAKIHN0YXRp
YyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lKiBmcmFtZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBjb25zdCBjaGFyKiBkZXNpcmVkVmFsdWUpCiB7Ci0gICAgaWYgKGZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUo
cHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJ
RCwgZGVzaXJlZFZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hv
dWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJl
ZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOwog
fQogCiBzdGF0aWMgU3RyaW5nIHZhbHVlU3R5bGUoRnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQpCiB7CiAgICAgLy8gRklYTUU6IFJhdGhlciB0aGFuIHJldHJpZXZpbmcgdGhl
IHN0eWxlIGF0IHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sCiAgICAgLy8gd2Ug
c2hvdWxkIHJldHJpZXZlIHRoZSBzdHlsZSBwcmVzZW50IHRocm91Z2hvdXQgdGhlIHNlbGVjdGlv
biBmb3Igbm9uLU1hYyBwbGF0Zm9ybXMuCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwog
fQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVUZXh0V3JpdGluZ0RpcmVjdGlvbihGcmFtZSogZnJh
bWUsIFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVCYWNrQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVDb3B5KEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29weSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTI5OCwxOCArMjk4LDE4IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVDdXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBj
b25zdCBTCiB7CiAgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcp
IHsKICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGlj
YXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y3V0KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jdXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJkaXYiKSkKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5zZXREZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFn
cmFwaFNlcGFyYXRvcklzRGl2KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldERlZmF1bHRQ
YXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwogICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicCIpKQotICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJh
dG9ySXNQKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBh
cmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAgICAgY2FzZSBD
b21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6IHsKICAgICAgICAgLy8gRG9lc24ndCBtb2RpZnkg
dGhlIHRleHQgaWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzbid0IGEgcmFuZ2UuCiAgICAgICAg
IFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUp
OwotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CkBAIC0zMzYsMzIgKzMzNiwzMiBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSwgY29ucwogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3
YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgTE9HX0VSUk9SKCJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJh
Y3RlciBpcyBub3QgaW1wbGVtZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRv
cigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlv
bkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFj
a3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUs
IGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0
ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlv
bkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRv
RW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLAogewog
ICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBu
ZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIExp
bmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRo
RGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNzcsNDAgKzM3Nyw0MCBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdQogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91
bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBp
ZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKS50b05vcm1hbGl6
ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS5tYXJr
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAobWFyaykgewogICAgICAgICBGcmFtZVNl
bGVjdGlvbiogc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOwotICAgICAgICBib29sIHNl
bGVjdGVkID0gc2VsZWN0aW9uLT5zZXRTZWxlY3RlZFJhbmdlKHVuaW9uRE9NUmFuZ2VzKG1hcmsu
Z2V0KCksIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5nZXQoKSwgRE9X
TlNUUkVBTSwgdHJ1ZSk7CisgICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNldFNl
bGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkUmFuZ2UoKS5nZXQoKSkuZ2V0KCksIERPV05TVFJFQU0sIHRydWUpOwogICAgICAgICBB
U1NFUlQoc2VsZWN0ZWQpOwogICAgICAgICBpZiAoIXNlbGVjdGVkKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmsoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rp
b24oKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuc2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZChG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFj
a3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHks
IHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZURlbGV0ZVdvcmRGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJk
LCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZpbmRTdHJpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+ZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsK
KyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcodmFsdWUsIHRydWUsIGZhbHNl
LCB0cnVlLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVGb250TmFtZShGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCkBAIC00NTYsNyArNDU2LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxl
dGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
Rm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Y2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRl
cmZhY2U6CkBAIC00NzIsNyArNDcyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxl
dGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+
aWdub3JlU3BlbGxpbmcoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuaWdub3JlU3BlbGxpbmcoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNv
bW1hbmRTb3VyCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0TmV3bGluZShGcmFtZSogZnJhbWUs
IEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBXZWJDb3JlOjp0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQp
OwotICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRleHRJbnB1
dEV2ZW50KCJcbiIsIGV2ZW50LCB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHko
KSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQgOiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7Cisg
ICAgcmV0dXJuIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZl
bnQoIlxuIiwgZXZlbnQsIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCkgPyBU
ZXh0RXZlbnRJbnB1dEtleWJvYXJkIDogVGV4dEV2ZW50SW5wdXRMaW5lQnJlYWspOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0TmV3bGluZUluUXVvdGVkQ29udGVudChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTU5MSw3
ICs1OTEsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5
bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVl
RW1iZWQpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NT
VmFsdWVMdHIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwg
RWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBs
eVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
TWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQwogewogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9u
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlv
blNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MDgsNyAr
NjA4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0
VG9MZWZ0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGkKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQ+IHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwog
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVt
YmVkKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1Zh
bHVlUnRsKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlT
dHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC05MDQsNyArOTA0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU91
dGRlbnQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmkKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZShGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+
ZWRpdG9yKCktPnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgZnJhbWUtPmVkaXRv
cigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTkxMiwyMiArOTEyLDIyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZShGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0CiB7CiAgICAgaWYg
KHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBh
c3RlKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnBhc3RlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlv
bigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQVNTRVJUX1VOVVNFRChzb3VyY2UsIHNv
dXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpOwogICAgIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUpOwogCiAgICAgYm9vbCBv
bGRTZWxlY3Rpb25Nb2RlID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxl
Y3Rpb25Nb2RlKCk7CiAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2Vs
ZWN0aW9uTW9kZSh0cnVlKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBhc3RlKCk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnBhc3RlKCk7CiAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+c2V0U2VsZWN0aW9uTW9kZShvbGRTZWxlY3Rpb25Nb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTkzNiw5ICs5MzYsOSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUGFzdGVBbmRNYXRjaFN0
eWxlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlCiB7CiAgICAgaWYg
KHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnBhc3RlQXNQbGFpblRleHQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBh
c3RlQXNQbGFpblRleHQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTQ2LDkgKzk0Niw5
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFzUGxhaW5UZXh0KEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvCiB7CiAgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5k
RnJvbU1lbnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0
b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1Bs
YWluVGV4dCgpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNQ
bGFpblRleHQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBhc3RlQXNQbGFpblRleHQoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTYzLDEzICs5NjMsMTMgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZVByaW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVJlZG8oRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVk
aXRvcigpLT5yZWRvKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlZG8oKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVJlbW92ZUZvcm1hdChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPnJlbW92ZUZvcm1hdHRpbmdBbmRTdHlsZSgpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5yZW1vdmVGb3JtYXR0aW5nQW5kU3R5bGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTAyNiw4ICsxMDI2LDggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFNlbnRlbmNlKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb24KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCktPm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVm
UHRyPFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5n
ZSgpOworICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkUmFuZ2UoKTsKICAgICBpZiAoIW1hcmsgfHwgIXNlbGVjdGlvbikgewogICAgICAgICBzeXN0
ZW1CZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RXb3JkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZXRNYXJrKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlv
bigpKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNl
bGVjdGlvbigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTA1NSwxMyArMTA1NSwxMyBA
QCBzdGF0aWMgYm9vbCBleGVjdXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlU3R5bGVXaXRo
Q1NTKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U2hvdWxkU3R5bGVXaXRoQ1NT
KCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZmFsc2Ui
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVVc2VDU1MoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0U2hv
dWxkU3R5bGVXaXRoQ1NTKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZmFsc2UiKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNzcsMjEgKzEwNzcsMjEgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZVN1cGVyc2NyaXB0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVN3YXBXaXRoTWFyayhGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLT5tYXJrKCk7CisgICAg
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbWFyayA9IGZyYW1lLT5lZGl0b3IoKS5tYXJrKCk7CiAg
ICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigp
LT5zZWxlY3Rpb24oKTsKICAgICBpZiAobWFyay5pc05vbmUoKSB8fCBzZWxlY3Rpb24uaXNOb25l
KCkpIHsKICAgICAgICAgc3lzdGVtQmVlcCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG1hcmspOwotICAgIGZyYW1l
LT5lZGl0b3IoKS0+c2V0TWFyayhzZWxlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRN
YXJrKHNlbGVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBleGVjdXRlVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLT5lZGl0b3IoKS0+dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbigpOwogICAgIHJldHVybiB0
cnVlOwogfQogI2VuZGlmCkBAIC0xMTA4LDcgKzExMDgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRl
VG9nZ2xlSXRhbGljKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZQogCiBzdGF0aWMgYm9vbCBleGVjdXRlVHJhbnNwb3NlKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0
b3IoKS0+dHJhbnNwb3NlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnRyYW5zcG9zZSgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlVW5kZXJsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPnVuZG8oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudW5kbygpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0xMTQzLDE1ICsxMTQzLDE1IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbnNlbGVj
dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVZYW5rKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0
VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5lZGl0b3IoKS0+a2lsbFJpbmcoKS0+
eWFuaygpLCBmYWxzZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT5zZXRU
b1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRXaXRob3V0U2Vu
ZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygpLCBmYWxzZSwg
MCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlhbmtBbmRTZWxlY3Qo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZl
bnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIHRydWUsIDApOwotICAgIGZy
YW1lLT5lZGl0b3IoKS0+a2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOworICAgIGZyYW1l
LT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoZnJhbWUtPmVkaXRv
cigpLmtpbGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmtp
bGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTE3NSw3ICsxMTc1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVkQ29weUN1dChGcmFtZSogZnJh
bWUpCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgYm9v
bCBkZWZhdWx0VmFsdWUgPSBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+amF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCgpOwogCi0gICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpOwogICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQtPmNhbkNvcHlDdXQoZnJhbWUs
IGRlZmF1bHRWYWx1ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTExODcsNyArMTE4Nyw3IEBA
IHN0YXRpYyBib29sIHN1cHBvcnRlZFBhc3RlKEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNl
dHRpbmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgJiYgc2V0
dGluZ3MtPkRPTVBhc3RlQWxsb3dlZCgpOwogCi0gICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBm
cmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gZnJh
bWUtPmVkaXRvcigpLmNsaWVudCgpOwogICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQtPmNhblBh
c3RlKGZyYW1lLCBkZWZhdWx0VmFsdWUpIDogZGVmYXVsdFZhbHVlOwogfQogCkBAIC0xMjAxLDcg
KzEyMDEsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkKEZyYW1lKiwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlKQogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7CiAgICAgLy8gVGhlIHRl
cm0gInZpc2libGUiIGhlcmUgaW5jbHVkZXMgYSBjYXJldCBpbiBlZGl0YWJsZSB0ZXh0IG9yIGEg
cmFuZ2UgaW4gYW55IHRleHQuCi0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKKyAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9u
Rm9yQ29tbWFuZChldmVudCk7CiAgICAgcmV0dXJuIChzZWxlY3Rpb24uaXNDYXJldCgpICYmIHNl
bGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKSB8fCBzZWxlY3Rpb24uaXNSYW5nZSgpOwogfQog
CkBAIC0xMjIwLDM3ICsxMjIwLDM3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRWaXNpYmxlU2VsZWN0
aW9uT3JDYXJldEJyb3dzaW5nKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFCiAKIHN0YXRp
YyBib29sIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayhGcmFtZSogZnJhbWUsIEV2ZW50
KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZl
bnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0
b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gKChzZWxlY3Rpb24u
aXNDYXJldCgpICYmIHNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKSB8fCBzZWxlY3Rpb24u
aXNSYW5nZSgpKQotICAgICAgICAmJiBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKS5pc0NhcmV0T3JS
YW5nZSgpOworICAgICAgICAmJiBmcmFtZS0+ZWRpdG9yKCkubWFyaygpLmlzQ2FyZXRPclJhbmdl
KCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZUNhcmV0SW5FZGl0YWJsZVRleHQoRnJhbWUqIGZy
YW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25Gb3JD
b21tYW5kKGV2ZW50KTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CiAgICAgcmV0dXJuIHNl
bGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCk7CiB9CiAK
IHN0YXRpYyBib29sIGVuYWJsZWRDb3B5KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgp
IHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ29weSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCkuY2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKIH0KIAogc3Rh
dGljIGJvb2wgZW5hYmxlZEN1dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpIHx8IGZy
YW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5E
SFRNTEN1dCgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5DdXQoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlZEluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZv
ckNvbW1hbmQoZXZlbnQpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiBl
dmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzogICAgCi0gICAgICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkRlbGV0ZSgpOworICAgICAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLmNhbkRlbGV0ZSgpOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2Fz
ZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgogICAgICAgICAvLyAiRGVsZXRlIiBm
cm9tIERPTSBpcyBsaWtlIGRlbGV0ZS9iYWNrc3BhY2Uga2V5cHJlc3MsIGFmZmVjdHMgc2VsZWN0
ZWQgcmFuZ2UgaWYgbm9uLWVtcHR5LApAQCAtMTI3NCw3ICsxMjc0LDcgQEAgc3RhdGljIGJvb2wg
ZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmMKIAogc3RhdGljIGJvb2wgZW5hYmxlZFBhc3RlKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkt
PmNhblBhc3RlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwogfQog
CiBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKQEAgLTEyODksMTkgKzEyODksMTkgQEAgc3RhdGlj
IGJvb2wgZW5hYmxlZFJhbmdlSW5SaWNobHlFZGl0YWJsZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmQKIAogc3RhdGljIGJvb2wgZW5hYmxlZFJlZG8oRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS0+Y2FuUmVkbygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuUmVkbygpOwog
fQogCiAjaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIGJvb2wgZW5hYmxlZFRha2VGaW5kU3RyaW5n
RnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkK
IHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9u
ZUltYWdlcygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ29weUV4Y2x1ZGluZ1N0
YW5kYWxvbmVJbWFnZXMoKTsKIH0KICNlbmRpZgogCiBzdGF0aWMgYm9vbCBlbmFibGVkVW5kbyhG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRvKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5j
YW5VbmRvKCk7CiB9CiAKIC8vIFN0YXRlIGZ1bmN0aW9ucwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAg
c3RhdGljIFRyaVN0YXRlIHN0YXRlSXRhbGljKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogCiBzdGF0
aWMgVHJpU3RhdGUgc3RhdGVPcmRlcmVkTGlzdChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCk7Cisg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCk7CiB9
CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCkBAIC0xMzMzLDcgKzEzMzMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHJpa2V0aHJv
dWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZVdp
dGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS0+c2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwor
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJp
U3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdWJzY3Jp
cHQoRnJhbWUqIGZyYW1lLCBFdmVudCopCkBAIC0xMzY4LDcgKzEzNjgsNyBAQCBzdGF0aWMgVHJp
U3RhdGUgc3RhdGVVbmRlcmxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlT
dGF0ZSBzdGF0ZVVub3JkZXJlZExpc3QoRnJhbWUqIGZyYW1lLCBFdmVudCopCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uVW5vcmRlcmVkTGlzdFN0YXRlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKIH0K
IAogc3RhdGljIFRyaVN0YXRlIHN0YXRlSnVzdGlmeUNlbnRlcihGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTE0MDUsNyArMTQwNSw3IEBAIHN0YXRpYyBTdHJpbmcgdmFsdWVCYWNrQ29sb3IoRnJh
bWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBTdHJpbmcgdmFsdWVEZWZhdWx0UGFyYWdyYXBo
U2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHN3aXRjaCAoZnJhbWUtPmVk
aXRvcigpLT5kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKKyAgICBzd2l0Y2ggKGZyYW1l
LT5lZGl0b3IoKS5kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKICAgICBjYXNlIEVkaXRv
clBhcmFncmFwaFNlcGFyYXRvcklzRGl2OgogICAgICAgICByZXR1cm4gZGl2VGFnLmxvY2FsTmFt
ZSgpOwogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBmZDI3ZWUyYTQ3YjdiOWNhZWU2NWM1
ZjU3ZWFmMWZkMzEzZTg1OTFjLi45NzhhM2VjMmI4YjljNGYwYjM4NDFiYzYzMWRmMmJkOWY1OTE2
MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIGJvb2wgRHJhZ0NhcmV0Q29udHJvbGxlcjo6aXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdAogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQWx3YXlzVXNlRGlyZWN0
aW9uYWxTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogewotICAgIHJldHVybiAhZnJhbWUgfHwgZnJh
bWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2VsZWN0aW9uQXNEaXJlY3Rp
b25hbCgpOworICAgIHJldHVybiAhZnJhbWUgfHwgZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CiB9CiAKIEZyYW1lU2VsZWN0
aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCkBAIC0zMjcsMTEgKzMyNywxMSBAQCB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bmV3U2VsZWN0aW9uLCBTZXRTZWxlYwogICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uID0gTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oKTsKICAgICBzZWxlY3RGcmFt
ZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3RlZCgpOwogICAgIG5vdGlmeVJlbmRlcmVyT2ZT
ZWxlY3Rpb25DaGFuZ2UodXNlclRyaWdnZXJlZCk7Ci0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPnJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKKyAgICBtX2Zy
YW1lLT5lZGl0b3IoKS5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwgb3B0
aW9ucyk7CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkgewogICAgICAg
ICBTY3JvbGxBbGlnbm1lbnQgYWxpZ25tZW50OwogCi0gICAgICAgIGlmIChtX2ZyYW1lLT5lZGl0
b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRDZW50ZXJBbGlnbldoZW5TZWxlY3Rpb25Jc1JldmVhbGVk
KCkpCisgICAgICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZENlbnRl
ckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKICAgICAgICAgICAgIGFsaWdubWVudCA9
IChhbGlnbiA9PSBBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKSA/IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJBbHdheXMgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQ7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFsaWdubWVudCA9IChhbGlnbiA9PSBBbGlnbkN1
cnNvck9uU2Nyb2xsQWx3YXlzKSA/IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgOiBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQ7CkBAIC01ODYsNyArNTg2LDcgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZv
cm0oY29uc3QgVmlzaWJsZVBvc2l0aW8KIHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25B
ZnRlckN1cnJlbnRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uKTsKIAot
ICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNr
aXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+
ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKSkgewog
ICAgICAgICAvLyBJbiBvcmRlciB0byBza2lwIHNwYWNlcyB3aGVuIG1vdmluZyByaWdodCwgd2Ug
YWR2YW5jZSBvbmUKICAgICAgICAgLy8gd29yZCBmdXJ0aGVyIGFuZCB0aGVuIG1vdmUgb25lIHdv
cmQgYmFjay4gR2l2ZW4gdGhlCiAgICAgICAgIC8vIHNlbWFudGljcyBvZiBwcmV2aW91c1dvcmRQ
b3NpdGlvbigpIHRoaXMgd2lsbCBwdXQgdXMgYXQgdGhlCkBAIC03MTMsNyArNzEzLDcgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCiAjaWYgVVNFKElDVV9VTklDT0RFKQogICAgICAgICAvLyBWaXN1
YWwgd29yZCBtb3ZlbWVudCByZWxpZXMgb24gaXNXb3JkVGV4dEJyZWFrIHdoaWNoIGlzIG5vdCBp
bXBsZW1lbnRlZCBpbiBXaW5DRSBhbmQgUVQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTEzNi4KLSAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hl
bk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5z
aG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKKyAgICAgICAgYm9vbCBza2lwc1NwYWNl
V2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigp
LnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOwogICAgICAgICBwb3MgPSByaWdodFdv
cmRQb3NpdGlvbihWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKQEAgLTg4Nyw3ICs4ODcsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ0xlZnQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eTogewogI2lmIFVTRShJQ1VfVU5J
Q09ERSkKLSAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAm
JiBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5n
UmlnaHQoKTsKKyAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFt
ZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOwogICAgICAgICBwb3MgPSBsZWZ0V29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlv
bihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBzU3Bh
Y2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtMTAyNCw3ICsx
MDI0LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXgKIAogICAgICAgICBpZiAoIW1fc2VsZWN0
aW9uLmlzQ2FyZXQoKQogICAgICAgICAgICAgJiYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhHcmFudWxhcml0eSB8fCBncmFudWxhcml0
eSA9PSBMaW5lR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICAmJiBtX2ZyYW1lICYmICFtX2ZyYW1l
LT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVB
Y3Jvc3NDYXJldCgpKSB7CisgICAgICAgICAgICAmJiBtX2ZyYW1lICYmICFtX2ZyYW1lLT5lZGl0
b3IoKS5iZWhhdmlvcigpLnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0Nh
cmV0KCkpIHsKICAgICAgICAgICAgIC8vIERvbid0IGxldCB0aGUgc2VsZWN0aW9uIGdvIGFjcm9z
cyB0aGUgYmFzZSBwb3NpdGlvbiBkaXJlY3RseS4gTmVlZGVkIHRvIG1hdGNoIG1hYwogICAgICAg
ICAgICAgLy8gYmVoYXZpb3Igd2hlbiwgZm9yIGluc3RhbmNlLCB3b3JkLXNlbGVjdGluZyBiYWNr
d2FyZHMgc3RhcnRpbmcgd2l0aCB0aGUgY2FyZXQgaW4KICAgICAgICAgICAgIC8vIHRoZSBtaWRk
bGUgb2YgYSB3b3JkIGFuZCB0aGVuIHdvcmQtc2VsZWN0aW5nIGZvcndhcmQsIGxlYXZpbmcgdGhl
IGNhcmV0IGluIHRoZQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBU
ZXgKIAogICAgICAgICAvLyBTdGFuZGFyZCBNYWMgYmVoYXZpb3Igd2hlbiBleHRlbmRpbmcgdG8g
YSBib3VuZGFyeSBpcyBncm93IHRoZSBzZWxlY3Rpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGUK
ICAgICAgICAgLy8gYmFzZSBpbiBwbGFjZSBhbmQgbW92aW5nIHRoZSBleHRlbnQuIE1hdGNoZXMg
TlNUZXh0Vmlldy4KLSAgICAgICAgaWYgKCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5lZGl0b3IoKS0+
YmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRh
cnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwgIWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkp
KQorICAgICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkQWx3YXlzR3Jvd1NlbGVjdGlvbldoZW5FeHRlbmRpbmdUb0JvdW5kYXJ5KCkgfHwgbV9z
ZWxlY3Rpb24uaXNDYXJldCgpIHx8ICFpc0JvdW5kYXJ5KGdyYW51bGFyaXR5KSkKICAgICAgICAg
ICAgIHNldEV4dGVudChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6
aXNGb2N1c2VkQW5kQWN0aXZlKCkgY29uc3QKIAogaW5saW5lIHN0YXRpYyBib29sIHNob3VsZFN0
b3BCbGlua2luZ0R1ZVRvVHlwaW5nQ29tbWFuZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLT5s
YXN0RWRpdENvbW1hbmQoKS0+c2hvdWxkU3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpICYmIGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKS0+c2hvdWxkU3RvcENhcmV0QmxpbmtpbmcoKTsKIH0KIAogdm9pZCBGcmFt
ZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBQYXNz
UmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGlu
Z1N0eWxlKCkgY29uc3QKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkRGVsZXRlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zaG91bGREZWxldGVSYW5nZShzZWxlY3Rp
b24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRv
cigpLmNsaWVudCgpLT5zaG91bGREZWxldGVSYW5nZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7CiB9CiAKIEZsb2F0UmVjdCBGcmFtZVNlbGVjdGlvbjo6Ym91bmRzKGJvb2wg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAKIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxl
Y3Rpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLT5zaG91bGRDaGFu
Z2VTZWxlY3Rpb24oc2VsZWN0aW9uKCksIG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmlu
aXR5KCksIGZhbHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuc2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKHNlbGVjdGlvbigpLCBuZXdTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbi5hZmZpbml0
eSgpLCBmYWxzZSk7CiB9CiAKIGJvb2wgRnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2VsZWN0U3Rh
cnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRl
eCA5ZTk2NzZkNzJlMjk0MjU2YjBjNjMyYjJlYThjZTQ2YmZkNDM0OWNlLi4zZjAxMjAzMjczZmY5
MDkzMzc0NzAyYjk1YmJmNzQ2YjVlNWEyNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydFRleHRDb21tYW5kLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSW5zZXJ0VGV4
dENvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAvLyBhbnl0aGluZyBvdGhlciB0aGFuIE5vU2Vs
ZWN0aW9uLiBUaGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIGEgcmVhbCBlbmRpbmdT
ZWxlY3Rpb24sIHNvIGJhaWwgb3V0LgogICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNO
b25lKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLT5m
cmFtZSgpLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpKSB7CisgICAgfSBlbHNl
IGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKHBlcmZvcm1PdmVyd3JpdGUobV90ZXh0LCBtX3NlbGVjdEluc2Vy
dGVkVGV4dCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDY3YzViMjU0Mjc5MjkyNjFmMWM5M2Q3ODE1ZWNmZDZm
Njg3ZTQ0NjcuLmM2ZTAyOGY5MTNhZWY0NDk3YzVkZDQ4N2MyMTIwMTQxZjVkMmM0YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2
b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9m
cmFtZS0+ZWRpdG9yKCktPm1hcmtBbmRSZXBsYWNlRm9yKG1fcHJvY2Vzc2luZ1JlcXVlc3QsIHJl
c3VsdHMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLm1hcmtBbmRSZXBsYWNlRm9yKG1fcHJvY2Vz
c2luZ1JlcXVlc3QsIHJlc3VsdHMpOwogCiAgICAgaWYgKG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNl
IDwgc2VxdWVuY2UpCiAgICAgICAgIG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlID0gc2VxdWVuY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kLmNwcAppbmRleCAzNTk5YWRkN2NiODFiNjI0YmIzNDRkNzQwNjM1NTYwODMyNTlkOGFjLi4y
OGY0YTZkMjIxYTkzNzkxNzlmYzg0ZjQwZTE3MTU0MDYwMzk0ZmIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIGlmICghbV9oYXNCZWVuVW5kb25lKSB7Ci0gICAgICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKHN0
YXJ0aW5nU2VsZWN0aW9uKCksIG1fY29ycmVjdGVkLCBtX2NvcnJlY3Rpb24pOworICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9u
KHN0YXJ0aW5nU2VsZWN0aW9uKCksIG1fY29ycmVjdGVkLCBtX2NvcnJlY3Rpb24pOwogICAgICAg
ICAgICAgbV9oYXNCZWVuVW5kb25lID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IGE5ZmJhNjg2MzAzZTNhODQ2
ODFiYmRlYmI4OTUwNGZiOTdmMWZmNjguLmIwYzQyOWQ5MDg2MGViZWNmYjg0MDA2M2ZiYTdjYWU5
ZTg2NjQ3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAt
MTYxLDcgKzE2MSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucyBvCiAgICAgQVNTRVJUKGZyYW1l
KTsKIAogICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoaXNTcGFj
ZU9yTmV3bGluZSh0ZXh0LmNoYXJhY3RlcnMoKVswXSkpOworICAgICAgICBkb2N1bWVudC0+ZnJh
bWUoKS0+ZWRpdG9yKCkudXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoaXNT
cGFjZU9yTmV3bGluZSh0ZXh0LmNoYXJhY3RlcnMoKVswXSkpOwogICAgIAogICAgIGluc2VydFRl
eHQoZG9jdW1lbnQsIHRleHQsIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCksIG9wdGlv
bnMsIGNvbXBvc2l0aW9uKTsKIH0KQEAgLTIzNyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IFR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JU
eXBpbmcoRgogewogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBSZWZQdHI8Q29tcG9zaXRlRWRp
dENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21t
YW5kKCk7CisgICAgUmVmUHRyPENvbXBvc2l0ZUVkaXRDb21tYW5kPiBsYXN0RWRpdENvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkubGFzdEVkaXRDb21tYW5kKCk7CiAgICAgaWYgKCFsYXN0RWRpdENv
bW1hbmQgfHwgIWxhc3RFZGl0Q29tbWFuZC0+aXNUeXBpbmdDb21tYW5kKCkgfHwgIXN0YXRpY19j
YXN0PFR5cGluZ0NvbW1hbmQqPihsYXN0RWRpdENvbW1hbmQuZ2V0KCkpLT5pc09wZW5Gb3JNb3Jl
VHlwaW5nKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lk
IFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFu
ZCBjb21tYW5kVHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IGlmICghZnJhbWUtPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
Ci0gICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZCgpCi0gICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1
YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKKyAgICAgICAg
JiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgp
CisgICAgICAgICYmICFmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCgpCisgICAgICAgICYmICFmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uRW5hYmxlZCgpCisgICAgICAgICYmICFmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm47CiAjZWxzZQotICAg
IGlmICghZnJhbWUtPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIC8vIFRha2UgYSBsb29rIGF0IHRo
ZSBzZWxlY3Rpb24gdGhhdCByZXN1bHRzIGFmdGVyIHR5cGluZyBhbmQgZGV0ZXJtaW5lIHdoZXRo
ZXIgd2UgbmVlZCB0byBzcGVsbGNoZWNrLiAKQEAgLTMyMiw5ICszMjIsOSBAQCB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFuZCBjb21t
YW5kVHlwZSkKICAgICAgICAgICAgIFN0cmluZyBzdHJpcHBlZFByZXZpb3VzV29yZDsKICAgICAg
ICAgICAgIGlmIChyYW5nZSAmJiAoY29tbWFuZFR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6SW5zZXJ0
VGV4dCB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRMaW5lQnJlYWsgfHwg
Y29tbWFuZFR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yIHx8
IGNvbW1hbmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvcklu
UXVvdGVkQ29udGVudCkpCiAgICAgICAgICAgICAgICAgc3RyaXBwZWRQcmV2aW91c1dvcmQgPSBw
bGFpblRleHQocmFuZ2UuZ2V0KCkpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEsIGVuZGlu
Z1NlbGVjdGlvbigpLCAhc3RyaXBwZWRQcmV2aW91c1dvcmQuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5tYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEs
IGVuZGluZ1NlbGVjdGlvbigpLCAhc3RyaXBwZWRQcmV2aW91c1dvcmQuaXNFbXB0eSgpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChjb21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0
KQotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGlt
ZXIoKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJ
VGltZXIoKTsKICAgICB9CiB9CiAKQEAgLTMzNywxNCArMzM3LDE0IEBAIHZvaWQgVHlwaW5nQ29t
bWFuZDo6dHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBl
Rm9yQWRkZWRUCiAgICAgdXBkYXRlUHJlc2VydmVzVHlwaW5nU3R5bGUoY29tbWFuZFR5cGVGb3JB
ZGRlZFR5cGluZyk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZnJhbWUtPmVkaXRvcigpLT5h
cHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbGllZEVkaXRpbmco
dGhpcyk7CiAgICAgLy8gU2luY2UgdGhlIHNwZWxsY2hlY2tpbmcgY29kZSBtYXkgYWxzbyBwZXJm
b3JtIGNvcnJlY3Rpb25zIGFuZCBvdGhlciByZXBsYWNlbWVudHMsIGl0IHNob3VsZCBoYXBwZW4g
YWZ0ZXIgdGhlIHR5cGluZyBjaGFuZ2VzLgogICAgIGlmICghbV9zaG91bGRQcmV2ZW50U3BlbGxD
aGVja2luZykKICAgICAgICAgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKGNvbW1hbmRUeXBl
Rm9yQWRkZWRUeXBpbmcpOwogI2Vsc2UKICAgICAvLyBUaGUgb2xkIHNwZWxsY2hlY2tpbmcgY29k
ZSByZXF1aXJlcyB0aGF0IGNoZWNraW5nIGJlIGRvbmUgZmlyc3QsIHRvIHByZXZlbnQgaXNzdWVz
IGxpa2UgdGhhdCBpbiA2ODY0MDcyLCB3aGVyZSA8ZG9lc24ndD4gaXMgbWFya2VkIGFzIG1pc3Nw
ZWxsZWQuCiAgICAgbWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nKGNvbW1hbmRUeXBlRm9yQWRk
ZWRUeXBpbmcpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhpcyk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogI2VuZGlmCiB9CiAKQEAg
LTQyNyw3ICs0MjcsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nKQogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vyc0Zv
cldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS51cGRh
dGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CiAKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvblRvRGVsZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uQWZ0ZXJVbmRvOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVs
ZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+YWRkVG9LaWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpLCBmYWxzZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
ICAgICAvLyBNYWtlIHVuZG8gc2VsZWN0IGV2ZXJ5dGhpbmcgdGhhdCBoYXMgYmVlbiBkZWxldGVk
LCB1bmxlc3MgYW4gdW5kbyB3aWxsIHVuZG8gbW9yZSB0aGFuIGp1c3QgdGhpcyBkZWxldGlvbi4K
ICAgICAvLyBGSVhNRTogVGhpcyBiZWhhdmVzIGxpa2UgVGV4dEVkaXQgZXhjZXB0IGZvciB0aGUg
Y2FzZSB3aGVyZSB5b3Ugb3BlbiB3aXRoIHRleHQgaW5zZXJ0aW9uIGFuZCB0aGVuIGRlbGV0ZQog
ICAgIC8vIG1vcmUgdGV4dCB0aGFuIHlvdSBpbnNlcnQuICBJbiB0aGF0IGNhc2UgYWxsIG9mIHRo
ZSB0ZXh0IHRoYXQgd2FzIGFyb3VuZCBvcmlnaW5hbGx5IHNob3VsZCBiZSBzZWxlY3RlZC4KQEAg
LTUzMSw3ICs1MzEsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVz
c2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vyc0Zv
cldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS51cGRh
dGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhmYWxzZSk7CiAKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvblRvRGVsZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uQWZ0ZXJVbmRvOwpAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9y
d2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtp
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgaWYgKGtpbGxSaW5nKQotICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CiAgICAgLy8gbWFrZSB1bmRvIHNlbGVjdCB3aGF0IHdhcyBkZWxldGVkCiAgICAgc2V0U3Rh
cnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJVbmRvKTsKICAgICBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6ZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlLCBtX3NtYXJ0RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggMmFhYTczMDQzZGQzNDFk
ZjBmOWJiMmZmODliZWUxOTg1MWM1ODc1MC4uOWJkOTQ3NDIzNmUxYzBhOTY1ZWMyZThmZDM5NTE0
YTVkZjM3NjY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTg1
NSw3ICs4NTUsNyBAQCBib29sIGlzRW1wdHlUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkKIAog
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRv
cigpLT5kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKKyAgICBzd2l0Y2ggKGRvY3VtZW50
LT5mcmFtZSgpLT5lZGl0b3IoKS5kZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKICAgICBj
YXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzRGl2OgogICAgICAgICByZXR1cm4gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY2FzZSBFZGl0b3JQYXJhZ3JhcGhTZXBh
cmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNGMw
YzI4MGFjZTUwNmFiZjBkMGE3N2FhMjJlNzJlZWY3NDRkN2Q0Yy4uYjcwMTZjODMwMmJhMjc3NWI1
OThlZjRhM2JkZWM0NWRjM2NhNDk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7CiAgICAgYm9vbCBjaG9vc2VQbGFpblRl
eHQ7CiAgICAgCi0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zZXRJbnNlcnRpb25Q
YXN0ZWJvYXJkKE5TR2VuZXJhbFBib2FyZCk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50
KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJvYXJkKTsKICNpZiBQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJh
Z21lbnQobV9mcmFtZSwgcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwog
ICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2Us
IEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBFZGl0
b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxv
d1BsYWluVGV4dCkKICAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21h
cnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCksIGZhbHNlKTsKICAgICB9CiAjZW5k
aWYKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9h
cmQoU3RyaW5nKCkpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAogYm9vbCBFZGl0b3I6Omluc2VydFBhcmFncmFw
aFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggZmRhMjFkNWVlOTRkNTFiMzNjZDg4MTJkZTRhY2FkZmI1MDhlYWQ5MC4uNTlkMzRmZWM5Njdm
YWVhNGZiODBmMTMyNTQ2YjY0NDJmMWI5MjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtNjU1LDcgKzY1NSw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJh
bmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjCiAKICAgICBSZWZQ
dHI8UmFuZ2U+IHVwZGF0ZWRSYW5nZVJlZjsKICAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgdXBk
YXRlZFJhbmdlUmVmID0gZnJhbWUtPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxl
dGVCdXR0b25Db250cm9sbGVyKHJhbmdlKTsKKyAgICAgICAgdXBkYXRlZFJhbmdlUmVmID0gZnJh
bWUtPmVkaXRvcigpLmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIo
cmFuZ2UpOwogICAgICAgICB1cGRhdGVkUmFuZ2UgPSB1cGRhdGVkUmFuZ2VSZWYuZ2V0KCk7CiAg
ICAgICAgIGlmICghdXBkYXRlZFJhbmdlKQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CkBAIC03NjksNyArNzY5LDcgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBu
b2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxkcmVuT25seSwgVmVjdG9yPE5vZGUqPioKICAgICBIVE1M
RWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAjaWYgRU5BQkxFKERF
TEVUSU9OX1VJKQogICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFt
ZSgpKSB7Ci0gICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRp
dG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAg
ICAgICBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOwogICAgICAgICBpZiAobm9k
ZS0+aXNEZXNjZW5kYW50T2YoZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCkpCiAgICAgICAg
ICAgICByZXR1cm4gIiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKaW5kZXggM2IzMDM0NGU1N2VmOTc3ZDdkMjJiYjE4ODU5OTJjM2E3MTVkNTc3Zi4uNzI2
YTMxOWZkNTkyOWNlMTRmZDMzYzE0ZDM1OGZmNjNlMDE1OTkxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjplbmRFZGl0aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0aGlzKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRl
eHRGaWVsZERpZEVuZEVkaXRpbmcodGhpcyk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
c2hvdWxkVXNlSW5wdXRNZXRob2QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKaW5kZXggNDYyMGE4YTcwODAwMDMwOWM3ZTNiZDM2Nzk0NmY4NzgyMGRiNTE0
Yi4uNGUyYzY3YTA5NWExNjI1ODYxNjIyNzE3ZjhlOGI1NzZiZjY0NmMzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAg
dm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRoaXMpOworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CiAgICAg
Ly8gV2hlbiB0eXBpbmcgaW4gYSB0ZXh0YXJlYSwgY2hpbGRyZW5DaGFuZ2VkIGlzIG5vdCBjYWxs
ZWQsIHNvIHdlIG5lZWQgdG8gZm9yY2UgdGhlIGRpcmVjdGlvbmFsaXR5IGNoZWNrLgogICAgIGNh
bGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggMzZjMWY4NTExZjJjOTMyMWUwZWQxYWM4MmE5
MDFlMzgyYWI2Yzc2My4uNjFmMTBkNTNmMWVmOTQ4MjYzNmFkYmYwM2IyMzI0MzY0MzUyZWEzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKCFlbGVtZW50KCktPmZvY3VzZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmRvVGV4dEZpZWxkQ29t
bWFuZEZyb21FdmVudChlbGVtZW50KCksIGV2ZW50KSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZWRpdG9yKCkuZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQoKSwgZXZlbnQp
KQogICAgICAgICByZXR1cm47CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CkBA
IC00NzMsOCArNDczLDggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlV
c2VyRWRpdChWYWx1ZUNoYW5nZVN0YXRlIHN0YXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAg
ICBpZiAoc3RhdGUgPT0gVmFsdWVDaGFuZ2VTdGF0ZU5vbmUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhlbGVtZW50KCkpOwotICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChlbGVtZW50KCkpOworICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhlbGVtZW50
KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dERpZENoYW5nZUluVGV4dEZpZWxkKGVs
ZW1lbnQoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA1YTU3ODQwZTE3ODE0MDJkYmNmOGVhM2ZlMTQ4YzZlNzY0ZjgwNzkzLi45YmQwNjI3NzE0
MTdiMDUwMTcyMWVmMzJmMGNmM2RiYzQzZTAwYjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVS
TCgpCiAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgc3RvcExvYWRpbmcoY3VycmVudERvY3VtZW50ICYmICFjdXJyZW50RG9jdW1lbnQtPmlu
UGFnZUNhY2hlKCkgPyBVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlIDogVW5sb2Fk
RXZlbnRQb2xpY3lVbmxvYWRPbmx5KTsKICAgICAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xl
YXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTUsNyArNDk1LDcg
QEAgYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTCgpCiAgICAgfQogCiAgICAgbV9mcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLT5jYW5jZWwoKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xlYXJMYXN0RWRpdENvbW1hbmQoKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGVhckxhc3RF
ZGl0Q29tbWFuZCgpOwogCiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9kaWRDYWxs
SW1wbGljaXRDbG9zZSA9IGZhbHNlOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNhbmNlbEFuZENsZWFyKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQq
IG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlw
dE9iamVjdHMsIGJvb2wgY2xlYXJGcmFtZVZpZXcpCiB7Ci0gICAgbV9mcmFtZS0+ZWRpdG9yKCkt
PmNsZWFyKCk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuY2xlYXIoKTsKIAogICAgIGlmICghbV9u
ZWVkc0NsZWFyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggMDU4OGY0Y2FlMjFkNThiNDlmY2Y0MjliMzI4YzE1
OGI5ZjFjZTY0ZS4uNDlkYTFkYWUzNjZjZmU4ZjU1ZGMwYmU0M2QxZWQyNWY2NTBhMTQyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTk3
LDcgKzE5Nyw3IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9M
b2FkLCBGcmFtZSogZnJhbWUpCiBzdGF0aWMgdm9pZCBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKFVD
aGFyIGNoYXJhY3RlciwgRnJhbWUqIGZyYW1lKQogewogICAgIFN0cmluZyB0ZXh0KCZjaGFyYWN0
ZXIsIDEpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5zaG91bGRJbnNlcnRUZXh0KHRleHQs
IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uVHlwZWQpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRl
eHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBF
ZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFR5cGluZ0Nv
bW1hbmQ6Omluc2VydFRleHQoZnJhbWUtPmRvY3VtZW50KCksIHRleHQsIDAsIFR5cGluZ0NvbW1h
bmQ6OlRleHRDb21wb3NpdGlvbk5vbmUpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
IGl0ZW0pCiAgICAgICAgIG1fY2xpZW50LT5kb3dubG9hZFVSTChtX2hpdFRlc3RSZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29weVVS
TChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0
Q29udGVudCgpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlTGlua1VSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdX
aW5kb3c6CiAgICAgICAgIG9wZW5OZXdXaW5kb3cobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1h
Z2VVUkwoKSwgZnJhbWUpOwpAQCAtMjQ0LDE4ICsyNDQsMTggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOgogICAgICAg
ICAvLyBGSVhNRTogVGhlIFBhc3RlYm9hcmQgY2xhc3MgaXMgbm90IHdyaXR0ZW4geWV0CiAgICAg
ICAgIC8vIEZvciBub3csIGNhbGwgaW50byB0aGUgY2xpZW50LiBUaGlzIGlzIHRlbXBvcmFyeSEK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5SW1hZ2UobV9oaXRUZXN0UmVzdWx0KTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOwogICAgICAg
ICBicmVhazsKICNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZUltYWdlVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwg
bV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6CiAgICAgICAg
IG9wZW5OZXdXaW5kb3cobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKSwgZnJhbWUp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxp
bmtUb0NsaXBib2FyZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgp
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29s
dXRlTWVkaWFVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHM6CiAg
ICAgICAgIG1faGl0VGVzdFJlc3VsdC50b2dnbGVNZWRpYUNvbnRyb2xzRGlzcGxheSgpOwpAQCAt
MjgxLDcgKzI4MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHk6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29weSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weSgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0dvQmFjazoKICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQpAQCAtMjk4LDE0ICsyOTgsMTQgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSog
aXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5yZWxvYWQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1Bhc3RlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5l
eGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3Jt
RGVsZXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5pY29kZUluc2VydExSTU1h
cms6CiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIobGVmdFRvUmlnaHRNYXJrLCBmcmFt
ZSk7CkBAIC0zNDAsMjIgKzM0MCwyMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29u
dGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogI2VuZGlmCiAjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6IHsKICAgICAgICAgRnJhbWVT
ZWxlY3Rpb24qIGZyYW1lU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpOwotICAgICAgICBp
ZiAoZnJhbWUtPmVkaXRvcigpLT5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1l
U2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25Q
YXN0ZWQpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dChp
dGVtLT50aXRsZSgpLCBmcmFtZVNlbGVjdGlvbi0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
RWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkgewogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Q29tbWFuZE9wdGlvbnMgcmVwbGFjZU9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGlu
ZzsKIAotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRB
bGxvd1NwZWxsaW5nU3VnZ2VzdGlvbnNXaXRob3V0U2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbGxvd1NwZWxsaW5nU3VnZ2Vz
dGlvbnNXaXRob3V0U2VsZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWVT
ZWxlY3Rpb24tPmlzQ2FyZXRPclJhbmdlKCkpOwogICAgICAgICAgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gd29yZFNlbGVjdGlvbihmcmFtZVNlbGVjdGlvbi0+YmFzZSgpKTsKICAgICAgICAgICAg
ICAgICB3b3JkU2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5
KTsKICAgICAgICAgICAgICAgICBmcmFtZVNlbGVjdGlvbi0+c2V0U2VsZWN0aW9uKHdvcmRTZWxl
Y3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS5sZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgcmVwbGFjZU9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVj
dFJlcGxhY2VtZW50OwogICAgICAgICAgICAgfQogCkBAIC0zNjYsMTAgKzM2NiwxMCBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiBpdGVtKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdJZ25vcmVTcGVsbGluZzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVT
cGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuaWdub3JlU3BlbGxpbmcoKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nOgot
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmxlYXJuU3BlbGxpbmcoKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmxlYXJuU3BlbGxpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWI6CiAgICAgICAgIG1fY2xpZW50LT5zZWFyY2hXaXRoR29v
Z2xlKGZyYW1lKTsKQEAgLTM4OCwxMyArMzg4LDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9oaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOgotICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPnRvZ2dsZVVuZGVybGluZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudG9nZ2xlVW5kZXJsaW5lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnT3V0bGluZToKICAgICAgICAgLy8gV2UgYWN0dWFsbHkgbmV2ZXIgZW5hYmxlIHRo
aXMgYmVjYXVzZSBDU1MgZG9lcyBub3QgaGF2ZSBhIHdheSB0byBzcGVjaWZ5IGFuIG91dGxpbmUg
Zm9udCwKQEAgLTQxNCwyMiArNDE0LDIyIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIG1f
Y2xpZW50LT5zdG9wU3BlYWtpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGly
ZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRl
eHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xl
ZnQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGly
ZWN0aW9uUmlnaHRUb0xlZnQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4ZWN1dGUoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6CkBAIC00MzcsNjUgKzQzNyw2NSBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVt
KiBpdGVtKQogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU2hvd1NwZWxsaW5nUGFuZWw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2hvd1NwZWxs
aW5nR3Vlc3NQYW5lbCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2hvd1NwZWxsaW5nR3Vl
c3NQYW5lbCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0No
ZWNrU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZUNvbnRp
bnVvdXNTcGVsbENoZWNraW5nKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPnRvZ2dsZUdyYW1tYXJDaGVja2luZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9n
Z2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250czoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5zaG93Rm9udFBhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Rm9u
dFBhbmVsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3R5
bGVzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdHlsZXNQYW5lbCgpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuc2hvd1N0eWxlc1BhbmVsKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9yczoKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5zaG93Q29sb3JQYW5lbCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2hvd0NvbG9y
UGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBVU0UoQVBQS0lUKQogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT51cHBlcmNhc2VXb3JkKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS51cHBlcmNhc2VX
b3JkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxv
d2VyQ2FzZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5sb3dlcmNhc2VXb3JkKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5sb3dlcmNhc2VXb3JkKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jYXBpdGFsaXplV29yZCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2FwaXRhbGl6
ZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKG1faGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0
cmluZygpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNoYW5nZUJhY2tUb1JlcGxhY2VkU3Ry
aW5nKG1faGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5zaG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3Vic3RpdHV0aW9uc1BhbmVsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnU21hcnRDb3B5UGFzdGU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
U21hcnRJbnNlcnREZWxldGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZVNtYXJ0
SW5zZXJ0RGVsZXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU21hcnRRdW90ZXM6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb24oKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZUF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3M6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVk
aXRvcigpLnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQpAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5h
dGl2ZShpdGVtLT50aXRsZSgpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RGljdGF0
aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIENv
bnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgaWYgKG1faGl0VGVz
dFJlc3VsdC5pc1NlbGVjdGVkKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uQ29u
dGFpbnNQb3NzaWJsZVdvcmQoZnJhbWUpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0o
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0
TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKIAogI2lmIElO
Q0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNCkBAIC05MjMsMTMgKzkyMywxMyBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICBib29sIGluUGFz
c3dvcmRGaWVsZCA9IHNlbGVjdGlvbi0+aXNJblBhc3N3b3JkRmllbGQoKTsKICAgICAgICAgaWYg
KCFpblBhc3N3b3JkRmllbGQpIHsKICAgICAgICAgICAgIGJvb2wgaGF2ZUNvbnRleHRNZW51SXRl
bXNGb3JNaXNzcGVsbGluZ09yR3JhbW1lciA9IGZhbHNlOwotICAgICAgICAgICAgYm9vbCBzcGVs
bENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxl
ZEZvcihub2RlKTsKKyAgICAgICAgICAgIGJvb2wgc3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFt
ZS0+ZWRpdG9yKCkuaXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKICAgICAgICAgICAg
IGlmIChzcGVsbENoZWNraW5nRW5hYmxlZCkgewogICAgICAgICAgICAgICAgIC8vIENvbnNpZGVy
IGFkZGluZyBzcGVsbGluZy1yZWxhdGVkIG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUg
aXRlbXMgKG5ldmVyIGJvdGgsIHNpbmNlIGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCiAgICAgICAg
ICAgICAgICAgLy8gaXMgbmV2ZXIgY29uc2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFuZCBiYWQgZ3Jh
bW1hciBhdCB0aGUgc2FtZSB0aW1lKQogICAgICAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7
CiAgICAgICAgICAgICAgICAgYm9vbCBiYWRHcmFtbWFyOwotICAgICAgICAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGd1ZXNzZXMgPSBmcmFtZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVk
T3JVbmdyYW1tYXRpY2FsKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKKyAgICAgICAgICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzID0gZnJhbWUtPmVkaXRvcigpLmd1ZXNzZXNGb3JNaXNz
cGVsbGVkT3JVbmdyYW1tYXRpY2FsKG1pc3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKICAgICAgICAg
ICAgICAgICBpZiAobWlzc3BlbGxpbmcgfHwgYmFkR3JhbW1hcikgewogICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSA9IGd1ZXNzZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoIXNpemUpIHsKQEAgLTk5Nyw3ICs5OTcsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6cG9wdWxhdGUoKQogCiAgICAgICAgIGlmIChtX2hpdFRlc3RSZXN1bHQuaXNTZWxlY3RlZCgp
ICYmICFpblBhc3N3b3JkRmllbGQgJiYgc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoZnJh
bWUpKSB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3Ry
aW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcg
PSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGlj
dGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9u
YXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcp
KTsKIAogI2lmIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRfTUVOVV9JVEVNCkBAIC0xMDQ4LDcg
KzEwNDgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbSh0cmFuc2Zvcm1hdGlvbnNNZW51SXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBib29sIHNob3Vs
ZFNob3dGb250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJp
Y2hseSgpOwogI2Vsc2UKICAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gdHJ1
ZTsKICNlbmRpZgpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3BlZWNoTWVudUl0ZW0sIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAg
ICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpOworICAg
ICAgICAgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgICAgICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+c2hvdWxkU2hvd1VuaWNvZGVNZW51
KCkpIHsKICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gVW5pY29kZU1lbnVJdGVtKFN1
Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdVbmljb2RlLCBjb250ZXh0TWVudUl0ZW1UYWdV
bmljb2RlKCkpOwogICAgICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFVuaWNvZGVTdWJNZW51
KFVuaWNvZGVNZW51SXRlbSk7CkBAIC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIENvbnRleHRNZW51
Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHBh
Z2UtPnNldHRpbmdzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlVGV4dERp
cmVjdGlvblN1Ym1lbnUgPSBzZXR0aW5ncy0+dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25C
ZWhhdmlvcigpID09IFRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5jbHVkZWQKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChzZXR0aW5ncy0+dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNp
b25CZWhhdmlvcigpID09IFRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVk
ICYmIGZyYW1lLT5lZGl0b3IoKS0+aGFzQmlkaVNlbGVjdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IChzZXR0aW5ncy0+dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhh
dmlvcigpID09IFRleHREaXJlY3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkICYmIGZy
YW1lLT5lZGl0b3IoKS5oYXNCaWRpU2VsZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5jbHVkZVRleHREaXJlY3Rpb25TdWJtZW51KSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBDb250ZXh0TWVudUl0ZW0gVGV4dERpcmVjdGlvbk1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKSk7CkBAIC0xMTQwLDcg
KzExNDAsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVl
ZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKIAogICAgIHN3aXRjaCAoaXRlbS5hY3Rp
b24oKSkgewogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc6Ci0g
ICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGly
ZWN0aW9uOgogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmYWxzZTsKQEAgLTExNDksNDQgKzEx
NDksNDQgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRl
ZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNvbnN0CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRU
b0xlZnQ6IHsKICAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09
IENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAg
ICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlTdGF0ZTsKICAgICAgICAgICAg
IHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7Ci0gICAg
ICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpOworICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0
aW5nRGlyZWN0aW9uTmF0dXJhbCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5k
LnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29t
bWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OiB7Ci0gICAg
ICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKKyAgICAgICAgICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0
V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0Iik7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9
IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7CiAgICAgICAgICAgICBzaG91bGRFbmFi
bGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6
IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAg
ICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgi
TWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiKTsKICAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRydWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNo
b3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHk6Ci0gICAgICAgICAg
ICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgpIHx8IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuQ29weSgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUt
PmVkaXRvcigpLmNhbkRIVE1MQ29weSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6Ci0g
ICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkg
fHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9
IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTEN1dCgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5DdXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0ln
bm9yZVNwZWxsaW5nOgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxp
bmc6CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z1Bhc3RlOgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5E
SFRNTFBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5QYXN0ZSgpOworICAgICAgICAgICAg
c2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCkuY2FuUGFzdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdU
SykKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWxldGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRlbGV0ZSgpOworICAgICAgICAgICAg
c2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRlbGV0ZSgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzOgogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGU6CkBAIC0xMjA5LDc4ICsxMjA5LDc4
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29u
dGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAgICAgIHNo
b3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VUcmlT
dGF0ZTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dFJpY2hseSgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwg
InVuZGVybGluZSIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25h
cnk6CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZzoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9y
KCktPmlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5l
ZGl0b3IoKS5pc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBzaG91
bGRDaGVjayA9IHRydWU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSB0cnVlOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiB7Ci0g
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5
bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7
CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNT
dHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Cisg
ICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdCb2xkOiB7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZh
bHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkt
PmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSAhPSBG
YWxzZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigp
LmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZToKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6Ci0gICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigp
LT5zcGVsbGluZ1BhbmVsSXNTaG93aW5nKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRv
cigpLnNwZWxsaW5nUGFuZWxJc1Nob3dpbmcoKSkKICAgICAgICAgICAgICAgICBpdGVtLnNldFRp
dGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGZhbHNlKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1U
YWdTaG93U3BlbGxpbmdQYW5lbCh0cnVlKSk7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZDoKICAgICAgICAgICAgIHNob3VsZEVu
YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOgotICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51Ogog
ICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3Rp
dHV0aW9uczoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnN1YnN0aXR1dGlvbnNQ
YW5lbElzU2hvd2luZygpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5zdWJzdGl0
dXRpb25zUGFuZWxJc1Nob3dpbmcoKSkKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKGZhbHNlKSk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdTaG93
U3Vic3RpdHV0aW9ucyh0cnVlKSk7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlOgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ01ha2VMb3dlckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRh
bGl6ZToKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOgotICAgICAg
ICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5n
QXV0b21hdGljYWxseToKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNo
b3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU21hcnRDb3B5UGFzdGU6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5l
ZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVz
OgotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGlj
UXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNo
ZXM6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBm
cmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5r
czoKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQ6
Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNU
ZXh0UmVwbGFjZW1lbnRFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZzoK
ICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNsaWVudCgpICYmIGNsaWVudCgpLT5pc1NwZWFr
aW5nKCk7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9ICFmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PmlzTG9hZGluZ0luQVBJU2Vuc2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51OgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
ZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBzaG91bGRFbmFi
bGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAjZWxzZQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0dvQmFjazoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCBlNjdkN2ExYmYxYWU3ODAyZDRlZTk3NTdmZjhlMGE4ZDAw
ZDdkMjIwLi5lMjA1MmU1MGJkZDljYmUwNjk0Mzk4ZWFhNGM0NTFjMzVhNWI5OWQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTEzLDcgKzExMTMsNyBAQCBib29sIERPTVdpbmRv
dzo6ZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJh
Y2t3YXJkcywgYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYp
OiBTdXBwb3J0IHdob2xlV29yZCwgc2VhcmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcoc3RyaW5nLCAhYmFja3dhcmRzLCBj
YXNlU2Vuc2l0aXZlLCB3cmFwLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigp
LmZpbmRTdHJpbmcoc3RyaW5nLCAhYmFja3dhcmRzLCBjYXNlU2Vuc2l0aXZlLCB3cmFwLCBmYWxz
ZSk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpvZmZzY3JlZW5CdWZmZXJpbmcoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA3OTI5NmVjM2FlODFiMmU1NzNi
ZTA4ZTBmNGM3ZmY0ZmExZTQ5OGZkLi5kZDRiZjViZWQ4ZDM3ZTFhOWRhNjA2OWQ5MzA1MWU1YTZi
M2MyNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDQxLDcg
KzQ0MSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3Io
RnJhbWUqIGlubmVyRnJhbWUsIERyYWdEYXRhKiBkcmFnCiB7CiAgICAgQVNTRVJUKG1fcGFnZS0+
ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5oYXNDYXJldCgpKTsKICAgICBTdHJpbmcgdGV4dCA9IG1f
cGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8g
IiIgOiBkcmFnRGF0YS0+YXNQbGFpblRleHQoaW5uZXJGcmFtZSk7Ci0gICAgTm9kZSogdGFyZ2V0
ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLT5kcmFn
Q2FyZXRDb250cm9sbGVyKCktPmNhcmV0UG9zaXRpb24oKSk7CisgICAgTm9kZSogdGFyZ2V0ID0g
aW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJl
dENvbnRyb2xsZXIoKS0+Y2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNw
YXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQogCkBAIC00NzUsMTAg
KzQ3NSwxMCBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRh
KiBkcmFnRGF0YSkKICAgICAgICAgUmVmUHRyPFJhbmdlPiBpbm5lclJhbmdlID0gaW5uZXJGcmFt
ZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xv
ci5zZXJpYWxpemVkKCksIGZhbHNlKTsKLSAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5lZGl0b3Io
KS0+c2hvdWxkQXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgaW5uZXJSYW5nZS5nZXQoKSkpCisgICAg
ICAgIGlmICghaW5uZXJGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkQXBwbHlTdHlsZShzdHlsZS5nZXQo
KSwgaW5uZXJSYW5nZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IG1fY2xpZW50LT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRp
b25BY3Rpb25FZGl0LCBkcmFnRGF0YSk7Ci0gICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLT5h
cHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0Q29sb3IpOworICAgICAgICBpbm5l
ckZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0Q29s
b3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkK
ICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpIHx8
IGRyYWdDYXJldC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIGJvb2wgY2hv
c2VQbGFpblRleHQgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50ID0gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgaW5uZXJGcmFt
ZS5nZXQoKSwgcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KTsKLSAgICAgICAgaWYgKCFmcmFn
bWVudCB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydEZyYWdtZW50KGZyYWdt
ZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uRHJvcHBlZCkpIHsKKyAgICAgICAgaWYgKCFm
cmFnbWVudCB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJh
Z21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAg
aWYgKGRyYWdJc01vdmUoaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCksIGRyYWdEYXRhKSkgewogICAg
ICAgICAgICAgLy8gTlNUZXh0VmlldyBiZWhhdmlvciBpcyB0byBhbHdheXMgc21hcnQgZGVsZXRl
IG9uIG1vdmluZyBhIHNlbGVjdGlvbiwKICAgICAgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0
IGluc2VydCBpZiB0aGUgc2VsZWN0aW9uIGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHku
Ci0gICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCktPnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOworICAgICAgICAgICAgYm9vbCBzbWFydERlbGV0ZSA9
IGlubmVyRnJhbWUtPmVkaXRvcigpLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAg
ICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRlICYmIGlubmVyRnJhbWUtPnNlbGVj
dGlvbigpLT5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSAmJiBkcmFnRGF0YS0+Y2Fu
U21hcnRSZXBsYWNlKCk7CiAgICAgICAgICAgICBhcHBseUNvbW1hbmQoTW92ZVNlbGVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZShmcmFnbWVudCwgZHJhZ0NhcmV0LmJhc2UoKSwgc21hcnRJbnNlcnQsIHNt
YXJ0RGVsZXRlKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC01MzQsNyArNTM0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLT5hc1Bs
YWluVGV4dChpbm5lckZyYW1lLmdldCgpKTsKLSAgICAgICAgaWYgKHRleHQuaXNFbXB0eSgpIHx8
ICFpbm5lckZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZS5nZXQo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uRHJvcHBlZCkpIHsKKyAgICAgICAgaWYgKHRleHQuaXNFbXB0
eSgpIHx8ICFpbm5lckZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdl
LmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKQEAgLTc4OSw3ICs3ODksNyBAQCBib29sIERyYWdDb250cm9s
bGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09w
ZXJhdGlvbgogICAgIGlmIChzdGF0ZS5tX2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxl
Y3Rpb24pIHsKICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmhhc0RhdGEoKSkgewogICAgICAgICAg
ICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgp
KSkKLSAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9y
KCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9h
cmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJk
KCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvblJhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCA1YWU1ZDNmN2ZiNDA2MTdlZjdlNmE2MWJmODNkMDEyM2RkNThj
ZGQ1Li41NmRjYTRjNDliZTgyYjE0YWY2NDYwZDZkMzBjMDQ5ZmY3MTNlNDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdp
dGhIaXRUZXN0UmUKIHsKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkgewogICAg
ICAgICBzZWxlY3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdC5oaXRUZXN0UmVz
dWx0KCksCi0gICAgICAgICAgICAocmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYg
bV9mcmFtZS0+ZWRpdG9yKCktPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSA/
IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA6IERvbnRBcHBlbmRUcmFpbGluZ1doaXRl
c3BhY2UpOworICAgICAgICAgICAgKHJlc3VsdC5ldmVudCgpLmNsaWNrQ291bnQoKSA9PSAyICYm
IG1fZnJhbWUtPmVkaXRvcigpLmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSA/
IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA6IERvbnRBcHBlbmRUcmFpbGluZ1doaXRl
c3BhY2UpOwogICAgIH0KIH0KIApAQCAtNjA1LDcgKzYwNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSCiAgICAgICAgICAgICAgICAgcG9zID0gc2VsZWN0aW9uSW5Vc2VyU2VsZWN0QWxsLmVu
ZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZp
b3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlvbkFzRGlyZWN0aW9uYWwoKSAmJiBwb3MuaXNOb3RO
dWxsKCkpIHsKKyAgICAgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3Vs
ZENvbnNpZGVyU2VsZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgewog
ICAgICAgICAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS8zNjY4MTU3PiBSRUdSRVNTSU9OIChN
YWlsKTogc2hpZnQtY2xpY2sgZGVzZWxlY3RzIHdoZW4gc2VsZWN0aW9uCiAgICAgICAgICAgICAv
LyB3YXMgY3JlYXRlZCByaWdodC10by1sZWZ0CiAgICAgICAgICAgICBQb3NpdGlvbiBzdGFydCA9
IG5ld1NlbGVjdGlvbi5zdGFydCgpOwpAQCAtMTk3NCw4ICsxOTc0LDggQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVBhc3RlR2xvYmFsU2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgbW91c2VFdmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmb2N1c0ZyYW1l
ID0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgLy8gRG8gbm90IHBhc3RlIGhlcmUgaWYgdGhlIGZvY3VzIHdhcyBtb3ZlZCBzb21l
d2hlcmUgZWxzZS4KLSAgICBpZiAobV9mcmFtZSA9PSBmb2N1c0ZyYW1lICYmIG1fZnJhbWUtPmVk
aXRvcigpLT5jbGllbnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIG1fZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKEFTQ0lJTGl0ZXJhbCgiUGFzdGVHbG9iYWxT
ZWxlY3Rpb24iKSkuZXhlY3V0ZSgpOworICAgIGlmIChtX2ZyYW1lID09IGZvY3VzRnJhbWUgJiYg
bV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisg
ICAgICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKEFTQ0lJTGl0ZXJhbCgiUGFz
dGVHbG9iYWxTZWxlY3Rpb24iKSkuZXhlY3V0ZSgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpA
QCAtMjkwMiw3ICsyOTAyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93
U2hhZG93Q29udGVudCk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBk
b2MtPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIHZpZXdwb3J0UG9zLCBldmVudCk7CiAKLSAg
ICBpZiAobV9mcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0
dWFsTWVudUNsaWNrKCkKKyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91
bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQogICAgICAgICAmJiAhbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPmNvbnRhaW5zKHZpZXdwb3J0UG9zKQogICAgICAgICAmJiAhbWV2LnNjcm9sbGJh
cigpCiAgICAgICAgIC8vIEZJWE1FOiBJbiB0aGUgZWRpdGFibGUgY2FzZSwgd29yZCBzZWxlY3Rp
b24gc29tZXRpbWVzIHNlbGVjdHMgY29udGVudCB0aGF0IGlzbid0IHVuZGVybmVhdGggdGhlIG1v
dXNlLgpAQCAtMjk0Niw3ICsyOTQ2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0
TWVudUV2ZW50Rm9yS2V5KCkKIAogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIChz
ZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSB8fCBzZWxlY3Rpb24tPmlzUmFuZ2UoKSkp
IHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi0+dG9O
b3JtYWxpemVkUmFuZ2UoKTsKLSAgICAgICAgSW50UmVjdCBmaXJzdFJlY3QgPSBtX2ZyYW1lLT5l
ZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkpOworICAgICAg
ICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdl
KHNlbGVjdGlvblJhbmdlLmdldCgpKTsKIAogICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25lZCA/
IGZpcnN0UmVjdC5tYXhYKCkgOiBmaXJzdFJlY3QueCgpOwogICAgICAgICAvLyBJbiBhIG11bHRp
bGluZSBlZGl0LCBmaXJzdFJlY3QubWF4WSgpIHdvdWxkIGVuZHVwIG9uIHRoZSBuZXh0IGxpbmUs
IHNvIC0xLgpAQCAtMzI0NSw3ICszMjQ1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAgIC8vIGlu
IG9yZGVyIHRvIG1hdGNoIElFOgogICAgIC8vIDEuIHByZXZlbnRpbmcgZGVmYXVsdCBoYW5kbGlu
ZyBvZiBrZXlkb3duIGFuZCBrZXlwcmVzcyBldmVudHMgaGFzIG5vIGVmZmVjdCBvbiBJTSBpbnB1
dDsKICAgICAvLyAyLiBpZiBhbiBpbnB1dCBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQsIGl0cyBr
ZXlDb2RlIGlzIHNldCB0byAyMjkgaW4ga2V5ZG93biBldmVudC4KLSAgICBtX2ZyYW1lLT5lZGl0
b3IoKS0+aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOworICAgIG1fZnJh
bWUtPmVkaXRvcigpLmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihrZXlkb3duLmdldCgpKTsKICAg
ICAKICAgICBib29sIGhhbmRsZWRCeUlucHV0TWV0aG9kID0ga2V5ZG93bi0+ZGVmYXVsdEhhbmRs
ZWQoKTsKICAgICAKQEAgLTMzNTIsNyArMzM1Miw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJv
YXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWVTZWxlY3Rpb24qIHNlbGVjdGlvbiwgS2V5Ym9hcmRF
CiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5r
ZXlkb3duRXZlbnQpIHsKLSAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJk
RXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2
ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSsw
MDA5IikKQEAgLTMzNzAsNyArMzM3MCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5
Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBoYW5k
bGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50KG1fZnJhbWUtPnNlbGVjdGlvbigpLCBldmVudCk7
CiAgICAgfQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2
ZW50KSB7Ci0gICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2
ZW50KTsKKyAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChldmVu
dCk7CiAgICAgICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKGV2ZW50LT5jaGFyQ29kZSgpID09ICcgJykKQEAgLTM2NzEsNyAr
MzY3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KiBl
dmVudCkgY29uc3QKIAogdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRUZXh0SW5wdXRFdmVudEhh
bmRsZXIoVGV4dEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCktPmhh
bmRsZVRleHRFdmVudChldmVudCkpCisgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZVRl
eHRFdmVudChldmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQog
CkBAIC0zNzA0LDcgKzM3MDQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFj
ZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPmN0cmxL
ZXkoKSB8fCBldmVudC0+bWV0YUtleSgpIHx8IGV2ZW50LT5hbHRLZXkoKSB8fCBldmVudC0+YWx0
R3JhcGhLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGROYXZpZ2F0ZUJhY2tPbkJhY2tzcGFjZSgpKQorICAgIGlmICgh
bV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGROYXZpZ2F0ZUJhY2tPbkJhY2tzcGFj
ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBmYzBmOWY4
YjU4M2M0ZTM0YTg4NTg3NGY2N2ZiZDNlZjhlNjlkYzY3Li43YjZiOTNhN2MwMGRlZjFjNGRiNzlj
ZmE5YmZlM2NiMDkyNmE5OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCkBAIC01MzcsNyArNTM3LDcgQEAgc3RhdGljIGJvb2wgcmVsaW5xdWlzaGVzRWRpdGluZ0Zv
Y3VzKE5vZGUgKm5vZGUpCiAgICAgaWYgKCFmcmFtZSB8fCAhcm9vdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkRW5kRWRpdGluZyhy
YW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCku
c2hvdWxkRW5kRWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOwogfQogCiBzdGF0
aWMgdm9pZCBjbGVhclNlbGVjdGlvbklmTmVlZGVkKEZyYW1lKiBvbGRGb2N1c2VkRnJhbWUsIEZy
YW1lKiBuZXdGb2N1c2VkRnJhbWUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCBiYzM0YjE0MmMwYzRjZDIxNmNhZTI5M2I4Y2M5YTg4NmQ2YWJmNTAyLi5lODg4
YzdkODFkNDRiM2Q3MGUxM2YzNmVjZDhmNGNkYWE2YTU5YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtNzQ0LDE0ICs3NDQsMTQgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRnJhbWU6OnJhbmdlRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBy
ZXZpb3VzID0gcG9zaXRpb24ucHJldmlvdXMoKTsKICAgICBpZiAocHJldmlvdXMuaXNOb3ROdWxs
KCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBwcmV2aW91c0NoYXJhY3RlclJhbmdlID0gbWFr
ZVJhbmdlKHByZXZpb3VzLCBwb3NpdGlvbik7Ci0gICAgICAgIExheW91dFJlY3QgcmVjdCA9IGVk
aXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdldCgpKTsK
KyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocHJl
dmlvdXNDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7CiAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKGZy
YW1lUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UucmVs
ZWFzZSgpOwogICAgIH0KIAogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0ID0gcG9zaXRpb24ubmV4
dCgpOwogICAgIGlmIChSZWZQdHI8UmFuZ2U+IG5leHRDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5n
ZShwb3NpdGlvbiwgbmV4dCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCkt
PmZpcnN0UmVjdEZvclJhbmdlKG5leHRDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7CisgICAgICAgIExh
eW91dFJlY3QgcmVjdCA9IGVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKG5leHRDaGFyYWN0ZXJS
YW5nZS5nZXQoKSk7CiAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKGZyYW1lUG9pbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIG5leHRDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCmluZGV4IGNmNmZlM2M5OGNjYWRkYTg4Yzc1YzAyMTU3YTdmYjM3ODcwMTdmMjQu
LjNjMmJhZGU5MjgyNTE0MjQzOWVmZTVjOTA4ZDBmMGZiNGU0MjkzZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwogICAgICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsK
IAotICAgICAgICBFZGl0b3IqIGVkaXRvcigpIGNvbnN0OworICAgICAgICBFZGl0b3ImIGVkaXRv
cigpIGNvbnN0OwogICAgICAgICBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlcigpIGNvbnN0Owog
ICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyKCkgY29uc3Q7CiAgICAgICAgIE5hdmlnYXRpb25T
Y2hlZHVsZXIqIG5hdmlnYXRpb25TY2hlZHVsZXIoKSBjb25zdDsKQEAgLTIxOCw3ICsyMTgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2M7CiAK
ICAgICAgICAgT3duUHRyPFNjcmlwdENvbnRyb2xsZXI+IG1fc2NyaXB0OwotICAgICAgICBPd25Q
dHI8RWRpdG9yPiBtX2VkaXRvcjsKKyAgICAgICAgY29uc3QgT3duUHRyPEVkaXRvcj4gbV9lZGl0
b3I7CiAgICAgICAgIE93blB0cjxGcmFtZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CiAgICAgICAg
IE93blB0cjxFdmVudEhhbmRsZXI+IG1fZXZlbnRIYW5kbGVyOwogICAgICAgICBPd25QdHI8QW5p
bWF0aW9uQ29udHJvbGxlcj4gbV9hbmltYXRpb25Db250cm9sbGVyOwpAQCAtMjg5LDkgKzI4OSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLmdldCgp
OwogICAgIH0KIAotICAgIGlubGluZSBFZGl0b3IqIEZyYW1lOjplZGl0b3IoKSBjb25zdAorICAg
IGlubGluZSBFZGl0b3ImIEZyYW1lOjplZGl0b3IoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZWRpdG9yLmdldCgpOworICAgICAgICByZXR1cm4gKm1fZWRpdG9yOwogICAgIH0KIAog
ICAgIGlubGluZSBBbmltYXRpb25Db250cm9sbGVyKiBGcmFtZTo6YW5pbWF0aW9uKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDYwNWVlNDI1ZWE4NDlhYTE1Njg1MTUyM2IyYzQ4ODkyZjRm
ZmFhMGIuLjI0NGVkZjc2YmVkMDBmMjJiOWExYzRlMWExMjA4ODhkOTYxNTUyNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgUGFnZTo6ZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKICAgICBGcmFtZSogZnJhbWUg
PSBmb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgRnJhbWUqIHN0
YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkt
PmZpbmRTdHJpbmcodGFyZ2V0LCAob3B0aW9ucyAmIH5XcmFwQXJvdW5kKSB8IFN0YXJ0SW5TZWxl
Y3Rpb24pKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyh0YXJnZXQs
IChvcHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKICAgICAgICAg
ICAgIGlmIChmcmFtZSAhPSBzdGFydEZyYW1lKQogICAgICAgICAgICAgICAgIHN0YXJ0RnJhbWUt
PnNlbGVjdGlvbigpLT5jbGVhcigpOwogICAgICAgICAgICAgZm9jdXNDb250cm9sbGVyKCktPnNl
dEZvY3VzZWRGcmFtZShmcmFtZSk7CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBQYWdlOjpmaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQogICAgIC8v
IFNlYXJjaCBjb250ZW50cyBvZiBzdGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUg
c2VsZWN0aW9uIHRoYXQgd2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5k
IGp1c3QgcmVzZWFyY2ggd2l0aCB3cmFwIG9uCiAgICAgaWYgKHNob3VsZFdyYXAgJiYgIXN0YXJ0
RnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkgewotICAgICAgICBib29sIGZvdW5kID0gc3Rh
cnRGcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcodGFyZ2V0LCBvcHRpb25zIHwgV3JhcEFyb3Vu
ZCB8IFN0YXJ0SW5TZWxlY3Rpb24pOworICAgICAgICBib29sIGZvdW5kID0gc3RhcnRGcmFtZS0+
ZWRpdG9yKCkuZmluZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJ
blNlbGVjdGlvbik7CiAgICAgICAgIGZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUo
ZnJhbWUpOwogICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgfQpAQCAtNTk0LDcgKzU5NCw3IEBA
IHZvaWQgUGFnZTo6ZmluZFN0cmluZ01hdGNoaW5nUmFuZ2VzKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBpCiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7
CiAgICAgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbiA9IDA7CiAgICAgZG8gewotICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBs
aW1pdCA/IChsaW1pdCAtIG1hdGNoUmFuZ2VzLT5zaXplKCkpIDogMCwgdHJ1ZSwgbWF0Y2hSYW5n
ZXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJnZXQs
IDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hSYW5nZXMtPnNpemUoKSkgOiAwLCB0
cnVlLCBtYXRjaFJhbmdlcyk7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFu
Z2UoKSkKICAgICAgICAgICAgIGZyYW1lV2l0aFNlbGVjdGlvbiA9IGZyYW1lOwogICAgICAgICBm
cmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1lLCB0cnVlLCBmYWxzZSk7CkBAIC02MjcsNyArNjI3
LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcm
IHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmcKICAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVu
Y2VSYW5nZSA/IHJlZmVyZW5jZVJhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkgOiBtYWlu
RnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAgIGRvIHsKLSAgICAg
ICAgaWYgKFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPnJhbmdl
T2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiAw
LCBvcHRpb25zICYgfldyYXBBcm91bmQpKQorICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1
bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5yYW5nZU9mU3RyaW5nKHRhcmdldCwgZnJhbWUgPT0g
c3RhcnRGcmFtZSA/IHJlZmVyZW5jZVJhbmdlIDogMCwgb3B0aW9ucyAmIH5XcmFwQXJvdW5kKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHRSYW5nZS5yZWxlYXNlKCk7CiAKICAgICAgICAgZnJh
bWUgPSBpbmNyZW1lbnRGcmFtZShmcmFtZSwgIShvcHRpb25zICYgQmFja3dhcmRzKSwgc2hvdWxk
V3JhcCk7CkBAIC02MzYsNyArNjM2LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gUGFnZTo6cmFuZ2VP
ZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmcKICAgICAv
LyBTZWFyY2ggY29udGVudHMgb2Ygc3RhcnRGcmFtZSwgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhl
IHJlZmVyZW5jZSByYW5nZSB0aGF0IHdlIGRpZCBlYXJsaWVyLgogICAgIC8vIFdlIGNoZWF0IGEg
Yml0IGFuZCBqdXN0IHNlYXJjaCBhZ2FpbiB3aXRoIHdyYXAgb24uCiAgICAgaWYgKHNob3VsZFdy
YXAgJiYgcmVmZXJlbmNlUmFuZ2UpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmVzdWx0
UmFuZ2UgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIHJlZmVy
ZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24pKQorICAg
ICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVkaXRvcigp
LnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCByZWZlcmVuY2VSYW5nZSwgb3B0aW9ucyB8IFdyYXBBcm91
bmQgfCBTdGFydEluU2VsZWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHRSYW5nZS5y
ZWxlYXNlKCk7CiAgICAgfQogCkBAIC02NTcsOCArNjU3LDggQEAgdW5zaWduZWQgaW50IFBhZ2U6
Om1hcmtBbGxNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW8KIAogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOwogICAgIGRvIHsKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHNo
b3VsZEhpZ2hsaWdodCk7Ci0gICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLT5jb3Vu
dE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAobGltaXQgLSBtYXRj
aGVzKSA6IDAsIHRydWUsIDApOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4
dE1hdGNoZXNBcmVIaWdobGlnaHRlZChzaG91bGRIaWdobGlnaHQpOworICAgICAgICBtYXRjaGVz
ICs9IGZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9u
cywgbGltaXQgPyAobGltaXQgLSBtYXRjaGVzKSA6IDAsIHRydWUsIDApOwogICAgICAgICBmcmFt
ZSA9IGluY3JlbWVudEZyYW1lKGZyYW1lLCB0cnVlLCBmYWxzZSk7CiAgICAgfSB3aGlsZSAoZnJh
bWUpOwogCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCBzY2FsZUZhY3RvcikKICNlbmRpZgogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIAogICAg
IHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBjYzA1ODEwY2Ux
OGMxYjIxNzdkMDczNzczYzNhZGUzM2Q5YjBjM2RiLi4zM2YyMWM2YzQ3MGZhMjBjYmViYmZlNTQw
MWZkYjZkNDkyNzdkMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
Q2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9h
cmRNYWMubW0KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENsaXBib2FyZE1hYzo6d3JpdGVSYW5n
ZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQocmFuZ2UpOwogICAgIEFT
U0VSVChmcmFtZSk7CiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUp
OwotICAgIHBhc3RlYm9hcmQud3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIHBhc3RlYm9hcmQud3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5l
ZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCkt
PmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdlQWx0
VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkTWFjOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW0KaW5kZXggMjdmMWVkODRhYjg4N2U3MTNiMTIyYTY4YzIwMDE2ODFkYjRkNjY4ZC4u
OTRmODY1YTRhNDk2YWY5YzI0MGI2ZGIyNGIwYWIyODViMDFiOWJkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIFN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIE5TU3RyaW5nICpzY2hlbWUgPSBbVVJMRnJvbVBh
c3RlYm9hcmQgc2NoZW1lXTsKICAgICAgICAgLy8gQ2Fubm90IGRyb3Agb3RoZXIgc2NoZW1lcyB1
bmxlc3MgPHJkYXI6Ly9wcm9ibGVtLzEwNTYyNjYyPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzExMTg3
MzE1PiBhcmUgZml4ZWQuCiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0
dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICBy
ZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9t
UGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+
ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJz
b2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5nIERyYWdE
YXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFt
ZVBvbGljeSwgU3QKICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVz
ZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hvdWxkbid0IGFsbG93IGFyYml0cmFy
eSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxsb3cgb25seSBodHRw
IGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9jYWw/CiAgICAgICAgIGlmIChbc2No
ZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpA
Imh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCkt
PmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAg
ICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVS
TChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBp
ZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSkpKSB7CkBAIC0x
ODIsNyArMTgyLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAgICAgIEJPT0wg
aXNEaXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0g
JiYgaXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwo
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKKyAgICAg
ICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwo
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKICAgICAg
ICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggYTRmYmU5ZjhkYTYxNDA4NzIzM2Y2MWVmMzdjNzMwMDFjOTEzYWNhYS4u
M2QxZmQzNDdmYmE5OGJkM2Y5YjY2OTAxMzhhZDc5MjViOTcxZmIzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1Nl
bGVjdGlvbihGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7Ci0gICAgU3Ry
aW5nIHRleHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5j
bHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAg
IFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09
IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAg
ICAgdGV4dC5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKICAgICByZXR1cm4gdGV4dDsKIH0K
QEAgLTE1NSw3ICsxNTUsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6
Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICB9
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJh
bmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFJhbmdlKCk7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0
b3JDb250YWluZXIoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgQVNTRVJUKGNvbW1vbkFuY2VzdG9y
KTsKICAgICBOb2RlKiBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJz
dFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgSFRNTE5hbWVzOjphVGFnKTsKQEAgLTE4
Myw3ICsxODMsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0
YVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZwogdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFs
aXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIGF0dHJpYnV0ZWRTdHJpbmcg
PSBuaWw7Ci0gICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFkb3B0
TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSldKTsKKyAgICBSZXRhaW5QdHI8V2ViSFRN
TENvbnZlcnRlcj4gY29udmVydGVyID0gYWRvcHROUyhbW1dlYkhUTUxDb252ZXJ0ZXIgYWxsb2Nd
IGluaXRXaXRoRE9NUmFuZ2U6a2l0KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0
KCkpXSk7CiAgICAgaWYgKGNvbnZlcnRlcikKICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IFtj
b252ZXJ0ZXIuZ2V0KCkgYXR0cmlidXRlZFN0cmluZ107CiAgICAgCkBAIC0xOTEsMTEgKzE5MSwx
MSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYgogCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50
VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywg
Y2xpZW50RGF0YSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5nZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0KCks
IGNsaWVudFR5cGVzLCBjbGllbnREYXRhKTsKICAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY2xpZW50
VHlwZXMpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisgICAgZnJh
bWUtPmVkaXRvcigpLmNsaWVudCgpLT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQo
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xpZW50VHlwZXMuc2l6ZSgpOyArK2kp
CiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShjbGllbnREYXRhW2ldLCBjbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJvYXJk
TmFtZSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVVUkxGb3JUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2EKICAgICBB
U1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIAogICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybDsK
LSAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVu
dCgpLT51c2VyVmlzaWJsZVN0cmluZyhjb2NvYVVSTCk7CisgICAgTlNTdHJpbmcgKnVzZXJWaXNp
YmxlU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhj
b2NvYVVSTCk7CiAgICAgCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nKil0aXRsZVN0
cjsKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0gPT0gMCkgewpAQCAtMzgzLDcgKzM4Myw3IEBAIFN0
cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1lKQogICAgICAgICAvLyBGSVhN
RTogdXNpbmcgdGhlIGVkaXRvckNsaWVudCB0byBjYWxsIGludG8gd2Via2l0LCBmb3Igbm93LCBz
aW5jZSAKICAgICAgICAgLy8gY2FsbGluZyBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIGZyb20gV2Vi
Q29yZSBpbnZvbHZlcyBtaWdyYXRpbmcgYSBzaXphYmxlIHdlYiBvZiAKICAgICAgICAgLy8gaGVs
cGVyIGNvZGUgdGhhdCBzaG91bGQgZWl0aGVyIGJlIGRvbmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCBv
ciBmaWd1cmVkIG91dCBpbiBhbm90aGVyIHdheS4KLSAgICAgICAgc3RyaW5nID0gZnJhbWUtPmVk
aXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6
c3RyaW5nXSk7CisgICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+dXNl
clZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAgICAgICAgIGlm
IChbc3RyaW5nIGxlbmd0aF0gPiAwKQogICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmcgcHJlY29t
cG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CiAgICAgfQpAQCAtNDM4LDcgKzQzOCw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRX
aXRoUlRGKEZyYW1lKiBmcmFtZSwgTlNTdHJpCiAgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldERl
ZmVyc0xvYWRpbmcodHJ1ZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
PiByZXNvdXJjZXM7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJh
bWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3Ry
aW5nKHN0cmluZywgcmVzb3VyY2VzKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9tQXR0
cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IHJl
c291cmNlcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKQEAgLTUxNiw3ICs1MTYsNyBAQCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJh
bWUqIGZyYW1lLCBQYXNzUmVmUAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBOb24taW1hZ2UgZmlsZSB0eXBlczsgX3dl
Yl91c2VyVmlzaWJsZVN0cmluZyBpcyBhcHByb3ByaWF0ZSBoZXJlIGJlY2F1c2UgdGhpcyB3aWxs
CiAgICAgICAgICAgICAvLyBiZSBwYXN0ZWQgYXMgdmlzaWJsZSB0ZXh0LgotICAgICAgICAgICAg
TlNTdHJpbmcgKnVybCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3Ry
aW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aHNbaV1dKTsKKyAgICAgICAgICAgIE5TU3Ry
aW5nICp1cmwgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aHNbaV1dKTsKICAgICAgICAgICAgIFJlZlB0cjxOb2Rl
PiB0ZXh0Tm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh1cmwpOwogICAg
ICAgICAgICAgcmVmTm9kZXNWZWN0b3IuYXBwZW5kKHRleHROb2RlLmdldCgpKTsKICAgICAgICAg
ICAgIG5vZGVzVmVjdG9yLmFwcGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNjUyYjE4YmRjZWVlNjRkNjM3OTcyY2Yx
MjMzMTRmOGM3MjQ1YmI5OS4uNzQxMDllMWY3YWUzMTdkN2YxZWJmZjUwMmZkNDkyZTFmNTU0Y2Q3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNjQw
LDcgKzY0MCw3IEBAIFZlY3RvcjxTdHJpbmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVy
bmF0aXZlcygpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxT
dHJpbmc+KCk7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5kaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOwogfQogCiBOb2RlKiBIaXRUZXN0UmVz
dWx0Ojp0YXJnZXROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCBjZTM5NmRkMWI3MDE2NDEzNzVjZjFhNTZmMTI3ZjUzZmRlYWNmYmMy
Li41ZThjNTM2YTFmODY5YThkZDNiMDA2MzIzZGE0Y2U5ZWU0MzU4MTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01NDgsOCArNTQ4LDggQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24o
Ym94UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3Qg
d2UgaGF2ZSBjb21wb3NpdGlvbiB1bmRlcmxpbmVzIHRvIGRyYXcuCi0gICAgYm9vbCBjb250YWlu
c0NvbXBvc2l0aW9uID0gcmVuZGVyZXIoKS0+bm9kZSgpICYmIHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLT5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAg
Ym9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21wb3NpdGlvbiAmJiByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Vc2VzQ3VzdG9tVW5kZXJsaW5lcygp
OworICAgIGJvb2wgY29udGFpbnNDb21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiBy
ZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJl
cigpLT5ub2RlKCk7CisgICAgYm9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21w
b3NpdGlvbiAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvblVzZXND
dXN0b21VbmRlcmxpbmVzKCk7CiAKICAgICAvLyBEZXRlcm1pbmUgdGhlIHRleHQgY29sb3JzIGFu
ZCBzZWxlY3Rpb24gY29sb3JzLgogICAgIENvbG9yIHRleHRGaWxsQ29sb3I7CkBAIC02NTcsOCAr
NjU3LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgICAgIGlmIChjb250YWluc0Nv
bXBvc2l0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzKQogICAgICAgICAgICAgcGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LAot
ICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlv
blN0YXJ0KCksCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkt
PmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLmNvbXBvc2l0aW9uU3RhcnQoKSwKKyAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbkVuZCgpKTsKIAogICAgICAgICBwYWludERv
Y3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZvbnQsIHRydWUp
OwogCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBw
YWludERvY3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZvbnQs
IGZhbHNlKTsKIAogICAgICAgICBpZiAodXNlQ3VzdG9tVW5kZXJsaW5lcykgewotICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyA9IHJlbmRl
cmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMoKTsK
KyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGlu
ZXMgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jdXN0b21Db21wb3NpdGlvblVuZGVy
bGluZXMoKTsKICAgICAgICAgICAgIHNpemVfdCBudW1VbmRlcmxpbmVzID0gdW5kZXJsaW5lcy5z
aXplKCk7CiAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBudW1V
bmRlcmxpbmVzOyArK2luZGV4KSB7CkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgdG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNldFJlbmRl
cmVkUmVjdChtYXJrZXJSZWN0KTsKICAgICAKICAgICAvLyBPcHRpb25hbGx5IGhpZ2hsaWdodCB0
aGUgdGV4dAotICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+bWFya2VkVGV4
dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CisgICAgaWYgKHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAgICAgICBD
b2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZlTWF0Y2goKSA/CiAgICAgICAgICAgICByZW5kZXJl
cigpLT50aGVtZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoK
ICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2Vh
cmNoSGlnaGxpZ2h0Q29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IDIzYmI2NTU2YTQ1NTQxNjdlNWNhZjQ4YTc2YTQxM2E1NzZkMWUzMTAuLmU1MWMz
ZjE0YTU0ODczZDM5NmU2MmJhYWM4MGZiNTc1M2ExNTI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTI0Niw3ICs1MjQ2LDcgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0
IExheW91dFBvaW4KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgbW92ZUNhcmV0VG9Cb3Vu
ZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE1v
dmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJvdHRvbSgpOworICAgIGJv
b2wgbW92ZUNhcmV0VG9Cb3VuZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmJl
aGF2aW9yKCkuc2hvdWxkTW92ZUNhcmV0VG9Ib3Jpem9udGFsQm91bmRhcnlXaGVuUGFzdFRvcE9y
Qm90dG9tKCk7CiAKICAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nlc3RCb3gg
JiYgbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8geSBjb29yZGluYXRlIGlz
IGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5MTY0MWQyNGI1NjUxZjMxMzQzZWFjZTlmZGNhZDM5
YmMxOWNhZDA1Li41NmRlYmNiYWNhZjNhYTJhMmI5N2EzOTYyNWM5OTVjYTJhYjIxYTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCBzdGF0
aWMgYm9vbCBtYXJrZXJUeXBlc0Zyb20oY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZQogCiBzdGF0aWMgU3BlbGxDaGVja2VyKiBzcGVsbGNoZWNrZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5m
cmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c3BlbGxDaGVja2VyKCk7CisgICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zcGVsbENoZWNrZXIoKTsKIH0KIAogY29uc3Qg
Y2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5hbHMiOwpAQCAtMjgzLDEwICsy
ODMsMTAgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFn
ZSkKICAgICBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRDYXB0aW9uc1N0
eWxlU2hlZXRPdmVycmlkZShlbXB0eVN0cmluZygpKTsKICAgICBwYWdlLT5ncm91cCgpLmNhcHRp
b25QcmVmZXJlbmNlcygpLT5zZXRUZXN0aW5nTW9kZShmYWxzZSk7CiAjZW5kaWYKLSAgICBpZiAo
IXBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVDb250
aW51b3VzU3BlbGxDaGVja2luZygpOwotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9y
KCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkt
PmVkaXRvcigpLT50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGlmICghcGFnZS0+
bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkp
CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVDb250aW51b3VzU3Bl
bGxDaGVja2luZygpOworICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkuaXNPdmVy
d3JpdGVNb2RlRW5hYmxlZCgpKQorICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCku
dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIH0KIAogSW50ZXJuYWxzOjpJbnRlcm5hbHMo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgYm9vbCBJbnRlcm5hbHM6
Omhhc1NwZWxsaW5nTWFya2VyKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5n
dGgsIEV4Y2UKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20s
IGxlbmd0aCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rp
b25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0
aCk7CiB9CiAgICAgCiBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihEb2N1
bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJikKQEAg
LTE0NTIsNyArMTQ1Miw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsCiAgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAg
IHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFy
a2VyRm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOworICAg
IHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJr
ZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIGZyb20sIGxlbmd0aCk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBl
bmFibGVkLCBFeGNlcHRpb25Db2RlJikKQEAgLTE0NjAsOCArMTQ2MCw4IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJikKICAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpIHx8ICFjb250ZXh0RG9jdW1l
bnQoKS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVuYWJsZWQgIT0gY29u
dGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCktPnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgaWYgKGVuYWJsZWQgIT0g
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogfQogCiB2b2lkIEludGVybmFs
czo6c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpCkBAIC0xNDcwLDggKzE0NzAsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQp
Ci0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5k
aWYKQEAgLTE0ODMsOCArMTQ4Myw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVu
YWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFt
ZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAgIGlmIChl
bmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFt
ZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtMTQ5Niw4ICsxNDk2LDggQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
KQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE1MDksOCArMTUwOSw4IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRp
dG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAgICAgICBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBs
YWNlbWVudCgpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICAgICAg
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
QEAgLTE1MjIsOCArMTUyMiw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwor
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5p
c0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE1
MzQsNyArMTUzNCw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc092ZXJ3cml0ZU1vZGVFbmFibGVkKERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3Vt
ZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIHJl
dHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
OwogfQogCiB2b2lkIEludGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1l
bnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJikKQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQg
SW50ZXJuYWxzOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQs
IEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRv
cigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQpAQCAtMTYzNyw3ICsxNjM3LDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc0dyYW1tYXJNYXJr
ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXAKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhh
c01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBmcm9tLCBsZW5ndGgpOwogfQogCiB1bnNpZ25l
ZCBJbnRlcm5hbHM6Om51bWJlck9mU2Nyb2xsYWJsZUFyZWFzKERvY3VtZW50KiBkb2N1bWVudCwg
RXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXgg
YmVlZDIwN2JlNjQ3ZGI4ZmZkZTI4MzM2YmRiMzA1MjEyNTlmY2VjMi4uZDUxNTJlMDEwMjkyNWE0
YzEzZTBjNTIxN2Q4MjM3MjhlMThmMTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
c2hvdWxkU3BlbGxDaGVja0ZvY3VzZWRGaWVsZCgpCiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYg
dGhlIG5vZGUgZGlzYWJsZXMgc3BlbGwgY2hlY2tpbmcgZGlyZWN0bHkuCi0gICAgcmV0dXJuIGZy
YW1lLT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKTsKKyAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWRO
b2RlKCk7CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKQpAQCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKIAogICAg
IC8vIENoZWNrIHRvIHNlZSB3ZSBhcmUgbm90IHRyeWluZyB0byBpbnNlcnQgdGV4dCBvbiBrZXkg
ZG93bi4KLSAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5pc1RleHRJbnNl
cnRpb24oKSkpOworICAgIEFTU0VSVCghKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCAmJiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0
SW5zZXJ0aW9uKCkpKTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIEhvdCBrZXkgaGFuZGxpbmcuIENhbmNlbCBwcm9jZXNzaW5nIG1vZGUuCiAgICAgICAg
IGlmIChjb21tYW5kTmFtZSAhPSAiRGVsZXRlQmFja3dhcmQiKQogICAgICAgICAgICAgbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9pbnB1dEhhbmRsZXItPnNldFByb2Nlc3NpbmdDaGFuZ2UoZmFsc2UpOwog
Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1
dGUoKSkKKyAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5l
eGVjdXRlKCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBUZXh0IGluc2VydGlvbiBjb21tYW5kcyBzaG91bGQgb25seSBiZSB0cmlnZ2VyZWQg
ZnJvbSBrZXlwcmVzc0V2ZW50LgpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFwbGF0Zm9ybUV2ZW50LT50ZXh0KCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVu
dC0+dGV4dCgpLCBldmVudCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4
dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5kZXggYmU5NjQ4MTkwMzk0YWUx
NWY0YWM2MTY5MjQ0ZWJiNTc5NTc1NjY5MC4uNDA0MjFjMzI5ZmFkNDhhMGM2OTA4ZmJiZjJlZjU5
ZTYxNzBmMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRE9NU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBBdHRyaWJ1dGVTdGF0
ZSBlbGVtZW50QXR0cmlidXRlU3RhdGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZQogCiBib29sIGVsZW1lbnRIYXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBlbGVtZW50KQogewotICAgIHJl
dHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogfQogCiAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGlu
cHV0IGZpZWxkIHRoYXQgd2lsbCBiZSBmb2N1c2VkICYgcmVxdWlyZSBpbnB1dCBzdXBwb3J0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcAppbmRleCBhMzM4MGIzZTMzYzgwZDc2NmIyMTk0Yzc2
MzAxYmFjNzk2N2ZiNGU3Li40MDkxZGFlNmZjNjkyYWQwMDM0MzRiMzAyM2M1MDdkMDU3MTMzZDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblBh
Z2VTZWFyY2hNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wg
SW5QYWdlU2VhcmNoTWFuYWdlcjo6c2hvdWxkU2VhcmNoRm9yVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCiAKIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1hcmtUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRPcHRpb25z
JiBvcHRpb25zLCBib29sIGlzTmV3U2VhcmNoLCBib29sIHN0YXJ0RnJvbVNlbGVjdGlvbikKIHsK
LSAgICBpZiAoUmVmUHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmlu
Z0FuZFNjcm9sbFRvVmlzaWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKKyAgICBpZiAoUmVm
UHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nQW5kU2Nyb2xsVG9W
aXNpYmxlKHRleHQsIHJhbmdlLCBvcHRpb25zKSkgewogICAgICAgICAvLyBNb3ZlIHRoZSBoaWdo
bGlnaHQgdG8gdGhlIG5ldyBtYXRjaC4KICAgICAgICAgc2V0QWN0aXZlTWF0Y2hBbmRNYXJrZXIo
bWF0Y2gpOwogICAgICAgICBpZiAoaXNOZXdTZWFyY2gpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBi
b29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIFJhbmdlKiByYW5nZSwgRnJhbQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc2NvcGVT
dHJpbmdNYXRjaGVzIGRvZXMgbm90IGFkZCBhbnkgbWFya2VycywgaXQgb25seSBjb3VudHMgdGhl
IG51bWJlci4KICAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVubWFya0FsbFRleHRNYXRj
aGVzLCBpdCBpcyBhbHJlYWR5IGRvbmUgZnJvbSB0aGUgY2FsbGVyIGJlY2F1c2Ugb2YgbmV3U2Vh
cmNoCiAgICAgICAgICAgICAgICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgpLT5tYXJr
ZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxp
Z2h0ICovKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgYm9vbCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5k
TWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAg
ICAgIC8vIGFsbCBtYXRjaGVzIGJ1dCBjb3VudCB0aGVtLgogICAgICAgICAgICAgbV93ZWJQYWdl
LT5tX3BhZ2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1h
dGNoLT5vd25lckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkVGV4dE1hdGNoTWFya2VyKG1fYWN0
aXZlTWF0Y2guZ2V0KCksIHRydWUpOwotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRN
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSW5QYWdlU2VhcmNoTWFuYWdlcjo6c2NvcGVT
dHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCByZXNldCwgYm9vCiAgICAgICAg
ICAgICBtX2FjdGl2ZU1hdGNoSW5kZXggKz0gbWF0Y2hDb3VudDsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChtX2hpZ2hsaWdodEFsbE1hdGNoZXMpCi0gICAgICAgICAgICAgICAg
c2NvcGluZ0ZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAgICAgICAgICAgICAgc2NvcGluZ0ZyYW1lLT5l
ZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxp
Z2h0ICovKTsKICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2hDb3VudCArPSBtYXRjaENvdW50Owog
ICAgICAgICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+dXBkYXRlRmluZFN0cmluZ1Jlc3VsdCht
X2FjdGl2ZU1hdGNoQ291bnQsIG1fYWN0aXZlTWF0Y2hJbmRleCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKaW5kZXggMzMzZDEyNGEzYjU1ZTRkMzdiMGYyZDFmZWMyNjMzODdjNmMx
ZjJmYS4uNzA2ZjEwOWU3NGUyN2ZiOTk1YTcyNjM1OGU5NTY1NmYxMDRiNjkzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6
OmNhbmNlbFNlbGVjdGlvbigpCiAKIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgU2VsZWN0
aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJQYWdl
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIHJl
dHVybiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKTsKIH0KIAogV2ViQ29yZTo6SW50UmVjdCBTZWxlY3Rpb25IYW5kbGVyOjpjbGlwcGluZ1Jl
Y3RGb3JWaXNpYmxlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRl
eCBkMGNlMzhhMmZmZGE3ZmM2MzBhYzQ2Y2RjZjE1NWE4ZDMxYTBhMzBhLi42YWEyYjNlODViYzNm
ZGQ0NzNjNjhkNGI2MmQ3ZjM2NTRkZDcxNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0
ZUNvcmVDb21tYW5kQnlOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQogewogICAgIERSVF9T
VVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCi0gICAgcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChu
YW1lKS5leGVjdXRlKHZhbHVlKTsKKyAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7CiB9
CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OkZpbmRPcHRpb25z
IG9wdGlvbnMpCkBAIC0zMjgsNyArMzI4LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnMKIHsK
ICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBmYWxzZSk7
CiAKLSAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21t
YW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6Zm9yY2VMYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKaW5kZXggOTA5MDJk
N2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQwYmEyYjQ5Yy4uN2UzNDM3MGFkNmJiNjYwNTEwNmMz
NjlhN2I4NmE0YTVhZDQ1MzlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lk
IEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSogY29yZUZy
YW1lKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29y
ZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlv
blNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmIChjb3JlRnJhbWUtPmVkaXRvcigpICYmIGNvcmVG
cmFtZS0+ZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRXZhc19PYmplY3QqIHdlYkZyYW1lID0gRVdLUHJpdmF0ZTo6a2l0
RnJhbWUoY29yZUZyYW1lKTsKICAgICBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxlY3Rpb25f
Y2hhbmdlZCh3ZWJGcmFtZSk7CiAKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21w
b3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5j
YW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCk7CiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpkaWRFbmRFZGl0aW5nKCkKQEAgLTMyNCw3ICszMjQsNyBAQCBib29sIEVkaXRv
ckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOworICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0
S2V5RXZlbnQoZXZlbnQpKTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91
Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVz
dCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApA
QCAtMzM3LDcgKzMzNyw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3Qg
ZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
RG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3Vs
dCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wgRWRpdG9y
Q2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICBpZiAoa2V5RXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlFdmVudC0+YWx0S2V5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2Vy
dFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOworICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldmVudCk7
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmNGQzYzBl
NGYxM2VmNzhiOWZiMTExZmNjZGNjNjkwNjc2NWY3OTBkLi5jY2Y3ZTUwMmY3YmM1NTllZWEwZmU4
NjdmOTY1ZTg0ZmUyYjcyZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAt
NDgwLDcgKzQ4MCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGVkaXRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBzbWFydERhdGEtPmVkaXRhYmxlID0gZWRpdGFibGU7CiAgICAgaWYgKGVkaXRhYmxlKQot
ICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50KCk7CisgICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRp
dGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00ODgs
NyArNDg4LDcgQEAgY29uc3QgY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3
a0ZyYW1lLCBzbWFydERhdGEsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCAwKTsKLSAgICBXVEY6OkNTdHJpbmcgc2VsZWN0ZWRUZXh0ID0g
c21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKKyAgICBX
VEY6OkNTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCkudXRmOCgpOwogICAgIGlmIChzZWxlY3RlZFRleHQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChzZWxlY3RlZFRl
eHQuZGF0YSgpKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRf
c2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4dCwgRQog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIGZhbHNlKTsKIAot
ICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyhXVEY6OlN0
cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIHRydWUp
OworICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgZm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3JhcCwgdHJ1
ZSk7CiB9CiAKIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19P
YmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNlU2Vuc2l0
aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCkBAIC01MDksOCAr
NTA5LDggQEAgdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhFdmFzX09i
amVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHN0cmluZywgMCk7CiAKLSAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3Io
KS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwotICAgIHJl
dHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+Y291bnRNYXRjaGVzRm9yVGV4dChXVEY6
OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgMCwgY2FzZVNlbnNpdGl2ZSwgbGltaXQsIHRydWUs
IDApOworICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+
ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5n
KSwgMCwgY2FzZVNlbnNpdGl2ZSwgbGltaXQsIHRydWUsIDApOwogfQogCiBFaW5hX0Jvb2wgZXdr
X2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAg
LTUyNiw3ICs1MjYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19oaWdobGln
aHRfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sCiB7CiAgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAg
c21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoaGlnaGxpZ2h0KTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJr
ZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTUzNCw3ICs1MzQsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hl
c19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
LSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCku
bWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCmluZGV4IGYzZmE4ZTFhMjIyM2I0YzkxYTc1MDQwNjdjNmZlYTM1YTdi
ZGE4ZGIuLjg2Yzg2MDdmZDFiMjhjYzhkNWVhZTEwZmQ2ZTIzMTdhMzg4ZjhiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTY2OCw3ICsxNjY4LDcgQEAgY29uc3QgY2hhciog
ZXdrX3ZpZXdfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKIHsKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0gICAgQ1N0
cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKKyAgICBD
U3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS51dGY4KCk7CiAgICAg
aWYgKHNlbGVjdGVkU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRTdHJpbmcuZGF0YSgpKTsKQEAgLTE2ODMs
NyArMTY4Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19lZGl0b3JfY29tbWFuZF9leGVjdXRlKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfCiAgICAgaWYgKCFjb21tYW5kU3Ry
aW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kU3RyaW5nKS5leGVjdXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSkpOworICAg
IHJldHVybiBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6
ZnJvbVVURjgodmFsdWUpKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRfbWVudV9m
b3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFdmFzX0V2ZW50X01vdXNl
X0Rvd24qIGRvd25FdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDlhNTJlN2Y1MTZkYzgyNmQ2MGVlYTMyMzQ2
MjQ0ZjVjMWRiMzcxZjQuLjliNTM4YzQyYzY1MzZkZDE4Mzk1ZmMzZWZjMzA3NzMxODk4OWQ5ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcApAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpwYWludChX
ZWJDb3JlOjpUaW1lcjxDaHJvbWVDbGllbnQ+KikKICAgICAvLyBzeW5jZWQgd2l0aCBjdXJzb3Ig
bW92ZW1lbnQuIEZvciBpbnN0YW5jZSwgYSB0ZXh0IGZpZWxkIGNhbiBtb3ZlIHdpdGhvdXQKICAg
ICAvLyB0aGUgc2VsZWN0aW9uIGNoYW5naW5nLgogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBj
b3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCkuY2FuRWRp
dCgpKQogICAgICAgICBtX3dlYlZpZXctPnByaXYtPmltRmlsdGVyLnNldEN1cnNvclJlY3QoZnJh
bWUtPnNlbGVjdGlvbigpLT5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAppbmRleCAyYTNkNGNlNzdmOWE4YjczZTYzZjFkZmQyNDQzYzM1NjUyYmMy
NTM1Li4zMjNmMmU1ZjA5MTNkODI4NWMwZWYxYzczOWM0ZTI2YzA0MDk3NDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsCiAgICAgZ19yZXR1cm5faWZfZmFpbChuYW1lKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHZh
bHVlKTsKIAotICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAg
Y29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5l
ZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQogCiBib29sIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBjb25zdCBnY2hhciogbmFtZSkKQEAgLTI4NCw3ICsyODQsNyBAQCBib29sIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnYwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAot
ICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOworICAgIHJldHVy
biBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiB0ZXh0LCBpbnQgc3RhcnQsIGludCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCA1N2Zh
Y2FmMzExMDM5OWE1YWNiMDY0NWU3MGRjOTI5MjQ1ZTdhYTQ2Li41MDkwOTA0NzMxYzQ5NzMwZjdj
NmU5ZWIxMDVlY2E4NjUyMWRiZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lk
IEVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAg
ICAgc2V0U2VsZWN0aW9uUHJpbWFyeUNsaXBib2FyZElmTmVlZGVkKG1fd2ViVmlldyk7CiAjZW5k
aWYKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rp
b25Jc0ludmFsaWQoKSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9u
SWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRl
ci5yZXNldENvbnRleHQoKTsKIH0KIApAQCAtMzk0LDcgKzM5NCw3IEBAIGJvb2wgRWRpdG9yQ2xp
ZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKEZyYW1lKiBmcmFtZSwgYm9vbCBhbGxv
d1RleHRJbnNlCiB7CiAgICAgVmVjdG9yPEVkaXRvcjo6Q29tbWFuZD4gY29tbWFuZHM7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCk7IGkr
KykgewotICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCht
X3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYg
KGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkgJiYgIWFsbG93VGV4dEluc2VydGlvbikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9
CiAKICAgICAgICAgLy8gT25seSBhbGxvdyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcyBpZiB0aGUg
Y3VycmVudCBub2RlIGlzIGVkaXRhYmxlLgotICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0
b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7CisgICAgICAg
IGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBmcmFtZS0+ZWRpdG9yKCku
Y2FuRWRpdCgpKSkgewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIEVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICB9CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBj
YW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGhpcyBpcyBqdXN0IGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9uLCBzbyB3YWl0IHRvIGV4ZWN1dGUg
dGhlIGluc2VydGlvbgpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChwbGF0Zm9ybUV2
ZW50LT5jdHJsS2V5KCkgfHwgcGxhdGZvcm1FdmVudC0+YWx0S2V5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+
dGV4dCgpLCBldmVudCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHBsYXRm
b3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggMzM5ODkxMWVkZDkwZDk5
MWI5ZmEyZjIwODY0ZmI2ZDMzOWIxNjQ1YS4uOTg3N2ZjYTE5NmY2OWM0NThlYTIxNWNkOTY5MzRk
NTJlYWY5MjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZXRXZWJWaWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiBib29sIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCgpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1l
ICYmIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFt
ZS0+ZWRpdG9yKCkuY2FuRWRpdCgpOwogfQogCiBib29sIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRl
cjo6c2VuZFNpbXBsZUtleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCwgV1RGOjpTdHJpbmcgc2lt
cGxlU3RyaW5nLCBFdmVudEZha2VkRm9yQ29tcG9zaXRpb24pCkBAIC03Niw0MiArNzYsNDIgQEAg
Ym9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRLZXlFdmVudFdpdGhDb21wb3NpdGlv
blJlc3VsdHMoR2RrRXZlbnRLZXkqIGUKIHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpj
b25maXJtQ29tcG9zaXRpb25UZXh0KFN0cmluZyB0ZXh0KQogewogICAgIEZyYW1lKiBmcmFtZSA9
IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0ZXh0LmlzTnVsbCgpKSB7CiAgICAgICAg
IGNvbmZpcm1DdXJyZW50Q29tcG9zaXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihtX2NvbmZpcm1lZENvbXBvc2l0
aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKG1fY29uZmlybWVk
Q29tcG9zaXRpb24pOwogfQogCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmly
bUN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFp
bkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCiB2b2lkIFdlYlZpZXdJ
bnB1dE1ldGhvZEZpbHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKCkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9y
KCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jYW5j
ZWxDb21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbigp
OwogfQogCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0UHJlZWRpdChTdHJpbmcg
bmV3UHJlZWRpdCwgaW50IGN1cnNvck9mZnNldCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBUT0RPOiBXZSBzaG91bGQgcGFyc2UgdGhlIFBhbmdv
QXR0ckxpc3QgdGhhdCB3ZSBnZXQgZnJvbSB0aGUgSU0gY29udGV4dCBoZXJlLgogICAgIFZlY3Rv
cjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVzLmFwcGVu
ZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBuZXdQcmVlZGl0Lmxlbmd0aCgpLCBDb2xvcigxLCAx
LCAxKSwgZmFsc2UpKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKG5ld1By
ZWVkaXQsIHVuZGVybGluZXMsIG1fY3Vyc29yT2Zmc2V0LCBtX2N1cnNvck9mZnNldCk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKG5ld1ByZWVkaXQsIHVuZGVybGluZXMsIG1f
Y3Vyc29yT2Zmc2V0LCBtX2N1cnNvck9mZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKaW5kZXggMzM0
NjE2NGQ4YzY1NTljYjhjOTEwMmQyYWJmYWEwOTU0YjVjODQ4OS4uMTYzZjZmMGJjNTU2NTM2Mzg2
YTJiOWE0NDU3YzdiODk4YzM1ZjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuY3BwCkBAIC0xMTM0LDcgKzExMzQsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJh
bWVfcmVwbGFjZV9zZWxlY3Rpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiB0
ZXh0KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKICAgICBib29sIHNlbGVj
dFJlcGxhY2VtZW50ID0gZmFsc2U7CiAgICAgYm9vbCBzbWFydFJlcGxhY2UgPSB0cnVlOwotICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBzZWxl
Y3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnJl
cGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBs
YWNlKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKaW5kZXggMDc2NjZiZTZhZGEwMjI5NTJlNGY2OGZlMzVlYWZlNDgwODU2Njg4ZC4uYzU4MmI2
Njk2Y2RhYzBmMjBhZjdiMjlhYTg2NDc5OWM1MTBjNTg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBJbnRQ
b2ludCBnZXRMb2NhdGlvbkZvcktleWJvYXJkR2VuZXJhdGVkQ29udGV4dE1lbnUoRnJhbWUqIGZy
YW1lKQogICAgIC8vIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSBjYW4gcmV0dXJu
IDAgaGVyZSwgYnV0IGlmIHRoYXQgd2FzIHRoZSBjYXNlCiAgICAgLy8gc2VsZWN0aW9uLT5zZWxl
Y3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkgd291bGQgaGF2ZSByZXR1cm5lZCBm
YWxzZQogICAgIC8vIGFib3ZlLCBzbyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjayBpdC4KLSAgICBJ
bnRSZWN0IGZpcnN0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2Uoc2Vs
ZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCkuZ2V0KCkpOworICAgIEludFJlY3QgZmly
c3RSZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlvbi0+c2Vs
ZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKICAgICByZXR1cm4gSW50UG9pbnQoZmlyc3RS
ZWN0LngoKSwgZmlyc3RSZWN0Lm1heFkoKSk7CiB9CiAKQEAgLTkzOCw3ICs5MzgsNyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50KEd0a1dpZGdldCogd2lk
Z2V0LCBHZGtFdmVudEZvY3VzKgogICAgIGVsc2UKICAgICAgICAgZm9jdXNDb250cm9sbGVyLT5z
ZXRGb2N1c2VkRnJhbWUoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkpOwogCi0gICAgaWYgKGZv
Y3VzQ29udHJvbGxlci0+Zm9jdXNlZEZyYW1lKCktPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAg
aWYgKGZvY3VzQ29udHJvbGxlci0+Zm9jdXNlZEZyYW1lKCktPmVkaXRvcigpLmNhbkVkaXQoKSkK
ICAgICAgICAgd2ViVmlldy0+cHJpdi0+aW1GaWx0ZXIubm90aWZ5Rm9jdXNlZEluKCk7CiAgICAg
cmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFzcyktPmZv
Y3VzX2luX2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtMTE4MSwzMSArMTE4MSwzMSBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY29uc29sZV9tZXNzYWdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbgogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxf
c2VsZWN0X2FsbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwogfQogCiBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJvYXJkKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJD
dXQiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2Nv
cHlfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3JlZG8oV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJS
ZWRvIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3Jl
YWxfbW92ZV9jdXJzb3IgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a01vdmVtZW50U3RlcCBz
dGVwLCBnaW50IGNvdW50KQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29yIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBH
dGtNb3YKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmll
dyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtp
dF93ZWJfdmlld19yZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbihXZWJLaXRXZWJWaWV3
KikKQEAgLTQzODksNyArNDM4OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9oaWdobGln
aHRfdGV4dF9tYXRjaGVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdib29sZWFuCiAKICAgICBG
cmFtZSAqZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICBkbyB7Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChz
aG91bGRIaWdobGlnaHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1h
dGNoZXNBcmVIaWdobGlnaHRlZChzaG91bGRIaWdobGlnaHQpOwogICAgICAgICBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dFdpdGhXcmFwKGZhbHNlKTsKICAgICB9IHdoaWxlIChm
cmFtZSk7CiB9CkBAIC00NDU5LDcgKzQ0NTksNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2N1dF9jbGlwYm9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQoKSB8fCBmcmFt
ZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5j
YW5DdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDdXQoKTsKIH0KIAogLyoqCkBAIC00
NDc1LDcgKzQ0NzUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2NvcHlfY2xpcGJv
YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBj
b3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0g
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ29weSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+
Y2FuREhUTUxDb3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5KCkgfHwg
ZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ29weSgpOwogfQogCiAvKioKQEAgLTQ0OTEsNyArNDQ5
MSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fcGFzdGVfY2xpcGJvYXJkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1M
UGFzdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCkgfHwgZnJhbWUt
PmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKTsKIH0KIAogLyoqCkBAIC00NTQ3LDcgKzQ1NDcsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfdmlld19kZWxldGVfc2VsZWN0aW9uKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykp
OwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0
ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIC8qKgpAQCAt
NDYyOSw3ICs0NjI5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGdib29sZWFuIGZsYWcpCiAgICAgZ19yZXR1cm5faWZfZmFpbChm
cmFtZSk7CiAKICAgICBpZiAoZmxhZykgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIFRPRE86IElmIHRoZSBX
ZWJLaXRXZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHks
IHNldCBpdCB0byBzb21ldGhpbmcuCiAgICAgICAgIC8vaWYgKCF3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NlbGVjdGVkX2RvbV9yYW5nZSh3ZWJWaWV3KSkKICAgICAgICAgLy8gICAgbWFpbkZyYW1lLT5z
ZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwpAQCAtNTA5MCw3ICs1MDkwLDcgQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2Nhbl91bmRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuVW5kbygpOwor
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuVW5kbygpOwogfQogCiAvKioKQEAgLTUxMjUs
NyArNTEyNSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fcmVkbyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmNhblJlZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblJl
ZG8oKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2
ZDNjNmIwZmE1ZDYyMWMyODM2Y2MwYzY0ZjhmNjFhM2IyOTdmZTYwLi5hMDM1NGI0MjUwZjMzZTk2
ODgwNGRhMmFjMTExMDZiNDllNzEwN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRh
dGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoTlNTdHJpbmcgKilfc2VsZWN0
ZWRTdHJpbmcKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxheVN0cmlu
Z01vZGlmaWVkQnlFbmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0
ZWRUZXh0KCkpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVk
VGV4dCgpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc3RyaW5nRm9yUmFuZ2U6KERPTVJhbmdlICop
cmFuZ2UKQEAgLTYwMiw3ICs2MDIsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRh
dGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoTlNSZWN0KV9maXJzdFJlY3RG
b3JET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogewotICAgcmV0dXJuIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShjb3JlKHJhbmdlKSk7CisgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShy
YW5nZSkpOwogfQogCiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2Ug
KilyYW5nZQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAtIChET01SYW5nZSAqKV9tYXJr
RE9NUmFuZ2UKIHsKLSAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigp
LT5tYXJrKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5tYXJrKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSk7CiB9CiAKIC8vIEdpdmVuIHByb3Bvc2VkUmFuZ2UsIHJldHVybnMgYW4gZXh0ZW5kZWQgcmFu
Z2UgdGhhdCBpbmNsdWRlcyBhZGphY2VudCB3aGl0ZXNwYWNlIHRoYXQgc2hvdWxkCkBAIC03NDYs
NyArNzQ2LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlv
bigpLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpOwor
ICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmluc2VydFBhcmFncmFwaFNlcGFyYXRv
ckluUXVvdGVkQ29udGVudCgpOwogfQogCiAtIChWaXNpYmxlUG9zaXRpb24pX3Zpc2libGVQb3Np
dGlvbkZvclBvaW50OihOU1BvaW50KXBvaW50CkBAIC03NzUsNyArNzc1LDcgQEAgc3RhdGljIGlu
bGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAg
ICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lIHx8ICFzdHlsZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBjb3B5IGhlcmUuCi0g
ICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbXB1dGVBbmRTZXRUeXBpbmdTdHls
ZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CisgICAg
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKGNv
cmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsKIH0KIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC05MjgsNyArOTI4LDcgQEAgc3RhdGljIGlubGluZSBX
ZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAg
aWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAhZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybjsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+
cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgc2VsZWN0UmVwbGFj
ZW1lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjb3JlKGZyYWdtZW50KSwg
c2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSk7CiB9CiAKIC0gKHZv
aWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVjdFJlcGxh
Y2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClzbWFydFJl
cGxhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KaW5kZXggMzc2ZGY5Yjg0ODQwYmYyODdjYzljMTU5YzZkMGQ0MGUzYWFlOWQxYy4u
ZDYxMjBhZTkxZDdlNjA2NzY4YTU3YTk5NjY0MmY0YTc0YzA5MTJhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIyMCw3
ICsyMjAsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKm5ld0FycmF5QnlDb25jYXRlbmF0aW5n
QXJyYXlzKE5TQXJyYXkgKmZpcnN0LCBOU0FycmF5ICpzZQogICAgICAgICByZXR1cm47CiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IFt3ZWJGcmFtZSB3ZWJWaWV3XTsKICAgICBpZiAoW3dlYlZpZXcg
bWFpbkZyYW1lXSA9PSB3ZWJGcmFtZSAmJiBbd2ViVmlldyBpc0VkaXRhYmxlXSkKLSAgICAgICAg
Y29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQo
KTsKKyAgICAgICAgY29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9C
b2R5RWxlbWVudCgpOwogfQogCiAtIChCT09MKWNhblByb3ZpZGVEb2N1bWVudFNvdXJjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOGZmNjVhYjAwM2U3NTM0
MWEyNzA1YjllODExOWQzNGIyNzU0Y2Y5ZS4uZTE2NjlkN2E4OTI0NmE1OWE2N2UwYmMzYjI1YWQ4
YjRhY2M5ZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBA
IC04NjQsNyArODY0LDcgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0
KE5TU3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDcwCiAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBf
ZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0OnJhbmdl
IGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAgICBpZiAoZnJhZ21lbnQgJiYgW3Nl
bGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdl
IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLT5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOworICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYg
X2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CiAjZWxz
ZQogICAgIC8vIE1haWwgaXMgaWdub3JpbmcgdGhlIGZyYW1lbnQgcGFzc2VkIHRvIHRoZSBkZWxl
Z2F0ZSBhbmQgY3JlYXRlcyBhIG5ldyBvbmUuCiAgICAgLy8gV2Ugd2FudCB0byBhdm9pZCBjcmVh
dGluZyB0aGUgZnJhZ21lbnQgdHdpY2UuCkBAIC04NzIsMTIgKzg3MiwxMiBAQCBzdGF0aWMgTlNV
UkwqIHVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQoTlNTdHJpbmcgKnJlbGF0aXZlUGFydCkKICAg
ICAgICAgaWYgKFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpuaWwgcmVwbGFjaW5nRE9NUmFu
Z2U6cmFuZ2UgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pIHsKICAgICAg
ICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJh
Z21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWlu
VGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCi0gICAgICAg
ICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21l
bnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVu
dChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBh
c3RlYm9hcmRdLCBmYWxzZSk7CiAgICAgICAgIH0gICAgICAgIAogICAgIH0gZWxzZSB7CiAgICAg
ICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21l
bnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4
dDphbGxvd1BsYWluVGV4dF07CiAgICAgICAgIGlmIChmcmFnbWVudCAmJiBbc2VsZiBfc2hvdWxk
SW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJl
cGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOworICAgICAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9j
YW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogICAgIH0K
ICNlbmRpZgogICAgIFt3ZWJWaWV3IF9zZXRJbnNlcnRpb25QYXN0ZWJvYXJkOm5pbF07CkBAIC05
ODMsNyArOTgzLDcgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KE5T
U3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAtIChCT09MKV9zaG91bGREZWxldGVSYW5nZTooRE9NUmFu
Z2UgKilyYW5nZQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
OwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkRGVs
ZXRlUmFuZ2UoY29yZShyYW5nZSkpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1l
LT5lZGl0b3IoKS5zaG91bGREZWxldGVSYW5nZShjb3JlKHJhbmdlKSk7CiB9CiAKIC0gKE5TVmll
dyAqKV9oaXRWaWV3Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudApAQCAtMTc1OCwxMyArMTc1OCwx
MyBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpl
dmVudCkKIC0gKEJPT0wpX2NhbkVkaXQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuY2FuRWRpdCgpOwogfQogCiAtIChCT09MKV9jYW5FZGl0UmljaGx5CiB7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAm
JiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgcmV0dXJuIGNvcmVG
cmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKIH0KIAogLSAoQk9P
TClfY2FuQWx0ZXJDdXJyZW50U2VsZWN0aW9uCkBAIC0xODI0LDUwICsxODI0LDUwIEBAIHN0YXRp
YyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50KQogLSAo
RE9NTm9kZSAqKV9pbnNlcnRPcmRlcmVkTGlzdAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0T3JkZXJlZExpc3QoKS5nZXQoKSkgOiBuaWw7CisgICAgcmV0dXJu
IGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLmluc2VydE9yZGVyZWRMaXN0KCku
Z2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luc2VydFVub3JkZXJlZExpc3QKIHsK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4g
Y29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFVub3JkZXJlZExpc3Qo
KS5nZXQoKSkgOiBuaWw7CisgICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVk
aXRvcigpLmluc2VydFVub3JkZXJlZExpc3QoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKEJPT0wp
X2NhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIHJldHVybiBj
b3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbCgpOwogfQogCiAtIChCT09MKV9jYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBj
b3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0
TGV2ZWwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2Fu
RGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxm
IF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3Io
KS0+aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKS5nZXQoKSkgOiBuaWw7CisgICAgcmV0dXJu
IGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLmluY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsT3JkZXJlZAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxm
IF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3Io
KS0+aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmlsOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbE9yZGVyZWQoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKERPTU5vZGUgKilf
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKCku
Z2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0
b3IoKS5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgpLmdldCgpKSA6IG5pbDsK
IH0KIAogLSAodm9pZClfZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwor
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7
CiB9CiAKIC0gKHZvaWQpX3NldEhpZ2hsaWdodGVyOihpZDxXZWJIVE1MSGlnaGxpZ2h0ZXI+KWhp
Z2hsaWdodGVyIG9mVHlwZTooTlNTdHJpbmcqKXR5cGUKQEAgLTIzNTksNyArMjM1OSw3IEBAIHN0
YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yKHNlbGVjdG9yKSk7Cisg
ICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVj
dG9yKHNlbGVjdG9yKSk7CiB9CiAKIC0gKEVkaXRvcjo6Q29tbWFuZCljb3JlQ29tbWFuZEJ5TmFt
ZTooY29uc3QgY2hhciopbmFtZQpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgc3RhdGljIFN0cmluZyBj
b21tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3RvcikKICAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0
dXJuIEVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKG5hbWUpOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobmFt
ZSk7CiB9CiAKIC0gKHZvaWQpZXhlY3V0ZUNvcmVDb21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVj
dG9yCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkK
ICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CiAgICAg
ICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAg
ICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gd3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRp
bmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCI7Ci0gICAgICAgICAgICBbbWVu
dUl0ZW0gc2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKV07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3Rh
dGU6ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9u
LCBkaXJlY3Rpb24pXTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gW3NlbGYgX2NhbkVkaXRd
OwogICAgIH0KQEAgLTI2MTAsNyArMjYxMCw3IEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2Vs
ZWN0KQogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xh
c3NdXSkgewogICAgICAgICAgICAgLy8gVGFrZSBjb250cm9sIG9mIHRoZSB0aXRsZSBvZiB0aGUg
bWVudSBpdGVtIGluc3RlYWQgb2YganVzdCBjaGVja2luZy91bmNoZWNraW5nIGl0IGJlY2F1c2UK
ICAgICAgICAgICAgIC8vIGEgY2hlY2sgd291bGQgYmUgYW1iaWd1b3VzLgotICAgICAgICAgICAg
W21lbnVJdGVtIHNldFRpdGxlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFRpdGxl
OmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwg
InJ0bCIpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQgdG8gUmln
aHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAgICAgICAg
OiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250
ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAtMjY0MSwxMSArMjY0MSwxMSBAQCBXRUJD
T1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9oYXNTZWxl
Y3Rpb25dOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBhc3RlOikgfHwgYWN0
aW9uID09IEBzZWxlY3RvcihwYXN0ZUFzUGxhaW5UZXh0OikpCi0gICAgICAgIHJldHVybiBmcmFt
ZSAmJiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigp
LT5jYW5QYXN0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lICYmIChmcmFtZS0+ZWRpdG9yKCku
Y2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpKTsKICAgICAKICAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZUFzUmljaFRleHQ6KSkKLSAgICAgICAgcmV0
dXJuIGZyYW1lICYmIChmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKQotICAgICAgICAg
ICAgfHwgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCkt
PmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lICYmIChm
cmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpCisgICAgICAgICAgICB8fCAoZnJhbWUtPmVk
aXRvcigpLmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRSaWNobHlF
ZGl0YWJsZSgpKSk7CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGVyZm9ybUZp
bmRQYW5lbEFjdGlvbjopKQogICAgICAgICByZXR1cm4gTk87CkBAIC0zODAzLDcgKzM4MDMsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChG
cmFtZSogY29yZUZyYW1lKQogICAgIF9wcml2YXRlLT5fZm9yY2VVcGRhdGVTZWN1cmVJbnB1dFN0
YXRlID0gTk87CiAKICAgICAvLyBGSVhNRTogS2lsbCByaW5nIGhhbmRsaW5nIGlzIG1vc3RseSBp
biBXZWJDb3JlLCBzbyB0aGlzIGNhbGwgc2hvdWxkIGFsc28gYmUgbW92ZWQgdGhlcmUuCi0gICAg
ZnJhbWUtPmVkaXRvcigpLT5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsKIAogICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTQyMzEsNyAr
NDIzMSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2Fy
ZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSk7CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ4IgotICAgICAgICBhdHRyaWJ1
dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRBdHRyaWJ1dGVzRm9yU2Vs
ZWN0aW9uU3RhcnQoKSA6IG5pbF07CisgICAgICAgIGF0dHJpYnV0ZXM6Y29yZUZyYW1lID8gY29y
ZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgOiBuaWxd
OwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAs
IFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07CiAgICAgW3N0cmluZyBy
ZWxlYXNlXTsKICAgICByZXR1cm4gZGF0YTsKQEAgLTQzNTksNyArNDM1OSw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3Jl
RnJhbWUpCiB7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEgY29weSBo
ZXJlLiBXZSB3YW50IGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiB0byB3b3JrIGRpcmVjdGx5IHdp
dGggU3R5bGVQcm9wZXJ0eVNldCBldmVudHVhbGx5LgotICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCku
Z2V0KCksIHVuZG9BY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5
bGVUb1NlbGVjdGlvbihjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0Fj
dGlvbik7CiAgICAgfQogfQogCkBAIC00NjYxLDcgKzQ2NjEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQog
ICAgIGlmIChbW3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJW
aWV3IHNob3VsZEFwcGx5U3R5bGU6c3R5bGUgdG9FbGVtZW50c0luRE9NUmFuZ2U6cmFuZ2VdKSB7
CiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhl
cmUuCi0gICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKGNvcmUoc3R5
bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCBbc2VsZiBfdW5kb0FjdGlvbkZyb21Db2xvclBh
bmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7CisgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLmFwcGx5U3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIFtzZWxm
IF91bmRvQWN0aW9uRnJvbUNvbG9yUGFuZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3JdKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNDc0OCw3ICs0NzQ4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5
Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBD
T01NQU5EX1BST0xPR1VFCiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYg
X2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZygpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZygpOwogfQogCiAtICh2b2lkKXNob3dHdWVzc1BhbmVsOihpZClzZW5kZXIKQEAgLTQ3
NjgsNyArNDc2OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRL
ZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgfQogICAgIAogICAgIGlmIChGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOworICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKICAgICBbc3BlbGxp
bmdQYW5lbCBvcmRlckZyb250OnNlbmRlcl07CiB9CiAKQEAgLTQ4MzYsNyArNDgzNiw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1l
KiBjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdyaXRpbmdEaXJlY3Rpb24gZGly
ZWN0aW9uID0gUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwotICAgIHN3aXRjaCAoY29yZUZy
YW1lLT5lZGl0b3IoKS0+YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpKSB7
CisgICAgc3dpdGNoIChjb3JlRnJhbWUtPmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0aW9uRm9y
U2VsZWN0aW9uU3RhcnQoKSkgewogICAgICAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVj
dGlvbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGlu
Z0RpcmVjdGlvbjoKQEAgLTQ4NTAsNyArNDg1MCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJv
YXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgfQog
CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24p
OworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRp
cmVjdGlvbik7CiB9CiAKIC0gKHZvaWQpY2hhbmdlQmFzZVdyaXRpbmdEaXJlY3Rpb246KGlkKXNl
bmRlcgpAQCAtNDg2Nyw3ICs0ODY3LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVu
dD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBBU1NFUlQod3Jp
dGluZ0RpcmVjdGlvbiAhPSBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKTsKIAogICAgIGlmIChG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24od3JpdGluZ0RpcmVjdGlvbiA9PSBO
U1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlv
biA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24od3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRp
bmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJl
Y3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQpAQCAtNDg4OCw3ICs0ODg4LDcgQEAgc3RhdGljIEJP
T0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQogCiAgICAgaWYg
KEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBS
aWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3Jp
dGluZ0RpcmVjdGlvbik7CiB9CiAKIC0gKHZvaWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQ6KGlkKXNlbmRlcgpAQCAtNTAyMyw3ICs1MDIzLDcgQEAgc3RhdGljIEJPT0wgd3Jp
dGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgYm9vbCBtdWx0aXBsZUZvbnRz
ID0gZmFsc2U7CiAgICAgTlNGb250ICpmb250ID0gbmlsOwogICAgIGlmIChGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewotICAgICAgICBpZiAoY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+Zm9udEZvclNlbGVjdGlvbihtdWx0aXBs
ZUZvbnRzKSkKKyAgICAgICAgaWYgKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmZCA9IGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuZm9udEZvclNlbGVjdGlvbihtdWx0aXBsZUZvbnRzKSkKICAgICAgICAgICAg
IGZvbnQgPSBmZC0+Z2V0TlNGb250KCk7CiAgICAgfQogCkBAIC01NTYzLDcgKzU1NjMsNyBAQCBz
dGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBOU01ha2VSYW5nZSgwLCAwKTsKLSAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJG
cmFtZSBfY29udmVydFRvTlNSYW5nZTpjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJh
bmdlKCkuZ2V0KCldOworICAgIE5TUmFuZ2UgcmVzdWx0ID0gW3dlYkZyYW1lIF9jb252ZXJ0VG9O
U1JhbmdlOmNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpLmdldCgpXTsKIAog
ICAgIExPRyhUZXh0SW5wdXQsICJtYXJrZWRSYW5nZSAtPiAoJXUsICV1KSIsIHJlc3VsdC5sb2Nh
dGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU2MDcsMTIgKzU2
MDcsMTIgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgp
CiAtIChCT09MKWhhc01hcmtlZFRleHQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKTsKLSAgICBCT09MIHJlc3VsdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIEJPT0wgcmVzdWx0ID0gY29yZUZyYW1l
ICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgLy8gQSBzYXZlZCBjb21tYW5kIGNhbiBjb25maXJtIGEgY29tcG9zaXRp
b24sIGJ1dCBpdCBjYW5ub3Qgc3RhcnQgYSBuZXcgb25lLgogICAgICAgICBbc2VsZiBfZXhlY3V0
ZVNhdmVkS2V5cHJlc3NDb21tYW5kc107Ci0gICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKICAgICB9CiAKICAgICBMT0coVGV4dElucHV0LCAiaGFz
TWFya2VkVGV4dCAtPiAldSIsIHJlc3VsdCk7CkBAIC01NjM0LDcgKzU2MzQsNyBAQCBzdGF0aWMg
Qk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICB9CiAgICAgCiAg
ICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGljIHZvaWQgZXh0
cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4mIHJlc3VsdCkKQEAgLTU3MDIsNyArNTcwMiw3IEBAIHN0YXRpYyB2b2lk
IGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29t
cG9zaXRpb25VbmRlCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RG
b3VuZCkKICAgICAgICAgW1tzZWxmIF9mcmFtZV0gX3NlbGVjdE5TUmFuZ2U6cmVwbGFjZW1lbnRS
YW5nZV07CiAKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbih0ZXh0LCB1
bmRlcmxpbmVzLCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkp
OworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5l
cywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsKIH0KIAog
LSAodm9pZClkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0b3IKQEAgLTU3MjAsNyArNTcy
MCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAKICAgICAvLyBBcyBpbiBpbnNlcnRUZXh0
Oiwgd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGwgY29tZXMgZnJvbSBhbiBpbnB1dCBtZXRob2QgaWYg
dGhlcmUgaXMgbWFya2VkIHRleHQuCiAgICAgUmVmUHRyPEZyYW1lPiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pOwotICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUg
JiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBib29sIGlzRnJv
bUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9z
aXRpb24oKTsKIAogICAgIGlmIChldmVudCAmJiBzaG91bGRTYXZlQ29tbWFuZCAmJiAhaXNGcm9t
SW5wdXRNZXRob2QpCiAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuYXBwZW5kKEtl
eXByZXNzQ29tbWFuZChOU1N0cmluZ0Zyb21TZWxlY3RvcihzZWxlY3RvcikpKTsKQEAgLTU3NzQs
NyArNTc3NCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgUmVmUHRyPEZyYW1lPiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIE5TU3RyaW5nICp0ZXh0OwogICAg
IE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSA9IHsgTlNOb3RGb3VuZCwgMCB9OwotICAgIGJvb2wg
aXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFz
Q29tcG9zaXRpb24oKTsKKyAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIFZlY3RvcjxEaWN0
YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnM7CiAgICAgaWYg
KGlzQXR0cmlidXRlZFN0cmluZykgewpAQCAtNTgxMCw3ICs1ODEwLDcgQEAgc3RhdGljIHZvaWQg
ZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21w
b3NpdGlvblVuZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghY29yZUZyYW1l
IHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFjb3JlRnJhbWUg
fHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQpAQCAtNTgxOSwx
NyArNTgxOSwxNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGJvb2wgZXZlbnRIYW5k
bGVkID0gZmFsc2U7CiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZlbnRUZXh0
LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNhbWUgdGhp
bmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgaWYgKCFjb3JlRnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKCFjb3JlRnJhbWUtPmVk
aXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWln
aHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24n
dCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJl
c3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCiAKICAgICAgICAgaWYgKCFkaWN0YXRp
b25BbHRlcm5hdGl2ZUxvY2F0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBldmVudEhhbmRs
ZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0LCBk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgZXZlbnQpOworICAgICAgICAgICAgZXZlbnRI
YW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRUZXh0
LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgZXZlbnQpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0
KGV2ZW50VGV4dCwgZXZlbnQpOworICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1l
LT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOwogICAgIH0KICAgICAKICAgICBpZiAo
cGFyYW1ldGVycykKQEAgLTU4ODQsMTUgKzU4ODQsMTUgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVu
ZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVu
ZGUKIAogICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKIAotICAgIGlmICghY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVkaXRvcigp
LT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmICghY29yZUZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpIHx8IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5z
aWduZWQgc3RhcnQ7CiAgICAgdW5zaWduZWQgZW5kOwotICAgIGlmIChjb3JlRnJhbWUtPmVkaXRv
cigpLT5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihzdGFydCwgZW5kKSkKKyAgICBpZiAoY29yZUZy
YW1lLT5lZGl0b3IoKS5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihzdGFydCwgZW5kKSkKICAgICAg
ICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJrZWRUZXh0U2VsZWN0
aW9uQ2hhbmdlZDpOU01ha2VSYW5nZShzdGFydCwgZW5kIC0gc3RhcnQpIGNsaWVudDpzZWxmXTsK
ICAgICBlbHNlIHsKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRp
b24oKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbigpOwog
ICAgICAgICBbW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJdIG1hcmtlZFRleHRB
YmFuZG9uZWQ6c2VsZl07CiAgICAgfQogfQpAQCAtNjA2MCw3ICs2MDYwLDcgQEAgc3RhdGljIHZv
aWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxD
b21wb3NpdGlvblVuZGUKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+Y291bnRNYXRjaGVzRm9yVGV4dChzdHJp
bmcsIGNvcmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQsIG1hcmtNYXRjaGVz
LCAwKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0
KHN0cmluZywgY29yZShyYW5nZSksIGNvcmVPcHRpb25zKG9wdGlvbnMpLCBsaW1pdCwgbWFya01h
dGNoZXMsIDApOwogfQogCiAtICh2b2lkKXNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQ6KEJPT0wpbmV3VmFsdWUKQEAgLTYwNjgsMTMgKzYwNjgsMTMgQEAgc3RhdGljIHZvaWQgZXh0
cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3Np
dGlvblVuZGUKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAg
ICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQobmV3VmFsdWUpOworICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChuZXdW
YWx1ZSk7CiB9CiAKIC0gKEJPT0wpbWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZAogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBj
b3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+bWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZCgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5t
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CiB9CiAKIC0gKHZvaWQpdW5tYXJrQWxs
VGV4dE1hdGNoZXMKQEAgLTYxMTAsNyArNjExMCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRl
cmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
CiAgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCiAgICAgICAgIHJldHVybiBOTzsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1l
ICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcoc3RyaW5nLCBjb3JlT3B0aW9ucyhv
cHRpb25zKSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmZp
bmRTdHJpbmcoc3RyaW5nLCBjb3JlT3B0aW9ucyhvcHRpb25zKSk7CiB9CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxZjgxZTNiN2FiNTgxMTIxNzA2OGMzOGE4
Y2UxOWFlNDU2MDRiNTcxLi44MDVjZGI5MDBlMWZjYzk5NjhmNDkzMTg4MjQ0ZTI4NzE2ZDg3NTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNDI3LDcgKzI0MjcsNyBA
QCBzdGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhl
Y3V0ZSh2YWx1ZSk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1
dGUodmFsdWUpOwogfQogCiAtICh2b2lkKV9zZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5
Oihkb3VibGUpdGltZURlbGF5CkBAIC01MzgyLDcgKzUzODIsNyBAQCBzdGF0aWMgTlNBcHBsZUV2
ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUgagogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4ga2l0KHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0
b3IoKS0+cmFuZ2VGb3JQb2ludChJbnRQb2ludChbc2VsZiBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9W
aWV3Om5pbF0pKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUoKS0+ZWRp
dG9yKCkucmFuZ2VGb3JQb2ludChJbnRQb2ludChbc2VsZiBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9W
aWV3Om5pbF0pKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3Nob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6KERPTVJhbmdlICopY3VycmVudFJhbmdlIHRvRE9NUmFuZ2U6KERPTVJhbmdlICopcHJv
cG9zZWRSYW5nZSBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlY3Rpb25BZmZpbml0
eSBzdGlsbFNlbGVjdGluZzooQk9PTClmbGFnCkBAIC01NDQzLDcgKzU0NDMsNyBAQCBzdGF0aWMg
TlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgagogICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gW3NlbGYgX21haW5D
b3JlRnJhbWVdOwogICAgICAgICBpZiAobWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBpZiAoZmxh
ZykgewotICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCku
YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gSWYg
dGhlIFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJsZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSwg
c2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAgICAgICAgICAgICBpZiAoIVtzZWxmIHNlbGVjdGVk
RE9NUmFuZ2VdKQogICAgICAgICAgICAgICAgICAgICBtYWluRnJhbWUtPnNlbGVjdGlvbigpLT5z
ZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwpAQCAtNTczMCw3ICs1NzMwLDcgQEAgc3RhdGljIE5TQXBw
bGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIGoKICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0ZWRPck1h
aW5GcmFtZV07CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIGlm
IChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVNlbGVjdGlv
bldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxWaWV3ICopW1t3ZWJGcmFtZSBmcmFtZVZpZXddIGRv
Y3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9yRGVsZXRlXSk7CisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKFsoV2ViSFRNTFZpZXcgKilb
W3dlYkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBfY2FuU21hcnRDb3B5T3JEZWxldGVd
KTsKIH0KICAgICAKIC0gKHZvaWQpYXBwbHlTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KXN0eWxlCkBAIC01NzQxLDcgKzU3NDEsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRv
ciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgagogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4KICAgICBpZiAoY29yZUZyYW1lKQotICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJv
cGVydGllcygpLmdldCgpKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxl
KGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpKTsKIH0KIAogQGVuZApAQCAtNTc4
OCw3ICs1Nzg4LDcgQEAgRk9SX0VBQ0hfUkVTUE9OREVSX1NFTEVDVE9SKEZPUldBUkQpCiB7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdKTsK
ICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+
Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAgICAgICByZXR1cm4gY29yZUZy
YW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCk7CiAgICAgCiAg
ICAgcmV0dXJuIG5pbDsKIH0KQEAgLTU4MzIsNyArNTgzMiw3IEBAIEZPUl9FQUNIX1JFU1BPTkRF
Ul9TRUxFQ1RPUihGT1JXQVJEKQogICAgIE5vZGUqIGNvcmVTdGFydE5vZGU9IGNvcmUoc3RhcnRO
b2RlKTsKICAgICBpZiAoY29yZVN0YXJ0Tm9kZS0+ZG9jdW1lbnQoKSAhPSBjb3JlRnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3Io
KS0+c2ltcGxpZnlNYXJrdXAoY29yZVN0YXJ0Tm9kZSwgY29yZShlbmROb2RlKSk7ICAgIAorICAg
IHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLnNpbXBsaWZ5TWFya3VwKGNvcmVTdGFydE5vZGUs
IGNvcmUoZW5kTm9kZSkpOyAgICAKIH0KIAogQGVuZApAQCAtNjU2Nyw3ICs2NTY3LDcgQEAgc3Rh
dGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJl
ZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2Vs
ZWN0ZWRPck1haW5GcmFtZV07CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUp
OwogICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhbmRs
ZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggYzM4NTI0ZjljMTU0YWJlMjBjMmRlYWZhN2I3MWJiYjJi
N2NkM2Y0ZC4uN2FiZTM2NzI3YjIxZjExYWJjMTQxMzg2NDBmOWZmZmQxMjUzOWFiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAKQEAgLTMyOSwxMiArMzI5LDEyIEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKFFXZWJQYWdlQWRhcHRl
ciogYWRhCiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV4ZWN1dGVDb3JlQ29tbWFu
ZEJ5TmFtZShRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNv
bnN0IFFTdHJpbmcmIHZhbHVlKQogewotICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhlY3V0
ZSh2YWx1ZSk7CisgICAgYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQog
CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1hbmRFbmFibGVkKFFXZWJQYWdl
QWRhcHRlciAqYWRhcHRlciwgY29uc3QgUVN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gYWRh
cHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0
b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gYWRhcHRlci0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21t
YW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiBRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNlbGVjdGVkUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyICphZGFwdGVyKQpAQCAtMzc0
LDcgKzM3NCw3IEBAIFFWYXJpYW50TGlzdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Zmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyCiAgICAgaWYgKCFyYW5nZSkKICAg
ICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOwogCi0gICAgUVJlY3QgcmVzdWx0UmVjdCA9IGZy
YW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIFFSZWN0
IHJlc3VsdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpOwogICAgIHJlY3QgPDwgcmVzdWx0UmVjdC54KCkgPDwgcmVzdWx0UmVjdC55KCkgPDwgcmVz
dWx0UmVjdC53aWR0aCgpIDw8IHJlc3VsdFJlY3QuaGVpZ2h0KCk7CiAgICAgcmV0dXJuIHJlY3Q7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFmZjI5MjEzZjI3ZDQwOGQ0ZmEyMDFhZDEuLjgy
NWFjYTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0MmYxYjkwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0yMDYsMTIg
KzIwNiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFt
ZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1v
ZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsK
ICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9k
ZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVT
ZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBm
cmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAg
UGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNl
bGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2Fu
U21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFs
UGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0K
IAogICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpOwotICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAg
ICAgICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgpOwogfQogCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFD
SwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFm
cmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0
ZSB1bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3Mg
Ki8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT5yZWdpc3RlclVuZG9TdGVwKHN0ZXAp
OwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAg
ICAgICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91
dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgICAgICAvLyBzbyB3
ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5
IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJl
IGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBj
aGFyYWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKICAgICAgICAgICAgICAgICAmJiBr
ZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQo
ZXZlbnQpOwogICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVj
dXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCiAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEVk
aXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgewotICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwg
ZXZlbnQpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGtldmVu
dC0+dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTI2LDcg
KzUyNiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVudChldmVudCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOworICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCk7
CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4IGZhNGU0YzBmM2VhN2FjZDc4
Njc5YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjIxYzBlNThiMzNjZTMzMWI5NzViMzQwNDk3OGE3ZmJj
MGE0NTgxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJQYWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBAIFFTdHJpbmcgUVdlYlBhZ2VB
ZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoZnJhbWUtPnNl
bGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlv
bjo6Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmluZyBRV2ViUGFnZUFkYXB0ZXI6OnNlbGVjdGVk
SHRtbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS0+dG9IVE1MKCk7Cisg
ICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKIH0KIAogYm9vbCBRV2ViUGFnZUFk
YXB0ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lk
IFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiAKICAg
ICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lOwogICAgIGlmIChlZGl0
YWJsZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5
RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRo
ZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAgICAgICAgLy8gZnJhbWUtPnNldFNlbGVjdGlv
bkZyb21Ob25lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDdlNmYwMGViYTdiY2E0
ZWM3MzQ1MTFjMjRmNWUyMjRlNjUzYmEyNmMuLmY3NGJmZmI5YjljZGEyNTA5YWM5MTc4MjMwYzFm
MjFmMWZlNmQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpCiAKIHZv
aWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZy
YW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dCgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIFN0
cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcp
OwogICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIiwgIisiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApp
bmRleCA3MGNiNTJhOTczMjMxMjllODFiZDdkN2QwMTY2Y2U2ZjM4YzBjMDRiLi5jZTYyYTI5Y2Zk
ZGYzYTVmOTcyM2YwZjdjNWIxM2IxMjkwZmU0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCkBA
IC0xMDA1LDcgKzEwMDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpo
YXNTcGVsbGluZ01hcmtlcigKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAg
ICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAqcmVzdWx0ID0g
Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgpOworICAgICpyZXN1bHQgPSBjb3JlRnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVs
bGluZywgZnJvbSwgbGVuZ3RoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTAyNiwxMSAr
MTAyNiwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKEJTVFIgZGlyZWN0
aW9uKQogCiAgICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5c1N0cmluZ0xl
bihkaXJlY3Rpb24pKTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikKLSAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdy
aXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJl
Y3Rpb25TdHJpbmcgPT0gImx0ciIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRX
cml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gInJ0bCIp
Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCku
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTA1Miw3ICsxMDUyLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcoCiAgICAgaWYgKCFjb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBTdHJpbmcgdGV4dCA9IGNvcmVGcmFtZS0+
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb3JlRnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKSk7CisgICAgU3RyaW5nIHRleHQgPSBjb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcoY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAK
ICAgICAqcmVzdWx0ID0gQlN0cmluZyh0ZXh0KS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
OjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5l
eGVjdXRlKCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBTX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlNDc3NmZkZTA0M2Q1MGMxODRjY2MyZmE2MzZhMzI5
ZjZkMjIwMzQwLi5lNjI2Yjc4NGY5YmVhYTg3YWRjMDk4ZmE5ODRiZDQwZjM2NzRjYzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTgxMiwxMSArMTgxMiwxMSBAQCBib29sIFdlYlZpZXc6OmV4
ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBTZWxlY3RBbGw6Ci0g
ICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNl
bGVjdEFsbCIpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBVbmRvOgotICAgICAgICAgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKICAg
ICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpAQCAtMTk2Myw3ICsxOTYzLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9h
cmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYgKCFrZXlFdmVudCB8fCBrZXlFdmVu
dC0+aXNTeXN0ZW1LZXkoKSkgIC8vIGRvIG5vdCB0cmVhdCB0aGlzIGFzIHRleHQgaW5wdXQgaWYg
aXQncyBhIHN5c3RlbSBrZXkgZXZlbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0
S2V5RXZlbnQoZXZ0KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAogICAgIGlmIChrZXlFdmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2Vi
S2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUg
aG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9y
IHNob3VsZCBiZSB0cmVhdGVkLApAQCAtMTk3OSw3ICsxOTc5LDcgQEAgYm9vbCBXZWJWaWV3Ojpo
YW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYgKGV2
dC0+Y2hhckNvZGUoKSA8ICcgJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZ0
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgp
LT50ZXh0KCksIGV2dCk7CiB9CiAKIGJvb2wgV2ViVmlldzo6a2V5RG93bihXUEFSQU0gdmlydHVh
bEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCkBAIC0zNDI5LDcg
KzM0MjksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnVwZGF0ZUZvY3Vz
ZWRBbmRBY3RpdmVTdGF0ZSgpCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKEJTVFIgbmFtZSwgQlNUUiB2YWx1ZSkKIHsKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkt
PmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4ZWN1dGUodG9TdHJpbmcodmFsdWUpKTsKKyAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCku
Y29tbWFuZCh0b1N0cmluZyhuYW1lKSkuZXhlY3V0ZSh0b1N0cmluZyh2YWx1ZSkpOwogCiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC0zNjU2LDcgKzM2NTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnNlbGVjdGVkVGV4dCgKICAgICBpZiAoIWZvY3VzZWRGcmFtZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyBmcmFtZVNlbGVjdGVkVGV4dCA9IGZv
Y3VzZWRGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBmcmFtZVNl
bGVjdGVkVGV4dCA9IGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAg
KnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihmcmFtZVNlbGVjdGVkVGV4dC5jaGFyYWN0ZXJzKCks
IGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKTsKICAgICBpZiAoISp0ZXh0ICYmIGZyYW1lU2Vs
ZWN0ZWRUZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsKQEAgLTQy
NjUsMTQgKzQyNjUsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYXN0
ZUVuYWJsZWQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRlbGV0ZUVuYWJs
ZWQoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAg
KmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNhbkRlbGV0ZSgpOworICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNhbkRlbGV0ZSgpOwog
ICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjplZGl0aW5nRW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
ZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICplbmFibGVkID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LmNhbkVkaXQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDMyNCw3ICs0MzI0LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KQogewogICAgIFBvc2l0aW9uIHN0YXJ0
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVk
aXRvcigpLT5pbnNlcnRUZXh0KHRvU3RyaW5nKHRleHQpLCAwKTsKKyAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dCh0
b1N0cmluZyh0ZXh0KSwgMCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnNldEJhc2Uoc3RhcnQpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDM2OCwyOCArNDM2OCwy
OCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmFwcGx5U3R5bGUoCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvcHkoIAogICAgICAgICAvKiBbaW5dICov
IElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4ZWN1dGUo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXQoIAogICAgICAgICAvKiBb
aW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0IikuZXhl
Y3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGUoIAogICAgICAg
ICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFz
dGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvcHlV
UkwoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsKQogewotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29weVVSTChNYXJz
aGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJMKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTQ0MTEsNyArNDQxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6cGFzdGVGb250KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpkZWxldGVf
KCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIikuZXhlY3V0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApAQCAtNDQ5Myw3ICs0NDkzLDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjaGVja1NwZWxsaW5nKAogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogICAgIH0KICAgICAKLSAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9y
KCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOworICAgIGNvcmUobV9tYWluRnJhbWUpLT5l
ZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
ICAgICAKQEAgLTQ1MTIsNyArNDUxMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6c2hvd0d1ZXNzUGFuZWwoCiAgICAgICAgIG1fZWRpdGluZ0RlbGVnYXRlLT5zaG93U3Bl
bGxpbmdVSShGQUxTRSk7CiAgICAgfQogICAgIAotICAgIGNvcmUobV9tYWluRnJhbWUpLT5lZGl0
b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOworICAgIGNvcmUobV9tYWluRnJh
bWUpLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAgbV9lZGl0
aW5nRGVsZWdhdGUtPnNob3dTcGVsbGluZ1VJKFRSVUUpOwogICAgIHJldHVybiBTX09LOwogfQpA
QCAtNTMzOSw3ICs1MzM5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojps
b2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldygKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogewogICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtNTQ1NCw3ICs1NDU0LDcgQEAgdm9pZCBXZWJWaWV3OjpwcmVwYXJl
Q2FuZGlkYXRlV2luZG93KEZyYW1lKiB0YXJnZXRGcmFtZSwgSElNQyBoSW5wdXRDb250ZXh0KQog
ICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHRlbXBSYW5nZSA9IHJhbmdlLT5jbG9uZVJh
bmdlKGVjKTsKLSAgICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVj
dEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CisgICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CiAgICAgfQogICAg
IGNhcmV0ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhjYXJldCk7CiAg
ICAgQ0FORElEQVRFRk9STSBmb3JtOwpAQCAtNTQ3Miw3ICs1NDcyLDcgQEAgdm9pZCBXZWJWaWV3
OjpwcmVwYXJlQ2FuZGlkYXRlV2luZG93KEZyYW1lKiB0YXJnZXRGcmFtZSwgSElNQyBoSW5wdXRD
b250ZXh0KQogdm9pZCBXZWJWaWV3OjpyZXNldElNRShGcmFtZSogdGFyZ2V0RnJhbWUpCiB7CiAg
ICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbmNl
bENvbXBvc2l0aW9uKCk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21w
b3NpdGlvbigpOwogCiAgICAgaWYgKEhJTUMgaElucHV0Q29udGV4dCA9IGdldElNTUNvbnRleHQo
KSkgewogICAgICAgICBJTU1EaWN0OjpkaWN0KCkubm90aWZ5SU1FKGhJbnB1dENvbnRleHQsIE5J
X0NPTVBPU0lUSU9OU1RSLCBDUFNfQ0FOQ0VMLCAwKTsKQEAgLTU0ODcsNyArNTQ4Nyw3IEBAIHZv
aWQgV2ViVmlldzo6dXBkYXRlU2VsZWN0aW9uRm9ySU1FKCkKICAgICBpZiAoIXRhcmdldEZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Y2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpKQorICAgIGlmICghdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKICAg
ICAgICAgcmVzZXRJTUUodGFyZ2V0RnJhbWUpOwogfQogCkBAIC01NjQzLDcgKzU2NDMsNyBAQCBi
b29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIXRhcmdldEZyYW1lIHx8
ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHByZXBhcmVDYW5kaWRhdGVXaW5kb3codGFyZ2V0RnJhbWUsIGhJbnB1dENvbnRleHQp
OwpAQCAtNTY1Myw3ICs1NjUzLDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKExQ
QVJBTSBscGFyYW0pCiAgICAgICAgIGlmICghZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElucHV0Q29u
dGV4dCwgR0NTX1JFU1VMVFNUUiwgY29tcG9zaXRpb25TdHJpbmcpICYmIGxwYXJhbSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmc7CiAgICAgICAg
IGlmICghZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElucHV0Q29udGV4dCwgR0NTX0NPTVBTVFIsIGNv
bXBvc2l0aW9uU3RyaW5nKSkKQEAgLTU2NzQsNyArNTY3NCw3IEBAIGJvb2wgV2ViVmlldzo6b25J
TUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogCiAgICAgICAgIGludCBjdXJzb3JQb3NpdGlv
biA9IExPV09SRChJTU1EaWN0OjpkaWN0KCkuZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElucHV0Q29u
dGV4dCwgR0NTX0NVUlNPUlBPUywgMCwgMCkpOwogCi0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0
b3IoKS0+c2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNv
clBvc2l0aW9uLCAwKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC01Njg2LDggKzU2ODYsOCBAQCBib29sIFdlYlZp
ZXc6Om9uSU1FRW5kQ29tcG9zaXRpb24oKQogICAgIC8vIElmIHRoZSBjb21wb3NpdGlvbiBoYXNu
J3QgYmVlbiBjb25maXJtZWQgeWV0LCBpdCBuZWVkcyB0byBiZSBjYW5jZWxsZWQuCiAgICAgLy8g
VGhpcyBoYXBwZW5zIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tIGlubGlu
ZSBpbnB1dCBob2xlLgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKKyAgICBpZiAodGFy
Z2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpCisgICAg
ICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nKCkpOwog
CiAgICAgaWYgKG1faW5JTUVDb21wb3NpdGlvbikKICAgICAgICAgbV9pbklNRUNvbXBvc2l0aW9u
LS07CkBAIC01NzEyLDE0ICs1NzEyLDE0IEBAIGJvb2wgV2ViVmlldzo6b25JTUVOb3RpZnkoV1BB
UkFNIHdwYXJhbSwgTFBBUkFNLCBMUkVTVUxUKikKIAogTFJFU1VMVCBXZWJWaWV3OjpvbklNRVJl
cXVlc3RDaGFyUG9zaXRpb24oRnJhbWUqIHRhcmdldEZyYW1lLCBJTUVDSEFSUE9TSVRJT04qIGNo
YXJQb3MpCiB7Ci0gICAgaWYgKGNoYXJQb3MtPmR3Q2hhclBvcyAmJiAhdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLT5oYXNDb21wb3NpdGlvbigpKQorICAgIGlmIChjaGFyUG9zLT5kd0NoYXJQb3MgJiYg
IXRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm4g
MDsKICAgICBJbnRSZWN0IGNhcmV0OwotICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpID8gdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5jb21wb3NpdGlvblJhbmdlKCkgOiB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVj
dGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKKyAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpID8gdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSA6IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZW1wUmFuZ2UgPSByYW5nZS0+Y2xvbmVS
YW5nZShlYyk7CiAgICAgICAgIHRlbXBSYW5nZS0+c2V0U3RhcnQodGVtcFJhbmdlLT5zdGFydENv
bnRhaW5lcihlYyksIHRlbXBSYW5nZS0+c3RhcnRPZmZzZXQoZWMpICsgY2hhclBvcy0+ZHdDaGFy
UG9zLCBlYyk7Ci0gICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5maXJzdFJl
Y3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOworICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1l
LT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOwogICAgIH0KICAg
ICBjYXJldCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coY2FyZXQpOwog
ICAgIGNoYXJQb3MtPnB0LnggPSBjYXJldC54KCk7CkBAIC01NzUyLDcgKzU3NTIsNyBAQCBMUkVT
VUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdChXUEFSQU0gcmVxdWVzdCwgTFBBUkFNIGRhdGEpCiB7
CiAgICAgTE9HKFRleHRJbnB1dCwgIm9uSU1FUmVxdWVzdCAlcyIsIGltZVJlcXVlc3ROYW1lKHJl
cXVlc3QpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCF0YXJn
ZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCF0
YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKHJlcXVlc3QpIHsKQEAgLTY4ODMsMTQgKzY4ODMsMTQg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRDb21wb3NpdGlvbkZvclRl
c3RpbmcoCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAg
U3RyaW5nIGNvbXBvc2l0aW9uU3RyID0gdG9TdHJpbmcoY29tcG9zaXRpb24pOwogCiAgICAgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBw
ZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyLmxlbmd0aCgpLCBDb2xv
cihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJs
aW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY5
MDQsNyArNjkwNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aGFzQ29t
cG9zaXRpb25Gb3JUZXN0aW5nKC8qIFtvdXQsIHJldHZhbF0gKi8KICAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICpyZXN1bHQgPSBmcmFtZSAmJiBmcmFtZS0+
ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgKnJlc3VsdCA9IGZyYW1lICYmIGZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC02
OTE1LDE1ICs2OTE1LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29u
ZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBbaW5dICovIEJTVFIKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHIg
PSB0b1N0cmluZyhjb21wb3NpdGlvbik7CiAKICAgICBpZiAoY29tcG9zaXRpb25TdHIuaXNOdWxs
KCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIAotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpAQCAtNjkzNCwxMCArNjkzNCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OmNvbXBvc2l0aW9uUmFuZ2VGb3JUZXN0aW5nKC8qIFtvdXRdICovIFVJTlQq
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOworICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgp
OwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTY5NzgsNyAr
Njk3OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2VGb3JUZXN0aW5nKAogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWlu
ZXIoKSk7CiAgICAgQVNTRVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAgICAgIAotICAgIElu
dFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpOworICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5n
ZShyYW5nZS5nZXQoKSk7CiAgICAgcmVzdWx0SW50UmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRl
bnRzVG9XaW5kb3cocmVjdCk7CiAKICAgICByZXN1bHRSZWN0LT5sZWZ0ID0gcmVzdWx0SW50UmVj
dC54KCk7CkBAIC02OTk4LDcgKzY5OTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKC8qIFtvdXRdICovIFVJTlQqIGxvYwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCk7CiAKICAgICBzaXpl
X3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBsZW5ndGhTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcApp
bmRleCBjOTFlYzlmODIwMmM4OGE2YzFlMmQ4YTI5N2I2NWNiYTk0ZDJmMjkyLi42NDU4ZGY2Zjhh
Nzg4NDc4OWU4MDg5ZWQ0NDExMmFlMmFmYTc1OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcApAQCAtMzk1
LDcgKzM5NSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0
S2V5RXZlbnQoZXZlbnQpKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBpZiAoa2V5
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8v
IFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVj
aWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVk
aXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQxNSw3ICs0MTUsNyBAQCBib29sIEVkaXRvckNs
aWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICBpZiAoa2V5RXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlFdmVudC0+YWx0S2V5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2Vy
dFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOworICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldmVudCk7
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk4
YTQwNGMwMmFhMWM5ODFiZWFlNDk1MjA2NjBmYjYxMzdjMmRmMTYuLjkwYTUxNDg2MGVmOTU3ZmE5
NjJiZjZjNTNiOWIwMDdmNmE4OTcyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2Fk
VVJMKGNvbnN0IEtVUkwmKQogI2lmICFQTEFURk9STShNQUMpCiB2b2lkIFdlYkNvbnRleHRNZW51
Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJp
bmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAg
IHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBTdHJpbmcgZW5jb2RlZCA9IGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKICAgICBlbmNvZGVkLnJl
cGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYzE3M2FiYzZm
YThiZGIyZjdmNTJkYWI3NWM1MTY4OTRlNjZjMjBiMi4uYThiNjJkMTViZWJiOGVkZDMxMzNmYzQy
OWRlMGU1YjVjNWY4ZDI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVHbG9iYWxTZWxlY3Rpb24oRnJhbWUq
IGZyYW1lKQogICAgIGlmIChzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpICYmIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGJvb2wgb2xkU2VsZWN0aW9uTW9kZSA9IFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpOwogICAgICAg
ICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUp
OwotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlv
bihmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOworICAgICAgICBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihmcmFtZS0+c2VsZWN0aW9u
KCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZyYW1lLT5lZGl0b3IoKS5jYW5TbWFydENv
cHlPckRlbGV0ZSgpLCBmcmFtZSk7CiAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJv
YXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9kZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2Vi
RWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKaW5kZXggNzAxMGE4Zjc3YzFmNWEzMTAw
OWY1YWE4YjcwYzJhMjhkMzJiYjNhMi4uYzQyZWMzN2JkNjQ2MTdlZGMxZDAwMDY1ZDc3ZTFmZmI2
ZTBmZmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9k
S2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBGSVhNRTogc2VuZGluZyBzeW5jIG1lc3NhZ2UgbWlnaHQgbWFrZSBpbnB1dCBsYWdn
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNjdmZGMxZjQ0
NGVhZDZiYThjYTc5MTg4NGZkNTgxOWY4MjRmMGM4MS4uOTg4OWE5ZDY4MTA3NTc1MTA2MDg5YWJm
OWU3OGNiMTNhYmMwYjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0Vk
aXRvckNvbW1hbmRzKEZyYW1lKiBmcmFtZSwgVmVjdG9yPFdURjo6U3RyCiB7CiAgICAgVmVjdG9y
PEVkaXRvcjo6Q29tbWFuZD4gY29tbWFuZHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
ZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgRWRpdG9yOjpDb21t
YW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQocGVuZGluZ0VkaXRvckNvbW1h
bmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKHBlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkgJiYg
IWFsbG93VGV4dEluc2VydGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTUs
MTQgKzk1LDE0IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9CiAKICAgICAgICAgLy8gT25seSBhbGxvdyB0
ZXh0IGluc2VydGlvbiBjb21tYW5kcyBpZiB0aGUgY3VycmVudCBub2RlIGlzIGVkaXRhYmxlLgot
ICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0Vk
aXRvckNvbW1hbmRzLCBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkpIHsKKyAgICAgICAgaWYg
KGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5k
cywgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90
IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMg
aXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBleGVjdXRlIHRoZSBp
bnNlcnRpb24KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxhdGZvcm1FdmVu
dC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRl
eHQoKSwgZXZlbnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChwbGF0Zm9y
bUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KaW5k
ZXggZDg1OGY2OTU4OTEyYzVkMTlhNWNlZDk1MTczYzhhODJjNGU2ZWE0My4uMzI3MjczMjJjYzFj
YTg1MGEzOTk4MjIxMDFmYWQyYmJhMjU2ZDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29u
dGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVu
dUNsaWVudDo6c3RvcFNwZWFraW5nKCkKIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNlYXJjaFRoZVdlYihzZWFyY2hTdHJpbmcpKTsKQEAgLTg1LDcgKzg1LDcg
QEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCgpCiAgICAg
aWYgKCFzZWxlY3Rpb25GcmFtZSkKICAgICAgICAgc2VsZWN0aW9uRnJhbWUgPSBtYWluRnJhbWU7
CiAKLSAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBzZWxlY3Rpb25GcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzZWxlY3Rpb25GcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpKTsKKyAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBzZWxlY3Rpb25GcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzZWxlY3Rpb25GcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCkpOwogICAgIAogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCA4
MjM1YmM2ZDg4MGYzNmZhMDU1NWEyNzUzMzBkNzZlMjdlMzU1ZmQ1Li5lMGI4YWM4MTJiODZhYTI2
OWI1N2RlM2E3ZjZmMmEwMjZkM2JhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50
TWFjLm1tCkBAIC0xMzYsMTIgKzEzNiwxMiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogc3RhdGljIHZvaWQgY2hhbmdlV29yZENh
c2UoV2ViUGFnZSogcGFnZSwgU0VMIHNlbGVjdG9yKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOwogCi0gICAgTlNTdHJpbmcgKnNlbGVjdGVk
U3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3RyaW5nID0g
ZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoZnJhbWUs
IFtzZWxlY3RlZFN0cmluZyBwZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZTI2MDU2
ZTkyODY5Y2Q1NTlkODAzNzk1MzM1OWQ0YjI3YjY3ZjFjZi4uMWFkMWFkOWEzMGRjMGY5ZDFkMDQ1
NGRmN2JmYTUwYzE0YTVkYzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpz
ZWxlY3Rpb25Bc1N0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkp
OworICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogfQogCiBJbnRTaXplIFdl
YkZyYW1lOjpzaXplKCkgY29uc3QKQEAgLTcwNCwxMSArNzA0LDExIEBAIHZvaWQgV2ViRnJhbWU6
OnNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChkaXJlY3Rpb24gPT0gImF1dG8iKQotICAgICAgICBtX2NvcmVGcmFtZS0+
ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9u
KTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImx0
ciIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVk
aXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlv
bik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJydGwiKQotICAgICAgICBtX2NvcmVGcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAjaWYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDhlNzA1ZGMwYWUzNWU2NmZjMzg5ZWU2ZThhMDZlMGI4Y2RkOWU0ZGEuLjAyYTczYjYyNTNl
YjMxYzg0ZmEzMjY2ZmEwYzlhOThhNWUzYjUxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYwMSw4ICs2MDEsOCBAQCBFZGl0b3JTdGF0
ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgcmVzdWx0LmlzQ29udGVudEVkaXRh
YmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIHJlc3Vs
dC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50
UmljaGx5RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgcmVzdWx0Lmhhc0NvbXBvc2l0
aW9uID0gZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOwotICAgIHJlc3VsdC5zaG91
bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+aWdu
b3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKKyAgICByZXN1bHQuaGFzQ29tcG9zaXRp
b24gPSBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKKyAgICByZXN1bHQuc2hvdWxk
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuaWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIHNp
emVfdCBsb2NhdGlvbiA9IDA7CkBAIC02NDEsOCArNjQxLDggQEAgRWRpdG9yU3RhdGUgV2ViUGFn
ZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgICAgICByZXN1bHQuZWRpdG9yUmVjdCA9IGZyYW1l
LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0aW9uUm9vdC0+cGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIGlmIChyZXN1bHQu
aGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJh
bmdlKCkpKSB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rp
b24ocmVzdWx0LmFuY2hvclBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOworICAgIGlm
IChyZXN1bHQuaGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBv
c2l0aW9uUmFuZ2UoKSkpIHsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmdldENvbXBvc2l0aW9u
U2VsZWN0aW9uKHJlc3VsdC5hbmNob3JQb3NpdGlvbiwgcmVzdWx0LmN1cnNvclBvc2l0aW9uKTsK
IAogICAgICAgICByZXN1bHQuY29tcG9zaXRpb25SZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyYW5nZS0+Ym91bmRpbmdCb3goKSk7CiAgICAgfQpAQCAtNjU3LDcgKzY1Nyw3
IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICB9CiAKICAg
ICBpZiAocmFuZ2UpCi0gICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdl
LmdldCgpKSk7CisgICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29u
dGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSB0cmFuc2ZlciBpbm5lclRleHQg
d2hlbiBpdCBjaGFuZ2VzIGFuZCBkbyB0aGlzIG9uIHRoZSBVSSBzaWRlLgogICAgIGlmIChyZXN1
bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCkgewpAQCAt
NzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJnCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5l
eGVjdXRlKGFyZ3VtZW50KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZShhcmd1bWVudCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFu
ZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKQEAgLTc3NSw3ICs3NzUsNyBAQCBi
b29sIFdlYlBhZ2U6OmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpCiAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmll
d0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmlzRWRpdGluZ0Nv
bW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CisgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSk7
CiAgICAgcmV0dXJuIGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5hYmxlZCgp
OwogfQogICAgIApAQCAtMTc3Myw3ICsxNzczLDcgQEAgdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAg
ICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZy
YW1lKGZyYW1lKSkKICAgICAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRpdGlu
Z0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21t
YW5kTmFtZSk7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKICAgICAgICAgICAgIHN0YXRlID0gY29tbWFu
ZC5zdGF0ZSgpOwogICAgICAgICAgICAgaXNFbmFibGVkID0gY29tbWFuZC5pc1N1cHBvcnRlZCgp
ICYmIGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgIH0KQEAgLTI1NTUsNyArMjU1NSw3IEBA
IGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZ0KQogICAgIGlmICgha2V5RXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJl
dEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTI1NjgsMTQgKzI1NjgsMTQgQEAgYm9vbCBXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5v
ZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBh
cyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKICAgICBpZiAoZXZ0LT5j
aGFyQ29kZSgpIDwgJyAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwor
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldnQtPmtleUV2ZW50KCktPnRl
eHQoKSwgZXZ0KTsKIH0KICNlbmRpZgogCkBAIC0yODU0LDcgKzI4NTQsNyBAQCB2b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQsCiB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3Io
KS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0
aW9uKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJp
bmcmIHdvcmQpCkBAIC0yODgxLDE3ICsyODgxLDE3IEBAIHZvaWQgV2ViUGFnZTo6dW5tYXJrQWxs
QmFkR3JhbW1hcigpCiAjaWYgVVNFKEFQUEtJVCkKIHZvaWQgV2ViUGFnZTo6dXBwZXJjYXNlV29y
ZCgpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT51cHBlcmNhc2VXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCkubG93ZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhcGl0YWxpemVX
b3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNhcGl0YWxpemVXb3JkKCk7
CiB9CiAjZW5kaWYKICAgICAKQEAgLTI5MjgsNyArMjkyOCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
ewogICAgIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQgPSB0cnVlOwogICAgIGJvb2wgc21hcnRSZXBs
YWNlID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KHRleHQsIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOworICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVj
dFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2Vs
ZWN0aW9uKCkKQEAgLTM1OTEsNyArMzU5MSw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+aGFuZGxl
QWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuaGFu
ZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKIH0KICNlbmRpZgogCkBAIC0zNjEz
LDI5ICszNjEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3Jl
OjpJbnRQb2ludCBwb3NpdGlvbiwgZG91YmxlIHRpbWUpCiB2b2lkIFdlYlBhZ2U6OnNldENvbXBv
c2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRf
dCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBv
c2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBDb2xvcihDb2xv
cjo6YmxhY2spLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJs
aW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aGFzQ29tcG9z
aXRpb25Gb3JUZXN0aW5nKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgJiYgZnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFt
ZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb25maXJt
Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0
KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyaW5nLmlzTnVsbCgpKQotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOwotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5j
b25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6
Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgbnVtV2hlZWxFdmVudEhhbmRs
ZXJzKQpAQCAtMzg1MywxOSArMzg1MywxOSBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogCiAg
ICAgICAgIEVsZW1lbnQqIHNjb3BlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHJlcGxhY2Vt
ZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKKyAgICAgICAg
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdl
KHRydWUpOwogICAgICAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklO
SVRZKSk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29tcG9zaXRp
b25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCku
c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOwogICAgIH0KIAotICAg
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywg
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rp
b25FbmQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFu
Z2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlv
bigpCiB7CiAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9yRWRpdGlu
Zyh0aGlzKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlv
bigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0
b3JTdGF0ZSgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGU0NzMxMDMwNGQ4MTY4YmE5ODkw
NzczYTJjOWNlZWViZWNhZDlkNmYuLjA5NmEwMzBkNzU0ZGJlODk5MTUzMTgzMDk2NDI4YTM1NjRk
ZWQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwv
V2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Vm
bC9XZWJQYWdlRWZsLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgV2ViUGFnZTo6Y29uZmly
bUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiAgICAgaWYgKCF0
YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGlu
ZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29u
c3QgVmVjdG9yPFdlYkNvCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0
cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworICAgIHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vy
c29yUG9zaXRpb24sIDApOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkK
QEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNh
bmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9u
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDE3NDc1NDY4ZjEwOWY5
Yzc2NzNiZDU5YjVmZTI3NDBjYWIzNmY4MTUuLjJhYTVjYmNkOGNjMWJhMTdlYzUwMTM4ZTViM2Rl
MmEyOTIwYzZjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTE2OCwxNiArMTY4LDE2IEBAIGJvb2wgV2ViUGFnZTo6
ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5
cHJlc3NDb21tCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChjb21t
YW5kc1tpXS5jb21tYW5kTmFtZSA9PSAiaW5zZXJ0VGV4dDoiKSB7Ci0gICAgICAgICAgICBBU1NF
UlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NF
UlQoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKIAotICAgICAgICAgICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJz
IGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgICAgICAvLyBPbmUg
ZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBw
YWdlLgotICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGZyYW1lLT5lZGl0b3IoKS0+aW5z
ZXJ0VGV4dChjb21tYW5kc1tpXS50ZXh0LCBldmVudCk7CisgICAgICAgICAgICBldmVudFdhc0hh
bmRsZWQgfD0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoY29tbWFuZHNbaV0udGV4dCwgZXZl
bnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUo
Y29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBj
b21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5h
bWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKICAgICAgICAgICAgIGlmIChjb21tYW5kLmlz
U3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRFeGVjdXRlZEJ5RWRp
dG9yID0gY29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAgICAgICAgICAgICAgICBldmVudFdhc0hh
bmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7CkBAIC0yMzMsNyArMjMzLDcgQEAgYm9v
bCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCwgYm9vbCBzYXZlQ29tbWFuZHMKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBh
IFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KICAgICAgICAgYm9vbCBoYXZlVGV4dEluc2VydGlv
bkNvbW1hbmRzID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFu
ZHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKS5p
c1RleHRJbnNlcnRpb24oKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpLmlz
VGV4dEluc2VydGlvbigpKQogICAgICAgICAgICAgICAgIGhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFu
ZHMgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGlu
c2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRp
bWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGVybGluZT4gdW4KICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRf
QUZGSU5JVFkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVz
LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKICAgICBuZXdTdGF0ZSA9
IGVkaXRvclN0YXRlKCk7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJQYWdlOjpjb25maXJt
Q29tcG9zaXRpb24oRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQogewogICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAg
ZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7
CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbihF
ZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBv
c2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CkBAIC0yOTksMTMg
KzI5OSwxMyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1
aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbgogICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdl
LmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KIAotICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBo
YW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRs
ZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBp
biBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0VGV4dCh0ZXh0LCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsK
KyAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRleHQsIG1fa2V5
Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhhbmRs
ZWQgPSB0cnVlOwotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0ZXh0KTsK
ICAgICB9CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0zMjEsOCArMzIxLDgg
QEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1
aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3QKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwg
U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIWZyYW1lLT5lZGl0
b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7Ci0gICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBt
X2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKKyAgICBBU1NFUlQoIWZyYW1lLT5lZGl0
b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLmlu
c2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9r
ZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0
ZSgpOwogfQogCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5n
ZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0
b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlvblNpemU7
CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7CiAgICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRp
dGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6
ZSwgbGVuZ3RoU2l6ZSkpIHsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgs
IFdlYgogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CiAgICAgQVNTRVJUKHJh
bmdlLT5lbmRDb250YWluZXIoKSk7CiAgICAgIAotICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5l
ZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIEludFJlY3QgcmVj
dCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CiAgICAg
cmVzdWx0UmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiB9CiAK
QEAgLTY1NSw3ICs2NTUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZQogICAgICAgICByZXN1
bHQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CisgICAgZnJhbWUt
PmVkaXRvcigpLnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAg
ICAgcmVzdWx0ID0gdHJ1ZTsKIH0KIApAQCAtNjc3LDcgKzY3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZChTdHJpbmcmIHN0cmluZ1ZhbHVlKQogICAg
IGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzdHJpbmdWYWx1ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpOworICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBTaGFyZWRNCiAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+ZWRpdG9y
KCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIHNpemUgPSAwOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201824</attachid>
            <date>2013-05-15 07:17:31 -0700</date>
            <delta_ts>2013-05-15 07:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515071626.patch</filename>
            <type>text/plain</type>
            <size>256951</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDQ0N2ZjMTcwNTliN2FhMmJiNzhkOWI2ZGU3
ODAzNWIwMTBiMmRiZmQuLjlmM2E5NTg1ODY3ZGQzYWJlMDg2ZjZhMTBiMzdlNzZhNjNjNGRiZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03MjQsNyArNzI0
LDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogewogICAgIGlmICh1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpKSB7CiAgICAgICAgIC8vIENoZWNr
IHRoZSBzcGVsbGluZyBkaXJlY3RseSBzaW5jZSBkb2N1bWVudC0+bWFya2Vyc0Zvck5vZGUoKSBk
b2VzIG5vdCBzdG9yZSB0aGUgbWlzc3BlbGxlZCBtYXJraW5nIHdoZW4gdGhlIGN1cnNvciBpcyBp
biBhIHdvcmQuCi0gICAgICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2VyID0gbm9kZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRDaGVja2VyKCk7CisgICAgICAgIFRleHRD
aGVja2VyQ2xpZW50KiBjaGVja2VyID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudGV4dENoZWNrZXIoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGNoZWNrVGV4dE9mUGFyYWdy
YXBoIGlzIHRoZSBvbmx5IHNwZWxsaW5nL2dyYW1tYXIgY2hlY2tlciBpbXBsZW1lbnRlZCBpbiBX
SzEgYW5kIFdLMgogICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwpA
QCAtNzQyLDcgKzc0Miw3IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxp
bmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywKICAgICBpbnQgY3VycmVu
dFBvc2l0aW9uID0gMDsKICAgICB3aGlsZSAoY2hhckxlbmd0aCA+IDApIHsKICAgICAgICAgY29u
c3QgVUNoYXIqIGNoYXJEYXRhID0gY2hhcnMgKyBjdXJyZW50UG9zaXRpb247Ci0gICAgICAgIFRl
eHRDaGVja2VyQ2xpZW50KiBjaGVja2VyID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRp
dG9yKCktPnRleHRDaGVja2VyKCk7CisgICAgICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2Vy
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudGV4dENoZWNrZXIoKTsKICAg
ICAgICAgCiAgICAgICAgIGludCBtaXNzcGVsbGluZ0xvY2F0aW9uID0gLTE7CiAgICAgICAgIGlu
dCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IDc0
NDY5ZjAwMjZjOTMwOWE3YzMxY2Y4MDhjYzFiNTIzODgwZDQzZTAuLjk2NDBjM2JlMjIxZWRiMzY1
NDZmMzI0MTU1MzgxZjRiODJiODMwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
bGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC0z
NDUsNyArMzQ1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBG
cmFtZSogZnJhbWUpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBkZXNpZ24gbWlzdGFrZSwgYSBs
YXllcmluZyB2aW9sYXRpb24gdGhhdCBzaG91bGQgYmUgZml4ZWQuCiAgICAgLy8gVGhlIGNvZGUg
dG8gd3JpdGUgdGhlIHJhbmdlIHRvIGEgcGFzdGVib2FyZCBzaG91bGQgYmUgYW4gRWRpdG9yIGZ1
bmN0aW9uIHRoYXQgdGFrZXMgYSBwYXN0ZWJvYXJkIGFyZ3VtZW50LgogICAgIC8vIEZJWE1FOiBU
aGUgZnJhbWUgYXJndW1lbnQgc2VlbXMgcmVkdW5kYW50LCBzaW5jZSBhIFJhbmdlIGlzIGluIGEg
cGFydGljdWxhciBkb2N1bWVudCwgd2hpY2ggaGFzIGEgY29ycmVzcG9uZGluZyBmcmFtZS4KLSAg
ICBtX3Bhc3RlYm9hcmQtPndyaXRlU2VsZWN0aW9uKHJhbmdlLCBmcmFtZS0+ZWRpdG9yKCktPnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+Z3JhbnVsYXJp
dHkoKSA9PSBXb3JkR3JhbnVsYXJpdHksIGZyYW1lLCBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkKTsKKyAgICBtX3Bhc3RlYm9hcmQtPndyaXRlU2VsZWN0aW9uKHJhbmdlLCBmcmFtZS0+
ZWRpdG9yKCkuc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigp
LT5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFs
dFRleHRGb3JDbGlwYm9hcmQpOwogfQogCiB2b2lkIENsaXBib2FyZDo6d3JpdGVQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4
IGE1MGUxNWZkZGU3ODg4ZDAxMzA5ZjA5ODFjODgzMzVlMTA4ZTllMTUuLjAxMTFmZTY2YWRjYWQy
ODM5M2JiYzQ1MWM1NTk0YzM4N2FlODE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OmNsb25lQ2hpbGRO
b2RlcyhDb250YWluZXJOb2RlICpjbG9uZSkKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAg
SFRNTEVsZW1lbnQqIGRlbGV0ZUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQgPSAwOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVy
KCktPmNvbnRhaW5lckVsZW1lbnQoKTsKKyAgICAgICAgZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxl
bWVudCA9IGZyYW1lLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmNvbnRhaW5l
ckVsZW1lbnQoKTsKICAgICBjbG9uZUNoaWxkTm9kZXNBdm9pZGluZ0RlbGV0ZUJ1dHRvbih0aGlz
LCBjbG9uZSwgZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCk7CiAjZWxzZQogICAgIGNsb25l
Q2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRoaXMsIGNsb25lLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGRhNDQ2MDMzYmI2YTkyMThhMWU2ZTVlMmJkNzY1MmY3YTNhNTNl
ODAuLjExY2Y4NTZlZWQ1YzUwOTZmZGViZWQzYjJmYzk1NWY2OTRlNGRjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRpYyBib29sIGFjY2VwdHNFZGl0
aW5nRm9jdXMoTm9kZSogbm9kZSkKICAgICBpZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRCZWdpbkVk
aXRpbmcocmFuZ2VPZkNvbnRlbnRzKHJvb3QpLmdldCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLnNob3VsZEJlZ2luRWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOwog
fQogCiBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NBbmNlc3Rvcihjb25zdCBTZWN1cml0eU9yaWdpbiog
YWN0aXZlU2VjdXJpdHlPcmlnaW4sIEZyYW1lKiB0YXJnZXRGcmFtZSkKQEAgLTMzNjEsNyArMzM2
MSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gcHJw
TmV3Rm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIAogICAgICAgICBpZiAob2xkRm9jdXNlZE5vZGUtPmlzUm9vdEVkaXRhYmxl
RWxlbWVudCgpKQotICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCktPmRpZEVuZEVkaXRpbmco
KTsKKyAgICAgICAgICAgIGZyYW1lKCktPmVkaXRvcigpLmRpZEVuZEVkaXRpbmcoKTsKIAogICAg
ICAgICBpZiAodmlldygpKSB7CiAgICAgICAgICAgICBXaWRnZXQqIG9sZFdpZGdldCA9IHdpZGdl
dEZvck5vZGUob2xkRm9jdXNlZE5vZGUuZ2V0KCkpOwpAQCAtMzQxMCw3ICszNDEwLDcgQEAgYm9v
bCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1c2Vk
Tm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgbV9mb2N1c2VkTm9kZS0+c2V0Rm9jdXModHJ1
ZSk7CiAKICAgICAgICAgaWYgKG1fZm9jdXNlZE5vZGUtPmlzUm9vdEVkaXRhYmxlRWxlbWVudCgp
KQotICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCktPmRpZEJlZ2luRWRpdGluZygpOworICAg
ICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkQmVnaW5FZGl0aW5nKCk7CiAKICAgICAgICAg
Ly8gZXd3LCBJIHN1Y2suIHNldCB0aGUgcXQgZm9jdXMgY29ycmVjdGx5CiAgICAgICAgIC8vICMj
IyBmaW5kIGEgYmV0dGVyIHBsYWNlIGluIHRoZSBjb2RlIGZvciB0aGlzCkBAIC00MTkxLDcgKzQx
OTEsNyBAQCBzdGF0aWMgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBibwogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29t
bWFuZE5hbWUsCisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1l
LAogICAgICAgICB1c2VySW50ZXJmYWNlID8gQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFj
ZSA6IENvbW1hbmRGcm9tRE9NKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggNjEzYWFmOTg4OTAzYjQ3OTEz
NWRmZGJlMWE4ZGJmZTVkZDc0ODUzNy4uOWVlZWUyZDA1ODdhNTU0NjIxY2E0MGI1MGMzZjBhMzQ0
ZTBlOGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+
KikKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0KHNlbGVjdGlvbi5zdGFydCgpLCBzZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0gc3RhcnRPZldv
cmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlv
biBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihwLCBzdGFydCk7Ci0gICAgICAgIG1f
ZnJhbWUtPmVkaXRvcigpLT5tYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8
IFRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIDApOworICAgICAgICBtX2ZyYW1lLT5lZGl0b3IoKS5tYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IFRleHRDaGVja2luZ1R5cGVTaG93
Q29ycmVjdGlvblBhbmVsLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCks
IDApOwogICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbHRlcm5hdGl2ZVRleHRUeXBl
UmV2ZXJzaW9uOiB7CkBAIC03NDIsOSArNzQyLDkgQEAgVmVjdG9yPFN0cmluZz4gQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKGNvbnN0IEQK
IHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6YXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2
ZShjb25zdCBTdHJpbmcmIGFsdGVybmF0aXZlU3RyaW5nKQogewogI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQotICAgIEVkaXRvciogZWRpdG9yID0gbV9mcmFtZS0+ZWRpdG9yKCk7Ci0g
ICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBlZGl0b3ItPnNlbGVjdGVkUmFuZ2UoKTsKLSAg
ICBpZiAoIXNlbGVjdGlvbiB8fCAhZWRpdG9yLT5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZl
U3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCisgICAg
RWRpdG9yJiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHNl
bGVjdGlvbiA9IGVkaXRvci5zZWxlY3RlZFJhbmdlKCk7CisgICAgaWYgKCFzZWxlY3Rpb24gfHwg
IWVkaXRvci5zaG91bGRJbnNlcnRUZXh0KGFsdGVybmF0aXZlU3RyaW5nLCBzZWxlY3Rpb24uZ2V0
KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpCiAgICAgICAgIHJldHVybjsKICAgICBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIqIG1hcmtlcnMgPSBzZWxlY3Rpb24tPnN0YXJ0Q29udGFpbmVy
KCktPmRvY3VtZW50KCktPm1hcmtlcnMoKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXIqPiBk
aWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXJzID0gbWFya2Vycy0+bWFya2Vyc0luUmFuZ2Uoc2Vs
ZWN0aW9uLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXgg
ZTdmOWYwMGI2NjkzMjMyMmNkZDNlNTgwOTFhNzcxZGM4ZmM5NThmNi4uZDIyZjhiOTE5Mjk5OTUz
OGY4MjY4MTQzYTAxNThmYTRjZmI4Nzk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEVkaXRD
b21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkoKQogICAgICAgICAgICAgbV9jb21tYW5kc1tpIC0g
MV0tPmRvVW5hcHBseSgpOwogICAgIH0KIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5hcHBsaWVk
RWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudW5hcHBsaWVkRWRpdGluZyh0aGlz
KTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjpyZWFwcGx5KCkKQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQogICAgICAg
ICAgICAgbV9jb21tYW5kc1tpXS0+ZG9SZWFwcGx5KCk7CiAgICAgfQogICAgIAotICAgIGZyYW1l
LT5lZGl0b3IoKS0+cmVhcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCku
cmVhcHBsaWVkRWRpdGluZyh0aGlzKTsKIH0KIAogdm9pZCBFZGl0Q29tbWFuZENvbXBvc2l0aW9u
OjphcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqIGNvbW1hbmQpCkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkoKQogICAgIC8vIE9ubHkgbmVlZCB0byBj
YWxsIGFwcGxpZWRFZGl0aW5nIGZvciB0b3AtbGV2ZWwgY29tbWFuZHMsCiAgICAgLy8gYW5kIFR5
cGluZ0NvbW1hbmRzIGRvIGl0IG9uIHRoZWlyIG93biAoc2VlIFR5cGluZ0NvbW1hbmQ6OnR5cGlu
Z0FkZGVkVG9PcGVuQ29tbWFuZCkuCiAgICAgaWYgKCFjYWxsc0FwcGxpZWRFZGl0aW5nSW5Eb0Fw
cGx5KCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhpcyk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICBzZXRTaG91
bGRSZXRhaW5BdXRvY29ycmVjdGlvbkluZGljYXRvcihmYWxzZSk7CiB9CiAKQEAgLTEyMjIsNyAr
MTIyMiw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgc3RhcnRPZlBhcmFncmFwCiAgICAgLy8gRklYTUUgKDUwOTg5MzEp
OiBXZSBzaG91bGQgYWRkIGEgbmV3IGluc2VydCBhY3Rpb24gIldlYlZpZXdJbnNlcnRBY3Rpb25N
b3ZlZCIgYW5kIGNhbGwgc2hvdWxkSW5zZXJ0RnJhZ21lbnQgaGVyZS4KICAgICAKICAgICBzZXRF
bmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydCwgZW5kLCBET1dOU1RSRUFNKSk7
Ci0gICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsZWFyTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hcihlbmRpbmdTZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkuY2xlYXJNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigp
KTsKICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogCiAg
ICAgQVNTRVJUKGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5pbkRv
Y3VtZW50KCkpOwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAK
ICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsK
ICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3Jl
YXRlKGRvY3VtZW50KCksIGZyYWdtZW50LCBvcHRpb25zKSk7CiAKLSAgICBkb2N1bWVudCgpLT5m
cmFtZSgpLT5lZGl0b3IoKS0+bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2Vs
ZWN0aW9uKCkpOworICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLm1hcmtNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKIAogICAgIC8vIElmIHRoZSBz
ZWxlY3Rpb24gaXMgaW4gYW4gZW1wdHkgcGFyYWdyYXBoLCByZXN0b3JlIHN0eWxlcyBmcm9tIHRo
ZSBvbGQgZW1wdHkgcGFyYWdyYXBoIHRvIHRoZSBuZXcgZW1wdHkgcGFyYWdyYXBoLgogICAgIGJv
b2wgc2VsZWN0aW9uSXNFbXB0eVBhcmFncmFwaCA9IGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXQo
KSAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkp
ICYmIGlzRW5kT2ZQYXJhZ3JhcGgoZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b24uY3BwCmluZGV4IDI0NmE5NTIyNmRhOTYw
NjUxNTIxZTMyMTFjYzc5MmM0NThiZWJhZjMuLjc3MmIyYTkzNmQwM2YzMzY4MTVjZGNkMGU0Zjlj
Yjc0ODUwNzhhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxEZWxldGVCdXR0b24+IERlbGV0ZUJ1dHRvbjo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHZvaWQgRGVsZXRlQnV0dG9uOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3Io
KS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5kZWxldGVUYXJnZXQoKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5kZWxl
dGVUYXJnZXQoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0
b25Db250cm9sbGVyLmNwcAppbmRleCBlZDRiM2I3YWVjM2U2MGQzYmJhNzU0NjM1MTA2MWM2MDU4
NGUyOGRjLi5mNWQ2NTE1OGM5MGVhZDFkMGQ4ZjZhODdmYzQ0MWVkODg3NzY2OGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAg
LTI4Myw3ICsyODMsNyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIWVsZW1lbnQgfHwgIWVsZW1l
bnQtPmluRG9jdW1lbnQoKSB8fCAhaXNEZWxldGFibGVFbGVtZW50KGVsZW1lbnQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IG1fZnJhbWUtPmVkaXRvcigp
LT5jbGllbnQoKTsKKyAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IG1fZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpOwogICAgIGlmICghY2xpZW50IHx8ICFjbGllbnQtPnNob3VsZFNob3dEZWxldGVJ
bnRlcmZhY2UoZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaAppbmRleCBmYTBjYjlmYzU2YWU4Mjlk
MWI0N2I5M2EwN2EwMmQwZWE1NzQzMzNlLi43YTExM2E5Mzk5YmI3ZGRhNzg1YzhiMjc0MGNhNTc3
ZWY0OGQzNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuaApAQCAtODMsMTMgKzgzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2ZyYW1l
KGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRpc2FibGUoKTsKKyAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRpc2FibGUoKTsKICAg
ICB9CiAKICAgICB+RGVsZXRlQnV0dG9uQ29udHJvbGxlckRpc2FibGVTY29wZSgpCiAgICAgewog
ICAgICAgICBpZiAobV9mcmFtZSkKLSAgICAgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOworICAgICAgICAgICAgbV9mcmFtZS0+ZWRp
dG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5lbmFibGUoKTsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA2ZTdmNDRhYTRlNjRmNzI2OGVkYjdhODZjMWRlNTJmOThiYjU0YmE4Li40M2E4
ZWM5MjM1OWJiN2U5ZTQyMjkwYTFlYjcxMzU2NzgwOWE0ZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTY0OCw3ICs2NDgs
NyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdyYXBocygpCiAgICAg
CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3Rh
cnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpLCBlbmRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9CZVJlcGxhY2VkID0g
UmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaWYgKCFkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRl
KHJhbmdlLmdldCgpLCByYW5nZVRvQmVSZXBsYWNlZC5nZXQoKSkpCisgICAgaWYgKCFkb2N1bWVu
dCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIC8vIG1vdmVQYXJhZ3JhcGhzIHdpbGwgaW5zZXJ0IHBsYWNlaG9sZGVycyBp
ZiBpdCByZW1vdmVzIGJsb2NrcyB0aGF0IHdvdWxkIHJlcXVpcmUgdGhlaXIgdXNlLCBkb24ndCBs
ZXQgYmxvY2sKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgIGlmICghbV9yZXBsYWNlKSB7CiAgICAgICAgIEVsZW1lbnQqIHRleHRD
b250cm9sID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fc2VsZWN0aW9uVG9EZWxldGUuc3Rh
cnQoKSk7CiAgICAgICAgIGlmICh0ZXh0Q29udHJvbCAmJiB0ZXh0Q29udHJvbC0+Zm9jdXNlZCgp
KQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRXaWxsQmVE
ZWxldGVkSW5UZXh0RmllbGQodGV4dENvbnRyb2wpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCkudGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJv
bCk7CiAgICAgfQogCiAgICAgLy8gc2F2ZSB0aGlzIHRvIGxhdGVyIG1ha2UgdGhlIHNlbGVjdGlv
biB3aXRoCkBAIC04NTQsNyArODU0LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpk
b0FwcGx5KCkKIAogICAgIGlmICghb3JpZ2luYWxTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5kZWxldGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKG1fZW5kaW5nUG9z
aXRpb24sIG9yaWdpbmFsU3RyaW5nKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxl
dGVkQXV0b2NvcnJlY3Rpb25BdFBvc2l0aW9uKG1fZW5kaW5nUG9zaXRpb24sIG9yaWdpbmFsU3Ry
aW5nKTsKICAgICB9CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbiht
X2VuZGluZ1Bvc2l0aW9uLCBhZmZpbml0eSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25h
bCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCmluZGV4IGJlNWVmMTU2
NmZlYzdjMmFmY2UyNmQwN2E2NzEwZjM2NzEyOGI3MmQuLmViNTI3NjhkZjQxOWRlNzkwMjJiNzJh
ZmVlN2Q0YTg4N2EzMGZmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIEVkaXRDb21tYW5kOjpFZGl0Q29tbWFuZChEb2N1bWVudCogZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwogICAgIEFTU0VSVChtX2RvY3VtZW50
LT5mcmFtZSgpKTsKLSAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihtX2RvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlciht
X2RvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpKTsKKyAgICBzZXRT
dGFydGluZ1NlbGVjdGlvbihtX2RvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5hdm9pZEludGVy
c2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKG1fZG9jdW1lbnQtPmZyYW1lKCktPnNl
bGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOwogICAgIHNldEVuZGluZ1NlbGVjdGlvbihtX3N0YXJ0
aW5nU2VsZWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CmluZGV4IDE4ZWU1ZTYzZTE3Y2QwMDE3Y2JmNDNlMjQ1ZTkwMzQyMDFmNTQ1MmYuLjA4MWM1ZGVk
OTVmNjQyY2FmN2I3YzQ2YTdkNmZlMGQ0OWIwYzg1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKQEAgLTEzNDQsNyArMTM0NCw3IEBAIFN0eWxlQ2hhbmdlOjpTdHls
ZUNoYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAg
ICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9w
ZXJ0aWVzTm90SW4oc3R5bGUtPnN0eWxlKCksIGNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogCiAgICAg
cmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKG11dGFibGVTdHlsZS5nZXQoKSk7Ci0g
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNob3VsZFN0eWxlV2l0aENTUygp
KQorICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNob3VsZFN0eWxlV2l0aENT
UygpKQogICAgICAgICBleHRyYWN0VGV4dFN0eWxlcyhkb2N1bWVudCwgbXV0YWJsZVN0eWxlLmdl
dCgpLCBjb21wdXRlZFN0eWxlLT51c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpKTsKIAogICAgIC8v
IENoYW5naW5nIHRoZSB3aGl0ZXNwYWNlIHN0eWxlIGluIGEgdGFiIHNwYW4gd291bGQgY29sbGFw
c2UgdGhlIHRhYiBpbnRvIGEgc3BhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
YzBlYmUwODNiZTA3MzY2MjQ1ZGRiMTAzY2I5Yjk5ZjdhODhlMzg2Ni4uN2Q0ODIzMjBmYjY2MWM2
OTViOTExYTQyOWIxNjAxNDNlMzQ0YWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMjAwOCw5ICsyMDA4LDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAgICAgICAg
IGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQo
YXV0b2NvcnJlY3RlZFN0cmluZywgbWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0
QWN0aW9uVHlwZWQpKQorICAgICAgICBpZiAoIWZyYW1lKCktPmVkaXRvcigpLnNob3VsZEluc2Vy
dFRleHQoYXV0b2NvcnJlY3RlZFN0cmluZywgbWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uVHlwZWQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmcmFtZSgp
LT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcs
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIGZyYW1lKCktPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rp
b25XaXRoVGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBmYWxzZSwgZmFsc2UpOwogCiAgICAgICAg
IC8vIFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3RlciBmdXJ0aGVyLgogICAgICAgICBmcmFt
ZSgpLT5zZWxlY3Rpb24oKS0+bW92ZVRvKGZyYW1lKCktPnNlbGVjdGlvbigpLT5lbmQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCBiMzBmZjhhNjE3ZjA0
MTQ4OWZlYzRiZmUyZjQ3NjllNzc1NzQ5ZDc4Li45OGMzMDFiMmVhM2Y4MmE1NDY5ZDU0ZjJkNjUw
NGJhMWNhNDc3MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
QEAgLTEwNSwxMSArMTA1LDExIEBAIHN0YXRpYyBib29sIGFwcGx5Q29tbWFuZFRvRnJhbWUoRnJh
bWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjCiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRoZSBzb3VyY2UgaXMgRE9N
OyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3aXRjaCAoc291cmNlKSB7
CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLCBhY3Rpb24pOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKHN0eWxlLCBhY3Rpb24pOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgogICAgIGNhc2UgQ29t
bWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5h
cHBseVN0eWxlKHN0eWxlKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5
bGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xNjQsMTAgKzE2NCwxMCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUo
RnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdAogICAgIC8v
IG90aGVyOiBwcmVzZW50IHRocm91Z2hvdXQgdGhlIHNlbGVjdGlvbgogCiAgICAgYm9vbCBzdHls
ZUlzUHJlc2VudDsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgc3R5bGVJc1ByZXNl
bnQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwg
b25WYWx1ZSk7CisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2ds
ZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQg
PSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBvblZh
bHVlKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlSXNQcmVzZW50ID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcnVlVHJpU3RhdGU7
CisgICAgICAgIHN0eWxlSXNQcmVzZW50ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0
eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0ZTsKIAogICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgc3R5
bGVJc1ByZXNlbnQgPyBvZmZWYWx1ZSA6IG9uVmFsdWUpOwogICAgIHJldHVybiBhcHBseUNvbW1h
bmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUtPnN0eWxlKCkpOwpAQCAtMTgw
LDExICsxODAsMTEgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJh
bWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwKICAgICAvLyBGSVhNRTogV2Ug
ZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBET007IGlzIHRo
ZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBj
YXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5bGUuZ2V0KCksIGFjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oc3R5
bGUuZ2V0KCksIGFjdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFu
ZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUuZ2V0KCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFy
aXR5KEZyYW1lKiBmcmFtZSwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgUmVmUHRyPFJhbmdlPiBvbGRSYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBFQWZmaW5pdHkgYWZmaW5p
dHkgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmFmZmluaXR5KCk7Ci0gICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShvbGRSYW5nZS5nZXQoKSwg
bmV3UmFuZ2UuZ2V0KCksIGFmZmluaXR5LCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGVkUmFuZ2UobmV3UmFuZ2UuZ2V0KCks
IGFmZmluaXR5LCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIyNiwxNiArMjI2LDE2IEBA
IHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUqIGZyYW1lLCBU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZy
YW1lKiBmcmFtZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBkZXNpcmVk
VmFsdWUpCiB7Ci0gICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRUb2dn
bGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVl
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKTsKKyAgICBp
ZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3Rh
cnRPZlNlbGVjdGlvbigpKQorICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6
IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNT
dHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIHZhbHVl
U3R5bGUoRnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgLy8g
RklYTUU6IFJhdGhlciB0aGFuIHJldHJpZXZpbmcgdGhlIHN0eWxlIGF0IHRoZSBzdGFydCBvZiB0
aGUgY3VycmVudCBzZWxlY3Rpb24sCiAgICAgLy8gd2Ugc2hvdWxkIHJldHJpZXZlIHRoZSBzdHls
ZSBwcmVzZW50IHRocm91Z2hvdXQgdGhlIHNlbGVjdGlvbiBmb3Igbm9uLU1hYyBwbGF0Zm9ybXMu
Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZh
bHVlKHByb3BlcnR5SUQpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3Rh
cnRDU1NQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVUZXh0V3JpdGluZ0RpcmVjdGlvbihGcmFtZSogZnJhbWUsIFdyaXRpbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVCYWNrQ29sb3Io
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVDb3B5KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29weSgpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI5
OCwxOCArMjk4LDE4IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVDdXQoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTCiB7CiAgICAgaWYgKHNvdXJj
ZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5cGluZ0dl
c3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y3V0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jdXQoKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmN1dCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWUsICJkaXYiKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXREZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yKEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzRGl2KTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9y
UGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCAicCIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnNldERlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNQKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlLCBjb25zCiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRp
bmc6IHsKICAgICAgICAgLy8gRG9lc24ndCBtb2RpZnkgdGhlIHRleHQgaWYgdGhlIGN1cnJlbnQg
c2VsZWN0aW9uIGlzbid0IGEgcmFuZ2UuCiAgICAgICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNh
dG9yIHR5cGluZ0dlc3R1cmVJbmRpY2F0b3IoZnJhbWUpOwotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBlcmZvcm1EZWxl
dGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgQ29tbWFuZEZyb21E
T006CkBAIC0zMzYsMzIgKzMzNiwzMiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgY29ucwogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9u
KERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmRC
eURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9HX0VSUk9SKCJEZWxldGVC
YWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50ZWQs
IGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3
YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1
ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVj
dGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJh
Y2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNjksNyArMzY5
LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLAogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUs
IHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAg
ICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxp
a2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zNzcsNDAgKzM3Nyw0MCBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFn
cmFwaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdQogewogICAgIC8vIERl
c3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0
IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2Yg
YSBwYXJhZ3JhcGguCi0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERp
cmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdy
YXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVRvTWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBm
cmFtZS0+ZWRpdG9yKCktPm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIFJlZlB0cjxS
YW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS5tYXJrKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsK
ICAgICBpZiAobWFyaykgewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uID0gZnJh
bWUtPnNlbGVjdGlvbigpOwotICAgICAgICBib29sIHNlbGVjdGVkID0gc2VsZWN0aW9uLT5zZXRT
ZWxlY3RlZFJhbmdlKHVuaW9uRE9NUmFuZ2VzKG1hcmsuZ2V0KCksIGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5nZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CisgICAgICAg
IGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNldFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5n
ZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSkuZ2V0
KCksIERPV05TVFJFQU0sIHRydWUpOwogICAgICAgICBBU1NFUlQoc2VsZWN0ZWQpOwogICAgICAg
ICBpZiAoIXNlbGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBm
cmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmsoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSk7CisgICAgZnJhbWUtPmVkaXRv
cigpLnBlcmZvcm1EZWxldGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFyayhmcmFtZS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERp
cmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJk
LCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUs
IGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZpbmRT
dHJpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh2
YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLmZpbmRTdHJpbmcodmFsdWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVGb250TmFtZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC00NTYsNyArNDU2LDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhE
aXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAg
ICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6CkBAIC00NzIsNyArNDcyLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUlnbm9yZVNw
ZWxsaW5nKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+aWdub3JlU3BlbGxpbmcoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaWdub3JlU3BlbGxpbmcoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyCiBzdGF0aWMgYm9vbCBl
eGVjdXRlSW5zZXJ0TmV3bGluZShGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBX
ZWJDb3JlOjp0YXJnZXRGcmFtZShmcmFtZSwgZXZlbnQpOwotICAgIHJldHVybiB0YXJnZXRGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRleHRJbnB1dEV2ZW50KCJcbiIsIGV2ZW50LCB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9h
cmQgOiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CisgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCkgPyBUZXh0RXZlbnRJbnB1dEtleWJvYXJkIDog
VGV4dEV2ZW50SW5wdXRMaW5lQnJlYWspOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0
TmV3bGluZUluUXVvdGVkQ29udGVudChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVMdHIpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU5
OSw3ICs1OTksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9u
TmF0dXJhbChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQwogewogICAgIFJlZlB0cjxNdXRh
YmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3Jl
YXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENT
U1ZhbHVlTm9ybWFsKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0
KCksIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCku
YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MDgsNyArNjA4LDcgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGkKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIENTU1ZhbHVlUnRsKTsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0
aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFj
dGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MDQs
NyArOTA0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU91dGRlbnQoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmkKIAogc3RhdGljIGJvb2wgZXhlY3V0
ZVRvZ2dsZU92ZXJ3cml0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZU92ZXJ3cml0
ZU1vZGVFbmFibGVkKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVF
bmFibGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkxMiwyMiArOTEyLDIyIEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVQYXN0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyY2UsIGNvbnN0CiB7CiAgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1l
bnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlw
aW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFz
dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBhc3RlKCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBh
c3RlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUds
b2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBz
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNsaWVu
dCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT5zdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgQVNTRVJUX1VOVVNFRChzb3VyY2UsIHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVP
cktleUJpbmRpbmcpOwogICAgIFVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yIHR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IoZnJhbWUpOwogCiAgICAgYm9vbCBvbGRTZWxlY3Rpb25Nb2RlID0gUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxlY3Rpb25Nb2RlKCk7CiAgICAgUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPnBhc3RlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnBhc3RlKCk7CiAg
ICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZShvbGRT
ZWxlY3Rpb25Nb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTkzNiw5ICs5MzYsOSBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlUGFzdGVBbmRNYXRjaFN0eWxlKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlCiB7CiAgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1l
bnVPcktleUJpbmRpbmcpIHsKICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlw
aW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFz
dGVBc1BsYWluVGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4
dCgpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNQbGFpblRl
eHQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnBhc3RlQXNQbGFpblRleHQoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTQ2LDkgKzk0Niw5IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVQ
YXN0ZUFzUGxhaW5UZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvCiB7CiAgICAgaWYgKHNvdXJjZSA9PSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcpIHsK
ICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRv
cihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIH0gZWxzZQot
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNQbGFpblRleHQoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBhc3RlQXNQbGFpblRleHQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtOTYzLDEzICs5NjMsMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVByaW50KEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcKIAogc3RhdGljIGJv
b2wgZXhlY3V0ZVJlZG8oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5yZWRvKCk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnJlZG8oKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZVJlbW92ZUZvcm1hdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlbW92ZUZvcm1h
dHRpbmdBbmRTdHlsZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5yZW1vdmVGb3JtYXR0aW5nQW5k
U3R5bGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTAyNiw4ICsxMDI2LDggQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZVNlbGVjdFNlbnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb24KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKS50b05v
cm1hbGl6ZWRSYW5nZSgpOwotICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uID0gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiBtYXJrID0gZnJhbWUt
PmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIW1h
cmsgfHwgIXNlbGVjdGlvbikgewogICAgICAgICBzeXN0ZW1CZWVwKCk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RX
b3JkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVTZXRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0
TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuc2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMTA1NSwxMyArMTA1NSwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3Ry
aWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
YwogCiBzdGF0aWMgYm9vbCBleGVjdXRlU3R5bGVXaXRoQ1NTKEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGZyYW1l
LT5lZGl0b3IoKS0+c2V0U2hvdWxkU3R5bGVXaXRoQ1NTKCFlcXVhbElnbm9yaW5nQ2FzZSh2YWx1
ZSwgImZhbHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1Mo
IWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZmFsc2UiKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVVc2VDU1MoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxz
ZSIpKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0U2hvdWxkU3R5bGVXaXRoQ1NTKGVxdWFsSWdu
b3JpbmdDYXNlKHZhbHVlLCAiZmFsc2UiKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEw
NzcsMjEgKzEwNzcsMjEgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVN1cGVyc2NyaXB0KEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwKIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZVN3YXBXaXRoTWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBtYXJr
ID0gZnJhbWUtPmVkaXRvcigpLT5tYXJrKCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bWFyayA9IGZyYW1lLT5lZGl0b3IoKS5tYXJrKCk7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKICAgICBpZiAo
bWFyay5pc05vbmUoKSB8fCBzZWxlY3Rpb24uaXNOb25lKCkpIHsKICAgICAgICAgc3lzdGVtQmVl
cCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKG1hcmspOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFyayhzZWxl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKHNlbGVjdGlvbik7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiBzdGF0aWMgYm9vbCBleGVjdXRlVGFr
ZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dGFrZUZp
bmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnRha2VGaW5kU3Ry
aW5nRnJvbVNlbGVjdGlvbigpOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC0xMTA4
LDcgKzExMDgsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlSXRhbGljKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVHJhbnNwb3NlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dHJhbnNwb3NlKCk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLnRyYW5zcG9zZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0x
MTIwLDcgKzExMjAsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVW5kZXJsaW5lKEZyYW1lKiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgYwogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnVuZG8oKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkudW5kbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTQzLDE1ICsxMTQz
LDE1IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbnNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVZYW5r
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2
ZW50KGZyYW1lLT5lZGl0b3IoKS0+a2lsbFJpbmcoKS0+eWFuaygpLCBmYWxzZSwgMCk7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJh
bWUtPmVkaXRvcigpLmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRp
dG9yKCkua2lsbFJpbmcoKS0+eWFuaygpLCBmYWxzZSwgMCk7CisgICAgZnJhbWUtPmVkaXRvcigp
LmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZVlhbmtBbmRTZWxlY3QoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxs
UmluZygpLT55YW5rKCksIHRydWUsIDApOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+a2lsbFJpbmco
KS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0
aG91dFNlbmRpbmdUZXh0RXZlbnQoZnJhbWUtPmVkaXRvcigpLmtpbGxSaW5nKCktPnlhbmsoKSwg
dHJ1ZSwgMCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3Rh
dGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE3NSw3ICsxMTc1LDcgQEAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkQ29weUN1dChGcmFtZSogZnJhbWUpCiAgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgYm9vbCBkZWZhdWx0VmFsdWUgPSBzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpOwogCi0gICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpOworICAgIEVkaXRv
ckNsaWVudCogY2xpZW50ID0gZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpOwogICAgIHJldHVybiBj
bGllbnQgPyBjbGllbnQtPmNhbkNvcHlDdXQoZnJhbWUsIGRlZmF1bHRWYWx1ZSkgOiBkZWZhdWx0
VmFsdWU7CiB9CiAKQEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyBib29sIHN1cHBvcnRlZFBh
c3RlKEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGlu
Z3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRpbmdzICYmIHNldHRpbmdzLT5qYXZh
U2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgJiYgc2V0dGluZ3MtPkRPTVBhc3RlQWxsb3dlZCgp
OwogCi0gICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgp
OworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpOwog
ICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQtPmNhblBhc3RlKGZyYW1lLCBkZWZhdWx0VmFsdWUp
IDogZGVmYXVsdFZhbHVlOwogfQogCkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBzdGF0aWMgYm9vbCBl
bmFibGVkKEZyYW1lKiwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogc3RhdGljIGJvb2wg
ZW5hYmxlZFZpc2libGVTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRv
ckNvbW1hbmRTb3VyY2UpCiB7CiAgICAgLy8gVGhlIHRlcm0gInZpc2libGUiIGhlcmUgaW5jbHVk
ZXMgYSBjYXJldCBpbiBlZGl0YWJsZSB0ZXh0IG9yIGEgcmFuZ2UgaW4gYW55IHRleHQuCi0gICAg
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CiAgICAg
cmV0dXJuIChzZWxlY3Rpb24uaXNDYXJldCgpICYmIHNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJs
ZSgpKSB8fCBzZWxlY3Rpb24uaXNSYW5nZSgpOwogfQogCkBAIC0xMjIwLDM3ICsxMjIwLDM3IEBA
IHN0YXRpYyBib29sIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uT3JDYXJldEJyb3dzaW5nKEZyYW1l
KiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFCiAKIHN0YXRpYyBib29sIGVuYWJsZWRWaXNpYmxlU2Vs
ZWN0aW9uQW5kTWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNv
dXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5k
KGV2ZW50KTsKICAgICByZXR1cm4gKChzZWxlY3Rpb24uaXNDYXJldCgpICYmIHNlbGVjdGlvbi5p
c0NvbnRlbnRFZGl0YWJsZSgpKSB8fCBzZWxlY3Rpb24uaXNSYW5nZSgpKQotICAgICAgICAmJiBm
cmFtZS0+ZWRpdG9yKCktPm1hcmsoKS5pc0NhcmV0T3JSYW5nZSgpOworICAgICAgICAmJiBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVu
YWJsZUNhcmV0SW5FZGl0YWJsZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRv
ckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKKyAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9u
Rm9yQ29tbWFuZChldmVudCk7CiAgICAgcmV0dXJuIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2Vs
ZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRDb3B5
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Q29weSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5KCkgfHwgZnJh
bWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZEN1dChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCk7
CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTEN1dCgpIHx8IGZyYW1lLT5lZGl0
b3IoKS5jYW5DdXQoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZEluRWRpdGFibGVUZXh0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpLnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNv
bW1hbmQoZXZlbnQpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5h
YmxlZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSBzb3VyY2UpCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZzogICAgCi0gICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNh
bkRlbGV0ZSgpOworICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRlbGV0ZSgpOwog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2Vy
SW50ZXJmYWNlOgogICAgICAgICAvLyAiRGVsZXRlIiBmcm9tIERPTSBpcyBsaWtlIGRlbGV0ZS9i
YWNrc3BhY2Uga2V5cHJlc3MsIGFmZmVjdHMgc2VsZWN0ZWQgcmFuZ2UgaWYgbm9uLWVtcHR5LApA
QCAtMTI3NCw3ICsxMjc0LDcgQEAgc3RhdGljIGJvb2wgZW5hYmxlZEluUmljaGx5RWRpdGFibGVU
ZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmMKIAogc3RhdGljIGJv
b2wgZW5hYmxlZFBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
KQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkUmFu
Z2VJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSkKQEAgLTEyODksMTkgKzEyODksMTkgQEAgc3RhdGljIGJvb2wgZW5hYmxlZFJhbmdlSW5SaWNo
bHlFZGl0YWJsZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmQKIAogc3Rh
dGljIGJvb2wgZW5hYmxlZFJlZG8oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUmVkbygpOworICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuUmVkbygpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQog
c3RhdGljIGJvb2wgZW5hYmxlZFRha2VGaW5kU3RyaW5nRnJvbVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOworICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKTsKIH0KICNl
bmRpZgogCiBzdGF0aWMgYm9vbCBlbmFibGVkVW5kbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRv
KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5VbmRvKCk7CiB9CiAKIC8vIFN0YXRl
IGZ1bmN0aW9ucwpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgc3RhdGljIFRyaVN0YXRlIHN0YXRlSXRh
bGljKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVPcmRlcmVk
TGlzdChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0
ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVudCopCkBAIC0xMzMzLDcgKzEzMzMsNyBA
QCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQq
KQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NTKCkg
PyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCkuc2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwog
fQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdWJzY3JpcHQoRnJhbWUqIGZyYW1lLCBFdmVudCop
CkBAIC0xMzY4LDcgKzEzNjgsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVVbmRlcmxpbmUoRnJh
bWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVub3JkZXJlZExpc3Qo
RnJhbWUqIGZyYW1lLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uVW5vcmRlcmVkTGlzdFN0YXRlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRl
SnVzdGlmeUNlbnRlcihGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTE0MDUsNyArMTQwNSw3IEBA
IHN0YXRpYyBTdHJpbmcgdmFsdWVCYWNrQ29sb3IoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0
YXRpYyBTdHJpbmcgdmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwg
RXZlbnQqKQogewotICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLT5kZWZhdWx0UGFyYWdyYXBo
U2VwYXJhdG9yKCkpIHsKKyAgICBzd2l0Y2ggKGZyYW1lLT5lZGl0b3IoKS5kZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKCkpIHsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzRGl2
OgogICAgICAgICByZXR1cm4gZGl2VGFnLmxvY2FsTmFtZSgpOwogICAgIGNhc2UgRWRpdG9yUGFy
YWdyYXBoU2VwYXJhdG9ySXNQOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAppbmRleCBmZDI3ZWUyYTQ3YjdiOWNhZWU2NWM1ZjU3ZWFmMWZkMzEzZTg1OTFjLi45Nzhh
M2VjMmI4YjljNGYwYjM4NDFiYzYzMWRmMmJkOWY1OTE2MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgRHJhZ0Nh
cmV0Q29udHJvbGxlcjo6aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdAogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lKQogewotICAgIHJldHVybiAhZnJhbWUgfHwgZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZENvbnNpZGVyU2VsZWN0aW9uQXNEaXJlY3Rpb25hbCgpOworICAgIHJldHVybiAhZnJh
bWUgfHwgZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25B
c0RpcmVjdGlvbmFsKCk7CiB9CiAKIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUpCkBAIC0zMjcsMTEgKzMyNywxMSBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBTZXRTZWxlYwog
ICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uID0gTm9YUG9zRm9yVmVydGljYWxB
cnJvd05hdmlnYXRpb24oKTsKICAgICBzZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlT
ZWxlY3RlZCgpOwogICAgIG5vdGlmeVJlbmRlcmVyT2ZTZWxlY3Rpb25DaGFuZ2UodXNlclRyaWdn
ZXJlZCk7Ci0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24o
b2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5yZXNwb25kVG9D
aGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAgaWYgKHVzZXJUcmln
Z2VyZWQgPT0gVXNlclRyaWdnZXJlZCkgewogICAgICAgICBTY3JvbGxBbGlnbm1lbnQgYWxpZ25t
ZW50OwogCi0gICAgICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRD
ZW50ZXJBbGlnbldoZW5TZWxlY3Rpb25Jc1JldmVhbGVkKCkpCisgICAgICAgIGlmIChtX2ZyYW1l
LT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2
ZWFsZWQoKSkKICAgICAgICAgICAgIGFsaWdubWVudCA9IChhbGlnbiA9PSBBbGlnbkN1cnNvck9u
U2Nyb2xsQWx3YXlzKSA/IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJBbHdheXMgOiBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGFsaWdubWVudCA9IChhbGlnbiA9PSBBbGlnbkN1cnNvck9uU2Nyb2xsQWx3YXlzKSA/IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9F
ZGdlSWZOZWVkZWQ7CkBAIC01ODYsNyArNTg2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2Vs
ZWN0aW9uOjpuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY29uc3QgVmlzaWJsZVBvc2l0aW8K
IHsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BZnRlckN1cnJlbnRXb3JkID0gbmV4dFdv
cmRQb3NpdGlvbihvcmlnaW5hbFBvc2l0aW9uKTsKIAotICAgIGlmIChtX2ZyYW1lICYmIG1fZnJh
bWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgp
KSB7CisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91
bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKSkgewogICAgICAgICAvLyBJbiBvcmRlciB0byBz
a2lwIHNwYWNlcyB3aGVuIG1vdmluZyByaWdodCwgd2UgYWR2YW5jZSBvbmUKICAgICAgICAgLy8g
d29yZCBmdXJ0aGVyIGFuZCB0aGVuIG1vdmUgb25lIHdvcmQgYmFjay4gR2l2ZW4gdGhlCiAgICAg
ICAgIC8vIHNlbWFudGljcyBvZiBwcmV2aW91c1dvcmRQb3NpdGlvbigpIHRoaXMgd2lsbCBwdXQg
dXMgYXQgdGhlCkBAIC03MTMsNyArNzEzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNb3ZpbmdSaWdodChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAjaWYg
VVNFKElDVV9VTklDT0RFKQogICAgICAgICAvLyBWaXN1YWwgd29yZCBtb3ZlbWVudCByZWxpZXMg
b24gaXNXb3JkVGV4dEJyZWFrIHdoaWNoIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBXaW5DRSBhbmQg
UVQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MTEzNi4KLSAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAm
JiBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5n
UmlnaHQoKTsKKyAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFt
ZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQb3NpdGlvbihWaXNpYmxlUG9zaXRp
b24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLCBza2lwc1Nw
YWNlV2hlbk1vdmluZ1JpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTg4Nyw3ICs4
ODcsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQo
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdv
cmRHcmFudWxhcml0eTogewogI2lmIFVTRShJQ1VfVU5JQ09ERSkKLSAgICAgICAgYm9vbCBza2lw
c1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+YmVo
YXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKKyAgICAgICAgYm9vbCBz
a2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOwogICAgICAgICBwb3Mg
PSBsZWZ0V29yZFBvc2l0aW9uKFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwg
bV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAg
ICAgICBicmVhazsKICNlbmRpZgpAQCAtMTAyNCw3ICsxMDI0LDcgQEAgYm9vbCBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uLCBUZXgKIAogICAgICAgICBpZiAoIW1fc2VsZWN0aW9uLmlzQ2FyZXQoKQogICAgICAgICAg
ICAgJiYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBQ
YXJhZ3JhcGhHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJpdHkpCi0g
ICAgICAgICAgICAmJiBtX2ZyYW1lICYmICFtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5z
aG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVBY3Jvc3NDYXJldCgpKSB7CisgICAgICAg
ICAgICAmJiBtX2ZyYW1lICYmICFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEV4
dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKICAgICAgICAgICAgIC8v
IERvbid0IGxldCB0aGUgc2VsZWN0aW9uIGdvIGFjcm9zcyB0aGUgYmFzZSBwb3NpdGlvbiBkaXJl
Y3RseS4gTmVlZGVkIHRvIG1hdGNoIG1hYwogICAgICAgICAgICAgLy8gYmVoYXZpb3Igd2hlbiwg
Zm9yIGluc3RhbmNlLCB3b3JkLXNlbGVjdGluZyBiYWNrd2FyZHMgc3RhcnRpbmcgd2l0aCB0aGUg
Y2FyZXQgaW4KICAgICAgICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgYSB3b3JkIGFuZCB0aGVuIHdv
cmQtc2VsZWN0aW5nIGZvcndhcmQsIGxlYXZpbmcgdGhlIGNhcmV0IGluIHRoZQpAQCAtMTAzNyw3
ICsxMDM3LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVy
LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXgKIAogICAgICAgICAvLyBTdGFuZGFy
ZCBNYWMgYmVoYXZpb3Igd2hlbiBleHRlbmRpbmcgdG8gYSBib3VuZGFyeSBpcyBncm93IHRoZSBz
ZWxlY3Rpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGUKICAgICAgICAgLy8gYmFzZSBpbiBwbGFj
ZSBhbmQgbW92aW5nIHRoZSBleHRlbnQuIE1hdGNoZXMgTlNUZXh0Vmlldy4KLSAgICAgICAgaWYg
KCFtX2ZyYW1lIHx8ICFtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRBbHdheXNH
cm93U2VsZWN0aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0Nh
cmV0KCkgfHwgIWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQorICAgICAgICBpZiAoIW1fZnJhbWUg
fHwgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQWx3YXlzR3Jvd1NlbGVjdGlv
bldoZW5FeHRlbmRpbmdUb0JvdW5kYXJ5KCkgfHwgbV9zZWxlY3Rpb24uaXNDYXJldCgpIHx8ICFp
c0JvdW5kYXJ5KGdyYW51bGFyaXR5KSkKICAgICAgICAgICAgIHNldEV4dGVudChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpOwpAQCAtMTc0OSw3
ICsxNzQ5LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6aXNGb2N1c2VkQW5kQWN0aXZlKCkgY29u
c3QKIAogaW5saW5lIHN0YXRpYyBib29sIHNob3VsZFN0b3BCbGlua2luZ0R1ZVRvVHlwaW5nQ29t
bWFuZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKS0+c2hvdWxk
U3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0
Q29tbWFuZCgpICYmIGZyYW1lLT5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKS0+c2hvdWxkU3Rv
cENhcmV0QmxpbmtpbmcoKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFy
YW5jZSgpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnR5U2V0PiBGcmFtZVNlbGVjdGlvbjo6Y29weVR5cGluZ1N0eWxlKCkgY29uc3QKIAogYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHNlbGVjdGlvbikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5zaG91bGREZWxldGVSYW5nZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGREZWxl
dGVSYW5nZShzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CiB9CiAKIEZsb2F0
UmVjdCBGcmFtZVNlbGVjdGlvbjo6Ym91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNv
bnN0CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rp
b25Gcm9tTm9uZSgpCiAKIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNob3VsZENoYW5nZVNlbGVjdGlv
bihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24pIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZnJhbWUtPmVkaXRvcigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKKyAgICByZXR1
cm4gbV9mcmFtZS0+ZWRpdG9yKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbigpLCBu
ZXdTZWxlY3Rpb24sIG5ld1NlbGVjdGlvbi5hZmZpbml0eSgpLCBmYWxzZSk7CiB9CiAKIGJvb2wg
RnJhbWVTZWxlY3Rpb246OmRpc3BhdGNoU2VsZWN0U3RhcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCA5ZTk2NzZkNzJlMjk0MjU2YjBjNjMy
YjJlYThjZTQ2YmZkNDM0OWNlLi4zZjAxMjAzMjczZmY5MDkzMzc0NzAyYjk1YmJmNzQ2YjVlNWEy
NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6OmRvQXBwbHkoKQogICAg
ICAgICAvLyBhbnl0aGluZyBvdGhlciB0aGFuIE5vU2VsZWN0aW9uLiBUaGUgcmVzdCBvZiB0aGlz
IGZ1bmN0aW9uIHJlcXVpcmVzIGEgcmVhbCBlbmRpbmdTZWxlY3Rpb24sIHNvIGJhaWwgb3V0Lgog
ICAgICAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNPdmVy
d3JpdGVNb2RlRW5hYmxlZCgpKSB7CisgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKICAgICAgICAgaWYgKHBlcmZv
cm1PdmVyd3JpdGUobV90ZXh0LCBtX3NlbGVjdEluc2VydGVkVGV4dCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4
IDY3YzViMjU0Mjc5MjkyNjFmMWM5M2Q3ODE1ZWNmZDZmNjg3ZTQ0NjcuLmM2ZTAyOGY5MTNhZWY0
NDk3YzVkZDQ4N2MyMTIwMTQxZjVkMmM0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hl
Y2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbmRS
ZXBsYWNlRm9yKG1fcHJvY2Vzc2luZ1JlcXVlc3QsIHJlc3VsdHMpOworICAgIG1fZnJhbWUtPmVk
aXRvcigpLm1hcmtBbmRSZXBsYWNlRm9yKG1fcHJvY2Vzc2luZ1JlcXVlc3QsIHJlc3VsdHMpOwog
CiAgICAgaWYgKG1fbGFzdFByb2Nlc3NlZFNlcXVlbmNlIDwgc2VxdWVuY2UpCiAgICAgICAgIG1f
bGFzdFByb2Nlc3NlZFNlcXVlbmNlID0gc2VxdWVuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAppbmRleCAzNTk5YWRkN2Ni
ODFiNjI0YmIzNDRkNzQwNjM1NTYwODMyNTlkOGFjLi4yOGY0YTZkMjIxYTkzNzkxNzlmYzg0ZjQw
ZTE3MTU0MDYwMzk0ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIGlmICgh
bV9oYXNCZWVuVW5kb25lKSB7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS0+dW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCksIG1fY29y
cmVjdGVkLCBtX2NvcnJlY3Rpb24pOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkudW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKHN0YXJ0aW5nU2VsZWN0aW9uKCksIG1f
Y29ycmVjdGVkLCBtX2NvcnJlY3Rpb24pOwogICAgICAgICAgICAgbV9oYXNCZWVuVW5kb25lID0g
dHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IGE5ZmJhNjg2MzAzZTNhODQ2ODFiYmRlYmI4OTUwNGZiOTdmMWZmNjgu
LmIwYzQyOWQ5MDg2MGViZWNmYjg0MDA2M2ZiYTdjYWU5ZTg2NjQ3NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgT3B0aW9ucyBvCiAgICAgQVNTRVJUKGZyYW1lKTsKIAogICAgIGlmICghdGV4dC5pc0Vt
cHR5KCkpCi0gICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vy
c0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoaXNTcGFjZU9yTmV3bGluZSh0ZXh0LmNoYXJhY3Rl
cnMoKVswXSkpOworICAgICAgICBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkudXBkYXRlTWFy
a2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoaXNTcGFjZU9yTmV3bGluZSh0ZXh0LmNoYXJh
Y3RlcnMoKVswXSkpOwogICAgIAogICAgIGluc2VydFRleHQoZG9jdW1lbnQsIHRleHQsIGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCksIG9wdGlvbnMsIGNvbXBvc2l0aW9uKTsKIH0KQEAg
LTIzNyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IFR5cGluZ0NvbW1hbmQ6
Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoRgogewogICAgIEFTU0VSVChm
cmFtZSk7CiAKLSAgICBSZWZQdHI8Q29tcG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCk7CisgICAgUmVmUHRyPENvbXBv
c2l0ZUVkaXRDb21tYW5kPiBsYXN0RWRpdENvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCk7CiAgICAgaWYgKCFsYXN0RWRpdENvbW1hbmQgfHwgIWxhc3RFZGl0Q29tbWFu
ZC0+aXNUeXBpbmdDb21tYW5kKCkgfHwgIXN0YXRpY19jYXN0PFR5cGluZ0NvbW1hbmQqPihsYXN0
RWRpdENvbW1hbmQuZ2V0KCkpLT5pc09wZW5Gb3JNb3JlVHlwaW5nKCkpCiAgICAgICAgIHJldHVy
biAwOwogCkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5p
c0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpCi0gICAgICYmICFmcmFtZS0+ZWRpdG9y
KCktPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgJiYgIWZyYW1l
LT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCi0gICAgICYmICFm
cmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAg
ICAmJiAhZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICYmICFmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCisgICAgICAgICYmICFmcmFt
ZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAg
ICYmICFmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CiAjZWxzZQotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5p
c0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgIGlmICghZnJhbWUtPmVkaXRv
cigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgogICAgIC8vIFRha2UgYSBsb29rIGF0IHRoZSBzZWxlY3Rpb24gdGhhdCByZXN1bHRz
IGFmdGVyIHR5cGluZyBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgd2UgbmVlZCB0byBzcGVsbGNoZWNr
LiAKQEAgLTMyMiw5ICszMjIsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Om1hcmtNaXNzcGVsbGlu
Z3NBZnRlclR5cGluZyhFVHlwaW5nQ29tbWFuZCBjb21tYW5kVHlwZSkKICAgICAgICAgICAgIFN0
cmluZyBzdHJpcHBlZFByZXZpb3VzV29yZDsKICAgICAgICAgICAgIGlmIChyYW5nZSAmJiAoY29t
bWFuZFR5cGUgPT0gVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dCB8fCBjb21tYW5kVHlwZSA9PSBU
eXBpbmdDb21tYW5kOjpJbnNlcnRMaW5lQnJlYWsgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5nQ29t
bWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yIHx8IGNvbW1hbmRUeXBlID09IFR5cGluZ0Nv
bW1hbmQ6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCkpCiAgICAgICAg
ICAgICAgICAgc3RyaXBwZWRQcmV2aW91c1dvcmQgPSBwbGFpblRleHQocmFuZ2UuZ2V0KCkpLnN0
cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5tYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEsIGVuZGluZ1NlbGVjdGlvbigpLCAhc3RyaXBwZWRQ
cmV2aW91c1dvcmQuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5tYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQocDEsIGVuZGluZ1NlbGVjdGlvbigpLCAhc3Ry
aXBwZWRQcmV2aW91c1dvcmQuaXNFbXB0eSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5k
VHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0KQotICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKKyAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5zdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoKTsKICAgICB9CiB9CiAKQEAg
LTMzNywxNCArMzM3LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6dHlwaW5nQWRkZWRUb09wZW5D
b21tYW5kKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlRm9yQWRkZWRUCiAgICAgdXBkYXRlUHJl
c2VydmVzVHlwaW5nU3R5bGUoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkuYXBwbGllZEVkaXRpbmcodGhpcyk7CiAgICAgLy8gU2luY2UgdGhl
IHNwZWxsY2hlY2tpbmcgY29kZSBtYXkgYWxzbyBwZXJmb3JtIGNvcnJlY3Rpb25zIGFuZCBvdGhl
ciByZXBsYWNlbWVudHMsIGl0IHNob3VsZCBoYXBwZW4gYWZ0ZXIgdGhlIHR5cGluZyBjaGFuZ2Vz
LgogICAgIGlmICghbV9zaG91bGRQcmV2ZW50U3BlbGxDaGVja2luZykKICAgICAgICAgbWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpOwogI2Vsc2UK
ICAgICAvLyBUaGUgb2xkIHNwZWxsY2hlY2tpbmcgY29kZSByZXF1aXJlcyB0aGF0IGNoZWNraW5n
IGJlIGRvbmUgZmlyc3QsIHRvIHByZXZlbnQgaXNzdWVzIGxpa2UgdGhhdCBpbiA2ODY0MDcyLCB3
aGVyZSA8ZG9lc24ndD4gaXMgbWFya2VkIGFzIG1pc3NwZWxsZWQuCiAgICAgbWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKGNvbW1hbmRUeXBlRm9yQWRkZWRUeXBpbmcpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbGllZEVkaXRpbmcodGhpcyk7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGtpbGxSaW5nKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZyYW1lLT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmco
ZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3Rl
ZEJ5RWRpdGluZyhmYWxzZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvRGVs
ZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uQWZ0ZXJVbmRvOwpAQCAtNTE0LDcg
KzUxNCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9LaWxsUmlu
ZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVsZXRlLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBNYWtlIHVuZG8gc2VsZWN0
IGV2ZXJ5dGhpbmcgdGhhdCBoYXMgYmVlbiBkZWxldGVkLCB1bmxlc3MgYW4gdW5kbyB3aWxsIHVu
ZG8gbW9yZSB0aGFuIGp1c3QgdGhpcyBkZWxldGlvbi4KICAgICAvLyBGSVhNRTogVGhpcyBiZWhh
dmVzIGxpa2UgVGV4dEVkaXQgZXhjZXB0IGZvciB0aGUgY2FzZSB3aGVyZSB5b3Ugb3BlbiB3aXRo
IHRleHQgaW5zZXJ0aW9uIGFuZCB0aGVuIGRlbGV0ZQogICAgIC8vIG1vcmUgdGV4dCB0aGFuIHlv
dSBpbnNlcnQuICBJbiB0aGF0IGNhc2UgYWxsIG9mIHRoZSB0ZXh0IHRoYXQgd2FzIGFyb3VuZCBv
cmlnaW5hbGx5IHNob3VsZCBiZSBzZWxlY3RlZC4KQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBraQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZyYW1lLT5lZGl0b3IoKS0+dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmco
ZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3Rl
ZEJ5RWRpdGluZyhmYWxzZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvRGVs
ZXRlOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uQWZ0ZXJVbmRvOwpAQCAtNjA3LDcg
KzYwNyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgaWYgKGtpbGxSaW5nKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFkZFRvS2ls
bFJpbmcoc2VsZWN0aW9uVG9EZWxldGUudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2Up
OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYWRkVG9LaWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0
ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxzZSk7CiAgICAgLy8gbWFrZSB1bmRvIHNl
bGVjdCB3aGF0IHdhcyBkZWxldGVkCiAgICAgc2V0U3RhcnRpbmdTZWxlY3Rpb24oc2VsZWN0aW9u
QWZ0ZXJVbmRvKTsKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKHNl
bGVjdGlvblRvRGVsZXRlLCBtX3NtYXJ0RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5jcHAKaW5kZXggMmFhYTczMDQzZGQzNDFkZjBmOWJiMmZmODliZWUxOTg1MWM1ODc1
MC4uOWJkOTQ3NDIzNmUxYzBhOTY1ZWMyZThmZDM5NTE0YTVkZjM3NjY1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTg1NSw3ICs4NTUsNyBAQCBib29sIGlzRW1w
dHlUYWJsZUNlbGwoY29uc3QgTm9kZSogbm9kZSkKIAogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
Y3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5kZWZhdWx0UGFyYWdyYXBoU2Vw
YXJhdG9yKCkpIHsKKyAgICBzd2l0Y2ggKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5kZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFy
YXRvcklzRGl2OgogICAgICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgY2FzZSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNGMwYzI4MGFjZTUwNmFiZjBkMGE3N2FhMjJl
NzJlZWY3NDRkN2Q0Yy4uYjcwMTZjODMwMmJhMjc3NWI1OThlZjRhM2JkZWM0NWRjM2NhNDk3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtODMsNyArODMsNyBA
QCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJk
LCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rl
ZFJhbmdlKCk7CiAgICAgYm9vbCBjaG9vc2VQbGFpblRleHQ7CiAgICAgCi0gICAgbV9mcmFtZS0+
ZWRpdG9yKCktPmNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBib2Fy
ZCk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9h
cmQoTlNHZW5lcmFsUGJvYXJkKTsKICNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IHBhc3RlYm9hcmQtPmRvY3VtZW50RnJhZ21lbnQobV9mcmFtZSwgcmFuZ2UsIGFs
bG93UGxhaW5UZXh0LCBjaG9vc2VQbGFpblRleHQpOwogICAgIGlmIChmcmFnbWVudCAmJiBzaG91
bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvblBhc3Rl
ZCkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQo
UGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCkKICAgICAgICAgICAg
IHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQo
cGFzdGVib2FyZCksIGZhbHNlKTsKICAgICB9CiAjZW5kaWYKLSAgICBtX2ZyYW1lLT5lZGl0b3Io
KS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOworICAgIG1fZnJh
bWUtPmVkaXRvcigpLmNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsK
IH0KIAogYm9vbCBFZGl0b3I6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVu
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZmRhMjFkNWVlOTRkNTFiMzNjZDg4
MTJkZTRhY2FkZmI1MDhlYWQ5MC4uNTlkMzRmZWM5NjdmYWVhNGZiODBmMTMyNTQ2YjY0NDJmMWI5
MjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNjU1LDcgKzY1NSw3IEBAIFN0
cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2Rl
cywgRUFubm90YXRlRm9ySW50ZXJjCiAKICAgICBSZWZQdHI8UmFuZ2U+IHVwZGF0ZWRSYW5nZVJl
ZjsKICAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgdXBkYXRlZFJhbmdlUmVmID0gZnJhbWUtPmVk
aXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKHJhbmdl
KTsKKyAgICAgICAgdXBkYXRlZFJhbmdlUmVmID0gZnJhbWUtPmVkaXRvcigpLmF2b2lkSW50ZXJz
ZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFuZ2UpOwogICAgICAgICB1cGRhdGVk
UmFuZ2UgPSB1cGRhdGVkUmFuZ2VSZWYuZ2V0KCk7CiAgICAgICAgIGlmICghdXBkYXRlZFJhbmdl
KQogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC03NjksNyArNzY5LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiBub2RlLCBFQ2hpbGRyZW5Pbmx5IGNoaWxk
cmVuT25seSwgVmVjdG9yPE5vZGUqPioKICAgICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29u
dGFpbmVyRWxlbWVudCA9IDA7CiAjaWYgRU5BQkxFKERFTEVUSU9OX1VJKQogICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGRlbGV0ZUJ1
dHRvbkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWlu
ZXJFbGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29u
dGFpbmVyRWxlbWVudCgpOwogICAgICAgICBpZiAobm9kZS0+aXNEZXNjZW5kYW50T2YoZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggM2IzMDM0NGU1N2Vm
OTc3ZDdkMjJiYjE4ODU5OTJjM2E3MTVkNTc3Zi4uNzI2YTMxOWZkNTkyOWNlMTRmZDMzYzE0ZDM1
OGZmNjNlMDE1OTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjplbmRFZGl0aW5nKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZy
YW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEVuZEVkaXRpbmcodGhp
cyk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNDYyMGE4
YTcwODAwMDMwOWM3ZTNiZDM2Nzk0NmY4NzgyMGRiNTE0Yi4uNGUyYzY3YTA5NWExNjI1ODYxNjIy
NzE3ZjhlOGI1NzZiZjY0NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
OjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRl
eHREaWRDaGFuZ2VJblRleHRBcmVhKHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4
dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CiAgICAgLy8gV2hlbiB0eXBpbmcgaW4gYSB0ZXh0
YXJlYSwgY2hpbGRyZW5DaGFuZ2VkIGlzIG5vdCBjYWxsZWQsIHNvIHdlIG5lZWQgdG8gZm9yY2Ug
dGhlIGRpcmVjdGlvbmFsaXR5IGNoZWNrLgogICAgIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlv
bmFsaXR5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAK
aW5kZXggMzZjMWY4NTExZjJjOTMyMWUwZWQxYWM4MmE5MDFlMzgyYWI2Yzc2My4uNjFmMTBkNTNm
MWVmOTQ4MjYzNmFkYmYwM2IyMzI0MzY0MzUyZWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
aWYgKCFlbGVtZW50KCktPmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEZyYW1lKiBm
cmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCktPmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChlbGVtZW50KCks
IGV2ZW50KSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuZG9UZXh0RmllbGRD
b21tYW5kRnJvbUV2ZW50KGVsZW1lbnQoKSwgZXZlbnQpKQogICAgICAgICByZXR1cm47CiAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CkBAIC00NzMsOCArNDczLDggQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2VyRWRpdChWYWx1ZUNoYW5nZVN0YXRl
IHN0YXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoc3RhdGUgPT0gVmFsdWVDaGFu
Z2VTdGF0ZU5vbmUpCi0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRleHRGaWVsZERpZEJl
Z2luRWRpdGluZyhlbGVtZW50KCkpOwotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRleHREaWRD
aGFuZ2VJblRleHRGaWVsZChlbGVtZW50KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhlbGVtZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkudGV4dERpZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAzYTRmNmZkZTAyOGQyYTM5NWNl
NGNhYjFhNjllN2RiYjQ3ODJiYzhhLi5iNDIzZWIyMDBhNzJlOTM1ZWYxY2Y2ODZlNDJhZjU1MjNk
Y2QxYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTQ4Miw3ICs0
ODIsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjbG9zZVVSTCgpCiAgICAgRG9jdW1lbnQqIGN1cnJl
bnREb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgc3RvcExvYWRpbmcoY3VycmVu
dERvY3VtZW50ICYmICFjdXJyZW50RG9jdW1lbnQtPmluUGFnZUNhY2hlKCkgPyBVbmxvYWRFdmVu
dFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlIDogVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRPbmx5KTsK
ICAgICAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsK
KyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZGlk
T3BlblVSTCgpCiAgICAgfQogCiAgICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5j
YW5jZWwoKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXJMYXN0RWRpdENvbW1hbmQoKTsK
KyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGVhckxhc3RFZGl0Q29tbWFuZCgpOwogCiAgICAgbV9p
c0NvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IGZhbHNlOwpA
QCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNhbmNlbEFuZENsZWFyKCkKIAog
dm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFy
V2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wgY2xlYXJGcmFt
ZVZpZXcpCiB7Ci0gICAgbV9mcmFtZS0+ZWRpdG9yKCktPmNsZWFyKCk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkuY2xlYXIoKTsKIAogICAgIGlmICghbV9uZWVkc0NsZWFyKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggMDU4OGY0Y2FlMjFkNThiNDlmY2Y0MjliMzI4YzE1OGI5ZjFjZTY0ZS4uNDlkYTFkYWUzNjZj
ZmU4ZjU1ZGMwYmU0M2QxZWQyNWY2NTBhMTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyB2b2lk
IG9wZW5OZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCiBzdGF0
aWMgdm9pZCBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgRnJhbWUqIGZy
YW1lKQogewogICAgIFN0cmluZyB0ZXh0KCZjaGFyYWN0ZXIsIDEpOwotICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQorICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlv
bigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQoZnJhbWUt
PmRvY3VtZW50KCksIHRleHQsIDAsIFR5cGluZ0NvbW1hbmQ6OlRleHRDb21wb3NpdGlvbk5vbmUp
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIG1fY2xpZW50
LT5kb3dubG9hZFVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ6
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1
dGVMaW5rVVJMKCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpLCBt
X2hpdFRlc3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6CiAgICAgICAgIG9wZW5OZXdX
aW5kb3cobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgZnJhbWUpOwpAQCAtMjQ0
LDE4ICsyNDQsMTggQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOgogICAgICAgICAvLyBGSVhNRTogVGhlIFBhc3RlYm9h
cmQgY2xhc3MgaXMgbm90IHdyaXR0ZW4geWV0CiAgICAgICAgIC8vIEZvciBub3csIGNhbGwgaW50
byB0aGUgY2xpZW50LiBUaGlzIGlzIHRlbXBvcmFyeSEKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb3B5SW1hZ2UobV9oaXRUZXN0UmVzdWx0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNv
cHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOwogICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShR
VCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCksIG1faGl0VGVzdFJl
c3VsdC50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvcHlVUkwobV9o
aXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250
ZW50KCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6CiAgICAgICAgIG9wZW5OZXdXaW5kb3cobV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKSwgZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJM
KCksIG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRv
cigpLmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHM6CiAgICAgICAgIG1faGl0VGVzdFJlc3VsdC50
b2dnbGVNZWRpYUNvbnRyb2xzRGlzcGxheSgpOwpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0
ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0NvcHk6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29weSgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY29weSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0dvQmFjazoKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQpA
QCAtMjk4LDE0ICsyOTgsMTQgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLT5yZWxvYWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdDdXQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0IikuZXhlY3V0
ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFr
OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3JtRGVsZXRlKCk7CisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnVW5pY29kZUluc2VydExSTU1hcms6CiAgICAgICAgIGluc2VydFVuaWNv
ZGVDaGFyYWN0ZXIobGVmdFRvUmlnaHRNYXJrLCBmcmFtZSk7CkBAIC0zNDAsMjIgKzM0MCwyMiBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVJdGVtKiBpdGVtKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oRUZMKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2VsZWN0
QWxsOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1
dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1
dGUoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z1NwZWxsaW5nR3Vlc3M6IHsKICAgICAgICAgRnJhbWVTZWxlY3Rpb24qIGZyYW1lU2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpOwotICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5zaG91
bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2VsZWN0aW9uLT50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKSB7CisgICAgICAgIGlmIChm
cmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dChpdGVtLT50aXRsZSgpLCBmcmFtZVNlbGVj
dGlvbi0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVk
KSkgewogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbnMgcmVw
bGFjZU9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSB8IFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZzsKIAotICAgICAgICAgICAgaWYgKGZy
YW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRBbGxvd1NwZWxsaW5nU3VnZ2VzdGlvbnNX
aXRob3V0U2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVo
YXZpb3IoKS5zaG91bGRBbGxvd1NwZWxsaW5nU3VnZ2VzdGlvbnNXaXRob3V0U2VsZWN0aW9uKCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWVTZWxlY3Rpb24tPmlzQ2FyZXRPclJhbmdl
KCkpOwogICAgICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gd29yZFNlbGVjdGlvbihmcmFt
ZVNlbGVjdGlvbi0+YmFzZSgpKTsKICAgICAgICAgICAgICAgICB3b3JkU2VsZWN0aW9uLmV4cGFu
ZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgICAgICBmcmFt
ZVNlbGVjdGlvbi0+c2V0U2VsZWN0aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHQoKS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFRleHQoKS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZU9wdGlvbnMg
fD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50OwogICAgICAgICAg
ICAgfQogCkBAIC0zNjYsMTAgKzM2NiwxMCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZzoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuaWdub3JlU3BlbGxpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmxlYXJuU3BlbGxpbmcoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxlYXJuU3BlbGxpbmco
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWI6
CiAgICAgICAgIG1fY2xpZW50LT5zZWFyY2hXaXRoR29vZ2xlKGZyYW1lKTsKQEAgLTM4OCwxMyAr
Mzg4LDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9h
ZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VS
TCgpLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2Us
IDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdCb2xkOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUJvbGQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJU
b2dnbGVCb2xkIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dn
bGVJdGFsaWMiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJU
b2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVW5kZXJsaW5lOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZVVu
ZGVybGluZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlVW5kZXJsaW5lKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZToKICAgICAg
ICAgLy8gV2UgYWN0dWFsbHkgbmV2ZXIgZW5hYmxlIHRoaXMgYmVjYXVzZSBDU1MgZG9lcyBub3Qg
aGF2ZSBhIHdheSB0byBzcGVjaWZ5IGFuIG91dGxpbmUgZm9udCwKQEAgLTQxNCwyMiArNDE0LDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIG1fY2xpZW50LT5zdG9wU3BlYWtpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0
aW9uOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5h
dHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIikuZXhlY3V0ZSgpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJh
bCIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKS5leGVjdXRlKCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdE
aXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ6
CkBAIC00MzcsNjUgKzQzNyw2NSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgpOworICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCkuc2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc6Ci0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7CisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0
aFNwZWxsaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUdyYW1tYXJDaGVja2lu
ZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1Nob3dGb250czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93Rm9udFBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Rm9udFBhbmVsKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3R5bGVzOgotICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPnNob3dTdHlsZXNQYW5lbCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2hvd1N0
eWxlc1BhbmVsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
U2hvd0NvbG9yczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93Q29sb3JQYW5lbCgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2hvd0NvbG9yUGFuZWwoKTsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICNpZiBVU0UoQVBQS0lUKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFr
ZVVwcGVyQ2FzZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT51cHBlcmNhc2VXb3JkKCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS51cHBlcmNhc2VXb3JkKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5sb3dlcmNhc2VXb3JkKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5sb3dl
cmNhc2VXb3JkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
Q2FwaXRhbGl6ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jYXBpdGFsaXplV29yZCgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2FwaXRhbGl6ZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdD
aGFuZ2VCYWNrOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNoYW5nZUJhY2tUb1JlcGxhY2Vk
U3RyaW5nKG1faGl0VGVzdFJlc3VsdC5yZXBsYWNlZFN0cmluZygpKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKG1faGl0VGVzdFJlc3VsdC5yZXBs
YWNlZFN0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBVU0UoQVVUT01BVElD
X1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3Rp
dHV0aW9uczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3Vic3RpdHV0aW9uc1BhbmVs
KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3Vic3RpdHV0aW9uc1BhbmVsKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGU6
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
TGlua3M6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHRS
ZXBsYWNlbWVudDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNTA1LDcgKzUwNSw3IEBAIHZv
aWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0
TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdEaWN0YXRpb25BbHRlcm5hdGl2ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBseURpY3RhdGlvbkFsdGVybmF0aXZlbHRlcm5hdGl2ZShpdGVtLT50aXRsZSgpKTsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZl
KGl0ZW0tPnRpdGxlKCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9w
dWxhdGUoKQogICAgICAgICAgICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoZnJhbWUp
KSB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNl
bGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rp
b25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKIAogI2lmIElOQ0xVREVfU1BPVExJR0hUX0NPTlRFWFRf
TUVOVV9JVEVNCkBAIC05MjMsMTMgKzkyMywxMyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6cG9wdWxhdGUoKQogICAgICAgICBib29sIGluUGFzc3dvcmRGaWVsZCA9IHNlbGVjdGlvbi0+
aXNJblBhc3N3b3JkRmllbGQoKTsKICAgICAgICAgaWYgKCFpblBhc3N3b3JkRmllbGQpIHsKICAg
ICAgICAgICAgIGJvb2wgaGF2ZUNvbnRleHRNZW51SXRlbXNGb3JNaXNzcGVsbGluZ09yR3JhbW1l
ciA9IGZhbHNlOwotICAgICAgICAgICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1l
LT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEZvcihub2RlKTsKKyAgICAgICAgICAg
IGJvb2wgc3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmcmFtZS0+ZWRpdG9yKCkuaXNTcGVsbENoZWNr
aW5nRW5hYmxlZEZvcihub2RlKTsKICAgICAgICAgICAgIGlmIChzcGVsbENoZWNraW5nRW5hYmxl
ZCkgewogICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIGFkZGluZyBzcGVsbGluZy1yZWxhdGVk
IG9yIGdyYW1tYXItcmVsYXRlZCBjb250ZXh0IG1lbnUgaXRlbXMgKG5ldmVyIGJvdGgsIHNpbmNl
IGEgc2luZ2xlIHNlbGVjdGVkIHJhbmdlCiAgICAgICAgICAgICAgICAgLy8gaXMgbmV2ZXIgY29u
c2lkZXJlZCBhIG1pc3NwZWxsaW5nIGFuZCBiYWQgZ3JhbW1hciBhdCB0aGUgc2FtZSB0aW1lKQog
ICAgICAgICAgICAgICAgIGJvb2wgbWlzc3BlbGxpbmc7CiAgICAgICAgICAgICAgICAgYm9vbCBi
YWRHcmFtbWFyOwotICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXMgPSBmcmFt
ZS0+ZWRpdG9yKCktPmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKG1pc3NwZWxs
aW5nLCBiYWRHcmFtbWFyKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2Vz
ID0gZnJhbWUtPmVkaXRvcigpLmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKG1p
c3NwZWxsaW5nLCBiYWRHcmFtbWFyKTsKICAgICAgICAgICAgICAgICBpZiAobWlzc3BlbGxpbmcg
fHwgYmFkR3JhbW1hcikgewogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGd1ZXNz
ZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXNpemUpIHsKQEAgLTk5Nyw3ICs5
OTcsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogCiAgICAgICAg
IGlmIChtX2hpdFRlc3RSZXN1bHQuaXNTZWxlY3RlZCgpICYmICFpblBhc3N3b3JkRmllbGQgJiYg
c2VsZWN0aW9uQ29udGFpbnNQb3NzaWJsZVdvcmQoZnJhbWUpKSB7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7Cisg
ICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAg
ICAgICAgQ29udGV4dE1lbnVJdGVtIExvb2tVcEluRGljdGlvbmFyeUl0ZW0oQWN0aW9uVHlwZSwg
Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LCBjb250ZXh0TWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpKTsKIAogI2lmIElOQ0xVREVfU1BPVExJ
R0hUX0NPTlRFWFRfTUVOVV9JVEVNCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAgICAgICAgYXBwZW5kSXRlbSh0cmFuc2Zv
cm1hdGlvbnNNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspCi0gICAgICAgICAgICBib29sIHNob3VsZFNob3dGb250TWVudSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgICAgICAgICAgYm9vbCBzaG91bGRTaG93Rm9u
dE1lbnUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogI2Vsc2UKICAgICAgICAg
ICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gdHJ1ZTsKICNlbmRpZgpAQCAtMTA2NCw3ICsx
MDY0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAg
ICAgIGFwcGVuZEl0ZW0oU3BlZWNoTWVudUl0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQg
PSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpOworICAgICAgICAgICAgRWRpdG9yQ2xpZW50KiBj
bGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgICAgICAgICBpZiAoY2xpZW50
ICYmIGNsaWVudC0+c2hvdWxkU2hvd1VuaWNvZGVNZW51KCkpIHsKICAgICAgICAgICAgICAgICBD
b250ZXh0TWVudUl0ZW0gVW5pY29kZU1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0
ZW1UYWdVbmljb2RlLCBjb250ZXh0TWVudUl0ZW1UYWdVbmljb2RlKCkpOwogICAgICAgICAgICAg
ICAgIGNyZWF0ZUFuZEFwcGVuZFVuaWNvZGVTdWJNZW51KFVuaWNvZGVNZW51SXRlbSk7CkBAIC0x
MDc5LDcgKzEwNzksNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
ICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHBhZ2UtPnNldHRpbmdzKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpbmNsdWRlVGV4dERpcmVjdGlvblN1Ym1lbnUgPSBzZXR0aW5n
cy0+dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcigpID09IFRleHREaXJlY3Rp
b25TdWJtZW51QWx3YXlzSW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChzZXR0
aW5ncy0+dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcigpID09IFRleHREaXJl
Y3Rpb25TdWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkICYmIGZyYW1lLT5lZGl0b3IoKS0+aGFz
QmlkaVNlbGVjdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChzZXR0aW5ncy0+
dGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcigpID09IFRleHREaXJlY3Rpb25T
dWJtZW51QXV0b21hdGljYWxseUluY2x1ZGVkICYmIGZyYW1lLT5lZGl0b3IoKS5oYXNCaWRpU2Vs
ZWN0aW9uKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZVRleHREaXJlY3Rpb25T
dWJtZW51KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gVGV4dERp
cmVjdGlvbk1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0
aW9uTWVudSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtVGFn
VGV4dERpcmVjdGlvbk1lbnUoKSk7CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKIAogICAgIHN3aXRjaCAoaXRlbS5hY3Rpb24oKSkgewogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9
IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uOgogICAgICAgICAgICAgc2hv
dWxkQ2hlY2sgPSBmYWxzZTsKQEAgLTExNDksNDQgKzExNDksNDQgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0p
IGNvbnN0CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQ6CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ6IHsKICAgICAgICAgICAgIFN0
cmluZyBkaXJlY3Rpb24gPSBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0xlZnRU
b1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlv
bikgIT0gRmFsc2VUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0
aW9uTmF0dXJhbCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCIpOwog
ICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRl
OwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OiB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQiKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1Jp
Z2h0Iik7CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVl
VHJpU3RhdGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRp
bmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9u
UmlnaHRUb0xlZnQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgp
ID09IFRydWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NvcHk6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ29weSgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ29weSgp
IHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5D
dXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRN
TEN1dCgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5DdXQoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nOgogICAgICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6CiAgICAgICAgICAgICBzaG91bGRF
bmFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOgotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkgfHwgZnJhbWUtPmVk
aXRvcigpLT5jYW5QYXN0ZSgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVk
aXRvcigpLmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdEZWxldGU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRp
dG9yKCktPmNhbkRlbGV0ZSgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVk
aXRvcigpLmNhbkRlbGV0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnSW5wdXRNZXRob2RzOgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1VuaWNvZGU6CkBAIC0xMjA5LDc4ICsxMjA5LDc4IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25z
dAogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRv
cigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgICAgICAgICAg
c2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpICE9IEZhbHNlVHJp
U3RhdGU7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRp
dFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk6CiAgICAgICAgICAgICBzaG91bGRF
bmFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGlu
ZzoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmlzR3JhbW1hckNoZWNraW5nRW5h
YmxlZCgpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5pc0dyYW1tYXJDaGVja2lu
Z0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBzaG91bGRDaGVjayA9IHRydWU7CiAgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiB7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9
IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJpdGFsaWMiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
ZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdCb2xkOiB7Ci0gICAgICAg
ICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAg
ICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAg
ICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
T3V0bGluZToKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6
Ci0gICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5zcGVsbGluZ1BhbmVsSXNTaG93aW5n
KCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1No
b3dTcGVsbGluZ1BhbmVsKGZhbHNlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgaXRlbS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCh0cnVl
KSk7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdOb0d1
ZXNzZXNGb3VuZDoKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZhbHNlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1do
aWxlVHlwaW5nOgotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51OgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczoKLSAgICAgICAgICAgIGlm
IChmcmFtZS0+ZWRpdG9yKCktPnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpKQorICAgICAg
ICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5zdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSkK
ICAgICAgICAgICAgICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zKGZhbHNlKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaXRl
bS5zZXRUaXRsZShjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyh0cnVlKSk7Ci0g
ICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJD
YXNlOgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U6CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZToKICAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJh
bWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFt
ZS0+ZWRpdG9yKCkuY2FuRWRpdCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRv
cigpLmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGU6Ci0g
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5z
bWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOgotICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVk
KCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuaXNBdXRvbWF0
aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rczoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7
CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQ6Ci0gICAgICAgICAgICBzaG91bGRDaGVj
ayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCk7
CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZzoKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGNsaWVudCgpICYmIGNsaWVudCgpLT5pc1NwZWFraW5nKCk7CkBAIC0xMzAzLDcgKzEzMDMs
NyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENv
bnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9ICFm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0ZvbnRN
ZW51OgotICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0
UmljaGx5KCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2Fu
RWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0dvQmFjazoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBi
MTlkY2U1ZmNkMjhhZTQ5NDczODA2MDc3NTk0MDgxZTFmYjc0MDJkLi5kN2I4ZWNiNzczODFlYTk2
NGI2YzY1ODA0ZjcyN2QwOTc0MjkwZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0xMTEzLDcgKzExMTMsNyBAQCBib29sIERPTVdpbmRvdzo6ZmluZChjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJhY2t3YXJkcywgYgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAvLyBGSVhNRSAoMTMwMTYpOiBTdXBwb3J0IHdob2xlV29yZCwgc2Vh
cmNoSW5GcmFtZXMgYW5kIHNob3dEaWFsb2cKLSAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmZpbmRTdHJpbmcoc3RyaW5nLCAhYmFja3dhcmRzLCBjYXNlU2Vuc2l0aXZlLCB3cmFwLCBmYWxz
ZSk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmcoc3RyaW5nLCAhYmFj
a3dhcmRzLCBjYXNlU2Vuc2l0aXZlLCB3cmFwLCBmYWxzZSk7CiB9CiAKIGJvb2wgRE9NV2luZG93
OjpvZmZzY3JlZW5CdWZmZXJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCA3OTI5NmVjM2FlODFiMmU1NzNiZTA4ZTBmNGM3ZmY0ZmExZTQ5OGZkLi5k
ZDRiZjViZWQ4ZDM3ZTFhOWRhNjA2OWQ5MzA1MWU1YTZiM2MyNjU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIERyYWdE
YXRhKiBkcmFnCiB7CiAgICAgQVNTRVJUKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5o
YXNDYXJldCgpKTsKICAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxl
cigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpID8gIiIgOiBkcmFnRGF0YS0+YXNQbGFpblRl
eHQoaW5uZXJGcmFtZSk7Ci0gICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkt
PmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPmNhcmV0
UG9zaXRpb24oKSk7CisgICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCkuZmlu
ZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2FyZXRQb3Np
dGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3Jl
YXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCksIElH
Tk9SRV9FWENFUFRJT04pOwogfQogCkBAIC00NzUsMTAgKzQ3NSwxMCBAQCBib29sIERyYWdDb250
cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgUmVm
UHRyPFJhbmdlPiBpbm5lclJhbmdlID0gaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFs
aXplZFJhbmdlKCk7CiAgICAgICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5
bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvci5zZXJpYWxpemVkKCksIGZhbHNlKTsK
LSAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkQXBwbHlTdHlsZShzdHls
ZS5nZXQoKSwgaW5uZXJSYW5nZS5nZXQoKSkpCisgICAgICAgIGlmICghaW5uZXJGcmFtZS0+ZWRp
dG9yKCkuc2hvdWxkQXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgaW5uZXJSYW5nZS5nZXQoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fY2xpZW50LT53aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0LCBkcmFnRGF0YSk7
Ci0gICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBF
ZGl0QWN0aW9uU2V0Q29sb3IpOworICAgICAgICBpbm5lckZyYW1lLT5lZGl0b3IoKS5hcHBseVN0
eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0Q29sb3IpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25j
bHVkZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoZHJhZ0lzTW92ZShpbm5l
ckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpIHx8IGRyYWdDYXJldC5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIGJvb2wgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKICAg
ICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YShkcmFnRGF0YSwgaW5uZXJGcmFtZS5nZXQoKSwgcmFuZ2UsIHRydWUsIGNo
b3NlUGxhaW5UZXh0KTsKLSAgICAgICAgaWYgKCFmcmFnbWVudCB8fCAhaW5uZXJGcmFtZS0+ZWRp
dG9yKCktPnNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uRHJvcHBlZCkpIHsKKyAgICAgICAgaWYgKCFmcmFnbWVudCB8fCAhaW5uZXJGcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAKQEAgLTUxOSw3ICs1MTksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXRE
cmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgaWYgKGRyYWdJc01vdmUoaW5uZXJGcmFt
ZS0+c2VsZWN0aW9uKCksIGRyYWdEYXRhKSkgewogICAgICAgICAgICAgLy8gTlNUZXh0VmlldyBi
ZWhhdmlvciBpcyB0byBhbHdheXMgc21hcnQgZGVsZXRlIG9uIG1vdmluZyBhIHNlbGVjdGlvbiwK
ICAgICAgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0IGluc2VydCBpZiB0aGUgc2VsZWN0aW9u
IGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHkuCi0gICAgICAgICAgICBib29sIHNtYXJ0
RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCktPnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
OworICAgICAgICAgICAgYm9vbCBzbWFydERlbGV0ZSA9IGlubmVyRnJhbWUtPmVkaXRvcigpLnNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYm9vbCBzbWFydEluc2VydCA9
IHNtYXJ0RGVsZXRlICYmIGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxhcml0eSgpID09
IFdvcmRHcmFudWxhcml0eSAmJiBkcmFnRGF0YS0+Y2FuU21hcnRSZXBsYWNlKCk7CiAgICAgICAg
ICAgICBhcHBseUNvbW1hbmQoTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudCwg
ZHJhZ0NhcmV0LmJhc2UoKSwgc21hcnRJbnNlcnQsIHNtYXJ0RGVsZXRlKSk7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC01MzQsNyArNTM0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVF
ZGl0RHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLT5hc1BsYWluVGV4dChpbm5lckZyYW1lLmdldCgp
KTsKLSAgICAgICAgaWYgKHRleHQuaXNFbXB0eSgpIHx8ICFpbm5lckZyYW1lLT5lZGl0b3IoKS0+
c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uRHJv
cHBlZCkpIHsKKyAgICAgICAgaWYgKHRleHQuaXNFbXB0eSgpIHx8ICFpbm5lckZyYW1lLT5lZGl0
b3IoKS5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rp
b25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAg
LTc4OSw3ICs3ODksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNy
YywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIGlmIChzdGF0ZS5t
X2RyYWdUeXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKICAgICAgICAgaWYgKCFj
bGlwYm9hcmQtPmhhc0RhdGEoKSkgewogICAgICAgICAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3Jt
Q29udHJvbChzcmMtPnNlbGVjdGlvbigpLT5zdGFydCgpKSkKLSAgICAgICAgICAgICAgICBjbGlw
Ym9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBi
b2FyZCgpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPndyaXRlUGxhaW5UZXh0KHNyYy0+
ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IHNyYy0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNl
bGVjdGlvblJhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA1YWU1
ZDNmN2ZiNDA2MTdlZjdlNmE2MWJmODNkMDEyM2RkNThjZGQ1Li41NmRjYTRjNDliZTgyYjE0YWY2
NDYwZDZkMzBjMDQ5ZmY3MTNlNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3Jk
RnJvbU1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmUKIHsKICAgICBpZiAo
bV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkgewogICAgICAgICBzZWxlY3RDbG9zZXN0V29yZEZy
b21IaXRUZXN0UmVzdWx0KHJlc3VsdC5oaXRUZXN0UmVzdWx0KCksCi0gICAgICAgICAgICAocmVz
dWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmlzU2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSA/IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hp
dGVzcGFjZSA6IERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOworICAgICAgICAgICAgKHJl
c3VsdC5ldmVudCgpLmNsaWNrQ291bnQoKSA9PSAyICYmIG1fZnJhbWUtPmVkaXRvcigpLmlzU2Vs
ZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpKSA/IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hp
dGVzcGFjZSA6IERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UpOwogICAgIH0KIH0KIApAQCAt
NjA1LDcgKzYwNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRT
aW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAgICAgICAgICAgICAgICAg
cG9zID0gc2VsZWN0aW9uSW5Vc2VyU2VsZWN0QWxsLmVuZCgpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVj
dGlvbkFzRGlyZWN0aW9uYWwoKSAmJiBwb3MuaXNOb3ROdWxsKCkpIHsKKyAgICAgICAgaWYgKCFt
X2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2VsZWN0aW9uQXNEaXJl
Y3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgewogICAgICAgICAgICAgLy8gU2VlIDxyZGFy
Oi8vcHJvYmxlbS8zNjY4MTU3PiBSRUdSRVNTSU9OIChNYWlsKTogc2hpZnQtY2xpY2sgZGVzZWxl
Y3RzIHdoZW4gc2VsZWN0aW9uCiAgICAgICAgICAgICAvLyB3YXMgY3JlYXRlZCByaWdodC10by1s
ZWZ0CiAgICAgICAgICAgICBQb3NpdGlvbiBzdGFydCA9IG5ld1NlbGVjdGlvbi5zdGFydCgpOwpA
QCAtMTk3NCw4ICsxOTc0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVBhc3RlR2xvYmFs
U2VsZWN0aW9uKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmUKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEZyYW1lKiBmb2N1c0ZyYW1lID0gbV9mcmFtZS0+cGFnZSgpLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgLy8gRG8gbm90IHBhc3Rl
IGhlcmUgaWYgdGhlIGZvY3VzIHdhcyBtb3ZlZCBzb21ld2hlcmUgZWxzZS4KLSAgICBpZiAobV9m
cmFtZSA9PSBmb2N1c0ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+c3VwcG9y
dHNHbG9iYWxTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKEFTQ0lJTGl0ZXJhbCgiUGFzdGVHbG9iYWxTZWxlY3Rpb24iKSkuZXhlY3V0ZSgpOwor
ICAgIGlmIChtX2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50
KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKEFTQ0lJTGl0ZXJhbCgiUGFzdGVHbG9iYWxTZWxlY3Rpb24iKSkuZXhl
Y3V0ZSgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjkwMiw3ICsyOTAyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBkb2MtPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIHZpZXdwb3J0UG9zLCBldmVudCk7CiAKLSAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkt
PmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkKKyAgICBpZiAo
bV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51
Q2xpY2soKQogICAgICAgICAmJiAhbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKHZpZXdw
b3J0UG9zKQogICAgICAgICAmJiAhbWV2LnNjcm9sbGJhcigpCiAgICAgICAgIC8vIEZJWE1FOiBJ
biB0aGUgZWRpdGFibGUgY2FzZSwgd29yZCBzZWxlY3Rpb24gc29tZXRpbWVzIHNlbGVjdHMgY29u
dGVudCB0aGF0IGlzbid0IHVuZGVybmVhdGggdGhlIG1vdXNlLgpAQCAtMjk0Niw3ICsyOTQ2LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKIAogICAg
IGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIChzZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSB8fCBzZWxlY3Rpb24tPmlzUmFuZ2UoKSkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAg
ICAgSW50UmVjdCBmaXJzdFJlY3QgPSBtX2ZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFu
Z2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkpOworICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1f
ZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlvblJhbmdlLmdldCgpKTsK
IAogICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVjdC5tYXhYKCkgOiBmaXJz
dFJlY3QueCgpOwogICAgICAgICAvLyBJbiBhIG11bHRpbGluZSBlZGl0LCBmaXJzdFJlY3QubWF4
WSgpIHdvdWxkIGVuZHVwIG9uIHRoZSBuZXh0IGxpbmUsIHNvIC0xLgpAQCAtMzI0NSw3ICszMjQ1
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAgIC8vIGluIG9yZGVyIHRvIG1hdGNoIElFOgogICAg
IC8vIDEuIHByZXZlbnRpbmcgZGVmYXVsdCBoYW5kbGluZyBvZiBrZXlkb3duIGFuZCBrZXlwcmVz
cyBldmVudHMgaGFzIG5vIGVmZmVjdCBvbiBJTSBpbnB1dDsKICAgICAvLyAyLiBpZiBhbiBpbnB1
dCBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQsIGl0cyBrZXlDb2RlIGlzIHNldCB0byAyMjkgaW4g
a2V5ZG93biBldmVudC4KLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duKGtleWRvd24uZ2V0KCkpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUlucHV0
TWV0aG9kS2V5ZG93bihrZXlkb3duLmdldCgpKTsKICAgICAKICAgICBib29sIGhhbmRsZWRCeUlu
cHV0TWV0aG9kID0ga2V5ZG93bi0+ZGVmYXVsdEhhbmRsZWQoKTsKICAgICAKQEAgLTMzNTIsNyAr
MzM1Miw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJh
bWVTZWxlY3Rpb24qIHNlbGVjdGlvbiwgS2V5Ym9hcmRFCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGVm
YXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBt
X2ZyYW1lLT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYg
KGV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBp
ZiAoZXZlbnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikKQEAgLTMzNzAsNyArMzM3MCw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVt
ZW50KG1fZnJhbWUtPnNlbGVjdGlvbigpLCBldmVudCk7CiAgICAgfQogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KSB7Ci0gICAgICAgIG1fZnJhbWUt
PmVkaXRvcigpLT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKKyAgICAgICAgbV9mcmFtZS0+
ZWRpdG9yKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CiAgICAgICAgIGlmIChldmVudC0+
ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKGV2ZW50
LT5jaGFyQ29kZSgpID09ICcgJykKQEAgLTM2NzEsNyArMzY3MSw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjp0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIAogdm9pZCBFdmVu
dEhhbmRsZXI6OmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoVGV4dEV2ZW50KiBldmVudCkK
IHsKLSAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCktPmhhbmRsZVRleHRFdmVudChldmVudCkpCisg
ICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZVRleHRFdmVudChldmVudCkpCiAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0zNzA0LDcgKzM3MDQsNyBAQCB2
b2lkIEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPmN0cmxLZXkoKSB8fCBldmVudC0+bWV0YUtleSgp
IHx8IGV2ZW50LT5hbHRLZXkoKSB8fCBldmVudC0+YWx0R3JhcGhLZXkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGROYXZp
Z2F0ZUJhY2tPbkJhY2tzcGFjZSgpKQorICAgIGlmICghbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZp
b3IoKS5zaG91bGROYXZpZ2F0ZUJhY2tPbkJhY2tzcGFjZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBmYzBmOWY4YjU4M2M0ZTM0YTg4NTg3NGY2N2ZiZDNl
ZjhlNjlkYzY3Li43YjZiOTNhN2MwMGRlZjFjNGRiNzljZmE5YmZlM2NiMDkyNmE5OWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC01MzcsNyArNTM3LDcgQEAg
c3RhdGljIGJvb2wgcmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKE5vZGUgKm5vZGUpCiAgICAgaWYg
KCFmcmFtZSB8fCAhcm9vdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGZy
YW1lLT5lZGl0b3IoKS0+c2hvdWxkRW5kRWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0
KCkpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkRW5kRWRpdGluZyhyYW5nZU9m
Q29udGVudHMocm9vdCkuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhclNlbGVjdGlvbklm
TmVlZGVkKEZyYW1lKiBvbGRGb2N1c2VkRnJhbWUsIEZyYW1lKiBuZXdGb2N1c2VkRnJhbWUsIE5v
ZGUqIG5ld0ZvY3VzZWROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBiYzM0YjE0MmMwYzRj
ZDIxNmNhZTI5M2I4Y2M5YTg4NmQ2YWJmNTAyLi5lODg4YzdkODFkNDRiM2Q3MGUxM2YzNmVjZDhm
NGNkYWE2YTU5YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzQ0LDE0ICs3NDQsMTQgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZy
YW1lUG9pbnQpCiAgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gcG9zaXRpb24ucHJldmlv
dXMoKTsKICAgICBpZiAocHJldmlvdXMuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgUmVmUHRyPFJh
bmdlPiBwcmV2aW91c0NoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHByZXZpb3VzLCBwb3NpdGlv
bik7Ci0gICAgICAgIExheW91dFJlY3QgcmVjdCA9IGVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5n
ZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0
ID0gZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5nZXQo
KSk7CiAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKGZyYW1lUG9pbnQpKQogICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UucmVsZWFzZSgpOwogICAgIH0KIAogICAgIFZp
c2libGVQb3NpdGlvbiBuZXh0ID0gcG9zaXRpb24ubmV4dCgpOwogICAgIGlmIChSZWZQdHI8UmFu
Z2U+IG5leHRDaGFyYWN0ZXJSYW5nZSA9IG1ha2VSYW5nZShwb3NpdGlvbiwgbmV4dCkpIHsKLSAg
ICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKG5leHRD
aGFyYWN0ZXJSYW5nZS5nZXQoKSk7CisgICAgICAgIExheW91dFJlY3QgcmVjdCA9IGVkaXRvcigp
LmZpcnN0UmVjdEZvclJhbmdlKG5leHRDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7CiAgICAgICAgIGlm
IChyZWN0LmNvbnRhaW5zKGZyYW1lUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIG5leHRDaGFy
YWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGNmNmZlM2M5
OGNjYWRkYTg4Yzc1YzAyMTU3YTdmYjM3ODcwMTdmMjQuLjNjMmJhZGU5MjgyNTE0MjQzOWVmZTVj
OTA4ZDBmMGZiNGU0MjkzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
ICAgICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKIAotICAgICAgICBFZGl0b3IqIGVkaXRv
cigpIGNvbnN0OworICAgICAgICBFZGl0b3ImIGVkaXRvcigpIGNvbnN0OwogICAgICAgICBFdmVu
dEhhbmRsZXIqIGV2ZW50SGFuZGxlcigpIGNvbnN0OwogICAgICAgICBGcmFtZUxvYWRlciogbG9h
ZGVyKCkgY29uc3Q7CiAgICAgICAgIE5hdmlnYXRpb25TY2hlZHVsZXIqIG5hdmlnYXRpb25TY2hl
ZHVsZXIoKSBjb25zdDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2M7CiAKICAgICAgICAgT3duUHRyPFNjcmlwdENv
bnRyb2xsZXI+IG1fc2NyaXB0OwotICAgICAgICBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKKyAg
ICAgICAgY29uc3QgT3duUHRyPEVkaXRvcj4gbV9lZGl0b3I7CiAgICAgICAgIE93blB0cjxGcmFt
ZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CiAgICAgICAgIE93blB0cjxFdmVudEhhbmRsZXI+IG1f
ZXZlbnRIYW5kbGVyOwogICAgICAgICBPd25QdHI8QW5pbWF0aW9uQ29udHJvbGxlcj4gbV9hbmlt
YXRpb25Db250cm9sbGVyOwpAQCAtMjg5LDkgKzI4OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLmdldCgpOwogICAgIH0KIAotICAgIGlubGluZSBF
ZGl0b3IqIEZyYW1lOjplZGl0b3IoKSBjb25zdAorICAgIGlubGluZSBFZGl0b3ImIEZyYW1lOjpl
ZGl0b3IoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZWRpdG9yLmdldCgpOworICAg
ICAgICByZXR1cm4gKm1fZWRpdG9yOwogICAgIH0KIAogICAgIGlubGluZSBBbmltYXRpb25Db250
cm9sbGVyKiBGcmFtZTo6YW5pbWF0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDYw
NWVlNDI1ZWE4NDlhYTE1Njg1MTUyM2IyYzQ4ODkyZjRmZmFhMGIuLjI0NGVkZjc2YmVkMDBmMjJi
OWExYzRlMWExMjA4ODhkOTYxNTUyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTY1LDcgKzU2
NSw3IEBAIGJvb2wgUGFnZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgRnJhbWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBk
byB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcodGFyZ2V0LCAob3B0
aW9ucyAmIH5XcmFwQXJvdW5kKSB8IFN0YXJ0SW5TZWxlY3Rpb24pKSB7CisgICAgICAgIGlmIChm
cmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyh0YXJnZXQsIChvcHRpb25zICYgfldyYXBBcm91bmQp
IHwgU3RhcnRJblNlbGVjdGlvbikpIHsKICAgICAgICAgICAgIGlmIChmcmFtZSAhPSBzdGFydEZy
YW1lKQogICAgICAgICAgICAgICAgIHN0YXJ0RnJhbWUtPnNlbGVjdGlvbigpLT5jbGVhcigpOwog
ICAgICAgICAgICAgZm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CkBA
IC01NzcsNyArNTc3LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBzdGFy
dEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgc2VsZWN0aW9uIHRoYXQgd2UgZGlkIGVh
cmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3QgcmVzZWFyY2ggd2l0aCB3cmFw
IG9uCiAgICAgaWYgKHNob3VsZFdyYXAgJiYgIXN0YXJ0RnJhbWUtPnNlbGVjdGlvbigpLT5pc05v
bmUoKSkgewotICAgICAgICBib29sIGZvdW5kID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCktPmZpbmRT
dHJpbmcodGFyZ2V0LCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24pOwor
ICAgICAgICBib29sIGZvdW5kID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyh0YXJn
ZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7CiAgICAgICAgIGZv
Y3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUoZnJhbWUpOwogICAgICAgICByZXR1cm4g
Zm91bmQ7CiAgICAgfQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgUGFnZTo6ZmluZFN0cmluZ01h
dGNoaW5nUmFuZ2VzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBp
CiAgICAgRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7CiAgICAgRnJhbWUqIGZyYW1lV2l0aFNl
bGVjdGlvbiA9IDA7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0
Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoUmFu
Z2VzLT5zaXplKCkpIDogMCwgdHJ1ZSwgbWF0Y2hSYW5nZXMpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxp
bWl0IC0gbWF0Y2hSYW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CiAgICAg
ICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkKICAgICAgICAgICAgIGZyYW1l
V2l0aFNlbGVjdGlvbiA9IGZyYW1lOwogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCB0cnVlLCBmYWxzZSk7CkBAIC02MjcsNyArNjI3LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4g
UGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgUmFuZ2UqIHJlZmVyZW5j
ZVJhbmcKICAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVuY2VSYW5nZSA/IHJlZmVyZW5jZVJhbmdl
LT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkgOiBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3Rh
cnRGcmFtZSA9IGZyYW1lOwogICAgIGRvIHsKLSAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmVz
dWx0UmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9
PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQp
KQorICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3Io
KS5yYW5nZU9mU3RyaW5nKHRhcmdldCwgZnJhbWUgPT0gc3RhcnRGcmFtZSA/IHJlZmVyZW5jZVJh
bmdlIDogMCwgb3B0aW9ucyAmIH5XcmFwQXJvdW5kKSkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHRSYW5nZS5yZWxlYXNlKCk7CiAKICAgICAgICAgZnJhbWUgPSBpbmNyZW1lbnRGcmFtZShmcmFt
ZSwgIShvcHRpb25zICYgQmFja3dhcmRzKSwgc2hvdWxkV3JhcCk7CkBAIC02MzYsNyArNjM2LDcg
QEAgUGFzc1JlZlB0cjxSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRh
cmdldCwgUmFuZ2UqIHJlZmVyZW5jZVJhbmcKICAgICAvLyBTZWFyY2ggY29udGVudHMgb2Ygc3Rh
cnRGcmFtZSwgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHJlZmVyZW5jZSByYW5nZSB0aGF0IHdl
IGRpZCBlYXJsaWVyLgogICAgIC8vIFdlIGNoZWF0IGEgYml0IGFuZCBqdXN0IHNlYXJjaCBhZ2Fp
biB3aXRoIHdyYXAgb24uCiAgICAgaWYgKHNob3VsZFdyYXAgJiYgcmVmZXJlbmNlUmFuZ2UpIHsK
LSAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBzdGFydEZyYW1lLT5lZGl0
b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3Jh
cEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24pKQorICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBy
ZWZlcmVuY2VSYW5nZSwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHRSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC02
NTcsOCArNjU3LDggQEAgdW5zaWduZWQgaW50IFBhZ2U6Om1hcmtBbGxNYXRjaGVzRm9yVGV4dChj
b25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW8KIAogICAgIEZyYW1lKiBmcmFt
ZSA9IG1haW5GcmFtZSgpOwogICAgIGRvIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRN
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHNob3VsZEhpZ2hsaWdodCk7Ci0gICAgICAg
IG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLT5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwg
MCwgb3B0aW9ucywgbGltaXQgPyAobGltaXQgLSBtYXRjaGVzKSA6IDAsIHRydWUsIDApOworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChz
aG91bGRIaWdobGlnaHQpOworICAgICAgICBtYXRjaGVzICs9IGZyYW1lLT5lZGl0b3IoKS5jb3Vu
dE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAobGltaXQgLSBtYXRj
aGVzKSA6IDAsIHRydWUsIDApOwogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1l
LCB0cnVlLCBmYWxzZSk7CiAgICAgfSB3aGlsZSAoZnJhbWUpOwogCkBAIC03ODgsNyArNzg4LDcg
QEAgdm9pZCBQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKICNl
bmRpZgogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGV2aWNlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIAogICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNG
b3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RHJhZ0RhdGFNYWMubW0KaW5kZXggMjdmMWVkODRhYjg4N2U3MTNiMTIyYTY4YzIwMDE2ODFkYjRk
NjY4ZC4uOTRmODY1YTRhNDk2YWY5YzI0MGI2ZGIyNGIwYWIyODViMDFiOWJkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3IEBA
IFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIE5TU3RyaW5nICpzY2hlbWUgPSBbVVJM
RnJvbVBhc3RlYm9hcmQgc2NoZW1lXTsKICAgICAgICAgLy8gQ2Fubm90IGRyb3Agb3RoZXIgc2No
ZW1lcyB1bmxlc3MgPHJkYXI6Ly9wcm9ibGVtLzEwNTYyNjYyPiBhbmQgPHJkYXI6Ly9wcm9ibGVt
LzExMTg3MzE1PiBhcmUgZml4ZWQuCiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmlu
ZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAg
ICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChV
UkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtm
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2Fy
ZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5n
IERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9u
IGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hvdWxkbid0IGFsbG93IGFy
Yml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxsb3cgb25s
eSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9jYWw/CiAgICAgICAgIGlm
IChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0
cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmdd
OworICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNh
bGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSkpKSB7
CkBAIC0xODIsNyArMTgyLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUs
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAgICAg
IEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVj
dG9yeV0gJiYgaXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxp
emVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsK
KyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxp
emVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KaW5kZXggYjMxNzQ3MzRjNmQ3N2YxMmM0NzMwOTBjN2E2MTdjOTVmNjBi
YWQ4Mi4uMTI5YTRkOWI5NTcwNjEyZjlkYTNiZDczOTE5YzBmMTRlNTJiMTMwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEzOSw3ICsxMzks
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0
cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7Ci0g
ICAgU3RyaW5nIHRleHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQg
PT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgp
OworICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCk7CiAgICAgdGV4dC5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKICAgICByZXR1cm4gdGV4
dDsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZwogICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFJhbmdlKCk7CiAgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSByYW5nZS0+Y29tbW9u
QW5jZXN0b3JDb250YWluZXIoSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgQVNTRVJUKGNvbW1vbkFu
Y2VzdG9yKTsKICAgICBOb2RlKiBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdOb2RlV2l0aFRh
ZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgSFRNTE5hbWVzOjphVGFnKTsK
QEAgLTE4MCw3ICsxODAsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6
Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZwogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIGF0dHJpYnV0ZWRT
dHJpbmcgPSBuaWw7Ci0gICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9
IGFkb3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChm
cmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS5nZXQoKSldKTsKKyAgICBSZXRhaW5QdHI8
V2ViSFRNTENvbnZlcnRlcj4gY29udmVydGVyID0gYWRvcHROUyhbW1dlYkhUTUxDb252ZXJ0ZXIg
YWxsb2NdIGluaXRXaXRoRE9NUmFuZ2U6a2l0KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdl
KCkuZ2V0KCkpXSk7CiAgICAgaWYgKGNvbnZlcnRlcikKICAgICAgICAgYXR0cmlidXRlZFN0cmlu
ZyA9IFtjb252ZXJ0ZXIuZ2V0KCkgYXR0cmlidXRlZFN0cmluZ107CiAgICAgCkBAIC0xODgsMTEg
KzE4OCwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYgogCiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0
YTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRU
eXBlcywgY2xpZW50RGF0YSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5nZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCku
Z2V0KCksIGNsaWVudFR5cGVzLCBjbGllbnREYXRhKTsKICAgICB0eXBlcy5hcHBlbmRWZWN0b3Io
Y2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgZnJhbWUtPmVk
aXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3Rl
Ym9hcmQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xpZW50VHlwZXMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjbGllbnREYXRhW2ldLCBjbGllbnRUeXBlc1tpXSwgbV9wYXN0
ZWJvYXJkTmFtZSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVVUkxGb3JU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2EK
ICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIAogICAgIE5TVVJMICpjb2NvYVVSTCA9
IHVybDsKLSAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkt
PmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhjb2NvYVVSTCk7CisgICAgTlNTdHJpbmcgKnVz
ZXJWaXNpYmxlU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT51c2VyVmlzaWJsZVN0
cmluZyhjb2NvYVVSTCk7CiAgICAgCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nKil0
aXRsZVN0cjsKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0gPT0gMCkgewpAQCAtMzgwLDcgKzM4MCw3
IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW1lKQogICAgICAgICAv
LyBGSVhNRTogdXNpbmcgdGhlIGVkaXRvckNsaWVudCB0byBjYWxsIGludG8gd2Via2l0LCBmb3Ig
bm93LCBzaW5jZSAKICAgICAgICAgLy8gY2FsbGluZyBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIGZy
b20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRpbmcgYSBzaXphYmxlIHdlYiBvZiAKICAgICAgICAg
Ly8gaGVscGVyIGNvZGUgdGhhdCBzaG91bGQgZWl0aGVyIGJlIGRvbmUgaW4gYSBzZXBhcmF0ZSBw
YXRjaCBvciBmaWd1cmVkIG91dCBpbiBhbm90aGVyIHdheS4KLSAgICAgICAgc3RyaW5nID0gZnJh
bWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhT
dHJpbmc6c3RyaW5nXSk7CisgICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQo
KS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAgICAg
ICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPiAwKQogICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmcg
cHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CiAgICAgfQpAQCAtNDM1LDcg
KzQzNSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRXaXRoUlRGKEZyYW1lKiBmcmFtZSwgTlNTdHJpCiAgICAgICAgIGZyYW1lLT5wYWdlKCkt
PnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gPiByZXNvdXJjZXM7Ci0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1
dGVkU3RyaW5nKHN0cmluZywgcmVzb3VyY2VzKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRG
cm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7CiAKICAgICBzaXplX3Qgc2l6
ZSA9IHJlc291cmNlcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKQEAgLTUxMyw3ICs1MTMsNyBA
QCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21l
bnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhdGhzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAvLyBOb24taW1hZ2UgZmlsZSB0eXBl
czsgX3dlYl91c2VyVmlzaWJsZVN0cmluZyBpcyBhcHByb3ByaWF0ZSBoZXJlIGJlY2F1c2UgdGhp
cyB3aWxsCiAgICAgICAgICAgICAvLyBiZSBwYXN0ZWQgYXMgdmlzaWJsZSB0ZXh0LgotICAgICAg
ICAgICAgTlNTdHJpbmcgKnVybCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aHNbaV1dKTsKKyAgICAgICAgICAg
IE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3Ry
aW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aHNbaV1dKTsKICAgICAgICAgICAgIFJlZlB0
cjxOb2RlPiB0ZXh0Tm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh1cmwp
OwogICAgICAgICAgICAgcmVmTm9kZXNWZWN0b3IuYXBwZW5kKHRleHROb2RlLmdldCgpKTsKICAg
ICAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNjUyYjE4YmRjZWVlNjRkNjM3
OTcyY2YxMjMzMTRmOGM3MjQ1YmI5OS4uNzQxMDllMWY3YWUzMTdkN2YxZWJmZjUwMmZkNDkyZTFm
NTU0Y2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApA
QCAtNjQwLDcgKzY0MCw3IEBAIFZlY3RvcjxTdHJpbmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlv
bkFsdGVybmF0aXZlcygpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5kaWN0YXRpb25B
bHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LmRpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOwogfQogCiBOb2RlKiBIaXRU
ZXN0UmVzdWx0Ojp0YXJnZXROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAppbmRleCBmMjZjMTlkNzFlNWM4MzE1ZDllMThkNWIzMjkxNTZhMmRl
ZmJjN2MyLi43MDI2OTk2Y2MyMWE4OWFjZDdkNWUzNGNkOTdkYzkzOTc1ZjQ4NzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01NDgsOCArNTQ4LDgg
QEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90
YXRpb24oYm94UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBv
ciBub3Qgd2UgaGF2ZSBjb21wb3NpdGlvbiB1bmRlcmxpbmVzIHRvIGRyYXcuCi0gICAgYm9vbCBj
b250YWluc0NvbXBvc2l0aW9uID0gcmVuZGVyZXIoKS0+bm9kZSgpICYmIHJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJlcigpLT5ub2RlKCk7
Ci0gICAgYm9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21wb3NpdGlvbiAmJiBy
ZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Vc2VzQ3VzdG9tVW5kZXJs
aW5lcygpOworICAgIGJvb2wgY29udGFpbnNDb21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUo
KSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbk5vZGUoKSA9PSBy
ZW5kZXJlcigpLT5ub2RlKCk7CisgICAgYm9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFp
bnNDb21wb3NpdGlvbiAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlv
blVzZXNDdXN0b21VbmRlcmxpbmVzKCk7CiAKICAgICAvLyBEZXRlcm1pbmUgdGhlIHRleHQgY29s
b3JzIGFuZCBzZWxlY3Rpb24gY29sb3JzLgogICAgIENvbG9yIHRleHRGaWxsQ29sb3I7CkBAIC02
NTcsOCArNjU3LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgICAgIGlmIChjb250
YWluc0NvbXBvc2l0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzKQogICAgICAgICAgICAgcGFp
bnRDb21wb3NpdGlvbkJhY2tncm91bmQoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBm
b250LAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jb21w
b3NpdGlvblN0YXJ0KCksCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRp
dG9yKCktPmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmNvbXBvc2l0aW9uU3RhcnQoKSwKKyAgICAgICAgICAgICAgICByZW5k
ZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbkVuZCgpKTsKIAogICAgICAgICBw
YWludERvY3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZvbnQs
IHRydWUpOwogCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAg
ICAgICBwYWludERvY3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2Us
IGZvbnQsIGZhbHNlKTsKIAogICAgICAgICBpZiAodXNlQ3VzdG9tVW5kZXJsaW5lcykgewotICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyA9
IHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jdXN0b21Db21wb3NpdGlvblVuZGVybGlu
ZXMoKTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVu
ZGVybGluZXMgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jdXN0b21Db21wb3NpdGlv
blVuZGVybGluZXMoKTsKICAgICAgICAgICAgIHNpemVfdCBudW1VbmRlcmxpbmVzID0gdW5kZXJs
aW5lcy5zaXplKCk7CiAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBudW1VbmRlcmxpbmVzOyArK2luZGV4KSB7CkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNv
bnN0IEZsb2F0UG9pbnQmCiAgICAgdG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNl
dFJlbmRlcmVkUmVjdChtYXJrZXJSZWN0KTsKICAgICAKICAgICAvLyBPcHRpb25hbGx5IGhpZ2hs
aWdodCB0aGUgdGV4dAotICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+bWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CisgICAgaWYgKHJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAg
ICAgICBDb2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZlTWF0Y2goKSA/CiAgICAgICAgICAgICBy
ZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xv
cigpIDoKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVU
ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGRmYjRlYjE1MGJkNTIwZTJkMDM2NTU4YTYwZmZhMDA3MzFjYjIxNGUu
LmQ3MDk2MTY1NmNmN2YyYTBmMmViYzlhYzc4MDc4ZTFhZGRhMzE4MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTI4Niw3ICs1Mjg2LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KGNvbnN0IExheW91dFBvaW4KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgbW92ZUNhcmV0
VG9Cb3VuZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5iZWhhdmlvcigpLnNo
b3VsZE1vdmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJvdHRvbSgpOwor
ICAgIGJvb2wgbW92ZUNhcmV0VG9Cb3VuZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLmJlaGF2aW9yKCkuc2hvdWxkTW92ZUNhcmV0VG9Ib3Jpem9udGFsQm91bmRhcnlXaGVuUGFz
dFRvcE9yQm90dG9tKCk7CiAKICAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nl
c3RCb3ggJiYgbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8geSBjb29yZGlu
YXRlIGlzIGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxN2VhMTU1MjM4MjM2ZjJmYzFiYmJlOTE0
Y2MwNTQ1M2Y5NGNhNGFlLi5lOTQ1ZWYzNDY0MDNmMTczOWU2MjFlMjk3ZTU0YzY1NWRlNjYwZjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzYsMTAgKzIzNiwxMCBA
QCBzdGF0aWMgYm9vbCBtYXJrZXJUeXBlc0Zyb20oY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZQogCiBzdGF0aWMgU3BlbGxDaGVja2VyKiBzcGVsbGNo
ZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3Vt
ZW50LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c3BlbGxDaGVja2VyKCk7CisgICAg
cmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zcGVsbENoZWNrZXIoKTsKIH0KIAog
Y29uc3QgY2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5hbHMiOwpAQCAtMjg0
LDEwICsyODQsMTAgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFn
ZSogcGFnZSkKICAgICBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRDYXB0
aW9uc1N0eWxlU2hlZXRPdmVycmlkZShlbXB0eVN0cmluZygpKTsKICAgICBwYWdlLT5ncm91cCgp
LmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRUZXN0aW5nTW9kZShmYWxzZSk7CiAjZW5kaWYKLSAg
ICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT50b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+
ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZy
YW1lKCktPmVkaXRvcigpLT50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGlmICgh
cGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVDb250aW51
b3VzU3BlbGxDaGVja2luZygpOworICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCku
aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpKQorICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRp
dG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIH0KIAogSW50ZXJuYWxzOjpJbnRl
cm5hbHMoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgYm9vbCBJbnRl
cm5hbHM6Omhhc1NwZWxsaW5nTWFya2VyKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGlu
dCBsZW5ndGgsIEV4Y2UKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRv
cigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcs
IGZyb20sIGxlbmd0aCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20s
IGxlbmd0aCk7CiB9CiAgICAgCiBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtl
cihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2Rl
JikKQEAgLTE0MzQsNyArMTQzNCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVk
TWFya2VyKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IAotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0
SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgp
OworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRI
YXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIGZyb20sIGxlbmd0aCk7
CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJikKQEAgLTE0NDIsOCArMTQ0Miw4IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJikKICAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpIHx8ICFjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVuYWJsZWQg
IT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCktPnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgaWYgKGVuYWJs
ZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogfQogCiB2b2lkIElu
dGVybmFsczo6c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNDUyLDggKzE0NTIsOCBAQCB2b2lkIEludGVybmFsczo6
c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFD
RU1FTlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisg
ICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7
CiAjZW5kaWYKQEAgLTE0NjUsOCArMTQ2NSw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAg
aWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAg
IGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0F1
dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtMTQ3OCw4ICsxNDc4LDgg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKGJv
b2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFV
VE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRv
Z2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0OTEsOCArMTQ5MSw4IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9S
RVBMQUNFTUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAgICAg
ICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5m
cmFtZSgpLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAg
ICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAj
ZW5kaWYKQEAgLTE1MDQsOCArMTUwNCw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBp
ZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1l
bnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS5pc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgY29u
dGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
QEAgLTE1MTYsNyArMTUxNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc092ZXJ3cml0ZU1vZGVFbmFi
bGVkKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCiAgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwor
ICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNPdmVyd3JpdGVNb2RlRW5h
YmxlZCgpOwogfQogCiB2b2lkIEludGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQo
RG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJikKQEAgLTE1MjQsNyArMTUyNCw3IEBA
IHZvaWQgSW50ZXJuYWxzOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1bWVudCogZG9j
dW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5m
cmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9y
KCktPnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgZG9jdW1lbnQtPmZyYW1lKCkt
PmVkaXRvcigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXAK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25T
dGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsK
KyAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBmcm9tLCBsZW5ndGgpOwogfQogCiB1
bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mU2Nyb2xsYWJsZUFyZWFzKERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAK
aW5kZXggYmVlZDIwN2JlNjQ3ZGI4ZmZkZTI4MzM2YmRiMzA1MjEyNTlmY2VjMi4uZDUxNTJlMDEw
MjkyNWE0YzEzZTBjNTIxN2Q4MjM3MjhlMThmMTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRC
bGFja0JlcnJ5LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6c2hvdWxkU3BlbGxDaGVja0ZvY3VzZWRGaWVsZCgpCiAgICAgfQogCiAgICAgLy8gQ2hl
Y2sgaWYgdGhlIG5vZGUgZGlzYWJsZXMgc3BlbGwgY2hlY2tpbmcgZGlyZWN0bHkuCi0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZv
Y3VzZWROb2RlKCk7CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQpAQCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsK
IAogICAgIC8vIENoZWNrIHRvIHNlZSB3ZSBhcmUgbm90IHRyeWluZyB0byBpbnNlcnQgdGV4dCBv
biBrZXkgZG93bi4KLSAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5r
ZXlkb3duRXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5pc1Rl
eHRJbnNlcnRpb24oKSkpOworICAgIEFTU0VSVCghKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCAmJiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSku
aXNUZXh0SW5zZXJ0aW9uKCkpKTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIEhvdCBrZXkgaGFuZGxpbmcuIENhbmNlbCBwcm9jZXNzaW5nIG1vZGUuCiAg
ICAgICAgIGlmIChjb21tYW5kTmFtZSAhPSAiRGVsZXRlQmFja3dhcmQiKQogICAgICAgICAgICAg
bV93ZWJQYWdlUHJpdmF0ZS0+bV9pbnB1dEhhbmRsZXItPnNldFByb2Nlc3NpbmdDaGFuZ2UoZmFs
c2UpOwogCi0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUp
LmV4ZWN1dGUoKSkKKyAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRO
YW1lKS5leGVjdXRlKCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5F
ZGl0KCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBUZXh0IGluc2VydGlvbiBjb21tYW5kcyBzaG91bGQgb25seSBiZSB0cmln
Z2VyZWQgZnJvbSBrZXlwcmVzc0V2ZW50LgpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFwbGF0Zm9ybUV2ZW50LT50ZXh0KCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZv
cm1FdmVudC0+dGV4dCgpLCBldmVudCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5z
ZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5kZXggYmU5NjQ4MTkw
Mzk0YWUxNWY0YWM2MTY5MjQ0ZWJiNTc5NTc1NjY5MC4uNDA0MjFjMzI5ZmFkNDhhMGM2OTA4ZmJi
ZjJlZjU5ZTYxNzBmMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBBdHRyaWJ1
dGVTdGF0ZSBlbGVtZW50QXR0cmlidXRlU3RhdGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZQogCiBib29sIGVsZW1lbnRIYXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBlbGVtZW50KQogewot
ICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0Nv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogfQogCiAvLyBDaGVjayBpZiB0aGlzIGlz
IGFuIGlucHV0IGZpZWxkIHRoYXQgd2lsbCBiZSBmb2N1c2VkICYgcmVxdWlyZSBpbnB1dCBzdXBw
b3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5QYWdlU2VhcmNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcAppbmRleCBhMzM4MGIzZTMzYzgwZDc2NmIy
MTk0Yzc2MzAxYmFjNzk2N2ZiNGU3Li40MDkxZGFlNmZjNjkyYWQwMDM0MzRiMzAyM2M1MDdkMDU3
MTMzZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBA
IGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6c2hvdWxkU2VhcmNoRm9yVGV4dChjb25zdCBTdHJp
bmcmIHRleHQpCiAKIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1hcmtUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRP
cHRpb25zJiBvcHRpb25zLCBib29sIGlzTmV3U2VhcmNoLCBib29sIHN0YXJ0RnJvbVNlbGVjdGlv
bikKIHsKLSAgICBpZiAoUmVmUHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZ0FuZFNjcm9sbFRvVmlzaWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKKyAgICBp
ZiAoUmVmUHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nQW5kU2Ny
b2xsVG9WaXNpYmxlKHRleHQsIHJhbmdlLCBvcHRpb25zKSkgewogICAgICAgICAvLyBNb3ZlIHRo
ZSBoaWdobGlnaHQgdG8gdGhlIG5ldyBtYXRjaC4KICAgICAgICAgc2V0QWN0aXZlTWF0Y2hBbmRN
YXJrZXIobWF0Y2gpOwogICAgICAgICBpZiAoaXNOZXdTZWFyY2gpIHsKQEAgLTE5MCw3ICsxOTAs
NyBAQCBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
c2NvcGVTdHJpbmdNYXRjaGVzIGRvZXMgbm90IGFkZCBhbnkgbWFya2VycywgaXQgb25seSBjb3Vu
dHMgdGhlIG51bWJlci4KICAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVubWFya0FsbFRl
eHRNYXRjaGVzLCBpdCBpcyBhbHJlYWR5IGRvbmUgZnJvbSB0aGUgY2FsbGVyIGJlY2F1c2Ugb2Yg
bmV3U2VhcmNoCiAgICAgICAgICAgICAgICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgp
LT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2ZU1hdGNoLmdldCgpLCB0cnVl
KTsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyog
aGlnaGxpZ2h0ICovKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgYm9vbCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpm
aW5kQW5kTWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAg
ICAgICAgICAgIC8vIGFsbCBtYXRjaGVzIGJ1dCBjb3VudCB0aGVtLgogICAgICAgICAgICAgbV93
ZWJQYWdlLT5tX3BhZ2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7CiAgICAgICAgICAgICBtX2Fj
dGl2ZU1hdGNoLT5vd25lckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkVGV4dE1hdGNoTWFya2Vy
KG1fYWN0aXZlTWF0Y2guZ2V0KCksIHRydWUpOwotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICov
KTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhp
Z2hsaWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSW5QYWdlU2VhcmNoTWFuYWdlcjo6
c2NvcGVTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCByZXNldCwgYm9vCiAg
ICAgICAgICAgICBtX2FjdGl2ZU1hdGNoSW5kZXggKz0gbWF0Y2hDb3VudDsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmIChtX2hpZ2hsaWdodEFsbE1hdGNoZXMpCi0gICAgICAgICAg
ICAgICAgc2NvcGluZ0ZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAgICAgICAgICAgICAgc2NvcGluZ0Zy
YW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyog
aGlnaGxpZ2h0ICovKTsKICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2hDb3VudCArPSBtYXRjaENv
dW50OwogICAgICAgICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+dXBkYXRlRmluZFN0cmluZ1Jl
c3VsdChtX2FjdGl2ZU1hdGNoQ291bnQsIG1fYWN0aXZlTWF0Y2hJbmRleCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggMzMzZDEyNGEzYjU1ZTRkMzdiMGYyZDFmZWMyNjMz
ODdjNmMxZjJmYS4uNzA2ZjEwOWU3NGUyN2ZiOTk1YTcyNjM1OGU5NTY1NmYxMDRiNjkzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9u
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNlbGVjdGlvbkhh
bmRsZXI6OmNhbmNlbFNlbGVjdGlvbigpCiAKIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcg
U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93
ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwor
ICAgIHJldHVybiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5zZWxl
Y3RlZFRleHQoKTsKIH0KIAogV2ViQ29yZTo6SW50UmVjdCBTZWxlY3Rpb25IYW5kbGVyOjpjbGlw
cGluZ1JlY3RGb3JWaXNpYmxlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNw
cAppbmRleCBkMGNlMzhhMmZmZGE3ZmM2MzBhYzQ2Y2RjZjE1NWE4ZDMxYTBhMzBhLi42YWEyYjNl
ODViYzNmZGQ0NzNjNjhkNGI2MmQ3ZjM2NTRkZDcxNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCi0gICAgcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29t
bWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKKyAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1
ZSk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OkZpbmRP
cHRpb25zIG9wdGlvbnMpCkBAIC0zMjgsNyArMzI4LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNv
bnMKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBm
YWxzZSk7CiAKLSAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1
cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Zm9yY2VMYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKaW5kZXgg
OTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQwYmEyYjQ5Yy4uN2UzNDM3MGFkNmJiNjYw
NTEwNmMzNjlhN2I4NmE0YTVhZDQ1MzlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBA
QCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSog
Y29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21w
b3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmIChjb3JlRnJhbWUtPmVkaXRvcigpICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgRXZhc19PYmplY3QqIHdlYkZyYW1lID0gRVdLUHJpdmF0
ZTo6a2l0RnJhbWUoY29yZUZyYW1lKTsKICAgICBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9zZWxl
Y3Rpb25fY2hhbmdlZCh3ZWJGcmFtZSk7CiAKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5j
ZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCk7CisgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCk7CiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpkaWRFbmRFZGl0aW5nKCkKQEAgLTMyNCw3ICszMjQsNyBAQCBib29s
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwor
ICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50
ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2
ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRo
YXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVh
dGVkLApAQCAtMzM3LDcgKzMzNyw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBj
YW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2Fu
IHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgpAQCAtMzQ4LDcgKzM0OCw3IEBAIGJvb2wg
RWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICBpZiAoa2V5RXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlFdmVudC0+YWx0S2V5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkt
Pmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOworICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBl
dmVudCk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBm
NGQzYzBlNGYxM2VmNzhiOWZiMTExZmNjZGNjNjkwNjc2NWY3OTBkLi5jY2Y3ZTUwMmY3YmM1NTll
ZWEwZmU4NjdmOTY1ZTg0ZmUyYjcyZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNw
cApAQCAtNDgwLDcgKzQ4MCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfZWRpdGFibGVfc2V0KEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sIGVkaXRhYmxlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBzbWFydERhdGEtPmVkaXRhYmxlID0gZWRpdGFibGU7CiAgICAgaWYgKGVkaXRh
YmxlKQotICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5
bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmFw
cGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC00ODgsNyArNDg4LDcgQEAgY29uc3QgY2hhciogZXdrX2ZyYW1lX3NlbGVjdGlvbl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCAwKTsKLSAgICBXVEY6OkNTdHJpbmcgc2VsZWN0ZWRU
ZXh0ID0gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsK
KyAgICBXVEY6OkNTdHJpbmcgc2VsZWN0ZWRUZXh0ID0gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgpOwogICAgIGlmIChzZWxlY3RlZFRleHQuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChzZWxl
Y3RlZFRleHQuZGF0YSgpKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1l
X3RleHRfc2VhcmNoKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdGV4
dCwgRQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1l
LCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHRleHQsIGZhbHNl
KTsKIAotICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyhX
VEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdyYXAs
IHRydWUpOworICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5n
KFdURjo6U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgZm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3Jh
cCwgdHJ1ZSk7CiB9CiAKIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmso
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpbmcsIEVpbmFfQm9vbCBjYXNl
U2Vuc2l0aXZlLCBFaW5hX0Jvb2wgaGlnaGxpZ2h0LCB1bnNpZ25lZCBpbnQgbGltaXQpCkBAIC01
MDksOCArNTA5LDggQEAgdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmkKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHN0cmluZywgMCk7CiAKLSAgICBzbWFydERhdGEtPmZyYW1lLT5l
ZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwot
ICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+Y291bnRNYXRjaGVzRm9yVGV4
dChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSwgMCwgY2FzZVNlbnNpdGl2ZSwgbGltaXQs
IHRydWUsIDApOworICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5m
cmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dChXVEY6OlN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nKSwgMCwgY2FzZVNlbnNpdGl2ZSwgbGltaXQsIHRydWUsIDApOwogfQogCiBFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1hcmtfYWxsKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSkKQEAgLTUyNiw3ICs1MjYsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19o
aWdobGlnaHRfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRWluYV9Cb29sCiB7CiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7
Ci0gICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5z
ZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTUzNCw3ICs1MzQsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3RleHRf
bWF0Y2hlc19oaWdobGlnaHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAg
ICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZh
bHNlKTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRp
dG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAvKioKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGYzZmE4ZTFhMjIyM2I0YzkxYTc1MDQwNjdjNmZl
YTM1YTdiZGE4ZGIuLjg2Yzg2MDdmZDFiMjhjYzhkNWVhZTEwZmQ2ZTIzMTdhMzg4ZjhiM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTY2OCw3ICsxNjY4LDcgQEAgY29uc3Qg
Y2hhciogZXdrX3ZpZXdfc2VsZWN0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgMCk7Ci0g
ICAgQ1N0cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsK
KyAgICBDU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CiAgICAgaWYgKHNlbGVjdGVkU3RyaW5nLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRTdHJpbmcuZGF0YSgpKTsKQEAg
LTE2ODMsNyArMTY4Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19lZGl0b3JfY29tbWFuZF9leGVj
dXRlKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfCiAgICAgaWYgKCFjb21t
YW5kU3RyaW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcHJpdi0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29t
bWFuZChjb21tYW5kU3RyaW5nKS5leGVjdXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2YWx1ZSkp
OworICAgIHJldHVybiBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0
cmluZzo6ZnJvbVVURjgodmFsdWUpKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2NvbnRleHRf
bWVudV9mb3J3YXJkX2V2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFdmFzX0V2ZW50
X01vdXNlX0Rvd24qIGRvd25FdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDlhNTJlN2Y1MTZkYzgyNmQ2MGVl
YTMyMzQ2MjQ0ZjVjMWRiMzcxZjQuLjliNTM4YzQyYzY1MzZkZDE4Mzk1ZmMzZWZjMzA3NzMxODk4
OWQ5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcApAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpw
YWludChXZWJDb3JlOjpUaW1lcjxDaHJvbWVDbGllbnQ+KikKICAgICAvLyBzeW5jZWQgd2l0aCBj
dXJzb3IgbW92ZW1lbnQuIEZvciBpbnN0YW5jZSwgYSB0ZXh0IGZpZWxkIGNhbiBtb3ZlIHdpdGhv
dXQKICAgICAvLyB0aGUgc2VsZWN0aW9uIGNoYW5naW5nLgogICAgIEZyYW1lKiBmb2N1c2VkRnJh
bWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKKyAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCku
Y2FuRWRpdCgpKQogICAgICAgICBtX3dlYlZpZXctPnByaXYtPmltRmlsdGVyLnNldEN1cnNvclJl
Y3QoZnJhbWUtPnNlbGVjdGlvbigpLT5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCAyYTNkNGNlNzdmOWE4YjczZTYzZjFkZmQyNDQzYzM1
NjUyYmMyNTM1Li4zMjNmMmU1ZjA5MTNkODI4NWMwZWYxYzczOWM0ZTI2YzA0MDk3NDEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsCiAgICAgZ19yZXR1cm5faWZfZmFpbChuYW1lKTsKICAgICBnX3JldHVybl9pZl9m
YWlsKHZhbHVlKTsKIAotICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7
CisgICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQogCiBib29sIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBnY2hhciogbmFtZSkKQEAgLTI4NCw3ICsyODQsNyBAQCBib29sIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6aXNDb21tYW5kRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBnYwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNF
KTsKIAotICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOworICAg
IHJldHVybiBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CiB9CiAKIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBjaGFyKiB0ZXh0LCBpbnQgc3RhcnQsIGludCBsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRl
eCA1N2ZhY2FmMzExMDM5OWE1YWNiMDY0NWU3MGRjOTI5MjQ1ZTdhYTQ2Li41MDkwOTA0NzMxYzQ5
NzMwZjdjNmU5ZWIxMDVlY2E4NjUyMWRiZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBA
QCB2b2lkIEVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSogZnJh
bWUpCiAgICAgc2V0U2VsZWN0aW9uUHJpbWFyeUNsaXBib2FyZElmTmVlZGVkKG1fd2ViVmlldyk7
CiAjZW5kaWYKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uSWZT
ZWxlY3Rpb25Jc0ludmFsaWQoKSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBv
c2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5p
bUZpbHRlci5yZXNldENvbnRleHQoKTsKIH0KIApAQCAtMzk0LDcgKzM5NCw3IEBAIGJvb2wgRWRp
dG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKEZyYW1lKiBmcmFtZSwgYm9v
bCBhbGxvd1RleHRJbnNlCiB7CiAgICAgVmVjdG9yPEVkaXRvcjo6Q29tbWFuZD4gY29tbWFuZHM7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXpl
KCk7IGkrKykgewotICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChtX3BlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkgJiYgIWFsbG93VGV4dEluc2VydGlvbikK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
ICAgICB9CiAKICAgICAgICAgLy8gT25seSBhbGxvdyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcyBp
ZiB0aGUgY3VycmVudCBub2RlIGlzIGVkaXRhYmxlLgotICAgICAgICBpZiAoZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7Cisg
ICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBmcmFtZS0+ZWRp
dG9yKCkuY2FuRWRpdCgpKSkgewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2
b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICB9CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMg
dGhhdCBjYW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGhpcyBpcyBqdXN0IGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9uLCBzbyB3YWl0IHRvIGV4
ZWN1dGUgdGhlIGluc2VydGlvbgpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChwbGF0
Zm9ybUV2ZW50LT5jdHJsS2V5KCkgfHwgcGxhdGZvcm1FdmVudC0+YWx0S2V5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1F
dmVudC0+dGV4dCgpLCBldmVudCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0
KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggMzM5ODkxMWVk
ZDkwZDk5MWI5ZmEyZjIwODY0ZmI2ZDMzOWIxNjQ1YS4uOTg3N2ZjYTE5NmY2OWM0NThlYTIxNWNk
OTY5MzRkNTJlYWY5MjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZXRXZWJWaWV3KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiBib29sIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCgp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJu
IGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgIHJldHVybiBmcmFtZSAm
JiBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpOwogfQogCiBib29sIFdlYlZpZXdJbnB1dE1ldGhv
ZEZpbHRlcjo6c2VuZFNpbXBsZUtleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCwgV1RGOjpTdHJp
bmcgc2ltcGxlU3RyaW5nLCBFdmVudEZha2VkRm9yQ29tcG9zaXRpb24pCkBAIC03Niw0MiArNzYs
NDIgQEAgYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRLZXlFdmVudFdpdGhDb21w
b3NpdGlvblJlc3VsdHMoR2RrRXZlbnRLZXkqIGUKIHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmls
dGVyOjpjb25maXJtQ29tcG9zaXRpb25UZXh0KFN0cmluZyB0ZXh0KQogewogICAgIEZyYW1lKiBm
cmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0ZXh0LmlzTnVsbCgpKSB7CiAg
ICAgICAgIGNvbmZpcm1DdXJyZW50Q29tcG9zaXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihtX2NvbmZpcm1lZENv
bXBvc2l0aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKG1fY29u
ZmlybWVkQ29tcG9zaXRpb24pOwogfQogCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6
Y29uZmlybUN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5F
ZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCiB2b2lkIFdl
YlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKCkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3Np
dGlvbigpOwogfQogCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0UHJlZWRpdChT
dHJpbmcgbmV3UHJlZWRpdCwgaW50IGN1cnNvck9mZnNldCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9y
KCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRp
dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUT0RPOiBXZSBzaG91bGQgcGFyc2UgdGhl
IFBhbmdvQXR0ckxpc3QgdGhhdCB3ZSBnZXQgZnJvbSB0aGUgSU0gY29udGV4dCBoZXJlLgogICAg
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVz
LmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBuZXdQcmVlZGl0Lmxlbmd0aCgpLCBDb2xv
cigxLCAxLCAxKSwgZmFsc2UpKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9u
KG5ld1ByZWVkaXQsIHVuZGVybGluZXMsIG1fY3Vyc29yT2Zmc2V0LCBtX2N1cnNvck9mZnNldCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKG5ld1ByZWVkaXQsIHVuZGVybGlu
ZXMsIG1fY3Vyc29yT2Zmc2V0LCBtX2N1cnNvck9mZnNldCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKaW5k
ZXggMzM0NjE2NGQ4YzY1NTljYjhjOTEwMmQyYWJmYWEwOTU0YjVjODQ4OS4uMTYzZjZmMGJjNTU2
NTM2Mzg2YTJiOWE0NDU3YzdiODk4YzM1ZjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC0xMTM0LDcgKzExMzQsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfZnJhbWVfcmVwbGFjZV9zZWxlY3Rpb24oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBj
aGFyKiB0ZXh0KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKGZyYW1lKTsKICAgICBib29s
IHNlbGVjdFJlcGxhY2VtZW50ID0gZmFsc2U7CiAgICAgYm9vbCBzbWFydFJlcGxhY2UgPSB0cnVl
OwotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0
LCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBzZWxlY3RSZXBsYWNlbWVudCwgc21h
cnRSZXBsYWNlKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggMDc2NjZiZTZhZGEwMjI5NTJlNGY2OGZlMzVlYWZlNDgwODU2Njg4ZC4u
YzU4MmI2Njk2Y2RhYzBmMjBhZjdiMjlhYTg2NDc5OWM1MTBjNTg4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRp
YyBJbnRQb2ludCBnZXRMb2NhdGlvbkZvcktleWJvYXJkR2VuZXJhdGVkQ29udGV4dE1lbnUoRnJh
bWUqIGZyYW1lKQogICAgIC8vIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSBjYW4g
cmV0dXJuIDAgaGVyZSwgYnV0IGlmIHRoYXQgd2FzIHRoZSBjYXNlCiAgICAgLy8gc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkgd291bGQgaGF2ZSByZXR1
cm5lZCBmYWxzZQogICAgIC8vIGFib3ZlLCBzbyB3ZSBkbyBub3QgaGF2ZSB0byBjaGVjayBpdC4K
LSAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFu
Z2Uoc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCkuZ2V0KCkpOworICAgIEludFJl
Y3QgZmlyc3RSZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlv
bi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKICAgICByZXR1cm4gSW50UG9pbnQo
Zmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0Lm1heFkoKSk7CiB9CiAKQEAgLTkzOCw3ICs5MzgsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgogICAgIGVsc2UKICAgICAgICAgZm9jdXNDb250cm9s
bGVyLT5zZXRGb2N1c2VkRnJhbWUoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCkpOwogCi0gICAg
aWYgKGZvY3VzQ29udHJvbGxlci0+Zm9jdXNlZEZyYW1lKCktPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgaWYgKGZvY3VzQ29udHJvbGxlci0+Zm9jdXNlZEZyYW1lKCktPmVkaXRvcigpLmNhbkVk
aXQoKSkKICAgICAgICAgd2ViVmlldy0+cHJpdi0+aW1GaWx0ZXIubm90aWZ5Rm9jdXNlZEluKCk7
CiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X3BhcmVudF9jbGFz
cyktPmZvY3VzX2luX2V2ZW50KHdpZGdldCwgZXZlbnQpOwogfQpAQCAtMTE4MSwzMSArMTE4MSwz
MSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY29uc29sZV9tZXNzYWdl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbgogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3JlYWxfc2VsZWN0X2FsbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBm
cmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUo
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJvYXJkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJDdXQiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19y
ZWFsX2NvcHlfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKIH0KIAogc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVu
ZG8iKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVj
dXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3JlZG8oV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJSZWRvIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X3JlYWxfbW92ZV9jdXJzb3IgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a01vdmVtZW50
U3RlcCBzdGVwLCBnaW50IGNvdW50KQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29yIChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHdGtNb3YKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBi
b2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19yZWFsX3Nob3VsZF9hbGxvd19lZGl0aW5nX2FjdGlvbihXZWJLaXRX
ZWJWaWV3KikKQEAgLTQzODksNyArNDM4OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9o
aWdobGlnaHRfdGV4dF9tYXRjaGVzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdib29sZWFuCiAK
ICAgICBGcmFtZSAqZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICBkbyB7
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGln
aHRlZChzaG91bGRIaWdobGlnaHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2Vk
VGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChzaG91bGRIaWdobGlnaHQpOwogICAgICAgICBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dFdpdGhXcmFwKGZhbHNlKTsKICAgICB9IHdo
aWxlIChmcmFtZSk7CiB9CkBAIC00NDU5LDcgKzQ0NTksNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2Vi
X3ZpZXdfY2FuX2N1dF9jbGlwYm9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAog
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQoKSB8
fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5jYW5DdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDdXQoKTsKIH0KIAogLyoq
CkBAIC00NDc1LDcgKzQ0NzUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX2NvcHlf
Y2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ29weSgpIHx8IGZyYW1lLT5lZGl0
b3IoKS0+Y2FuREhUTUxDb3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ29weSgpOwogfQogCiAvKioKQEAgLTQ0OTEs
NyArNDQ5MSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fcGFzdGVfY2xpcGJvYXJk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkRIVE1MUGFzdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCkgfHwg
ZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKTsKIH0KIAogLyoqCkBAIC00NTQ3LDcgKzQ1
NDcsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19kZWxldGVfc2VsZWN0aW9uKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9y
bURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIC8q
KgpAQCAtNDYyOSw3ICs0NjI5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGdib29sZWFuIGZsYWcpCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChmcmFtZSk7CiAKICAgICBpZiAoZmxhZykgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkuYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIFRPRE86IElm
IHRoZSBXZWJLaXRXZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMg
ZW1wdHksIHNldCBpdCB0byBzb21ldGhpbmcuCiAgICAgICAgIC8vaWYgKCF3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NlbGVjdGVkX2RvbV9yYW5nZSh3ZWJWaWV3KSkKICAgICAgICAgLy8gICAgbWFpbkZy
YW1lLT5zZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwpAQCAtNTA5MCw3ICs1MDkwLDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X2Nhbl91bmRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7
CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuVW5k
bygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuVW5kbygpOwogfQogCiAvKioKQEAg
LTUxMjUsNyArNTEyNSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fcmVkbyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJW
aWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCktPmNhblJlZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LmNhblJlZG8oKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCA2ZDNjNmIwZmE1ZDYyMWMyODM2Y2MwYzY0ZjhmNjFhM2IyOTdmZTYwLi5hMDM1NGI0MjUw
ZjMzZTk2ODgwNGRhMmFjMTExMDZiNDllNzEwN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoTlNTdHJpbmcgKilf
c2VsZWN0ZWRTdHJpbmcKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0KCkpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc3RyaW5nRm9yUmFuZ2U6KERPTVJh
bmdlICopcmFuZ2UKQEAgLTYwMiw3ICs2MDIsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoTlNSZWN0KV9maXJz
dFJlY3RGb3JET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogewotICAgcmV0dXJuIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShjb3JlKHJhbmdlKSk7Cisg
ICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uo
Y29yZShyYW5nZSkpOwogfQogCiAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9N
UmFuZ2UgKilyYW5nZQpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNv
dXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAtIChET01SYW5nZSAq
KV9tYXJrRE9NUmFuZ2UKIHsKLSAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5jb3JlRnJhbWUtPmVk
aXRvcigpLT5tYXJrKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgcmV0dXJuIGtp
dChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5tYXJrKCkudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSk7CiB9CiAKIC8vIEdpdmVuIHByb3Bvc2VkUmFuZ2UsIHJldHVybnMgYW4gZXh0ZW5k
ZWQgcmFuZ2UgdGhhdCBpbmNsdWRlcyBhZGphY2VudCB3aGl0ZXNwYWNlIHRoYXQgc2hvdWxkCkBA
IC03NDYsNyArNzQ2LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNl
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNl
bGVjdGlvbigpLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgX3ByaXZhdGUtPmNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVu
dCgpOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmluc2VydFBhcmFncmFwaFNl
cGFyYXRvckluUXVvdGVkQ29udGVudCgpOwogfQogCiAtIChWaXNpYmxlUG9zaXRpb24pX3Zpc2li
bGVQb3NpdGlvbkZvclBvaW50OihOU1BvaW50KXBvaW50CkBAIC03NzUsNyArNzc1LDcgQEAgc3Rh
dGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lIHx8ICFzdHlsZSkKICAgICAgICAgcmV0
dXJuOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjcmVhdGUgYSBjb3B5IGhl
cmUuCi0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbXB1dGVBbmRTZXRUeXBp
bmdTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7
CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tcHV0ZUFuZFNldFR5cGluZ1N0
eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsKIH0K
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC05MjgsNyArOTI4LDcgQEAgc3RhdGljIGlu
bGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7
CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAh
ZnJhZ21lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0
b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgc2VsZWN0
UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSk7CisgICAgX3ByaXZhdGUtPmNv
cmVGcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjb3JlKGZyYWdt
ZW50KSwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSwgbWF0Y2hTdHlsZSk7CiB9CiAK
IC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dDooTlNTdHJpbmcgKil0ZXh0IHNlbGVj
dFJlcGxhY2VtZW50OihCT09MKXNlbGVjdFJlcGxhY2VtZW50IHNtYXJ0UmVwbGFjZTooQk9PTClz
bWFydFJlcGxhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KaW5kZXggMzc2ZGY5Yjg0ODQwYmYyODdjYzljMTU5YzZkMGQ0MGUzYWFl
OWQxYy4uZDYxMjBhZTkxZDdlNjA2NzY4YTU3YTk5NjY0MmY0YTc0YzA5MTJhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAg
LTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKm5ld0FycmF5QnlDb25jYXRl
bmF0aW5nQXJyYXlzKE5TQXJyYXkgKmZpcnN0LCBOU0FycmF5ICpzZQogICAgICAgICByZXR1cm47
CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFt3ZWJGcmFtZSB3ZWJWaWV3XTsKICAgICBpZiAoW3dl
YlZpZXcgbWFpbkZyYW1lXSA9PSB3ZWJGcmFtZSAmJiBbd2ViVmlldyBpc0VkaXRhYmxlXSkKLSAg
ICAgICAgY29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVs
ZW1lbnQoKTsKKyAgICAgICAgY29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOwogfQogCiAtIChCT09MKWNhblByb3ZpZGVEb2N1bWVudFNvdXJj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggOGZmNjVhYjAw
M2U3NTM0MWEyNzA1YjllODExOWQzNGIyNzU0Y2Y5ZS4uZTE2NjlkN2E4OTI0NmE1OWE2N2UwYmMz
YjI1YWQ4YjRhY2M5ZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC04NjQsNyArODY0LDcgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRp
dmVQYXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBb
c2VsZiBfZG9jdW1lbnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0
OnJhbmdlIGFsbG93UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAgICBpZiAoZnJhZ21lbnQg
JiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdl
OnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxm
IF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOworICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwg
W3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7
CiAjZWxzZQogICAgIC8vIE1haWwgaXMgaWdub3JpbmcgdGhlIGZyYW1lbnQgcGFzc2VkIHRvIHRo
ZSBkZWxlZ2F0ZSBhbmQgY3JlYXRlcyBhIG5ldyBvbmUuCiAgICAgLy8gV2Ugd2FudCB0byBhdm9p
ZCBjcmVhdGluZyB0aGUgZnJhZ21lbnQgdHdpY2UuCkBAIC04NzIsMTIgKzg3MiwxMiBAQCBzdGF0
aWMgTlNVUkwqIHVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQoTlNTdHJpbmcgKnJlbGF0aXZlUGFy
dCkKICAgICAgICAgaWYgKFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpuaWwgcmVwbGFjaW5n
RE9NUmFuZ2U6cmFuZ2UgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pIHsK
ICAgICAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3Vt
ZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxv
d1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgICAgICAgICBpZiAoZnJhZ21lbnQpCi0g
ICAgICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUo
ZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2Fy
ZF0sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNG
cmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJv
YXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CiAgICAgICAgIH0gICAgICAgIAogICAgIH0gZWxzZSB7
CiAgICAgICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50
RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1Bs
YWluVGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgICAgIGlmIChmcmFnbWVudCAmJiBbc2VsZiBf
c2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZ2l2
ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLT5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOworICAgICAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtz
ZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwog
ICAgIH0KICNlbmRpZgogICAgIFt3ZWJWaWV3IF9zZXRJbnNlcnRpb25QYXN0ZWJvYXJkOm5pbF07
CkBAIC05ODMsNyArOTgzLDcgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQ
YXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAtIChCT09MKV9zaG91bGREZWxldGVSYW5nZToo
RE9NUmFuZ2UgKilyYW5nZQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9m
cmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2hv
dWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS5zaG91bGREZWxldGVSYW5nZShjb3JlKHJhbmdlKSk7CiB9CiAKIC0g
KE5TVmlldyAqKV9oaXRWaWV3Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudApAQCAtMTc1OCwxMyAr
MTc1OCwxMyBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2
ZW50ICpldmVudCkKIC0gKEJPT0wpX2NhbkVkaXQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuY2FuRWRpdCgpOwogfQogCiAtIChCT09MKV9jYW5FZGl0UmljaGx5CiB7CiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVG
cmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgcmV0dXJu
IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKIH0KIAog
LSAoQk9PTClfY2FuQWx0ZXJDdXJyZW50U2VsZWN0aW9uCkBAIC0xODI0LDUwICsxODI0LDUwIEBA
IHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50
KQogLSAoRE9NTm9kZSAqKV9pbnNlcnRPcmRlcmVkTGlzdAogewogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0T3JkZXJlZExpc3QoKS5nZXQoKSkgOiBuaWw7CisgICAg
cmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLmluc2VydE9yZGVyZWRM
aXN0KCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luc2VydFVub3JkZXJlZExp
c3QKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBy
ZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydFVub3JkZXJl
ZExpc3QoKS5nZXQoKSkgOiBuaWw7CisgICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJh
bWUtPmVkaXRvcigpLmluc2VydFVub3JkZXJlZExpc3QoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0g
KEJPT0wpX2NhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOworICAgIHJl
dHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5JbmNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbCgpOwogfQogCiAtIChCT09MKV9jYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJl
dHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRGVjcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKIH0KIAogLSAoRE9NTm9kZSAqKV9p
bmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5l
ZGl0b3IoKS0+aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKS5nZXQoKSkgOiBuaWw7CisgICAg
cmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLmluY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5l
ZGl0b3IoKS0+aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmls
OworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKERPTU5v
ZGUgKilfaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8g
a2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRl
cmVkKCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1l
LT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgpLmdldCgpKSA6
IG5pbDsKIH0KIAogLSAodm9pZClfZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoY29yZUZyYW1l
KQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bCgpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmRlY3JlYXNlU2VsZWN0aW9uTGlzdExl
dmVsKCk7CiB9CiAKIC0gKHZvaWQpX3NldEhpZ2hsaWdodGVyOihpZDxXZWJIVE1MSGlnaGxpZ2h0
ZXI+KWhpZ2hsaWdodGVyIG9mVHlwZTooTlNTdHJpbmcqKXR5cGUKQEAgLTIzNTksNyArMjM1OSw3
IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29y
ZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yKHNlbGVjdG9y
KSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZUZv
clNlbGVjdG9yKHNlbGVjdG9yKSk7CiB9CiAKIC0gKEVkaXRvcjo6Q29tbWFuZCljb3JlQ29tbWFu
ZEJ5TmFtZTooY29uc3QgY2hhciopbmFtZQpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgc3RhdGljIFN0
cmluZyBjb21tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3RvcikKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIEVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKG5hbWUpOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQobmFtZSk7CiB9CiAKIC0gKHZvaWQpZXhlY3V0ZUNvcmVDb21tYW5kQnlTZWxlY3RvcjooU0VM
KXNlbGVjdG9yCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNl
bGVjdCkKICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07
CiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11d
KSB7CiAgICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gd3JpdGluZ0RpcmVjdGlvbiA9PSBO
U1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCI7Ci0gICAgICAgICAg
ICBbbWVudUl0ZW0gc2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKV07CisgICAgICAgICAgICBbbWVudUl0ZW0g
c2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGly
ZWN0aW9uLCBkaXJlY3Rpb24pXTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gW3NlbGYgX2Nh
bkVkaXRdOwogICAgIH0KQEAgLTI2MTAsNyArMjYxMCw3IEBAIFdFQkNPUkVfQ09NTUFORCh5YW5r
QW5kU2VsZWN0KQogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0
ZW0gY2xhc3NdXSkgewogICAgICAgICAgICAgLy8gVGFrZSBjb250cm9sIG9mIHRoZSB0aXRsZSBv
ZiB0aGUgbWVudSBpdGVtIGluc3RlYWQgb2YganVzdCBjaGVja2luZy91bmNoZWNraW5nIGl0IGJl
Y2F1c2UKICAgICAgICAgICAgIC8vIGEgY2hlY2sgd291bGQgYmUgYW1iaWd1b3VzLgotICAgICAg
ICAgICAgW21lbnVJdGVtIHNldFRpdGxlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5
bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQorICAgICAgICAgICAgW21lbnVJdGVtIHNl
dFRpdGxlOmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgInJ0bCIpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQg
dG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAg
ICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVm
dCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQpAQCAtMjY0MSwxMSArMjY0MSwxMSBA
QCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9o
YXNTZWxlY3Rpb25dOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBhc3RlOikg
fHwgYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZUFzUGxhaW5UZXh0OikpCi0gICAgICAgIHJldHVy
biBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkgfHwgZnJhbWUtPmVk
aXRvcigpLT5jYW5QYXN0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lICYmIChmcmFtZS0+ZWRp
dG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpKTsKICAg
ICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZUFzUmljaFRleHQ6KSkKLSAgICAg
ICAgcmV0dXJuIGZyYW1lICYmIChmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKQotICAg
ICAgICAgICAgfHwgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSAmJiBmcmFtZS0+c2VsZWN0
aW9uKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1l
ICYmIChmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpCisgICAgICAgICAgICB8fCAoZnJh
bWUtPmVkaXRvcigpLmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKSk7CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGVy
Zm9ybUZpbmRQYW5lbEFjdGlvbjopKQogICAgICAgICByZXR1cm4gTk87CkBAIC0zODAzLDcgKzM4
MDMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRF
dmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIF9wcml2YXRlLT5fZm9yY2VVcGRhdGVTZWN1cmVJ
bnB1dFN0YXRlID0gTk87CiAKICAgICAvLyBGSVhNRTogS2lsbCByaW5nIGhhbmRsaW5nIGlzIG1v
c3RseSBpbiBXZWJDb3JlLCBzbyB0aGlzIGNhbGwgc2hvdWxkIGFsc28gYmUgbW92ZWQgdGhlcmUu
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7
CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsK
IAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKQEAgLTQy
MzEsNyArNDIzMSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRL
ZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ4IgotICAgICAgICBh
dHRyaWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRBdHRyaWJ1dGVz
Rm9yU2VsZWN0aW9uU3RhcnQoKSA6IG5pbF07CisgICAgICAgIGF0dHJpYnV0ZXM6Y29yZUZyYW1l
ID8gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkg
OiBuaWxdOwogICAgIE5TRGF0YSAqZGF0YSA9IFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07CiAgICAgW3N0
cmluZyByZWxlYXNlXTsKICAgICByZXR1cm4gZGF0YTsKQEAgLTQzNTksNyArNDM1OSw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1l
KiBjb3JlRnJhbWUpCiB7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9m
cmFtZV0pKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEg
Y29weSBoZXJlLiBXZSB3YW50IGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiB0byB3b3JrIGRpcmVj
dGx5IHdpdGggU3R5bGVQcm9wZXJ0eVNldCBldmVudHVhbGx5LgotICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0
aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFw
cGx5U3R5bGVUb1NlbGVjdGlvbihjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwg
dW5kb0FjdGlvbik7CiAgICAgfQogfQogCkBAIC00NjYxLDcgKzQ2NjEsNyBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZy
YW1lKQogICAgIGlmIChbW3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmll
dzp3ZWJWaWV3IHNob3VsZEFwcGx5U3R5bGU6c3R5bGUgdG9FbGVtZW50c0luRE9NUmFuZ2U6cmFu
Z2VdKSB7CiAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBj
b3B5IGhlcmUuCi0gICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKGNv
cmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCBbc2VsZiBfdW5kb0FjdGlvbkZyb21D
b2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7CisgICAgICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLmFwcGx5U3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCks
IFtzZWxmIF91bmRvQWN0aW9uRnJvbUNvbG9yUGFuZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3JdKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDc0OCw3ICs0NzQ4LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkK
ICAgICBDT01NQU5EX1BST0xPR1VFCiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZygpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZygpOwogfQogCiAtICh2b2lkKXNob3dHdWVzc1BhbmVsOihpZClzZW5kZXIK
QEAgLTQ3NjgsNyArNDc2OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1
cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgfQogICAgIAogICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOworICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKICAgICBb
c3BlbGxpbmdQYW5lbCBvcmRlckZyb250OnNlbmRlcl07CiB9CiAKQEAgLTQ4MzYsNyArNDgzNiw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50
KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdyaXRpbmdEaXJlY3Rp
b24gZGlyZWN0aW9uID0gUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwotICAgIHN3aXRjaCAo
Y29yZUZyYW1lLT5lZGl0b3IoKS0+YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFy
dCgpKSB7CisgICAgc3dpdGNoIChjb3JlRnJhbWUtPmVkaXRvcigpLmJhc2VXcml0aW5nRGlyZWN0
aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSkgewogICAgICAgICBjYXNlIExlZnRUb1JpZ2h0V3JpdGlu
Z0RpcmVjdGlvbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJpZ2h0VG9MZWZ0
V3JpdGluZ0RpcmVjdGlvbjoKQEAgLTQ4NTAsNyArNDg1MCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAg
ICAgfQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQot
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJl
Y3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKGRpcmVjdGlvbik7CiB9CiAKIC0gKHZvaWQpY2hhbmdlQmFzZVdyaXRpbmdEaXJlY3Rpb246
KGlkKXNlbmRlcgpAQCAtNDg2Nyw3ICs0ODY3LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBBU1NF
UlQod3JpdGluZ0RpcmVjdGlvbiAhPSBOU1dyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKTsKIAogICAg
IGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24od3JpdGluZ0RpcmVjdGlv
biA9PSBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24od3JpdGluZ0RpcmVjdGlvbiA9PSBO
U1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlv
biA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIHN0YXRpYyBCT09MIHdyaXRp
bmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQpAQCAtNDg4OCw3ICs0ODg4LDcgQEAgc3Rh
dGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQogCiAg
ICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9M
ZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKIC0gKHZvaWQpbWFrZUJhc2VXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQ6KGlkKXNlbmRlcgpAQCAtNTAyMyw3ICs1MDIzLDcgQEAgc3RhdGljIEJP
T0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgYm9vbCBtdWx0aXBs
ZUZvbnRzID0gZmFsc2U7CiAgICAgTlNGb250ICpmb250ID0gbmlsOwogICAgIGlmIChGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewotICAgICAgICBpZiAoY29uc3QgU2lt
cGxlRm9udERhdGEqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+Zm9udEZvclNlbGVjdGlvbiht
dWx0aXBsZUZvbnRzKSkKKyAgICAgICAgaWYgKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuZm9udEZvclNlbGVjdGlvbihtdWx0aXBsZUZvbnRzKSkKICAgICAg
ICAgICAgIGZvbnQgPSBmZC0+Z2V0TlNGb250KCk7CiAgICAgfQogCkBAIC01NTYzLDcgKzU1NjMs
NyBAQCBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgaWYgKCFjb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZSgwLCAwKTsKLSAgICBOU1JhbmdlIHJlc3VsdCA9
IFt3ZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wb3Np
dGlvblJhbmdlKCkuZ2V0KCldOworICAgIE5TUmFuZ2UgcmVzdWx0ID0gW3dlYkZyYW1lIF9jb252
ZXJ0VG9OU1JhbmdlOmNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpLmdldCgp
XTsKIAogICAgIExPRyhUZXh0SW5wdXQsICJtYXJrZWRSYW5nZSAtPiAoJXUsICV1KSIsIHJlc3Vs
dC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU2MDcs
MTIgKzU2MDcsMTIgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5h
YmxlZCgpCiAtIChCT09MKWhhc01hcmtlZFRleHQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBCT09MIHJlc3VsdCA9IGNvcmVGcmFtZSAmJiBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIEJPT0wgcmVzdWx0ID0gY29y
ZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIGlm
IChyZXN1bHQpIHsKICAgICAgICAgLy8gQSBzYXZlZCBjb21tYW5kIGNhbiBjb25maXJtIGEgY29t
cG9zaXRpb24sIGJ1dCBpdCBjYW5ub3Qgc3RhcnQgYSBuZXcgb25lLgogICAgICAgICBbc2VsZiBf
ZXhlY3V0ZVNhdmVkS2V5cHJlc3NDb21tYW5kc107Ci0gICAgICAgIHJlc3VsdCA9IGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKICAgICB9CiAKICAgICBMT0coVGV4dElucHV0
LCAiaGFzTWFya2VkVGV4dCAtPiAldSIsIHJlc3VsdCk7CkBAIC01NjM0LDcgKzU2MzQsNyBAQCBz
dGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICB9CiAg
ICAgCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogc3RhdGljIHZv
aWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxD
b21wb3NpdGlvblVuZGVybGluZT4mIHJlc3VsdCkKQEAgLTU3MDIsNyArNTcwMiw3IEBAIHN0YXRp
YyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0g
TlNOb3RGb3VuZCkKICAgICAgICAgW1tzZWxmIF9mcmFtZV0gX3NlbGVjdE5TUmFuZ2U6cmVwbGFj
ZW1lbnRSYW5nZV07CiAKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbih0
ZXh0LCB1bmRlcmxpbmVzLCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxS
YW5nZSkpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5k
ZXJsaW5lcywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsK
IH0KIAogLSAodm9pZClkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0b3IKQEAgLTU3MjAs
NyArNTcyMCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAKICAgICAvLyBBcyBpbiBpbnNl
cnRUZXh0Oiwgd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGwgY29tZXMgZnJvbSBhbiBpbnB1dCBtZXRo
b2QgaWYgdGhlcmUgaXMgbWFya2VkIHRleHQuCiAgICAgUmVmUHRyPEZyYW1lPiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3Jl
RnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBib29s
IGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKTsKIAogICAgIGlmIChldmVudCAmJiBzaG91bGRTYXZlQ29tbWFuZCAmJiAh
aXNGcm9tSW5wdXRNZXRob2QpCiAgICAgICAgIGV2ZW50LT5rZXlwcmVzc0NvbW1hbmRzKCkuYXBw
ZW5kKEtleXByZXNzQ29tbWFuZChOU1N0cmluZ0Zyb21TZWxlY3RvcihzZWxlY3RvcikpKTsKQEAg
LTU3NzQsNyArNTc3NCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgUmVmUHRyPEZy
YW1lPiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIE5TU3RyaW5nICp0ZXh0
OwogICAgIE5TUmFuZ2UgcmVwbGFjZW1lbnRSYW5nZSA9IHsgTlNOb3RGb3VuZCwgMCB9OwotICAg
IGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3Io
KS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZy
YW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIFZlY3Rv
cjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnM7CiAg
ICAgaWYgKGlzQXR0cmlidXRlZFN0cmluZykgewpAQCAtNTgxMCw3ICs1ODEwLDcgQEAgc3RhdGlj
IHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3Rv
cjxDb21wb3NpdGlvblVuZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghY29y
ZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFjb3Jl
RnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQpAQCAt
NTgxOSwxNyArNTgxOSwxNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGJvb2wgZXZl
bnRIYW5kbGVkID0gZmFsc2U7CiAgICAgU3RyaW5nIGV2ZW50VGV4dCA9IHRleHQ7CiAgICAgZXZl
bnRUZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNh
bWUgdGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCi0gICAgaWYgKCFj
b3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKCFjb3JlRnJh
bWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4
dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3
ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0
aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCiAKICAgICAgICAgaWYgKCFk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBldmVu
dEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQoZXZlbnRU
ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgZXZlbnQpOworICAgICAgICAgICAg
ZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQoZXZl
bnRUZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgZXZlbnQpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNl
cnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOworICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29y
ZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2ZW50VGV4dCwgZXZlbnQpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOworICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihldmVudFRleHQpOwogICAgIH0KICAgICAKICAg
ICBpZiAocGFyYW1ldGVycykKQEAgLTU4ODQsMTUgKzU4ODQsMTUgQEAgc3RhdGljIHZvaWQgZXh0
cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3Np
dGlvblVuZGUKIAogICAgIFtzZWxmIF91cGRhdGVTZWN1cmVJbnB1dFN0YXRlXTsKIAotICAgIGlm
ICghY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVk
aXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmICghY29y
ZUZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpIHx8IGNvcmVGcmFtZS0+ZWRpdG9yKCku
aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgdW5zaWduZWQgc3RhcnQ7CiAgICAgdW5zaWduZWQgZW5kOwotICAgIGlmIChjb3JlRnJhbWUt
PmVkaXRvcigpLT5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihzdGFydCwgZW5kKSkKKyAgICBpZiAo
Y29yZUZyYW1lLT5lZGl0b3IoKS5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihzdGFydCwgZW5kKSkK
ICAgICAgICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJrZWRUZXh0
U2VsZWN0aW9uQ2hhbmdlZDpOU01ha2VSYW5nZShzdGFydCwgZW5kIC0gc3RhcnQpIGNsaWVudDpz
ZWxmXTsKICAgICBlbHNlIHsKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29t
cG9zaXRpb24oKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlv
bigpOwogICAgICAgICBbW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJdIG1hcmtl
ZFRleHRBYmFuZG9uZWQ6c2VsZl07CiAgICAgfQogfQpAQCAtNjA2MCw3ICs2MDYwLDcgQEAgc3Rh
dGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZl
Y3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+Y291bnRNYXRjaGVzRm9yVGV4
dChzdHJpbmcsIGNvcmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQsIG1hcmtN
YXRjaGVzLCAwKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNG
b3JUZXh0KHN0cmluZywgY29yZShyYW5nZSksIGNvcmVPcHRpb25zKG9wdGlvbnMpLCBsaW1pdCwg
bWFya01hdGNoZXMsIDApOwogfQogCiAtICh2b2lkKXNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQ6KEJPT0wpbmV3VmFsdWUKQEAgLTYwNjgsMTMgKzYwNjgsMTMgQEAgc3RhdGljIHZv
aWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxD
b21wb3NpdGlvblVuZGUKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQobmV3VmFsdWUpOwor
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZChuZXdWYWx1ZSk7CiB9CiAKIC0gKEJPT0wpbWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJl
dHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+bWFya2VkVGV4dE1hdGNoZXNB
cmVIaWdobGlnaHRlZCgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0
b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CiB9CiAKIC0gKHZvaWQpdW5t
YXJrQWxsVGV4dE1hdGNoZXMKQEAgLTYxMTAsNyArNjExMCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJh
Y3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRp
b25VbmRlCiAgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCiAgICAgICAgIHJldHVybiBOTzsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29y
ZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcoc3RyaW5nLCBjb3JlT3B0
aW9ucyhvcHRpb25zKSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLmZpbmRTdHJpbmcoc3RyaW5nLCBjb3JlT3B0aW9ucyhvcHRpb25zKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxZjgxZTNiN2FiNTgxMTIxNzA2
OGMzOGE4Y2UxOWFlNDU2MDRiNTcxLi44MDVjZGI5MDBlMWZjYzk5NjhmNDkzMTg4MjQ0ZTI4NzE2
ZDg3NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNDI3LDcgKzI0
MjcsNyBAQCBzdGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywgU0VMIHMpCiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICBpZiAoIWNvcmVGcmFt
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobmFt
ZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUp
LmV4ZWN1dGUodmFsdWUpOwogfQogCiAtICh2b2lkKV9zZXRDdXN0b21IVE1MVG9rZW5pemVyVGlt
ZURlbGF5Oihkb3VibGUpdGltZURlbGF5CkBAIC01MzgyLDcgKzUzODIsNyBAQCBzdGF0aWMgTlNB
cHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUgagogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNlbGYpOwogICAgIGlmICghcGFn
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4ga2l0KHBhZ2UtPm1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+cmFuZ2VGb3JQb2ludChJbnRQb2ludChbc2VsZiBjb252ZXJ0UG9pbnQ6cG9p
bnQgdG9WaWV3Om5pbF0pKS5nZXQoKSk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUo
KS0+ZWRpdG9yKCkucmFuZ2VGb3JQb2ludChJbnRQb2ludChbc2VsZiBjb252ZXJ0UG9pbnQ6cG9p
bnQgdG9WaWV3Om5pbF0pKS5nZXQoKSk7CiB9CiAKIC0gKEJPT0wpX3Nob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KERPTVJhbmdlICopY3VycmVudFJhbmdlIHRvRE9NUmFuZ2U6KERPTVJhbmdl
ICopcHJvcG9zZWRSYW5nZSBhZmZpbml0eTooTlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlY3Rpb25B
ZmZpbml0eSBzdGlsbFNlbGVjdGluZzooQk9PTClmbGFnCkBAIC01NDQzLDcgKzU0NDMsNyBAQCBz
dGF0aWMgTlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgagogICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gW3NlbGYg
X21haW5Db3JlRnJhbWVdOwogICAgICAgICBpZiAobWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBp
ZiAoZmxhZykgewotICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRp
dGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRp
dG9yKCkuYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJsZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBl
bXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAgICAgICAgICAgICBpZiAoIVtzZWxmIHNl
bGVjdGVkRE9NUmFuZ2VdKQogICAgICAgICAgICAgICAgICAgICBtYWluRnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb25Gcm9tTm9uZSgpOwpAQCAtNTczMCw3ICs1NzMwLDcgQEAgc3RhdGlj
IE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgSlNDOjpKU1ZhbHVlIGoKICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2VsZiBfc2VsZWN0
ZWRPck1haW5GcmFtZV07CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwog
ICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVNl
bGVjdGlvbldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxWaWV3ICopW1t3ZWJGcmFtZSBmcmFtZVZp
ZXddIGRvY3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9yRGVsZXRlXSk7CisgICAgICAgIGNvcmVG
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKFsoV2ViSFRNTFZp
ZXcgKilbW3dlYkZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBfY2FuU21hcnRDb3B5T3JE
ZWxldGVdKTsKIH0KICAgICAKIC0gKHZvaWQpYXBwbHlTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlCkBAIC01NzQxLDcgKzU3NDEsNyBAQCBzdGF0aWMgTlNBcHBsZUV2ZW50RGVz
Y3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUg
agogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4KICAgICBpZiAoY29yZUZyYW1l
KQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hcHBseVN0eWxlKGNvcmUoc3R5bGUpLT5j
b3B5UHJvcGVydGllcygpLmdldCgpKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBs
eVN0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpKTsKIH0KIAogQGVuZApA
QCAtNTc4OCw3ICs1Nzg4LDcgQEAgRk9SX0VBQ0hfUkVTUE9OREVSX1NFTEVDVE9SKEZPUldBUkQp
CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJh
bWVdKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0
b3IoKS0+Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAgICAgICByZXR1cm4g
Y29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCk7CiAg
ICAgCiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTU4MzIsNyArNTgzMiw3IEBAIEZPUl9FQUNIX1JF
U1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJEKQogICAgIE5vZGUqIGNvcmVTdGFydE5vZGU9IGNvcmUo
c3RhcnROb2RlKTsKICAgICBpZiAoY29yZVN0YXJ0Tm9kZS0+ZG9jdW1lbnQoKSAhPSBjb3JlRnJh
bWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5l
ZGl0b3IoKS0+c2ltcGxpZnlNYXJrdXAoY29yZVN0YXJ0Tm9kZSwgY29yZShlbmROb2RlKSk7ICAg
IAorICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLnNpbXBsaWZ5TWFya3VwKGNvcmVTdGFy
dE5vZGUsIGNvcmUoZW5kTm9kZSkpOyAgICAKIH0KIAogQGVuZApAQCAtNjU2Nyw3ICs2NTY3LDcg
QEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNl
cnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBbc2Vs
ZiBfc2VsZWN0ZWRPck1haW5GcmFtZV07CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2Vi
RnJhbWUpOwogICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOworICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHRleHQpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggYzM4NTI0ZjljMTU0YWJlMjBjMmRlYWZhN2I3
MWJiYjJiN2NkM2Y0ZC4uN2FiZTM2NzI3YjIxZjExYWJjMTQxMzg2NDBmOWZmZmQxMjUzOWFiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTMyOSwxMiArMzI5LDEyIEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKFFXZWJQYWdl
QWRhcHRlciogYWRhCiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV4ZWN1dGVDb3Jl
Q29tbWFuZEJ5TmFtZShRV2ViUGFnZUFkYXB0ZXIqIGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5h
bWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewotICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSku
ZXhlY3V0ZSh2YWx1ZSk7CisgICAgYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojppc0NvbW1hbmRFbmFibGVkKFFX
ZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgY29uc3QgUVN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1
cm4gYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gYWRhcHRl
ci0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiBRVmFyaWFudExpc3QgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNlbGVjdGVkUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyICphZGFwdGVyKQpA
QCAtMzc0LDcgKzM3NCw3IEBAIFFWYXJpYW50TGlzdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoUVdlYlBhZ2VBZGFwdGVyCiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50TGlzdCgpOwogCi0gICAgUVJlY3QgcmVzdWx0UmVj
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAg
IFFSZWN0IHJlc3VsdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFu
Z2UuZ2V0KCkpOwogICAgIHJlY3QgPDwgcmVzdWx0UmVjdC54KCkgPDwgcmVzdWx0UmVjdC55KCkg
PDwgcmVzdWx0UmVjdC53aWR0aCgpIDw8IHJlc3VsdFJlY3QuaGVpZ2h0KCk7CiAgICAgcmV0dXJu
IHJlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuY3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFmZjI5MjEzZjI3ZDQwOGQ0ZmEyMDFh
ZDEuLjgyNWFjYTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0MmYxYjkwMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0y
MDYsMTIgKzIwNiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAm
JiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVj
dGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1v
ZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0
aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJh
bWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9y
KCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwog
ICAgIH0KIAogICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpOwotICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdl
KCkpCiAgICAgICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgpOwogfQogCkBAIC0y
NDgsNyArMjQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CiAjaWZuZGVmIFFUX05PX1VO
RE9TVEFDSwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1l
ICYmICFmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCBy
ZWNyZWF0ZSB1bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZy
YW1lLT5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUg
dW5kb3MgKi8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT5yZWdpc3RlclVuZG9TdGVw
KHN0ZXApOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlv
biBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0
IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgICAgICAv
LyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVk
aWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2
ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBh
IFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQorICAgICAgICAgICAgaWYgKGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKICAgICAgICAgICAgICAg
ICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50
UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlEb3du
RXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1l
KS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAgICAgaWYgKGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRs
ZWQuCiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5NSw3ICs0OTUsNyBAQCB2
b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkg
ewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRl
eHQoKSwgZXZlbnQpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0
KGtldmVudC0+dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
NTI2LDcgKzUyNiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVudChldmVudCk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOwor
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVj
dXRlKCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4IGZhNGU0YzBmM2Vh
N2FjZDc4Njc5YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjIxYzBlNThiMzNjZTMzMWI5NzViMzQwNDk3
OGE3ZmJjMGE0NTgxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBAIFFTdHJpbmcgUVdl
YlBhZ2VBZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNl
bGVjdGlvbjo6Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmluZyBRV2ViUGFnZUFkYXB0ZXI6OnNl
bGVjdGVkSHRtbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS0+dG9IVE1M
KCk7CisgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKIH0KIAogYm9vbCBRV2Vi
UGFnZUFkYXB0ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKQEAgLTMyOSw3ICszMjksNyBA
QCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZWRpdGFibGUp
CiAKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lOwogICAgIGlm
IChlZGl0YWJsZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxl
VG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlFZGl0aW5nU3R5
bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlz
IGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAgICAgICAgLy8gZnJhbWUtPnNldFNl
bGVjdGlvbkZyb21Ob25lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDdlNmYwMGVi
YTdiY2E0ZWM3MzQ1MTFjMjRmNWUyMjRlNjUzYmEyNmMuLmY3NGJmZmI5YjljZGEyNTA5YWM5MTc4
MjMwYzFmMjFmMWZlNmQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwp
CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJh
bWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwog
ICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hT
dHJpbmcpOwogICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIiwgIisiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAppbmRleCA3MGNiNTJhOTczMjMxMjllODFiZDdkN2QwMTY2Y2U2ZjM4YzBjMDRiLi5jZTYy
YTI5Y2ZkZGYzYTVmOTcyM2YwZjdjNWIxM2IxMjkwZmU0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lOjpoYXNTcGVsbGluZ01hcmtlcigKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlz
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICAqcmVz
dWx0ID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9j
dW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgpOworICAgICpyZXN1bHQgPSBjb3Jl
RnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTAy
NiwxMSArMTAyNiwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKEJTVFIg
ZGlyZWN0aW9uKQogCiAgICAgU3RyaW5nIGRpcmVjdGlvblN0cmluZyhkaXJlY3Rpb24sIFN5c1N0
cmluZ0xlbihkaXJlY3Rpb24pKTsKICAgICBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJhdXRvIikK
LSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0
dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlm
IChkaXJlY3Rpb25TdHJpbmcgPT0gImx0ciIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRv
UmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0g
InJ0bCIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9u
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTA1Miw3ICsxMDUyLDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcoCiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBTdHJpbmcgdGV4dCA9IGNvcmVG
cmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb3JlRnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHQoKSk7CisgICAgU3RyaW5nIHRleHQgPSBjb3JlRnJhbWUtPmRpc3BsYXlT
dHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQo
KSk7CiAKICAgICAqcmVzdWx0ID0gQlN0cmluZyh0ZXh0KS5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNl
bGVjdEFsbCIpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBlNDc3NmZkZTA0M2Q1MGMxODRjY2MyZmE2
MzZhMzI5ZjZkMjIwMzQwLi5lNjI2Yjc4NGY5YmVhYTg3YWRjMDk4ZmE5ODRiZDQwZjM2NzRjYzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTgxMiwxMSArMTgxMiwxMSBAQCBib29sIFdlYlZp
ZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBTZWxlY3RB
bGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBVbmRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUo
KTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMTk2Myw3ICsxOTYzLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYgKCFrZXlFdmVudCB8fCBr
ZXlFdmVudC0+aXNTeXN0ZW1LZXkoKSkgIC8vIGRvIG5vdCB0cmVhdCB0aGlzIGFzIHRleHQgaW5w
dXQgaWYgaXQncyBhIHN5c3RlbSBrZXkgZXZlbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50
ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAogICAgIGlmIChr
ZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAg
Ly8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBk
ZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEg
RWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtMTk3OSw3ICsxOTc5LDcgQEAgYm9vbCBXZWJW
aWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAg
aWYgKGV2dC0+Y2hhckNvZGUoKSA8ICcgJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldnQtPmtleUV2ZW50KCktPnRleHQo
KSwgZXZ0KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZ0LT5rZXlF
dmVudCgpLT50ZXh0KCksIGV2dCk7CiB9CiAKIGJvb2wgV2ViVmlldzo6a2V5RG93bihXUEFSQU0g
dmlydHVhbEtleUNvZGUsIExQQVJBTSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCkBAIC0z
NDI5LDcgKzM0MjksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnVwZGF0
ZUZvY3VzZWRBbmRBY3RpdmVTdGF0ZSgpCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lKEJTVFIgbmFtZSwgQlNUUiB2YWx1ZSkKIHsK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRp
dG9yKCktPmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4ZWN1dGUodG9TdHJpbmcodmFsdWUpKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRp
dG9yKCkuY29tbWFuZCh0b1N0cmluZyhuYW1lKSkuZXhlY3V0ZSh0b1N0cmluZyh2YWx1ZSkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0zNjU2LDcgKzM2NTYsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnNlbGVjdGVkVGV4dCgKICAgICBpZiAoIWZvY3VzZWRGcmFt
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyBmcmFtZVNlbGVjdGVkVGV4
dCA9IGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBm
cmFtZVNlbGVjdGVkVGV4dCA9IGZvY3VzZWRGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7
CiAgICAgKnRleHQgPSBTeXNBbGxvY1N0cmluZ0xlbihmcmFtZVNlbGVjdGVkVGV4dC5jaGFyYWN0
ZXJzKCksIGZyYW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKTsKICAgICBpZiAoISp0ZXh0ICYmIGZy
YW1lU2VsZWN0ZWRUZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gRV9PVVRPRk1FTU9SWTsK
QEAgLTQyNjUsMTQgKzQyNjUsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpwYXN0ZUVuYWJsZWQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRlbGV0
ZUVuYWJsZWQoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7
Ci0gICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCktPmNhbkRlbGV0ZSgpOworICAgICplbmFibGVkID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNhbkRlbGV0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjplZGl0aW5nRW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICplbmFi
bGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVk
aXRvcigpLmNhbkVkaXQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDMyNCw3ICs0MzI0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KQogewogICAgIFBvc2l0aW9u
IHN0YXJ0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0
YXJ0KCk7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT5pbnNlcnRUZXh0KHRvU3RyaW5nKHRleHQpLCAwKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuaW5zZXJ0
VGV4dCh0b1N0cmluZyh0ZXh0KSwgMCk7CiAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0
aW9uKCktPnNldEJhc2Uoc3RhcnQpOwogICAgIHJldHVybiBTX09LOwogfQpAQCAtNDM2OCwyOCAr
NDM2OCwyOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmFwcGx5U3R5bGUo
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvcHkoIAogICAgICAgICAvKiBb
aW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXQoIAogICAgICAg
ICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGUoIAog
ICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOwog
ICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNvcHlVUkwoIAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdXJsKQogewotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29weVVS
TChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJM
KE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTQ0MTEsNyArNDQxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6cGFzdGVGb250KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpk
ZWxldGVfKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCktPmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIiku
ZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApAQCAtNDQ5Myw3ICs0NDkzLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjaGVja1NwZWxsaW5nKAogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogICAgIH0KICAgICAKLSAgICBjb3JlKG1fbWFpbkZyYW1lKS0+
ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOworICAgIGNvcmUobV9tYWluRnJh
bWUpLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KICAgICAKQEAgLTQ1MTIsNyArNDUxMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6c2hvd0d1ZXNzUGFuZWwoCiAgICAgICAgIG1fZWRpdGluZ0RlbGVnYXRlLT5z
aG93U3BlbGxpbmdVSShGQUxTRSk7CiAgICAgfQogICAgIAotICAgIGNvcmUobV9tYWluRnJhbWUp
LT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOworICAgIGNvcmUobV9t
YWluRnJhbWUpLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAg
bV9lZGl0aW5nRGVsZWdhdGUtPnNob3dTcGVsbGluZ1VJKFRSVUUpOwogICAgIHJldHVybiBTX09L
OwogfQpAQCAtNTMzOSw3ICs1MzM5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3Ojpsb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldygKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogewogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtNTQ1NCw3ICs1NDU0LDcgQEAgdm9pZCBXZWJWaWV3Ojpw
cmVwYXJlQ2FuZGlkYXRlV2luZG93KEZyYW1lKiB0YXJnZXRGcmFtZSwgSElNQyBoSW5wdXRDb250
ZXh0KQogICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHRlbXBSYW5nZSA9IHJhbmdlLT5j
bG9uZVJhbmdlKGVjKTsKLSAgICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmZp
cnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CisgICAgICAgIGNhcmV0ID0gdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CiAgICAg
fQogICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhjYXJl
dCk7CiAgICAgQ0FORElEQVRFRk9STSBmb3JtOwpAQCAtNTQ3Miw3ICs1NDcyLDcgQEAgdm9pZCBX
ZWJWaWV3OjpwcmVwYXJlQ2FuZGlkYXRlV2luZG93KEZyYW1lKiB0YXJnZXRGcmFtZSwgSElNQyBo
SW5wdXRDb250ZXh0KQogdm9pZCBXZWJWaWV3OjpyZXNldElNRShGcmFtZSogdGFyZ2V0RnJhbWUp
CiB7CiAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkt
PmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5j
ZWxDb21wb3NpdGlvbigpOwogCiAgICAgaWYgKEhJTUMgaElucHV0Q29udGV4dCA9IGdldElNTUNv
bnRleHQoKSkgewogICAgICAgICBJTU1EaWN0OjpkaWN0KCkubm90aWZ5SU1FKGhJbnB1dENvbnRl
eHQsIE5JX0NPTVBPU0lUSU9OU1RSLCBDUFNfQ0FOQ0VMLCAwKTsKQEAgLTU0ODcsNyArNTQ4Nyw3
IEBAIHZvaWQgV2ViVmlldzo6dXBkYXRlU2VsZWN0aW9uRm9ySU1FKCkKICAgICBpZiAoIXRhcmdl
dEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldEZyYW1lLT5lZGl0b3Io
KS0+Y2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpKQorICAgIGlmICghdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQo
KSkKICAgICAgICAgcmVzZXRJTUUodGFyZ2V0RnJhbWUpOwogfQogCkBAIC01NjQzLDcgKzU2NDMs
NyBAQCBib29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIXRhcmdldEZyYW1l
IHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIXRhcmdldEZy
YW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIHByZXBhcmVDYW5kaWRhdGVXaW5kb3codGFyZ2V0RnJhbWUsIGhJbnB1dENv
bnRleHQpOwpAQCAtNTY1Myw3ICs1NjUzLDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0
aW9uKExQQVJBTSBscGFyYW0pCiAgICAgICAgIGlmICghZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElu
cHV0Q29udGV4dCwgR0NTX1JFU1VMVFNUUiwgY29tcG9zaXRpb25TdHJpbmcpICYmIGxwYXJhbSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAg
ICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3Ry
aW5nKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmc7CiAg
ICAgICAgIGlmICghZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElucHV0Q29udGV4dCwgR0NTX0NPTVBT
VFIsIGNvbXBvc2l0aW9uU3RyaW5nKSkKQEAgLTU2NzQsNyArNTY3NCw3IEBAIGJvb2wgV2ViVmll
dzo6b25JTUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogCiAgICAgICAgIGludCBjdXJzb3JQ
b3NpdGlvbiA9IExPV09SRChJTU1EaWN0OjpkaWN0KCkuZ2V0Q29tcG9zaXRpb25TdHJpbmcoaElu
cHV0Q29udGV4dCwgR0NTX0NVUlNPUlBPUywgMCwgMCkpOwogCi0gICAgICAgIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMs
IGN1cnNvclBvc2l0aW9uLCAwKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENv
bXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwg
MCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC01Njg2LDggKzU2ODYsOCBAQCBib29s
IFdlYlZpZXc6Om9uSU1FRW5kQ29tcG9zaXRpb24oKQogICAgIC8vIElmIHRoZSBjb21wb3NpdGlv
biBoYXNuJ3QgYmVlbiBjb25maXJtZWQgeWV0LCBpdCBuZWVkcyB0byBiZSBjYW5jZWxsZWQuCiAg
ICAgLy8gVGhpcyBoYXBwZW5zIGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9t
IGlubGluZSBpbnB1dCBob2xlLgogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICh0YXJnZXRGcmFt
ZSAmJiB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKKyAgICBp
ZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkp
CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5n
KCkpOwogCiAgICAgaWYgKG1faW5JTUVDb21wb3NpdGlvbikKICAgICAgICAgbV9pbklNRUNvbXBv
c2l0aW9uLS07CkBAIC01NzEyLDE0ICs1NzEyLDE0IEBAIGJvb2wgV2ViVmlldzo6b25JTUVOb3Rp
ZnkoV1BBUkFNIHdwYXJhbSwgTFBBUkFNLCBMUkVTVUxUKikKIAogTFJFU1VMVCBXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24oRnJhbWUqIHRhcmdldEZyYW1lLCBJTUVDSEFSUE9TSVRJ
T04qIGNoYXJQb3MpCiB7Ci0gICAgaWYgKGNoYXJQb3MtPmR3Q2hhclBvcyAmJiAhdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKQorICAgIGlmIChjaGFyUG9zLT5kd0NoYXJQ
b3MgJiYgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICBJbnRSZWN0IGNhcmV0OwotICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpID8gdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCkgOiB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKKyAgICBpZiAoUmVmUHRyPFJhbmdl
PiByYW5nZSA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpID8gdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSA6IHRhcmdldEZyYW1lLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZW1wUmFuZ2UgPSByYW5nZS0+
Y2xvbmVSYW5nZShlYyk7CiAgICAgICAgIHRlbXBSYW5nZS0+c2V0U3RhcnQodGVtcFJhbmdlLT5z
dGFydENvbnRhaW5lcihlYyksIHRlbXBSYW5nZS0+c3RhcnRPZmZzZXQoZWMpICsgY2hhclBvcy0+
ZHdDaGFyUG9zLCBlYyk7Ci0gICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5m
aXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOworICAgICAgICBjYXJldCA9IHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOwogICAg
IH0KICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coY2Fy
ZXQpOwogICAgIGNoYXJQb3MtPnB0LnggPSBjYXJldC54KCk7CkBAIC01NzUyLDcgKzU3NTIsNyBA
QCBMUkVTVUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdChXUEFSQU0gcmVxdWVzdCwgTFBBUkFNIGRh
dGEpCiB7CiAgICAgTE9HKFRleHRJbnB1dCwgIm9uSU1FUmVxdWVzdCAlcyIsIGltZVJlcXVlc3RO
YW1lKHJlcXVlc3QpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYg
KCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAg
aWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKHJlcXVlc3QpIHsKQEAgLTY4ODMsMTQgKzY4
ODMsMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRDb21wb3NpdGlv
bkZvclRlc3RpbmcoCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CiAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyID0gdG9TdHJpbmcoY29tcG9zaXRpb24pOwogCiAg
ICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGlu
ZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyLmxlbmd0aCgp
LCBDb2xvcihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0
Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5n
dGgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwg
dW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTY5MDQsNyArNjkwNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
aGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKC8qIFtvdXQsIHJldHZhbF0gKi8KICAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICpyZXN1bHQgPSBmcmFtZSAmJiBm
cmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgKnJlc3VsdCA9IGZyYW1lICYm
IGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9
CkBAIC02OTE1LDE1ICs2OTE1LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBbaW5dICovIEJTVFIKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBTdHJpbmcgY29tcG9zaXRp
b25TdHIgPSB0b1N0cmluZyhjb21wb3NpdGlvbik7CiAKICAgICBpZiAoY29tcG9zaXRpb25TdHIu
aXNOdWxsKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIAotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpAQCAtNjkzNCwxMCArNjkzNCwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmNvbXBvc2l0aW9uUmFuZ2VGb3JUZXN0aW5nKC8qIFtvdXRdICov
IFVJTlQqCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgp
OworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25S
YW5nZSgpOwogCiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTY5
NzgsNyArNjk3OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Zmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VGb3JUZXN0aW5nKAogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRD
b250YWluZXIoKSk7CiAgICAgQVNTRVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAgICAgIAot
ICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFu
Z2UuZ2V0KCkpOworICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RG
b3JSYW5nZShyYW5nZS5nZXQoKSk7CiAgICAgcmVzdWx0SW50UmVjdCA9IGZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiAKICAgICByZXN1bHRSZWN0LT5sZWZ0ID0gcmVzdWx0
SW50UmVjdC54KCk7CkBAIC02OTk4LDcgKzY5OTgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OnNlbGVjdGVkUmFuZ2VGb3JUZXN0aW5nKC8qIFtvdXRdICovIFVJTlQqIGxv
YwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCk7CiAKICAg
ICBzaXplX3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBsZW5ndGhTaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNF
LmNwcAppbmRleCBjOTFlYzlmODIwMmM4OGE2YzFlMmQ4YTI5N2I2NWNiYTk0ZDJmMjkyLi42NDU4
ZGY2ZjhhNzg4NDc4OWU4MDg5ZWQ0NDExMmFlMmFmYTc1OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcApA
QCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50
ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBp
ZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUg
dG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQg
dmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQxNSw3ICs0MTUsNyBAQCBib29sIEVk
aXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICBpZiAoa2V5RXZlbnQtPmN0cmxLZXkoKSB8fCBrZXlFdmVudC0+YWx0S2V5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkt
Pmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOworICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBl
dmVudCk7CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmlu
ZGV4IDk4YTQwNGMwMmFhMWM5ODFiZWFlNDk1MjA2NjBmYjYxMzdjMmRmMTYuLjkwYTUxNDg2MGVm
OTU3ZmE5NjJiZjZjNTNiOWIwMDdmNmE4OTcyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRv
d25sb2FkVVJMKGNvbnN0IEtVUkwmKQogI2lmICFQTEFURk9STShNQUMpCiB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsK
KyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
OwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBTdHJpbmcgZW5jb2Rl
ZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKICAgICBlbmNv
ZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYzE3
M2FiYzZmYThiZGIyZjdmNTJkYWI3NWM1MTY4OTRlNjZjMjBiMi4uYThiNjJkMTViZWJiOGVkZDMx
MzNmYzQyOWRlMGU1YjVjNWY4ZDI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVHbG9iYWxTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogICAgIGlmIChzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpICYmIGZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGJvb2wgb2xkU2VsZWN0aW9uTW9k
ZSA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpOwog
ICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2Rl
KHRydWUpOwotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNl
bGVjdGlvbihmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZy
YW1lLT5lZGl0b3IoKS0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOworICAgICAgICBQ
YXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihmcmFtZS0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZyYW1lLT5lZGl0b3IoKS5jYW5T
bWFydENvcHlPckRlbGV0ZSgpLCBmcmFtZSk7CiAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9kZSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKaW5kZXggNzAxMGE4Zjc3YzFm
NWEzMTAwOWY1YWE4YjcwYzJhMjhkMzJiYjNhMi4uYzQyZWMzN2JkNjQ2MTdlZGMxZDAwMDY1ZDc3
ZTFmZmI2ZTBmZmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0
TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAg
ICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBGSVhNRTogc2VuZGluZyBzeW5jIG1lc3NhZ2UgbWlnaHQgbWFrZSBpbnB1
dCBsYWdnaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNjdm
ZGMxZjQ0NGVhZDZiYThjYTc5MTg4NGZkNTgxOWY4MjRmMGM4MS4uOTg4OWE5ZDY4MTA3NTc1MTA2
MDg5YWJmOWU3OGNiMTNhYmMwYjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRH
dGsuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVu
ZGluZ0VkaXRvckNvbW1hbmRzKEZyYW1lKiBmcmFtZSwgVmVjdG9yPFdURjo6U3RyCiB7CiAgICAg
VmVjdG9yPEVkaXRvcjo6Q29tbWFuZD4gY29tbWFuZHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQocGVuZGluZ0VkaXRv
ckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKHBlbmRpbmdFZGl0b3JDb21tYW5kcy5h
dChpKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9u
KCkgJiYgIWFsbG93VGV4dEluc2VydGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtOTUsMTQgKzk1LDE0IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB9CiAKICAgICAgICAgLy8gT25seSBh
bGxvdyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcyBpZiB0aGUgY3VycmVudCBub2RlIGlzIGVkaXRh
YmxlLgotICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVu
ZGluZ0VkaXRvckNvbW1hbmRzLCBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkpIHsKKyAgICAg
ICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JD
b21tYW5kcywgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQg
Y2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IFRoaXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBleGVjdXRl
IHRoZSBpbnNlcnRpb24KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxhdGZv
cm1FdmVudC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZl
bnQtPnRleHQoKSwgZXZlbnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChw
bGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMu
bW0KaW5kZXggMGZjYTNiOThmZmM2YmQ5ZGY1MDYzMjdhMTM5YWRiNTc0NzhmM2Y1OC4uM2MyMzBl
YmU0NGFjNGU3MzMyNmI0YzZiZDk1ODQ4MTkzY2YzYjA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6c3RvcFNwZWFraW5nKCkKIAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNl
YXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFy
Y2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFRoZVdlYihzZWFyY2hTdHJpbmcpKTsKQEAgLTg1LDcg
Kzg1LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCgp
CiAgICAgaWYgKCFzZWxlY3Rpb25GcmFtZSkKICAgICAgICAgc2VsZWN0aW9uRnJhbWUgPSBtYWlu
RnJhbWU7CiAKLSAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBzZWxlY3Rpb25GcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzZWxlY3Rpb25GcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGVkVGV4dCgpKTsKKyAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBzZWxlY3Rpb25GcmFt
ZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzZWxlY3Rpb25GcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgIAogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpp
bmRleCA4MjM1YmM2ZDg4MGYzNmZhMDU1NWEyNzUzMzBkNzZlMjdlMzU1ZmQ1Li5lMGI4YWM4MTJi
ODZhYTI2OWI1N2RlM2E3ZjZmMmEwMjZkM2JhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9y
Q2xpZW50TWFjLm1tCkBAIC0xMzYsMTIgKzEzNiwxMiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogc3RhdGljIHZvaWQgY2hhbmdl
V29yZENhc2UoV2ViUGFnZSogcGFnZSwgU0VMIHNlbGVjdG9yKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IHBhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKCJzZWxlY3RXb3JkIikuZXhlY3V0ZSgpOwogCi0gICAgTlNTdHJpbmcgKnNl
bGVjdGVkU3RyaW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgTlNTdHJpbmcgKnNlbGVjdGVkU3Ry
aW5nID0gZnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICBwYWdlLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQo
ZnJhbWUsIFtzZWxlY3RlZFN0cmluZyBwZXJmb3JtU2VsZWN0b3I6c2VsZWN0b3JdKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXgg
ZTI2MDU2ZTkyODY5Y2Q1NTlkODAzNzk1MzM1OWQ0YjI3YjY3ZjFjZi4uMWFkMWFkOWEzMGRjMGY5
ZDFkMDQ1NGRmN2JmYTUwYzE0YTVkYzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgU3RyaW5nIFdlYkZy
YW1lOjpzZWxlY3Rpb25Bc1N0cmluZygpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0KCkpOworICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogfQogCiBJbnRT
aXplIFdlYkZyYW1lOjpzaXplKCkgY29uc3QKQEAgLTcwNCwxMSArNzA0LDExIEBAIHZvaWQgV2Vi
RnJhbWU6OnNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChkaXJlY3Rpb24gPT0gImF1dG8iKQotICAgICAgICBtX2NvcmVG
cmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGly
ZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGly
ZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24g
PT0gImx0ciIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJydGwiKQotICAgICAgICBtX2Nv
cmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3Jp
dGluZ0RpcmVjdGlvbik7CisgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAjaWYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDk5NDdlZWJkNjQ3NmVjNzNiNjYwZTJjMDA4OGRjMjc3ODEyMDVlMWQuLmNiZWRm
YmU1YTA1M2VmOTdkMjY1ODlmNmU3MTcwN2Y2NzNmZTVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYwMSw4ICs2MDEsOCBAQCBFZGl0
b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAg
IHJlc3VsdC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXND
b250ZW50UmljaGx5RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgPSBm
cmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgcmVzdWx0Lmhhc0Nv
bXBvc2l0aW9uID0gZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOwotICAgIHJlc3Vs
dC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3Io
KS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKKyAgICByZXN1bHQuaGFzQ29t
cG9zaXRpb24gPSBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKKyAgICByZXN1bHQu
c2hvdWxkSWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCku
aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKFFUKQog
ICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CkBAIC02NDEsOCArNjQxLDggQEAgRWRpdG9yU3RhdGUg
V2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgICAgICByZXN1bHQuZWRpdG9yUmVjdCA9
IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0aW9uUm9vdC0+cGl4ZWxTbmFw
cGVkQm91bmRpbmdCb3goKSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIGlmIChy
ZXN1bHQuaGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3Np
dGlvblJhbmdlKCkpKSB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25T
ZWxlY3Rpb24ocmVzdWx0LmFuY2hvclBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOwor
ICAgIGlmIChyZXN1bHQuaGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigp
LmNvbXBvc2l0aW9uUmFuZ2UoKSkpIHsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmdldENvbXBv
c2l0aW9uU2VsZWN0aW9uKHJlc3VsdC5hbmNob3JQb3NpdGlvbiwgcmVzdWx0LmN1cnNvclBvc2l0
aW9uKTsKIAogICAgICAgICByZXN1bHQuY29tcG9zaXRpb25SZWN0ID0gZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhyYW5nZS0+Ym91bmRpbmdCb3goKSk7CiAgICAgfQpAQCAtNjU3LDcg
KzY1Nyw3IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICB9
CiAKICAgICBpZiAocmFuZ2UpCi0gICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZp
ZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdl
KHJhbmdlLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXco
KS0+Y29udGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFu
Z2UuZ2V0KCkpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSB0cmFuc2ZlciBpbm5l
clRleHQgd2hlbiBpdCBjaGFuZ2VzIGFuZCBkbyB0aGlzIG9uIHRoZSBVSSBzaWRlLgogICAgIGlm
IChyZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCkg
ewpAQCAtNzY4LDcgKzc2OCw3IEBAIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21tYW5k
KGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJnCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmRO
YW1lKS5leGVjdXRlKGFyZ3VtZW50KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21t
YW5kTmFtZSkuZXhlY3V0ZShhcmd1bWVudCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5n
Q29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKQEAgLTc4MCw3ICs3ODAs
NyBAQCBib29sIFdlYlBhZ2U6OmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUpCiAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1
Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmlzRWRp
dGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAKLSAgICBFZGl0b3I6OkNvbW1h
bmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CisgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5k
TmFtZSk7CiAgICAgcmV0dXJuIGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5h
YmxlZCgpOwogfQogICAgIApAQCAtMTc3OCw3ICsxNzc4LDcgQEAgdm9pZCBXZWJQYWdlOjp2YWxp
ZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmll
d0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlz
RWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZChjb21tYW5kTmFtZSk7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKICAgICAgICAgICAgIHN0YXRlID0g
Y29tbWFuZC5zdGF0ZSgpOwogICAgICAgICAgICAgaXNFbmFibGVkID0gY29tbWFuZC5pc1N1cHBv
cnRlZCgpICYmIGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgIH0KQEAgLTI1NjAsNyArMjU2
MCw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZ0KQogICAgIGlmICgha2V5RXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAo
a2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAg
IC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8g
ZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlh
IEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTI1NzMsMTQgKzI1NzMsMTQgQEAgYm9vbCBX
ZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24g
Zm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFj
dGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKICAgICBpZiAo
ZXZ0LT5jaGFyQ29kZSgpIDwgJyAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBl
dnQpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldnQtPmtleUV2ZW50
KCktPnRleHQoKSwgZXZ0KTsKIH0KICNlbmRpZgogCkBAIC0yODU5LDcgKzI4NTksNyBAQCB2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQsCiB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3Jl
U2VsZWN0aW9uKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25z
dCBTdHJpbmcmIHdvcmQpCkBAIC0yODg2LDE3ICsyODg2LDE3IEBAIHZvaWQgV2ViUGFnZTo6dW5t
YXJrQWxsQmFkR3JhbW1hcigpCiAjaWYgVVNFKEFQUEtJVCkKIHZvaWQgV2ViUGFnZTo6dXBwZXJj
YXNlV29yZCgpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLT51cHBlcmNhc2VXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmxvd2VyY2Fz
ZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkubG93ZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhcGl0
YWxpemVXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNhcGl0YWxpemVX
b3JkKCk7CiB9CiAjZW5kaWYKICAgICAKQEAgLTI5MzMsNyArMjkzMyw3IEBAIHZvaWQgV2ViUGFn
ZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogewogICAgIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQgPSB0cnVlOwogICAgIGJvb2wgc21h
cnRSZXBsYWNlID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+cmVwbGFjZVNl
bGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOwor
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQs
IHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNs
ZWFyU2VsZWN0aW9uKCkKQEAgLTM1OTYsNyArMzU5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxl
QWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKIH0KICNlbmRpZgogCkBA
IC0zNjE4LDI5ICszNjE4LDI5IEBAIHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihX
ZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgZG91YmxlIHRpbWUpCiB2b2lkIFdlYlBhZ2U6OnNl
dENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1
aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBwZW5k
KENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBDb2xv
cihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
dW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aGFz
Q29tcG9zaXRpb25Gb3JUZXN0aW5nKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUg
JiYgZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIHJldHVybiBmcmFtZSAm
JiBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpj
b25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyaW5nLmlzTnVsbCgpKQot
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOwotICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQogCiB2b2lkIFdl
YlBhZ2U6Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgbnVtV2hlZWxFdmVu
dEhhbmRsZXJzKQpAQCAtMzg1OCwxOSArMzg1OCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1
bgogCiAgICAgICAgIEVsZW1lbnQqIHNjb3BlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5y
b290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRS
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHJl
cGxhY2VtZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKKyAg
ICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9u
Q2hhbmdlKHRydWUpOwogICAgICAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxU
X0FGRklOSVRZKSk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29t
cG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRp
dG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOwogICAgIH0K
IAotICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJs
aW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBz
ZWxlY3Rpb25FbmQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3Rh
dGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21w
b3NpdGlvbigpCiB7CiAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9y
RWRpdGluZyh0aGlzKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21w
b3NpdGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRp
b24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdl
ZChlZGl0b3JTdGF0ZSgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGU0NzMxMDMwNGQ4MTY4
YmE5ODkwNzczYTJjOWNlZWViZWNhZDlkNmYuLjA5NmEwMzBkNzU0ZGJlODk5MTUzMTgzMDk2NDI4
YTM1NjRkZWQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgV2ViUGFnZTo6
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiAgICAg
aWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRp
b25TdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVu
ZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZv
aWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmlu
ZywgY29uc3QgVmVjdG9yPFdlYkNvCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5l
cywgY3Vyc29yUG9zaXRpb24sIDApOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0
aW9uKCkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9u
KCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBv
c2l0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGI3MTI1MzBl
YTZmOTllOGViMGI0MGNkYTM0ODA5ZWE5ZmNhNjAyMGYuLjc4YTc4YzFlNzQ5NmM1ZTYwMmY1NmMy
NzJlNzFlYjVkYjU0NTk2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTE2OCwxNiArMTY4LDE2IEBAIGJvb2wgV2Vi
UGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlm
IChjb21tYW5kc1tpXS5jb21tYW5kTmFtZSA9PSAiaW5zZXJ0VGV4dDoiKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7CisgICAgICAgICAg
ICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKIAotICAgICAgICAg
ICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNw
b25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgICAgICAv
LyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3du
IHRoZSBwYWdlLgotICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGZyYW1lLT5lZGl0b3Io
KS0+aW5zZXJ0VGV4dChjb21tYW5kc1tpXS50ZXh0LCBldmVudCk7CisgICAgICAgICAgICBldmVu
dFdhc0hhbmRsZWQgfD0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoY29tbWFuZHNbaV0udGV4
dCwgZXZlbnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rv
ck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxl
Y3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKICAgICAgICAgICAgIGlmIChjb21t
YW5kLmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRFeGVjdXRl
ZEJ5RWRpdG9yID0gY29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAgICAgICAgICAgICAgICBldmVu
dFdhc0hhbmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7CkBAIC0yMzMsNyArMjMzLDcg
QEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCwgYm9vbCBzYXZlQ29tbWFuZHMKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5z
ZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KICAgICAgICAgYm9vbCBoYXZlVGV4dElu
c2VydGlvbkNvbW1hbmRzID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y29tbWFuZHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5h
bWUpKS5pc1RleHRJbnNlcnRpb24oKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFt
ZSkpLmlzVGV4dEluc2VydGlvbigpKQogICAgICAgICAgICAgICAgIGhhdmVUZXh0SW5zZXJ0aW9u
Q29tbWFuZHMgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyB0
ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJp
Z2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21w
b3NpdGlvblVuZGVybGluZT4gdW4KICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RF
RkFVTFRfQUZGSU5JVFkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlv
bkVuZCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRl
cmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKICAgICBuZXdT
dGF0ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJQYWdlOjpj
b25maXJtQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0
YXRlKCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3Np
dGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+
ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNl
bENvbXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CkBAIC0y
OTksMTMgKzI5OSwxMyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbgogICAgICAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVu
dFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KIAotICAgIGlmICgh
ZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdo
dCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0
IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVz
dWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAgICAgaGFuZGxlZCA9IGZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0VGV4dCh0ZXh0LCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJl
dGVkKTsKKyAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRleHQs
IG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGhhbmRsZWQgPSB0cnVlOwotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbih0ZXh0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0
ZXh0KTsKICAgICB9CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0zMjEsOCAr
MzIxLDggQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3QKICAgICAgICAgICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5n
ZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIWZyYW1l
LT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7Ci0gICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRp
b25zLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKKyAgICBBU1NFUlQoIWZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRv
cigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9u
cywgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CiAgICAgbmV3U3RhdGUgPSBlZGl0
b3JTdGF0ZSgpOwogfQogCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJr
ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlv
blNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7CiAgICAgaWYgKHJhbmdlICYmIFRleHRJdGVy
YXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5y
b290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0
aW9uU2l6ZSwgbGVuZ3RoU2l6ZSkpIHsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBs
ZW5ndGgsIFdlYgogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CiAgICAgQVNT
RVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAgICAgIAotICAgIEludFJlY3QgcmVjdCA9IGZy
YW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIEludFJl
Y3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7
CiAgICAgcmVzdWx0UmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7
CiB9CiAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZQogICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSk7CiAgICAgcmVzdWx0ID0gdHJ1ZTsKIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZChTdHJpbmcmIHN0cmluZ1ZhbHVl
KQogICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzdHJpbmdWYWx1ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpOworICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLnN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9y
eTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKQpAQCAtNjg1LDcgKzY4NSw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBh
c3RlYm9hcmRUeXBlLCBTaGFyZWRNCiAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9u
KCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBh
c3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+
ZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIHNpemUgPSAwOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201830</attachid>
            <date>2013-05-15 07:44:18 -0700</date>
            <delta_ts>2013-05-15 08:17:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515074314.patch</filename>
            <type>text/plain</type>
            <size>262721</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggMjdmMWVk
ODRhYjg4N2U3MTNiMTIyYTY4YzIwMDE2ODFkYjRkNjY4ZC4uOTRmODY1YTRhNDk2YWY5YzI0MGI2
ZGIyNGIwYWIyODViMDFiOWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJh
bWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAg
ICAgICAgIE5TU3RyaW5nICpzY2hlbWUgPSBbVVJMRnJvbVBhc3RlYm9hcmQgc2NoZW1lXTsKICAg
ICAgICAgLy8gQ2Fubm90IGRyb3Agb3RoZXIgc2NoZW1lcyB1bmxlc3MgPHJkYXI6Ly9wcm9ibGVt
LzEwNTYyNjYyPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzExMTg3MzE1PiBhcmUgZml4ZWQuCiAgICAg
ICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1
YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3Io
KS0+Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVT
dHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNh
bm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0K
ICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkp
KSB7CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJh
bWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAg
Ly8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdh
dGlvbiwgc28gd2Ugc2hvdWxkbid0IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgd2UgYWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBh
bnl0aGluZyBub24tbG9jYWw/CiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpA
Imh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAg
ICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxG
cm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtmcmFt
ZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkg
YWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSkpKSB7CkBAIC0xODIsNyArMTgyLDcgQEAgU3RyaW5n
IERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAg
ICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYgaXNEaXJlY3RvcnkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+
ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUt
PmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYjMxNzQ3
MzRjNmQ3N2YxMmM0NzMwOTBjN2E2MTdjOTVmNjBiYWQ4Mi4uMTI5YTRkOWI5NTcwNjEyZjlkYTNi
ZDczOTE5YzBmMTRlNTJiMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFy
KCkKIAogU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUs
IFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVT
ZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7Ci0gICAgU3RyaW5nIHRleHQgPSBzaG91bGRTZXJp
YWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNs
aXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBm
cmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRG
b3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkg
OiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgdGV4dC5yZXBsYWNlKG5vQnJl
YWtTcGFjZSwgJyAnKTsKICAgICByZXR1cm4gdGV4dDsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFt
ZSogZnJhbWUsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFw
TlNEYXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCk7CiAgICAgTm9kZSog
Y29tbW9uQW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoSUdOT1JFX0VY
Q0VQVElPTik7CiAgICAgQVNTRVJUKGNvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBlbmNsb3Np
bmdBbmNob3IgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1v
bkFuY2VzdG9yKSwgSFRNTE5hbWVzOjphVGFnKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZwogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5
T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBO
U0F0dHJpYnV0ZWRTdHJpbmcqIGF0dHJpYnV0ZWRTdHJpbmcgPSBuaWw7Ci0gICAgUmV0YWluUHRy
PFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFkb3B0TlMoW1tXZWJIVE1MQ29udmVydGVy
IGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFu
Z2UoKS5nZXQoKSldKTsKKyAgICBSZXRhaW5QdHI8V2ViSFRNTENvbnZlcnRlcj4gY29udmVydGVy
ID0gYWRvcHROUyhbW1dlYkhUTUxDb252ZXJ0ZXIgYWxsb2NdIGluaXRXaXRoRE9NUmFuZ2U6a2l0
KGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpXSk7CiAgICAgaWYgKGNvbnZl
cnRlcikKICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IFtjb252ZXJ0ZXIuZ2V0KCkgYXR0cmli
dXRlZFN0cmluZ107CiAgICAgCkBAIC0xODgsMTEgKzE4OCwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgYgogCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNsaWVudFR5cGVzLCBjbGllbnRE
YXRhKTsKICAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9w
YXN0ZWJvYXJkTmFtZSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNsaWVudCgp
LT5kaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjbGllbnRE
YXRhW2ldLCBjbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0yNDEsNyArMjQx
LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2EKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkp
OwogICAgIAogICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybDsKLSAgICBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmlu
Zyhjb2NvYVVSTCk7CisgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhjb2NvYVVSTCk7CiAgICAgCiAgICAg
TlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nKil0aXRsZVN0cjsKICAgICBpZiAoW3RpdGxlIGxl
bmd0aF0gPT0gMCkgewpAQCAtMzgwLDcgKzM4MCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFp
blRleHQoRnJhbWUqIGZyYW1lKQogICAgICAgICAvLyBGSVhNRTogdXNpbmcgdGhlIGVkaXRvckNs
aWVudCB0byBjYWxsIGludG8gd2Via2l0LCBmb3Igbm93LCBzaW5jZSAKICAgICAgICAgLy8gY2Fs
bGluZyBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRp
bmcgYSBzaXphYmxlIHdlYiBvZiAKICAgICAgICAgLy8gaGVscGVyIGNvZGUgdGhhdCBzaG91bGQg
ZWl0aGVyIGJlIGRvbmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCBvciBmaWd1cmVkIG91dCBpbiBhbm90
aGVyIHdheS4KLSAgICAgICAgc3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNl
clZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CisgICAgICAgIHN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJM
IFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAgICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPiAw
KQogICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25p
Y2FsTWFwcGluZ107CiAgICAgfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRXaXRoUlRGKEZyYW1lKiBmcmFtZSwg
TlNTdHJpCiAgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiByZXNvdXJjZXM7Ci0gICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQo
KS0+ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKHN0cmluZywgcmVzb3VyY2Vz
KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcs
IHJlc291cmNlcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IHJlc291cmNlcy5zaXplKCk7CiAgICAg
aWYgKHNpemUpIHsKQEAgLTUxMyw3ICs1MTMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUAog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAvLyBOb24taW1hZ2UgZmlsZSB0eXBlczsgX3dlYl91c2VyVmlzaWJsZVN0cmluZyBp
cyBhcHByb3ByaWF0ZSBoZXJlIGJlY2F1c2UgdGhpcyB3aWxsCiAgICAgICAgICAgICAvLyBiZSBw
YXN0ZWQgYXMgdmlzaWJsZSB0ZXh0LgotICAgICAgICAgICAgTlNTdHJpbmcgKnVybCA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6cGF0aHNbaV1dKTsKKyAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRp
dG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
cGF0aHNbaV1dKTsKICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGZyYW1lLT5k
b2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh1cmwpOwogICAgICAgICAgICAgcmVmTm9kZXNWZWN0
b3IuYXBwZW5kKHRleHROb2RlLmdldCgpKTsKICAgICAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVu
ZCh0ZXh0Tm9kZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRXaW4uY3BwCmluZGV4IDg3NTE5N2ZjZDA4NDlmZGU4YWQwMjZiNGEzNWM1OGI5NjhiMTM1YmEu
LjFlZTgyZmQzOTkxOTliN2VkNWQ5NTRkM2FiOTQxZjgwYzMxMjI5MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC03NTEsNyArNzUxLDcgQEAg
dm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIEZyYW1l
KiBmcmFtZSkKICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKG1fd3JpdGFibGVEYXRh
T2JqZWN0LT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICA6
Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwogCi0gICAgU3RyaW5nIHN0ciA9IGZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CisgICAgU3RyaW5nIHN0ciA9IGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKICAgICByZXBsYWNlTmV3
bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoc3RyKTsKICAgICByZXBsYWNlTkJTUFdpdGhT
cGFjZShzdHIpOwogICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShzdHIpOwpA
QCAtNzU5LDcgKzc1OSw3IEBAIHZvaWQgQ2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKFJhbmdlKiBz
ZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJhbWUpCiAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0u
aEdsb2JhbCk7CiAKICAgICBtZWRpdW0uaEdsb2JhbCA9IDA7Ci0gICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNh
blNtYXJ0Q29weU9yRGVsZXRlKCkpCiAgICAgICAgIG1fd3JpdGFibGVEYXRhT2JqZWN0LT5TZXRE
YXRhKHNtYXJ0UGFzdGVGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2NTJiMThiZGNlZWU2NGQ2Mzc5
NzJjZjEyMzMxNGY4YzcyNDViYjk5Li43NDEwOWUxZjdhZTMxN2Q3ZjFlYmZmNTAyZmQ0OTJlMWY1
NTRjZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBA
IC02NDAsNyArNjQwLDcgQEAgVmVjdG9yPFN0cmluZz4gSGl0VGVzdFJlc3VsdDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKCkgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gVmVj
dG9yPFN0cmluZz4oKTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmRpY3RhdGlvbkFs
dGVybmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCku
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzRm9yTWFya2VyKG1hcmtlcik7CiB9CiAKIE5vZGUqIEhpdFRl
c3RSZXN1bHQ6OnRhcmdldE5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCmluZGV4IGYyNmMxOWQ3MWU1YzgzMTVkOWUxOGQ1YjMyOTE1NmEyZGVm
YmM3YzIuLjcwMjY5OTZjYzIxYTg5YWNkN2Q1ZTM0Y2Q5N2RjOTM5NzVmNDg3MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTU0OCw4ICs1NDgsOCBA
QCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShyb3Rh
dGlvbihib3hSZWN0LCBDbG9ja3dpc2UpKTsKIAogICAgIC8vIERldGVybWluZSB3aGV0aGVyIG9y
IG5vdCB3ZSBoYXZlIGNvbXBvc2l0aW9uIHVuZGVybGluZXMgdG8gZHJhdy4KLSAgICBib29sIGNv
bnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVuZGVyZXIoKS0+ZnJh
bWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uTm9kZSgpID09IHJlbmRlcmVyKCktPm5vZGUoKTsK
LSAgICBib29sIHVzZUN1c3RvbVVuZGVybGluZXMgPSBjb250YWluc0NvbXBvc2l0aW9uICYmIHJl
bmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlvblVzZXNDdXN0b21VbmRlcmxp
bmVzKCk7CisgICAgYm9vbCBjb250YWluc0NvbXBvc2l0aW9uID0gcmVuZGVyZXIoKS0+bm9kZSgp
ICYmIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLmNvbXBvc2l0aW9uTm9kZSgpID09IHJl
bmRlcmVyKCktPm5vZGUoKTsKKyAgICBib29sIHVzZUN1c3RvbVVuZGVybGluZXMgPSBjb250YWlu
c0NvbXBvc2l0aW9uICYmIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLmNvbXBvc2l0aW9u
VXNlc0N1c3RvbVVuZGVybGluZXMoKTsKIAogICAgIC8vIERldGVybWluZSB0aGUgdGV4dCBjb2xv
cnMgYW5kIHNlbGVjdGlvbiBjb2xvcnMuCiAgICAgQ29sb3IgdGV4dEZpbGxDb2xvcjsKQEAgLTY1
Nyw4ICs2NTcsOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAKICAgICAgICAgaWYgKGNvbnRh
aW5zQ29tcG9zaXRpb24gJiYgIXVzZUN1c3RvbVVuZGVybGluZXMpCiAgICAgICAgICAgICBwYWlu
dENvbXBvc2l0aW9uQmFja2dyb3VuZChjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZv
bnQsCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBv
c2l0aW9uU3RhcnQoKSwKLSAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0
b3IoKS0+Y29tcG9zaXRpb25FbmQoKSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJh
bWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25TdGFydCgpLAorICAgICAgICAgICAgICAgIHJlbmRl
cmVyKCktPmZyYW1lKCktPmVkaXRvcigpLmNvbXBvc2l0aW9uRW5kKCkpOwogCiAgICAgICAgIHBh
aW50RG9jdW1lbnRNYXJrZXJzKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwg
dHJ1ZSk7CiAKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAg
ICAgIHBhaW50RG9jdW1lbnRNYXJrZXJzKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwg
Zm9udCwgZmFsc2UpOwogCiAgICAgICAgIGlmICh1c2VDdXN0b21VbmRlcmxpbmVzKSB7Ci0gICAg
ICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzID0g
cmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmN1c3RvbUNvbXBvc2l0aW9uVW5kZXJsaW5l
cygpOworICAgICAgICAgICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5k
ZXJsaW5lcyA9IHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLmN1c3RvbUNvbXBvc2l0aW9u
VW5kZXJsaW5lcygpOwogICAgICAgICAgICAgc2l6ZV90IG51bVVuZGVybGluZXMgPSB1bmRlcmxp
bmVzLnNpemUoKTsKIAogICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG51bVVuZGVybGluZXM7ICsraW5kZXgpIHsKQEAgLTEzNTksNyArMTM1OSw3IEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29u
c3QgRmxvYXRQb2ludCYKICAgICB0b1JlbmRlcmVkRG9jdW1lbnRNYXJrZXIobWFya2VyKS0+c2V0
UmVuZGVyZWRSZWN0KG1hcmtlclJlY3QpOwogICAgIAogICAgIC8vIE9wdGlvbmFsbHkgaGlnaGxp
Z2h0IHRoZSB0ZXh0Ci0gICAgaWYgKHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5tYXJr
ZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKKyAgICBpZiAocmVuZGVyZXIoKS0+ZnJh
bWUoKS0+ZWRpdG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CiAgICAg
ICAgIENvbG9yIGNvbG9yID0gbWFya2VyLT5hY3RpdmVNYXRjaCgpID8KICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9y
KCkgOgogICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+cGxhdGZvcm1JbmFjdGl2ZVRl
eHRTZWFyY2hIaWdobGlnaHRDb2xvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggZGZiNGViMTUwYmQ1MjBlMmQwMzY1NThhNjBmZmEwMDczMWNiMjE0ZS4u
ZDcwOTYxNjU2Y2Y3ZjJhMGYyZWJjOWFjNzgwNzhlMWFkZGEzMTgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC01Mjg2LDcgKzUyODYsNyBAQCBWaXNpYmxl
UG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4o
Y29uc3QgTGF5b3V0UG9pbgogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBtb3ZlQ2FyZXRU
b0JvdW5kYXJ5ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hv
dWxkTW92ZUNhcmV0VG9Ib3Jpem9udGFsQm91bmRhcnlXaGVuUGFzdFRvcE9yQm90dG9tKCk7Cisg
ICAgYm9vbCBtb3ZlQ2FyZXRUb0JvdW5kYXJ5ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkuYmVoYXZpb3IoKS5zaG91bGRNb3ZlQ2FyZXRUb0hvcml6b250YWxCb3VuZGFyeVdoZW5QYXN0
VG9wT3JCb3R0b20oKTsKIAogICAgIGlmICghbW92ZUNhcmV0VG9Cb3VuZGFyeSAmJiAhY2xvc2Vz
dEJveCAmJiBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbikgewogICAgICAgICAvLyB5IGNvb3JkaW5h
dGUgaXMgYmVsb3cgbGFzdCByb290IGxpbmUgYm94LCBwcmV0ZW5kIHdlIGhpdCBpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE3ZWExNTUyMzgyMzZmMmZjMWJiYmU5MTRj
YzA1NDUzZjk0Y2E0YWUuLmU5NDVlZjM0NjQwM2YxNzM5ZTYyMWUyOTdlNTRjNjU1ZGU2NjBmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzNiwxMCArMjM2LDEwIEBA
IHN0YXRpYyBib29sIG1hcmtlclR5cGVzRnJvbShjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlCiAKIHN0YXRpYyBTcGVsbENoZWNrZXIqIHNwZWxsY2hl
Y2tlcihEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKSkKKyAgICBpZiAoIWRv
Y3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zcGVsbENoZWNrZXIoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNwZWxsQ2hlY2tlcigpOwogfQogCiBj
b25zdCBjaGFyKiBJbnRlcm5hbHM6OmludGVybmFsc0lkID0gImludGVybmFscyI7CkBAIC0yODQs
MTAgKzI4NCwxMCBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdl
KiBwYWdlKQogICAgIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnNldENhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKGVtcHR5U3RyaW5nKCkpOwogICAgIHBhZ2UtPmdyb3VwKCku
Y2FwdGlvblByZWZlcmVuY2VzKCktPnNldFRlc3RpbmdNb2RlKGZhbHNlKTsKICNlbmRpZgotICAg
IGlmICghcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQotICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2ds
ZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7Ci0gICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpKQotICAgICAgICBwYWdlLT5tYWluRnJh
bWUoKS0+ZWRpdG9yKCktPnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgaWYgKCFw
YWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSkKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUNvbnRpbnVv
dXNTcGVsbENoZWNraW5nKCk7CisgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS5p
c092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0
b3IoKS50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogfQogCiBJbnRlcm5hbHM6OkludGVy
bmFscyhEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBib29sIEludGVy
bmFsczo6aGFzU3BlbGxpbmdNYXJrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50
IGxlbmd0aCwgRXhjZQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9y
KCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywg
ZnJvbSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNl
bGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwg
bGVuZ3RoKTsKIH0KICAgICAKIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwdGlvbkNvZGUm
KQpAQCAtMTQzNCw3ICsxNDM0LDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc0F1dG9jb3JyZWN0ZWRN
YXJrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwKICAgICBpZiAo
IWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRI
YXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIGZyb20sIGxlbmd0aCk7
CisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhh
c01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgZnJvbSwgbGVuZ3RoKTsK
IH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChi
b29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTQ0Miw4ICsxNDQyLDggQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQs
IEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghY29udGV4dERvY3VtZW50KCkgfHwgIWNvbnRleHRE
b2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZW5hYmxlZCAh
PSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKKyAgICBpZiAoZW5hYmxl
ZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CiB9CiAKIHZvaWQgSW50
ZXJuYWxzOjpzZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJikKQEAgLTE0NTIsOCArMTQ1Miw4IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRp
b25Db2RlCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRp
dG9yKCktPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJh
bWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAg
ICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICNlbmRpZgpAQCAtMTQ2NSw4ICsxNDY1LDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBp
ZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7CisgICAg
aWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0xNDc4LDggKzE0NzgsOCBA
QCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJgogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVU
T01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRp
b25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3Io
KS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtMTQ5MSw4ICsxNDkxLDggQEAgdm9pZCBJbnRlcm5h
bHM6OnNldEF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQotICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCi0gICAgICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50KCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQorICAg
ICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNl
bmRpZgpAQCAtMTUwNCw4ICsxNTA0LDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2QKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlm
IChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVu
dCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
KCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpA
QCAtMTUxNiw3ICsxNTE2LDcgQEAgYm9vbCBJbnRlcm5hbHM6OmlzT3ZlcndyaXRlTW9kZUVuYWJs
ZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJikKICAgICBpZiAoIWRvY3VtZW50
IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
ZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pc092ZXJ3cml0ZU1vZGVFbmFi
bGVkKCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZChE
b2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQpAQCAtMTUyNCw3ICsxNTI0LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50KiBkb2N1
bWVudCwgRXhjZXB0aW9uQ29kZSYpCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZy
YW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS0+dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICBkb2N1bWVudC0+ZnJhbWUoKS0+
ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBib29sIEludGVybmFsczo6aGFzR3JhbW1h
ck1hcmtlcihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcAog
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0
YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBmcm9tLCBsZW5ndGgpOwor
ICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGZyb20sIGxlbmd0aCk7CiB9CiAKIHVu
c2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZTY3JvbGxhYmxlQXJlYXMoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcApp
bmRleCBiZWVkMjA3YmU2NDdkYjhmZmRlMjgzMzZiZGIzMDUyMTI1OWZjZWMyLi5kNTE1MmUwMTAy
OTI1YTRjMTNlMGM1MjE3ZDgyMzcyOGUxOGYxNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJs
YWNrQmVycnkuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZpZWxkKCkKICAgICB9CiAKICAgICAvLyBDaGVj
ayBpZiB0aGUgbm9kZSBkaXNhYmxlcyBzcGVsbCBjaGVja2luZyBkaXJlY3RseS4KLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9kZSgp
OworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuaXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9j
dXNlZE5vZGUoKTsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojppc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpCkBAIC00NjksMTkgKzQ2OSwxOSBAQCB2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOwog
CiAgICAgLy8gQ2hlY2sgdG8gc2VlIHdlIGFyZSBub3QgdHJ5aW5nIHRvIGluc2VydCB0ZXh0IG9u
IGtleSBkb3duLgotICAgIEFTU0VSVCghKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCAmJiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmlzVGV4
dEluc2VydGlvbigpKSk7CisgICAgQVNTRVJUKCEoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50ICYmIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5p
c1RleHRJbnNlcnRpb24oKSkpOwogCiAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gSG90IGtleSBoYW5kbGluZy4gQ2FuY2VsIHByb2Nlc3NpbmcgbW9kZS4KICAg
ICAgICAgaWYgKGNvbW1hbmROYW1lICE9ICJEZWxldGVCYWNrd2FyZCIpCiAgICAgICAgICAgICBt
X3dlYlBhZ2VQcml2YXRlLT5tX2lucHV0SGFuZGxlci0+c2V0UHJvY2Vzc2luZ0NoYW5nZShmYWxz
ZSk7CiAKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSku
ZXhlY3V0ZSgpKQorICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUpLmV4ZWN1dGUoKSkKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIHNob3VsZCBvbmx5IGJlIHRyaWdn
ZXJlZCBmcm9tIGtleXByZXNzRXZlbnQuCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXBsYXRmb3JtRXZlbnQtPnRleHQoKS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9y
bUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKKyAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5pbnNl
cnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQogICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCBiZTk2NDgxOTAz
OTRhZTE1ZjRhYzYxNjkyNDRlYmI1Nzk1NzU2NjkwLi40MDQyMWMzMjlmYWQ0OGEwYzY5MDhmYmJm
MmVmNTllNjE3MGYwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIEF0dHJpYnV0
ZVN0YXRlIGVsZW1lbnRBdHRyaWJ1dGVTdGF0ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lCiAKIGJvb2wgZWxlbWVudEhhc0NvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnQpCiB7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBlbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiB9CiAKIC8vIENoZWNrIGlmIHRoaXMgaXMg
YW4gaW5wdXQgZmllbGQgdGhhdCB3aWxsIGJlIGZvY3VzZWQgJiByZXF1aXJlIGlucHV0IHN1cHBv
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9J
blBhZ2VTZWFyY2hNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0luUGFnZVNlYXJjaE1hbmFnZXIuY3BwCmluZGV4IGEzMzgwYjNlMzNjODBkNzY2YjIx
OTRjNzYzMDFiYWM3OTY3ZmI0ZTcuLjQwOTFkYWU2ZmM2OTJhZDAwMzQzNGIzMDIzYzUwN2QwNTcx
MzNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0luUGFnZVNlYXJjaE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0luUGFnZVNlYXJjaE1hbmFnZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAg
Ym9vbCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpzaG91bGRTZWFyY2hGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIAogYm9vbCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSwgY29uc3QgRmluZE9w
dGlvbnMmIG9wdGlvbnMsIGJvb2wgaXNOZXdTZWFyY2gsIGJvb2wgc3RhcnRGcm9tU2VsZWN0aW9u
KQogewotICAgIGlmIChSZWZQdHI8UmFuZ2U+IG1hdGNoID0gZnJhbWUtPmVkaXRvcigpLT5maW5k
U3RyaW5nQW5kU2Nyb2xsVG9WaXNpYmxlKHRleHQsIHJhbmdlLCBvcHRpb25zKSkgeworICAgIGlm
IChSZWZQdHI8UmFuZ2U+IG1hdGNoID0gZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmdBbmRTY3Jv
bGxUb1Zpc2libGUodGV4dCwgcmFuZ2UsIG9wdGlvbnMpKSB7CiAgICAgICAgIC8vIE1vdmUgdGhl
IGhpZ2hsaWdodCB0byB0aGUgbmV3IG1hdGNoLgogICAgICAgICBzZXRBY3RpdmVNYXRjaEFuZE1h
cmtlcihtYXRjaCk7CiAgICAgICAgIGlmIChpc05ld1NlYXJjaCkgewpAQCAtMTkwLDcgKzE5MCw3
IEBAIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1hcmtUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBz
Y29wZVN0cmluZ01hdGNoZXMgZG9lcyBub3QgYWRkIGFueSBtYXJrZXJzLCBpdCBvbmx5IGNvdW50
cyB0aGUgbnVtYmVyLgogICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdW5tYXJrQWxsVGV4
dE1hdGNoZXMsIGl0IGlzIGFscmVhZHkgZG9uZSBmcm9tIHRoZSBjYWxsZXIgYmVjYXVzZSBvZiBu
ZXdTZWFyY2gKICAgICAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoLT5vd25lckRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+YWRkVGV4dE1hdGNoTWFya2VyKG1fYWN0aXZlTWF0Y2guZ2V0KCksIHRydWUp
OwotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNB
cmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQodHJ1ZSAvKiBo
aWdobGlnaHQgKi8pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTIyMyw3ICsyMjMsNyBAQCBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZp
bmRBbmRNYXJrVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbQogICAg
ICAgICAgICAgLy8gYWxsIG1hdGNoZXMgYnV0IGNvdW50IHRoZW0uCiAgICAgICAgICAgICBtX3dl
YlBhZ2UtPm1fcGFnZS0+dW5tYXJrQWxsVGV4dE1hdGNoZXMoKTsKICAgICAgICAgICAgIG1fYWN0
aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIo
bV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8p
OworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8pOwogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpz
Y29wZVN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHJlc2V0LCBib28KICAg
ICAgICAgICAgIG1fYWN0aXZlTWF0Y2hJbmRleCArPSBtYXRjaENvdW50OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKG1faGlnaGxpZ2h0QWxsTWF0Y2hlcykKLSAgICAgICAgICAg
ICAgICBzY29waW5nRnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAgICAgICAgICAgICAgICBzY29waW5nRnJh
bWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQodHJ1ZSAvKiBo
aWdobGlnaHQgKi8pOwogICAgICAgICAgICAgbV9hY3RpdmVNYXRjaENvdW50ICs9IG1hdGNoQ291
bnQ7CiAgICAgICAgICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT51cGRhdGVGaW5kU3RyaW5nUmVz
dWx0KG1fYWN0aXZlTWF0Y2hDb3VudCwgbV9hY3RpdmVNYXRjaEluZGV4KTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
ZWxlY3Rpb25IYW5kbGVyLmNwcAppbmRleCAzMzNkMTI0YTNiNTVlNGQzN2IwZjJkMWZlYzI2MzM4
N2M2YzFmMmZhLi43MDZmMTA5ZTc0ZTI3ZmI5OTVhNzI2MzU4ZTk1NjU2ZjEwNGI2OTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
ZWxlY3Rpb25IYW5kbGVyLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgU2VsZWN0aW9uSGFu
ZGxlcjo6Y2FuY2VsU2VsZWN0aW9uKCkKIAogQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyBT
ZWxlY3Rpb25IYW5kbGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dl
YlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7Cisg
ICAgcmV0dXJuIG1fd2ViUGFnZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOwogfQogCiBXZWJDb3JlOjpJbnRSZWN0IFNlbGVjdGlvbkhhbmRsZXI6OmNsaXBw
aW5nUmVjdEZvclZpc2libGVDb250ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CmluZGV4IGQwY2UzOGEyZmZkYTdmYzYzMGFjNDZjZGNmMTU1YThkMzFhMGEzMGEuLjZhYTJiM2U4
NWJjM2ZkZDQ3M2M2OGQ0YjYyZDdmMzY1NGRkNzE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpl
eGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpCiB7CiAgICAg
RFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7CiAKLSAgICBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21t
YW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVl
KTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZpbmRTdHJpbmcoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCwgV2ViQ29yZTo6RmluZE9w
dGlvbnMgb3B0aW9ucykKQEAgLTMyOCw3ICszMjgsNyBAQCBib29sIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6aXNDb21tYW5kRW5hYmxlZChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29u
cwogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIGZh
bHNlKTsKIAotICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOworICAgIHJldHVy
biBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpmb3JjZUxheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAppbmRleCA5
MDkwMmQ3YWU3ZmNhOWUwZTZhMzA2NzYzOGYyMDQ0NDBiYTJiNDljLi43ZTM0MzcwYWQ2YmI2NjA1
MTA2YzM2OWE3Yjg2YTRhNWFkNDUzOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKQEAgLTE0MiwxMyArMTQyLDEzIEBA
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBj
b3JlRnJhbWUpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChjb3JlRnJhbWUtPmVkaXRvcigpICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmlnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCisgICAgaWYgKGNvcmVGcmFtZS0+ZWRpdG9yKCkgJiYg
Y29yZUZyYW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBFdmFzX09iamVjdCogd2ViRnJhbWUgPSBFV0tQcml2YXRl
OjpraXRGcmFtZShjb3JlRnJhbWUpOwogICAgIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKHdlYkZyYW1lKTsKIAotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbmNl
bENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKTsKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OmRpZEVuZEVkaXRpbmcoKQpAQCAtMzI0LDcgKzMyNCw3IEBAIGJvb2wg
RWRpdG9yQ2xpZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7Cisg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRl
cnByZXRLZXlFdmVudChldmVudCkpOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxh
dGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhh
dCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0
ZWQsCkBAIC0zMzcsNyArMzM3LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIERvbid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNh
bm5vdCBlZGl0LgotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBEb24ndCBpbnNlcnQgbnVsbCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXMgdGhleSBjYW4g
cmVzdWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3VyCkBAIC0zNDgsNyArMzQ4LDcgQEAgYm9vbCBF
ZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQq
IGV2ZW50KQogICAgIGlmIChrZXlFdmVudC0+Y3RybEtleSgpIHx8IGtleUV2ZW50LT5hbHRLZXko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldmVudCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2
ZW50KTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IGY0
ZDNjMGU0ZjEzZWY3OGI5ZmIxMTFmY2NkY2M2OTA2NzY1Zjc5MGQuLmNjZjdlNTAyZjdiYzU1OWVl
YTBmZTg2N2Y5NjVlODRmZTJiNzJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3Bw
CkBAIC00ODAsNyArNDgwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9lZGl0YWJsZV9zZXQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lLCBFaW5hX0Jvb2wgZWRpdGFibGUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIHNtYXJ0RGF0YS0+ZWRpdGFibGUgPSBlZGl0YWJsZTsKICAgICBpZiAoZWRpdGFi
bGUpCi0gICAgICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuYXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQ4OCw3ICs0ODgsNyBAQCBjb25zdCBjaGFyKiBld2tfZnJhbWVfc2VsZWN0aW9uX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwotICAgIFdURjo6Q1N0cmluZyBzZWxlY3RlZFRl
eHQgPSBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkudXRmOCgpOwor
ICAgIFdURjo6Q1N0cmluZyBzZWxlY3RlZFRleHQgPSBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKS51dGY4KCk7CiAgICAgaWYgKHNlbGVjdGVkVGV4dC5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVj
dGVkVGV4dC5kYXRhKCkpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVf
dGV4dF9zZWFyY2goY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiB0ZXh0
LCBFCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUs
IGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodGV4dCwgZmFsc2Up
OwogCi0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSwgZm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3JhcCwg
dHJ1ZSk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmZpbmRTdHJpbmco
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFw
LCB0cnVlKTsKIH0KIAogdW5zaWduZWQgaW50IGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbWFyayhF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHN0cmluZywgRWluYV9Cb29sIGNhc2VT
ZW5zaXRpdmUsIEVpbmFfQm9vbCBoaWdobGlnaHQsIHVuc2lnbmVkIGludCBsaW1pdCkKQEAgLTUw
OSw4ICs1MDksOCBAQCB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc3RyaQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCAwKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc3RyaW5nLCAwKTsKIAotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7Ci0g
ICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5jb3VudE1hdGNoZXNGb3JUZXh0
KFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLCAwLCBjYXNlU2Vuc2l0aXZlLCBsaW1pdCwg
dHJ1ZSwgMCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1h
dGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOworICAgIHJldHVybiBzbWFydERhdGEtPmZy
YW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KFdURjo6U3RyaW5nOjpmcm9tVVRGOChz
dHJpbmcpLCAwLCBjYXNlU2Vuc2l0aXZlLCBsaW1pdCwgdHJ1ZSwgMCk7CiB9CiAKIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQpAQCAtNTI2LDcgKzUyNiw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX2hp
Z2hsaWdodF9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFaW5hX0Jvb2wKIHsKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsK
LSAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChoaWdobGlnaHQpOworICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNTM0LDcgKzUzNCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9t
YXRjaGVzX2hpZ2hsaWdodF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewogICAg
IEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFs
c2UpOwotICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS0+bWFya2VkVGV4dE1h
dGNoZXNBcmVIaWdobGlnaHRlZCgpOworICAgIHJldHVybiBzbWFydERhdGEtPmZyYW1lLT5lZGl0
b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CiB9CiAKIC8qKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggZjNmYThlMWEyMjIzYjRjOTFhNzUwNDA2N2M2ZmVh
MzVhN2JkYThkYi4uODZjODYwN2ZkMWIyOGNjOGQ1ZWFlMTBmZDZlMjMxN2EzODhmOGIzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0xNjY4LDcgKzE2NjgsNyBAQCBjb25zdCBj
aGFyKiBld2tfdmlld19zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAg
ICBDU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkudXRmOCgpOwor
ICAgIENTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsK
ICAgICBpZiAoc2VsZWN0ZWRTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2FkZChzZWxlY3RlZFN0cmluZy5kYXRhKCkpOwpAQCAt
MTY4Myw3ICsxNjgzLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X2VkaXRvcl9jb21tYW5kX2V4ZWN1
dGUoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV3a18KICAgICBpZiAoIWNvbW1h
bmRTdHJpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwcml2LT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21t
YW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7
CisgICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kU3RyaW5nKS5leGVjdXRlKFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2YWx1ZSkpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGV4dF9t
ZW51X2ZvcndhcmRfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfRG93biogZG93bkV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggOWE1MmU3ZjUxNmRjODI2ZDYwZWVh
MzIzNDYyNDRmNWMxZGIzNzFmNC4uOWI1MzhjNDJjNjUzNmRkMTgzOTVmYzNlZmMzMDc3MzE4OTg5
ZDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnBh
aW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogICAgIC8vIHN5bmNlZCB3aXRoIGN1
cnNvciBtb3ZlbWVudC4gRm9yIGluc3RhbmNlLCBhIHRleHQgZmllbGQgY2FuIG1vdmUgd2l0aG91
dAogICAgIC8vIHRoZSBzZWxlY3Rpb24gY2hhbmdpbmcuCiAgICAgRnJhbWUqIGZvY3VzZWRGcmFt
ZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIGlmIChmb2N1c2VkRnJhbWUgJiYgZm9jdXNlZEZyYW1lLT5lZGl0b3IoKS0+Y2Fu
RWRpdCgpKQorICAgIGlmIChmb2N1c2VkRnJhbWUgJiYgZm9jdXNlZEZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0KCkpCiAgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+aW1GaWx0ZXIuc2V0Q3Vyc29yUmVj
dChmcmFtZS0+c2VsZWN0aW9uKCktPmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDJhM2Q0Y2U3N2Y5YThiNzNlNjNmMWRmZDI0NDNjMzU2
NTJiYzI1MzUuLjMyM2YyZTVmMDkxM2Q4Mjg1YzBlZjFjNzM5YzRlMjZjMDQwOTc0MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyog
d2ViVmlldywKICAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwodmFsdWUpOwogCi0gICAgY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsK
KyAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7CiB9CiAKIGJvb2wgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGdjaGFyKiBuYW1lKQpAQCAtMjg0LDcgKzI4NCw3IEBAIGJvb2wgRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGNvbnN0IGdjCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVX
KHdlYlZpZXcpLCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFMU0Up
OwogCi0gICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAg
cmV0dXJuIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGNvbnN0IGNoYXIqIHRleHQsIGludCBzdGFydCwgaW50IGxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4
IDU3ZmFjYWYzMTEwMzk5YTVhY2IwNjQ1ZTcwZGM5MjkyNDVlN2FhNDYuLjUwOTA5MDQ3MzFjNDk3
MzBmN2M2ZTllYjEwNWVjYTg2NTIxZGJlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjU1LDcgKzI1NSw3IEBA
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFt
ZSkKICAgICBzZXRTZWxlY3Rpb25QcmltYXJ5Q2xpcGJvYXJkSWZOZWVkZWQobV93ZWJWaWV3KTsK
ICNlbmRpZgogCi0gICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb25JZlNl
bGVjdGlvbklzSW52YWxpZCgpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9z
aXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpKQogICAgICAgICBtX3dlYlZpZXctPnByaXYtPmlt
RmlsdGVyLnJlc2V0Q29udGV4dCgpOwogfQogCkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBFZGl0
b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1lLCBib29s
IGFsbG93VGV4dEluc2UKIHsKICAgICBWZWN0b3I8RWRpdG9yOjpDb21tYW5kPiBjb21tYW5kczsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBFZGl0
b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBPbmx5IGFsbG93IHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIGlm
IHRoZSBjdXJyZW50IG5vZGUgaXMgZWRpdGFibGUuCi0gICAgICAgIGlmIChleGVjdXRlUGVuZGlu
Z0VkaXRvckNvbW1hbmRzKGZyYW1lLCBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkpIHsKKyAg
ICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIGZyYW1lLT5lZGl0
b3IoKS5jYW5FZGl0KCkpKSB7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogICAgIH0KIAogICAgIC8vIERvbid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0
aGF0IGNhbm5vdCBlZGl0LgotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisg
ICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBUaGlzIGlzIGp1c3QgYSBub3JtYWwgdGV4dCBpbnNlcnRpb24sIHNvIHdhaXQgdG8gZXhl
Y3V0ZSB0aGUgaW5zZXJ0aW9uCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKHBsYXRm
b3JtRXZlbnQtPmN0cmxLZXkoKSB8fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9ybUV2
ZW50LT50ZXh0KCksIGV2ZW50KSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
cGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCAzMzk4OTExZWRk
OTBkOTkxYjlmYTJmMjA4NjRmYjZkMzM5YjE2NDVhLi45ODc3ZmNhMTk2ZjY5YzQ1OGVhMjE1Y2Q5
NjkzNGQ1MmVhZjkyOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNldFdlYlZpZXcoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKIGJvb2wgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpjYW5FZGl0KCkK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4g
ZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgcmV0dXJuIGZyYW1lICYm
IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiB9CiAKIGJvb2wgV2ViVmlld0lucHV0TWV0aG9k
RmlsdGVyOjpzZW5kU2ltcGxlS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50LCBXVEY6OlN0cmlu
ZyBzaW1wbGVTdHJpbmcsIEV2ZW50RmFrZWRGb3JDb21wb3NpdGlvbikKQEAgLTc2LDQyICs3Niw0
MiBAQCBib29sIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2VuZEtleUV2ZW50V2l0aENvbXBv
c2l0aW9uUmVzdWx0cyhHZGtFdmVudEtleSogZQogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0
ZXI6OmNvbmZpcm1Db21wb3NpdGlvblRleHQoU3RyaW5nIHRleHQpCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRleHQuaXNOdWxsKCkpIHsKICAg
ICAgICAgY29uZmlybUN1cnJlbnRDb21wb3NpdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKG1fY29uZmlybWVkQ29t
cG9zaXRpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24obV9jb25m
aXJtZWRDb21wb3NpdGlvbik7CiB9CiAKIHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpj
b25maXJtQ3VycmVudENvbXBvc2l0aW9uKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c2Vk
T3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIHZvaWQgV2Vi
Vmlld0lucHV0TWV0aG9kRmlsdGVyOjpjYW5jZWxDdXJyZW50Q29tcG9zaXRpb24oKQogewogICAg
IEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0
aW9uKCk7CiB9CiAKIHZvaWQgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KFN0
cmluZyBuZXdQcmVlZGl0LCBpbnQgY3Vyc29yT2Zmc2V0KQogewogICAgIEZyYW1lKiBmcmFtZSA9
IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRPRE86IFdlIHNob3VsZCBwYXJzZSB0aGUg
UGFuZ29BdHRyTGlzdCB0aGF0IHdlIGdldCBmcm9tIHRoZSBJTSBjb250ZXh0IGhlcmUuCiAgICAg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMu
YXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIG5ld1ByZWVkaXQubGVuZ3RoKCksIENvbG9y
KDEsIDEsIDEpLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
bmV3UHJlZWRpdCwgdW5kZXJsaW5lcywgbV9jdXJzb3JPZmZzZXQsIG1fY3Vyc29yT2Zmc2V0KTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24obmV3UHJlZWRpdCwgdW5kZXJsaW5l
cywgbV9jdXJzb3JPZmZzZXQsIG1fY3Vyc29yT2Zmc2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRl
eCAzMzQ2MTY0ZDhjNjU1OWNiOGM5MTAyZDJhYmZhYTA5NTRiNWM4NDg5Li4xNjNmNmYwYmM1NTY1
MzYzODZhMmI5YTQ0NTdjN2I4OThjMzVmMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTExMzQsNyArMTEzNCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlvbihXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNo
YXIqIHRleHQpCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwogICAgIGJvb2wg
c2VsZWN0UmVwbGFjZW1lbnQgPSBmYWxzZTsKICAgICBib29sIHNtYXJ0UmVwbGFjZSA9IHRydWU7
Ci0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQs
IHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFy
dFJlcGxhY2UpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCAwNzY2NmJlNmFkYTAyMjk1MmU0ZjY4ZmUzNWVhZmU0ODA4NTY2ODhkLi5j
NTgyYjY2OTZjZGFjMGYyMGFmN2IyOWFhODY0Nzk5YzUxMGM1ODgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGlj
IEludFBvaW50IGdldExvY2F0aW9uRm9yS2V5Ym9hcmRHZW5lcmF0ZWRDb250ZXh0TWVudShGcmFt
ZSogZnJhbWUpCiAgICAgLy8gc2VsZWN0aW9uLT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlIGNhbiBy
ZXR1cm4gMCBoZXJlLCBidXQgaWYgdGhhdCB3YXMgdGhlIGNhc2UKICAgICAvLyBzZWxlY3Rpb24t
PnNlbGVjdGlvbigpLmlzTm9uT3JwaGFuZWRDYXJldE9yUmFuZ2UoKSB3b3VsZCBoYXZlIHJldHVy
bmVkIGZhbHNlCiAgICAgLy8gYWJvdmUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIGl0Lgot
ICAgIEludFJlY3QgZmlyc3RSZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5n
ZShzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKS5nZXQoKSk7CisgICAgSW50UmVj
dCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCkuZ2V0KCkpOwogICAgIHJldHVybiBJbnRQb2ludChm
aXJzdFJlY3QueCgpLCBmaXJzdFJlY3QubWF4WSgpKTsKIH0KIApAQCAtOTM4LDcgKzkzOCw3IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgZWxzZQogICAgICAgICBmb2N1c0NvbnRyb2xs
ZXItPnNldEZvY3VzZWRGcmFtZShjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKSk7CiAKLSAgICBp
ZiAoZm9jdXNDb250cm9sbGVyLT5mb2N1c2VkRnJhbWUoKS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkK
KyAgICBpZiAoZm9jdXNDb250cm9sbGVyLT5mb2N1c2VkRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRWRp
dCgpKQogICAgICAgICB3ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5ub3RpZnlGb2N1c2VkSW4oKTsK
ICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNz
KS0+Zm9jdXNfaW5fZXZlbnQod2lkZ2V0LCBldmVudCk7CiB9CkBAIC0xMTgxLDMxICsxMTgxLDMx
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb25zb2xlX21lc3NhZ2Uo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9zZWxlY3RfYWxsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIkN1dCIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Jl
YWxfY29weV9jbGlwYm9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF91bmRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5k
byIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1
dGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfcmVkbyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlJlZG8iKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrTW92ZW1lbnRT
dGVwIHN0ZXAsIGdpbnQgY291bnQpCkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X3dlYl92aWV3X3JlYWxfbW92ZV9jdXJzb3IgKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIEd0a01vdgogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfcGFzdGVfY2xpcGJv
YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X3JlYWxfc2hvdWxkX2FsbG93X2VkaXRpbmdfYWN0aW9uKFdlYktpdFdl
YlZpZXcqKQpAQCAtNDM4OSw3ICs0Mzg5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2hp
Z2hsaWdodF90ZXh0X21hdGNoZXMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2Jvb2xlYW4KIAog
ICAgIEZyYW1lICpmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIGRvIHsK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRU
ZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHNob3VsZEhpZ2hsaWdodCk7CiAgICAgICAgIGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpOwogICAgIH0gd2hp
bGUgKGZyYW1lKTsKIH0KQEAgLTQ0NTksNyArNDQ1OSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19jYW5fY3V0X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAg
ICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkN1dCgpIHx8
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLmNhbkN1dCgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTEN1dCgpOwogfQogCiAvKioK
QEAgLTQ0NzUsNyArNDQ3NSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9j
bGlwYm9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFt
ZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCkgfHwgZnJhbWUtPmVkaXRv
cigpLT5jYW5ESFRNTENvcHkoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkNvcHko
KSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5KCk7CiB9CiAKIC8qKgpAQCAtNDQ5MSw3
ICs0NDkxLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5QYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2Fu
REhUTUxQYXN0ZSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpOwogfQogCiAvKioKQEAgLTQ1NDcsNyArNDU0
Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2RlbGV0ZV9zZWxlY3Rpb24oV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5wZXJmb3Jt
RGVsZXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKIH0KIAogLyoq
CkBAIC00NjI5LDcgKzQ2MjksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2Jvb2xlYW4gZmxhZykKICAgICBnX3JldHVybl9pZl9m
YWlsKGZyYW1lKTsKIAogICAgIGlmIChmbGFnKSB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICAgICAgLy8gVE9ETzogSWYg
dGhlIFdlYktpdFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJsZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBl
bXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KICAgICAgICAgLy9pZiAoIXdlYmtpdF93ZWJfdmll
d19nZXRfc2VsZWN0ZWRfZG9tX3JhbmdlKHdlYlZpZXcpKQogICAgICAgICAvLyAgICBtYWluRnJh
bWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CkBAIC01MDkwLDcgKzUwOTAsNyBAQCBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8oV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsK
IAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5VbmRv
KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5VbmRvKCk7CiB9CiAKIC8qKgpAQCAt
NTEyNSw3ICs1MTI1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9yZWRvKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUmVkbygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCku
Y2FuUmVkbygpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IDZkM2M2YjBmYTVkNjIxYzI4MzZjYzBjNjRmOGY2MWEzYjI5N2ZlNjAuLmEwMzU0YjQyNTBm
MzNlOTY4ODA0ZGEyYWMxMTEwNmI0OWU3MTA3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJj
ZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAtIChOU1N0cmluZyAqKV9z
ZWxlY3RlZFN0cmluZwogewotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3RlZFRleHQoKSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRpc3BsYXlT
dHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0ZWRUZXh0KCkpOwogfQogCiAtIChOU1N0cmluZyAqKV9zdHJpbmdGb3JSYW5nZTooRE9NUmFu
Z2UgKilyYW5nZQpAQCAtNjAyLDcgKzYwMiw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJj
ZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAtIChOU1JlY3QpX2ZpcnN0
UmVjdEZvckRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlCiB7Ci0gICByZXR1cm4gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKGNvcmUocmFuZ2UpKTsKKyAg
IHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShj
b3JlKHJhbmdlKSk7CiB9CiAKIC0gKHZvaWQpX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01S
YW5nZSAqKXJhbmdlCkBAIC02NzYsNyArNjc2LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKERPTVJhbmdlICop
X21hcmtET01SYW5nZQogewotICAgIHJldHVybiBraXQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRp
dG9yKCktPm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICByZXR1cm4ga2l0
KF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKIH0KIAogLy8gR2l2ZW4gcHJvcG9zZWRSYW5nZSwgcmV0dXJucyBhbiBleHRlbmRl
ZCByYW5nZSB0aGF0IGluY2x1ZGVzIGFkamFjZW50IHdoaXRlc3BhY2UgdGhhdCBzaG91bGQKQEAg
LTc0Niw3ICs3NDYsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2Vs
ZWN0aW9uKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50
KCk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9ySW5RdW90ZWRDb250ZW50KCk7CiB9CiAKIC0gKFZpc2libGVQb3NpdGlvbilfdmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQ6KE5TUG9pbnQpcG9pbnQKQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0
aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUgfHwgIXN0eWxlKQogICAgICAgICByZXR1
cm47CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGNyZWF0ZSBhIGNvcHkgaGVy
ZS4KLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tcHV0ZUFuZFNldFR5cGlu
Z1N0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsK
KyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5jb21wdXRlQW5kU2V0VHlwaW5nU3R5
bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOwogfQog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTkyOCw3ICs5MjgsNyBAQCBzdGF0aWMgaW5s
aW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsK
ICAgICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpIHx8ICFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRv
cigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBzZWxlY3RS
ZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKKyAgICBfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGNvcmUoZnJhZ21l
bnQpLCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKIH0KIAog
LSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0OihOU1N0cmluZyAqKXRleHQgc2VsZWN0
UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNt
YXJ0UmVwbGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQppbmRleCAzNzZkZjliODQ4NDBiZjI4N2NjOWMxNTljNmQwZDQwZTNhYWU5
ZDFjLi5kNjEyMGFlOTFkN2U2MDY3NjhhNTdhOTk2NjQyZjRhNzRjMDkxMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBOU011dGFibGVBcnJheSAqbmV3QXJyYXlCeUNvbmNhdGVu
YXRpbmdBcnJheXMoTlNBcnJheSAqZmlyc3QsIE5TQXJyYXkgKnNlCiAgICAgICAgIHJldHVybjsK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAgIGlmIChbd2Vi
VmlldyBtYWluRnJhbWVdID09IHdlYkZyYW1lICYmIFt3ZWJWaWV3IGlzRWRpdGFibGVdKQotICAg
ICAgICBjb3JlKHdlYkZyYW1lKS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxl
bWVudCgpOworICAgICAgICBjb3JlKHdlYkZyYW1lKS0+ZWRpdG9yKCkuYXBwbHlFZGl0aW5nU3R5
bGVUb0JvZHlFbGVtZW50KCk7CiB9CiAKIC0gKEJPT0wpY2FuUHJvdmlkZURvY3VtZW50U291cmNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4ZmY2NWFiMDAz
ZTc1MzQxYTI3MDViOWU4MTE5ZDM0YjI3NTRjZjllLi5lMTY2OWQ3YTg5MjQ2YTU5YTY3ZTBiYzNi
MjVhZDhiNGFjYzlkMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTg2NCw3ICs4NjQsNyBAQCBzdGF0aWMgTlNVUkwqIHVuaXF1ZVVSTFdpdGhSZWxhdGl2
ZVBhcnQoTlNTdHJpbmcgKnJlbGF0aXZlUGFydCkKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtz
ZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6
cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgIGlmIChmcmFnbWVudCAm
JiBbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6ZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6
cmFuZ2UgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZF0pCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYg
X2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CisgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBb
c2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsK
ICNlbHNlCiAgICAgLy8gTWFpbCBpcyBpZ25vcmluZyB0aGUgZnJhbWVudCBwYXNzZWQgdG8gdGhl
IGRlbGVnYXRlIGFuZCBjcmVhdGVzIGEgbmV3IG9uZS4KICAgICAvLyBXZSB3YW50IHRvIGF2b2lk
IGNyZWF0aW5nIHRoZSBmcmFnbWVudCB0d2ljZS4KQEAgLTg3MiwxMiArODcyLDEyIEBAIHN0YXRp
YyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0
KQogICAgICAgICBpZiAoW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50Om5pbCByZXBsYWNpbmdE
T01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkgewog
ICAgICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1l
bnRGcmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0OnJhbmdlIGFsbG93
UGxhaW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkKLSAg
ICAgICAgICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzRnJhZ21lbnQoY29yZShm
cmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJk
XSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkucGFzdGVBc0Zy
YWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9h
cmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKICAgICAgICAgfSAgICAgICAgCiAgICAgfSBlbHNlIHsK
ICAgICAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAqZnJhZ21lbnQgPSBbc2VsZiBfZG9jdW1lbnRG
cmFnbWVudEZyb21QYXN0ZWJvYXJkOnBhc3RlYm9hcmQgaW5Db250ZXh0OnJhbmdlIGFsbG93UGxh
aW5UZXh0OmFsbG93UGxhaW5UZXh0XTsKICAgICAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9z
aG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBnaXZl
bkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkKLSAgICAgICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNt
YXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CisgICAgICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3Nl
bGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CiAg
ICAgfQogI2VuZGlmCiAgICAgW3dlYlZpZXcgX3NldEluc2VydGlvblBhc3RlYm9hcmQ6bmlsXTsK
QEAgLTk4Myw3ICs5ODMsNyBAQCBzdGF0aWMgTlNVUkwqIHVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBh
cnQoTlNTdHJpbmcgKnJlbGF0aXZlUGFydCkKIC0gKEJPT0wpX3Nob3VsZERlbGV0ZVJhbmdlOihE
T01SYW5nZSAqKXJhbmdlCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2Zy
YW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5zaG91
bGREZWxldGVSYW5nZShjb3JlKHJhbmdlKSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3Jl
RnJhbWUtPmVkaXRvcigpLnNob3VsZERlbGV0ZVJhbmdlKGNvcmUocmFuZ2UpKTsKIH0KIAogLSAo
TlNWaWV3ICopX2hpdFZpZXdGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CkBAIC0xNzU4LDEzICsx
NzU4LDEzIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZl
bnQgKmV2ZW50KQogLSAoQk9PTClfY2FuRWRpdAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCk7CiB9CiAKIC0gKEJPT0wpX2NhbkVkaXRSaWNobHkKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZy
YW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICByZXR1cm4g
Y29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogfQogCiAt
IChCT09MKV9jYW5BbHRlckN1cnJlbnRTZWxlY3Rpb24KQEAgLTE4MjQsNTAgKzE4MjQsNTAgQEAg
c3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQp
CiAtIChET01Ob2RlICopX2luc2VydE9yZGVyZWRMaXN0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3Jl
RnJhbWUtPmVkaXRvcigpLT5pbnNlcnRPcmRlcmVkTGlzdCgpLmdldCgpKSA6IG5pbDsKKyAgICBy
ZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0T3JkZXJlZExp
c3QoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKERPTU5vZGUgKilfaW5zZXJ0VW5vcmRlcmVkTGlz
dAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJl
dHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VW5vcmRlcmVk
TGlzdCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuaW5zZXJ0VW5vcmRlcmVkTGlzdCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAo
Qk9PTClfY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPmNhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAgcmV0
dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsKCk7CiB9CiAKIC0gKEJPT0wpX2NhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0
dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbCgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3Io
KS5jYW5EZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwogfQogCiAtIChET01Ob2RlICopX2lu
Y3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVk
aXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpLmdldCgpKSA6IG5pbDsKKyAgICBy
ZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKERPTU5vZGUgKilfaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVk
aXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQoKS5nZXQoKSkgOiBuaWw7
CisgICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLmluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9k
ZSAqKV9pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZAogewogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgPyBr
aXQoY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVy
ZWQoKS5nZXQoKSkgOiBuaWw7CisgICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUt
PmVkaXRvcigpLmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkKCkuZ2V0KCkpIDog
bmlsOwogfQogCiAtICh2b2lkKV9kZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmIChjb3JlRnJhbWUp
Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
KCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwoKTsKIH0KIAogLSAodm9pZClfc2V0SGlnaGxpZ2h0ZXI6KGlkPFdlYkhUTUxIaWdobGlnaHRl
cj4paGlnaGxpZ2h0ZXIgb2ZUeXBlOihOU1N0cmluZyopdHlwZQpAQCAtMjM1OSw3ICsyMzU5LDcg
QEAgc3RhdGljIFN0cmluZyBjb21tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3RvcikKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBpZiAoIWNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIEVkaXRvcjo6Q29tbWFuZCgpOwotICAgIHJldHVybiBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3Ioc2VsZWN0b3Ip
KTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lRm9y
U2VsZWN0b3Ioc2VsZWN0b3IpKTsKIH0KIAogLSAoRWRpdG9yOjpDb21tYW5kKWNvcmVDb21tYW5k
QnlOYW1lOihjb25zdCBjaGFyKiluYW1lCkBAIC0yMzY3LDcgKzIzNjcsNyBAQCBzdGF0aWMgU3Ry
aW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNlbGVjdG9yKQogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAg
ICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQobmFtZSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChuYW1lKTsKIH0KIAogLSAodm9pZClleGVjdXRlQ29yZUNvbW1hbmRCeVNlbGVjdG9yOihTRUwp
c2VsZWN0b3IKQEAgLTI1OTMsNyArMjU5Myw3IEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2Vs
ZWN0KQogICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsK
ICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0p
IHsKICAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5T
V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAgICAgICAgICAg
IFttZW51SXRlbSBzZXRTdGF0ZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pXTsKKyAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRTdGF0ZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIGRpcmVjdGlvbildOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2Fu
RWRpdF07CiAgICAgfQpAQCAtMjYxMCw3ICsyNjEwLDcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtB
bmRTZWxlY3QpCiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRl
bSBjbGFzc11dKSB7CiAgICAgICAgICAgICAvLyBUYWtlIGNvbnRyb2wgb2YgdGhlIHRpdGxlIG9m
IHRoZSBtZW51IGl0ZW0gaW5zdGVhZCBvZiBqdXN0IGNoZWNraW5nL3VuY2hlY2tpbmcgaXQgYmVj
YXVzZQogICAgICAgICAgICAgLy8gYSBjaGVjayB3b3VsZCBiZSBhbWJpZ3VvdXMuCi0gICAgICAg
ICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHls
ZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgInJ0bCIpCisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0
VGl0bGU6ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0
aW9uLCAicnRsIikKICAgICAgICAgICAgICAgICA/IFVJX1NUUklOR19JTlRFUk5BTCgiTGVmdCB0
byBSaWdodCIsICJMZWZ0IHRvIFJpZ2h0IGNvbnRleHQgbWVudSBpdGVtIikKICAgICAgICAgICAg
ICAgICA6IFVJX1NUUklOR19JTlRFUk5BTCgiUmlnaHQgdG8gTGVmdCIsICJSaWdodCB0byBMZWZ0
IGNvbnRleHQgbWVudSBpdGVtIildOwogICAgICAgICB9CkBAIC0yNjQxLDExICsyNjQxLDExIEBA
IFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgICAgICByZXR1cm4gW3NlbGYgX2hh
c1NlbGVjdGlvbl07CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGU6KSB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHBhc3RlQXNQbGFpblRleHQ6KSkKLSAgICAgICAgcmV0dXJu
IGZyYW1lICYmIChmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+ZWRp
dG9yKCktPmNhblBhc3RlKCkpOworICAgICAgICByZXR1cm4gZnJhbWUgJiYgKGZyYW1lLT5lZGl0
b3IoKS5jYW5ESFRNTFBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCkpOwogICAg
IAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBhc3RlQXNSaWNoVGV4dDopKQotICAgICAg
ICByZXR1cm4gZnJhbWUgJiYgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpCi0gICAg
ICAgICAgICB8fCAoZnJhbWUtPmVkaXRvcigpLT5jYW5QYXN0ZSgpICYmIGZyYW1lLT5zZWxlY3Rp
b24oKS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkpOworICAgICAgICByZXR1cm4gZnJhbWUg
JiYgKGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTFBhc3RlKCkKKyAgICAgICAgICAgIHx8IChmcmFt
ZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpKTsKICAgICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwZXJm
b3JtRmluZFBhbmVsQWN0aW9uOikpCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTM4MDMsNyArMzgw
Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2
ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgX3ByaXZhdGUtPl9mb3JjZVVwZGF0ZVNlY3VyZUlu
cHV0U3RhdGUgPSBOTzsKIAogICAgIC8vIEZJWE1FOiBLaWxsIHJpbmcgaGFuZGxpbmcgaXMgbW9z
dGx5IGluIFdlYkNvcmUsIHNvIHRoaXMgY2FsbCBzaG91bGQgYWxzbyBiZSBtb3ZlZCB0aGVyZS4K
LSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUpOwog
CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNDIz
MSw3ICs0MjMxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtl
eWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIngiCi0gICAgICAgIGF0
dHJpYnV0ZXM6Y29yZUZyYW1lID8gY29yZUZyYW1lLT5lZGl0b3IoKS0+Zm9udEF0dHJpYnV0ZXNG
b3JTZWxlY3Rpb25TdGFydCgpIDogbmlsXTsKKyAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUg
PyBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSA6
IG5pbF07CiAgICAgTlNEYXRhICpkYXRhID0gW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgW3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXTsKICAgICBbc3Ry
aW5nIHJlbGVhc2VdOwogICAgIHJldHVybiBkYXRhOwpAQCAtNDM1OSw3ICs0MzU5LDcgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUq
IGNvcmVGcmFtZSkKIHsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2Zy
YW1lXSkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBj
b3B5IGhlcmUuIFdlIHdhbnQgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIHRvIHdvcmsgZGlyZWN0
bHkgd2l0aCBTdHlsZVByb3BlcnR5U2V0IGV2ZW50dWFsbHkuCi0gICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmFwcGx5U3R5bGVUb1NlbGVjdGlvbihjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRp
ZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBw
bHlTdHlsZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1
bmRvQWN0aW9uKTsKICAgICB9CiB9CiAKQEAgLTQ2NjEsNyArNDY2MSw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJh
bWUpCiAgICAgaWYgKFtbd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3
OndlYlZpZXcgc2hvdWxkQXBwbHlTdHlsZTpzdHlsZSB0b0VsZW1lbnRzSW5ET01SYW5nZTpyYW5n
ZV0pIHsKICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNv
cHkgaGVyZS4KLSAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoY29y
ZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIFtzZWxmIF91bmRvQWN0aW9uRnJvbUNv
bG9yUGFuZWxXaXRoU2VsZWN0b3I6c2VsZWN0b3JdKTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuYXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwg
W3NlbGYgX3VuZG9BY3Rpb25Gcm9tQ29sb3JQYW5lbFdpdGhTZWxlY3RvcjpzZWxlY3Rvcl0pOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQog
ICAgIENPTU1BTkRfUFJPTE9HVUUKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKCk7CiB9CiAKIC0gKHZvaWQpc2hvd0d1ZXNzUGFuZWw6KGlkKXNlbmRlcgpA
QCAtNDc2OCw3ICs0NzY4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3Vy
cmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICB9CiAgICAgCiAgICAgaWYg
KEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CisgICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOwogICAgIFtz
cGVsbGluZ1BhbmVsIG9yZGVyRnJvbnQ6c2VuZGVyXTsKIH0KIApAQCAtNDgzNiw3ICs0ODM2LDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQo
RnJhbWUqIGNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV3JpdGluZ0RpcmVjdGlv
biBkaXJlY3Rpb24gPSBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247Ci0gICAgc3dpdGNoIChj
b3JlRnJhbWUtPmVkaXRvcigpLT5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0
KCkpIHsKKyAgICBzd2l0Y2ggKGNvcmVGcmFtZS0+ZWRpdG9yKCkuYmFzZVdyaXRpbmdEaXJlY3Rp
b25Gb3JTZWxlY3Rpb25TdGFydCgpKSB7CiAgICAgICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5n
RGlyZWN0aW9uOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uOgpAQCAtNDg1MCw3ICs0ODUwLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAg
ICB9CiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0g
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVj
dGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oZGlyZWN0aW9uKTsKIH0KIAogLSAodm9pZCljaGFuZ2VCYXNlV3JpdGluZ0RpcmVjdGlvbjoo
aWQpc2VuZGVyCkBAIC00ODY3LDcgKzQ4NjcsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2Fy
ZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIEFTU0VS
VCh3cml0aW5nRGlyZWN0aW9uICE9IE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpOwogCiAgICAg
aWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbih3cml0aW5nRGlyZWN0aW9u
ID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGly
ZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbih3cml0aW5nRGlyZWN0aW9uID09IE5T
V3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9u
IDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogc3RhdGljIEJPT0wgd3JpdGlu
Z0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCkBAIC00ODg4LDcgKzQ4ODgsNyBAQCBzdGF0
aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICB9CiAKICAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbiA9PSBO
U1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlv
biA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xl
ZnRXcml0aW5nRGlyZWN0aW9uKTsKIH0KIAogLSAodm9pZCltYWtlQmFzZVdyaXRpbmdEaXJlY3Rp
b25MZWZ0VG9SaWdodDooaWQpc2VuZGVyCkBAIC01MDIzLDcgKzUwMjMsNyBAQCBzdGF0aWMgQk9P
TCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBib29sIG11bHRpcGxl
Rm9udHMgPSBmYWxzZTsKICAgICBOU0ZvbnQgKmZvbnQgPSBuaWw7CiAgICAgaWYgKEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKSB7Ci0gICAgICAgIGlmIChjb25zdCBTaW1w
bGVGb250RGF0YSogZmQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250Rm9yU2VsZWN0aW9uKG11
bHRpcGxlRm9udHMpKQorICAgICAgICBpZiAoY29uc3QgU2ltcGxlRm9udERhdGEqIGZkID0gY29y
ZUZyYW1lLT5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKG11bHRpcGxlRm9udHMpKQogICAgICAg
ICAgICAgZm9udCA9IGZkLT5nZXROU0ZvbnQoKTsKICAgICB9CiAKQEAgLTU1NjMsNyArNTU2Myw3
IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKDAsIDApOwotICAgIE5TUmFuZ2UgcmVzdWx0ID0g
W3dlYkZyYW1lIF9jb252ZXJ0VG9OU1JhbmdlOmNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0
aW9uUmFuZ2UoKS5nZXQoKV07CisgICAgTlNSYW5nZSByZXN1bHQgPSBbd2ViRnJhbWUgX2NvbnZl
cnRUb05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCkuZ2V0KCld
OwogCiAgICAgTE9HKFRleHRJbnB1dCwgIm1hcmtlZFJhbmdlIC0+ICgldSwgJXUpIiwgcmVzdWx0
LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTYwNywx
MiArNTYwNywxMiBAQCBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFi
bGVkKCkKIC0gKEJPT0wpaGFzTWFya2VkVGV4dAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIEJPT0wgcmVzdWx0ID0gY29yZUZyYW1lICYmIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgQk9PTCByZXN1bHQgPSBjb3Jl
RnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogCiAgICAgaWYg
KHJlc3VsdCkgewogICAgICAgICAvLyBBIHNhdmVkIGNvbW1hbmQgY2FuIGNvbmZpcm0gYSBjb21w
b3NpdGlvbiwgYnV0IGl0IGNhbm5vdCBzdGFydCBhIG5ldyBvbmUuCiAgICAgICAgIFtzZWxmIF9l
eGVjdXRlU2F2ZWRLZXlwcmVzc0NvbW1hbmRzXTsKLSAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1l
LT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogICAgIH0KIAogICAgIExPRyhUZXh0SW5wdXQs
ICJoYXNNYXJrZWRUZXh0IC0+ICV1IiwgcmVzdWx0KTsKQEAgLTU2MzQsNyArNTYzNCw3IEBAIHN0
YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIH0KICAg
ICAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCiBzdGF0aWMgdm9p
ZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENv
bXBvc2l0aW9uVW5kZXJsaW5lPiYgcmVzdWx0KQpAQCAtNTcwMiw3ICs1NzAyLDcgQEAgc3RhdGlj
IHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3Rv
cjxDb21wb3NpdGlvblVuZGUKICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiAhPSBO
U05vdEZvdW5kKQogICAgICAgICBbW3NlbGYgX2ZyYW1lXSBfc2VsZWN0TlNSYW5nZTpyZXBsYWNl
bWVudFJhbmdlXTsKIAotICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKHRl
eHQsIHVuZGVybGluZXMsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJh
bmdlKSk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRl
cmxpbmVzLCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgTlNNYXhSYW5nZShuZXdTZWxSYW5nZSkpOwog
fQogCiAtICh2b2lkKWRvQ29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtNTcyMCw3
ICs1NzIwLDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIAogICAgIC8vIEFzIGluIGluc2Vy
dFRleHQ6LCB3ZSBhc3N1bWUgdGhhdCB0aGUgY2FsbCBjb21lcyBmcm9tIGFuIGlucHV0IG1ldGhv
ZCBpZiB0aGVyZSBpcyBtYXJrZWQgdGV4dC4KICAgICBSZWZQdHI8RnJhbWU+IGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVG
cmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIGJvb2wg
aXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpOwogCiAgICAgaWYgKGV2ZW50ICYmIHNob3VsZFNhdmVDb21tYW5kICYmICFp
c0Zyb21JbnB1dE1ldGhvZCkKICAgICAgICAgZXZlbnQtPmtleXByZXNzQ29tbWFuZHMoKS5hcHBl
bmQoS2V5cHJlc3NDb21tYW5kKE5TU3RyaW5nRnJvbVNlbGVjdG9yKHNlbGVjdG9yKSkpOwpAQCAt
NTc3NCw3ICs1Nzc0LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBSZWZQdHI8RnJh
bWU+IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgTlNTdHJpbmcgKnRleHQ7
CiAgICAgTlNSYW5nZSByZXBsYWNlbWVudFJhbmdlID0geyBOU05vdEZvdW5kLCAwIH07Ci0gICAg
Ym9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigp
LT5oYXNDb21wb3NpdGlvbigpOworICAgIGJvb2wgaXNGcm9tSW5wdXRNZXRob2QgPSBjb3JlRnJh
bWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogCiAgICAgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9uczsKICAg
ICBpZiAoaXNBdHRyaWJ1dGVkU3RyaW5nKSB7CkBAIC01ODEwLDcgKzU4MTAsNyBAQCBzdGF0aWMg
dm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFjb3Jl
RnJhbWUgfHwgIWNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWNvcmVG
cmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCkBAIC01
ODE5LDE3ICs1ODE5LDE3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgYm9vbCBldmVu
dEhhbmRsZWQgPSBmYWxzZTsKICAgICBTdHJpbmcgZXZlbnRUZXh0ID0gdGV4dDsKICAgICBldmVu
dFRleHQucmVwbGFjZShOU0JhY2tUYWJDaGFyYWN0ZXIsIE5TVGFiQ2hhcmFjdGVyKTsgLy8gc2Ft
ZSB0aGluZyBpcyBkb25lIGluIEtleUV2ZW50TWFjLm1tIGluIFdlYkNvcmUKLSAgICBpZiAoIWNv
cmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICBpZiAoIWNvcmVGcmFt
ZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0
OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdl
IGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRo
YXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KIAogICAgICAgICBpZiAoIWRp
Y3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGV2ZW50
SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3RhdGVkVGV4dChldmVudFRl
eHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBldmVudCk7CisgICAgICAgICAgICBl
dmVudEhhbmRsZWQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4dChldmVu
dFRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBldmVudCk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2Vy
dFRleHQoZXZlbnRUZXh0LCBldmVudCk7CisgICAgICAgICAgICBldmVudEhhbmRsZWQgPSBjb3Jl
RnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnRUZXh0LCBldmVudCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGV2ZW50VGV4dCk7CiAgICAgfQogICAgIAogICAg
IGlmIChwYXJhbWV0ZXJzKQpAQCAtNTg4NCwxNSArNTg4NCwxNSBAQCBzdGF0aWMgdm9pZCBleHRy
YWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZQogCiAgICAgW3NlbGYgX3VwZGF0ZVNlY3VyZUlucHV0U3RhdGVdOwogCi0gICAgaWYg
KCFjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpIHx8IGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCisgICAgaWYgKCFjb3Jl
RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkgfHwgY29yZUZyYW1lLT5lZGl0b3IoKS5p
Z25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICB1bnNpZ25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBlbmQ7Ci0gICAgaWYgKGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBlbmQpKQorICAgIGlmIChj
b3JlRnJhbWUtPmVkaXRvcigpLmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHN0YXJ0LCBlbmQpKQog
ICAgICAgICBbW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJdIG1hcmtlZFRleHRT
ZWxlY3Rpb25DaGFuZ2VkOk5TTWFrZVJhbmdlKHN0YXJ0LCBlbmQgLSBzdGFydCkgY2xpZW50OnNl
bGZdOwogICAgIGVsc2UgewotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21w
b3NpdGlvbigpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9u
KCk7CiAgICAgICAgIFtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2Vk
VGV4dEFiYW5kb25lZDpzZWxmXTsKICAgICB9CiB9CkBAIC02MDYwLDcgKzYwNjAsNyBAQCBzdGF0
aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb3VudE1hdGNoZXNGb3JUZXh0
KHN0cmluZywgY29yZShyYW5nZSksIGNvcmVPcHRpb25zKG9wdGlvbnMpLCBsaW1pdCwgbWFya01h
dGNoZXMsIDApOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0Zv
clRleHQoc3RyaW5nLCBjb3JlKHJhbmdlKSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxpbWl0LCBt
YXJrTWF0Y2hlcywgMCk7CiB9CiAKIC0gKHZvaWQpc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDooQk9PTCluZXdWYWx1ZQpAQCAtNjA2OCwxMyArNjA2OCwxMyBAQCBzdGF0aWMgdm9p
ZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENv
bXBvc2l0aW9uVW5kZQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
OwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChuZXdWYWx1ZSk7Cisg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KG5ld1ZhbHVlKTsKIH0KIAogLSAoQk9PTCltYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0
dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLSAodm9pZCl1bm1h
cmtBbGxUZXh0TWF0Y2hlcwpAQCAtNjExMCw3ICs2MTEwLDcgQEAgc3RhdGljIHZvaWQgZXh0cmFj
dFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGUKICAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKICAgICAgICAgcmV0dXJuIE5POwogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3Jl
RnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyhzdHJpbmcsIGNvcmVPcHRp
b25zKG9wdGlvbnMpKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZmluZFN0cmluZyhzdHJpbmcsIGNvcmVPcHRpb25zKG9wdGlvbnMpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDFmODFlM2I3YWI1ODExMjE3MDY4
YzM4YThjZTE5YWU0NTYwNGI1NzEuLjgwNWNkYjkwMGUxZmNjOTk2OGY0OTMxODgyNDRlMjg3MTZk
ODc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTI0MjcsNyArMjQy
Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOwogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1l
KS5leGVjdXRlKHZhbHVlKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobmFtZSku
ZXhlY3V0ZSh2YWx1ZSk7CiB9CiAKIC0gKHZvaWQpX3NldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1l
RGVsYXk6KGRvdWJsZSl0aW1lRGVsYXkKQEAgLTUzODIsNyArNTM4Miw3IEBAIHN0YXRpYyBOU0Fw
cGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6SlNWYWx1ZSBqCiAgICAgUGFnZSogcGFnZSA9IGNvcmUoc2VsZik7CiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQocGFnZS0+bWFpbkZyYW1lKCkt
PmVkaXRvcigpLT5yYW5nZUZvclBvaW50KEludFBvaW50KFtzZWxmIGNvbnZlcnRQb2ludDpwb2lu
dCB0b1ZpZXc6bmlsXSkpLmdldCgpKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPm1haW5GcmFtZSgp
LT5lZGl0b3IoKS5yYW5nZUZvclBvaW50KEludFBvaW50KFtzZWxmIGNvbnZlcnRQb2ludDpwb2lu
dCB0b1ZpZXc6bmlsXSkpLmdldCgpKTsKIH0KIAogLSAoQk9PTClfc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTooRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UgdG9ET01SYW5nZTooRE9NUmFuZ2Ug
Kilwcm9wb3NlZFJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFm
ZmluaXR5IHN0aWxsU2VsZWN0aW5nOihCT09MKWZsYWcKQEAgLTU0NDMsNyArNTQ0Myw3IEBAIHN0
YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBbc2VsZiBf
bWFpbkNvcmVGcmFtZV07CiAgICAgICAgIGlmIChtYWluRnJhbWUpIHsKICAgICAgICAgICAgIGlm
IChmbGFnKSB7Ci0gICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0
aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5lZGl0
b3IoKS5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICAv
LyBJZiB0aGUgV2ViVmlldyBpcyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2VsZWN0aW9uIGlzIGVt
cHR5LCBzZXQgaXQgdG8gc29tZXRoaW5nLgogICAgICAgICAgICAgICAgIGlmICghW3NlbGYgc2Vs
ZWN0ZWRET01SYW5nZV0pCiAgICAgICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+c2VsZWN0aW9u
KCktPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CkBAIC01NzMwLDcgKzU3MzAsNyBAQCBzdGF0aWMg
TlNBcHBsZUV2ZW50RGVzY3JpcHRvciogYWVEZXNjRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgagogICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxmIF9zZWxlY3Rl
ZE9yTWFpbkZyYW1lXTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAg
ICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlU2Vs
ZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKFsoV2ViSFRNTFZpZXcgKilbW3dlYkZyYW1lIGZyYW1lVmll
d10gZG9jdW1lbnRWaWV3XSBfY2FuU21hcnRDb3B5T3JEZWxldGVdKTsKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoWyhXZWJIVE1MVmll
dyAqKVtbd2ViRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIF9jYW5TbWFydENvcHlPckRl
bGV0ZV0pOwogfQogICAgIAogLSAodm9pZClhcHBseVN0eWxlOihET01DU1NTdHlsZURlY2xhcmF0
aW9uICopc3R5bGUKQEAgLTU3NDEsNyArNTc0MSw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNj
cmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBq
CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEgY29weSBoZXJlLgogICAgIGlmIChjb3JlRnJhbWUp
Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoY29yZShzdHlsZSktPmNv
cHlQcm9wZXJ0aWVzKCkuZ2V0KCkpOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCkpOwogfQogCiBAZW5kCkBA
IC01Nzg4LDcgKzU3ODgsNyBAQCBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoRk9SV0FSRCkK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFt
ZV0pOwogICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRv
cigpLT5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgIHJldHVybiBj
b3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKICAg
ICAKICAgICByZXR1cm4gbmlsOwogfQpAQCAtNTgzMiw3ICs1ODMyLDcgQEAgRk9SX0VBQ0hfUkVT
UE9OREVSX1NFTEVDVE9SKEZPUldBUkQpCiAgICAgTm9kZSogY29yZVN0YXJ0Tm9kZT0gY29yZShz
dGFydE5vZGUpOwogICAgIGlmIChjb3JlU3RhcnROb2RlLT5kb2N1bWVudCgpICE9IGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVk
aXRvcigpLT5zaW1wbGlmeU1hcmt1cChjb3JlU3RhcnROb2RlLCBjb3JlKGVuZE5vZGUpKTsgICAg
CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2ltcGxpZnlNYXJrdXAoY29yZVN0YXJ0
Tm9kZSwgY29yZShlbmROb2RlKSk7ICAgIAogfQogCiBAZW5kCkBAIC02NTY3LDcgKzY1NjcsNyBA
QCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2Vy
dmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IFtzZWxm
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJG
cmFtZSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQodGV4dCk7CisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQodGV4dCk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCBjMzg1MjRmOWMxNTRhYmUyMGMyZGVhZmE3Yjcx
YmJiMmI3Y2QzZjRkLi43YWJlMzY3MjdiMjFmMTFhYmMxNDEzODY0MGY5ZmZmZDEyNTM5YWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtMzI5LDEyICszMjksMTIgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoUVdlYlBhZ2VB
ZGFwdGVyKiBhZGEKIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXhlY3V0ZUNvcmVD
b21tYW5kQnlOYW1lKFFXZWJQYWdlQWRhcHRlciogYWRhcHRlciwgY29uc3QgUVN0cmluZyYgbmFt
ZSwgY29uc3QgUVN0cmluZyYgdmFsdWUpCiB7Ci0gICAgYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5l
eGVjdXRlKHZhbHVlKTsKKyAgICBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7
CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQoUVdl
YlBhZ2VBZGFwdGVyICphZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVy
biBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOworICAgIHJldHVybiBhZGFwdGVy
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CiB9CiAKIFFWYXJpYW50TGlzdCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2VsZWN0ZWRSYW5nZShRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIpCkBA
IC0zNzQsNyArMzc0LDcgQEAgUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShRV2ViUGFnZUFkYXB0ZXIKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gUVZhcmlhbnRMaXN0KCk7CiAKLSAgICBRUmVjdCByZXN1bHRSZWN0
ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAg
UVJlY3QgcmVzdWx0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5n
ZS5nZXQoKSk7CiAgICAgcmVjdCA8PCByZXN1bHRSZWN0LngoKSA8PCByZXN1bHRSZWN0LnkoKSA8
PCByZXN1bHRSZWN0LndpZHRoKCkgPDwgcmVzdWx0UmVjdC5oZWlnaHQoKTsKICAgICByZXR1cm4g
cmVjdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAKaW5kZXggZDgyZDBlNWZkN2RlODE5MWZmMjkyMTNmMjdkNDA4ZDRmYTIwMWFk
MS4uODI1YWNhMzk1NWU5YjM1YWE3Y2YwYmY3YmZiMjk5OTQyZjFiOTAwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTIw
NiwxMiArMjA2LDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIGlmIChzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpICYm
IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIGJvb2wgb2xkU2VsZWN0
aW9uTW9kZSA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9k
ZSgpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rp
b25Nb2RlKHRydWUpOwotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53
cml0ZVNlbGVjdGlvbihmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIGZyYW1lLT5lZGl0b3IoKS0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOworICAg
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNlbGVjdGlvbihmcmFt
ZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZyYW1lLT5lZGl0b3Io
KS5jYW5TbWFydENvcHlPckRlbGV0ZSgpLCBmcmFtZSk7CiAgICAgICAgIFBhc3RlYm9hcmQ6Omdl
bmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9kZSk7CiAg
ICAgfQogCiAgICAgbV9wYWdlLT5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCk7Ci0gICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCisg
ICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2Uo
KSkKICAgICAgICAgZW1pdCBtX3BhZ2UtPm1pY3JvRm9jdXNDaGFuZ2VkKCk7CiB9CiAKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKICNpZm5kZWYgUVRfTk9fVU5E
T1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUg
JiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJl
Y3JlYXRlIHVuZG9zICovKSkKKyAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJh
bWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1
bmRvcyAqLykpCiAgICAgICAgIHJldHVybjsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyVW5kb1N0ZXAo
c3RlcCk7CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCkBAIC00NTUsNyArNDU1LDcgQEAgdm9p
ZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKICAgICAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKICAgICAgICAgICAgIC8v
IHNvIHdlIGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRp
YXRlbHkgKGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZl
bnQgYmUgZ2VuZXJhdGVkCiAgICAgICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEg
VGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZChjbWQpLmlzVGV4dEluc2VydGlvbigpCisgICAgICAgICAgICBpZiAoZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQogICAgICAgICAgICAgICAg
ICYmIGtldmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgewog
ICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25F
dmVudChldmVudCk7CiAgICAgICAgICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUp
LmV4ZWN1dGUoKSkgLy8gRXZlbnQgaGFuZGxlZC4KKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKSkgLy8gRXZlbnQgaGFuZGxl
ZC4KICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KSB7
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4
dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
a2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01
MjYsNyArNTI2LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBTdHJp
bmcgY29tbWFuZE5hbWUgPSBlZGl0b3JDb21tYW5kRm9yS2V5RG93bkV2ZW50KGV2ZW50KTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCk7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1
dGUoKTsKICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5kZXggZmE0ZTRjMGYzZWE3
YWNkNzg2NzlhMTg2MTUwM2ExOTk3NDhkZWEwMy4uMjFjMGU1OGIzM2NlMzMxYjk3NWIzNDA0OTc4
YTdmYmMwYTQ1ODE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMzA5LDEyICszMDksMTIgQEAgUVN0cmluZyBRV2Vi
UGFnZUFkYXB0ZXI6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiAgICAgRnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmIChmcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvblR5cGUoKSA9PSBWaXNpYmxlU2Vs
ZWN0aW9uOjpOb1NlbGVjdGlvbikKICAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dCgpOwogfQogCiBRU3RyaW5nIFFXZWJQYWdlQWRhcHRlcjo6c2Vs
ZWN0ZWRIdG1sKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwo
KTsKKyAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCktPnRvSFRNTCgpOwogfQogCiBib29sIFFXZWJQ
YWdlQWRhcHRlcjo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdApAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkK
IAogICAgIEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZUFkYXB0ZXIoKS0+ZnJhbWU7CiAgICAgaWYg
KGVkaXRhYmxlKSB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVU
b0JvZHlFbGVtZW50KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnQoKTsKICAgICAgICAgLy8gRklYTUU6IG1hYyBwb3J0IGNhbGxzIHRoaXMg
aWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWRET01SYW5nZQogICAgICAgICAvLyBmcmFtZS0+c2V0U2Vs
ZWN0aW9uRnJvbU5vbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggN2U2ZjAwZWJh
N2JjYTRlYzczNDUxMWMyNGY1ZTIyNGU2NTNiYTI2Yy4uZjc0YmZmYjliOWNkYTI1MDlhYzkxNzgy
MzBjMWYyMWYxZmU2ZDdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkK
IAogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgU3RyaW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0
cmluZyk7CiAgICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiLCAiKyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCmluZGV4IDcwY2I1MmE5NzMyMzEyOWU4MWJkN2Q3ZDAxNjZjZTZmMzhjMGMwNGIuLmNlNjJh
MjljZmRkZjNhNWY5NzIzZjBmN2M1YjEzYjEyOTBmZTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJh
bWU6Omhhc1NwZWxsaW5nTWFya2VyKAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMp
OwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgICpyZXN1
bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7CisgICAgKnJlc3VsdCA9IGNvcmVG
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMDI2
LDExICsxMDI2LDExIEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24oQlNUUiBk
aXJlY3Rpb24pCiAKICAgICBTdHJpbmcgZGlyZWN0aW9uU3RyaW5nKGRpcmVjdGlvbiwgU3lzU3Ry
aW5nTGVuKGRpcmVjdGlvbikpOwogICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gImF1dG8iKQot
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1
cmFsV3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIGVsc2UgaWYg
KGRpcmVjdGlvblN0cmluZyA9PSAibHRyIikKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9S
aWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAi
cnRsIikKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24p
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzZWxlY3RlZFN0cmluZygKICAgICBpZiAoIWNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFN0cmluZyB0ZXh0ID0gY29yZUZy
YW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpKTsKKyAgICBTdHJpbmcgdGV4dCA9IGNvcmVGcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb3JlRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
KTsKIAogICAgICpyZXN1bHQgPSBCU3RyaW5nKHRleHQpLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
U19PSzsKQEAgLTEwNjQsNyArMTA2NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RnJhbWU6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2Vs
ZWN0QWxsIikuZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0dXJu
IFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU0Nzc2ZmRlMDQzZDUwYzE4NGNjYzJmYTYz
NmEzMjlmNmQyMjAzNDAuLmU2MjZiNzg0ZjliZWFhODdhZGMwOThmYTk4NGJkNDBmMzY3NGNjNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xODEyLDExICsxODEyLDExIEBAIGJvb2wgV2ViVmll
dzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8qbFBhcmFtKi8pCiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFs
bDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0gICAgICAgICAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgp
OwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0xOTYzLDcgKzE5NjMsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICBpZiAoIWtleUV2ZW50IHx8IGtl
eUV2ZW50LT5pc1N5c3RlbUtleSgpKSAgLy8gZG8gbm90IHRyZWF0IHRoaXMgYXMgdGV4dCBpbnB1
dCBpZiBpdCdzIGEgc3lzdGVtIGtleSBldmVudAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRl
cnByZXRLZXlFdmVudChldnQpKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOwogCiAgICAgaWYgKGtl
eUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAv
LyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRl
Y2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBF
ZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC0xOTc5LDcgKzE5NzksNyBAQCBib29sIFdlYlZp
ZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICBp
ZiAoZXZ0LT5jaGFyQ29kZSgpIDwgJyAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgp
LCBldnQpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldnQtPmtleUV2
ZW50KCktPnRleHQoKSwgZXZ0KTsKIH0KIAogYm9vbCBXZWJWaWV3OjprZXlEb3duKFdQQVJBTSB2
aXJ0dWFsS2V5Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lzdGVtS2V5RG93bikKQEAgLTM0
MjksNyArMzQyOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6dXBkYXRl
Rm9jdXNlZEFuZEFjdGl2ZVN0YXRlKCkKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoQlNUUiBuYW1lLCBCU1RSIHZhbHVlKQogewot
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0
b3IoKS0+Y29tbWFuZCh0b1N0cmluZyhuYW1lKSkuZXhlY3V0ZSh0b1N0cmluZyh2YWx1ZSkpOwor
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0
b3IoKS5jb21tYW5kKHRvU3RyaW5nKG5hbWUpKS5leGVjdXRlKHRvU3RyaW5nKHZhbHVlKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM2NTYsNyArMzY1Niw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRUZXh0KAogICAgIGlmICghZm9jdXNlZEZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIGZyYW1lU2VsZWN0ZWRUZXh0
ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIGZy
YW1lU2VsZWN0ZWRUZXh0ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsK
ICAgICAqdGV4dCA9IFN5c0FsbG9jU3RyaW5nTGVuKGZyYW1lU2VsZWN0ZWRUZXh0LmNoYXJhY3Rl
cnMoKSwgZnJhbWVTZWxlY3RlZFRleHQubGVuZ3RoKCkpOwogICAgIGlmICghKnRleHQgJiYgZnJh
bWVTZWxlY3RlZFRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpA
QCAtNDI2NSwxNCArNDI2NSwxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OnBhc3RlRW5hYmxlZCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRl
RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsK
LSAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRGVsZXRl
KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OmVkaXRpbmdFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgKmVuYWJs
ZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRp
dG9yKCkuY2FuRWRpdCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00MzI0LDcgKzQzMjQs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpCiB7CiAgICAgUG9zaXRpb24g
c3RhcnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3Rh
cnQoKTsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmluc2VydFRleHQodG9TdHJpbmcodGV4dCksIDApOworICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRU
ZXh0KHRvU3RyaW5nKHRleHQpLCAwKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rp
b24oKS0+c2V0QmFzZShzdGFydCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MzY4LDI4ICs0
MzY4LDI4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6YXBwbHlTdHlsZSgK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29weSggCiAgICAgICAgIC8qIFtp
bl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhl
Y3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmN1dCggCiAgICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJDdXQi
KS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYXN0ZSggCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5k
KCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
Y29weVVSTCggCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1cmwpCiB7Ci0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb3B5VVJM
KE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvcHlVUkwo
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtNDQxMSw3ICs0NDExLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3OjpwYXN0ZUZvbnQoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmRl
bGV0ZV8oIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS0+Y29tbWFuZCgiRGVsZXRlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC00NDkzLDcgKzQ0OTMsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNoZWNrU3BlbGxpbmcoCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAgICAgfQogICAgIAotICAgIGNvcmUobV9tYWluRnJhbWUpLT5l
ZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7CisgICAgY29yZShtX21haW5GcmFt
ZSktPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgIHJldHVybiBTX09L
OwogfQogICAgIApAQCAtNDUxMiw3ICs0NTEyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpzaG93R3Vlc3NQYW5lbCgKICAgICAgICAgbV9lZGl0aW5nRGVsZWdhdGUtPnNo
b3dTcGVsbGluZ1VJKEZBTFNFKTsKICAgICB9CiAgICAgCi0gICAgY29yZShtX21haW5GcmFtZSkt
PmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CisgICAgY29yZShtX21h
aW5GcmFtZSktPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKICAgICBt
X2VkaXRpbmdEZWxlZ2F0ZS0+c2hvd1NwZWxsaW5nVUkoVFJVRSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CkBAIC01MzM5LDcgKzUzMzksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmxvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3KAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC01NDU0LDcgKzU0NTQsNyBAQCB2b2lkIFdlYlZpZXc6OnBy
ZXBhcmVDYW5kaWRhdGVXaW5kb3coRnJhbWUqIHRhcmdldEZyYW1lLCBISU1DIGhJbnB1dENvbnRl
eHQpCiAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGVtcFJhbmdlID0gcmFuZ2UtPmNs
b25lUmFuZ2UoZWMpOwotICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Zmly
c3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKKyAgICAgICAgY2FyZXQgPSB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKICAgICB9
CiAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGNhcmV0
KTsKICAgICBDQU5ESURBVEVGT1JNIGZvcm07CkBAIC01NDcyLDcgKzU0NzIsNyBAQCB2b2lkIFdl
YlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3coRnJhbWUqIHRhcmdldEZyYW1lLCBISU1DIGhJ
bnB1dENvbnRleHQpCiB2b2lkIFdlYlZpZXc6OnJlc2V0SU1FKEZyYW1lKiB0YXJnZXRGcmFtZSkK
IHsKICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+
Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbmNl
bENvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAoSElNQyBoSW5wdXRDb250ZXh0ID0gZ2V0SU1NQ29u
dGV4dCgpKSB7CiAgICAgICAgIElNTURpY3Q6OmRpY3QoKS5ub3RpZnlJTUUoaElucHV0Q29udGV4
dCwgTklfQ09NUE9TSVRJT05TVFIsIENQU19DQU5DRUwsIDApOwpAQCAtNTQ4Nyw3ICs1NDg3LDcg
QEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVTZWxlY3Rpb25Gb3JJTUUoKQogICAgIGlmICghdGFyZ2V0
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LT5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCisgICAgaWYgKCF0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgp
KQogICAgICAgICByZXNldElNRSh0YXJnZXRGcmFtZSk7CiB9CiAKQEAgLTU2NDMsNyArNTY0Myw3
IEBAIGJvb2wgV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghdGFyZ2V0RnJhbWUg
fHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghdGFyZ2V0RnJh
bWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyh0YXJnZXRGcmFtZSwgaElucHV0Q29u
dGV4dCk7CkBAIC01NjUzLDcgKzU2NTMsNyBAQCBib29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRp
b24oTFBBUkFNIGxwYXJhbSkKICAgICAgICAgaWYgKCFnZXRDb21wb3NpdGlvblN0cmluZyhoSW5w
dXRDb250ZXh0LCBHQ1NfUkVTVUxUU1RSLCBjb21wb3NpdGlvblN0cmluZykgJiYgbHBhcmFtKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgICAgICB0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CisgICAgICAg
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJp
bmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBjb21wb3NpdGlvblN0cmluZzsKICAg
ICAgICAgaWYgKCFnZXRDb21wb3NpdGlvblN0cmluZyhoSW5wdXRDb250ZXh0LCBHQ1NfQ09NUFNU
UiwgY29tcG9zaXRpb25TdHJpbmcpKQpAQCAtNTY3NCw3ICs1Njc0LDcgQEAgYm9vbCBXZWJWaWV3
OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFyYW0pCiAKICAgICAgICAgaW50IGN1cnNvclBv
c2l0aW9uID0gTE9XT1JEKElNTURpY3Q6OmRpY3QoKS5nZXRDb21wb3NpdGlvblN0cmluZyhoSW5w
dXRDb250ZXh0LCBHQ1NfQ1VSU09SUE9TLCAwLCAwKSk7CiAKLSAgICAgICAgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywg
Y3Vyc29yUG9zaXRpb24sIDApOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0Q29t
cG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uLCAw
KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2ODYsOCArNTY4Niw4IEBAIGJvb2wg
V2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbigpCiAgICAgLy8gSWYgdGhlIGNvbXBvc2l0aW9u
IGhhc24ndCBiZWVuIGNvbmZpcm1lZCB5ZXQsIGl0IG5lZWRzIHRvIGJlIGNhbmNlbGxlZC4KICAg
ICAvLyBUaGlzIGhhcHBlbnMgYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIGZyb20g
aW5saW5lIGlucHV0IGhvbGUuCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKHRhcmdldEZyYW1l
ICYmIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKLSAgICAgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nKCkpOworICAgIGlm
ICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkK
KyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmco
KSk7CiAKICAgICBpZiAobV9pbklNRUNvbXBvc2l0aW9uKQogICAgICAgICBtX2luSU1FQ29tcG9z
aXRpb24tLTsKQEAgLTU3MTIsMTQgKzU3MTIsMTQgQEAgYm9vbCBXZWJWaWV3OjpvbklNRU5vdGlm
eShXUEFSQU0gd3BhcmFtLCBMUEFSQU0sIExSRVNVTFQqKQogCiBMUkVTVUxUIFdlYlZpZXc6Om9u
SU1FUmVxdWVzdENoYXJQb3NpdGlvbihGcmFtZSogdGFyZ2V0RnJhbWUsIElNRUNIQVJQT1NJVElP
TiogY2hhclBvcykKIHsKLSAgICBpZiAoY2hhclBvcy0+ZHdDaGFyUG9zICYmICF0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCisgICAgaWYgKGNoYXJQb3MtPmR3Q2hhclBv
cyAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIEludFJlY3QgY2FyZXQ7Ci0gICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkgPyB0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKSA6IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgeworICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkgPyB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpIDogdGFyZ2V0RnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHRlbXBSYW5nZSA9IHJhbmdlLT5j
bG9uZVJhbmdlKGVjKTsKICAgICAgICAgdGVtcFJhbmdlLT5zZXRTdGFydCh0ZW1wUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKGVjKSwgdGVtcFJhbmdlLT5zdGFydE9mZnNldChlYykgKyBjaGFyUG9zLT5k
d0NoYXJQb3MsIGVjKTsKLSAgICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmZp
cnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CisgICAgICAgIGNhcmV0ID0gdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7CiAgICAg
fQogICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhjYXJl
dCk7CiAgICAgY2hhclBvcy0+cHQueCA9IGNhcmV0LngoKTsKQEAgLTU3NTIsNyArNTc1Miw3IEBA
IExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0KFdQQVJBTSByZXF1ZXN0LCBMUEFSQU0gZGF0
YSkKIHsKICAgICBMT0coVGV4dElucHV0LCAib25JTUVSZXF1ZXN0ICVzIiwgaW1lUmVxdWVzdE5h
bWUocmVxdWVzdCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAo
IXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAocmVxdWVzdCkgewpAQCAtNjg4MywxNCArNjg4
MywxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNldENvbXBvc2l0aW9u
Rm9yVGVzdGluZygKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlm
ICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHIgPSB0b1N0cmluZyhjb21wb3NpdGlvbik7CiAKICAg
ICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5l
cy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHIubGVuZ3RoKCks
IENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRD
b21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0
aCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyLCB1
bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtNjkwNCw3ICs2OTA0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpo
YXNDb21wb3NpdGlvbkZvclRlc3RpbmcoLyogW291dCwgcmV0dmFsXSAqLwogICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IGZyYW1lICYmIGZy
YW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICAqcmVzdWx0ID0gZnJhbWUgJiYg
ZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTY5MTUsMTUgKzY5MTUsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
Ojpjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKC8qIFtpbl0gKi8gQlNUUgogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyBjb21wb3NpdGlv
blN0ciA9IHRvU3RyaW5nKGNvbXBvc2l0aW9uKTsKIAogICAgIGlmIChjb21wb3NpdGlvblN0ci5p
c051bGwoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOwogCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIpOworICAgIGZy
YW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIpOwogCiAgICAg
cmV0dXJuIFNfT0s7CiB9CkBAIC02OTM0LDEwICs2OTM0LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6Y29tcG9zaXRpb25SYW5nZUZvclRlc3RpbmcoLyogW291dF0gKi8g
VUlOVCoKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCk7
CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJh
bmdlKCk7CiAKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtNjk3
OCw3ICs2OTc4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENv
bnRhaW5lcigpKTsKICAgICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKICAgICAgCi0g
ICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5n
ZS5nZXQoKSk7CisgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZv
clJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZXN1bHRJbnRSZWN0ID0gZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKIAogICAgIHJlc3VsdFJlY3QtPmxlZnQgPSByZXN1bHRJ
bnRSZWN0LngoKTsKQEAgLTY5OTgsNyArNjk5OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZvclRlc3RpbmcoLyogW291dF0gKi8gVUlOVCogbG9j
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkUmFuZ2UoKTsKIAogICAg
IHNpemVfdCBsb2NhdGlvblNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0Uu
Y3BwCmluZGV4IGM5MWVjOWY4MjAyYzg4YTZjMWUyZDhhMjk3YjY1Y2JhOTRkMmYyOTIuLjY0NThk
ZjZmOGE3ODg0Nzg5ZTgwODllZDQ0MTEyYWUyYWZhNzU5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCkBA
IC0zOTUsNyArMzk1LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRl
cnByZXRLZXlFdmVudChldmVudCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKIAogICAgIGlm
IChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2
aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDE1LDcgKzQxNSw3IEBAIGJvb2wgRWRp
dG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQq
IGV2ZW50KQogICAgIGlmIChrZXlFdmVudC0+Y3RybEtleSgpIHx8IGtleUV2ZW50LT5hbHRLZXko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldmVudCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2
ZW50KTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKaW5k
ZXggOThhNDA0YzAyYWExYzk4MWJlYWU0OTUyMDY2MGZiNjEzN2MyZGYxNi4uOTBhNTE0ODYwZWY5
NTdmYTk2MmJmNmM1M2I5YjAwN2Y2YTg5NzI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93
bmxvYWRVUkwoY29uc3QgS1VSTCYpCiAjaWYgIVBMQVRGT1JNKE1BQykKIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOwor
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7
CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIFN0cmluZyBlbmNvZGVk
ID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFyY2hTdHJpbmcpOwogICAgIGVuY29k
ZWQucmVwbGFjZSgiJTIwIiwgIisiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBjMTcz
YWJjNmZhOGJkYjJmN2Y1MmRhYjc1YzUxNjg5NGU2NmMyMGIyLi5hOGI2MmQxNWJlYmI4ZWRkMzEz
M2ZjNDI5ZGUwZTViNWM1ZjhkMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbihG
cmFtZSogZnJhbWUpCiAgICAgaWYgKHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgJiYgZnJhbWUt
PnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKICAgICAgICAgYm9vbCBvbGRTZWxlY3Rpb25Nb2Rl
ID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxlY3Rpb25Nb2RlKCk7CiAg
ICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUo
dHJ1ZSk7Ci0gICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2Vs
ZWN0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZnJh
bWUtPmVkaXRvcigpLT5jYW5TbWFydENvcHlPckRlbGV0ZSgpLCBmcmFtZSk7CisgICAgICAgIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0aW9uKGZyYW1lLT5zZWxl
Y3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPmVkaXRvcigpLmNhblNt
YXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBh
c3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZShvbGRTZWxlY3Rpb25Nb2RlKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2Vm
bC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcAppbmRleCA3MDEwYThmNzdjMWY1
YTMxMDA5ZjVhYThiNzBjMmEyOGQzMmJiM2EyLi5jNDJlYzM3YmQ2NDYxN2VkYzFkMDAwNjVkNzdl
MWZmYjZlMGZmZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRN
ZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAg
IGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIEZJWE1FOiBzZW5kaW5nIHN5bmMgbWVzc2FnZSBtaWdodCBtYWtlIGlucHV0
IGxhZ2dpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCA2N2Zk
YzFmNDQ0ZWFkNmJhOGNhNzkxODg0ZmQ1ODE5ZjgyNGYwYzgxLi45ODg5YTlkNjgxMDc1NzUxMDYw
ODlhYmY5ZTc4Y2IxM2FiYzBiNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0
ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1lLCBWZWN0b3I8V1RGOjpTdHIKIHsKICAgICBW
ZWN0b3I8RWRpdG9yOjpDb21tYW5kPiBjb21tYW5kczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHBlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCk7IGkrKykgewotICAgICAgICBFZGl0b3I6
OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChwZW5kaW5nRWRpdG9y
Q29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBj
b21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQocGVuZGluZ0VkaXRvckNvbW1hbmRzLmF0
KGkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoY29tbWFuZC5pc1RleHRJbnNlcnRpb24o
KSAmJiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC05NSwxNCArOTUsMTQgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBPbmx5IGFs
bG93IHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgZWRpdGFi
bGUuCi0gICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5k
aW5nRWRpdG9yQ29tbWFuZHMsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgeworICAgICAg
ICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgcGVuZGluZ0VkaXRvckNv
bW1hbmRzLCBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKSkgewogICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBj
YW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
VGhpcyBpcyBqdXN0IGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9uLCBzbyB3YWl0IHRvIGV4ZWN1dGUg
dGhlIGluc2VydGlvbgpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChwbGF0Zm9y
bUV2ZW50LT5jdHJsS2V5KCkgfHwgcGxhdGZvcm1FdmVudC0+YWx0S2V5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVu
dC0+dGV4dCgpLCBldmVudCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHBs
YXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5t
bQppbmRleCAwZmNhM2I5OGZmYzZiZDlkZjUwNjMyN2ExMzlhZGI1NzQ3OGYzZjU4Li4zYzIzMGVi
ZTQ0YWM0ZTczMzI2YjRjNmJkOTU4NDgxOTNjZjNiMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2Vh
cmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcg
c2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNlYXJj
aFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHNlYXJjaFN0cmluZykpOwpAQCAtODUsNyAr
ODUsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KCkK
ICAgICBpZiAoIXNlbGVjdGlvbkZyYW1lKQogICAgICAgICBzZWxlY3Rpb25GcmFtZSA9IG1haW5G
cmFtZTsKIAotICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IHNlbGVjdGlvbkZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNlbGVjdGlvbkZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IHNlbGVjdGlvbkZyYW1l
LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNlbGVjdGlvbkZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKSk7CiAgICAgCiAgICAgaWYgKHNlbGVjdGVkU3RyaW5nLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmlu
ZGV4IDgyMzViYzZkODgwZjM2ZmEwNTU1YTI3NTMzMGQ3NmUyN2UzNTVmZDUuLmUwYjhhYzgxMmI4
NmFhMjY5YjU3ZGUzYTdmNmYyYTAyNmQzYmEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JD
bGllbnRNYWMubW0KQEAgLTEzNiwxMiArMTM2LDEyIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpz
ZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiBzdGF0aWMgdm9pZCBjaGFuZ2VX
b3JkQ2FzZShXZWJQYWdlKiBwYWdlLCBTRUwgc2VsZWN0b3IpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRlKCk7CiAKLSAgICBOU1N0cmluZyAqc2Vs
ZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICBOU1N0cmluZyAqc2VsZWN0ZWRTdHJp
bmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgIHBhZ2UtPnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChm
cmFtZSwgW3NlbGVjdGVkU3RyaW5nIHBlcmZvcm1TZWxlY3RvcjpzZWxlY3Rvcl0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBl
MjYwNTZlOTI4NjljZDU1OWQ4MDM3OTUzMzU5ZDRiMjdiNjdmMWNmLi43MjZjYTA2ZTc5MGIwNDA3
NDZiMWFiNDgyZWM4Yjc3ZWQwYzNhNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTMyNCw3ICszMjQsNyBAQCBTdHJpbmcgV2ViRnJh
bWU6OnNlbGVjdGlvbkFzU3RyaW5nKCkgY29uc3QKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRpc3BsYXlT
dHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRl
eHQoKSk7CisgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiB9CiAKIEludFNp
emUgV2ViRnJhbWU6OnNpemUoKSBjb25zdApAQCAtNzAwLDE1ICs3MDAsMTUgQEAgU3RyaW5nIFdl
YkZyYW1lOjptaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0
CiAKIHZvaWQgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24pCiB7Ci0gICAgaWYgKCFtX2NvcmVGcmFtZSB8fCAhbV9jb3JlRnJhbWUtPmVkaXRvcigpKQor
ICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkaXJlY3Rp
b24gPT0gImF1dG8iKQotICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0
aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImx0ciIpCi0gICAgICAgIG1fY29yZUZy
YW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5n
RGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGly
ZWN0aW9uID09ICJydGwiKQotICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIG1f
Y29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdy
aXRpbmdEaXJlY3Rpb24pOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk5NDdlZWJkNjQ3NmVjNzNi
NjYwZTJjMDA4OGRjMjc3ODEyMDVlMWQuLmYwMWQ1Y2FmNjViN2IxNGNiNTFhOGJlZDQ2OTFhOWUy
YTc3YmQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTYwMSw4ICs2MDEsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0
ZSgpIGNvbnN0CiAgICAgcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIHJlc3VsdC5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKICAg
ICByZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNz
d29yZEZpZWxkKCk7Ci0gICAgcmVzdWx0Lmhhc0NvbXBvc2l0aW9uID0gZnJhbWUtPmVkaXRvcigp
LT5oYXNDb21wb3NpdGlvbigpOwotICAgIHJlc3VsdC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNl
bGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UoKTsKKyAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKTsKKyAgICByZXN1bHQuc2hvdWxkSWdub3JlQ29tcG9zaXRpb25TZWxl
Y3Rpb25DaGFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuaWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25D
aGFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIHNpemVfdCBsb2NhdGlvbiA9IDA7CkBA
IC02NDEsOCArNjQxLDggQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25z
dAogICAgICAgICByZXN1bHQuZWRpdG9yUmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9X
aW5kb3coc2VsZWN0aW9uUm9vdC0+cGl4ZWxTbmFwcGVkQm91bmRpbmdCb3goKSk7CiAKICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIGlmIChyZXN1bHQuaGFzQ29tcG9zaXRpb24gJiYgKHJh
bmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCkpKSB7Ci0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rpb24ocmVzdWx0LmFuY2hvclBvc2l0
aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOworICAgIGlmIChyZXN1bHQuaGFzQ29tcG9zaXRp
b24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKSkpIHsKKyAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmdldENvbXBvc2l0aW9uU2VsZWN0aW9uKHJlc3VsdC5hbmNo
b3JQb3NpdGlvbiwgcmVzdWx0LmN1cnNvclBvc2l0aW9uKTsKIAogICAgICAgICByZXN1bHQuY29t
cG9zaXRpb25SZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyYW5nZS0+Ym91
bmRpbmdCb3goKSk7CiAgICAgfQpAQCAtNjU3LDcgKzY1Nyw3IEBAIEVkaXRvclN0YXRlIFdlYlBh
Z2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCi0gICAgICAg
IHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmcmFt
ZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKSk7CisgICAgICAgIHJl
c3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmcmFtZS0+
ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpKTsKIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgb25seSB0cmFuc2ZlciBpbm5lclRleHQgd2hlbiBpdCBjaGFuZ2VzIGFuZCBk
byB0aGlzIG9uIHRoZSBVSSBzaWRlLgogICAgIGlmIChyZXN1bHQuaXNDb250ZW50RWRpdGFibGUg
JiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCkgewpAQCAtNzY4LDcgKzc2OCw3IEBAIHZvaWQg
V2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUs
IGNvbnN0IFN0cmluZyYgYXJnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKGFyZ3VtZW50KTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZShhcmd1bWVudCk7
CiB9CiAKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSkKQEAgLTc4MCw3ICs3ODAsNyBAQCBib29sIFdlYlBhZ2U6OmlzRWRpdGlu
Z0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiAgICAgaWYgKFBsdWdp
blZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbW1hbmRO
YW1lKTsKICAgICAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSk7CiAgICAgcmV0dXJuIGNvbW1hbmQu
aXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5hYmxlZCgpOwogfQogICAgIApAQCAtMTc3OCw3
ICsxNzc4LDcgQEAgdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAgICAgaWYgKFBsdWdpblZpZXcq
IHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAg
ICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbW1h
bmROYW1lKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CisgICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1h
bmROYW1lKTsKICAgICAgICAgICAgIHN0YXRlID0gY29tbWFuZC5zdGF0ZSgpOwogICAgICAgICAg
ICAgaXNFbmFibGVkID0gY29tbWFuZC5pc1N1cHBvcnRlZCgpICYmIGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgIH0KQEAgLTI1NjAsNyArMjU2MCw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxl
RWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmICgha2V5RXZl
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJw
cmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5v
dWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1
c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwK
QEAgLTI1NzMsMTQgKzI1NzMsMTQgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9h
cmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQu
Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0
IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4g
dW5leHBlY3RlZCBiZWhhdmlvdXIKICAgICBpZiAoZXZ0LT5jaGFyQ29kZSgpIDwgJyAnKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRU
ZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuaW5zZXJ0VGV4dChldnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZ0KTsKIH0KICNlbmRp
ZgogCkBAIC0yODU5LDcgKzI4NTksNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVOb3RpZmlj
YXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsCiB2b2lkIFdl
YlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYWR2YW5j
ZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCkBAIC0yODg2LDE3
ICsyODg2LDE3IEBAIHZvaWQgV2ViUGFnZTo6dW5tYXJrQWxsQmFkR3JhbW1hcigpCiAjaWYgVVNF
KEFQUEtJVCkKIHZvaWQgV2ViUGFnZTo6dXBwZXJjYXNlV29yZCgpCiB7Ci0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT51cHBlcmNh
c2VXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCktPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb3dl
cmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkubG93ZXJjYXNlV29y
ZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhcGl0YWxpemVXb3JkKCkKIHsKLSAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNhcGl0
YWxpemVXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLmNhcGl0YWxpemVXb3JkKCk7CiB9CiAjZW5kaWYKICAgICAKQEAg
LTI5MzMsNyArMjkzMyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0
KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGJvb2wgc2VsZWN0UmVw
bGFjZW1lbnQgPSB0cnVlOwogICAgIGJvb2wgc21hcnRSZXBsYWNlID0gZmFsc2U7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVj
dFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCku
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJl
cGxhY2UpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKQEAgLTM1OTYsNyAr
MzU5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29u
c3QgU3RyaW5nJiByZXN1bHQpCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQocmVzdWx0KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlS
ZXN1bHQocmVzdWx0KTsKIH0KICNlbmRpZgogCkBAIC0zNjE4LDI5ICszNjE4LDI5IEBAIHZvaWQg
V2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwg
ZG91YmxlIHRpbWUpCiB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25z
dCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5n
dGgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRl
cmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNv
bXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBDb2xvcihDb2xvcjo6YmxhY2spLCBmYWxzZSkpOwot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVu
ZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRD
b21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxl
bmd0aCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCkKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5oYXNDb21w
b3NpdGlvbigpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9z
aXRpb24oKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5n
KGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNvbXBvc2l0aW9uU3RyaW5nLmlzTnVsbCgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bmZpcm1Db21wb3NpdGlvbigpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1D
b21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6Om51bVdoZWVsRXZlbnRIYW5kbGVy
c0NoYW5nZWQodW5zaWduZWQgbnVtV2hlZWxFdmVudEhhbmRsZXJzKQpAQCAtMzc5NiwxOSArMzc5
NiwxOSBAQCBzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9yRWRpdGluZyhXZWJQYWdlKiBwYWdl
KQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIGlmICghdGFyZ2V0RnJhbWUg
fHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKSkKKyAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEVkaXRvciogZWRpdG9yID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigp
OwotICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICBpZiAo
ZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIHZlcmlmeSB0
aGUgcGFyZW50IG5vZGUgb2YgdGhpcyBJTUUgY29tcG9zaXRpb24gbm9kZSBhcmUKICAgICAgICAg
Ly8gZWRpdGFibGUgYmVjYXVzZSBKYXZhU2NyaXB0IG1heSBkZWxldGUgYSBwYXJlbnQgbm9kZSBv
ZiB0aGUgY29tcG9zaXRpb24KICAgICAgICAgLy8gbm9kZS4gSW4gdGhpcyBjYXNlLCBXZWJLaXQg
Y3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRoZSBwYXJlbnQKICAgICAgICAgLy8g
bm9kZSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnkgbG9uZ2VyLgotICAgICAgICBpZiAoUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKSkgeworICAgICAg
ICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3IuY29tcG9zaXRpb25SYW5nZSgp
KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAg
ICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zODI1LDggKzM4MjUsNyBAQCB2b2lkIFdlYlBhZ2U6
OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2
NF90IHNlbGVjdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRWRpdG9yKiBlZGl0b3Ig
PSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7Ci0gICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29t
cG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogCiAgICAgaWYgKHNlbGVjdGlvblN0YXJ0ID09
IC0xKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVD
aGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKQEAgLTM4NTgsMTkgKzM4NTcsMTkgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGVybGluZT4gdW4KIAogICAgICAgICBFbGVtZW50KiBzY29wZSA9IHRhcmdldEZyYW1lLT5z
ZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgICAgICBSZWZQdHI8UmFuZ2U+
IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoKHNjb3BlLCByZXBsYWNlbWVudFN0YXJ0LCByZXBsYWNlbWVudExlbmd0aCk7Ci0gICAgICAg
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFu
Z2UodHJ1ZSk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKICAgICAgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgp
LCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkt
PnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKKyAgICAgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZh
bHNlKTsKICAgICB9CiAKLSAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOworICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogewogICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSB0
YXJnZXRGcmFtZUZvckVkaXRpbmcodGhpcykpCi0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3Io
KS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNh
bmNlbENvbXBvc2l0aW9uKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAppbmRleCBl
NDczMTAzMDRkODE2OGJhOTg5MDc3M2EyYzljZWVlYmVjYWQ5ZDZmLi4wOTZhMDMwZDc1NGRiZTg5
OTE1MzE4MzA5NjQyOGEzNTY0ZGVkMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9u
U3RyaW5nKQogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
KTsKKyAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0
aW9uU3RyaW5nKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+JiB1bmRlcmxpbmVzLCB1aW50NjRfdCBjdXJzb3JQb3NpdGlvbikKQEAgLTIxMiw3
ICsyMTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29t
cG9zaXRpb25TdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDbwogICAgIGlmICghdGFyZ2V0RnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsK
KyAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJp
bmcsIHVuZGVybGluZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpj
YW5jZWxDb21wb3NpdGlvbigpCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBXZWJQYWdlOjpjYW5j
ZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5jYW5jZWxDb21wb3NpdGlvbigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpp
bmRleCBiNzEyNTMwZWE2Zjk5ZThlYjBiNDBjZGEzNDgwOWVhOWZjYTYwMjBmLi43OGE3OGMxZTc0
OTZjNWU2MDJmNTZjMjcyZTcxZWI1ZGI1NDU5NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0xNjgsMTYgKzE2OCwx
NiBAQCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbQogICAgIGJvb2wgZXZlbnRXYXNIYW5kbGVkID0g
ZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21tYW5kcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUgPT0gImluc2VydFRleHQ6Iikg
ewotICAgICAgICAgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkp
OworICAgICAgICAgICAgQVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7
CiAKLSAgICAgICAgICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgICAg
ICAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQg
Ynkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0Lgog
ICAgICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBz
Y3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBm
cmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoY29tbWFuZHNbaV0udGV4dCwgZXZlbnQpOworICAg
ICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGNv
bW1hbmRzW2ldLnRleHQsIGV2ZW50KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmRO
YW1lRm9yU2VsZWN0b3JOYW1lKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSk7CisgICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1h
bmROYW1lRm9yU2VsZWN0b3JOYW1lKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSk7CiAgICAgICAg
ICAgICBpZiAoY29tbWFuZC5pc1N1cHBvcnRlZCgpKSB7CiAgICAgICAgICAgICAgICAgYm9vbCBj
b21tYW5kRXhlY3V0ZWRCeUVkaXRvciA9IGNvbW1hbmQuZXhlY3V0ZShldmVudCk7CiAgICAgICAg
ICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yOwpAQCAt
MjMzLDcgKzIzMyw3IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQsIGJvb2wgc2F2ZUNvbW1hbmRzCiAgICAgICAgIC8vIChlLmcu
IFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBvciBFbnRlcikuCiAgICAgICAgIGJv
b2wgaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyA9IGZhbHNlOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3JOYW1lKGNvbW1hbmRz
W2ldLmNvbW1hbmROYW1lKSkuaXNUZXh0SW5zZXJ0aW9uKCkpCisgICAgICAgICAgICBpZiAoZnJh
bWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNb
aV0uY29tbWFuZE5hbWUpKS5pc1RleHRJbnNlcnRpb24oKSkKICAgICAgICAgICAgICAgICBoYXZl
VGV4dEluc2VydGlvbkNvbW1hbmRzID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBJZiB0
aGVyZSBhcmUgbm8gdGV4dCBpbnNlcnRpb24gY29tbWFuZHMsIGRlZmF1bHQga2V5ZG93biBoYW5k
bGVyIGlzIHRoZSByaWdodCB0aW1lIHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmRzLgpAQCAtMjY1LDcg
KzI2NSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0
LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuCiAgICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2Uu
Z2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0
YXJ0LCBzZWxlY3Rpb25FbmQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRp
b24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAgICAg
fQogCiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZv
aWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOwogCiAgICAgbmV3U3Rh
dGUgPSBlZGl0b3JTdGF0ZSgpOwogfQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViUGFnZTo6
Y2FuY2VsQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbigpOwogCiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0
ZSgpOwogfQpAQCAtMjk5LDEzICsyOTksMTMgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW4KICAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9
CiAKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlm
ICghZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gQW4gaW5z
ZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFp
biBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNl
IGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgIGhh
bmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQodGV4dCwgbV9rZXlib2FyZEV2ZW50
QmVpbmdJbnRlcnByZXRlZCk7CisgICAgICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCkuaW5z
ZXJ0VGV4dCh0ZXh0LCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKICAgICB9IGVs
c2UgewogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b25maXJtQ29tcG9zaXRpb24odGV4dCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJt
Q29tcG9zaXRpb24odGV4dCk7CiAgICAgfQogCiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgp
OwpAQCAtMzIxLDggKzMyMSw4IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0CiAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxh
Y2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQogCi0gICAg
QVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpOwotICAgIGhhbmRsZWQg
PSBmcmFtZS0+ZWRpdG9yKCktPmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRl
cm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CisgICAg
QVNTRVJUKCFmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSk7CisgICAgaGFuZGxlZCA9
IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOwogICAgIG5l
d1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0KIApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3Ro
KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKTsKKyAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAgICBz
aXplX3QgbG9jYXRpb25TaXplOwogICAgIHNpemVfdCBsZW5ndGhTaXplOwogICAgIGlmIChyYW5n
ZSAmJiBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGZyYW1lLT5z
ZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHJhbmdl
LmdldCgpLCBsb2NhdGlvblNpemUsIGxlbmd0aFNpemUpKSB7CkBAIC00MzcsNyArNDM3LDcgQEAg
dm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlv
biwgdWludDY0X3QgbGVuZ3RoLCBXZWIKICAgICBBU1NFUlQocmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCkpOwogICAgIEFTU0VSVChyYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgICAKLSAgICBJbnRS
ZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgp
KTsKKyAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uo
cmFuZ2UuZ2V0KCkpOwogICAgIHJlc3VsdFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1Rv
V2luZG93KHJlY3QpOwogfQogCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBXZWJQYWdlOjpyZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgYm9v
bCYgcmUKICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgZnJhbWUtPmVkaXRvcigpLT5yZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS5yZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpOwogICAgIHJlc3VsdCA9IHRydWU7CiB9CiAKQEAgLTY3Niw3ICs2NzYs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoU3RyaW5n
JiBzdHJpbmdWYWx1ZSkKICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc3RyaW5nVmFsdWUgPSBmcmFtZS0+ZWRpdG9yKCktPnN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKKyAgICBzdHJpbmdWYWx1ZSA9IGZyYW1lLT5lZGl0
b3IoKS5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBl
LCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKQEAgLTY4NSw3
ICs2ODUsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTQogICAgIGlmICghZnJhbWUgfHwgZnJh
bWUtPnNlbGVjdGlvbigpLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmVkaXRvcigpLT5kYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBzaXplID0gMDsKICAgICAgICAg
cmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201832</attachid>
            <date>2013-05-15 08:17:06 -0700</date>
            <delta_ts>2013-05-15 08:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515081601.patch</filename>
            <type>text/plain</type>
            <size>270058</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDc3
YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5MjgwMDU2OWUuLmRkMGEzNzI3NjJiMTY3OGI0
ZmExMDUwYWJlZWM1MTg2M2E0OGVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJh
bmdlKTsKIAotICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3Qt
PnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Us
IGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggMjdmMWVkODRh
Yjg4N2U3MTNiMTIyYTY4YzIwMDE2ODFkYjRkNjY4ZC4uOTRmODY1YTRhNDk2YWY5YzI0MGI2ZGIy
NGIwYWIyODViMDFiOWJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUq
IGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAg
ICAgIE5TU3RyaW5nICpzY2hlbWUgPSBbVVJMRnJvbVBhc3RlYm9hcmQgc2NoZW1lXTsKICAgICAg
ICAgLy8gQ2Fubm90IGRyb3Agb3RoZXIgc2NoZW1lcyB1bmxlc3MgPHJkYXI6Ly9wcm9ibGVtLzEw
NTYyNjYyPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzExMTg3MzE1PiBhcmUgZml4ZWQuCiAgICAgICAg
IGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxU
b1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJp
bmddOworICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9u
aWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAg
ICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7
CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUs
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3QKICAgICAgICAgLy8g
VGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlv
biwgc28gd2Ugc2hvdWxkbid0IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgd2UgYWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0
aGluZyBub24tbG9jYWw/CiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0
dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICBy
ZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9t
UGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+
ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJz
b2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KE5TRmlsZW5hbWVzUGJvYXJkVHlwZSkpKSB7CkBAIC0xODIsNyArMTgyLDcgQEAgU3RyaW5nIERy
YWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxl
bmFtZVBvbGljeSwgU3QKICAgICAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgICAg
ICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZp
bGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYgaXNEaXJlY3RvcnkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpm
aWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpm
aWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYjMxNzQ3MzRj
NmQ3N2YxMmM0NzMwOTBjN2E2MTdjOTVmNjBiYWQ4Mi4uMTI5YTRkOWI5NTcwNjEyZjlkYTNiZDcz
OTE5YzBmMTRlNTJiMTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkK
IAogU3RyaW5nIFBhc3RlYm9hcmQ6OmdldFN0cmluZ1NlbGVjdGlvbihGcmFtZSogZnJhbWUsIFNo
b3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCBzaG91bGRTZXJpYWxpemVTZWxl
Y3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7Ci0gICAgU3RyaW5nIHRleHQgPSBzaG91bGRTZXJpYWxp
emVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBi
b2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2Vy
aWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgdGV4dC5yZXBsYWNlKG5vQnJlYWtT
cGFjZSwgJyAnKTsKICAgICByZXR1cm4gdGV4dDsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNE
YXRhKChOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCk7CiAgICAgTm9kZSogY29t
bW9uQW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoSUdOT1JFX0VYQ0VQ
VElPTik7CiAgICAgQVNTRVJUKGNvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBlbmNsb3NpbmdB
bmNob3IgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFu
Y2VzdG9yKSwgSFRNTE5hbWVzOjphVGFnKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVjdGlvbihGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZwogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCkKIHsKICAgICBOU0F0
dHJpYnV0ZWRTdHJpbmcqIGF0dHJpYnV0ZWRTdHJpbmcgPSBuaWw7Ci0gICAgUmV0YWluUHRyPFdl
YkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFkb3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFs
bG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2Uo
KS5nZXQoKSldKTsKKyAgICBSZXRhaW5QdHI8V2ViSFRNTENvbnZlcnRlcj4gY29udmVydGVyID0g
YWRvcHROUyhbW1dlYkhUTUxDb252ZXJ0ZXIgYWxsb2NdIGluaXRXaXRoRE9NUmFuZ2U6a2l0KGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpXSk7CiAgICAgaWYgKGNvbnZlcnRl
cikKICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IFtjb252ZXJ0ZXIuZ2V0KCkgYXR0cmlidXRl
ZFN0cmluZ107CiAgICAgCkBAIC0xODgsMTEgKzE4OCwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgYgogCiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7CiAgICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+ID4gY2xpZW50RGF0YTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNsaWVu
dCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7CisgICAgZnJhbWUt
PmVkaXRvcigpLmNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNsaWVudFR5cGVzLCBjbGllbnREYXRh
KTsKICAgICB0eXBlcy5hcHBlbmRWZWN0b3IoY2xpZW50VHlwZXMpOwogCiAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRUeXBlcyh0eXBlcywgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+ZGlkU2V0U2VsZWN0
aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5k
aWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjbGllbnREYXRh
W2ldLCBjbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJvYXJkTmFtZSk7CkBAIC0yNDEsNyArMjQxLDcg
QEAgc3RhdGljIHZvaWQgd3JpdGVVUkxGb3JUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2EKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwog
ICAgIAogICAgIE5TVVJMICpjb2NvYVVSTCA9IHVybDsKLSAgICBOU1N0cmluZyAqdXNlclZpc2li
bGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhj
b2NvYVVSTCk7CisgICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nID0gZnJhbWUtPmVkaXRv
cigpLmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhjb2NvYVVSTCk7CiAgICAgCiAgICAgTlNT
dHJpbmcgKnRpdGxlID0gKE5TU3RyaW5nKil0aXRsZVN0cjsKICAgICBpZiAoW3RpdGxlIGxlbmd0
aF0gPT0gMCkgewpAQCAtMzgwLDcgKzM4MCw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRl
eHQoRnJhbWUqIGZyYW1lKQogICAgICAgICAvLyBGSVhNRTogdXNpbmcgdGhlIGVkaXRvckNsaWVu
dCB0byBjYWxsIGludG8gd2Via2l0LCBmb3Igbm93LCBzaW5jZSAKICAgICAgICAgLy8gY2FsbGlu
ZyBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRpbmcg
YSBzaXphYmxlIHdlYiBvZiAKICAgICAgICAgLy8gaGVscGVyIGNvZGUgdGhhdCBzaG91bGQgZWl0
aGVyIGJlIGRvbmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCBvciBmaWd1cmVkIG91dCBpbiBhbm90aGVy
IHdheS4KLSAgICAgICAgc3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZp
c2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CisgICAgICAgIHN0cmlu
ZyA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVS
TFdpdGhTdHJpbmc6c3RyaW5nXSk7CiAgICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPiAwKQog
ICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2Fs
TWFwcGluZ107CiAgICAgfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRXaXRoUlRGKEZyYW1lKiBmcmFtZSwgTlNT
dHJpCiAgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CiAKICAg
ICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiByZXNvdXJjZXM7Ci0gICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+
ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKHN0cmluZywgcmVzb3VyY2VzKTsK
KyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFtZS0+ZWRpdG9yKCku
Y2xpZW50KCktPmRvY3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJl
c291cmNlcyk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IHJlc291cmNlcy5zaXplKCk7CiAgICAgaWYg
KHNpemUpIHsKQEAgLTUxMyw3ICs1MTMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUAogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
ICAgICAvLyBOb24taW1hZ2UgZmlsZSB0eXBlczsgX3dlYl91c2VyVmlzaWJsZVN0cmluZyBpcyBh
cHByb3ByaWF0ZSBoZXJlIGJlY2F1c2UgdGhpcyB3aWxsCiAgICAgICAgICAgICAvLyBiZSBwYXN0
ZWQgYXMgdmlzaWJsZSB0ZXh0LgotICAgICAgICAgICAgTlNTdHJpbmcgKnVybCA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6cGF0aHNbaV1dKTsKKyAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0
aHNbaV1dKTsKICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGZyYW1lLT5kb2N1
bWVudCgpLT5jcmVhdGVUZXh0Tm9kZSh1cmwpOwogICAgICAgICAgICAgcmVmTm9kZXNWZWN0b3Iu
YXBwZW5kKHRleHROb2RlLmdldCgpKTsKICAgICAgICAgICAgIG5vZGVzVmVjdG9yLmFwcGVuZCh0
ZXh0Tm9kZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
bGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5j
cHAKaW5kZXggMWJlY2RhMzEzZDhmOWQyNzI3NDVhZTU0MGQ4ZWIyZTcyNjFkZTE5NC4uNTk3Zjdl
MThhZWY4NWI5ZWUyMTQ5OGFhMzg0YWNiMmUwOWE4Y2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgQ2xpcGJv
YXJkUXQ6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiAKICAgICBpZiAo
IW1fd3JpdGFibGVEYXRhKQogICAgICAgICBtX3dyaXRhYmxlRGF0YSA9IG5ldyBRTWltZURhdGE7
Ci0gICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlw
Ym9hcmQoKTsKKyAgICBRU3RyaW5nIHRleHQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
Rm9yQ2xpcGJvYXJkKCk7CiAgICAgdGV4dC5yZXBsYWNlKFFDaGFyKDB4YTApLCBRTGF0aW4xQ2hh
cignICcpKTsKICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0VGV4dCh0ZXh0KTsKICAgICBtX3dyaXRh
YmxlRGF0YS0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJj
aGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCA1NTBhZjdhY2U5NzVjNzFlNzAzODM2N2Fk
NDhjMjUxZTgxYjRmZDkzLi43MjY0YzA5NGQyNWM1Y2IxN2E0MTY0ZGJlOWQ4MWUzN2EwNzAwODdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKQog
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9v
bCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqIGZyYW1lLCBTaG91bGRTZXJpYWxpemVTZWxl
Y3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKQogewogICAgIFFNaW1lRGF0YSogbWQgPSBuZXcgUU1pbWVEYXRhOwotICAgIFFTdHJpbmcg
dGV4dCA9IHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRl
SW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRG
b3JDbGlwYm9hcmQoKSA6IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgUVN0
cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IElu
Y2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRU
ZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAg
dGV4dC5yZXBsYWNlKFFDaGFyKDB4YTApLCBRTGF0aW4xQ2hhcignICcpKTsKICAgICBtZC0+c2V0
VGV4dCh0ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2lu
LmNwcAppbmRleCA4NzUxOTdmY2QwODQ5ZmRlOGFkMDI2YjRhMzVjNThiOTY4YjEzNWJhLi4xZWU4
MmZkMzk5MTk5YjdlZDVkOTU0ZDNhYjk0MWY4MGMzMTIyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQg
Q2xpcGJvYXJkV2luOjp3cml0ZVJhbmdlKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBGcmFtZSogZnJh
bWUpCiAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChtX3dyaXRhYmxlRGF0YU9iamVj
dC0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAgICAgICAgOjpHbG9i
YWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKIAotICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOworICAgIFN0cmluZyBzdHIgPSBmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCk7CiAgICAgcmVwbGFjZU5ld2xpbmVz
V2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uo
c3RyKTsKICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERhdGEoc3RyKTsKQEAgLTc1
OSw3ICs3NTksNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0
ZWRSYW5nZSwgRnJhbWUqIGZyYW1lKQogICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9i
YWwpOwogCiAgICAgbWVkaXVtLmhHbG9iYWwgPSAwOwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkt
PmNhblNtYXJ0Q29weU9yRGVsZXRlKCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5TbWFy
dENvcHlPckRlbGV0ZSgpKQogICAgICAgICBtX3dyaXRhYmxlRGF0YU9iamVjdC0+U2V0RGF0YShz
bWFydFBhc3RlRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggZTJkNzFkMTRiMjc0YWM3ODAy
MWFmNTQ3NThhYjc0MTA3OTVlOTZiMy4uYWM3MDZjNGM1MTAwNDI5NTE1M2UxODViNDE0MWQyYmM2
MTJmZjBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24o
UmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsCiAgICAgfQog
ICAgIAogICAgIC8vIFB1dCBwbGFpbiBzdHJpbmcgb24gdGhlIHBhc3RlYm9hcmQuIENGX1VOSUNP
REVURVhUIGNvdmVycyBDRl9URVhUIGFzIHdlbGwKLSAgICBTdHJpbmcgc3RyID0gc2hvdWxkU2Vy
aWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc3RyID0gc2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRG
b3JDbGlwYm9hcmQgPyBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkg
OiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgcmVwbGFjZU5ld2xpbmVzV2l0
aFdpbmRvd3NTdHlsZU5ld2xpbmVzKHN0cik7CiAgICAgcmVwbGFjZU5CU1BXaXRoU3BhY2Uoc3Ry
KTsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNjUyYjE4YmRjZWVlNjRkNjM3OTcyY2Yx
MjMzMTRmOGM3MjQ1YmI5OS4uNzQxMDllMWY3YWUzMTdkN2YxZWJmZjUwMmZkNDkyZTFmNTU0Y2Q3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNjQw
LDcgKzY0MCw3IEBAIFZlY3RvcjxTdHJpbmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVy
bmF0aXZlcygpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxT
dHJpbmc+KCk7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5kaWN0YXRpb25BbHRlcm5h
dGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmRpY3Rh
dGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcihtYXJrZXIpOwogfQogCiBOb2RlKiBIaXRUZXN0UmVz
dWx0Ojp0YXJnZXROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcAppbmRleCBmMjZjMTlkNzFlNWM4MzE1ZDllMThkNWIzMjkxNTZhMmRlZmJjN2My
Li43MDI2OTk2Y2MyMWE4OWFjZDdkNWUzNGNkOTdkYzkzOTc1ZjQ4NzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01NDgsOCArNTQ4LDggQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0ocm90YXRpb24o
Ym94UmVjdCwgQ2xvY2t3aXNlKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3Qg
d2UgaGF2ZSBjb21wb3NpdGlvbiB1bmRlcmxpbmVzIHRvIGRyYXcuCi0gICAgYm9vbCBjb250YWlu
c0NvbXBvc2l0aW9uID0gcmVuZGVyZXIoKS0+bm9kZSgpICYmIHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLT5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAg
Ym9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21wb3NpdGlvbiAmJiByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25Vc2VzQ3VzdG9tVW5kZXJsaW5lcygp
OworICAgIGJvb2wgY29udGFpbnNDb21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiBy
ZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbk5vZGUoKSA9PSByZW5kZXJl
cigpLT5ub2RlKCk7CisgICAgYm9vbCB1c2VDdXN0b21VbmRlcmxpbmVzID0gY29udGFpbnNDb21w
b3NpdGlvbiAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvblVzZXND
dXN0b21VbmRlcmxpbmVzKCk7CiAKICAgICAvLyBEZXRlcm1pbmUgdGhlIHRleHQgY29sb3JzIGFu
ZCBzZWxlY3Rpb24gY29sb3JzLgogICAgIENvbG9yIHRleHRGaWxsQ29sb3I7CkBAIC02NTcsOCAr
NjU3LDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogCiAgICAgICAgIGlmIChjb250YWluc0Nv
bXBvc2l0aW9uICYmICF1c2VDdXN0b21VbmRlcmxpbmVzKQogICAgICAgICAgICAgcGFpbnRDb21w
b3NpdGlvbkJhY2tncm91bmQoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LAot
ICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jb21wb3NpdGlv
blN0YXJ0KCksCi0gICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkt
PmNvbXBvc2l0aW9uRW5kKCkpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLmNvbXBvc2l0aW9uU3RhcnQoKSwKKyAgICAgICAgICAgICAgICByZW5kZXJlcigp
LT5mcmFtZSgpLT5lZGl0b3IoKS5jb21wb3NpdGlvbkVuZCgpKTsKIAogICAgICAgICBwYWludERv
Y3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZvbnQsIHRydWUp
OwogCkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICBw
YWludERvY3VtZW50TWFya2Vycyhjb250ZXh0LCBib3hPcmlnaW4sIHN0eWxlVG9Vc2UsIGZvbnQs
IGZhbHNlKTsKIAogICAgICAgICBpZiAodXNlQ3VzdG9tVW5kZXJsaW5lcykgewotICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyA9IHJlbmRl
cmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5jdXN0b21Db21wb3NpdGlvblVuZGVybGluZXMoKTsK
KyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGlu
ZXMgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS5jdXN0b21Db21wb3NpdGlvblVuZGVy
bGluZXMoKTsKICAgICAgICAgICAgIHNpemVfdCBudW1VbmRlcmxpbmVzID0gdW5kZXJsaW5lcy5z
aXplKCk7CiAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBudW1V
bmRlcmxpbmVzOyArK2luZGV4KSB7CkBAIC0xMzU5LDcgKzEzNTksNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgdG9SZW5kZXJlZERvY3VtZW50TWFya2VyKG1hcmtlciktPnNldFJlbmRl
cmVkUmVjdChtYXJrZXJSZWN0KTsKICAgICAKICAgICAvLyBPcHRpb25hbGx5IGhpZ2hsaWdodCB0
aGUgdGV4dAotICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+bWFya2VkVGV4
dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CisgICAgaWYgKHJlbmRlcmVyKCktPmZyYW1lKCkt
PmVkaXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgewogICAgICAgICBD
b2xvciBjb2xvciA9IG1hcmtlci0+YWN0aXZlTWF0Y2goKSA/CiAgICAgICAgICAgICByZW5kZXJl
cigpLT50aGVtZSgpLT5wbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIDoK
ICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCktPnBsYXRmb3JtSW5hY3RpdmVUZXh0U2Vh
cmNoSGlnaGxpZ2h0Q29sb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IGRmYjRlYjE1MGJkNTIwZTJkMDM2NTU4YTYwZmZhMDA3MzFjYjIxNGUuLmQ3MDk2
MTY1NmNmN2YyYTBmMmViYzlhYzc4MDc4ZTFhZGRhMzE4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNTI4Niw3ICs1Mjg2LDcgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0
IExheW91dFBvaW4KICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgbW92ZUNhcmV0VG9Cb3Vu
ZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE1v
dmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJvdHRvbSgpOworICAgIGJv
b2wgbW92ZUNhcmV0VG9Cb3VuZGFyeSA9IGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmJl
aGF2aW9yKCkuc2hvdWxkTW92ZUNhcmV0VG9Ib3Jpem9udGFsQm91bmRhcnlXaGVuUGFzdFRvcE9y
Qm90dG9tKCk7CiAKICAgICBpZiAoIW1vdmVDYXJldFRvQm91bmRhcnkgJiYgIWNsb3Nlc3RCb3gg
JiYgbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAgICAgICAgLy8geSBjb29yZGluYXRlIGlz
IGJlbG93IGxhc3Qgcm9vdCBsaW5lIGJveCwgcHJldGVuZCB3ZSBoaXQgaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxN2VhMTU1MjM4MjM2ZjJmYzFiYmJlOTE0Y2MwNTQ1
M2Y5NGNhNGFlLi5lOTQ1ZWYzNDY0MDNmMTczOWU2MjFlMjk3ZTU0YzY1NWRlNjYwZjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzYsMTAgKzIzNiwxMCBAQCBzdGF0
aWMgYm9vbCBtYXJrZXJUeXBlc0Zyb20oY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZQogCiBzdGF0aWMgU3BlbGxDaGVja2VyKiBzcGVsbGNoZWNrZXIo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5m
cmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c3BlbGxDaGVja2VyKCk7CisgICAgcmV0dXJu
IGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zcGVsbENoZWNrZXIoKTsKIH0KIAogY29uc3Qg
Y2hhciogSW50ZXJuYWxzOjppbnRlcm5hbHNJZCA9ICJpbnRlcm5hbHMiOwpAQCAtMjg0LDEwICsy
ODQsMTAgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSogcGFn
ZSkKICAgICBwYWdlLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5zZXRDYXB0aW9uc1N0
eWxlU2hlZXRPdmVycmlkZShlbXB0eVN0cmluZygpKTsKICAgICBwYWdlLT5ncm91cCgpLmNhcHRp
b25QcmVmZXJlbmNlcygpLT5zZXRUZXN0aW5nTW9kZShmYWxzZSk7CiAjZW5kaWYKLSAgICBpZiAo
IXBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVDb250
aW51b3VzU3BlbGxDaGVja2luZygpOwotICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9y
KCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkt
PmVkaXRvcigpLT50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGlmICghcGFnZS0+
bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkp
CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVDb250aW51b3VzU3Bl
bGxDaGVja2luZygpOworICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkuaXNPdmVy
d3JpdGVNb2RlRW5hYmxlZCgpKQorICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCku
dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKIH0KIAogSW50ZXJuYWxzOjpJbnRlcm5hbHMo
RG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgYm9vbCBJbnRlcm5hbHM6
Omhhc1NwZWxsaW5nTWFya2VyKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5n
dGgsIEV4Y2UKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20s
IGxlbmd0aCk7CisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rp
b25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0
aCk7CiB9CiAgICAgCiBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihEb2N1
bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLCBFeGNlcHRpb25Db2RlJikKQEAg
LTE0MzQsNyArMTQzNCw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsCiAgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAg
IHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFy
a2VyRm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOworICAg
IHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJr
ZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIGZyb20sIGxlbmd0aCk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBl
bmFibGVkLCBFeGNlcHRpb25Db2RlJikKQEAgLTE0NDIsOCArMTQ0Miw4IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNl
cHRpb25Db2RlJikKICAgICBpZiAoIWNvbnRleHREb2N1bWVudCgpIHx8ICFjb250ZXh0RG9jdW1l
bnQoKS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVuYWJsZWQgIT0gY29u
dGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCktPnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CisgICAgaWYgKGVuYWJsZWQgIT0g
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogfQogCiB2b2lkIEludGVybmFs
czo6c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpCkBAIC0xNDUyLDggKzE0NTIsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQp
Ci0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAg
IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5k
aWYKQEAgLTE0NjUsOCArMTQ2NSw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVu
YWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFt
ZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOworICAgIGlmIChl
bmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0F1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1bWVudCgpLT5mcmFt
ZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtMTQ3OCw4ICsxNDc4LDggQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgp
KQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9n
Z2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0OTEsOCArMTQ5MSw4IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRp
dG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAgICAgICBjb250
ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBs
YWNlbWVudCgpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICAgICAg
Y29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1RleHRS
ZXBsYWNlbWVudCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYK
QEAgLTE1MDQsOCArMTUwNCw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwor
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5p
c0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVj
dGlvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE1
MTYsNyArMTUxNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc092ZXJ3cml0ZU1vZGVFbmFibGVkKERv
Y3VtZW50KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCiAgICAgaWYgKCFkb2N1bWVudCB8fCAh
ZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3Vt
ZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIHJl
dHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNPdmVyd3JpdGVNb2RlRW5hYmxlZCgp
OwogfQogCiB2b2lkIEludGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1l
bnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJikKQEAgLTE1MjQsNyArMTUyNCw3IEBAIHZvaWQg
SW50ZXJuYWxzOjp0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1bWVudCogZG9jdW1lbnQs
IEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CisgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRv
cigpLnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc0dyYW1tYXJNYXJr
ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXAKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhh
c01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBmcm9tLCBsZW5ndGgpOwogfQogCiB1bnNpZ25l
ZCBJbnRlcm5hbHM6Om51bWJlck9mU2Nyb2xsYWJsZUFyZWFzKERvY3VtZW50KiBkb2N1bWVudCwg
RXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXgg
YmVlZDIwN2JlNjQ3ZGI4ZmZkZTI4MzM2YmRiMzA1MjEyNTlmY2VjMi4uZDUxNTJlMDEwMjkyNWE0
YzEzZTBjNTIxN2Q4MjM3MjhlMThmMTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
c2hvdWxkU3BlbGxDaGVja0ZvY3VzZWRGaWVsZCgpCiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaWYg
dGhlIG5vZGUgZGlzYWJsZXMgc3BlbGwgY2hlY2tpbmcgZGlyZWN0bHkuCi0gICAgcmV0dXJuIGZy
YW1lLT5lZGl0b3IoKS0+aXNTcGVsbENoZWNraW5nRW5hYmxlZEluRm9jdXNlZE5vZGUoKTsKKyAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWRO
b2RlKCk7CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6aXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoKQpAQCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKIAogICAg
IC8vIENoZWNrIHRvIHNlZSB3ZSBhcmUgbm90IHRyeWluZyB0byBpbnNlcnQgdGV4dCBvbiBrZXkg
ZG93bi4KLSAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5pc1RleHRJbnNl
cnRpb24oKSkpOworICAgIEFTU0VSVCghKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtl
eWRvd25FdmVudCAmJiBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0
SW5zZXJ0aW9uKCkpKTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIEhvdCBrZXkgaGFuZGxpbmcuIENhbmNlbCBwcm9jZXNzaW5nIG1vZGUuCiAgICAgICAg
IGlmIChjb21tYW5kTmFtZSAhPSAiRGVsZXRlQmFja3dhcmQiKQogICAgICAgICAgICAgbV93ZWJQ
YWdlUHJpdmF0ZS0+bV9pbnB1dEhhbmRsZXItPnNldFByb2Nlc3NpbmdDaGFuZ2UoZmFsc2UpOwog
Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1
dGUoKSkKKyAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5l
eGVjdXRlKCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBUZXh0IGluc2VydGlvbiBjb21tYW5kcyBzaG91bGQgb25seSBiZSB0cmlnZ2VyZWQg
ZnJvbSBrZXlwcmVzc0V2ZW50LgpAQCAtNTAxLDcgKzUwMSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFwbGF0Zm9ybUV2ZW50LT50ZXh0KCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQocGxhdGZvcm1FdmVu
dC0+dGV4dCgpLCBldmVudCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4
dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKaW5kZXggYmU5NjQ4MTkwMzk0YWUx
NWY0YWM2MTY5MjQ0ZWJiNTc5NTc1NjY5MC4uNDA0MjFjMzI5ZmFkNDhhMGM2OTA4ZmJiZjJlZjU5
ZTYxNzBmMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRE9NU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBBdHRyaWJ1dGVTdGF0
ZSBlbGVtZW50QXR0cmlidXRlU3RhdGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZQogCiBib29sIGVsZW1lbnRIYXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBlbGVtZW50KQogewotICAgIHJl
dHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpOwogfQogCiAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGlu
cHV0IGZpZWxkIHRoYXQgd2lsbCBiZSBmb2N1c2VkICYgcmVxdWlyZSBpbnB1dCBzdXBwb3J0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcAppbmRleCBhMzM4MGIzZTMzYzgwZDc2NmIyMTk0Yzc2
MzAxYmFjNzk2N2ZiNGU3Li40MDkxZGFlNmZjNjkyYWQwMDM0MzRiMzAyM2M1MDdkMDU3MTMzZDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JblBh
Z2VTZWFyY2hNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9JblBhZ2VTZWFyY2hNYW5hZ2VyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIGJvb2wg
SW5QYWdlU2VhcmNoTWFuYWdlcjo6c2hvdWxkU2VhcmNoRm9yVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQpCiAKIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1hcmtUZXh0KGNvbnN0IFN0
cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEZpbmRPcHRpb25z
JiBvcHRpb25zLCBib29sIGlzTmV3U2VhcmNoLCBib29sIHN0YXJ0RnJvbVNlbGVjdGlvbikKIHsK
LSAgICBpZiAoUmVmUHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmlu
Z0FuZFNjcm9sbFRvVmlzaWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKKyAgICBpZiAoUmVm
UHRyPFJhbmdlPiBtYXRjaCA9IGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nQW5kU2Nyb2xsVG9W
aXNpYmxlKHRleHQsIHJhbmdlLCBvcHRpb25zKSkgewogICAgICAgICAvLyBNb3ZlIHRoZSBoaWdo
bGlnaHQgdG8gdGhlIG5ldyBtYXRjaC4KICAgICAgICAgc2V0QWN0aXZlTWF0Y2hBbmRNYXJrZXIo
bWF0Y2gpOwogICAgICAgICBpZiAoaXNOZXdTZWFyY2gpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBi
b29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIFJhbmdlKiByYW5nZSwgRnJhbQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc2NvcGVT
dHJpbmdNYXRjaGVzIGRvZXMgbm90IGFkZCBhbnkgbWFya2VycywgaXQgb25seSBjb3VudHMgdGhl
IG51bWJlci4KICAgICAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHVubWFya0FsbFRleHRNYXRj
aGVzLCBpdCBpcyBhbHJlYWR5IGRvbmUgZnJvbSB0aGUgY2FsbGVyIGJlY2F1c2Ugb2YgbmV3U2Vh
cmNoCiAgICAgICAgICAgICAgICAgbV9hY3RpdmVNYXRjaC0+b3duZXJEb2N1bWVudCgpLT5tYXJr
ZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQodHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxp
Z2h0ICovKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC0yMjMsNyArMjIzLDcgQEAgYm9vbCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5k
TWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAg
ICAgIC8vIGFsbCBtYXRjaGVzIGJ1dCBjb3VudCB0aGVtLgogICAgICAgICAgICAgbV93ZWJQYWdl
LT5tX3BhZ2UtPnVubWFya0FsbFRleHRNYXRjaGVzKCk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1h
dGNoLT5vd25lckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkVGV4dE1hdGNoTWFya2VyKG1fYWN0
aXZlTWF0Y2guZ2V0KCksIHRydWUpOwotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRN
YXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSW5QYWdlU2VhcmNoTWFuYWdlcjo6c2NvcGVT
dHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCByZXNldCwgYm9vCiAgICAgICAg
ICAgICBtX2FjdGl2ZU1hdGNoSW5kZXggKz0gbWF0Y2hDb3VudDsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChtX2hpZ2hsaWdodEFsbE1hdGNoZXMpCi0gICAgICAgICAgICAgICAg
c2NvcGluZ0ZyYW1lLT5lZGl0b3IoKS0+c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAgICAgICAgICAgICAgc2NvcGluZ0ZyYW1lLT5l
ZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHRydWUgLyogaGlnaGxp
Z2h0ICovKTsKICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2hDb3VudCArPSBtYXRjaENvdW50Owog
ICAgICAgICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+dXBkYXRlRmluZFN0cmluZ1Jlc3VsdCht
X2FjdGl2ZU1hdGNoQ291bnQsIG1fYWN0aXZlTWF0Y2hJbmRleCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKaW5kZXggMzMzZDEyNGEzYjU1ZTRkMzdiMGYyZDFmZWMyNjMzODdjNmMx
ZjJmYS4uNzA2ZjEwOWU3NGUyN2ZiOTk1YTcyNjM1OGU5NTY1NmYxMDRiNjkzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNlbGVjdGlvbkhhbmRsZXI6
OmNhbmNlbFNlbGVjdGlvbigpCiAKIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgU2VsZWN0
aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJQYWdl
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIHJl
dHVybiBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKTsKIH0KIAogV2ViQ29yZTo6SW50UmVjdCBTZWxlY3Rpb25IYW5kbGVyOjpjbGlwcGluZ1Jl
Y3RGb3JWaXNpYmxlQ29udGVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRl
eCBkMGNlMzhhMmZmZGE3ZmM2MzBhYzQ2Y2RjZjE1NWE4ZDMxYTBhMzBhLi5lMGEwMzVmZGQxZWMw
OTRlNWIwMDIxZjA1NTExYzk1ZDBkOGM1ODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAK
QEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZXhlY3V0
ZUNvcmVDb21tYW5kQnlOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaQogewogICAgIERSVF9T
VVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCi0gICAgcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChu
YW1lKS5leGVjdXRlKHZhbHVlKTsKKyAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQobmFtZSkuZXhlY3V0ZSh2YWx1ZSk7CiB9
CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaW5kU3RyaW5nKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OkZpbmRPcHRpb25z
IG9wdGlvbnMpCkBAIC0zMjgsNyArMzI4LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OmlzQ29tbWFuZEVuYWJsZWQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnMKIHsK
ICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlLCBmYWxzZSk7
CiAKLSAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21t
YW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6Zm9yY2VMYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpAQCAtNTUwLDE0ICs1NTAsMTQg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENvbXBvc2l0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKgogICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkgfHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICgh
ZWRpdG9yIHx8ICghZWRpdG9yLT5jYW5FZGl0KCkgJiYgIWVkaXRvci0+aGFzQ29tcG9zaXRpb24o
KSkpCisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOworICAgIGlmICghZWRpdG9yLmNhbkVk
aXQoKSAmJiAhZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IFN0cmluZyBjb21wb3NpdGlvblN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgodGV4dCk7
CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwog
ICAgIHVuZGVybGluZXMuYXBwZW5kKFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNv
bXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBXZWJDb3JlOjpDb2xvcigwLCAwLCAwKSwgZmFsc2Up
KTsKLSAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxp
bmVzLCBzdGFydCwgc3RhcnQgKyBsZW5ndGgpOworICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKIH0K
IAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtNTY3LDExICs1NjcsNyBAQCBib29sIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6aGFzQ29tcG9zaXRpb24oY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBjb25zdCBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCk7
CisgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OmNvbXBvc2l0aW9uUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3Rh
cnQsIGludCogbGVuZ3RoKQpAQCAtNTgzLDEyICs1NzksMTIgQEAgYm9vbCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmNvbXBvc2l0aW9uUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCog
c3RhcnQKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8ICFwYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvciB8fCAhZWRp
dG9yLT5oYXNDb21wb3NpdGlvbigpKQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKKyAg
ICBpZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAqc3RhcnQgPSBlZGl0b3ItPmNvbXBvc2l0aW9uU3RhcnQoKTsKLSAgICAqbGVuZ3RoID0g
ZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpIC0gKnN0YXJ0OworICAgICpzdGFydCA9IGVkaXRvci5j
b21wb3NpdGlvblN0YXJ0KCk7CisgICAgKmxlbmd0aCA9IGVkaXRvci5jb21wb3NpdGlvbkVuZCgp
IC0gKnN0YXJ0OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01OTksMjAgKzU5NSwxOCBAQCB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29uZmlybUNvbXBvc2l0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBjb25zdCBjaAogICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkg
fHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICghZWRp
dG9yKQotICAgICAgICByZXR1cm47CisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwogCi0g
ICAgaWYgKCFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKLSAgICAgICAgZWRpdG9yLT5pbnNl
cnRUZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCksIDApOworICAgIGlmICghZWRpdG9yLmhhc0Nv
bXBvc2l0aW9uKCkpIHsKKyAgICAgICAgZWRpdG9yLmluc2VydFRleHQoU3RyaW5nOjpmcm9tVVRG
OCh0ZXh0KSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAodGV4dCkgewot
ICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQp
KTsKKyAgICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRl
eHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3Np
dGlvbigpOworICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogV2ViQ29yZTo6
SW50UmVjdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCkBAIC02
MjYsMTMgKzYyMCwxMiBAQCBXZWJDb3JlOjpJbnRSZWN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoRXZhc19PYmplYwogICAgICAgICBsZW5ndGgg
PSAwOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0g
ZnJhbWUtPmVkaXRvcigpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZSA9IFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Oklu
dFJlY3QoKTsKIAotICAgIHJldHVybiBlZGl0b3ItPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdl
LmdldCgpKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNlbGVjdGVkUmFu
Z2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGludCogbGVuZ3RoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAK
aW5kZXggOTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQwYmEyYjQ5Yy4uMjRkYTUxZGQ2
YzEzNDc2ZTdkNzNmYzZjZDhkNWQ0MWU2YjQzMzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0xNDIsMTMgKzE0
MiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihG
cmFtZSogY29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5pZ25v
cmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmIChjb3JlRnJhbWUtPmVkaXRv
cigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSA9IEVXS1ByaXZhdGU6OmtpdEZyYW1lKGNvcmVG
cmFtZSk7CiAgICAgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0aW9uX2NoYW5nZWQod2Vi
RnJhbWUpOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb25JZlNl
bGVjdGlvbklzSW52YWxpZCgpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9z
aXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6
ZGlkRW5kRWRpdGluZygpCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsKKyAgICBFZGl0b3I6OkNvbW1h
bmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2
ZW50KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRl
eHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTMzNyw3ICsz
MzcsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9u
J3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3Io
KS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvbid0IGluc2Vy
dCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBl
Y3RlZCBiZWhhdmlvdXIKQEAgLTM0OCw3ICszNDgsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYg
KGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50
LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
Lmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZjRkM2MwZTRmMTNlZjc4Yjlm
YjExMWZjY2RjYzY5MDY3NjVmNzkwZC4uY2NmN2U1MDJmN2JjNTU5ZWVhMGZlODY3Zjk2NWU4NGZl
MmI3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQ4MCw3ICs0ODAs
NyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChFdmFzX09iamVjdCogZXdrRnJh
bWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgc21hcnRE
YXRhLT5lZGl0YWJsZSA9IGVkaXRhYmxlOwogICAgIGlmIChlZGl0YWJsZSkKLSAgICAgICAgc21h
cnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgp
OworICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBA
IGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRh
LT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7CisgICAgV1RGOjpDU3RyaW5n
IHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
LnV0ZjgoKTsKICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRUZXh0LmRhdGEoKSk7
CkBAIC01MDAsNyArNTAwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X3NlYXJjaChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRleHQsIEUKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxzZSk7CiAKLSAgICByZXR1cm4g
c21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmcoV1RGOjpTdHJpbmc6OmZyb21V
VEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFwLCB0cnVlKTsKKyAgICByZXR1
cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhXVEY6OlN0cmluZzo6ZnJv
bVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIHRydWUpOwogfQogCiB1
bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJrKEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2FzZVNlbnNpdGl2ZSwgRWluYV9C
b29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQpAQCAtNTA5LDggKzUwOSw4IEBAIHVu
c2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmsoRXZhc19PYmplY3QqIGV3a0Zy
YW1lLCBjb25zdCBjaGFyKiBzdHJpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzdHJpbmcsIDApOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsKLSAgICByZXR1cm4gc21hcnRE
YXRhLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZy
b21VVEY4KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKKyAgICBz
bWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIDAsIGNhc2VT
ZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKIH0KIAogRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCkBAIC01MjYsNyArNTI2
LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0X3NldChFdmFz
X09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbAogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2UpOwotICAgIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hs
aWdodCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNo
ZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01
MzQsNyArNTM0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfaGlnaGxpZ2h0
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dF
VF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgcmV0dXJu
IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdo
dGVkKCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAppbmRleCBmM2ZhOGUxYTIyMjNiNGM5MWE3NTA0MDY3YzZmZWEzNWE3YmRhOGRiLi44NmM4
NjA3ZmQxYjI4Y2M4ZDVlYWUxMGZkNmUyMzE3YTM4OGY4YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKQEAgLTE2NjgsNyArMTY2OCw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3Nl
bGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAgIENTdHJpbmcgc2VsZWN0
ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7CisgICAgQ1N0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgpOwogICAgIGlmIChzZWxlY3Rl
ZFN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7CkBAIC0xNjgzLDcgKzE2ODMsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfZXhlY3V0ZShjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgRXdrXwogICAgIGlmICghY29tbWFuZFN0cmluZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZFN0cmlu
ZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpKTsKKyAgICByZXR1cm4gcHJp
di0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZh
bHVlKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0X21lbnVfZm9yd2FyZF9ldmVu
dChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3du
RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAppbmRleCA5YTUyZTdmNTE2ZGM4MjZkNjBlZWEzMjM0NjI0NGY1YzFkYjM3
MWY0Li45YjUzOGM0MmM2NTM2ZGQxODM5NWZjM2VmYzMwNzczMTg5ODlkOWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAK
QEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6cGFpbnQoV2ViQ29yZTo6VGlt
ZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgLy8gc3luY2VkIHdpdGggY3Vyc29yIG1vdmVtZW50LiBG
b3IgaW5zdGFuY2UsIGEgdGV4dCBmaWVsZCBjYW4gbW92ZSB3aXRob3V0CiAgICAgLy8gdGhlIHNl
bGVjdGlvbiBjaGFuZ2luZy4KICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gY29yZShtX3dlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKGZv
Y3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYg
KGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5zZXRDdXJzb3JSZWN0KGZyYW1lLT5zZWxlY3Rp
b24oKS0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKaW5kZXggMmEzZDRjZTc3ZjlhOGI3M2U2M2YxZGZkMjQ0M2MzNTY1MmJjMjUzNS4uMzIzZjJl
NWYwOTEzZDgyODVjMGVmMWM3MzljNGUyNmMwNDA5NzQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LAogICAgIGdf
cmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CiAKLSAg
ICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworICAgIGNvcmUod2ViVmll
dyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29t
bWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIG5hbWUpCkBAIC0yODQsNyArMjg0LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2MKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNF
KTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKLSAgICByZXR1cm4g
Y29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gY29yZSh3ZWJW
aWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5j
b21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6c2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciog
dGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNTdmYWNhZjMxMTAzOTlh
NWFjYjA2NDVlNzBkYzkyOTI0NWU3YWE0Ni4uNTA5MDkwNDczMWM0OTczMGY3YzZlOWViMTA1ZWNh
ODY1MjFkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBFZGl0b3JDbGll
bnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIHNldFNlbGVj
dGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChtX3dlYlZpZXcpOwogI2VuZGlmCiAKLSAgICBp
ZiAoZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlk
KCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9u
SXNJbnZhbGlkKCkpCiAgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+aW1GaWx0ZXIucmVzZXRDb250
ZXh0KCk7CiB9CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0
ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZQog
ewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9w
ZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEVkaXRv
cjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobV9wZW5kaW5nRWRp
dG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlz
VGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9k
ZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMo
ZnJhbWUsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgeworICAgICAgICBpZiAoZXhlY3V0
ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkp
IHsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgfQogCiAgICAg
Ly8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQu
Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgaXMganVz
dCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBleGVjdXRlIHRoZSBpbnNlcnRp
b24KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRF
dmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxhdGZvcm1FdmVudC0+Y3RybEtl
eSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZl
bnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50
ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1
dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9XZWJW
aWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDMzOTg5MTFlZGQ5MGQ5OTFiOWZhMmYyMDg2
NGZiNmQzMzliMTY0NWEuLjk4NzdmY2ExOTZmNjljNDU4ZWEyMTVjZDk2OTM0ZDUyZWFmOTI5Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1
dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
V2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFdlYlZp
ZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0V2ViVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
Ym9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbkVkaXQoKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKTsKIH0KIAogYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRTaW1w
bGVLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQsIFdURjo6U3RyaW5nIHNpbXBsZVN0cmluZywg
RXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uKQpAQCAtNzYsNDIgKzc2LDQyIEBAIGJvb2wgV2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZW5kS2V5RXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdk
a0V2ZW50S2V5KiBlCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBv
c2l0aW9uVGV4dChTdHJpbmcgdGV4dCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAodGV4dC5pc051bGwoKSkgewogICAgICAgICBjb25maXJtQ3Vy
cmVudENvbXBvc2l0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRDb21wb3NpdGlvbik7CisgICAg
ZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihtX2NvbmZpcm1lZENvbXBvc2l0aW9u
KTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNvbmZpcm1DdXJyZW50Q29t
cG9zaXRpb24oKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICgh
ZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RG
aWx0ZXI6OmNhbmNlbEN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigp
LT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRp
b24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIH0KIAogdm9p
ZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNldFByZWVkaXQoU3RyaW5nIG5ld1ByZWVkaXQs
IGludCBjdXJzb3JPZmZzZXQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHBhcnNlIHRoZSBQYW5nb0F0dHJMaXN0IHRo
YXQgd2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQgaGVyZS4KICAgICBWZWN0b3I8Q29tcG9zaXRp
b25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRp
b25VbmRlcmxpbmUoMCwgbmV3UHJlZWRpdC5sZW5ndGgoKSwgQ29sb3IoMSwgMSwgMSksIGZhbHNl
KSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRl
cmxpbmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNl
dCwgbV9jdXJzb3JPZmZzZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IDMzNDYxNjRkOGM2NTU5
Y2I4YzkxMDJkMmFiZmFhMDk1NGI1Yzg0ODkuLjE2M2Y2ZjBiYzU1NjUzNjM4NmEyYjlhNDQ1N2M3
Yjg5OGMzNWYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmNwcApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3JlcGxhY2Vf
c2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogdGV4dCkKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVu
dCA9IGZhbHNlOwogICAgIGJvb2wgc21hcnRSZXBsYWNlID0gdHJ1ZTsKLSAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1l
bnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDA3
NjY2YmU2YWRhMDIyOTUyZTRmNjhmZTM1ZWFmZTQ4MDg1NjY4OGQuLmM1ODJiNjY5NmNkYWMwZjIw
YWY3YjI5YWE4NjQ3OTljNTEwYzU4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgSW50UG9pbnQgZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KEZyYW1lKiBmcmFtZSkKICAgICAv
LyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UgY2FuIHJldHVybiAwIGhlcmUsIGJ1
dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQogICAgIC8vIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNO
b25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UKICAgICAv
LyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaXQuCi0gICAgSW50UmVjdCBmaXJz
dFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlvbi0+c2Vs
ZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKKyAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IGZy
YW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZp
cnN0UmFuZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIEludFBvaW50KGZpcnN0UmVjdC54KCksIGZp
cnN0UmVjdC5tYXhZKCkpOwogfQogCkBAIC05MzgsNyArOTM4LDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRGb2N1cyoKICAgICBlbHNlCiAgICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZy
YW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKIAotICAgIGlmIChmb2N1c0NvbnRyb2xs
ZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmIChmb2N1c0Nv
bnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHdl
YlZpZXctPnByaXYtPmltRmlsdGVyLm5vdGlmeUZvY3VzZWRJbigpOwogICAgIHJldHVybiBHVEtf
V0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVu
dCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTExODEsMzEgKzExODEsMzEgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3NlbGVjdF9hbGwo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1
dCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0
ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb3B5X2NsaXBib2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19yZWFsX3VuZG8oV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUmVk
byIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1
dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vy
c29yIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBj
b3VudCkKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrTW92CiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgi
UGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24oV2ViS2l0V2ViVmlldyopCkBAIC00Mzg5
LDcgKzQzODksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfaGlnaGxpZ2h0X3RleHRfbWF0
Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbgogCiAgICAgRnJhbWUgKmZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxp
Z2h0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGln
aGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7CiAgICAgfSB3aGlsZSAoZnJhbWUpOwogfQpA
QCAtNDQ1OSw3ICs0NDU5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xp
cGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigp
LT5jYW5ESFRNTEN1dCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ3V0KCkgfHwg
ZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCk7CiB9CiAKIC8qKgpAQCAtNDQ3NSw3ICs0NDc1
LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jb3B5X2NsaXBib2FyZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3
KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkNvcHkoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29w
eSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpIHx8IGZyYW1lLT5lZGl0
b3IoKS5jYW5ESFRNTENvcHkoKTsKIH0KIAogLyoqCkBAIC00NDkxLDcgKzQ0OTEsNyBAQCBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Bhc3RlX2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCktPmNhblBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCk7Cisg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5j
YW5ESFRNTFBhc3RlKCk7CiB9CiAKIC8qKgpAQCAtNDU0Nyw3ICs0NTQ3LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfZGVsZXRlX3NlbGVjdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAogICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwogfQogCiAvKioKQEAgLTQ2MjksNyArNDYy
OSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwogCiAg
ICAgaWYgKGZsYWcpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAvLyBUT0RPOiBJZiB0aGUgV2ViS2l0V2ViVmll
dyBpcyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5LCBzZXQgaXQgdG8g
c29tZXRoaW5nLgogICAgICAgICAvL2lmICghd2Via2l0X3dlYl92aWV3X2dldF9zZWxlY3RlZF9k
b21fcmFuZ2Uod2ViVmlldykpCiAgICAgICAgIC8vICAgIG1haW5GcmFtZS0+c2V0U2VsZWN0aW9u
RnJvbU5vbmUoKTsKQEAgLTUwOTAsNyArNTA5MCw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19jYW5fdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVuZG8oKTsKKyAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLyoqCkBAIC01MTI1LDcgKzUxMjUsNyBA
QCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3JlZG8oV2ViS2l0V2ViVmlldyogd2ViVmll
dykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyks
IEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5jYW5SZWRvKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNmQzYzZiMGZhNWQ2
MjFjMjgzNmNjMGM2NGY4ZjYxYTNiMjk3ZmU2MC4uYTAzNTRiNDI1MGYzM2U5Njg4MDRkYTJhYzEx
MTA2YjQ5ZTcxMDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC00
OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TU3RyaW5nICopX3NlbGVjdGVkU3RyaW5nCiB7
Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5
RW5jb2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiB9
CiAKIC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCkBAIC02
MDIsNyArNjAyLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TUmVjdClfZmlyc3RSZWN0Rm9yRE9NUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2UKIHsKLSAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0
b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShyYW5nZSkpOworICAgcmV0dXJuIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKGNvcmUocmFuZ2UpKTsKIH0K
IAogLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2UKQEAg
LTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoRE9NUmFuZ2UgKilfbWFya0RPTVJhbmdlCiB7
Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAv
LyBHaXZlbiBwcm9wb3NlZFJhbmdlLCByZXR1cm5zIGFuIGV4dGVuZGVkIHJhbmdlIHRoYXQgaW5j
bHVkZXMgYWRqYWNlbnQgd2hpdGVzcGFjZSB0aGF0IHNob3VsZApAQCAtNzQ2LDcgKzc0Niw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciog
bG9hZGVyKQogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25l
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKKyAgICBfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQoKTsKIH0KIAogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDooTlNQb2ludClwb2ludApAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0
YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmICghX3By
aXZhdGUtPmNvcmVGcmFtZSB8fCAhc3R5bGUpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRlIGEgY29weSBoZXJlLgotICAgIF9wcml2YXRl
LT5jb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoY29yZShzdHls
ZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOworICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShjb3JlKHN0eWxlKS0+
Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQpAQCAtOTI4LDcgKzkyOCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJj
ZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIWZyYWdtZW50KQogICAgICAg
ICByZXR1cm47Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFy
dFJlcGxhY2UsIG1hdGNoU3R5bGUpOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigp
LnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVjdFJlcGxh
Y2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOwogfQogCiAtICh2b2lkKV9yZXBsYWNl
U2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9P
TClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDM3NmRmOWI4NDg0MGJmMjg3Y2M5YzE1OWM2ZDBkNDBlM2FhZTlkMWMuLmQ2MTIwYWU5MWQ3
ZTYwNjc2OGE1N2E5OTY2NDJmNGE3NGMwOTEyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMjAsNyArMjIwLDcgQEAg
c3RhdGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJheUJ5Q29uY2F0ZW5hdGluZ0FycmF5cyhOU0Fy
cmF5ICpmaXJzdCwgTlNBcnJheSAqc2UKICAgICAgICAgcmV0dXJuOwogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CiAgICAgaWYgKFt3ZWJWaWV3IG1haW5GcmFtZV0g
PT0gd2ViRnJhbWUgJiYgW3dlYlZpZXcgaXNFZGl0YWJsZV0pCi0gICAgICAgIGNvcmUod2ViRnJh
bWUpLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAg
IGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQo
KTsKIH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDhmZjY1YWIwMDNlNzUzNDFhMjcwNWI5ZTgx
MTlkMzRiMjc1NGNmOWUuLmUxNjY5ZDdhODkyNDZhNTlhNjdlMGJjM2IyNWFkOGI0YWNjOWQyNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODY0LDcgKzg2
NCw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAq
cmVsYXRpdmVQYXJ0KQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3
MAogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJh
Z21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWlu
VGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJ
bnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBnaXZlbkFjdGlv
bjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNl
V2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJl
cGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogI2Vsc2UKICAgICAvLyBN
YWlsIGlzIGlnbm9yaW5nIHRoZSBmcmFtZW50IHBhc3NlZCB0byB0aGUgZGVsZWdhdGUgYW5kIGNy
ZWF0ZXMgYSBuZXcgb25lLgogICAgIC8vIFdlIHdhbnQgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIGZy
YWdtZW50IHR3aWNlLgpAQCAtODcyLDEyICs4NzIsMTIgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVV
UkxXaXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAgICAgICAgIGlmIChb
c2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6bmlsIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdp
dmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKSB7CiAgICAgICAgICAgICBET01E
b2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBh
c3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQ
bGFpblRleHRdOwogICAgICAgICAgICAgaWYgKGZyYWdtZW50KQotICAgICAgICAgICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYg
X2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFn
bWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwg
ZmFsc2UpOwogICAgICAgICB9ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFp
blRleHRdOwogICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdt
ZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJ
bnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFz
dGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBh
c3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBs
YWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKICAgICB9CiAjZW5kaWYKICAg
ICBbd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxdOwpAQCAtOTgzLDcgKzk4Myw3
IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVs
YXRpdmVQYXJ0KQogLSAoQk9PTClfc2hvdWxkRGVsZXRlUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UK
IHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1
cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNob3VsZERlbGV0ZVJhbmdlKGNv
cmUocmFuZ2UpKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCku
c2hvdWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkpOwogfQogCiAtIChOU1ZpZXcgKilfaGl0Vmll
d0ZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTE3NTgsMTMgKzE3NTgsMTMgQEAgc3RhdGlj
IGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiAtIChC
T09MKV9jYW5FZGl0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0
KCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKIH0KIAogLSAoQk9PTClfY2FuRWRpdFJpY2hseQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiB9CiAKIC0gKEJPT0wpX2NhbkFsdGVy
Q3VycmVudFNlbGVjdGlvbgpAQCAtMTgyNCw1MCArMTgyNCw1MCBAQCBzdGF0aWMgYm9vbCBtb3Vz
ZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkKIC0gKERPTU5vZGUgKilf
aW5zZXJ0T3JkZXJlZExpc3QKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkt
Pmluc2VydE9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUg
PyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRPcmRlcmVkTGlzdCgpLmdldCgpKSA6IG5p
bDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbnNlcnRVbm9yZGVyZWRMaXN0CiB7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/
IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDog
bmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNl
cnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChCT09MKV9jYW5JbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxm
IF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+
Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKIH0K
IAogLSAoQk9PTClfY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7Cisg
ICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkRlY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsKCk7CiB9CiAKIC0gKERPTU5vZGUgKilfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsK
LSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsKCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUg
PyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpLmdl
dCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZl
bE9yZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsK
LSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29y
ZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVk
aXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgpLmdldCgpKSA6IG5p
bDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKHZv
aWQpX2RlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5kZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwogfQogCiAtICh2
b2lkKV9zZXRIaWdobGlnaHRlcjooaWQ8V2ViSFRNTEhpZ2hsaWdodGVyPiloaWdobGlnaHRlciBv
ZlR5cGU6KE5TU3RyaW5nKil0eXBlCkBAIC0yMzU5LDcgKzIzNTksNyBAQCBzdGF0aWMgU3RyaW5n
IGNvbW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNlbGVjdG9yKQogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3RvcikpOworICAgIHJldHVybiBj
b3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3Rv
cikpOwogfQogCiAtIChFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1hbmRCeU5hbWU6KGNvbnN0IGNo
YXIqKW5hbWUKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVG
b3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFZGl0b3I6
OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1l
KTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpOwogfQogCiAt
ICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjU5
Myw3ICsyNTkzLDcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIE5T
TWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21l
bnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0
YXRlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbildOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9u
KV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAgICB9CkBA
IC0yNjEwLDcgKzI2MTAsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICAg
ICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKICAg
ICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRlbSBp
bnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNlCiAgICAgICAgICAg
ICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGly
ZWN0aW9uLCAicnRsIikKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQogICAg
ICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQg
dG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAgICAgICAgIDogVUlfU1RSSU5H
X0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0
ZW0iKV07CiAgICAgICAgIH0KQEAgLTI2NDEsMTEgKzI2NDEsMTEgQEAgV0VCQ09SRV9DT01NQU5E
KHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBbc2VsZiBfaGFzU2VsZWN0aW9uXTsKICAg
ICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZTopIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IocGFzdGVBc1BsYWluVGV4dDopKQotICAgICAgICByZXR1cm4gZnJhbWUgJiYgKGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUo
KSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFz
dGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSk7CiAgICAgCiAgICAgaWYgKGFjdGlv
biA9PSBAc2VsZWN0b3IocGFzdGVBc1JpY2hUZXh0OikpCi0gICAgICAgIHJldHVybiBmcmFtZSAm
JiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkKLSAgICAgICAgICAgIHx8IChmcmFt
ZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRS
aWNobHlFZGl0YWJsZSgpKSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRv
cigpLmNhbkRIVE1MUGFzdGUoKQorICAgICAgICAgICAgfHwgKGZyYW1lLT5lZGl0b3IoKS5jYW5Q
YXN0ZSgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkp
OwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1GaW5kUGFuZWxBY3Rp
b246KSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtMzgwMyw3ICszODAzLDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKICAgICBfcHJpdmF0ZS0+X2ZvcmNlVXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSA9IE5POwog
CiAgICAgLy8gRklYTUU6IEtpbGwgcmluZyBoYW5kbGluZyBpcyBtb3N0bHkgaW4gV2ViQ29yZSwg
c28gdGhpcyBjYWxsIHNob3VsZCBhbHNvIGJlIG1vdmVkIHRoZXJlLgotICAgIGZyYW1lLT5lZGl0
b3IoKS0+c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7CiAKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC00MjMxLDcgKzQyMzEsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFt
ZSogY29yZUZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFt
ZV0pOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIKLSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJh
bWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0
KCkgOiBuaWxdOworICAgICAgICBhdHRyaWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRp
dG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIDogbmlsXTsKICAgICBOU0Rh
dGEgKmRhdGEgPSBbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxl
bmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIFtzdHJpbmcgcmVsZWFzZV07CiAg
ICAgcmV0dXJuIGRhdGE7CkBAIC00MzU5LDcgKzQzNTksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxL
ZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewog
ICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4gV2Ugd2Fu
dCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gd29yayBkaXJlY3RseSB3aXRoIFN0eWxlUHJv
cGVydHlTZXQgZXZlbnR1YWxseS4KLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlT
dHlsZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRv
QWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rp
b24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOwogICAg
IH0KIH0KIApAQCAtNDY2MSw3ICs0NjYxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRF
dmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBpZiAoW1t3
ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRB
cHBseVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOnJhbmdlXSkgewogICAgICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEgY29weSBoZXJlLgotICAgICAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVBy
b3BlcnRpZXMoKS5nZXQoKSwgW3NlbGYgX3VuZG9BY3Rpb25Gcm9tQ29sb3JQYW5lbFdpdGhTZWxl
Y3RvcjpzZWxlY3Rvcl0pOworICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0
eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCBbc2VsZiBfdW5kb0FjdGlv
bkZyb21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTQ3NDgsNyArNDc0OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+
IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQ09NTUFORF9QUk9M
T0dVRQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQot
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsK
KyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsK
IH0KIAogLSAodm9pZClzaG93R3Vlc3NQYW5lbDooaWQpc2VuZGVyCkBAIC00NzY4LDcgKzQ3Njgs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVu
dChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KICAgICAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAgW3NwZWxsaW5nUGFuZWwgb3Jk
ZXJGcm9udDpzZW5kZXJdOwogfQogCkBAIC00ODM2LDcgKzQ4MzYsNyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1l
KQogICAgICAgICByZXR1cm47CiAKICAgICBXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICBzd2l0Y2ggKGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSkgeworICAgIHN3aXRj
aCAoY29yZUZyYW1lLT5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0
YXJ0KCkpIHsKICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb246CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb246
CkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBj
dXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KIAogICAgIGlmIChG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pOwog
fQogCiAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uOihpZClzZW5kZXIKQEAgLTQ4
NjcsNyArNDg2Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRL
ZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQVNTRVJUKHdyaXRpbmdEaXJlY3Rp
b24gIT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRv
TGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9u
TGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdy
aXRpbmdEaXJlY3Rpb24pOwogfQogCiBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5Qmlu
ZGluZ3NFbmFibGVkKCkKQEAgLTQ4ODgsNyArNDg4OCw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdE
aXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIH0KIAogICAgIGlmIChGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQg
PyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rp
b24pOwogfQogCiAtICh2b2lkKW1ha2VCYXNlV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0Oihp
ZClzZW5kZXIKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rp
b25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGJvb2wgbXVsdGlwbGVGb250cyA9IGZhbHNlOwog
ICAgIE5TRm9udCAqZm9udCA9IG5pbDsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
W3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmZCA9
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCisg
ICAgICAgIGlmIChjb25zdCBTaW1wbGVGb250RGF0YSogZmQgPSBjb3JlRnJhbWUtPmVkaXRvcigp
LmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCiAgICAgICAgICAgICBmb250ID0gZmQt
PmdldE5TRm9udCgpOwogICAgIH0KIApAQCAtNTU2Myw3ICs1NTYzLDcgQEAgc3RhdGljIEJPT0wg
d3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
TlNNYWtlUmFuZ2UoMCwgMCk7Ci0gICAgTlNSYW5nZSByZXN1bHQgPSBbd2ViRnJhbWUgX2NvbnZl
cnRUb05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpLmdldCgp
XTsKKyAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQoKV07CiAKICAgICBMT0coVGV4
dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRpb24sIHJlc3Vs
dC5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjA3LDEyICs1NjA3LDEyIEBAIHN0
YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogLSAoQk9PTClo
YXNNYXJrZWRUZXh0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7Ci0gICAgQk9PTCByZXN1bHQgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFzQ29tcG9zaXRpb24oKTsKKyAgICBCT09MIHJlc3VsdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAocmVzdWx0KSB7CiAgICAg
ICAgIC8vIEEgc2F2ZWQgY29tbWFuZCBjYW4gY29uZmlybSBhIGNvbXBvc2l0aW9uLCBidXQgaXQg
Y2Fubm90IHN0YXJ0IGEgbmV3IG9uZS4KICAgICAgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXBy
ZXNzQ29tbWFuZHNdOwotICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXND
b21wb3NpdGlvbigpOworICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0Nv
bXBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgTE9HKFRleHRJbnB1dCwgImhhc01hcmtlZFRleHQg
LT4gJXUiLCByZXN1bHQpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAgc3RhdGljIEJPT0wgd3JpdGlu
Z0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQogICAgIAogICAgIGlmIChGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxp
bmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxp
bmU+JiByZXN1bHQpCkBAIC01NzAyLDcgKzU3MDIsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5k
ZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZQogICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCiAgICAg
ICAgIFtbc2VsZiBfZnJhbWVdIF9zZWxlY3ROU1JhbmdlOnJlcGxhY2VtZW50UmFuZ2VdOwogCi0g
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywg
bmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsKKyAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJh
bmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7CiB9CiAKIC0gKHZvaWQpZG9D
b21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCkBAIC01NzIwLDcgKzU3MjAsNyBAQCBzdGF0
aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZQogCiAgICAgLy8gQXMgaW4gaW5zZXJ0VGV4dDosIHdlIGFzc3Vt
ZSB0aGF0IHRoZSBjYWxsIGNvbWVzIGZyb20gYW4gaW5wdXQgbWV0aG9kIGlmIHRoZXJlIGlzIG1h
cmtlZCB0ZXh0LgogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJh
bWVdKTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhv
ZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAK
ICAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1hbmQgJiYgIWlzRnJvbUlucHV0TWV0aG9k
KQogICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChLZXlwcmVzc0NvbW1h
bmQoTlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CkBAIC01Nzc0LDcgKzU3NzQsNyBA
QCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU1N0cmluZyAqdGV4dDsKICAgICBOU1JhbmdlIHJl
cGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsKLSAgICBib29sIGlzRnJvbUlucHV0
TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJu
YXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0
ZWRTdHJpbmcpIHsKQEAgLTU4MTAsNyArNTgxMCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRl
cmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZy
YW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJlcGxh
Y2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKQEAgLTU4MTksMTcgKzU4MTksMTcg
QEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNl
OwogICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5T
QmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUg
aW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3Io
KS0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRs
ZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0
LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNj
cm9sbGluZyBkb3duIHRoZSBwYWdlLgogCiAgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRp
dmVMb2NhdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZy
YW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9u
QWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQs
IGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCku
aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBldmVu
dEhhbmRsZWQgPSB0cnVlOwotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29t
cG9zaXRpb24oZXZlbnRUZXh0KTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jb25maXJt
Q29tcG9zaXRpb24oZXZlbnRUZXh0KTsKICAgICB9CiAgICAgCiAgICAgaWYgKHBhcmFtZXRlcnMp
CkBAIC01ODg0LDE1ICs1ODg0LDE1IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAKICAgICBb
c2VsZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRp
dG9yKCktPmhhc0NvbXBvc2l0aW9uKCkgfHwgY29yZUZyYW1lLT5lZGl0b3IoKS0+aWdub3JlQ29t
cG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9u
U2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0
OwogICAgIHVuc2lnbmVkIGVuZDsKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29t
cG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCisgICAgaWYgKGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCiAgICAgICAgIFtbTlNJbnB1
dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4dFNlbGVjdGlvbkNoYW5nZWQ6
TlNNYWtlUmFuZ2Uoc3RhcnQsIGVuZCAtIHN0YXJ0KSBjbGllbnQ6c2VsZl07CiAgICAgZWxzZSB7
Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICAgICAgW1tO
U0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJrZWRUZXh0QWJhbmRvbmVkOnNl
bGZdOwogICAgIH0KIH0KQEAgLTYwNjAsNyArNjA2MCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RV
bmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKHJh
bmdlKSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxpbWl0LCBtYXJrTWF0Y2hlcywgMCk7CisgICAg
cmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dChzdHJpbmcsIGNv
cmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQsIG1hcmtNYXRjaGVzLCAwKTsK
IH0KIAogLSAodm9pZClzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkOihCT09MKW5l
d1ZhbHVlCkBAIC02MDY4LDEzICs2MDY4LDEzIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxp
bmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRNYXJr
ZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKG5ld1ZhbHVlKTsKKyAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQobmV3VmFsdWUpOwogfQog
CiAtIChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYm
IGNvcmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsK
KyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkubWFya2VkVGV4dE1h
dGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAtICh2b2lkKXVubWFya0FsbFRleHRNYXRjaGVz
CkBAIC02MTEwLDcgKzYxMTAsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmICgh
W3N0cmluZyBsZW5ndGhdKQogICAgICAgICByZXR1cm4gTk87CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwor
ICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0
cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggMWY4MWUzYjdhYjU4MTEyMTcwNjhjMzhhOGNlMTlhZTQ1NjA0
YjU3MS4uODA1Y2RiOTAwZTFmY2M5OTY4ZjQ5MzE4ODI0NGUyODcxNmQ4NzUzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQyNyw3ICsyNDI3LDcgQEAgc3RhdGljIGlu
bGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsK
IH0KIAogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheTooZG91YmxlKXRp
bWVEZWxheQpAQCAtNTM4Miw3ICs1MzgyLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0
b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAg
ICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPnJhbmdl
Rm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSku
Z2V0KCkpOworICAgIHJldHVybiBraXQocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnJhbmdl
Rm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSku
Z2V0KCkpOwogfQogCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01S
YW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2Ug
YWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxl
Y3Rpbmc6KEJPT0wpZmxhZwpAQCAtNTQ0Myw3ICs1NDQzLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVu
dERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIGoKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsK
ICAgICAgICAgaWYgKG1haW5GcmFtZSkgewogICAgICAgICAgICAgaWYgKGZsYWcpIHsKLSAgICAg
ICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVs
ZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGlu
Z1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBXZWJWaWV3
IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBpdCB0byBz
b21ldGhpbmcuCiAgICAgICAgICAgICAgICAgaWYgKCFbc2VsZiBzZWxlY3RlZERPTVJhbmdlXSkK
ICAgICAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9u
RnJvbU5vbmUoKTsKQEAgLTU3MzAsNyArNTczMCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNj
cmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBq
CiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1l
KQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnRE
ZWxldGUoWyhXZWJIVE1MVmlldyAqKVtbd2ViRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXdd
IF9jYW5TbWFydENvcHlPckRlbGV0ZV0pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmRl
bGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxWaWV3ICopW1t3ZWJGcmFtZSBm
cmFtZVZpZXddIGRvY3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9yRGVsZXRlXSk7CiB9CiAgICAg
CiAtICh2b2lkKWFwcGx5U3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQpAQCAt
NTc0MSw3ICs1NzQxLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zy
b21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZl
IHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5n
ZXQoKSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShjb3JlKHN0eWxl
KS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CiB9CiAKIEBlbmQKQEAgLTU3ODgsNyArNTc4OCw3
IEBAIEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJEKQogewogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXSk7CiAgICAgaWYgKGNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRBdHRyaWJ1
dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOwogICAgIAogICAgIHJldHVybiBu
aWw7CiB9CkBAIC01ODMyLDcgKzU4MzIsNyBAQCBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1Io
Rk9SV0FSRCkKICAgICBOb2RlKiBjb3JlU3RhcnROb2RlPSBjb3JlKHN0YXJ0Tm9kZSk7CiAgICAg
aWYgKGNvcmVTdGFydE5vZGUtPmRvY3VtZW50KCkgIT0gY29yZUZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNpbXBsaWZ5
TWFya3VwKGNvcmVTdGFydE5vZGUsIGNvcmUoZW5kTm9kZSkpOyAgICAKKyAgICByZXR1cm4gY29y
ZUZyYW1lLT5lZGl0b3IoKS5zaW1wbGlmeU1hcmt1cChjb3JlU3RhcnROb2RlLCBjb3JlKGVuZE5v
ZGUpKTsgICAgCiB9CiAKIEBlbmQKQEAgLTY1NjcsNyArNjU2Nyw3IEBAIHN0YXRpYyB2b2lkIGds
aWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9v
cEFjdGl2aXR5CiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAo
Y29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdCh0ZXh0KTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5oYW5kbGVB
bHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCmluZGV4IGMzODUyNGY5YzE1NGFiZTIwYzJkZWFmYTdiNzFiYmIyYjdjZDNmNGQuLjdh
YmUzNjcyN2IyMWYxMWFiYzE0MTM4NjQwZjlmZmZkMTI1MzlhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIqIGFkYQogCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdl
YlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwor
ICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIgKmFk
YXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGFkYXB0ZXItPnBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1h
bmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5p
c0VuYWJsZWQoKTsKIH0KIAogUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikKQEAgLTM3NCw3ICszNzQsNyBA
QCBRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKFFXZWJQYWdlQWRhcHRlcgogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVy
biBRVmFyaWFudExpc3QoKTsKIAotICAgIFFSZWN0IHJlc3VsdFJlY3QgPSBmcmFtZS0+ZWRpdG9y
KCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICBRUmVjdCByZXN1bHRSZWN0
ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKICAgICBy
ZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3QueSgpIDw8IHJlc3VsdFJlY3Qud2lk
dGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOwogICAgIHJldHVybiByZWN0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRl
eCBkODJkMGU1ZmQ3ZGU4MTkxZmYyOTIxM2YyN2Q0MDhkNGZhMjAxYWQxLi44MjVhY2EzOTU1ZTli
MzVhYTdjZjBiZjdiZmIyOTk5NDJmMWI5MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApAQCAtMjA2LDEyICsyMDYsMTIgQEAg
dm9pZCBFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihGcmFtZSogZnJh
bWUpCiAgICAgaWYgKHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgJiYgZnJhbWUtPnNlbGVjdGlv
bigpLT5pc1JhbmdlKCkpIHsKICAgICAgICAgYm9vbCBvbGRTZWxlY3Rpb25Nb2RlID0gUGFzdGVi
b2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxlY3Rpb25Nb2RlKCk7CiAgICAgICAgIFBh
c3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUodHJ1ZSk7Ci0g
ICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0aW9uKGZy
YW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPmVkaXRv
cigpLT5jYW5TbWFydENvcHlPckRlbGV0ZSgpLCBmcmFtZSk7CisgICAgICAgIFBhc3RlYm9hcmQ6
OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPmVkaXRvcigpLmNhblNtYXJ0Q29weU9y
RGVsZXRlKCksIGZyYW1lKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+c2V0U2VsZWN0aW9uTW9kZShvbGRTZWxlY3Rpb25Nb2RlKTsKICAgICB9CiAKICAgICBtX3Bh
Z2UtPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKTsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3Io
KS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQogICAgICAgICBlbWl0
IG1fcGFnZS0+bWljcm9Gb2N1c0NoYW5nZWQoKTsKIH0KIApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlVuZG9TdGVwPiBzdGVwKQogewogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVkaXRv
cigpLT5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8p
KQorICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCkubGFz
dEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIG1fcGFnZS0+cmVnaXN0ZXJVbmRvU3RlcChzdGVwKTsKICNlbmRpZiAv
LyBRVF9OT19VTkRPU1RBQ0sKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0
OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAg
Ly8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBk
ZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEg
RWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLAogICAgICAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQg
dXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIg
dGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQK
ICAgICAgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFjdGVyLCBv
ciBFbnRlcikuCi0gICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNtZCku
aXNUZXh0SW5zZXJ0aW9uKCkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChjbWQpLmlzVGV4dEluc2VydGlvbigpCiAgICAgICAgICAgICAgICAgJiYga2V2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJp
bmcgY29tbWFuZE5hbWUgPSBlZGl0b3JDb21tYW5kRm9yS2V5RG93bkV2ZW50KGV2ZW50KTsKICAg
ICAgICAgICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpKSAvLyBF
dmVudCBoYW5kbGVkLgorICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpKSAvLyBFdmVudCBoYW5kbGVkLgogICAgICAgICAgICAg
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC00OTUsNyArNDk1LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRR
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQpIHsKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwg
ZXZlbnQpOwogICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCB2
b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9
IGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgICAgIEFT
U0VSVCghY29tbWFuZE5hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOwogICAgICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAppbmRleCBmYTRlNGMwZjNlYTdhY2Q3ODY3OWExODYxNTAz
YTE5OTc0OGRlYTAzLi4yMWMwZTU4YjMzY2UzMzFiOTc1YjM0MDQ5NzhhN2ZiYzBhNDU4MTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuY3BwCkBAIC0zMDksMTIgKzMwOSwxMiBAQCBRU3RyaW5nIFFXZWJQYWdlQWRhcHRlcjo6c2Vs
ZWN0ZWRUZXh0KCkgY29uc3QKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0
aW9uKQogICAgICAgICByZXR1cm4gUVN0cmluZygpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGVkVGV4dCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRU
ZXh0KCk7CiB9CiAKIFFTdHJpbmcgUVdlYlBhZ2VBZGFwdGVyOjpzZWxlY3RlZEh0bWwoKSBjb25z
dAogewotICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCktPnRvSFRNTCgpOworICAgIHJldHVybiBw
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnNl
bGVjdGVkUmFuZ2UoKS0+dG9IVE1MKCk7CiB9CiAKIGJvb2wgUVdlYlBhZ2VBZGFwdGVyOjppc0Nv
bnRlbnRFZGl0YWJsZSgpIGNvbnN0CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBRV2ViUGFnZUFk
YXB0ZXI6OnNldENvbnRlbnRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZTsKICAgICBpZiAoZWRpdGFibGUpIHsKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgp
OwogICAgICAgICAvLyBGSVhNRTogbWFjIHBvcnQgY2FsbHMgdGhpcyBpZiB0aGVyZSBpcyBubyBz
ZWxlY3RlZERPTVJhbmdlCiAgICAgICAgIC8vIGZyYW1lLT5zZXRTZWxlY3Rpb25Gcm9tTm9uZSgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3ZTZmMDBlYmE3YmNhNGVjNzM0NTExYzI0
ZjVlMjI0ZTY1M2JhMjZjLi5mNzRiZmZiOWI5Y2RhMjUwOWFjOTE3ODIzMGMxZjIxZjFmZTZkN2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsK
KyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
OwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBTdHJpbmcgZW5jb2Rl
ZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKICAgICBlbmNv
ZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNzBjYjUy
YTk3MzIzMTI5ZTgxYmQ3ZDdkMDE2NmNlNmYzOGMwYzA0Yi4uY2U2MmEyOWNmZGRmM2E1Zjk3MjNm
MGY3YzViMTNiMTI5MGZlNDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMTAwNSw3ICsx
MDA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzU3BlbGxpbmdN
YXJrZXIoCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVs
bGluZywgZnJvbSwgbGVuZ3RoKTsKKyAgICAqcmVzdWx0ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20s
IGxlbmd0aCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEwMjYsMTEgKzEwMjYsMTEgQEAg
SFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihCU1RSIGRpcmVjdGlvbikKIAogICAg
IFN0cmluZyBkaXJlY3Rpb25TdHJpbmcoZGlyZWN0aW9uLCBTeXNTdHJpbmdMZW4oZGlyZWN0aW9u
KSk7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAiYXV0byIpCi0gICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0
aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5n
ID09ICJsdHIiKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVj
dGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJydGwiKQotICAgICAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdy
aXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTEwNTIsNyArMTA1Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRnJhbWU6OnNlbGVjdGVkU3RyaW5nKAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIHRleHQgPSBjb3JlRnJhbWUtPmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcoY29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkp
OworICAgIFN0cmluZyB0ZXh0ID0gY29yZUZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogCiAgICAgKnJlc3Vs
dCA9IEJTdHJpbmcodGV4dCkucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTA2NCw3
ICsxMDY0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0QWxs
KCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGlm
ICghY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQor
ICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRl
KCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggZTQ3NzZmZGUwNDNkNTBjMTg0Y2NjMmZhNjM2YTMyOWY2ZDIyMDM0MC4u
ZTYyNmI3ODRmOWJlYWE4N2FkYzA5OGZhOTg0YmQ0MGYzNjc0Y2M2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKQEAgLTE4MTIsMTEgKzE4MTIsMTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2gg
KExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5l
eGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2Ug
UmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8i
KS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlJlZG8iKS5leGVjdXRlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE5NjMs
NyArMTk2Myw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5
Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmICgha2V5RXZlbnQgfHwga2V5RXZlbnQtPmlzU3lzdGVt
S2V5KCkpICAvLyBkbyBub3QgdHJlYXQgdGhpcyBhcyB0ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0
ZW0ga2V5IGV2ZW50CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2
dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0
IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5k
cyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUg
dHJlYXRlZCwKQEAgLTE5NzksNyArMTk3OSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmIChldnQtPmNoYXJDb2Rl
KCkgPCAnICcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBl
dnQpOwogfQogCiBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBM
UEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0ZW1LZXlEb3duKQpAQCAtMzQyOSw3ICszNDI5LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZl
U3RhdGUoKQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3Jl
Q29tbWFuZEJ5TmFtZShCU1RSIG5hbWUsIEJTVFIgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKHRv
U3RyaW5nKG5hbWUpKS5leGVjdXRlKHRvU3RyaW5nKHZhbHVlKSk7CisgICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQodG9T
dHJpbmcobmFtZSkpLmV4ZWN1dGUodG9TdHJpbmcodmFsdWUpKTsKIAogICAgIHJldHVybiBTX09L
OwogfQpAQCAtMzY1Niw3ICszNjU2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpzZWxlY3RlZFRleHQoCiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQg
PSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgICp0ZXh0ID0gU3lz
QWxsb2NTdHJpbmdMZW4oZnJhbWVTZWxlY3RlZFRleHQuY2hhcmFjdGVycygpLCBmcmFtZVNlbGVj
dGVkVGV4dC5sZW5ndGgoKSk7CiAgICAgaWYgKCEqdGV4dCAmJiBmcmFtZVNlbGVjdGVkVGV4dC5s
ZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CkBAIC00MjY1LDE0ICs0MjY1
LDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGVFbmFibGVkKAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpkZWxldGVFbmFibGVkKCAKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LT5jYW5EZWxldGUoKTsKKyAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jYW5EZWxldGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWRpdGlu
Z0VuYWJsZWQoIAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7
Ci0gICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jYW5FZGl0KCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQzMjQsNyArNDMyNCw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KAogICAgICAg
ICAvKiBbaW5dICovIEJTVFIgdGV4dCkKIHsKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwotICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+aW5z
ZXJ0VGV4dCh0b1N0cmluZyh0ZXh0KSwgMCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmluc2VydFRleHQodG9TdHJpbmcodGV4
dCksIDApOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRCYXNlKHN0
YXJ0KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQzNjgsMjggKzQzNjgsMjggQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjphcHBseVN0eWxlKAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5KCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biog
LypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNv
bW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0KCAKICAgICAgICAgLyogW2luXSAqLyBJVW5r
bm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlKCAKICAgICAgICAgLyogW2luXSAq
LyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0
ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5VVJMKCAKICAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHVybCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxw
ZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBl
cnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NDEx
LDcgKzQ0MTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlRm9u
dCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlXyggCiAgICAgICAg
IC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJEZWxl
dGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTQ0OTMsNyArNDQ5Myw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2hlY2tTcGVsbGluZygKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKICAgICB9CiAgICAgCi0gICAgY29yZShtX21haW5GcmFtZSktPmVkaXRvcigpLT5hZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCkuYWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC00
NTEyLDcgKzQ1MTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNob3dH
dWVzc1BhbmVsKAogICAgICAgICBtX2VkaXRpbmdEZWxlZ2F0ZS0+c2hvd1NwZWxsaW5nVUkoRkFM
U0UpOwogICAgIH0KICAgICAKLSAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCktPmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9y
KCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOwogICAgIG1fZWRpdGluZ0RlbGVnYXRl
LT5zaG93U3BlbGxpbmdVSShUUlVFKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTUzMzksNyAr
NTMzOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bG9hZEJhY2tGb3J3
YXJkTGlzdEZyb21PdGhlclZpZXcoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCi0gICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTU0NTQsNyArNTQ1NCw3IEBAIHZvaWQgV2ViVmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdp
bmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElucHV0Q29udGV4dCkKICAgICBpZiAoUmVm
UHRyPFJhbmdlPiByYW5nZSA9IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICAgICAgUmVmUHRyPFJhbmdlPiB0ZW1wUmFuZ2UgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0g
ICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZSh0
ZW1wUmFuZ2UuZ2V0KCkpOworICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5m
aXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOwogICAgIH0KICAgICBjYXJldCA9IHRh
cmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coY2FyZXQpOwogICAgIENBTkRJREFU
RUZPUk0gZm9ybTsKQEAgLTU0NzIsNyArNTQ3Miw3IEBAIHZvaWQgV2ViVmlldzo6cHJlcGFyZUNh
bmRpZGF0ZVdpbmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElucHV0Q29udGV4dCkKIHZv
aWQgV2ViVmlldzo6cmVzZXRJTUUoRnJhbWUqIHRhcmdldEZyYW1lKQogewogICAgIGlmICh0YXJn
ZXRGcmFtZSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlv
bigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsK
IAogICAgIGlmIChISU1DIGhJbnB1dENvbnRleHQgPSBnZXRJTU1Db250ZXh0KCkpIHsKICAgICAg
ICAgSU1NRGljdDo6ZGljdCgpLm5vdGlmeUlNRShoSW5wdXRDb250ZXh0LCBOSV9DT01QT1NJVElP
TlNUUiwgQ1BTX0NBTkNFTCwgMCk7CkBAIC01NDg3LDcgKzU0ODcsNyBAQCB2b2lkIFdlYlZpZXc6
OnVwZGF0ZVNlbGVjdGlvbkZvcklNRSgpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0
aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKKyAgICBpZiAoIXRhcmdldEZyYW1lLT5lZGl0b3Io
KS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCiAgICAgICAgIHJlc2V0
SU1FKHRhcmdldEZyYW1lKTsKIH0KIApAQCAtNTY0Myw3ICs1NjQzLDcgQEAgYm9vbCBXZWJWaWV3
OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFyYW0pCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBwcmVw
YXJlQ2FuZGlkYXRlV2luZG93KHRhcmdldEZyYW1lLCBoSW5wdXRDb250ZXh0KTsKQEAgLTU2NTMs
NyArNTY1Myw3IEBAIGJvb2wgV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFt
KQogICAgICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19S
RVNVTFRTVFIsIGNvbXBvc2l0aW9uU3RyaW5nKSAmJiBscGFyYW0pCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmly
bUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nOwogICAgICAgICBpZiAoIWdldENv
bXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19DT01QU1RSLCBjb21wb3NpdGlvblN0
cmluZykpCkBAIC01Njc0LDcgKzU2NzQsNyBAQCBib29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRp
b24oTFBBUkFNIGxwYXJhbSkKIAogICAgICAgICBpbnQgY3Vyc29yUG9zaXRpb24gPSBMT1dPUkQo
SU1NRGljdDo6ZGljdCgpLmdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19D
VVJTT1JQT1MsIDAsIDApKTsKIAotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldENv
bXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwg
MCk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNTY4Niw4ICs1Njg2LDggQEAgYm9vbCBXZWJWaWV3OjpvbklNRUVu
ZENvbXBvc2l0aW9uKCkKICAgICAvLyBJZiB0aGUgY29tcG9zaXRpb24gaGFzbid0IGJlZW4gY29u
ZmlybWVkIHlldCwgaXQgbmVlZHMgdG8gYmUgY2FuY2VsbGVkLgogICAgIC8vIFRoaXMgaGFwcGVu
cyBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSBpbmxpbmUgaW5wdXQgaG9s
ZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCktPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmcoKSk7CisgICAgaWYgKHRhcmdldEZyYW1lICYm
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKIAogICAgIGlmICht
X2luSU1FQ29tcG9zaXRpb24pCiAgICAgICAgIG1faW5JTUVDb21wb3NpdGlvbi0tOwpAQCAtNTcx
MiwxNCArNTcxMiwxNCBAQCBib29sIFdlYlZpZXc6Om9uSU1FTm90aWZ5KFdQQVJBTSB3cGFyYW0s
IExQQVJBTSwgTFJFU1VMVCopCiAKIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0Q2hhclBv
c2l0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9OKiBjaGFyUG9zKQogewot
ICAgIGlmIChjaGFyUG9zLT5kd0NoYXJQb3MgJiYgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFz
Q29tcG9zaXRpb24oKSkKKyAgICBpZiAoY2hhclBvcy0+ZHdDaGFyUG9zICYmICF0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSW50
UmVjdCBjYXJldDsKLSAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSA/IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y29tcG9z
aXRpb25SYW5nZSgpIDogdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05v
cm1hbGl6ZWRSYW5nZSgpKSB7CisgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSA/IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5j
b21wb3NpdGlvblJhbmdlKCkgOiB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigp
LnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gdGVtcFJhbmdlID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwog
ICAgICAgICB0ZW1wUmFuZ2UtPnNldFN0YXJ0KHRlbXBSYW5nZS0+c3RhcnRDb250YWluZXIoZWMp
LCB0ZW1wUmFuZ2UtPnN0YXJ0T2Zmc2V0KGVjKSArIGNoYXJQb3MtPmR3Q2hhclBvcywgZWMpOwot
ICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2Uo
dGVtcFJhbmdlLmdldCgpKTsKKyAgICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCku
Zmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKICAgICB9CiAgICAgY2FyZXQgPSB0
YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGNhcmV0KTsKICAgICBjaGFyUG9z
LT5wdC54ID0gY2FyZXQueCgpOwpAQCAtNTc1Miw3ICs1NzUyLDcgQEAgTFJFU1VMVCBXZWJWaWV3
OjpvbklNRVJlcXVlc3QoV1BBUkFNIHJlcXVlc3QsIExQQVJBTSBkYXRhKQogewogICAgIExPRyhU
ZXh0SW5wdXQsICJvbklNRVJlcXVlc3QgJXMiLCBpbWVSZXF1ZXN0TmFtZShyZXF1ZXN0KS5sYXRp
bjEoKS5kYXRhKCkpOwogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghdGFyZ2V0RnJhbWUgfHwg
IXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghdGFyZ2V0RnJhbWUg
fHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgc3dpdGNoIChyZXF1ZXN0KSB7CkBAIC02ODgzLDE0ICs2ODgzLDE0IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKAogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRv
cigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyBjb21w
b3NpdGlvblN0ciA9IHRvU3RyaW5nKGNvbXBvc2l0aW9uKTsKIAogICAgIFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3Np
dGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0ci5sZW5ndGgoKSwgQ29sb3IoQ29sb3I6OmJs
YWNrKSwgZmFsc2UpKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBv
c2l0aW9uU3RyLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVybGluZXMsIGZyb20s
IGZyb20gKyBsZW5ndGgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC02OTA0LDcgKzY5MDQs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omhhc0NvbXBvc2l0aW9uRm9y
VGVzdGluZygvKiBbb3V0LCByZXR2YWxdICovCiAgICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNDb21wb3NpdGlvbigpOworICAgICpyZXN1bHQgPSBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNjkxNSwxNSArNjkx
NSwxNSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvbmZpcm1Db21wb3Np
dGlvbkZvclRlc3RpbmcoLyogW2luXSAqLyBCU1RSCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCiAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyID0gdG9TdHJpbmco
Y29tcG9zaXRpb24pOwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyLmlzTnVsbCgpKQotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7CisgICAgZnJhbWUtPmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTY5MzQsMTAgKzY5MzQsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
Ojpjb21wb3NpdGlvblJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKgogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKTsKIAogICAgIGlm
ICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC02OTc4LDcgKzY5NzgsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlRm9yVGVzdGluZygKICAgICBBU1NFUlQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpOwogICAg
IEFTU0VSVChyYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgICAKLSAgICBJbnRSZWN0IHJlY3Qg
PSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICBJ
bnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpOwogICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93
KHJlY3QpOwogCiAgICAgcmVzdWx0UmVjdC0+bGVmdCA9IHJlc3VsdEludFJlY3QueCgpOwpAQCAt
Njk5OCw3ICs2OTk4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxl
Y3RlZFJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKiBsb2MKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogCiAgICAgc2l6ZV90IGxvY2F0aW9u
U2l6ZTsKICAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKaW5kZXggYzkxZWM5
ZjgyMDJjODhhNmMxZTJkOGEyOTdiNjVjYmE5NGQyZjI5Mi4uNjQ1OGRmNmY4YTc4ODQ3ODllODA4
OWVkNDQxMTJhZTJhZmE3NTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKQEAgLTM5NSw3ICszOTUsNyBA
QCBib29sIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2
ZW50KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9l
c24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29t
bWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxk
IGJlIHRyZWF0ZWQsCkBAIC00MTUsNyArNDE1LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYg
KGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50
LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
Lmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA5OGE0MDRjMDJhYTFj
OTgxYmVhZTQ5NTIwNjYwZmI2MTM3YzJkZjE2Li45MGE1MTQ4NjBlZjk1N2ZhOTYyYmY2YzUzYjli
MDA3ZjZhODk3MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBL
VVJMJikKICNpZiAhUExBVEZPUk0oTUFDKQogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHNlYXJj
aFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgU3RyaW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CiAgICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAi
LCAiKyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGMxNzNhYmM2ZmE4YmRiMmY3ZjUy
ZGFiNzVjNTE2ODk0ZTY2YzIwYjIuLmE4YjYyZDE1YmViYjhlZGQzMTMzZmM0MjlkZTBlNWI1YzVm
OGQyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAg
ICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlz
UmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICAgICAgUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICAgICAg
UGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNl
bGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNh
blNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJh
bFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRDb3B5T3JEZWxldGUo
KSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRT
ZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9X
ZWJFZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDcwMTBhOGY3N2MxZjVhMzEwMDlmNWFhOGI3MGMy
YTI4ZDMyYmIzYTIuLmM0MmVjMzdiZDY0NjE3ZWRjMWQwMDA2NWQ3N2UxZmZiNmUwZmZlNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dl
YkVkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5jb3JlUGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklY
TUU6IHNlbmRpbmcgc3luYyBtZXNzYWdlIG1pZ2h0IG1ha2UgaW5wdXQgbGFnZ2luZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVk
aXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDY3ZmRjMWY0NDRlYWQ2YmE4Y2E3
OTE4ODRmZDU4MTlmODI0ZjBjODEuLjk4ODlhOWQ2ODEwNzU3NTEwNjA4OWFiZjllNzhjYjEzYWJj
MGI1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5k
cyhGcmFtZSogZnJhbWUsIFZlY3RvcjxXVEY6OlN0cgogewogICAgIFZlY3RvcjxFZGl0b3I6OkNv
bW1hbmQ+IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0VkaXRv
ckNvbW1hbmRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKHBlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZChwZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJ
bnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk1LDE0ICs5NSwxNCBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50
KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRp
b24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYg
KGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5k
cywgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7CisgICAgICAgIGlmIChleGVjdXRlUGVu
ZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZyYW1lLT5l
ZGl0b3IoKS5jYW5FZGl0KCkpKSB7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIERv
bid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNhbm5vdCBlZGl0LgotICAg
IGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGp1c3QgYSBu
b3JtYWwgdGV4dCBpbnNlcnRpb24sIHNvIHdhaXQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPmN0cmxLZXko
KSB8fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50
KSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+dGV4
dCgpLCBldmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCmluZGV4IDBmY2EzYjk4
ZmZjNmJkOWRmNTA2MzI3YTEzOWFkYjU3NDc4ZjNmNTguLjNjMjMwZWJlNDRhYzRlNzMzMjZiNGM2
YmQ5NTg0ODE5M2NmM2IwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xp
ZW50TWFjLm1tCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0
b3BTcGVha2luZygpCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29n
bGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZWFyY2hUaGVXZWIoc2VhcmNoU3RyaW5nKSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQogICAgIGlmICghc2VsZWN0
aW9uRnJhbWUpCiAgICAgICAgIHNlbGVjdGlvbkZyYW1lID0gbWFpbkZyYW1lOwogCi0gICAgU3Ry
aW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7Cisg
ICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJhbWUtPmRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgp
KTsKICAgICAKICAgICBpZiAoc2VsZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggODIzNWJjNmQ4ODBm
MzZmYTA1NTVhMjc1MzMwZDc2ZTI3ZTM1NWZkNS4uZTBiOGFjODEyYjg2YWEyNjliNTdkZTNhN2Y2
ZjJhMDI2ZDNiYTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAt
MTM2LDEyICsxMzYsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldEluc2VydGlvblBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikKIHN0YXRpYyB2b2lkIGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2Uq
IHBhZ2UsIFNFTCBzZWxlY3RvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
c2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgic2Vs
ZWN0V29yZCIpLmV4ZWN1dGUoKTsKIAotICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZy
YW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOworICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQo
KSk7CiAgICAgcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGZyYW1lLCBbc2VsZWN0ZWRT
dHJpbmcgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGUyNjA1NmU5Mjg2OWNkNTU5
ZDgwMzc5NTMzNTlkNGIyN2I2N2YxY2YuLjcyNmNhMDZlNzkwYjA0MDc0NmIxYWI0ODJlYzhiNzdl
ZDBjM2E2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c2VsZWN0aW9uQXNT
dHJpbmcoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhtX2NvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICByZXR1
cm4gbV9jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobV9jb3JlRnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKIH0KIAogSW50U2l6ZSBXZWJGcmFtZTo6c2l6
ZSgpIGNvbnN0CkBAIC03MDAsMTUgKzcwMCwxNSBAQCBTdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBl
Rm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIAogdm9pZCBXZWJGcmFt
ZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvbikKIHsKLSAgICBpZiAo
IW1fY29yZUZyYW1lIHx8ICFtX2NvcmVGcmFtZS0+ZWRpdG9yKCkpCisgICAgaWYgKCFtX2NvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRpcmVjdGlvbiA9PSAiYXV0byIpCi0g
ICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0
dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0
QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIGVsc2Ug
aWYgKGRpcmVjdGlvbiA9PSAibHRyIikKLSAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5z
ZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAg
ICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRv
UmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJ0bCIp
Ci0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
UmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRv
cigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7
CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTk0N2VlYmQ2NDc2ZWM3M2I2NjBlMmMwMDg4ZGMyNzc4
MTIwNWUxZC4uZjAxZDVjYWY2NWI3YjE0Y2I1MWE4YmVkNDY5MWE5ZTJhNzdiZDAzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjAxLDgg
KzYwMSw4IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICBy
ZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVk
aXRhYmxlKCk7CiAgICAgcmVzdWx0LmlzQ29udGVudFJpY2hseUVkaXRhYmxlID0gZnJhbWUtPnNl
bGVjdGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogICAgIHJlc3VsdC5pc0luUGFz
c3dvcmRGaWVsZCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmllbGQoKTsKLSAg
ICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCk7Ci0gICAgcmVzdWx0LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlID0g
ZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpOworICAg
IHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigp
OworICAgIHJlc3VsdC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpOwogCiAjaWYg
UExBVEZPUk0oUVQpCiAgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKQEAgLTY0MSw4ICs2NDEsOCBA
QCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgICAgIHJlc3Vs
dC5lZGl0b3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhzZWxlY3Rpb25S
b290LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKTsKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2U7Ci0gICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlvbiAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKSkpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5n
ZXRDb21wb3NpdGlvblNlbGVjdGlvbihyZXN1bHQuYW5jaG9yUG9zaXRpb24sIHJlc3VsdC5jdXJz
b3JQb3NpdGlvbik7CisgICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlvbiAmJiAocmFuZ2UgPSBm
cmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpKSkgeworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24ocmVzdWx0LmFuY2hvclBvc2l0aW9uLCByZXN1
bHQuY3Vyc29yUG9zaXRpb24pOwogCiAgICAgICAgIHJlc3VsdC5jb21wb3NpdGlvblJlY3QgPSBm
cmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJhbmdlLT5ib3VuZGluZ0JveCgpKTsKICAg
ICB9CkBAIC02NTcsNyArNjU3LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUo
KSBjb25zdAogICAgIH0KIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgcmVzdWx0LmN1cnNvclJl
Y3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGZyYW1lLT5lZGl0b3IoKS0+Zmly
c3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LmN1cnNvclJlY3Qg
PSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGZyYW1lLT5lZGl0b3IoKS5maXJzdFJl
Y3RGb3JSYW5nZShyYW5nZS5nZXQoKSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5
IHRyYW5zZmVyIGlubmVyVGV4dCB3aGVuIGl0IGNoYW5nZXMgYW5kIGRvIHRoaXMgb24gdGhlIFVJ
IHNpZGUuCiAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5Q
YXNzd29yZEZpZWxkKSB7CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoYXJndW1lbnQpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKGFyZ3VtZW50KTsKIH0KIAogYm9vbCBXZWJQ
YWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQpA
QCAtNzgwLDcgKzc4MCw3IEBAIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQo
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmll
dyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gcGx1
Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgIAotICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1h
bmROYW1lKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKGNvbW1hbmROYW1lKTsKICAgICByZXR1cm4gY29tbWFuZC5pc1N1cHBvcnRlZCgpICYm
IGNvbW1hbmQuaXNFbmFibGVkKCk7CiB9CiAgICAgCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCB2b2lk
IFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZv
Y3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICAgICAgaXNFbmFibGVkID0g
cGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpOwogICAgICAg
ICAgICAgc3RhdGUgPSBjb21tYW5kLnN0YXRlKCk7CiAgICAgICAgICAgICBpc0VuYWJsZWQgPSBj
b21tYW5kLmlzU3VwcG9ydGVkKCkgJiYgY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgfQpA
QCAtMjU2MCw3ICsyNTYwLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYgKCFrZXlFdmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CisgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQp
KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURv
d24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g
YWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBp
ZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtMjU3MywxNCArMjU3
MywxNCBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBEb24ndCBhbGxvdyB0
ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3Ig
Y29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2
aW91cgogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVu
dCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0
KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwogfQogI2VuZGlmCiAKQEAgLTI4NTksNyAr
Mjg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25E
ZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwKIHZvaWQgV2ViUGFnZTo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNoYW5nZVNwZWxs
aW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAgLTI4ODYsMTcgKzI4ODYsMTcgQEAgdm9p
ZCBXZWJQYWdlOjp1bm1hcmtBbGxCYWRHcmFtbWFyKCkKICNpZiBVU0UoQVBQS0lUKQogdm9pZCBX
ZWJQYWdlOjp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsKKyAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCku
dXBwZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxvd2VyY2FzZVdvcmQoKQogewot
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0
b3IoKS0+bG93ZXJjYXNlV29yZCgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5sb3dlcmNhc2VXb3JkKCk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FwaXRhbGl6ZVdvcmQoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCkuY2FwaXRhbGl6ZVdvcmQoKTsKIH0KICNlbmRpZgogICAgIApAQCAtMjkzMyw3ICsyOTMzLDcg
QEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7
CiAgICAgYm9vbCBzbWFydFJlcGxhY2UgPSBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNt
YXJ0UmVwbGFjZSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24oKQpAQCAtMzU5Niw3ICszNTk2LDcgQEAgdm9pZCBX
ZWJQYWdlOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCkKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOwog
fQogI2VuZGlmCiAKQEAgLTM2MTgsMjkgKzM2MTgsMjkgQEAgdm9pZCBXZWJQYWdlOjpzaW11bGF0
ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBkb3VibGUgdGltZSkKIHZv
aWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9z
aXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5k
ZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHJpbmcu
bGVuZ3RoKCksIENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgZnJvbSwg
ZnJvbSArIGxlbmd0aCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBv
c2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKIH0KIAogYm9v
bCBXZWJQYWdlOjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAg
cmV0dXJuIGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBj
b21wb3NpdGlvblN0cmluZykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9y
KCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29tcG9zaXRpb25TdHJp
bmcuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9u
KCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25T
dHJpbmcpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25l
ZCBudW1XaGVlbEV2ZW50SGFuZGxlcnMpCkBAIC0zNzk2LDE5ICszNzk2LDE5IEBAIHN0YXRpYyBG
cmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUq
IHRhcmdldEZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUt
PmVkaXRvcigpKQorICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgRWRpdG9yKiBlZGl0b3IgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0
b3ItPmNhbkVkaXQoKSkKKyAgICBFZGl0b3ImIGVkaXRvciA9IHRhcmdldEZyYW1lLT5lZGl0b3Io
KTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
aWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChlZGl0b3IuaGFzQ29tcG9z
aXRpb24oKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoZSBwYXJlbnQgbm9kZSBv
ZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQogICAgICAgICAvLyBlZGl0YWJsZSBiZWNh
dXNlIEphdmFTY3JpcHQgbWF5IGRlbGV0ZSBhIHBhcmVudCBub2RlIG9mIHRoZSBjb21wb3NpdGlv
bgogICAgICAgICAvLyBub2RlLiBJbiB0aGlzIGNhc2UsIFdlYktpdCBjcmFzaGVzIHdoaWxlIGRl
bGV0aW5nIHRleHRzIGZyb20gdGhlIHBhcmVudAogICAgICAgICAvLyBub2RlLCB3aGljaCBkb2Vz
bid0IGV4aXN0IGFueSBsb25nZXIuCi0gICAgICAgIGlmIChQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpKSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGVkaXRvci5jb21wb3NpdGlvblJhbmdlKCkpIHsKICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsKICAgICAgICAgICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTM4MjUsOCArMzgyNSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0X3Qgc2VsZWN0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9IHRhcmdldEZyYW1lLT5l
ZGl0b3IoKTsKLSAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZyk7CiAKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT0gLTEpIHsKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3Rh
dGUoKSkpOwpAQCAtMzg1OCwxOSArMzg1NywxOSBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgog
CiAgICAgICAgIEVsZW1lbnQqIHNjb3BlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5yb290
RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHJlcGxh
Y2VtZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLT5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKKyAgICAg
ICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hh
bmdlKHRydWUpOwogICAgICAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FG
RklOSVRZKSk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOwogICAgIH0KIAot
ICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5l
cywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVD
aGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3Np
dGlvbigpCiB7CiAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9yRWRp
dGluZyh0aGlzKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3Np
dGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24o
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChl
ZGl0b3JTdGF0ZSgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGU0NzMxMDMwNGQ4MTY4YmE5
ODkwNzczYTJjOWNlZWViZWNhZDlkNmYuLjA5NmEwMzBkNzU0ZGJlODk5MTUzMTgzMDk2NDI4YTM1
NjRkZWQwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9l
ZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgV2ViUGFnZTo6Y29u
ZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiAgICAgaWYg
KCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25T
dHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVy
bGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywg
Y29uc3QgVmVjdG9yPFdlYkNvCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlv
blN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworICAgIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywg
Y3Vyc29yUG9zaXRpb24sIDApOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9u
KCkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0
aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGI3MTI1MzBlYTZm
OTllOGViMGI0MGNkYTM0ODA5ZWE5ZmNhNjAyMGYuLjc4YTc4YzFlNzQ5NmM1ZTYwMmY1NmMyNzJl
NzFlYjVkYjU0NTk2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTE2OCwxNiArMTY4LDE2IEBAIGJvb2wgV2ViUGFn
ZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
S2V5cHJlc3NDb21tCiAgICAgYm9vbCBldmVudFdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChj
b21tYW5kc1tpXS5jb21tYW5kTmFtZSA9PSAiaW5zZXJ0VGV4dDoiKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7CisgICAgICAgICAgICBB
U1NFUlQoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKIAotICAgICAgICAgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICAgICAgICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWlnaHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25k
ZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24ndCBoYW5kbGUgaXQuCiAgICAgICAgICAgICAvLyBP
bmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRo
ZSBwYWdlLgotICAgICAgICAgICAgZXZlbnRXYXNIYW5kbGVkIHw9IGZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0VGV4dChjb21tYW5kc1tpXS50ZXh0LCBldmVudCk7CisgICAgICAgICAgICBldmVudFdh
c0hhbmRsZWQgfD0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoY29tbWFuZHNbaV0udGV4dCwg
ZXZlbnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5h
bWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rv
ck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKTsKICAgICAgICAgICAgIGlmIChjb21tYW5k
LmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRFeGVjdXRlZEJ5
RWRpdG9yID0gY29tbWFuZC5leGVjdXRlKGV2ZW50KTsKICAgICAgICAgICAgICAgICBldmVudFdh
c0hhbmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3I7CkBAIC0yMzMsNyArMjMzLDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCwgYm9vbCBzYXZlQ29tbWFuZHMKICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0
cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KICAgICAgICAgYm9vbCBoYXZlVGV4dEluc2Vy
dGlvbkNvbW1hbmRzID0gZmFsc2U7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29t
bWFuZHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUp
KS5pc1RleHRJbnNlcnRpb24oKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkp
LmlzVGV4dEluc2VydGlvbigpKQogICAgICAgICAgICAgICAgIGhhdmVUZXh0SW5zZXJ0aW9uQ29t
bWFuZHMgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0
IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVsdCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0
IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMuCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluZT4gdW4KICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0
Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVu
ZCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxp
bmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKICAgICBuZXdTdGF0
ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJQYWdlOjpjb25m
aXJtQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRl
KCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlv
bihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENv
bXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CkBAIC0yOTks
MTMgKzI5OSwxMyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbgogICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJh
bmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KIAotICAgIGlmICghZnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBi
ZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhh
bmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0
cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFnZS4KLSAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5l
ZGl0b3IoKS0+aW5zZXJ0VGV4dCh0ZXh0LCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVk
KTsKKyAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRleHQsIG1f
a2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhh
bmRsZWQgPSB0cnVlOwotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlv
bih0ZXh0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0ZXh0
KTsKICAgICB9CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0zMjEsOCArMzIx
LDggQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3QKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQo
KSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIWZyYW1lLT5l
ZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7Ci0gICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3Io
KS0+aW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25z
LCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKKyAgICBBU1NFUlQoIWZyYW1lLT5l
ZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKKyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigp
Lmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywg
bV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CiAgICAgbmV3U3RhdGUgPSBlZGl0b3JT
dGF0ZSgpOwogfQogCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRS
YW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpCiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBm
cmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlvblNp
emU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7CiAgICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRv
cjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0aW9u
U2l6ZSwgbGVuZ3RoU2l6ZSkpIHsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5n
dGgsIFdlYgogICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CiAgICAgQVNTRVJU
KHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAgICAgIAotICAgIEludFJlY3QgcmVjdCA9IGZyYW1l
LT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIEludFJlY3Qg
cmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CiAg
ICAgcmVzdWx0UmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiB9
CiAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZQogICAgICAgICBy
ZXN1bHQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBmcmFtZS0+ZWRpdG9y
KCktPnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CisgICAgZnJh
bWUtPmVkaXRvcigpLnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgcmVzdWx0ID0gdHJ1ZTsKIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZChTdHJpbmcmIHN0cmluZ1ZhbHVlKQog
ICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBzdHJpbmdWYWx1ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpOworICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLnN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKQpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3Rl
Ym9hcmRUeXBlLCBTaGFyZWRNCiAgICAgaWYgKCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCkt
PmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+ZWRp
dG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlm
ICghYnVmZmVyKSB7CiAgICAgICAgIHNpemUgPSAwOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201833</attachid>
            <date>2013-05-15 08:30:51 -0700</date>
            <delta_ts>2013-05-15 09:20:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515082946.patch</filename>
            <type>text/plain</type>
            <size>282045</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDc3
YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5MjgwMDU2OWUuLmRkMGEzNzI3NjJiMTY3OGI0
ZmExMDUwYWJlZWM1MTg2M2E0OGVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJh
bmdlKTsKIAotICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3Qt
PnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Us
IGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNDBj
NWZlNjkwMWI4OGQ0MmYyNGNhMDA5MzhkOTUxMTEyMzEyMmUwZS4uMWEwYmNiZGM5MjI4NTI1NjA5
YjNkZGY2NGM3ZTgxYTBlNjAzMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLAogICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQoY2xpcGJvYXJkKTsKICAgICBkYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAg
ZGF0YU9iamVjdC0+c2V0VGV4dChzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICBkYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNl
bGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9u
TG9jYWxVUkxzKSk7CiAgICAgaGVscGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2Fy
ZCwgY2FuU21hcnRDb3B5T3JEZWxldGUgPyBQYXN0ZWJvYXJkSGVscGVyOjpJbmNsdWRlU21hcnRQ
YXN0ZSA6IFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5jbHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDI3ZjFlZDg0YWI4
ODdlNzEzYjEyMmE2OGMyMDAxNjgxZGI0ZDY2OGQuLjk0Zjg2NWE0YTQ5NmFmOWMyNDBiNmRiMjRi
MGFiMjg1YjAxYjliZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBm
cmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdAogICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0ZWJvYXJkIHNjaGVtZV07CiAgICAgICAg
IC8vIENhbm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5sZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2
MjY2Mj4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMxNT4gYXJlIGZpeGVkLgogICAgICAgICBp
ZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5n
XTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmlj
YWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkgewpA
QCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYXRlIG5hdmlnYXRpb24s
IHNvIHdlIHNob3VsZG4ndCBhbGxvdyBhcmJpdHJhcnkgZmlsZSBVUkxzLgogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsbG93IG9ubHkgaHR0cCBmYW1pbHkgc2NoZW1lcywgb3IgYW55dGhp
bmcgbm9uLWxvY2FsPwogICAgICAgICBpZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0
dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBh
c3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29s
dXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgyLDcgKzE4Miw3IEBAIFN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0CiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICAgICAg
aWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxl
c1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmIGlzRGlyZWN0b3J5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGIzMTc0NzM0YzZk
NzdmMTJjNDczMDkwYzdhNjE3Yzk1ZjYwYmFkODIuLjEyOWE0ZDliOTU3MDYxMmY5ZGEzYmQ3Mzkx
OWMwZjE0ZTUyYjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewotICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXpl
U2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9h
cmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShub0JyZWFrU3Bh
Y2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIE5vZGUqIGNvbW1v
bkFuY2VzdG9yID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKElHTk9SRV9FWENFUFRJ
T04pOwogICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAgICAgTm9kZSogZW5jbG9zaW5nQW5j
aG9yID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNl
c3RvciksIEhUTUxOYW1lczo6YVRhZyk7CkBAIC0xODAsNyArMTgwLDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyaWJ1dGVkU3RyaW5nID0gbmlsOwotICAgIFJldGFpblB0cjxXZWJI
VE1MQ29udmVydGVyPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFtbV2ViSFRNTENvbnZlcnRlciBhbGxv
Y10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCku
Z2V0KCkpXSk7CisgICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFk
b3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKV0pOwogICAgIGlmIChjb252ZXJ0ZXIp
CiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbY29udmVydGVyLmdldCgpIGF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIApAQCAtMTg4LDExICsxODgsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQo
KS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7
CiAgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNsaWVudFR5cGVzKTsKIAogICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNsaWVudFR5cGVzLnNpemUoKTsgKytpKQogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY2xpZW50RGF0YVtp
XSwgY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAg
ICAKICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmw7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29j
b2FVUkwpOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IGZyYW1lLT5lZGl0b3Io
KS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29jb2FVUkwpOwogICAgIAogICAgIE5TU3Ry
aW5nICp0aXRsZSA9IChOU1N0cmluZyopdGl0bGVTdHI7CiAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
ID09IDApIHsKQEAgLTM4MCw3ICszODAsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQg
dG8gY2FsbCBpbnRvIHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCiAgICAgICAgIC8vIGNhbGxpbmcg
X3dlYl91c2VyVmlzaWJsZVN0cmluZyBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEg
c2l6YWJsZSB3ZWIgb2YgCiAgICAgICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhl
ciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3
YXkuCi0gICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcg
PSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0cmluZ10pOwogICAgICAgICBpZiAoW3N0cmluZyBsZW5ndGhdID4gMCkKICAg
ICAgICAgICAgIHJldHVybiBbc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1h
cHBpbmddOwogICAgIH0KQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aFJURihGcmFtZSogZnJhbWUsIE5TU3Ry
aQogICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gcmVzb3VyY2VzOwotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLmNs
aWVudCgpLT5kb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5nLCByZXNv
dXJjZXMpOwogCiAgICAgc2l6ZV90IHNpemUgPSByZXNvdXJjZXMuc2l6ZSgpOwogICAgIGlmIChz
aXplKSB7CkBAIC01MTMsNyArNTEzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQ
YXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgLy8gTm9uLWltYWdlIGZpbGUgdHlwZXM7IF93ZWJfdXNlclZpc2libGVTdHJpbmcgaXMgYXBw
cm9wcmlhdGUgaGVyZSBiZWNhdXNlIHRoaXMgd2lsbAogICAgICAgICAgICAgLy8gYmUgcGFzdGVk
IGFzIHZpc2libGUgdGV4dC4KLSAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhdGhzW2ldXSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdXJsID0gZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhz
W2ldXSk7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y3JlYXRlVGV4dE5vZGUodXJsKTsKICAgICAgICAgICAgIHJlZk5vZGVzVmVjdG9yLmFw
cGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBub2Rlc1ZlY3Rvci5hcHBlbmQodGV4
dE5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDFiZWNkYTMxM2Q4ZjlkMjcyNzQ1YWU1NDBkOGViMmU3MjYxZGUxOTQuLjU5N2Y3ZTE4
YWVmODViOWVlMjE0OThhYTM4NGFjYjJlMDlhOGNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIENsaXBib2Fy
ZFF0Ojp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFt
X3dyaXRhYmxlRGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwot
ICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCk7CisgICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIo
JyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJs
ZURhdGEtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggNTUwYWY3YWNlOTc1YzcxZTcwMzgzNjdhZDQ4
YzI1MWU4MWI0ZmQ5My4uNzI2NGMwOTRkMjVjNWNiMTdhNDE2NGRiZTlkODFlMzdhMDcwMDg3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCkKIHsKICAgICBRTWltZURhdGEqIG1kID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRl
eHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUlt
YWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJp
bmcgdGV4dCA9IHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNs
dWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRl
eHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRl
eHQodGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKaW5kZXggODc1MTk3ZmNkMDg0OWZkZThhZDAyNmI0YTM1YzU4Yjk2OGIxMzViYS4uMWVlODJm
ZDM5OTE5OWI3ZWQ1ZDk1NGQzYWI5NDFmODBjMzEyMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIENs
aXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1l
KQogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3Qt
PlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFs
RnJlZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0
cik7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7CkBAIC03NTks
NyArNzU5LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKIAogICAgIG1lZGl1bS5oR2xvYmFsID0gMDsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5j
YW5TbWFydENvcHlPckRlbGV0ZSgpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRD
b3B5T3JEZWxldGUoKSkKICAgICAgICAgbV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoc21h
cnRQYXN0ZUZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGUyZDcxZDE0YjI3NGFjNzgwMjFh
ZjU0NzU4YWI3NDEwNzk1ZTk2YjMuLmFjNzA2YzRjNTEwMDQyOTUxNTNlMTg1YjQxNDFkMmJjNjEy
ZmYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0KICAg
ICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RF
VEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0ciA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9y
Q2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7
CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDY1MmIxOGJkY2VlZTY0ZDYzNzk3MmNmMTIz
MzE0ZjhjNzI0NWJiOTkuLjc0MTA5ZTFmN2FlMzE3ZDdmMWViZmY1MDJmZDQ5MmUxZjU1NGNkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTY0MCw3
ICs2NDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXMoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5kaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAogTm9kZSogSGl0VGVzdFJlc3Vs
dDo6dGFyZ2V0Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggZjI2YzE5ZDcxZTVjODMxNWQ5ZTE4ZDViMzI5MTU2YTJkZWZiYzdjMi4u
NzAyNjk5NmNjMjFhODlhY2Q3ZDVlMzRjZDk3ZGM5Mzk3NWY0ODcwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJv
eFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdl
IGhhdmUgY29tcG9zaXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgotICAgIGJvb2wgY29udGFpbnND
b21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIGJv
b2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIo
KS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsK
KyAgICBib29sIGNvbnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVu
ZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIo
KS0+bm9kZSgpOworICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9z
aXRpb24gJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3Vz
dG9tVW5kZXJsaW5lcygpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IGNvbG9ycyBhbmQg
c2VsZWN0aW9uIGNvbG9ycy4KICAgICBDb2xvciB0ZXh0RmlsbENvbG9yOwpAQCAtNjU3LDggKzY1
Nyw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgICAgICBpZiAoY29udGFpbnNDb21w
b3NpdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcykKICAgICAgICAgICAgIHBhaW50Q29tcG9z
aXRpb25CYWNrZ3JvdW5kKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwKLSAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25T
dGFydCgpLAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5j
b21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCksCisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSk7CiAKICAgICAgICAgcGFpbnREb2N1
bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCB0cnVlKTsK
IApAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFp
bnREb2N1bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCBm
YWxzZSk7CiAKICAgICAgICAgaWYgKHVzZUN1c3RvbVVuZGVybGluZXMpIHsKLSAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCk7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
ID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxp
bmVzKCk7CiAgICAgICAgICAgICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6
ZSgpOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5k
ZXJsaW5lczsgKytpbmRleCkgewpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgIHRvUmVuZGVyZWREb2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJl
ZFJlY3QobWFya2VyUmVjdCk7CiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKICAgICAgICAgQ29s
b3IgY29sb3IgPSBtYXJrZXItPmFjdGl2ZU1hdGNoKCkgPwogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCBkZmI0ZWIxNTBiZDUyMGUyZDAzNjU1OGE2MGZmYTAwNzMxY2IyMTRlLi5kNzA5NjE2
NTZjZjdmMmEwZjJlYmM5YWM3ODA3OGUxYWRkYTMxODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTUyODYsNyArNTI4Niw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBM
YXlvdXRQb2luCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG1vdmVDYXJldFRvQm91bmRh
cnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRNb3Zl
Q2FyZXRUb0hvcml6b250YWxCb3VuZGFyeVdoZW5QYXN0VG9wT3JCb3R0b20oKTsKKyAgICBib29s
IG1vdmVDYXJldFRvQm91bmRhcnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJv
dHRvbSgpOwogCiAgICAgaWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYm
IGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyBsYXN0IHJvb3QgbGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTdlYTE1NTIzODIzNmYyZmMxYmJiZTkxNGNjMDU0NTNm
OTRjYTRhZS4uZTk0NWVmMzQ2NDAzZjE3MzllNjIxZTI5N2U1NGM2NTVkZTY2MGYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjM2LDEwICsyMzYsMTAgQEAgc3RhdGlj
IGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUKIAogc3RhdGljIFNwZWxsQ2hlY2tlciogc3BlbGxjaGVja2VyKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpKQorICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNwZWxsQ2hlY2tlcigpOworICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2VyKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIEludGVybmFsczo6aW50ZXJuYWxzSWQgPSAiaW50ZXJuYWxzIjsKQEAgLTI4NCwxMCArMjg0
LDEwIEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2Up
CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKCFw
YWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKTsKLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigp
LT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQor
ICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxs
Q2hlY2tpbmcoKTsKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjpo
YXNTcGVsbGluZ01hcmtlcihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3Ro
LCBFeGNlCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBs
ZW5ndGgpOworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgp
OwogfQogICAgIAogYm9vbCBJbnRlcm5hbHM6Omhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihE
b2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLAogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvcihEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCiB2
b2lkIEludGVybmFsczo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lkIEludGVybmFs
czo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpCiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50
KCktPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkICE9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgIGlmIChlbmFibGVkICE9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmKQpAQCAtMTQ1Miw4ICsxNDUyLDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlm
CkBAIC0xNDY1LDggKzE0NjUsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFi
bGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0NzgsOCArMTQ3OCw4IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC0xNDkxLDggKzE0OTEsOCBAQCB2b2lkIEludGVybmFsczo6c2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4
dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBA
IC0xNTA0LDggKzE1MDQsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZAogICAgICAgICByZXR1
cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVuYWJs
ZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAg
ICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0xNTE2
LDcgKzE1MTYsNyBAQCBib29sIEludGVybmFsczo6aXNPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVu
dC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsK
IH0KIAogdm9pZCBJbnRlcm5hbHM6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNTI0LDcgKzE1MjQsNyBAQCB2b2lkIElu
dGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJikKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT50b2dn
bGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKQEAgLTE2MTksNyArMTYxOSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNHcmFtbWFyTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGZyb20sIGxlbmd0aCk7CisgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
SW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGJl
ZWQyMDdiZTY0N2RiOGZmZGUyODMzNmJkYjMwNTIxMjU5ZmNlYzIuLmQ1MTUyZTAxMDI5MjVhNGMx
M2UwYzUyMTdkODIzNzI4ZTE4ZjE2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNo
b3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQoKQogICAgIH0KIAogICAgIC8vIENoZWNrIGlmIHRo
ZSBub2RlIGRpc2FibGVzIHNwZWxsIGNoZWNraW5nIGRpcmVjdGx5LgotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9k
ZSgpOwogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgd2UgYXJlIG5vdCB0cnlpbmcgdG8gaW5zZXJ0IHRleHQgb24ga2V5IGRv
d24uCi0gICAgQVNTRVJUKCEoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50ICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0SW5zZXJ0
aW9uKCkpKTsKKyAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmlzVGV4dElu
c2VydGlvbigpKSk7CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBIb3Qga2V5IGhhbmRsaW5nLiBDYW5jZWwgcHJvY2Vzc2luZyBtb2RlLgogICAgICAgICBp
ZiAoY29tbWFuZE5hbWUgIT0gIkRlbGV0ZUJhY2t3YXJkIikKICAgICAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5zZXRQcm9jZXNzaW5nQ2hhbmdlKGZhbHNlKTsKIAot
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhl
Y3V0ZSgpKQogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGV4dCBpbnNlcnRpb24gY29tbWFuZHMgc2hvdWxkIG9ubHkgYmUgdHJpZ2dlcmVkIGZy
b20ga2V5cHJlc3NFdmVudC4KQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGxhdGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQt
PnRleHQoKSwgZXZlbnQpKQorICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
cGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IGJlOTY0ODE5MDM5NGFlMTVm
NGFjNjE2OTI0NGViYjU3OTU3NTY2OTAuLjQwNDIxYzMyOWZhZDQ4YTBjNjkwOGZiYmYyZWY1OWU2
MTcwZjBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0RPTVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0RPTVN1cHBvcnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgQXR0cmlidXRlU3RhdGUg
ZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUKIAogYm9vbCBlbGVtZW50SGFzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudCkKIHsKLSAgICByZXR1
cm4gZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAogLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBpbnB1
dCBmaWVsZCB0aGF0IHdpbGwgYmUgZm9jdXNlZCAmIHJlcXVpcmUgaW5wdXQgc3VwcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUGFnZVNl
YXJjaE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKaW5kZXggYTMzODBiM2UzM2M4MGQ3NjZiMjE5NGM3NjMw
MWJhYzc5NjdmYjRlNy4uNDA5MWRhZTZmYzY5MmFkMDAzNDM0YjMwMjNjNTA3ZDA1NzEzM2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIElu
UGFnZVNlYXJjaE1hbmFnZXI6OnNob3VsZFNlYXJjaEZvclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogCiBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBGaW5kT3B0aW9ucyYg
b3B0aW9ucywgYm9vbCBpc05ld1NlYXJjaCwgYm9vbCBzdGFydEZyb21TZWxlY3Rpb24pCiB7Ci0g
ICAgaWYgKFJlZlB0cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmdB
bmRTY3JvbGxUb1Zpc2libGUodGV4dCwgcmFuZ2UsIG9wdGlvbnMpKSB7CisgICAgaWYgKFJlZlB0
cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlz
aWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgaGlnaGxp
Z2h0IHRvIHRoZSBuZXcgbWF0Y2guCiAgICAgICAgIHNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKG1h
dGNoKTsKICAgICAgICAgaWYgKGlzTmV3U2VhcmNoKSB7CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9v
bCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHNjb3BlU3Ry
aW5nTWF0Y2hlcyBkb2VzIG5vdCBhZGQgYW55IG1hcmtlcnMsIGl0IG9ubHkgY291bnRzIHRoZSBu
dW1iZXIuCiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bm1hcmtBbGxUZXh0TWF0Y2hl
cywgaXQgaXMgYWxyZWFkeSBkb25lIGZyb20gdGhlIGNhbGxlciBiZWNhdXNlIG9mIG5ld1NlYXJj
aAogICAgICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1h
cmtUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtCiAgICAgICAgICAg
ICAvLyBhbGwgbWF0Y2hlcyBidXQgY291bnQgdGhlbS4KICAgICAgICAgICAgIG1fd2ViUGFnZS0+
bV9wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwogICAgICAgICAgICAgbV9hY3RpdmVNYXRj
aC0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2
ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgcmVzZXQsIGJvbwogICAgICAgICAg
ICAgbV9hY3RpdmVNYXRjaEluZGV4ICs9IG1hdGNoQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAobV9oaWdobGlnaHRBbGxNYXRjaGVzKQotICAgICAgICAgICAgICAgIHNj
b3BpbmdGcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
dHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIHNjb3BpbmdGcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoQ291bnQgKz0gbWF0Y2hDb3VudDsKICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnVwZGF0ZUZpbmRTdHJpbmdSZXN1bHQobV9h
Y3RpdmVNYXRjaENvdW50LCBtX2FjdGl2ZU1hdGNoSW5kZXgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCmluZGV4IDMzM2QxMjRhM2I1NWU0ZDM3YjBmMmQxZmVjMjYzMzg3YzZjMWYy
ZmEuLjcwNmYxMDllNzRlMjdmYjk5NWE3MjYzNThlOTU2NTZmMTA0YjY5MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpj
YW5jZWxTZWxlY3Rpb24oKQogCiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIFNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICByZXR1
cm4gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCk7CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcHBpbmdSZWN0
Rm9yVmlzaWJsZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXgg
ZDBjZTM4YTJmZmRhN2ZjNjMwYWM0NmNkY2YxNTVhOGQzMWEwYTMwYS4uMjI0YTRiNzBjN2EyZjc3
Mzc3MDBhMmMxZDc0ZTEzZTQwZjc4YWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrVmkKIHsKICAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFt
ZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQog
CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc0NvbW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zCiB7CiAg
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwog
Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFu
ZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmZvcmNlTGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU1MCwxNCArNTUwLDE0IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
IHx8ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVk
aXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkp
KQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0
KCkgJiYgIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHRleHQpOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAg
ICB1bmRlcmxpbmVzLmFwcGVuZChXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21w
b3NpdGlvblN0cmluZy5sZW5ndGgoKSwgV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
Ci0gICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5l
cywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKKyAgICBlZGl0b3Iuc2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIHN0YXJ0LCBzdGFydCArIGxlbmd0aCk7CiB9CiAK
IGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbihjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTU2NywxMSArNTY3LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkgfHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Y29uc3QgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpOwor
ICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0
LCBpbnQqIGxlbmd0aCkKQEAgLTU4MywxMiArNTc5LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0
YXJ0CiAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgKnN0YXJ0ID0gZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCk7Ci0gICAgKmxlbmd0aCA9IGVk
aXRvci0+Y29tcG9zaXRpb25FbmQoKSAtICpzdGFydDsKKyAgICAqc3RhcnQgPSBlZGl0b3IuY29t
cG9zaXRpb25TdGFydCgpOworICAgICpsZW5ndGggPSBlZGl0b3IuY29tcG9zaXRpb25FbmQoKSAt
ICpzdGFydDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTk5LDQwICs1OTUsMzcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2gKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8
ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRv
cikKLSAgICAgICAgcmV0dXJuOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAotICAg
IGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVkaXRvci0+aW5zZXJ0
VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21w
b3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgo
dGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRleHQpIHsKLSAg
ICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7
CisgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRp
b24oKTsKKyAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIFdlYkNvcmU6Oklu
dFJlY3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIFdlYkNvcmU6Oklu
dFJlY3QoKSk7CiAKLSAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8ICFwYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgfHwgIXBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOwogCiAgICAg
aWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgp
KQogICAgICAgICBsZW5ndGggPSAwOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsKIAotICAgIHJldHVybiBlZGl0b3ItPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpcnN0
UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGlu
dCogbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAKaW5kZXggOTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQw
YmEyYjQ5Yy4uMjRkYTUxZGQ2YzEzNDc2ZTdkNzNmYzZjZDhkNWQ0MWU2YjQzMzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihGcmFtZSogY29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlm
IChjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSA9IEVXS1ByaXZh
dGU6OmtpdEZyYW1lKGNvcmVGcmFtZSk7CiAgICAgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQod2ViRnJhbWUpOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Y2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOworICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudEVmbDo6ZGlkRW5kRWRpdGluZygpCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsK
KyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0
aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJl
YXRlZCwKQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQg
Y2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNh
biByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKQEAgLTM0OCw3ICszNDgsNyBAQCBib29s
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtl
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwg
ZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXgg
ZjRkM2MwZTRmMTNlZjc4YjlmYjExMWZjY2RjYzY5MDY3NjVmNzkwZC4uY2NmN2U1MDJmN2JjNTU5
ZWVhMGZlODY3Zjk2NWU4NGZlMmI3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgc21hcnREYXRhLT5lZGl0YWJsZSA9IGVkaXRhYmxlOwogICAgIGlmIChlZGl0
YWJsZSkKLSAgICAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDg4LDcgKzQ4OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVk
VGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2Vs
ZWN0ZWRUZXh0LmRhdGEoKSk7CkBAIC01MDAsNyArNTAwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRl
eHQsIEUKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxz
ZSk7CiAKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmco
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFw
LCB0cnVlKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmlu
ZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdy
YXAsIHRydWUpOwogfQogCiB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJr
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZVNlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQpAQCAt
NTA5LDggKzUwOSw4IEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmso
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDApOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsK
LSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0
LCB0cnVlLCAwKTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJh
bWUpCkBAIC01MjYsNyArNTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbAogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCku
c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC01MzQsNyArNTM0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBmM2ZhOGUxYTIyMjNiNGM5MWE3NTA0MDY3YzZm
ZWEzNWE3YmRhOGRiLi44NmM4NjA3ZmQxYjI4Y2M4ZDVlYWUxMGZkNmUyMzE3YTM4OGY4YjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTE2NjgsNyArMTY2OCw3IEBAIGNvbnN0
IGNoYXIqIGV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwot
ICAgIENTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgQ1N0cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgp
OwogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfZXhl
Y3V0ZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrXwogICAgIGlmICghY29t
bWFuZFN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
KTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0
X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA5YTUyZTdmNTE2ZGM4MjZkNjBl
ZWEzMjM0NjI0NGY1YzFkYjM3MWY0Li45YjUzOGM0MmM2NTM2ZGQxODM5NWZjM2VmYzMwNzczMTg5
ODlkOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6
cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgLy8gc3luY2VkIHdpdGgg
Y3Vyc29yIG1vdmVtZW50LiBGb3IgaW5zdGFuY2UsIGEgdGV4dCBmaWVsZCBjYW4gbW92ZSB3aXRo
b3V0CiAgICAgLy8gdGhlIHNlbGVjdGlvbiBjaGFuZ2luZy4KICAgICBGcmFtZSogZm9jdXNlZEZy
YW1lID0gY29yZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5zZXRDdXJzb3JS
ZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMmEzZDRjZTc3ZjlhOGI3M2U2M2YxZGZkMjQ0M2Mz
NTY1MmJjMjUzNS4uMzIzZjJlNWYwOTEzZDgyODVjMGVmMWM3MzljNGUyNmMwNDA5NzQxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OworICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUpCkBAIC0yODQsNyArMjg0LDcgQEAgYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldyksIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAg
ICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgY2hhciogdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5k
ZXggNTdmYWNhZjMxMTAzOTlhNWFjYjA2NDVlNzBkYzkyOTI0NWU3YWE0Ni4uNTA5MDkwNDczMWM0
OTczMGY3YzZlOWViMTA1ZWNhODY1MjFkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNTUsNyArMjU1LDcg
QEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lKQogICAgIHNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChtX3dlYlZpZXcp
OwogI2VuZGlmCiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbklm
U2VsZWN0aW9uSXNJbnZhbGlkKCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21w
b3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCiAgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+
aW1GaWx0ZXIucmVzZXRDb250ZXh0KCk7CiB9CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIEVk
aXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJv
b2wgYWxsb3dUZXh0SW5zZQogewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRz
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMg
aWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgewor
ICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAg
dm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVz
IHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkK
KyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFRoaXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBl
eGVjdXRlIHRoZSBpbnNlcnRpb24KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxh
dGZvcm1FdmVudC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3Jt
RXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4
dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDMzOTg5MTFl
ZGQ5MGQ5OTFiOWZhMmYyMDg2NGZiNmQzMzliMTY0NWEuLjk4NzdmY2ExOTZmNjljNDU4ZWEyMTVj
ZDk2OTM0ZDUyZWFmOTI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0V2ViVmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbkVkaXQo
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVy
biBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gZnJhbWUg
JiYgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogYm9vbCBXZWJWaWV3SW5wdXRNZXRo
b2RGaWx0ZXI6OnNlbmRTaW1wbGVLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQsIFdURjo6U3Ry
aW5nIHNpbXBsZVN0cmluZywgRXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uKQpAQCAtNzYsNDIgKzc2
LDQyIEBAIGJvb2wgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZW5kS2V5RXZlbnRXaXRoQ29t
cG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBlCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4dChTdHJpbmcgdGV4dCkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCku
Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGV4dC5pc051bGwoKSkgewog
ICAgICAgICBjb25maXJtQ3VycmVudENvbXBvc2l0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRD
b21wb3NpdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihtX2Nv
bmZpcm1lZENvbXBvc2l0aW9uKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6
OmNvbmZpcm1DdXJyZW50Q29tcG9zaXRpb24oKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2Fu
RWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbmNlbEN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9z
aXRpb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNldFByZWVkaXQo
U3RyaW5nIG5ld1ByZWVkaXQsIGludCBjdXJzb3JPZmZzZXQpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRv
cigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVk
aXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHBhcnNlIHRo
ZSBQYW5nb0F0dHJMaXN0IHRoYXQgd2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQgaGVyZS4KICAg
ICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5l
cy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgbmV3UHJlZWRpdC5sZW5ndGgoKSwgQ29s
b3IoMSwgMSwgMSksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlv
bihuZXdQcmVlZGl0LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxp
bmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmlu
ZGV4IDMzNDYxNjRkOGM2NTU5Y2I4YzkxMDJkMmFiZmFhMDk1NGI1Yzg0ODkuLjE2M2Y2ZjBiYzU1
NjUzNjM4NmEyYjlhNDQ1N2M3Yjg5OGMzNWYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmNwcApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX3JlcGxhY2Vfc2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Y2hhciogdGV4dCkKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CiAgICAgYm9v
bCBzZWxlY3RSZXBsYWNlbWVudCA9IGZhbHNlOwogICAgIGJvb2wgc21hcnRSZXBsYWNlID0gdHJ1
ZTsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4
dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNt
YXJ0UmVwbGFjZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCmluZGV4IDA3NjY2YmU2YWRhMDIyOTUyZTRmNjhmZTM1ZWFmZTQ4MDg1NjY4OGQu
LmM1ODJiNjY5NmNkYWMwZjIwYWY3YjI5YWE4NjQ3OTljNTEwYzU4ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0
aWMgSW50UG9pbnQgZ2V0TG9jYXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KEZy
YW1lKiBmcmFtZSkKICAgICAvLyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UgY2Fu
IHJldHVybiAwIGhlcmUsIGJ1dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQogICAgIC8vIHNlbGVjdGlv
bi0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxkIGhhdmUgcmV0
dXJuZWQgZmFsc2UKICAgICAvLyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaXQu
Ci0gICAgSW50UmVjdCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKKyAgICBJbnRS
ZWN0IGZpcnN0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rp
b24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIEludFBvaW50
KGZpcnN0UmVjdC54KCksIGZpcnN0UmVjdC5tYXhZKCkpOwogfQogCkBAIC05MzgsNyArOTM4LDcg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyoKICAgICBlbHNlCiAgICAgICAgIGZvY3VzQ29udHJv
bGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKIAotICAg
IGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgp
KQorICAgIGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmltRmlsdGVyLm5vdGlmeUZvY3VzZWRJbigp
OwogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTExODEsMzEgKzExODEs
MzEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2Fn
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19yZWFsX3NlbGVjdF9hbGwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRl
KCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldykt
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiB9CiAKIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3VuZG8oV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJV
bmRvIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhl
Y3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19yZWFsX21vdmVfY3Vyc29yIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtNb3ZlbWVu
dFN0ZXAgc3RlcCwgZ2ludCBjb3VudCkKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR3RrTW92CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlw
Ym9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24oV2ViS2l0
V2ViVmlldyopCkBAIC00Mzg5LDcgKzQzODksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRf
aGlnaGxpZ2h0X3RleHRfbWF0Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbgog
CiAgICAgRnJhbWUgKmZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZG8g
ewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKICAgICAgICAgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7CiAgICAgfSB3
aGlsZSAoZnJhbWUpOwogfQpAQCAtNDQ1OSw3ICs0NDU5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCkg
fHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuY2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCk7CiB9CiAKIC8q
KgpAQCAtNDQ3NSw3ICs0NDc1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jb3B5
X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkNvcHkoKSB8fCBmcmFtZS0+ZWRp
dG9yKCktPmNhbkRIVE1MQ29weSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ29w
eSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKTsKIH0KIAogLyoqCkBAIC00NDkx
LDcgKzQ0OTEsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Bhc3RlX2NsaXBib2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5ESFRNTFBhc3RlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpIHx8
IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTFBhc3RlKCk7CiB9CiAKIC8qKgpAQCAtNDU0Nyw3ICs0
NTQ3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGVsZXRlX3NlbGVjdGlvbihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZv
cm1EZWxldGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwogfQogCiAv
KioKQEAgLTQ2MjksNyArNDYyOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJs
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoZnJhbWUpOwogCiAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRv
cigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAvLyBUT0RPOiBJ
ZiB0aGUgV2ViS2l0V2ViVmlldyBpcyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2VsZWN0aW9uIGlz
IGVtcHR5LCBzZXQgaXQgdG8gc29tZXRoaW5nLgogICAgICAgICAvL2lmICghd2Via2l0X3dlYl92
aWV3X2dldF9zZWxlY3RlZF9kb21fcmFuZ2Uod2ViVmlldykpCiAgICAgICAgIC8vICAgIG1haW5G
cmFtZS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTUwOTAsNyArNTA5MCw3IEBAIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0Up
OwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLyoqCkBA
IC01MTI1LDcgKzUxMjUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3JlZG8oV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS5jYW5SZWRvKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggNmQzYzZiMGZhNWQ2MjFjMjgzNmNjMGM2NGY4ZjYxYTNiMjk3ZmU2MC4uYTAzNTRiNDI1
MGYzM2U5Njg4MDRkYTJhYzExMTA2YjQ5ZTcxMDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC00OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TU3RyaW5nICop
X3NlbGVjdGVkU3RyaW5nCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFRleHQoKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJhbmdlOihET01S
YW5nZSAqKXJhbmdlCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TUmVjdClfZmly
c3RSZWN0Rm9yRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsKLSAgIHJldHVybiBfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShyYW5nZSkpOwor
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdl
KGNvcmUocmFuZ2UpKTsKIH0KIAogLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERP
TVJhbmdlICopcmFuZ2UKQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFT
b3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoRE9NUmFuZ2Ug
KilfbWFya0RPTVJhbmdlCiB7Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
ZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIHJldHVybiBr
aXQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOwogfQogCiAvLyBHaXZlbiBwcm9wb3NlZFJhbmdlLCByZXR1cm5zIGFuIGV4dGVu
ZGVkIHJhbmdlIHRoYXQgaW5jbHVkZXMgYWRqYWNlbnQgd2hpdGVzcGFjZSB0aGF0IHNob3VsZApA
QCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJj
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRl
bnQoKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKIH0KIAogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNp
YmxlUG9zaXRpb25Gb3JQb2ludDooTlNQb2ludClwb2ludApAQCAtNzc1LDcgKzc3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSB8fCAhc3R5bGUpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRlIGEgY29weSBo
ZXJlLgotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wdXRlQW5kU2V0VHlw
aW5nU3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24p
OworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRTZXRUeXBpbmdT
dHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtOTI4LDcgKzkyOCw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwg
IWZyYWdtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRp
dG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVj
dFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOworICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFn
bWVudCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOwogfQog
CiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxl
Y3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wp
c21hcnRSZXBsYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDM3NmRmOWI4NDg0MGJmMjg3Y2M5YzE1OWM2ZDBkNDBlM2Fh
ZTlkMWMuLmQ2MTIwYWU5MWQ3ZTYwNjc2OGE1N2E5OTY2NDJmNGE3NGMwOTEyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBA
IC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJheUJ5Q29uY2F0
ZW5hdGluZ0FycmF5cyhOU0FycmF5ICpmaXJzdCwgTlNBcnJheSAqc2UKICAgICAgICAgcmV0dXJu
OwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CiAgICAgaWYgKFt3
ZWJWaWV3IG1haW5GcmFtZV0gPT0gd2ViRnJhbWUgJiYgW3dlYlZpZXcgaXNFZGl0YWJsZV0pCi0g
ICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCk7CisgICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdT
dHlsZVRvQm9keUVsZW1lbnQoKTsKIH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDhmZjY1YWIw
MDNlNzUzNDFhMjcwNWI5ZTgxMTlkMzRiMjc1NGNmOWUuLmUxNjY5ZDdhODkyNDZhNTlhNjdlMGJj
M2IyNWFkOGI0YWNjOWQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtODY0LDcgKzg2NCw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0
aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0g
W3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4
dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgaWYgKGZyYWdtZW50
ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5n
ZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkKLSAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2Vs
ZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCks
IFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2Up
OwogI2Vsc2UKICAgICAvLyBNYWlsIGlzIGlnbm9yaW5nIHRoZSBmcmFtZW50IHBhc3NlZCB0byB0
aGUgZGVsZWdhdGUgYW5kIGNyZWF0ZXMgYSBuZXcgb25lLgogICAgIC8vIFdlIHdhbnQgdG8gYXZv
aWQgY3JlYXRpbmcgdGhlIGZyYWdtZW50IHR3aWNlLgpAQCAtODcyLDEyICs4NzIsMTIgQEAgc3Rh
dGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBh
cnQpCiAgICAgICAgIGlmIChbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6bmlsIHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKSB7
CiAgICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1
bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxs
b3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICAgICAgaWYgKGZyYWdtZW50KQot
ICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3Jl
KGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9h
cmRdLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFz
RnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVi
b2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogICAgICAgICB9ICAgICAgICAKICAgICB9IGVsc2Ug
ewogICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVu
dEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQ
bGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYg
X3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdp
dmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2Fu
U21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBb
c2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICAgICBbd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxd
OwpAQCAtOTgzLDcgKzk4Myw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZl
UGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogLSAoQk9PTClfc2hvdWxkRGVsZXRlUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2UKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZERlbGV0ZVJhbmdlKGNvcmUocmFuZ2UpKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkpOwogfQogCiAt
IChOU1ZpZXcgKilfaGl0Vmlld0ZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTE3NTgsMTMg
KzE3NTgsMTMgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNF
dmVudCAqZXZlbnQpCiAtIChCT09MKV9jYW5FZGl0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogLSAoQk9PTClfY2FuRWRpdFJpY2hseQogewogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3Jl
RnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgIHJldHVy
biBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiB9CiAK
IC0gKEJPT0wpX2NhbkFsdGVyQ3VycmVudFNlbGVjdGlvbgpAQCAtMTgyNCw1MCArMTgyNCw1MCBA
QCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVu
dCkKIC0gKERPTU5vZGUgKilfaW5zZXJ0T3JkZXJlZExpc3QKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydE9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRPcmRlcmVk
TGlzdCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbnNlcnRVbm9yZGVyZWRM
aXN0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAg
cmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRVbm9yZGVy
ZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZy
YW1lLT5lZGl0b3IoKS5pbnNlcnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOwogfQogCiAt
IChCT09MKV9jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKIH0KIAogLSAoQk9PTClfY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkRlY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CiB9CiAKIC0gKERPTU5vZGUgKilf
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCkuZ2V0KCkpIDogbmlsOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdldCgpKSA6IG5p
bDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01O
b2RlICopX2luY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkCiB7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/
IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3Jk
ZXJlZCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKS5nZXQoKSkg
OiBuaWw7CiB9CiAKIC0gKHZvaWQpX2RlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKGNvcmVGcmFt
ZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5kZWNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbCgpOwogfQogCiAtICh2b2lkKV9zZXRIaWdobGlnaHRlcjooaWQ8V2ViSFRNTEhpZ2hsaWdo
dGVyPiloaWdobGlnaHRlciBvZlR5cGU6KE5TU3RyaW5nKil0eXBlCkBAIC0yMzU5LDcgKzIzNTks
NyBAQCBzdGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNlbGVjdG9yKQog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3Rv
cikpOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVG
b3JTZWxlY3RvcihzZWxlY3RvcikpOwogfQogCiAtIChFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1h
bmRCeU5hbWU6KGNvbnN0IGNoYXIqKW5hbWUKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHN0YXRpYyBT
dHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChuYW1lKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKG5hbWUpOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNF
TClzZWxlY3RvcgpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRT
ZWxlY3QpCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVt
OwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3Nd
XSkgewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAg
ICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAgICAgICAgW21lbnVJdGVt
IHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURp
cmVjdGlvbiwgZGlyZWN0aW9uKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9j
YW5FZGl0XTsKICAgICB9CkBAIC0yNjEwLDcgKzI2MTAsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFu
a0FuZFNlbGVjdCkKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJ
dGVtIGNsYXNzXV0pIHsKICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUg
b2YgdGhlIG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBi
ZWNhdXNlCiAgICAgICAgICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAg
ICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIikKKyAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sICJydGwiKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0
IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAg
ICAgICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExl
ZnQgY29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0KQEAgLTI2NDEsMTEgKzI2NDEsMTEg
QEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBbc2VsZiBf
aGFzU2VsZWN0aW9uXTsKICAgICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZTop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1BsYWluVGV4dDopKQotICAgICAgICByZXR1
cm4gZnJhbWUgJiYgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuUGFzdGUoKSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVk
aXRvcigpLmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSk7CiAg
ICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1JpY2hUZXh0OikpCi0gICAg
ICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkKLSAg
ICAgICAgICAgIHx8IChmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVj
dGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSk7CisgICAgICAgIHJldHVybiBmcmFt
ZSAmJiAoZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKQorICAgICAgICAgICAgfHwgKGZy
YW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50
UmljaGx5RWRpdGFibGUoKSkpOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBl
cmZvcm1GaW5kUGFuZWxBY3Rpb246KSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtMzgwMyw3ICsz
ODAzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJk
RXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBfcHJpdmF0ZS0+X2ZvcmNlVXBkYXRlU2VjdXJl
SW5wdXRTdGF0ZSA9IE5POwogCiAgICAgLy8gRklYTUU6IEtpbGwgcmluZyBoYW5kbGluZyBpcyBt
b3N0bHkgaW4gV2ViQ29yZSwgc28gdGhpcyBjYWxsIHNob3VsZCBhbHNvIGJlIG1vdmVkIHRoZXJl
LgotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7
CiAKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC00
MjMxLDcgKzQyMzEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50
S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0g
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIKLSAgICAgICAg
YXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250QXR0cmlidXRl
c0ZvclNlbGVjdGlvblN0YXJ0KCkgOiBuaWxdOworICAgICAgICBhdHRyaWJ1dGVzOmNvcmVGcmFt
ZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgp
IDogbmlsXTsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIFtz
dHJpbmcgcmVsZWFzZV07CiAgICAgcmV0dXJuIGRhdGE7CkBAIC00MzU5LDcgKzQzNTksNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFt
ZSogY29yZUZyYW1lKQogewogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBh
IGNvcHkgaGVyZS4gV2Ugd2FudCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gd29yayBkaXJl
Y3RseSB3aXRoIFN0eWxlUHJvcGVydHlTZXQgZXZlbnR1YWxseS4KLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVy
dGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5h
cHBseVN0eWxlVG9TZWxlY3Rpb24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCks
IHVuZG9BY3Rpb24pOwogICAgIH0KIH0KIApAQCAtNDY2MSw3ICs0NjYxLDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKICAgICBpZiAoW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZp
ZXc6d2ViVmlldyBzaG91bGRBcHBseVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOnJh
bmdlXSkgewogICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEg
Y29weSBoZXJlLgotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShj
b3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgW3NlbGYgX3VuZG9BY3Rpb25Gcm9t
Q29sb3JQYW5lbFdpdGhTZWxlY3RvcjpzZWxlY3Rvcl0pOworICAgICAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5hcHBseVN0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgp
LCBbc2VsZiBfdW5kb0FjdGlvbkZyb21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3NDgsNyArNDc0OCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUp
CiAgICAgQ09NTUFORF9QUk9MT0dVRQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoKTsKIH0KIAogLSAodm9pZClzaG93R3Vlc3NQYW5lbDooaWQpc2VuZGVy
CkBAIC00NzY4LDcgKzQ3NjgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBj
dXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KICAgICAKICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAg
W3NwZWxsaW5nUGFuZWwgb3JkZXJGcm9udDpzZW5kZXJdOwogfQogCkBAIC00ODM2LDcgKzQ4MzYs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVu
dChGcmFtZSogY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBXcml0aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICBzd2l0Y2gg
KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3Rh
cnQoKSkgeworICAgIHN3aXRjaCAoY29yZUZyYW1lLT5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkpIHsKICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb246CkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQog
ICAgIH0KIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkK
LSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGly
ZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbihkaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9u
OihpZClzZW5kZXIKQEAgLTQ4NjcsNyArNDg2Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJv
YXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQVNT
RVJUKHdyaXRpbmdEaXJlY3Rpb24gIT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk7CiAKICAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rp
b24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdE
aXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBzdGF0aWMgQk9PTCB3cml0
aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKQEAgLTQ4ODgsNyArNDg4OCw3IEBAIHN0
YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIH0KIAog
ICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uID09
IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0
aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRv
TGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKW1ha2VCYXNlV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0OihpZClzZW5kZXIKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHN0YXRpYyBC
T09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGJvb2wgbXVsdGlw
bGVGb250cyA9IGZhbHNlOwogICAgIE5TRm9udCAqZm9udCA9IG5pbDsKICAgICBpZiAoRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRGb3JTZWxlY3Rpb24o
bXVsdGlwbGVGb250cykpCisgICAgICAgIGlmIChjb25zdCBTaW1wbGVGb250RGF0YSogZmQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCiAgICAg
ICAgICAgICBmb250ID0gZmQtPmdldE5TRm9udCgpOwogICAgIH0KIApAQCAtNTU2Myw3ICs1NTYz
LDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoMCwgMCk7Ci0gICAgTlNSYW5nZSByZXN1bHQg
PSBbd2ViRnJhbWUgX2NvbnZlcnRUb05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tcG9z
aXRpb25SYW5nZSgpLmdldCgpXTsKKyAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJGcmFtZSBfY29u
dmVydFRvTlNSYW5nZTpjb3JlRnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQo
KV07CiAKICAgICBMT0coVGV4dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1
bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjA3
LDEyICs1NjA3LDEyIEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0Vu
YWJsZWQoKQogLSAoQk9PTCloYXNNYXJrZWRUZXh0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgQk9PTCByZXN1bHQgPSBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBCT09MIHJlc3VsdCA9IGNv
cmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBp
ZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIEEgc2F2ZWQgY29tbWFuZCBjYW4gY29uZmlybSBhIGNv
bXBvc2l0aW9uLCBidXQgaXQgY2Fubm90IHN0YXJ0IGEgbmV3IG9uZS4KICAgICAgICAgW3NlbGYg
X2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwotICAgICAgICByZXN1bHQgPSBjb3JlRnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgICAgICByZXN1bHQgPSBjb3JlRnJh
bWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgTE9HKFRleHRJbnB1
dCwgImhhc01hcmtlZFRleHQgLT4gJXUiLCByZXN1bHQpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAg
c3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQog
ICAgIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2
b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbmU+JiByZXN1bHQpCkBAIC01NzAyLDcgKzU3MDIsNyBAQCBzdGF0
aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQpCiAgICAgICAgIFtbc2VsZiBfZnJhbWVdIF9zZWxlY3ROU1JhbmdlOnJlcGxh
Y2VtZW50UmFuZ2VdOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
dGV4dCwgdW5kZXJsaW5lcywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2Vs
UmFuZ2UpKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVu
ZGVybGluZXMsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7
CiB9CiAKIC0gKHZvaWQpZG9Db21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCkBAIC01NzIw
LDcgKzU3MjAsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogCiAgICAgLy8gQXMgaW4gaW5z
ZXJ0VGV4dDosIHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsIGNvbWVzIGZyb20gYW4gaW5wdXQgbWV0
aG9kIGlmIHRoZXJlIGlzIG1hcmtlZCB0ZXh0LgogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1l
ID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29y
ZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9v
bCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhh
c0NvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1hbmQgJiYg
IWlzRnJvbUlucHV0TWV0aG9kKQogICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFw
cGVuZChLZXlwcmVzc0NvbW1hbmQoTlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CkBA
IC01Nzc0LDcgKzU3NzQsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIFJlZlB0cjxG
cmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU1N0cmluZyAqdGV4
dDsKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsKLSAg
ICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVG
cmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwog
ICAgIGlmIChpc0F0dHJpYnV0ZWRTdHJpbmcpIHsKQEAgLTU4MTAsNyArNTgxMCw3IEBAIHN0YXRp
YyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNv
cmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghY29y
ZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKQEAg
LTU4MTksMTcgKzU4MTksMTcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBib29sIGV2
ZW50SGFuZGxlZCA9IGZhbHNlOwogICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2
ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBz
YW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGlmICgh
Y29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmICghY29yZUZy
YW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRl
eHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYg
d2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIg
dGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgogCiAgICAgICAgIGlmICgh
ZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZl
bnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50
VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAgICAgICAg
IGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KGV2
ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5z
ZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVs
c2UgewogICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwotICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKHBhcmFtZXRlcnMpCkBAIC01ODg0LDE1ICs1ODg0LDE1IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAKICAgICBbc2VsZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAKLSAgICBp
ZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkgfHwgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAgICBpZiAoIWNv
cmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVkaXRvcigp
Lmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHVuc2lnbmVkIHN0YXJ0OwogICAgIHVuc2lnbmVkIGVuZDsKLSAgICBpZiAoY29yZUZyYW1l
LT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCisgICAgaWYg
KGNvcmVGcmFtZS0+ZWRpdG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkp
CiAgICAgICAgIFtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4
dFNlbGVjdGlvbkNoYW5nZWQ6TlNNYWtlUmFuZ2Uoc3RhcnQsIGVuZCAtIHN0YXJ0KSBjbGllbnQ6
c2VsZl07CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENv
bXBvc2l0aW9uKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRp
b24oKTsKICAgICAgICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJr
ZWRUZXh0QWJhbmRvbmVkOnNlbGZdOwogICAgIH0KIH0KQEAgLTYwNjAsNyArNjA2MCw3IEBAIHN0
YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoc3RyaW5nLCBjb3JlKHJhbmdlKSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxpbWl0LCBtYXJr
TWF0Y2hlcywgMCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVz
Rm9yVGV4dChzdHJpbmcsIGNvcmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQs
IG1hcmtNYXRjaGVzLCAwKTsKIH0KIAogLSAodm9pZClzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhp
Z2hsaWdodGVkOihCT09MKW5ld1ZhbHVlCkBAIC02MDY4LDEzICs2MDY4LDEzIEBAIHN0YXRpYyB2
b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKG5ld1ZhbHVlKTsK
KyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQobmV3VmFsdWUpOwogfQogCiAtIChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRp
dG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAtICh2b2lkKXVu
bWFya0FsbFRleHRNYXRjaGVzCkBAIC02MTEwLDcgKzYxMTAsNyBAQCBzdGF0aWMgdm9pZCBleHRy
YWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZQogICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQogICAgICAgICByZXR1cm4gTk87CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9w
dGlvbnMob3B0aW9ucykpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0
b3IoKS5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWY4MWUzYjdhYjU4MTEyMTcw
NjhjMzhhOGNlMTlhZTQ1NjA0YjU3MS4uODA1Y2RiOTAwZTFmY2M5OTY4ZjQ5MzE4ODI0NGUyODcx
NmQ4NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQyNyw3ICsy
NDI3LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKG5h
bWUpLmV4ZWN1dGUodmFsdWUpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChuYW1l
KS5leGVjdXRlKHZhbHVlKTsKIH0KIAogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheTooZG91YmxlKXRpbWVEZWxheQpAQCAtNTM4Miw3ICs1MzgyLDcgQEAgc3RhdGljIE5T
QXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGoKICAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUo
KS0+ZWRpdG9yKCktPnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBv
aW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOworICAgIHJldHVybiBraXQocGFnZS0+bWFpbkZyYW1l
KCktPmVkaXRvcigpLnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBv
aW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOwogfQogCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5n
ZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9u
QWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZwpAQCAtNTQ0Myw3ICs1NDQzLDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxm
IF9tYWluQ29yZUZyYW1lXTsKICAgICAgICAgaWYgKG1haW5GcmFtZSkgewogICAgICAgICAgICAg
aWYgKGZsYWcpIHsKLSAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5hcHBseUVk
aXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVk
aXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBXZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMg
ZW1wdHksIHNldCBpdCB0byBzb21ldGhpbmcuCiAgICAgICAgICAgICAgICAgaWYgKCFbc2VsZiBz
ZWxlY3RlZERPTVJhbmdlXSkKICAgICAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTU3MzAsNyArNTczMCw3IEBAIHN0YXRp
YyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVj
dGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsK
ICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVT
ZWxlY3Rpb25XaXRoU21hcnREZWxldGUoWyhXZWJIVE1MVmlldyAqKVtbd2ViRnJhbWUgZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddIF9jYW5TbWFydENvcHlPckRlbGV0ZV0pOworICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxW
aWV3ICopW1t3ZWJGcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9y
RGVsZXRlXSk7CiB9CiAgICAgCiAtICh2b2lkKWFwcGx5U3R5bGU6KERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilzdHlsZQpAQCAtNTc0MSw3ICs1NzQxLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERl
c2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGoKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgaWYgKGNvcmVGcmFt
ZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+
Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBw
bHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CiB9CiAKIEBlbmQK
QEAgLTU3ODgsNyArNTc4OCw3IEBAIEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJE
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZy
YW1lXSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgcmV0dXJu
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOwog
ICAgIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC01ODMyLDcgKzU4MzIsNyBAQCBGT1JfRUFDSF9S
RVNQT05ERVJfU0VMRUNUT1IoRk9SV0FSRCkKICAgICBOb2RlKiBjb3JlU3RhcnROb2RlPSBjb3Jl
KHN0YXJ0Tm9kZSk7CiAgICAgaWYgKGNvcmVTdGFydE5vZGUtPmRvY3VtZW50KCkgIT0gY29yZUZy
YW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNpbXBsaWZ5TWFya3VwKGNvcmVTdGFydE5vZGUsIGNvcmUoZW5kTm9kZSkpOyAg
ICAKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5zaW1wbGlmeU1hcmt1cChjb3JlU3Rh
cnROb2RlLCBjb3JlKGVuZE5vZGUpKTsgICAgCiB9CiAKIEBlbmQKQEAgLTY1NjcsNyArNjU2Nyw3
IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3Nl
bGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdl
YkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGMzODUyNGY5YzE1NGFiZTIwYzJkZWFmYTdi
NzFiYmIyYjdjZDNmNGQuLjg4ODRlNDk1Mzk0ODA0OThjMjFiODdmMTM1N2RjZTNhMzA2NzY0NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChRV2ViUGFn
ZUFkYXB0ZXIqIGFkYQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29y
ZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBu
YW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhZGFwdGVyLT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUp
LmV4ZWN1dGUodmFsdWUpOworICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVl
KTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChR
V2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0
dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIGFkYXB0
ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCkuY29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogUVZhcmlhbnRMaXN0IER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikK
QEAgLTM3NCw3ICszNzQsNyBAQCBRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFFXZWJQYWdlQWRhcHRlcgogICAgIGlmICghcmFu
Z2UpCiAgICAgICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKIAotICAgIFFSZWN0IHJlc3VsdFJl
Y3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAg
ICBRUmVjdCByZXN1bHRSZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJh
bmdlLmdldCgpKTsKICAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3QueSgp
IDw8IHJlc3VsdFJlY3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOwogICAgIHJldHVy
biByZWN0OwogfQpAQCAtNzUxLDE3ICs3NTEsMTcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Y29uZmlybUNvbXBvc2l0aW9uKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgY29uc3QK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9
IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+aGFzQ29tcG9z
aXRpb24oKSAmJiAhdGV4dCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7
CisgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiAhdGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChlZGl0
b3IuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICBpZiAodGV4dCkKLSAgICAgICAgICAgIGVk
aXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVURjgodGV4dCkpOworICAgICAg
ICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oKTsK
KyAgICAgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZWRpdG9yLT5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCksIDApOworICAg
ICAgICBlZGl0b3IuaW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKIH0KIAog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KFFXZWJG
cmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFmZjI5MjEzZjI3
ZDQwOGQ0ZmEyMDFhZDEuLjgyNWFjYTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0MmYxYjkwMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxT
ZWxlY3Rpb24oKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBi
b29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5p
c1NlbGVjdGlvbk1vZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBh
c3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCks
IGZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVT
ZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBm
cmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQ
YXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVj
dGlvbk1vZGUpOwogICAgIH0KIAogICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bigpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlv
bkNoYW5nZSgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgp
OwogfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJV
bmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CiAjaWZu
ZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChtX2luVW5kb1Jl
ZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhB
Q0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAo
ZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9u
J3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT5yZWdp
c3RlclVuZG9TdGVwKHN0ZXApOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpAQCAtNDU1LDcg
KzQ1NSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3Vn
aCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0
IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAg
ICAgICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRs
ZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBh
IGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRo
YXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgICAgIGlmIChm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQorICAgICAgICAg
ICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKICAg
ICAgICAgICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1h
bmRGb3JLZXlEb3duRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAg
ICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8v
IEV2ZW50IGhhbmRsZWQuCiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5NSw3
ICs0OTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxk
SW5zZXJ0VGV4dCkgewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVu
dChldmVudCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkp
OwotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1h
bmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4
IGZhNGU0YzBmM2VhN2FjZDc4Njc5YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjQ3NjBkN2YwOTQ0ZTI5
MDUzMmI4NDRjOWJhYmMzZjBjOWJjNDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBA
IFFTdHJpbmcgUVdlYlBhZ2VBZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIEZyYW1l
KiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkg
PT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBRU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmluZyBRV2ViUGFn
ZUFkYXB0ZXI6OnNlbGVjdGVkSHRtbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFu
Z2UoKS0+dG9IVE1MKCk7CisgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKIH0K
IAogYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKQEAgLTMy
OSw3ICszMjksNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJv
b2wgZWRpdGFibGUpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZy
YW1lOwogICAgIGlmIChlZGl0YWJsZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9y
dCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAgICAgICAgLy8g
ZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAgICAgfQpAQCAtNTY3LDkgKzU2Nyw5IEBA
IGJvb2wgUVdlYlBhZ2VBZGFwdGVyOjpwZXJmb3JtRHJhZyhjb25zdCBRTWltZURhdGEgKmRhdGEs
IGNvbnN0IFFQb2ludCAmcG9zLCBRdDo6CiB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRo
b2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZy
YW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IFdlYkNvcmU6OkVkaXRvciAqZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIFdlYkNvcmU6
OkVkaXRvciAmZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCi0gICAgaWYgKCFlZGl0b3ItPmNh
bkVkaXQoKSkgeworICAgIGlmICghZWRpdG9yLmNhbkVkaXQoKSkgewogICAgICAgICBldi0+aWdu
b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTAsMTIgKzYxMCwxMiBAQCB2b2lk
IFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYp
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJl
ZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5n
dGgpKSwgcU1heChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOworICAgICAgICAgICAg
ICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVz
LCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0YXJ0LCAoYS5z
dGFydCArIGEubGVuZ3RoKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb21wb3NpdGlvbiwgYW4gZW1wdHkgcHJl
LWVkaXQgc3RyaW5nIGFuZCBhIHNlbGVjdGlvbiBvZiB6ZXJvCiAgICAgICAgICAgICAgICAgLy8g
Y2FuY2VscyB0aGUgY3VycmVudCBjb21wb3NpdGlvbgotICAgICAgICAgICAgICAgIGlmIChlZGl0
b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgIShhLnN0YXJ0ICsgYS5sZW5ndGgpKQotICAgICAgICAg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywg
MCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpICYmICEo
YS5zdGFydCArIGEubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldENvbXBv
c2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywgMCwgMCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjMwLDE2ICs2MzAsMTYgQEAgdm9pZCBRV2Vi
UGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAg
ICAgICBpZiAoaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKSkKICAgICAgICAgICAg
IHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQobm9kZSktPnNldFNlbGVjdGlvblJhbmdlKHN0
YXJ0LCBzdGFydCArIGV2LT5yZXBsYWNlbWVudExlbmd0aCgpKTsKICAgICAgICAgLy8gQ29tbWl0
IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBjb21taXRTdHJpbmcgaXMgZW1wdHksIHRvIGdldCByaWQg
b2Ygc2VsZWN0aW9uLgotICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29t
bWl0U3RyaW5nKCkpOworICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKGV2LT5jb21t
aXRTdHJpbmcoKSk7CiAgICAgfSBlbHNlIGlmICghZXYtPmNvbW1pdFN0cmluZygpLmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICAgICAg
ZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1pdFN0cmluZygpKTsKKyAgICAgICAg
aWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1D
b21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBlZGl0b3ItPmluc2VydFRleHQoZXYtPmNvbW1pdFN0cmluZygpLCAwKTsKKyAgICAgICAgICAg
IGVkaXRvci5pbnNlcnRUZXh0KGV2LT5jb21taXRTdHJpbmcoKSwgMCk7CiAgICAgfSBlbHNlIGlm
ICghaGFzU2VsZWN0aW9uICYmICFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkKLSAgICAg
ICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVz
LCAwLCAwKTsKLSAgICBlbHNlIGlmIChldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSAmJiBl
ZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0
aW9uKFN0cmluZygpKTsKKyAgICAgICAgZWRpdG9yLnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0
U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOworICAgIGVsc2UgaWYgKGV2LT5wcmVlZGl0U3Ry
aW5nKCkuaXNFbXB0eSgpICYmIGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBlZGl0
b3IuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKIAogICAgIGV2LT5hY2NlcHQoKTsKIH0K
QEAgLTY1MCw3ICs2NTAsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9k
UXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAKLSAgICBXZWJDb3JlOjpFZGl0b3IqIGVk
aXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IGZy
YW1lLT5lZGl0b3IoKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAwOwogICAgIFJl
bmRlclRleHRDb250cm9sKiByZW5kZXJUZXh0Q29udHJvbCA9IDA7CkBAIC02NzgsMTQgKzY3OCwx
NCBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0
TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9u
dCgpKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJzb3JQb3NpdGlvbjogewotICAgICAgICBp
ZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBv
c2l0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigp
LT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIHJldHVybiBRVmFyaWFu
dChmcmFtZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsK
ICAgICB9CiAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKICAgICAgICAgaWYgKHJl
bmRlclRleHRDb250cm9sICYmIHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgIFFTdHJpbmcgdGV4dCA9IHJlbmRlclRleHRDb250cm9sLT50
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnZhbHVlKCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZWRpdG9yLT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAgICAgICAgICAg
IGlmIChyYW5nZSkKICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZShyYW5nZS0+c3RhcnRQb3Np
dGlvbigpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQodGV4dCk7CkBAIC02
OTMsNyArNjkzLDcgQEAgUVZhcmlhbnQgUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZFF1ZXJ5
KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdAogICAgICAgICByZXR1cm4gUVZh
cmlhbnQoKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJyZW50U2VsZWN0aW9uOiB7Ci0gICAg
ICAgIGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpICYmIHJlbmRlclRleHRDb250cm9sICYm
IHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKKyAgICAgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCAmJiByZW5k
ZXJUZXh0Q29udHJvbC0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBp
bnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJO
b2RlKCk7CiAgICAgICAgICAgICBpbnQgZW5kID0gZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkKQEAg
LTcwMyw3ICs3MDMsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVl
cnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAKICAgICB9CiAgICAgY2Fz
ZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3Np
dGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpKTsKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGZyYW1lLT5zZWxlY3Rpb24o
KS0+YmFzZSgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICB9CkBAIC05NTUsNyArOTU1
LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmRpZENsb3NlSW5zcGVjdG9yKCkKIHZvaWQgUVdl
YlBhZ2VBZGFwdGVyOjp1cGRhdGVBY3Rpb25JbnRlcm5hbChRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVB
Y3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiBjb21tYW5kTmFtZSwgYm9vbCogZW5hYmxlZCwgYm9v
bCogY2hlY2tlZCkKIHsKICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlciogbG9hZGVyID0gbWFpbkZy
YW1lQWRhcHRlcigpLT5mcmFtZS0+bG9hZGVyKCk7Ci0gICAgV2ViQ29yZTo6RWRpdG9yKiBlZGl0
b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRv
cigpOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAogICAgIHN3aXRjaCAoYWN0aW9u
KSB7CiAgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OkJhY2s6CkBAIC05NzMsMTQgKzk3MywxNCBA
QCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dXBkYXRlQWN0aW9uSW50ZXJuYWwoUVdlYlBhZ2VBZGFw
dGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgYwogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRU
ZXh0RGlyZWN0aW9uRGVmYXVsdDoKICAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6U2V0VGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0OgogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRUZXh0RGly
ZWN0aW9uUmlnaHRUb0xlZnQ6Ci0gICAgICAgICplbmFibGVkID0gZWRpdG9yLT5jYW5FZGl0KCk7
CisgICAgICAgICplbmFibGVkID0gZWRpdG9yLmNhbkVkaXQoKTsKICAgICAgICAgKmNoZWNrZWQg
PSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogewogCiAgICAgICAgIC8vIGlm
IGl0J3MgYW4gZWRpdG9yIGNvbW1hbmQsIGxldCBpdHMgbG9naWMgZGV0ZXJtaW5lIHN0YXRlCiAg
ICAgICAgIGlmIChjb21tYW5kTmFtZSkgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBlZGl0b3ItPmNvbW1hbmQoY29tbWFuZE5hbWUpOworICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBlZGl0b3IuY29tbWFuZChjb21tYW5kTmFtZSk7CiAgICAgICAg
ICAgICAqZW5hYmxlZCA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBpZiAoKmVu
YWJsZWQpCiAgICAgICAgICAgICAgICAgKmNoZWNrZWQgPSBjb21tYW5kLnN0YXRlKCkgIT0gRmFs
c2VUcmlTdGF0ZTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dHJp
Z2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0VAog
ICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgRWRpdG9yKiBl
ZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRp
dG9yKCk7CiAKICAgICAvLyBDb252ZW5pZW5jZQogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0
ZSBoaXRUZXN0OwpAQCAtMTAyOCwxMCArMTAyOCwxMCBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6
dHJpZ2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0
VAogI2lmIGRlZmluZWQoUV9XU19YMTEpCiAgICAgICAgIGJvb2wgb2xkU2VsZWN0aW9uTW9kZSA9
IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpOwogICAg
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRy
dWUpOwotICAgICAgICBlZGl0b3ItPmNvcHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0
VGVzdFJlc3VsdC0+bGlua1RleHQpOworICAgICAgICBlZGl0b3IuY29weVVSTChoaXRUZXN0UmVz
dWx0LT5saW5rVXJsLCBoaXRUZXN0UmVzdWx0LT5saW5rVGV4dCk7CiAgICAgICAgIFBhc3RlYm9h
cmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9k
ZSk7CiAjZW5kaWYKLSAgICAgICAgZWRpdG9yLT5jb3B5VVJMKGhpdFRlc3RSZXN1bHQtPmxpbmtV
cmwsIGhpdFRlc3RSZXN1bHQtPmxpbmtUZXh0KTsKKyAgICAgICAgZWRpdG9yLmNvcHlVUkwoaGl0
VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKQEAgLTEwNTgsMTMg
KzEwNTgsMTMgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VB
ZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFNldFRleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZWRpdG9y
LnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTZXRUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAgICAg
IGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0
aW9uKTsKKyAgICAgICAgZWRpdG9yLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0
V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0VGV4dERpcmVj
dGlvblJpZ2h0VG9MZWZ0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGVkaXRvci5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6IHsKQEAg
LTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp0cmlnZ2VyQWN0aW9uKFFX
ZWJQYWdlQWRhcHRlcjo6TWVudUFjdGlvbiBhY3Rpb24sIFFXZWJIaXRUCiAjZW5kaWYKICAgICBk
ZWZhdWx0OgogICAgICAgICBpZiAoY29tbWFuZE5hbWUpCi0gICAgICAgICAgICBlZGl0b3ItPmNv
bW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVkaXRvci5jb21tYW5k
KGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTEz
MTQsOCArMTMxNCw4IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpmb2N1c091dEV2ZW50KFFGb2N1
c0V2ZW50ICopCiBib29sIFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU2hvcnRjdXRPdmVycmlkZUV2
ZW50KFFLZXlFdmVudCogZXZlbnQpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5F
ZGl0KCkpCisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Cisg
ICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGV2ZW50LT5tb2RpZmllcnMoKSA9PSBRdDo6Tm9Nb2RpZmllcgogICAgICAgICB8fCBldmVudC0+
bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3
ZTZmMDBlYmE3YmNhNGVjNzM0NTExYzI0ZjVlMjI0ZTY1M2JhMjZjLi5mNzRiZmZiOWI5Y2RhMjUw
OWFjOTE3ODIzMGMxZjIxZjFmZTZkN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgS1VS
TCYgdXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNv
bnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
c2VhcmNoU3RyaW5nKTsKICAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggNzBjYjUyYTk3MzIzMTI5ZTgxYmQ3ZDdkMDE2NmNlNmYzOGMwYzA0
Yi4uY2U2MmEyOWNmZGRmM2E1Zjk3MjNmMGY3YzViMTNiMTI5MGZlNDJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJGcmFtZTo6aGFzU3BlbGxpbmdNYXJrZXIoCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0g
ICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKKyAgICAqcmVzdWx0
ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVu
dE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
QEAgLTEwMjYsMTEgKzEwMjYsMTEgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlv
bihCU1RSIGRpcmVjdGlvbikKIAogICAgIFN0cmluZyBkaXJlY3Rpb25TdHJpbmcoZGlyZWN0aW9u
LCBTeXNTdHJpbmdMZW4oZGlyZWN0aW9uKSk7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAi
YXV0byIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbik7CiAgICAg
ZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJsdHIiKQotICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3Ry
aW5nID09ICJydGwiKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEwNTIsNyArMTA1Miw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNlbGVjdGVkU3RyaW5nKAogICAgIGlm
ICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIHRleHQg
PSBjb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29yZUZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyB0ZXh0ID0gY29yZUZyYW1lLT5k
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
ZWRUZXh0KCkpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodGV4dCkucmVsZWFzZSgpOwogICAg
IHJldHVybiBTX09LOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJGcmFtZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
U2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAg
ICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZTQ3NzZmZGUwNDNkNTBjMTg0
Y2NjMmZhNjM2YTMyOWY2ZDIyMDM0MC4uZTYyNmI3ODRmOWJlYWE4N2FkYzA5OGZhOTg0YmQ0MGYz
Njc0Y2M2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE4MTIsMTEgKzE4MTIsMTEgQEAgYm9v
bCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgIGNhc2Ug
U2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
U2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAg
ICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8iKS5leGVjdXRl
KCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxl
RWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmICgha2V5RXZl
bnQgfHwga2V5RXZlbnQtPmlzU3lzdGVtS2V5KCkpICAvLyBkbyBub3QgdHJlYXQgdGhpcyBhcyB0
ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTE5NzksNyArMTk3OSw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0
KQogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgp
LT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2
dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwogfQogCiBib29sIFdlYlZpZXc6OmtleURvd24o
V1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0ZW1LZXlEb3du
KQpAQCAtMzQyOSw3ICszNDI5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUoKQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShCU1RSIG5hbWUsIEJTVFIgdmFs
dWUpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT5jb21tYW5kKHRvU3RyaW5nKG5hbWUpKS5leGVjdXRlKHRvU3RyaW5nKHZh
bHVlKSk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4ZWN1dGUodG9TdHJpbmcodmFs
dWUpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzY1Niw3ICszNjU2LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFRleHQoCiAgICAgaWYgKCFmb2N1
c2VkRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBTdHJpbmcgZnJhbWVTZWxl
Y3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBT
dHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVk
VGV4dCgpOwogICAgICp0ZXh0ID0gU3lzQWxsb2NTdHJpbmdMZW4oZnJhbWVTZWxlY3RlZFRleHQu
Y2hhcmFjdGVycygpLCBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSk7CiAgICAgaWYgKCEqdGV4
dCAmJiBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZN
RU1PUlk7CkBAIC00MjY1LDE0ICs0MjY1LDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6cGFzdGVFbmFibGVkKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3
OjpkZWxldGVFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFi
bGVkKQogewotICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jYW5EZWxldGUoKTsKKyAgICAqZW5hYmxlZCA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5j
YW5EZWxldGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQoIAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIGVuYWJsZWQpCiB7Ci0gICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAg
ICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQzMjQs
NyArNDMyNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cmVwbGFjZVNl
bGVjdGlvbldpdGhUZXh0KAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkKIHsKICAgICBQ
b3NpdGlvbiBzdGFydCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rp
b24oKS5zdGFydCgpOwotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dCh0b1N0cmluZyh0ZXh0KSwgMCk7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
Lmluc2VydFRleHQodG9TdHJpbmcodGV4dCksIDApOwogICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnNlbGVjdGlvbigpLT5zZXRCYXNlKHN0YXJ0KTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQz
NjgsMjggKzQzNjgsMjggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjphcHBs
eVN0eWxlKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5KCAKICAgICAg
ICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNv
cHkiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0KCAK
ICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1h
bmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAg
IHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBh
c3RlKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojpjb3B5VVJMKCAKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCkKIHsKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkt
PmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsKKyAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCku
Y29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC00NDExLDcgKzQ0MTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnBhc3RlRm9udCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
Vmlldzo6ZGVsZXRlXyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8p
CiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLT5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkRl
bGV0ZSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTQ0OTMsNyAr
NDQ5Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2hlY2tTcGVsbGlu
ZygKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICB9CiAgICAgCi0gICAgY29yZShtX21haW5G
cmFtZSktPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICBjb3JlKG1f
bWFpbkZyYW1lKS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAgICAgCkBAIC00NTEyLDcgKzQ1MTIsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OnNob3dHdWVzc1BhbmVsKAogICAgICAgICBtX2VkaXRpbmdEZWxl
Z2F0ZS0+c2hvd1NwZWxsaW5nVUkoRkFMU0UpOwogICAgIH0KICAgICAKLSAgICBjb3JlKG1fbWFp
bkZyYW1lKS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICBj
b3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUp
OwogICAgIG1fZWRpdGluZ0RlbGVnYXRlLT5zaG93U3BlbGxpbmdVSShUUlVFKTsKICAgICByZXR1
cm4gU19PSzsKIH0KQEAgLTUzMzksNyArNTMzOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVmlldzo6bG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXcoCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25z
KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTU0NTQsNyArNTQ1NCw3IEBAIHZvaWQgV2Vi
Vmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElu
cHV0Q29udGV4dCkKICAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHRhcmdldEZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewogICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZW1wUmFuZ2UgPSBy
YW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0gICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOworICAgICAgICBjYXJldCA9
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkp
OwogICAgIH0KICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5k
b3coY2FyZXQpOwogICAgIENBTkRJREFURUZPUk0gZm9ybTsKQEAgLTU0NzIsNyArNTQ3Miw3IEBA
IHZvaWQgV2ViVmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUs
IEhJTUMgaElucHV0Q29udGV4dCkKIHZvaWQgV2ViVmlldzo6cmVzZXRJTUUoRnJhbWUqIHRhcmdl
dEZyYW1lKQogewogICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVk
aXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIAogICAgIGlmIChISU1DIGhJbnB1dENvbnRleHQgPSBn
ZXRJTU1Db250ZXh0KCkpIHsKICAgICAgICAgSU1NRGljdDo6ZGljdCgpLm5vdGlmeUlNRShoSW5w
dXRDb250ZXh0LCBOSV9DT01QT1NJVElPTlNUUiwgQ1BTX0NBTkNFTCwgMCk7CkBAIC01NDg3LDcg
KzU0ODcsNyBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0ZVNlbGVjdGlvbkZvcklNRSgpCiAgICAgaWYg
KCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKKyAgICBp
ZiAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJ
bnZhbGlkKCkpCiAgICAgICAgIHJlc2V0SU1FKHRhcmdldEZyYW1lKTsKIH0KIApAQCAtNTY0Myw3
ICs1NjQzLDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFyYW0p
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCF0YXJn
ZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCF0
YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBwcmVwYXJlQ2FuZGlkYXRlV2luZG93KHRhcmdldEZyYW1lLCBo
SW5wdXRDb250ZXh0KTsKQEAgLTU2NTMsNyArNTY1Myw3IEBAIGJvb2wgV2ViVmlldzo6b25JTUVD
b21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogICAgICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3Ry
aW5nKGhJbnB1dENvbnRleHQsIEdDU19SRVNVTFRTVFIsIGNvbXBvc2l0aW9uU3RyaW5nKSAmJiBs
cGFyYW0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsK
KyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3Ry
aW5nOwogICAgICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdD
U19DT01QU1RSLCBjb21wb3NpdGlvblN0cmluZykpCkBAIC01Njc0LDcgKzU2NzQsNyBAQCBib29s
IFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKIAogICAgICAgICBpbnQg
Y3Vyc29yUG9zaXRpb24gPSBMT1dPUkQoSU1NRGljdDo6ZGljdCgpLmdldENvbXBvc2l0aW9uU3Ry
aW5nKGhJbnB1dENvbnRleHQsIEdDU19DVVJTT1JQT1MsIDAsIDApKTsKIAotICAgICAgICB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRl
cmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3Io
KS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9z
aXRpb24sIDApOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtNTY4Niw4ICs1Njg2LDgg
QEAgYm9vbCBXZWJWaWV3OjpvbklNRUVuZENvbXBvc2l0aW9uKCkKICAgICAvLyBJZiB0aGUgY29t
cG9zaXRpb24gaGFzbid0IGJlZW4gY29uZmlybWVkIHlldCwgaXQgbmVlZHMgdG8gYmUgY2FuY2Vs
bGVkLgogICAgIC8vIFRoaXMgaGFwcGVucyBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0
ZXIgZnJvbSBpbmxpbmUgaW5wdXQgaG9sZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAodGFy
Z2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKQotICAg
ICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmcoKSk7
CisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3Np
dGlvbigpKQorICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9u
KFN0cmluZygpKTsKIAogICAgIGlmIChtX2luSU1FQ29tcG9zaXRpb24pCiAgICAgICAgIG1faW5J
TUVDb21wb3NpdGlvbi0tOwpAQCAtNTcxMiwxNCArNTcxMiwxNCBAQCBib29sIFdlYlZpZXc6Om9u
SU1FTm90aWZ5KFdQQVJBTSB3cGFyYW0sIExQQVJBTSwgTFJFU1VMVCopCiAKIExSRVNVTFQgV2Vi
Vmlldzo6b25JTUVSZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSwgSU1FQ0hB
UlBPU0lUSU9OKiBjaGFyUG9zKQogewotICAgIGlmIChjaGFyUG9zLT5kd0NoYXJQb3MgJiYgIXRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBpZiAoY2hhclBvcy0+
ZHdDaGFyUG9zICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgSW50UmVjdCBjYXJldDsKLSAgICBpZiAoUmVmUHRyPFJhbmdl
PiByYW5nZSA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSA/IHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpIDogdGFyZ2V0RnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CisgICAgaWYgKFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSA/
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCkgOiB0YXJnZXRGcmFtZS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGVtcFJhbmdlID0g
cmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgICAgICB0ZW1wUmFuZ2UtPnNldFN0YXJ0KHRlbXBS
YW5nZS0+c3RhcnRDb250YWluZXIoZWMpLCB0ZW1wUmFuZ2UtPnN0YXJ0T2Zmc2V0KGVjKSArIGNo
YXJQb3MtPmR3Q2hhclBvcywgZWMpOwotICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0
b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKKyAgICAgICAgY2FyZXQg
PSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgp
KTsKICAgICB9CiAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2lu
ZG93KGNhcmV0KTsKICAgICBjaGFyUG9zLT5wdC54ID0gY2FyZXQueCgpOwpAQCAtNTc1Miw3ICs1
NzUyLDcgQEAgTFJFU1VMVCBXZWJWaWV3OjpvbklNRVJlcXVlc3QoV1BBUkFNIHJlcXVlc3QsIExQ
QVJBTSBkYXRhKQogewogICAgIExPRyhUZXh0SW5wdXQsICJvbklNRVJlcXVlc3QgJXMiLCBpbWVS
ZXF1ZXN0TmFtZShyZXF1ZXN0KS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEZyYW1lKiB0YXJnZXRG
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgp
KQorICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChyZXF1ZXN0KSB7CkBAIC02ODgz
LDE0ICs2ODgzLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q29t
cG9zaXRpb25Gb3JUZXN0aW5nKAogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAogICAgIFN0cmluZyBjb21wb3NpdGlvblN0ciA9IHRvU3RyaW5nKGNvbXBvc2l0aW9u
KTsKIAogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1
bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0ci5s
ZW5ndGgoKSwgQ29sb3IoQ29sb3I6OmJsYWNrKSwgZmFsc2UpKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9t
ICsgbGVuZ3RoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHIsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOwogCiAgICAgcmV0dXJuIFNf
T0s7CiB9CkBAIC02OTA0LDcgKzY5MDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6Omhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBbb3V0LCByZXR2YWxdICovCiAgICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0gZnJh
bWUgJiYgZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgICpyZXN1bHQgPSBm
cmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIHJldHVybiBT
X09LOwogfQpAQCAtNjkxNSwxNSArNjkxNSwxNSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcoLyogW2luXSAqLyBCU1RSCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRp
dG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgU3RyaW5nIGNv
bXBvc2l0aW9uU3RyID0gdG9TdHJpbmcoY29tcG9zaXRpb24pOwogCiAgICAgaWYgKGNvbXBvc2l0
aW9uU3RyLmlzTnVsbCgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7
CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY5MzQsMTAgKzY5MzQsMTAgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb21wb3NpdGlvblJhbmdlRm9yVGVzdGluZygvKiBb
b3V0XSAqLyBVSU5UKgogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFt
ZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9u
UmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBv
c2l0aW9uUmFuZ2UoKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CkBAIC02OTc4LDcgKzY5NzgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZygKICAgICBBU1NFUlQocmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCkpOwogICAgIEFTU0VSVChyYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwog
ICAgICAKLSAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHJhbmdlLmdldCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmly
c3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOwogICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS0+
dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOwogCiAgICAgcmVzdWx0UmVjdC0+bGVmdCA9
IHJlc3VsdEludFJlY3QueCgpOwpAQCAtNjk5OCw3ICs2OTk4LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBV
SU5UKiBsb2MKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgp
OwogCiAgICAgc2l6ZV90IGxvY2F0aW9uU2l6ZTsKICAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5jcHAKaW5kZXggYzkxZWM5ZjgyMDJjODhhNmMxZTJkOGEyOTdiNjVjYmE5NGQyZjI5
Mi4uNjQ1OGRmNmY4YTc4ODQ3ODllODA4OWVkNDQxMTJhZTJhZmE3NTllNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCBib29sIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwog
CiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikg
ewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91
dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4
ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC00MTUsNyArNDE1LDcgQEAg
Ym9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQt
PmFsdEtleSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRl
eHQoKSwgZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcAppbmRleCA5OGE0MDRjMDJhYTFjOTgxYmVhZTQ5NTIwNjYwZmI2MTM3YzJkZjE2Li45MGE1
MTQ4NjBlZjk1N2ZhOTYyYmY2YzUzYjliMDA3ZjZhODk3MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xp
ZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJikKICNpZiAhUExBVEZPUk0oTUFDKQogdm9pZCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUp
CiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRU
ZXh0KCk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgU3RyaW5n
IGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CiAg
ICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiLCAiKyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IGMxNzNhYmM2ZmE4YmRiMmY3ZjUyZGFiNzVjNTE2ODk0ZTY2YzIwYjIuLmE4YjYyZDE1YmVi
YjhlZGQzMTMzZmM0MjlkZTBlNWI1YzVmOGQyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2Vs
ZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAm
JiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVj
dGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1v
ZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0
aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJh
bWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9y
KCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDcwMTBh
OGY3N2MxZjVhMzEwMDlmNWFhOGI3MGMyYTI4ZDMyYmIzYTIuLmM0MmVjMzdiZDY0NjE3ZWRjMWQw
MDA2NWQ3N2UxZmZiNmUwZmZlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZs
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9h
cmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5k
bGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0
KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHNlbmRpbmcgc3luYyBtZXNzYWdlIG1pZ2h0IG1h
a2UgaW5wdXQgbGFnZ2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCmlu
ZGV4IDY3ZmRjMWY0NDRlYWQ2YmE4Y2E3OTE4ODRmZDU4MTlmODI0ZjBjODEuLjk4ODlhOWQ2ODEw
NzU3NTEwNjA4OWFiZjllNzhjYjEzYWJjMGI1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZXhl
Y3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIFZlY3RvcjxXVEY6OlN0cgog
ewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKHBlbmRp
bmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgRWRpdG9yOjpD
b21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChwZW5kaW5nRWRpdG9yQ29t
bWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dElu
c2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTk1LDE0ICs5NSwxNCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBp
cyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJh
bWUsIHBlbmRpbmdFZGl0b3JDb21tYW5kcywgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7
CisgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5n
RWRpdG9yQ29tbWFuZHMsIGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpKSB7CiAgICAgICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIC8vIERvbid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2Rl
cyB0aGF0IGNhbm5vdCBlZGl0LgotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkp
CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBUaGlzIGlzIGp1c3QgYSBub3JtYWwgdGV4dCBpbnNlcnRpb24sIHNvIHdhaXQgdG8g
ZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYg
KHBsYXRmb3JtRXZlbnQtPmN0cmxLZXkoKSB8fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0
Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2Vy
dFRleHQocGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xp
ZW50TWFjLm1tCmluZGV4IDBmY2EzYjk4ZmZjNmJkOWRmNTA2MzI3YTEzOWFkYjU3NDc4ZjNmNTgu
LjNjMjMwZWJlNDRhYzRlNzMzMjZiNGM2YmQ5NTg0ODE5M2NmM2IwOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygpCiAKIHZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAgIFN0
cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAg
ICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIAogICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hUaGVXZWIoc2VhcmNoU3RyaW5nKSk7CkBA
IC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90
bGlnaHQoKQogICAgIGlmICghc2VsZWN0aW9uRnJhbWUpCiAgICAgICAgIHNlbGVjdGlvbkZyYW1l
ID0gbWFpbkZyYW1lOwogCi0gICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJh
bWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRv
cigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0
aW9uRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICAKICAgICBpZiAoc2VsZWN0ZWRTdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRN
YWMubW0KaW5kZXggODIzNWJjNmQ4ODBmMzZmYTA1NTVhMjc1MzMwZDc2ZTI3ZTM1NWZkNS4uZTBi
OGFjODEyYjg2YWEyNjliNTdkZTNhN2Y2ZjJhMDI2ZDNiYTNmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVkaXRvckNsaWVudE1hYy5tbQpAQCAtMTM2LDEyICsxMzYsMTIgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHN0YXRpYyB2b2lk
IGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBzZWxlY3RvcikKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKIAotICAgIE5TU3Ry
aW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29k
aW5nKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIE5TU3RyaW5nICpzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KGZyYW1lLCBbc2VsZWN0ZWRTdHJpbmcgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CmluZGV4IGUyNjA1NmU5Mjg2OWNkNTU5ZDgwMzc5NTMzNTlkNGIyN2I2N2YxY2YuLjcyNmNhMDZl
NzkwYjA0MDc0NmIxYWI0ODJlYzhiNzdlZDBjM2E2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIFN0cmlu
ZyBXZWJGcmFtZTo6c2VsZWN0aW9uQXNTdHJpbmcoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtX2NvcmVGcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGVkVGV4dCgpKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2Rp
ZmllZEJ5RW5jb2RpbmcobV9jb3JlRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKIH0K
IAogSW50U2l6ZSBXZWJGcmFtZTo6c2l6ZSgpIGNvbnN0CkBAIC03MDAsMTUgKzcwMCwxNSBAQCBT
dHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVy
bCkgY29uc3QKIAogdm9pZCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdGlvbikKIHsKLSAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX2NvcmVGcmFtZS0+ZWRp
dG9yKCkpCisgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGRpcmVjdGlvbiA9PSAiYXV0byIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0
QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBt
X2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRp
bmdEaXJlY3Rpb24pOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKLSAgICAgICAg
bV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdo
dFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNl
IGlmIChkaXJlY3Rpb24gPT0gInJ0bCIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAg
ICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0
VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTk0N2VlYmQ2
NDc2ZWM3M2I2NjBlMmMwMDg4ZGMyNzc4MTIwNWUxZC4uZjAxZDVjYWY2NWI3YjE0Y2I1MWE4YmVk
NDY5MWE5ZTJhNzdiZDAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNjAxLDggKzYwMSw4IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVk
aXRvclN0YXRlKCkgY29uc3QKICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCk7CiAgICAgcmVzdWx0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSgpOwogICAgIHJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+
aXNJblBhc3N3b3JkRmllbGQoKTsKLSAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7Ci0gICAgcmVzdWx0LnNob3VsZElnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlv
blNlbGVjdGlvbkNoYW5nZSgpOworICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLT5l
ZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOworICAgIHJlc3VsdC5zaG91bGRJZ25vcmVDb21wb3Np
dGlvblNlbGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNl
bGVjdGlvbkNoYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgc2l6ZV90IGxvY2F0aW9u
ID0gMDsKQEAgLTY0MSw4ICs2NDEsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0
ZSgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5lZGl0b3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29u
dGVudHNUb1dpbmRvdyhzZWxlY3Rpb25Sb290LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKTsK
IAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlv
biAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKSkpIHsKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihyZXN1bHQuYW5j
aG9yUG9zaXRpb24sIHJlc3VsdC5jdXJzb3JQb3NpdGlvbik7CisgICAgaWYgKHJlc3VsdC5oYXND
b21wb3NpdGlvbiAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgp
KSkgeworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24ocmVz
dWx0LmFuY2hvclBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOwogCiAgICAgICAgIHJl
c3VsdC5jb21wb3NpdGlvblJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJh
bmdlLT5ib3VuZGluZ0JveCgpKTsKICAgICB9CkBAIC02NTcsNyArNjU3LDcgQEAgRWRpdG9yU3Rh
dGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChyYW5nZSkK
LSAgICAgICAgcmVzdWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2lu
ZG93KGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpKTsKKyAg
ICAgICAgcmVzdWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93
KGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSkpOwogCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBvbmx5IHRyYW5zZmVyIGlubmVyVGV4dCB3aGVuIGl0IGNoYW5n
ZXMgYW5kIGRvIHRoaXMgb24gdGhlIFVJIHNpZGUuCiAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRF
ZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkKSB7CkBAIC03NjgsNyArNzY4LDcg
QEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoYXJndW1l
bnQpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKGFy
Z3VtZW50KTsKIH0KIAogYm9vbCBXZWJQYWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25z
dCBTdHJpbmcmIGNvbW1hbmROYW1lKQpAQCAtNzgwLDcgKzc4MCw3IEBAIGJvb2wgV2ViUGFnZTo6
aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKICAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJh
bWUpKQogICAgICAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQo
Y29tbWFuZE5hbWUpOwogICAgIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKICAgICByZXR1cm4g
Y29tbWFuZC5pc1N1cHBvcnRlZCgpICYmIGNvbW1hbmQuaXNFbmFibGVkKCk7CiB9CiAgICAgCkBA
IC0xNzc4LDcgKzE3NzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgICAgICBpZiAoUGx1
Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQog
ICAgICAgICAgICAgaXNFbmFibGVkID0gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJs
ZWQoY29tbWFuZE5hbWUpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAg
ICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoY29tbWFuZE5hbWUpOwogICAgICAgICAgICAgc3RhdGUgPSBjb21tYW5kLnN0YXRlKCk7CiAg
ICAgICAgICAgICBpc0VuYWJsZWQgPSBjb21tYW5kLmlzU3VwcG9ydGVkKCkgJiYgY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgfQpAQCAtMjU2MCw3ICsyNTYwLDcgQEAgYm9vbCBXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYg
KCFrZXlFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0
KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3Qg
aGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRz
IHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0
cmVhdGVkLApAQCAtMjU3MywxNCArMjU3MywxNCBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5u
b3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICgh
ZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJl
c3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAn
ICcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkt
Pmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZy
YW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwog
fQogI2VuZGlmCiAKQEAgLTI4NTksNyArMjg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwK
IHZvaWQgV2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVT
ZWxlY3Rpb24pCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAg
LTI4ODYsMTcgKzI4ODYsMTcgQEAgdm9pZCBXZWJQYWdlOjp1bm1hcmtBbGxCYWRHcmFtbWFyKCkK
ICNpZiBVU0UoQVBQS0lUKQogdm9pZCBXZWJQYWdlOjp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkt
PnVwcGVyY2FzZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkudXBwZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBh
Z2U6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+bG93ZXJjYXNlV29yZCgpOworICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5sb3dl
cmNhc2VXb3JkKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS0+Y2FwaXRhbGl6ZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FwaXRhbGl6ZVdvcmQoKTsKIH0KICNlbmRpZgog
ICAgIApAQCAtMjkzMyw3ICsyOTMzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgYm9vbCBz
ZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7CiAgICAgYm9vbCBzbWFydFJlcGxhY2UgPSBmYWxzZTsK
LSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4
dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQs
IHNtYXJ0UmVwbGFjZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24oKQpAQCAt
MzU5Niw3ICszNTk2LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJl
c3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRl
eHRVSVJlc3VsdChyZXN1bHQpOworICAgIGZyYW1lLT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdChyZXN1bHQpOwogfQogI2VuZGlmCiAKQEAgLTM2MTgsMjkgKzM2MTgsMjkg
QEAgdm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBv
c2l0aW9uLCBkb3VibGUgdGltZSkKIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0
aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2
NF90IGxlbmd0aCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRp
dG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2Fu
RWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxp
bmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxp
bmUoMCwgY29tcG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIENvbG9yKENvbG9yOjpibGFjayksIGZh
bHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0
cmluZywgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CisgICAgZnJhbWUtPmVkaXRv
cigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBmcm9tLCBm
cm9tICsgbGVuZ3RoKTsKIH0KIAogYm9vbCBXZWJQYWdlOjpoYXNDb21wb3NpdGlvbkZvclRlc3Rp
bmcoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCkt
Pmhhc0NvbXBvc2l0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS5o
YXNDb21wb3NpdGlvbigpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbkZv
clRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoY29tcG9zaXRpb25TdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJt
Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cmluZyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bnVtV2hlZWxFdmVu
dEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1XaGVlbEV2ZW50SGFuZGxlcnMpCkBAIC0zNzk2
LDE5ICszNzk2LDE5IEBAIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBh
Z2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgaWYgKCF0YXJn
ZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpKQorICAgIGlmICghdGFyZ2V0RnJhbWUp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRWRpdG9yKiBlZGl0b3IgPSB0YXJnZXRGcmFtZS0+
ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3ItPmNhbkVkaXQoKSkKKyAgICBFZGl0b3ImIGVkaXRv
ciA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgewor
ICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBXZSBzaG91bGQg
dmVyaWZ5IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQog
ICAgICAgICAvLyBlZGl0YWJsZSBiZWNhdXNlIEphdmFTY3JpcHQgbWF5IGRlbGV0ZSBhIHBhcmVu
dCBub2RlIG9mIHRoZSBjb21wb3NpdGlvbgogICAgICAgICAvLyBub2RlLiBJbiB0aGlzIGNhc2Us
IFdlYktpdCBjcmFzaGVzIHdoaWxlIGRlbGV0aW5nIHRleHRzIGZyb20gdGhlIHBhcmVudAogICAg
ICAgICAvLyBub2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueSBsb25nZXIuCi0gICAgICAgIGlm
IChQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpKSB7
CisgICAgICAgIGlmIChQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci5jb21wb3NpdGlv
blJhbmdlKCkpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWlu
ZXIoKTsKICAgICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM4MjUsOCArMzgyNSw3IEBAIHZvaWQg
V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJp
bmcsIGludDY0X3Qgc2VsZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFZGl0b3Iq
IGVkaXRvciA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKTsKLSAgICBlZGl0b3ItPmNvbmZpcm1Db21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNv
bmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiAKICAgICBpZiAoc2VsZWN0aW9u
U3RhcnQgPT0gLTEpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOwpAQCAtMzg1OCwxOSArMzg1NywxOSBAQCB2
b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENv
bXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogCiAgICAgICAgIEVsZW1lbnQqIHNjb3BlID0gdGFyZ2V0
RnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoc2NvcGUsIHJlcGxhY2VtZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsK
LSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVj
dGlvbkNoYW5nZSh0cnVlKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9y
ZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKHRydWUpOwogICAgICAgICB0YXJnZXRGcmFtZS0+
c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworICAg
ICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25D
aGFuZ2UoZmFsc2UpOwogICAgIH0KIAotICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7
CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGlu
ZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCiB7CiAgICAgaWYgKEZyYW1lKiB0YXJnZXRG
cmFtZSA9IHRhcmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUt
PmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRp
dG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSk7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3Bw
CmluZGV4IGU0NzMxMDMwNGQ4MTY4YmE5ODkwNzczYTJjOWNlZWViZWNhZDlkNmYuLmM2YzQxZjEw
MjNjNTE1ODMzMWE2ZjI0ZWJlYjY2M2I0ZjUwYjU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTc4LDE2ICsx
NzgsMTYgQEAgc3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFn
ZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEVkaXRvciogZWRp
dG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAg
RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuY2FuRWRp
dCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9u
KCkpIHsKKyAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gV2Ug
c2hvdWxkIHZlcmlmeSB0aGUgcGFyZW50IG5vZGUgb2YgdGhpcyBJTUUgY29tcG9zaXRpb24gbm9k
ZSBhcmUKICAgICAgICAgLy8gZWRpdGFibGUgYmVjYXVzZSBKYXZhU2NyaXB0IG1heSBkZWxldGUg
YSBwYXJlbnQgbm9kZSBvZiB0aGUgY29tcG9zaXRpb24KICAgICAgICAgLy8gbm9kZS4gSW4gdGhp
cyBjYXNlLCBXZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRoZSBwYXJl
bnQKICAgICAgICAgLy8gbm9kZSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnkgbG9uZ2VyLgotICAg
ICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0aW9uUmFu
Z2UoKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3IuY29t
cG9zaXRpb25SYW5nZSgpKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29udGVudEVk
aXRhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDMsNyArMjAzLDcgQEAg
dm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlv
blN0cmluZykKICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICB0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9u
VW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vyc29yUG9zaXRpb24pCkBAIC0yMTIs
NyArMjEyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ28KICAgICBpZiAoIXRhcmdldEZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBv
c2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7
CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3Ry
aW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Y2FuY2VsQ29tcG9zaXRpb24oKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2Fu
Y2VsQ29tcG9zaXRpb24oKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
aW5kZXggYjcxMjUzMGVhNmY5OWU4ZWIwYjQwY2RhMzQ4MDllYTlmY2E2MDIwZi4uNzhhNzhjMWU3
NDk2YzVlNjAyZjU2YzI3MmU3MWViNWRiNTQ1OTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTY4LDE2ICsxNjgs
MTYgQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9
IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgaWYgKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lID09ICJpbnNlcnRUZXh0OiIp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigp
KTsKKyAgICAgICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkp
OwogCi0gICAgICAgICAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAg
ICAgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVk
IGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4K
ICAgICAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJlc3VsdHMgaW4g
c2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0g
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGNvbW1hbmRzW2ldLnRleHQsIGV2ZW50KTsKKyAg
ICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChj
b21tYW5kc1tpXS50ZXh0LCBldmVudCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5k
TmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpOworICAgICAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21t
YW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpOwogICAgICAg
ICAgICAgaWYgKGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgICAgIGJvb2wg
Y29tbWFuZEV4ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpOwogICAgICAg
ICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcjsKQEAg
LTIzMyw3ICsyMzMsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBib29sIHNhdmVDb21tYW5kcwogICAgICAgICAvLyAoZS5n
LiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgogICAgICAgICBi
b29sIGhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgPSBmYWxzZTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb21tYW5kcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5k
c1tpXS5jb21tYW5kTmFtZSkpLmlzVGV4dEluc2VydGlvbigpKQorICAgICAgICAgICAgaWYgKGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3JOYW1lKGNvbW1hbmRz
W2ldLmNvbW1hbmROYW1lKSkuaXNUZXh0SW5zZXJ0aW9uKCkpCiAgICAgICAgICAgICAgICAgaGF2
ZVRleHRJbnNlcnRpb25Db21tYW5kcyA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gSWYg
dGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFu
ZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRlIHRoZSBjb21tYW5kcy4KQEAgLTI2NSw3
ICsyNjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogICAgICAgICAgICAgZnJhbWUtPnNl
bGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdl
LmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgICAgICB9CiAKLSAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25T
dGFydCwgc2VsZWN0aW9uRW5kKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOwogICAg
IH0KIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2
b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIAogICAgIG5ld1N0
YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0KQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYlBhZ2U6
OmNhbmNlbENvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
IAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3Rh
dGUoKTsKIH0KQEAgLTI5OSwxMyArMjk5LDEzIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAg
ICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAg
fQogCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGlu
c2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hh
aW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFj
ZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICBo
YW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHRleHQsIG1fa2V5Ym9hcmRFdmVu
dEJlaW5nSW50ZXJwcmV0ZWQpOworICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLmlu
c2VydFRleHQodGV4dCwgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29uZmlybUNvbXBvc2l0aW9uKHRleHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmly
bUNvbXBvc2l0aW9uKHRleHQpOwogICAgIH0KIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUo
KTsKQEAgLTMyMSw4ICszMjEsOCBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdAogICAgICAgICAg
ICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBs
YWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KIAotICAg
IEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKLSAgICBoYW5kbGVk
ID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAg
IEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOworICAgIGhhbmRsZWQg
PSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVy
bmF0aXZlTG9jYXRpb25zLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKICAgICBu
ZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CiAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0
aCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAg
c2l6ZV90IGxvY2F0aW9uU2l6ZTsKICAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKICAgICBpZiAocmFu
Z2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+
c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5n
ZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkgewpAQCAtNDM3LDcgKzQzNyw3IEBA
IHZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRp
b24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5l
cigpKTsKICAgICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKICAgICAgCi0gICAgSW50
UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQo
KSk7CisgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdl
KHJhbmdlLmdldCgpKTsKICAgICByZXN1bHRSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNU
b1dpbmRvdyhyZWN0KTsKIH0KIApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGJv
b2wmIHJlCiAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKTsKICAgICByZXN1bHQgPSB0cnVlOwogfQogCkBAIC02NzYsNyArNjc2
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmlu
ZyYgc3RyaW5nVmFsdWUpCiAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLT5zdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7CisgICAgc3RyaW5nVmFsdWUgPSBmcmFtZS0+ZWRp
dG9yKCkuc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgdWludDY0X3QmIHNpemUpCkBAIC02ODUs
NyArNjg1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE0KICAgICBpZiAoIWZyYW1lIHx8IGZy
YW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGZyYW1lLT5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgc2l6ZSA9IDA7CiAgICAgICAg
IHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201842</attachid>
            <date>2013-05-15 09:20:26 -0700</date>
            <delta_ts>2013-05-15 10:16:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515091921.patch</filename>
            <type>text/plain</type>
            <size>284509</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDc3
YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5MjgwMDU2OWUuLmRkMGEzNzI3NjJiMTY3OGI0
ZmExMDUwYWJlZWM1MTg2M2E0OGVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJh
bmdlKTsKIAotICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3Qt
PnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Us
IGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNDBj
NWZlNjkwMWI4OGQ0MmYyNGNhMDA5MzhkOTUxMTEyMzEyMmUwZS4uMWEwYmNiZGM5MjI4NTI1NjA5
YjNkZGY2NGM3ZTgxYTBlNjAzMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLAogICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQoY2xpcGJvYXJkKTsKICAgICBkYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAg
ZGF0YU9iamVjdC0+c2V0VGV4dChzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICBkYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNl
bGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9u
TG9jYWxVUkxzKSk7CiAgICAgaGVscGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2Fy
ZCwgY2FuU21hcnRDb3B5T3JEZWxldGUgPyBQYXN0ZWJvYXJkSGVscGVyOjpJbmNsdWRlU21hcnRQ
YXN0ZSA6IFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5jbHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDI3ZjFlZDg0YWI4
ODdlNzEzYjEyMmE2OGMyMDAxNjgxZGI0ZDY2OGQuLjk0Zjg2NWE0YTQ5NmFmOWMyNDBiNmRiMjRi
MGFiMjg1YjAxYjliZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBm
cmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdAogICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0ZWJvYXJkIHNjaGVtZV07CiAgICAgICAg
IC8vIENhbm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5sZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2
MjY2Mj4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMxNT4gYXJlIGZpeGVkLgogICAgICAgICBp
ZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5n
XTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmlj
YWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkgewpA
QCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYXRlIG5hdmlnYXRpb24s
IHNvIHdlIHNob3VsZG4ndCBhbGxvdyBhcmJpdHJhcnkgZmlsZSBVUkxzLgogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsbG93IG9ubHkgaHR0cCBmYW1pbHkgc2NoZW1lcywgb3IgYW55dGhp
bmcgbm9uLWxvY2FsPwogICAgICAgICBpZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0
dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBh
c3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29s
dXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgyLDcgKzE4Miw3IEBAIFN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0CiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICAgICAg
aWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxl
c1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmIGlzRGlyZWN0b3J5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGIzMTc0NzM0YzZk
NzdmMTJjNDczMDkwYzdhNjE3Yzk1ZjYwYmFkODIuLjEyOWE0ZDliOTU3MDYxMmY5ZGEzYmQ3Mzkx
OWMwZjE0ZTUyYjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewotICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXpl
U2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9h
cmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShub0JyZWFrU3Bh
Y2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIE5vZGUqIGNvbW1v
bkFuY2VzdG9yID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKElHTk9SRV9FWENFUFRJ
T04pOwogICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAgICAgTm9kZSogZW5jbG9zaW5nQW5j
aG9yID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNl
c3RvciksIEhUTUxOYW1lczo6YVRhZyk7CkBAIC0xODAsNyArMTgwLDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyaWJ1dGVkU3RyaW5nID0gbmlsOwotICAgIFJldGFpblB0cjxXZWJI
VE1MQ29udmVydGVyPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFtbV2ViSFRNTENvbnZlcnRlciBhbGxv
Y10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCku
Z2V0KCkpXSk7CisgICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFk
b3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKV0pOwogICAgIGlmIChjb252ZXJ0ZXIp
CiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbY29udmVydGVyLmdldCgpIGF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIApAQCAtMTg4LDExICsxODgsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQo
KS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7
CiAgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNsaWVudFR5cGVzKTsKIAogICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNsaWVudFR5cGVzLnNpemUoKTsgKytpKQogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY2xpZW50RGF0YVtp
XSwgY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAg
ICAKICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmw7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29j
b2FVUkwpOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IGZyYW1lLT5lZGl0b3Io
KS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29jb2FVUkwpOwogICAgIAogICAgIE5TU3Ry
aW5nICp0aXRsZSA9IChOU1N0cmluZyopdGl0bGVTdHI7CiAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
ID09IDApIHsKQEAgLTM4MCw3ICszODAsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQg
dG8gY2FsbCBpbnRvIHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCiAgICAgICAgIC8vIGNhbGxpbmcg
X3dlYl91c2VyVmlzaWJsZVN0cmluZyBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEg
c2l6YWJsZSB3ZWIgb2YgCiAgICAgICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhl
ciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3
YXkuCi0gICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcg
PSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0cmluZ10pOwogICAgICAgICBpZiAoW3N0cmluZyBsZW5ndGhdID4gMCkKICAg
ICAgICAgICAgIHJldHVybiBbc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1h
cHBpbmddOwogICAgIH0KQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aFJURihGcmFtZSogZnJhbWUsIE5TU3Ry
aQogICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gcmVzb3VyY2VzOwotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLmNs
aWVudCgpLT5kb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5nLCByZXNv
dXJjZXMpOwogCiAgICAgc2l6ZV90IHNpemUgPSByZXNvdXJjZXMuc2l6ZSgpOwogICAgIGlmIChz
aXplKSB7CkBAIC01MTMsNyArNTEzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQ
YXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgLy8gTm9uLWltYWdlIGZpbGUgdHlwZXM7IF93ZWJfdXNlclZpc2libGVTdHJpbmcgaXMgYXBw
cm9wcmlhdGUgaGVyZSBiZWNhdXNlIHRoaXMgd2lsbAogICAgICAgICAgICAgLy8gYmUgcGFzdGVk
IGFzIHZpc2libGUgdGV4dC4KLSAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhdGhzW2ldXSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdXJsID0gZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhz
W2ldXSk7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y3JlYXRlVGV4dE5vZGUodXJsKTsKICAgICAgICAgICAgIHJlZk5vZGVzVmVjdG9yLmFw
cGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBub2Rlc1ZlY3Rvci5hcHBlbmQodGV4
dE5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDFiZWNkYTMxM2Q4ZjlkMjcyNzQ1YWU1NDBkOGViMmU3MjYxZGUxOTQuLjU5N2Y3ZTE4
YWVmODViOWVlMjE0OThhYTM4NGFjYjJlMDlhOGNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIENsaXBib2Fy
ZFF0Ojp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFt
X3dyaXRhYmxlRGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwot
ICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCk7CisgICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIo
JyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJs
ZURhdGEtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggNTUwYWY3YWNlOTc1YzcxZTcwMzgzNjdhZDQ4
YzI1MWU4MWI0ZmQ5My4uNzI2NGMwOTRkMjVjNWNiMTdhNDE2NGRiZTlkODFlMzdhMDcwMDg3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCkKIHsKICAgICBRTWltZURhdGEqIG1kID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRl
eHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUlt
YWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJp
bmcgdGV4dCA9IHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNs
dWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRl
eHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRl
eHQodGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKaW5kZXggODc1MTk3ZmNkMDg0OWZkZThhZDAyNmI0YTM1YzU4Yjk2OGIxMzViYS4uMWVlODJm
ZDM5OTE5OWI3ZWQ1ZDk1NGQzYWI5NDFmODBjMzEyMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIENs
aXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1l
KQogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3Qt
PlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFs
RnJlZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0
cik7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7CkBAIC03NTks
NyArNzU5LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKIAogICAgIG1lZGl1bS5oR2xvYmFsID0gMDsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5j
YW5TbWFydENvcHlPckRlbGV0ZSgpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRD
b3B5T3JEZWxldGUoKSkKICAgICAgICAgbV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoc21h
cnRQYXN0ZUZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGUyZDcxZDE0YjI3NGFjNzgwMjFh
ZjU0NzU4YWI3NDEwNzk1ZTk2YjMuLmFjNzA2YzRjNTEwMDQyOTUxNTNlMTg1YjQxNDFkMmJjNjEy
ZmYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0KICAg
ICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RF
VEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0ciA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9y
Q2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7
CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDY1MmIxOGJkY2VlZTY0ZDYzNzk3MmNmMTIz
MzE0ZjhjNzI0NWJiOTkuLjc0MTA5ZTFmN2FlMzE3ZDdmMWViZmY1MDJmZDQ5MmUxZjU1NGNkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTY0MCw3
ICs2NDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXMoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5kaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAogTm9kZSogSGl0VGVzdFJlc3Vs
dDo6dGFyZ2V0Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggZjI2YzE5ZDcxZTVjODMxNWQ5ZTE4ZDViMzI5MTU2YTJkZWZiYzdjMi4u
NzAyNjk5NmNjMjFhODlhY2Q3ZDVlMzRjZDk3ZGM5Mzk3NWY0ODcwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJv
eFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdl
IGhhdmUgY29tcG9zaXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgotICAgIGJvb2wgY29udGFpbnND
b21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIGJv
b2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIo
KS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsK
KyAgICBib29sIGNvbnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVu
ZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIo
KS0+bm9kZSgpOworICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9z
aXRpb24gJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3Vz
dG9tVW5kZXJsaW5lcygpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IGNvbG9ycyBhbmQg
c2VsZWN0aW9uIGNvbG9ycy4KICAgICBDb2xvciB0ZXh0RmlsbENvbG9yOwpAQCAtNjU3LDggKzY1
Nyw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgICAgICBpZiAoY29udGFpbnNDb21w
b3NpdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcykKICAgICAgICAgICAgIHBhaW50Q29tcG9z
aXRpb25CYWNrZ3JvdW5kKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwKLSAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25T
dGFydCgpLAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5j
b21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCksCisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSk7CiAKICAgICAgICAgcGFpbnREb2N1
bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCB0cnVlKTsK
IApAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFp
bnREb2N1bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCBm
YWxzZSk7CiAKICAgICAgICAgaWYgKHVzZUN1c3RvbVVuZGVybGluZXMpIHsKLSAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCk7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
ID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxp
bmVzKCk7CiAgICAgICAgICAgICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6
ZSgpOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5k
ZXJsaW5lczsgKytpbmRleCkgewpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgIHRvUmVuZGVyZWREb2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJl
ZFJlY3QobWFya2VyUmVjdCk7CiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKICAgICAgICAgQ29s
b3IgY29sb3IgPSBtYXJrZXItPmFjdGl2ZU1hdGNoKCkgPwogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCBkZmI0ZWIxNTBiZDUyMGUyZDAzNjU1OGE2MGZmYTAwNzMxY2IyMTRlLi5kNzA5NjE2
NTZjZjdmMmEwZjJlYmM5YWM3ODA3OGUxYWRkYTMxODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTUyODYsNyArNTI4Niw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBM
YXlvdXRQb2luCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG1vdmVDYXJldFRvQm91bmRh
cnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRNb3Zl
Q2FyZXRUb0hvcml6b250YWxCb3VuZGFyeVdoZW5QYXN0VG9wT3JCb3R0b20oKTsKKyAgICBib29s
IG1vdmVDYXJldFRvQm91bmRhcnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJv
dHRvbSgpOwogCiAgICAgaWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYm
IGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyBsYXN0IHJvb3QgbGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTdlYTE1NTIzODIzNmYyZmMxYmJiZTkxNGNjMDU0NTNm
OTRjYTRhZS4uZTk0NWVmMzQ2NDAzZjE3MzllNjIxZTI5N2U1NGM2NTVkZTY2MGYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjM2LDEwICsyMzYsMTAgQEAgc3RhdGlj
IGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUKIAogc3RhdGljIFNwZWxsQ2hlY2tlciogc3BlbGxjaGVja2VyKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpKQorICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNwZWxsQ2hlY2tlcigpOworICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2VyKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIEludGVybmFsczo6aW50ZXJuYWxzSWQgPSAiaW50ZXJuYWxzIjsKQEAgLTI4NCwxMCArMjg0
LDEwIEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2Up
CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKCFw
YWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKTsKLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigp
LT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQor
ICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxs
Q2hlY2tpbmcoKTsKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjpo
YXNTcGVsbGluZ01hcmtlcihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3Ro
LCBFeGNlCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBs
ZW5ndGgpOworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgp
OwogfQogICAgIAogYm9vbCBJbnRlcm5hbHM6Omhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihE
b2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLAogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvcihEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCiB2
b2lkIEludGVybmFsczo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lkIEludGVybmFs
czo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpCiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50
KCktPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkICE9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgIGlmIChlbmFibGVkICE9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmKQpAQCAtMTQ1Miw4ICsxNDUyLDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlm
CkBAIC0xNDY1LDggKzE0NjUsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFi
bGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0NzgsOCArMTQ3OCw4IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC0xNDkxLDggKzE0OTEsOCBAQCB2b2lkIEludGVybmFsczo6c2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4
dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBA
IC0xNTA0LDggKzE1MDQsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZAogICAgICAgICByZXR1
cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVuYWJs
ZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAg
ICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0xNTE2
LDcgKzE1MTYsNyBAQCBib29sIEludGVybmFsczo6aXNPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVu
dC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsK
IH0KIAogdm9pZCBJbnRlcm5hbHM6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNTI0LDcgKzE1MjQsNyBAQCB2b2lkIElu
dGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJikKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT50b2dn
bGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKQEAgLTE2MTksNyArMTYxOSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNHcmFtbWFyTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGZyb20sIGxlbmd0aCk7CisgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
SW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGJl
ZWQyMDdiZTY0N2RiOGZmZGUyODMzNmJkYjMwNTIxMjU5ZmNlYzIuLmQ1MTUyZTAxMDI5MjVhNGMx
M2UwYzUyMTdkODIzNzI4ZTE4ZjE2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNo
b3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQoKQogICAgIH0KIAogICAgIC8vIENoZWNrIGlmIHRo
ZSBub2RlIGRpc2FibGVzIHNwZWxsIGNoZWNraW5nIGRpcmVjdGx5LgotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9k
ZSgpOwogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgd2UgYXJlIG5vdCB0cnlpbmcgdG8gaW5zZXJ0IHRleHQgb24ga2V5IGRv
d24uCi0gICAgQVNTRVJUKCEoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50ICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0SW5zZXJ0
aW9uKCkpKTsKKyAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmlzVGV4dElu
c2VydGlvbigpKSk7CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBIb3Qga2V5IGhhbmRsaW5nLiBDYW5jZWwgcHJvY2Vzc2luZyBtb2RlLgogICAgICAgICBp
ZiAoY29tbWFuZE5hbWUgIT0gIkRlbGV0ZUJhY2t3YXJkIikKICAgICAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5zZXRQcm9jZXNzaW5nQ2hhbmdlKGZhbHNlKTsKIAot
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhl
Y3V0ZSgpKQogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGV4dCBpbnNlcnRpb24gY29tbWFuZHMgc2hvdWxkIG9ubHkgYmUgdHJpZ2dlcmVkIGZy
b20ga2V5cHJlc3NFdmVudC4KQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGxhdGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQt
PnRleHQoKSwgZXZlbnQpKQorICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
cGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IGJlOTY0ODE5MDM5NGFlMTVm
NGFjNjE2OTI0NGViYjU3OTU3NTY2OTAuLjQwNDIxYzMyOWZhZDQ4YTBjNjkwOGZiYmYyZWY1OWU2
MTcwZjBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0RPTVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0RPTVN1cHBvcnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgQXR0cmlidXRlU3RhdGUg
ZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUKIAogYm9vbCBlbGVtZW50SGFzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudCkKIHsKLSAgICByZXR1
cm4gZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAogLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBpbnB1
dCBmaWVsZCB0aGF0IHdpbGwgYmUgZm9jdXNlZCAmIHJlcXVpcmUgaW5wdXQgc3VwcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUGFnZVNl
YXJjaE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKaW5kZXggYTMzODBiM2UzM2M4MGQ3NjZiMjE5NGM3NjMw
MWJhYzc5NjdmYjRlNy4uNDA5MWRhZTZmYzY5MmFkMDAzNDM0YjMwMjNjNTA3ZDA1NzEzM2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIElu
UGFnZVNlYXJjaE1hbmFnZXI6OnNob3VsZFNlYXJjaEZvclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogCiBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBGaW5kT3B0aW9ucyYg
b3B0aW9ucywgYm9vbCBpc05ld1NlYXJjaCwgYm9vbCBzdGFydEZyb21TZWxlY3Rpb24pCiB7Ci0g
ICAgaWYgKFJlZlB0cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmdB
bmRTY3JvbGxUb1Zpc2libGUodGV4dCwgcmFuZ2UsIG9wdGlvbnMpKSB7CisgICAgaWYgKFJlZlB0
cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlz
aWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgaGlnaGxp
Z2h0IHRvIHRoZSBuZXcgbWF0Y2guCiAgICAgICAgIHNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKG1h
dGNoKTsKICAgICAgICAgaWYgKGlzTmV3U2VhcmNoKSB7CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9v
bCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHNjb3BlU3Ry
aW5nTWF0Y2hlcyBkb2VzIG5vdCBhZGQgYW55IG1hcmtlcnMsIGl0IG9ubHkgY291bnRzIHRoZSBu
dW1iZXIuCiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bm1hcmtBbGxUZXh0TWF0Y2hl
cywgaXQgaXMgYWxyZWFkeSBkb25lIGZyb20gdGhlIGNhbGxlciBiZWNhdXNlIG9mIG5ld1NlYXJj
aAogICAgICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1h
cmtUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtCiAgICAgICAgICAg
ICAvLyBhbGwgbWF0Y2hlcyBidXQgY291bnQgdGhlbS4KICAgICAgICAgICAgIG1fd2ViUGFnZS0+
bV9wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwogICAgICAgICAgICAgbV9hY3RpdmVNYXRj
aC0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2
ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgcmVzZXQsIGJvbwogICAgICAgICAg
ICAgbV9hY3RpdmVNYXRjaEluZGV4ICs9IG1hdGNoQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAobV9oaWdobGlnaHRBbGxNYXRjaGVzKQotICAgICAgICAgICAgICAgIHNj
b3BpbmdGcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
dHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIHNjb3BpbmdGcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoQ291bnQgKz0gbWF0Y2hDb3VudDsKICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnVwZGF0ZUZpbmRTdHJpbmdSZXN1bHQobV9h
Y3RpdmVNYXRjaENvdW50LCBtX2FjdGl2ZU1hdGNoSW5kZXgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCmluZGV4IDMzM2QxMjRhM2I1NWU0ZDM3YjBmMmQxZmVjMjYzMzg3YzZjMWYy
ZmEuLjcwNmYxMDllNzRlMjdmYjk5NWE3MjYzNThlOTU2NTZmMTA0YjY5MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpj
YW5jZWxTZWxlY3Rpb24oKQogCiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIFNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICByZXR1
cm4gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCk7CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcHBpbmdSZWN0
Rm9yVmlzaWJsZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXgg
ZDBjZTM4YTJmZmRhN2ZjNjMwYWM0NmNkY2YxNTVhOGQzMWEwYTMwYS4uMjI0YTRiNzBjN2EyZjc3
Mzc3MDBhMmMxZDc0ZTEzZTQwZjc4YWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrVmkKIHsKICAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFt
ZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQog
CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc0NvbW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zCiB7CiAg
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwog
Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFu
ZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmZvcmNlTGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU1MCwxNCArNTUwLDE0IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
IHx8ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVk
aXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkp
KQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0
KCkgJiYgIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHRleHQpOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAg
ICB1bmRlcmxpbmVzLmFwcGVuZChXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21w
b3NpdGlvblN0cmluZy5sZW5ndGgoKSwgV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
Ci0gICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5l
cywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKKyAgICBlZGl0b3Iuc2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIHN0YXJ0LCBzdGFydCArIGxlbmd0aCk7CiB9CiAK
IGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbihjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTU2NywxMSArNTY3LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkgfHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Y29uc3QgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpOwor
ICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0
LCBpbnQqIGxlbmd0aCkKQEAgLTU4MywxMiArNTc5LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0
YXJ0CiAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgKnN0YXJ0ID0gZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCk7Ci0gICAgKmxlbmd0aCA9IGVk
aXRvci0+Y29tcG9zaXRpb25FbmQoKSAtICpzdGFydDsKKyAgICAqc3RhcnQgPSBlZGl0b3IuY29t
cG9zaXRpb25TdGFydCgpOworICAgICpsZW5ndGggPSBlZGl0b3IuY29tcG9zaXRpb25FbmQoKSAt
ICpzdGFydDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTk5LDQwICs1OTUsMzcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2gKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8
ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRv
cikKLSAgICAgICAgcmV0dXJuOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAotICAg
IGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVkaXRvci0+aW5zZXJ0
VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21w
b3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgo
dGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRleHQpIHsKLSAg
ICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7
CisgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRp
b24oKTsKKyAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIFdlYkNvcmU6Oklu
dFJlY3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIFdlYkNvcmU6Oklu
dFJlY3QoKSk7CiAKLSAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8ICFwYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgfHwgIXBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOwogCiAgICAg
aWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgp
KQogICAgICAgICBsZW5ndGggPSAwOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsKIAotICAgIHJldHVybiBlZGl0b3ItPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpcnN0
UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGlu
dCogbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAKaW5kZXggOTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQw
YmEyYjQ5Yy4uMjRkYTUxZGQ2YzEzNDc2ZTdkNzNmYzZjZDhkNWQ0MWU2YjQzMzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihGcmFtZSogY29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlm
IChjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSA9IEVXS1ByaXZh
dGU6OmtpdEZyYW1lKGNvcmVGcmFtZSk7CiAgICAgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQod2ViRnJhbWUpOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Y2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOworICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudEVmbDo6ZGlkRW5kRWRpdGluZygpCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsK
KyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0
aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJl
YXRlZCwKQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQg
Y2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNh
biByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKQEAgLTM0OCw3ICszNDgsNyBAQCBib29s
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtl
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwg
ZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXgg
ZjRkM2MwZTRmMTNlZjc4YjlmYjExMWZjY2RjYzY5MDY3NjVmNzkwZC4uY2NmN2U1MDJmN2JjNTU5
ZWVhMGZlODY3Zjk2NWU4NGZlMmI3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgc21hcnREYXRhLT5lZGl0YWJsZSA9IGVkaXRhYmxlOwogICAgIGlmIChlZGl0
YWJsZSkKLSAgICAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDg4LDcgKzQ4OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVk
VGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2Vs
ZWN0ZWRUZXh0LmRhdGEoKSk7CkBAIC01MDAsNyArNTAwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRl
eHQsIEUKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxz
ZSk7CiAKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmco
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFw
LCB0cnVlKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmlu
ZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdy
YXAsIHRydWUpOwogfQogCiB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJr
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZVNlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQpAQCAt
NTA5LDggKzUwOSw4IEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmso
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDApOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsK
LSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0
LCB0cnVlLCAwKTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJh
bWUpCkBAIC01MjYsNyArNTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbAogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCku
c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC01MzQsNyArNTM0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBmM2ZhOGUxYTIyMjNiNGM5MWE3NTA0MDY3YzZm
ZWEzNWE3YmRhOGRiLi40YThhYWYzMzg0Nzg2Y2RlNjExNDkxMDNmODA0NDNjMGYxYTIyMzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTE2NjgsNyArMTY2OCw3IEBAIGNvbnN0
IGNoYXIqIGV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwot
ICAgIENTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgQ1N0cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgp
OwogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfZXhl
Y3V0ZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrXwogICAgIGlmICghY29t
bWFuZFN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
KTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0
X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCkBAIC00MTAyLDExICs0MTAyLDExIEBAIHZvaWQgZXdr
X3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVGV4dF9E
aXJlY3Rpb24gZGlyZWN0CiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsK
LSAgICBpZiAoIWVkaXRvci0+Y2FuRWRpdCgpKQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9y
ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oc3Rh
dGljX2Nhc3Q8V3JpdGluZ0RpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgZWRpdG9yLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKHN0YXRpY19jYXN0PFdyaXRpbmdEaXJlY3Rpb24+KGRpcmVjdGlv
bikpOwogfQogCiB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlv
dXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA5YTUyZTdmNTE2ZGM4MjZkNjBl
ZWEzMjM0NjI0NGY1YzFkYjM3MWY0Li45YjUzOGM0MmM2NTM2ZGQxODM5NWZjM2VmYzMwNzczMTg5
ODlkOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6
cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgLy8gc3luY2VkIHdpdGgg
Y3Vyc29yIG1vdmVtZW50LiBGb3IgaW5zdGFuY2UsIGEgdGV4dCBmaWVsZCBjYW4gbW92ZSB3aXRo
b3V0CiAgICAgLy8gdGhlIHNlbGVjdGlvbiBjaGFuZ2luZy4KICAgICBGcmFtZSogZm9jdXNlZEZy
YW1lID0gY29yZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5zZXRDdXJzb3JS
ZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMmEzZDRjZTc3ZjlhOGI3M2U2M2YxZGZkMjQ0M2Mz
NTY1MmJjMjUzNS4uMzIzZjJlNWYwOTEzZDgyODVjMGVmMWM3MzljNGUyNmMwNDA5NzQxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OworICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUpCkBAIC0yODQsNyArMjg0LDcgQEAgYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldyksIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAg
ICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgY2hhciogdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5k
ZXggNTdmYWNhZjMxMTAzOTlhNWFjYjA2NDVlNzBkYzkyOTI0NWU3YWE0Ni4uNTA5MDkwNDczMWM0
OTczMGY3YzZlOWViMTA1ZWNhODY1MjFkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNTUsNyArMjU1LDcg
QEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lKQogICAgIHNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChtX3dlYlZpZXcp
OwogI2VuZGlmCiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbklm
U2VsZWN0aW9uSXNJbnZhbGlkKCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21w
b3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCiAgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+
aW1GaWx0ZXIucmVzZXRDb250ZXh0KCk7CiB9CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIEVk
aXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJv
b2wgYWxsb3dUZXh0SW5zZQogewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRz
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24p
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMg
aWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgewor
ICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAg
dm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVz
IHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkK
KyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFRoaXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBl
eGVjdXRlIHRoZSBpbnNlcnRpb24KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxh
dGZvcm1FdmVudC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3Jt
RXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4
dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDMzOTg5MTFl
ZGQ5MGQ5OTFiOWZhMmYyMDg2NGZiNmQzMzliMTY0NWEuLjk4NzdmY2ExOTZmNjljNDU4ZWEyMTVj
ZDk2OTM0ZDUyZWFmOTI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0V2ViVmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbkVkaXQo
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVy
biBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gZnJhbWUg
JiYgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogYm9vbCBXZWJWaWV3SW5wdXRNZXRo
b2RGaWx0ZXI6OnNlbmRTaW1wbGVLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQsIFdURjo6U3Ry
aW5nIHNpbXBsZVN0cmluZywgRXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uKQpAQCAtNzYsNDIgKzc2
LDQyIEBAIGJvb2wgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZW5kS2V5RXZlbnRXaXRoQ29t
cG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBlCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4dChTdHJpbmcgdGV4dCkKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCku
Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGV4dC5pc051bGwoKSkgewog
ICAgICAgICBjb25maXJtQ3VycmVudENvbXBvc2l0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRD
b21wb3NpdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihtX2Nv
bmZpcm1lZENvbXBvc2l0aW9uKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6
OmNvbmZpcm1DdXJyZW50Q29tcG9zaXRpb24oKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2Fu
RWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbmNlbEN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAg
ICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9z
aXRpb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNldFByZWVkaXQo
U3RyaW5nIG5ld1ByZWVkaXQsIGludCBjdXJzb3JPZmZzZXQpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRv
cigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVk
aXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHBhcnNlIHRo
ZSBQYW5nb0F0dHJMaXN0IHRoYXQgd2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQgaGVyZS4KICAg
ICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5l
cy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgbmV3UHJlZWRpdC5sZW5ndGgoKSwgQ29s
b3IoMSwgMSwgMSksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlv
bihuZXdQcmVlZGl0LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxp
bmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmlu
ZGV4IDMzNDYxNjRkOGM2NTU5Y2I4YzkxMDJkMmFiZmFhMDk1NGI1Yzg0ODkuLjE2M2Y2ZjBiYzU1
NjUzNjM4NmEyYjlhNDQ1N2M3Yjg5OGMzNWYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmZyYW1lLmNwcApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX2ZyYW1lX3JlcGxhY2Vfc2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Y2hhciogdGV4dCkKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CiAgICAgYm9v
bCBzZWxlY3RSZXBsYWNlbWVudCA9IGZhbHNlOwogICAgIGJvb2wgc21hcnRSZXBsYWNlID0gdHJ1
ZTsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4
dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNt
YXJ0UmVwbGFjZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCmluZGV4IDA3NjY2YmU2YWRhMDIyOTUyZTRmNjhmZTM1ZWFmZTQ4MDg1NjY4OGQu
LmM1ODJiNjY5NmNkYWMwZjIwYWY3YjI5YWE4NjQ3OTljNTEwYzU4ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0
aWMgSW50UG9pbnQgZ2V0TG9jYXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KEZy
YW1lKiBmcmFtZSkKICAgICAvLyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UgY2Fu
IHJldHVybiAwIGhlcmUsIGJ1dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQogICAgIC8vIHNlbGVjdGlv
bi0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxkIGhhdmUgcmV0
dXJuZWQgZmFsc2UKICAgICAvLyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaXQu
Ci0gICAgSW50UmVjdCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKKyAgICBJbnRS
ZWN0IGZpcnN0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rp
b24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIEludFBvaW50
KGZpcnN0UmVjdC54KCksIGZpcnN0UmVjdC5tYXhZKCkpOwogfQogCkBAIC05MzgsNyArOTM4LDcg
QEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyoKICAgICBlbHNlCiAgICAgICAgIGZvY3VzQ29udHJv
bGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKIAotICAg
IGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgp
KQorICAgIGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmltRmlsdGVyLm5vdGlmeUZvY3VzZWRJbigp
OwogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTExODEsMzEgKzExODEs
MzEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2Fn
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19yZWFsX3NlbGVjdF9hbGwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRl
KCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldykt
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiB9CiAKIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3VuZG8oV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJV
bmRvIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhl
Y3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJf
dmlld19yZWFsX21vdmVfY3Vyc29yIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtNb3ZlbWVu
dFN0ZXAgc3RlcCwgZ2ludCBjb3VudCkKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR3RrTW92CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlw
Ym9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24oV2ViS2l0
V2ViVmlldyopCkBAIC00Mzg5LDcgKzQzODksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRf
aGlnaGxpZ2h0X3RleHRfbWF0Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbgog
CiAgICAgRnJhbWUgKmZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZG8g
ewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKICAgICAgICAgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7CiAgICAgfSB3
aGlsZSAoZnJhbWUpOwogfQpAQCAtNDQ1OSw3ICs0NDU5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAK
ICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCkg
fHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuY2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCk7CiB9CiAKIC8q
KgpAQCAtNDQ3NSw3ICs0NDc1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jb3B5
X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkNvcHkoKSB8fCBmcmFtZS0+ZWRp
dG9yKCktPmNhbkRIVE1MQ29weSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ29w
eSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKTsKIH0KIAogLyoqCkBAIC00NDkx
LDcgKzQ0OTEsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Bhc3RlX2NsaXBib2Fy
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5ESFRNTFBhc3RlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpIHx8
IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTFBhc3RlKCk7CiB9CiAKIC8qKgpAQCAtNDU0Nyw3ICs0
NTQ3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGVsZXRlX3NlbGVjdGlvbihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZv
cm1EZWxldGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwogfQogCiAv
KioKQEAgLTQ2MjksNyArNDYyOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJs
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoZnJhbWUpOwogCiAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRv
cigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAvLyBUT0RPOiBJ
ZiB0aGUgV2ViS2l0V2ViVmlldyBpcyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2VsZWN0aW9uIGlz
IGVtcHR5LCBzZXQgaXQgdG8gc29tZXRoaW5nLgogICAgICAgICAvL2lmICghd2Via2l0X3dlYl92
aWV3X2dldF9zZWxlY3RlZF9kb21fcmFuZ2Uod2ViVmlldykpCiAgICAgICAgIC8vICAgIG1haW5G
cmFtZS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTUwOTAsNyArNTA5MCw3IEBAIGdib29s
ZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0Up
OwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLyoqCkBA
IC01MTI1LDcgKzUxMjUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3JlZG8oV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3Io
KS5jYW5SZWRvKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggNmQzYzZiMGZhNWQ2MjFjMjgzNmNjMGM2NGY4ZjYxYTNiMjk3ZmU2MC4uYTAzNTRiNDI1
MGYzM2U5Njg4MDRkYTJhYzExMTA2YjQ5ZTcxMDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC00OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TU3RyaW5nICop
X3NlbGVjdGVkU3RyaW5nCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxh
eVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFRleHQoKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJhbmdlOihET01S
YW5nZSAqKXJhbmdlCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TUmVjdClfZmly
c3RSZWN0Rm9yRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsKLSAgIHJldHVybiBfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShyYW5nZSkpOwor
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdl
KGNvcmUocmFuZ2UpKTsKIH0KIAogLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERP
TVJhbmdlICopcmFuZ2UKQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFT
b3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoRE9NUmFuZ2Ug
KilfbWFya0RPTVJhbmdlCiB7Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
ZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIHJldHVybiBr
aXQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOwogfQogCiAvLyBHaXZlbiBwcm9wb3NlZFJhbmdlLCByZXR1cm5zIGFuIGV4dGVu
ZGVkIHJhbmdlIHRoYXQgaW5jbHVkZXMgYWRqYWNlbnQgd2hpdGVzcGFjZSB0aGF0IHNob3VsZApA
QCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJj
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRl
bnQoKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKIH0KIAogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNp
YmxlUG9zaXRpb25Gb3JQb2ludDooTlNQb2ludClwb2ludApAQCAtNzc1LDcgKzc3NSw3IEBAIHN0
YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSB8fCAhc3R5bGUpCiAgICAgICAgIHJl
dHVybjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRlIGEgY29weSBo
ZXJlLgotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wdXRlQW5kU2V0VHlw
aW5nU3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24p
OworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRTZXRUeXBpbmdT
dHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtOTI4LDcgKzkyOCw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwg
IWZyYWdtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRp
dG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVj
dFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOworICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFn
bWVudCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOwogfQog
CiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxl
Y3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wp
c21hcnRSZXBsYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDM3NmRmOWI4NDg0MGJmMjg3Y2M5YzE1OWM2ZDBkNDBlM2Fh
ZTlkMWMuLmQ2MTIwYWU5MWQ3ZTYwNjc2OGE1N2E5OTY2NDJmNGE3NGMwOTEyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBA
IC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJheUJ5Q29uY2F0
ZW5hdGluZ0FycmF5cyhOU0FycmF5ICpmaXJzdCwgTlNBcnJheSAqc2UKICAgICAgICAgcmV0dXJu
OwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CiAgICAgaWYgKFt3
ZWJWaWV3IG1haW5GcmFtZV0gPT0gd2ViRnJhbWUgJiYgW3dlYlZpZXcgaXNFZGl0YWJsZV0pCi0g
ICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCk7CisgICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdT
dHlsZVRvQm9keUVsZW1lbnQoKTsKIH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3Vy
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDhmZjY1YWIw
MDNlNzUzNDFhMjcwNWI5ZTgxMTlkMzRiMjc1NGNmOWUuLmUxNjY5ZDdhODkyNDZhNTlhNjdlMGJj
M2IyNWFkOGI0YWNjOWQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtODY0LDcgKzg2NCw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0
aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0g
W3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4
dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgaWYgKGZyYWdtZW50
ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5n
ZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkKLSAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2Vs
ZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCks
IFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2Up
OwogI2Vsc2UKICAgICAvLyBNYWlsIGlzIGlnbm9yaW5nIHRoZSBmcmFtZW50IHBhc3NlZCB0byB0
aGUgZGVsZWdhdGUgYW5kIGNyZWF0ZXMgYSBuZXcgb25lLgogICAgIC8vIFdlIHdhbnQgdG8gYXZv
aWQgY3JlYXRpbmcgdGhlIGZyYWdtZW50IHR3aWNlLgpAQCAtODcyLDEyICs4NzIsMTIgQEAgc3Rh
dGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBh
cnQpCiAgICAgICAgIGlmIChbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6bmlsIHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKSB7
CiAgICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1
bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxs
b3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICAgICAgaWYgKGZyYWdtZW50KQot
ICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3Jl
KGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9h
cmRdLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFz
RnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVi
b2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogICAgICAgICB9ICAgICAgICAKICAgICB9IGVsc2Ug
ewogICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVu
dEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQ
bGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYg
X3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdp
dmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2Fu
U21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBb
c2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsK
ICAgICB9CiAjZW5kaWYKICAgICBbd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxd
OwpAQCAtOTgzLDcgKzk4Myw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZl
UGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogLSAoQk9PTClfc2hvdWxkRGVsZXRlUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2UKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZERlbGV0ZVJhbmdlKGNvcmUocmFuZ2UpKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkpOwogfQogCiAt
IChOU1ZpZXcgKilfaGl0Vmlld0ZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTE3NTgsMTMg
KzE3NTgsMTMgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNF
dmVudCAqZXZlbnQpCiAtIChCT09MKV9jYW5FZGl0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogLSAoQk9PTClfY2FuRWRpdFJpY2hseQogewogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3Jl
RnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgIHJldHVy
biBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiB9CiAK
IC0gKEJPT0wpX2NhbkFsdGVyQ3VycmVudFNlbGVjdGlvbgpAQCAtMTgyNCw1MCArMTgyNCw1MCBA
QCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVu
dCkKIC0gKERPTU5vZGUgKilfaW5zZXJ0T3JkZXJlZExpc3QKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydE9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRPcmRlcmVk
TGlzdCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbnNlcnRVbm9yZGVyZWRM
aXN0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAg
cmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRVbm9yZGVy
ZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZy
YW1lLT5lZGl0b3IoKS5pbnNlcnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOwogfQogCiAt
IChCT09MKV9jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKIH0KIAogLSAoQk9PTClfY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkRlY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRv
cigpLmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CiB9CiAKIC0gKERPTU5vZGUgKilf
aW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCkuZ2V0KCkpIDogbmlsOworICAg
IHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbmNyZWFz
ZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdldCgpKSA6IG5p
bDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01O
b2RlICopX2luY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkCiB7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/
IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3Jk
ZXJlZCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKS5nZXQoKSkg
OiBuaWw7CiB9CiAKIC0gKHZvaWQpX2RlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKGNvcmVGcmFt
ZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2
ZWwoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5kZWNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbCgpOwogfQogCiAtICh2b2lkKV9zZXRIaWdobGlnaHRlcjooaWQ8V2ViSFRNTEhpZ2hsaWdo
dGVyPiloaWdobGlnaHRlciBvZlR5cGU6KE5TU3RyaW5nKil0eXBlCkBAIC0yMzU5LDcgKzIzNTks
NyBAQCBzdGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNlbGVjdG9yKQog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3Rv
cikpOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVG
b3JTZWxlY3RvcihzZWxlY3RvcikpOwogfQogCiAtIChFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1h
bmRCeU5hbWU6KGNvbnN0IGNoYXIqKW5hbWUKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHN0YXRpYyBT
dHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChuYW1lKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKG5hbWUpOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNF
TClzZWxlY3RvcgpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRT
ZWxlY3QpCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVt
OwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3Nd
XSkgewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAg
ICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAgICAgICAgW21lbnVJdGVt
IHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURp
cmVjdGlvbiwgZGlyZWN0aW9uKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9j
YW5FZGl0XTsKICAgICB9CkBAIC0yNjEwLDcgKzI2MTAsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFu
a0FuZFNlbGVjdCkKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJ
dGVtIGNsYXNzXV0pIHsKICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUg
b2YgdGhlIG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBi
ZWNhdXNlCiAgICAgICAgICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAg
ICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIikKKyAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sICJydGwiKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0
IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAg
ICAgICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExl
ZnQgY29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0KQEAgLTI2NDEsMTEgKzI2NDEsMTEg
QEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBbc2VsZiBf
aGFzU2VsZWN0aW9uXTsKICAgICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZTop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1BsYWluVGV4dDopKQotICAgICAgICByZXR1
cm4gZnJhbWUgJiYgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuUGFzdGUoKSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVk
aXRvcigpLmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSk7CiAg
ICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1JpY2hUZXh0OikpCi0gICAg
ICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkKLSAg
ICAgICAgICAgIHx8IChmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVj
dGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSk7CisgICAgICAgIHJldHVybiBmcmFt
ZSAmJiAoZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKQorICAgICAgICAgICAgfHwgKGZy
YW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50
UmljaGx5RWRpdGFibGUoKSkpOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBl
cmZvcm1GaW5kUGFuZWxBY3Rpb246KSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtMzgwMyw3ICsz
ODAzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJk
RXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBfcHJpdmF0ZS0+X2ZvcmNlVXBkYXRlU2VjdXJl
SW5wdXRTdGF0ZSA9IE5POwogCiAgICAgLy8gRklYTUU6IEtpbGwgcmluZyBoYW5kbGluZyBpcyBt
b3N0bHkgaW4gV2ViQ29yZSwgc28gdGhpcyBjYWxsIHNob3VsZCBhbHNvIGJlIG1vdmVkIHRoZXJl
LgotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUp
OworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7
CiAKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC00
MjMxLDcgKzQyMzEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50
S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0g
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIKLSAgICAgICAg
YXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250QXR0cmlidXRl
c0ZvclNlbGVjdGlvblN0YXJ0KCkgOiBuaWxdOworICAgICAgICBhdHRyaWJ1dGVzOmNvcmVGcmFt
ZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgp
IDogbmlsXTsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIFtz
dHJpbmcgcmVsZWFzZV07CiAgICAgcmV0dXJuIGRhdGE7CkBAIC00MzU5LDcgKzQzNTksNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFt
ZSogY29yZUZyYW1lKQogewogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBh
IGNvcHkgaGVyZS4gV2Ugd2FudCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gd29yayBkaXJl
Y3RseSB3aXRoIFN0eWxlUHJvcGVydHlTZXQgZXZlbnR1YWxseS4KLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVy
dGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5h
cHBseVN0eWxlVG9TZWxlY3Rpb24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCks
IHVuZG9BY3Rpb24pOwogICAgIH0KIH0KIApAQCAtNDY2MSw3ICs0NjYxLDcgQEAgc3RhdGljIFBh
c3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKICAgICBpZiAoW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZp
ZXc6d2ViVmlldyBzaG91bGRBcHBseVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOnJh
bmdlXSkgewogICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEg
Y29weSBoZXJlLgotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShj
b3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgW3NlbGYgX3VuZG9BY3Rpb25Gcm9t
Q29sb3JQYW5lbFdpdGhTZWxlY3RvcjpzZWxlY3Rvcl0pOworICAgICAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5hcHBseVN0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgp
LCBbc2VsZiBfdW5kb0FjdGlvbkZyb21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3NDgsNyArNDc0OCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUp
CiAgICAgQ09NTUFORF9QUk9MT0dVRQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoKTsKIH0KIAogLSAodm9pZClzaG93R3Vlc3NQYW5lbDooaWQpc2VuZGVy
CkBAIC00NzY4LDcgKzQ3NjgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBj
dXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KICAgICAKICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAg
W3NwZWxsaW5nUGFuZWwgb3JkZXJGcm9udDpzZW5kZXJdOwogfQogCkBAIC00ODM2LDcgKzQ4MzYs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVu
dChGcmFtZSogY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBXcml0aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICBzd2l0Y2gg
KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3Rh
cnQoKSkgeworICAgIHN3aXRjaCAoY29yZUZyYW1lLT5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0KCkpIHsKICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb246CkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQog
ICAgIH0KIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkK
LSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGly
ZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVj
dGlvbihkaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9u
OihpZClzZW5kZXIKQEAgLTQ4NjcsNyArNDg2Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJv
YXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQVNT
RVJUKHdyaXRpbmdEaXJlY3Rpb24gIT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk7CiAKICAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rp
b24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdE
aXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0g
TlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rp
b24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBzdGF0aWMgQk9PTCB3cml0
aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKQEAgLTQ4ODgsNyArNDg4OCw3IEBAIHN0
YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIH0KIAog
ICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uID09
IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0
aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRv
TGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKW1ha2VCYXNlV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0OihpZClzZW5kZXIKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHN0YXRpYyBC
T09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGJvb2wgbXVsdGlw
bGVGb250cyA9IGZhbHNlOwogICAgIE5TRm9udCAqZm9udCA9IG5pbDsKICAgICBpZiAoRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBmZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRGb3JTZWxlY3Rpb24o
bXVsdGlwbGVGb250cykpCisgICAgICAgIGlmIChjb25zdCBTaW1wbGVGb250RGF0YSogZmQgPSBj
b3JlRnJhbWUtPmVkaXRvcigpLmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCiAgICAg
ICAgICAgICBmb250ID0gZmQtPmdldE5TRm9udCgpOwogICAgIH0KIApAQCAtNTU2Myw3ICs1NTYz
LDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoMCwgMCk7Ci0gICAgTlNSYW5nZSByZXN1bHQg
PSBbd2ViRnJhbWUgX2NvbnZlcnRUb05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tcG9z
aXRpb25SYW5nZSgpLmdldCgpXTsKKyAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJGcmFtZSBfY29u
dmVydFRvTlNSYW5nZTpjb3JlRnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQo
KV07CiAKICAgICBMT0coVGV4dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1
bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjA3
LDEyICs1NjA3LDEyIEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0Vu
YWJsZWQoKQogLSAoQk9PTCloYXNNYXJrZWRUZXh0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgQk9PTCByZXN1bHQgPSBjb3JlRnJhbWUgJiYgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBCT09MIHJlc3VsdCA9IGNv
cmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBp
ZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIEEgc2F2ZWQgY29tbWFuZCBjYW4gY29uZmlybSBhIGNv
bXBvc2l0aW9uLCBidXQgaXQgY2Fubm90IHN0YXJ0IGEgbmV3IG9uZS4KICAgICAgICAgW3NlbGYg
X2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwotICAgICAgICByZXN1bHQgPSBjb3JlRnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgICAgICByZXN1bHQgPSBjb3JlRnJh
bWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgTE9HKFRleHRJbnB1
dCwgImhhc01hcmtlZFRleHQgLT4gJXUiLCByZXN1bHQpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAg
c3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQog
ICAgIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2
b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbmU+JiByZXN1bHQpCkBAIC01NzAyLDcgKzU3MDIsNyBAQCBzdGF0
aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9
IE5TTm90Rm91bmQpCiAgICAgICAgIFtbc2VsZiBfZnJhbWVdIF9zZWxlY3ROU1JhbmdlOnJlcGxh
Y2VtZW50UmFuZ2VdOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
dGV4dCwgdW5kZXJsaW5lcywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2Vs
UmFuZ2UpKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVu
ZGVybGluZXMsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7
CiB9CiAKIC0gKHZvaWQpZG9Db21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCkBAIC01NzIw
LDcgKzU3MjAsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogCiAgICAgLy8gQXMgaW4gaW5z
ZXJ0VGV4dDosIHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsIGNvbWVzIGZyb20gYW4gaW5wdXQgbWV0
aG9kIGlmIHRoZXJlIGlzIG1hcmtlZCB0ZXh0LgogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1l
ID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29y
ZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9v
bCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhh
c0NvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1hbmQgJiYg
IWlzRnJvbUlucHV0TWV0aG9kKQogICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFw
cGVuZChLZXlwcmVzc0NvbW1hbmQoTlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CkBA
IC01Nzc0LDcgKzU3NzQsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIFJlZlB0cjxG
cmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU1N0cmluZyAqdGV4
dDsKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsKLSAg
ICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9y
KCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVG
cmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBWZWN0
b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwog
ICAgIGlmIChpc0F0dHJpYnV0ZWRTdHJpbmcpIHsKQEAgLTU4MTAsNyArNTgxMCw3IEBAIHN0YXRp
YyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNv
cmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghY29y
ZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKQEAg
LTU4MTksMTcgKzU4MTksMTcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBib29sIGV2
ZW50SGFuZGxlZCA9IGZhbHNlOwogICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2
ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBz
YW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGlmICgh
Y29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmICghY29yZUZy
YW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRl
eHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYg
d2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIg
dGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgogCiAgICAgICAgIGlmICgh
ZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZl
bnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50
VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAgICAgICAg
IGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KGV2
ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5z
ZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVs
c2UgewogICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwotICAgICAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKHBhcmFtZXRlcnMpCkBAIC01ODg0LDE1ICs1ODg0LDE1IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAKICAgICBbc2VsZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAKLSAgICBp
ZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkgfHwgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAgICBpZiAoIWNv
cmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVkaXRvcigp
Lmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHVuc2lnbmVkIHN0YXJ0OwogICAgIHVuc2lnbmVkIGVuZDsKLSAgICBpZiAoY29yZUZyYW1l
LT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCisgICAgaWYg
KGNvcmVGcmFtZS0+ZWRpdG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkp
CiAgICAgICAgIFtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4
dFNlbGVjdGlvbkNoYW5nZWQ6TlNNYWtlUmFuZ2Uoc3RhcnQsIGVuZCAtIHN0YXJ0KSBjbGllbnQ6
c2VsZl07CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENv
bXBvc2l0aW9uKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRp
b24oKTsKICAgICAgICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJr
ZWRUZXh0QWJhbmRvbmVkOnNlbGZdOwogICAgIH0KIH0KQEAgLTYwNjAsNyArNjA2MCw3IEBAIHN0
YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoc3RyaW5nLCBjb3JlKHJhbmdlKSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxpbWl0LCBtYXJr
TWF0Y2hlcywgMCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVz
Rm9yVGV4dChzdHJpbmcsIGNvcmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQs
IG1hcmtNYXRjaGVzLCAwKTsKIH0KIAogLSAodm9pZClzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhp
Z2hsaWdodGVkOihCT09MKW5ld1ZhbHVlCkBAIC02MDY4LDEzICs2MDY4LDEzIEBAIHN0YXRpYyB2
b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKG5ld1ZhbHVlKTsK
KyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQobmV3VmFsdWUpOwogfQogCiAtIChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0
ZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBy
ZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRp
dG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAtICh2b2lkKXVu
bWFya0FsbFRleHRNYXRjaGVzCkBAIC02MTEwLDcgKzYxMTAsNyBAQCBzdGF0aWMgdm9pZCBleHRy
YWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZQogICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQogICAgICAgICByZXR1cm4gTk87CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9w
dGlvbnMob3B0aW9ucykpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0
b3IoKS5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWY4MWUzYjdhYjU4MTEyMTcw
NjhjMzhhOGNlMTlhZTQ1NjA0YjU3MS4uODA1Y2RiOTAwZTFmY2M5OTY4ZjQ5MzE4ODI0NGUyODcx
NmQ4NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQyNyw3ICsy
NDI3LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKG5h
bWUpLmV4ZWN1dGUodmFsdWUpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChuYW1l
KS5leGVjdXRlKHZhbHVlKTsKIH0KIAogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplclRp
bWVEZWxheTooZG91YmxlKXRpbWVEZWxheQpAQCAtNTM4Miw3ICs1MzgyLDcgQEAgc3RhdGljIE5T
QXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGoKICAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUo
KS0+ZWRpdG9yKCktPnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBv
aW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOworICAgIHJldHVybiBraXQocGFnZS0+bWFpbkZyYW1l
KCktPmVkaXRvcigpLnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBv
aW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOwogfQogCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5n
ZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9u
QWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZwpAQCAtNTQ0Myw3ICs1NDQzLDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxm
IF9tYWluQ29yZUZyYW1lXTsKICAgICAgICAgaWYgKG1haW5GcmFtZSkgewogICAgICAgICAgICAg
aWYgKGZsYWcpIHsKLSAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5hcHBseUVk
aXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVk
aXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAg
IC8vIElmIHRoZSBXZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMg
ZW1wdHksIHNldCBpdCB0byBzb21ldGhpbmcuCiAgICAgICAgICAgICAgICAgaWYgKCFbc2VsZiBz
ZWxlY3RlZERPTVJhbmdlXSkKICAgICAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5zZWxlY3Rp
b24oKS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTU3MzAsNyArNTczMCw3IEBAIHN0YXRp
YyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVj
dGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsK
ICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVT
ZWxlY3Rpb25XaXRoU21hcnREZWxldGUoWyhXZWJIVE1MVmlldyAqKVtbd2ViRnJhbWUgZnJhbWVW
aWV3XSBkb2N1bWVudFZpZXddIF9jYW5TbWFydENvcHlPckRlbGV0ZV0pOworICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxW
aWV3ICopW1t3ZWJGcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9y
RGVsZXRlXSk7CiB9CiAgICAgCiAtICh2b2lkKWFwcGx5U3R5bGU6KERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilzdHlsZQpAQCAtNTc0MSw3ICs1NzQxLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERl
c2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGoKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgaWYgKGNvcmVGcmFt
ZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+
Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBw
bHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CiB9CiAKIEBlbmQK
QEAgLTU3ODgsNyArNTc4OCw3IEBAIEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJE
KQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZy
YW1lXSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgcmV0dXJu
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOwog
ICAgIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC01ODMyLDcgKzU4MzIsNyBAQCBGT1JfRUFDSF9S
RVNQT05ERVJfU0VMRUNUT1IoRk9SV0FSRCkKICAgICBOb2RlKiBjb3JlU3RhcnROb2RlPSBjb3Jl
KHN0YXJ0Tm9kZSk7CiAgICAgaWYgKGNvcmVTdGFydE5vZGUtPmRvY3VtZW50KCkgIT0gY29yZUZy
YW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNpbXBsaWZ5TWFya3VwKGNvcmVTdGFydE5vZGUsIGNvcmUoZW5kTm9kZSkpOyAg
ICAKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5zaW1wbGlmeU1hcmt1cChjb3JlU3Rh
cnROb2RlLCBjb3JlKGVuZE5vZGUpKTsgICAgCiB9CiAKIEBlbmQKQEAgLTY1NjcsNyArNjU2Nyw3
IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3Nl
bGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdl
YkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGMzODUyNGY5YzE1NGFiZTIwYzJkZWFmYTdi
NzFiYmIyYjdjZDNmNGQuLjg4ODRlNDk1Mzk0ODA0OThjMjFiODdmMTM1N2RjZTNhMzA2NzY0NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChRV2ViUGFn
ZUFkYXB0ZXIqIGFkYQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29y
ZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBu
YW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhZGFwdGVyLT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUp
LmV4ZWN1dGUodmFsdWUpOworICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVl
KTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChR
V2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0
dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIGFkYXB0
ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9y
KCkuY29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogUVZhcmlhbnRMaXN0IER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikK
QEAgLTM3NCw3ICszNzQsNyBAQCBRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFFXZWJQYWdlQWRhcHRlcgogICAgIGlmICghcmFu
Z2UpCiAgICAgICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKIAotICAgIFFSZWN0IHJlc3VsdFJl
Y3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAg
ICBRUmVjdCByZXN1bHRSZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJh
bmdlLmdldCgpKTsKICAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3QueSgp
IDw8IHJlc3VsdFJlY3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOwogICAgIHJldHVy
biByZWN0OwogfQpAQCAtNzUxLDE3ICs3NTEsMTcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6Y29uZmlybUNvbXBvc2l0aW9uKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgY29uc3QK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9
IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+aGFzQ29tcG9z
aXRpb24oKSAmJiAhdGV4dCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7
CisgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiAhdGV4dCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChlZGl0
b3IuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICBpZiAodGV4dCkKLSAgICAgICAgICAgIGVk
aXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVURjgodGV4dCkpOworICAgICAg
ICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oKTsK
KyAgICAgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZWRpdG9yLT5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCksIDApOworICAg
ICAgICBlZGl0b3IuaW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKIH0KIAog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KFFXZWJG
cmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFmZjI5MjEzZjI3
ZDQwOGQ0ZmEyMDFhZDEuLjgyNWFjYTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0MmYxYjkwMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwCkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25k
VG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxT
ZWxlY3Rpb24oKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBi
b29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5p
c1NlbGVjdGlvbk1vZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBh
c3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCks
IGZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVT
ZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBm
cmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQ
YXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVj
dGlvbk1vZGUpOwogICAgIH0KIAogICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bigpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlv
bkNoYW5nZSgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgp
OwogfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJV
bmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CiAjaWZu
ZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChtX2luVW5kb1Jl
ZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhB
Q0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAo
ZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9u
J3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT5yZWdp
c3RlclVuZG9TdGVwKHN0ZXApOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpAQCAtNDU1LDcg
KzQ1NSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3Vn
aCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0
IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAg
ICAgICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRs
ZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBh
IGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRo
YXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgICAgIGlmIChm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQorICAgICAgICAg
ICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKICAg
ICAgICAgICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1h
bmRGb3JLZXlEb3duRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAg
ICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8v
IEV2ZW50IGhhbmRsZWQuCiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5NSw3
ICs0OTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxk
SW5zZXJ0VGV4dCkgewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVu
dChldmVudCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkp
OwotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1h
bmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4
IGZhNGU0YzBmM2VhN2FjZDc4Njc5YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjQ3NjBkN2YwOTQ0ZTI5
MDUzMmI4NDRjOWJhYmMzZjBjOWJjNDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBA
IFFTdHJpbmcgUVdlYlBhZ2VBZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIEZyYW1l
KiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkg
PT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBRU3RyaW5n
KCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmluZyBRV2ViUGFn
ZUFkYXB0ZXI6OnNlbGVjdGVkSHRtbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFu
Z2UoKS0+dG9IVE1MKCk7CisgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKIH0K
IAogYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKQEAgLTMy
OSw3ICszMjksNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJv
b2wgZWRpdGFibGUpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZy
YW1lOwogICAgIGlmIChlZGl0YWJsZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9y
dCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAgICAgICAgLy8g
ZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAgICAgfQpAQCAtNTY3LDkgKzU2Nyw5IEBA
IGJvb2wgUVdlYlBhZ2VBZGFwdGVyOjpwZXJmb3JtRHJhZyhjb25zdCBRTWltZURhdGEgKmRhdGEs
IGNvbnN0IFFQb2ludCAmcG9zLCBRdDo6CiB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRo
b2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZy
YW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IFdlYkNvcmU6OkVkaXRvciAqZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIFdlYkNvcmU6
OkVkaXRvciAmZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCi0gICAgaWYgKCFlZGl0b3ItPmNh
bkVkaXQoKSkgeworICAgIGlmICghZWRpdG9yLmNhbkVkaXQoKSkgewogICAgICAgICBldi0+aWdu
b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTAsMTIgKzYxMCwxMiBAQCB2b2lk
IFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYp
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJl
ZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5n
dGgpKSwgcU1heChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOworICAgICAgICAgICAg
ICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVz
LCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0YXJ0LCAoYS5z
dGFydCArIGEubGVuZ3RoKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb21wb3NpdGlvbiwgYW4gZW1wdHkgcHJl
LWVkaXQgc3RyaW5nIGFuZCBhIHNlbGVjdGlvbiBvZiB6ZXJvCiAgICAgICAgICAgICAgICAgLy8g
Y2FuY2VscyB0aGUgY3VycmVudCBjb21wb3NpdGlvbgotICAgICAgICAgICAgICAgIGlmIChlZGl0
b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgIShhLnN0YXJ0ICsgYS5sZW5ndGgpKQotICAgICAgICAg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywg
MCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpICYmICEo
YS5zdGFydCArIGEubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldENvbXBv
c2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywgMCwgMCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjMwLDE2ICs2MzAsMTYgQEAgdm9pZCBRV2Vi
UGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAg
ICAgICBpZiAoaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKSkKICAgICAgICAgICAg
IHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQobm9kZSktPnNldFNlbGVjdGlvblJhbmdlKHN0
YXJ0LCBzdGFydCArIGV2LT5yZXBsYWNlbWVudExlbmd0aCgpKTsKICAgICAgICAgLy8gQ29tbWl0
IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBjb21taXRTdHJpbmcgaXMgZW1wdHksIHRvIGdldCByaWQg
b2Ygc2VsZWN0aW9uLgotICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29t
bWl0U3RyaW5nKCkpOworICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKGV2LT5jb21t
aXRTdHJpbmcoKSk7CiAgICAgfSBlbHNlIGlmICghZXYtPmNvbW1pdFN0cmluZygpLmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICAgICAg
ZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1pdFN0cmluZygpKTsKKyAgICAgICAg
aWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1D
b21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBlZGl0b3ItPmluc2VydFRleHQoZXYtPmNvbW1pdFN0cmluZygpLCAwKTsKKyAgICAgICAgICAg
IGVkaXRvci5pbnNlcnRUZXh0KGV2LT5jb21taXRTdHJpbmcoKSwgMCk7CiAgICAgfSBlbHNlIGlm
ICghaGFzU2VsZWN0aW9uICYmICFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkKLSAgICAg
ICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVz
LCAwLCAwKTsKLSAgICBlbHNlIGlmIChldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSAmJiBl
ZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0
aW9uKFN0cmluZygpKTsKKyAgICAgICAgZWRpdG9yLnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0
U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOworICAgIGVsc2UgaWYgKGV2LT5wcmVlZGl0U3Ry
aW5nKCkuaXNFbXB0eSgpICYmIGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBlZGl0
b3IuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKIAogICAgIGV2LT5hY2NlcHQoKTsKIH0K
QEAgLTY1MCw3ICs2NTAsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9k
UXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAKLSAgICBXZWJDb3JlOjpFZGl0b3IqIGVk
aXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IGZy
YW1lLT5lZGl0b3IoKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAwOwogICAgIFJl
bmRlclRleHRDb250cm9sKiByZW5kZXJUZXh0Q29udHJvbCA9IDA7CkBAIC02NzgsMTQgKzY3OCwx
NCBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0
TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9u
dCgpKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJzb3JQb3NpdGlvbjogewotICAgICAgICBp
ZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBv
c2l0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigp
LT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIHJldHVybiBRVmFyaWFu
dChmcmFtZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsK
ICAgICB9CiAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKICAgICAgICAgaWYgKHJl
bmRlclRleHRDb250cm9sICYmIHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgIFFTdHJpbmcgdGV4dCA9IHJlbmRlclRleHRDb250cm9sLT50
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnZhbHVlKCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZWRpdG9yLT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAgICAgICAgICAg
IGlmIChyYW5nZSkKICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZShyYW5nZS0+c3RhcnRQb3Np
dGlvbigpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQodGV4dCk7CkBAIC02
OTMsNyArNjkzLDcgQEAgUVZhcmlhbnQgUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZFF1ZXJ5
KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdAogICAgICAgICByZXR1cm4gUVZh
cmlhbnQoKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJyZW50U2VsZWN0aW9uOiB7Ci0gICAg
ICAgIGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpICYmIHJlbmRlclRleHRDb250cm9sICYm
IHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKKyAgICAgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCAmJiByZW5k
ZXJUZXh0Q29udHJvbC0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBp
bnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJO
b2RlKCk7CiAgICAgICAgICAgICBpbnQgZW5kID0gZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkKQEAg
LTcwMyw3ICs3MDMsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVl
cnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAKICAgICB9CiAgICAgY2Fz
ZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3Np
dGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpKTsKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGZyYW1lLT5zZWxlY3Rpb24o
KS0+YmFzZSgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICB9CkBAIC05NTUsNyArOTU1
LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmRpZENsb3NlSW5zcGVjdG9yKCkKIHZvaWQgUVdl
YlBhZ2VBZGFwdGVyOjp1cGRhdGVBY3Rpb25JbnRlcm5hbChRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVB
Y3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiBjb21tYW5kTmFtZSwgYm9vbCogZW5hYmxlZCwgYm9v
bCogY2hlY2tlZCkKIHsKICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlciogbG9hZGVyID0gbWFpbkZy
YW1lQWRhcHRlcigpLT5mcmFtZS0+bG9hZGVyKCk7Ci0gICAgV2ViQ29yZTo6RWRpdG9yKiBlZGl0
b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRv
cigpOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAogICAgIHN3aXRjaCAoYWN0aW9u
KSB7CiAgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OkJhY2s6CkBAIC05NzMsMTQgKzk3MywxNCBA
QCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dXBkYXRlQWN0aW9uSW50ZXJuYWwoUVdlYlBhZ2VBZGFw
dGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgYwogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRU
ZXh0RGlyZWN0aW9uRGVmYXVsdDoKICAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6U2V0VGV4dERp
cmVjdGlvbkxlZnRUb1JpZ2h0OgogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRUZXh0RGly
ZWN0aW9uUmlnaHRUb0xlZnQ6Ci0gICAgICAgICplbmFibGVkID0gZWRpdG9yLT5jYW5FZGl0KCk7
CisgICAgICAgICplbmFibGVkID0gZWRpdG9yLmNhbkVkaXQoKTsKICAgICAgICAgKmNoZWNrZWQg
PSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogewogCiAgICAgICAgIC8vIGlm
IGl0J3MgYW4gZWRpdG9yIGNvbW1hbmQsIGxldCBpdHMgbG9naWMgZGV0ZXJtaW5lIHN0YXRlCiAg
ICAgICAgIGlmIChjb21tYW5kTmFtZSkgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBlZGl0b3ItPmNvbW1hbmQoY29tbWFuZE5hbWUpOworICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBlZGl0b3IuY29tbWFuZChjb21tYW5kTmFtZSk7CiAgICAgICAg
ICAgICAqZW5hYmxlZCA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBpZiAoKmVu
YWJsZWQpCiAgICAgICAgICAgICAgICAgKmNoZWNrZWQgPSBjb21tYW5kLnN0YXRlKCkgIT0gRmFs
c2VUcmlTdGF0ZTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dHJp
Z2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0VAog
ICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgRWRpdG9yKiBl
ZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRp
dG9yKCk7CiAKICAgICAvLyBDb252ZW5pZW5jZQogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0
ZSBoaXRUZXN0OwpAQCAtMTAyOCwxMCArMTAyOCwxMCBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6
dHJpZ2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0
VAogI2lmIGRlZmluZWQoUV9XU19YMTEpCiAgICAgICAgIGJvb2wgb2xkU2VsZWN0aW9uTW9kZSA9
IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpOwogICAg
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRy
dWUpOwotICAgICAgICBlZGl0b3ItPmNvcHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0
VGVzdFJlc3VsdC0+bGlua1RleHQpOworICAgICAgICBlZGl0b3IuY29weVVSTChoaXRUZXN0UmVz
dWx0LT5saW5rVXJsLCBoaXRUZXN0UmVzdWx0LT5saW5rVGV4dCk7CiAgICAgICAgIFBhc3RlYm9h
cmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9k
ZSk7CiAjZW5kaWYKLSAgICAgICAgZWRpdG9yLT5jb3B5VVJMKGhpdFRlc3RSZXN1bHQtPmxpbmtV
cmwsIGhpdFRlc3RSZXN1bHQtPmxpbmtUZXh0KTsKKyAgICAgICAgZWRpdG9yLmNvcHlVUkwoaGl0
VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKQEAgLTEwNTgsMTMg
KzEwNTgsMTMgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VB
ZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFNldFRleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZWRpdG9y
LnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTZXRUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAgICAg
IGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0
aW9uKTsKKyAgICAgICAgZWRpdG9yLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0
V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0VGV4dERpcmVj
dGlvblJpZ2h0VG9MZWZ0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGVkaXRvci5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6IHsKQEAg
LTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp0cmlnZ2VyQWN0aW9uKFFX
ZWJQYWdlQWRhcHRlcjo6TWVudUFjdGlvbiBhY3Rpb24sIFFXZWJIaXRUCiAjZW5kaWYKICAgICBk
ZWZhdWx0OgogICAgICAgICBpZiAoY29tbWFuZE5hbWUpCi0gICAgICAgICAgICBlZGl0b3ItPmNv
bW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVkaXRvci5jb21tYW5k
KGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTEz
MTQsOCArMTMxNCw4IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpmb2N1c091dEV2ZW50KFFGb2N1
c0V2ZW50ICopCiBib29sIFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU2hvcnRjdXRPdmVycmlkZUV2
ZW50KFFLZXlFdmVudCogZXZlbnQpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5F
ZGl0KCkpCisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Cisg
ICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGV2ZW50LT5tb2RpZmllcnMoKSA9PSBRdDo6Tm9Nb2RpZmllcgogICAgICAgICB8fCBldmVudC0+
bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3
ZTZmMDBlYmE3YmNhNGVjNzM0NTExYzI0ZjVlMjI0ZTY1M2JhMjZjLi5mNzRiZmZiOWI5Y2RhMjUw
OWFjOTE3ODIzMGMxZjIxZjFmZTZkN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgS1VS
TCYgdXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNv
bnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMo
c2VhcmNoU3RyaW5nKTsKICAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggNzBjYjUyYTk3MzIzMTI5ZTgxYmQ3ZDdkMDE2NmNlNmYzOGMwYzA0
Yi4uMTZjYTQ1ZTc1NTQ2OGE1NzY5ZjVjYzY1MTcwNzkxNTAwZDg4MTY1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJGcmFtZTo6aGFzU3BlbGxpbmdNYXJrZXIoCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0g
ICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKKyAgICAqcmVzdWx0
ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVu
dE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
QEAgLTEwMjEsMTYgKzEwMjEsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFt
ZTo6Y2xlYXJPcGVuZXIoKQogSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihCU1RS
IGRpcmVjdGlvbikKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKLSAgICBp
ZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKSkKKyAgICBpZiAoIWNvcmVGcmFt
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyBkaXJlY3Rpb25TdHJpbmco
ZGlyZWN0aW9uLCBTeXNTdHJpbmdMZW4oZGlyZWN0aW9uKSk7CiAgICAgaWYgKGRpcmVjdGlvblN0
cmluZyA9PSAiYXV0byIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
bik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJsdHIiKQotICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGly
ZWN0aW9uU3RyaW5nID09ICJydGwiKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0
V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEwNTIsNyArMTA1
Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNlbGVjdGVkU3RyaW5n
KAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3Ry
aW5nIHRleHQgPSBjb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29y
ZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyB0ZXh0ID0gY29y
ZUZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCkpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodGV4dCkucmVsZWFz
ZSgpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZTQ3NzZmZGUw
NDNkNTBjMTg0Y2NjMmZhNjM2YTMyOWY2ZDIyMDM0MC4uZGFmNWJkZDRkOWIzZDQyZTQ2ZTczMjk0
OTZjYTRhNTkwYzc1YzFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE4MTIsMTEgKzE4MTIs
MTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLyps
UGFyYW0qLykKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAg
ICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2Ug
VW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8i
KS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlVuZG8iKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAg
ICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CiAgICAg
fQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJvb2wgV2ViVmll
dzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlm
ICgha2V5RXZlbnQgfHwga2V5RXZlbnQtPmlzU3lzdGVtS2V5KCkpICAvLyBkbyBub3QgdHJlYXQg
dGhpcyBhcyB0ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0
KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTE5NzksNyArMTk3
OSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZ0KQogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5r
ZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNl
cnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwogfQogCiBib29sIFdlYlZpZXc6
OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0
ZW1LZXlEb3duKQpAQCAtMzQyOSw3ICszNDI5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUoKQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShCU1RSIG5hbWUs
IEJTVFIgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKHRvU3RyaW5nKG5hbWUpKS5leGVjdXRlKHRv
U3RyaW5nKHZhbHVlKSk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4ZWN1dGUodG9T
dHJpbmcodmFsdWUpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzY1Niw3ICszNjU2LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFRleHQoCiAgICAg
aWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBTdHJpbmcg
ZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQo
KTsKKyAgICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpOwogICAgICp0ZXh0ID0gU3lzQWxsb2NTdHJpbmdMZW4oZnJhbWVTZWxl
Y3RlZFRleHQuY2hhcmFjdGVycygpLCBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSk7CiAgICAg
aWYgKCEqdGV4dCAmJiBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IEVfT1VUT0ZNRU1PUlk7CkBAIC00MjQxLDM4ICs0MjQxLDM4IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6aGFzU2VsZWN0ZWRSYW5nZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y3V0RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
Qk9PTCogZW5hYmxlZCkKIHsKLSAgICBFZGl0b3IqIGVkaXRvciA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAqZW5hYmxlZCA9
IGVkaXRvci0+Y2FuQ3V0KCkgfHwgZWRpdG9yLT5jYW5ESFRNTEN1dCgpOworICAgIEVkaXRvciYg
ZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpOworICAgICplbmFibGVkID0gZWRpdG9yLmNhbkN1dCgpIHx8IGVkaXRvci5jYW5E
SFRNTEN1dCgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojpjb3B5RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICBFZGl0b3IqIGVkaXRvciA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAqZW5hYmxl
ZCA9IGVkaXRvci0+Y2FuQ29weSgpIHx8IGVkaXRvci0+Y2FuREhUTUxDb3B5KCk7CisgICAgRWRp
dG9yJiBlZGl0b3IgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCk7CisgICAgKmVuYWJsZWQgPSBlZGl0b3IuY2FuQ29weSgpIHx8IGVkaXRv
ci5jYW5ESFRNTENvcHkoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGVFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgIEVkaXRvciogZWRpdG9yID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAg
ICplbmFibGVkID0gZWRpdG9yLT5jYW5QYXN0ZSgpIHx8IGVkaXRvci0+Y2FuREhUTUxQYXN0ZSgp
OworICAgIEVkaXRvciYgZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOworICAgICplbmFibGVkID0gZWRpdG9yLmNhblBhc3Rl
KCkgfHwgZWRpdG9yLmNhbkRIVE1MUGFzdGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlRW5hYmxlZCggCiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS0+Y2FuRGVsZXRlKCk7CisgICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmVkaXRp
bmdFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQog
ewotICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRWRpdCgp
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00MzI0LDcgKzQzMjQsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCgKICAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHRleHQpCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlu
c2VydFRleHQodG9TdHJpbmcodGV4dCksIDApOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRvU3RyaW5nKHRl
eHQpLCAwKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0QmFzZShz
dGFydCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MzQ1LDggKzQzNDUsOCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXJjaGl2ZSgK
ICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlU2VsZWN0aW9u
KCB2b2lkKQogewotICAgIEVkaXRvciogZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGVkaXRvci0+ZGVsZXRlU2Vs
ZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGVkaXRvci0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSk7Cisg
ICAgRWRpdG9yJiBlZGl0b3IgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAgZWRpdG9yLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFy
dERlbGV0ZShlZGl0b3ItPmNhblNtYXJ0Q29weU9yRGVsZXRlKCkpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC00MzY4LDI4ICs0MzY4LDI4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6YXBwbHlTdHlsZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
Y29weSggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OmN1dCggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVk
aXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4
ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpwYXN0ZSggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVy
Ki8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgi
UGFzdGUiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29weVVSTCggCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB1
cmwpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwp
LCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCks
ICIiKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDQxMSw3ICs0NDExLDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpwYXN0ZUZvbnQoCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmRlbGV0ZV8oIAogICAgICAgICAvKiBbaW5dICovIElVbmtub3du
KiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiRGVsZXRlIikuZXhlY3V0ZSgpOworICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3Io
KS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAg
CkBAIC00NDkzLDcgKzQ0OTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNoZWNrU3BlbGxpbmcoCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgfQogICAgIAotICAg
IGNvcmUobV9tYWluRnJhbWUpLT5lZGl0b3IoKS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7
CisgICAgY29yZShtX21haW5GcmFtZSktPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
ZygpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApAQCAtNDUxMiw3ICs0NTEyLDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzaG93R3Vlc3NQYW5lbCgKICAgICAgICAg
bV9lZGl0aW5nRGVsZWdhdGUtPnNob3dTcGVsbGluZ1VJKEZBTFNFKTsKICAgICB9CiAgICAgCi0g
ICAgY29yZShtX21haW5GcmFtZSktPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmco
dHJ1ZSk7CisgICAgY29yZShtX21haW5GcmFtZSktPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyh0cnVlKTsKICAgICBtX2VkaXRpbmdEZWxlZ2F0ZS0+c2hvd1NwZWxsaW5nVUkoVFJV
RSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC01MzM5LDcgKzUzMzksNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmxvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3
KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC01NDU0LDcgKzU0NTQs
NyBAQCB2b2lkIFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3coRnJhbWUqIHRhcmdldEZy
YW1lLCBISU1DIGhJbnB1dENvbnRleHQpCiAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0
YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkp
IHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
dGVtcFJhbmdlID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgICAgICBjYXJldCA9IHRhcmdl
dEZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKKyAg
ICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UodGVt
cFJhbmdlLmdldCgpKTsKICAgICB9CiAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5j
b250ZW50c1RvV2luZG93KGNhcmV0KTsKICAgICBDQU5ESURBVEVGT1JNIGZvcm07CkBAIC01NDcy
LDcgKzU0NzIsNyBAQCB2b2lkIFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3coRnJhbWUq
IHRhcmdldEZyYW1lLCBISU1DIGhJbnB1dENvbnRleHQpCiB2b2lkIFdlYlZpZXc6OnJlc2V0SU1F
KEZyYW1lKiB0YXJnZXRGcmFtZSkKIHsKICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICAgICAgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAoSElNQyBoSW5w
dXRDb250ZXh0ID0gZ2V0SU1NQ29udGV4dCgpKSB7CiAgICAgICAgIElNTURpY3Q6OmRpY3QoKS5u
b3RpZnlJTUUoaElucHV0Q29udGV4dCwgTklfQ09NUE9TSVRJT05TVFIsIENQU19DQU5DRUwsIDAp
OwpAQCAtNTQ4Nyw3ICs1NDg3LDcgQEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVTZWxlY3Rpb25Gb3JJ
TUUoKQogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZh
bGlkKCkpCisgICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb25J
ZlNlbGVjdGlvbklzSW52YWxpZCgpKQogICAgICAgICByZXNldElNRSh0YXJnZXRGcmFtZSk7CiB9
CiAKQEAgLTU2NDMsNyArNTY0Myw3IEBAIGJvb2wgV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbihM
UEFSQU0gbHBhcmFtKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEZyYW1lKiB0YXJnZXRG
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgp
KQorICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyh0
YXJnZXRGcmFtZSwgaElucHV0Q29udGV4dCk7CkBAIC01NjUzLDcgKzU2NTMsNyBAQCBib29sIFdl
YlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKICAgICAgICAgaWYgKCFnZXRD
b21wb3NpdGlvblN0cmluZyhoSW5wdXRDb250ZXh0LCBHQ1NfUkVTVUxUU1RSLCBjb21wb3NpdGlv
blN0cmluZykgJiYgbHBhcmFtKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAot
ICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZyk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBj
b21wb3NpdGlvblN0cmluZzsKICAgICAgICAgaWYgKCFnZXRDb21wb3NpdGlvblN0cmluZyhoSW5w
dXRDb250ZXh0LCBHQ1NfQ09NUFNUUiwgY29tcG9zaXRpb25TdHJpbmcpKQpAQCAtNTY3NCw3ICs1
Njc0LDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFyYW0pCiAK
ICAgICAgICAgaW50IGN1cnNvclBvc2l0aW9uID0gTE9XT1JEKElNTURpY3Q6OmRpY3QoKS5nZXRD
b21wb3NpdGlvblN0cmluZyhoSW5wdXRDb250ZXh0LCBHQ1NfQ1VSU09SUE9TLCAwLCAwKSk7CiAK
LSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlv
blN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOworICAgICAgICB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGlu
ZXMsIGN1cnNvclBvc2l0aW9uLCAwKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2
ODYsOCArNTY4Niw4IEBAIGJvb2wgV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbigpCiAgICAg
Ly8gSWYgdGhlIGNvbXBvc2l0aW9uIGhhc24ndCBiZWVuIGNvbmZpcm1lZCB5ZXQsIGl0IG5lZWRz
IHRvIGJlIGNhbmNlbGxlZC4KICAgICAvLyBUaGlzIGhhcHBlbnMgYWZ0ZXIgZGVsZXRpbmcgdGhl
IGxhc3QgY2hhcmFjdGVyIGZyb20gaW5saW5lIGlucHV0IGhvbGUuCiAgICAgRnJhbWUqIHRhcmdl
dEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9z
aXRpb24oKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRp
b24oU3RyaW5nKCkpOworICAgIGlmICh0YXJnZXRGcmFtZSAmJiB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuaGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZp
cm1Db21wb3NpdGlvbihTdHJpbmcoKSk7CiAKICAgICBpZiAobV9pbklNRUNvbXBvc2l0aW9uKQog
ICAgICAgICBtX2luSU1FQ29tcG9zaXRpb24tLTsKQEAgLTU3MTIsMTQgKzU3MTIsMTQgQEAgYm9v
bCBXZWJWaWV3OjpvbklNRU5vdGlmeShXUEFSQU0gd3BhcmFtLCBMUEFSQU0sIExSRVNVTFQqKQog
CiBMUkVTVUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdENoYXJQb3NpdGlvbihGcmFtZSogdGFyZ2V0
RnJhbWUsIElNRUNIQVJQT1NJVElPTiogY2hhclBvcykKIHsKLSAgICBpZiAoY2hhclBvcy0+ZHdD
aGFyUG9zICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCisgICAg
aWYgKGNoYXJQb3MtPmR3Q2hhclBvcyAmJiAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEludFJlY3QgY2FyZXQ7Ci0gICAgaWYg
KFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0
aW9uKCkgPyB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKSA6IHRhcmdl
dEZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewor
ICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmhhc0Nv
bXBvc2l0aW9uKCkgPyB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpIDog
dGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgp
KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8UmFuZ2U+
IHRlbXBSYW5nZSA9IHJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICAgICAgdGVtcFJhbmdlLT5z
ZXRTdGFydCh0ZW1wUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKGVjKSwgdGVtcFJhbmdlLT5zdGFydE9m
ZnNldChlYykgKyBjaGFyUG9zLT5kd0NoYXJQb3MsIGVjKTsKLSAgICAgICAgY2FyZXQgPSB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHRlbXBSYW5nZS5nZXQoKSk7Cisg
ICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHRl
bXBSYW5nZS5nZXQoKSk7CiAgICAgfQogICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhjYXJldCk7CiAgICAgY2hhclBvcy0+cHQueCA9IGNhcmV0LngoKTsK
QEAgLTU3NTIsNyArNTc1Miw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0KFdQQVJB
TSByZXF1ZXN0LCBMUEFSQU0gZGF0YSkKIHsKICAgICBMT0coVGV4dElucHV0LCAib25JTUVSZXF1
ZXN0ICVzIiwgaW1lUmVxdWVzdE5hbWUocmVxdWVzdCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBG
cmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRpdG9y
KCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0YXJnZXRGcmFtZS0+ZWRp
dG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAocmVxdWVz
dCkgewpAQCAtNjg4MywxNCArNjg4MywxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZygKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBTdHJpbmcgY29tcG9zaXRpb25TdHIgPSB0b1N0cmlu
Zyhjb21wb3NpdGlvbik7CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29t
cG9zaXRpb25TdHIubGVuZ3RoKCksIENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7Ci0gICAg
ZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0ciwgdW5kZXJsaW5l
cywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKIAog
ICAgIHJldHVybiBTX09LOwogfQpAQCAtNjkwNCw3ICs2OTA0LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoLyogW291dCwgcmV0
dmFsXSAqLwogICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
KnJlc3VsdCA9IGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAg
ICAqcmVzdWx0ID0gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY5MTUsMTUgKzY5MTUsMTUgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb25maXJtQ29tcG9zaXRpb25Gb3JUZXN0aW5nKC8qIFtp
bl0gKi8gQlNUUgogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIFN0cmluZyBjb21wb3NpdGlvblN0ciA9IHRvU3RyaW5nKGNvbXBvc2l0aW9uKTsKIAogICAg
IGlmIChjb21wb3NpdGlvblN0ci5pc051bGwoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b25maXJtQ29tcG9zaXRpb24oKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21w
b3NpdGlvbigpOwogCi0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHIpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHIpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC02OTM0LDEwICs2OTM0LDEw
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29tcG9zaXRpb25SYW5nZUZv
clRlc3RpbmcoLyogW291dF0gKi8gVUlOVCoKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigp
LT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5l
ZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAKICAgICBpZiAoIXJhbmdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwpAQCAtNjk3OCw3ICs2OTc4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUZvclRlc3RpbmcoCiAgICAg
QVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQocmFuZ2UtPmVuZENv
bnRhaW5lcigpKTsKICAgICAgCi0gICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5m
aXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAgSW50UmVjdCByZWN0ID0gZnJhbWUt
PmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZXN1bHRJbnRS
ZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKIAogICAgIHJlc3Vs
dFJlY3QtPmxlZnQgPSByZXN1bHRJbnRSZWN0LngoKTsKQEAgLTY5OTgsNyArNjk5OCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZvclRlc3Rpbmco
LyogW291dF0gKi8gVUlOVCogbG9jCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkUmFuZ2UoKTsKIAogICAgIHNpemVfdCBsb2NhdGlvblNpemU7CiAgICAgc2l6ZV90IGxl
bmd0aFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCmluZGV4IGM5MWVjOWY4MjAyYzg4YTZjMWUyZDhhMjk3
YjY1Y2JhOTRkMmYyOTIuLjY0NThkZjZmOGE3ODg0Nzg5ZTgwODllZDQ0MTEyYWUyYWZhNzU5ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50V2luQ0UuY3BwCkBAIC0zOTUsNyArMzk1LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRX
aW5DRTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOworICAgIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZl
bnQoZXZlbnQpKTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNl
cnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDE1
LDcgKzQxNSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmhhbmRsZUVkaXRpbmdLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChrZXlFdmVudC0+Y3RybEtleSgp
IHx8IGtleUV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudC0+a2V5RXZlbnQoKS0+dGV4dCgp
LCBldmVudCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2ZW50LT5r
ZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOThhNDA0YzAyYWExYzk4MWJlYWU0OTUyMDY2MGZiNjEz
N2MyZGYxNi4uOTBhNTE0ODYwZWY5NTdmYTk2MmJmNmM1M2I5YjAwN2Y2YTg5NzI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXZWJD
b250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYpCiAjaWYgIVBMQVRGT1JN
KE1BQykKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
RnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgp
OwogICAgIFN0cmluZyBlbmNvZGVkID0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhzZWFy
Y2hTdHJpbmcpOwogICAgIGVuY29kZWQucmVwbGFjZSgiJTIwIiwgIisiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCBjMTczYWJjNmZhOGJkYjJmN2Y1MmRhYjc1YzUxNjg5NGU2NmMyMGIy
Li5hOGI2MmQxNWJlYmI4ZWRkMzEzM2ZjNDI5ZGUwZTViNWM1ZjhkMjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVw
ZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgaWYgKHN1cHBvcnRzR2xvYmFs
U2VsZWN0aW9uKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKICAgICAgICAg
Ym9vbCBvbGRTZWxlY3Rpb25Nb2RlID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+
aXNTZWxlY3Rpb25Nb2RlKCk7CiAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJk
KCktPnNldFNlbGVjdGlvbk1vZGUodHJ1ZSk7Ci0gICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPndyaXRlU2VsZWN0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSwgZnJhbWUtPmVkaXRvcigpLT5jYW5TbWFydENvcHlPckRlbGV0ZSgp
LCBmcmFtZSk7CisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPndyaXRl
U2VsZWN0aW9uKGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
ZnJhbWUtPmVkaXRvcigpLmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKICAgICAgICAg
UGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZShvbGRTZWxl
Y3Rpb25Nb2RlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNw
cAppbmRleCA3MDEwYThmNzdjMWY1YTMxMDA5ZjVhYThiNzBjMmEyOGQzMmJiM2EyLi5jNDJlYzM3
YmQ2NDYxN2VkYzFkMDAwNjVkNzdlMWZmYjZlMGZmZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVk
aXRvckNsaWVudEVmbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0
b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBzZW5kaW5nIHN5bmMgbWVz
c2FnZSBtaWdodCBtYWtlIGlucHV0IGxhZ2dpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCA2N2ZkYzFmNDQ0ZWFkNmJhOGNhNzkxODg0ZmQ1ODE5ZjgyNGYwYzgx
Li45ODg5YTlkNjgxMDc1NzUxMDYwODlhYmY5ZTc4Y2IxM2FiYzBiNTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGll
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1lLCBWZWN0
b3I8V1RGOjpTdHIKIHsKICAgICBWZWN0b3I8RWRpdG9yOjpDb21tYW5kPiBjb21tYW5kczsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBlbmRpbmdFZGl0b3JDb21tYW5kcy5zaXplKCk7IGkr
KykgewotICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZChwZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQocGVu
ZGluZ0VkaXRvckNvbW1hbmRzLmF0KGkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAoY29t
bWFuZC5pc1RleHRJbnNlcnRpb24oKSAmJiAhYWxsb3dUZXh0SW5zZXJ0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC05NSwxNCArOTUsMTQgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBPbmx5IGFsbG93IHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzIGlmIHRoZSBj
dXJyZW50IG5vZGUgaXMgZWRpdGFibGUuCi0gICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRv
ckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKSkgeworICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhm
cmFtZSwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLCBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKSkg
ewogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2Vy
dGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBqdXN0IGEgbm9ybWFsIHRleHQgaW5zZXJ0aW9u
LCBzbyB3YWl0IHRvIGV4ZWN1dGUgdGhlIGluc2VydGlvbgpAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgIGlmIChwbGF0Zm9ybUV2ZW50LT5jdHJsS2V5KCkgfHwgcGxhdGZvcm1FdmVudC0+
YWx0S2V5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmlu
c2VydFRleHQocGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCisgICAgaWYgKGZyYW1lLT5l
ZGl0b3IoKS5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQogICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJD
b250ZXh0TWVudUNsaWVudE1hYy5tbQppbmRleCAwZmNhM2I5OGZmYzZiZDlkZjUwNjMyN2ExMzlh
ZGI1NzQ3OGYzZjU4Li4zYzIzMGViZTQ0YWM0ZTczMzI2YjRjNmJkOTU4NDgxOTNjZjNiMDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQpAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogCiB2b2lk
IFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rl
ZFRleHQoKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHNlYXJj
aFN0cmluZykpOwpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpz
ZWFyY2hXaXRoU3BvdGxpZ2h0KCkKICAgICBpZiAoIXNlbGVjdGlvbkZyYW1lKQogICAgICAgICBz
ZWxlY3Rpb25GcmFtZSA9IG1haW5GcmFtZTsKIAotICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9
IHNlbGVjdGlvbkZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNlbGVjdGlv
bkZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyBzZWxlY3RlZFN0
cmluZyA9IHNlbGVjdGlvbkZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNl
bGVjdGlvbkZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgCiAgICAgaWYgKHNl
bGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDgyMzViYzZkODgwZjM2ZmEwNTU1YTI3NTMzMGQ3NmUy
N2UzNTVmZDUuLmUwYjhhYzgxMmI4NmFhMjY5YjU3ZGUzYTdmNmYyYTAyNmQzYmEzZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTEzNiwxMiArMTM2LDEyIEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYp
CiBzdGF0aWMgdm9pZCBjaGFuZ2VXb3JkQ2FzZShXZWJQYWdlKiBwYWdlLCBTRUwgc2VsZWN0b3Ip
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5F
ZGl0KCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRl
KCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoInNlbGVjdFdvcmQiKS5leGVjdXRlKCk7
CiAKLSAgICBOU1N0cmluZyAqc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01v
ZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICBO
U1N0cmluZyAqc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlF
bmNvZGluZyhmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgIHBhZ2UtPnJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dChmcmFtZSwgW3NlbGVjdGVkU3RyaW5nIHBlcmZvcm1TZWxlY3Rv
cjpzZWxlY3Rvcl0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAppbmRleCBlMjYwNTZlOTI4NjljZDU1OWQ4MDM3OTUzMzU5ZDRiMjdiNjdm
MWNmLi43MjZjYTA2ZTc5MGIwNDA3NDZiMWFiNDgyZWM4Yjc3ZWQwYzNhNmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTMyNCw3ICsz
MjQsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNlbGVjdGlvbkFzU3RyaW5nKCkgY29uc3QKICAgICBp
ZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4g
bV9jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobV9jb3JlRnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kaXNw
bGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rl
ZFRleHQoKSk7CiB9CiAKIEludFNpemUgV2ViRnJhbWU6OnNpemUoKSBjb25zdApAQCAtNzAwLDE1
ICs3MDAsMTUgQEAgU3RyaW5nIFdlYkZyYW1lOjptaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChj
b25zdCBLVVJMJiB1cmwpIGNvbnN0CiAKIHZvaWQgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKCFtX2NvcmVGcmFtZSB8fCAhbV9j
b3JlRnJhbWUtPmVkaXRvcigpKQorICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChkaXJlY3Rpb24gPT0gImF1dG8iKQotICAgICAgICBtX2NvcmVGcmFtZS0+
ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9u
KTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9u
KE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gImx0
ciIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVk
aXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlv
bik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uID09ICJydGwiKQotICAgICAgICBtX2NvcmVGcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAjaWYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDk5NDdlZWJkNjQ3NmVjNzNiNjYwZTJjMDA4OGRjMjc3ODEyMDVlMWQuLmYwMWQ1Y2FmNjVi
N2IxNGNiNTFhOGJlZDQ2OTFhOWUyYTc3YmQwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTYwMSw4ICs2MDEsOCBAQCBFZGl0b3JTdGF0
ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgcmVzdWx0LmlzQ29udGVudEVkaXRh
YmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIHJlc3Vs
dC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50
UmljaGx5RWRpdGFibGUoKTsKICAgICByZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPmlzSW5QYXNzd29yZEZpZWxkKCk7Ci0gICAgcmVzdWx0Lmhhc0NvbXBvc2l0
aW9uID0gZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOwotICAgIHJlc3VsdC5zaG91
bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+aWdu
b3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKKyAgICByZXN1bHQuaGFzQ29tcG9zaXRp
b24gPSBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKKyAgICByZXN1bHQuc2hvdWxk
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuaWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIHNp
emVfdCBsb2NhdGlvbiA9IDA7CkBAIC02NDEsOCArNjQxLDggQEAgRWRpdG9yU3RhdGUgV2ViUGFn
ZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgICAgICByZXN1bHQuZWRpdG9yUmVjdCA9IGZyYW1l
LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0aW9uUm9vdC0+cGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIGlmIChyZXN1bHQu
aGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJh
bmdlKCkpKSB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rp
b24ocmVzdWx0LmFuY2hvclBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOworICAgIGlm
IChyZXN1bHQuaGFzQ29tcG9zaXRpb24gJiYgKHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBv
c2l0aW9uUmFuZ2UoKSkpIHsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmdldENvbXBvc2l0aW9u
U2VsZWN0aW9uKHJlc3VsdC5hbmNob3JQb3NpdGlvbiwgcmVzdWx0LmN1cnNvclBvc2l0aW9uKTsK
IAogICAgICAgICByZXN1bHQuY29tcG9zaXRpb25SZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVu
dHNUb1dpbmRvdyhyYW5nZS0+Ym91bmRpbmdCb3goKSk7CiAgICAgfQpAQCAtNjU3LDcgKzY1Nyw3
IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICB9CiAKICAg
ICBpZiAocmFuZ2UpCi0gICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+
Y29udGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdl
LmdldCgpKSk7CisgICAgICAgIHJlc3VsdC5jdXJzb3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29u
dGVudHNUb1dpbmRvdyhmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0
KCkpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSB0cmFuc2ZlciBpbm5lclRleHQg
d2hlbiBpdCBjaGFuZ2VzIGFuZCBkbyB0aGlzIG9uIHRoZSBVSSBzaWRlLgogICAgIGlmIChyZXN1
bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCkgewpAQCAt
NzY4LDcgKzc2OCw3IEBAIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJnCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5l
eGVjdXRlKGFyZ3VtZW50KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZShhcmd1bWVudCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFu
ZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKQEAgLTc4MCw3ICs3ODAsNyBAQCBi
b29sIFdlYlBhZ2U6OmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpCiAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmll
d0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHBsdWdpblZpZXctPmlzRWRpdGluZ0Nv
bW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAKLSAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSk7CisgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSk7
CiAgICAgcmV0dXJuIGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSAmJiBjb21tYW5kLmlzRW5hYmxlZCgp
OwogfQogICAgIApAQCAtMTc3OCw3ICsxNzc4LDcgQEAgdm9pZCBXZWJQYWdlOjp2YWxpZGF0ZUNv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAg
ICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBmb2N1c2VkUGx1Z2luVmlld0ZvckZy
YW1lKGZyYW1lKSkKICAgICAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRpdGlu
Z0NvbW1hbmRFbmFibGVkKGNvbW1hbmROYW1lKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21t
YW5kTmFtZSk7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5l
ZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKICAgICAgICAgICAgIHN0YXRlID0gY29tbWFu
ZC5zdGF0ZSgpOwogICAgICAgICAgICAgaXNFbmFibGVkID0gY29tbWFuZC5pc1N1cHBvcnRlZCgp
ICYmIGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgIH0KQEAgLTI1NjAsNyArMjU2MCw3IEBA
IGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZ0KQogICAgIGlmICgha2V5RXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJl
dEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTI1NzMsMTQgKzI1NzMsMTQgQEAgYm9vbCBXZWJQYWdl
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5v
ZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQo
KSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBh
cyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKICAgICBpZiAoZXZ0LT5j
aGFyQ29kZSgpIDwgJyAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwor
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldnQtPmtleUV2ZW50KCktPnRl
eHQoKSwgZXZ0KTsKIH0KICNlbmRpZgogCkBAIC0yODU5LDcgKzI4NTksNyBAQCB2b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQsCiB2b2lkIFdlYlBhZ2U6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3Io
KS0+YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0
aW9uKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJp
bmcmIHdvcmQpCkBAIC0yODg2LDE3ICsyODg2LDE3IEBAIHZvaWQgV2ViUGFnZTo6dW5tYXJrQWxs
QmFkR3JhbW1hcigpCiAjaWYgVVNFKEFQUEtJVCkKIHZvaWQgV2ViUGFnZTo6dXBwZXJjYXNlV29y
ZCgpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLT51cHBlcmNhc2VXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCkubG93ZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNhcGl0YWxpemVX
b3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNhcGl0YWxpemVXb3JkKCk7
CiB9CiAjZW5kaWYKICAgICAKQEAgLTI5MzMsNyArMjkzMyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQog
ewogICAgIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQgPSB0cnVlOwogICAgIGJvb2wgc21hcnRSZXBs
YWNlID0gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KHRleHQsIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOworICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRleHQsIHNlbGVj
dFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2Vs
ZWN0aW9uKCkKQEAgLTM1OTYsNyArMzU5Niw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+aGFuZGxl
QWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuaGFu
ZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KTsKIH0KICNlbmRpZgogCkBAIC0zNjE4
LDI5ICszNjE4LDI5IEBAIHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3Jl
OjpJbnRQb2ludCBwb3NpdGlvbiwgZG91YmxlIHRpbWUpCiB2b2lkIFdlYlBhZ2U6OnNldENvbXBv
c2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRf
dCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPENvbXBv
c2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBv
c2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9uU3RyaW5nLmxlbmd0aCgpLCBDb2xvcihDb2xv
cjo6YmxhY2spLCBmYWxzZSkpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
Y29tcG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJs
aW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6aGFzQ29tcG9z
aXRpb25Gb3JUZXN0aW5nKCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgJiYgZnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFt
ZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb25maXJt
Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0
KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyaW5nLmlzTnVsbCgpKQotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOwotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5j
b25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6
Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQgbnVtV2hlZWxFdmVudEhhbmRs
ZXJzKQpAQCAtMzc5NiwxOSArMzc5NiwxOSBAQCBzdGF0aWMgRnJhbWUqIHRhcmdldEZyYW1lRm9y
RWRpdGluZyhXZWJQYWdlKiBwYWdlKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IHBhZ2Ut
PmNvcmVQYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAot
ICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKSkKKyAgICBpZiAo
IXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEVkaXRvciogZWRpdG9yID0g
dGFyZ2V0RnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAg
RWRpdG9yJiBlZGl0b3IgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3Iu
Y2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChlZGl0b3ItPmhhc0NvbXBv
c2l0aW9uKCkpIHsKKyAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAg
Ly8gV2Ugc2hvdWxkIHZlcmlmeSB0aGUgcGFyZW50IG5vZGUgb2YgdGhpcyBJTUUgY29tcG9zaXRp
b24gbm9kZSBhcmUKICAgICAgICAgLy8gZWRpdGFibGUgYmVjYXVzZSBKYXZhU2NyaXB0IG1heSBk
ZWxldGUgYSBwYXJlbnQgbm9kZSBvZiB0aGUgY29tcG9zaXRpb24KICAgICAgICAgLy8gbm9kZS4g
SW4gdGhpcyBjYXNlLCBXZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRo
ZSBwYXJlbnQKICAgICAgICAgLy8gbm9kZSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnkgbG9uZ2Vy
LgotICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0
aW9uUmFuZ2UoKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0
b3IuY29tcG9zaXRpb25SYW5nZSgpKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29u
dGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zODI1LDggKzM4
MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgRWRpdG9yKiBlZGl0b3IgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7Ci0gICAgZWRpdG9y
LT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogCiAgICAg
aWYgKHNlbGVjdGlvblN0YXJ0ID09IC0xKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKQEAgLTM4NTgsMTkg
KzM4NTcsMTkgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRl
eHQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW4KIAogICAgICAgICBFbGVtZW50KiBz
Y29wZSA9IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwog
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCByZXBsYWNlbWVudFN0YXJ0LCByZXBsYWNl
bWVudExlbmd0aCk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29t
cG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UodHJ1ZSk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0
b3IoKS5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKICAgICAgICAg
dGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihy
ZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwotICAgICAgICB0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdl
KGZhbHNlKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKICAgICB9CiAKLSAgICB0YXJnZXRGcmFtZS0+ZWRp
dG9yKCktPnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBz
ZWxlY3Rpb25FbmQpOworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0
ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgp
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogewogICAgIGlmIChG
cmFtZSogdGFyZ2V0RnJhbWUgPSB0YXJnZXRGcmFtZUZvckVkaXRpbmcodGhpcykpCi0gICAgICAg
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICAgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uKCk7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZs
L1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9X
ZWJQYWdlRWZsLmNwcAppbmRleCBlNDczMTAzMDRkODE2OGJhOTg5MDc3M2EyYzljZWVlYmVjYWQ5
ZDZmLi5jNmM0MWYxMDIzYzUxNTgzMzFhNmYyNGViZWI2NjNiNGY1MGI1OTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAK
QEAgLTE3OCwxNiArMTc4LDE2IEBAIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5n
KFdlYlBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvci0+Y2Fu
RWRpdCgpKQorICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIGlmICgh
ZWRpdG9yLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZWRpdG9yLT5o
YXNDb21wb3NpdGlvbigpKSB7CisgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpKSB7CiAg
ICAgICAgIC8vIFdlIHNob3VsZCB2ZXJpZnkgdGhlIHBhcmVudCBub2RlIG9mIHRoaXMgSU1FIGNv
bXBvc2l0aW9uIG5vZGUgYXJlCiAgICAgICAgIC8vIGVkaXRhYmxlIGJlY2F1c2UgSmF2YVNjcmlw
dCBtYXkgZGVsZXRlIGEgcGFyZW50IG5vZGUgb2YgdGhlIGNvbXBvc2l0aW9uCiAgICAgICAgIC8v
IG5vZGUuIEluIHRoaXMgY2FzZSwgV2ViS2l0IGNyYXNoZXMgd2hpbGUgZGVsZXRpbmcgdGV4dHMg
ZnJvbSB0aGUgcGFyZW50CiAgICAgICAgIC8vIG5vZGUsIHdoaWNoIGRvZXNuJ3QgZXhpc3QgYW55
IGxvbmdlci4KLSAgICAgICAgaWYgKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLT5j
b21wb3NpdGlvblJhbmdlKCkpIHsKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gZWRpdG9yLmNvbXBvc2l0aW9uUmFuZ2UoKSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IHJhbmdlLT5zdGFydENvbnRhaW5lcigpOwogICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2Rl
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMjAz
LDcgKzIwMyw3IEBAIHZvaWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgY29tcG9zaXRpb25TdHJpbmcpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcpOworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9z
aXRpb24oY29tcG9zaXRpb25TdHJpbmcpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0
aW9uKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvCiAgICAgaWYg
KCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFyZ2V0RnJhbWUtPmVkaXRv
cigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29y
UG9zaXRpb24sIDApOworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lk
IFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAg
ZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IGI3MTI1MzBlYTZmOTllOGViMGI0MGNkYTM0ODA5ZWE5ZmNhNjAy
MGYuLjc4YTc4YzFlNzQ5NmM1ZTYwMmY1NmMyNzJlNzFlYjVkYjU0NTk2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAg
LTE2OCwxNiArMTY4LDE2IEBAIGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJ
bnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tCiAgICAgYm9vbCBldmVu
dFdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbW1hbmRz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChjb21tYW5kc1tpXS5jb21tYW5kTmFtZSA9PSAi
aW5zZXJ0VGV4dDoiKSB7Ci0gICAgICAgICAgICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFz
Q29tcG9zaXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS5oYXND
b21wb3NpdGlvbigpKTsKIAotICAgICAgICAgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXQoKSkKKyAgICAgICAgICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLy8gQW4gaW5zZXJ0VGV4dDogbWln
aHQgYmUgaGFuZGxlZCBieSBvdGhlciByZXNwb25kZXJzIGluIHRoZSBjaGFpbiBpZiB3ZSBkb24n
dCBoYW5kbGUgaXQuCiAgICAgICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhh
dCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICAgICAgZXZlbnRX
YXNIYW5kbGVkIHw9IGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChjb21tYW5kc1tpXS50ZXh0
LCBldmVudCk7CisgICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0gZnJhbWUtPmVkaXRvcigp
Lmluc2VydFRleHQoY29tbWFuZHNbaV0udGV4dCwgZXZlbnQpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUp
KTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5h
bWUpKTsKICAgICAgICAgICAgIGlmIChjb21tYW5kLmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAg
ICAgICAgICBib29sIGNvbW1hbmRFeGVjdXRlZEJ5RWRpdG9yID0gY29tbWFuZC5leGVjdXRlKGV2
ZW50KTsKICAgICAgICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0gY29tbWFuZEV4ZWN1dGVk
QnlFZGl0b3I7CkBAIC0yMzMsNyArMjMzLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCwgYm9vbCBzYXZlQ29tbWFuZHMKICAg
ICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVy
KS4KICAgICAgICAgYm9vbCBoYXZlVGV4dEluc2VydGlvbkNvbW1hbmRzID0gZmFsc2U7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rv
ck5hbWUoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpKS5pc1RleHRJbnNlcnRpb24oKSkKKyAgICAg
ICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9y
TmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpLmlzVGV4dEluc2VydGlvbigpKQogICAgICAg
ICAgICAgICAgIGhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyB0ZXh0IGluc2VydGlvbiBjb21tYW5kcywgZGVmYXVs
dCBrZXlkb3duIGhhbmRsZXIgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gZXhlY3V0ZSB0aGUgY29tbWFu
ZHMuCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW4KICAgICAgICAg
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVw
bGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5l
cywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0
aW9uRW5kKTsKICAgICB9CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CkBAIC0yNzUs
NyArMjc1LDcgQEAgdm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24oRWRpdG9yU3RhdGUm
IG5ld1N0YXRlKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJt
Q29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7
CiAKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAg
dm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNhbmNlbENvbXBvc2l0aW9uKCk7CiAKICAgICBuZXdTdGF0
ZSA9IGVkaXRvclN0YXRlKCk7CiB9CkBAIC0yOTksMTMgKzI5OSwxMyBAQCB2b2lkIFdlYlBhZ2U6
Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHVpbgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSkpOwogICAgIH0KIAotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlv
bigpKSB7CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkgewogICAg
ICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRl
cnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgLy8gT25lIGV4
YW1wbGUgaXMgc3BhY2UgYmFyIHRoYXQgcmVzdWx0cyBpbiBzY3JvbGxpbmcgZG93biB0aGUgcGFn
ZS4KLSAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dCh0ZXh0LCBt
X2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKKyAgICAgICAgaGFuZGxlZCA9IGZyYW1l
LT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRleHQsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0
ZWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKKyAgICAgICAgZnJhbWUtPmVk
aXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbih0ZXh0KTsKICAgICB9CiAKICAgICBuZXdTdGF0ZSA9
IGVkaXRvclN0YXRlKCk7CkBAIC0zMjEsOCArMzIxLDggQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRE
aWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
U3QKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsK
ICAgICB9CiAKLSAgICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSk7
Ci0gICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQs
IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVy
cHJldGVkKTsKKyAgICBBU1NFUlQoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsK
KyAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLmluc2VydERpY3RhdGVkVGV4dCh0ZXh0LCBk
aWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnBy
ZXRlZCk7CiAgICAgbmV3U3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCkBAIC0zMzQsNyArMzM0
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVp
bnQ2NF90JiBsZW5ndGgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgp
OworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25S
YW5nZSgpOwogICAgIHNpemVfdCBsb2NhdGlvblNpemU7CiAgICAgc2l6ZV90IGxlbmd0aFNpemU7
CiAgICAgaWYgKHJhbmdlICYmIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9t
UmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVs
ZW1lbnQoKSwgcmFuZ2UuZ2V0KCksIGxvY2F0aW9uU2l6ZSwgbGVuZ3RoU2l6ZSkpIHsKQEAgLTQz
Nyw3ICs0MzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVp
bnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIFdlYgogICAgIEFTU0VSVChyYW5nZS0+
c3RhcnRDb250YWluZXIoKSk7CiAgICAgQVNTRVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CiAg
ICAgIAotICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFu
Z2UocmFuZ2UuZ2V0KCkpOworICAgIEludFJlY3QgcmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJz
dFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CiAgICAgcmVzdWx0UmVjdCA9IGZyYW1lLT52aWV3
KCktPmNvbnRlbnRzVG9XaW5kb3cocmVjdCk7CiB9CiAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBib29sJiByZQogICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlYWRTZWxlY3Rpb25G
cm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSk7CiAgICAgcmVzdWx0ID0gdHJ1ZTsKIH0KIApA
QCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChTdHJpbmcmIHN0cmluZ1ZhbHVlKQogICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkt
PmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdHJpbmdWYWx1ZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOworICAgIHN0cmluZ1ZhbHVl
ID0gZnJhbWUtPmVkaXRvcigpLnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBz
aXplKQpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNCiAgICAgaWYg
KCFmcmFtZSB8fCBmcmFtZS0+c2VsZWN0aW9uKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+ZWRpdG9yKCktPmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+ZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIHNpemUg
PSAwOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201850</attachid>
            <date>2013-05-15 10:16:32 -0700</date>
            <delta_ts>2013-05-15 12:39:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515101528.patch</filename>
            <type>text/plain</type>
            <size>288108</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDc3
YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5MjgwMDU2OWUuLmRkMGEzNzI3NjJiMTY3OGI0
ZmExMDUwYWJlZWM1MTg2M2E0OGVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJh
bmdlKTsKIAotICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3Qt
PnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Us
IGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNDBj
NWZlNjkwMWI4OGQ0MmYyNGNhMDA5MzhkOTUxMTEyMzEyMmUwZS4uMWEwYmNiZGM5MjI4NTI1NjA5
YjNkZGY2NGM3ZTgxYTBlNjAzMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLAogICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQoY2xpcGJvYXJkKTsKICAgICBkYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAg
ZGF0YU9iamVjdC0+c2V0VGV4dChzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICBkYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNl
bGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9u
TG9jYWxVUkxzKSk7CiAgICAgaGVscGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2Fy
ZCwgY2FuU21hcnRDb3B5T3JEZWxldGUgPyBQYXN0ZWJvYXJkSGVscGVyOjpJbmNsdWRlU21hcnRQ
YXN0ZSA6IFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5jbHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDI3ZjFlZDg0YWI4
ODdlNzEzYjEyMmE2OGMyMDAxNjgxZGI0ZDY2OGQuLjk0Zjg2NWE0YTQ5NmFmOWMyNDBiNmRiMjRi
MGFiMjg1YjAxYjliZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBm
cmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdAogICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0ZWJvYXJkIHNjaGVtZV07CiAgICAgICAg
IC8vIENhbm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5sZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2
MjY2Mj4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMxNT4gYXJlIGZpeGVkLgogICAgICAgICBp
ZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5n
XTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmlj
YWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkgewpA
QCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYXRlIG5hdmlnYXRpb24s
IHNvIHdlIHNob3VsZG4ndCBhbGxvdyBhcmJpdHJhcnkgZmlsZSBVUkxzLgogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsbG93IG9ubHkgaHR0cCBmYW1pbHkgc2NoZW1lcywgb3IgYW55dGhp
bmcgbm9uLWxvY2FsPwogICAgICAgICBpZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0
dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBh
c3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29s
dXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgyLDcgKzE4Miw3IEBAIFN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0CiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICAgICAg
aWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxl
c1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmIGlzRGlyZWN0b3J5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGIzMTc0NzM0YzZk
NzdmMTJjNDczMDkwYzdhNjE3Yzk1ZjYwYmFkODIuLjEyOWE0ZDliOTU3MDYxMmY5ZGEzYmQ3Mzkx
OWMwZjE0ZTUyYjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewotICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXpl
U2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9h
cmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShub0JyZWFrU3Bh
Y2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIE5vZGUqIGNvbW1v
bkFuY2VzdG9yID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKElHTk9SRV9FWENFUFRJ
T04pOwogICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAgICAgTm9kZSogZW5jbG9zaW5nQW5j
aG9yID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNl
c3RvciksIEhUTUxOYW1lczo6YVRhZyk7CkBAIC0xODAsNyArMTgwLDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyaWJ1dGVkU3RyaW5nID0gbmlsOwotICAgIFJldGFpblB0cjxXZWJI
VE1MQ29udmVydGVyPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFtbV2ViSFRNTENvbnZlcnRlciBhbGxv
Y10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCku
Z2V0KCkpXSk7CisgICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFk
b3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKV0pOwogICAgIGlmIChjb252ZXJ0ZXIp
CiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbY29udmVydGVyLmdldCgpIGF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIApAQCAtMTg4LDExICsxODgsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQo
KS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7
CiAgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNsaWVudFR5cGVzKTsKIAogICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNsaWVudFR5cGVzLnNpemUoKTsgKytpKQogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY2xpZW50RGF0YVtp
XSwgY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAg
ICAKICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmw7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29j
b2FVUkwpOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IGZyYW1lLT5lZGl0b3Io
KS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29jb2FVUkwpOwogICAgIAogICAgIE5TU3Ry
aW5nICp0aXRsZSA9IChOU1N0cmluZyopdGl0bGVTdHI7CiAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
ID09IDApIHsKQEAgLTM4MCw3ICszODAsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQg
dG8gY2FsbCBpbnRvIHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCiAgICAgICAgIC8vIGNhbGxpbmcg
X3dlYl91c2VyVmlzaWJsZVN0cmluZyBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEg
c2l6YWJsZSB3ZWIgb2YgCiAgICAgICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhl
ciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3
YXkuCi0gICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcg
PSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0cmluZ10pOwogICAgICAgICBpZiAoW3N0cmluZyBsZW5ndGhdID4gMCkKICAg
ICAgICAgICAgIHJldHVybiBbc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1h
cHBpbmddOwogICAgIH0KQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aFJURihGcmFtZSogZnJhbWUsIE5TU3Ry
aQogICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gcmVzb3VyY2VzOwotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLmNs
aWVudCgpLT5kb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5nLCByZXNv
dXJjZXMpOwogCiAgICAgc2l6ZV90IHNpemUgPSByZXNvdXJjZXMuc2l6ZSgpOwogICAgIGlmIChz
aXplKSB7CkBAIC01MTMsNyArNTEzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQ
YXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgLy8gTm9uLWltYWdlIGZpbGUgdHlwZXM7IF93ZWJfdXNlclZpc2libGVTdHJpbmcgaXMgYXBw
cm9wcmlhdGUgaGVyZSBiZWNhdXNlIHRoaXMgd2lsbAogICAgICAgICAgICAgLy8gYmUgcGFzdGVk
IGFzIHZpc2libGUgdGV4dC4KLSAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhdGhzW2ldXSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdXJsID0gZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhz
W2ldXSk7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y3JlYXRlVGV4dE5vZGUodXJsKTsKICAgICAgICAgICAgIHJlZk5vZGVzVmVjdG9yLmFw
cGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBub2Rlc1ZlY3Rvci5hcHBlbmQodGV4
dE5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDFiZWNkYTMxM2Q4ZjlkMjcyNzQ1YWU1NDBkOGViMmU3MjYxZGUxOTQuLjU5N2Y3ZTE4
YWVmODViOWVlMjE0OThhYTM4NGFjYjJlMDlhOGNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIENsaXBib2Fy
ZFF0Ojp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFt
X3dyaXRhYmxlRGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwot
ICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCk7CisgICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIo
JyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJs
ZURhdGEtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggNTUwYWY3YWNlOTc1YzcxZTcwMzgzNjdhZDQ4
YzI1MWU4MWI0ZmQ5My4uNzI2NGMwOTRkMjVjNWNiMTdhNDE2NGRiZTlkODFlMzdhMDcwMDg3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCkKIHsKICAgICBRTWltZURhdGEqIG1kID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRl
eHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUlt
YWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJp
bmcgdGV4dCA9IHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNs
dWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRl
eHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRl
eHQodGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKaW5kZXggODc1MTk3ZmNkMDg0OWZkZThhZDAyNmI0YTM1YzU4Yjk2OGIxMzViYS4uMWVlODJm
ZDM5OTE5OWI3ZWQ1ZDk1NGQzYWI5NDFmODBjMzEyMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIENs
aXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1l
KQogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3Qt
PlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFs
RnJlZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0
cik7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7CkBAIC03NTks
NyArNzU5LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKIAogICAgIG1lZGl1bS5oR2xvYmFsID0gMDsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5j
YW5TbWFydENvcHlPckRlbGV0ZSgpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRD
b3B5T3JEZWxldGUoKSkKICAgICAgICAgbV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoc21h
cnRQYXN0ZUZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGUyZDcxZDE0YjI3NGFjNzgwMjFh
ZjU0NzU4YWI3NDEwNzk1ZTk2YjMuLmFjNzA2YzRjNTEwMDQyOTUxNTNlMTg1YjQxNDFkMmJjNjEy
ZmYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0KICAg
ICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RF
VEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0ciA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9y
Q2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7
CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDY1MmIxOGJkY2VlZTY0ZDYzNzk3MmNmMTIz
MzE0ZjhjNzI0NWJiOTkuLjc0MTA5ZTFmN2FlMzE3ZDdmMWViZmY1MDJmZDQ5MmUxZjU1NGNkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTY0MCw3
ICs2NDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXMoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5kaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAogTm9kZSogSGl0VGVzdFJlc3Vs
dDo6dGFyZ2V0Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggZjI2YzE5ZDcxZTVjODMxNWQ5ZTE4ZDViMzI5MTU2YTJkZWZiYzdjMi4u
NzAyNjk5NmNjMjFhODlhY2Q3ZDVlMzRjZDk3ZGM5Mzk3NWY0ODcwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJv
eFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdl
IGhhdmUgY29tcG9zaXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgotICAgIGJvb2wgY29udGFpbnND
b21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIGJv
b2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIo
KS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsK
KyAgICBib29sIGNvbnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVu
ZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIo
KS0+bm9kZSgpOworICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9z
aXRpb24gJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3Vz
dG9tVW5kZXJsaW5lcygpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IGNvbG9ycyBhbmQg
c2VsZWN0aW9uIGNvbG9ycy4KICAgICBDb2xvciB0ZXh0RmlsbENvbG9yOwpAQCAtNjU3LDggKzY1
Nyw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgICAgICBpZiAoY29udGFpbnNDb21w
b3NpdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcykKICAgICAgICAgICAgIHBhaW50Q29tcG9z
aXRpb25CYWNrZ3JvdW5kKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwKLSAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25T
dGFydCgpLAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5j
b21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCksCisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSk7CiAKICAgICAgICAgcGFpbnREb2N1
bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCB0cnVlKTsK
IApAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFp
bnREb2N1bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCBm
YWxzZSk7CiAKICAgICAgICAgaWYgKHVzZUN1c3RvbVVuZGVybGluZXMpIHsKLSAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCk7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
ID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxp
bmVzKCk7CiAgICAgICAgICAgICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6
ZSgpOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5k
ZXJsaW5lczsgKytpbmRleCkgewpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgIHRvUmVuZGVyZWREb2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJl
ZFJlY3QobWFya2VyUmVjdCk7CiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKICAgICAgICAgQ29s
b3IgY29sb3IgPSBtYXJrZXItPmFjdGl2ZU1hdGNoKCkgPwogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCBkZmI0ZWIxNTBiZDUyMGUyZDAzNjU1OGE2MGZmYTAwNzMxY2IyMTRlLi5kNzA5NjE2
NTZjZjdmMmEwZjJlYmM5YWM3ODA3OGUxYWRkYTMxODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTUyODYsNyArNTI4Niw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBM
YXlvdXRQb2luCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG1vdmVDYXJldFRvQm91bmRh
cnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRNb3Zl
Q2FyZXRUb0hvcml6b250YWxCb3VuZGFyeVdoZW5QYXN0VG9wT3JCb3R0b20oKTsKKyAgICBib29s
IG1vdmVDYXJldFRvQm91bmRhcnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJv
dHRvbSgpOwogCiAgICAgaWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYm
IGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyBsYXN0IHJvb3QgbGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTdlYTE1NTIzODIzNmYyZmMxYmJiZTkxNGNjMDU0NTNm
OTRjYTRhZS4uZTk0NWVmMzQ2NDAzZjE3MzllNjIxZTI5N2U1NGM2NTVkZTY2MGYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjM2LDEwICsyMzYsMTAgQEAgc3RhdGlj
IGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUKIAogc3RhdGljIFNwZWxsQ2hlY2tlciogc3BlbGxjaGVja2VyKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpKQorICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNwZWxsQ2hlY2tlcigpOworICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2VyKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIEludGVybmFsczo6aW50ZXJuYWxzSWQgPSAiaW50ZXJuYWxzIjsKQEAgLTI4NCwxMCArMjg0
LDEwIEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2Up
CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKCFw
YWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKTsKLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigp
LT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQor
ICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxs
Q2hlY2tpbmcoKTsKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjpo
YXNTcGVsbGluZ01hcmtlcihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3Ro
LCBFeGNlCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBs
ZW5ndGgpOworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgp
OwogfQogICAgIAogYm9vbCBJbnRlcm5hbHM6Omhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihE
b2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLAogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvcihEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCiB2
b2lkIEludGVybmFsczo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lkIEludGVybmFs
czo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpCiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50
KCktPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkICE9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgIGlmIChlbmFibGVkICE9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmKQpAQCAtMTQ1Miw4ICsxNDUyLDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlm
CkBAIC0xNDY1LDggKzE0NjUsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFi
bGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0NzgsOCArMTQ3OCw4IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC0xNDkxLDggKzE0OTEsOCBAQCB2b2lkIEludGVybmFsczo6c2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4
dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBA
IC0xNTA0LDggKzE1MDQsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZAogICAgICAgICByZXR1
cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVuYWJs
ZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAg
ICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0xNTE2
LDcgKzE1MTYsNyBAQCBib29sIEludGVybmFsczo6aXNPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVu
dC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsK
IH0KIAogdm9pZCBJbnRlcm5hbHM6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNTI0LDcgKzE1MjQsNyBAQCB2b2lkIElu
dGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJikKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT50b2dn
bGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKQEAgLTE2MTksNyArMTYxOSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNHcmFtbWFyTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGZyb20sIGxlbmd0aCk7CisgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
SW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGJl
ZWQyMDdiZTY0N2RiOGZmZGUyODMzNmJkYjMwNTIxMjU5ZmNlYzIuLmQ1MTUyZTAxMDI5MjVhNGMx
M2UwYzUyMTdkODIzNzI4ZTE4ZjE2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNo
b3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQoKQogICAgIH0KIAogICAgIC8vIENoZWNrIGlmIHRo
ZSBub2RlIGRpc2FibGVzIHNwZWxsIGNoZWNraW5nIGRpcmVjdGx5LgotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9k
ZSgpOwogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgd2UgYXJlIG5vdCB0cnlpbmcgdG8gaW5zZXJ0IHRleHQgb24ga2V5IGRv
d24uCi0gICAgQVNTRVJUKCEoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50ICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0SW5zZXJ0
aW9uKCkpKTsKKyAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmlzVGV4dElu
c2VydGlvbigpKSk7CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBIb3Qga2V5IGhhbmRsaW5nLiBDYW5jZWwgcHJvY2Vzc2luZyBtb2RlLgogICAgICAgICBp
ZiAoY29tbWFuZE5hbWUgIT0gIkRlbGV0ZUJhY2t3YXJkIikKICAgICAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5zZXRQcm9jZXNzaW5nQ2hhbmdlKGZhbHNlKTsKIAot
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhl
Y3V0ZSgpKQogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGV4dCBpbnNlcnRpb24gY29tbWFuZHMgc2hvdWxkIG9ubHkgYmUgdHJpZ2dlcmVkIGZy
b20ga2V5cHJlc3NFdmVudC4KQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGxhdGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQt
PnRleHQoKSwgZXZlbnQpKQorICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
cGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IGJlOTY0ODE5MDM5NGFlMTVm
NGFjNjE2OTI0NGViYjU3OTU3NTY2OTAuLjQwNDIxYzMyOWZhZDQ4YTBjNjkwOGZiYmYyZWY1OWU2
MTcwZjBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0RPTVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0RPTVN1cHBvcnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgQXR0cmlidXRlU3RhdGUg
ZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUKIAogYm9vbCBlbGVtZW50SGFzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudCkKIHsKLSAgICByZXR1
cm4gZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAogLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBpbnB1
dCBmaWVsZCB0aGF0IHdpbGwgYmUgZm9jdXNlZCAmIHJlcXVpcmUgaW5wdXQgc3VwcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUGFnZVNl
YXJjaE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKaW5kZXggYTMzODBiM2UzM2M4MGQ3NjZiMjE5NGM3NjMw
MWJhYzc5NjdmYjRlNy4uNDA5MWRhZTZmYzY5MmFkMDAzNDM0YjMwMjNjNTA3ZDA1NzEzM2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIElu
UGFnZVNlYXJjaE1hbmFnZXI6OnNob3VsZFNlYXJjaEZvclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogCiBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBGaW5kT3B0aW9ucyYg
b3B0aW9ucywgYm9vbCBpc05ld1NlYXJjaCwgYm9vbCBzdGFydEZyb21TZWxlY3Rpb24pCiB7Ci0g
ICAgaWYgKFJlZlB0cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmdB
bmRTY3JvbGxUb1Zpc2libGUodGV4dCwgcmFuZ2UsIG9wdGlvbnMpKSB7CisgICAgaWYgKFJlZlB0
cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlz
aWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgaGlnaGxp
Z2h0IHRvIHRoZSBuZXcgbWF0Y2guCiAgICAgICAgIHNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKG1h
dGNoKTsKICAgICAgICAgaWYgKGlzTmV3U2VhcmNoKSB7CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9v
bCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHNjb3BlU3Ry
aW5nTWF0Y2hlcyBkb2VzIG5vdCBhZGQgYW55IG1hcmtlcnMsIGl0IG9ubHkgY291bnRzIHRoZSBu
dW1iZXIuCiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bm1hcmtBbGxUZXh0TWF0Y2hl
cywgaXQgaXMgYWxyZWFkeSBkb25lIGZyb20gdGhlIGNhbGxlciBiZWNhdXNlIG9mIG5ld1NlYXJj
aAogICAgICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1h
cmtUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtCiAgICAgICAgICAg
ICAvLyBhbGwgbWF0Y2hlcyBidXQgY291bnQgdGhlbS4KICAgICAgICAgICAgIG1fd2ViUGFnZS0+
bV9wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwogICAgICAgICAgICAgbV9hY3RpdmVNYXRj
aC0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2
ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgcmVzZXQsIGJvbwogICAgICAgICAg
ICAgbV9hY3RpdmVNYXRjaEluZGV4ICs9IG1hdGNoQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAobV9oaWdobGlnaHRBbGxNYXRjaGVzKQotICAgICAgICAgICAgICAgIHNj
b3BpbmdGcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
dHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIHNjb3BpbmdGcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoQ291bnQgKz0gbWF0Y2hDb3VudDsKICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnVwZGF0ZUZpbmRTdHJpbmdSZXN1bHQobV9h
Y3RpdmVNYXRjaENvdW50LCBtX2FjdGl2ZU1hdGNoSW5kZXgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCmluZGV4IDMzM2QxMjRhM2I1NWU0ZDM3YjBmMmQxZmVjMjYzMzg3YzZjMWYy
ZmEuLjcwNmYxMDllNzRlMjdmYjk5NWE3MjYzNThlOTU2NTZmMTA0YjY5MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpj
YW5jZWxTZWxlY3Rpb24oKQogCiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIFNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICByZXR1
cm4gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCk7CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcHBpbmdSZWN0
Rm9yVmlzaWJsZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXgg
ZDBjZTM4YTJmZmRhN2ZjNjMwYWM0NmNkY2YxNTVhOGQzMWEwYTMwYS4uMjI0YTRiNzBjN2EyZjc3
Mzc3MDBhMmMxZDc0ZTEzZTQwZjc4YWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrVmkKIHsKICAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFt
ZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQog
CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc0NvbW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zCiB7CiAg
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwog
Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFu
ZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmZvcmNlTGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU1MCwxNCArNTUwLDE0IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
IHx8ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVk
aXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkp
KQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0
KCkgJiYgIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHRleHQpOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAg
ICB1bmRlcmxpbmVzLmFwcGVuZChXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21w
b3NpdGlvblN0cmluZy5sZW5ndGgoKSwgV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
Ci0gICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5l
cywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKKyAgICBlZGl0b3Iuc2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIHN0YXJ0LCBzdGFydCArIGxlbmd0aCk7CiB9CiAK
IGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbihjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTU2NywxMSArNTY3LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkgfHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Y29uc3QgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpOwor
ICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0
LCBpbnQqIGxlbmd0aCkKQEAgLTU4MywxMiArNTc5LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0
YXJ0CiAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgKnN0YXJ0ID0gZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCk7Ci0gICAgKmxlbmd0aCA9IGVk
aXRvci0+Y29tcG9zaXRpb25FbmQoKSAtICpzdGFydDsKKyAgICAqc3RhcnQgPSBlZGl0b3IuY29t
cG9zaXRpb25TdGFydCgpOworICAgICpsZW5ndGggPSBlZGl0b3IuY29tcG9zaXRpb25FbmQoKSAt
ICpzdGFydDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTk5LDQwICs1OTUsMzcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2gKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8
ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRv
cikKLSAgICAgICAgcmV0dXJuOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAotICAg
IGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVkaXRvci0+aW5zZXJ0
VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21w
b3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgo
dGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRleHQpIHsKLSAg
ICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7
CisgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRp
b24oKTsKKyAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIFdlYkNvcmU6Oklu
dFJlY3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIFdlYkNvcmU6Oklu
dFJlY3QoKSk7CiAKLSAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8ICFwYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgfHwgIXBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOwogCiAgICAg
aWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgp
KQogICAgICAgICBsZW5ndGggPSAwOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsKIAotICAgIHJldHVybiBlZGl0b3ItPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpcnN0
UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGlu
dCogbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAKaW5kZXggOTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQw
YmEyYjQ5Yy4uMjRkYTUxZGQ2YzEzNDc2ZTdkNzNmYzZjZDhkNWQ0MWU2YjQzMzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihGcmFtZSogY29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlm
IChjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSA9IEVXS1ByaXZh
dGU6OmtpdEZyYW1lKGNvcmVGcmFtZSk7CiAgICAgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQod2ViRnJhbWUpOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Y2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOworICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudEVmbDo6ZGlkRW5kRWRpdGluZygpCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsK
KyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0
aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJl
YXRlZCwKQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQg
Y2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNh
biByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKQEAgLTM0OCw3ICszNDgsNyBAQCBib29s
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtl
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwg
ZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXgg
ZjRkM2MwZTRmMTNlZjc4YjlmYjExMWZjY2RjYzY5MDY3NjVmNzkwZC4uY2NmN2U1MDJmN2JjNTU5
ZWVhMGZlODY3Zjk2NWU4NGZlMmI3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgc21hcnREYXRhLT5lZGl0YWJsZSA9IGVkaXRhYmxlOwogICAgIGlmIChlZGl0
YWJsZSkKLSAgICAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDg4LDcgKzQ4OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVk
VGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2Vs
ZWN0ZWRUZXh0LmRhdGEoKSk7CkBAIC01MDAsNyArNTAwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRl
eHQsIEUKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxz
ZSk7CiAKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmco
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFw
LCB0cnVlKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmlu
ZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdy
YXAsIHRydWUpOwogfQogCiB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJr
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZVNlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQpAQCAt
NTA5LDggKzUwOSw4IEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmso
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDApOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsK
LSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0
LCB0cnVlLCAwKTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJh
bWUpCkBAIC01MjYsNyArNTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbAogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCku
c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC01MzQsNyArNTM0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBmM2ZhOGUxYTIyMjNiNGM5MWE3NTA0MDY3YzZm
ZWEzNWE3YmRhOGRiLi40YThhYWYzMzg0Nzg2Y2RlNjExNDkxMDNmODA0NDNjMGYxYTIyMzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTE2NjgsNyArMTY2OCw3IEBAIGNvbnN0
IGNoYXIqIGV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwot
ICAgIENTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgQ1N0cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgp
OwogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfZXhl
Y3V0ZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrXwogICAgIGlmICghY29t
bWFuZFN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
KTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0
X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCkBAIC00MTAyLDExICs0MTAyLDExIEBAIHZvaWQgZXdr
X3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVGV4dF9E
aXJlY3Rpb24gZGlyZWN0CiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsK
LSAgICBpZiAoIWVkaXRvci0+Y2FuRWRpdCgpKQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9y
ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oc3Rh
dGljX2Nhc3Q8V3JpdGluZ0RpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgZWRpdG9yLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKHN0YXRpY19jYXN0PFdyaXRpbmdEaXJlY3Rpb24+KGRpcmVjdGlv
bikpOwogfQogCiB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlv
dXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA5YTUyZTdmNTE2ZGM4MjZkNjBl
ZWEzMjM0NjI0NGY1YzFkYjM3MWY0Li45YjUzOGM0MmM2NTM2ZGQxODM5NWZjM2VmYzMwNzczMTg5
ODlkOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6
cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgLy8gc3luY2VkIHdpdGgg
Y3Vyc29yIG1vdmVtZW50LiBGb3IgaW5zdGFuY2UsIGEgdGV4dCBmaWVsZCBjYW4gbW92ZSB3aXRo
b3V0CiAgICAgLy8gdGhlIHNlbGVjdGlvbiBjaGFuZ2luZy4KICAgICBGcmFtZSogZm9jdXNlZEZy
YW1lID0gY29yZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5zZXRDdXJzb3JS
ZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMmEzZDRjZTc3ZjlhOGI3M2U2M2YxZGZkMjQ0M2Mz
NTY1MmJjMjUzNS4uNzg0MTA0MGFmYWI2NDEzODczMDM0MjhjNjIwNDNiNGM0MjFmNThmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OworICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUpCkBAIC0yODQsNyArMjg0LDcgQEAgYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldyksIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAg
ICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgY2hhciogdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQpAQCAtMjk2LDE0
ICsyOTYsMTQgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENvbXBvc2l0aW9u
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAg
ICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBv
c2l0aW9uKCkpKQorICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIGlm
ICghZWRpdG9yLmNhbkVkaXQoKSAmJiAhZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBjb21wb3NpdGlvblN0cmluZyA9IFN0cmluZzo6ZnJvbVVU
RjgodGV4dCk7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwog
ICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9u
U3RyaW5nLmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKLSAgICBlZGl0b3ItPnNl
dENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBzdGFydCwgc3RhcnQg
KyBsZW5ndGgpOworICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
dW5kZXJsaW5lcywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6Omhhc0NvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBA
IC0zMTIsMTEgKzMxMiw4IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpoYXNDb21w
b3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWRpdG9yKiBlZGl0b3IgPSBm
cmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Y29tcG9zaXRpb25SYW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBpbnQqIHN0
YXJ0LCBpbnQqIGxlbmd0aCkKQEAgLTMyOSwxMiArMzI2LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpjb21wb3NpdGlvblJhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGlu
dCogc3RhCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWRp
dG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0b3Io
KTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAqc3RhcnQgPSBlZGl0b3ItPmNvbXBvc2l0aW9uU3RhcnQoKTsKLSAgICAqbGVu
Z3RoID0gZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpIC0gKnN0YXJ0OworICAgICpzdGFydCA9IGVk
aXRvci5jb21wb3NpdGlvblN0YXJ0KCk7CisgICAgKmxlbmd0aCA9IGVkaXRvci5jb21wb3NpdGlv
bkVuZCgpIC0gKnN0YXJ0OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNDYsMTkgKzM0Mywx
NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y29uZmlybUNvbXBvc2l0aW9uKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFl
ZGl0b3IpCi0gICAgICAgIHJldHVybjsKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0
b3IoKTsKIAotICAgIGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVk
aXRvci0+aW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVk
aXRvci5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmlu
Zzo6ZnJvbVVURjgodGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0
ZXh0KSB7Ci0gICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVU
RjgodGV4dCkpOworICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJv
bVVURjgodGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVkaXRvci0+Y29uZmly
bUNvbXBvc2l0aW9uKCk7CisgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZG9Db21tYW5kKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGNoYXIqIGNvbW1hbmQpCkBAIC0zNjgsOSArMzYzLDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmRvQ29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiBjb20KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBF
ZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAg
ICAgcmV0dXJuOworICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAg
U3RyaW5nIGNvbW1hbmRTdHJpbmcoY29tbWFuZCk7CiAgICAgLy8gUmVtb3ZlIGVuZGluZyA6IGhl
cmUuCkBAIC0zODMsNyArMzc2LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmRv
Q29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBjb20KICAgICBmaXJz
dENoYXIubWFrZVVwcGVyKCk7CiAgICAgY29tbWFuZFN0cmluZy5pbnNlcnQoZmlyc3RDaGFyLCAw
KTsKIAotICAgIGVkaXRvci0+Y29tbWFuZChjb21tYW5kU3RyaW5nKS5leGVjdXRlKCk7CisgICAg
ZWRpdG9yLmNvbW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZSgpOwogfQogCiBib29sIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBjYWlyb19yZWN0YW5nbGVf
aW50X3QqIHJlY3QpCkBAIC00MDYsNyArMzk5LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAqcmVjdCA9IGVk
aXRvci0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgICpyZWN0ID0gZWRpdG9y
LmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5jcHAKaW5kZXggNTdmYWNhZjMxMTAzOTlhNWFjYjA2NDVlNzBkYzkyOTI0NWU3YWE0Ni4uNTA5
MDkwNDczMWM0OTczMGY3YzZlOWViMTA1ZWNhODY1MjFkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNTUs
NyArMjU1LDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24o
RnJhbWUqIGZyYW1lKQogICAgIHNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZCht
X3dlYlZpZXcpOwogI2VuZGlmCiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21w
b3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5j
YW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCiAgICAgICAgIG1fd2ViVmll
dy0+cHJpdi0+aW1GaWx0ZXIucmVzZXRDb250ZXh0KCk7CiB9CiAKQEAgLTM5NCw3ICszOTQsNyBA
QCBib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSog
ZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZQogewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+
IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29t
bWFuZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQobV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJ
bnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ1NSw3ICs0NTUsNyBA
QCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24g
Y29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4
ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpKSkgeworICAgICAgICBpZiAoZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwg
ZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkpIHsKICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00NjMsNyAr
NDYzLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24g
Zm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIFRoaXMgaXMganVzdCBhIG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28g
d2FpdCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAocGxhdGZvcm1FdmVudC0+Y3RybEtleSgpIHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0
KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCku
aW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4
IDMzOTg5MTFlZGQ5MGQ5OTFiOWZhMmYyMDg2NGZiNmQzMzliMTY0NWEuLjk4NzdmY2ExOTZmNjlj
NDU4ZWEyMTVjZDk2OTM0ZDUyZWFmOTI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcApA
QCAtNTEsNyArNTEsNyBAQCB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6c2V0V2ViVmll
dyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6
OmNhbkVkaXQoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwot
ICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1
cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogYm9vbCBXZWJWaWV3
SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRTaW1wbGVLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQs
IFdURjo6U3RyaW5nIHNpbXBsZVN0cmluZywgRXZlbnRGYWtlZEZvckNvbXBvc2l0aW9uKQpAQCAt
NzYsNDIgKzc2LDQyIEBAIGJvb2wgV2ViVmlld0lucHV0TWV0aG9kRmlsdGVyOjpzZW5kS2V5RXZl
bnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdka0V2ZW50S2V5KiBlCiB2b2lkIFdlYlZpZXdJbnB1
dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4dChTdHJpbmcgdGV4dCkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGV4dC5pc051
bGwoKSkgewogICAgICAgICBjb25maXJtQ3VycmVudENvbXBvc2l0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24obV9j
b25maXJtZWRDb21wb3NpdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3Np
dGlvbihtX2NvbmZpcm1lZENvbXBvc2l0aW9uKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRo
b2RGaWx0ZXI6OmNvbmZpcm1DdXJyZW50Q29tcG9zaXRpb24oKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0
b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21w
b3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0K
IAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbmNlbEN1cnJlbnRDb21wb3NpdGlv
bigpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2Fu
Y2VsQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNl
dFByZWVkaXQoU3RyaW5nIG5ld1ByZWVkaXQsIGludCBjdXJzb3JPZmZzZXQpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRv
cigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVE9ETzogV2Ugc2hvdWxk
IHBhcnNlIHRoZSBQYW5nb0F0dHJMaXN0IHRoYXQgd2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQg
aGVyZS4KICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAg
dW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgbmV3UHJlZWRpdC5sZW5n
dGgoKSwgQ29sb3IoMSwgMSwgMSksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRD
b21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJz
b3JPZmZzZXQpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0
LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwCmluZGV4IDMzNDYxNjRkOGM2NTU5Y2I4YzkxMDJkMmFiZmFhMDk1NGI1Yzg0ODkuLjE2
M2Y2ZjBiYzU1NjUzNjM4NmEyYjlhNDQ1N2M3Yjg5OGMzNWYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9p
ZCB3ZWJraXRfd2ViX2ZyYW1lX3JlcGxhY2Vfc2VsZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgY2hhciogdGV4dCkKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7
CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCA9IGZhbHNlOwogICAgIGJvb2wgc21hcnRSZXBs
YWNlID0gdHJ1ZTsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFj
ZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDA3NjY2YmU2YWRhMDIyOTUyZTRmNjhmZTM1ZWFmZTQ4
MDg1NjY4OGQuLmM1ODJiNjY5NmNkYWMwZjIwYWY3YjI5YWE4NjQ3OTljNTEwYzU4ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ0Miw3ICs0NDIs
NyBAQCBzdGF0aWMgSW50UG9pbnQgZ2V0TG9jYXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRl
eHRNZW51KEZyYW1lKiBmcmFtZSkKICAgICAvLyBzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0
UmFuZ2UgY2FuIHJldHVybiAwIGhlcmUsIGJ1dCBpZiB0aGF0IHdhcyB0aGUgY2FzZQogICAgIC8v
IHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxk
IGhhdmUgcmV0dXJuZWQgZmFsc2UKICAgICAvLyBhYm92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8g
Y2hlY2sgaXQuCi0gICAgSW50UmVjdCBmaXJzdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0
UmVjdEZvclJhbmdlKHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsK
KyAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5n
ZShzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJu
IEludFBvaW50KGZpcnN0UmVjdC54KCksIGZpcnN0UmVjdC5tYXhZKCkpOwogfQogCkBAIC05Mzgs
NyArOTM4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cyoKICAgICBlbHNlCiAgICAgICAgIGZv
Y3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1lKGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgp
KTsKIAotICAgIGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKQorICAgIGlmIChmb2N1c0NvbnRyb2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0
b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHdlYlZpZXctPnByaXYtPmltRmlsdGVyLm5vdGlmeUZv
Y3VzZWRJbigpOwogICAgIHJldHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19w
YXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTExODEs
MzEgKzExODEsMzEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNv
bGVfbWVzc2FnZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb24KIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19yZWFsX3NlbGVjdF9hbGwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwi
KS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4
ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBi
b2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfcmVhbF9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5l
eGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3VuZG8oV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJV
bmRvIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9y
ZWRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29yIChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBH
dGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3VudCkKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR3RrTW92CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9w
YXN0ZV9jbGlwYm9hcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rp
b24oV2ViS2l0V2ViVmlldyopCkBAIC00Mzg5LDcgKzQzODksNyBAQCB2b2lkIHdlYmtpdF93ZWJf
dmlld19zZXRfaGlnaGxpZ2h0X3RleHRfbWF0Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBn
Ym9vbGVhbgogCiAgICAgRnJhbWUgKmZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7
CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVz
QXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKICAg
ICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7
CiAgICAgfSB3aGlsZSAoZnJhbWUpOwogfQpAQCAtNDQ1OSw3ICs0NDU5LDcgQEAgZ2Jvb2xlYW4g
d2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBG
QUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTEN1dCgpOworICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCk7
CiB9CiAKIC8qKgpAQCAtNDQ3NSw3ICs0NDc1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2Nhbl9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhbkNvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCkuY2FuQ29weSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKTsKIH0KIAogLyoq
CkBAIC00NDkxLDcgKzQ0OTEsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Bhc3Rl
X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZy
YW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgfHwgZnJhbWUtPmVk
aXRvcigpLT5jYW5ESFRNTFBhc3RlKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5Q
YXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTFBhc3RlKCk7CiB9CiAKIC8qKgpAQCAt
NDU0Nyw3ICs0NTQ3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGVsZXRlX3NlbGVjdGlvbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgp
OwogfQogCiAvKioKQEAgLTQ2MjksNyArNDYyOSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwogCiAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAv
LyBUT0RPOiBJZiB0aGUgV2ViS2l0V2ViVmlldyBpcyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2Vs
ZWN0aW9uIGlzIGVtcHR5LCBzZXQgaXQgdG8gc29tZXRoaW5nLgogICAgICAgICAvL2lmICghd2Vi
a2l0X3dlYl92aWV3X2dldF9zZWxlY3RlZF9kb21fcmFuZ2Uod2ViVmlldykpCiAgICAgICAgIC8v
ICAgIG1haW5GcmFtZS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTUwOTAsNyArNTA5MCw3
IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPmNhblVuZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0K
IAogLyoqCkBAIC01MTI1LDcgKzUxMjUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3JlZG8oV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggNmQzYzZiMGZhNWQ2MjFjMjgzNmNjMGM2NGY4ZjYxYTNiMjk3ZmU2MC4u
YTAzNTRiNDI1MGYzM2U5Njg4MDRkYTJhYzExMTA2YjQ5ZTcxMDdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC00OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSBX
ZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5T
U3RyaW5nICopX3NlbGVjdGVkU3RyaW5nCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJh
bWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJh
bmdlOihET01SYW5nZSAqKXJhbmdlCkBAIC02MDIsNyArNjAyLDcgQEAgc3RhdGljIGlubGluZSBX
ZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5T
UmVjdClfZmlyc3RSZWN0Rm9yRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsKLSAgIHJldHVy
biBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShy
YW5nZSkpOworICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmZpcnN0UmVj
dEZvclJhbmdlKGNvcmUocmFuZ2UpKTsKIH0KIAogLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zp
c2libGU6KERPTVJhbmdlICopcmFuZ2UKQEAgLTY3Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW5saW5l
IFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAo
RE9NUmFuZ2UgKilfbWFya0RPTVJhbmdlCiB7Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAg
IHJldHVybiBraXQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAvLyBHaXZlbiBwcm9wb3NlZFJhbmdlLCByZXR1cm5z
IGFuIGV4dGVuZGVkIHJhbmdlIHRoYXQgaW5jbHVkZXMgYWRqYWNlbnQgd2hpdGVzcGFjZSB0aGF0
IHNob3VsZApAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmIChfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9w
cml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1
b3RlZENvbnRlbnQoKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKIH0KIAogLSAoVmlzaWJsZVBvc2l0
aW9uKV92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDooTlNQb2ludClwb2ludApAQCAtNzc1LDcgKzc3
NSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSB8fCAhc3R5bGUpCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRl
IGEgY29weSBoZXJlLgotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5jb21wdXRl
QW5kU2V0VHlwaW5nU3R5bGUoY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVu
ZG9BY3Rpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRT
ZXRUeXBpbmdTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0Fj
dGlvbik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtOTI4LDcgKzkyOCw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciog
bG9hZGVyKQogewogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNO
b25lKCkgfHwgIWZyYWdtZW50KQogICAgICAgICByZXR1cm47Ci0gICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVu
dCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOworICAgIF9w
cml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQo
Y29yZShmcmFnbWVudCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5
bGUpOwogfQogCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICop
dGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxh
Y2U6KEJPT0wpc21hcnRSZXBsYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDM3NmRmOWI4NDg0MGJmMjg3Y2M5YzE1OWM2
ZDBkNDBlM2FhZTlkMWMuLmQ2MTIwYWU5MWQ3ZTYwNjc2OGE1N2E5OTY2NDJmNGE3NGMwOTEyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJh
eUJ5Q29uY2F0ZW5hdGluZ0FycmF5cyhOU0FycmF5ICpmaXJzdCwgTlNBcnJheSAqc2UKICAgICAg
ICAgcmV0dXJuOwogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CiAg
ICAgaWYgKFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gd2ViRnJhbWUgJiYgW3dlYlZpZXcgaXNFZGl0
YWJsZV0pCi0gICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5
bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAgIGNvcmUod2ViRnJhbWUpLT5lZGl0b3IoKS5hcHBs
eUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKIH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9j
dW1lbnRTb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDhmZjY1YWIwMDNlNzUzNDFhMjcwNWI5ZTgxMTlkMzRiMjc1NGNmOWUuLmUxNjY5ZDdhODkyNDZh
NTlhNjdlMGJjM2IyNWFkOGI0YWNjOWQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtODY0LDcgKzg2NCw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJM
V2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZy
YWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21lbnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJk
IGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4dDphbGxvd1BsYWluVGV4dF07CiAgICAgaWYg
KGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNlcnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNp
bmdET01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkK
LSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21l
bnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZh
bHNlKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShm
cmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJk
XSwgZmFsc2UpOwogI2Vsc2UKICAgICAvLyBNYWlsIGlzIGlnbm9yaW5nIHRoZSBmcmFtZW50IHBh
c3NlZCB0byB0aGUgZGVsZWdhdGUgYW5kIGNyZWF0ZXMgYSBuZXcgb25lLgogICAgIC8vIFdlIHdh
bnQgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIGZyYWdtZW50IHR3aWNlLgpAQCAtODcyLDEyICs4NzIs
MTIgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxXaXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpy
ZWxhdGl2ZVBhcnQpCiAgICAgICAgIGlmIChbc2VsZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6bmls
IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Q
YXN0ZWRdKSB7CiAgICAgICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtz
ZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6
cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICAgICAgaWYgKGZy
YWdtZW50KQotICAgICAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFn
bWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2NhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJk
OnBhc3RlYm9hcmRdLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3Io
KS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VX
aXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogICAgICAgICB9ICAgICAgICAKICAg
ICB9IGVsc2UgewogICAgICAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxm
IF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFu
Z2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRleHRdOwogICAgICAgICBpZiAoZnJhZ21lbnQg
JiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdl
OnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBb
c2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsK
KyAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJh
Z21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0s
IGZhbHNlKTsKICAgICB9CiAjZW5kaWYKICAgICBbd2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZDpuaWxdOwpAQCAtOTgzLDcgKzk4Myw3IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0
aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVsYXRpdmVQYXJ0KQogLSAoQk9PTClfc2hvdWxkRGVs
ZXRlUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRp
dG9yKCktPnNob3VsZERlbGV0ZVJhbmdlKGNvcmUocmFuZ2UpKTsKKyAgICByZXR1cm4gY29yZUZy
YW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkp
OwogfQogCiAtIChOU1ZpZXcgKilfaGl0Vmlld0ZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAg
LTE3NTgsMTMgKzE3NTgsMTMgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tP
ckRyYWcoTlNFdmVudCAqZXZlbnQpCiAtIChCT09MKV9jYW5FZGl0CiB7CiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBj
b3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBj
b3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKIH0KIAogLSAoQk9PTClfY2FuRWRpdFJpY2hs
eQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJl
dHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOwor
ICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5
KCk7CiB9CiAKIC0gKEJPT0wpX2NhbkFsdGVyQ3VycmVudFNlbGVjdGlvbgpAQCAtMTgyNCw1MCAr
MTgyNCw1MCBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2
ZW50ICpldmVudCkKIC0gKERPTU5vZGUgKilfaW5zZXJ0T3JkZXJlZExpc3QKIHsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1l
ID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluc2VydE9yZGVyZWRMaXN0KCkuZ2V0KCkpIDog
bmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNl
cnRPcmRlcmVkTGlzdCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbnNlcnRV
bm9yZGVyZWRMaXN0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1l
XSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNl
cnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBr
aXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmls
OwogfQogCiAtIChCT09MKV9jYW5JbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZy
YW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJh
bWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwo
KTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuSW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKIH0KIAogLSAoQk9PTClfY2FuRGVjcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbkRlY3Jl
YXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CiB9CiAKIC0gKERP
TU5vZGUgKilfaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCkuZ2V0KCkpIDog
bmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNy
ZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpLmdldCgpKSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAq
KV9pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9yZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdl
dCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9y
KCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkKCkuZ2V0KCkpIDogbmlsOwogfQog
CiAtIChET01Ob2RlICopX2luY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkCiB7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RM
ZXZlbFVub3JkZXJlZCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0
KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQo
KS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKHZvaWQpX2RlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVs
CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYg
KGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVjcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWwoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5kZWNyZWFzZVNlbGVj
dGlvbkxpc3RMZXZlbCgpOwogfQogCiAtICh2b2lkKV9zZXRIaWdobGlnaHRlcjooaWQ8V2ViSFRN
TEhpZ2hsaWdodGVyPiloaWdobGlnaHRlciBvZlR5cGU6KE5TU3RyaW5nKil0eXBlCkBAIC0yMzU5
LDcgKzIzNTksNyBAQCBzdGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNl
bGVjdG9yKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAg
IGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAg
cmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3Rv
cihzZWxlY3RvcikpOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29t
bWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3RvcikpOwogfQogCiAtIChFZGl0b3I6OkNvbW1hbmQp
Y29yZUNvbW1hbmRCeU5hbWU6KGNvbnN0IGNoYXIqKW5hbWUKQEAgLTIzNjcsNyArMjM2Nyw3IEBA
IHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKG5hbWUpOwogfQogCiAtICh2b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2Vs
ZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgV0VCQ09SRV9DT01NQU5E
KHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0
ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0
ZW0gY2xhc3NdXSkgewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJl
Y3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwot
ICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9u
SGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAgICAgICAg
W21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IFtzZWxmIF9jYW5FZGl0XTsKICAgICB9CkBAIC0yNjEwLDcgKzI2MTAsNyBAQCBXRUJDT1JFX0NP
TU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNz
OltOU01lbnVJdGVtIGNsYXNzXV0pIHsKICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0
aGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVj
a2luZyBpdCBiZWNhdXNlCiAgICAgICAgICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91
cy4KLSAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCAicnRsIikKKyAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJv
cGVydHlEaXJlY3Rpb24sICJydGwiKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVS
TkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQog
ICAgICAgICAgICAgICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJp
Z2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0KQEAgLTI2NDEsMTEg
KzI2NDEsMTEgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVy
biBbc2VsZiBfaGFzU2VsZWN0aW9uXTsKICAgICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rv
cihwYXN0ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1BsYWluVGV4dDopKQotICAg
ICAgICByZXR1cm4gZnJhbWUgJiYgKGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpIHx8
IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAo
ZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFz
dGUoKSk7CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGVBc1JpY2hUZXh0
OikpCi0gICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBh
c3RlKCkKLSAgICAgICAgICAgIHx8IChmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYgZnJh
bWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSk7CisgICAgICAgIHJl
dHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUoKQorICAgICAgICAg
ICAgfHwgKGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+
aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkpOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHBlcmZvcm1GaW5kUGFuZWxBY3Rpb246KSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAt
MzgwMyw3ICszODAzLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVu
dEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBfcHJpdmF0ZS0+X2ZvcmNlVXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZSA9IE5POwogCiAgICAgLy8gRklYTUU6IEtpbGwgcmluZyBoYW5k
bGluZyBpcyBtb3N0bHkgaW4gV2ViQ29yZSwgc28gdGhpcyBjYWxsIHNob3VsZCBhbHNvIGJlIG1v
dmVkIHRoZXJlLgotICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVl
bmNlKHRydWUpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVu
Y2UodHJ1ZSk7CiAKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBh
Z2UpCkBAIC00MjMxLDcgKzQyMzEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50
PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIK
LSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250
QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgOiBuaWxdOworICAgICAgICBhdHRyaWJ1dGVz
OmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rp
b25TdGFydCgpIDogbmlsXTsKICAgICBOU0RhdGEgKmRhdGEgPSBbc3RyaW5nIFJURkZyb21SYW5n
ZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxd
OwogICAgIFtzdHJpbmcgcmVsZWFzZV07CiAgICAgcmV0dXJuIGRhdGE7CkBAIC00MzU5LDcgKzQz
NTksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRF
dmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUg
dG8gbWFrZSBhIGNvcHkgaGVyZS4gV2Ugd2FudCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8g
d29yayBkaXJlY3RseSB3aXRoIFN0eWxlUHJvcGVydHlTZXQgZXZlbnR1YWxseS4KLSAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5j
b3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRvQWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVz
KCkuZ2V0KCksIHVuZG9BY3Rpb24pOwogICAgIH0KIH0KIApAQCAtNDY2MSw3ICs0NjYxLDcgQEAg
c3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJh
bWUqIGNvcmVGcmFtZSkKICAgICBpZiAoW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRBcHBseVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRP
TVJhbmdlOnJhbmdlXSkgewogICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX2ZyYW1lXSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0
byBtYWtlIGEgY29weSBoZXJlLgotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBw
bHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSwgW3NlbGYgX3VuZG9B
Y3Rpb25Gcm9tQ29sb3JQYW5lbFdpdGhTZWxlY3RvcjpzZWxlY3Rvcl0pOworICAgICAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGll
cygpLmdldCgpLCBbc2VsZiBfdW5kb0FjdGlvbkZyb21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNl
bGVjdG9yXSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3NDgsNyArNDc0OCw3IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBj
b3JlRnJhbWUpCiAgICAgQ09NTUFORF9QUk9MT0dVRQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5h
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5h
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKIH0KIAogLSAodm9pZClzaG93R3Vlc3NQYW5lbDoo
aWQpc2VuZGVyCkBAIC00NzY4LDcgKzQ3NjgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2Fy
ZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KICAg
ICAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsK
KyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1
ZSk7CiAgICAgW3NwZWxsaW5nUGFuZWwgb3JkZXJGcm9udDpzZW5kZXJdOwogfQogCkBAIC00ODM2
LDcgKzQ4MzYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5
Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBXcml0
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAg
ICBzd2l0Y2ggKGNvcmVGcmFtZS0+ZWRpdG9yKCktPmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnQoKSkgeworICAgIHN3aXRjaCAoY29yZUZyYW1lLT5lZGl0b3IoKS5iYXNlV3Jp
dGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkpIHsKICAgICAgICAgY2FzZSBMZWZ0VG9S
aWdodFdyaXRpbmdEaXJlY3Rpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBS
aWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb246CkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBzdGF0aWMg
UGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29y
ZUZyYW1lKQogICAgIH0KIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJl
Y3Rpb24oZGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5n
RGlyZWN0aW9uOihpZClzZW5kZXIKQEAgLTQ4NjcsNyArNDg2Nyw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUp
CiAgICAgQVNTRVJUKHdyaXRpbmdEaXJlY3Rpb24gIT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJh
bCk7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0g
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRp
bmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdo
dFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJl
Y3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiBzdGF0aWMg
Qk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKQEAgLTQ4ODgsNyArNDg4
OCw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQog
ICAgIH0KIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkK
LSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGly
ZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0
aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24g
OiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCiAtICh2b2lkKW1ha2VCYXNlV3Jp
dGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0OihpZClzZW5kZXIKQEAgLTUwMjMsNyArNTAyMyw3IEBA
IHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGJv
b2wgbXVsdGlwbGVGb250cyA9IGZhbHNlOwogICAgIE5TRm9udCAqZm9udCA9IG5pbDsKICAgICBp
ZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYg
KGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRGb3JT
ZWxlY3Rpb24obXVsdGlwbGVGb250cykpCisgICAgICAgIGlmIChjb25zdCBTaW1wbGVGb250RGF0
YSogZmQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250
cykpCiAgICAgICAgICAgICBmb250ID0gZmQtPmdldE5TRm9udCgpOwogICAgIH0KIApAQCAtNTU2
Myw3ICs1NTYzLDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5h
YmxlZCgpCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViRnJhbWUpOwogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoMCwgMCk7Ci0gICAgTlNSYW5n
ZSByZXN1bHQgPSBbd2ViRnJhbWUgX2NvbnZlcnRUb05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3Io
KS0+Y29tcG9zaXRpb25SYW5nZSgpLmdldCgpXTsKKyAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJG
cmFtZSBfY29udmVydFRvTlNSYW5nZTpjb3JlRnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFu
Z2UoKS5nZXQoKV07CiAKICAgICBMT0coVGV4dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAl
dSkiLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7
CkBAIC01NjA3LDEyICs1NjA3LDEyIEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlC
aW5kaW5nc0VuYWJsZWQoKQogLSAoQk9PTCloYXNNYXJrZWRUZXh0CiB7CiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgQk9PTCByZXN1bHQgPSBjb3JlRnJh
bWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKTsKKyAgICBCT09MIHJl
c3VsdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7
CiAKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIEEgc2F2ZWQgY29tbWFuZCBjYW4gY29u
ZmlybSBhIGNvbXBvc2l0aW9uLCBidXQgaXQgY2Fubm90IHN0YXJ0IGEgbmV3IG9uZS4KICAgICAg
ICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwotICAgICAgICByZXN1bHQg
PSBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgICAgICByZXN1bHQg
PSBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgTE9H
KFRleHRJbnB1dCwgImhhc01hcmtlZFRleHQgLT4gJXUiLCByZXN1bHQpOwpAQCAtNTYzNCw3ICs1
NjM0LDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgp
CiAgICAgfQogICAgIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJh
bWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7
CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAK
IHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiByZXN1bHQpCkBAIC01NzAyLDcgKzU3MDIs
NyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQpCiAgICAgICAgIFtbc2VsZiBfZnJhbWVdIF9zZWxlY3ROU1Jh
bmdlOnJlcGxhY2VtZW50UmFuZ2VdOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0Q29t
cG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgbmV3U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFu
Z2UobmV3U2VsUmFuZ2UpKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1Nl
bFJhbmdlKSk7CiB9CiAKIC0gKHZvaWQpZG9Db21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9y
CkBAIC01NzIwLDcgKzU3MjAsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogCiAgICAgLy8g
QXMgaW4gaW5zZXJ0VGV4dDosIHdlIGFzc3VtZSB0aGF0IHRoZSBjYWxsIGNvbWVzIGZyb20gYW4g
aW5wdXQgbWV0aG9kIGlmIHRoZXJlIGlzIG1hcmtlZCB0ZXh0LgogICAgIFJlZlB0cjxGcmFtZT4g
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0
aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7
CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVk
aXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNv
bW1hbmQgJiYgIWlzRnJvbUlucHV0TWV0aG9kKQogICAgICAgICBldmVudC0+a2V5cHJlc3NDb21t
YW5kcygpLmFwcGVuZChLZXlwcmVzc0NvbW1hbmQoTlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0
b3IpKSk7CkBAIC01Nzc0LDcgKzU3NzQsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5l
cyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAg
IFJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU1N0
cmluZyAqdGV4dDsKICAgICBOU1JhbmdlIHJlcGxhY2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQs
IDAgfTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhv
ZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAK
ICAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9j
YXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0ZWRTdHJpbmcpIHsKQEAgLTU4MTAsNyArNTgxMCw3
IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAg
IGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RG
b3VuZCkKQEAgLTU4MTksMTcgKzU4MTksMTcgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGlu
ZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAg
ICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNlOwogICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0
OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5TQmFja1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0
ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUgaW4gS2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQot
ICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlm
ICghY29yZUZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFu
IGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUg
Y2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBz
cGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgogCiAgICAg
ICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRU
ZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAg
ICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0
ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFu
ZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOwotICAgICAgICBjb3Jl
RnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oZXZlbnRUZXh0KTsKICAgICB9
CiAgICAgCiAgICAgaWYgKHBhcmFtZXRlcnMpCkBAIC01ODg0LDE1ICs1ODg0LDE1IEBAIHN0YXRp
YyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlCiAKICAgICBbc2VsZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07
CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkgfHwgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAg
ICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUt
PmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0OwogICAgIHVuc2lnbmVkIGVuZDsKLSAgICBpZiAo
Y29yZUZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkp
CisgICAgaWYgKGNvcmVGcmFtZS0+ZWRpdG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3Rh
cnQsIGVuZCkpCiAgICAgICAgIFtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0g
bWFya2VkVGV4dFNlbGVjdGlvbkNoYW5nZWQ6TlNNYWtlUmFuZ2Uoc3RhcnQsIGVuZCAtIHN0YXJ0
KSBjbGllbnQ6c2VsZl07CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2Vs
Q29tcG9zaXRpb24oKTsKICAgICAgICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5h
Z2VyXSBtYXJrZWRUZXh0QWJhbmRvbmVkOnNlbGZdOwogICAgIH0KIH0KQEAgLTYwNjAsNyArNjA2
MCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0
Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKHJhbmdlKSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxp
bWl0LCBtYXJrTWF0Y2hlcywgMCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY291
bnRNYXRjaGVzRm9yVGV4dChzdHJpbmcsIGNvcmUocmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25z
KSwgbGltaXQsIG1hcmtNYXRjaGVzLCAwKTsKIH0KIAogLSAodm9pZClzZXRNYXJrZWRUZXh0TWF0
Y2hlc0FyZUhpZ2hsaWdodGVkOihCT09MKW5ld1ZhbHVlCkBAIC02MDY4LDEzICs2MDY4LDEzIEBA
IHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBj
b3JlRnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKG5l
d1ZhbHVlKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQobmV3VmFsdWUpOwogfQogCiAtIChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJl
SGlnaGxpZ2h0ZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRl
eHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVG
cmFtZS0+ZWRpdG9yKCkubWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAt
ICh2b2lkKXVubWFya0FsbFRleHRNYXRjaGVzCkBAIC02MTEwLDcgKzYxMTAsNyBAQCBzdGF0aWMg
dm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZQogICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQogICAgICAgICByZXR1
cm4gTk87CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAg
cmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmlu
ZywgY29yZU9wdGlvbnMob3B0aW9ucykpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZy
YW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWY4MWUzYjdh
YjU4MTEyMTcwNjhjMzhhOGNlMTlhZTQ1NjA0YjU3MS4uODA1Y2RiOTAwZTFmY2M5OTY4ZjQ5MzE4
ODI0NGUyODcxNmQ4NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MjQyNyw3ICsyNDI3LDcgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBz
KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgaWYg
KCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRv
a2VuaXplclRpbWVEZWxheTooZG91YmxlKXRpbWVEZWxheQpAQCAtNTM4Miw3ICs1MzgyLDcgQEAg
c3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBQYWdlKiBwYWdlID0gY29yZShzZWxmKTsKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdChwYWdlLT5t
YWluRnJhbWUoKS0+ZWRpdG9yKCktPnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVy
dFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOworICAgIHJldHVybiBraXQocGFnZS0+
bWFpbkZyYW1lKCktPmVkaXRvcigpLnJhbmdlRm9yUG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVy
dFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSkuZ2V0KCkpOwogfQogCiAtIChCT09MKV9zaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdl
OihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZmaW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkp
c2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rpbmc6KEJPT0wpZmxhZwpAQCAtNTQ0Myw3ICs1
NDQzLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICAgICAgRnJhbWUqIG1haW5GcmFt
ZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICAgICAgaWYgKG1haW5GcmFtZSkgewogICAg
ICAgICAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigp
LT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBtYWlu
RnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBXZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxl
Y3Rpb24gaXMgZW1wdHksIHNldCBpdCB0byBzb21ldGhpbmcuCiAgICAgICAgICAgICAgICAgaWYg
KCFbc2VsZiBzZWxlY3RlZERPTVJhbmdlXSkKICAgICAgICAgICAgICAgICAgICAgbWFpbkZyYW1l
LT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uRnJvbU5vbmUoKTsKQEAgLTU3MzAsNyArNTczMCw3
IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3Nl
bGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdl
YkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LT5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoWyhXZWJIVE1MVmlldyAqKVtbd2ViRnJh
bWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIF9jYW5TbWFydENvcHlPckRlbGV0ZV0pOworICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShb
KFdlYkhUTUxWaWV3ICopW1t3ZWJGcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gX2NhblNt
YXJ0Q29weU9yRGVsZXRlXSk7CiB9CiAgICAgCiAtICh2b2lkKWFwcGx5U3R5bGU6KERPTUNTU1N0
eWxlRGVjbGFyYXRpb24gKilzdHlsZQpAQCAtNTc0MSw3ICs1NzQxLDcgQEAgc3RhdGljIE5TQXBw
bGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlND
OjpKU1ZhbHVlIGoKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgaWYg
KGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3Jl
KHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuYXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CiB9
CiAKIEBlbmQKQEAgLTU3ODgsNyArNTc4OCw3IEBAIEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RP
UihGT1JXQVJEKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3Rl
ZE9yTWFpbkZyYW1lXSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAg
ICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25T
dGFydCgpOwogICAgIAogICAgIHJldHVybiBuaWw7CiB9CkBAIC01ODMyLDcgKzU4MzIsNyBAQCBG
T1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoRk9SV0FSRCkKICAgICBOb2RlKiBjb3JlU3RhcnRO
b2RlPSBjb3JlKHN0YXJ0Tm9kZSk7CiAgICAgaWYgKGNvcmVTdGFydE5vZGUtPmRvY3VtZW50KCkg
IT0gY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnNpbXBsaWZ5TWFya3VwKGNvcmVTdGFydE5vZGUsIGNvcmUoZW5k
Tm9kZSkpOyAgICAKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5zaW1wbGlmeU1hcmt1
cChjb3JlU3RhcnROb2RlLCBjb3JlKGVuZE5vZGUpKTsgICAgCiB9CiAKIEBlbmQKQEAgLTY1Njcs
NyArNjU2Nyw3IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZS
dW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAgICAgV2ViRnJhbWUgKndlYkZy
YW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUt
PmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGMzODUyNGY5YzE1NGFiZTIw
YzJkZWFmYTdiNzFiYmIyYjdjZDNmNGQuLjg4ODRlNDk1Mzk0ODA0OThjMjFiODdmMTM1N2RjZTNh
MzA2NzY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChRV2ViUGFnZUFkYXB0ZXIqIGFkYQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpl
eGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBhZ2VBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBR
U3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBhZGFwdGVyLT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21t
YW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworICAgIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVj
dXRlKHZhbHVlKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5k
RW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgcmV0dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0
dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogUVZhcmlhbnRMaXN0
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAq
YWRhcHRlcikKQEAgLTM3NCw3ICszNzQsNyBAQCBRVmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFFXZWJQYWdlQWRhcHRlcgogICAg
IGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBRVmFyaWFudExpc3QoKTsKIAotICAgIFFSZWN0
IHJlc3VsdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKKyAgICBRUmVjdCByZXN1bHRSZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZv
clJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZWN0IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3Vs
dFJlY3QueSgpIDw8IHJlc3VsdFJlY3Qud2lkdGgoKSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOwog
ICAgIHJldHVybiByZWN0OwogfQpAQCAtNzUxLDE3ICs3NTEsMTcgQEAgdm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6Y29uZmlybUNvbXBvc2l0aW9uKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRl
ciwgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBFZGl0b3Iq
IGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+
aGFzQ29tcG9zaXRpb24oKSAmJiAhdGV4dCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+
ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiAhdGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAg
IGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICBpZiAodGV4dCkKLSAgICAg
ICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVURjgodGV4dCkp
OworICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4
KHRleHQpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9z
aXRpb24oKTsKKyAgICAgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oKTsKICAgICB9
IGVsc2UKLSAgICAgICAgZWRpdG9yLT5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCks
IDApOworICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAw
KTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2Jq
ZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFm
ZjI5MjEzZjI3ZDQwOGQ0ZmEyMDFhZDEuLjgyNWFjYTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0
MmYxYjkwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCkBAIC0yMDYsMTIgKzIwNiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0
OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9y
dHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewog
ICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVi
b2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBh
c3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9y
RGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwog
ICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2Rl
KG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0KIAogICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbigpOwotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlv
blNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBv
c2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3Vz
Q2hhbmdlZCgpOwogfQogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6
cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAp
CiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICht
X2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFu
ZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRv
UmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBI
QUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9w
YWdlLT5yZWdpc3RlclVuZG9TdGVwKHN0ZXApOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpA
QCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBo
YXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMg
dGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRy
ZWF0ZWQsCiAgICAgICAgICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0
aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChlLmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMp
IG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdlbmVyYXRlZAogICAgICAgICAgICAgLy8gKGUu
Zy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAg
ICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQor
ICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0
aW9uKCkKICAgICAgICAgICAgICAgICAmJiBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3
IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVk
aXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgaWYgKCFjb21t
YW5kTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVj
dXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCiAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoc2hvdWxkSW5zZXJ0VGV4dCkgewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6
OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktl
eURvd25FdmVudChldmVudCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21t
YW5kTmFtZSkuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIu
Y3BwCmluZGV4IGZhNGU0YzBmM2VhN2FjZDc4Njc5YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjQ3NjBk
N2YwOTQ0ZTI5MDUzMmI4NDRjOWJhYmMzZjBjOWJjNDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiAr
MzA5LDEyIEBAIFFTdHJpbmcgUVdlYlBhZ2VBZGFwdGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAog
ICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVy
biBRU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7
CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmlu
ZyBRV2ViUGFnZUFkYXB0ZXI6OnNlbGVjdGVkSHRtbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNl
bGVjdGVkUmFuZ2UoKS0+dG9IVE1MKCk7CisgICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hU
TUwoKTsKIH0KIAogYm9vbCBRV2ViUGFnZUFkYXB0ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29u
c3QKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVk
aXRhYmxlKGJvb2wgZWRpdGFibGUpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFw
dGVyKCktPmZyYW1lOwogICAgIGlmIChlZGl0YWJsZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1F
OiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAg
ICAgICAgLy8gZnJhbWUtPnNldFNlbGVjdGlvbkZyb21Ob25lKCk7CiAgICAgfQpAQCAtNTY3LDkg
KzU2Nyw5IEBAIGJvb2wgUVdlYlBhZ2VBZGFwdGVyOjpwZXJmb3JtRHJhZyhjb25zdCBRTWltZURh
dGEgKmRhdGEsIGNvbnN0IFFQb2ludCAmcG9zLCBRdDo6CiB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6
aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYpCiB7CiAgICAgV2ViQ29yZTo6
RnJhbWUgKmZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIFdlYkNvcmU6OkVkaXRvciAqZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAg
IFdlYkNvcmU6OkVkaXRvciAmZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCi0gICAgaWYgKCFl
ZGl0b3ItPmNhbkVkaXQoKSkgeworICAgIGlmICghZWRpdG9yLmNhbkVkaXQoKSkgewogICAgICAg
ICBldi0+aWdub3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTAsMTIgKzYxMCwx
MiBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RF
dmVudCAqZXYpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRT
dHJpbmcoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlv
bihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0
ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOworICAg
ICAgICAgICAgICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1
bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0
YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb21wb3NpdGlvbiwgYW4g
ZW1wdHkgcHJlLWVkaXQgc3RyaW5nIGFuZCBhIHNlbGVjdGlvbiBvZiB6ZXJvCiAgICAgICAgICAg
ICAgICAgLy8gY2FuY2VscyB0aGUgY3VycmVudCBjb21wb3NpdGlvbgotICAgICAgICAgICAgICAg
IGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgIShhLnN0YXJ0ICsgYS5sZW5ndGgpKQot
ICAgICAgICAgICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5k
ZXJsaW5lcywgMCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlv
bigpICYmICEoYS5zdGFydCArIGEubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAgZWRpdG9y
LnNldENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywgMCwgMCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjMwLDE2ICs2MzAsMTYgQEAg
dm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQg
KmV2KQogICAgICAgICBpZiAoaXNIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChub2RlKSkKICAg
ICAgICAgICAgIHRvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQobm9kZSktPnNldFNlbGVjdGlv
blJhbmdlKHN0YXJ0LCBzdGFydCArIGV2LT5yZXBsYWNlbWVudExlbmd0aCgpKTsKICAgICAgICAg
Ly8gQ29tbWl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBjb21taXRTdHJpbmcgaXMgZW1wdHksIHRv
IGdldCByaWQgb2Ygc2VsZWN0aW9uLgotICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlv
bihldi0+Y29tbWl0U3RyaW5nKCkpOworICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9u
KGV2LT5jb21taXRTdHJpbmcoKSk7CiAgICAgfSBlbHNlIGlmICghZXYtPmNvbW1pdFN0cmluZygp
LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQotICAg
ICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oZXYtPmNvbW1pdFN0cmluZygpKTsK
KyAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICAgICAgZWRpdG9y
LmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBlZGl0b3ItPmluc2VydFRleHQoZXYtPmNvbW1pdFN0cmluZygpLCAwKTsKKyAg
ICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KGV2LT5jb21taXRTdHJpbmcoKSwgMCk7CiAgICAg
fSBlbHNlIGlmICghaGFzU2VsZWN0aW9uICYmICFldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHko
KSkKLSAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1
bmRlcmxpbmVzLCAwLCAwKTsKLSAgICBlbHNlIGlmIChldi0+cHJlZWRpdFN0cmluZygpLmlzRW1w
dHkoKSAmJiBlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpCi0gICAgICAgIGVkaXRvci0+Y29uZmly
bUNvbXBvc2l0aW9uKFN0cmluZygpKTsKKyAgICAgICAgZWRpdG9yLnNldENvbXBvc2l0aW9uKGV2
LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOworICAgIGVsc2UgaWYgKGV2LT5w
cmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpICYmIGVkaXRvci5oYXNDb21wb3NpdGlvbigpKQorICAg
ICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKIAogICAgIGV2LT5hY2Nl
cHQoKTsKIH0KQEAgLTY1MCw3ICs2NTAsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6Omlu
cHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CiAKLSAgICBXZWJDb3JlOjpF
ZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVk
aXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAw
OwogICAgIFJlbmRlclRleHRDb250cm9sKiByZW5kZXJUZXh0Q29udHJvbCA9IDA7CkBAIC02Nzgs
MTQgKzY3OCwxNCBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnko
UXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgICAgIHJldHVybiBRVmFy
aWFudChRRm9udCgpKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJzb3JQb3NpdGlvbjogewot
ICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBpZiAoZWRpdG9y
Lmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNl
bGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIHJldHVy
biBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVy
Tm9kZSgpKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKICAgICAg
ICAgaWYgKHJlbmRlclRleHRDb250cm9sICYmIHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KCkpIHsKICAgICAgICAgICAgIFFTdHJpbmcgdGV4dCA9IHJlbmRlclRleHRD
b250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCktPnZhbHVlKCk7Ci0gICAgICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAg
ICAgICAgICAgIGlmIChyYW5nZSkKICAgICAgICAgICAgICAgICB0ZXh0LnJlbW92ZShyYW5nZS0+
c3RhcnRQb3NpdGlvbigpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKHJhbmdlLmdldCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQodGV4
dCk7CkBAIC02OTMsNyArNjkzLDcgQEAgUVZhcmlhbnQgUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1l
dGhvZFF1ZXJ5KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdAogICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoKTsKICAgICB9CiAgICAgY2FzZSBRdDo6SW1DdXJyZW50U2VsZWN0aW9u
OiB7Ci0gICAgICAgIGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpICYmIHJlbmRlclRleHRD
b250cm9sICYmIHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkpIHsK
KyAgICAgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJv
bCAmJiByZW5kZXJUZXh0Q29udHJvbC0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpKSB7CiAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5D
b250YWluZXJOb2RlKCk7CiAgICAgICAgICAgICBpbnQgZW5kID0gZnJhbWUtPnNlbGVjdGlvbigp
LT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgIGlmIChlbmQgPiBz
dGFydCkKQEAgLTcwMyw3ICs3MDMsNyBAQCBRVmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0
TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiAKICAgICB9
CiAgICAgY2FzZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICBpZiAoZWRpdG9yLT5o
YXNDb21wb3NpdGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICAgICAgcmV0dXJuIFFWYXJpYW50KGZyYW1lLT5z
ZWxlY3Rpb24oKS0+YmFzZSgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICB9CkBAIC05
NTUsNyArOTU1LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmRpZENsb3NlSW5zcGVjdG9yKCkK
IHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVBY3Rpb25JbnRlcm5hbChRV2ViUGFnZUFkYXB0
ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBjaGFyKiBjb21tYW5kTmFtZSwgYm9vbCogZW5h
YmxlZCwgYm9vbCogY2hlY2tlZCkKIHsKICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlciogbG9hZGVy
ID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZS0+bG9hZGVyKCk7Ci0gICAgV2ViQ29yZTo6RWRp
dG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAogICAgIHN3aXRj
aCAoYWN0aW9uKSB7CiAgICAgY2FzZSBRV2ViUGFnZUFkYXB0ZXI6OkJhY2s6CkBAIC05NzMsMTQg
Kzk3MywxNCBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dXBkYXRlQWN0aW9uSW50ZXJuYWwoUVdl
YlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgYwogICAgIGNhc2UgUVdlYlBhZ2VBZGFw
dGVyOjpTZXRUZXh0RGlyZWN0aW9uRGVmYXVsdDoKICAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6
U2V0VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OgogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpT
ZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0gICAgICAgICplbmFibGVkID0gZWRpdG9yLT5j
YW5FZGl0KCk7CisgICAgICAgICplbmFibGVkID0gZWRpdG9yLmNhbkVkaXQoKTsKICAgICAgICAg
KmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDogewogCiAgICAg
ICAgIC8vIGlmIGl0J3MgYW4gZWRpdG9yIGNvbW1hbmQsIGxldCBpdHMgbG9naWMgZGV0ZXJtaW5l
IHN0YXRlCiAgICAgICAgIGlmIChjb21tYW5kTmFtZSkgewotICAgICAgICAgICAgRWRpdG9yOjpD
b21tYW5kIGNvbW1hbmQgPSBlZGl0b3ItPmNvbW1hbmQoY29tbWFuZE5hbWUpOworICAgICAgICAg
ICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBlZGl0b3IuY29tbWFuZChjb21tYW5kTmFtZSk7
CiAgICAgICAgICAgICAqZW5hYmxlZCA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAg
ICBpZiAoKmVuYWJsZWQpCiAgICAgICAgICAgICAgICAgKmNoZWNrZWQgPSBjb21tYW5kLnN0YXRl
KCkgIT0gRmFsc2VUcmlTdGF0ZTsKQEAgLTk5Nyw3ICs5OTcsNyBAQCB2b2lkIFFXZWJQYWdlQWRh
cHRlcjo6dHJpZ2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBR
V2ViSGl0VAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
RWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBm
cmFtZS0+ZWRpdG9yKCk7CiAKICAgICAvLyBDb252ZW5pZW5jZQogICAgIFFXZWJIaXRUZXN0UmVz
dWx0UHJpdmF0ZSBoaXRUZXN0OwpAQCAtMTAyOCwxMCArMTAyOCwxMCBAQCB2b2lkIFFXZWJQYWdl
QWRhcHRlcjo6dHJpZ2dlckFjdGlvbihRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9u
LCBRV2ViSGl0VAogI2lmIGRlZmluZWQoUV9XU19YMTEpCiAgICAgICAgIGJvb2wgb2xkU2VsZWN0
aW9uTW9kZSA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9k
ZSgpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rp
b25Nb2RlKHRydWUpOwotICAgICAgICBlZGl0b3ItPmNvcHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlu
a1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOworICAgICAgICBlZGl0b3IuY29weVVSTCho
aXRUZXN0UmVzdWx0LT5saW5rVXJsLCBoaXRUZXN0UmVzdWx0LT5saW5rVGV4dCk7CiAgICAgICAg
IFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2Vs
ZWN0aW9uTW9kZSk7CiAjZW5kaWYKLSAgICAgICAgZWRpdG9yLT5jb3B5VVJMKGhpdFRlc3RSZXN1
bHQtPmxpbmtVcmwsIGhpdFRlc3RSZXN1bHQtPmxpbmtUZXh0KTsKKyAgICAgICAgZWRpdG9yLmNv
cHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKQEAg
LTEwNTgsMTMgKzEwNTgsMTMgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24o
UVdlYlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFNldFRleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBlZGl0b3It
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAg
ICAgZWRpdG9yLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9u
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6
Ci0gICAgICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0
aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZWRpdG9yLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExl
ZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0
VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGVkaXRvci5z
ZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAg
ICAgICBicmVhazsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGNhc2UgSW5zcGVjdEVsZW1l
bnQ6IHsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp0cmlnZ2Vy
QWN0aW9uKFFXZWJQYWdlQWRhcHRlcjo6TWVudUFjdGlvbiBhY3Rpb24sIFFXZWJIaXRUCiAjZW5k
aWYKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAoY29tbWFuZE5hbWUpCi0gICAgICAgICAgICBl
ZGl0b3ItPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIGVkaXRv
ci5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KQEAgLTEzMTQsOCArMTMxNCw4IEBAIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjpmb2N1c091dEV2
ZW50KFFGb2N1c0V2ZW50ICopCiBib29sIFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU2hvcnRjdXRP
dmVycmlkZUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZy
YW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRp
dG9yLT5jYW5FZGl0KCkpCisgICAgV2ViQ29yZTo6RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRp
dG9yKCk7CisgICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSA9PSBRdDo6Tm9Nb2RpZmllcgogICAgICAgICB8
fCBldmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OlNoaWZ0TW9kaWZpZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cAppbmRleCA3ZTZmMDBlYmE3YmNhNGVjNzM0NTExYzI0ZjVlMjI0ZTY1M2JhMjZjLi5mNzRiZmZi
OWI5Y2RhMjUwOWFjOTE3ODIzMGMxZjIxZjFmZTZkN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwo
Y29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRo
R29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKLSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0g
ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5n
ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICBTdHJpbmcgZW5jb2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKICAgICBlbmNvZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNzBjYjUyYTk3MzIzMTI5ZTgxYmQ3ZDdkMDE2NmNl
NmYzOGMwYzA0Yi4uMTZjYTQ1ZTc1NTQ2OGE1NzY5ZjVjYzY1MTcwNzkxNTAwZDg4MTY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzU3BlbGxpbmdNYXJrZXIoCiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7Ci0gICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0
SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKKyAg
ICAqcmVzdWx0ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZyb20sIGxlbmd0aCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTEwMjEsMTYgKzEwMjEsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJGcmFtZTo6Y2xlYXJPcGVuZXIoKQogSFJFU1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVj
dGlvbihCU1RSIGRpcmVjdGlvbikKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlz
KTsKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5lZGl0b3IoKSkKKyAgICBpZiAo
IWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyBkaXJlY3Rp
b25TdHJpbmcoZGlyZWN0aW9uLCBTeXNTdHJpbmdMZW4oZGlyZWN0aW9uKSk7CiAgICAgaWYgKGRp
cmVjdGlvblN0cmluZyA9PSAiYXV0byIpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGlu
Z0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJsdHIiKQotICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9S
aWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxz
ZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJydGwiKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24p
OworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEw
NTIsNyArMTA1Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNlbGVj
dGVkU3RyaW5nKAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgU3RyaW5nIHRleHQgPSBjb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcoY29yZUZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyB0
ZXh0ID0gY29yZUZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogCiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodGV4
dCkucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09LOwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNv
cmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGlmICghY29yZUZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCkpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXgg
ZTQ3NzZmZGUwNDNkNTBjMTg0Y2NjMmZhNjM2YTMyOWY2ZDIyMDM0MC4uYzE4YmE3Njc1ZGVjNTdm
OGZiODg3MjQwMDU1ZTEwZGU0ZDlmMWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE4MTIs
MTEgKzE4MTIsMTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gLypsUGFyYW0qLykKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0p
KSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAg
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7Cisg
ICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRl
KCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0
KQogICAgIGlmICgha2V5RXZlbnQgfHwga2V5RXZlbnQtPmlzU3lzdGVtS2V5KCkpICAvLyBkbyBu
b3QgdHJlYXQgdGhpcyBhcyB0ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRv
cjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5z
ZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTE5
NzksNyArMTk3OSw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQo
S2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRl
eHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwogfQogCiBib29s
IFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwg
Ym9vbCBzeXN0ZW1LZXlEb3duKQpAQCAtMzQyOSw3ICszNDI5LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojp1cGRhdGVGb2N1c2VkQW5kQWN0aXZlU3RhdGUoKQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShC
U1RSIG5hbWUsIEJTVFIgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKHRvU3RyaW5nKG5hbWUpKS5l
eGVjdXRlKHRvU3RyaW5nKHZhbHVlKSk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4
ZWN1dGUodG9TdHJpbmcodmFsdWUpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzY1Niw3
ICszNjU2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFRl
eHQoCiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKTsKKyAgICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgICp0ZXh0ID0gU3lzQWxsb2NTdHJpbmdMZW4o
ZnJhbWVTZWxlY3RlZFRleHQuY2hhcmFjdGVycygpLCBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgo
KSk7CiAgICAgaWYgKCEqdGV4dCAmJiBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CkBAIC00MjQxLDM4ICs0MjQxLDM4IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aGFzU2VsZWN0ZWRSYW5nZSgKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICBFZGl0b3IqIGVkaXRvciA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAq
ZW5hYmxlZCA9IGVkaXRvci0+Y2FuQ3V0KCkgfHwgZWRpdG9yLT5jYW5ESFRNTEN1dCgpOworICAg
IEVkaXRvciYgZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCktPmVkaXRvcigpOworICAgICplbmFibGVkID0gZWRpdG9yLmNhbkN1dCgpIHx8IGVk
aXRvci5jYW5ESFRNTEN1dCgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICBFZGl0b3IqIGVkaXRvciA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAg
ICAqZW5hYmxlZCA9IGVkaXRvci0+Y2FuQ29weSgpIHx8IGVkaXRvci0+Y2FuREhUTUxDb3B5KCk7
CisgICAgRWRpdG9yJiBlZGl0b3IgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAgKmVuYWJsZWQgPSBlZGl0b3IuY2FuQ29weSgp
IHx8IGVkaXRvci5jYW5ESFRNTENvcHkoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGVFbmFibGVkKCAKICAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgIEVkaXRvciogZWRpdG9y
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRv
cigpOwotICAgICplbmFibGVkID0gZWRpdG9yLT5jYW5QYXN0ZSgpIHx8IGVkaXRvci0+Y2FuREhU
TUxQYXN0ZSgpOworICAgIEVkaXRvciYgZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOworICAgICplbmFibGVkID0gZWRpdG9y
LmNhblBhc3RlKCkgfHwgZWRpdG9yLmNhbkRIVE1MUGFzdGUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlRW5hYmxl
ZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAq
ZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OmVkaXRpbmdFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBl
bmFibGVkKQogewotICAgICplbmFibGVkID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jYW5FZGl0KCk7CisgICAgKmVuYWJsZWQgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCku
Y2FuRWRpdCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00MzI0LDcgKzQzMjQsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpCiB7CiAgICAgUG9zaXRpb24gc3RhcnQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRp
dG9yKCktPmluc2VydFRleHQodG9TdHJpbmcodGV4dCksIDApOworICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRv
U3RyaW5nKHRleHQpLCAwKTsKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+
c2V0QmFzZShzdGFydCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MzQ1LDggKzQzNDUsOCBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRo
QXJjaGl2ZSgKICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRl
U2VsZWN0aW9uKCB2b2lkKQogewotICAgIEVkaXRvciogZWRpdG9yID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGVkaXRvci0+
ZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRlKGVkaXRvci0+Y2FuU21hcnRDb3B5T3JEZWxl
dGUoKSk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAgZWRpdG9yLmRlbGV0ZVNlbGVjdGlv
bldpdGhTbWFydERlbGV0ZShlZGl0b3IuY2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKQEAgLTQzNjgsMjggKzQzNjgsMjggQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjphcHBseVN0eWxlKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojpjb3B5KCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykK
IHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkNvcHki
KS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y3V0KCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5k
ZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgi
Q3V0IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OnBhc3RlKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biog
LypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5VVJMKCAKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIHVybCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9L
VVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tV
UkwodXJsKSwgIiIpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NDExLDcgKzQ0MTEsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlRm9udCgKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlXyggCiAgICAgICAgIC8qIFtpbl0gKi8g
SVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRl
KCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KICAgICAKQEAgLTQ0OTMsNyArNDQ5Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6Y2hlY2tTcGVsbGluZygKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICB9CiAg
ICAgCi0gICAgY29yZShtX21haW5GcmFtZSktPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoKTsKKyAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkBAIC00NTEyLDcgKzQ1MTIs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnNob3dHdWVzc1BhbmVsKAog
ICAgICAgICBtX2VkaXRpbmdEZWxlZ2F0ZS0+c2hvd1NwZWxsaW5nVUkoRkFMU0UpOwogICAgIH0K
ICAgICAKLSAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyh0cnVlKTsKKyAgICBjb3JlKG1fbWFpbkZyYW1lKS0+ZWRpdG9yKCkuYWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKHRydWUpOwogICAgIG1fZWRpdGluZ0RlbGVnYXRlLT5zaG93U3BlbGxp
bmdVSShUUlVFKTsKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTUzMzksNyArNTMzOSw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bG9hZEJhY2tGb3J3YXJkTGlzdEZyb21P
dGhlclZpZXcoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCkKIHsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNs
ZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTU0NTQs
NyArNTQ1NCw3IEBAIHZvaWQgV2ViVmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyhGcmFtZSog
dGFyZ2V0RnJhbWUsIEhJTUMgaElucHV0Q29udGV4dCkKICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRy
PFJhbmdlPiB0ZW1wUmFuZ2UgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0gICAgICAgIGNhcmV0
ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0
KCkpOworICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JS
YW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOwogICAgIH0KICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT52
aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coY2FyZXQpOwogICAgIENBTkRJREFURUZPUk0gZm9ybTsK
QEAgLTU0NzIsNyArNTQ3Miw3IEBAIHZvaWQgV2ViVmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdpbmRv
dyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElucHV0Q29udGV4dCkKIHZvaWQgV2ViVmlldzo6
cmVzZXRJTUUoRnJhbWUqIHRhcmdldEZyYW1lKQogewogICAgIGlmICh0YXJnZXRGcmFtZSkKLSAg
ICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgICAg
ICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIAogICAgIGlmIChI
SU1DIGhJbnB1dENvbnRleHQgPSBnZXRJTU1Db250ZXh0KCkpIHsKICAgICAgICAgSU1NRGljdDo6
ZGljdCgpLm5vdGlmeUlNRShoSW5wdXRDb250ZXh0LCBOSV9DT01QT1NJVElPTlNUUiwgQ1BTX0NB
TkNFTCwgMCk7CkBAIC01NDg3LDcgKzU0ODcsNyBAQCB2b2lkIFdlYlZpZXc6OnVwZGF0ZVNlbGVj
dGlvbkZvcklNRSgpCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rp
b25Jc0ludmFsaWQoKSkKKyAgICBpZiAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21w
b3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkpCiAgICAgICAgIHJlc2V0SU1FKHRhcmdldEZy
YW1lKTsKIH0KIApAQCAtNTY0Myw3ICs1NjQzLDcgQEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBv
c2l0aW9uKExQQVJBTSBscGFyYW0pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgRnJhbWUq
IHRhcmdldEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBwcmVwYXJlQ2FuZGlkYXRl
V2luZG93KHRhcmdldEZyYW1lLCBoSW5wdXRDb250ZXh0KTsKQEAgLTU2NTMsNyArNTY1Myw3IEBA
IGJvb2wgV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogICAgICAgICBp
ZiAoIWdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19SRVNVTFRTVFIsIGNv
bXBvc2l0aW9uU3RyaW5nKSAmJiBscGFyYW0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgCi0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9u
KGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZp
cm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
U3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nOwogICAgICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3Ry
aW5nKGhJbnB1dENvbnRleHQsIEdDU19DT01QU1RSLCBjb21wb3NpdGlvblN0cmluZykpCkBAIC01
Njc0LDcgKzU2NzQsNyBAQCBib29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxw
YXJhbSkKIAogICAgICAgICBpbnQgY3Vyc29yUG9zaXRpb24gPSBMT1dPUkQoSU1NRGljdDo6ZGlj
dCgpLmdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19DVVJTT1JQT1MsIDAs
IDApKTsKIAotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNv
bXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgICAg
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
dW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDApOwogICAgIH0KIAogICAgIHJldHVybiB0cnVl
OwpAQCAtNTY4Niw4ICs1Njg2LDggQEAgYm9vbCBXZWJWaWV3OjpvbklNRUVuZENvbXBvc2l0aW9u
KCkKICAgICAvLyBJZiB0aGUgY29tcG9zaXRpb24gaGFzbid0IGJlZW4gY29uZmlybWVkIHlldCwg
aXQgbmVlZHMgdG8gYmUgY2FuY2VsbGVkLgogICAgIC8vIFRoaXMgaGFwcGVucyBhZnRlciBkZWxl
dGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSBpbmxpbmUgaW5wdXQgaG9sZS4KICAgICBGcmFt
ZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBpZiAodGFyZ2V0RnJhbWUgJiYgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5o
YXNDb21wb3NpdGlvbigpKQotICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1D
b21wb3NpdGlvbihTdHJpbmcoKSk7CisgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKIAogICAgIGlmIChtX2luSU1FQ29tcG9z
aXRpb24pCiAgICAgICAgIG1faW5JTUVDb21wb3NpdGlvbi0tOwpAQCAtNTcxMiwxNCArNTcxMiwx
NCBAQCBib29sIFdlYlZpZXc6Om9uSU1FTm90aWZ5KFdQQVJBTSB3cGFyYW0sIExQQVJBTSwgTFJF
U1VMVCopCiAKIExSRVNVTFQgV2ViVmlldzo6b25JTUVSZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1l
KiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9OKiBjaGFyUG9zKQogewotICAgIGlmIChjaGFy
UG9zLT5kd0NoYXJQb3MgJiYgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24o
KSkKKyAgICBpZiAoY2hhclBvcy0+ZHdDaGFyUG9zICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCku
aGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSW50UmVjdCBjYXJldDsK
LSAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFz
Q29tcG9zaXRpb24oKSA/IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgp
IDogdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpKSB7CisgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRGcmFtZS0+ZWRpdG9y
KCkuaGFzQ29tcG9zaXRpb24oKSA/IHRhcmdldEZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJh
bmdlKCkgOiB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXpl
ZFJhbmdlKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gdGVtcFJhbmdlID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgICAgICB0ZW1w
UmFuZ2UtPnNldFN0YXJ0KHRlbXBSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLCB0ZW1wUmFuZ2Ut
PnN0YXJ0T2Zmc2V0KGVjKSArIGNoYXJQb3MtPmR3Q2hhclBvcywgZWMpOwotICAgICAgICBjYXJl
dCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdl
dCgpKTsKKyAgICAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9y
UmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKICAgICB9CiAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+
dmlldygpLT5jb250ZW50c1RvV2luZG93KGNhcmV0KTsKICAgICBjaGFyUG9zLT5wdC54ID0gY2Fy
ZXQueCgpOwpAQCAtNTc1Miw3ICs1NzUyLDcgQEAgTFJFU1VMVCBXZWJWaWV3OjpvbklNRVJlcXVl
c3QoV1BBUkFNIHJlcXVlc3QsIExQQVJBTSBkYXRhKQogewogICAgIExPRyhUZXh0SW5wdXQsICJv
bklNRVJlcXVlc3QgJXMiLCBpbWVSZXF1ZXN0TmFtZShyZXF1ZXN0KS5sYXRpbjEoKS5kYXRhKCkp
OwogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNo
IChyZXF1ZXN0KSB7CkBAIC02ODgzLDE0ICs2ODgzLDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKAogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigp
LT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyBjb21wb3NpdGlvblN0ciA9
IHRvU3RyaW5nKGNvbXBvc2l0aW9uKTsKIAogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGlu
ZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGlu
ZSgwLCBjb21wb3NpdGlvblN0ci5sZW5ndGgoKSwgQ29sb3IoQ29sb3I6OmJsYWNrKSwgZmFsc2Up
KTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyLCB1
bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0
Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVuZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5n
dGgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC02OTA0LDcgKzY5MDQsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omhhc0NvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBb
b3V0LCByZXR2YWxdICovCiAgICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICAqcmVzdWx0ID0gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlv
bigpOworICAgICpyZXN1bHQgPSBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRp
b24oKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNjkxNSwxNSArNjkxNSwxNSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3Rp
bmcoLyogW2luXSAqLyBCU1RSCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCiAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyID0gdG9TdHJpbmcoY29tcG9zaXRpb24p
OwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyLmlzTnVsbCgpKQotICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29u
ZmlybUNvbXBvc2l0aW9uKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cik7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cik7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY5MzQsMTAg
KzY5MzQsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb21wb3NpdGlv
blJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKgogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5F
ZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+
ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
ZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKTsKIAogICAgIGlmICghcmFuZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC02OTc4LDcgKzY5NzgsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGlu
ZygKICAgICBBU1NFUlQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpOwogICAgIEFTU0VSVChyYW5n
ZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgICAKLSAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRp
dG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICBJbnRSZWN0IHJlY3Qg
PSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOwogICAgIHJl
c3VsdEludFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOwogCiAg
ICAgcmVzdWx0UmVjdC0+bGVmdCA9IHJlc3VsdEludFJlY3QueCgpOwpAQCAtNjk5OCw3ICs2OTk4
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFJhbmdlRm9y
VGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKiBsb2MKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRp
dG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogCiAgICAgc2l6ZV90IGxvY2F0aW9uU2l6ZTsKICAgICBz
aXplX3QgbGVuZ3RoU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKaW5kZXggYzkxZWM5ZjgyMDJjODhhNmMx
ZTJkOGEyOTdiNjVjYmE5NGQyZjI5Mi4uNjQ1OGRmNmY4YTc4ODQ3ODllODA4OWVkNDQxMTJhZTJh
ZmE3NTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCBib29sIEVkaXRv
ckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2ZW50KSk7CisgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnBy
ZXRLZXlFdmVudChldmVudCkpOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVu
b3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBq
dXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQs
CkBAIC00MTUsNyArNDE1LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5j
dHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgp
LT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
ZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVu
dFdpbkNFOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA5OGE0MDRjMDJhYTFjOTgxYmVhZTQ5NTIw
NjYwZmI2MTM3YzJkZjE2Li45MGE1MTQ4NjBlZjk1N2ZhOTYyYmY2YzUzYjliMDA3ZjZhODk3MjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJikKICNpZiAh
UExBVEZPUk0oTUFDKQogdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZy
YW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsKICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0
ZVNwYWNlKCk7CiAgICAgU3RyaW5nIGVuY29kZWQgPSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVu
Y2VzKHNlYXJjaFN0cmluZyk7CiAgICAgZW5jb2RlZC5yZXBsYWNlKCIlMjAiLCAiKyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGMxNzNhYmM2ZmE4YmRiMmY3ZjUyZGFiNzVjNTE2ODk0
ZTY2YzIwYjIuLmE4YjYyZDE1YmViYjhlZGQzMTMzZmM0MjlkZTBlNWI1YzVmOGQyNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9y
dHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewog
ICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVi
b2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBh
c3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9y
RGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwog
ICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2Rl
KG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGll
bnRFZmwuY3BwCmluZGV4IDcwMTBhOGY3N2MxZjVhMzEwMDlmNWFhOGI3MGMyYTI4ZDMyYmIzYTIu
LmM0MmVjMzdiZDY0NjE3ZWRjMWQwMDA2NWQ3N2UxZmZiNmUwZmZlNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRv
cigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IHNlbmRpbmcg
c3luYyBtZXNzYWdlIG1pZ2h0IG1ha2UgaW5wdXQgbGFnZ2luZy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJF
ZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDY3ZmRjMWY0NDRlYWQ2YmE4Y2E3OTE4ODRmZDU4MTlm
ODI0ZjBjODEuLjk4ODlhOWQ2ODEwNzU3NTEwNjA4OWFiZjllNzhjYjEzYWJjMGI1MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVk
aXRvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBib29s
IFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJh
bWUsIFZlY3RvcjxXVEY6OlN0cgogewogICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1h
bmRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKHBlbmRpbmdFZGl0b3JDb21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChwZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk1LDE0ICs5NSwxNCBAQCB2b2lkIFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMg
aWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRpbmdFZGl0b3JDb21tYW5kcywgZnJhbWUtPmVk
aXRvcigpLT5jYW5FZGl0KCkpKSB7CisgICAgICAgIGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNv
bW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0KCkpKSB7CiAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIERvbid0IGFsbG93IHRl
eHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNhbm5vdCBlZGl0LgotICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGp1c3QgYSBub3JtYWwgdGV4dCBp
bnNlcnRpb24sIHNvIHdhaXQgdG8gZXhlY3V0ZSB0aGUgaW5zZXJ0aW9uCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiAgICAgaWYgKHBsYXRmb3JtRXZlbnQtPmN0cmxLZXkoKSB8fCBwbGF0Zm9y
bUV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0KCksIGV2ZW50KSkKKyAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQocGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkp
CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVu
dUNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCmluZGV4IDBmY2EzYjk4ZmZjNmJkOWRmNTA2
MzI3YTEzOWFkYjU3NDc4ZjNmNTguLjNjMjMwZWJlNDRhYzRlNzMzMjZiNGM2YmQ5NTg0ODE5M2Nm
M2IwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCkBA
IC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygp
CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJh
bWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkt
PnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNoU3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwog
ICAgIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hUaGVX
ZWIoc2VhcmNoU3RyaW5nKSk7CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQogICAgIGlmICghc2VsZWN0aW9uRnJhbWUpCiAg
ICAgICAgIHNlbGVjdGlvbkZyYW1lID0gbWFpbkZyYW1lOwogCi0gICAgU3RyaW5nIHNlbGVjdGVk
U3RyaW5nID0gc2VsZWN0aW9uRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
c2VsZWN0aW9uRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKSk7CisgICAgU3RyaW5nIHNl
bGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKICAgICAKICAg
ICBpZiAoc2VsZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0
b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggODIzNWJjNmQ4ODBmMzZmYTA1NTVhMjc1
MzMwZDc2ZTI3ZTM1NWZkNS4uZTBiOGFjODEyYjg2YWEyNjliNTdkZTNhN2Y2ZjJhMDI2ZDNiYTNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtMTM2LDEyICsxMzYs
MTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJikKIHN0YXRpYyB2b2lkIGNoYW5nZVdvcmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBz
ZWxlY3RvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgic2VsZWN0V29yZCIp
LmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4
ZWN1dGUoKTsKIAotICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkp
OworICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9k
aWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAgcGFn
ZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGZyYW1lLCBbc2VsZWN0ZWRTdHJpbmcgcGVyZm9y
bVNlbGVjdG9yOnNlbGVjdG9yXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGUyNjA1NmU5Mjg2OWNkNTU5ZDgwMzc5NTMzNTlk
NGIyN2I2N2YxY2YuLjcyNmNhMDZlNzkwYjA0MDc0NmIxYWI0ODJlYzhiNzdlZDBjM2E2YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAt
MzI0LDcgKzMyNCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c2VsZWN0aW9uQXNTdHJpbmcoKSBjb25z
dAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IHJldHVybiBtX2NvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtX2Nv
cmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAgICByZXR1cm4gbV9jb3JlRnJh
bWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcobV9jb3JlRnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpKTsKIH0KIAogSW50U2l6ZSBXZWJGcmFtZTo6c2l6ZSgpIGNvbnN0CkBA
IC03MDAsMTUgKzcwMCwxNSBAQCBTdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VX
aXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIAogdm9pZCBXZWJGcmFtZTo6c2V0VGV4dERp
cmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlvbikKIHsKLSAgICBpZiAoIW1fY29yZUZyYW1l
IHx8ICFtX2NvcmVGcmFtZS0+ZWRpdG9yKCkpCisgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGRpcmVjdGlvbiA9PSAiYXV0byIpCi0gICAgICAgIG1fY29y
ZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdE
aXJlY3Rpb24pOworICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgIGVsc2UgaWYgKGRpcmVjdGlv
biA9PSAibHRyIikKLSAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBtX2NvcmVG
cmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5n
RGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gInJ0bCIpCi0gICAgICAgIG1f
Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRX
cml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9jb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiB9CiAKICNpZiBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggOTk0N2VlYmQ2NDc2ZWM3M2I2NjBlMmMwMDg4ZGMyNzc4MTIwNWUxZC4uZjAx
ZDVjYWY2NWI3YjE0Y2I1MWE4YmVkNDY5MWE5ZTJhNzdiZDAzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjAxLDggKzYwMSw4IEBAIEVk
aXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICByZXN1bHQuaXNDb250
ZW50RWRpdGFibGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCk7CiAg
ICAgcmVzdWx0LmlzQ29udGVudFJpY2hseUVkaXRhYmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5p
c0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogICAgIHJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCA9
IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmllbGQoKTsKLSAgICByZXN1bHQuaGFz
Q29tcG9zaXRpb24gPSBmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7Ci0gICAgcmVz
dWx0LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlID0gZnJhbWUtPmVkaXRv
cigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpOworICAgIHJlc3VsdC5oYXND
b21wb3NpdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOworICAgIHJlc3Vs
dC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3Io
KS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKQEAgLTY0MSw4ICs2NDEsOCBAQCBFZGl0b3JTdGF0
ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5lZGl0b3JSZWN0
ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhzZWxlY3Rpb25Sb290LT5waXhlbFNu
YXBwZWRCb3VuZGluZ0JveCgpKTsKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgaWYg
KHJlc3VsdC5oYXNDb21wb3NpdGlvbiAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBv
c2l0aW9uUmFuZ2UoKSkpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5nZXRDb21wb3NpdGlv
blNlbGVjdGlvbihyZXN1bHQuYW5jaG9yUG9zaXRpb24sIHJlc3VsdC5jdXJzb3JQb3NpdGlvbik7
CisgICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlvbiAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRpdG9y
KCkuY29tcG9zaXRpb25SYW5nZSgpKSkgeworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZ2V0Q29t
cG9zaXRpb25TZWxlY3Rpb24ocmVzdWx0LmFuY2hvclBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9z
aXRpb24pOwogCiAgICAgICAgIHJlc3VsdC5jb21wb3NpdGlvblJlY3QgPSBmcmFtZS0+dmlldygp
LT5jb250ZW50c1RvV2luZG93KHJhbmdlLT5ib3VuZGluZ0JveCgpKTsKICAgICB9CkBAIC02NTcs
NyArNjU3LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAg
IH0KIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgcmVzdWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+
dmlldygpLT5jb250ZW50c1RvV2luZG93KGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFu
Z2UocmFuZ2UuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+dmll
dygpLT5jb250ZW50c1RvV2luZG93KGZyYW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShy
YW5nZS5nZXQoKSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IHRyYW5zZmVyIGlu
bmVyVGV4dCB3aGVuIGl0IGNoYW5nZXMgYW5kIGRvIHRoaXMgb24gdGhlIFVJIHNpZGUuCiAgICAg
aWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxk
KSB7CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdGluZ0NvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmcKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFu
ZE5hbWUpLmV4ZWN1dGUoYXJndW1lbnQpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNv
bW1hbmROYW1lKS5leGVjdXRlKGFyZ3VtZW50KTsKIH0KIAogYm9vbCBXZWJQYWdlOjppc0VkaXRp
bmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQpAQCAtNzgwLDcgKzc4
MCw3IEBAIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSkKICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQ
bHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNF
ZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgIAotICAgIEVkaXRvcjo6Q29t
bWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAg
ICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1h
bmROYW1lKTsKICAgICByZXR1cm4gY29tbWFuZC5pc1N1cHBvcnRlZCgpICYmIGNvbW1hbmQuaXNF
bmFibGVkKCk7CiB9CiAgICAgCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZh
bGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5W
aWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICAgICAgaXNFbmFibGVkID0gcGx1Z2luVmlldy0+
aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5hbWUpOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKGNvbW1hbmROYW1lKTsKKyAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0g
ZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpOwogICAgICAgICAgICAgc3RhdGUg
PSBjb21tYW5kLnN0YXRlKCk7CiAgICAgICAgICAgICBpc0VuYWJsZWQgPSBjb21tYW5kLmlzU3Vw
cG9ydGVkKCkgJiYgY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgfQpAQCAtMjU2MCw3ICsy
NTYwLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2Fy
ZEV2ZW50KiBldnQpCiAgICAgaWYgKCFrZXlFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
aW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKIAogICAgIGlm
IChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2
aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtMjU3MywxNCArMjU3MywxNCBAQCBib29s
IFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlv
biBmb3Igbm9kZXMgdGhhdCBjYW5ub3QgZWRpdC4KLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+
Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFy
YWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91cgogICAgIGlm
IChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCks
IGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZl
bnQoKS0+dGV4dCgpLCBldnQpOwogfQogI2VuZGlmCiAKQEAgLTI4NTksNyArMjg1OSw3IEBAIHZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCwKIHZvaWQgV2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24p
OworICAgIGZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNv
bnN0IFN0cmluZyYgd29yZCkKQEAgLTI4ODYsMTcgKzI4ODYsMTcgQEAgdm9pZCBXZWJQYWdlOjp1
bm1hcmtBbGxCYWRHcmFtbWFyKCkKICNpZiBVU0UoQVBQS0lUKQogdm9pZCBXZWJQYWdlOjp1cHBl
cmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkudXBwZXJjYXNlV29y
ZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+bG93ZXJj
YXNlV29yZCgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS5sb3dlcmNhc2VXb3JkKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2Fw
aXRhbGl6ZVdvcmQoKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FwaXRhbGl6ZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FwaXRhbGl6
ZVdvcmQoKTsKIH0KICNlbmRpZgogICAgIApAQCAtMjkzMyw3ICsyOTMzLDcgQEAgdm9pZCBXZWJQ
YWdlOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHRleHQpCiB7CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7CiAgICAgYm9vbCBz
bWFydFJlcGxhY2UgPSBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5yZXBsYWNl
U2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7
CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4
dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Y2xlYXJTZWxlY3Rpb24oKQpAQCAtMzU5Niw3ICszNTk2LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigp
LT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpOwogfQogI2VuZGlmCiAK
QEAgLTM2MTgsMjkgKzM2MTgsMjkgQEAgdm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlTW90aW9u
KFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBkb3VibGUgdGltZSkKIHZvaWQgV2ViUGFnZTo6
c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcs
IHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBl
bmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29tcG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIENv
bG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0
aCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
LCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3RoKTsKIH0KIAogYm9vbCBXZWJQYWdlOjpo
YXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1l
ICYmIGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0
cmluZykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkt
PmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY29tcG9zaXRpb25TdHJpbmcuaXNOdWxsKCkp
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcpOworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCBudW1XaGVlbEV2
ZW50SGFuZGxlcnMpCkBAIC0zNzk2LDE5ICszNzk2LDE5IEBAIHN0YXRpYyBGcmFtZSogdGFyZ2V0
RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UqIHBhZ2UpCiB7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1l
ID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpKQor
ICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRWRpdG9yKiBl
ZGl0b3IgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3ItPmNhbkVkaXQo
KSkKKyAgICBFZGl0b3ImIGVkaXRvciA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAo
IWVkaXRvci5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGVkaXRvci0+
aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkgewog
ICAgICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIElNRSBj
b21wb3NpdGlvbiBub2RlIGFyZQogICAgICAgICAvLyBlZGl0YWJsZSBiZWNhdXNlIEphdmFTY3Jp
cHQgbWF5IGRlbGV0ZSBhIHBhcmVudCBub2RlIG9mIHRoZSBjb21wb3NpdGlvbgogICAgICAgICAv
LyBub2RlLiBJbiB0aGlzIGNhc2UsIFdlYktpdCBjcmFzaGVzIHdoaWxlIGRlbGV0aW5nIHRleHRz
IGZyb20gdGhlIHBhcmVudAogICAgICAgICAvLyBub2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFu
eSBsb25nZXIuCi0gICAgICAgIGlmIChQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+
Y29tcG9zaXRpb25SYW5nZSgpKSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGVkaXRvci5jb21wb3NpdGlvblJhbmdlKCkpIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsKICAgICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9k
ZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM4
MjUsOCArMzgyNSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0X3Qgc2VsZWN0CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKTsKLSAg
ICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CisgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7
CiAKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT0gLTEpIHsKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOwpAQCAt
Mzg1OCwxOSArMzg1NywxOSBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogCiAgICAgICAgIEVs
ZW1lbnQqIHNjb3BlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVt
ZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHJlcGxhY2VtZW50U3RhcnQs
IHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRJ
Z25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKKyAgICAgICAgdGFyZ2V0RnJh
bWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKHRydWUpOwog
ICAgICAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0g
ICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rp
b25DaGFuZ2UoZmFsc2UpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3Jl
Q29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOwogICAgIH0KIAotICAgIHRhcmdldEZy
YW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9u
U3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBv
c2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOwog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRv
clN0YXRlKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjYW5jZWxDb21wb3NpdGlvbigpCiB7CiAg
ICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRhcmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKSkK
LSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbigpOworICAg
ICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgp
KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGU0NzMxMDMwNGQ4MTY4YmE5ODkwNzczYTJjOWNl
ZWViZWNhZDlkNmYuLmM2YzQxZjEwMjNjNTE1ODMzMWE2ZjI0ZWJlYjY2M2I0ZjUwYjU5OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdl
RWZsLmNwcApAQCAtMTc4LDE2ICsxNzgsMTYgQEAgc3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZv
ckVkaXRpbmcoV2ViUGFnZSogcGFnZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRp
dG9yLT5jYW5FZGl0KCkpCisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Cisg
ICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChl
ZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9u
KCkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIHZlcmlmeSB0aGUgcGFyZW50IG5vZGUgb2YgdGhp
cyBJTUUgY29tcG9zaXRpb24gbm9kZSBhcmUKICAgICAgICAgLy8gZWRpdGFibGUgYmVjYXVzZSBK
YXZhU2NyaXB0IG1heSBkZWxldGUgYSBwYXJlbnQgbm9kZSBvZiB0aGUgY29tcG9zaXRpb24KICAg
ICAgICAgLy8gbm9kZS4gSW4gdGhpcyBjYXNlLCBXZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGlu
ZyB0ZXh0cyBmcm9tIHRoZSBwYXJlbnQKICAgICAgICAgLy8gbm9kZSwgd2hpY2ggZG9lc24ndCBl
eGlzdCBhbnkgbG9uZ2VyLgotICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBl
ZGl0b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBlZGl0b3IuY29tcG9zaXRpb25SYW5nZSgpKSB7CiAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24oY29u
c3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZykKICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3Np
dGlvbihjb21wb3NpdGlvblN0cmluZyk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZp
cm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vy
c29yUG9zaXRpb24pCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ28K
ICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVz
LCBjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBv
c2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oKQpAQCAtMjIxLDcgKzIyMSw3
IEBAIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oKQogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24o
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjcxMjUzMGVhNmY5OWU4ZWIwYjQwY2RhMzQ4MDll
YTlmY2E2MDIwZi4uNzhhNzhjMWU3NDk2YzVlNjAyZjU2YzI3MmU3MWViNWRiNTQ1OTYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtMTY4LDE2ICsxNjgsMTYgQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3ND
b21tYW5kc0ludGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICBi
b29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y29tbWFuZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGNvbW1hbmRzW2ldLmNvbW1hbmRO
YW1lID09ICJpbnNlcnRUZXh0OiIpIHsKLSAgICAgICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRv
cigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRv
cigpLmhhc0NvbXBvc2l0aW9uKCkpOwogCi0gICAgICAgICAgICBpZiAoIWZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdCgpKQorICAgICAgICAgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBBbiBpbnNlcnRU
ZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVyIHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlm
IHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAgICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNl
IGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5nIGRvd24gdGhlIHBhZ2UuCi0gICAgICAgICAg
ICBldmVudFdhc0hhbmRsZWQgfD0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGNvbW1hbmRz
W2ldLnRleHQsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBmcmFtZS0+
ZWRpdG9yKCkuaW5zZXJ0VGV4dChjb21tYW5kc1tpXS50ZXh0LCBldmVudCk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21t
YW5kTmFtZSkpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5j
b21tYW5kTmFtZSkpOwogICAgICAgICAgICAgaWYgKGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSkgewog
ICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZEV4ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4
ZWN1dGUoZXZlbnQpOwogICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5k
RXhlY3V0ZWRCeUVkaXRvcjsKQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50LCBib29sIHNhdmVDb21t
YW5kcwogICAgICAgICAvLyAoZS5nLiBUYWIgdGhhdCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwg
b3IgRW50ZXIpLgogICAgICAgICBib29sIGhhdmVUZXh0SW5zZXJ0aW9uQ29tbWFuZHMgPSBmYWxz
ZTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21tYW5kcy5zaXplKCk7ICsraSkg
ewotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZv
clNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpLmlzVGV4dEluc2VydGlvbigp
KQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lRm9y
U2VsZWN0b3JOYW1lKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSkuaXNUZXh0SW5zZXJ0aW9uKCkp
CiAgICAgICAgICAgICAgICAgaGF2ZVRleHRJbnNlcnRpb25Db21tYW5kcyA9IHRydWU7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRz
LCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0aGUgcmlnaHQgdGltZSB0byBleGVjdXRlIHRo
ZSBjb21tYW5kcy4KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgog
ICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbih0ZXh0LCB1
bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0
LCBzZWxlY3Rpb25FbmQpOwogICAgIH0KIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsK
QEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbihFZGl0
b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9z
aXRpb24oKTsKIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0KQEAgLTI4NCw3ICsy
ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdT
dGF0ZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9z
aXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIAogICAg
IG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0KQEAgLTI5OSwxMyArMjk5LDEzIEBAIHZvaWQg
V2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydCwgdWluCiAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNl
bGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZB
VUxUX0FGRklOSVRZKSk7CiAgICAgfQogCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0Nv
bXBvc2l0aW9uKCkpIHsKKyAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigp
KSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIg
cmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAv
LyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3du
IHRoZSBwYWdlLgotICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0
KHRleHQsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgICAgICBoYW5kbGVk
ID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQodGV4dCwgbV9rZXlib2FyZEV2ZW50QmVpbmdJ
bnRlcnByZXRlZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKHRleHQpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKHRleHQpOwogICAgIH0KIAogICAgIG5l
d1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKQEAgLTMyMSw4ICszMjEsOCBAQCB2b2lkIFdlYlBhZ2U6
Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdAogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSkpOwogICAgIH0KIAotICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3Np
dGlvbigpKTsKLSAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRl
eHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJl
aW5nSW50ZXJwcmV0ZWQpOworICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0
aW9uKCkpOworICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0
KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBtX2tleWJvYXJkRXZlbnRCZWlu
Z0ludGVycHJldGVkKTsKICAgICBuZXdTdGF0ZSA9IGVkaXRvclN0YXRlKCk7CiB9CiAKQEAgLTMz
NCw3ICszMzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2Nh
dGlvbiwgdWludDY0X3QmIGxlbmd0aCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlv
blJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21w
b3NpdGlvblJhbmdlKCk7CiAgICAgc2l6ZV90IGxvY2F0aW9uU2l6ZTsKICAgICBzaXplX3QgbGVu
Z3RoU2l6ZTsKICAgICBpZiAocmFuZ2UgJiYgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExl
bmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwgbG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkg
ewpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViCiAgICAgQVNTRVJU
KHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAgICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5l
cigpKTsKICAgICAgCi0gICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJl
Y3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRv
cigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZXN1bHRSZWN0ID0gZnJh
bWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKIH0KIApAQCAtNjU0LDcgKzY1NCw3
IEBAIHZvaWQgV2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wmIHJlCiAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucmVhZFNl
bGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsKICAgICByZXN1bHQgPSB0cnVl
OwogfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKFN0cmluZyYgc3RyaW5nVmFsdWUpCiAgICAgaWYgKGZyYW1lLT5zZWxl
Y3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0cmluZ1ZhbHVlID0g
ZnJhbWUtPmVkaXRvcigpLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7CisgICAgc3Ry
aW5nVmFsdWUgPSBmcmFtZS0+ZWRpdG9yKCkuc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgdWlu
dDY0X3QmIHNpemUpCkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE0K
ICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5lZGl0
b3IoKS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5lZGl0b3IoKS5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAg
ICAgc2l6ZSA9IDA7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201865</attachid>
            <date>2013-05-15 12:39:44 -0700</date>
            <delta_ts>2013-05-15 13:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116037-20130515123839.patch</filename>
            <type>text/plain</type>
            <size>288420</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkZDUyMjdlNTg3YTUw
YTA0MDY5YTlmNWM0ZjM4ZWQ1ZjkzMmVmMy4uOWRkN2YzMzNiNTBmNmI3MWUzM2ZjYzRlMzQxOWVj
MTkxMDE1MjkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMy0wNS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0
b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIGZyYW1lJ3MgZWRpdG9yIGNhbiBuZXZlciBiZSBudWxs
LiBDaGFuZ2UgRnJhbWU6OmVkaXRvcigpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0
IHRoaXMuCisgICAgICAgIEFsc28sIG1ha2UgRnJhbWU6Om1fZWRpdG9yIGEgY29uc3QgbWVtYmVy
IHZhcmlhYmxlIHNvIG5vYm9keSB3aWxsIGFjY2lkZW50YWxseSBzZXQgaXQgdG8gbnVsbC4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06
CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKToKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpjbG9u
ZUNoaWxkTm9kZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphY2NlcHRzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRGb2N1c2VkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjb21tYW5kKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0aXZlKToK
KyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRDb21tYW5kQ29tcG9zaXRpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1
dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b246OmRlZmF1bHRFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAg
KiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJE
aXNhYmxlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlckRp
c2FibGVTY29wZTo6fkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXJEaXNhYmxlU2NvcGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjptZXJnZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJU
eXBpbmdUb1dvcmQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVUb2dnbGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQXBwbHlQYXJhZ3Jh
cGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWZhdWx0UGFyYWdy
YXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3Rlcik6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZURlbGV0ZVRvRW5kT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0Vu
ZE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb01hcmspOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlV29yZEZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZUZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUZvcndhcmREZWxldGUp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUlnbm9yZVNwZWxsaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROZXdsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVN
YWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZVRvZ2dsZU92ZXJ3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlR2xvYmFsU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhlY3V0ZVBhc3RlQXNQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVJlbW92ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVTZXRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1Mp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVVzZUNTUyk6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlU3dhcFdpdGhNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUYWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVRyYW5zcG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlWWFuayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlWWFua0FuZFNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRDb3B5Q3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cHBv
cnRlZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uQW5kTWFyayk6CisgICAg
ICAgIChXZWJDb3JlOjplbmFibGVDYXJldEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuYWJsZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5hYmxlZEluRWRpdGFibGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
YWJsZWREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFBhc3RlKToKKyAgICAgICAg
KFdlYkNvcmU6OmVuYWJsZWRSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRUYWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5hYmxlZFVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6c3RhdGVPcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpz
dGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVVub3JkZXJlZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxl
Y3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vdmluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246Om1vZGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRTdG9wQmxpbmtpbmdE
dWVUb1R5cGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNo
b3VsZERlbGV0ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjpkb0FwcGx5KToK
KyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlR5cGluZ0NvbW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxsaW5nc0Fm
dGVyVHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OnR5cGluZ0FkZGVk
VG9PcGVuQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVL
ZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxl
dGVLZXlQcmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KToKKyAgICAgICAgKiBl
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3Rl
V2l0aFBhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmcpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpkaWRTZXRWYWx1ZUJ5VXNlckVkaXQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRVbmljb2RlQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JF
bmFibGVJZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpmaW5kKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjb25jbHVkZUVk
aXREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tTW91c2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9y
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0VGV4dElucHV0RXZlbnRIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEJhY2tzcGFjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsaW5xdWlzaGVzRWRpdGluZ0ZvY3VzKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyYW5nZUZvclBvaW50KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZWRpdG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmFuZ2VPZlN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYXJrQWxsTWF0Y2hlc0ZvclRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6
OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpnZXRTdHJp
bmdTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Z2V0RGF0YVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbkZvclR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVVJMRm9yVHlwZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50
RnJhZ21lbnRXaXRoUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFp
bnRUZXh0TWF0Y2hNYXJrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c3BlbGxjaGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1Nw
ZWxsaW5nTWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzQXV0b2NvcnJl
Y3RlZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp0b2dnbGVPdmVy
d3JpdGVNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0dyYW1t
YXJNYXJrZXIpOgorCiAyMDEzLTA1LTE1ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gSW1wbGVtZW50IG9mZnNldFBhcmVudCBmb3IgZWxl
bWVudHMgaW5zaWRlIG5hbWVkIGZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4
IDk5MzI2YzA1NWEzMjgzZjg0ZTExYWYyMTIzNGQ5ZmI4YjU3ZGFmOWUuLmJiMzZjYzcxYTY4ZjQ3
NTMwZDE4ZjYzMDg3MDk1YTk4NDFmNTAyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRTcGVsbENoZWNrRm9jdXNlZEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVycnk6OmhhbmRsZUtl
eWJvYXJkRXZlbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmVsZW1lbnRIYXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkluUGFnZVNl
YXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6OkluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICog
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6U2VsZWN0aW9uSGFuZGxlcjo6c2VsZWN0ZWRUZXh0KToKKwogMjAxMy0wNS0xNCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDg2NTE4
YjJiYjMxMjE5ZGJiM2UyMWY0OWZlNGI2MjczMWUwNDRhZmYuLmQ5YmZlMzEyYTMxNDg0YzM4MDNk
MGIyMzkyYWYyOGVhNzhjNTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYwMzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50RWZsOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZXdrL2V3a19m
cmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfZWRpdGFibGVfc2V0KToKKyAgICAgICAgKGV3
a19mcmFtZV9zZWxlY3Rpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3NlYXJjaCk6
CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmspOgorICAgICAgICAoZXdrX2Zy
YW1lX3RleHRfbWF0Y2hlc19oaWdobGlnaHRfc2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAg
ICAgICAgKGV3a192aWV3X3NlbGVjdGlvbl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfZWRpdG9y
X2NvbW1hbmRfZXhlY3V0ZSk6CisKIDIwMTMtMDUtMTIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0b29sYmFyIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4N2EwMWQxY2Ew
ZjNkOTNhNTkxMTQ3OGM0ZWQ5YTQwN2FiNWI5YTA3Li4wN2Q5ZGU2YTBiMDE0OTU2N2Q1M2NlZjZk
YWRhNmIzMTFkMzhlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnBhaW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUp
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjppc0NvbW1hbmRFbmFibGVkKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y2FuRWRpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0aW9uVGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUN1
cnJlbnRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbnB1dE1ldGhvZEZp
bHRlcjo6Y2FuY2VsQ3VycmVudENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0lucHV0TWV0aG9kRmlsdGVyOjpzZXRQcmVlZGl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9yZXBsYWNlX3NlbGVjdGlv
bik6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAoZ2V0TG9j
YXRpb25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KToKKyAgICAgICAgKHdlYmtpdF93
ZWJfdmlld19mb2N1c19pbl9ldmVudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVhbF9z
ZWxlY3RfYWxsKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3JlYWxfY29weV9jbGlwYm9hcmQpOgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3JlYWxfdW5kbyk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9yZWRvKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2Fy
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rl
bGV0ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2FuX3VuZG8pOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2Nhbl9yZWRvKToKKwogMjAxMy0wNS0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSBnZW5lcmF0ZWQgQ29sb3JEYXRhLmNw
cCwgV2ViS2l0Rm9udEZhbWlseU5hbWVzLihjcHB8aCkgYnVpbGQgdGFyZ2V0cyBpbnRvIGxpYlBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjBhMGU0YTMwYjhiZTUyMjRjNzRmMmJjNDJkMDMw
YTY2ZjA0NDAzNS4uZmIzZmZiYzE3OTBiN2RmYTA3ZjkxNGQ0M2U0ZDBmMTEwZWMwMGNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNjAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NlbGVjdGVkU3RyaW5nXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9maXJzdFJlY3RGb3JET01S
YW5nZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX21hcmtET01SYW5nZV0pOgorICAgICAgICAo
LVtXZWJGcmFtZSBfaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9zZXRUeXBpbmdTdHlsZTp3aXRoVW5kb0FjdGlvbjpdKToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6c2VsZWN0UmVw
bGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNoU3R5bGU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlv
biBmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfcGFzdGVXaXRoUGFzdGVib2Fy
ZDphbGxvd1BsYWluVGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3Nob3VsZERlbGV0
ZVJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfY2FuRWRpdF0pOgorICAgICAgICAo
LVtXZWJIVE1MVmlldyBfY2FuRWRpdFJpY2hseV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luc2VydFVub3Jk
ZXJlZExpc3RdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhbkluY3JlYXNlU2VsZWN0aW9u
TGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5EZWNyZWFzZVNlbGVjdGlv
bkxpc3RMZXZlbF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rpb25M
aXN0TGV2ZWxdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2luY3JlYXNlU2VsZWN0aW9uTGlz
dExldmVsT3JkZXJlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfaW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxVbm9yZGVyZWRdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RlY3JlYXNl
U2VsZWN0aW9uTGlzdExldmVsXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IEVkaXRvcjo6Y29y
ZUNvbW1hbmRCeVNlbGVjdG9yOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBFZGl0b3I6OmNv
cmVDb21tYW5kQnlOYW1lOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBi
ZWNvbWVGaXJzdFJlc3BvbmRlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9u
U3RhcnRGb250QXR0cmlidXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9hcHBs
eVN0eWxlVG9TZWxlY3Rpb246d2l0aFVuZG9BY3Rpb246XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9jaGFuZ2VDU1NDb2xvclVzaW5nU2VsZWN0b3I6aW5SYW5nZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2hv
d0d1ZXNzUGFuZWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRvZ2dsZUJhc2VXcml0aW5n
RGlyZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjaGFuZ2VCYXNlV3JpdGluZ0Rp
cmVjdGlvbjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NoYW5nZUJhc2VXcml0aW5nRGly
ZWN0aW9uVG86XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkUmFuZ2VdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB1bm1hcmtUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNldE1hcmtlZFRleHQ6c2VsZWN0ZWRSYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgaW5zZXJ0VGV4dDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3VwZGF0ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBjb3VudE1hdGNoZXNGb3JUZXh0OmluRE9NUmFuZ2U6b3B0aW9uczpsaW1pdDptYXJrTWF0Y2hl
czpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgbWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfZmluZFN0cmluZzpvcHRpb25z
Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
ZXhlY3V0ZUNvcmVDb21tYW5kQnlOYW1lOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGVk
aXRhYmxlRE9NUmFuZ2VGb3JQb2ludDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkZWxldGVTZWxlY3Rpb25dKToKKyAgICAgICAgKC1b
V2ViVmlldyBhcHBseVN0eWxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2ltcGxpZnlNYXJrdXA6ZW5kTm9kZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDpdKToKKwogMjAx
My0wNS0xNCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUHJpbnRp
bmcgaW4gMVBhc3N3b3JkIGFwcCBpcyBicm9rZW4gd2l0aCBzY3JlZW4gZm9udHMgZGlzYWJsZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggZWI1OWVhZjAyYTQyYmMzZjA2OWYzYzNlZjE0NTM0ZjBhNTMxZTZm
Ni4uYmFiOWNhNTgwNTUxMjQ0MmRhODU1NDJmZTkxNzcwZGEzNmMxY2EyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYwMzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUpOgorICAg
ICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2VsZWN0
ZWRIdG1sKToKKyAgICAgICAgKFFXZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKToK
KwogMjAxMy0wNS0xNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAZGlnaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gRml4IGEgY3Jhc2ggdW5kZXIgflBpbmdMb2FkZXIgd2hlbiB0
aGUgUU5BTSBvbiB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMzI2YTk0NGM2ZGE0N2ZhZDU2MmEwNTIwZTJiMDQ0NzQ2MjlkOThhYy4uNzg0ZmRkNTQ4ZmEy
YzIwY2M4NDBhMmMwMzNjYThkZDBhYzVmOTM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpoYXNTcGVsbGluZ01hcmtlcik6CisgICAgICAgIChXZWJGcmFtZTo6c2V0
VGV4dERpcmVjdGlvbik6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0ZWRTdHJpbmcpOgorICAg
ICAgICAoV2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpleGVjdXRlQ29yZUNvbW1hbmRC
eU5hbWUpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViVmlldzo6ZWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViVmlldzo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KToKKyAgICAgICAgKFdl
YlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6
OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlVUkwpOgorICAgICAgICAoV2ViVmlldzo6
ZGVsZXRlXyk6CisgICAgICAgIChXZWJWaWV3OjpjaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdl
YlZpZXc6OnNob3dHdWVzc1BhbmVsKToKKyAgICAgICAgKFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKToKKyAgICAgICAgKFdlYlZpZXc6OnByZXBhcmVDYW5kaWRhdGVXaW5kb3cpOgor
ICAgICAgICAoV2ViVmlldzo6cmVzZXRJTUUpOgorICAgICAgICAoV2ViVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9ySU1FKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVFbmRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3Ojpv
bklNRVJlcXVlc3RDaGFyUG9zaXRpb24pOgorICAgICAgICAoV2ViVmlldzo6b25JTUVSZXF1ZXN0
KToKKyAgICAgICAgKFdlYlZpZXc6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAg
IChXZWJWaWV3OjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6
Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3Ojpjb21wb3Np
dGlvblJhbmdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJWaWV3OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViVmlldzo6c2VsZWN0ZWRSYW5nZUZv
clRlc3RpbmcpOgorCiAyMDEzLTA1LTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIFdlYiBJbnNwZWN0
b3IgdG9vbGJhciBoZWlnaHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGVjYjlhMmMwMGQ1ZGZi
OWEzZTlhMGIxZDUyMDRlY2I3YTk4ZjRlNTQuLjhlMzRjMDE4MjMwNDMxZTQxMTE3OWZlNGJkNzdj
NWRmN2U2ZWY0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBG
cmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpoYW5k
bGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisKIDIwMTMtMDQtMjkgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjc3ODg4MjNjMDUzODA4YTFhMjZhNGQyNzIxMDMxMmNlNTAzMTQ1ZC4uNzg2
M2U1OGIwNjJmOTJjOGM1M2I4YTdmM2Y5ZGFiYWQ2ZWI3OWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CisKKyAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjAzNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRl
UGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50
OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpjaGFuZ2VXb3JkQ2FzZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleGVjdXRl
RWRpdGluZ0NvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc0VkaXRpbmdDb21t
YW5kRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBwZXJjYXNlV29yZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Omxvd2VyY2FzZVdvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYXBp
dGFsaXplV29yZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4
dFVJUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JU
ZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzQ29tcG9zaXRpb25Gb3JUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29uZmlybUNvbXBvc2l0aW9uRm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENv
bXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYXJrZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKwogMjAxMy0wNS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIFdURl9VU0VfUExBVEZPUk1fU1RSQVRFR0lFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTZjZjNhYWM4
OWE3N2U5ODM0MTNmNzY5NDJkNDdmNzIzODIzN2Y1NC4uOWQyMWZhYTM5ODBkMzAwMzA4ZWUwMGY0
YWEyOTRiNzljMDA0MWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMjAsMTEgKzMyMCw5IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1l
LT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogICAgIAotICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci0+dGV4dENoZWNrZXIoKTsKKyAgICBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAgICBpZiAo
IXRleHRDaGVja2VyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
RWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGIzMTQ1M2RkMDgwNjhk
MzRlNDg1MDNiNDcwODU4YjJmMzQ4M2ViMWYuLmEzM2M1OTM2MDk1ZTdmZjc4MTZkNWY1ZmJjYTM5
Zjc1MTU2NThlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJs
ZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRJbnNlcnRUZXh0KEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgY29uc3QKICAgICBj
b3JlT2JqZWN0LT5zZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKGNvcmVPYmplY3QtPnZp
c2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2UoKnBvc2l0aW9uLCAwKSkp
OwogICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0ZXh0IGxlbmd0aCwgd2hp
Y2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KLSAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCktPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQoU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBmYWxzZSwgMCkpCisgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpLCBm
YWxzZSwgMCkpCiAgICAgICAgICpwb3NpdGlvbiArPSBsZW5ndGg7CiB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0RGVsZXRlVGV4
dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcwogCiAgICAgY29yZU9iamVjdC0+c2V0U2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb3JlT2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5n
ZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpKTsK
ICAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUpOwotICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5wZXJmb3JtRGVsZXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVF
ZGl0YWJsZVRleHRQYXN0ZVRleHQoQXRrRWRpdGFibGVUZXh0KiwgZ2ludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDQ3ZmMxNzA1OWI3YWEyYmI3OGQ5YjZk
ZTc4MDM1YjAxMGIyZGJmZC4uOWYzYTk1ODU4NjdkZDNhYmUwODZmNmExMGIzN2U3NmE2M2M0ZGJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTcyNCw3ICs3
MjQsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsCiB7CiAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS50ZXh0Q2hlY2tlcigpOwogICAgICAgICAKICAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJh
Z3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGlu
IFdLMSBhbmQgV0syCiAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIGludCBjdXJy
ZW50UG9zaXRpb24gPSAwOwogICAgIHdoaWxlIChjaGFyTGVuZ3RoID4gMCkgewogICAgICAgICBj
b25zdCBVQ2hhciogY2hhckRhdGEgPSBjaGFycyArIGN1cnJlbnRQb3NpdGlvbjsKLSAgICAgICAg
VGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNr
ZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0Q2hlY2tlcigpOwog
ICAgICAgICAKICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKICAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXgg
NzQ0NjlmMDAyNmM5MzA5YTdjMzFjZjgwOGNjMWI1MjM4ODBkNDNlMC4uOTY0MGMzYmUyMjFlZGIz
NjU0NmYzMjQxNTUzODFmNGI4MmI4MzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAg
LTM0NSw3ICszNDUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2Us
IEZyYW1lKiBmcmFtZSkKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGRlc2lnbiBtaXN0YWtlLCBh
IGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IHNob3VsZCBiZSBmaXhlZC4KICAgICAvLyBUaGUgY29k
ZSB0byB3cml0ZSB0aGUgcmFuZ2UgdG8gYSBwYXN0ZWJvYXJkIHNob3VsZCBiZSBhbiBFZGl0b3Ig
ZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHBhc3RlYm9hcmQgYXJndW1lbnQuCiAgICAgLy8gRklYTUU6
IFRoZSBmcmFtZSBhcmd1bWVudCBzZWVtcyByZWR1bmRhbnQsIHNpbmNlIGEgUmFuZ2UgaXMgaW4g
YSBwYXJ0aWN1bGFyIGRvY3VtZW50LCB3aGljaCBoYXMgYSBjb3JyZXNwb25kaW5nIGZyYW1lLgot
ICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1lLT5lZGl0b3IoKS0+
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5ncmFudWxh
cml0eSgpID09IFdvcmRHcmFudWxhcml0eSwgZnJhbWUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JD
bGlwYm9hcmQpOworICAgIG1fcGFzdGVib2FyZC0+d3JpdGVTZWxlY3Rpb24ocmFuZ2UsIGZyYW1l
LT5lZGl0b3IoKS5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSAmJiBmcmFtZS0+c2VsZWN0aW9u
KCktPmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5LCBmcmFtZSwgSW5jbHVkZUltYWdl
QWx0VGV4dEZvckNsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVBsYWluVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYTUwZTE1ZmRkZTc4ODhkMDEzMDlmMDk4MWM4ODMzNWUxMDhlOWUxNS4uMDExMWZlNjZhZGNh
ZDI4MzkzYmJjNDUxYzU1OTRjMzg3YWU4MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUgKmNsb25lKQogI2lmIEVOQUJMRShERUxFVElPTl9VSSkKICAg
ICBIVE1MRWxlbWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRlbGV0ZUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXIoKS0+Y29udGFpbmVyRWxlbWVudCgpOworICAgICAgICBkZWxldGVCdXR0b25Db250YWluZXJF
bGVtZW50ID0gZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+Y29udGFp
bmVyRWxlbWVudCgpOwogICAgIGNsb25lQ2hpbGROb2Rlc0F2b2lkaW5nRGVsZXRlQnV0dG9uKHRo
aXMsIGNsb25lLCBkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KTsKICNlbHNlCiAgICAgY2xv
bmVDaGlsZE5vZGVzQXZvaWRpbmdEZWxldGVCdXR0b24odGhpcywgY2xvbmUsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZGE0NDYwMzNiYjZhOTIxOGExZTZlNWUyYmQ3NjUyZjdhM2E1
M2U4MC4uMTFjZjg1NmVlZDVjNTA5NmZkZWJlZDNiMmZjOTU1ZjY5NGU0ZGM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIGJvb2wgYWNjZXB0c0Vk
aXRpbmdGb2N1cyhOb2RlKiBub2RlKQogICAgIGlmICghZnJhbWUgfHwgIXJvb3QpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNob3VsZEJlZ2lu
RWRpdGluZyhyYW5nZU9mQ29udGVudHMocm9vdCkuZ2V0KCkpOworICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCkuc2hvdWxkQmVnaW5FZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5nZXQoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqIHRhcmdldEZyYW1lKQpAQCAtMzM2MSw3ICsz
MzYxLDcgQEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBw
cnBOZXdGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChvbGRGb2N1c2VkTm9kZS0+aXNSb290RWRpdGFi
bGVFbGVtZW50KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkRW5kRWRpdGlu
ZygpOworICAgICAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkuZGlkRW5kRWRpdGluZygpOwogCiAg
ICAgICAgIGlmICh2aWV3KCkpIHsKICAgICAgICAgICAgIFdpZGdldCogb2xkV2lkZ2V0ID0gd2lk
Z2V0Rm9yTm9kZShvbGRGb2N1c2VkTm9kZS5nZXQoKSk7CkBAIC0zNDEwLDcgKzM0MTAsNyBAQCBi
b29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld0ZvY3Vz
ZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgICAgICBtX2ZvY3VzZWROb2RlLT5zZXRGb2N1cyh0
cnVlKTsKIAogICAgICAgICBpZiAobV9mb2N1c2VkTm9kZS0+aXNSb290RWRpdGFibGVFbGVtZW50
KCkpCi0gICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+ZGlkQmVnaW5FZGl0aW5nKCk7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS5kaWRCZWdpbkVkaXRpbmcoKTsKIAogICAgICAg
ICAvLyBld3csIEkgc3Vjay4gc2V0IHRoZSBxdCBmb2N1cyBjb3JyZWN0bHkKICAgICAgICAgLy8g
IyMjIGZpbmQgYSBiZXR0ZXIgcGxhY2UgaW4gdGhlIGNvZGUgZm9yIHRoaXMKQEAgLTQxOTEsNyAr
NDE5MSw3IEBAIHN0YXRpYyBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
U3R5bGVJZk5lZWRlZCgpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChj
b21tYW5kTmFtZSwKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5h
bWUsCiAgICAgICAgIHVzZXJJbnRlcmZhY2UgPyBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlIDogQ29tbWFuZEZyb21ET00pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCA2MTNhYWY5ODg5MDNiNDc5
MTM1ZGZkYmUxYThkYmZlNWRkNzQ4NTM3Li45ZWVlZTJkMDU4N2E1NTQ2MjFjYTQwYjUwYzNmMGEz
NDRlMGU4YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoVGltZXI8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4qKQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQoc2VsZWN0aW9uLnN0YXJ0KCksIHNl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBzdGFydE9m
V29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKLSAgICAgICAg
bV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5n
ZXMoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50
IHwgVGV4dENoZWNraW5nVHlwZVNob3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9O
b3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgMCk7CisgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLm1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50IHwgVGV4dENoZWNraW5nVHlwZVNo
b3dDb3JyZWN0aW9uUGFuZWwsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQo
KSwgMCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTc0Miw5ICs3NDIsOSBAQCBWZWN0b3I8U3RyaW5nPiBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3Qg
RAogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseURpY3RhdGlvbkFsdGVybmF0
aXZlKGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTdHJpbmcpCiB7CiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBtX2ZyYW1lLT5lZGl0b3IoKTsK
LSAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IGVkaXRvci0+c2VsZWN0ZWRSYW5nZSgpOwot
ICAgIGlmICghc2VsZWN0aW9uIHx8ICFlZGl0b3ItPnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRp
dmVTdHJpbmcsIHNlbGVjdGlvbi5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAg
ICBFZGl0b3ImIGVkaXRvciA9IG1fZnJhbWUtPmVkaXRvcigpOworICAgIFJlZlB0cjxSYW5nZT4g
c2VsZWN0aW9uID0gZWRpdG9yLnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGlvbiB8
fCAhZWRpdG9yLnNob3VsZEluc2VydFRleHQoYWx0ZXJuYXRpdmVTdHJpbmcsIHNlbGVjdGlvbi5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKICAgICAgICAgcmV0dXJuOwogICAgIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciogbWFya2VycyA9IHNlbGVjdGlvbi0+c3RhcnRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpOwogICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcio+
IGRpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcnMgPSBtYXJrZXJzLT5tYXJrZXJzSW5SYW5nZShz
ZWxlY3Rpb24uZ2V0KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRl
eCBlN2Y5ZjAwYjY2OTMyMzIyY2RkM2U1ODA5MWE3NzFkYzhmYzk1OGY2Li5kMjJmOGI5MTkyOTk5
NTM4ZjgyNjgxNDNhMDE1OGZhNGNmYjg3OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRWRp
dENvbW1hbmRDb21wb3NpdGlvbjo6dW5hcHBseSgpCiAgICAgICAgICAgICBtX2NvbW1hbmRzW2kg
LSAxXS0+ZG9VbmFwcGx5KCk7CiAgICAgfQogCi0gICAgZnJhbWUtPmVkaXRvcigpLT51bmFwcGxp
ZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3IoKS51bmFwcGxpZWRFZGl0aW5nKHRo
aXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246OnJlYXBwbHkoKQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHZvaWQgRWRpdENvbW1hbmRDb21wb3NpdGlvbjo6cmVhcHBseSgpCiAgICAg
ICAgICAgICBtX2NvbW1hbmRzW2ldLT5kb1JlYXBwbHkoKTsKICAgICB9CiAgICAgCi0gICAgZnJh
bWUtPmVkaXRvcigpLT5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5yZWFwcGxpZWRFZGl0aW5nKHRoaXMpOwogfQogCiB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRp
b246OmFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCogY29tbWFuZCkKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseSgpCiAgICAgLy8gT25seSBuZWVkIHRv
IGNhbGwgYXBwbGllZEVkaXRpbmcgZm9yIHRvcC1sZXZlbCBjb21tYW5kcywKICAgICAvLyBhbmQg
VHlwaW5nQ29tbWFuZHMgZG8gaXQgb24gdGhlaXIgb3duIChzZWUgVHlwaW5nQ29tbWFuZDo6dHlw
aW5nQWRkZWRUb09wZW5Db21tYW5kKS4KICAgICBpZiAoIWNhbGxzQXBwbGllZEVkaXRpbmdJbkRv
QXBwbHkoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGxpZWRFZGl0aW5nKHRoaXMpOwogICAgIHNldFNo
b3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKGZhbHNlKTsKIH0KIApAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBGSVhNRSAoNTA5ODkz
MSk6IFdlIHNob3VsZCBhZGQgYSBuZXcgaW5zZXJ0IGFjdGlvbiAiV2ViVmlld0luc2VydEFjdGlv
bk1vdmVkIiBhbmQgY2FsbCBzaG91bGRJbnNlcnRGcmFnbWVudCBoZXJlLgogICAgIAogICAgIHNl
dEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0LCBlbmQsIERPV05TVFJFQU0p
KTsKLSAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xlYXJNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS5jbGVhck1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9u
KCkpOwogICAgIGRlbGV0ZVNlbGVjdGlvbihmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAK
ICAgICBBU1NFUlQoZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCktPmlu
RG9jdW1lbnQoKSk7CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3Jh
cAogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxl
OwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAotICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkubWFya01pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCiAgICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiBpcyBpbiBhbiBlbXB0eSBwYXJhZ3JhcGgsIHJlc3RvcmUgc3R5bGVzIGZyb20g
dGhlIG9sZCBlbXB0eSBwYXJhZ3JhcGggdG8gdGhlIG5ldyBlbXB0eSBwYXJhZ3JhcGguCiAgICAg
Ym9vbCBzZWxlY3Rpb25Jc0VtcHR5UGFyYWdyYXBoID0gZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzU3RhcnRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSkgJiYgaXNFbmRPZlBhcmFncmFwaChlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbi5jcHAKaW5kZXggMjQ2YTk1MjI2ZGE5
NjA2NTE1MjFlMzIxMWNjNzkyYzQ1OGJlYmFmMy4uNzcyYjJhOTM2ZDAzZjMzNjgxNWNkY2QwZTRm
OWNiNzQ4NTA3OGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQYXNzUmVmUHRyPERlbGV0ZUJ1dHRvbj4gRGVsZXRlQnV0dG9uOjpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogdm9pZCBEZWxldGVCdXR0b246OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRlbGV0ZVRhcmdldCgpOworICAgICAgICBk
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmRl
bGV0ZVRhcmdldCgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlQnV0dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGVkNGIzYjdhZWMzZTYwZDNiYmE3NTQ2MzUxMDYxYzYw
NTg0ZTI4ZGMuLmY1ZDY1MTU4YzkwZWFkMWQwZDhmNmE4N2ZjNDQxZWQ4ODc3NjY4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6c2hvdyhIVE1M
RWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhZWxlbWVudCB8fCAhZWxl
bWVudC0+aW5Eb2N1bWVudCgpIHx8ICFpc0RlbGV0YWJsZUVsZW1lbnQoZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCktPmNsaWVudCgpOworICAgIEVkaXRvckNsaWVudCogY2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5oCmluZGV4IGZhMGNiOWZjNTZhZTgy
OWQxYjQ3YjkzYTA3YTAyZDBlYTU3NDMzM2UuLjdhMTEzYTkzOTliYjdkZGE3ODVjOGIyNzQwY2E1
NzdlZjQ4ZDM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5oCkBAIC04MywxMyArODMsMTMgQEAgcHVibGljOgogICAgICAgICA6IG1fZnJh
bWUoZnJhbWUpCiAgICAgewogICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOworICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZGlzYWJsZSgpOwog
ICAgIH0KIAogICAgIH5EZWxldGVCdXR0b25Db250cm9sbGVyRGlzYWJsZVNjb3BlKCkKICAgICB7
CiAgICAgICAgIGlmIChtX2ZyYW1lKQotICAgICAgICAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXIoKS0+ZW5hYmxlKCk7CisgICAgICAgICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS5kZWxldGVCdXR0b25Db250cm9sbGVyKCktPmVuYWJsZSgpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCmluZGV4IDZlN2Y0NGFhNGU2NGY3MjY4ZWRiN2E4NmMxZGU1MmY5OGJiNTRiYTguLjQz
YThlYzkyMzU5YmI3ZTllNDIyOTBhMWViNzEzNTY3ODA5YTRmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNjQ4LDcgKzY0
OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VQYXJhZ3JhcGhzKCkKICAg
ICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCkpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlUmVwbGFjZWQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIG1lcmdlRGVzdGluYXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1
aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpZiAoIWRvY3VtZW50
KCktPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnQoKS0+c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxl
dGUocmFuZ2UuZ2V0KCksIHJhbmdlVG9CZVJlcGxhY2VkLmdldCgpKSkKKyAgICBpZiAoIWRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmNsaWVudCgpLT5zaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShyYW5nZS5nZXQoKSwgcmFuZ2VUb0JlUmVwbGFjZWQuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgd2lsbCBpbnNlcnQgcGxhY2Vob2xkZXJz
IGlmIGl0IHJlbW92ZXMgYmxvY2tzIHRoYXQgd291bGQgcmVxdWlyZSB0aGVpciB1c2UsIGRvbid0
IGxldCBibG9jawpAQCAtNzk0LDcgKzc5NCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgaWYgKCFtX3JlcGxhY2UpIHsKICAgICAgICAgRWxlbWVudCogdGV4
dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobV9zZWxlY3Rpb25Ub0RlbGV0ZS5z
dGFydCgpKTsKICAgICAgICAgaWYgKHRleHRDb250cm9sICYmIHRleHRDb250cm9sLT5mb2N1c2Vk
KCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dFdpbGxC
ZURlbGV0ZWRJblRleHRGaWVsZCh0ZXh0Q29udHJvbCk7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5mcmFtZSgpLT5lZGl0b3IoKS50ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKHRleHRDb250
cm9sKTsKICAgICB9CiAKICAgICAvLyBzYXZlIHRoaXMgdG8gbGF0ZXIgbWFrZSB0aGUgc2VsZWN0
aW9uIHdpdGgKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgaWYgKCFvcmlnaW5hbFN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQ
b3NpdGlvbiwgb3JpZ2luYWxTdHJpbmcpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmRl
bGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24obV9lbmRpbmdQb3NpdGlvbiwgb3JpZ2luYWxT
dHJpbmcpOwogICAgIH0KIAogICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KG1fZW5kaW5nUG9zaXRpb24sIGFmZmluaXR5LCBlbmRpbmdTZWxlY3Rpb24oKS5pc0RpcmVjdGlv
bmFsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKaW5kZXggYmU1ZWYx
NTY2ZmVjN2MyYWZjZTI2ZDA3YTY3MTBmMzY3MTI4YjcyZC4uZWI1Mjc2OGRmNDE5ZGU3OTAyMmI3
MmFmZWU3ZDRhODg3YTMwZmZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudCk7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPmZyYW1lKCkpOwotICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1l
KCktPmVkaXRvcigpLT5hdm9pZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVy
KG1fZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIHNl
dFN0YXJ0aW5nU2VsZWN0aW9uKG1fZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmF2b2lkSW50
ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIobV9kb2N1bWVudC0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKSk7CiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKG1fc3Rh
cnRpbmdTZWxlY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMThlZTVlNjNlMTdjZDAwMTdjYmY0M2UyNDVlOTAzNDIwMWY1NDUyZi4uMDgxYzVk
ZWQ5NWY2NDJjYWY3YjdjNDZhN2Q2ZmUwZDQ5YjBjODVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgU3R5bGVDaGFuZ2U6OlN0
eWxlQ2hhbmdlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
LSAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCisgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkpCiAgICAgICAgIGV4dHJhY3RUZXh0U3R5bGVzKGRvY3VtZW50LCBtdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPnVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkpOwogCiAgICAg
Ly8gQ2hhbmdpbmcgdGhlIHdoaXRlc3BhY2Ugc3R5bGUgaW4gYSB0YWIgc3BhbiB3b3VsZCBjb2xs
YXBzZSB0aGUgdGFiIGludG8gYSBzcGFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCBjMGViZTA4M2JlMDczNjYyNDVkZGIxMDNjYjliOTlmN2E4OGUzODY2Li43ZDQ4MjMyMGZiNjYx
YzY5NWI5MTFhNDI5YjE2MDE0M2UzNDRhY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC0yMDA4LDkgKzIwMDgsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVy
VHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICAg
ICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFmcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4
dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0b3JJbnNl
cnRBY3Rpb25UeXBlZCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0VGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBFZGl0
b3JJbnNlcnRBY3Rpb25UeXBlZCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZyYW1l
KCktPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoYXV0b2NvcnJlY3RlZFN0cmlu
ZywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZnJhbWUoKS0+ZWRpdG9yKCkucmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CiAKICAgICAg
ICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIGZy
YW1lKCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGIzMGZmOGE2MTdm
MDQxNDg5ZmVjNGJmZTJmNDc2OWU3NzU3NDlkNzguLjk4YzMwMWIyZWEzZjgyYTU0NjlkNTRmMmQ2
NTA0YmExY2E0NzcwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtMTA1LDExICsxMDUsMTEgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICAvLyBG
SVhNRTogV2UgZG9uJ3QgY2FsbCBzaG91bGRBcHBseVN0eWxlIHdoZW4gdGhlIHNvdXJjZSBpcyBE
T007IGlzIHRoZXJlIGEgZ29vZCByZWFzb24gZm9yIHRoYXQ/CiAgICAgc3dpdGNoIChzb3VyY2Up
IHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oc3R5bGUsIGFjdGlvbik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmFwcGx5U3R5bGUoc3R5bGUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShz
dHlsZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHls
ZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAg
Ly8gb3RoZXI6IHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uCiAKICAgICBib29sIHN0
eWxlSXNQcmVzZW50OwotICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxk
VG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQotICAgICAgICBzdHlsZUlzUHJl
c2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlE
LCBvblZhbHVlKTsKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkVG9n
Z2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQorICAgICAgICBzdHlsZUlzUHJlc2Vu
dCA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIG9u
VmFsdWUpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSkgPT0gVHJ1ZVRyaVN0YXRlOwogCiAgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBz
dHlsZUlzUHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CiAgICAgcmV0dXJuIGFwcGx5Q29t
bWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CkBAIC0x
ODAsMTEgKzE4MCwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBjYWxsIHNob3VsZEFwcGx5U3R5bGUgd2hlbiB0aGUgc291cmNlIGlzIERPTTsgaXMg
dGhlcmUgYSBnb29kIHJlYXNvbiBmb3IgdGhhdD8KICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAg
IGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihzdHlsZS5nZXQoKSwgYWN0aW9uKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihz
dHlsZS5nZXQoKSwgYWN0aW9uKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21t
YW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6Ci0g
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZS5nZXQoKSk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVBhcmFncmFwaFN0eWxlKHN0eWxlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBSZWZQdHI8UmFuZ2U+IG9sZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlv
bigpLT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEVBZmZpbml0eSBhZmZp
bml0eSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKTsKLSAgICBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y2xpZW50KCktPnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uob2xkUmFuZ2UuZ2V0
KCksIG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgZmFsc2UpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5zaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKG9sZFJhbmdlLmdldCgp
LCBuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHksIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQo
KSwgYWZmaW5pdHksIHRydWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMjI2LDE2ICsyMjYsMTYg
QEAgc3RhdGljIGJvb2wgZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcmkKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2ly
ZWRWYWx1ZSkKIHsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRv
Z2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFs
dWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOworICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25T
dGFydE9mU2VsZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRl
IDogRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhh
c1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgdmFs
dWVTdHlsZShGcmFtZSogZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICAv
LyBGSVhNRTogUmF0aGVyIHRoYW4gcmV0cmlldmluZyB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwKICAgICAvLyB3ZSBzaG91bGQgcmV0cmlldmUgdGhlIHN0
eWxlIHByZXNlbnQgdGhyb3VnaG91dCB0aGUgc2VsZWN0aW9uIGZvciBub24tTWFjIHBsYXRmb3Jt
cy4KLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5
VmFsdWUocHJvcGVydHlJRCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25T
dGFydENTU1Byb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24pCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUJhY2tDb2xv
cihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGMKIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUNvcHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7
CisgICAgZnJhbWUtPmVkaXRvcigpLmNvcHkoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
Mjk4LDE4ICsyOTgsMTggQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUN1dChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFMKIHsKICAgICBpZiAoc291
cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5n
R2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jdXQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmN1dCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY3V0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWZhdWx0UGFyYWdyYXBoU2VwYXJhdG9yKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImRpdiIpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNldERl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNEaXYpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0
b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0Rpdik7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJwIikpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0RGVmYXVsdFBhcmFn
cmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1ApOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuc2V0RGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcihFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc1ApOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMjAsNyArMzIwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tTWVudU9yS2V5Qmlu
ZGluZzogewogICAgICAgICAvLyBEb2Vzbid0IG1vZGlmeSB0aGUgdGV4dCBpZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gaXNuJ3QgYSByYW5nZS4KICAgICAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRp
Y2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihmcmFtZSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+cGVyZm9ybURlbGV0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURl
bGV0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBDb21tYW5kRnJv
bURPTToKQEAgLTMzNiwzMiArMzM2LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCkt
PmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFy
aXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0
cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9u
QmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2OSw3ICsz
NjksNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsCiB7CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgog
ICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAo
bGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0
ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9y
d2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTM3Nyw0MCArMzc3LDQwIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFy
YWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291CiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJh
Z3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRy
PFJhbmdlPiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKS50b05vcm1hbGl6ZWRSYW5nZSgp
OwogICAgIGlmIChtYXJrKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0ZWQgPSBzZWxlY3Rpb24tPnNl
dFNlbGVjdGVkUmFuZ2UodW5pb25ET01SYW5nZXMobWFyay5nZXQoKSwgZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFJhbmdlKCkuZ2V0KCkpLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKTsKKyAgICAg
ICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi0+c2V0U2VsZWN0ZWRSYW5nZSh1bmlvbkRPTVJh
bmdlcyhtYXJrLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKS5n
ZXQoKSwgRE9XTlNUUkVBTSwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVChzZWxlY3RlZCk7CiAgICAg
ICAgIGlmICghc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKKyAgICBmcmFtZS0+ZWRp
dG9yKCkucGVyZm9ybURlbGV0ZSgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrKGZyYW1l
LT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5
LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
RGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndh
cmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1
ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRmlu
ZFN0cmluZyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5n
KHZhbHVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBmcmFtZS0+ZWRp
dG9yKCkuZmluZFN0cmluZyh2YWx1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZUZvbnROYW1lKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAg
ICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NOgog
ICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTQ3Miw3ICs0NzIs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSogZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSWdub3Jl
U3BlbGxpbmcoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydExpbmVCcmVhayhG
cmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXIKIHN0YXRpYyBib29s
IGV4ZWN1dGVJbnNlcnROZXdsaW5lKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9
IFdlYkNvcmU6OnRhcmdldEZyYW1lKGZyYW1lLCBldmVudCk7Ci0gICAgcmV0dXJuIHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVGV4dElucHV0RXZlbnQoIlxuIiwgZXZlbnQsIHRh
cmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0TGluZUJyZWFrKTsKKyAgICByZXR1cm4gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUZXh0SW5wdXRFdmVudCgiXG4iLCBldmVudCwgdGFyZ2V0
RnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQg
OiBUZXh0RXZlbnRJbnB1dExpbmVCcmVhayk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNl
cnROZXdsaW5lSW5RdW90ZWRDb250ZW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBib29s
IGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9
IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CiAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NWYWx1ZUx0cik7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCksIEVk
aXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDCiB7CiAgICAgUmVmUHRyPE11
dGFibGVTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwg
Q1NTVmFsdWVOb3JtYWwpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5n
ZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3Io
KS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQoRnJhbWUqIGZyYW1lLCBF
dmVudCosIEVkaQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBN
dXRhYmxlU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTVmFsdWVSdGwpOwotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+YXBwbHlTdHlsZShzdHlsZS5nZXQoKSwgRWRpdEFjdGlvblNldFdyaXRpbmdEaXJl
Y3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlKHN0eWxlLmdldCgpLCBFZGl0
QWN0aW9uU2V0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlT3V0ZGVudChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlT3ZlcndyaXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlT3ZlcndyaXRlTW9k
ZUVuYWJsZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtOTEyLDIyICs5MTIsMjIgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVBhc3RlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlIHNvdXJjZSwgY29uc3QKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
cGFzdGUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVBhc3Rl
R2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRpdG9y
KCkuY2xpZW50KCktPnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBBU1NFUlRfVU5VU0VEKHNvdXJjZSwgc291cmNlID09IENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZyk7CiAgICAgVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2Vz
dHVyZUluZGljYXRvcihmcmFtZSk7CiAKICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUgPSBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGUoKTsK
ICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9s
ZFNlbGVjdGlvbk1vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTM2LDkgKzkzNiw5IEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVQYXN0ZUFuZE1hdGNoU3R5bGUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UKIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9t
TWVudU9yS2V5QmluZGluZykgewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0
eXBpbmdHZXN0dXJlSW5kaWNhdG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5w
YXN0ZUFzUGxhaW5UZXh0KCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWlu
VGV4dCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC05NDYsOSArOTQ2LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0
ZVBhc3RlQXNQbGFpblRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc28KIHsKICAgICBpZiAoc291cmNlID09IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZykg
ewogICAgICAgICBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvciB0eXBpbmdHZXN0dXJlSW5kaWNh
dG9yKGZyYW1lKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5wYXN0ZUFzUGxhaW5UZXh0KCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzUGxhaW5UZXh0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+cGFzdGVBc1BsYWluVGV4dCgpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkucGFzdGVBc1BsYWluVGV4dCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC05NjMsMTMgKzk2MywxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlUHJpbnQoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZwogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnJlZG8oKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkucmVkbygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlUmVtb3ZlRm9ybWF0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+cmVtb3ZlRm9y
bWF0dGluZ0FuZFN0eWxlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnJlbW92ZUZvcm1hdHRpbmdB
bmRTdHlsZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDI2LDggKzEwMjYsOCBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJr
KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdl
PiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIGlmICgh
bWFyayB8fCAhc2VsZWN0aW9uKSB7CiAgICAgICAgIHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVj
dFdvcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFMK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5z
ZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOworICAgIGZyYW1lLT5lZGl0
b3IoKS5zZXRNYXJrKGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xMDU1LDEzICsxMDU1LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVT
dHJpa2V0aHJvdWdoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgZnJh
bWUtPmVkaXRvcigpLT5zZXRTaG91bGRTdHlsZVdpdGhDU1MoIWVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLCAiZmFsc2UiKSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldFNob3VsZFN0eWxlV2l0aENT
UyghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVVzZUNTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldFNob3VsZFN0eWxlV2l0aENTUyhlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZh
bHNlIikpOworICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRTaG91bGRTdHlsZVdpdGhDU1MoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJmYWxzZSIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTA3NywyMSArMTA3NywyMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLAogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG1h
cmsgPSBmcmFtZS0+ZWRpdG9yKCktPm1hcmsoKTsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBtYXJrID0gZnJhbWUtPmVkaXRvcigpLm1hcmsoKTsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwogICAgIGlm
IChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkgewogICAgICAgICBzeXN0ZW1C
ZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZnJhbWUtPnNlbGVjdGlv
bigpLT5zZXRTZWxlY3Rpb24obWFyayk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrKHNl
bGVjdGlvbik7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIGV4ZWN1dGVU
YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50YWtl
RmluZFN0cmluZ0Zyb21TZWxlY3Rpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkudGFrZUZpbmRT
dHJpbmdGcm9tU2VsZWN0aW9uKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTEx
MDgsNyArMTEwOCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVJdGFsaWMoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVUcmFuc3Bvc2UoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkudHJhbnNwb3NlKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTExMjAsNyArMTEyMCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVVbmRlcmxpbmUoRnJhbWUqIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjCiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLT5lZGl0b3IoKS0+dW5kbygpOworICAgIGZyYW1l
LT5lZGl0b3IoKS51bmRvKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExNDMsMTUgKzEx
NDMsMTUgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVVuc2VsZWN0KEZyYW1lKiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZVlh
bmsoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoZnJhbWUtPmVkaXRvcigpLT5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKLSAg
ICBmcmFtZS0+ZWRpdG9yKCktPmtpbGxSaW5nKCktPnNldFRvWWFua2VkU3RhdGUoKTsKKyAgICBm
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dFdpdGhvdXRTZW5kaW5nVGV4dEV2ZW50KGZyYW1lLT5l
ZGl0b3IoKS5raWxsUmluZygpLT55YW5rKCksIGZhbHNlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRTdGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlWWFua0FuZFNlbGVjdChGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS0+ZWRpdG9y
KCktPmluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCktPmtp
bGxSaW5nKCktPnlhbmsoKSwgdHJ1ZSwgMCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5raWxsUmlu
ZygpLT5zZXRUb1lhbmtlZFN0YXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+eWFuaygp
LCB0cnVlLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkua2lsbFJpbmcoKS0+c2V0VG9ZYW5rZWRT
dGF0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0ZWRDb3B5Q3V0KEZyYW1lKiBmcmFtZSkKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKICAgICBib29sIGRlZmF1bHRWYWx1ZSA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCk7CiAKLSAgICBF
ZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgRWRp
dG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGNsaWVudC0+Y2FuQ29weUN1dChmcmFtZSwgZGVmYXVsdFZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKIH0KIApAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0
aW5ncygpOwogICAgIGJvb2wgZGVmYXVsdFZhbHVlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBzZXR0aW5ncy0+RE9NUGFzdGVBbGxvd2Vk
KCk7CiAKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50
KCk7CisgICAgRWRpdG9yQ2xpZW50KiBjbGllbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCk7
CiAgICAgcmV0dXJuIGNsaWVudCA/IGNsaWVudC0+Y2FuUGFzdGUoZnJhbWUsIGRlZmF1bHRWYWx1
ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHN0YXRpYyBib29s
IGVuYWJsZWQoRnJhbWUqLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiBzdGF0aWMgYm9v
bCBlbmFibGVkVmlzaWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKICAgICAvLyBUaGUgdGVybSAidmlzaWJsZSIgaGVyZSBpbmNs
dWRlcyBhIGNhcmV0IGluIGVkaXRhYmxlIHRleHQgb3IgYSByYW5nZSBpbiBhbnkgdGV4dC4KLSAg
ICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+ZWRpdG9yKCktPnNl
bGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25Gb3JDb21tYW5kKGV2ZW50KTsKICAg
ICByZXR1cm4gKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlzQ29udGVudEVkaXRh
YmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCk7CiB9CiAKQEAgLTEyMjAsMzcgKzEyMjAsMzcg
QEAgc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVTZWxlY3Rpb25PckNhcmV0QnJvd3NpbmcoRnJh
bWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEUKIAogc3RhdGljIGJvb2wgZW5hYmxlZFZpc2libGVT
ZWxlY3Rpb25BbmRNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlKQogewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCk7CisgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkZvckNvbW1h
bmQoZXZlbnQpOwogICAgIHJldHVybiAoKHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpIHx8IHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0gICAgICAgICYm
IGZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLmlzQ2FyZXRPclJhbmdlKCk7CisgICAgICAgICYmIGZy
YW1lLT5lZGl0b3IoKS5tYXJrKCkuaXNDYXJldE9yUmFuZ2UoKTsKIH0KIAogc3RhdGljIGJvb2wg
ZW5hYmxlQ2FyZXRJbkVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiBldmVudCwgRWRp
dG9yQ29tbWFuZFNvdXJjZSkKIHsKLSAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpOworICAgIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rp
b25Gb3JDb21tYW5kKGV2ZW50KTsKICAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKTsKIH0KIAogc3RhdGljIGJvb2wgZW5hYmxlZENv
cHkoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5Db3B5KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5ESFRNTENvcHkoKSB8fCBm
cmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkQ3V0KEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5DdXQo
KTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCkgfHwgZnJhbWUtPmVk
aXRvcigpLmNhbkN1dCgpOwogfQogCiBzdGF0aWMgYm9vbCBlbmFibGVkSW5FZGl0YWJsZVRleHQo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2UpCiB7Ci0gICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkucm9vdEVk
aXRhYmxlRWxlbWVudCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uRm9y
Q29tbWFuZChldmVudCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogfQogCiBzdGF0aWMgYm9vbCBl
bmFibGVkRGVsZXRlKEZyYW1lKiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291
cmNlIHNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZy
b21NZW51T3JLZXlCaW5kaW5nOiAgICAKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7CisgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7
CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVz
ZXJJbnRlcmZhY2U6CiAgICAgICAgIC8vICJEZWxldGUiIGZyb20gRE9NIGlzIGxpa2UgZGVsZXRl
L2JhY2tzcGFjZSBrZXlwcmVzcywgYWZmZWN0cyBzZWxlY3RlZCByYW5nZSBpZiBub24tZW1wdHks
CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBzdGF0aWMgYm9vbCBlbmFibGVkSW5SaWNobHlFZGl0YWJs
ZVRleHQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyYwogCiBzdGF0aWMg
Ym9vbCBlbmFibGVkUGFzdGUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmNhblBhc3RlKCk7CiB9CiAKIHN0YXRpYyBib29sIGVuYWJsZWRS
YW5nZUluRWRpdGFibGVUZXh0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQCBzdGF0aWMgYm9vbCBlbmFibGVkUmFuZ2VJblJp
Y2hseUVkaXRhYmxlVGV4dChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZAogCiBz
dGF0aWMgYm9vbCBlbmFibGVkUmVkbyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jYW5SZWRvKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMp
CiBzdGF0aWMgYm9vbCBlbmFibGVkVGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+
ZWRpdG9yKCktPmNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5jYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogfQog
I2VuZGlmCiAKIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVu
ZG8oKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLy8gU3Rh
dGUgZnVuY3Rpb25zCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBzdGF0aWMgVHJpU3RhdGUgc3RhdGVJ
dGFsaWMoRnJhbWUqIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU9yZGVy
ZWRMaXN0KEZyYW1lKiBmcmFtZSwgRXZlbnQqKQogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUoKTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0
YXRlU3RyaWtldGhyb3VnaChGcmFtZSogZnJhbWUsIEV2ZW50KikKQEAgLTEzMzMsNyArMTMzMyw3
IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUqIGZyYW1lLCBFdmVu
dCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2
ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7
CiB9CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJhbWUsIEV2ZW50
KikKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVVuZGVybGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KikKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlVW5vcmRlcmVkTGlz
dChGcmFtZSogZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5z
ZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSgpOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3Rh
dGVKdXN0aWZ5Q2VudGVyKEZyYW1lKiBmcmFtZSwgRXZlbnQqKQpAQCAtMTQwNSw3ICsxNDA1LDcg
QEAgc3RhdGljIFN0cmluZyB2YWx1ZUJhY2tDb2xvcihGcmFtZSogZnJhbWUsIEV2ZW50KikKIAog
c3RhdGljIFN0cmluZyB2YWx1ZURlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoRnJhbWUqIGZyYW1l
LCBFdmVudCopCiB7Ci0gICAgc3dpdGNoIChmcmFtZS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3Jh
cGhTZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZnJhbWUtPmVkaXRvcigpLmRlZmF1bHRQYXJh
Z3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNE
aXY6CiAgICAgICAgIHJldHVybiBkaXZUYWcubG9jYWxOYW1lKCk7CiAgICAgY2FzZSBFZGl0b3JQ
YXJhZ3JhcGhTZXBhcmF0b3JJc1A6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwCmluZGV4IGZkMjdlZTJhNDdiN2I5Y2FlZTY1YzVmNTdlYWYxZmQzMTNlODU5MWMuLjk3
OGEzZWMyYjhiOWM0ZjBiMzg0MWJjNjMxZGYyYmQ5ZjU5MTYyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBEcmFn
Q2FyZXRDb250cm9sbGVyOjppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgcmV0dXJuICFmcmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9y
KCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0RpcmVjdGlvbmFsKCk7CisgICAgcmV0dXJuICFm
cmFtZSB8fCBmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRDb25zaWRlclNlbGVjdGlv
bkFzRGlyZWN0aW9uYWwoKTsKIH0KIAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIFNldFNlbGVj
CiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxs
eVNlbGVjdGVkKCk7CiAgICAgbm90aWZ5UmVuZGVyZXJPZlNlbGVjdGlvbkNoYW5nZSh1c2VyVHJp
Z2dlcmVkKTsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOworICAgIG1fZnJhbWUtPmVkaXRvcigpLnJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CiAgICAgICAgIFNjcm9sbEFsaWdubWVudCBhbGln
bm1lbnQ7CiAKLSAgICAgICAgaWYgKG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3Vs
ZENlbnRlckFsaWduV2hlblNlbGVjdGlvbklzUmV2ZWFsZWQoKSkKKyAgICAgICAgaWYgKG1fZnJh
bWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ2VudGVyQWxpZ25XaGVuU2VsZWN0aW9uSXNS
ZXZlYWxlZCgpKQogICAgICAgICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29y
T25TY3JvbGxBbHdheXMpID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA6IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgYWxpZ25tZW50ID0gKGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXMpID8g
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA6IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZDsKQEAgLTU4Niw3ICs1ODYsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVT
ZWxlY3Rpb246Om5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjb25zdCBWaXNpYmxlUG9zaXRp
bwogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ3VycmVudFdvcmQgPSBuZXh0
V29yZFBvc2l0aW9uKG9yaWdpbmFsUG9zaXRpb24pOwogCi0gICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0
KCkpIHsKKyAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNo
b3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpKSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IHNraXAgc3BhY2VzIHdoZW4gbW92aW5nIHJpZ2h0LCB3ZSBhZHZhbmNlIG9uZQogICAgICAgICAv
LyB3b3JkIGZ1cnRoZXIgYW5kIHRoZW4gbW92ZSBvbmUgd29yZCBiYWNrLiBHaXZlbiB0aGUKICAg
ICAgICAgLy8gc2VtYW50aWNzIG9mIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgdGhpcyB3aWxsIHB1
dCB1cyBhdCB0aGUKQEAgLTcxMyw3ICs3MTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeU1vdmluZ1JpZ2h0KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICNp
ZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgICAgIC8vIFZpc3VhbCB3b3JkIG1vdmVtZW50IHJlbGll
cyBvbiBpc1dvcmRUZXh0QnJlYWsgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGluIFdpbkNFIGFu
ZCBRVC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgxMTM2LgotICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3Zp
bmdSaWdodCgpOworICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2Zy
YW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1v
dmluZ1JpZ2h0KCk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0aW9uKFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSksIHNraXBz
U3BhY2VXaGVuTW92aW5nUmlnaHQpOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtODg3LDcg
Kzg4Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW92aW5nTGVm
dChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OiB7CiAjaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBib29sIHNr
aXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigpLT5i
ZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOworICAgICAgICBib29s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPmVkaXRvcigp
LmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIHBv
cyA9IGxlZnRXb3JkUG9zaXRpb24oVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKSwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleAogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCiAgICAgICAg
ICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09
IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkK
LSAgICAgICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigp
LnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGluZUFjcm9zc0NhcmV0KCkpIHsKKyAgICAg
ICAgICAgICYmIG1fZnJhbWUgJiYgIW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxk
RXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3NzQ2FyZXQoKSkgewogICAgICAgICAgICAg
Ly8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNyb3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRp
cmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAgICAgICAgICAvLyBiZWhhdmlvciB3aGVu
LCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJhY2t3YXJkcyBzdGFydGluZyB3aXRoIHRo
ZSBjYXJldCBpbgogICAgICAgICAgICAgLy8gdGhlIG1pZGRsZSBvZiBhIHdvcmQgYW5kIHRoZW4g
d29yZC1zZWxlY3RpbmcgZm9yd2FyZCwgbGVhdmluZyB0aGUgY2FyZXQgaW4gdGhlCkBAIC0xMDM3
LDcgKzEwMzcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gYWx0
ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleAogCiAgICAgICAgIC8vIFN0YW5k
YXJkIE1hYyBiZWhhdmlvciB3aGVuIGV4dGVuZGluZyB0byBhIGJvdW5kYXJ5IGlzIGdyb3cgdGhl
IHNlbGVjdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoZQogICAgICAgICAvLyBiYXNlIGluIHBs
YWNlIGFuZCBtb3ZpbmcgdGhlIGV4dGVudC4gTWF0Y2hlcyBOU1RleHRWaWV3LgotICAgICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsd2F5
c0dyb3dTZWxlY3Rpb25XaGVuRXh0ZW5kaW5nVG9Cb3VuZGFyeSgpIHx8IG1fc2VsZWN0aW9uLmlz
Q2FyZXQoKSB8fCAhaXNCb3VuZGFyeShncmFudWxhcml0eSkpCisgICAgICAgIGlmICghbV9mcmFt
ZSB8fCAhbV9mcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbHdheXNHcm93U2VsZWN0
aW9uV2hlbkV4dGVuZGluZ1RvQm91bmRhcnkoKSB8fCBtX3NlbGVjdGlvbi5pc0NhcmV0KCkgfHwg
IWlzQm91bmRhcnkoZ3JhbnVsYXJpdHkpKQogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkBAIC0xNzQ5
LDcgKzE3NDksNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjppc0ZvY3VzZWRBbmRBY3RpdmUoKSBj
b25zdAogCiBpbmxpbmUgc3RhdGljIGJvb2wgc2hvdWxkU3RvcEJsaW5raW5nRHVlVG9UeXBpbmdD
b21tYW5kKEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91
bGRTdG9wQ2FyZXRCbGlua2luZygpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkubGFzdEVk
aXRDb21tYW5kKCkgJiYgZnJhbWUtPmVkaXRvcigpLmxhc3RFZGl0Q29tbWFuZCgpLT5zaG91bGRT
dG9wQ2FyZXRCbGlua2luZygpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQ+IEZyYW1lU2VsZWN0aW9uOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAogCiBib29s
IEZyYW1lU2VsZWN0aW9uOjpzaG91bGREZWxldGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3IoKS0+
Y2xpZW50KCktPnNob3VsZERlbGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgp
LmdldCgpKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZERl
bGV0ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAogRmxv
YXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpib3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkg
Y29uc3QKQEAgLTIwNDcsNyArMjA0Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkZyb21Ob25lKCkKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2hvdWxkQ2hhbmdlU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24o
KSwgbmV3U2VsZWN0aW9uLCBuZXdTZWxlY3Rpb24uYWZmaW5pdHkoKSwgZmFsc2UpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5lZGl0b3IoKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKCks
IG5ld1NlbGVjdGlvbiwgbmV3U2VsZWN0aW9uLmFmZmluaXR5KCksIGZhbHNlKTsKIH0KIAogYm9v
bCBGcmFtZVNlbGVjdGlvbjo6ZGlzcGF0Y2hTZWxlY3RTdGFydCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDllOTY3NmQ3MmUyOTQyNTZiMGM2
MzJiMmVhOGNlNDZiZmQ0MzQ5Y2UuLjNmMDEyMDMyNzNmZjkwOTMzNzQ3MDJiOTViYmY3NDZiNWU1
YTI2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gTm9TZWxlY3Rpb24uIFRoZSByZXN0IG9mIHRo
aXMgZnVuY3Rpb24gcmVxdWlyZXMgYSByZWFsIGVuZGluZ1NlbGVjdGlvbiwgc28gYmFpbCBvdXQu
CiAgICAgICAgIGlmIChlbmRpbmdTZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc092
ZXJ3cml0ZU1vZGVFbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBpZiAocGVy
Zm9ybU92ZXJ3cml0ZShtX3RleHQsIG1fc2VsZWN0SW5zZXJ0ZWRUZXh0KSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggNjdjNWIyNTQyNzkyOTI2MWYxYzkzZDc4MTVlY2ZkNmY2ODdlNDQ2Ny4uYzZlMDI4ZjkxM2Fl
ZjQ0OTdjNWRkNDg3YzIxMjAxNDFmNWQyYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRD
aGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0Fu
ZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CisgICAgbV9mcmFtZS0+
ZWRpdG9yKCkubWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAg
bV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBzZXF1ZW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDM1OTlhZGQ3
Y2I4MWI2MjRiYjM0NGQ3NDA2MzU1NjA4MzI1OWQ4YWMuLjI4ZjRhNmQyMjFhOTM3OTE3OWZjODRm
NDBlMTcxNTQwNjAzOTRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBPVkVSUklERQogICAgIHsKICAgICAgICAgaWYg
KCFtX2hhc0JlZW5VbmRvbmUpIHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9j
b3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5lZGl0b3IoKS51bmFwcGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwg
bV9jb3JyZWN0ZWQsIG1fY29ycmVjdGlvbik7CiAgICAgICAgICAgICBtX2hhc0JlZW5VbmRvbmUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5jcHAKaW5kZXggYTlmYmE2ODYzMDNlM2E4NDY4MWJiZGViYjg5NTA0ZmI5N2YxZmY2
OC4uYjBjNDI5ZDkwODYwZWJlY2ZiODQwMDYzZmJhN2NhZTllODY2NDc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zIG8KICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKLSAgICAgICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT51cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hhcmFj
dGVycygpWzBdKSk7CisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS51cGRhdGVN
YXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHQuY2hh
cmFjdGVycygpWzBdKSk7CiAgICAgCiAgICAgaW5zZXJ0VGV4dChkb2N1bWVudCwgdGV4dCwgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgb3B0aW9ucywgY29tcG9zaXRpb24pOwogfQpA
QCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8VHlwaW5nQ29tbWFuZD4gVHlwaW5nQ29tbWFu
ZDo6bGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhGCiB7CiAgICAgQVNTRVJU
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gbGFzdEVkaXRDb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKTsKKyAgICBSZWZQdHI8Q29t
cG9zaXRlRWRpdENvbW1hbmQ+IGxhc3RFZGl0Q29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5sYXN0
RWRpdENvbW1hbmQoKTsKICAgICBpZiAoIWxhc3RFZGl0Q29tbWFuZCB8fCAhbGFzdEVkaXRDb21t
YW5kLT5pc1R5cGluZ0NvbW1hbmQoKSB8fCAhc3RhdGljX2Nhc3Q8VHlwaW5nQ29tbWFuZCo+KGxh
c3RFZGl0Q29tbWFuZC5nZXQoKSktPmlzT3BlbkZvck1vcmVUeXBpbmcoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKQEAgLTI5OCwxNCArMjk4LDE0IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkKLSAgICAgJiYgIWZyYW1lLT5lZGl0
b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAmJiAhZnJh
bWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0g
ICAgICYmICFmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkuaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKQorICAgICAgICAmJiAhZnJhbWUtPmVkaXRvcigpLmlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZyYW1lLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkKKyAgICAgICAgJiYgIWZy
YW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKKyAgICAg
ICAgJiYgIWZyYW1lLT5lZGl0b3IoKS5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKICNlbHNlCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCkt
PmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYgKCFmcmFtZS0+ZWRp
dG9yKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogI2VuZGlmCiAgICAgLy8gVGFrZSBhIGxvb2sgYXQgdGhlIHNlbGVjdGlvbiB0aGF0IHJlc3Vs
dHMgYWZ0ZXIgdHlwaW5nIGFuZCBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIHNwZWxsY2hl
Y2suIApAQCAtMzIyLDkgKzMyMiw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6bWFya01pc3NwZWxs
aW5nc0FmdGVyVHlwaW5nKEVUeXBpbmdDb21tYW5kIGNvbW1hbmRUeXBlKQogICAgICAgICAgICAg
U3RyaW5nIHN0cmlwcGVkUHJldmlvdXNXb3JkOwogICAgICAgICAgICAgaWYgKHJhbmdlICYmIChj
b21tYW5kVHlwZSA9PSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0IHx8IGNvbW1hbmRUeXBlID09
IFR5cGluZ0NvbW1hbmQ6Okluc2VydExpbmVCcmVhayB8fCBjb21tYW5kVHlwZSA9PSBUeXBpbmdD
b21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IgfHwgY29tbWFuZFR5cGUgPT0gVHlwaW5n
Q29tbWFuZDo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KSkKICAgICAg
ICAgICAgICAgICBzdHJpcHBlZFByZXZpb3VzV29yZCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSku
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPm1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFzdHJpcHBl
ZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLm1h
cmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChwMSwgZW5kaW5nU2VsZWN0aW9uKCksICFz
dHJpcHBlZFByZXZpb3VzV29yZC5pc0VtcHR5KCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbW1h
bmRUeXBlID09IFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQpCi0gICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOworICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpOwogICAgIH0KIH0KIApA
QCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjp0eXBpbmdBZGRlZFRvT3Bl
bkNvbW1hbmQoRVR5cGluZ0NvbW1hbmQgY29tbWFuZFR5cGVGb3JBZGRlZFQKICAgICB1cGRhdGVQ
cmVzZXJ2ZXNUeXBpbmdTdHlsZShjb21tYW5kVHlwZUZvckFkZGVkVHlwaW5nKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGxpZWRFZGl0aW5nKHRoaXMpOwor
ICAgIGZyYW1lLT5lZGl0b3IoKS5hcHBsaWVkRWRpdGluZyh0aGlzKTsKICAgICAvLyBTaW5jZSB0
aGUgc3BlbGxjaGVja2luZyBjb2RlIG1heSBhbHNvIHBlcmZvcm0gY29ycmVjdGlvbnMgYW5kIG90
aGVyIHJlcGxhY2VtZW50cywgaXQgc2hvdWxkIGhhcHBlbiBhZnRlciB0aGUgdHlwaW5nIGNoYW5n
ZXMuCiAgICAgaWYgKCFtX3Nob3VsZFByZXZlbnRTcGVsbENoZWNraW5nKQogICAgICAgICBtYXJr
TWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7CiAjZWxz
ZQogICAgIC8vIFRoZSBvbGQgc3BlbGxjaGVja2luZyBjb2RlIHJlcXVpcmVzIHRoYXQgY2hlY2tp
bmcgYmUgZG9uZSBmaXJzdCwgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB0aGF0IGluIDY4NjQwNzIs
IHdoZXJlIDxkb2Vzbid0PiBpcyBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KICAgICBtYXJrTWlzc3Bl
bGxpbmdzQWZ0ZXJUeXBpbmcoY29tbWFuZFR5cGVGb3JBZGRlZFR5cGluZyk7Ci0gICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBsaWVkRWRpdGluZyh0aGlzKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuYXBw
bGllZEVkaXRpbmcodGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGJvb2wga2lsbFJpbmcpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC01MTQs
NyArNTE0LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGlmIChraWxsUmluZykKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hZGRUb0tpbGxS
aW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFkZFRvS2lsbFJpbmcoc2VsZWN0aW9uVG9EZWxldGUu
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgZmFsc2UpOwogICAgIC8vIE1ha2UgdW5kbyBzZWxl
Y3QgZXZlcnl0aGluZyB0aGF0IGhhcyBiZWVuIGRlbGV0ZWQsIHVubGVzcyBhbiB1bmRvIHdpbGwg
dW5kbyBtb3JlIHRoYW4ganVzdCB0aGlzIGRlbGV0aW9uLgogICAgIC8vIEZJWE1FOiBUaGlzIGJl
aGF2ZXMgbGlrZSBUZXh0RWRpdCBleGNlcHQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvcGVuIHdp
dGggdGV4dCBpbnNlcnRpb24gYW5kIHRoZW4gZGVsZXRlCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4g
eW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5k
IG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBib29sIGtpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmVkaXRvcigpLT51cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
ZyhmYWxzZSk7CisgICAgZnJhbWUtPmVkaXRvcigpLnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGZhbHNlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9E
ZWxldGU7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BZnRlclVuZG87CkBAIC02MDcs
NyArNjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2kKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBpZiAoa2lsbFJpbmcpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YWRkVG9L
aWxsUmluZyhzZWxlY3Rpb25Ub0RlbGV0ZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmYWxz
ZSk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVs
ZXRlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8g
c2VsZWN0IHdoYXQgd2FzIGRlbGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rp
b25BZnRlclVuZG8pOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
c2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAppbmRleCAyYWFhNzMwNDNkZDM0MWRmMGY5YmIyZmY4OWJlZTE5ODUxYzU4
NzUwLi45YmQ5NDc0MjM2ZTFjMGE5NjVlYzJlOGZkMzk1MTRhNWRmMzc2NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODU1LDcgKzg1NSw3IEBAIGJvb2wgaXNF
bXB0eVRhYmxlQ2VsbChjb25zdCBOb2RlKiBub2RlKQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmRlZmF1bHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSkgeworICAgIHN3aXRjaCAoZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmRl
ZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3IoKSkgewogICAgIGNhc2UgRWRpdG9yUGFyYWdyYXBoU2Vw
YXJhdG9ySXNEaXY6CiAgICAgICAgIHJldHVybiBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFyYXRvcklzUDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA0YzBjMjgwYWNlNTA2YWJmMGQwYTc3YWEy
MmU3MmVlZjc0NGQ3ZDRjLi5iNzAxNmM4MzAyYmEyNzc1YjU5OGVmNGEzYmRlYzQ1ZGMzY2E0OTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVj
dGVkUmFuZ2UoKTsKICAgICBib29sIGNob29zZVBsYWluVGV4dDsKICAgICAKLSAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoTlNHZW5lcmFsUGJv
YXJkKTsKKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOwogI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gcGFzdGVib2FyZC0+ZG9jdW1lbnRGcmFnbWVudChtX2ZyYW1lLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob29zZVBsYWluVGV4dCk7CiAgICAgaWYgKGZyYWdtZW50ICYmIHNo
b3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFz
dGVkKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQogICAgICAgICAg
ICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkKSwgZmFsc2UpOwogICAgIH0KICNlbmRpZgotICAgIG1fZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CisgICAgbV9m
cmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQogCiBib29sIEVkaXRvcjo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmZGEyMWQ1ZWU5NGQ1MWIzM2Nk
ODgxMmRlNGFjYWRmYjUwOGVhZDkwLi41OWQzNGZlYzk2N2ZhZWE0ZmI4MGYxMzI1NDZiNjQ0MmYx
YjkyNzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC02NTUsNyArNjU1LDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKIAogICAgIFJlZlB0cjxSYW5nZT4gdXBkYXRlZFJhbmdl
UmVmOwogICAgIGlmIChmcmFtZSkgewotICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+
ZWRpdG9yKCktPmF2b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIocmFu
Z2UpOworICAgICAgICB1cGRhdGVkUmFuZ2VSZWYgPSBmcmFtZS0+ZWRpdG9yKCkuYXZvaWRJbnRl
cnNlY3Rpb25XaXRoRGVsZXRlQnV0dG9uQ29udHJvbGxlcihyYW5nZSk7CiAgICAgICAgIHVwZGF0
ZWRSYW5nZSA9IHVwZGF0ZWRSYW5nZVJlZi5nZXQoKTsKICAgICAgICAgaWYgKCF1cGRhdGVkUmFu
Z2UpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTc2OSw3ICs3NjksNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hp
bGRyZW5Pbmx5LCBWZWN0b3I8Tm9kZSo+KgogICAgIEhUTUxFbGVtZW50KiBkZWxldGVCdXR0b25D
b250YWluZXJFbGVtZW50ID0gMDsKICNpZiBFTkFCTEUoREVMRVRJT05fVUkpCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAgICAgZGVsZXRl
QnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29u
dHJvbGxlcigpLT5jb250YWluZXJFbGVtZW50KCk7CisgICAgICAgIGRlbGV0ZUJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuZGVsZXRlQnV0dG9uQ29udHJvbGxlcigpLT5j
b250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRPZihkZWxl
dGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKICAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAzYjMwMzQ0ZTU3
ZWY5NzdkN2QyMmJiMTg4NTk5MmMzYTcxNWQ1NzdmLi43MjZhMzE5ZmQ1OTI5Y2UxNGZkMzNjMTRk
MzU4ZmY2M2UwMTU5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuZEVkaXRpbmco
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50ZXh0RmllbGREaWRFbmRFZGl0aW5n
KHRoaXMpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyh0
aGlzKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA0NjIw
YThhNzA4MDAwMzA5YzdlM2JkMzY3OTQ2Zjg3ODIwZGI1MTRiLi40ZTJjNjdhMDk1YTE2MjU4NjE2
MjI3MTdmOGU4YjU3NmJmNjQ2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
dGV4dERpZENoYW5nZUluVGV4dEFyZWEodGhpcyk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0aGlzKTsKICAgICAvLyBXaGVuIHR5cGluZyBpbiBhIHRl
eHRhcmVhLCBjaGlsZHJlbkNoYW5nZWQgaXMgbm90IGNhbGxlZCwgc28gd2UgbmVlZCB0byBmb3Jj
ZSB0aGUgZGlyZWN0aW9uYWxpdHkgY2hlY2suCiAgICAgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cAppbmRleCAzNmMxZjg1MTFmMmM5MzIxZTBlZDFhYzgyYTkwMWUzODJhYjZjNzYzLi42MWYxMGQ1
M2YxZWY5NDgyNjM2YWRiZjAzYjIzMjQzNjQzNTJlYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgRnJhbWUq
IGZyYW1lID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUg
fHwgIWZyYW1lLT5lZGl0b3IoKS0+ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KGVsZW1lbnQo
KSwgZXZlbnQpKQorICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KQEAgLTQ3Myw4ICs0NzMsOCBAQCB2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZhbHVlQ2hhbmdlU3Rh
dGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZWxlbWVu
dCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNo
YW5nZVN0YXRlTm9uZSkKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dEZpZWxkRGlk
QmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dGV4dERp
ZENoYW5nZUluVGV4dEZpZWxkKGVsZW1lbnQoKSk7CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkudGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGVsZW1lbnQoKSk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS50ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoZWxlbWVudCgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDNhNGY2ZmRlMDI4ZDJhMzk1
Y2U0Y2FiMWE2OWU3ZGJiNDc4MmJjOGEuLmI0MjNlYjIwMGE3MmU5MzVlZjFjZjY4NmU0MmFmNTUy
M2RjZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNsb3NlVVJMKCkKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBzdG9wTG9hZGluZyhjdXJy
ZW50RG9jdW1lbnQgJiYgIWN1cnJlbnREb2N1bWVudC0+aW5QYWdlQ2FjaGUoKSA/IFVubG9hZEV2
ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUgOiBVbmxvYWRFdmVudFBvbGljeVVubG9hZE9ubHkp
OwogICAgIAotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ5NSw3ICs0OTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpk
aWRPcGVuVVJMKCkKICAgICB9CiAKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PmNhbmNlbCgpOwotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhckxhc3RFZGl0Q29tbWFuZCgp
OworICAgIG1fZnJhbWUtPmVkaXRvcigpLmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7CiAKICAgICBt
X2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFsc2U7
CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZy
YW1lVmlldykKIHsKLSAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKKyAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5jbGVhcigpOwogCiAgICAgaWYgKCFtX25lZWRzQ2xlYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApp
bmRleCAwNTg4ZjRjYWUyMWQ1OGI0OWZjZjQyOWIzMjhjMTU4YjlmMWNlNjRlLi40OWRhMWRhZTM2
NmNmZThmNTVkYzBiZTQzZDFlZDI1ZjY1MGExNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZv
aWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKIHN0
YXRpYyB2b2lkIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBGcmFtZSog
ZnJhbWUpCiB7CiAgICAgU3RyaW5nIHRleHQoJmNoYXJhY3RlciwgMSk7Ci0gICAgaWYgKCFmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQodGV4dCwgZnJhbWUtPnNlbGVjdGlvbigpLT50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25UeXBlZCkpCisgICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCBmcmFtZS0+c2VsZWN0
aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChmcmFt
ZS0+ZG9jdW1lbnQoKSwgdGV4dCwgMCwgVHlwaW5nQ29tbWFuZDo6VGV4dENvbXBvc2l0aW9uTm9u
ZSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGll
bnQtPmRvd25sb2FkVVJMKG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2Fy
ZDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5VVJMKG1faGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCks
IG1faGl0VGVzdFJlc3VsdC50ZXh0Q29udGVudCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5l
d1dpbmRvdyhtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBmcmFtZSk7CkBAIC0y
NDQsMTggKzI0NCwxOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgUGFzdGVi
b2FyZCBjbGFzcyBpcyBub3Qgd3JpdHRlbiB5ZXQKICAgICAgICAgLy8gRm9yIG5vdywgY2FsbCBp
bnRvIHRoZSBjbGllbnQuIFRoaXMgaXMgdGVtcG9yYXJ5IQotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlJbWFnZShtX2hpdFRlc3RSZXN1bHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
Y29weUltYWdlKG1faGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JN
KFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKSwgbV9oaXRUZXN0
UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29weVVSTCht
X2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLCBtX2hpdFRlc3RSZXN1bHQudGV4dENv
bnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzoKICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ29weU1lZGlhTGlua1RvQ2xpcGJvYXJkOgotICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvcHlVUkwobV9oaXRUZXN0UmVzdWx0LmFic29sdXRlTWVkaWFV
UkwoKSwgbV9oaXRUZXN0UmVzdWx0LnRleHRDb250ZW50KCkpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29weVVSTChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLCBtX2hpdFRl
c3RSZXN1bHQudGV4dENvbnRlbnQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczoKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0
LnRvZ2dsZU1lZGlhQ29udHJvbHNEaXNwbGF5KCk7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29weToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb3B5KCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5jb3B5KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnR29CYWNrOgogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
CkBAIC0yOTgsMTQgKzI5OCwxNCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBmcmFtZS0+
bG9hZGVyKCktPnJlbG9hZCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ0N1dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRl
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0TFJNTWFyazoKICAgICAgICAgaW5zZXJ0VW5p
Y29kZUNoYXJhY3RlcihsZWZ0VG9SaWdodE1hcmssIGZyYW1lKTsKQEAgLTM0MCwyMiArMzQwLDIy
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShFRkwpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWxl
Y3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczogewogICAgICAgICBGcmFtZVNlbGVjdGlvbiogZnJhbWVTZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNo
b3VsZEluc2VydFRleHQoaXRlbS0+dGl0bGUoKSwgZnJhbWVTZWxlY3Rpb24tPnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblBhc3RlZCkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGl0ZW0tPnRpdGxlKCksIGZyYW1lU2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0
ZWQpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBy
ZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwogCi0gICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5i
ZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24o
KSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZVNlbGVjdGlvbi0+aXNDYXJldE9yUmFu
Z2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKGZy
YW1lU2VsZWN0aW9uLT5iYXNlKCkpOwogICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgICAgIGZy
YW1lU2VsZWN0aW9uLT5zZXRTZWxlY3Rpb24od29yZFNlbGVjdGlvbik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVk
VGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlT3B0aW9u
cyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAgICAg
ICAgICB9CiAKQEAgLTM2NiwxMCArMzY2LDEwIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5n
OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmlnbm9yZVNwZWxsaW5nKCk7CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5pZ25vcmVTcGVsbGluZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkubGVhcm5TcGVsbGlu
ZygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdl
YjoKICAgICAgICAgbV9jbGllbnQtPnNlYXJjaFdpdGhHb29nbGUoZnJhbWUpOwpAQCAtMzg4LDEz
ICszODgsMTMgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4
dE1lbnVJdGVtVGFnSXRhbGljOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRv
Z2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xl
VW5kZXJsaW5lKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVVbmRlcmxpbmUoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgogICAg
ICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFibGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5v
dCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0bGluZSBmb250LApAQCAtNDE0LDIyICs0MTQs
MjIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgbV9jbGllbnQtPnN0b3BTcGVha2luZygp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJl
Y3Rpb246Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
TmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0QmFz
ZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwiKS5leGVjdXRlKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1
cmFsIikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDoKLSAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIk1ha2VUZXh0V3JpdGlu
Z0RpcmVjdGlvblJpZ2h0VG9MZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdo
dDoKQEAgLTQzNyw2NSArNDM3LDY1IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoK
LSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CisgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93U3BlbGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICAgICAgZnJh
bWUtPmVkaXRvcigpLmFkdmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZzoKLSAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmc6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnU2hvd0ZvbnRzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dGb250UGFuZWwo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dGb250UGFuZWwoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6Ci0gICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+c2hvd1N0eWxlc1BhbmVsKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93
U3R5bGVzUGFuZWwoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdTaG93Q29sb3JzOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dDb2xvclBhbmVsKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zaG93Q29sb3JQYW5lbCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFVTRShBUFBLSVQpCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnVwcGVyY2FzZVdvcmQoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnVwcGVyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgotICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmxvd2VyY2FzZVdvcmQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmxv
d2VyY2FzZVdvcmQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDYXBpdGFsaXplOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNhcGl0YWxpemVXb3JkKCk7
CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jYXBpdGFsaXplV29yZCgpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0NoYW5nZUJhY2s6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJlcGxhY2VkU3RyaW5nKCkpOworICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCkuY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcobV9oaXRUZXN0UmVzdWx0LnJl
cGxhY2VkU3RyaW5nKCkpOwogICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFU
SUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJz
dGl0dXRpb25zOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTdWJzdGl0dXRpb25zUGFu
ZWwoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNob3dTdWJzdGl0dXRpb25zUGFuZWwoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0
ZToKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKLSAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24o
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
czoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dFJlcGxhY2VtZW50OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY1Rl
eHRSZXBsYWNlbWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC01MDUsNyArNTA1LDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRl
eHRNZW51SXRlbSogaXRlbSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RpY3RhdGlvbkFsdGVybmF0aXZlOgotICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmFwcGx5RGljdGF0aW9uQWx0ZXJuYXRpdmVsdGVybmF0aXZlKGl0ZW0tPnRpdGxlKCkpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlEaWN0YXRpb25BbHRlcm5hdGl2ZWx0ZXJuYXRp
dmUoaXRlbS0+dGl0bGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgICAgICBpZiAobV9oaXRUZXN0UmVzdWx0LmlzU2VsZWN0ZWQoKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFt
ZSkpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
c2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBDb250
ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9UTElHSFRfQ09OVEVY
VF9NRU5VX0lURU0KQEAgLTkyMywxMyArOTIzLDEzIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIGJvb2wgaW5QYXNzd29yZEZpZWxkID0gc2VsZWN0aW9u
LT5pc0luUGFzc3dvcmRGaWVsZCgpOwogICAgICAgICBpZiAoIWluUGFzc3dvcmRGaWVsZCkgewog
ICAgICAgICAgICAgYm9vbCBoYXZlQ29udGV4dE1lbnVJdGVtc0Zvck1pc3NwZWxsaW5nT3JHcmFt
bWVyID0gZmFsc2U7Ci0gICAgICAgICAgICBib29sIHNwZWxsQ2hlY2tpbmdFbmFibGVkID0gZnJh
bWUtPmVkaXRvcigpLT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKG5vZGUpOworICAgICAgICAg
ICAgYm9vbCBzcGVsbENoZWNraW5nRW5hYmxlZCA9IGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yKG5vZGUpOwogICAgICAgICAgICAgaWYgKHNwZWxsQ2hlY2tpbmdFbmFi
bGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gQ29uc2lkZXIgYWRkaW5nIHNwZWxsaW5nLXJlbGF0
ZWQgb3IgZ3JhbW1hci1yZWxhdGVkIGNvbnRleHQgbWVudSBpdGVtcyAobmV2ZXIgYm90aCwgc2lu
Y2UgYSBzaW5nbGUgc2VsZWN0ZWQgcmFuZ2UKICAgICAgICAgICAgICAgICAvLyBpcyBuZXZlciBj
b25zaWRlcmVkIGEgbWlzc3BlbGxpbmcgYW5kIGJhZCBncmFtbWFyIGF0IHRoZSBzYW1lIHRpbWUp
CiAgICAgICAgICAgICAgICAgYm9vbCBtaXNzcGVsbGluZzsKICAgICAgICAgICAgICAgICBib29s
IGJhZEdyYW1tYXI7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlcyA9IGZy
YW1lLT5lZGl0b3IoKS0+Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwobWlzc3Bl
bGxpbmcsIGJhZEdyYW1tYXIpOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNz
ZXMgPSBmcmFtZS0+ZWRpdG9yKCkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWwo
bWlzc3BlbGxpbmcsIGJhZEdyYW1tYXIpOwogICAgICAgICAgICAgICAgIGlmIChtaXNzcGVsbGlu
ZyB8fCBiYWRHcmFtbWFyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplID0gZ3Vl
c3Nlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc2l6ZSkgewpAQCAtOTk3LDcg
Kzk5Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAgICAg
ICAgaWYgKG1faGl0VGVzdFJlc3VsdC5pc1NlbGVjdGVkKCkgJiYgIWluUGFzc3dvcmRGaWVsZCAm
JiBzZWxlY3Rpb25Db250YWluc1Bvc3NpYmxlV29yZChmcmFtZSkpIHsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICBTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBmcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW0gTG9va1VwSW5EaWN0aW9uYXJ5SXRlbShBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnksIGNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZykpOwogCiAjaWYgSU5DTFVERV9TUE9U
TElHSFRfQ09OVEVYVF9NRU5VX0lURU0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKHRyYW5z
Zm9ybWF0aW9uc01lbnVJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkU2hvd0ZvbnRNZW51ID0gZnJhbWUt
PmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAgICBib29sIHNob3VsZFNob3dG
b250TWVudSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAjZWxzZQogICAgICAg
ICAgICAgYm9vbCBzaG91bGRTaG93Rm9udE1lbnUgPSB0cnVlOwogI2VuZGlmCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogICAgICAg
ICAgICAgYXBwZW5kSXRlbShTcGVlY2hNZW51SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICBFZGl0b3JDbGllbnQq
IGNsaWVudCA9IGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKTsKICAgICAgICAgICAgIGlmIChjbGll
bnQgJiYgY2xpZW50LT5zaG91bGRTaG93VW5pY29kZU1lbnUoKSkgewogICAgICAgICAgICAgICAg
IENvbnRleHRNZW51SXRlbSBVbmljb2RlTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ1VuaWNvZGUsIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgY3JlYXRlQW5kQXBwZW5kVW5pY29kZVN1Yk1lbnUoVW5pY29kZU1lbnVJdGVtKTsKQEAg
LTEwNzksNyArMTA3OSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgp
CiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gcGFnZS0+c2V0dGluZ3MoKSkgewogICAg
ICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVUZXh0RGlyZWN0aW9uU3VibWVudSA9IHNldHRp
bmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVj
dGlvblN1Ym1lbnVBbHdheXNJbmNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNl
dHRpbmdzLT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERp
cmVjdGlvblN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLT5o
YXNCaWRpU2VsZWN0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNldHRpbmdz
LT50ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yKCkgPT0gVGV4dERpcmVjdGlv
blN1Ym1lbnVBdXRvbWF0aWNhbGx5SW5jbHVkZWQgJiYgZnJhbWUtPmVkaXRvcigpLmhhc0JpZGlT
ZWxlY3Rpb24oKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlVGV4dERpcmVjdGlv
blN1Ym1lbnUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBUZXh0
RGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSgpKTsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBp
dGVtKSBjb25zdAogCiAgICAgc3dpdGNoIChpdGVtLmFjdGlvbigpKSB7CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb246CiAgICAgICAgICAgICBz
aG91bGRDaGVjayA9IGZhbHNlOwpAQCAtMTE0OSw0NCArMTE0OSw0NCBAQCB2b2lkIENvbnRleHRN
ZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRl
bSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJl
Y3Rpb24pICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25OYXR1cmFsIik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
CiAgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6IHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFu
ZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCIpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKICAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVk
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDogewotICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1ha2VUZXh0V3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0Iik7CisgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQg
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdCIpOwogICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5p
c0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQ29weToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2FuREhUTUxDb3B5KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5Db3B5KCk7
CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuREhUTUxDb3B5
KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkNvcHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0N1dDoKLSAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuREhUTUxDdXQoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNh
bkN1dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkRI
VE1MQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLmNhbkN1dCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzoKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGU6Ci0gICAgICAgICAgICBz
aG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MUGFzdGUoKSB8fCBmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ0RlbGV0ZToKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+
ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdJbnB1dE1ldGhvZHM6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnVW5pY29kZToKQEAgLTEyMDksNzggKzEyMDksNzggQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNoZWNrT3JFbmFibGVJZk5lZWRlZChDb250ZXh0TWVudUl0ZW0mIGl0ZW0pIGNv
bnN0CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1VuZGVybGluZTogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOwotICAgICAgICAgICAgc2hv
dWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3Vs
ZEVuYWJsZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCkpCisgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHNob3VsZENoZWNrID0gdHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHls
ZSwgIml0YWxpYyIpICE9IEZhbHNlVHJpU3RhdGU7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUg
PSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAg
ICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdFJpY2hseSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bDoKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPnNwZWxsaW5nUGFuZWxJc1Nob3dp
bmcoKSkKKyAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuc3BlbGxpbmdQYW5lbElzU2hv
d2luZygpKQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
U2hvd1NwZWxsaW5nUGFuZWwoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBpdGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHRy
dWUpKTsKLSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRp
dCgpOworICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kOgogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZmFsc2U7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmc6Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgotICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+c3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkpCisgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygp
KQogICAgICAgICAgICAgICAgIGl0ZW0uc2V0VGl0bGUoY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1
YnN0aXR1dGlvbnMoZmFsc2UpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBp
dGVtLnNldFRpdGxlKGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHRydWUpKTsK
LSAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpOwor
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBl
ckNhc2U6CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZToKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOgogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OgotICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCkuaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6Ci0gICAgICAgICAgICBzaG91bGRD
aGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJs
ZWQoKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczoKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCk7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5pc0F1dG9t
YXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOgotICAgICAgICAgICAgc2hvdWxk
Q2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPmlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
TGlua0RldGVjdGlvbkVuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKLSAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLmlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nOgogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzU3BlYWtpbmcoKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQo
Q29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
IWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnU6Ci0gICAgICAgICAgICBzaG91bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVk
aXRSaWNobHkoKTsKKyAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGIxOWRjZTVmY2QyOGFlNDk0NzM4MDYwNzc1OTQwODFlMWZiNzQwMmQuLmQ3YjhlY2I3NzM4MWVh
OTY0YjZjNjU4MDRmNzI3ZDA5NzQyOTBlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRE9NV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBiCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIEZJWE1FICgxMzAxNik6IFN1cHBvcnQgd2hvbGVXb3JkLCBz
ZWFyY2hJbkZyYW1lcyBhbmQgc2hvd0RpYWxvZwotICAgIHJldHVybiBtX2ZyYW1lLT5lZGl0b3Io
KS0+ZmluZFN0cmluZyhzdHJpbmcsICFiYWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZh
bHNlKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZyhzdHJpbmcsICFi
YWNrd2FyZHMsIGNhc2VTZW5zaXRpdmUsIHdyYXAsIGZhbHNlKTsKIH0KIAogYm9vbCBET01XaW5k
b3c6Om9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDc5Mjk2ZWMzYWU4MWIyZTU3M2JlMDhlMGY0YzdmZjRmYTFlNDk4ZmQu
LmRkNGJmNWJlZDhkMzdlMWE5ZGE2MDY5ZDkzMDUxZTVhNmIzYzI2NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSogaW5uZXJGcmFtZSwgRHJh
Z0RhdGEqIGRyYWcKIHsKICAgICBBU1NFUlQobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkt
Pmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0ID0gbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9s
bGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyAiIiA6IGRyYWdEYXRhLT5hc1BsYWlu
VGV4dChpbm5lckZyYW1lKTsKLSAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3Io
KS0+ZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2Fy
ZXRQb3NpdGlvbigpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS5m
aW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jYXJldFBv
c2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50Ojpj
cmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwg
SUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IGlubmVyUmFuZ2UgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKICAgICAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBz
dHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLnNlcmlhbGl6ZWQoKSwgZmFsc2Up
OwotICAgICAgICBpZiAoIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRBcHBseVN0eWxlKHN0
eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkKKyAgICAgICAgaWYgKCFpbm5lckZyYW1lLT5l
ZGl0b3IoKS5zaG91bGRBcHBseVN0eWxlKHN0eWxlLmdldCgpLCBpbm5lclJhbmdlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9jbGllbnQtPndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQsIGRyYWdEYXRh
KTsKLSAgICAgICAgaW5uZXJGcmFtZS0+ZWRpdG9yKCktPmFwcGx5U3R5bGUoc3R5bGUuZ2V0KCks
IEVkaXRBY3Rpb25TZXRDb2xvcik7CisgICAgICAgIGlubmVyRnJhbWUtPmVkaXRvcigpLmFwcGx5
U3R5bGUoc3R5bGUuZ2V0KCksIEVkaXRBY3Rpb25TZXRDb2xvcik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmIChkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgfHwgZHJhZ0NhcmV0LmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgYm9vbCBjaG9zZVBsYWluVGV4dCA9IGZhbHNlOwog
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdt
ZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZyYW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwg
Y2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1lLT5l
ZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb25Ecm9wcGVkKSkgeworICAgICAgICBpZiAoIWZyYWdtZW50IHx8ICFpbm5lckZyYW1l
LT5lZGl0b3IoKS5zaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvcklu
c2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpKSB7CiAgICAgICAgICAgICAvLyBOU1RleHRWaWV3
IGJlaGF2aW9yIGlzIHRvIGFsd2F5cyBzbWFydCBkZWxldGUgb24gbW92aW5nIGEgc2VsZWN0aW9u
LAogICAgICAgICAgICAgLy8gYnV0IG9ubHkgdG8gc21hcnQgaW5zZXJ0IGlmIHRoZSBzZWxlY3Rp
b24gZ3JhbnVsYXJpdHkgaXMgd29yZCBncmFudWxhcml0eS4KLSAgICAgICAgICAgIGJvb2wgc21h
cnREZWxldGUgPSBpbm5lckZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCk7CisgICAgICAgICAgICBib29sIHNtYXJ0RGVsZXRlID0gaW5uZXJGcmFtZS0+ZWRpdG9yKCku
c21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgICAgICAgICBib29sIHNtYXJ0SW5zZXJ0
ID0gc21hcnREZWxldGUgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5KCkg
PT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLT5jYW5TbWFydFJlcGxhY2UoKTsKICAgICAg
ICAgICAgIGFwcGx5Q29tbWFuZChNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50
LCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTUzNCw3ICs1MzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVk
ZUVkaXREcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0
KCkpOwotICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigp
LT5zaG91bGRJbnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25E
cm9wcGVkKSkgeworICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtNzg5LDcgKzc4OSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSog
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKHN0YXRl
Lm1fZHJhZ1R5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgewogICAgICAgICBpZiAo
IWNsaXBib2FyZC0+aGFzRGF0YSgpKSB7CiAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nVGV4dEZv
cm1Db250cm9sKHNyYy0+c2VsZWN0aW9uKCktPnN0YXJ0KCkpKQotICAgICAgICAgICAgICAgIGNs
aXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3JjLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xp
cGJvYXJkKCkpOworICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+d3JpdGVQbGFpblRleHQoc3Jj
LT5lZGl0b3IoKS5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc3JjLT5z
ZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
c2VsZWN0aW9uUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDVh
ZTVkM2Y3ZmI0MDYxN2VmN2U2YTYxYmY4M2QwMTIzZGQ1OGNkZDUuLjU2ZGNhNGM0OWJlODJiMTRh
ZjY0NjBkNmQzMGMwNDlmZjcxM2U0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZQogewogICAgIGlm
IChtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIHNlbGVjdENsb3Nlc3RXb3Jk
RnJvbUhpdFRlc3RSZXN1bHQocmVzdWx0LmhpdFRlc3RSZXN1bHQoKSwKLSAgICAgICAgICAgIChy
ZXN1bHQuZXZlbnQoKS5jbGlja0NvdW50KCkgPT0gMiAmJiBtX2ZyYW1lLT5lZGl0b3IoKS0+aXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAo
cmVzdWx0LmV2ZW50KCkuY2xpY2tDb3VudCgpID09IDIgJiYgbV9mcmFtZS0+ZWRpdG9yKCkuaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkpID8gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlIDogRG9udEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk7CiAgICAgfQogfQogCkBA
IC02MDUsNyArNjA1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgICAgICAg
ICBwb3MgPSBzZWxlY3Rpb25JblVzZXJTZWxlY3RBbGwuZW5kKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZENvbnNpZGVyU2Vs
ZWN0aW9uQXNEaXJlY3Rpb25hbCgpICYmIHBvcy5pc05vdE51bGwoKSkgeworICAgICAgICBpZiAo
IW1fZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQ29uc2lkZXJTZWxlY3Rpb25Bc0Rp
cmVjdGlvbmFsKCkgJiYgcG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzM2NjgxNTc+IFJFR1JFU1NJT04gKE1haWwpOiBzaGlmdC1jbGljayBkZXNl
bGVjdHMgd2hlbiBzZWxlY3Rpb24KICAgICAgICAgICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRv
LWxlZnQKICAgICAgICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbmV3U2VsZWN0aW9uLnN0YXJ0KCk7
CkBAIC0xOTc0LDggKzE5NzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlUGFzdGVHbG9i
YWxTZWxlY3Rpb24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgRnJhbWUqIGZvY3VzRnJhbWUgPSBtX2ZyYW1lLT5wYWdlKCktPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAvLyBEbyBub3QgcGFz
dGUgaGVyZSBpZiB0aGUgZm9jdXMgd2FzIG1vdmVkIHNvbWV3aGVyZSBlbHNlLgotICAgIGlmICht
X2ZyYW1lID09IGZvY3VzRnJhbWUgJiYgbV9mcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5zdXBw
b3J0c0dsb2JhbFNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5leGVjdXRlKCk7
CisgICAgaWYgKG1fZnJhbWUgPT0gZm9jdXNGcmFtZSAmJiBtX2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoQVNDSUlMaXRlcmFsKCJQYXN0ZUdsb2JhbFNlbGVjdGlvbiIpKS5l
eGVjdXRlKCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yOTAyLDcgKzI5MDIsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IGRvYy0+cHJlcGFyZU1vdXNlRXZlbnQo
cmVxdWVzdCwgdmlld3BvcnRQb3MsIGV2ZW50KTsKIAotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKQorICAgIGlm
IChtX2ZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNlbGVjdE9uQ29udGV4dHVhbE1l
bnVDbGljaygpCiAgICAgICAgICYmICFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y29udGFpbnModmll
d3BvcnRQb3MpCiAgICAgICAgICYmICFtZXYuc2Nyb2xsYmFyKCkKICAgICAgICAgLy8gRklYTUU6
IEluIHRoZSBlZGl0YWJsZSBjYXNlLCB3b3JkIHNlbGVjdGlvbiBzb21ldGltZXMgc2VsZWN0cyBj
b250ZW50IHRoYXQgaXNuJ3QgdW5kZXJuZWF0aCB0aGUgbW91c2UuCkBAIC0yOTQ2LDcgKzI5NDYs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKQogCiAg
ICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxl
RWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHNlbGVjdGlvblJhbmdlID0gc2VsZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAg
ICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JS
YW5nZShzZWxlY3Rpb25SYW5nZS5nZXQoKSk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0g
bV9mcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UuZ2V0KCkp
OwogCiAgICAgICAgIGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0Lm1heFgoKSA6IGZp
cnN0UmVjdC54KCk7CiAgICAgICAgIC8vIEluIGEgbXVsdGlsaW5lIGVkaXQsIGZpcnN0UmVjdC5t
YXhZKCkgd291bGQgZW5kdXAgb24gdGhlIG5leHQgbGluZSwgc28gLTEuCkBAIC0zMjQ1LDcgKzMy
NDUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgLy8gaW4gb3JkZXIgdG8gbWF0Y2ggSUU6CiAg
ICAgLy8gMS4gcHJldmVudGluZyBkZWZhdWx0IGhhbmRsaW5nIG9mIGtleWRvd24gYW5kIGtleXBy
ZXNzIGV2ZW50cyBoYXMgbm8gZWZmZWN0IG9uIElNIGlucHV0OwogICAgIC8vIDIuIGlmIGFuIGlu
cHV0IG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudCwgaXRzIGtleUNvZGUgaXMgc2V0IHRvIDIyOSBp
biBrZXlkb3duIGV2ZW50LgotICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVJbnB1dE1ldGhv
ZEtleWRvd24oa2V5ZG93bi5nZXQoKSk7CisgICAgbV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKGtleWRvd24uZ2V0KCkpOwogICAgIAogICAgIGJvb2wgaGFuZGxlZEJ5
SW5wdXRNZXRob2QgPSBrZXlkb3duLT5kZWZhdWx0SGFuZGxlZCgpOwogICAgIApAQCAtMzM1Miw3
ICszMzUyLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudChG
cmFtZVNlbGVjdGlvbiogc2VsZWN0aW9uLCBLZXlib2FyZEUKIHZvaWQgRXZlbnRIYW5kbGVyOjpk
ZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewotICAgICAg
ICBtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudCk7CisgICAgICAg
IG1fZnJhbWUtPmVkaXRvcigpLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogICAgICAgICBp
ZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQpAQCAtMzM3MCw3ICszMzcw
LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SGFuZGxlcihLZXli
b2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW1lbnQobV9mcmFtZS0+c2VsZWN0aW9uKCksIGV2ZW50KTsKICAgICB9CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgbV9mcmFt
ZS0+ZWRpdG9yKCktPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOworICAgICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKGV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZXZl
bnQtPmNoYXJDb2RlKCkgPT0gJyAnKQpAQCAtMzY3MSw3ICszNjcxLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFRleHRJbnB1dEV2ZW50SGFuZGxlcihUZXh0RXZlbnQqIGV2ZW50
KQogewotICAgIGlmIChtX2ZyYW1lLT5lZGl0b3IoKS0+aGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkK
KyAgICBpZiAobV9mcmFtZS0+ZWRpdG9yKCkuaGFuZGxlVGV4dEV2ZW50KGV2ZW50KSkKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKQEAgLTM3MDQsNyArMzcwNCw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QmFja3NwYWNlRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+Y3RybEtleSgpIHx8IGV2ZW50LT5tZXRhS2V5
KCkgfHwgZXZlbnQtPmFsdEtleSgpIHx8IGV2ZW50LT5hbHRHcmFwaEtleSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmVkaXRvcigpLT5iZWhhdmlvcigpLnNob3VsZE5h
dmlnYXRlQmFja09uQmFja3NwYWNlKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE5hdmlnYXRlQmFja09uQmFja3NwYWNlKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGZjMGY5ZjhiNTgzYzRlMzRhODg1ODc0ZjY3ZmJk
M2VmOGU2OWRjNjcuLjdiNmI5M2E3YzAwZGVmMWM0ZGI3OWNmYTliZmUzY2IwOTI2YTk5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTUzNyw3ICs1MzcsNyBA
QCBzdGF0aWMgYm9vbCByZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMoTm9kZSAqbm9kZSkKICAgICBp
ZiAoIWZyYW1lIHx8ICFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLT5zaG91bGRFbmRFZGl0aW5nKHJhbmdlT2ZDb250ZW50cyhyb290KS5n
ZXQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5zaG91bGRFbmRFZGl0aW5nKHJhbmdl
T2ZDb250ZW50cyhyb290KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9u
SWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGJjMzRiMTQyYzBj
NGNkMjE2Y2FlMjkzYjhjYzlhODg2ZDZhYmY1MDIuLmU4ODhjN2Q4MWQ0NGIzZDcwZTEzZjM2ZWNk
OGY0Y2RhYTZhNTljM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03NDQsMTQgKzc0NCwxNCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXMgPSBwb3NpdGlvbi5wcmV2
aW91cygpOwogICAgIGlmIChwcmV2aW91cy5pc05vdE51bGwoKSkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlvdXMsIHBvc2l0
aW9uKTsKLSAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9yKCktPmZpcnN0UmVjdEZvclJh
bmdlKHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOworICAgICAgICBMYXlvdXRSZWN0IHJl
Y3QgPSBlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShwcmV2aW91c0NoYXJhY3RlclJhbmdlLmdl
dCgpKTsKICAgICAgICAgaWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJldmlvdXNDaGFyYWN0ZXJSYW5nZS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHQgPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgaWYgKFJlZlB0cjxS
YW5nZT4gbmV4dENoYXJhY3RlclJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBuZXh0KSkgewot
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBlZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UobmV4
dENoYXJhY3RlclJhbmdlLmdldCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UobmV4dENoYXJhY3RlclJhbmdlLmdldCgpKTsKICAgICAgICAg
aWYgKHJlY3QuY29udGFpbnMoZnJhbWVQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dENo
YXJhY3RlclJhbmdlLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggY2Y2ZmUz
Yzk4Y2NhZGRhODhjNzVjMDIxNTdhN2ZiMzc4NzAxN2YyNC4uM2MyYmFkZTkyODI1MTQyNDM5ZWZl
NWM5MDhkMGYwZmI0ZTQyOTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTEzLDcgKzExMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7
CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwogCi0gICAgICAgIEVkaXRvciogZWRp
dG9yKCkgY29uc3Q7CisgICAgICAgIEVkaXRvciYgZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBs
b2FkZXIoKSBjb25zdDsKICAgICAgICAgTmF2aWdhdGlvblNjaGVkdWxlciogbmF2aWdhdGlvblNj
aGVkdWxlcigpIGNvbnN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKIAogICAgICAgICBPd25QdHI8U2NyaXB0
Q29udHJvbGxlcj4gbV9zY3JpcHQ7Ci0gICAgICAgIE93blB0cjxFZGl0b3I+IG1fZWRpdG9yOwor
ICAgICAgICBjb25zdCBPd25QdHI8RWRpdG9yPiBtX2VkaXRvcjsKICAgICAgICAgT3duUHRyPEZy
YW1lU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgT3duUHRyPEV2ZW50SGFuZGxlcj4g
bV9ldmVudEhhbmRsZXI7CiAgICAgICAgIE93blB0cjxBbmltYXRpb25Db250cm9sbGVyPiBtX2Fu
aW1hdGlvbkNvbnRyb2xsZXI7CkBAIC0yODksOSArMjg5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5l
IEVkaXRvciogRnJhbWU6OmVkaXRvcigpIGNvbnN0CisgICAgaW5saW5lIEVkaXRvciYgRnJhbWU6
OmVkaXRvcigpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9lZGl0b3IuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiAqbV9lZGl0b3I7CiAgICAgfQogCiAgICAgaW5saW5lIEFuaW1hdGlvbkNv
bnRyb2xsZXIqIEZyYW1lOjphbmltYXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
NjA1ZWU0MjVlYTg0OWFhMTU2ODUxNTIzYjJjNDg4OTJmNGZmYWEwYi4uMjQ0ZWRmNzZiZWQwMGYy
MmI5YTFjNGUxYTEyMDg4OGQ5NjE1NTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NjUsNyAr
NTY1LDcgQEAgYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zKQogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBGcmFtZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAg
IGRvIHsKLSAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+ZmluZFN0cmluZyh0YXJnZXQsIChv
cHRpb25zICYgfldyYXBBcm91bmQpIHwgU3RhcnRJblNlbGVjdGlvbikpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRhcmdldCwgKG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkgfCBTdGFydEluU2VsZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lICE9IHN0YXJ0
RnJhbWUpCiAgICAgICAgICAgICAgICAgc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7
CiAgICAgICAgICAgICBmb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEZyYW1lKGZyYW1lKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCiAgICAgLy8gU2VhcmNoIGNvbnRlbnRzIG9mIHN0
YXJ0RnJhbWUsIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBzZWxlY3Rpb24gdGhhdCB3ZSBkaWQg
ZWFybGllci4KICAgICAvLyBXZSBjaGVhdCBhIGJpdCBhbmQganVzdCByZXNlYXJjaCB3aXRoIHdy
YXAgb24KICAgICBpZiAoc2hvdWxkV3JhcCAmJiAhc3RhcnRGcmFtZS0+c2VsZWN0aW9uKCktPmlz
Tm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS0+Zmlu
ZFN0cmluZyh0YXJnZXQsIG9wdGlvbnMgfCBXcmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbik7
CisgICAgICAgIGJvb2wgZm91bmQgPSBzdGFydEZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHRh
cmdldCwgb3B0aW9ucyB8IFdyYXBBcm91bmQgfCBTdGFydEluU2VsZWN0aW9uKTsKICAgICAgICAg
Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWRGcmFtZShmcmFtZSk7CiAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBQYWdlOjpmaW5kU3RyaW5n
TWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IGkKICAgICBGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsKICAgICBGcmFtZSogZnJhbWVXaXRo
U2VsZWN0aW9uID0gMDsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIDAsIG9wdGlvbnMsIGxpbWl0ID8gKGxpbWl0IC0gbWF0Y2hS
YW5nZXMtPnNpemUoKSkgOiAwLCB0cnVlLCBtYXRjaFJhbmdlcyk7CisgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgMCwgb3B0aW9ucywgbGltaXQgPyAo
bGltaXQgLSBtYXRjaFJhbmdlcy0+c2l6ZSgpKSA6IDAsIHRydWUsIG1hdGNoUmFuZ2VzKTsKICAg
ICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKQogICAgICAgICAgICAgZnJh
bWVXaXRoU2VsZWN0aW9uID0gZnJhbWU7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIGZhbHNlKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmVmZXJl
bmNlUmFuZwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNlUmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1haW5GcmFtZSgpOwogICAgIEZyYW1lKiBz
dGFydEZyYW1lID0gZnJhbWU7CiAgICAgZG8gewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1l
ID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IDAsIG9wdGlvbnMgJiB+V3JhcEFyb3Vu
ZCkpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRv
cigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNl
UmFuZ2UgOiAwLCBvcHRpb25zICYgfldyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdFJhbmdlLnJlbGVhc2UoKTsKIAogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZy
YW1lLCAhKG9wdGlvbnMgJiBCYWNrd2FyZHMpLCBzaG91bGRXcmFwKTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmVmZXJlbmNlUmFuZwogICAgIC8vIFNlYXJjaCBjb250ZW50cyBvZiBz
dGFydEZyYW1lLCBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlIHRoYXQg
d2UgZGlkIGVhcmxpZXIuCiAgICAgLy8gV2UgY2hlYXQgYSBiaXQgYW5kIGp1c3Qgc2VhcmNoIGFn
YWluIHdpdGggd3JhcCBvbi4KICAgICBpZiAoc2hvdWxkV3JhcCAmJiByZWZlcmVuY2VSYW5nZSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IHN0YXJ0RnJhbWUtPmVk
aXRvcigpLT5yYW5nZU9mU3RyaW5nKHRhcmdldCwgcmVmZXJlbmNlUmFuZ2UsIG9wdGlvbnMgfCBX
cmFwQXJvdW5kIHwgU3RhcnRJblNlbGVjdGlvbikpCisgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+
IHJlc3VsdFJhbmdlID0gc3RhcnRGcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQs
IHJlZmVyZW5jZVJhbmdlLCBvcHRpb25zIHwgV3JhcEFyb3VuZCB8IFN0YXJ0SW5TZWxlY3Rpb24p
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CiAKQEAg
LTY1Nyw4ICs2NTcsOCBAQCB1bnNpZ25lZCBpbnQgUGFnZTo6bWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpbwogCiAgICAgRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNl
dE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKLSAgICAg
ICAgbWF0Y2hlcyArPSBmcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0
LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1hdGNoZXMpIDogMCwgdHJ1ZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVk
KHNob3VsZEhpZ2hsaWdodCk7CisgICAgICAgIG1hdGNoZXMgKz0gZnJhbWUtPmVkaXRvcigpLmNv
dW50TWF0Y2hlc0ZvclRleHQodGFyZ2V0LCAwLCBvcHRpb25zLCBsaW1pdCA/IChsaW1pdCAtIG1h
dGNoZXMpIDogMCwgdHJ1ZSwgMCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTc4OCw3ICs3ODgs
NyBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
I2VuZGlmCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZXZpY2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcAppbmRleCBjZjM3NDQ0ZjczZGFmNTVlNDJlYWMyZWNlNTJjMGQ3ODg0MmExYjU3
Li43YjU5ZGYwNDBhYzVjZWQ3MDk5ODY3N2NlOTYzYzYxNTM0OTcxZmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBwcm92
aWRlc0NvbnRleHRNZW51SXRlbXMoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmNhbkJlU2VsZWN0aW9uTGVhZigpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBjb250ZXh0IG1lbnUgZ2VzdHVyZSB3aWxsIHRyaWdnZXIgYSBzZWxlY3Rpb24g
YWxsIHNlbGVjdGFibGUgbm9kZXMgYXJlIHZhbGlkIHRhcmdldHMuCi0gICAgICAgIGlmIChub2Rl
LT5yZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RP
bkNvbnRleHR1YWxNZW51Q2xpY2soKSkKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPmZy
YW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2VsZWN0T25Db250ZXh0dWFsTWVudUNs
aWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gT25seSB0aGUgc2Vs
ZWN0ZWQgcGFydCBvZiB0aGUgcmVuZGVyZXIgaXMgYSB2YWxpZCB0YXJnZXQsIGJ1dCB0aGlzIHdp
bGwgYmUgY29ycmVjdGVkIGluCiAgICAgICAgIC8vIGFwcGVuZENvbnRleHRTdWJ0YXJnZXRzRm9y
Tm9kZS4KQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kQ29udGV4
dFN1YnRhcmdldHNGb3JOb2RlKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TAogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dCo+KG5vZGUpOwogICAgIFJl
bmRlclRleHQqIHRleHRSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlclRleHQqPih0ZXh0Tm9k
ZS0+cmVuZGVyZXIoKSk7CiAKLSAgICBpZiAodGV4dFJlbmRlcmVyLT5mcmFtZSgpLT5lZGl0b3Io
KS0+YmVoYXZpb3IoKS5zaG91bGRTZWxlY3RPbkNvbnRleHR1YWxNZW51Q2xpY2soKSkgeworICAg
IGlmICh0ZXh0UmVuZGVyZXItPmZyYW1lKCktPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2Vs
ZWN0T25Db250ZXh0dWFsTWVudUNsaWNrKCkpIHsKICAgICAgICAgLy8gTWFrZSBzdWJ0YXJnZXRz
IG91dCBvZiBldmVyeSB3b3JkLgogICAgICAgICBTdHJpbmcgdGV4dFZhbHVlID0gdGV4dE5vZGUt
PmRhdGEoKTsKICAgICAgICAgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRJdGVyYXRvciA9IHdvcmRC
cmVha0l0ZXJhdG9yKHRleHRWYWx1ZS5jaGFyYWN0ZXJzKCksIHRleHRWYWx1ZS5sZW5ndGgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDc3
YTY1MDVkMDUxYWQ5MGRhM2I0YjI5OWVjNmExNGY5MjgwMDU2OWUuLmRkMGEzNzI3NjJiMTY3OGI0
ZmExMDUwYWJlZWM1MTg2M2E0OGVjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBDbGlwYm9hcmRHdGs6
OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgQVNTRVJUKHJh
bmdlKTsKIAotICAgIG1fZGF0YU9iamVjdC0+c2V0VGV4dChmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkVGV4dEZvckNsaXBib2FyZCgpKTsKKyAgICBtX2RhdGFPYmplY3QtPnNldFRleHQoZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpKTsKICAgICBtX2RhdGFPYmplY3Qt
PnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Us
IGZhbHNlLCBSZXNvbHZlTm9uTG9jYWxVUkxzKSk7CiAKICAgICBpZiAobV9jbGlwYm9hcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNDBj
NWZlNjkwMWI4OGQ0MmYyNGNhMDA5MzhkOTUxMTEyMzEyMmUwZS4uMWEwYmNiZGM5MjI4NTI1NjA5
YjNkZGY2NGM3ZTgxYTBlNjAzMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLAogICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQoY2xpcGJvYXJkKTsKICAgICBkYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAg
ZGF0YU9iamVjdC0+c2V0VGV4dChzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9h
cmQgPT0gSW5jbHVkZUltYWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGVkVGV4dCgpKTsKICAgICBkYXRhT2JqZWN0LT5zZXRNYXJrdXAoY3JlYXRlTWFya3VwKHNl
bGVjdGVkUmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UsIGZhbHNlLCBSZXNvbHZlTm9u
TG9jYWxVUkxzKSk7CiAgICAgaGVscGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2Fy
ZCwgY2FuU21hcnRDb3B5T3JEZWxldGUgPyBQYXN0ZWJvYXJkSGVscGVyOjpJbmNsdWRlU21hcnRQ
YXN0ZSA6IFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5jbHVkZVNtYXJ0UGFzdGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IDI3ZjFlZDg0YWI4
ODdlNzEzYjEyMmE2OGMyMDAxNjgxZGI0ZDY2OGQuLjk0Zjg2NWE0YTQ5NmFmOWMyNDBiNmRiMjRi
MGFiMjg1YjAxYjliZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBm
cmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdAogICAgICAg
ICBOU1N0cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0ZWJvYXJkIHNjaGVtZV07CiAgICAgICAg
IC8vIENhbm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5sZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2
MjY2Mj4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMxNT4gYXJlIGZpeGVkLgogICAgICAgICBp
ZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNs
aWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5n
XTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmlj
YWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAg
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkgewpA
QCAtMTcyLDcgKzE3Miw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0CiAgICAgICAgIC8vIFRo
ZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYXRlIG5hdmlnYXRpb24s
IHNvIHdlIHNob3VsZG4ndCBhbGxvdyBhcmJpdHJhcnkgZmlsZSBVUkxzLgogICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsbG93IG9ubHkgaHR0cCBmYW1pbHkgc2NoZW1lcywgb3IgYW55dGhp
bmcgbm9uLWxvY2FsPwogICAgICAgICBpZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0
dXJuIFtmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBh
c3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29s
dXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhO
U0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgyLDcgKzE4Miw3IEBAIFN0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0CiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICAgICAg
aWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxl
c1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmIGlzRGlyZWN0b3J5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRv
cigpLT5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGIzMTc0NzM0YzZk
NzdmMTJjNDczMDkwYzdhNjE3Yzk1ZjYwYmFkODIuLjEyOWE0ZDliOTU3MDYxMmY5ZGEzYmQ3Mzkx
OWMwZjE0ZTUyYjEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpnZXRTdHJpbmdTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBTaG91
bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgc2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkKQogewotICAgIFN0cmluZyB0ZXh0ID0gc2hvdWxkU2VyaWFsaXpl
U2VsZWN0ZWRUZXh0Rm9yQ2xpcGJvYXJkID09IEluY2x1ZGVJbWFnZUFsdFRleHRGb3JDbGlwYm9h
cmQgPyBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJhbWUt
PmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDogZnJh
bWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRleHQucmVwbGFjZShub0JyZWFrU3Bh
Y2UsICcgJyk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0
YSgoTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogICAgIE5vZGUqIGNvbW1v
bkFuY2VzdG9yID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKElHTk9SRV9FWENFUFRJ
T04pOwogICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAgICAgTm9kZSogZW5jbG9zaW5nQW5j
aG9yID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNl
c3RvciksIEhUTUxOYW1lczo6YVRhZyk7CkBAIC0xODAsNyArMTgwLDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OmdldERhdGFTZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBj
b25zdCBTdHJpbmcKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb25Gb3JUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBib29sIGNhblNtYXJ0Q29weU9yRGVs
ZXRlLCBGcmFtZSogZnJhbWUsIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQpCiB7CiAgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyaWJ1dGVkU3RyaW5nID0gbmlsOwotICAgIFJldGFpblB0cjxXZWJI
VE1MQ29udmVydGVyPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFtbV2ViSFRNTENvbnZlcnRlciBhbGxv
Y10gaW5pdFdpdGhET01SYW5nZTpraXQoZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFJhbmdlKCku
Z2V0KCkpXSk7CisgICAgUmV0YWluUHRyPFdlYkhUTUxDb252ZXJ0ZXI+IGNvbnZlcnRlciA9IGFk
b3B0TlMoW1tXZWJIVE1MQ29udmVydGVyIGFsbG9jXSBpbml0V2l0aERPTVJhbmdlOmtpdChmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpKV0pOwogICAgIGlmIChjb252ZXJ0ZXIp
CiAgICAgICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbY29udmVydGVyLmdldCgpIGF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIApAQCAtMTg4LDExICsxODgsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVNlbGVjdGlvbkZvclR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGIKIAogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwogICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+IGNsaWVudERhdGE7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jbGllbnQo
KS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+ZWRpdG9yKCktPnNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgY2xpZW50VHlwZXMsIGNsaWVudERhdGEpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5jbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShmcmFtZS0+
ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjbGllbnRUeXBlcywgY2xpZW50RGF0YSk7
CiAgICAgdHlwZXMuYXBwZW5kVmVjdG9yKGNsaWVudFR5cGVzKTsKIAogICAgIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0VHlwZXModHlwZXMsIG1fcGFzdGVi
b2FyZE5hbWUpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRpZFNldFNlbGVjdGlv
blR5cGVzRm9yUGFzdGVib2FyZCgpOworICAgIGZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+ZGlk
U2V0U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNsaWVudFR5cGVzLnNpemUoKTsgKytpKQogICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY2xpZW50RGF0YVtp
XSwgY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlVVJMRm9yVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAg
ICAKICAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmw7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29j
b2FVUkwpOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyA9IGZyYW1lLT5lZGl0b3Io
KS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoY29jb2FVUkwpOwogICAgIAogICAgIE5TU3Ry
aW5nICp0aXRsZSA9IChOU1N0cmluZyopdGl0bGVTdHI7CiAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
ID09IDApIHsKQEAgLTM4MCw3ICszODAsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cGxhaW5UZXh0
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQg
dG8gY2FsbCBpbnRvIHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCiAgICAgICAgIC8vIGNhbGxpbmcg
X3dlYl91c2VyVmlzaWJsZVN0cmluZyBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEg
c2l6YWJsZSB3ZWIgb2YgCiAgICAgICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhl
ciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3
YXkuCi0gICAgICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworICAgICAgICBzdHJpbmcg
PSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnN0cmluZ10pOwogICAgICAgICBpZiAoW3N0cmluZyBsZW5ndGhdID4gMCkKICAg
ICAgICAgICAgIHJldHVybiBbc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1h
cHBpbmddOwogICAgIH0KQEAgLTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50V2l0aFJURihGcmFtZSogZnJhbWUsIE5TU3Ry
aQogICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXREZWZlcnNMb2FkaW5nKHRydWUpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gcmVzb3VyY2VzOwotICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPmRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcsIHJlc291cmNlcyk7Cisg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhbWUtPmVkaXRvcigpLmNs
aWVudCgpLT5kb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoc3RyaW5nLCByZXNv
dXJjZXMpOwogCiAgICAgc2l6ZV90IHNpemUgPSByZXNvdXJjZXMuc2l6ZSgpOwogICAgIGlmIChz
aXplKSB7CkBAIC01MTMsNyArNTEzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBQ
YXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUGFzc1JlZlAKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgLy8gTm9uLWltYWdlIGZpbGUgdHlwZXM7IF93ZWJfdXNlclZpc2libGVTdHJpbmcgaXMgYXBw
cm9wcmlhdGUgaGVyZSBiZWNhdXNlIHRoaXMgd2lsbAogICAgICAgICAgICAgLy8gYmUgcGFzdGVk
IGFzIHZpc2libGUgdGV4dC4KLSAgICAgICAgICAgIE5TU3RyaW5nICp1cmwgPSBmcmFtZS0+ZWRp
dG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhdGhzW2ldXSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdXJsID0gZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhz
W2ldXSk7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y3JlYXRlVGV4dE5vZGUodXJsKTsKICAgICAgICAgICAgIHJlZk5vZGVzVmVjdG9yLmFw
cGVuZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgICAgICBub2Rlc1ZlY3Rvci5hcHBlbmQodGV4
dE5vZGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xp
cGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3Bw
CmluZGV4IDFiZWNkYTMxM2Q4ZjlkMjcyNzQ1YWU1NDBkOGViMmU3MjYxZGUxOTQuLjU5N2Y3ZTE4
YWVmODViOWVlMjE0OThhYTM4NGFjYjJlMDlhOGNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIENsaXBib2Fy
ZFF0Ojp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKCFt
X3dyaXRhYmxlRGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEgPSBuZXcgUU1pbWVEYXRhOwot
ICAgIFFTdHJpbmcgdGV4dCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9yQ2xpcGJv
YXJkKCk7CisgICAgUVN0cmluZyB0ZXh0ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZv
ckNsaXBib2FyZCgpOwogICAgIHRleHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIo
JyAnKSk7CiAgICAgbV93cml0YWJsZURhdGEtPnNldFRleHQodGV4dCk7CiAgICAgbV93cml0YWJs
ZURhdGEtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hh
bmdlLCBmYWxzZSwgUmVzb2x2ZU5vbkxvY2FsVVJMcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggNTUwYWY3YWNlOTc1YzcxZTcwMzgzNjdhZDQ4
YzI1MWU4MWI0ZmQ5My4uNzI2NGMwOTRkMjVjNWNiMTdhNDE2NGRiZTlkODFlMzdhMDcwMDg3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIFBhc3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKIHZv
aWQgUGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wg
Y2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1lKiBmcmFtZSwgU2hvdWxkU2VyaWFsaXplU2VsZWN0
ZWRUZXh0Rm9yQ2xpcGJvYXJkIHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2Fy
ZCkKIHsKICAgICBRTWltZURhdGEqIG1kID0gbmV3IFFNaW1lRGF0YTsKLSAgICBRU3RyaW5nIHRl
eHQgPSBzaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPT0gSW5jbHVkZUlt
YWdlQWx0VGV4dEZvckNsaXBib2FyZCA/IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0Rm9y
Q2xpcGJvYXJkKCkgOiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJp
bmcgdGV4dCA9IHNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNs
dWRlSW1hZ2VBbHRUZXh0Rm9yQ2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dEZvckNsaXBib2FyZCgpIDogZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHRl
eHQucmVwbGFjZShRQ2hhcigweGEwKSwgUUxhdGluMUNoYXIoJyAnKSk7CiAgICAgbWQtPnNldFRl
eHQodGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5j
cHAKaW5kZXggODc1MTk3ZmNkMDg0OWZkZThhZDAyNmI0YTM1YzU4Yjk2OGIxMzViYS4uMWVlODJm
ZDM5OTE5OWI3ZWQ1ZDk1NGQzYWI5NDFmODBjMzEyMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIENs
aXBib2FyZFdpbjo6d3JpdGVSYW5nZShSYW5nZSogc2VsZWN0ZWRSYW5nZSwgRnJhbWUqIGZyYW1l
KQogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQobV93cml0YWJsZURhdGFPYmplY3Qt
PlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgIDo6R2xvYmFs
RnJlZShtZWRpdW0uaEdsb2JhbCk7CiAKLSAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKTsKKyAgICBTdHJpbmcgc3RyID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dp
dGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0
cik7CiAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHN0cik7CkBAIC03NTks
NyArNzU5LDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UoUmFuZ2UqIHNlbGVjdGVk
UmFuZ2UsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKIAogICAgIG1lZGl1bS5oR2xvYmFsID0gMDsKLSAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5j
YW5TbWFydENvcHlPckRlbGV0ZSgpKQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY2FuU21hcnRD
b3B5T3JEZWxldGUoKSkKICAgICAgICAgbV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoc21h
cnRQYXN0ZUZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGUyZDcxZDE0YjI3NGFjNzgwMjFh
ZjU0NzU4YWI3NDEwNzk1ZTk2YjMuLmFjNzA2YzRjNTEwMDQyOTUxNTNlMTg1YjQxNDFkMmJjNjEy
ZmYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKFJh
bmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLAogICAgIH0KICAg
ICAKICAgICAvLyBQdXQgcGxhaW4gc3RyaW5nIG9uIHRoZSBwYXN0ZWJvYXJkLiBDRl9VTklDT0RF
VEVYVCBjb3ZlcnMgQ0ZfVEVYVCBhcyB3ZWxsCi0gICAgU3RyaW5nIHN0ciA9IHNob3VsZFNlcmlh
bGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9yQ2xp
cGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQoKSA6IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgU3RyaW5nIHN0ciA9IHNob3VsZFNl
cmlhbGl6ZVNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCA9PSBJbmNsdWRlSW1hZ2VBbHRUZXh0Rm9y
Q2xpcGJvYXJkID8gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dEZvckNsaXBib2FyZCgpIDog
ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAgIHJlcGxhY2VOZXdsaW5lc1dpdGhX
aW5kb3dzU3R5bGVOZXdsaW5lcyhzdHIpOwogICAgIHJlcGxhY2VOQlNQV2l0aFNwYWNlKHN0cik7
CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDY1MmIxOGJkY2VlZTY0ZDYzNzk3MmNmMTIz
MzE0ZjhjNzI0NWJiOTkuLjc0MTA5ZTFmN2FlMzE3ZDdmMWViZmY1MDJmZDQ5MmUxZjU1NGNkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTY0MCw3
ICs2NDAsNyBAQCBWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5h
dGl2ZXMoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwogCi0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+ZGljdGF0aW9uQWx0ZXJuYXRp
dmVzRm9yTWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5kaWN0YXRp
b25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIobWFya2VyKTsKIH0KIAogTm9kZSogSGl0VGVzdFJlc3Vs
dDo6dGFyZ2V0Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKaW5kZXggZjI2YzE5ZDcxZTVjODMxNWQ5ZTE4ZDViMzI5MTU2YTJkZWZiYzdjMi4u
NzAyNjk5NmNjMjFhODlhY2Q3ZDVlMzRjZDk3ZGM5Mzk3NWY0ODcwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQg
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwKICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKHJvdGF0aW9uKGJv
eFJlY3QsIENsb2Nrd2lzZSkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdl
IGhhdmUgY29tcG9zaXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgotICAgIGJvb2wgY29udGFpbnND
b21wb3NpdGlvbiA9IHJlbmRlcmVyKCktPm5vZGUoKSAmJiByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIoKS0+bm9kZSgpOwotICAgIGJv
b2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgcmVuZGVyZXIo
KS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uVXNlc0N1c3RvbVVuZGVybGluZXMoKTsK
KyAgICBib29sIGNvbnRhaW5zQ29tcG9zaXRpb24gPSByZW5kZXJlcigpLT5ub2RlKCkgJiYgcmVu
ZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Ob2RlKCkgPT0gcmVuZGVyZXIo
KS0+bm9kZSgpOworICAgIGJvb2wgdXNlQ3VzdG9tVW5kZXJsaW5lcyA9IGNvbnRhaW5zQ29tcG9z
aXRpb24gJiYgcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25Vc2VzQ3Vz
dG9tVW5kZXJsaW5lcygpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB0ZXh0IGNvbG9ycyBhbmQg
c2VsZWN0aW9uIGNvbG9ycy4KICAgICBDb2xvciB0ZXh0RmlsbENvbG9yOwpAQCAtNjU3LDggKzY1
Nyw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKIAogICAgICAgICBpZiAoY29udGFpbnNDb21w
b3NpdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcykKICAgICAgICAgICAgIHBhaW50Q29tcG9z
aXRpb25CYWNrZ3JvdW5kKGNvbnRleHQsIGJveE9yaWdpbiwgc3R5bGVUb1VzZSwgZm9udCwKLSAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25T
dGFydCgpLAotICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPmZyYW1lKCktPmVkaXRvcigpLT5j
b21wb3NpdGlvbkVuZCgpKTsKKyAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5jb21wb3NpdGlvblN0YXJ0KCksCisgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCkuY29tcG9zaXRpb25FbmQoKSk7CiAKICAgICAgICAgcGFpbnREb2N1
bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCB0cnVlKTsK
IApAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgcGFp
bnREb2N1bWVudE1hcmtlcnMoY29udGV4dCwgYm94T3JpZ2luLCBzdHlsZVRvVXNlLCBmb250LCBm
YWxzZSk7CiAKICAgICAgICAgaWYgKHVzZUN1c3RvbVVuZGVybGluZXMpIHsKLSAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVybGluZXMgPSByZW5kZXJl
cigpLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzKCk7Cisg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVz
ID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxp
bmVzKCk7CiAgICAgICAgICAgICBzaXplX3QgbnVtVW5kZXJsaW5lcyA9IHVuZGVybGluZXMuc2l6
ZSgpOwogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtVW5k
ZXJsaW5lczsgKytpbmRleCkgewpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGljc0NvbnRleHQqIHB0LCBjb25zdCBGbG9h
dFBvaW50JgogICAgIHRvUmVuZGVyZWREb2N1bWVudE1hcmtlcihtYXJrZXIpLT5zZXRSZW5kZXJl
ZFJlY3QobWFya2VyUmVjdCk7CiAgICAgCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGlnaHQgdGhl
IHRleHQKLSAgICBpZiAocmVuZGVyZXIoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPm1hcmtlZFRleHRN
YXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkgeworICAgIGlmIChyZW5kZXJlcigpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5tYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCkpIHsKICAgICAgICAgQ29s
b3IgY29sb3IgPSBtYXJrZXItPmFjdGl2ZU1hdGNoKCkgPwogICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS0+cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSA6CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5wbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJj
aEhpZ2hsaWdodENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAppbmRleCBkZmI0ZWIxNTBiZDUyMGUyZDAzNjU1OGE2MGZmYTAwNzMxY2IyMTRlLi5kNzA5NjE2
NTZjZjdmMmEwZjJlYmM5YWM3ODA3OGUxYWRkYTMxODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTUyODYsNyArNTI4Niw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBM
YXlvdXRQb2luCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG1vdmVDYXJldFRvQm91bmRh
cnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91bGRNb3Zl
Q2FyZXRUb0hvcml6b250YWxCb3VuZGFyeVdoZW5QYXN0VG9wT3JCb3R0b20oKTsKKyAgICBib29s
IG1vdmVDYXJldFRvQm91bmRhcnkgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZE1vdmVDYXJldFRvSG9yaXpvbnRhbEJvdW5kYXJ5V2hlblBhc3RUb3BPckJv
dHRvbSgpOwogCiAgICAgaWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94ICYm
IGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBpcyBi
ZWxvdyBsYXN0IHJvb3QgbGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMTdlYTE1NTIzODIzNmYyZmMxYmJiZTkxNGNjMDU0NTNm
OTRjYTRhZS4uZTk0NWVmMzQ2NDAzZjE3MzllNjIxZTI5N2U1NGM2NTVkZTY2MGYyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjM2LDEwICsyMzYsMTAgQEAgc3RhdGlj
IGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUKIAogc3RhdGljIFNwZWxsQ2hlY2tlciogc3BlbGxjaGVja2VyKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpKQorICAgIGlmICghZG9jdW1lbnQg
fHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNwZWxsQ2hlY2tlcigpOworICAgIHJldHVybiBk
b2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc3BlbGxDaGVja2VyKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIEludGVybmFsczo6aW50ZXJuYWxzSWQgPSAiaW50ZXJuYWxzIjsKQEAgLTI4NCwxMCArMjg0
LDEwIEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2Up
CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKCFw
YWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5lZGl0b3IoKS0+dG9nZ2xlQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmcoKTsKLSAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigp
LT5pc092ZXJ3cml0ZU1vZGVFbmFibGVkKCkpCi0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5l
ZGl0b3IoKS0+dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICBpZiAoIXBhZ2UtPm1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQor
ICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQ29udGludW91c1NwZWxs
Q2hlY2tpbmcoKTsKKyAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLmlzT3Zlcndy
aXRlTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnRv
Z2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCk7CiB9CiAKIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGJvb2wgSW50ZXJuYWxzOjpo
YXNTcGVsbGluZ01hcmtlcihEb2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3Ro
LCBFeGNlCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBs
ZW5ndGgpOworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBmcm9tLCBsZW5ndGgp
OwogfQogICAgIAogYm9vbCBJbnRlcm5hbHM6Omhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBpbnQgZnJvbSwgaW50IGxlbmd0aCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0x
NDM0LDcgKzE0MzQsNyBAQCBib29sIEludGVybmFsczo6aGFzQXV0b2NvcnJlY3RlZE1hcmtlcihE
b2N1bWVudCogZG9jdW1lbnQsIGludCBmcm9tLCBpbnQgbGVuZ3RoLAogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvcihEb2N1bWVudE1hcmtlcjo6QXV0b2NvcnJlY3RlZCwgZnJvbSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yKERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCiB2
b2lkIEludGVybmFsczo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNDQyLDggKzE0NDIsOCBAQCB2b2lkIEludGVybmFs
czo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpCiAgICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50
KCktPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChlbmFibGVkICE9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOworICAgIGlmIChlbmFibGVkICE9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9y
KCkudG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmKQpAQCAtMTQ1Miw4ICsxNDUyLDggQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUK
ICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQot
ICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbigpOworICAgIGlmIChlbmFibGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5l
ZGl0b3IoKS5pc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICBj
b250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlm
CkBAIC0xNDY1LDggKzE0NjUsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJikKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChlbmFi
bGVkICE9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+aXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCktPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKKyAgICBpZiAoZW5h
YmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUo
KS0+ZWRpdG9yKCkudG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTE0NzgsOCArMTQ3OCw4IEBAIHZvaWQg
SW50ZXJuYWxzOjpzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShBVVRPTUFUSUNf
VEVYVF9SRVBMQUNFTUVOVCkKLSAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+
ZnJhbWUoKS0+ZWRpdG9yKCktPmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7CisgICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLmlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLnRvZ2ds
ZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC0xNDkxLDggKzE0OTEsOCBAQCB2b2lkIEludGVybmFsczo6c2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNv
ZGUmKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgaWYgKGVuYWJsZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRv
cigpLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4
dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNUZXh0UmVwbGFj
ZW1lbnQoKTsKKyAgICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+
ZWRpdG9yKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBA
IC0xNTA0LDggKzE1MDQsOCBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZAogICAgICAgICByZXR1
cm47CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAgaWYgKGVuYWJs
ZWQgIT0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0F1dG9tYXRpY1Nw
ZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKLSAgICAgICAgY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPmVkaXRvcigpLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAg
ICBpZiAoZW5hYmxlZCAhPSBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgIGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0xNTE2
LDcgKzE1MTYsNyBAQCBib29sIEludGVybmFsczo6aXNPdmVyd3JpdGVNb2RlRW5hYmxlZChEb2N1
bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmKQogICAgIGlmICghZG9jdW1lbnQgfHwgIWRv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVu
dC0+ZnJhbWUoKS0+ZWRpdG9yKCktPmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLmlzT3ZlcndyaXRlTW9kZUVuYWJsZWQoKTsK
IH0KIAogdm9pZCBJbnRlcm5hbHM6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKERvY3VtZW50
KiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYpCkBAIC0xNTI0LDcgKzE1MjQsNyBAQCB2b2lkIElu
dGVybmFsczo6dG9nZ2xlT3ZlcndyaXRlTW9kZUVuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBF
eGNlcHRpb25Db2RlJikKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZG9jdW1lbnQtPmZyYW1lKCktPmVkaXRvcigpLT50b2dn
bGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOworICAgIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3Io
KS50b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZCgpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKQEAgLTE2MTksNyArMTYxOSw3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNHcmFtbWFyTWFya2Vy
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGZyb20sIGludCBsZW5ndGgsIEV4Y2VwCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGZyb20sIGxlbmd0aCk7CisgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZnJvbSwgbGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
SW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVBcmVhcyhEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IGJl
ZWQyMDdiZTY0N2RiOGZmZGUyODMzNmJkYjMwNTIxMjU5ZmNlYzIuLmQ1MTUyZTAxMDI5MjVhNGMx
M2UwYzUyMTdkODIzNzI4ZTE4ZjE2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnNo
b3VsZFNwZWxsQ2hlY2tGb2N1c2VkRmllbGQoKQogICAgIH0KIAogICAgIC8vIENoZWNrIGlmIHRo
ZSBub2RlIGRpc2FibGVzIHNwZWxsIGNoZWNraW5nIGRpcmVjdGx5LgotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmlzU3BlbGxDaGVja2luZ0VuYWJsZWRJbkZvY3VzZWROb2RlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkSW5Gb2N1c2VkTm9k
ZSgpOwogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAg
ICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CiAKICAgICAv
LyBDaGVjayB0byBzZWUgd2UgYXJlIG5vdCB0cnlpbmcgdG8gaW5zZXJ0IHRleHQgb24ga2V5IGRv
d24uCi0gICAgQVNTRVJUKCEoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50ICYmIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuaXNUZXh0SW5zZXJ0
aW9uKCkpKTsKKyAgICBBU1NFUlQoIShldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmlzVGV4dElu
c2VydGlvbigpKSk7CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBIb3Qga2V5IGhhbmRsaW5nLiBDYW5jZWwgcHJvY2Vzc2luZyBtb2RlLgogICAgICAgICBp
ZiAoY29tbWFuZE5hbWUgIT0gIkRlbGV0ZUJhY2t3YXJkIikKICAgICAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1faW5wdXRIYW5kbGVyLT5zZXRQcm9jZXNzaW5nQ2hhbmdlKGZhbHNlKTsKIAot
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCkpCisgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZSkuZXhl
Y3V0ZSgpKQogICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQor
ICAgIGlmICghZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gVGV4dCBpbnNlcnRpb24gY29tbWFuZHMgc2hvdWxkIG9ubHkgYmUgdHJpZ2dlcmVkIGZy
b20ga2V5cHJlc3NFdmVudC4KQEAgLTUwMSw3ICs1MDEsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghcGxhdGZvcm1FdmVudC0+dGV4dCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQt
PnRleHQoKSwgZXZlbnQpKQorICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
cGxhdGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCmluZGV4IGJlOTY0ODE5MDM5NGFlMTVm
NGFjNjE2OTI0NGViYjU3OTU3NTY2OTAuLjQwNDIxYzMyOWZhZDQ4YTBjNjkwOGZiYmYyZWY1OWU2
MTcwZjBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0RPTVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0RPTVN1cHBvcnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgQXR0cmlidXRlU3RhdGUg
ZWxlbWVudEF0dHJpYnV0ZVN0YXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUKIAogYm9vbCBlbGVtZW50SGFzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudCkKIHsKLSAgICByZXR1
cm4gZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCkuaXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAogLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBpbnB1
dCBmaWVsZCB0aGF0IHdpbGwgYmUgZm9jdXNlZCAmIHJlcXVpcmUgaW5wdXQgc3VwcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0luUGFnZVNl
YXJjaE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKaW5kZXggYTMzODBiM2UzM2M4MGQ3NjZiMjE5NGM3NjMw
MWJhYzc5NjdmYjRlNy4uNDA5MWRhZTZmYzY5MmFkMDAzNDM0YjMwMjNjNTA3ZDA1NzEzM2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5QYWdl
U2VhcmNoTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvSW5QYWdlU2VhcmNoTWFuYWdlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIElu
UGFnZVNlYXJjaE1hbmFnZXI6OnNob3VsZFNlYXJjaEZvclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KQogCiBib29sIEluUGFnZVNlYXJjaE1hbmFnZXI6OmZpbmRBbmRNYXJrVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBGaW5kT3B0aW9ucyYg
b3B0aW9ucywgYm9vbCBpc05ld1NlYXJjaCwgYm9vbCBzdGFydEZyb21TZWxlY3Rpb24pCiB7Ci0g
ICAgaWYgKFJlZlB0cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmdB
bmRTY3JvbGxUb1Zpc2libGUodGV4dCwgcmFuZ2UsIG9wdGlvbnMpKSB7CisgICAgaWYgKFJlZlB0
cjxSYW5nZT4gbWF0Y2ggPSBmcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmluZ0FuZFNjcm9sbFRvVmlz
aWJsZSh0ZXh0LCByYW5nZSwgb3B0aW9ucykpIHsKICAgICAgICAgLy8gTW92ZSB0aGUgaGlnaGxp
Z2h0IHRvIHRoZSBuZXcgbWF0Y2guCiAgICAgICAgIHNldEFjdGl2ZU1hdGNoQW5kTWFya2VyKG1h
dGNoKTsKICAgICAgICAgaWYgKGlzTmV3U2VhcmNoKSB7CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9v
bCBJblBhZ2VTZWFyY2hNYW5hZ2VyOjpmaW5kQW5kTWFya1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBSYW5nZSogcmFuZ2UsIEZyYW0KICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHNjb3BlU3Ry
aW5nTWF0Y2hlcyBkb2VzIG5vdCBhZGQgYW55IG1hcmtlcnMsIGl0IG9ubHkgY291bnRzIHRoZSBu
dW1iZXIuCiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1bm1hcmtBbGxUZXh0TWF0Y2hl
cywgaXQgaXMgYWxyZWFkeSBkb25lIGZyb20gdGhlIGNhbGxlciBiZWNhdXNlIG9mIG5ld1NlYXJj
aAogICAgICAgICAgICAgICAgIG1fYWN0aXZlTWF0Y2gtPm93bmVyRG9jdW1lbnQoKS0+bWFya2Vy
cygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIobV9hY3RpdmVNYXRjaC5nZXQoKSwgdHJ1ZSk7Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHRydWUgLyogaGlnaGxpZ2h0ICovKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjIzLDcgKzIyMyw3IEBAIGJvb2wgSW5QYWdlU2VhcmNoTWFuYWdlcjo6ZmluZEFuZE1h
cmtUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgUmFuZ2UqIHJhbmdlLCBGcmFtCiAgICAgICAgICAg
ICAvLyBhbGwgbWF0Y2hlcyBidXQgY291bnQgdGhlbS4KICAgICAgICAgICAgIG1fd2ViUGFnZS0+
bV9wYWdlLT51bm1hcmtBbGxUZXh0TWF0Y2hlcygpOwogICAgICAgICAgICAgbV9hY3RpdmVNYXRj
aC0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZFRleHRNYXRjaE1hcmtlcihtX2FjdGl2
ZU1hdGNoLmdldCgpLCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+c2V0TWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRl
ZCh0cnVlIC8qIGhpZ2hsaWdodCAqLyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEluUGFnZVNlYXJjaE1hbmFnZXI6OnNjb3BlU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgcmVzZXQsIGJvbwogICAgICAgICAg
ICAgbV9hY3RpdmVNYXRjaEluZGV4ICs9IG1hdGNoQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAobV9oaWdobGlnaHRBbGxNYXRjaGVzKQotICAgICAgICAgICAgICAgIHNj
b3BpbmdGcmFtZS0+ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
dHJ1ZSAvKiBoaWdobGlnaHQgKi8pOworICAgICAgICAgICAgICAgIHNjb3BpbmdGcmFtZS0+ZWRp
dG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCh0cnVlIC8qIGhpZ2hsaWdo
dCAqLyk7CiAgICAgICAgICAgICBtX2FjdGl2ZU1hdGNoQ291bnQgKz0gbWF0Y2hDb3VudDsKICAg
ICAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPnVwZGF0ZUZpbmRTdHJpbmdSZXN1bHQobV9h
Y3RpdmVNYXRjaENvdW50LCBtX2FjdGl2ZU1hdGNoSW5kZXgpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCmluZGV4IDMzM2QxMjRhM2I1NWU0ZDM3YjBmMmQxZmVjMjYzMzg3YzZjMWYy
ZmEuLjcwNmYxMDllNzRlMjdmYjk5NWE3MjYzNThlOTU2NTZmMTA0YjY5MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlv
bkhhbmRsZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTZWxlY3Rpb25IYW5kbGVyOjpj
YW5jZWxTZWxlY3Rpb24oKQogCiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIFNlbGVjdGlv
bkhhbmRsZXI6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICByZXR1
cm4gbV93ZWJQYWdlLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0
KCk7CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgU2VsZWN0aW9uSGFuZGxlcjo6Y2xpcHBpbmdSZWN0
Rm9yVmlzaWJsZUNvbnRlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXgg
ZDBjZTM4YTJmZmRhN2ZjNjMwYWM0NmNkY2YxNTVhOGQzMWEwYTMwYS4uMjI0YTRiNzBjN2EyZjc3
Mzc3MDBhMmMxZDc0ZTEzZTQwZjc4YWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmV4ZWN1dGVD
b3JlQ29tbWFuZEJ5TmFtZShjb25zdCBFdmFzX09iamVjdCogZXdrVmkKIHsKICAgICBEUlRfU1VQ
UFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQobmFt
ZSkuZXhlY3V0ZSh2YWx1ZSk7CisgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwogfQog
CiBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6ZmluZFN0cmluZyhjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMzI4LDcgKzMyOCw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
Ojppc0NvbW1hbmRFbmFibGVkKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zCiB7CiAg
ICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSwgZmFsc2UpOwog
Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCktPmNvbW1hbmQobmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFu
ZChuYW1lKS5pc0VuYWJsZWQoKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmZvcmNlTGF5b3V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKQEAgLTU1MCwxNCArNTUwLDE0IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDb21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2hhcioKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
IHx8ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVk
aXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkp
KQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0
KCkgJiYgIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBj
b25zdCBTdHJpbmcgY29tcG9zaXRpb25TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHRleHQpOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAg
ICB1bmRlcmxpbmVzLmFwcGVuZChXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21w
b3NpdGlvblN0cmluZy5sZW5ndGgoKSwgV2ViQ29yZTo6Q29sb3IoMCwgMCwgMCksIGZhbHNlKSk7
Ci0gICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5l
cywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKKyAgICBlZGl0b3Iuc2V0Q29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHVuZGVybGluZXMsIHN0YXJ0LCBzdGFydCArIGxlbmd0aCk7CiB9CiAK
IGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpoYXNDb21wb3NpdGlvbihjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKQEAgLTU2NywxMSArNTY3LDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6Omhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkgfHwgIXBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Y29uc3QgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpOwor
ICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiB9CiAKIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0
LCBpbnQqIGxlbmd0aCkKQEAgLTU4MywxMiArNTc5LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpjb21wb3NpdGlvblJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0
YXJ0CiAgICAgaWYgKCFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IHBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAg
aWYgKCFlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgKnN0YXJ0ID0gZWRpdG9yLT5jb21wb3NpdGlvblN0YXJ0KCk7Ci0gICAgKmxlbmd0aCA9IGVk
aXRvci0+Y29tcG9zaXRpb25FbmQoKSAtICpzdGFydDsKKyAgICAqc3RhcnQgPSBlZGl0b3IuY29t
cG9zaXRpb25TdGFydCgpOworICAgICpsZW5ndGggPSBlZGl0b3IuY29tcG9zaXRpb25FbmQoKSAt
ICpzdGFydDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTk5LDQwICs1OTUsMzcgQEAgdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbmZpcm1Db21wb3NpdGlvbihFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgY2gKICAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8
ICFwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRv
cikKLSAgICAgICAgcmV0dXJuOworICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9yID0gcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKIAotICAg
IGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVkaXRvci0+aW5zZXJ0
VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21w
b3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmluZzo6ZnJvbVVURjgo
dGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRleHQpIHsKLSAg
ICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0KSk7
CisgICAgICAgIGVkaXRvci5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9tVVRGOCh0ZXh0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRp
b24oKTsKKyAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIFdlYkNvcmU6Oklu
dFJlY3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZShFdmFzX09iamVjdCogZXdrVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UsIFdlYkNvcmU6Oklu
dFJlY3QoKSk7CiAKLSAgICBpZiAoIXBhZ2UtPmZvY3VzQ29udHJvbGxlcigpIHx8ICFwYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCkgfHwgIXBhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkpCisgICAgaWYgKCFwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKSB8fCAhcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UmVjdCgpOwogCiAgICAg
aWYgKChsb2NhdGlvbiArIGxlbmd0aCA8IGxvY2F0aW9uKSAmJiAobG9jYXRpb24gKyBsZW5ndGgp
KQogICAgICAgICBsZW5ndGggPSAwOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6
OkVkaXRvciogZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiByYW5nZSA9IFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVu
dEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkludFJlY3QoKTsKIAotICAgIHJldHVybiBlZGl0b3ItPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmZpcnN0
UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGlu
dCogbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5jcHAKaW5kZXggOTA5MDJkN2FlN2ZjYTllMGU2YTMwNjc2MzhmMjA0NDQw
YmEyYjQ5Yy4uMjRkYTUxZGQ2YzEzNDc2ZTdkNzNmYzZjZDhkNWQ0MWU2YjQzMzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwCkBAIC0xNDIsMTMgKzE0MiwxMyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVzcG9uZFRv
Q2hhbmdlZFNlbGVjdGlvbihGcmFtZSogY29yZUZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKSAmJiBjb3JlRnJh
bWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlm
IChjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEV2YXNfT2JqZWN0KiB3ZWJGcmFtZSA9IEVXS1ByaXZh
dGU6OmtpdEZyYW1lKGNvcmVGcmFtZSk7CiAgICAgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2Vs
ZWN0aW9uX2NoYW5nZWQod2ViRnJhbWUpOwogCi0gICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2Fu
Y2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOworICAgIGNvcmVGcmFtZS0+ZWRp
dG9yKCkuY2FuY2VsQ29tcG9zaXRpb25JZlNlbGVjdGlvbklzSW52YWxpZCgpOwogfQogCiB2b2lk
IEVkaXRvckNsaWVudEVmbDo6ZGlkRW5kRWRpdGluZygpCkBAIC0zMjQsNyArMzI0LDcgQEAgYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1h
bmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpKTsK
KyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KGV2ZW50KSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhh
dmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0
aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJl
YXRlZCwKQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gRG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQg
Y2Fubm90IGVkaXQuCi0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIERvbid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNh
biByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKQEAgLTM0OCw3ICszNDgsNyBAQCBib29s
IEVkaXRvckNsaWVudEVmbDo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtl
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigp
LT5pbnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwg
ZXZlbnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXgg
ZjRkM2MwZTRmMTNlZjc4YjlmYjExMWZjY2RjYzY5MDY3NjVmNzkwZC4uY2NmN2U1MDJmN2JjNTU5
ZWVhMGZlODY3Zjk2NWU4NGZlMmI3MmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBFaW5hX0Jvb2wgZXdrX2ZyYW1lX2VkaXRhYmxlX3NldChF
dmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbCBlZGl0YWJsZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgc21hcnREYXRhLT5lZGl0YWJsZSA9IGVkaXRhYmxlOwogICAgIGlmIChlZGl0
YWJsZSkKLSAgICAgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOworICAgICAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNDg4LDcgKzQ4OCw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9zZWxlY3Rpb25fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7Ci0gICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVk
VGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgV1RGOjpDU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRv
cigpLnNlbGVjdGVkVGV4dCgpLnV0ZjgoKTsKICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2Vs
ZWN0ZWRUZXh0LmRhdGEoKSk7CkBAIC01MDAsNyArNTAwLDcgQEAgRWluYV9Cb29sIGV3a19mcmFt
ZV90ZXh0X3NlYXJjaChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIHRl
eHQsIEUKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh0ZXh0LCBmYWxz
ZSk7CiAKLSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmZpbmRTdHJpbmco
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHRleHQpLCBmb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFw
LCB0cnVlKTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCkuZmluZFN0cmlu
ZyhXVEY6OlN0cmluZzo6ZnJvbVVURjgodGV4dCksIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIHdy
YXAsIHRydWUpOwogfQogCiB1bnNpZ25lZCBpbnQgZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc19tYXJr
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogc3RyaW5nLCBFaW5hX0Jvb2wgY2Fz
ZVNlbnNpdGl2ZSwgRWluYV9Cb29sIGhpZ2hsaWdodCwgdW5zaWduZWQgaW50IGxpbWl0KQpAQCAt
NTA5LDggKzUwOSw4IEBAIHVuc2lnbmVkIGludCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX21hcmso
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBjaGFyKiBzdHJpCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzdHJpbmcsIDApOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+
ZWRpdG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoaGlnaGxpZ2h0KTsK
LSAgICByZXR1cm4gc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRl
eHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0
LCB0cnVlLCAwKTsKKyAgICBzbWFydERhdGEtPmZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+
ZnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHN0cmluZyksIDAsIGNhc2VTZW5zaXRpdmUsIGxpbWl0LCB0cnVlLCAwKTsKIH0KIAogRWluYV9C
b29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJh
bWUpCkBAIC01MjYsNyArNTI2LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNf
aGlnaGxpZ2h0X3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIEVpbmFfQm9vbAogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZhbHNlKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgZmFsc2Up
OwotICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRUZXh0TWF0Y2hlc0Fy
ZUhpZ2hsaWdodGVkKGhpZ2hsaWdodCk7CisgICAgc21hcnREYXRhLT5mcmFtZS0+ZWRpdG9yKCku
c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChoaWdobGlnaHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC01MzQsNyArNTM0LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0
X21hdGNoZXNfaGlnaGxpZ2h0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7CiAg
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2Up
OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBm
YWxzZSk7Ci0gICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVkaXRvcigpLT5tYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKCk7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+ZnJhbWUtPmVk
aXRvcigpLm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKIH0KIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBmM2ZhOGUxYTIyMjNiNGM5MWE3NTA0MDY3YzZm
ZWEzNWE3YmRhOGRiLi40YThhYWYzMzg0Nzg2Y2RlNjExNDkxMDNmODA0NDNjMGYxYTIyMzY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTE2NjgsNyArMTY2OCw3IEBAIGNvbnN0
IGNoYXIqIGV3a192aWV3X3NlbGVjdGlvbl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwot
ICAgIENTdHJpbmcgc2VsZWN0ZWRTdHJpbmcgPSBwcml2LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKS51dGY4KCk7
CisgICAgQ1N0cmluZyBzZWxlY3RlZFN0cmluZyA9IHByaXYtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkudXRmOCgp
OwogICAgIGlmIChzZWxlY3RlZFN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgcmV0dXJuIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNlbGVjdGVkU3RyaW5nLmRhdGEoKSk7CkBA
IC0xNjgzLDcgKzE2ODMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfZWRpdG9yX2NvbW1hbmRfZXhl
Y3V0ZShjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrXwogICAgIGlmICghY29t
bWFuZFN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHByaXYtPnBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
KTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHZhbHVlKSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19jb250ZXh0
X21lbnVfZm9yd2FyZF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQpCkBAIC00MTAyLDExICs0MTAyLDExIEBAIHZvaWQgZXdr
X3ZpZXdfdGV4dF9kaXJlY3Rpb25fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVGV4dF9E
aXJlY3Rpb24gZGlyZWN0CiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsK
LSAgICBpZiAoIWVkaXRvci0+Y2FuRWRpdCgpKQorICAgIFdlYkNvcmU6OkVkaXRvciYgZWRpdG9y
ID0gZm9jdXNlZEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oc3Rh
dGljX2Nhc3Q8V3JpdGluZ0RpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgZWRpdG9yLnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKHN0YXRpY19jYXN0PFdyaXRpbmdEaXJlY3Rpb24+KGRpcmVjdGlv
bikpOwogfQogCiB2b2lkIGV3a192aWV3X2RpZF9maXJzdF92aXN1YWxseV9ub25lbXB0eV9sYXlv
dXQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA5YTUyZTdmNTE2ZGM4MjZkNjBl
ZWEzMjM0NjI0NGY1YzFkYjM3MWY0Li45YjUzOGM0MmM2NTM2ZGQxODM5NWZjM2VmYzMwNzczMTg5
ODlkOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6
cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgLy8gc3luY2VkIHdpdGgg
Y3Vyc29yIG1vdmVtZW50LiBGb3IgaW5zdGFuY2UsIGEgdGV4dCBmaWVsZCBjYW4gbW92ZSB3aXRo
b3V0CiAgICAgLy8gdGhlIHNlbGVjdGlvbiBjaGFuZ2luZy4KICAgICBGcmFtZSogZm9jdXNlZEZy
YW1lID0gY29yZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7Ci0gICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKGZvY3VzZWRGcmFtZSAmJiBmb2N1c2VkRnJhbWUtPmVkaXRvcigp
LmNhbkVkaXQoKSkKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5pbUZpbHRlci5zZXRDdXJzb3JS
ZWN0KGZyYW1lLT5zZWxlY3Rpb24oKS0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMmEzZDRjZTc3ZjlhOGI3M2U2M2YxZGZkMjQ0M2Mz
NTY1MmJjMjUzNS4uMzcwY2QzMTNkNDcyYmI5MDExOGQ0M2RjYTg5YzAyYjgwNTgyMTI3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LAogICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5faWZf
ZmFpbCh2YWx1ZSk7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUp
OworICAgIGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgY29uc3QgZ2NoYXIqIG5hbWUpCkBAIC0yODQsNyArMjg0LDcgQEAgYm9vbCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmlzQ29tbWFuZEVuYWJsZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgZ2MKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldyksIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CiAKLSAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKS5pc0VuYWJsZWQoKTsKKyAg
ICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpLmlzRW5hYmxlZCgpOwogfQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgY29uc3QgY2hhciogdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKQpAQCAtMjk2LDE0
ICsyOTYsMTQgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENvbXBvc2l0aW9u
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAg
ICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+Y2FuRWRpdCgpICYmICFlZGl0b3ItPmhhc0NvbXBv
c2l0aW9uKCkpKQorICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIGlm
ICghZWRpdG9yLmNhbkVkaXQoKSAmJiAhZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBjb21wb3NpdGlvblN0cmluZyA9IFN0cmluZzo6ZnJvbVVU
RjgodGV4dCk7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzOwog
ICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9uVW5kZXJsaW5lKDAsIGNvbXBvc2l0aW9u
U3RyaW5nLmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKLSAgICBlZGl0b3ItPnNl
dENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBzdGFydCwgc3RhcnQg
KyBsZW5ndGgpOworICAgIGVkaXRvci5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
dW5kZXJsaW5lcywgc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKTsKIH0KIAogYm9vbCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6Omhhc0NvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBA
IC0zMTIsMTEgKzMxMiw4IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpoYXNDb21w
b3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRWRpdG9yKiBlZGl0b3IgPSBm
cmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpOwogfQogCiBib29sIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Y29tcG9zaXRpb25SYW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBpbnQqIHN0
YXJ0LCBpbnQqIGxlbmd0aCkKQEAgLTMyOSwxMiArMzI2LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpjb21wb3NpdGlvblJhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGlu
dCogc3RhCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWRp
dG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFlZGl0b3IgfHwgIWVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0b3Io
KTsKKyAgICBpZiAoIWVkaXRvci5oYXNDb21wb3NpdGlvbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAqc3RhcnQgPSBlZGl0b3ItPmNvbXBvc2l0aW9uU3RhcnQoKTsKLSAgICAqbGVu
Z3RoID0gZWRpdG9yLT5jb21wb3NpdGlvbkVuZCgpIC0gKnN0YXJ0OworICAgICpzdGFydCA9IGVk
aXRvci5jb21wb3NpdGlvblN0YXJ0KCk7CisgICAgKmxlbmd0aCA9IGVkaXRvci5jb21wb3NpdGlv
bkVuZCgpIC0gKnN0YXJ0OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNDYsMTkgKzM0Mywx
NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Y29uZmlybUNvbXBvc2l0aW9uKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7Ci0gICAgaWYgKCFl
ZGl0b3IpCi0gICAgICAgIHJldHVybjsKKyAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0
b3IoKTsKIAotICAgIGlmICghZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgIGVk
aXRvci0+aW5zZXJ0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKKyAgICBpZiAoIWVk
aXRvci5oYXNDb21wb3NpdGlvbigpKSB7CisgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KFN0cmlu
Zzo6ZnJvbVVURjgodGV4dCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0
ZXh0KSB7Ci0gICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVU
RjgodGV4dCkpOworICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJv
bVVURjgodGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVkaXRvci0+Y29uZmly
bUNvbXBvc2l0aW9uKCk7CisgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbigpOwogfQogCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZG9Db21tYW5kKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIGNvbnN0IGNoYXIqIGNvbW1hbmQpCkBAIC0zNjgsOSArMzYzLDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmRvQ29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiBjb20KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBF
ZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAgICBpZiAoIWVkaXRvcikKLSAgICAg
ICAgcmV0dXJuOworICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAg
U3RyaW5nIGNvbW1hbmRTdHJpbmcoY29tbWFuZCk7CiAgICAgLy8gUmVtb3ZlIGVuZGluZyA6IGhl
cmUuCkBAIC0zODMsNyArMzc2LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmRv
Q29tbWFuZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBjb20KICAgICBmaXJz
dENoYXIubWFrZVVwcGVyKCk7CiAgICAgY29tbWFuZFN0cmluZy5pbnNlcnQoZmlyc3RDaGFyLCAw
KTsKIAotICAgIGVkaXRvci0+Y29tbWFuZChjb21tYW5kU3RyaW5nKS5leGVjdXRlKCk7CisgICAg
ZWRpdG9yLmNvbW1hbmQoY29tbWFuZFN0cmluZykuZXhlY3V0ZSgpOwogfQogCiBib29sIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBjYWlyb19yZWN0YW5nbGVf
aW50X3QqIHJlY3QpCkBAIC0zOTgsMTUgKzM5MSwxMyBAQCBib29sIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoV2ViS2l0V2ViVmlldyogd2ViVmll
dwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVkaXRvciog
ZWRpdG9yID0gZnJhbWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CiAKICAgICBS
ZWZQdHI8UmFuZ2U+IHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxl
bWVudCgpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAqcmVjdCA9IGVkaXRvci0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2Uu
Z2V0KCkpOworICAgICpyZWN0ID0gZWRpdG9yLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNTdmYWNhZjMxMTAzOTlhNWFj
YjA2NDVlNzBkYzkyOTI0NWU3YWE0Ni4uNTA5MDkwNDczMWM0OTczMGY3YzZlOWViMTA1ZWNhODY1
MjFkYmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIHNldFNlbGVjdGlv
blByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChtX3dlYlZpZXcpOwogI2VuZGlmCiAKLSAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkp
CisgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJ
bnZhbGlkKCkpCiAgICAgICAgIG1fd2ViVmlldy0+cHJpdi0+aW1GaWx0ZXIucmVzZXRDb250ZXh0
KCk7CiB9CiAKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIEVkaXRvckNsaWVudDo6ZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIGJvb2wgYWxsb3dUZXh0SW5zZQogewog
ICAgIFZlY3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wZW5kaW5nRWRpdG9yQ29tbWFuZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQobV9wZW5k
aW5nRWRpdG9yQ29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQobV9wZW5kaW5nRWRpdG9y
Q29tbWFuZHMuYXQoaSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4
dEluc2VydGlvbigpICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE9ubHkgYWxsb3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBp
cyBlZGl0YWJsZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJh
bWUsIGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKSkgeworICAgICAgICBpZiAoZXhlY3V0ZVBl
bmRpbmdFZGl0b3JDb21tYW5kcyhmcmFtZSwgZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkpIHsK
ICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgfQogCiAgICAgLy8g
RG9uJ3QgYWxsb3cgdGV4dCBpbnNlcnRpb24gZm9yIG5vZGVzIHRoYXQgY2Fubm90IGVkaXQuCi0g
ICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lLT5lZGl0
b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgaXMganVzdCBh
IG5vcm1hbCB0ZXh0IGluc2VydGlvbiwgc28gd2FpdCB0byBleGVjdXRlIHRoZSBpbnNlcnRpb24K
QEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAocGxhdGZvcm1FdmVudC0+Y3RybEtleSgp
IHx8IHBsYXRmb3JtRXZlbnQtPmFsdEtleSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgZXZlbnQp
KQorICAgIGlmIChmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50LT50ZXh0
KCksIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1l
dGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9XZWJWaWV3
SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IDMzOTg5MTFlZGQ5MGQ5OTFiOWZhMmYyMDg2NGZi
NmQzMzliMTY0NWEuLjk4NzdmY2ExOTZmNjljNDU4ZWEyMTVjZDk2OTM0ZDUyZWFmOTI5Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1dlYlZpZXdJbnB1dE1l
dGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvV2Vi
Vmlld0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFdlYlZpZXdJ
bnB1dE1ldGhvZEZpbHRlcjo6c2V0V2ViVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogYm9v
bCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNhbkVkaXQoKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRp
dG9yKCktPmNhbkVkaXQoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXQoKTsKIH0KIAogYm9vbCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNlbmRTaW1wbGVL
ZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQsIFdURjo6U3RyaW5nIHNpbXBsZVN0cmluZywgRXZl
bnRGYWtlZEZvckNvbXBvc2l0aW9uKQpAQCAtNzYsNDIgKzc2LDQyIEBAIGJvb2wgV2ViVmlld0lu
cHV0TWV0aG9kRmlsdGVyOjpzZW5kS2V5RXZlbnRXaXRoQ29tcG9zaXRpb25SZXN1bHRzKEdka0V2
ZW50S2V5KiBlCiB2b2lkIFdlYlZpZXdJbnB1dE1ldGhvZEZpbHRlcjo6Y29uZmlybUNvbXBvc2l0
aW9uVGV4dChTdHJpbmcgdGV4dCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBmb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkK
KyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAodGV4dC5pc051bGwoKSkgewogICAgICAgICBjb25maXJtQ3VycmVu
dENvbXBvc2l0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5jb25maXJtQ29tcG9zaXRpb24obV9jb25maXJtZWRDb21wb3NpdGlvbik7CisgICAgZnJh
bWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihtX2NvbmZpcm1lZENvbXBvc2l0aW9uKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OmNvbmZpcm1DdXJyZW50Q29tcG9z
aXRpb24oKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAg
IGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5jb25maXJtQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3SW5wdXRNZXRob2RGaWx0
ZXI6OmNhbmNlbEN1cnJlbnRDb21wb3NpdGlvbigpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24o
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXI6OnNldFByZWVkaXQoU3RyaW5nIG5ld1ByZWVkaXQsIGlu
dCBjdXJzb3JPZmZzZXQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHBhcnNlIHRoZSBQYW5nb0F0dHJMaXN0IHRoYXQg
d2UgZ2V0IGZyb20gdGhlIElNIGNvbnRleHQgaGVyZS4KICAgICBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25V
bmRlcmxpbmUoMCwgbmV3UHJlZWRpdC5sZW5ndGgoKSwgQ29sb3IoMSwgMSwgMSksIGZhbHNlKSk7
Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxp
bmVzLCBtX2N1cnNvck9mZnNldCwgbV9jdXJzb3JPZmZzZXQpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5zZXRDb21wb3NpdGlvbihuZXdQcmVlZGl0LCB1bmRlcmxpbmVzLCBtX2N1cnNvck9mZnNldCwg
bV9jdXJzb3JPZmZzZXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IDMzNDYxNjRkOGM2NTU5Y2I4
YzkxMDJkMmFiZmFhMDk1NGI1Yzg0ODkuLjE2M2Y2ZjBiYzU1NjUzNjM4NmEyYjlhNDQ1N2M3Yjg5
OGMzNWYwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cApAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2ZyYW1lX3JlcGxhY2Vfc2Vs
ZWN0aW9uKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciogdGV4dCkKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CiAgICAgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCA9
IGZhbHNlOwogICAgIGJvb2wgc21hcnRSZXBsYWNlID0gdHJ1ZTsKLSAgICBjb3JlRnJhbWUtPmVk
aXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQs
IHNtYXJ0UmVwbGFjZSk7CisgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDA3NjY2
YmU2YWRhMDIyOTUyZTRmNjhmZTM1ZWFmZTQ4MDg1NjY4OGQuLmM1ODJiNjY5NmNkYWMwZjIwYWY3
YjI5YWE4NjQ3OTljNTEwYzU4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgSW50UG9pbnQgZ2V0TG9jYXRp
b25Gb3JLZXlib2FyZEdlbmVyYXRlZENvbnRleHRNZW51KEZyYW1lKiBmcmFtZSkKICAgICAvLyBz
ZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UgY2FuIHJldHVybiAwIGhlcmUsIGJ1dCBp
ZiB0aGF0IHdhcyB0aGUgY2FzZQogICAgIC8vIHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuaXNOb25P
cnBoYW5lZENhcmV0T3JSYW5nZSgpIHdvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UKICAgICAvLyBh
Ym92ZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaXQuCi0gICAgSW50UmVjdCBmaXJzdFJl
Y3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHNlbGVjdGlvbi0+c2VsZWN0
aW9uKCkuZmlyc3RSYW5nZSgpLmdldCgpKTsKKyAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IGZyYW1l
LT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rpb24tPnNlbGVjdGlvbigpLmZpcnN0
UmFuZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIEludFBvaW50KGZpcnN0UmVjdC54KCksIGZpcnN0
UmVjdC5tYXhZKCkpOwogfQogCkBAIC05MzgsNyArOTM4LDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRG
b2N1cyoKICAgICBlbHNlCiAgICAgICAgIGZvY3VzQ29udHJvbGxlci0+c2V0Rm9jdXNlZEZyYW1l
KGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpKTsKIAotICAgIGlmIChmb2N1c0NvbnRyb2xsZXIt
PmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmIChmb2N1c0NvbnRy
b2xsZXItPmZvY3VzZWRGcmFtZSgpLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHdlYlZp
ZXctPnByaXYtPmltRmlsdGVyLm5vdGlmeUZvY3VzZWRJbigpOwogICAgIHJldHVybiBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5mb2N1c19pbl9ldmVudCh3
aWRnZXQsIGV2ZW50KTsKIH0KQEAgLTExODEsMzEgKzExODEsMzEgQEAgc3RhdGljIGdib29sZWFu
IHdlYmtpdF93ZWJfdmlld19yZWFsX2NvbnNvbGVfbWVzc2FnZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX3NlbGVjdF9hbGwoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcp
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3JlYWxfY3V0X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1dCIp
LmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb3B5X2NsaXBib2FyZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmll
dyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19yZWFsX3VuZG8oV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9yZWRvKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUmVkbyIp
LmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUo
KTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19yZWFsX21vdmVfY3Vyc29y
IChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtNb3ZlbWVudFN0ZXAgc3RlcCwgZ2ludCBjb3Vu
dCkKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
cmVhbF9tb3ZlX2N1cnNvciAoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrTW92CiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiUGFz
dGUiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVh
bF9zaG91bGRfYWxsb3dfZWRpdGluZ19hY3Rpb24oV2ViS2l0V2ViVmlldyopCkBAIC00Mzg5LDcg
KzQzODksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfaGlnaGxpZ2h0X3RleHRfbWF0Y2hl
cyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm9vbGVhbgogCiAgICAgRnJhbWUgKmZyYW1lID0g
Y29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZG8gewotICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoc2hvdWxkSGlnaGxpZ2h0
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxp
Z2h0ZWQoc2hvdWxkSGlnaGxpZ2h0KTsKICAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50
cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7CiAgICAgfSB3aGlsZSAoZnJhbWUpOwogfQpAQCAt
NDQ1OSw3ICs0NDU5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJv
YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBj
b3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0g
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y2FuQ3V0KCkgfHwgZnJhbWUtPmVkaXRvcigpLT5j
YW5ESFRNTEN1dCgpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ3V0KCkgfHwgZnJh
bWUtPmVkaXRvcigpLmNhbkRIVE1MQ3V0KCk7CiB9CiAKIC8qKgpAQCAtNDQ3NSw3ICs0NDc1LDcg
QEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklF
Vyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFt
ZS0+ZWRpdG9yKCktPmNhbkNvcHkoKSB8fCBmcmFtZS0+ZWRpdG9yKCktPmNhbkRIVE1MQ29weSgp
OworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkuY2FuQ29weSgpIHx8IGZyYW1lLT5lZGl0b3Io
KS5jYW5ESFRNTENvcHkoKTsKIH0KIAogLyoqCkBAIC00NDkxLDcgKzQ0OTEsNyBAQCBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Bhc3RlX2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9y
KCktPmNhblBhc3RlKCkgfHwgZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCk7CisgICAg
cmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS5jYW5E
SFRNTFBhc3RlKCk7CiB9CiAKIC8qKgpAQCAtNDU0Nyw3ICs0NTQ3LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfZGVsZXRlX3NlbGVjdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAogICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKKyAgICBmcmFt
ZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwogfQogCiAvKioKQEAgLTQ2MjksNyArNDYyOSw3
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBnYm9vbGVhbiBmbGFnKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwogCiAgICAg
aWYgKGZsYWcpIHsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRv
Qm9keUVsZW1lbnQoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0eWxl
VG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAvLyBUT0RPOiBJZiB0aGUgV2ViS2l0V2ViVmlldyBp
cyBtYWRlIGVkaXRhYmxlIGFuZCB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5LCBzZXQgaXQgdG8gc29t
ZXRoaW5nLgogICAgICAgICAvL2lmICghd2Via2l0X3dlYl92aWV3X2dldF9zZWxlY3RlZF9kb21f
cmFuZ2Uod2ViVmlldykpCiAgICAgICAgIC8vICAgIG1haW5GcmFtZS0+c2V0U2VsZWN0aW9uRnJv
bU5vbmUoKTsKQEAgLTUwOTAsNyArNTA5MCw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19j
YW5fdW5kbyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNhblVuZG8oKTsKKyAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAogLyoqCkBAIC01MTI1LDcgKzUxMjUsNyBAQCBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3JlZG8oV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIEZB
TFNFKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5j
YW5SZWRvKCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jYW5SZWRvKCk7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNmQzYzZiMGZhNWQ2MjFj
MjgzNmNjMGM2NGY4ZjYxYTNiMjk3ZmU2MC4uYTAzNTRiNDI1MGYzM2U5Njg4MDRkYTJhYzExMTA2
YjQ5ZTcxMDdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC00OTMs
NyArNDkzLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TU3RyaW5nICopX3NlbGVjdGVkU3RyaW5nCiB7Ci0g
ICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpKTsKKyAg
ICByZXR1cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKSk7CiB9CiAK
IC0gKE5TU3RyaW5nICopX3N0cmluZ0ZvclJhbmdlOihET01SYW5nZSAqKXJhbmdlCkBAIC02MDIs
NyArNjAyLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKE5TUmVjdClfZmlyc3RSZWN0Rm9yRE9NUmFuZ2U6KERP
TVJhbmdlICopcmFuZ2UKIHsKLSAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3Io
KS0+Zmlyc3RSZWN0Rm9yUmFuZ2UoY29yZShyYW5nZSkpOworICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKGNvcmUocmFuZ2UpKTsKIH0KIAog
LSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2UKQEAgLTY3
Niw3ICs2NzYsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAoRE9NUmFuZ2UgKilfbWFya0RPTVJhbmdlCiB7Ci0g
ICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS0+bWFyaygpLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+ZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogfQogCiAvLyBH
aXZlbiBwcm9wb3NlZFJhbmdlLCByZXR1cm5zIGFuIGV4dGVuZGVkIHJhbmdlIHRoYXQgaW5jbHVk
ZXMgYWRqYWNlbnQgd2hpdGVzcGFjZSB0aGF0IHNob3VsZApAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0
YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogICAgIGlmIChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLT5p
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKTsKKyAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRl
bnQoKTsKIH0KIAogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDoo
TlNQb2ludClwb2ludApAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNv
dXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIGlmICghX3ByaXZh
dGUtPmNvcmVGcmFtZSB8fCAhc3R5bGUpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IGhhdmUgdG8gY3JlYXRlIGEgY29weSBoZXJlLgotICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmVkaXRvcigpLT5jb21wdXRlQW5kU2V0VHlwaW5nU3R5bGUoY29yZShzdHlsZSkt
PmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOworICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShjb3JlKHN0eWxlKS0+Y29w
eVByb3BlcnRpZXMoKS5nZXQoKSwgdW5kb0FjdGlvbik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtOTI4LDcgKzkyOCw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIWZyYWdtZW50KQogICAgICAgICBy
ZXR1cm47Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZWRpdG9yKCktPnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJl
cGxhY2UsIG1hdGNoU3R5bGUpOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRvcigpLnJl
cGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY29yZShmcmFnbWVudCksIHNlbGVjdFJlcGxhY2Vt
ZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpOwogfQogCiAtICh2b2lkKV9yZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClz
ZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4
IDM3NmRmOWI4NDg0MGJmMjg3Y2M5YzE1OWM2ZDBkNDBlM2FhZTlkMWMuLmQ2MTIwYWU5MWQ3ZTYw
Njc2OGE1N2E5OTY2NDJmNGE3NGMwOTEyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMjAsNyArMjIwLDcgQEAgc3Rh
dGljIE5TTXV0YWJsZUFycmF5ICpuZXdBcnJheUJ5Q29uY2F0ZW5hdGluZ0FycmF5cyhOU0FycmF5
ICpmaXJzdCwgTlNBcnJheSAqc2UKICAgICAgICAgcmV0dXJuOwogICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBbd2ViRnJhbWUgd2ViVmlld107CiAgICAgaWYgKFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0g
d2ViRnJhbWUgJiYgW3dlYlZpZXcgaXNFZGl0YWJsZV0pCi0gICAgICAgIGNvcmUod2ViRnJhbWUp
LT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CisgICAgICAgIGNv
cmUod2ViRnJhbWUpLT5lZGl0b3IoKS5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsK
IH0KIAogLSAoQk9PTCljYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDhmZjY1YWIwMDNlNzUzNDFhMjcwNWI5ZTgxMTlk
MzRiMjc1NGNmOWUuLmUxNjY5ZDdhODkyNDZhNTlhNjdlMGJjM2IyNWFkOGI0YWNjOWQyNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODY0LDcgKzg2NCw3
IEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVs
YXRpdmVQYXJ0KQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAog
ICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0gW3NlbGYgX2RvY3VtZW50RnJhZ21l
bnRGcm9tUGFzdGVib2FyZDpwYXN0ZWJvYXJkIGluQ29udGV4dDpyYW5nZSBhbGxvd1BsYWluVGV4
dDphbGxvd1BsYWluVGV4dF07CiAgICAgaWYgKGZyYWdtZW50ICYmIFtzZWxmIF9zaG91bGRJbnNl
cnRGcmFnbWVudDpmcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBnaXZlbkFjdGlvbjpX
ZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkXSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
cGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0
aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVudCksIFtzZWxmIF9jYW5TbWFydFJlcGxh
Y2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFsc2UpOwogI2Vsc2UKICAgICAvLyBNYWls
IGlzIGlnbm9yaW5nIHRoZSBmcmFtZW50IHBhc3NlZCB0byB0aGUgZGVsZWdhdGUgYW5kIGNyZWF0
ZXMgYSBuZXcgb25lLgogICAgIC8vIFdlIHdhbnQgdG8gYXZvaWQgY3JlYXRpbmcgdGhlIGZyYWdt
ZW50IHR3aWNlLgpAQCAtODcyLDEyICs4NzIsMTIgQEAgc3RhdGljIE5TVVJMKiB1bmlxdWVVUkxX
aXRoUmVsYXRpdmVQYXJ0KE5TU3RyaW5nICpyZWxhdGl2ZVBhcnQpCiAgICAgICAgIGlmIChbc2Vs
ZiBfc2hvdWxkSW5zZXJ0RnJhZ21lbnQ6bmlsIHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVu
QWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWRdKSB7CiAgICAgICAgICAgICBET01Eb2N1
bWVudEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3Rl
Ym9hcmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFp
blRleHRdOwogICAgICAgICAgICAgaWYgKGZyYWdtZW50KQotICAgICAgICAgICAgICAgIGNvcmVG
cmFtZS0+ZWRpdG9yKCktPnBhc3RlQXNGcmFnbWVudChjb3JlKGZyYWdtZW50KSwgW3NlbGYgX2Nh
blNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkOnBhc3RlYm9hcmRdLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5wYXN0ZUFzRnJhZ21lbnQoY29yZShmcmFnbWVu
dCksIFtzZWxmIF9jYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZDpwYXN0ZWJvYXJkXSwgZmFs
c2UpOwogICAgICAgICB9ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICBET01Eb2N1bWVu
dEZyYWdtZW50ICpmcmFnbWVudCA9IFtzZWxmIF9kb2N1bWVudEZyYWdtZW50RnJvbVBhc3RlYm9h
cmQ6cGFzdGVib2FyZCBpbkNvbnRleHQ6cmFuZ2UgYWxsb3dQbGFpblRleHQ6YWxsb3dQbGFpblRl
eHRdOwogICAgICAgICBpZiAoZnJhZ21lbnQgJiYgW3NlbGYgX3Nob3VsZEluc2VydEZyYWdtZW50
OmZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGdpdmVuQWN0aW9uOldlYlZpZXdJbnNl
cnRBY3Rpb25QYXN0ZWRdKQotICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGFzdGVB
c0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNlV2l0aFBhc3Rl
Ym9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKKyAgICAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9y
KCkucGFzdGVBc0ZyYWdtZW50KGNvcmUoZnJhZ21lbnQpLCBbc2VsZiBfY2FuU21hcnRSZXBsYWNl
V2l0aFBhc3RlYm9hcmQ6cGFzdGVib2FyZF0sIGZhbHNlKTsKICAgICB9CiAjZW5kaWYKICAgICBb
d2ViVmlldyBfc2V0SW5zZXJ0aW9uUGFzdGVib2FyZDpuaWxdOwpAQCAtOTgzLDcgKzk4Myw3IEBA
IHN0YXRpYyBOU1VSTCogdW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydChOU1N0cmluZyAqcmVsYXRp
dmVQYXJ0KQogLSAoQk9PTClfc2hvdWxkRGVsZXRlUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKIHsK
ICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4g
Y29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNob3VsZERlbGV0ZVJhbmdlKGNvcmUo
cmFuZ2UpKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2hv
dWxkRGVsZXRlUmFuZ2UoY29yZShyYW5nZSkpOwogfQogCiAtIChOU1ZpZXcgKilfaGl0Vmlld0Zv
ckV2ZW50OihOU0V2ZW50ICopZXZlbnQKQEAgLTE3NTgsMTMgKzE3NTgsMTMgQEAgc3RhdGljIGJv
b2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiAtIChCT09M
KV9jYW5FZGl0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCk7
CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKTsK
IH0KIAogLSAoQk9PTClfY2FuRWRpdFJpY2hseQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZy
YW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiB9CiAKIC0gKEJPT0wpX2NhbkFsdGVyQ3Vy
cmVudFNlbGVjdGlvbgpAQCAtMTgyNCw1MCArMTgyNCw1MCBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2
ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkKIC0gKERPTU5vZGUgKilfaW5z
ZXJ0T3JkZXJlZExpc3QKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJh
bWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmlu
c2VydE9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBr
aXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRPcmRlcmVkTGlzdCgpLmdldCgpKSA6IG5pbDsK
IH0KIAogLSAoRE9NTm9kZSAqKV9pbnNlcnRVbm9yZGVyZWRMaXN0CiB7CiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtp
dChjb3JlRnJhbWUtPmVkaXRvcigpLT5pbnNlcnRVbm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmls
OworICAgIHJldHVybiBjb3JlRnJhbWUgPyBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbnNlcnRV
bm9yZGVyZWRMaXN0KCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChCT09MKV9jYW5JbmNyZWFzZVNl
bGVjdGlvbkxpc3RMZXZlbAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9m
cmFtZV0pOwotICAgIHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+Y2Fu
SW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZWRpdG9yKCkuY2FuSW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKIH0KIAog
LSAoQk9PTClfY2FuRGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwKIHsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsKCk7CisgICAg
cmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmNhbkRlY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsKCk7CiB9CiAKIC0gKERPTU5vZGUgKilfaW5jcmVhc2VTZWxlY3Rpb25MaXN0
TGV2ZWwKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAg
ICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsKCkuZ2V0KCkpIDogbmlsOworICAgIHJldHVybiBjb3JlRnJhbWUgPyBr
aXQoY29yZUZyYW1lLT5lZGl0b3IoKS5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpLmdldCgp
KSA6IG5pbDsKIH0KIAogLSAoRE9NTm9kZSAqKV9pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbE9y
ZGVyZWQKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAg
ICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCktPmluY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsT3JkZXJlZCgpLmdldCgpKSA6IG5pbDsKKyAgICByZXR1cm4gY29yZUZy
YW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxP
cmRlcmVkKCkuZ2V0KCkpIDogbmlsOwogfQogCiAtIChET01Ob2RlICopX2luY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsVW5vcmRlcmVkCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSA/IGtpdChjb3JlRnJhbWUtPmVkaXRv
cigpLT5pbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbFVub3JkZXJlZCgpLmdldCgpKSA6IG5pbDsK
KyAgICByZXR1cm4gY29yZUZyYW1lID8ga2l0KGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWQoKS5nZXQoKSkgOiBuaWw7CiB9CiAKIC0gKHZvaWQp
X2RlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWwoKTsKKyAgICAgICAgY29yZUZy
YW1lLT5lZGl0b3IoKS5kZWNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbCgpOwogfQogCiAtICh2b2lk
KV9zZXRIaWdobGlnaHRlcjooaWQ8V2ViSFRNTEhpZ2hsaWdodGVyPiloaWdobGlnaHRlciBvZlR5
cGU6KE5TU3RyaW5nKil0eXBlCkBAIC0yMzU5LDcgKzIzNTksNyBAQCBzdGF0aWMgU3RyaW5nIGNv
bW1hbmROYW1lRm9yU2VsZWN0b3IoU0VMIHNlbGVjdG9yKQogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRWRpdG9yOjpDb21tYW5kKCk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3RvcikpOworICAgIHJldHVybiBjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3Rvcikp
OwogfQogCiAtIChFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1hbmRCeU5hbWU6KGNvbnN0IGNoYXIq
KW5hbWUKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JT
ZWxlY3RvcihTRUwgc2VsZWN0b3IpCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYg
X2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFZGl0b3I6OkNv
bW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChuYW1lKTsK
KyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKG5hbWUpOwogfQogCiAtICh2
b2lkKWV4ZWN1dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpAQCAtMjU5Myw3
ICsyNTkzLDcgQEAgV0VCQ09SRV9DT01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgICAgIE5TTWVu
dUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJ
dGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewogICAgICAgICAgICAgU3Ry
aW5nIGRpcmVjdGlvbiA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRl
OmZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IGRpcmVjdGlvbildOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0
b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKV07
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAgICB9CkBAIC0y
NjEwLDcgKzI2MTAsNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICAgICAg
aWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKICAgICAg
ICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhlIG1lbnUgaXRlbSBpbnN0
ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNlCiAgICAgICAgICAgICAv
LyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAgIFttZW51SXRlbSBzZXRU
aXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0
aW9uLCAicnRsIikKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9y
KCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQogICAgICAg
ICAgICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8g
UmlnaHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAgICAgICAgIDogVUlfU1RSSU5HX0lO
VEVSTkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0i
KV07CiAgICAgICAgIH0KQEAgLTI2NDEsMTEgKzI2NDEsMTEgQEAgV0VCQ09SRV9DT01NQU5EKHlh
bmtBbmRTZWxlY3QpCiAgICAgICAgIHJldHVybiBbc2VsZiBfaGFzU2VsZWN0aW9uXTsKICAgICAK
ICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IocGFzdGVBc1BsYWluVGV4dDopKQotICAgICAgICByZXR1cm4gZnJhbWUgJiYgKGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuREhUTUxQYXN0ZSgpIHx8IGZyYW1lLT5lZGl0b3IoKS0+Y2FuUGFzdGUoKSk7
CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigpLmNhbkRIVE1MUGFzdGUo
KSB8fCBmcmFtZS0+ZWRpdG9yKCkuY2FuUGFzdGUoKSk7CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9
PSBAc2VsZWN0b3IocGFzdGVBc1JpY2hUZXh0OikpCi0gICAgICAgIHJldHVybiBmcmFtZSAmJiAo
ZnJhbWUtPmVkaXRvcigpLT5jYW5ESFRNTFBhc3RlKCkKLSAgICAgICAgICAgIHx8IChmcmFtZS0+
ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYgZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpKSk7CisgICAgICAgIHJldHVybiBmcmFtZSAmJiAoZnJhbWUtPmVkaXRvcigp
LmNhbkRIVE1MUGFzdGUoKQorICAgICAgICAgICAgfHwgKGZyYW1lLT5lZGl0b3IoKS5jYW5QYXN0
ZSgpICYmIGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkpOwog
ICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1GaW5kUGFuZWxBY3Rpb246
KSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtMzgwMyw3ICszODAzLDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFt
ZSkKICAgICBfcHJpdmF0ZS0+X2ZvcmNlVXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSA9IE5POwogCiAg
ICAgLy8gRklYTUU6IEtpbGwgcmluZyBoYW5kbGluZyBpcyBtb3N0bHkgaW4gV2ViQ29yZSwgc28g
dGhpcyBjYWxsIHNob3VsZCBhbHNvIGJlIG1vdmVkIHRoZXJlLgotICAgIGZyYW1lLT5lZGl0b3Io
KS0+c2V0U3RhcnROZXdLaWxsUmluZ1NlcXVlbmNlKHRydWUpOworICAgIGZyYW1lLT5lZGl0b3Io
KS5zZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7CiAKICAgICBQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC00MjMxLDcgKzQyMzEsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSog
Y29yZUZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0p
OwogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIKLSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUg
PyBjb3JlRnJhbWUtPmVkaXRvcigpLT5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkg
OiBuaWxdOworICAgICAgICBhdHRyaWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIDogbmlsXTsKICAgICBOU0RhdGEg
KmRhdGEgPSBbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0
aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIFtzdHJpbmcgcmVsZWFzZV07CiAgICAg
cmV0dXJuIGRhdGE7CkBAIC00MzU5LDcgKzQzNTksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXli
b2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAg
IGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gbWFrZSBhIGNvcHkgaGVyZS4gV2Ugd2FudCBj
YWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gdG8gd29yayBkaXJlY3RseSB3aXRoIFN0eWxlUHJvcGVy
dHlTZXQgZXZlbnR1YWxseS4KLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHls
ZVRvU2VsZWN0aW9uKGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCB1bmRvQWN0
aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24o
Y29yZShzdHlsZSktPmNvcHlQcm9wZXJ0aWVzKCkuZ2V0KCksIHVuZG9BY3Rpb24pOwogICAgIH0K
IH0KIApAQCAtNDY2MSw3ICs0NjYxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5Ym9hcmRFdmVu
dD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBpZiAoW1t3ZWJW
aWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldyBzaG91bGRBcHBs
eVN0eWxlOnN0eWxlIHRvRWxlbWVudHNJbkRPTVJhbmdlOnJhbmdlXSkgewogICAgICAgICBpZiAo
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBtYWtlIGEgY29weSBoZXJlLgotICAgICAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3Bl
cnRpZXMoKS5nZXQoKSwgW3NlbGYgX3VuZG9BY3Rpb25Gcm9tQ29sb3JQYW5lbFdpdGhTZWxlY3Rv
cjpzZWxlY3Rvcl0pOworICAgICAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hcHBseVN0eWxl
KGNvcmUoc3R5bGUpLT5jb3B5UHJvcGVydGllcygpLmdldCgpLCBbc2VsZiBfdW5kb0FjdGlvbkZy
b21Db2xvclBhbmVsV2l0aFNlbGVjdG9yOnNlbGVjdG9yXSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTQ3NDgsNyArNDc0OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1
cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQ09NTUFORF9QUk9MT0dV
RQogCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKQotICAg
ICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAg
ICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKIH0K
IAogLSAodm9pZClzaG93R3Vlc3NQYW5lbDooaWQpc2VuZGVyCkBAIC00NzY4LDcgKzQ3NjgsNyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChG
cmFtZSogY29yZUZyYW1lKQogICAgIH0KICAgICAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5h
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcodHJ1ZSk7CiAgICAgW3NwZWxsaW5nUGFuZWwgb3JkZXJG
cm9udDpzZW5kZXJdOwogfQogCkBAIC00ODM2LDcgKzQ4MzYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKICAgICBXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IFJpZ2h0
VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICBzd2l0Y2ggKGNvcmVGcmFtZS0+ZWRpdG9yKCkt
PmJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQoKSkgeworICAgIHN3aXRjaCAo
Y29yZUZyYW1lLT5lZGl0b3IoKS5iYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0
KCkpIHsKICAgICAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb246CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb246CkBA
IC00ODUwLDcgKzQ4NTAsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJy
ZW50S2V5Ym9hcmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogICAgIH0KIAogICAgIGlmIChGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5l
ZGl0b3IoKS0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKTsKKyAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pOwogfQog
CiAtICh2b2lkKWNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uOihpZClzZW5kZXIKQEAgLTQ4Njcs
NyArNDg2Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXli
b2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgQVNTRVJUKHdyaXRpbmdEaXJlY3Rpb24g
IT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCk7CiAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNl
dEJhc2VXcml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0
aW9uTGVmdFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRp
bmdEaXJlY3Rpb24pOwogfQogCiBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGlu
Z3NFbmFibGVkKCkKQEAgLTQ4ODgsNyArNDg4OCw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJl
Y3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIH0KIAogICAgIGlmIChGcmFtZSogY29yZUZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+
c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0ID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0
aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihkaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyBM
ZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24p
OwogfQogCiAtICh2b2lkKW1ha2VCYXNlV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0OihpZClz
ZW5kZXIKQEAgLTUwMjMsNyArNTAyMyw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rpb25L
ZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGJvb2wgbXVsdGlwbGVGb250cyA9IGZhbHNlOwogICAg
IE5TRm9udCAqZm9udCA9IG5pbDsKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX2ZyYW1lXSkpIHsKLSAgICAgICAgaWYgKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCisgICAg
ICAgIGlmIChjb25zdCBTaW1wbGVGb250RGF0YSogZmQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmZv
bnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCiAgICAgICAgICAgICBmb250ID0gZmQtPmdl
dE5TRm9udCgpOwogICAgIH0KIApAQCAtNTU2Myw3ICs1NTYzLDcgQEAgc3RhdGljIEJPT0wgd3Jp
dGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUod2ViRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gTlNN
YWtlUmFuZ2UoMCwgMCk7Ci0gICAgTlNSYW5nZSByZXN1bHQgPSBbd2ViRnJhbWUgX2NvbnZlcnRU
b05TUmFuZ2U6Y29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpLmdldCgpXTsK
KyAgICBOU1JhbmdlIHJlc3VsdCA9IFt3ZWJGcmFtZSBfY29udmVydFRvTlNSYW5nZTpjb3JlRnJh
bWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQoKV07CiAKICAgICBMT0coVGV4dElu
cHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5s
ZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjA3LDEyICs1NjA3LDEyIEBAIHN0YXRp
YyBCT09MIHdyaXRpbmdEaXJlY3Rpb25LZXlCaW5kaW5nc0VuYWJsZWQoKQogLSAoQk9PTCloYXNN
YXJrZWRUZXh0CiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
Ci0gICAgQk9PTCByZXN1bHQgPSBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS0+aGFz
Q29tcG9zaXRpb24oKTsKKyAgICBCT09MIHJlc3VsdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAg
IC8vIEEgc2F2ZWQgY29tbWFuZCBjYW4gY29uZmlybSBhIGNvbXBvc2l0aW9uLCBidXQgaXQgY2Fu
bm90IHN0YXJ0IGEgbmV3IG9uZS4KICAgICAgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNz
Q29tbWFuZHNdOwotICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYXNDb21w
b3NpdGlvbigpOworICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBv
c2l0aW9uKCk7CiAgICAgfQogCiAgICAgTE9HKFRleHRJbnB1dCwgImhhc01hcmtlZFRleHQgLT4g
JXUiLCByZXN1bHQpOwpAQCAtNTYzNCw3ICs1NjM0LDcgQEAgc3RhdGljIEJPT0wgd3JpdGluZ0Rp
cmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgfQogICAgIAogICAgIGlmIChGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0
b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCku
Y29uZmlybUNvbXBvc2l0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiByZXN1bHQpCkBAIC01NzAyLDcgKzU3MDIsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJs
aW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQog
ICAgIGlmIChyZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCiAgICAgICAg
IFtbc2VsZiBfZnJhbWVdIF9zZWxlY3ROU1JhbmdlOnJlcGxhY2VtZW50UmFuZ2VdOwogCi0gICAg
Y29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgbmV3
U2VsUmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UobmV3U2VsUmFuZ2UpKTsKKyAgICBjb3JlRnJh
bWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJhbmdl
LmxvY2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSk7CiB9CiAKIC0gKHZvaWQpZG9Db21t
YW5kQnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCkBAIC01NzIwLDcgKzU3MjAsNyBAQCBzdGF0aWMg
dm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZQogCiAgICAgLy8gQXMgaW4gaW5zZXJ0VGV4dDosIHdlIGFzc3VtZSB0
aGF0IHRoZSBjYWxsIGNvbWVzIGZyb20gYW4gaW5wdXQgbWV0aG9kIGlmIHRoZXJlIGlzIG1hcmtl
ZCB0ZXh0LgogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+
ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9
IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAg
ICBpZiAoZXZlbnQgJiYgc2hvdWxkU2F2ZUNvbW1hbmQgJiYgIWlzRnJvbUlucHV0TWV0aG9kKQog
ICAgICAgICBldmVudC0+a2V5cHJlc3NDb21tYW5kcygpLmFwcGVuZChLZXlwcmVzc0NvbW1hbmQo
TlNTdHJpbmdGcm9tU2VsZWN0b3Ioc2VsZWN0b3IpKSk7CkBAIC01Nzc0LDcgKzU3NzQsNyBAQCBz
dGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIFJlZlB0cjxGcmFtZT4gY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKICAgICBOU1N0cmluZyAqdGV4dDsKICAgICBOU1JhbmdlIHJlcGxh
Y2VtZW50UmFuZ2UgPSB7IE5TTm90Rm91bmQsIDAgfTsKLSAgICBib29sIGlzRnJvbUlucHV0TWV0
aG9kID0gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7
CisgICAgYm9vbCBpc0Zyb21JbnB1dE1ldGhvZCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmVk
aXRvcigpLmhhc0NvbXBvc2l0aW9uKCk7CiAKICAgICBWZWN0b3I8RGljdGF0aW9uQWx0ZXJuYXRp
dmU+IGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zOwogICAgIGlmIChpc0F0dHJpYnV0ZWRT
dHJpbmcpIHsKQEAgLTU4MTAsNyArNTgxMCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxp
bmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1l
LT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghY29yZUZyYW1lIHx8ICFjb3JlRnJhbWUt
PmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJlcGxhY2Vt
ZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKQEAgLTU4MTksMTcgKzU4MTksMTcgQEAg
c3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcs
IFZlY3RvcjxDb21wb3NpdGlvblVuZGUKICAgICBib29sIGV2ZW50SGFuZGxlZCA9IGZhbHNlOwog
ICAgIFN0cmluZyBldmVudFRleHQgPSB0ZXh0OwogICAgIGV2ZW50VGV4dC5yZXBsYWNlKE5TQmFj
a1RhYkNoYXJhY3RlciwgTlNUYWJDaGFyYWN0ZXIpOyAvLyBzYW1lIHRoaW5nIGlzIGRvbmUgaW4g
S2V5RXZlbnRNYWMubW0gaW4gV2ViQ29yZQotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+
aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5oYXNDb21w
b3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6IG1pZ2h0IGJlIGhhbmRsZWQg
Ynkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2UgZG9uJ3QgaGFuZGxlIGl0Lgog
ICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhhdCByZXN1bHRzIGluIHNjcm9s
bGluZyBkb3duIHRoZSBwYWdlLgogCiAgICAgICAgIGlmICghZGljdGF0aW9uQWx0ZXJuYXRpdmVM
b2NhdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgZXZlbnRIYW5kbGVkID0gY29yZUZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVG
cmFtZS0+ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgZGljdGF0aW9uQWx0
ZXJuYXRpdmVMb2NhdGlvbnMsIGV2ZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXZl
bnRIYW5kbGVkID0gY29yZUZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChldmVudFRleHQsIGV2
ZW50KTsKKyAgICAgICAgICAgIGV2ZW50SGFuZGxlZCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCkuaW5z
ZXJ0VGV4dChldmVudFRleHQsIGV2ZW50KTsKICAgICB9IGVsc2UgewogICAgICAgICBldmVudEhh
bmRsZWQgPSB0cnVlOwotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9z
aXRpb24oZXZlbnRUZXh0KTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29t
cG9zaXRpb24oZXZlbnRUZXh0KTsKICAgICB9CiAgICAgCiAgICAgaWYgKHBhcmFtZXRlcnMpCkBA
IC01ODg0LDE1ICs1ODg0LDE1IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAKICAgICBbc2Vs
ZiBfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZV07CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9y
KCktPmhhc0NvbXBvc2l0aW9uKCkgfHwgY29yZUZyYW1lLT5lZGl0b3IoKS0+aWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuaGFz
Q29tcG9zaXRpb24oKSB8fCBjb3JlRnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0Owog
ICAgIHVuc2lnbmVkIGVuZDsKLSAgICBpZiAoY29yZUZyYW1lLT5lZGl0b3IoKS0+Z2V0Q29tcG9z
aXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCisgICAgaWYgKGNvcmVGcmFtZS0+ZWRpdG9yKCku
Z2V0Q29tcG9zaXRpb25TZWxlY3Rpb24oc3RhcnQsIGVuZCkpCiAgICAgICAgIFtbTlNJbnB1dE1h
bmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4dFNlbGVjdGlvbkNoYW5nZWQ6TlNN
YWtlUmFuZ2Uoc3RhcnQsIGVuZCAtIHN0YXJ0KSBjbGllbnQ6c2VsZl07CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmNhbmNlbENvbXBvc2l0aW9uKCk7CisgICAgICAg
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuY2FuY2VsQ29tcG9zaXRpb24oKTsKICAgICAgICAgW1tOU0lu
cHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJrZWRUZXh0QWJhbmRvbmVkOnNlbGZd
OwogICAgIH0KIH0KQEAgLTYwNjAsNyArNjA2MCw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRl
cmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmNvdW50TWF0Y2hlc0ZvclRleHQoc3RyaW5nLCBjb3JlKHJhbmdl
KSwgY29yZU9wdGlvbnMob3B0aW9ucyksIGxpbWl0LCBtYXJrTWF0Y2hlcywgMCk7CisgICAgcmV0
dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dChzdHJpbmcsIGNvcmUo
cmFuZ2UpLCBjb3JlT3B0aW9ucyhvcHRpb25zKSwgbGltaXQsIG1hcmtNYXRjaGVzLCAwKTsKIH0K
IAogLSAodm9pZClzZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkOihCT09MKW5ld1Zh
bHVlCkBAIC02MDY4LDEzICs2MDY4LDEzIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVz
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRNYXJrZWRU
ZXh0TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKG5ld1ZhbHVlKTsKKyAgICBjb3JlRnJhbWUtPmVkaXRv
cigpLnNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQobmV3VmFsdWUpOwogfQogCiAt
IChCT09MKW1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQKIHsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKTsKKyAg
ICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+ZWRpdG9yKCkubWFya2VkVGV4dE1hdGNo
ZXNBcmVIaWdobGlnaHRlZCgpOwogfQogCiAtICh2b2lkKXVubWFya0FsbFRleHRNYXRjaGVzCkBA
IC02MTEwLDcgKzYxMTAsNyBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogICAgIGlmICghW3N0
cmluZyBsZW5ndGhdKQogICAgICAgICByZXR1cm4gTk87CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUt
PmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgY29yZU9wdGlvbnMob3B0aW9ucykpOworICAg
IHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5lZGl0b3IoKS5maW5kU3RyaW5nKHN0cmlu
ZywgY29yZU9wdGlvbnMob3B0aW9ucykpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggMWY4MWUzYjdhYjU4MTEyMTcwNjhjMzhhOGNlMTlhZTQ1NjA0YjU3
MS4uODA1Y2RiOTAwZTFmY2M5OTY4ZjQ5MzE4ODI0NGUyODcxNmQ4NzUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjQyNyw3ICsyNDI3LDcgQEAgc3RhdGljIGlubGlu
ZSBJTVAgZ2V0TWV0aG9kKGlkIG8sIFNFTCBzKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2Vs
ZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOwor
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0K
IAogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheTooZG91YmxlKXRpbWVE
ZWxheQpAQCAtNTM4Miw3ICs1MzgyLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3Iq
IGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBQ
YWdlKiBwYWdlID0gY29yZShzZWxmKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIGtpdChwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPnJhbmdlRm9y
UG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSkuZ2V0
KCkpOworICAgIHJldHVybiBraXQocGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLnJhbmdlRm9y
UG9pbnQoSW50UG9pbnQoW3NlbGYgY29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdKSkuZ2V0
KCkpOwogfQogCiAtIChCT09MKV9zaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihET01SYW5n
ZSAqKWN1cnJlbnRSYW5nZSB0b0RPTVJhbmdlOihET01SYW5nZSAqKXByb3Bvc2VkUmFuZ2UgYWZm
aW5pdHk6KE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkgc3RpbGxTZWxlY3Rp
bmc6KEJPT0wpZmxhZwpAQCAtNTQ0Myw3ICs1NDQzLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERl
c2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVl
IGoKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsKICAg
ICAgICAgaWYgKG1haW5GcmFtZSkgewogICAgICAgICAgICAgaWYgKGZsYWcpIHsKLSAgICAgICAg
ICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnQoKTsKKyAgICAgICAgICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLmFwcGx5RWRpdGluZ1N0
eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBXZWJWaWV3IGlz
IG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBpdCB0byBzb21l
dGhpbmcuCiAgICAgICAgICAgICAgICAgaWYgKCFbc2VsZiBzZWxlY3RlZERPTVJhbmdlXSkKICAg
ICAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uRnJv
bU5vbmUoKTsKQEAgLTU3MzAsNyArNTczMCw3IEBAIHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlw
dG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqCiAg
ICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdOwogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAoY29yZUZyYW1lKQot
ICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxl
dGUoWyhXZWJIVE1MVmlldyAqKVtbd2ViRnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIF9j
YW5TbWFydENvcHlPckRlbGV0ZV0pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmRlbGV0
ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShbKFdlYkhUTUxWaWV3ICopW1t3ZWJGcmFtZSBmcmFt
ZVZpZXddIGRvY3VtZW50Vmlld10gX2NhblNtYXJ0Q29weU9yRGVsZXRlXSk7CiB9CiAgICAgCiAt
ICh2b2lkKWFwcGx5U3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQpAQCAtNTc0
MSw3ICs1NzQxLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21K
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZSh3ZWJGcmFtZSk7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRv
IG1ha2UgYSBjb3B5IGhlcmUuCiAgICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1l
LT5lZGl0b3IoKS0+YXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+Y29weVByb3BlcnRpZXMoKS5nZXQo
KSk7CisgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCkuYXBwbHlTdHlsZShjb3JlKHN0eWxlKS0+
Y29weVByb3BlcnRpZXMoKS5nZXQoKSk7CiB9CiAKIEBlbmQKQEAgLTU3ODgsNyArNTc4OCw3IEBA
IEZPUl9FQUNIX1JFU1BPTkRFUl9TRUxFQ1RPUihGT1JXQVJEKQogewogICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXSk7CiAgICAgaWYgKGNvcmVG
cmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmZvbnRBdHRyaWJ1dGVz
Rm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCku
Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOwogICAgIAogICAgIHJldHVybiBuaWw7
CiB9CkBAIC01ODMyLDcgKzU4MzIsNyBAQCBGT1JfRUFDSF9SRVNQT05ERVJfU0VMRUNUT1IoRk9S
V0FSRCkKICAgICBOb2RlKiBjb3JlU3RhcnROb2RlPSBjb3JlKHN0YXJ0Tm9kZSk7CiAgICAgaWYg
KGNvcmVTdGFydE5vZGUtPmRvY3VtZW50KCkgIT0gY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNpbXBsaWZ5TWFy
a3VwKGNvcmVTdGFydE5vZGUsIGNvcmUoZW5kTm9kZSkpOyAgICAKKyAgICByZXR1cm4gY29yZUZy
YW1lLT5lZGl0b3IoKS5zaW1wbGlmeU1hcmt1cChjb3JlU3RhcnROb2RlLCBjb3JlKGVuZE5vZGUp
KTsgICAgCiB9CiAKIEBlbmQKQEAgLTY1NjcsNyArNjU2Nyw3IEBAIHN0YXRpYyB2b2lkIGdsaWJD
b250ZXh0SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFj
dGl2aXR5CiAgICAgV2ViRnJhbWUgKndlYkZyYW1lID0gW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJh
bWVdOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHdlYkZyYW1lKTsKICAgICBpZiAoY29y
ZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRl
eHRVSVJlc3VsdCh0ZXh0KTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5oYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdCh0ZXh0KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCmluZGV4IGMzODUyNGY5YzE1NGFiZTIwYzJkZWFmYTdiNzFiYmIyYjdjZDNmNGQuLjg4ODRl
NDk1Mzk0ODA0OThjMjFiODdmMTM1N2RjZTNhMzA2NzY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIqIGFkYQogCiB2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoUVdlYlBh
Z2VBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKG5hbWUpLmV4ZWN1dGUodmFsdWUpOworICAg
IGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5leGVjdXRlKHZhbHVlKTsKIH0KIAogYm9vbCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0
ZXIsIGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGFkYXB0ZXItPnBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQo
bmFtZSkuaXNFbmFibGVkKCk7CisgICAgcmV0dXJuIGFkYXB0ZXItPnBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZChuYW1lKS5pc0Vu
YWJsZWQoKTsKIH0KIAogUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZWxl
Y3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikKQEAgLTM3NCw3ICszNzQsNyBAQCBR
VmFyaWFudExpc3QgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKFFXZWJQYWdlQWRhcHRlcgogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBR
VmFyaWFudExpc3QoKTsKIAotICAgIFFSZWN0IHJlc3VsdFJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkt
PmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICBRUmVjdCByZXN1bHRSZWN0ID0g
ZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKICAgICByZWN0
IDw8IHJlc3VsdFJlY3QueCgpIDw8IHJlc3VsdFJlY3QueSgpIDw8IHJlc3VsdFJlY3Qud2lkdGgo
KSA8PCByZXN1bHRSZWN0LmhlaWdodCgpOwogICAgIHJldHVybiByZWN0OwogfQpAQCAtNzUxLDE3
ICs3NTEsMTcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29uZmlybUNvbXBvc2l0
aW9uKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlciwgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKLSAg
ICBpZiAoIWVkaXRvciB8fCAoIWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSAmJiAhdGV4dCkpCisg
ICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuaGFz
Q29tcG9zaXRpb24oKSAmJiAhdGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGVkaXRv
ci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkg
ewogICAgICAgICBpZiAodGV4dCkKLSAgICAgICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0
aW9uKFN0cmluZzo6ZnJvbVVURjgodGV4dCkpOworICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1D
b21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHRleHQpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICAgICAgICAgIGVkaXRvci5j
b25maXJtQ29tcG9zaXRpb24oKTsKICAgICB9IGVsc2UKLSAgICAgICAgZWRpdG9yLT5pbnNlcnRU
ZXh0KFN0cmluZzo6ZnJvbVVURjgodGV4dCksIDApOworICAgICAgICBlZGl0b3IuaW5zZXJ0VGV4
dChTdHJpbmc6OmZyb21VVEY4KHRleHQpLCAwKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwCmluZGV4IGQ4MmQwZTVmZDdkZTgxOTFmZjI5MjEzZjI3ZDQwOGQ0ZmEyMDFhZDEuLjgyNWFj
YTM5NTVlOWIzNWFhN2NmMGJmN2JmYjI5OTk0MmYxYjkwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCkBAIC0yMDYsMTIgKzIw
NiwxMiBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFtZS0+
c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUg
PSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0
cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxl
Y3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFt
ZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAgUGFz
dGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVj
dGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21h
cnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0KIAog
ICAgIG1fcGFnZS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpOwotICAgIGlmICghZnJhbWUt
PmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSgpKQorICAgIGlmICgh
ZnJhbWUtPmVkaXRvcigpLmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAg
ICAgIGVtaXQgbV9wYWdlLT5taWNyb0ZvY3VzQ2hhbmdlZCgpOwogfQogCkBAIC0yNDgsNyArMjQ4
LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwog
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFt
ZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1
bmRvcyAqLykpCisgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0
b3IoKS5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8p
KQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT5yZWdpc3RlclVuZG9TdGVwKHN0ZXApOwog
I2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAg
ICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBt
b2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1
dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCiAgICAgICAgICAgICAvLyBzbyB3ZSBs
ZWF2ZSBpdCB1cG9uIFdlYkNvcmUgdG8gZWl0aGVyIGhhbmRsZSB0aGVtIGltbWVkaWF0ZWx5IChl
LmcuIFRhYiB0aGF0IGNoYW5nZXMgZm9jdXMpIG9yIGxldCBhIGtleXByZXNzIGV2ZW50IGJlIGdl
bmVyYXRlZAogICAgICAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFy
YWN0ZXIsIG9yIEVudGVyKS4KLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoY21kKS5pc1RleHRJbnNlcnRpb24oKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGNtZCkuaXNUZXh0SW5zZXJ0aW9uKCkKICAgICAgICAgICAgICAgICAmJiBrZXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoZXZl
bnQpOwogICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCiAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgewotICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZl
bnQpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGtldmVudC0+
dGV4dCgpLCBldmVudCk7CiAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTI2LDcgKzUy
Niw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRF
dmVudCogZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1h
bmROYW1lID0gZWRpdG9yQ29tbWFuZEZvcktleURvd25FdmVudChldmVudCk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOworICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CiAg
ICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4IGZhNGU0YzBmM2VhN2FjZDc4Njc5
YTE4NjE1MDNhMTk5NzQ4ZGVhMDMuLjQ3NjBkN2YwOTQ0ZTI5MDUzMmI4NDRjOWJhYmMzZjBjOWJj
NDQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBh
Z2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQ
YWdlQWRhcHRlci5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBAIFFTdHJpbmcgUVdlYlBhZ2VBZGFw
dGVyOjpzZWxlY3RlZFRleHQoKSBjb25zdAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoZnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6
Tm9TZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5z
ZWxlY3RlZFRleHQoKTsKIH0KIAogUVN0cmluZyBRV2ViUGFnZUFkYXB0ZXI6OnNlbGVjdGVkSHRt
bCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnNlbGVjdGVkUmFuZ2UoKS0+dG9IVE1MKCk7CisgICAg
cmV0dXJuIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRp
dG9yKCkuc2VsZWN0ZWRSYW5nZSgpLT50b0hUTUwoKTsKIH0KIAogYm9vbCBRV2ViUGFnZUFkYXB0
ZXI6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIFFX
ZWJQYWdlQWRhcHRlcjo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiAKICAgICBG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWVBZGFwdGVyKCktPmZyYW1lOwogICAgIGlmIChlZGl0YWJs
ZSkgewotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxl
bWVudCgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuYXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJl
IGlzIG5vIHNlbGVjdGVkRE9NUmFuZ2UKICAgICAgICAgLy8gZnJhbWUtPnNldFNlbGVjdGlvbkZy
b21Ob25lKCk7CiAgICAgfQpAQCAtNTY3LDkgKzU2Nyw5IEBAIGJvb2wgUVdlYlBhZ2VBZGFwdGVy
OjpwZXJmb3JtRHJhZyhjb25zdCBRTWltZURhdGEgKmRhdGEsIGNvbnN0IFFQb2ludCAmcG9zLCBR
dDo6CiB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RF
dmVudCAqZXYpCiB7CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6OkVkaXRvciAqZWRp
dG9yID0gZnJhbWUtPmVkaXRvcigpOworICAgIFdlYkNvcmU6OkVkaXRvciAmZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOwogCi0gICAgaWYgKCFlZGl0b3ItPmNhbkVkaXQoKSkgeworICAgIGlmICgh
ZWRpdG9yLmNhbkVkaXQoKSkgewogICAgICAgICBldi0+aWdub3JlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC02MTAsMTIgKzYxMCwxMiBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aW5w
dXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCAqZXYpCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxp
bmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0YXJ0LCAo
YS5zdGFydCArIGEubGVuZ3RoKSkpOworICAgICAgICAgICAgICAgIGVkaXRvci5zZXRDb21wb3Np
dGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0
YXJ0ICsgYS5sZW5ndGgpKSwgcU1heChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRoZSBt
aWRkbGUgb2YgYSBjb21wb3NpdGlvbiwgYW4gZW1wdHkgcHJlLWVkaXQgc3RyaW5nIGFuZCBhIHNl
bGVjdGlvbiBvZiB6ZXJvCiAgICAgICAgICAgICAgICAgLy8gY2FuY2VscyB0aGUgY3VycmVudCBj
b21wb3NpdGlvbgotICAgICAgICAgICAgICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkg
JiYgIShhLnN0YXJ0ICsgYS5sZW5ndGgpKQotICAgICAgICAgICAgICAgICAgICBlZGl0b3ItPnNl
dENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5kZXJsaW5lcywgMCwgMCk7CisgICAgICAgICAgICAg
ICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbigpICYmICEoYS5zdGFydCArIGEubGVuZ3RoKSkK
KyAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldENvbXBvc2l0aW9uKFFTdHJpbmcoKSwgdW5k
ZXJsaW5lcywgMCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtNjMwLDE2ICs2MzAsMTYgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0
aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQgKmV2KQogICAgICAgICBpZiAoaXNIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudChub2RlKSkKICAgICAgICAgICAgIHRvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQobm9kZSktPnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCArIGV2LT5yZXBs
YWNlbWVudExlbmd0aCgpKTsKICAgICAgICAgLy8gQ29tbWl0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhl
ciBjb21taXRTdHJpbmcgaXMgZW1wdHksIHRvIGdldCByaWQgb2Ygc2VsZWN0aW9uLgotICAgICAg
ICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOworICAgICAg
ICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9uKGV2LT5jb21taXRTdHJpbmcoKSk7CiAgICAgfSBl
bHNlIGlmICghZXYtPmNvbW1pdFN0cmluZygpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZWRp
dG9yLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICAgICAgZWRpdG9yLT5jb25maXJtQ29tcG9z
aXRpb24oZXYtPmNvbW1pdFN0cmluZygpKTsKKyAgICAgICAgaWYgKGVkaXRvci5oYXNDb21wb3Np
dGlvbigpKQorICAgICAgICAgICAgZWRpdG9yLmNvbmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0
U3RyaW5nKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBlZGl0b3ItPmluc2VydFRleHQo
ZXYtPmNvbW1pdFN0cmluZygpLCAwKTsKKyAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KGV2
LT5jb21taXRTdHJpbmcoKSwgMCk7CiAgICAgfSBlbHNlIGlmICghaGFzU2VsZWN0aW9uICYmICFl
di0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkKLSAgICAgICAgZWRpdG9yLT5zZXRDb21wb3Np
dGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLCAwLCAwKTsKLSAgICBlbHNlIGlm
IChldi0+cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSAmJiBlZGl0b3ItPmhhc0NvbXBvc2l0aW9u
KCkpCi0gICAgICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygpKTsKKyAgICAg
ICAgZWRpdG9yLnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMs
IDAsIDApOworICAgIGVsc2UgaWYgKGV2LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpICYmIGVk
aXRvci5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBlZGl0b3IuY29uZmlybUNvbXBvc2l0aW9u
KFN0cmluZygpKTsKIAogICAgIGV2LT5hY2NlcHQoKTsKIH0KQEAgLTY1MCw3ICs2NTAsNyBAQCBR
VmFyaWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9k
UXVlcnkgcHJvcGVydHkpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFFW
YXJpYW50KCk7CiAKLSAgICBXZWJDb3JlOjpFZGl0b3IqIGVkaXRvciA9IGZyYW1lLT5lZGl0b3Io
KTsKKyAgICBXZWJDb3JlOjpFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKIAogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAwOwogICAgIFJlbmRlclRleHRDb250cm9sKiByZW5k
ZXJUZXh0Q29udHJvbCA9IDA7CkBAIC02NzgsMTQgKzY3OCwxNCBAQCBRVmFyaWFudCBRV2ViUGFn
ZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkp
IGNvbnN0CiAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9udCgpKTsKICAgICB9CiAgICAgY2Fz
ZSBRdDo6SW1DdXJzb3JQb3NpdGlvbjogewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3Np
dGlvbigpKQorICAgICAgICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSk7CiAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCkt
PmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICB9CiAgICAgY2FzZSBRdDo6
SW1TdXJyb3VuZGluZ1RleHQ6IHsKICAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sICYmIHJl
bmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKICAgICAgICAgICAg
IFFTdHJpbmcgdGV4dCA9IHJlbmRlclRleHRDb250cm9sLT50ZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KCktPnZhbHVlKCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRpdG9yLT5j
b21wb3NpdGlvblJhbmdlKCk7CisgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWRp
dG9yLmNvbXBvc2l0aW9uUmFuZ2UoKTsKICAgICAgICAgICAgIGlmIChyYW5nZSkKICAgICAgICAg
ICAgICAgICB0ZXh0LnJlbW92ZShyYW5nZS0+c3RhcnRQb3NpdGlvbigpLm9mZnNldEluQ29udGFp
bmVyTm9kZSgpLCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKSk7CiAgICAg
ICAgICAgICByZXR1cm4gUVZhcmlhbnQodGV4dCk7CkBAIC02OTMsNyArNjkzLDcgQEAgUVZhcmlh
bnQgUVdlYlBhZ2VBZGFwdGVyOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5
IHByb3BlcnR5KSBjb25zdAogICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKICAgICB9CiAgICAg
Y2FzZSBRdDo6SW1DdXJyZW50U2VsZWN0aW9uOiB7Ci0gICAgICAgIGlmICghZWRpdG9yLT5oYXND
b21wb3NpdGlvbigpICYmIHJlbmRlclRleHRDb250cm9sICYmIHJlbmRlclRleHRDb250cm9sLT50
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKCFlZGl0b3IuaGFzQ29tcG9z
aXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCAmJiByZW5kZXJUZXh0Q29udHJvbC0+dGV4dEZv
cm1Db250cm9sRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBpbnQgc3RhcnQgPSBmcmFtZS0+c2Vs
ZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgICAgICAgICBp
bnQgZW5kID0gZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUo
KTsKICAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkKQEAgLTcwMyw3ICs3MDMsNyBAQCBRVmFy
aWFudCBRV2ViUGFnZUFkYXB0ZXI6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVl
cnkgcHJvcGVydHkpIGNvbnN0CiAKICAgICB9CiAgICAgY2FzZSBRdDo6SW1BbmNob3JQb3NpdGlv
bjogewotICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKQorICAgICAgICBpZiAo
ZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJh
bWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICAg
ICAgcmV0dXJuIFFWYXJpYW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+YmFzZSgpLm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpKTsKICAgICB9CkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBRV2ViUGFnZUFk
YXB0ZXI6OmRpZENsb3NlSW5zcGVjdG9yKCkKIHZvaWQgUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVB
Y3Rpb25JbnRlcm5hbChRV2ViUGFnZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBjb25zdCBj
aGFyKiBjb21tYW5kTmFtZSwgYm9vbCogZW5hYmxlZCwgYm9vbCogY2hlY2tlZCkKIHsKICAgICBX
ZWJDb3JlOjpGcmFtZUxvYWRlciogbG9hZGVyID0gbWFpbkZyYW1lQWRhcHRlcigpLT5mcmFtZS0+
bG9hZGVyKCk7Ci0gICAgV2ViQ29yZTo6RWRpdG9yKiBlZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOworICAgIFdlYkNvcmU6OkVk
aXRvciYgZWRpdG9yID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKTsKIAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBRV2ViUGFn
ZUFkYXB0ZXI6OkJhY2s6CkBAIC05NzMsMTQgKzk3MywxNCBAQCB2b2lkIFFXZWJQYWdlQWRhcHRl
cjo6dXBkYXRlQWN0aW9uSW50ZXJuYWwoUVdlYlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlv
biwgYwogICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRUZXh0RGlyZWN0aW9uRGVmYXVsdDoK
ICAgICBjYXNlIFFXZWJQYWdlQWRhcHRlcjo6U2V0VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0Ogog
ICAgIGNhc2UgUVdlYlBhZ2VBZGFwdGVyOjpTZXRUZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6Ci0g
ICAgICAgICplbmFibGVkID0gZWRpdG9yLT5jYW5FZGl0KCk7CisgICAgICAgICplbmFibGVkID0g
ZWRpdG9yLmNhbkVkaXQoKTsKICAgICAgICAgKmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDogewogCiAgICAgICAgIC8vIGlmIGl0J3MgYW4gZWRpdG9yIGNvbW1h
bmQsIGxldCBpdHMgbG9naWMgZGV0ZXJtaW5lIHN0YXRlCiAgICAgICAgIGlmIChjb21tYW5kTmFt
ZSkgewotICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBlZGl0b3ItPmNvbW1h
bmQoY29tbWFuZE5hbWUpOworICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBl
ZGl0b3IuY29tbWFuZChjb21tYW5kTmFtZSk7CiAgICAgICAgICAgICAqZW5hYmxlZCA9IGNvbW1h
bmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBpZiAoKmVuYWJsZWQpCiAgICAgICAgICAgICAg
ICAgKmNoZWNrZWQgPSBjb21tYW5kLnN0YXRlKCkgIT0gRmFsc2VUcmlTdGF0ZTsKQEAgLTk5Nyw3
ICs5OTcsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dHJpZ2dlckFjdGlvbihRV2ViUGFnZUFk
YXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0VAogICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47Ci0gICAgRWRpdG9yKiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9y
KCk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CiAKICAgICAvLyBDb252
ZW5pZW5jZQogICAgIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSBoaXRUZXN0OwpAQCAtMTAyOCwx
MCArMTAyOCwxMCBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6dHJpZ2dlckFjdGlvbihRV2ViUGFn
ZUFkYXB0ZXI6Ok1lbnVBY3Rpb24gYWN0aW9uLCBRV2ViSGl0VAogI2lmIGRlZmluZWQoUV9XU19Y
MTEpCiAgICAgICAgIGJvb2wgb2xkU2VsZWN0aW9uTW9kZSA9IFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKHRydWUpOwotICAgICAgICBlZGl0b3It
PmNvcHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwgaGl0VGVzdFJlc3VsdC0+bGlua1RleHQp
OworICAgICAgICBlZGl0b3IuY29weVVSTChoaXRUZXN0UmVzdWx0LT5saW5rVXJsLCBoaXRUZXN0
UmVzdWx0LT5saW5rVGV4dCk7CiAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJk
KCktPnNldFNlbGVjdGlvbk1vZGUob2xkU2VsZWN0aW9uTW9kZSk7CiAjZW5kaWYKLSAgICAgICAg
ZWRpdG9yLT5jb3B5VVJMKGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsIGhpdFRlc3RSZXN1bHQtPmxp
bmtUZXh0KTsKKyAgICAgICAgZWRpdG9yLmNvcHlVUkwoaGl0VGVzdFJlc3VsdC0+bGlua1VybCwg
aGl0VGVzdFJlc3VsdC0+bGlua1RleHQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKQEAgLTEwNTgsMTMgKzEwNTgsMTMgQEAgdm9pZCBRV2Vi
UGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFj
dGlvbiwgUVdlYkhpdFQKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNldFRleHREaXJlY3Rp
b25EZWZhdWx0OgotICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVy
YWxXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZWRpdG9yLnNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
ZXRUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6Ci0gICAgICAgIGVkaXRvci0+c2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgZWRpdG9y
LnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0VGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgotICAg
ICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbik7CisgICAgICAgIGVkaXRvci5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRv
TGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6IHsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIHZv
aWQgUVdlYlBhZ2VBZGFwdGVyOjp0cmlnZ2VyQWN0aW9uKFFXZWJQYWdlQWRhcHRlcjo6TWVudUFj
dGlvbiBhY3Rpb24sIFFXZWJIaXRUCiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBpZiAo
Y29tbWFuZE5hbWUpCi0gICAgICAgICAgICBlZGl0b3ItPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4
ZWN1dGUoKTsKKyAgICAgICAgICAgIGVkaXRvci5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTEzMTQsOCArMTMxNCw4IEBAIHZvaWQg
UVdlYlBhZ2VBZGFwdGVyOjpmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50ICopCiBib29sIFFXZWJQ
YWdlQWRhcHRlcjo6aGFuZGxlU2hvcnRjdXRPdmVycmlkZUV2ZW50KFFLZXlFdmVudCogZXZlbnQp
CiB7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIFdlYkNvcmU6OkVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAgV2ViQ29yZTo6
RWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuY2FuRWRp
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGV2ZW50LT5tb2RpZmllcnMoKSA9
PSBRdDo6Tm9Nb2RpZmllcgogICAgICAgICB8fCBldmVudC0+bW9kaWZpZXJzKCkgPT0gUXQ6OlNo
aWZ0TW9kaWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA3ZTZmMDBlYmE3YmNhNGVjNzM0NTEx
YzI0ZjVlMjI0ZTY1M2JhMjZjLi5mNzRiZmZiOWI5Y2RhMjUwOWFjOTE3ODIzMGMxZjIxZjFmZTZk
N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIFdlYkNv
bnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQo
KTsKKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4
dCgpOwogICAgIHNlYXJjaFN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBTdHJpbmcgZW5j
b2RlZCA9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc2VhcmNoU3RyaW5nKTsKICAgICBl
bmNvZGVkLnJlcGxhY2UoIiUyMCIsICIrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNzBj
YjUyYTk3MzIzMTI5ZTgxYmQ3ZDdkMDE2NmNlNmYzOGMwYzA0Yi4uMTZjYTQ1ZTc1NTQ2OGE1NzY5
ZjVjYzY1MTcwNzkxNTAwZDg4MTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtMTAwNSw3
ICsxMDA1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6aGFzU3BlbGxp
bmdNYXJrZXIoCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7CiAgICAgaWYgKCFj
b3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgKnJlc3VsdCA9IGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgZnJvbSwgbGVuZ3RoKTsKKyAgICAqcmVzdWx0ID0gY29yZUZyYW1lLT5lZGl0b3Io
KS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcsIGZy
b20sIGxlbmd0aCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEwMjEsMTYgKzEwMjEsMTYg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6Y2xlYXJPcGVuZXIoKQogSFJF
U1VMVCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihCU1RSIGRpcmVjdGlvbikKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29y
ZUZyYW1lLT5lZGl0b3IoKSkKKyAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAogICAgIFN0cmluZyBkaXJlY3Rpb25TdHJpbmcoZGlyZWN0aW9uLCBTeXNTdHJpbmdM
ZW4oZGlyZWN0aW9uKSk7CiAgICAgaWYgKGRpcmVjdGlvblN0cmluZyA9PSAiYXV0byIpCi0gICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKE5hdHVyYWxX
cml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGly
ZWN0aW9uU3RyaW5nID09ICJsdHIiKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKExlZnRUb1JpZ2h0
V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgZWxzZSBpZiAoZGlyZWN0aW9uU3RyaW5nID09ICJydGwi
KQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihS
aWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigp
LnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTEwNTIsNyArMTA1Miw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNlbGVjdGVkU3RyaW5nKAogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgU3RyaW5nIHRleHQgPSBjb3JlRnJhbWUt
PmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29yZUZyYW1lLT5lZGl0b3IoKS0+c2Vs
ZWN0ZWRUZXh0KCkpOworICAgIFN0cmluZyB0ZXh0ID0gY29yZUZyYW1lLT5kaXNwbGF5U3RyaW5n
TW9kaWZpZWRCeUVuY29kaW5nKGNvcmVGcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCkpOwog
CiAgICAgKnJlc3VsdCA9IEJTdHJpbmcodGV4dCkucmVsZWFzZSgpOwogICAgIHJldHVybiBTX09L
OwpAQCAtMTA2NCw3ICsxMDY0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFt
ZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIiku
ZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19P
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggZTQ3NzZmZGUwNDNkNTBjMTg0Y2NjMmZhNjM2YTMy
OWY2ZDIyMDM0MC4uYzE4YmE3Njc1ZGVjNTdmOGZiODg3MjQwMDU1ZTEwZGU0ZDlmMWU0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKQEAgLTE4MTIsMTEgKzE4MTIsMTEgQEAgYm9vbCBXZWJWaWV3Ojpl
eGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykKICAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIiku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJT
ZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CiAg
ICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmICgha2V5RXZlbnQgfHwga2V5RXZl
bnQtPmlzU3lzdGVtS2V5KCkpICAvLyBkbyBub3QgdHJlYXQgdGhpcyBhcyB0ZXh0IGlucHV0IGlm
IGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJl
dEtleUV2ZW50KGV2dCkpOworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CiAKICAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTE5NzksNyArMTk3OSw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgIGlmIChl
dnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2
dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQo
KS0+dGV4dCgpLCBldnQpOwogfQogCiBib29sIFdlYlZpZXc6OmtleURvd24oV1BBUkFNIHZpcnR1
YWxLZXlDb2RlLCBMUEFSQU0ga2V5RGF0YSwgYm9vbCBzeXN0ZW1LZXlEb3duKQpAQCAtMzQyOSw3
ICszNDI5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojp1cGRhdGVGb2N1
c2VkQW5kQWN0aXZlU3RhdGUoKQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShCU1RSIG5hbWUsIEJTVFIgdmFsdWUpCiB7Ci0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LT5jb21tYW5kKHRvU3RyaW5nKG5hbWUpKS5leGVjdXRlKHRvU3RyaW5nKHZhbHVlKSk7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LmNvbW1hbmQodG9TdHJpbmcobmFtZSkpLmV4ZWN1dGUodG9TdHJpbmcodmFsdWUpKTsKIAogICAg
IHJldHVybiBTX09LOwogfQpAQCAtMzY1Niw3ICszNjU2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZWxlY3RlZFRleHQoCiAgICAgaWYgKCFmb2N1c2VkRnJhbWUpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBTdHJpbmcgZnJhbWVTZWxlY3RlZFRleHQgPSBm
b2N1c2VkRnJhbWUtPmVkaXRvcigpLT5zZWxlY3RlZFRleHQoKTsKKyAgICBTdHJpbmcgZnJhbWVT
ZWxlY3RlZFRleHQgPSBmb2N1c2VkRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpOwogICAg
ICp0ZXh0ID0gU3lzQWxsb2NTdHJpbmdMZW4oZnJhbWVTZWxlY3RlZFRleHQuY2hhcmFjdGVycygp
LCBmcmFtZVNlbGVjdGVkVGV4dC5sZW5ndGgoKSk7CiAgICAgaWYgKCEqdGV4dCAmJiBmcmFtZVNl
bGVjdGVkVGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CkBAIC00
MjQxLDM4ICs0MjQxLDM4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aGFz
U2VsZWN0ZWRSYW5nZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0RW5h
YmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKLSAg
ICBFZGl0b3IqIGVkaXRvciA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAqZW5hYmxlZCA9IGVkaXRvci0+Y2FuQ3V0KCkgfHwg
ZWRpdG9yLT5jYW5ESFRNTEN1dCgpOworICAgIEVkaXRvciYgZWRpdG9yID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOworICAgICplbmFi
bGVkID0gZWRpdG9yLmNhbkN1dCgpIHx8IGVkaXRvci5jYW5ESFRNTEN1dCgpOwogICAgIHJldHVy
biBTX09LOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5
RW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsK
LSAgICBFZGl0b3IqIGVkaXRvciA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRP
ck1haW5GcmFtZSgpLT5lZGl0b3IoKTsKLSAgICAqZW5hYmxlZCA9IGVkaXRvci0+Y2FuQ29weSgp
IHx8IGVkaXRvci0+Y2FuREhUTUxDb3B5KCk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7CisgICAg
KmVuYWJsZWQgPSBlZGl0b3IuY2FuQ29weSgpIHx8IGVkaXRvci5jYW5ESFRNTENvcHkoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6cGFzdGVFbmFibGVkKCAKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFi
bGVkKQogewotICAgIEVkaXRvciogZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwotICAgICplbmFibGVkID0gZWRpdG9yLT5j
YW5QYXN0ZSgpIHx8IGVkaXRvci0+Y2FuREhUTUxQYXN0ZSgpOworICAgIEVkaXRvciYgZWRpdG9y
ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRv
cigpOworICAgICplbmFibGVkID0gZWRpdG9yLmNhblBhc3RlKCkgfHwgZWRpdG9yLmNhbkRIVE1M
UGFzdGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6ZGVsZXRlRW5hYmxlZCggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCkKIHsKLSAgICAqZW5hYmxlZCA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FuRGVsZXRlKCk7CisgICAg
KmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KS0+ZWRpdG9yKCkuY2FuRGVsZXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmVkaXRpbmdFbmFibGVkKCAKICAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewotICAgICplbmFibGVkID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5j
YW5FZGl0KCk7CisgICAgKmVuYWJsZWQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY2FuRWRpdCgpOwogICAgIHJldHVybiBTX09LOwog
fQogCkBAIC00MzI0LDcgKzQzMjQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZp
ZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRl
eHQpCiB7CiAgICAgUG9zaXRpb24gc3RhcnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmluc2VydFRleHQodG9TdHJpbmcodGV4
dCksIDApOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS5pbnNlcnRUZXh0KHRvU3RyaW5nKHRleHQpLCAwKTsKICAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0QmFzZShzdGFydCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CkBAIC00MzQ1LDggKzQzNDUsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXJjaGl2ZSgKICAgICAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRlU2VsZWN0aW9uKCB2b2lkKQogewotICAgIEVkaXRv
ciogZWRpdG9yID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpOwotICAgIGVkaXRvci0+ZGVsZXRlU2VsZWN0aW9uV2l0aFNtYXJ0RGVsZXRl
KGVkaXRvci0+Y2FuU21hcnRDb3B5T3JEZWxldGUoKSk7CisgICAgRWRpdG9yJiBlZGl0b3IgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCk7
CisgICAgZWRpdG9yLmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShlZGl0b3IuY2FuU21h
cnRDb3B5T3JEZWxldGUoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQzNjgsMjggKzQz
NjgsMjggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjphcHBseVN0eWxlKAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5KCAKICAgICAgICAgLyogW2lu
XSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVj
dXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCktPmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y3V0KCAKICAgICAgICAg
LyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkN1dCIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlKCAKICAg
ICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQo
IlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpj
b3B5VVJMKCAKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHVybCkKIHsKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvcHlVUkwo
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCkuY29weVVSTChN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC00NDExLDcgKzQ0MTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlZpZXc6OnBhc3RlRm9udCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVs
ZXRlXyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigp
LT5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSIpLmV4
ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTQ0OTMsNyArNDQ5Myw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y2hlY2tTcGVsbGluZygKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKICAgICB9CiAgICAgCi0gICAgY29yZShtX21haW5GcmFtZSktPmVk
aXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoKTsKKyAgICBjb3JlKG1fbWFpbkZyYW1l
KS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAgICAgCkBAIC00NTEyLDcgKzQ1MTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYlZpZXc6OnNob3dHdWVzc1BhbmVsKAogICAgICAgICBtX2VkaXRpbmdEZWxlZ2F0ZS0+c2hv
d1NwZWxsaW5nVUkoRkFMU0UpOwogICAgIH0KICAgICAKLSAgICBjb3JlKG1fbWFpbkZyYW1lKS0+
ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyh0cnVlKTsKKyAgICBjb3JlKG1fbWFp
bkZyYW1lKS0+ZWRpdG9yKCkuYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHRydWUpOwogICAgIG1f
ZWRpdGluZ0RlbGVnYXRlLT5zaG93U3BlbGxpbmdVSShUUlVFKTsKICAgICByZXR1cm4gU19PSzsK
IH0KQEAgLTUzMzksNyArNTMzOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6bG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXcoCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsK
KyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKQEAgLTU0NTQsNyArNTQ1NCw3IEBAIHZvaWQgV2ViVmlldzo6cHJl
cGFyZUNhbmRpZGF0ZVdpbmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElucHV0Q29udGV4
dCkKICAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24o
KS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZW1wUmFuZ2UgPSByYW5nZS0+Y2xv
bmVSYW5nZShlYyk7Ci0gICAgICAgIGNhcmV0ID0gdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5maXJz
dFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOworICAgICAgICBjYXJldCA9IHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZSh0ZW1wUmFuZ2UuZ2V0KCkpOwogICAgIH0K
ICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coY2FyZXQp
OwogICAgIENBTkRJREFURUZPUk0gZm9ybTsKQEAgLTU0NzIsNyArNTQ3Miw3IEBAIHZvaWQgV2Vi
Vmlldzo6cHJlcGFyZUNhbmRpZGF0ZVdpbmRvdyhGcmFtZSogdGFyZ2V0RnJhbWUsIEhJTUMgaElu
cHV0Q29udGV4dCkKIHZvaWQgV2ViVmlldzo6cmVzZXRJTUUoRnJhbWUqIHRhcmdldEZyYW1lKQog
ewogICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5j
YW5jZWxDb21wb3NpdGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2FuY2Vs
Q29tcG9zaXRpb24oKTsKIAogICAgIGlmIChISU1DIGhJbnB1dENvbnRleHQgPSBnZXRJTU1Db250
ZXh0KCkpIHsKICAgICAgICAgSU1NRGljdDo6ZGljdCgpLm5vdGlmeUlNRShoSW5wdXRDb250ZXh0
LCBOSV9DT01QT1NJVElPTlNUUiwgQ1BTX0NBTkNFTCwgMCk7CkBAIC01NDg3LDcgKzU0ODcsNyBA
QCB2b2lkIFdlYlZpZXc6OnVwZGF0ZVNlbGVjdGlvbkZvcklNRSgpCiAgICAgaWYgKCF0YXJnZXRG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkt
PmNhbmNlbENvbXBvc2l0aW9uSWZTZWxlY3Rpb25Jc0ludmFsaWQoKSkKKyAgICBpZiAoIXRhcmdl
dEZyYW1lLT5lZGl0b3IoKS5jYW5jZWxDb21wb3NpdGlvbklmU2VsZWN0aW9uSXNJbnZhbGlkKCkp
CiAgICAgICAgIHJlc2V0SU1FKHRhcmdldEZyYW1lKTsKIH0KIApAQCAtNTY0Myw3ICs1NjQzLDcg
QEAgYm9vbCBXZWJWaWV3OjpvbklNRUNvbXBvc2l0aW9uKExQQVJBTSBscGFyYW0pCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCF0YXJnZXRGcmFtZSB8
fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCF0YXJnZXRGcmFt
ZSB8fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBwcmVwYXJlQ2FuZGlkYXRlV2luZG93KHRhcmdldEZyYW1lLCBoSW5wdXRDb250
ZXh0KTsKQEAgLTU2NTMsNyArNTY1Myw3IEBAIGJvb2wgV2ViVmlldzo6b25JTUVDb21wb3NpdGlv
bihMUEFSQU0gbHBhcmFtKQogICAgICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1
dENvbnRleHQsIEdDU19SRVNVTFRTVFIsIGNvbXBvc2l0aW9uU3RyaW5nKSAmJiBscGFyYW0pCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgICAgIHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nKTsKKyAgICAgICAg
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIGNvbXBvc2l0aW9uU3RyaW5nOwogICAg
ICAgICBpZiAoIWdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1dENvbnRleHQsIEdDU19DT01QU1RS
LCBjb21wb3NpdGlvblN0cmluZykpCkBAIC01Njc0LDcgKzU2NzQsNyBAQCBib29sIFdlYlZpZXc6
Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKIAogICAgICAgICBpbnQgY3Vyc29yUG9z
aXRpb24gPSBMT1dPUkQoSU1NRGljdDo6ZGljdCgpLmdldENvbXBvc2l0aW9uU3RyaW5nKGhJbnB1
dENvbnRleHQsIEdDU19DVVJTT1JQT1MsIDAsIDApKTsKIAotICAgICAgICB0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBj
dXJzb3JQb3NpdGlvbiwgMCk7CisgICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRDb21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5kZXJsaW5lcywgY3Vyc29yUG9zaXRpb24sIDAp
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtNTY4Niw4ICs1Njg2LDggQEAgYm9vbCBX
ZWJWaWV3OjpvbklNRUVuZENvbXBvc2l0aW9uKCkKICAgICAvLyBJZiB0aGUgY29tcG9zaXRpb24g
aGFzbid0IGJlZW4gY29uZmlybWVkIHlldCwgaXQgbmVlZHMgdG8gYmUgY2FuY2VsbGVkLgogICAg
IC8vIFRoaXMgaGFwcGVucyBhZnRlciBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSBp
bmxpbmUgaW5wdXQgaG9sZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAodGFyZ2V0RnJhbWUg
JiYgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKQotICAgICAgICB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihTdHJpbmcoKSk7CisgICAgaWYg
KHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKQor
ICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKFN0cmluZygp
KTsKIAogICAgIGlmIChtX2luSU1FQ29tcG9zaXRpb24pCiAgICAgICAgIG1faW5JTUVDb21wb3Np
dGlvbi0tOwpAQCAtNTcxMiwxNCArNTcxMiwxNCBAQCBib29sIFdlYlZpZXc6Om9uSU1FTm90aWZ5
KFdQQVJBTSB3cGFyYW0sIExQQVJBTSwgTFJFU1VMVCopCiAKIExSRVNVTFQgV2ViVmlldzo6b25J
TUVSZXF1ZXN0Q2hhclBvc2l0aW9uKEZyYW1lKiB0YXJnZXRGcmFtZSwgSU1FQ0hBUlBPU0lUSU9O
KiBjaGFyUG9zKQogewotICAgIGlmIChjaGFyUG9zLT5kd0NoYXJQb3MgJiYgIXRhcmdldEZyYW1l
LT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICBpZiAoY2hhclBvcy0+ZHdDaGFyUG9z
ICYmICF0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgSW50UmVjdCBjYXJldDsKLSAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9
IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRpb24oKSA/IHRhcmdldEZyYW1lLT5l
ZGl0b3IoKS0+Y29tcG9zaXRpb25SYW5nZSgpIDogdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7CisgICAgaWYgKFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKSA/IHRhcmdldEZy
YW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCkgOiB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGVtcFJhbmdlID0gcmFuZ2UtPmNs
b25lUmFuZ2UoZWMpOwogICAgICAgICB0ZW1wUmFuZ2UtPnNldFN0YXJ0KHRlbXBSYW5nZS0+c3Rh
cnRDb250YWluZXIoZWMpLCB0ZW1wUmFuZ2UtPnN0YXJ0T2Zmc2V0KGVjKSArIGNoYXJQb3MtPmR3
Q2hhclBvcywgZWMpOwotICAgICAgICBjYXJldCA9IHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Zmly
c3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKKyAgICAgICAgY2FyZXQgPSB0YXJnZXRG
cmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFuZ2UodGVtcFJhbmdlLmdldCgpKTsKICAgICB9
CiAgICAgY2FyZXQgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGNhcmV0
KTsKICAgICBjaGFyUG9zLT5wdC54ID0gY2FyZXQueCgpOwpAQCAtNTc1Miw3ICs1NzUyLDcgQEAg
TFJFU1VMVCBXZWJWaWV3OjpvbklNRVJlcXVlc3QoV1BBUkFNIHJlcXVlc3QsIExQQVJBTSBkYXRh
KQogewogICAgIExPRyhUZXh0SW5wdXQsICJvbklNRVJlcXVlc3QgJXMiLCBpbWVSZXF1ZXN0TmFt
ZShyZXF1ZXN0KS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICgh
dGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlm
ICghdGFyZ2V0RnJhbWUgfHwgIXRhcmdldEZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChyZXF1ZXN0KSB7CkBAIC02ODgzLDE0ICs2ODgz
LDE0IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c2V0Q29tcG9zaXRpb25G
b3JUZXN0aW5nKAogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAog
ICAgIFN0cmluZyBjb21wb3NpdGlvblN0ciA9IHRvU3RyaW5nKGNvbXBvc2l0aW9uKTsKIAogICAg
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAgICB1bmRlcmxpbmVz
LmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBjb21wb3NpdGlvblN0ci5sZW5ndGgoKSwg
Q29sb3IoQ29sb3I6OmJsYWNrKSwgZmFsc2UpKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPnNldENv
bXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVuZ3Ro
KTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24oY29tcG9zaXRpb25TdHIsIHVu
ZGVybGluZXMsIGZyb20sIGZyb20gKyBsZW5ndGgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBA
IC02OTA0LDcgKzY5MDQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6Omhh
c0NvbXBvc2l0aW9uRm9yVGVzdGluZygvKiBbb3V0LCByZXR2YWxdICovCiAgICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0gZnJhbWUgJiYgZnJh
bWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpOworICAgICpyZXN1bHQgPSBmcmFtZSAmJiBm
cmFtZS0+ZWRpdG9yKCkuaGFzQ29tcG9zaXRpb24oKTsKIAogICAgIHJldHVybiBTX09LOwogfQpA
QCAtNjkxNSwxNSArNjkxNSwxNSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3RpbmcoLyogW2luXSAqLyBCU1RSCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRp
dG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2Fu
RWRpdCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgU3RyaW5nIGNvbXBvc2l0aW9u
U3RyID0gdG9TdHJpbmcoY29tcG9zaXRpb24pOwogCiAgICAgaWYgKGNvbXBvc2l0aW9uU3RyLmlz
TnVsbCgpKQotICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOwor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0aW9uKCk7CiAKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7CisgICAgZnJh
bWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cik7CiAKICAgICBy
ZXR1cm4gU19PSzsKIH0KQEAgLTY5MzQsMTAgKzY5MzQsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3Ojpjb21wb3NpdGlvblJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBV
SU5UKgogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYgKCFmcmFtZSB8fCAhZnJh
bWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKTsK
KyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFu
Z2UoKTsKIAogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC02OTc4
LDcgKzY5NzgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlRm9yVGVzdGluZygKICAgICBBU1NFUlQocmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCkpOwogICAgIEFTU0VSVChyYW5nZS0+ZW5kQ29udGFpbmVyKCkpOwogICAgICAKLSAg
ICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdl
LmdldCgpKTsKKyAgICBJbnRSZWN0IHJlY3QgPSBmcmFtZS0+ZWRpdG9yKCkuZmlyc3RSZWN0Rm9y
UmFuZ2UocmFuZ2UuZ2V0KCkpOwogICAgIHJlc3VsdEludFJlY3QgPSBmcmFtZS0+dmlldygpLT5j
b250ZW50c1RvV2luZG93KHJlY3QpOwogCiAgICAgcmVzdWx0UmVjdC0+bGVmdCA9IHJlc3VsdElu
dFJlY3QueCgpOwpAQCAtNjk5OCw3ICs2OTk4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJWaWV3OjpzZWxlY3RlZFJhbmdlRm9yVGVzdGluZygvKiBbb3V0XSAqLyBVSU5UKiBsb2MK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRSYW5nZSgpOworICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRSYW5nZSgpOwogCiAgICAg
c2l6ZV90IGxvY2F0aW9uU2l6ZTsKICAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3Bw
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAKaW5kZXggYzkxZWM5ZjgyMDJjODhhNmMxZTJkOGEyOTdiNjVjYmE5NGQyZjI5Mi4uNjQ1OGRm
NmY4YTc4ODQ3ODllODA4OWVkNDQxMTJhZTJhZmE3NTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKQEAg
LTM5NSw3ICszOTUsNyBAQCBib29sIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVy
cHJldEtleUV2ZW50KGV2ZW50KSk7CisgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldmVudCkpOwogCiAgICAgaWYg
KGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAg
ICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRv
IGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZp
YSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC00MTUsNyArNDE1LDcgQEAgYm9vbCBFZGl0
b3JDbGllbnRXaW5DRTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCiAgICAgaWYgKGtleUV2ZW50LT5jdHJsS2V5KCkgfHwga2V5RXZlbnQtPmFsdEtleSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5p
bnNlcnRUZXh0KGV2ZW50LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2ZW50KTsKKyAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQoZXZlbnQtPmtleUV2ZW50KCktPnRleHQoKSwgZXZl
bnQpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpoYW5kbGVLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRl
eCA5OGE0MDRjMDJhYTFjOTgxYmVhZTQ5NTIwNjYwZmI2MTM3YzJkZjE2Li45MGE1MTQ4NjBlZjk1
N2ZhOTYyYmY2YzUzYjliMDA3ZjZhODk3MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3du
bG9hZFVSTChjb25zdCBLVVJMJikKICNpZiAhUExBVEZPUk0oTUFDKQogdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiB7Ci0gICAg
U3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCk7Cisg
ICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKTsK
ICAgICBzZWFyY2hTdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgU3RyaW5nIGVuY29kZWQg
PSBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHNlYXJjaFN0cmluZyk7CiAgICAgZW5jb2Rl
ZC5yZXBsYWNlKCIlMjAiLCAiKyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGMxNzNh
YmM2ZmE4YmRiMmY3ZjUyZGFiNzVjNTE2ODk0ZTY2YzIwYjIuLmE4YjYyZDE1YmViYjhlZGQzMTMz
ZmM0MjlkZTBlNWI1YzVmOGQyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSkKICAgICBpZiAoc3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKSAmJiBmcmFtZS0+
c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBib29sIG9sZFNlbGVjdGlvbk1vZGUg
PSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1vZGUoKTsKICAg
ICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+c2V0U2VsZWN0aW9uTW9kZSh0
cnVlKTsKLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxl
Y3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFt
ZS0+ZWRpdG9yKCktPmNhblNtYXJ0Q29weU9yRGVsZXRlKCksIGZyYW1lKTsKKyAgICAgICAgUGFz
dGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24oZnJhbWUtPnNlbGVj
dGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBmcmFtZS0+ZWRpdG9yKCkuY2FuU21h
cnRDb3B5T3JEZWxldGUoKSwgZnJhbWUpOwogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpLT5zZXRTZWxlY3Rpb25Nb2RlKG9sZFNlbGVjdGlvbk1vZGUpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZs
L1dlYkVkaXRvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2VmbC9XZWJFZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4IDcwMTBhOGY3N2MxZjVh
MzEwMDlmNWFhOGI3MGMyYTI4ZDMyYmIzYTIuLmM0MmVjMzdiZDY0NjE3ZWRjMWQwMDA2NWQ3N2Ux
ZmZiNmUwZmZlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZWZsL1dlYkVkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1dE1l
dGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAg
aWYgKCFmcmFtZSB8fCAhZnJhbWUtPmVkaXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gRklYTUU6IHNlbmRpbmcgc3luYyBtZXNzYWdlIG1pZ2h0IG1ha2UgaW5wdXQg
bGFnZ2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDY3ZmRj
MWY0NDRlYWQ2YmE4Y2E3OTE4ODRmZDU4MTlmODI0ZjBjODEuLjk4ODlhOWQ2ODEwNzU3NTEwNjA4
OWFiZjllNzhjYjEzYWJjMGI1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhGcmFtZSogZnJhbWUsIFZlY3RvcjxXVEY6OlN0cgogewogICAgIFZl
Y3RvcjxFZGl0b3I6OkNvbW1hbmQ+IGNvbW1hbmRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGVuZGluZ0VkaXRvckNvbW1hbmRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEVkaXRvcjo6
Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKHBlbmRpbmdFZGl0b3JD
b21tYW5kcy5hdChpKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChwZW5kaW5nRWRpdG9yQ29tbWFuZHMuYXQo
aSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChjb21tYW5kLmlzVGV4dEluc2VydGlvbigp
ICYmICFhbGxvd1RleHRJbnNlcnRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTk1LDE0ICs5NSwxNCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIE9ubHkgYWxs
b3cgdGV4dCBpbnNlcnRpb24gY29tbWFuZHMgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBlZGl0YWJs
ZS4KLSAgICAgICAgaWYgKGV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoZnJhbWUsIHBlbmRp
bmdFZGl0b3JDb21tYW5kcywgZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpKSB7CisgICAgICAg
IGlmIChleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKGZyYW1lLCBwZW5kaW5nRWRpdG9yQ29t
bWFuZHMsIGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0KCkpKSB7CiAgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAogICAgIC8vIERvbid0IGFsbG93IHRleHQgaW5zZXJ0aW9uIGZvciBub2RlcyB0aGF0IGNh
bm5vdCBlZGl0LgotICAgIGlmICghZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0KCkpCisgICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBU
aGlzIGlzIGp1c3QgYSBub3JtYWwgdGV4dCBpbnNlcnRpb24sIHNvIHdhaXQgdG8gZXhlY3V0ZSB0
aGUgaW5zZXJ0aW9uCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKHBsYXRmb3Jt
RXZlbnQtPmN0cmxLZXkoKSB8fCBwbGF0Zm9ybUV2ZW50LT5hbHRLZXkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChwbGF0Zm9ybUV2ZW50
LT50ZXh0KCksIGV2ZW50KSkKKyAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQocGxh
dGZvcm1FdmVudC0+dGV4dCgpLCBldmVudCkpCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1t
CmluZGV4IDBmY2EzYjk4ZmZjNmJkOWRmNTA2MzI3YTEzOWFkYjU3NDc4ZjNmNTguLjNjMjMwZWJl
NDRhYzRlNzMzMjZiNGM2YmQ5NTg0ODE5M2NmM2IwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkNvbnRleHRNZW51Q2xpZW50TWFjLm1tCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnN0b3BTcGVha2luZygpCiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogewotICAgIFN0cmluZyBzZWFy
Y2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4dCgpOworICAgIFN0cmluZyBz
ZWFyY2hTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0ZWRUZXh0KCk7CiAgICAgc2VhcmNo
U3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZWFyY2hUaGVXZWIoc2VhcmNoU3RyaW5nKSk7CkBAIC04NSw3ICs4
NSw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhTcG90bGlnaHQoKQog
ICAgIGlmICghc2VsZWN0aW9uRnJhbWUpCiAgICAgICAgIHNlbGVjdGlvbkZyYW1lID0gbWFpbkZy
YW1lOwogCi0gICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJhbWUtPmRpc3Bs
YXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3RlZFRleHQoKSk7CisgICAgU3RyaW5nIHNlbGVjdGVkU3RyaW5nID0gc2VsZWN0aW9uRnJhbWUt
PmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmcoc2VsZWN0aW9uRnJhbWUtPmVkaXRvcigp
LnNlbGVjdGVkVGV4dCgpKTsKICAgICAKICAgICBpZiAoc2VsZWN0ZWRTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5k
ZXggODIzNWJjNmQ4ODBmMzZmYTA1NTVhMjc1MzMwZDc2ZTI3ZTM1NWZkNS4uZTBiOGFjODEyYjg2
YWEyNjliNTdkZTNhN2Y2ZjJhMDI2ZDNiYTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNs
aWVudE1hYy5tbQpAQCAtMTM2LDEyICsxMzYsMTIgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNl
dEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHN0YXRpYyB2b2lkIGNoYW5nZVdv
cmRDYXNlKFdlYlBhZ2UqIHBhZ2UsIFNFTCBzZWxlY3RvcikKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBwYWdlLT5jb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1l
LT5lZGl0b3IoKS5jYW5FZGl0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKKyAgICBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgic2VsZWN0V29yZCIpLmV4ZWN1dGUoKTsKIAotICAgIE5TU3RyaW5nICpzZWxl
Y3RlZFN0cmluZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1l
LT5lZGl0b3IoKS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIE5TU3RyaW5nICpzZWxlY3RlZFN0cmlu
ZyA9IGZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3RlZFRleHQoKSk7CiAgICAgcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGZy
YW1lLCBbc2VsZWN0ZWRTdHJpbmcgcGVyZm9ybVNlbGVjdG9yOnNlbGVjdG9yXSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGUy
NjA1NmU5Mjg2OWNkNTU5ZDgwMzc5NTMzNTlkNGIyN2I2N2YxY2YuLjcyNmNhMDZlNzkwYjA0MDc0
NmIxYWI0ODJlYzhiNzdlZDBjM2E2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIFN0cmluZyBXZWJGcmFt
ZTo6c2VsZWN0aW9uQXNTdHJpbmcoKSBjb25zdAogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtX2NvcmVGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGVkVGV4
dCgpKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcobV9jb3JlRnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpKTsKIH0KIAogSW50U2l6
ZSBXZWJGcmFtZTo6c2l6ZSgpIGNvbnN0CkBAIC03MDAsMTUgKzcwMCwxNSBAQCBTdHJpbmcgV2Vi
RnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
IAogdm9pZCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGlv
bikKIHsKLSAgICBpZiAoIW1fY29yZUZyYW1lIHx8ICFtX2NvcmVGcmFtZS0+ZWRpdG9yKCkpCisg
ICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRpcmVjdGlv
biA9PSAiYXV0byIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBtX2NvcmVGcmFt
ZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oTmF0dXJhbFdyaXRpbmdEaXJlY3Rp
b24pOwogICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKLSAgICAgICAgbV9jb3JlRnJh
bWUtPmVkaXRvcigpLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihMZWZ0VG9SaWdodFdyaXRpbmdE
aXJlY3Rpb24pOworICAgICAgICBtX2NvcmVGcmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uKTsKICAgICBlbHNlIGlmIChkaXJl
Y3Rpb24gPT0gInJ0bCIpCi0gICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS0+c2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKKyAgICAgICAgbV9j
b3JlRnJhbWUtPmVkaXRvcigpLnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3Jp
dGluZ0RpcmVjdGlvbik7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTk0N2VlYmQ2NDc2ZWM3M2I2
NjBlMmMwMDg4ZGMyNzc4MTIwNWUxZC4uZjAxZDVjYWY2NWI3YjE0Y2I1MWE4YmVkNDY5MWE5ZTJh
NzdiZDAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNjAxLDggKzYwMSw4IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRl
KCkgY29uc3QKICAgICByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgPSBmcmFtZS0+c2VsZWN0aW9u
KCktPmlzQ29udGVudEVkaXRhYmxlKCk7CiAgICAgcmVzdWx0LmlzQ29udGVudFJpY2hseUVkaXRh
YmxlID0gZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogICAg
IHJlc3VsdC5pc0luUGFzc3dvcmRGaWVsZCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3
b3JkRmllbGQoKTsKLSAgICByZXN1bHQuaGFzQ29tcG9zaXRpb24gPSBmcmFtZS0+ZWRpdG9yKCkt
Pmhhc0NvbXBvc2l0aW9uKCk7Ci0gICAgcmVzdWx0LnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlID0gZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlv
bkNoYW5nZSgpOworICAgIHJlc3VsdC5oYXNDb21wb3NpdGlvbiA9IGZyYW1lLT5lZGl0b3IoKS5o
YXNDb21wb3NpdGlvbigpOworICAgIHJlc3VsdC5zaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVj
dGlvbkNoYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNo
YW5nZSgpOwogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgc2l6ZV90IGxvY2F0aW9uID0gMDsKQEAg
LTY0MSw4ICs2NDEsOCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0
CiAgICAgICAgIHJlc3VsdC5lZGl0b3JSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dp
bmRvdyhzZWxlY3Rpb25Sb290LT5waXhlbFNuYXBwZWRCb3VuZGluZ0JveCgpKTsKIAogICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlvbiAmJiAocmFu
Z2UgPSBmcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKSkpIHsKLSAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5nZXRDb21wb3NpdGlvblNlbGVjdGlvbihyZXN1bHQuYW5jaG9yUG9zaXRp
b24sIHJlc3VsdC5jdXJzb3JQb3NpdGlvbik7CisgICAgaWYgKHJlc3VsdC5oYXNDb21wb3NpdGlv
biAmJiAocmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpKSkgeworICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkuZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb24ocmVzdWx0LmFuY2hv
clBvc2l0aW9uLCByZXN1bHQuY3Vyc29yUG9zaXRpb24pOwogCiAgICAgICAgIHJlc3VsdC5jb21w
b3NpdGlvblJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJhbmdlLT5ib3Vu
ZGluZ0JveCgpKTsKICAgICB9CkBAIC02NTcsNyArNjU3LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFn
ZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAg
cmVzdWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGZyYW1l
LT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpKTsKKyAgICAgICAgcmVz
dWx0LmN1cnNvclJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGZyYW1lLT5l
ZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSkpOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBvbmx5IHRyYW5zZmVyIGlubmVyVGV4dCB3aGVuIGl0IGNoYW5nZXMgYW5kIGRv
IHRoaXMgb24gdGhlIFVJIHNpZGUuCiAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAm
JiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkKSB7CkBAIC03NjgsNyArNzY4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpleGVjdXRlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwg
Y29uc3QgU3RyaW5nJiBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoYXJndW1lbnQpOworICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKGFyZ3VtZW50KTsK
IH0KIAogYm9vbCBXZWJQYWdlOjppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lKQpAQCAtNzgwLDcgKzc4MCw3IEBAIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5n
Q29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKICAgICBpZiAoUGx1Z2lu
VmlldyogcGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAg
ICAgICByZXR1cm4gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFuZE5h
bWUpOwogICAgIAotICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKICAgICByZXR1cm4gY29tbWFuZC5p
c1N1cHBvcnRlZCgpICYmIGNvbW1hbmQuaXNFbmFibGVkKCk7CiB9CiAgICAgCkBAIC0xNzc4LDcg
KzE3NzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgICAgICBpZiAoUGx1Z2luVmlldyog
cGx1Z2luVmlldyA9IGZvY3VzZWRQbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICAg
ICAgaXNFbmFibGVkID0gcGx1Z2luVmlldy0+aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29tbWFu
ZE5hbWUpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEVkaXRvcjo6Q29tbWFuZCBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKTsKKyAgICAgICAgICAg
IEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoY29tbWFu
ZE5hbWUpOwogICAgICAgICAgICAgc3RhdGUgPSBjb21tYW5kLnN0YXRlKCk7CiAgICAgICAgICAg
ICBpc0VuYWJsZWQgPSBjb21tYW5kLmlzU3VwcG9ydGVkKCkgJiYgY29tbWFuZC5pc0VuYWJsZWQo
KTsKICAgICAgICAgfQpAQCAtMjU2MCw3ICsyNTYwLDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgaWYgKCFrZXlFdmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoZXZ0KSk7CisgICAg
RWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnBy
ZXRLZXlFdmVudChldnQpKTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91
Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVz
dCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApA
QCAtMjU3MywxNCArMjU3MywxNCBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2Fy
ZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBEb24ndCBhbGxvdyB0ZXh0IGluc2VydGlvbiBmb3Igbm9kZXMgdGhhdCBjYW5ub3QgZWRpdC4K
LSAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgIGlmICghZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG9uJ3Qg
aW5zZXJ0IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1
bmV4cGVjdGVkIGJlaGF2aW91cgogICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRl
eHQoZXZ0LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0
b3IoKS5pbnNlcnRUZXh0KGV2dC0+a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOwogfQogI2VuZGlm
CiAKQEAgLTI4NTksNyArMjg1OSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZU5vdGlmaWNh
dGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCwKIHZvaWQgV2Vi
UGFnZTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24p
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5hZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogfQogCiB2b2lkIFdlYlBh
Z2U6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAgLTI4ODYsMTcg
KzI4ODYsMTcgQEAgdm9pZCBXZWJQYWdlOjp1bm1hcmtBbGxCYWRHcmFtbWFyKCkKICNpZiBVU0Uo
QVBQS0lUKQogdm9pZCBXZWJQYWdlOjp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPnVwcGVyY2Fz
ZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKS0+ZWRpdG9yKCkudXBwZXJjYXNlV29yZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxvd2Vy
Y2FzZVdvcmQoKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpLT5lZGl0b3IoKS0+bG93ZXJjYXNlV29yZCgpOworICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS5sb3dlcmNhc2VXb3Jk
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+Y2FwaXRh
bGl6ZVdvcmQoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKS0+ZWRpdG9yKCkuY2FwaXRhbGl6ZVdvcmQoKTsKIH0KICNlbmRpZgogICAgIApAQCAt
MjkzMyw3ICsyOTMzLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQo
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgYm9vbCBzZWxlY3RSZXBs
YWNlbWVudCA9IHRydWU7CiAgICAgYm9vbCBzbWFydFJlcGxhY2UgPSBmYWxzZTsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0
UmVwbGFjZW1lbnQsIHNtYXJ0UmVwbGFjZSk7CisgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5y
ZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQodGV4dCwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVw
bGFjZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24oKQpAQCAtMzU5Niw3ICsz
NTk2LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25z
dCBTdHJpbmcmIHJlc3VsdCkKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3Vs
dChyZXN1bHQpOworICAgIGZyYW1lLT5lZGl0b3IoKS5oYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJl
c3VsdChyZXN1bHQpOwogfQogI2VuZGlmCiAKQEAgLTM2MTgsMjkgKzM2MTgsMjkgQEAgdm9pZCBX
ZWJQYWdlOjpzaW11bGF0ZU1vdXNlTW90aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uLCBk
b3VibGUgdGltZSkKIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0
IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0
aCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNh
bkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXM7CiAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxpbmUoMCwgY29t
cG9zaXRpb25TdHJpbmcubGVuZ3RoKCksIENvbG9yKENvbG9yOjpibGFjayksIGZhbHNlKSk7Ci0g
ICAgZnJhbWUtPmVkaXRvcigpLT5zZXRDb21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgdW5k
ZXJsaW5lcywgZnJvbSwgZnJvbSArIGxlbmd0aCk7CisgICAgZnJhbWUtPmVkaXRvcigpLnNldENv
bXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBmcm9tLCBmcm9tICsgbGVu
Z3RoKTsKIH0KIAogYm9vbCBXZWJQYWdlOjpoYXNDb21wb3NpdGlvbkZvclRlc3RpbmcoKQogewog
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBv
c2l0aW9uKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS5oYXNDb21wb3Np
dGlvbigpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNvbmZpcm1Db21wb3NpdGlvbkZvclRlc3Rpbmco
Y29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAo
IWZyYW1lIHx8ICFmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKKyAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
Y29tcG9zaXRpb25TdHJpbmcuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29u
ZmlybUNvbXBvc2l0aW9uKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5jb25maXJtQ29tcG9zaXRp
b24oY29tcG9zaXRpb25TdHJpbmcpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNv
bXBvc2l0aW9uKCk7CisgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21w
b3NpdGlvblN0cmluZyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bnVtV2hlZWxFdmVudEhhbmRsZXJz
Q2hhbmdlZCh1bnNpZ25lZCBudW1XaGVlbEV2ZW50SGFuZGxlcnMpCkBAIC0zNzk2LDE5ICszNzk2
LDE5IEBAIHN0YXRpYyBGcmFtZSogdGFyZ2V0RnJhbWVGb3JFZGl0aW5nKFdlYlBhZ2UqIHBhZ2Up
CiB7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gcGFnZS0+Y29yZVBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgaWYgKCF0YXJnZXRGcmFtZSB8
fCAhdGFyZ2V0RnJhbWUtPmVkaXRvcigpKQorICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgRWRpdG9yKiBlZGl0b3IgPSB0YXJnZXRGcmFtZS0+ZWRpdG9yKCk7
Ci0gICAgaWYgKCFlZGl0b3ItPmNhbkVkaXQoKSkKKyAgICBFZGl0b3ImIGVkaXRvciA9IHRhcmdl
dEZyYW1lLT5lZGl0b3IoKTsKKyAgICBpZiAoIWVkaXRvci5jYW5FZGl0KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgeworICAgIGlmIChl
ZGl0b3IuaGFzQ29tcG9zaXRpb24oKSkgewogICAgICAgICAvLyBXZSBzaG91bGQgdmVyaWZ5IHRo
ZSBwYXJlbnQgbm9kZSBvZiB0aGlzIElNRSBjb21wb3NpdGlvbiBub2RlIGFyZQogICAgICAgICAv
LyBlZGl0YWJsZSBiZWNhdXNlIEphdmFTY3JpcHQgbWF5IGRlbGV0ZSBhIHBhcmVudCBub2RlIG9m
IHRoZSBjb21wb3NpdGlvbgogICAgICAgICAvLyBub2RlLiBJbiB0aGlzIGNhc2UsIFdlYktpdCBj
cmFzaGVzIHdoaWxlIGRlbGV0aW5nIHRleHRzIGZyb20gdGhlIHBhcmVudAogICAgICAgICAvLyBu
b2RlLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueSBsb25nZXIuCi0gICAgICAgIGlmIChQYXNzUmVm
UHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpKSB7CisgICAgICAg
IGlmIChQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci5jb21wb3NpdGlvblJhbmdlKCkp
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSByYW5nZS0+c3RhcnRDb250YWluZXIoKTsKICAg
ICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM4MjUsOCArMzgyNSw3IEBAIHZvaWQgV2ViUGFnZTo6
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0
X3Qgc2VsZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBFZGl0b3IqIGVkaXRvciA9
IHRhcmdldEZyYW1lLT5lZGl0b3IoKTsKLSAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZyk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21w
b3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CiAKICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPT0g
LTEpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNo
YW5nZWQoZWRpdG9yU3RhdGUoKSkpOwpAQCAtMzg1OCwxOSArMzg1NywxOSBAQCB2b2lkIFdlYlBh
Z2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZXJsaW5lPiB1bgogCiAgICAgICAgIEVsZW1lbnQqIHNjb3BlID0gdGFyZ2V0RnJhbWUtPnNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmVwbGFjZW1lbnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5n
dGgoc2NvcGUsIHJlcGxhY2VtZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsKLSAgICAgICAg
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5n
ZSh0cnVlKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlKHRydWUpOwogICAgICAgICB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCks
IFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7Ci0gICAgICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+
c2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworICAgICAgICB0YXJn
ZXRGcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFs
c2UpOwogICAgIH0KIAotICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c2V0Q29tcG9zaXRpb24o
dGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVj
dGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpjYW5jZWxDb21wb3NpdGlvbigpCiB7CiAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IHRh
cmdldEZyYW1lRm9yRWRpdGluZyh0aGlzKSkKLSAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigp
LT5jYW5jZWxDb21wb3NpdGlvbigpOworICAgICAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCkuY2Fu
Y2VsQ29tcG9zaXRpb24oKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChlZGl0b3JTdGF0ZSgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IGU0
NzMxMDMwNGQ4MTY4YmE5ODkwNzczYTJjOWNlZWViZWNhZDlkNmYuLmM2YzQxZjEwMjNjNTE1ODMz
MWE2ZjI0ZWJlYjY2M2I0ZjUwYjU5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTc4LDE2ICsxNzgsMTYgQEAg
c3RhdGljIEZyYW1lKiB0YXJnZXRGcmFtZUZvckVkaXRpbmcoV2ViUGFnZSogcGFnZSkKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEVkaXRvciogZWRpdG9yID0gZnJh
bWUtPmVkaXRvcigpOwotICAgIGlmICghZWRpdG9yLT5jYW5FZGl0KCkpCisgICAgRWRpdG9yJiBl
ZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CisgICAgaWYgKCFlZGl0b3IuY2FuRWRpdCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAg
ICBpZiAoZWRpdG9yLmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIHZl
cmlmeSB0aGUgcGFyZW50IG5vZGUgb2YgdGhpcyBJTUUgY29tcG9zaXRpb24gbm9kZSBhcmUKICAg
ICAgICAgLy8gZWRpdGFibGUgYmVjYXVzZSBKYXZhU2NyaXB0IG1heSBkZWxldGUgYSBwYXJlbnQg
bm9kZSBvZiB0aGUgY29tcG9zaXRpb24KICAgICAgICAgLy8gbm9kZS4gSW4gdGhpcyBjYXNlLCBX
ZWJLaXQgY3Jhc2hlcyB3aGlsZSBkZWxldGluZyB0ZXh0cyBmcm9tIHRoZSBwYXJlbnQKICAgICAg
ICAgLy8gbm9kZSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnkgbG9uZ2VyLgotICAgICAgICBpZiAo
UGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKSkgewor
ICAgICAgICBpZiAoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3IuY29tcG9zaXRpb25S
YW5nZSgpKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBXZWJQ
YWdlOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZykK
ICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICB0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZyk7CisgICAg
dGFyZ2V0RnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmlu
Zyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21w
b3NpdGlvblN0cmluZywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5l
PiYgdW5kZXJsaW5lcywgdWludDY0X3QgY3Vyc29yUG9zaXRpb24pCkBAIC0yMTIsNyArMjEyLDcg
QEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9u
U3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ28KICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPnNldENvbXBvc2l0aW9uKGNv
bXBvc2l0aW9uU3RyaW5nLCB1bmRlcmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgdGFy
Z2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCB1bmRl
cmxpbmVzLCBjdXJzb3JQb3NpdGlvbiwgMCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29t
cG9zaXRpb24oKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2FuY2VsQ29tcG9z
aXRpb24oKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuY2FuY2Vs
Q29tcG9zaXRpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjcx
MjUzMGVhNmY5OWU4ZWIwYjQwY2RhMzQ4MDllYTlmY2E2MDIwZi4uNzhhNzhjMWU3NDk2YzVlNjAy
ZjU2YzI3MmU3MWViNWRiNTQ1OTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMTY4LDE2ICsxNjgsMTYgQEAgYm9v
bCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICBib29sIGV2ZW50V2FzSGFuZGxlZCA9IGZhbHNlOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tbWFuZHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lID09ICJpbnNlcnRUZXh0OiIpIHsKLSAgICAg
ICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOwogCi0gICAg
ICAgICAgICBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdCgpKQorICAgICAgICAgICAgaWYg
KCFmcmFtZS0+ZWRpdG9yKCkuY2FuRWRpdCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICAvLyBBbiBpbnNlcnRUZXh0OiBtaWdodCBiZSBoYW5kbGVkIGJ5IG90aGVy
IHJlc3BvbmRlcnMgaW4gdGhlIGNoYWluIGlmIHdlIGRvbid0IGhhbmRsZSBpdC4KICAgICAgICAg
ICAgIC8vIE9uZSBleGFtcGxlIGlzIHNwYWNlIGJhciB0aGF0IHJlc3VsdHMgaW4gc2Nyb2xsaW5n
IGRvd24gdGhlIHBhZ2UuCi0gICAgICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0gZnJhbWUtPmVk
aXRvcigpLT5pbnNlcnRUZXh0KGNvbW1hbmRzW2ldLnRleHQsIGV2ZW50KTsKKyAgICAgICAgICAg
IGV2ZW50V2FzSGFuZGxlZCB8PSBmcmFtZS0+ZWRpdG9yKCkuaW5zZXJ0VGV4dChjb21tYW5kc1tp
XS50ZXh0LCBldmVudCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBFZGl0b3I6OkNv
bW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNl
bGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpOworICAgICAgICAgICAgRWRpdG9y
OjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFtZUZv
clNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21tYW5kTmFtZSkpOwogICAgICAgICAgICAgaWYg
KGNvbW1hbmQuaXNTdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZEV4
ZWN1dGVkQnlFZGl0b3IgPSBjb21tYW5kLmV4ZWN1dGUoZXZlbnQpOwogICAgICAgICAgICAgICAg
IGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kRXhlY3V0ZWRCeUVkaXRvcjsKQEAgLTIzMyw3ICsy
MzMsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2ZW50LCBib29sIHNhdmVDb21tYW5kcwogICAgICAgICAvLyAoZS5nLiBUYWIgdGhh
dCBpbnNlcnRzIGEgVGFiIGNoYXJhY3Rlciwgb3IgRW50ZXIpLgogICAgICAgICBib29sIGhhdmVU
ZXh0SW5zZXJ0aW9uQ29tbWFuZHMgPSBmYWxzZTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb21tYW5kcy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFtZShjb21tYW5kc1tpXS5jb21t
YW5kTmFtZSkpLmlzVGV4dEluc2VydGlvbigpKQorICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3JOYW1lKGNvbW1hbmRzW2ldLmNvbW1h
bmROYW1lKSkuaXNUZXh0SW5zZXJ0aW9uKCkpCiAgICAgICAgICAgICAgICAgaGF2ZVRleHRJbnNl
cnRpb25Db21tYW5kcyA9IHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlcmUgYXJl
IG5vIHRleHQgaW5zZXJ0aW9uIGNvbW1hbmRzLCBkZWZhdWx0IGtleWRvd24gaGFuZGxlciBpcyB0
aGUgcmlnaHQgdGltZSB0byBleGVjdXRlIHRoZSBjb21tYW5kcy4KQEAgLTI2NSw3ICsyNjUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9y
PENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBT
RUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2Vs
ZWN0aW9uRW5kKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQs
IHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOwogICAgIH0KIAogICAg
IG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdlYlBh
Z2U6OmNvbmZpcm1Db21wb3NpdGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbmZpcm1Db21wb3NpdGlvbigpOworICAgIGZy
YW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24oKTsKIAogICAgIG5ld1N0YXRlID0gZWRp
dG9yU3RhdGUoKTsKIH0KQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbENv
bXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y2FuY2VsQ29tcG9zaXRpb24oKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCku
Y2FuY2VsQ29tcG9zaXRpb24oKTsKIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKIH0K
QEAgLTI5OSwxMyArMjk5LDEzIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWluCiAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxh
Y2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQogCi0gICAg
aWYgKCFmcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpIHsKKyAgICBpZiAoIWZyYW1l
LT5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEFuIGluc2VydFRleHQ6
IG1pZ2h0IGJlIGhhbmRsZWQgYnkgb3RoZXIgcmVzcG9uZGVycyBpbiB0aGUgY2hhaW4gaWYgd2Ug
ZG9uJ3QgaGFuZGxlIGl0LgogICAgICAgICAvLyBPbmUgZXhhbXBsZSBpcyBzcGFjZSBiYXIgdGhh
dCByZXN1bHRzIGluIHNjcm9sbGluZyBkb3duIHRoZSBwYWdlLgotICAgICAgICBoYW5kbGVkID0g
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KHRleHQsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50
ZXJwcmV0ZWQpOworICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
dGV4dCwgbV9rZXlib2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29uZmlybUNv
bXBvc2l0aW9uKHRleHQpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29uZmlybUNvbXBvc2l0
aW9uKHRleHQpOwogICAgIH0KIAogICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKQEAgLTMy
MSw4ICszMjEsOCBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdAogICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXBsYWNlbWVudFJh
bmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KIAotICAgIEFTU0VSVCgh
ZnJhbWUtPmVkaXRvcigpLT5oYXNDb21wb3NpdGlvbigpKTsKLSAgICBoYW5kbGVkID0gZnJhbWUt
PmVkaXRvcigpLT5pbnNlcnREaWN0YXRlZFRleHQodGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVM
b2NhdGlvbnMsIG1fa2V5Ym9hcmRFdmVudEJlaW5nSW50ZXJwcmV0ZWQpOworICAgIEFTU0VSVCgh
ZnJhbWUtPmVkaXRvcigpLmhhc0NvbXBvc2l0aW9uKCkpOworICAgIGhhbmRsZWQgPSBmcmFtZS0+
ZWRpdG9yKCkuaW5zZXJ0RGljdGF0ZWRUZXh0KHRleHQsIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9j
YXRpb25zLCBtX2tleWJvYXJkRXZlbnRCZWluZ0ludGVycHJldGVkKTsKICAgICBuZXdTdGF0ZSA9
IGVkaXRvclN0YXRlKCk7CiB9CiAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFdlYlBhZ2U6Omdl
dE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCkKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
ZnJhbWUtPmVkaXRvcigpLT5jb21wb3NpdGlvblJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAgc2l6ZV90IGxv
Y2F0aW9uU2l6ZTsKICAgICBzaXplX3QgbGVuZ3RoU2l6ZTsKICAgICBpZiAocmFuZ2UgJiYgVGV4
dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShmcmFtZS0+c2VsZWN0aW9u
KCktPnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpLCByYW5nZS5nZXQoKSwg
bG9jYXRpb25TaXplLCBsZW5ndGhTaXplKSkgewpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgV2Vi
UGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2
NF90IGxlbmd0aCwgV2ViCiAgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigpKTsKICAg
ICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKICAgICAgCi0gICAgSW50UmVjdCByZWN0
ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAg
SW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKICAgICByZXN1bHRSZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhy
ZWN0KTsKIH0KIApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGJvb2wmIHJlCiAg
ICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZyYW1l
LT5lZGl0b3IoKS0+cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkucmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKTsKICAgICByZXN1bHQgPSB0cnVlOwogfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFN0cmluZyYgc3RyaW5n
VmFsdWUpCiAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHN0cmluZ1ZhbHVlID0gZnJhbWUtPmVkaXRvcigpLT5zdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKCk7CisgICAgc3RyaW5nVmFsdWUgPSBmcmFtZS0+ZWRpdG9yKCkuc3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldERhdGFT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVk
TWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgdWludDY0X3QmIHNpemUpCkBAIC02ODUsNyArNjg1LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE0KICAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5zZWxl
Y3Rpb24oKS0+aXNOb25lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5lZGl0b3IoKS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQocGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLT5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgc2l6ZSA9IDA7CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>