<?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>120259</bug_id>
          
          <creation_ts>2013-08-24 18:39:01 -0700</creation_ts>
          <short_desc>Frame::tree should return a reference instead of a pointer</short_desc>
          <delta_ts>2013-08-24 19:27:03 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920686</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-24 18:39:01 -0700</bug_when>
    <thetext>Frame::tree should return a reference instead of a pointer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920688</commentid>
    <comment_count>1</comment_count>
      <attachid>209567</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-24 18:42:36 -0700</bug_when>
    <thetext>Created attachment 209567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920689</commentid>
    <comment_count>2</comment_count>
      <attachid>209567</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-08-24 18:43:52 -0700</bug_when>
    <thetext>Comment on attachment 209567
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920693</commentid>
    <comment_count>3</comment_count>
      <attachid>209567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-24 19:27:01 -0700</bug_when>
    <thetext>Comment on attachment 209567
Patch

Clearing flags on attachment: 209567

Committed r154558: &lt;http://trac.webkit.org/changeset/154558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920694</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-24 19:27:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209567</attachid>
            <date>2013-08-24 18:42:36 -0700</date>
            <delta_ts>2013-08-24 19:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120259-20130824184235.patch</filename>
            <type>text/plain</type>
            <size>214870</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IzNTViNmU0YmViY2Iw
OGU1MWNmOTdhYzM2ODFmY2MzYTJiN2ZiOS4uYjViZjNiNGJlY2JhY2UzZjQwNmUyYzUyMWY4MjE2
ZmQyODQ2NDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MSBAQAorMjAxMy0wOC0yNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxk
IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6dHJlZSk6IFJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEg
cG9pbnRlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5kZXhHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5BY2Nl
c3NBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5OYXZpZ2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9uQm91bmRhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vdGlmeVNlYW1sZXNzQ2hpbGREb2N1bWVudHNP
ZlN0eWxlc2hlZXRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW5TZWFy
Y2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RGVzaWdu
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFyZW50RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBk
b20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvY3VzZWRGcmFtZU93bmVyRWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2VsZWN0RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5
U2VsZWN0ZWQpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRnJhbWVCYXNlOjpDYWNoZWRGcmFtZUJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWVCYXNlOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6OnJlc3RvcmUpOgorICAgICAgICAqIGhpc3Rv
cnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0NhbkNhY2hlRnJhbWVEZWNp
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmNhbkNhY2hlUGFnZUNvbnRhaW5p
bmdUaGlzRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aGFzRm9jdXMpOgorICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRGcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52
YXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZnJhbWVOYXZp
Z2F0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6YXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZv
ck9yaWdpbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVj
dEZvckZyYW1lVHJlZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29u
dGV4dENyZWF0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6
OmNyZWF0ZURlY29kZXJJZk5lZWRlZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphbGxDaGlsZHJlbkFyZUNvbXBsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphbGxBbmNlc3RvcnNBcmVDb21wbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjp1cGRhdGVGaXJzdFBhcnR5Rm9yQ29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6c3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2xvc2VPbGREYXRhU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJmcmFtZUlzTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VicmVzb3VyY2VDYWNoZVBvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmNsb3NlQW5kUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNob3VsZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYW5k
bGVCZWZvcmVVbmxvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjplZmZlY3RpdmVTYW5kYm94RmxhZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRB
bmRTY3JvbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZURvY3VtZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVG
b3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0
ZW1UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVT
ZXRQcm92aXNpb25hbEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OnJlY3Vyc2l2ZUdvVG9JdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVy
OjpjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjptdXN0
TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NT
dGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NDb21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppc01haW5Mb2FkUHJv
Z3Jlc3NpbmcpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENh
Y2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29u
dGVudCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OnVybHNGb3JUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIpOgorICAgICAgICAqIHBhZ2UvQ2hyb21l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhblJ1bk1vZGFsSWZEdXJpbmdQYWdlRGlzbWlzc2Fs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzZXROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6dG9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6b3Blbik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVs
eSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5pbmdXaW5kb3dJc1Zpc2libGUpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50UGFnZVpvb21GYWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50VGV4dFpvb21GYWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpz
aG91bGRVc2VQcmludGluZ0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzcGF0
Y2hWaXNpYmlsaXR5U3RhdGVDaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6
d2lsbERldGFjaFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFBhZ2VBbmRUZXh0
Wm9vbUZhY3RvcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm90aWZ5Q2hyb21lQ2xp
ZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmlzVVJMQWxsb3dlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp+RnJhbWVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVHJlZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnRyYW5zZmVy
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjphcHBlbmRDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVUcmVlOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OnVuaXF1ZUNoaWxkTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnNj
b3BlZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmNoaWxkQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVUcmVlOjpjaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6
OmZpbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjppc0Rlc2NlbmRhbnRPZik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVRyZWU6OnRyYXZlcnNlUHJldmlvdXNXaXRoV3JhcCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVRyZWU6OmRlZXBMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVU
cmVlOjp0b3ApOgorICAgICAgICAocHJpbnRGcmFtZXMpOgorICAgICAgICAoc2hvd0ZyYW1lVHJl
ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZXRGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpoYXND
b21wb3NpdGVkQ29udGVudEluY2x1ZGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6aGFzQ29tcG9zaXRpbmdBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2hvdWxkVXNlTG9hZFRpbWVEZWZlcnJlZFJlcGFpbnRE
ZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUxheWVyRmx1c2hUaHJv
dHRsaW5nSW5BbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXJ2aWNl
U2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRl
QmFja2dyb3VuZFJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFy
ZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50
c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0VHJhY2tzUmVw
YWludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzSW5BbGxG
cmFtZXMpOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucyk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6flBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVuZGVyVHJlZVNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFs
Q2hhbmdlSW5FbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXROZWVkc1Jl
Y2FsY1N0eWxlSW5BbGxGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVmcmVzaFBs
dWdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjppbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNl
dE1lZGlhVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldERldmljZVNjYWxlRmFj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFy
QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkaWRNb3ZlT25zY3JlZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6d2lsbE1vdmVPZmZzY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c2V0SXNJbldpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVl
dExvY2F0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphbGxWaXNpdGVkU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0RGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6c2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpj
b2xsZWN0UGx1Z2luVmlld3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjaGVja1N1YmZyYW1lQ291
bnRDb25zaXN0ZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdXNwZW5kQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y2Fw
dGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGVJbkFsbEZyYW1lcyk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBM
b2FkRGVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjp+
UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6Cisg
ICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OnRocm90dGxlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVy
Ojp1bnRocm90dGxlUGFnZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0VGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3IpOgorICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjdFRvQWJzb2x1
dGVDb29yZGluYXRlcyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6
c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvbWFjL1BhZ2VNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnJlbW92ZVNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZUN1cnJlbnRXaGVlbEV2ZW50
SGFuZGxlckNvdW50KToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6dGFyZ2V0RnJhbWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbmNsb3NpbmdDb21wb3NpdG9yRmx1c2hpbmdM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVD
b21wb3NpdGluZ0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6Om5vdGlmeUlGcmFtZXNPZkNvbXBvc2l0aW5nQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvVGV4dEF1dG9zaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b3NpemVyOjpw
cm9jZXNzU3VidHJlZSk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZUV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMpOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRT
Y2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6Zm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9y
eUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpudW1iZXJPZlNjcm9sbGFibGVB
cmVhcyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aGFzTm9TdHlsZUluZm9ybWF0aW9uKToKKyAgICAgICAgVXNl
IHRyZWUoKS4gaW5zdGVhZCBvZiB0cmVlKCktPi4KKwogMjAxMy0wOC0yNCAgQW5kcmVhcyBLbGlu
ZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgRG9jdW1lbnQ6OnZpZXdwb3J0
U2l6ZSgpIGxvZ2ljIGludG8gUmVuZGVyVmlldzo6dmlld3BvcnRTaXplKCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwppbmRleCBlMThmMTdjN2U4ODkwZjllNzExYmQ2Nzg3MTMxOTllOWZh
YzdhNzBkLi5jNjVlYmNmZjJlZGMxZDFlZjMzODZjZjU4YzA5NmZmZWVmMmYyZTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wOC0yNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxk
IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNsb3NlVVJMUmVjdXJzaXZlbHkpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjplbmFibGVDcm9zc1NpdGVYSFJSZWN1cnNpdmVseSk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRTY3JlZW5PcmllbnRh
dGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6
Y3JlYXRlRnJhbWUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkRPTVN1cHBvcnQ6OmNvbnZlcnRQb2ludFRvRnJh
bWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpET01TdXBwb3J0OjppbmNyZW1lbnRG
cmFtZSk6CisgICAgICAgIFVzZSB0cmVlKCkuIGluc3RlYWQgb2YgdHJlZSgpLT4uCisKIDIwMTMt
MDgtMjAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xMjAwMjk+IERvY3VtZW50OjptYXJrZXJzKCkgc2hvdWxkIHJl
dHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDFlM2Q2ZDFlYzA5MTIyYTVkMGNm
YTQzNzI2YjE3OTE0YzUzNzljYjEuLjRkOGJjN2U4NDgxM2ZjNjEyYmJlMTZlZmFlZDdjNDU4Njgz
NTdmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0wOC0yNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxk
IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpjbGVhckZyYW1lTmFtZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmZy
YW1lQ2hpbGRyZW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpmcmFtZVBh
cmVudCk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChfZXdrX2ZyYW1l
X2NoaWxkcmVuX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAoZXdrX2ZyYW1lX2NoaWxkX2ZpbmQp
OgorICAgICAgICAoZXdrX2ZyYW1lX25hbWVfZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9jaGls
ZF9hZGQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19m
cmFtZV9jcmVhdGUpOgorICAgICAgICBVc2UgdHJlZSgpLiBpbnN0ZWFkIG9mIHRyZWUoKS0+Lgor
CiAyMDEzLTA4LTIyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFRkwgYnVpbGQganVpY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggM2FjMzZmYTc2Zjg4OWY5Y2Q0
MGQ2ZjcwZjQ1NmNmMzRlZWIzOTc2Ni4uOWM1MjkwZjQ0OTA2NzZkNjI4Y2NiYmQ4M2EyMTg2NDk1
ODg2Zjk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA4LTI0ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFtZTo6dHJlZSBzaG91
bGQgcmV0dXJuIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAyNTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmdldEZyYW1lQ2hpbGRyZW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpjbGVhck1haW5GcmFtZU5hbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9mcmFtZV9nZXRfbmFtZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2ZyYW1l
X2dldF9wYXJlbnQpOgorICAgICAgICAod2Via2l0X3dlYl9mcmFtZV9maW5kX2ZyYW1lKToKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMpOgorICAgICAgICBVc2UgdHJlZSgpLiBpbnN0
ZWFkIG9mIHRyZWUoKS0+LgorCiAyMDEzLTA4LTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5ODM2PiBbR1RL
XSBDaHJvbWVDbGllbnQ6OnBhaW50IGlzIHN1c2NlcHRpYmxlIHRvIHN5c3RlbSB0aW1lIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCA4OTlhYmQzZTU4ODZiZDYzMTYwMzBlZmY4MjI3YTIyOGQ1
NWE2MjZjLi40MzY3Y2VkYjlmODRmZDI3ZDM2ODcwMWFlNWIyYjMwMjBiODQ4YjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTMtMDgtMjQgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjp0cmVlIHNob3VsZCByZXR1cm4gYSByZWZl
cmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDI1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OnBlcmZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW06CisgICAgICAgICgtW1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcgcmVzb2x2ZWRV
UkxTdHJpbmdGb3JVUkw6dGFyZ2V0Ol0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgbG9hZFBsdWdp
blJlcXVlc3Q6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChhcHBseUFwcGxlRGljdGlvbmFyeUFwcGxpY2F0aW9uUXVpcmtOb25J
bmxpbmVQYXJ0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0
YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVGcmFtZSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKCtbV2Vi
RnJhbWUgX2NyZWF0ZUZyYW1lV2l0aFBhZ2U6ZnJhbWVOYW1lOmZyYW1lVmlldzpvd25lckVsZW1l
bnQ6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF91cGRhdGVCYWNrZ3JvdW5kQW5kVXBkYXRlc1do
aWxlT2Zmc2NyZWVuXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF91bm1hcmtBbGxCYWRHcmFtbWFy
XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF91bm1hcmtBbGxNaXNzcGVsbGluZ3NdKToKKyAgICAg
ICAgKC1bV2ViRnJhbWUgX2F0TW9zdE9uZUZyYW1lSGFzU2VsZWN0aW9uXSk6CisgICAgICAgICgt
W1dlYkZyYW1lIF9maW5kRnJhbWVXaXRoU2VsZWN0aW9uXSk6CisgICAgICAgICgtW1dlYkZyYW1l
IF9kcmF3UmVjdDpjb250ZW50c09ubHk6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9pc0Rlc2Nl
bmRhbnRPZkZyYW1lOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfcmVjdXJzaXZlX3Jlc3VtZU51
bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnNdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Jl
Y3Vyc2l2ZV9wYXVzZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnNdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgbmFtZV0pOgorICAgICAgICAoLVtXZWJGcmFtZSBmaW5kRnJhbWVOYW1lZDpd
KToKKyAgICAgICAgKC1bV2ViRnJhbWUgcGFyZW50RnJhbWVdKToKKyAgICAgICAgKC1bV2ViRnJh
bWUgY2hpbGRGcmFtZXNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dlYlZpZXcgX2F0dGFjaFNjcmlwdERlYnVnZ2VyVG9BbGxGcmFtZXNdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfZGV0YWNoU2NyaXB0RGVidWdnZXJGcm9tQWxsRnJhbWVzXSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2NsZWFyTWFpbkZyYW1lTmFtZV0pOgorICAgICAgICAoLVtXZWJWaWV3IF9p
c1VzaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ10pOgorICAgICAgICAoLVtXZWJWaWV3IF9pc1Nv
ZnR3YXJlUmVuZGVyYWJsZV0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldEhvc3RXaW5kb3c6XSk6
CisgICAgICAgIChpbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIFVzZSB0cmVlKCkuIGluc3RlYWQg
b2YgdHJlZSgpLT4uCisKIDIwMTMtMDgtMjMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzI1NDUpOiBTb21lIFBERnMgZ2VuZXJhdGVkIGJ5
IFdlYktpdCBhcmUgYmxhbmsgd2hlbiB2aWV3ZWQgaW4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDBjNjA3
NmE3M2I1ZWU0ZDljMTZjNjQzZGU0ZDQ3ZThmOGI3ZjYxOTcuLjZmYzljYmNmNzdjMGU5YjBmZjQx
ODc3ZGJiZjY0M2EzMjQ4YzI0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIw
MTMtMDgtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1l
Ojp0cmVlIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDI1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OmNsZWFyRnJhbWVOYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFBlcmZvcm1GaXJzdE5hdmln
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwOgorICAg
ICAgICAoUVdlYkZyYW1lRGF0YTo6UVdlYkZyYW1lRGF0YSk6CisgICAgICAgIChRV2ViRnJhbWVB
ZGFwdGVyOjpsb2FkKToKKyAgICAgICAgKFFXZWJGcmFtZUFkYXB0ZXI6OnVuaXF1ZU5hbWUpOgor
ICAgICAgICAoUVdlYkZyYW1lQWRhcHRlcjo6Y2hpbGRGcmFtZXMpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHA6CisgICAgICAgIChRV2ViUGFnZUFkYXB0ZXI6
OmZpbmRUZXh0KToKKyAgICAgICAgVXNlIHRyZWUoKS4gaW5zdGVhZCBvZiB0cmVlKCktPi4KKwog
MjAxMy0wOC0yMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KIAogICAgICAgICBbUXRdIFVwZGF0ZSBvdXRkYXRlZCBzb3VyY2UtcGF0aHMgaW4gZG9jdW1l
bnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDI0ZGUyMWUwZDI0ZGVmNDcyZTU2ZWZjZjNjMGY5
OGFjNDY1NzJkMDQuLjcxMzFlM2JlZWE5ZmUwN2I2ZTIxODdhMTE3OWZiNmRkN2M5NTU2NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0wOC0yNCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxkIHJldHVybiBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUpOgor
ICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpuYW1lKToKKyAgICAg
ICAgKFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZCk6CisgICAgICAgIChXZWJGcmFtZTo6cGFyZW50
RnJhbWUpOgorICAgICAgICAoRW51bUNoaWxkRnJhbWVzOjpFbnVtQ2hpbGRGcmFtZXMpOgorICAg
ICAgICAoRW51bUNoaWxkRnJhbWVzOjpOZXh0KToKKyAgICAgICAgKEVudW1DaGlsZEZyYW1lczo6
U2tpcCk6CisgICAgICAgIChFbnVtQ2hpbGRGcmFtZXM6OlJlc2V0KToKKyAgICAgICAgKFdlYkZy
YW1lOjppc0Rlc2NlbmRhbnRPZkZyYW1lKToKKyAgICAgICAgKFdlYkZyYW1lOjp1bm1hcmtBbGxN
aXNzcGVsbGluZ3MpOgorICAgICAgICAoV2ViRnJhbWU6OnVubWFya0FsbEJhZEdyYW1tYXIpOgor
ICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6
CisgICAgICAgIChpbmNyZW1lbnRGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpjbGVhck1haW5G
cmFtZU5hbWUpOgorICAgICAgICBVc2UgdHJlZSgpLiBpbnN0ZWFkIG9mIHRyZWUoKS0+LgorCiAy
MDEzLTA4LTIzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5kb3dzXSBSZWZhY3RvciBXZWJGcmFtZSB0byBjb21wb3NlIHdpdGggV2ViRnJhbWVMb2Fk
ZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggM2ExZDU4YzdlN2JjYTg5MjkzOTJlMGU1
ZDZjODUxMDExZjFkZjhkZS4uYmJjYTZkYzRlYWFmMjU2NGQxOTZjMTIzMmJhZjU1N2I2MWI0YWRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wOC0yNCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWU6OnRyZWUgc2hvdWxk
IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OmNyZWF0ZUZyYW1lKToKKyAgICAgICAgVXNlIHRyZWUoKS4gaW5zdGVhZCBvZiB0
cmVlKCktPi4KKwogMjAxMy0wOC0xOSAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5j
b20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExOTkxOD4gRnJhbWU6OnNlbGVj
dGlvbigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyOWI1OThiNTVm
M2Q5ZjY0ZmVhMTIyZjg4NjhiOGEyZjc2NTBhNmM3Li40YmEwZjg2ZGE1OTE1OTMzMGE0Nzk3NmM4
NjBjY2JiOTljZDFkNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTMtMDgtMjQg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lOjp0cmVlIHNo
b3VsZCByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDI1OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwZXJmb3JtSmF2
YVNjcmlwdFVSTFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpm
cmFtZVdpdGhTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6cmVj
dHNGb3JUZXh0TWF0Y2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmluaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNoaWxkRnJhbWVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNsZWFyTWFpbkZyYW1lTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dERyYXdzQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0V2luZG93
UmVzaXplclNpemUpOgorICAgICAgICAoV2ViS2l0OjpmcmFtZVdpdGhTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1bm1hcmtBbGxNaXNzcGVsbGluZ3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp1bm1hcmtBbGxCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYktpdDo6
cGFnZUNvbnRhaW5zQW55SG9yaXpvbnRhbFNjcm9sbGJhcnMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnQpOgor
ICAgICAgICBVc2UgdHJlZSgpLiBpbnN0ZWFkIG9mIHRyZWUoKS0+LgorCiAyMDEzLTA4LTI0ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTU0NTQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDBjZTRhZmVkZmEzNzFkYmZkZWFkMzdkY2Rj
YzllNTAwYjVkMjFhZTUuLjBlNjg4YTE2Yzc3YTlkN2JhYzdhOWY3NmYyNDVmN2I2NzlmMWMwM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTc4LDEyICs3OCwxMiBAQCBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcgogCiBzdGF0aWMg
SlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFz
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBq
c0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS0+c2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBq
c0Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS5zY29wZWRDaGlsZChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBpbmRl
eEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4
KQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0
KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCkt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBqc0Nhc3Q8
SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUo
KS5zY29wZWRDaGlsZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdpbmRvdygpKTsKIH0KIAogc3Rh
dGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90
QmFzZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBib29s
IEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eQogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29u
ZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQg
bm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAv
LyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50
cmVlKCktPnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLnNjb3Bl
ZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERv
bnRFbnVtLCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5CiAKICAgICAvLyBhbGxv
dyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKICAgICB1bnNpZ25lZCBpID0g
cHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAoaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+
ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZENvdW50KCkpIHsKKyAgICBpZiAoaSA8IHRoaXNP
YmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkQ291bnQoKSkgewogICAg
ICAgICBBU1NFUlQoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICBzbG90
LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtLCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGlu
Z3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUg
aW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0
byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCkt
PmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50
cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250
RGVsZXRlIHwgRG9udEVudW0sIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0zMDYsNyArMzA2LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHUKICAg
ICAvLyBXZSBuZWVkIHRvIHRlc3QgdGhlIGNvcnJlY3QgcHJpb3JpdHkgb3JkZXIuCiAKICAgICAv
LyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFdIGV0Yy4gKCM1Njk4MykKLSAgICBpZiAoaW5k
ZXggPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3Vu
dCgpKSB7CisgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVl
KCkuc2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAgICAgIEFTU0VSVChpbmRleCAhPSBQcm9wZXJ0
eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmpl
Y3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBpbmRleCwgaW5kZXhHZXR0ZXIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIEpTRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgLy8g
VG8gYXZvaWQgYnJlYWtpbmcgb2xkIHdpZGdldHMsIG1ha2UgInZhciBsb2NhdGlvbiA9IiBpbiBh
IHRvcC1sZXZlbCBmcmFtZSBjcmVhdGUKICAgICAvLyBhIHByb3BlcnR5IG5hbWVkICJsb2NhdGlv
biIgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIGEgbmF2aWdhdGlvbiAoPHJkYXI6Ly9wcm9ibGVtLzU2
ODgwMzk+KS4KICAgICBpZiAoRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlRE9NV2luZG93KGV4
ZWMpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhY3RpdmVGcmFtZS0+c2V0dGluZ3MoKS51c2Vz
RGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpICYmICFhY3RpdmVGcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoYWN0aXZlRnJhbWUtPnNldHRpbmdzKCkudXNl
c0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSAmJiAhYWN0aXZlRnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxk
QWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCBpbXBsKCkpKQogICAgICAgICAgICAgICAgIHB1
dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJsb2NhdGlvbiIpLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBiZDk1NGU0Y2I2OTJkMWZlNTlmNTU3
NjA2ZGRkYTI4YWYxZTVhZDI1Li4zMTg5YTc2YWM4MjNkZWFmN2IyYTJjZTgwM2I3NDEyNDM2NTYw
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKIAogICAg
IHBhZ2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIHNldEph
dmFTY3JpcHRQYXVzZWQoZnJhbWUsIHBhdXNlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDNkMmJmMmU0YmZiYTdhODgxMWMyOTQ1N2ZkOGMzOGIyYTQxOTIzMDUuLmNkMmY2ZTAz
N2Y1MzhhYTI2NzFjMTAyZWMzZWVlMDliMTNkM2RjZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGNvbnN0IGJvb2wgaXNMb2NhbEFjdGl2ZU9yaWdpbiA9IGFjdGl2
ZVNlY3VyaXR5T3JpZ2luLT5pc0xvY2FsKCk7Ci0gICAgZm9yIChGcmFtZSogYW5jZXN0b3JGcmFt
ZSA9IHRhcmdldEZyYW1lOyBhbmNlc3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yRnJhbWUg
PSB0YXJnZXRGcmFtZTsgYW5jZXN0b3JGcmFtZTsgYW5jZXN0b3JGcmFtZSA9IGFuY2VzdG9yRnJh
bWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICBEb2N1bWVudCogYW5jZXN0b3JEb2N1bWVu
dCA9IGFuY2VzdG9yRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
YmUgYW4gQVNTRVJUPyBGcmFtZXMgc2hvdWxkIGFsd2F5IGhhdmUgZG9jdW1lbnRzLgogICAgICAg
ICBpZiAoIWFuY2VzdG9yRG9jdW1lbnQpCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCBQYXNzUmVmUHRy
PE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiAgICAgICAgIGlmIChzb3VyY2UtPmlzRnJhbWVPd25lckVsZW1lbnQo
KSkgewogICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyRWxlbWVu
dCA9IHRvRnJhbWVPd25lckVsZW1lbnQoc291cmNlLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChm
cmFtZSgpICYmIGZyYW1lKCktPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YoZnJhbWVPd25lckVsZW1l
bnQtPmNvbnRlbnRGcmFtZSgpKSkgeworICAgICAgICAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUo
KS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKGZyYW1lT3duZXJFbGVtZW50LT5jb250ZW50RnJhbWUo
KSkpIHsKICAgICAgICAgICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTI2NzQsMTUgKzI2NzQsMTUg
QEAgYm9vbCBEb2N1bWVudDo6Y2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZyYW1lLWJ1c3RpbmcgaXMgZ2VuZXJhbGx5IGFsbG93
ZWQsIGJ1dCBibG9ja2VkIGZvciBzYW5kYm94ZWQgZnJhbWVzIGxhY2tpbmcgdGhlICdhbGxvdy10
b3AtbmF2aWdhdGlvbicgZmxhZy4KLSAgICBpZiAoIWlzU2FuZGJveGVkKFNhbmRib3hUb3BOYXZp
Z2F0aW9uKSAmJiB0YXJnZXRGcmFtZSA9PSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpKQorICAgIGlm
ICghaXNTYW5kYm94ZWQoU2FuZGJveFRvcE5hdmlnYXRpb24pICYmIHRhcmdldEZyYW1lID09IG1f
ZnJhbWUtPnRyZWUoKS50b3AoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoaXNT
YW5kYm94ZWQoU2FuZGJveE5hdmlnYXRpb24pKSB7Ci0gICAgICAgIGlmICh0YXJnZXRGcmFtZS0+
dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSkKKyAgICAgICAgaWYgKHRhcmdldEZyYW1l
LT50cmVlKCkuaXNEZXNjZW5kYW50T2YobV9mcmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgICAgICBjb25zdCBjaGFyKiByZWFzb24gPSAiVGhlIGZyYW1lIGF0dGVtcHRpbmcg
bmF2aWdhdGlvbiBpcyBzYW5kYm94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9t
IG5hdmlnYXRpbmcgaXRzIGFuY2VzdG9ycy4iOwotICAgICAgICBpZiAoaXNTYW5kYm94ZWQoU2Fu
ZGJveFRvcE5hdmlnYXRpb24pICYmIHRhcmdldEZyYW1lID09IG1fZnJhbWUtPnRyZWUoKS0+dG9w
KCkpCisgICAgICAgIGlmIChpc1NhbmRib3hlZChTYW5kYm94VG9wTmF2aWdhdGlvbikgJiYgdGFy
Z2V0RnJhbWUgPT0gbV9mcmFtZS0+dHJlZSgpLnRvcCgpKQogICAgICAgICAgICAgcmVhc29uID0g
IlRoZSBmcmFtZSBhdHRlbXB0aW5nIG5hdmlnYXRpb24gb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cg
aXMgc2FuZGJveGVkLCBidXQgdGhlICdhbGxvdy10b3AtbmF2aWdhdGlvbicgZmxhZyBpcyBub3Qg
c2V0LiI7CiAKICAgICAgICAgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKHRhcmdldEZyYW1l
LCB1cmwoKSwgcmVhc29uKTsKQEAgLTI3MTAsNyArMjcxMCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNh
bk5hdmlnYXRlKEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICAvLyBzb21lIHdheSByZWxhdGVkIHRv
IHRoZSBmcmFtZSBiZWluZyBuYXZpZ2F0ZSAoZS5nLiwgYnkgdGhlICJvcGVuZXIiCiAgICAgLy8g
YW5kL29yICJwYXJlbnQiIHJlbGF0aW9uKS4gUmVxdWlyaW5nIHNvbWUgc29ydCBvZiByZWxhdGlv
biBwcmV2ZW50cyBhCiAgICAgLy8gZG9jdW1lbnQgZnJvbSBuYXZpZ2F0aW5nIGFyYml0cmFyeSwg
dW5yZWxhdGVkIHRvcC1sZXZlbCBmcmFtZXMuCi0gICAgaWYgKCF0YXJnZXRGcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKSkgeworICAgIGlmICghdGFyZ2V0RnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewog
ICAgICAgICBpZiAodGFyZ2V0RnJhbWUgPT0gbV9mcmFtZS0+bG9hZGVyKCkub3BlbmVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMjcyOCwxMyArMjcyOCwxMyBAQCBGcmFtZSog
RG9jdW1lbnQ6OmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5KCkKICAg
ICBpZiAoIWN1cnJlbnRGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBGcmFtZSogYW5j
ZXN0b3JGcmFtZSA9IGN1cnJlbnRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBGcmFtZSog
YW5jZXN0b3JGcmFtZSA9IGN1cnJlbnRGcmFtZS0+dHJlZSgpLnBhcmVudCgpOwogCiAgICAgd2hp
bGUgKGFuY2VzdG9yRnJhbWUpIHsKICAgICAgICAgaWYgKCFhbmNlc3RvckZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3Moc2VjdXJpdHlPcmlnaW4oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gY3VycmVudEZyYW1lOwogICAgICAgICBjdXJyZW50RnJhbWUgPSBhbmNl
c3RvckZyYW1lOwotICAgICAgICBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JGcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKTsKKyAgICAgICAgYW5jZXN0b3JGcmFtZSA9IGFuY2VzdG9yRnJhbWUtPnRyZWUo
KS5wYXJlbnQoKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zMTcxLDcgKzMxNzEsNyBA
QCB2b2lkIERvY3VtZW50Ojpub3RpZnlTZWFtbGVzc0NoaWxkRG9jdW1lbnRzT2ZTdHlsZXNoZWV0
VXBkYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU2VhbWxlc3MgY2hpbGQg
ZnJhbWVzIGFyZSBleHBlY3RlZCB0byBub3RpZnkgdGhlaXIgc2VhbWxlc3MgY2hpbGRyZW4gcmVj
dXJzaXZlbHksIHNvIHdlIG9ubHkgZG8gZGlyZWN0IGNoaWxkcmVuLgotICAgIGZvciAoRnJhbWUq
IGNoaWxkID0gZnJhbWUoKS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZy
YW1lKCktPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCku
bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBEb2N1bWVudCogY2hpbGREb2N1bWVudCA9IGNoaWxk
LT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoY2hpbGREb2N1bWVudC0+c2hvdWxkRGlzcGxheVNl
YW1sZXNzbHlXaXRoUGFyZW50KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChjaGlsZERvY3VtZW50
LT5zZWFtbGVzc1BhcmVudElGcmFtZSgpLT5kb2N1bWVudCgpID09IHRoaXMpOwpAQCAtNDE0Nyw3
ICs0MTQ3LDcgQEAgS1VSTCBEb2N1bWVudDo6b3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCkKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgb3BlblNlYXJjaFJlbGF0aW9uID0gInNlYXJjaCI7
CiAKICAgICAvLyBGSVhNRTogV2h5IGRvIG9ubHkgdG9wLWxldmVsIGZyYW1lcyBoYXZlIG9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTHM/Ci0gICAgaWYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnRyZWUo
KS0+cGFyZW50KCkpCisgICAgaWYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnRyZWUoKS5wYXJlbnQo
KSkKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVl
ZCB0byB3YWl0IGZvciBGcmFtZVN0YXRlQ29tcGxldGU/CkBAIC00MjExLDcgKzQyMTEsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRUcmFuc2Zvcm1Tb3VyY2UoUGFzc093blB0cjxUcmFuc2Zvcm1Tb3Vy
Y2U+IHNvdXJjZSkKIHZvaWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2
YWx1ZSkKIHsKICAgICBtX2Rlc2lnbk1vZGUgPSB2YWx1ZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWU7IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dChtX2ZyYW1lKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
ZnJhbWU7IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KG1fZnJhbWUpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1
bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogfQogCkBAIC00MjMzLDcgKzQyMzMsNyBAQCBEb2N1bWVu
dCogRG9jdW1lbnQ6OnBhcmVudERvY3VtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUp
CiAgICAgICAgIHJldHVybiAwOwotICAgIEZyYW1lKiBwYXJlbnQgPSBtX2ZyYW1lLT50cmVlKCkt
PnBhcmVudCgpOworICAgIEZyYW1lKiBwYXJlbnQgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7
CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBwYXJlbnQt
PmRvY3VtZW50KCk7CkBAIC00NTQ5LDcgKzQ1NDksNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KCkKICAgICAvLyBJZiB3ZSBkbyBub3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBv
cmlnaW4gZnJvbSB0aGUgVVJMLCB0aGVuIHdlIHRyeSB0bwogICAgIC8vIGZpbmQgb25lIHZpYSB0
aGUgZnJhbWUgaGllcmFyY2h5LgogCi0gICAgRnJhbWUqIG93bmVyRnJhbWUgPSBtX2ZyYW1lLT50
cmVlKCktPnBhcmVudCgpOworICAgIEZyYW1lKiBvd25lckZyYW1lID0gbV9mcmFtZS0+dHJlZSgp
LnBhcmVudCgpOwogICAgIGlmICghb3duZXJGcmFtZSkKICAgICAgICAgb3duZXJGcmFtZSA9IG1f
ZnJhbWUtPmxvYWRlcigpLm9wZW5lcigpOwogCkBAIC00NTc2LDEwICs0NTc2LDEwIEBAIHZvaWQg
RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogCiB2b2lkIERvY3VtZW50Ojppbml0Q29u
dGVudFNlY3VyaXR5UG9saWN5KCkKIHsKLSAgICBpZiAoIW1fZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCkgfHwgKCFzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIobV91cmwpICYmICFp
c1BsdWdpbkRvY3VtZW50KCkpKQorICAgIGlmICghbV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpIHx8
ICghc2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKG1fdXJsKSAmJiAhaXNQbHVn
aW5Eb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmNvcHlTdGF0ZUZyb20obV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKS0+ZG9jdW1lbnQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpOworICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSgp
LT5jb3B5U3RhdGVGcm9tKG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQoKS0+ZG9jdW1lbnQoKS0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCkpOwogfQogCiBib29sIERvY3VtZW50Ojppc0NvbnRleHRUaHJl
YWQoKSBjb25zdApAQCAtNDk0OCw3ICs0OTQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHNob3J0IGZsYWcK
IAogICAgICAgICAvLyBBIGRlc2NlbmRhbnQgYnJvd3NpbmcgY29udGV4dCdzIGRvY3VtZW50IGhh
cyBhIG5vbi1lbXB0eSBmdWxsc2NyZWVuIGVsZW1lbnQgc3RhY2suCiAgICAgICAgIGJvb2wgZGVz
Y2VuZGVudEhhc05vbkVtcHR5U3RhY2sgPSBmYWxzZTsKLSAgICAgICAgZm9yIChGcmFtZSogZGVz
Y2VuZGFudCA9IGZyYW1lKCkgPyBmcmFtZSgpLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpIDogMDsg
ZGVzY2VuZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZyYW1lKCkgPyBmcmFtZSgp
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVz
Y2VuZGFudC0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoZGVzY2Vu
ZGFudC0+ZG9jdW1lbnQoKS0+d2Via2l0RnVsbHNjcmVlbkVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgICAgIGRlc2NlbmRlbnRIYXNOb25FbXB0eVN0YWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTUwNzEsNyArNTA3MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRG
dWxsc2NyZWVuKCkKICAgICAvLyBlbGVtZW50IHN0YWNrIChpZiBhbnkpLCBvcmRlcmVkIHNvIHRo
YXQgdGhlIGNoaWxkIG9mIHRoZSBkb2MgaXMgbGFzdCBhbmQgdGhlIGRvY3VtZW50IGZ1cnRoZXN0
CiAgICAgLy8gYXdheSBmcm9tIHRoZSBkb2MgaXMgZmlyc3QuCiAgICAgRGVxdWU8UmVmUHRyPERv
Y3VtZW50PiA+IGRlc2NlbmRhbnRzOwotICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQgPSBmcmFt
ZSgpID8gZnJhbWUoKS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSA6IDA7IGRlc2NlbmRhbnQ7IGRl
c2NlbmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9y
IChGcmFtZSogZGVzY2VuZGFudCA9IGZyYW1lKCkgPyBmcmFtZSgpLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJr
aXRGdWxsc2NyZWVuRWxlbWVudCgpKQogICAgICAgICAgICAgZGVzY2VuZGFudHMucHJlcGVuZChk
ZXNjZW5kYW50LT5kb2N1bWVudCgpKTsKICAgICB9CkBAIC01NTY4LDcgKzU1NjgsNyBAQCB2b2lk
IERvY3VtZW50OjpkaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcihOb2RlKiBoYW5kbGVyKQogI2Vu
ZGlmCiAgICAgaWYgKG1fdG91Y2hFdmVudFRhcmdldHMtPnNpemUoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChjb25z
dCBGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkg
JiYgZnJhbWUtPmRvY3VtZW50KCktPmhhc1RvdWNoRXZlbnRIYW5kbGVycygpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggNDU5OWM5N2Vi
YWZhMjc1MDVjZjI3ZDI0YmJlZDg2NzAxMTk0MWE0YS4uNTA2MDRiMjE2MDRhOTFkYThhYzE1NDQx
OGI4NWY3OGEwOWJhMDk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTM3Niw4ICsz
NzYsOCBAQCB2b2lkIFRyZWVTY29wZTo6YWRvcHRJZk5lZWRlZChOb2RlKiBub2RlKQogCiBzdGF0
aWMgRWxlbWVudCogZm9jdXNlZEZyYW1lT3duZXJFbGVtZW50KEZyYW1lKiBmb2N1c2VkRnJhbWUs
IEZyYW1lKiBjdXJyZW50RnJhbWUpCiB7Ci0gICAgZm9yICg7IGZvY3VzZWRGcmFtZTsgZm9jdXNl
ZEZyYW1lID0gZm9jdXNlZEZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChm
b2N1c2VkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPT0gY3VycmVudEZyYW1lKQorICAgIGZvciAo
OyBmb2N1c2VkRnJhbWU7IGZvY3VzZWRGcmFtZSA9IGZvY3VzZWRGcmFtZS0+dHJlZSgpLnBhcmVu
dCgpKSB7CisgICAgICAgIGlmIChmb2N1c2VkRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSA9PSBjdXJy
ZW50RnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZm9jdXNlZEZyYW1lLT5vd25lckVsZW1lbnQo
KTsKICAgICB9CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGZlYzNkNTIxYzUyZWQ4OWUzNWZiZWQzY2I3YzdmYzAwNWZlNmZmZDMu
LjE4NWY1NWFjNWY4NDdjZDNiMjQ0OTViZjhlYjZlYmI5YTk4MDM3ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjpjb250YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3Rl
ZCgpCiB7CiAgICAgLy8gRmluZCB0aGUgcGFyZW50IGZyYW1lOyBpZiB0aGVyZSBpcyBub25lLCB0
aGVuIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSAgICBGcmFtZSogcGFyZW50ID0gbV9mcmFtZS0+
dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBGcmFtZSogcGFyZW50ID0gbV9mcmFtZS0+dHJlZSgpLnBh
cmVudCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgUGFnZSogcGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAK
aW5kZXggOWU2MDEyYjczMmM5YTk1YmM2MDdjMDk2YTYxOGY0YTkwYmMxNTg3ZS4uM2EzZWI4ZDNk
MTgwZWZjMTRlYzUwZjcwNjE1NzM0MWE0OTI3MGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgQ2FjaGVkRnJhbWVCYXNlOjpDYWNoZWRG
cmFtZUJhc2UoRnJhbWUqIGZyYW1lKQogICAgICwgbV92aWV3KGZyYW1lLT52aWV3KCkpCiAgICAg
LCBtX21vdXNlUHJlc3NOb2RlKGZyYW1lLT5ldmVudEhhbmRsZXIoKS5tb3VzZVByZXNzTm9kZSgp
KQogICAgICwgbV91cmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKQotICAgICwgbV9pc01haW5G
cmFtZSghZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgLCBtX2lzTWFpbkZyYW1lKCFmcmFt
ZS0+dHJlZSgpLnBhcmVudCgpKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICAsIG1faXNDb21wb3NpdGVkKGZyYW1lLT52aWV3KCktPmhhc0NvbXBvc2l0ZWRDb250ZW50KCkp
CiAjZW5kaWYKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIENhY2hlZEZyYW1lQmFzZTo6cmVzdG9y
ZSgpCiAKICAgICAvLyBSZWNvbnN0cnVjdCB0aGUgRnJhbWVUcmVlCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fY2hpbGRGcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZyYW1lLnRy
ZWUoKS0+YXBwZW5kQ2hpbGQoJm1fY2hpbGRGcmFtZXNbaV0tPnZpZXcoKS0+ZnJhbWUoKSk7Cisg
ICAgICAgIGZyYW1lLnRyZWUoKS5hcHBlbmRDaGlsZCgmbV9jaGlsZEZyYW1lc1tpXS0+dmlldygp
LT5mcmFtZSgpKTsKIAogICAgIC8vIE9wZW4gdGhlIGNoaWxkIENhY2hlZEZyYW1lcyBpbiB0aGVp
ciByZXNwZWN0aXZlIEZyYW1lTG9hZGVycy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9jaGlsZEZyYW1lcy5zaXplKCk7ICsraSkKQEAgLTE2OSw3ICsxNjksNyBAQCBDYWNoZWRGcmFt
ZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIGZyYW1lLT5sb2FkZXIoKS5zdG9wTG9h
ZGluZyhVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlKTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCi0gICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogY2hp
bGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS5uZXh0U2libGluZygpKQogICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChDYWNoZWRG
cmFtZTo6Y3JlYXRlKGNoaWxkKSk7CiAKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMgbXVzdCBi
ZSBzdXNwZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YSwKQEAgLTE5
OCw3ICsxOTgsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAg
IC8vIDEgLSBXZSByZXVzZSB0aGUgbWFpbiBmcmFtZSwgc28gd2hlbiBpdCBuYXZpZ2F0ZXMgdG8g
YSBuZXcgcGFnZSBsb2FkIGl0IG5lZWRzIHRvIHN0YXJ0IHdpdGggYSBibGFuayBGcmFtZVRyZWUu
CiAgICAgLy8gMiAtIEl0J3MgbXVjaCBlYXNpZXIgdG8gZGVzdHJveSBhIENhY2hlZEZyYW1lIHdo
aWxlIGl0IHJlc2lkZXMgaW4gdGhlIFBhZ2VDYWNoZSBpZiBpdCBpcyBkaXNjb25uZWN0ZWQgZnJv
bSBpdHMgcGFyZW50LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkRnJhbWVz
LnNpemUoKTsgKytpKQotICAgICAgICBmcmFtZS0+dHJlZSgpLT5yZW1vdmVDaGlsZCgmbV9jaGls
ZEZyYW1lc1tpXS0+dmlldygpLT5mcmFtZSgpKTsKKyAgICAgICAgZnJhbWUtPnRyZWUoKS5yZW1v
dmVDaGlsZCgmbV9jaGlsZEZyYW1lc1tpXS0+dmlldygpLT5mcmFtZSgpKTsKIAogICAgIGlmICgh
bV9pc01haW5GcmFtZSkKICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+ZGVjcmVtZW50U3ViZnJhbWVD
b3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggNjFkYmVhNDgy
NjBiMDEyMTJhZTA0ZTliYzA3MzMyMjkyMGVmNDdjNy4uMzdjZjlmYTI3MzE4MzVhNGM2MWQ3MWMw
MzRiYzhlNDQ4MWVjN2E1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgQ2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlKiBwYWdlKQogICAg
ICAgICBlbGVtZW50LT51cGRhdGVGb2N1c0FwcGVhcmFuY2UodHJ1ZSk7CiAKICAgICBpZiAobV9u
ZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKLSAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpCisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dmlzaXRlZExpbmtTdGF0ZSgpLmludmFsaWRhdGVTdHls
ZUZvckFsbExpbmtzKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
aW5kZXggOTczYjAyYjQwNjc4YzE4MWZmYWMyNGIzYzU3NGZkMDNkYWM3YjAyNi4uOWM1MTJjOWNk
MWMwZWEwMDVjMTY3NmVmYzc2MGIzN2YxM2E4MDAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgfQogICAg
IEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJQYWdlQ2FjaGUuRnJhbWVS
ZWplY3RSZWFzb25Db3VudCIsIHJlYXNvbkNvdW50LCAxICsgTnVtYmVyT2ZSZWFzb25zRnJhbWVz
Q2Fubm90QmVJblBhZ2VDYWNoZSk7CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAg
IHJlamVjdFJlYXNvbnMgfD0gbG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKGNoaWxkLCBpbmRlbnRM
ZXZlbCArIDEpOwogICAgIAogICAgIFBDTE9HKHJlamVjdFJlYXNvbnMgPyAiIEZyYW1lIENBTk5P
VCBiZSBjYWNoZWQiIDogIiBGcmFtZSBDQU4gYmUgY2FjaGVkIik7CkBAIC0zMDMsNyArMzAzLDcg
QEAgUGFnZUNhY2hlOjpQYWdlQ2FjaGUoKQogICAgIAogYm9vbCBQYWdlQ2FjaGU6OmNhbkNhY2hl
UGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIGZvciAoRnJhbWUq
IGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFt
ZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0
U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFt
ZShjaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDk1YTVhOTkyOWY4MmUxYjVlZmNkNTZhYmU3NTM0YjFl
NTNiNjg1OGIuLmU4ZTllOWNiYWUyOTJkYzc5NTNlODYxZjdjODk5MzdlMjZkNzQyM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEhU
TUxEb2N1bWVudDo6aGFzRm9jdXMoKQogICAgIGlmICghcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChGcmFtZSogZm9jdXNl
ZEZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZEZyYW1lKCkpIHsKLSAgICAg
ICAgaWYgKGZvY3VzZWRGcmFtZS0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihmcmFtZSgpKSkKKyAg
ICAgICAgaWYgKGZvY3VzZWRGcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKGZyYW1lKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDJiM2Vh
NzI3MTg5YTlhYWQ4NWI4MGMzODAxNDI5MmQ0YWE4MmRlZjQuLmQ3MGVlNmY4ODcxYmU3NTIwNWVk
ZDk4Mzc5MzE4ZGRmNDg4ZWExNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6cmVzdGFydFNpbWlsYXJQbHVnSW5zKCkKICAgICBpZiAoIWRvY3VtZW50KCkt
PnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
cGFnZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigp
LT5jb250YWluc1BsdWdpbnMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggOTczNmI5NTg1OTUzZGQ5ODRkNjdiMTAzZGU2ZjI5Nzk3
ZjU4ZTJhMi4uYTRkMTVmYmViYmVkYWM3OTIyMGZiM2U1YmMyM2RmNjQ5YWI3MjgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJl
ZlB0cgogICAgIHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKIAogICAgIEZyYW1lKiBt
YWluRnJhbWUgPSBtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCk7Ci0gICAgZm9yIChGcmFtZSogZnJh
bWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dChtYWluRnJhbWUpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSkpIHsKICAgICAg
ICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCmluZGV4IDIyY2YzZWRiYjQ3ODE3MzJkMDJmNGQ2MDljOGFhZGM2ODlmY2VjMzYu
LjZhZmZlNjkzZWQzZjgwZjg0Yzg5Y2MxM2QzMWNmOWI3N2U3MmMzN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMjY2LDcg
KzI2Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZpbmRGcmFtZXNXaXRoVW5pbnN0
cnVtZW50ZWRDYW52YXNlcygpCiB7CiAgICAgbV9mcmFtZXNXaXRoVW5pbnN0cnVtZW50ZWRDYW52
YXNlcy5jbGVhcigpOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+cGFn
ZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5wYWdlKCktPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmZyYW1lTmF2
aWdhdGVkKEZyYW1lKiBmcmFtZSkKICAgICAgICAgICAgICAgICBTdHJpbmcgZnJhbWVJZCA9IG1f
cGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKICAgICAgICAgICAgICAgICBtX2Zyb250ZW5kLT50
cmFjZUxvZ3NSZW1vdmVkKCZmcmFtZUlkLCAwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCk7CisgICAgICAgICAgICBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA5
ZWYyZTRkOGJiMTVhZGM1M2E1ZGQ5YTNjZGUwOTBkZjg2NWNmZWIwLi5iZDNjYjFhZWQ3MjE1MjQ4
OTMzNzNjM2Y3MjUyNTAxYzkzNjA3ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpyZXN0b3JlKCkKIFZlY3RvcjxEb2N1bWVudCo+IEluc3BlY3RvckRPTUFnZW50
Ojpkb2N1bWVudHMoKQogewogICAgIFZlY3RvcjxEb2N1bWVudCo+IHJlc3VsdDsKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2Rv
Y3VtZW50LT5mcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwog
ICAgICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCmlu
ZGV4IDliODA3N2RmMWM2ODQxZTkyYWY4MTBkNzFjM2IzMmJhNjExZmNjM2IuLjZlMjg4YWRjZmU5
ODlkNTFjY2E3Yzg2MzE3Y2MxN2QyOWQ2MWNkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCkBAIC03MjgsNyArNzI4
LDcgQEAgYm9vbCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmFzc2VydEVuYWJsZWQoRXJyb3JT
dHJpbmcqIGVycm9yKQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ6OmFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JPcmlnaW4oRXJyb3JTdHJp
bmcqIGVycm9yLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdl
bnQtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQob3JpZ2luKSkKICAgICAg
ICAgICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNlYjAxZjUzMTJkYjEw
MjFkNTQ5MTdkMGVlZTRiODU5OGVkYmM3ZWQuLmE5OGY5YTZiYmRmZTIzMGYzMGI1NTUxMTNkNjk2
NDljNWVmNmM4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUK
ICAgICAvLyBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgYm9v
bCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxzZTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dChtYWluRnJhbWUoKSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUoKSkpIHsK
ICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAg
IFZlY3RvcjxLVVJMPiBhbGxVUkxzID0gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKTsK
ICAgICAgICAgZm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsVVJMcy5i
ZWdpbigpOyBpdCAhPSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7CkBAIC02MTgsNyArNjE4LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkZWxldGVD
b29raWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogICAgIEtVUkwgcGFyc2VkVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX3BhZ2UtPm1haW5GcmFtZSgpKSkKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fcGFnZS0+bWFpbkZyYW1lKCkpKQogICAgICAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2ll
TmFtZSk7CiB9CiAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbgog
ICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA/ICpvcHRpb25h
bENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKICAgICBSZWd1bGFyRXhwcmVzc2lvbiByZWdleCA9IENv
bnRlbnRTZWFyY2hVdGlsczo6Y3JlYXRlU2VhcmNoUmVnZXgodGV4dCwgY2FzZVNlbnNpdGl2ZSwg
aXNSZWdleCk7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX3BhZ2UtPm1haW5G
cmFtZSgpKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQobV9wYWdlLT5tYWluRnJh
bWUoKSkpIHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnQ7CiAgICAgICAgIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZSo+IGFsbFJlc291cmNlcyA9IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKGZyYW1lKTsK
ICAgICAgICAgZm9yIChWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gYWxsUmVzb3VyY2VzLmVuZCgpOyArK2l0KSB7
CkBAIC05NjEsNyArOTYxLDcgQEAgU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9hZGVySWQo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6Zmlu
ZEZyYW1lV2l0aFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKQog
ewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkb2N1bWVu
dE9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBp
ZiAoZG9jdW1lbnRPcmlnaW4tPnRvUmF3U3RyaW5nKCkgPT0gb3JpZ2luUmF3U3RyaW5nKQogICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lOwpAQCAtMTEwMiw4ICsxMTAyLDggQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RG
b3JGcmFtZShGcmEKICAgICAgICAgLnNldFVybChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkpCiAgICAgICAgIC5zZXRNaW1lVHlwZShmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKQogICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4oZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpOwotICAgIGlm
IChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgZnJhbWVPYmplY3QtPnNldFBhcmVu
dElkKGZyYW1lSWQoZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpKTsKKyAgICBpZiAoZnJhbWUtPnRy
ZWUoKS5wYXJlbnQoKSkKKyAgICAgICAgZnJhbWVPYmplY3QtPnNldFBhcmVudElkKGZyYW1lSWQo
ZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkpOwogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkp
IHsKICAgICAgICAgU3RyaW5nIG5hbWUgPSBmcmFtZS0+b3duZXJFbGVtZW50KCktPmdldE5hbWVB
dHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQpAQCAtMTE0MSw3ICsxMTQx
LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IElu
c3BlY3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3QKICAgICB9CiAKICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gPiBjaGls
ZHJlbkFycmF5OwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7Cisg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghY2hp
bGRyZW5BcnJheSkgewogICAgICAgICAgICAgY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+OjpjcmVhdGUoKTsKICAg
ICAgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRGcmFtZXMoY2hpbGRyZW5BcnJheSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMzVhMzUzOWNh
NDIxZjU2ODcyZWQ3MTdmZDk4N2YzNmZjZGNmYTI5Yi4uYzdkYjI5NDBjOTM3ZmM5YjczOGY4Zjg3
YWUwYzlmZDczZTU4ZDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
dW5tdXRlQ29uc29sZSgpCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNv
bnRleHRDcmVhdGlvbigpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNl
Y3VyaXR5T3JpZ2luKj4gPiBpc29sYXRlZENvbnRleHRzOwotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1faW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlw
dHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTY0OWNjNjdiNTdjODc3ZTQ1
YmZiNWFhMmJkMWFmNjBjOTZjYWM0YS4uOGRmMjVhZWM3MjM1MjRjY2U5MTcyZDRlODRiYzhhYzg0
YWZlM2RiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01
MDQsNyArNTA0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKICAgICBpZiAobmV3UmVxdWVz
dC5jYWNoZVBvbGljeSgpID09IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgJiYgaXNQb3N0T3JSZWRp
cmVjdEFmdGVyUG9zdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgbmV3
UmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CiAKLSAgICBG
cmFtZSogdG9wID0gbV9mcmFtZS0+dHJlZSgpLT50b3AoKTsKKyAgICBGcmFtZSogdG9wID0gbV9m
cmFtZS0+dHJlZSgpLnRvcCgpOwogICAgIGlmICh0b3AgIT0gbV9mcmFtZSkgewogICAgICAgICBp
ZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVudENoZWNrZXIoKS0+Y2FuRGlzcGxheUluc2Vj
dXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3Qu
dXJsKCkpKSB7CiAgICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVy
KCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVlc3QpKTsKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkg
Y29uc3QKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgICAgICAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoZGF0YSwg
ci51cmwoKSwgci5taW1lVHlwZSgpLCByLnRleHRFbmNvZGluZ05hbWUoKSwgZnJhbWUoKS0+dHJl
ZSgpLT51bmlxdWVOYW1lKCkpOworICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShk
YXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFtZSgp
LT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCAxOTJmZTExYmU5NTJmOTQx
Nzc2ZDhjZGEyMjgzYmEyYTc1NDIzNTA5Li40NjMxYzc4MmM4MjVmMzllOTEzNWExOTA5MmJkNzY3
NzlmZWMxOWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCBUZXh0UmVzb3VyY2VEZWNvZGVyKiBEb2N1bWVudFdyaXRlcjo6Y3Jl
YXRlRGVjb2RlcklmTmVlZGVkKCkKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKG1fbWltZVR5cGUsCiAgICAgICAgICAgICBtX2ZyYW1lLT5zZXR0aW5ncygp
LmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCksCiAgICAgICAgICAgICBtX2ZyYW1lLT5zZXR0aW5n
cygpLnVzZXNFbmNvZGluZ0RldGVjdG9yKCkpOwotICAgICAgICBGcmFtZSogcGFyZW50RnJhbWUg
PSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgICAgICBGcmFtZSogcGFyZW50RnJhbWUg
PSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgICAgIC8vIFNldCB0aGUgaGludCBlbmNv
ZGluZyB0byB0aGUgcGFyZW50IGZyYW1lIGVuY29kaW5nIG9ubHkgaWYKICAgICAgICAgLy8gdGhl
IHBhcmVudCBhbmQgdGhlIGN1cnJlbnQgZnJhbWVzIHNoYXJlIHRoZSBzZWN1cml0eSBvcmlnaW4u
CiAgICAgICAgIC8vIFdlIGltcG9zZSB0aGlzIGNvbmRpdGlvbiBiZWNhdXNlIHNvbWVib2R5IGNh
biBtYWtlIGEgY2hpbGQgZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IGYxMTY3Y2FhOTdhNTJiMTIxZDBhOWIxZDQzMDQwYTMxZTZhZTcyNDQuLjI4ZDBiNjJlZTk5
OTllMWRjNTllZjk5NTE5ZTBlOWMzY2E1YjJlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZv
cm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKICAgICAvLyB0aGFuIHJl
cGxhY2luZyB0aGlzIGZyYW1lJ3MgY29udGVudCwgc28gdGhpcyBjaGVjayBpcyBmbGF3ZWQuIE9u
IHRoZSBvdGhlciBoYW5kLCB0aGUgY2hlY2sgaXMgaGFyZGx5CiAgICAgLy8gbmVlZGVkIGFueSBt
b3JlIG5vdyB0aGF0IHdlIHJlc2V0IG1fc3VibWl0dGVkRm9ybVVSTCBvbiBlYWNoIG1vdXNlIG9y
IGtleSBkb3duIGV2ZW50LgogCi0gICAgaWYgKG1fZnJhbWUudHJlZSgpLT5pc0Rlc2NlbmRhbnRP
Zih0YXJnZXRGcmFtZSkpIHsKKyAgICBpZiAobV9mcmFtZS50cmVlKCkuaXNEZXNjZW5kYW50T2Yo
dGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmIChtX3N1Ym1pdHRlZEZvcm1VUkwgPT0gc3VibWlz
c2lvbi0+cmVxdWVzdFVSTCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3N1Ym1p
dHRlZEZvcm1VUkwgPSBzdWJtaXNzaW9uLT5yZXF1ZXN0VVJMKCk7CkBAIC03MzksNyArNzM5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERvbmUoKQogCiBib29sIEZyYW1lTG9hZGVyOjphbGxD
aGlsZHJlbkFyZUNvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUudHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgp
LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIGlmICghY2hpbGQtPmxvYWRlcigpLm1faXNDb21wbGV0ZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC03NDgsNyArNzQ4LDcgQEAgYm9vbCBGcmFtZUxv
YWRlcjo6YWxsQ2hpbGRyZW5BcmVDb21wbGV0ZSgpIGNvbnN0CiAKIGJvb2wgRnJhbWVMb2FkZXI6
OmFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCkgY29uc3QKIHsKLSAgICBmb3IgKEZyYW1lKiBhbmNl
c3RvciA9ICZtX2ZyYW1lOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLT5w
YXJlbnQoKSkgeworICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yID0gJm1fZnJhbWU7IGFuY2VzdG9y
OyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCkucGFyZW50KCkpIHsKICAgICAgICAgaWYgKCFh
bmNlc3Rvci0+bG9hZGVyKCkubV9pc0NvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50
b0NoaWxkRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsCiAgICAg
QVNTRVJUKGNoaWxkRnJhbWUpOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCi0gICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZyYW1lLT50cmVlKCktPnVu
aXF1ZU5hbWUoKSwgdXJsKTsgICAgCisgICAgUmVmUHRyPEFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2
ZSA9IGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjaGlsZEZy
YW1lLT50cmVlKCkudW5pcXVlTmFtZSgpLCB1cmwpOwogICAgIGlmIChzdWJmcmFtZUFyY2hpdmUp
IHsKICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZEFyY2hpdmUoc3ViZnJhbWVBcmNo
aXZlLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTg2NSw3ICs4NjUsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVyZXIsCiAgICAgLy8gb2YgdGhpcyBjaGlsZCBmcmFtZSB3aXRoIHdoYXRl
dmVyIHdhcyB0aGVyZSBhdCB0aGF0IHBvaW50LgogICAgIGlmIChwYXJlbnRJdGVtICYmIHBhcmVu
dEl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpICYmIGlzQmFja0ZvcndhcmRMb2FkVHlwZShsb2FkVHlw
ZSgpKSAKICAgICAgICAgJiYgIW1fZnJhbWUuZG9jdW1lbnQoKS0+bG9hZEV2ZW50RmluaXNoZWQo
KSkgewotICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtID0gcGFyZW50SXRlbS0+Y2hpbGRJ
dGVtV2l0aFRhcmdldChjaGlsZEZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSk7CisgICAgICAg
IEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW0gPSBwYXJlbnRJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0
KGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogICAgICAgICBpZiAoY2hpbGRJdGVt
KSB7CiAgICAgICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5tX3JlcXVlc3RlZEhpc3RvcnlJ
dGVtID0gY2hpbGRJdGVtOwogICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZERp
ZmZlcmVudERvY3VtZW50SXRlbShjaGlsZEl0ZW0sIGxvYWRUeXBlKCksIE1heUF0dGVtcHRDYWNo
ZU9ubHlMb2FkRm9yRm9ybVN1Ym1pc3Npb25JdGVtKTsKQEAgLTkzOCw3ICs5MzgsNyBAQCBTdHJp
bmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBjb25zdAogICAgIC8vIGZvciB3aHkg
d2Ugd2FsayB0aGUgcGFyZW50IGNoYWluIGZvciBzcmNkb2MgZG9jdW1lbnRzLgogICAgIEZyYW1l
KiBmcmFtZSA9ICZtX2ZyYW1lOwogICAgIHdoaWxlIChmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTcmNk
b2NEb2N1bWVudCgpKSB7Ci0gICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7
CisgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKICAgICAgICAgLy8gU3Jj
ZG9jIGRvY3VtZW50cyBjYW5ub3QgYmUgdG9wLWxldmVsIGRvY3VtZW50cywgYnkgZGVmaW5pdGlv
biwKICAgICAgICAgLy8gYmVjYXVzZSB0aGV5IG5lZWQgdG8gYmUgY29udGFpbmVkIGluIGlmcmFt
ZXMgd2l0aCB0aGUgc3JjZG9jLgogICAgICAgICBBU1NFUlQoZnJhbWUpOwpAQCAtMTAwMywxNSAr
MTAwMywxNSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZXNldE11bHRpcGxlRm9ybVN1Ym1pc3Npb25Q
cm90ZWN0aW9uKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKQogewotICAgIGlmIChtX2ZyYW1lLnRyZWUoKS0+cGFyZW50KCkpCi0gICAgICAgIHNldEZp
cnN0UGFydHlGb3JDb29raWVzKG1fZnJhbWUudHJlZSgpLT5wYXJlbnQoKS0+ZG9jdW1lbnQoKS0+
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgaWYgKG1fZnJhbWUudHJlZSgpLnBhcmVudCgp
KQorICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLnRyZWUoKS5wYXJlbnQo
KS0+ZG9jdW1lbnQoKS0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgZWxzZQogICAgICAg
ICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYg
dXJsKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpCisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoJm1fZnJhbWUpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXModXJsKTsKIH0KIApAQCAtMTA5MSwxMCArMTA5MSwxMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb21wbGV0ZWQoKQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCgmbV9mcmFtZSk7
CiAKLSAgICBmb3IgKEZyYW1lKiBkZXNjZW5kYW50ID0gbV9mcmFtZS50cmVlKCktPnRyYXZlcnNl
TmV4dCgmbV9mcmFtZSk7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5kYW50LT50cmVl
KCktPnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpCisgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9
IG1fZnJhbWUudHJlZSgpLnRyYXZlcnNlTmV4dCgmbV9mcmFtZSk7IGRlc2NlbmRhbnQ7IGRlc2Nl
bmRhbnQgPSBkZXNjZW5kYW50LT50cmVlKCkudHJhdmVyc2VOZXh0KCZtX2ZyYW1lKSkKICAgICAg
ICAgZGVzY2VuZGFudC0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnN0YXJ0VGltZXIoKTsKIAotICAg
IGlmIChGcmFtZSogcGFyZW50ID0gbV9mcmFtZS50cmVlKCktPnBhcmVudCgpKQorICAgIGlmIChG
cmFtZSogcGFyZW50ID0gbV9mcmFtZS50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHBhcmVudC0+
bG9hZGVyKCkuY2hlY2tDb21wbGV0ZWQoKTsKIAogICAgIGlmIChtX2ZyYW1lLnZpZXcoKSkKQEAg
LTExMDYsNyArMTEwNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0ZWQoKQogewogICAgIGlm
IChtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgbV9hY3Rpdml0eUFzc2VydGlvbiA9IG1fZnJhbWUu
cGFnZSgpLT5jcmVhdGVBY3Rpdml0eVRva2VuKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5w
YXJlbnQoKSkKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLm1faXNDb21wbGV0ZSA9IGZhbHNlOwog
fQogCkBAIC0xMjEzLDggKzEyMTMsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0
IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaQogICAgICAg
ICBhZGRIVFRQT3JpZ2luSWZOZWVkZWQocmVxdWVzdCwgcmVmZXJyZXJPcmlnaW4tPnRvU3RyaW5n
KCkpOwogICAgIH0KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgIGlmIChtX2Zy
YW1lLnRyZWUoKS0+dG9wKCkgIT0gJm1fZnJhbWUpCi0gICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQ
YXJ0aXRpb24obV9mcmFtZS50cmVlKCktPnRvcCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICBpZiAobV9mcmFtZS50cmVlKCkudG9wKCkgIT0g
Jm1fZnJhbWUpCisgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24obV9mcmFtZS50cmVl
KCkudG9wKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkp
OwogI2VuZGlmCiAgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5
cGUsIHRydWUpOwogICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkIHx8
IG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luKQpAQCAtMTM5Niw3
ICsxMzk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1
bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICAgICAgcG9saWN5Q2hlY2tl
cigpLT5jaGVja05hdmlnYXRpb25Qb2xpY3kobG9hZGVyLT5yZXF1ZXN0KCksIG9sZERvY3VtZW50
TG9hZGVyLmdldCgpLCBmb3JtU3RhdGUsCiAgICAgICAgICAgICBjYWxsQ29udGludWVGcmFnbWVu
dFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKEZyYW1lKiBwYXJlbnQgPSBtX2ZyYW1lLnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAg
IGlmIChGcmFtZSogcGFyZW50ID0gbV9mcmFtZS50cmVlKCkucGFyZW50KCkpCiAgICAgICAgICAg
ICBsb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcocGFyZW50LT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5vdmVycmlkZUVuY29kaW5nKCkpOwogCiAgICAgICAgIHBvbGljeUNoZWNrZXIoKS0+
c3RvcENoZWNrKCk7CkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9w
QWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zpc2lvbmFsSXRl
bQogICAgIGlmIChjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSA9PSBTaG91bGRDbGVhclByb3Zp
c2lvbmFsSXRlbSkKICAgICAgICAgaGlzdG9yeSgpLnNldFByb3Zpc2lvbmFsSXRlbSgwKTsKIAot
ICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9y
IChSZWZQdHI8RnJhbWU+IGNoaWxkID0gbV9mcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5s
b2FkZXIoKS5zdG9wQWxsTG9hZGVycyhjbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSk7CiAgICAg
aWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKICAgICAgICAgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZygpOwpAQCAtMTcwMiw3ICsxNzAyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjsKICAgICBSZWZQdHI8RnJh
bWU+IHByb3RlY3QoJm1fZnJhbWUpOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVMb2Fk
aW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVS
TCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUudHJlZSgpLT51bmlxdWVOYW1lKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwKKyAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcg
JXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICcl
cycgdG8gbmV3IFVSTCAnJXMnIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRh
dGEoKSA6ICIiLAogICAgICAgICBwZGwgPyBwZGwtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFsIERvY3VtZW50TG9h
ZGVyPiIpOwogCkBAIC0xNzExLDcgKzE3MTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQ
cm92aXNpb25hbExvYWQoKQogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGNhY2hl
IHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBpbnRvIHRoZSBiYWNrL2Zvcndh
cmQgY2FjaGUuCiAgICAgLy8gV2UgYXJlIGRvaW5nIHRoaXMgaGVyZSBiZWNhdXNlIHdlIGtub3cg
Zm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdlIGlzIGFib3V0IHRvIGJlIGxvYWRlZC4KICAgICBIaXN0
b3J5SXRlbSogaXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwotICAgIGlmICghbV9mcmFt
ZS50cmVlKCktPnBhcmVudCgpICYmIHBhZ2VDYWNoZSgpLT5jYW5DYWNoZShtX2ZyYW1lLnBhZ2Uo
KSkgJiYgIWl0ZW0tPmlzSW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAoIW1fZnJhbWUudHJlZSgpLnBh
cmVudCgpICYmIHBhZ2VDYWNoZSgpLT5jYW5DYWNoZShtX2ZyYW1lLnBhZ2UoKSkgJiYgIWl0ZW0t
PmlzSW5QYWdlQ2FjaGUoKSkKICAgICAgICAgcGFnZUNhY2hlKCktPmFkZChpdGVtLCBtX2ZyYW1l
LnBhZ2UoKSk7CiAKICAgICBpZiAobV9sb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlUmVwbGFjZSkK
QEAgLTE3NTYsNyArMTc1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpCiAgICAgICAgIGRpZE9wZW5VUkwoKTsKICAgICB9CiAKLSAgICBMT0coTG9hZGluZywg
IldlYkNvcmVMb2FkaW5nICVzOiBGaW5pc2hlZCBjb21taXR0aW5nIHByb3Zpc2lvbmFsIGxvYWQg
dG8gVVJMICVzIiwgbV9mcmFtZS50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLAorICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZpbmlzaGVkIGNv
bW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2ZyYW1lLnRyZWUoKS51bmlx
dWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpID8gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgaWYgKG1fbG9hZFR5cGUgPT0gRnJh
bWVMb2FkVHlwZVN0YW5kYXJkICYmIG1fZG9jdW1lbnRMb2FkZXItPmlzQ2xpZW50UmVkaXJlY3Qo
KSkKQEAgLTE5NDYsNyArMTk0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlT2xkRGF0YVNv
dXJjZXMoKQogICAgIC8vIEZJWE1FOiBJcyBpdCBpbXBvcnRhbnQgZm9yIHRoaXMgdHJhdmVyc2Fs
IHRvIGJlIHBvc3RvcmRlciBpbnN0ZWFkIG9mIHByZW9yZGVyPwogICAgIC8vIElmIHNvLCBhZGQg
aGVscGVycyBmb3IgcG9zdG9yZGVyIHRyYXZlcnNhbCwgYW5kIHVzZSB0aGVtLiBJZiBub3QsIHRo
ZW4gbGV0cyBub3QKICAgICAvLyB1c2UgYSByZWN1cnNpdmUgYWxnb3JpdGhtIGhlcmUuCi0gICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNo
aWxkID0gbV9mcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS5jbG9zZU9sZERh
dGFTb3VyY2VzKCk7CiAgICAgCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCkBAIC0xOTU3LDcg
KzE5NTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZU9sZERhdGFTb3VyY2VzKCkKIAogdm9p
ZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3JlKCkKIHsKLSAgICBBU1NF
UlQoIW1fZnJhbWUudHJlZSgpLT5wYXJlbnQoKSk7CisgICAgQVNTRVJUKCFtX2ZyYW1lLnRyZWUo
KS5wYXJlbnQoKSk7CiAgICAgQVNTRVJUKG1fZnJhbWUucGFnZSgpKTsKICAgICBBU1NFUlQobV9m
cmFtZS5wYWdlKCktPm1haW5GcmFtZSgpID09ICZtX2ZyYW1lKTsKIApAQCAtMjA0NCw3ICsyMDQ0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UmVwbGFjaW5nKCkKIGJvb2wgRnJhbWVMb2FkZXI6
OnN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3QKIHsKICAgICAvLyBJdCdzIG1vc3QgbGlrZWx5IHRo
YXQgdGhlIGxhc3QgYWRkZWQgZnJhbWUgaXMgdGhlIGxhc3QgdG8gbG9hZCBzbyB3ZSB3YWxrIGJh
Y2t3YXJkcy4KLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLT5sYXN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+cHJldmlvdXNTaWJsaW5nKCkpIHsK
KyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLmxhc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgIEZy
YW1lTG9hZGVyJiBjaGlsZExvYWRlciA9IGNoaWxkLT5sb2FkZXIoKTsKICAgICAgICAgRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gY2hpbGRMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICAgICAgaWYgKGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9hZGVyLT5pc0xvYWRpbmdJ
bkFQSVNlbnNlKCkpCkBAIC0yMDc3LDcgKzIwNzcsNyBAQCBDYWNoZVBvbGljeSBGcmFtZUxvYWRl
cjo6c3VicmVzb3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0CiAgICAgaWYgKG1fbG9hZFR5cGUgPT0g
RnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pCiAgICAgICAgIHJldHVybiBDYWNoZVBvbGlj
eVJlbG9hZDsKIAotICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS0+
cGFyZW50KCkpIHsKKyAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS50cmVlKCku
cGFyZW50KCkpIHsKICAgICAgICAgQ2FjaGVQb2xpY3kgcGFyZW50Q2FjaGVQb2xpY3kgPSBwYXJl
bnRGcmFtZS0+bG9hZGVyKCkuc3VicmVzb3VyY2VDYWNoZVBvbGljeSgpOwogICAgICAgICBpZiAo
cGFyZW50Q2FjaGVQb2xpY3kgIT0gQ2FjaGVQb2xpY3lWZXJpZnkpCiAgICAgICAgICAgICByZXR1
cm4gcGFyZW50Q2FjaGVQb2xpY3k7CkBAIC0yMzIwLDggKzIzMjAsOCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbigpCiB7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZyYW1l
PiA+IEZyYW1lVmVjdG9yOwogICAgIEZyYW1lVmVjdG9yIGNoaWxkcmVuVG9EZXRhY2g7Ci0gICAg
Y2hpbGRyZW5Ub0RldGFjaC5yZXNlcnZlQ2FwYWNpdHkobV9mcmFtZS50cmVlKCktPmNoaWxkQ291
bnQoKSk7Ci0gICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS0+bGFzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPnByZXZpb3VzU2libGluZygpKQorICAg
IGNoaWxkcmVuVG9EZXRhY2gucmVzZXJ2ZUNhcGFjaXR5KG1fZnJhbWUudHJlZSgpLmNoaWxkQ291
bnQoKSk7CisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5sYXN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5wcmV2aW91c1NpYmxpbmcoKSkKICAgICAg
ICAgY2hpbGRyZW5Ub0RldGFjaC5hcHBlbmQoY2hpbGQpOwogICAgIEZyYW1lVmVjdG9yOjppdGVy
YXRvciBlbmQgPSBjaGlsZHJlblRvRGV0YWNoLmVuZCgpOwogICAgIGZvciAoRnJhbWVWZWN0b3I6
Oml0ZXJhdG9yIGl0ID0gY2hpbGRyZW5Ub0RldGFjaC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigp
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlQW5kUmVtb3ZlQ2hpbGQoRnJhbWUqIGNoaWxkKQog
ewotICAgIGNoaWxkLT50cmVlKCktPmRldGFjaEZyb21QYXJlbnQoKTsKKyAgICBjaGlsZC0+dHJl
ZSgpLmRldGFjaEZyb21QYXJlbnQoKTsKIAogICAgIGNoaWxkLT5zZXRWaWV3KDApOwogICAgIGlm
IChjaGlsZC0+b3duZXJFbGVtZW50KCkgJiYgY2hpbGQtPnBhZ2UoKSkKQEAgLTIzMzgsNyArMjMz
OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlQW5kUmVtb3ZlQ2hpbGQoRnJhbWUqIGNoaWxk
KQogICAgIGNoaWxkLT53aWxsRGV0YWNoUGFnZSgpOwogICAgIGNoaWxkLT5kZXRhY2hGcm9tUGFn
ZSgpOwogCi0gICAgbV9mcmFtZS50cmVlKCktPnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICBtX2Zy
YW1lLnRyZWUoKS5yZW1vdmVDaGlsZChjaGlsZCk7CiB9CiAKIC8vIENhbGxlZCBldmVyeSB0aW1l
IGEgcmVzb3VyY2UgaXMgY29tcGxldGVseSBsb2FkZWQgb3IgYW4gZXJyb3IgaXMgcmVjZWl2ZWQu
CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZSgpCiAgICAgLy8gaXMgY3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUg
cHJldmlvdXMgaGlzdG9yeSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIGlmIChQYWdlKiBwYWdl
ID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4sIDEwPiBm
cmFtZXM7Ci0gICAgICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAg
ICAgZm9yIChSZWZQdHI8RnJhbWU+IGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgICAgICBmcmFtZXMu
YXBwZW5kKGZyYW1lKTsKICAgICAgICAgLy8gVG8gcHJvY2VzcyBjaGlsZHJlbiBiZWZvcmUgdGhl
aXIgcGFyZW50cywgaXRlcmF0ZSB0aGUgdmVjdG9yIGJhY2t3YXJkcy4KICAgICAgICAgZm9yIChz
aXplX3QgaSA9IGZyYW1lcy5zaXplKCk7IGk7IC0taSkKQEAgLTIzNjYsNyArMjM2Niw3IEBAIGlu
dCBGcmFtZUxvYWRlcjo6bnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkg
Y29uc3QKICAgICAgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+cmVxdWVzdENvdW50KCk7CiAKICAgICBpbnQgY291bnQgPSAwOwotICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRy
YXZlcnNlTmV4dCgmbV9mcmFtZSkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9mcmFtZTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1fZnJhbWUpKQogICAg
ICAgICBjb3VudCArPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
cmVxdWVzdENvdW50KCk7CiAgICAgcmV0dXJuIGNvdW50OwogfQpAQCAtMjQxMSw3ICsyNDExLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCiAKICAgICBtX3Byb2dyZXNz
VHJhY2tlci5jbGVhcigpOwogCi0gICAgaWYgKEZyYW1lKiBwYXJlbnQgPSBtX2ZyYW1lLnRyZWUo
KS0+cGFyZW50KCkpIHsKKyAgICBpZiAoRnJhbWUqIHBhcmVudCA9IG1fZnJhbWUudHJlZSgpLnBh
cmVudCgpKSB7CiAgICAgICAgIHBhcmVudC0+bG9hZGVyKCkuY2xvc2VBbmRSZW1vdmVDaGlsZCgm
bV9mcmFtZSk7CiAgICAgICAgIHBhcmVudC0+bG9hZGVyKCkuc2NoZWR1bGVDaGVja0NvbXBsZXRl
ZCgpOwogICAgIH0gZWxzZSB7CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCBib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRDbG9zZSgpCiAgICAgLy8gU3RvcmUgYWxsIHJlZmVyZW5jZXMgdG8gZWFjaCBzdWJm
cmFtZSBpbiBhZHZhbmNlIHNpbmNlIGJlZm9yZXVubG9hZCdzIGV2ZW50IGhhbmRsZXIgbWF5IG1v
ZGlmeSBmcmFtZQogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4gdGFyZ2V0RnJhbWVzOwogICAg
IHRhcmdldEZyYW1lcy5hcHBlbmQoJm1fZnJhbWUpOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bV9mcmFtZS50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCZtX2ZyYW1lKSkKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJh
bWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS50cmF2
ZXJzZU5leHQoJm1fZnJhbWUpKQogICAgICAgICB0YXJnZXRGcmFtZXMuYXBwZW5kKGNoaWxkKTsK
IAogICAgIGJvb2wgc2hvdWxkQ2xvc2UgPSBmYWxzZTsKQEAgLTI3MzMsNyArMjczMyw3IEBAIGJv
b2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKICAgICAgICAgc2l6ZV90IGk7CiAKICAgICAg
ICAgZm9yIChpID0gMDsgaSA8IHRhcmdldEZyYW1lcy5zaXplKCk7IGkrKykgewotICAgICAgICAg
ICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YoJm1fZnJhbWUp
KQorICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPnRyZWUoKS5pc0Rlc2NlbmRhbnRP
ZigmbV9mcmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAo
IXRhcmdldEZyYW1lc1tpXS0+bG9hZGVyKCkuaGFuZGxlQmVmb3JlVW5sb2FkRXZlbnQocGFnZS0+
Y2hyb21lKCksIHRoaXMpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4Niw3ICsyNzg2
LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6aGFuZGxlQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lJiBj
aHJvbWUsIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWQKICAgICAvLyBXZSBzaG91bGQgb25seSBkaXNw
bGF5IHRoZSBiZWZvcmV1bmxvYWQgZGlhbG9nIGZvciBhbiBpZnJhbWUgaWYgaXRzIFNlY3VyaXR5
T3JpZ2luIG1hdGNoZXMgYWxsCiAgICAgLy8gYW5jZXN0b3IgZnJhbWUgU2VjdXJpdHlPcmlnaW5z
IHVwIHRocm91Z2ggdGhlIG5hdmlnYXRpbmcgRnJhbWVMb2FkZXIuCiAgICAgaWYgKGZyYW1lTG9h
ZGVyQmVpbmdOYXZpZ2F0ZWQgIT0gdGhpcykgewotICAgICAgICBGcmFtZSogcGFyZW50RnJhbWUg
PSBtX2ZyYW1lLnRyZWUoKS0+cGFyZW50KCk7CisgICAgICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9
IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOwogICAgICAgICB3aGlsZSAocGFyZW50RnJhbWUpIHsK
ICAgICAgICAgICAgIERvY3VtZW50KiBwYXJlbnREb2N1bWVudCA9IHBhcmVudEZyYW1lLT5kb2N1
bWVudCgpOwogICAgICAgICAgICAgaWYgKCFwYXJlbnREb2N1bWVudCkKQEAgLTI3OTksNyArMjc5
OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYg
Y2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkCiAgICAgICAgICAgICBpZiAoJnBhcmVudEZy
YW1lLT5sb2FkZXIoKSA9PSBmcmFtZUxvYWRlckJlaW5nTmF2aWdhdGVkKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBwYXJlbnRGcmFtZSA9IHBhcmVu
dEZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgICAgICAgICAgcGFyZW50RnJhbWUgPSBwYXJl
bnRGcmFtZS0+dHJlZSgpLnBhcmVudCgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBUaGUgbmF2aWdhdGluZ0ZyYW1lTG9hZGVyIHNob3VsZCBhbHdheXMgYmUgaW4gb3VyIGFuY2Vz
dG9yeS4KQEAgLTI5MDMsNyArMjkwMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9h
ZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZU5hbWUgIT0gIl9ibGFuayIpCi0gICAgICAgIG1h
aW5GcmFtZS0+dHJlZSgpLT5zZXROYW1lKGZyYW1lTmFtZSk7CisgICAgICAgIG1haW5GcmFtZS0+
dHJlZSgpLnNldE5hbWUoZnJhbWVOYW1lKTsKIAogICAgIG1haW5GcmFtZS0+cGFnZSgpLT5zZXRP
cGVuZWRCeURPTSgpOwogICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubV9jbGllbnQuZGlzcGF0Y2hT
aG93KCk7CkBAIC0yOTgxLDcgKzI5ODEsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogewog
ICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShtX2ZyYW1lLmRvY3VtZW50KCksIEZlYXR1cmVP
YnNlcnZlcjo6WEZyYW1lT3B0aW9ucyk7CiAKLSAgICBGcmFtZSogdG9wRnJhbWUgPSBtX2ZyYW1l
LnRyZWUoKS0+dG9wKCk7CisgICAgRnJhbWUqIHRvcEZyYW1lID0gbV9mcmFtZS50cmVlKCkudG9w
KCk7CiAgICAgaWYgKCZtX2ZyYW1lID09IHRvcEZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTI5OTMsNyArMjk5Myw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVw
dExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiAgICAgICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1
cmwpOwogICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wRnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVlKCktPnBhcmVudCgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2No
ZW1lSG9zdFBvcnQoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAg
ICAgICAgICAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZnJhbWUuZG9jdW1lbnQoKSwg
RmVhdHVyZU9ic2VydmVyOjpYRnJhbWVPcHRpb25zU2FtZU9yaWdpbldpdGhCYWRBbmNlc3RvckNo
YWluKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwNjgsNyArMzA2OCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoZWNrRGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpCiAKIEZyYW1lKiBG
cmFtZUxvYWRlcjo6ZmluZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX2Zy
YW1lLnRyZWUoKS0+ZmluZChuYW1lKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLnRyZWUo
KS5maW5kKG5hbWUpOwogCiAgICAgLy8gRnJvbSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrLyNzZWFtbGVzc0xpbmtzOgogICAgIC8vCkBAIC0zMDgwLDcg
KzMwODAsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmZpbmRGcmFtZUZvck5hdmlnYXRpb24oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBEb2N1bWVudCogYQogICAgIC8vIGJyb3dzaW5nIGNvbnRl
eHQgZmxhZyBzZXQsIGFuZCBjb250aW51ZSB0aGVzZSBzdGVwcyBhcyBpZiB0aGF0CiAgICAgLy8g
YnJvd3NpbmcgY29udGV4dCB3YXMgdGhlIG9uZSB0aGF0IHdhcyBnb2luZyB0byBiZSBuYXZpZ2F0
ZWQgaW5zdGVhZC4KICAgICBpZiAoZnJhbWUgPT0gJm1fZnJhbWUgJiYgbmFtZSAhPSAiX3NlbGYi
ICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50
KCkpIHsKLSAgICAgICAgZm9yIChGcmFtZSogYW5jZXN0b3IgPSAmbV9mcmFtZTsgYW5jZXN0b3I7
IGFuY2VzdG9yID0gYW5jZXN0b3ItPnRyZWUoKS0+cGFyZW50KCkpIHsKKyAgICAgICAgZm9yIChG
cmFtZSogYW5jZXN0b3IgPSAmbV9mcmFtZTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3It
PnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKCFhbmNlc3Rvci0+ZG9jdW1lbnQo
KS0+c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50KCkpIHsKICAgICAgICAgICAgICAg
ICBmcmFtZSA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzI4OSw3ICsz
Mjg5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJ
bkFsbFdvcmxkcygpCiBTYW5kYm94RmxhZ3MgRnJhbWVMb2FkZXI6OmVmZmVjdGl2ZVNhbmRib3hG
bGFncygpIGNvbnN0CiB7CiAgICAgU2FuZGJveEZsYWdzIGZsYWdzID0gbV9mb3JjZWRTYW5kYm94
RmxhZ3M7Ci0gICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLT5wYXJl
bnQoKSkKKyAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50
KCkpCiAgICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zYW5kYm94Rmxh
Z3MoKTsKICAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2Zy
YW1lLm93bmVyRWxlbWVudCgpKQogICAgICAgICBmbGFncyB8PSBvd25lckVsZW1lbnQtPnNhbmRi
b3hGbGFncygpOwpAQCAtMzQzMSw3ICszNDMxLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
V2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEK
ICAgICBmcmFtZS0+bG9hZGVyKCkuZm9yY2VTYW5kYm94RmxhZ3Mob3BlbmVyRnJhbWUtPmRvY3Vt
ZW50KCktPnNhbmRib3hGbGFncygpKTsKIAogICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9
ICJfYmxhbmsiKQotICAgICAgICBmcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVO
YW1lKCkpOworICAgICAgICBmcmFtZS0+dHJlZSgpLnNldE5hbWUocmVxdWVzdC5mcmFtZU5hbWUo
KSk7CiAKICAgICBwYWdlLT5jaHJvbWUoKS5zZXRUb29sYmFyc1Zpc2libGUoZmVhdHVyZXMudG9v
bEJhclZpc2libGUgfHwgZmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKTsKICAgICBwYWdlLT5j
aHJvbWUoKS5zZXRTdGF0dXNiYXJWaXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNzQxM2Q4
NTA3YjJkNmE0NmU3M2E3YzlhZTIzODYxYjZkYmI5YWUxMy4uZjc1MTNkYmQyOTRhNTU3OTdlNTc1
NWNhNTE5OTI0MWE0Y2EwZjU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
c2F2ZURvY3VtZW50U3RhdGUoKQogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCiAgICAgaWYg
KGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+YXR0YWNoZWQo
KSkgewotICAgICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBzYXZpbmcgZm9y
bSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJlZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgaXRlbSk7CisgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcg
JXM6IHNhdmluZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0ZW0pOwogICAgICAgICBpdGVtLT5zZXREb2N1bWVu
dFN0YXRlKGRvY3VtZW50LT5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC0xODgs
NyArMTg4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUoKQog
Ly8gaGlzdG9yeSBpdGVtLgogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50QW5k
U2Nyb2xsU3RhdGUoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpIHsKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5zYXZlRG9jdW1lbnRTdGF0ZSgpOwogICAgICAgICBmcmFtZS0+bG9hZGVyKCkuaGlzdG9y
eSgpLnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShmcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLmN1cnJlbnRJdGVtKCkpOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiAgICAgaWYgKG1fZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiByZXN0b3Jp
bmcgZm9ybSBzdGF0ZSBmcm9tICVwIiwgbV9mcmFtZS50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBtX2N1cnJlbnRJdGVtLmdldCgpKTsKKyAgICBMT0coTG9hZGlu
ZywgIldlYkNvcmVMb2FkaW5nICVzOiByZXN0b3JpbmcgZm9ybSBzdGF0ZSBmcm9tICVwIiwgbV9m
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fY3VycmVu
dEl0ZW0uZ2V0KCkpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0U3RhdGVGb3JOZXdGb3Jt
RWxlbWVudHMobV9jdXJyZW50SXRlbS0+ZG9jdW1lbnRTdGF0ZSgpKTsKIH0KIApAQCAtMjU3LDcg
KzI1Nyw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0pCiAvLyBUaGlzIGluY2x1ZGVzIHJlY3Vy
c2lvbiB0byBoYW5kbGUgbG9hZGluZyBpbnRvIGZyYW1lc2V0cyBwcm9wZXJseQogdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0sIEZyYW1lTG9h
ZFR5cGUgdHlwZSkKIHsKLSAgICBBU1NFUlQoIW1fZnJhbWUudHJlZSgpLT5wYXJlbnQoKSk7Cisg
ICAgQVNTRVJUKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSk7CiAgICAgCiAgICAgLy8gc2hvdWxk
R29Ub0hpc3RvcnlJdGVtIGlzIGEgcHJpdmF0ZSBkZWxlZ2F0ZSBtZXRob2QuIFRoaXMgaXMgbmVl
ZGVkIHRvIGZpeDoKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzk1MTI4Mz4gY2FuIHZpZXcgcGFn
ZXMgZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlIHRoYXQgc2hvdWxkIGJlIGRpc2FsbG93ZWQg
YnkgUGFyZW50YWwgQ29udHJvbHMKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAg
IGNvbnN0IEtVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewotICAgICAgICBpZiAoIW1fY3VycmVudEl0
ZW0gJiYgIW1fZnJhbWUudHJlZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoIW1fY3VycmVu
dEl0ZW0gJiYgIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoIWhp
c3RvcnlVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlQmFja0ZvcndhcmRM
aXN0Q2xpcHBlZEF0VGFyZ2V0KHRydWUpOwogICAgICAgICAgICAgICAgIGlmICghbmVlZFByaXZh
Y3kpIHsKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVG
b3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAgICAvLyBUaGUgY2xp
ZW50IHJlZGlyZWN0IHJlcGxhY2VzIHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbS4KICAgICAgICAg
dXBkYXRlQ3VycmVudEl0ZW0oKTsKICAgICB9IGVsc2UgewotICAgICAgICBGcmFtZSogcGFyZW50
RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS0+cGFyZW50KCk7CisgICAgICAgIEZyYW1lKiBwYXJlbnRG
cmFtZSA9IG1fZnJhbWUudHJlZSgpLnBhcmVudCgpOwogICAgICAgICBpZiAocGFyZW50RnJhbWUg
JiYgcGFyZW50RnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpKQogICAgICAg
ICAgICAgcGFyZW50RnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpLT5zZXRD
aGlsZEl0ZW0oY3JlYXRlSXRlbSgpKTsKICAgICB9CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKICAgICB9CiAKICAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUKLSAgICBmb3IgKEZyYW1lKiBj
aGlsZCA9IG1fZnJhbWUudHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1l
LnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNp
YmxpbmcoKSkKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRh
dGVGb3JDb21taXQoKTsKIH0KIApAQCAtNTU4LDcgKzU1OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogICAgIG1f
cHJvdmlzaW9uYWxJdGVtID0gMDsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0
aGUgdHJlZS4KLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGQtPmxvYWRl
cigpLmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7
CiB9CiAKQEAgLTYyNiwxMiArNjI2LDEyIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRp
YWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlmIChvcmlnaW5hbFVSTC5pc0VtcHR5
KCkpCiAgICAgICAgIG9yaWdpbmFsVVJMID0gYmxhbmtVUkwoKTsKICAgICAKLSAgICBGcmFtZSog
cGFyZW50RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS0+cGFyZW50KCk7Ci0gICAgU3RyaW5nIHBhcmVu
dCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpIDogIiI7
CisgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50KCk7CisgICAg
U3RyaW5nIHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS51bmlxdWVO
YW1lKCkgOiAiIjsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2Fk
ZXItPnRpdGxlKCk7CiAKICAgICBpdGVtLT5zZXRVUkwodXJsKTsKLSAgICBpdGVtLT5zZXRUYXJn
ZXQobV9mcmFtZS50cmVlKCktPnVuaXF1ZU5hbWUoKSk7CisgICAgaXRlbS0+c2V0VGFyZ2V0KG1f
ZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiAgICAgaXRlbS0+c2V0UGFyZW50KHBhcmVudCk7
CiAgICAgLy8gRklYTUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0
b3J5IGFzIHdlbGwuCiAgICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwpAQCAtNjc3
LDcgKzY3Nyw3IEBAIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpj
cmVhdGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvCiAgICAgICAgICAgICBiZkl0ZW0t
PnNldERvY3VtZW50U2VxdWVuY2VOdW1iZXIobV9wcmV2aW91c0l0ZW0tPmRvY3VtZW50U2VxdWVu
Y2VOdW1iZXIoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUudHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRy
ZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxp
bmcoKSkgewogICAgICAgICAgICAgRnJhbWVMb2FkZXImIGNoaWxkTG9hZGVyID0gY2hpbGQtPmxv
YWRlcigpOwogICAgICAgICAgICAgYm9vbCBoYXNDaGlsZExvYWRlZCA9IGNoaWxkTG9hZGVyLmZy
YW1lSGFzTG9hZGVkKCk7CiAKQEAgLTcxNSw3ICs3MTUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEhpc3Rv
cnlJdAogICAgICAgICAgICAgU3RyaW5nIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtc1tpXS0+
dGFyZ2V0KCk7CiAgICAgICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21J
dGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgICAgIEFT
U0VSVChmcm9tQ2hpbGRJdGVtKTsKLSAgICAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gbV9m
cmFtZS50cmVlKCktPmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKKyAgICAgICAgICAgIEZyYW1lKiBj
aGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAg
ICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVy
KCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjaGlsZEl0ZW1zW2ldLmdl
dCgpLCBmcm9tQ2hpbGRJdGVtLCB0eXBlKTsKICAgICAgICAgfQpAQCAtNzM3LDcgKzczNyw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtKiBp
dGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0CiAgICAgICAgICAgICBTdHJpbmcgY2hpbGRGcmFtZU5h
bWUgPSBjaGlsZEl0ZW1zW2ldLT50YXJnZXQoKTsKICAgICAgICAgICAgIEhpc3RvcnlJdGVtKiBm
cm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZU5h
bWUpOwogICAgICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0ZW0pOwotICAgICAgICAgICAgRnJh
bWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS0+Y2hpbGQoY2hpbGRGcmFtZU5hbWUpOwor
ICAgICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGls
ZEZyYW1lTmFtZSk7CiAgICAgICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAgICAgICAgICAg
ICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY2hpbGRJ
dGVtc1tpXS5nZXQoKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgICAgIH0KQEAgLTc2Niwx
NiArNzY2LDE2IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3Rv
cnlJdGVtKiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBjCiAvLyBIZWxwZXIgbWV0aG9kIHRo
YXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZl
biBoaXN0b3J5IGl0ZW0ncy4KIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OmN1cnJlbnRGcmFtZXNN
YXRjaEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKCghbV9mcmFtZS50
cmVlKCktPnVuaXF1ZU5hbWUoKS5pc0VtcHR5KCkgfHwgIWl0ZW0tPnRhcmdldCgpLmlzRW1wdHko
KSkgJiYgbV9mcmFtZS50cmVlKCktPnVuaXF1ZU5hbWUoKSAhPSBpdGVtLT50YXJnZXQoKSkKKyAg
ICBpZiAoKCFtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuaXNFbXB0eSgpIHx8ICFpdGVtLT50
YXJnZXQoKS5pc0VtcHR5KCkpICYmIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSAhPSBpdGVt
LT50YXJnZXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICBjb25zdCBI
aXN0b3J5SXRlbVZlY3RvciYgY2hpbGRJdGVtcyA9IGl0ZW0tPmNoaWxkcmVuKCk7Ci0gICAgaWYg
KGNoaWxkSXRlbXMuc2l6ZSgpICE9IG1fZnJhbWUudHJlZSgpLT5jaGlsZENvdW50KCkpCisgICAg
aWYgKGNoaWxkSXRlbXMuc2l6ZSgpICE9IG1fZnJhbWUudHJlZSgpLmNoaWxkQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZEl0ZW1z
LnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAg
ICAgIGlmICghbV9mcmFtZS50cmVlKCktPmNoaWxkKGNoaWxkSXRlbXNbaV0tPnRhcmdldCgpKSkK
KyAgICAgICAgaWYgKCFtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEl0ZW1zW2ldLT50YXJnZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDhkMDg0MDE0ZGI3NTU5
ZDkzZGM2MWY2ZjA5ZDhiYzllMTA4YzA0MTIuLmNlMmZjYTFiYTY4OTZiOTk3NzBjMWI4YTBhY2Rh
M2JiN2Q2MDQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6Om11
c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKICAgICAvLyBOYXZpZ2F0
aW9uIG9mIGEgc3ViZnJhbWUgZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9l
cyBub3QgY3JlYXRlIGEgbmV3IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0
aW9uIG9mICJkdXJpbmcgbG9hZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3Ig
dGhlIGxvYWQgZXZlbnQgaGF2ZSBiZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlv
biBmb3IgdGhpcy4KLSAgICBmb3IgKEZyYW1lKiBhbmNlc3RvciA9IHRhcmdldEZyYW1lLT50cmVl
KCktPnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLT5wYXJl
bnQoKSkgeworICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS5w
YXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnRyZWUoKS5wYXJlbnQoKSkg
ewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhbmNlc3Rvci0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgaWYgKCFhbmNlc3Rvci0+bG9hZGVyKCkuaXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAm
JiBkb2N1bWVudC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJtCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjM4MyBmb3IgdGhl
IG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuCiAgICAgYm9vbCBsb2NrQmFja0ZvcndhcmRM
aXN0ID0gbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSkKICAgICAgICAgfHwgKHN1Ym1p
c3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1pdHRlZEJ5SmF2
YVNjcmlwdAotICAgICAgICAgICAgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSAmJiAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworICAgICAgICAgICAgJiYg
bV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSk7CiAKICAgICBzY2hlZHVsZShhZG9wdFB0cihuZXcgU2NoZWR1bGVkRm9y
bVN1Ym1pc3Npb24oc3VibWlzc2lvbiwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggMTc4
ZDUyZWExYTEwYjFkZmZjYWI1Nzk4NGJjOGFiMDkxNzE4YmY2YS4uMGI5OWE0M2MwNmU0NDlkN2E4
M2E1ODVjMWRkMjA5ZTMzMWMzMGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cmVz
ZXQoKQogCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBzdGFydGVkICglcCkgLSBmcmFtZSAl
cChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1l
ICVwIiwgdGhpcywgZnJhbWUsIGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CisgICAgTE9HKFByb2dyZXNzLCAi
UHJvZ3Jlc3Mgc3RhcnRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNr
ZWQgZnJhbWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsIGZyYW1lLCBmcmFtZS0+
dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFs
dWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFt
ZS5nZXQoKSk7CiAKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkud2lsbENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKCk7CiAgICAgCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBQcm9ncmVzc1Ry
YWNrZXI6OnByb2dyZXNzU3RhcnRlZChGcmFtZSogZnJhbWUpCiAKIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjpwcm9ncmVzc0NvbXBsZXRlZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgTE9HKFByb2dyZXNz
LCAiUHJvZ3Jlc3MgY29tcGxldGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwg
dHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgZnJhbWUsIGZy
YW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dy
ZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jl
c3NGcmFtZS5nZXQoKSk7CisgICAgTE9HKFByb2dyZXNzLCAiUHJvZ3Jlc3MgY29tcGxldGVkICgl
cCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdp
bmF0aW5nIGZyYW1lICVwIiwgdGhpcywgZnJhbWUsIGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1Ry
YWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLmdldCgpKTsKICAgICAKICAg
ICBpZiAobV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMgPD0gMCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjg4LDcgKzI4OCw3IEBAIGJvb2wgUHJvZ3Jlc3NUcmFja2VyOjppc01haW5Mb2FkUHJvZ3Jl
c3NpbmcoKSBjb25zdAogICAgIGlmICghbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBTZWUgaWYgdGhlIGxvYWQgb3JpZ2luYXRlZCBmcm9t
IGEgc3ViZnJhbWUuCi0gICAgaWYgKG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lLT50cmVlKCkt
PnBhcmVudCgpKQorICAgIGlmIChtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS0+dHJlZSgpLnBh
cmVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1fcHJvZ3Jlc3NWYWx1
ZSAmJiBtX3Byb2dyZXNzVmFsdWUgPCBmaW5hbFByb2dyZXNzVmFsdWUgJiYgbV9oZWFydGJlYXRz
V2l0aE5vUHJvZ3Jlc3MgPCBsb2FkU3RhbGxlZEhlYXJ0YmVhdENvdW50OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCAxMzk1MmQ4ZWIxMGMwNjc1MGNiYmRlNjkwMDFiY2I1NWQ2NDc1MGJmLi44M2Rm
NjBiMGZlY2UzY2M2MTExMDhlZGQ5NjdkNTUwOWNmOTg4NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgaWYgKCFmcmFt
ZS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLT50b3AoKS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRv
cCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSogZnJhbWUpCiAgICAg
aWYgKCFmcmFtZS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLT50b3Ao
KS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKCFmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+
dHJlZSgpLnRvcCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDBjNDE5NTUzNGI0ZjhlMGZiOTNl
MjJmYjE4MTgxNjIxZWU2MDU4YTkuLjU2YjA2M2NlMDZmMTY4NTcxZTI4MTNjMTgyNzc0ODBiNjA1
ZTg1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00NjEsOSArNDYxLDkgQEAgUGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhbWUqIGZyYW1lKQogICAgICAg
ICAKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+IHN1YmZyYW1lQXJj
aGl2ZXM7CiAgICAgCi0gICAgdW5zaWduZWQgY2hpbGRyZW4gPSBmcmFtZS0+dHJlZSgpLT5jaGls
ZENvdW50KCk7CisgICAgdW5zaWduZWQgY2hpbGRyZW4gPSBmcmFtZS0+dHJlZSgpLmNoaWxkQ291
bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW47ICsraSkgewotICAg
ICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY2hpbGRGcmFtZUFyY2hpdmUgPSBjcmVhdGUo
ZnJhbWUtPnRyZWUoKS0+Y2hpbGQoaSkpOworICAgICAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gY2hpbGRGcmFtZUFyY2hpdmUgPSBjcmVhdGUoZnJhbWUtPnRyZWUoKS5jaGlsZChpKSk7CiAg
ICAgICAgIGlmIChjaGlsZEZyYW1lQXJjaGl2ZSkKICAgICAgICAgICAgIHN1YmZyYW1lQXJjaGl2
ZXMuYXBwZW5kKGNoaWxkRnJhbWVBcmNoaXZlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtNTExLDcg
KzUxMSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAgICAgaWYgKHJlc3BvbnNlVVJMLmlz
TnVsbCgpKQogICAgICAgICByZXNwb25zZVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKTsKICAgICAgICAgCi0gICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1h
aW5SZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIobWFya3VwU3Ry
aW5nKSwgcmVzcG9uc2VVUkwsIHJlc3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIsIGZyYW1lLT50
cmVlKCktPnVuaXF1ZU5hbWUoKSk7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJl
c291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUodXRmOEJ1ZmZlcihtYXJrdXBTdHJpbmcp
LCByZXNwb25zZVVSTCwgcmVzcG9uc2UubWltZVR5cGUoKSwgIlVURi04IiwgZnJhbWUtPnRyZWUo
KS51bmlxdWVOYW1lKCkpOwogCiAgICAgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gPiBzdWJmcmFtZUFyY2hpdmVzOwogICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gPiBzdWJyZXNvdXJjZXM7CkBAIC01MzEsNyArNTMxLDcgQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUpCiAgICAgICAgICAgICAg
ICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoc3ViZnJhbWVBcmNoaXZlKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gYXJjaGl2ZSBzdWJm
cmFtZSAlcyIsIGNoaWxkRnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlZCB0byBhcmNoaXZl
IHN1YmZyYW1lICVzIiwgY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIExpc3RIYXNoU2V0
PEtVUkw+IHN1YnJlc291cmNlVVJMczsKICAgICAgICAgICAgIG5vZGUtPmdldFN1YnJlc291cmNl
VVJMcyhzdWJyZXNvdXJjZVVSTHMpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIFBhc3NSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFy
a3VwU3RyaW5nCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY3JlYXRlKG1haW5SZXNv
dXJjZSwgc3VicmVzb3VyY2VzLCBzdWJmcmFtZUFyY2hpdmVzKTsKKyAgICByZXR1cm4gY3JlYXRl
KG1haW5SZXNvdXJjZS5yZWxlYXNlKCksIHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7
CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBjNGM1NzcwYjFiZDVj
Y2JiYmU1N2YwZTI1NGVhNjYzNzQ4MGFjMDdiLi4xODM0OGZhMDNiZDA0MjQ5NmZhYzQ0ZGUxM2Jl
MDRiY2M4ODc1YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCBib29sIENhY2hlZFJl
c291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBjb25zdAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAg
ICAgICAvLyBUaGVzZSByZXNvdXJjZXMgY2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBwaXhl
bHMuCiAgICAgICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKLSAgICAgICAgICAgIEZyYW1l
KiB0b3AgPSBmLT50cmVlKCktPnRvcCgpOworICAgICAgICAgICAgRnJhbWUqIHRvcCA9IGYtPnRy
ZWUoKS50b3AoKTsKICAgICAgICAgICAgIGlmICghdG9wLT5sb2FkZXIoKS5taXhlZENvbnRlbnRD
aGVja2VyKCktPmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCB1cmwpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDQyZjgwYmNjZmM0OTIxZDVmM2Q4ZDIxNzk0YThlNmZjZjdiNWJkMmQuLmJjN2I5YzViMmE3
MjM1YzNmMDhmOTc3NWJmZmUyY2U4NjQwZjIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgSWNvblVSTCBJY29u
Q29udHJvbGxlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKIEljb25VUkxzIElj
b25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiB7CiAgICAgSWNv
blVSTHMgaWNvblVSTHM7Ci0gICAgaWYgKG1fZnJhbWUtPnRyZWUoKSAmJiBtX2ZyYW1lLT50cmVl
KCktPnBhcmVudCgpKQorICAgIGlmIChtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAg
IHJldHVybiBpY29uVVJMczsKICAgICAgICAgCiAgICAgaWYgKGljb25UeXBlc01hc2sgJiBGYXZp
Y29uICYmICFhcHBlbmRUb0ljb25VUkxzKEZhdmljb24sICZpY29uVVJMcykpCkBAIC0xMzYsNyAr
MTM2LDcgQEAgdm9pZCBJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIoKQogICAgIGlmICghaWNv
bkRhdGFiYXNlKCkuaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCgh
bV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CisgICAgQVNTRVJUKCFtX2ZyYW1lLT50cmVlKCku
cGFyZW50KCkpOwogICAgIGlmICghZG9jdW1lbnRDYW5IYXZlSWNvbihtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCmluZGV4
IGNiZmIxNWY5NTlhOTNkMGJhNmZlMWJkMDZmM2ZlNWNkODcwYmRiZDguLjE0ODk5ZWFkMWZkNTQw
ZTUyMGY1MDJiMGNmYzQwZjgwMTNlYmU3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKQEAgLTIx
Miw3ICsyMTIsNyBAQCBib29sIENocm9tZTo6Y2FuUnVuTW9kYWwoKSBjb25zdAogCiBzdGF0aWMg
Ym9vbCBjYW5SdW5Nb2RhbElmRHVyaW5nUGFnZURpc21pc3NhbChQYWdlKiBwYWdlLCBDaHJvbWVD
bGllbnQ6OkRpYWxvZ1R5cGUgZGlhbG9nLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpQYWdlRGlzbWlzc2FsVHlwZSBkaXNtaXNzYWwg
PSBmcmFtZS0+bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCk7CiAg
ICAgICAgIGlmIChkaXNtaXNzYWwgIT0gRnJhbWVMb2FkZXI6Ok5vRGlzbWlzc2FsKQogICAgICAg
ICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnNob3VsZFJ1bk1vZGFsRGlhbG9n
RHVyaW5nUGFnZURpc21pc3NhbChkaWFsb2csIG1lc3NhZ2UsIGRpc21pc3NhbCk7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCiAKICAgICBtX2Rpc3BsYXlJRCA9IGRpc3BsYXlJRDsKIAotICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4ZjVhYTdjODIyMTZiYWVkMDU3YWRm
ODIzOWZkMzFlOWQ2YTVmZmY3Li5jMDJlNzc1YTgzOTNlMjIwYWVmOGU0NTRiMzBiZTIxZjhkZGVj
OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMjUzLDcgKzEyNTMsNyBAQCB1
bnNpZ25lZCBET01XaW5kb3c6Omxlbmd0aCgpIGNvbnN0CiAgICAgaWYgKCFpc0N1cnJlbnRseURp
c3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFt
ZS0+dHJlZSgpLT5zY29wZWRDaGlsZENvdW50KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUo
KS5zY29wZWRDaGlsZENvdW50KCk7CiB9CiAKIFN0cmluZyBET01XaW5kb3c6Om5hbWUoKSBjb25z
dApAQCAtMTI2MSw3ICsxMjYxLDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6bmFtZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4g
bV9mcmFtZS0+dHJlZSgpLT5uYW1lKCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS5uYW1l
KCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpA
QCAtMTI2OSw3ICsxMjY5LDcgQEAgdm9pZCBET01XaW5kb3c6OnNldE5hbWUoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zy
YW1lLT50cmVlKCktPnNldE5hbWUoc3RyaW5nKTsKKyAgICBtX2ZyYW1lLT50cmVlKCkuc2V0TmFt
ZShzdHJpbmcpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZENoYW5nZU5hbWUo
c3RyaW5nKTsKIH0KIApAQCAtMTMyOCw3ICsxMzI4LDcgQEAgRE9NV2luZG93KiBET01XaW5kb3c6
OnBhcmVudCgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEZyYW1lKiBwYXJlbnQgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgIEZyYW1l
KiBwYXJlbnQgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgaWYgKHBhcmVudCkKICAg
ICAgICAgcmV0dXJuIHBhcmVudC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAKQEAgLTEzNDQs
NyArMTM0NCw3IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojp0b3AoKSBjb25zdAogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT50
b3AoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUo
KS50b3AoKS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiB9CiAKIERvY3VtZW50KiBET01XaW5k
b3c6OmRvY3VtZW50KCkgY29uc3QKQEAgLTE5NTQsNyArMTk1NCw3IEBAIFBhc3NSZWZQdHI8RE9N
V2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0
b21pY1N0cmluCiAgICAgaWYgKCFmaXJzdFdpbmRvdy0+YWxsb3dQb3BVcCgpKSB7CiAgICAgICAg
IC8vIEJlY2F1c2UgRnJhbWVUcmVlOjpmaW5kKCkgcmV0dXJucyB0cnVlIGZvciBlbXB0eSBzdHJp
bmdzLCB3ZSBtdXN0IGNoZWNrIGZvciBlbXB0eSBmcmFtZSBuYW1lcy4KICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpbGxlZ2l0aW1hdGUgd2luZG93Lm9wZW4oKSBjYWxscyB3aXRoIG5vIG5hbWUgd2ls
bCBwYXNzIHJpZ2h0IHRocm91Z2ggdGhlIHBvcHVwIGJsb2NrZXIuCi0gICAgICAgIGlmIChmcmFt
ZU5hbWUuaXNFbXB0eSgpIHx8ICFtX2ZyYW1lLT50cmVlKCktPmZpbmQoZnJhbWVOYW1lKSkKKyAg
ICAgICAgaWYgKGZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgIW1fZnJhbWUtPnRyZWUoKS5maW5kKGZy
YW1lTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE5NjIsOSArMTk2
Miw5IEBAIFBhc3NSZWZQdHI8RE9NV2luZG93PiBET01XaW5kb3c6Om9wZW4oY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHdl
IHNjaGVkdWxlIGEgbG9jYXRpb24gY2hhbmdlIHJpZ2h0IG5vdyBhbmQgcmV0dXJuIGVhcmx5Lgog
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IDA7CiAgICAgaWYgKGZyYW1lTmFtZSA9PSAiX3RvcCIp
Ci0gICAgICAgIHRhcmdldEZyYW1lID0gbV9mcmFtZS0+dHJlZSgpLT50b3AoKTsKKyAgICAgICAg
dGFyZ2V0RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCkudG9wKCk7CiAgICAgZWxzZSBpZiAoZnJhbWVO
YW1lID09ICJfcGFyZW50IikgewotICAgICAgICBpZiAoRnJhbWUqIHBhcmVudCA9IG1fZnJhbWUt
PnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIGlmIChGcmFtZSogcGFyZW50ID0gbV9mcmFtZS0+
dHJlZSgpLnBhcmVudCgpKQogICAgICAgICAgICAgdGFyZ2V0RnJhbWUgPSBwYXJlbnQ7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHRhcmdldEZyYW1lID0gbV9mcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0NWRmYmVlMzNkMTI0YThlMWJhMzM0MmJhMzM2MWQy
ZTlhODQ1MGRhLi45YjJjZjZjNzcwMzEzMjRkZWE1MWQ2ZWY1NTRkYWY1Y2U3MGI4N2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdAogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7
CiAgICAgaWYgKHZpZXcgJiYgdmlldy0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgp
OworICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5z
Y3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtX2ZyYW1lLT5vd25lckVs
ZW1lbnQoKSk7CkBAIC0xMTYwLDcgKzExNjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNh
bFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTYwog
ICAgIGlmIChzY3JvbGxlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFy
ZW50KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODA0
LDcgKzE4MDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBIaQogICAgIFJlZlB0cjxGcmFtZT4g
bmV3U3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSA/IHN1YmZyYW1l
Rm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5nZXQoKSkgOiBzdWJmcmFt
ZUZvckhpdFRlc3RSZXN1bHQobWV2KTsKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBo
YXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVu
dCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCi0g
ICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZl
bnRTdWJmcmFtZS0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSAmJiBtX2xhc3RNb3Vz
ZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQorICAgIGlmIChtX2xhc3RNb3VzZU1v
dmVFdmVudFN1YmZyYW1lICYmIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUtPnRyZWUoKS5p
c0Rlc2NlbmRhbnRPZihtX2ZyYW1lKSAmJiBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lICE9
IG5ld1N1YmZyYW1lKQogICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1ldiwg
bV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZS5nZXQoKSk7CiAKICAgICBpZiAobmV3U3ViZnJh
bWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA2ZjYwZDZi
OTc5Njk5ZjI4ZmYzZTJkZTJlMDU3YTVmNWM2YzQzNGY2Li4xODg2ZGJkMTlkYzg4YTA0ZTg0NTA3
YjM2NWRkZDIxMmI4MjMxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCkBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldENvbnRhaW5p
bmdXaW5kb3dJc1Zpc2libGUoYm9vbCBjb250YWluaW5nV2luZG93SXNWaXNpYmwKIAogICAgIGNv
bnRlbnRBcmVhRGlkU2hvd09ySGlkZSh2aWV3LCBjb250YWluaW5nV2luZG93SXNWaXNpYmxlKTsK
IAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+
dmlldygpOwogICAgICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAxNDQ2OTUwMTI5OTRhMGI3MzNmMmMyMzM1ZmUyMjdiZDZk
ODQxODdlLi4zMTljYWYzMzc2YzRlODU5YmNkNzZhYjk2MGI3ZjllMGM4Yzk4Yzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyBpbmxpbmUgRnJhbWUqIHBh
cmVudEZyb21Pd25lckVsZW1lbnQoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQp
CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQgcGFyZW50UGFnZVpvb21GYWN0b3IoRnJhbWUqIGZyYW1l
KQogewotICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBG
cmFtZSogcGFyZW50ID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKICAgICBpZiAoIXBhcmVudCkK
ICAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIHBhcmVudC0+cGFnZVpvb21GYWN0b3IoKTsK
QEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcmVudFBhZ2Vab29tRmFj
dG9yKEZyYW1lKiBmcmFtZSkKIAogc3RhdGljIGlubGluZSBmbG9hdCBwYXJlbnRUZXh0Wm9vbUZh
Y3RvcihGcmFtZSogZnJhbWUpCiB7Ci0gICAgRnJhbWUqIHBhcmVudCA9IGZyYW1lLT50cmVlKCkt
PnBhcmVudCgpOworICAgIEZyYW1lKiBwYXJlbnQgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gcGFyZW50LT50
ZXh0Wm9vbUZhY3RvcigpOwpAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgRnJhbWU6OnNldFByaW50
aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IEZsb2F0
U2l6CiAgICAgfQogCiAgICAgLy8gU3ViZnJhbWVzIG9mIHRoZSBvbmUgd2UncmUgcHJpbnRpbmcg
ZG9uJ3QgbGF5IG91dCB0byB0aGUgcGFnZSBzaXplLgotICAgIGZvciAoUmVmUHRyPEZyYW1lPiBj
aGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKQorICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9IHRyZWUoKS5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkK
ICAgICAgICAgY2hpbGQtPnNldFByaW50aW5nKHByaW50aW5nLCBGbG9hdFNpemUoKSwgRmxvYXRT
aXplKCksIDAsIHNob3VsZEFkanVzdFZpZXdTaXplKTsKIH0KIApAQCAtNTI5LDcgKzUyOSw3IEBA
IGJvb2wgRnJhbWU6OnNob3VsZFVzZVByaW50aW5nTGF5b3V0KCkgY29uc3QKIHsKICAgICAvLyBP
bmx5IHRvcCBmcmFtZSBiZWluZyBwcmludGVkIHNob3VsZCBiZSBmaXQgdG8gcGFnZSBzaXplLgog
ICAgIC8vIFN1YmZyYW1lcyBzaG91bGQgYmUgY29uc3RyYWluZWQgYnkgcGFyZW50cyBvbmx5Lgot
ICAgIHJldHVybiBtX2RvYy0+cHJpbnRpbmcoKSAmJiAoIXRyZWUoKS0+cGFyZW50KCkgfHwgIXRy
ZWUoKS0+cGFyZW50KCktPm1fZG9jLT5wcmludGluZygpKTsKKyAgICByZXR1cm4gbV9kb2MtPnBy
aW50aW5nKCkgJiYgKCF0cmVlKCkucGFyZW50KCkgfHwgIXRyZWUoKS5wYXJlbnQoKS0+bV9kb2Mt
PnByaW50aW5nKCkpOwogfQogCiBGbG9hdFNpemUgRnJhbWU6OnJlc2l6ZVBhZ2VSZWN0c0tlZXBp
bmdSYXRpbyhjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBl
eHBlY3RlZFNpemUpCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBGcmFtZTo6ZGlzcGF0Y2hWaXNp
YmlsaXR5U3RhdGVDaGFuZ2VFdmVudCgpCiAgICAgICAgIG1fZG9jLT5kaXNwYXRjaFZpc2liaWxp
dHlTdGF0ZUNoYW5nZUV2ZW50KCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+IGNoaWxk
RnJhbWVzOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZSgpLT5maXJzdENoaWxkKCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFt
ZSogY2hpbGQgPSB0cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJl
ZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkRnJhbWVzLmFwcGVuZChjaGlsZCk7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkRnJhbWVzLnNpemUoKTsgKytpKQpAQCAt
NjU3LDcgKzY1Nyw3IEBAIHZvaWQgRnJhbWU6OmRpc3BhdGNoVmlzaWJpbGl0eVN0YXRlQ2hhbmdl
RXZlbnQoKQogCiB2b2lkIEZyYW1lOjp3aWxsRGV0YWNoUGFnZSgpCiB7Ci0gICAgaWYgKEZyYW1l
KiBwYXJlbnQgPSB0cmVlKCktPnBhcmVudCgpKQorICAgIGlmIChGcmFtZSogcGFyZW50ID0gdHJl
ZSgpLnBhcmVudCgpKQogICAgICAgICBwYXJlbnQtPmxvYWRlcigpLmNoZWNrTG9hZENvbXBsZXRl
KCk7CiAKICAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBz
dG9wID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5lbmQoKTsKQEAgLTkyNiw3ICs5MjYsNyBAQCB2
b2lkIEZyYW1lOjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGZsb2F0IHBhZ2Vab29tRmFjdG9y
LCBmbG9hdCB0ZXh0Wm9vbUZhY3RvcgogCiAgICAgZG9jdW1lbnQtPnJlY2FsY1N0eWxlKFN0eWxl
OjpGb3JjZSk7CiAKLSAgICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSB0cmVlKCktPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAg
ICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSB0cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5zZXRQ
YWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3Ip
OwogCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IHRoaXMtPnZpZXcoKSkgewpAQCAtOTg4LDcg
Kzk4OCw3IEBAIHZvaWQgRnJhbWU6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIEZyYW1lOjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewotICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGls
ZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQorICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGlsZCA9IHRyZWUoKS5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgY2hpbGQtPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgaWYg
KFJlbmRlclZpZXcqIHJvb3QgPSBjb250ZW50UmVuZGVyZXIoKSkKQEAgLTEwMDEsNyArMTAwMSw3
IEBAIHZvaWQgRnJhbWU6Om5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKCkgY29uc3QKICAgICBBU1NFUlQobV9wYWdlICYmIG1fcGFnZS0+bWFpbkZyYW1lKCkg
PT0gdGhpcyk7CiAKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgZm9yIChjb25zdCBGcmFt
ZSogZnJhbWUgPSB0aGlzOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQoKSkgeworICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgICAgICBjb3VudCArPSBmcmFtZS0+ZG9jdW1lbnQoKS0+d2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpOwogICAgIH0KQEAgLTEwMTYsNyArMTAxNiw3IEBAIGJvb2wgRnJh
bWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKG1fcGFnZS0+
c3ViZnJhbWVDb3VudCgpID49IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgYm9vbCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBmYWxzZTsKLSAgICBmb3Ig
KGNvbnN0IEZyYW1lKiBmcmFtZSA9IHRoaXM7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnBhcmVudCgpKSB7CisgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSB0aGlzOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgdXJsKSkgewog
ICAgICAgICAgICAgaWYgKGZvdW5kU2VsZlJlZmVyZW5jZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggNDk3YjdmZWFkZWNiZGViMjBjOWEwZmIzOGE2
MGZiOTViMTRhNThiMy4uZTE3Zjk0MTI2MjZhMzQ2NWY4YTc1MzlmNjYyNWUyZDMwNjc3YjA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaApAQCAtMTE5LDcgKzExOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlcigpIGNvbnN0OwogICAgICAgICBOYXZpZ2F0aW9u
U2NoZWR1bGVyJiBuYXZpZ2F0aW9uU2NoZWR1bGVyKCkgY29uc3Q7CiAgICAgICAgIEZyYW1lU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdDsKLSAgICAgICAgRnJhbWVUcmVlKiB0cmVlKCkgY29u
c3Q7CisgICAgICAgIEZyYW1lVHJlZSYgdHJlZSgpIGNvbnN0OwogICAgICAgICBBbmltYXRpb25D
b250cm9sbGVyJiBhbmltYXRpb24oKSBjb25zdDsKICAgICAgICAgU2NyaXB0Q29udHJvbGxlciYg
c2NyaXB0KCk7CiAgICAgICAgIApAQCAtMzE2LDkgKzMxNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgbV9pblZpZXdTb3VyY2VNb2RlID0gbW9kZTsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnJhbWVUcmVlKiBGcmFtZTo6dHJlZSgpIGNvbnN0CisgICAgaW5saW5lIEZyYW1lVHJlZSYg
RnJhbWU6OnRyZWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICZtX3RyZWVOb2RlOwor
ICAgICAgICByZXR1cm4gbV90cmVlTm9kZTsKICAgICB9CiAKICAgICBpbmxpbmUgUGFnZSogRnJh
bWU6OnBhZ2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDFlMGFmZTFk
ZGM3ZDg1NDExN2ZhZDg3ZGJlY2MwOTlhZDRmZTY1ZTQuLjliZDMxNDNhMWE1NzNiM2YzMDg1MGIz
ZDJkZTEzZWU1YWVkZjBmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVU
cmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGcmFtZVRyZWU6On5GcmFtZVRyZWUoKQog
ewotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAg
ICAgICAgIGNoaWxkLT5zZXRWaWV3KDApOwogfQogCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRnJh
bWVUcmVlOjpzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX3VuaXF1ZU5hbWUgPSBBdG9taWNTdHJpbmcoKTsgLy8gUmVtb3ZlIG91
ciBvbGQgZnJhbWUgbmFtZSBzbyBpdCdzIG5vdCBjb25zaWRlcmVkIGluIHVuaXF1ZUNoaWxkTmFt
ZS4KLSAgICBtX3VuaXF1ZU5hbWUgPSBwYXJlbnQoKS0+dHJlZSgpLT51bmlxdWVDaGlsZE5hbWUo
bmFtZSk7CisgICAgbV91bmlxdWVOYW1lID0gcGFyZW50KCktPnRyZWUoKS51bmlxdWVDaGlsZE5h
bWUobmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVUcmVlOjpjbGVhck5hbWUoKQpAQCAtNjYsMTggKzY2
LDE4IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnBhcmVudCgpIGNvbnN0CiAKIGJvb2wgRnJhbWVUcmVl
Ojp0cmFuc2ZlckNoaWxkKFBhc3NSZWZQdHI8RnJhbWU+IGNoaWxkKQogewotICAgIEZyYW1lKiBv
bGRQYXJlbnQgPSBjaGlsZC0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBGcmFtZSogb2xkUGFyZW50
ID0gY2hpbGQtPnRyZWUoKS5wYXJlbnQoKTsKICAgICBpZiAob2xkUGFyZW50ID09IG1fdGhpc0Zy
YW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHxjaGlsZHwgaXMgYWxyZWFkeSBhIGNoaWxk
IG9mIG1fdGhpc0ZyYW1lLgogCiAgICAgaWYgKG9sZFBhcmVudCkKLSAgICAgICAgb2xkUGFyZW50
LT50cmVlKCktPnJlbW92ZUNoaWxkKGNoaWxkLmdldCgpKTsKKyAgICAgICAgb2xkUGFyZW50LT50
cmVlKCkucmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOwogCiAgICAgQVNTRVJUKGNoaWxkLT5wYWdl
KCkgPT0gbV90aGlzRnJhbWUtPnBhZ2UoKSk7Ci0gICAgY2hpbGQtPnRyZWUoKS0+bV9wYXJlbnQg
PSBtX3RoaXNGcmFtZTsKKyAgICBjaGlsZC0+dHJlZSgpLm1fcGFyZW50ID0gbV90aGlzRnJhbWU7
CiAKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGlsZCBzdGlsbCBoYXMgYSB1
bmlxdWUgZnJhbWUgbmFtZSB3aXRoIHJlc3BlY3QgdG8gaXRzIG5ldyBwYXJlbnQuCi0gICAgY2hp
bGQtPnRyZWUoKS0+c2V0TmFtZShjaGlsZC0+dHJlZSgpLT5tX25hbWUpOworICAgIGNoaWxkLT50
cmVlKCkuc2V0TmFtZShjaGlsZC0+dHJlZSgpLm1fbmFtZSk7CiAKICAgICBhY3R1YWxseUFwcGVu
ZENoaWxkKGNoaWxkKTsgLy8gTm90ZSwgb24gcmV0dXJuIHxjaGlsZHwgaXMgbnVsbC4KICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTg2LDQzICs4Niw0MyBAQCBib29sIEZyYW1lVHJlZTo6dHJhbnNmZXJD
aGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKIHZvaWQgRnJhbWVUcmVlOjphcHBlbmRDaGls
ZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKIHsKICAgICBBU1NFUlQoY2hpbGQtPnBhZ2UoKSA9
PSBtX3RoaXNGcmFtZS0+cGFnZSgpKTsKLSAgICBjaGlsZC0+dHJlZSgpLT5tX3BhcmVudCA9IG1f
dGhpc0ZyYW1lOworICAgIGNoaWxkLT50cmVlKCkubV9wYXJlbnQgPSBtX3RoaXNGcmFtZTsKICAg
ICBhY3R1YWxseUFwcGVuZENoaWxkKGNoaWxkKTsgLy8gTm90ZSwgb24gcmV0dXJuIHxjaGlsZHwg
aXMgbnVsbC4KIH0KIAogdm9pZCBGcmFtZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQoUGFzc1Jl
ZlB0cjxGcmFtZT4gY2hpbGQpCiB7Ci0gICAgQVNTRVJUKGNoaWxkLT50cmVlKCktPm1fcGFyZW50
ID09IG1fdGhpc0ZyYW1lKTsKKyAgICBBU1NFUlQoY2hpbGQtPnRyZWUoKS5tX3BhcmVudCA9PSBt
X3RoaXNGcmFtZSk7CiAgICAgRnJhbWUqIG9sZExhc3QgPSBtX2xhc3RDaGlsZDsKICAgICBtX2xh
c3RDaGlsZCA9IGNoaWxkLmdldCgpOwogCiAgICAgaWYgKG9sZExhc3QpIHsKLSAgICAgICAgY2hp
bGQtPnRyZWUoKS0+bV9wcmV2aW91c1NpYmxpbmcgPSBvbGRMYXN0OwotICAgICAgICBvbGRMYXN0
LT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSBjaGlsZDsKKyAgICAgICAgY2hpbGQtPnRyZWUoKS5t
X3ByZXZpb3VzU2libGluZyA9IG9sZExhc3Q7CisgICAgICAgIG9sZExhc3QtPnRyZWUoKS5tX25l
eHRTaWJsaW5nID0gY2hpbGQ7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZmlyc3RDaGlsZCA9IGNo
aWxkOwogCiAgICAgbV9zY29wZWRDaGlsZENvdW50ID0gaW52YWxpZENvdW50OwogCi0gICAgQVNT
RVJUKCFtX2xhc3RDaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5nKTsKKyAgICBBU1NFUlQoIW1f
bGFzdENoaWxkLT50cmVlKCkubV9uZXh0U2libGluZyk7CiB9CiAKIHZvaWQgRnJhbWVUcmVlOjpy
ZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiB7Ci0gICAgY2hpbGQtPnRyZWUoKS0+bV9wYXJlbnQg
PSAwOworICAgIGNoaWxkLT50cmVlKCkubV9wYXJlbnQgPSAwOwogCiAgICAgLy8gU2xpZ2h0bHkg
dHJpY2t5IHdheSB0byBwcmV2ZW50IGRlbGV0aW5nIHRoZSBjaGlsZCB1bnRpbCB3ZSBhcmUgZG9u
ZSB3aXRoIGl0LCB3L28KICAgICAvLyBleHRyYSByZWZzLiBUaGVzZSBzd2FwcyBsZWF2ZSB0aGUg
Y2hpbGQgaW4gYSBjaXJjdWxhciBsaXN0IGJ5IGl0c2VsZi4gQ2xlYXJpbmcgaXRzCiAgICAgLy8g
cHJldmlvdXMgYW5kIG5leHQgd2lsbCB0aGVuIGZpbmFsbHkgZGVyZWYgaXQuCiAKLSAgICBSZWZQ
dHI8RnJhbWU+JiBuZXdMb2NhdGlvbkZvck5leHQgPSBtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQgPyBt
X2ZpcnN0Q2hpbGQgOiBjaGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZy0+dHJlZSgpLT5t
X25leHRTaWJsaW5nOwotICAgIEZyYW1lKiYgbmV3TG9jYXRpb25Gb3JQcmV2aW91cyA9IG1fbGFz
dENoaWxkID09IGNoaWxkID8gbV9sYXN0Q2hpbGQgOiBjaGlsZC0+dHJlZSgpLT5tX25leHRTaWJs
aW5nLT50cmVlKCktPm1fcHJldmlvdXNTaWJsaW5nOwotICAgIHN3YXAobmV3TG9jYXRpb25Gb3JO
ZXh0LCBjaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5nKTsKKyAgICBSZWZQdHI8RnJhbWU+JiBu
ZXdMb2NhdGlvbkZvck5leHQgPSBtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQgPyBtX2ZpcnN0Q2hpbGQg
OiBjaGlsZC0+dHJlZSgpLm1fcHJldmlvdXNTaWJsaW5nLT50cmVlKCkubV9uZXh0U2libGluZzsK
KyAgICBGcmFtZSomIG5ld0xvY2F0aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSBjaGls
ZCA/IG1fbGFzdENoaWxkIDogY2hpbGQtPnRyZWUoKS5tX25leHRTaWJsaW5nLT50cmVlKCkubV9w
cmV2aW91c1NpYmxpbmc7CisgICAgc3dhcChuZXdMb2NhdGlvbkZvck5leHQsIGNoaWxkLT50cmVl
KCkubV9uZXh0U2libGluZyk7CiAgICAgLy8gRm9yIHNvbWUgaW5leHBsaWNhYmxlIHJlYXNvbiwg
dGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgbm90IGNvbXBpbGUgd2l0aG91dCB0aGUgZXhwbGljaXQg
c3RkOjogbmFtZXNwYWNlCi0gICAgc3RkOjpzd2FwKG5ld0xvY2F0aW9uRm9yUHJldmlvdXMsIGNo
aWxkLT50cmVlKCktPm1fcHJldmlvdXNTaWJsaW5nKTsKKyAgICBzdGQ6OnN3YXAobmV3TG9jYXRp
b25Gb3JQcmV2aW91cywgY2hpbGQtPnRyZWUoKS5tX3ByZXZpb3VzU2libGluZyk7CiAKLSAgICBj
aGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyA9IDA7Ci0gICAgY2hpbGQtPnRyZWUoKS0+
bV9uZXh0U2libGluZyA9IDA7CisgICAgY2hpbGQtPnRyZWUoKS5tX3ByZXZpb3VzU2libGluZyA9
IDA7CisgICAgY2hpbGQtPnRyZWUoKS5tX25leHRTaWJsaW5nID0gMDsKIAogICAgIG1fc2NvcGVk
Q2hpbGRDb3VudCA9IGludmFsaWRDb3VudDsKIH0KQEAgLTE0NiwyMSArMTQ2LDIxIEBAIEF0b21p
Y1N0cmluZyBGcmFtZVRyZWU6OnVuaXF1ZUNoaWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJl
cXVlc3RlZE5hbWUpIGNvbnN0CiAgICAgLy8gRmluZCB0aGUgbmVhcmVzdCBwYXJlbnQgdGhhdCBo
YXMgYSBmcmFtZSB3aXRoIGEgcGF0aCBpbiBpdC4KICAgICBWZWN0b3I8RnJhbWUqLCAxNj4gY2hh
aW47CiAgICAgRnJhbWUqIGZyYW1lOwotICAgIGZvciAoZnJhbWUgPSBtX3RoaXNGcmFtZTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKGZyYW1l
LT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdGFydHNXaXRoKGZyYW1lUGF0aFByZWZpeCkpCisgICAg
Zm9yIChmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBh
cmVudCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdGFydHNX
aXRoKGZyYW1lUGF0aFByZWZpeCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2hhaW4u
YXBwZW5kKGZyYW1lKTsKICAgICB9CiAgICAgU3RyaW5nQnVpbGRlciBuYW1lOwogICAgIG5hbWUu
YXBwZW5kKGZyYW1lUGF0aFByZWZpeCk7CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIG5hbWUu
YXBwZW5kKGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS5zdWJzdHJpbmcoZnJh
bWVQYXRoUHJlZml4TGVuZ3RoLAotICAgICAgICAgICAgZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFt
ZSgpLmxlbmd0aCgpIC0gZnJhbWVQYXRoUHJlZml4TGVuZ3RoIC0gZnJhbWVQYXRoU3VmZml4TGVu
Z3RoKSk7CisgICAgICAgIG5hbWUuYXBwZW5kKGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpLnN0
cmluZygpLnN1YnN0cmluZyhmcmFtZVBhdGhQcmVmaXhMZW5ndGgsCisgICAgICAgICAgICBmcmFt
ZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5sZW5ndGgoKSAtIGZyYW1lUGF0aFByZWZpeExlbmd0aCAt
IGZyYW1lUGF0aFN1ZmZpeExlbmd0aCkpOwogICAgIH0KICAgICBmb3IgKGludCBpID0gY2hhaW4u
c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgZnJhbWUgPSBjaGFpbltpXTsKICAg
ICAgICAgbmFtZS5hcHBlbmQoJy8nKTsKLSAgICAgICAgbmFtZS5hcHBlbmQoZnJhbWUtPnRyZWUo
KS0+dW5pcXVlTmFtZSgpKTsKKyAgICAgICAgbmFtZS5hcHBlbmQoZnJhbWUtPnRyZWUoKS51bmlx
dWVOYW1lKCkpOwogICAgIH0KIAogICAgIG5hbWUuYXBwZW5kTGl0ZXJhbCgiLzwhLS1mcmFtZSIp
OwpAQCAtMTc2LDcgKzE3Niw3IEBAIGlubGluZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGls
ZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNjb3BlKiBzY29wZSkgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICB1bnNpZ25lZCBzY29wZWRJbmRleCA9IDA7Ci0gICAgZm9yIChGcmFtZSogcmVz
dWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1bHQ7IHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLT5uZXh0
U2libGluZygpKSB7CisgICAgZm9yIChGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1
bHQ7IHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYg
KHJlc3VsdC0+aW5TY29wZShzY29wZSkpIHsKICAgICAgICAgICAgIGlmIChzY29wZWRJbmRleCA9
PSBpbmRleCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTkyLDggKzE5Miw4
IEBAIGlubGluZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFRyZWVTY29wZSogc2NvcGUpCiAgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgaWYgKGNoaWxkLT50
cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGNoaWxkLT5pblNjb3BlKHNjb3BlKSkKKyAg
ICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
PnRyZWUoKS5uZXh0U2libGluZygpKQorICAgICAgICBpZiAoY2hpbGQtPnRyZWUoKS51bmlxdWVO
YW1lKCkgPT0gbmFtZSAmJiBjaGlsZC0+aW5TY29wZShzY29wZSkpCiAgICAgICAgICAgICByZXR1
cm4gY2hpbGQ7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgaW5saW5lIHVu
c2lnbmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChUcmVlU2NvcGUqIHNjb3BlKSBjb25z
dAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVuc2lnbmVkIHNjb3BlZENvdW50ID0gMDsKLSAg
ICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVz
dWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBm
aXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCkubmV4dFNpYmxpbmco
KSkgewogICAgICAgICBpZiAocmVzdWx0LT5pblNjb3BlKHNjb3BlKSkKICAgICAgICAgICAgIHNj
b3BlZENvdW50Kys7CiAgICAgfQpAQCAtMjMyLDcgKzIzMiw3IEBAIHVuc2lnbmVkIEZyYW1lVHJl
ZTo6c2NvcGVkQ2hpbGRDb3VudCgpIGNvbnN0CiB1bnNpZ25lZCBGcmFtZVRyZWU6OmNoaWxkQ291
bnQoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICBmb3IgKEZyYW1lKiBy
ZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1
bHQ7IHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgICsrY291
bnQ7CiAgICAgcmV0dXJuIGNvdW50OwogfQpAQCAtMjQxLDE0ICsyNDEsMTQgQEAgRnJhbWUqIEZy
YW1lVHJlZTo6Y2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgRnJhbWUqIHJlc3Vs
dCA9IGZpcnN0Q2hpbGQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyByZXN1bHQgJiYgaSAh
PSBpbmRleDsgKytpKQotICAgICAgICByZXN1bHQgPSByZXN1bHQtPnRyZWUoKS0+bmV4dFNpYmxp
bmcoKTsKKyAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCkubmV4dFNpYmxpbmcoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgZm9yIChGcmFtZSogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCi0gICAg
ICAgIGlmIChjaGlsZC0+dHJlZSgpLT51bmlxdWVOYW1lKCkgPT0gbmFtZSkKKyAgICBmb3IgKEZy
YW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5u
ZXh0U2libGluZygpKQorICAgICAgICBpZiAoY2hpbGQtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0g
bmFtZSkKICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKICAgICByZXR1cm4gMDsKIH0KQEAgLTI2
OSw4ICsyNjksOCBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBTZWFyY2ggc3VidHJlZSBz
dGFydGluZyB3aXRoIHRoaXMgZnJhbWUgZmlyc3QuCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
X3RoaXNGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1f
dGhpc0ZyYW1lKSkKLSAgICAgICAgaWYgKGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBu
YW1lKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV90aGlzRnJhbWU7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fdGhpc0ZyYW1lKSkKKyAgICAgICAgaWYgKGZy
YW1lLT50cmVlKCkudW5pcXVlTmFtZSgpID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gZnJh
bWU7CiAKICAgICAvLyBTZWFyY2ggdGhlIGVudGlyZSB0cmVlIGZvciB0aGlzIHBhZ2UgbmV4dC4K
QEAgLTI4MCw4ICsyODAsOCBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGlmIChmcmFtZS0+dHJlZSgp
LT51bmlxdWVOYW1lKCkgPT0gbmFtZSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQor
ICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFtZSkKICAgICAgICAg
ICAgIHJldHVybiBmcmFtZTsKIAogICAgIC8vIFNlYXJjaCB0aGUgZW50aXJlIHRyZWUgb2YgZWFj
aCBvZiB0aGUgb3RoZXIgcGFnZXMgaW4gdGhpcyBuYW1lc3BhY2UuCkBAIC0yOTEsOCArMjkxLDgg
QEAgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUGFnZSogb3RoZXJQYWdlID0gKml0Owog
ICAgICAgICBpZiAob3RoZXJQYWdlICE9IHBhZ2UpIHsKLSAgICAgICAgICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUo
KS0+dW5pcXVlTmFtZSgpID09IG5hbWUpCisgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG90aGVyUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS51bmlxdWVO
YW1lKCkgPT0gbmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBGcmFtZVRyZWU6Omlz
RGVzY2VuZGFudE9mKGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3QKICAgICBpZiAobV90aGlz
RnJhbWUtPnBhZ2UoKSAhPSBhbmNlc3Rvci0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0Zy
YW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKQogICAgICAgICBpZiAo
ZnJhbWUgPT0gYW5jZXN0b3IpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMTksNyArMzE5LDcgQEAgRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0
KGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluKSBjb25zdAogewogICAgIEZyYW1lKiBjaGlsZCA9IGZp
cnN0Q2hpbGQoKTsKICAgICBpZiAoY2hpbGQpIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGlu
IHx8IGNoaWxkLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAg
QVNTRVJUKCFzdGF5V2l0aGluIHx8IGNoaWxkLT50cmVlKCkuaXNEZXNjZW5kYW50T2Yoc3RheVdp
dGhpbikpOwogICAgICAgICByZXR1cm4gY2hpbGQ7CiAgICAgfQogCkBAIC0zMjgsMjAgKzMyOCwy
MCBAQCBGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRo
aW4pIGNvbnN0CiAKICAgICBGcmFtZSogc2libGluZyA9IG5leHRTaWJsaW5nKCk7CiAgICAgaWYg
KHNpYmxpbmcpIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IHNpYmxpbmctPnRyZWUo
KS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICBBU1NFUlQoIXN0YXlXaXRo
aW4gfHwgc2libGluZy0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAg
ICAgcmV0dXJuIHNpYmxpbmc7CiAgICAgfQogCiAgICAgRnJhbWUqIGZyYW1lID0gbV90aGlzRnJh
bWU7Ci0gICAgd2hpbGUgKCFzaWJsaW5nICYmICghc3RheVdpdGhpbiB8fCBmcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkgewotICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPnBhcmVudCgpOworICAgIHdoaWxlICghc2libGluZyAmJiAoIXN0YXlXaXRoaW4gfHwgZnJh
bWUtPnRyZWUoKS5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkgeworICAgICAgICBmcmFtZSA9IGZy
YW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgc2libGluZyA9IGZyYW1lLT50cmVlKCktPm5leHRTaWJsaW5nKCk7
CisgICAgICAgIHNpYmxpbmcgPSBmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCk7CiAgICAgfQog
CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCAhc2libGlu
ZyB8fCBzaWJsaW5nLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAg
ICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFzaWJsaW5nIHx8IHNpYmxpbmctPnRyZWUoKS5pc0Rl
c2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CiAgICAgICAgIHJldHVybiBzaWJsaW5nOwogICAgIH0K
IApAQCAtMzY0LDcgKzM2NCw3IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlUHJldmlvdXNX
aXRoV3JhcChib29sIHdyYXApIGNvbnN0CiAgICAgLy8gRklYTUU6IGJlc2lkZXMgdGhlIHdyYXAg
ZmVhdHVyZSwgdGhpcyBpcyBqdXN0IHRoZSB0cmF2ZXJzZVByZXZpb3VzTm9kZSBhbGdvcml0aG0K
IAogICAgIGlmIChGcmFtZSogcHJldlNpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIHByZXZTaWJsaW5nLT50cmVlKCktPmRlZXBMYXN0Q2hpbGQoKTsKKyAgICAgICAg
cmV0dXJuIHByZXZTaWJsaW5nLT50cmVlKCkuZGVlcExhc3RDaGlsZCgpOwogICAgIGlmIChGcmFt
ZSogcGFyZW50RnJhbWUgPSBwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1lOwog
ICAgIApAQCAtMzc5LDcgKzM3OSw3IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlUHJldmlv
dXNXaXRoV3JhcChib29sIHdyYXApIGNvbnN0CiBGcmFtZSogRnJhbWVUcmVlOjpkZWVwTGFzdENo
aWxkKCkgY29uc3QKIHsKICAgICBGcmFtZSogcmVzdWx0ID0gbV90aGlzRnJhbWU7Ci0gICAgZm9y
IChGcmFtZSogbGFzdCA9IGxhc3RDaGlsZCgpOyBsYXN0OyBsYXN0ID0gbGFzdC0+dHJlZSgpLT5s
YXN0Q2hpbGQoKSkKKyAgICBmb3IgKEZyYW1lKiBsYXN0ID0gbGFzdENoaWxkKCk7IGxhc3Q7IGxh
c3QgPSBsYXN0LT50cmVlKCkubGFzdENoaWxkKCkpCiAgICAgICAgIHJlc3VsdCA9IGxhc3Q7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzg4LDcgKzM4OCw3IEBAIEZyYW1lKiBGcmFtZVRyZWU6
OmRlZXBMYXN0Q2hpbGQoKSBjb25zdAogRnJhbWUqIEZyYW1lVHJlZTo6dG9wKCkgY29uc3QKIHsK
ICAgICBGcmFtZSogZnJhbWUgPSBtX3RoaXNGcmFtZTsKLSAgICBmb3IgKEZyYW1lKiBwYXJlbnQg
PSBtX3RoaXNGcmFtZTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnRyZWUoKS0+cGFyZW50KCkp
CisgICAgZm9yIChGcmFtZSogcGFyZW50ID0gbV90aGlzRnJhbWU7IHBhcmVudDsgcGFyZW50ID0g
cGFyZW50LT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIGZyYW1lID0gcGFyZW50OwogICAgIHJl
dHVybiBmcmFtZTsKIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCBzdGF0aWMgdm9pZCBwcmludEZyYW1l
cyhjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkZyYW1lKiB0YXJn
ZQogICAgIHByaW50SW5kZW50KGluZGVudCk7CiAgICAgcHJpbnRmKCIgIHVyaT0lc1xuXG4iLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGZv
ciAoV2ViQ29yZTo6RnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZvciAoV2Vi
Q29yZTo6RnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAgICAgcHJpbnRGcmFtZXMo
Y2hpbGQsIHRhcmdldEZyYW1lLCBpbmRlbnQgKyAxKTsKIH0KIApAQCAtNDMzLDcgKzQzMyw3IEBA
IHZvaWQgc2hvd0ZyYW1lVHJlZShjb25zdCBXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBwcmludEZyYW1lcyhmcmFtZS0+dHJlZSgpLT50b3AoKSwg
ZnJhbWUsIDApOworICAgIHByaW50RnJhbWVzKGZyYW1lLT50cmVlKCkudG9wKCksIGZyYW1lLCAw
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzllZDhkNWVl
MDhmMjIzOTc5YWFjNjkwZDc0NzgyYmZiYmQwYWY1Zi4uYzdkN2E5ODJiYWMwYzdmNDNkNGM2ZGIw
MWM1MDE3N2Q1NDZmZTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDQ5LDcg
KzQ0OSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3
UmVjdCkKICAgICBpZiAobmV3UmVjdC53aWR0aCgpICE9IG9sZFJlY3Qud2lkdGgoKSkgewogICAg
ICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CiAgICAgICAgIGlmIChpc01haW5GcmFt
ZVZpZXcoKSAmJiBwYWdlLT5zZXR0aW5ncygpLnRleHRBdXRvc2l6aW5nRW5hYmxlZCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgICAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgp
LT50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVsdGlwbGllcnMoKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTk1NSw3ICs5NTUsNyBAQCBib29sIEZyYW1lVmlldzo6aGFzQ29tcG9zaXRlZENv
bnRlbnQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6Omhhc0NvbXBvc2l0ZWRDb250ZW50SW5jbHVk
aW5nRGVzY2VuZGFudHMoKSBjb25zdAogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX2ZyYW1lLmdldCgpKSkgeworICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpIHsKICAgICAgICAgUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKICAgICAgICAgaWYgKFJlbmRlckxh
eWVyQ29tcG9zaXRvciogY29tcG9zaXRvciA9IHJlbmRlclZpZXcgPyAmcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpIDogMCkgewogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3ItPmluQ29tcG9zaXRp
bmdNb2RlKCkpCkBAIC05NzIsNyArOTcyLDcgQEAgYm9vbCBGcmFtZVZpZXc6Omhhc0NvbXBvc2l0
ZWRDb250ZW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6Omhh
c0NvbXBvc2l0aW5nQW5jZXN0b3IoKSBjb25zdAogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkudHJlZSgpLT5w
YXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKKyAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcq
IHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICBpZiAodmlldy0+aGFzQ29tcG9z
aXRlZENvbnRlbnQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwMTIsNyAr
MTAxMiw3IEBAIGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdT
dWJmcmFtZXMoKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBib29sIGFs
bEZyYW1lc0ZsdXNoZWQgPSBmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzRnJhbWUoJmZyYW1l
KCkpOwogICAgIAotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUoKS50cmVlKCktPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCZmcmFt
ZSgpKSkgeworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUoKS50cmVlKCkuZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmZnJhbWUoKSkp
IHsKICAgICAgICAgYm9vbCBmbHVzaGVkID0gY2hpbGQtPnZpZXcoKS0+Zmx1c2hDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0ZyYW1lKCZmcmFtZSgpKTsKICAgICAgICAgYWxsRnJhbWVzRmx1c2hlZCAm
PSBmbHVzaGVkOwogICAgIH0KQEAgLTE0ODEsNyArMTQ4MSw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1
c2VTbG93UmVwYWludHNJZk5vdE92ZXJsYXBwZWQoKSBjb25zdAogCiB2b2lkIEZyYW1lVmlldzo6
dXBkYXRlQ2FuQmxpdE9uU2Nyb2xsUmVjdXJzaXZlbHkoKQogewotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1l
LmdldCgpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkK
ICAgICAgICAgICAgIHZpZXctPnNldENhbkJsaXRPblNjcm9sbCghdmlldy0+dXNlU2xvd1JlcGFp
bnRzKCkpOwogICAgIH0KQEAgLTE3NzgsNyArMTc3OCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRJ
c092ZXJsYXBwZWQoYm9vbCBpc092ZXJsYXBwZWQpCiAgICAgaWYgKGhhc0NvbXBvc2l0ZWRDb250
ZW50SW5jbHVkaW5nRGVzY2VuZGFudHMoKSkgewogICAgICAgICAvLyBPdmVybGFwIGNhbiBhZmZl
Y3QgY29tcG9zaXRpbmcgdGVzdHMsIHNvIGlmIGl0IGNoYW5nZXMsIHdlIG5lZWQgdG8gdHJpZ2dl
cgogICAgICAgICAvLyBhIGxheWVyIHVwZGF0ZSBpbiB0aGUgcGFyZW50IGRvY3VtZW50LgotICAg
ICAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUoKS50cmVlKCktPnBhcmVudCgpKSB7
CisgICAgICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5wYXJlbnQo
KSkgewogICAgICAgICAgICAgaWYgKFJlbmRlclZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRGcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllckNvbXBv
c2l0b3ImIGNvbXBvc2l0b3IgPSBwYXJlbnRWaWV3LT5jb21wb3NpdG9yKCk7CiAgICAgICAgICAg
ICAgICAgY29tcG9zaXRvci5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CkBAIC0x
Nzg5LDcgKzE3ODksNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0SXNPdmVybGFwcGVkKGJvb2wgaXNP
dmVybGFwcGVkKQogICAgICAgICBpZiAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphbGxvd3NJbmRl
cGVuZGVudGx5Q29tcG9zaXRlZEZyYW1lcyh0aGlzKSkgewogICAgICAgICAgICAgLy8gV2UgYWxz
byBuZWVkIHRvIHRyaWdnZXIgcmVldmFsdWF0aW9uIGZvciB0aGlzIGFuZCBhbGwgZGVzY2VuZGFu
dCBmcmFtZXMsCiAgICAgICAgICAgICAvLyBzaW5jZSBhIGZyYW1lIHVzZXMgY29tcG9zaXRpbmcg
aWYgYW55IGFuY2VzdG9yIGlzIGNvbXBvc2l0aW5nLgotICAgICAgICAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQobV9mcmFtZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogdmll
dyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJMYXllckNvbXBvc2l0b3ImIGNvbXBvc2l0b3IgPSB2aWV3LT5jb21wb3NpdG9yKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbXBvc2l0b3Iuc2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWls
ZCgpOwpAQCAtMjI4MCw3ICsyMjgwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmRvRGVmZXJyZWRSZXBh
aW50cygpCiBib29sIEZyYW1lVmlldzo6c2hvdWxkVXNlTG9hZFRpbWVEZWZlcnJlZFJlcGFpbnRE
ZWxheSgpIGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgZGVmZXIgYWZ0ZXIgdGhlIGluaXRpYWwgbG9h
ZCBvZiB0aGUgcGFnZSBoYXMgYmVlbiBjb21wbGV0ZWQuCi0gICAgaWYgKGZyYW1lKCkudHJlZSgp
LT50b3AoKS0+bG9hZGVyKCkuaXNDb21wbGV0ZSgpKQorICAgIGlmIChmcmFtZSgpLnRyZWUoKS50
b3AoKS0+bG9hZGVyKCkuaXNDb21wbGV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1l
bnQpCkBAIC0yMzQ1LDcgKzIzNDUsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJGbHVz
aFRocm90dGxpbmdJbkFsbEZyYW1lcygpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIGJvb2wgaXNNYWluTG9hZFByb2dyZXNzaW5nID0gZnJhbWUoKS5wYWdlKCktPnBy
b2dyZXNzKCkuaXNNYWluTG9hZFByb2dyZXNzaW5nKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQobV9mcmFtZS5nZXQoKSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0
KCkpKSB7CiAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNldExh
eWVyRmx1c2hUaHJvdHRsaW5nRW5hYmxlZChpc01haW5Mb2FkUHJvZ3Jlc3NpbmcpOwogICAgIH0K
QEAgLTI1MDQsMTMgKzI1MDQsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnVuc2NoZWR1bGVSZWxheW91
dCgpCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogdm9pZCBGcmFtZVZpZXc6
OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0FuaW1hdGlvblN0YXJ0
VGltZSkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT52aWV3KCktPnNlcnZpY2VTY3JvbGxBbmltYXRp
b25zKCk7CiAgICAgICAgIGZyYW1lLT5hbmltYXRpb24oKS5zZXJ2aWNlQW5pbWF0aW9ucygpOwog
ICAgIH0KIAogICAgIFZlY3RvcjxSZWZQdHI8RG9jdW1lbnQ+ID4gZG9jdW1lbnRzOwotICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLmdl
dCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAg
ICBkb2N1bWVudHMuYXBwZW5kKGZyYW1lLT5kb2N1bWVudCgpKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZG9jdW1lbnRzLnNpemUoKTsgKytpKQpAQCAtMjU1MCw3ICsyNTUwLDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvcikKIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVs
eShjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBib29sIHRyYW5zcGFyZW50KQogewotICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dChtX2ZyYW1lLmdldCgpKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKSkgewogICAgICAgICAgICAgdmlldy0+c2V0VHJhbnNwYXJlbnQodHJhbnNw
YXJlbnQpOwogICAgICAgICAgICAgdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IpOwpAQCAtMzM4NSw3ICszMzg1LDcgQEAgRnJhbWVWaWV3KiBGcmFtZVZpZXc6OnBh
cmVudEZyYW1lVmlldygpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUoKS50cmVlKCktPnBhcmVu
dCgpKQorICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5wYXJlbnQo
KSkKICAgICAgICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7CiAKICAgICByZXR1cm4gMDsK
QEAgLTM2MjMsNyArMzYyMyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0CiAgICAgLy8gaW4g
dGhlIHJlbmRlciB0cmVlIG9ubHkuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byByZXN0b3JlIHRoZSBz
ZWxlY3Rpb24gZnJvbSB0aGUgRE9NCiAgICAgLy8gYWZ0ZXIgd2UgcGFpbnQgdGhlIHNuYXBzaG90
LgogICAgIGlmIChzaG91bGRQYWludFNlbGVjdGlvbiA9PSBFeGNsdWRlU2VsZWN0aW9uKSB7Ci0g
ICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CisgICAgICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChSZW5k
ZXJWaWV3KiByb290ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICAgICAgICAg
IHJvb3QtPmNsZWFyU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KQEAgLTM2MzksNyArMzYzOSw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzRm9yU25hcHNob3QoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0CiAKICAgICAvLyBSZXN0b3JlIHNlbGVjdGlvbi4KICAg
ICBpZiAoc2hvdWxkUGFpbnRTZWxlY3Rpb24gPT0gRXhjbHVkZVNlbGVjdGlvbikgewotICAgICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dChtX2ZyYW1lLmdldCgpKSkKKyAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dChtX2ZyYW1lLmdldCgpKSkKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS51cGRhdGVBcHBlYXJhbmNlKCk7CiAgICAgfQogCkBAIC00MDE2LDcgKzQwMTYsNyBAQCB2b2lk
IEZyYW1lVmlldzo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogICAgIH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT50cmVl
KCkudG9wKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
ICAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRl
cmVyKCkpCiAgICAgICAgICAgICByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuc2V0VHJhY2tzUmVw
YWludHModHJhY2tSZXBhaW50cyk7CiAgICAgfQpAQCAtNDE0NSw3ICs0MTQ1LDcgQEAgYm9vbCBG
cmFtZVZpZXc6OmlzRmxpcHBlZERvY3VtZW50KCkgY29uc3QKIAogdm9pZCBGcmFtZVZpZXc6Om5v
dGlmeVdpZGdldHNJbkFsbEZyYW1lcyhXaWRnZXROb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQog
ewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtX2ZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dChtX2ZyYW1lLmdldCgpKSkgewogICAgICAgICBpZiAoUmVuZGVyVmlldyog
cm9vdCA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJvb3QtPm5vdGlm
eVdpZGdldHMobm90aWZpY2F0aW9uKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmlu
ZGV4IDcwNjc2NDM1YWRkODU1ZjdhNjdhMzJjNWM0MTM3NTE2N2ZiNzlmZDQuLmQ4NDM0NzhhNmIx
ODc5YWJmNzZmMGFkNWQ1ZmU0YTQ2YjhjYmNlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3Bw
CkBAIC0xMjksNyArMTI5LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBMb2NhdGlvbjo6
YW5jZXN0b3JPcmlnaW5zKCkgY29uc3QKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb3JpZ2lu
cyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuIG9yaWdpbnMucmVsZWFzZSgpOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFt
ZS0+dHJlZSgpLT5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50
KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIG9yaWdpbnMtPmFw
cGVuZChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAg
ICAgcmV0dXJuIG9yaWdpbnMucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNmIx
Y2ZiYjRiMDUxNzhmZGYyYjU2NWQyMWIxYjkxZDM2ZTcxNjBhNy4uNmRkN2YwNTk5ZDA0OGRhNGZk
MzA0ZGFjOWJjNDQ3ZTAxMWY4YWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5lKQogICAg
IC8vIEdldCBhbGwgdGhlIGZyYW1lcyBvZiBhbGwgdGhlIHBhZ2VzIGluIGFsbCB0aGUgcGFnZSBn
cm91cHMKICAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5kID0gYWxsUGFnZXMtPmVuZCgp
OwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ID0gYWxsUGFnZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQp
LT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpCisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICAgICAgZnJh
bWVzLmFwcGVuZChmcmFtZSk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0
d29ya1N0YXRlQ2hhbmdlZCgqaXQpOwogICAgIH0KQEAgLTIxMiw3ICsyMTIsNyBAQCBQYWdlOjp+
UGFnZSgpCiAgICAgc2V0R3JvdXBOYW1lKFN0cmluZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3Zl
KHRoaXMpOwogICAgIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+d2lsbERldGFjaFBhZ2UoKTsKICAgICAgICAg
ZnJhbWUtPmRldGFjaEZyb21QYWdlKCk7CiAgICAgfQpAQCAtMjQyLDcgKzI0Miw3IEBAIFBhZ2U6
On5QYWdlKCkKIEFyZW5hU2l6ZSBQYWdlOjpyZW5kZXJUcmVlU2l6ZSgpIGNvbnN0CiB7CiAgICAg
QXJlbmFTaXplIHRvdGFsKDAsIDApOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChSZW5kZXJBcmVuYSogYXJlbmEgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgewpAQCAtNDczLDcgKzQ3Myw3IEBAIHZv
aWQgUGFnZTo6dXBkYXRlU3R5bGVGb3JBbGxQYWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9u
bWVudCgpCiAgICAgICAgIHJldHVybjsKICAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5k
ID0gYWxsUGFnZXMtPmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0
ID0gYWxsUGFnZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCkt
Pm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CiAgICAgICAgICAgICAvLyBJZiBhIGNoYW5nZSBpbiB0aGUgZ2xvYmFsIGVudmlyb25tZW50
IGhhcyBvY2N1cnJlZCwgd2UgbmVlZCB0bwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGFsbCB0
aGUgcHJvcGVydGllcyBhIHJlY29tcHV0ZWQsIHRoZXJlZm9yZSB3ZSBpbnZhbGlkYXRlCiAgICAg
ICAgICAgICAvLyB0aGUgcHJvcGVydGllcyBjYWNoZS4KQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lk
IFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1l
bnQoKQogCiB2b2lkIFBhZ2U6OnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpCiB7Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5
bGUpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBQYWdlOjpyZWZyZXNoUGx1Z2lucyhi
b29sIHJlbG9hZCkKICAgICAgICAgaWYgKCFyZWxvYWQpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCi0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICAgICAgaWYgKGZyYW1lLT5s
b2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLT5jb250YWluc1BsdWdpbnMoKSkKICAgICAgICAgICAg
ICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFwcGVuZChmcmFtZSk7CiAgICAgICAgIH0KQEAgLTUy
OCw3ICs1MjgsNyBAQCBQbHVnaW5EYXRhKiBQYWdlOjpwbHVnaW5EYXRhKCkgY29uc3QKIAogaW5s
aW5lIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogUGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcigpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgIGlmIChNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIGxpc3RlbmVyID0g
ZnJhbWUtPmRvY3VtZW50KCktPnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKSkKICAgICAg
ICAgICAgIHJldHVybiBsaXN0ZW5lcjsKICAgICB9CkBAIC01NTMsOCArNTUzLDggQEAgdm9pZCBQ
YWdlOjpzZXRDYW5TdGFydE1lZGlhKGJvb2wgY2FuU3RhcnRNZWRpYSkKIHN0YXRpYyBGcmFtZSog
aW5jcmVtZW50RnJhbWUoRnJhbWUqIGN1cnIsIGJvb2wgZm9yd2FyZCwgYm9vbCB3cmFwRmxhZykK
IHsKICAgICByZXR1cm4gZm9yd2FyZAotICAgICAgICA/IGN1cnItPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0V2l0aFdyYXAod3JhcEZsYWcpCi0gICAgICAgIDogY3Vyci0+dHJlZSgpLT50cmF2ZXJzZVBy
ZXZpb3VzV2l0aFdyYXAod3JhcEZsYWcpOworICAgICAgICA/IGN1cnItPnRyZWUoKS50cmF2ZXJz
ZU5leHRXaXRoV3JhcCh3cmFwRmxhZykKKyAgICAgICAgOiBjdXJyLT50cmVlKCkudHJhdmVyc2VQ
cmV2aW91c1dpdGhXcmFwKHdyYXBGbGFnKTsKIH0KIAogYm9vbCBQYWdlOjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBUZXh0Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eSwg
RmluZERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgc2hvdWxkV3JhcCkKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIFBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgfQogCiAg
ICAgbV9kZWZlcnNMb2FkaW5nID0gZGVmZXJzOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5zZXREZWZl
cnNMb2FkaW5nKGRlZmVycyk7CiB9CiAKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFBhZ2U6OnNl
dE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tZWRp
YVZvbHVtZSA9IHZvbHVtZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPm1lZGlhVm9sdW1l
RGlkQ2hhbmdlKCk7CiAgICAgfQogfQpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgUGFnZTo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgcGFnZUNhY2hlKCktPm1h
cmtQYWdlc0ZvckRldmljZVNjYWxlQ2hhbmdlZCh0aGlzKTsKICNlbmRpZgogCi0gICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmRldmljZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogCiAgICAgcGFnZUNhY2hlKCkt
Pm1hcmtQYWdlc0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKQEAgLTg0MSw3ICs4NDEsNyBAQCB2
b2lkIFBhZ2U6OnNldFNob3VsZFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHBy
ZXNzQW5pbWF0aW9ucykKIAogICAgIHZpZXctPmZpbmlzaEN1cnJlbnRTY3JvbGxBbmltYXRpb25z
KCk7CiAgICAgCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsK
ICAgICAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTkxNiw3
ICs5MTYsNyBAQCB2b2lkIFBhZ2U6OmRpZE1vdmVPbnNjcmVlbigpCiB7CiAgICAgbV9pc09uc2Ny
ZWVuID0gdHJ1ZTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+
dmlldygpKQogICAgICAgICAgICAgZnJhbWVWaWV3LT5kaWRNb3ZlT25zY3JlZW4oKTsKICAgICB9
CkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCBQYWdlOjp3aWxsTW92ZU9mZnNjcmVlbigpCiB7CiAg
ICAgbV9pc09uc2NyZWVuID0gZmFsc2U7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gZnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIGZyYW1lVmlldy0+d2lsbE1vdmVPZmZz
Y3JlZW4oKTsKICAgICB9CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBQYWdlOjpzZXRJc0luV2lu
ZG93KGJvb2wgaXNJbldpbmRvdykKIAogICAgIG1faXNJbldpbmRvdyA9IGlzSW5XaW5kb3c7CiAK
LSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
ICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkKICAgICAg
ICAgICAgIGZyYW1lVmlldy0+c2V0SXNJbldpbmRvdyhpc0luV2luZG93KTsKICAgICB9CkBAIC05
NTIsNyArOTUyLDcgQEAgdm9pZCBQYWdlOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykK
IHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCiB7CiAgICAgbV9zY3JpcHRl
ZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSB0cnVlOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCkpCiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KQEAgLTk2MSw3ICs5NjEsNyBAQCB2b2lk
IFBhZ2U6OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQogdm9pZCBQYWdlOjpyZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbnMoKQogewogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkID0g
ZmFsc2U7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3Mo
KTsKICAgICB9CkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExv
Y2F0aW9uQ2hhbmdlZCgpCiAgICAgICAgICAgICBtX3VzZXJTdHlsZVNoZWV0ID0gU3RyaW5nOjpm
cm9tVVRGOChzdHlsZVNoZWV0QXNVVEY4LmRhdGEoKSwgc3R5bGVTaGVldEFzVVRGOC5zaXplKCkp
OwogICAgIH0KIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+dXBkYXRlUGFnZVVzZXJT
aGVldCgpOwogICAgIH0KQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFnZTo6YWxsVmlzaXRl
ZFN0YXRlQ2hhbmdlZChQYWdlR3JvdXAqIGdyb3VwKQogICAgICAgICBQYWdlKiBwYWdlID0gKml0
OwogICAgICAgICBpZiAocGFnZS0+bV9ncm91cCAhPSBncm91cCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsK
ICAgICB9CiB9CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFBhZ2U6OnZpc2l0ZWRTdGF0ZUNo
YW5nZWQoUGFnZUdyb3VwKiBncm91cCwgTGlua0hhc2ggbGlua0hhc2gpCiAgICAgICAgIFBhZ2Uq
IHBhZ2UgPSAqaXQ7CiAgICAgICAgIGlmIChwYWdlLT5tX2dyb3VwICE9IGdyb3VwKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgp
KQorICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1fbWFpbkZyYW1lLmdldCgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZhbGlkYXRlU3R5bGVGb3JM
aW5rKGxpbmtIYXNoKTsKICAgICB9CiB9CkBAIC0xMTA4LDcgKzExMDgsNyBAQCB2b2lkIFBhZ2U6
OnNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQogCiAgICAgbV9kZWJ1Z2dlciA9
IGRlYnVnZ2VyOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLmF0dGFjaERlYnVn
Z2VyKG1fZGVidWdnZXIpOwogfQogCkBAIC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIFBhZ2U6OnNl
dE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBpZiAoIWVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9
IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkKKyAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLnRlbGxDbGllbnRBYm91dFBhc3RNZW1vcnlDYWNoZUxvYWRzKCk7CiB9CiAKQEAgLTExNjAs
NyArMTE2MCw3IEBAIHZvaWQgUGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1p
bmltdW1UaW1lckludGVydmFsKQogewogICAgIGRvdWJsZSBvbGRUaW1lckludGVydmFsID0gbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICBtX21pbmltdW1UaW1lckludGVydmFsID0gbWluaW11
bVRpbWVySW50ZXJ2YWw7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKICAgICAgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmFkanVzdE1p
bmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOwogICAgIH0KQEAgLTExNzcsNyAr
MTE3Nyw3IEBAIHZvaWQgUGFnZTo6c2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdGltZXJBbGlnbm1lbnRJbnRlcnZhbCA9
IGludGVydmFsOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dFdpdGhXcmFwKGZhbHNlKSkgeworICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+
ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kaWRDaGFuZ2VUaW1l
ckFsaWdubWVudEludGVydmFsKCk7CiAgICAgfQpAQCAtMTE5MCwxMyArMTE5MCwxMyBAQCBkb3Vi
bGUgUGFnZTo6dGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0CiAKIHZvaWQgUGFnZTo6ZG5z
UHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5pbml0
RE5TUHJlZmV0Y2goKTsKIH0KIAogdm9pZCBQYWdlOjpjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9y
PFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKQogewotICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCB2b2lkIFBhZ2U6OmNvbGxl
Y3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5W
aWV3QmFzZQogCiB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiB7Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAK
ICAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUg
dGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQg
UGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAK
LSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsK
IAogICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3Vy
ZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgdm9p
ZCBQYWdlOjpjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAgQVNTRVJU
KG1fc3ViZnJhbWVDb3VudCA+PSAwKTsKIAogICAgIGludCBzdWJmcmFtZUNvdW50ID0gMDsKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAg
ICArK3N1YmZyYW1lQ291bnQ7CiAKICAgICBBU1NFUlQobV9zdWJmcmFtZUNvdW50ICsgMSA9PSBz
dWJmcmFtZUNvdW50KTsKQEAgLTE0NzYsMTMgKzE0NzYsMTMgQEAgdm9pZCBQYWdlOjphZGRSZWxl
dmFudFVucGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgb2IKIAogdm9pZCBQYWdlOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
CiAgICAgICAgIGZyYW1lLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
IH0KIAogdm9pZCBQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiB7
Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAg
ICAgICAgZnJhbWUtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAK
QEAgLTE1NTksNyArMTU1OSw3IEBAIHZvaWQgUGFnZTo6aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1
c3BlbnNpb25TdGF0ZUNoYW5nZWQoKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIHZvaWQgUGFn
ZTo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwCmluZGV4IDQ3Y2RkMWEzOGIzZTNlZGQ3ZThkMDYyMDg0ZTFiNjdiNmNmNDMzYTcu
LmY1NDQxZGEyNmRjNzU0OTA2ZTM5ZjcxMTgxYWIwNmYzZTNhNjAxM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cC5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFBhZ2VHcm91cDo6aW52YWxp
ZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKQogICAgIC8vIENsZWFyIG91
ciBjYWNoZWQgc2hlZXRzIGFuZCBoYXZlIHRoZW0ganVzdCByZXBhcnNlLgogICAgIEhhc2hTZXQ8
UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BhZ2VzLmVuZCgpOwogICAgIGZvciAoSGFz
aFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+aW52YWxpZGF0ZUluamVjdGVkU3R5bGVT
aGVldENhY2hlKCk7CiAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZl
ckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcAppbmRleCA5MzZlNWM4ZjVlMzE4NGRjMGY5
NjVjZDdkYzkyMzcwODc4ODZjY2E5Li4xZjlkMzQwZDVlMWRkYmQ5ZGRiZGMzMTRkMzU3YzdkNGYw
YzllOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZl
cnJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFBhZ2VHcm91cExvYWREZWZlcnJlcjo6UGFnZUdyb3VwTG9h
ZERlZmVycmVyKFBhZ2UqIHBhZ2UsIGJvb2wgZGVmZXJTZWxmKQogCiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBjb2RlIGlzIG5vdCBsb2dpY2FsbHkgcGFydCBvZiBsb2FkIGRlZmVycmluZywgYnV0
IHdlIGRvIG5vdCB3YW50IEpTIGNvZGUgZXhlY3V0ZWQgYmVuZWF0aCBtb2RhbAogICAgICAgICAg
ICAgICAgIC8vIHdpbmRvd3Mgb3Igc2hlZXRzLCB3aGljaCBpcyBleGFjdGx5IHdoZW4gUGFnZUdy
b3VwTG9hZERlZmVycmVyIGlzIHVzZWQuCi0gICAgICAgICAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBvdGhlclBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG90
aGVyUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdXNwZW5k
U2NoZWR1bGVkVGFza3MoQWN0aXZlRE9NT2JqZWN0OjpXaWxsRGVmZXJMb2FkaW5nKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCBQYWdlR3JvdXBMb2FkRGVmZXJy
ZXI6On5QYWdlR3JvdXBMb2FkRGVmZXJyZXIoKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZGVmZXJyZWRGcmFtZXNbaV0tPnBhZ2UoKSkgewogICAgICAgICAgICAgcGFnZS0+c2V0RGVmZXJz
TG9hZGluZyhmYWxzZSk7CiAKLSAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgp
KQorICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lU2NoZWR1bGVkVGFza3MoQWN0aXZlRE9NT2JqZWN0
OjpXaWxsRGVmZXJMb2FkaW5nKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKaW5kZXggNGRmYTY1MTEwMDRmZTVmOGNlMDg4OWM2MWJkMWMzMzMw
MWRmNGIyNy4uOTc2Nzg3YmQwODFiMmI2YzBiNDk4ZmVkODg3MGQyNTZmZmQ5OTE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+Zmly
c3RDaGlsZCgpOyBjaGlsZEZyYW1lOyBjaGlsZEZyYW1lID0gY2hpbGRGcmFtZS0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNoaWxkRnJhbWUgPSBmcmFtZS0+dHJlZSgp
LmZpcnN0Q2hpbGQoKTsgY2hpbGRGcmFtZTsgY2hpbGRGcmFtZSA9IGNoaWxkRnJhbWUtPnRyZWUo
KS5uZXh0U2libGluZygpKQogICAgICAgICBzZXJpYWxpemVGcmFtZShjaGlsZEZyYW1lKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAKaW5kZXggNjhmNzNjYjAxNWY5YjJm
MDNkYmNlMzkzMzVjNmNiNTUyMmJkZTg5NS4uOTJjY2FmMzBhZTIwOWI1YTIwMjg2OWYyNzY5NmFk
ZjAxMzVhNGU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHZvaWQgUGFnZVRocm90dGxlcjo6dGhyb3R0bGVQYWdlKCkKIAogICAgIG1fcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkuZGVjcmVtZW50QWN0aXZlUGFnZUNvdW50KCk7CiAKLSAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJTZXRUaHJvdHRsZWQo
dHJ1ZSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFBhZ2VUaHJvdHRsZXI6OnVudGhy
b3R0bGVQYWdlKCkKICAgICBpZiAob2xkU3RhdGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQogICAg
ICAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmluY3JlbWVudEFjdGl2ZVBhZ2VDb3VudCgp
OwogICAgIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQog
ICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
clNldFRocm90dGxlZChmYWxzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCAyMDM4N2Y1N2RiZWNkZDI4OWJlM2FjZmY2YmQ0Y2YzNGFjZjFlY2QxLi41NGQxYTMyYzc3OGZh
YjQzNTE1NGQxZWQ0MDU1ZWZlZjcyOGE1MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHNldElt
YWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUg
PSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVk
KHBhZ2UtPnNldHRpbmdzKCkuYXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2Ut
PnNldHRpbmdzKCkubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOwogICAgIH0KQEAgLTMyMSw3
ICszMjEsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRUZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3Rv
cihmbG9hdCBmb250U2NhbGVGYWN0b3IpCiAgICAgbV90ZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZh
Y3RvciA9IGZvbnRTY2FsZUZhY3RvcjsKIAogICAgIC8vIEZJWE1FOiBJIHdvbmRlciBpZiB0aGlz
IG5lZWRzIHRvIHRyYXZlcnNlIGZyYW1lcyBsaWtlIGluIFdlYlZpZXdJbXBsOjpyZXNpemUsIG9y
IHdoZXRoZXIgdGhlcmUgaXMgb25seSBvbmUgZG9jdW1lbnQgcGVyIFNldHRpbmdzIGluc3RhbmNl
PwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJh
bWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dGV4dEF1dG9zaXplcigp
LT5yZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CiAKICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxj
U3R5bGVJbkFsbEZyYW1lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0
aWFsTmF2aWdhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcAppbmRleCA5MTVjNWQ0ZGZkNTEzNGE0Y2QyZDgzNWJlZjc0Y2Q1NjczODM2MGMzLi4wOGEz
ODc4NzgzM2RmMTNiZjQzMjc4MmUzNzlmMGU2N2M0ZDI4YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIGJvb2wgY2FuU2Ny
b2xsSW5EaXJlY3Rpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiBzdGF0aWMgTGF5b3V0UmVjdCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBp
bml0aWFsRnJhbWUsIGNvbnN0IExheW91dFJlY3QmIGluaXRpYWxSZWN0KQogewogICAgIExheW91
dFJlY3QgcmVjdCA9IGluaXRpYWxSZWN0OwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gaW5pdGlh
bEZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gaW5pdGlhbEZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZnJhbWUtPm93
bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgcmVjdC5t
b3ZlKGVsZW1lbnQtPm9mZnNldExlZnQoKSwgZWxlbWVudC0+b2Zmc2V0VG9wKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNw
cAppbmRleCAyMDk0YWM5ZWRiNzhhNWQ4OWJlYWI4MTc4ZmE1YjY5ZGMyZTVhOTE1Li5mMDFhMWFl
Nzg1MGVlMjA3OGE2MjE2NzNlYmMzMGEwZDk3ZmU3Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMjY5LDcg
KzI2OSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRp
b25zKCkKICAgICBzdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KG1fZnJhbWUtPmRvY3VtZW50
KCkpOwogCiAgICAgLy8gVHJhdmVyc2Ugc3ViZnJhbWVzCi0gICAgZm9yIChGcmFtZSogY2hpbGQg
PSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUtPnRy
ZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxp
bmcoKSkKICAgICAgICAgY2hpbGQtPmFuaW1hdGlvbigpLnN1c3BlbmRBbmltYXRpb25zKCk7CiAK
ICAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25zKCkKICAgICByZXN1bWVBbmlt
YXRpb25zRm9yRG9jdW1lbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICAvLyBUcmF2ZXJz
ZSBzdWJmcmFtZXMKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQor
ICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZC0+
YW5pbWF0aW9uKCkucmVzdW1lQW5pbWF0aW9ucygpOwogCiAgICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNwcAppbmRleCBlYTEyNjcyMDlhM2M2Y2Vi
OTVjOTcwZWJmNTljMWNjYTQ2NDZhNTFjLi5mYmQ5ZWRmYzFiYjRiMjgyM2MxMDU2YTFiNDI1ZjBm
MzgwZmU5Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLmNwcApAQCAtNDMsNyArNDMs
NyBAQCB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4g
cHJwUGFpcikKICAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBhZG9wdFB0cihuZXcg
U2NoZWR1bGVQYWlySGFzaFNldCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFkZChw
YWlyKTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBk
b2N1bWVudExvYWRlci0+c2NoZWR1bGUocGFpci5nZXQoKSk7CiAgICAgICAgIGlmIChEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFBhZ2U6OnJlbW92ZVNjaGVkdWxl
UGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4gcHJwUGFpcikKICAgICBSZWZQdHI8U2NoZWR1
bGVQYWlyPiBwYWlyID0gcHJwUGFpcjsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+cmVt
b3ZlKHBhaXIpOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT51bnNjaGVkdWxlKHBhaXIuZ2V0KCkpOwogICAgICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBlZTNhYWVhMjc2OGI3MTNmNGNh
N2FiY2I3NGJhODEzMTIxODFjZDA4Li5kNDIwMjY2M2IxNjRiZGRlOTQyYzlhYmQ4MzVhOGZmNjE1
ODAxZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xNTEsOSArMTUxLDggQEAgUmVnaW9uIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUq
IGZyYW1lLAogICAgICAgICB9CiAgICAgfQogCi0gICAgRnJhbWVUcmVlKiB0cmVlID0gZnJhbWUt
PnRyZWUoKTsKLSAgICBmb3IgKEZyYW1lKiBzdWJGcmFtZSA9IHRyZWUtPmZpcnN0Q2hpbGQoKTsg
c3ViRnJhbWU7IHN1YkZyYW1lID0gc3ViRnJhbWUtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKLSAg
ICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUoY29tcHV0ZU5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKHN1YkZyYW1lLCBvZmZzZXQpKTsKKyAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9
IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFt
ZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
LnVuaXRlKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihzdWJmcmFtZSwgb2Zmc2V0KSk7
CiAKICAgICByZXR1cm4gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiB9CkBAIC0yMzUsNyArMjM0
LDcgQEAgdW5zaWduZWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50V2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpCiB7CiAgICAgdW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCA9IDA7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCkt
PndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCA1NWJlMmEyOTMyZTc3YTFiMmE0ZTQxZTVmZmJjNWJhN2FiZGQwNWY2
Li43MTAxZjU5MDY5NmMyZDc4ZmUzOTJlZTc4OTkzMTE5MzBmZDFhMzNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgLy8gZG9uJ3Qg
bGV0IGEgcGx1Z2luIHN0YXJ0IGFueSBsb2FkcyBpZiBpdCBpcyBubyBsb25nZXIgcGFydCBvZiBh
IGRvY3VtZW50IHRoYXQgaXMgYmVpbmcgCiAgICAgLy8gZGlzcGxheWVkIHVubGVzcyB0aGUgbG9h
ZHMgYXJlIGluIHRoZSBzYW1lIGZyYW1lIGFzIHRoZSBwbHVnaW4uCiAgICAgY29uc3QgU3RyaW5n
JiB0YXJnZXRGcmFtZU5hbWUgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkuZnJhbWVOYW1l
KCk7Ci0gICAgaWYgKG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgIT0g
bV9wYXJlbnRGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAmJiAodGFyZ2V0
RnJhbWVOYW1lLmlzTnVsbCgpIHx8IG1fcGFyZW50RnJhbWUtPnRyZWUoKS0+ZmluZCh0YXJnZXRG
cmFtZU5hbWUpICE9IG1fcGFyZW50RnJhbWUpKQorICAgIGlmIChtX3BhcmVudEZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpICE9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCkgJiYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSB8fCBtX3BhcmVudEZy
YW1lLT50cmVlKCkuZmluZCh0YXJnZXRGcmFtZU5hbWUpICE9IG1fcGFyZW50RnJhbWUpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRS
ZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CkBAIC00NjAsNyArNDYwLDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogCiAg
ICAgLy8gVGFyZ2V0ZWQgSmF2YVNjcmlwdCByZXF1ZXN0cyBhcmUgb25seSBhbGxvd2VkIG9uIHRo
ZSBmcmFtZSB0aGF0IGNvbnRhaW5zIHRoZSBKYXZhU2NyaXB0IHBsdWdpbgogICAgIC8vIGFuZCB0
aGlzIGhhcyBiZWVuIG1hZGUgc3VyZSBpbiA6OmxvYWQuCi0gICAgQVNTRVJUKHRhcmdldEZyYW1l
TmFtZS5pc0VtcHR5KCkgfHwgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLT5maW5kKHRhcmdldEZyYW1l
TmFtZSkgPT0gbV9wYXJlbnRGcmFtZSk7CisgICAgQVNTRVJUKHRhcmdldEZyYW1lTmFtZS5pc0Vt
cHR5KCkgfHwgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLmZpbmQodGFyZ2V0RnJhbWVOYW1lKSA9PSBt
X3BhcmVudEZyYW1lKTsKICAgICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNl
IHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2Ug
dG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3RlY3Rvcih0aGlzKTsKQEAgLTUyOCw3
ICs1MjgsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVz
dCYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5kTm90aQogICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7CiAKICAgICAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMsIG9u
bHkgYWxsb3cgSlMgcmVxdWVzdHMgdG8gYmUgbWFkZSBvbiB0aGUgZnJhbWUgdGhhdCBjb250YWlu
cyB0aGUgcGx1Zy1pbi4KLSAgICAgICAgaWYgKCF0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgJiYg
bV9wYXJlbnRGcmFtZS0+dHJlZSgpLT5maW5kKHRhcmdldEZyYW1lTmFtZSkgIT0gbV9wYXJlbnRG
cmFtZSkKKyAgICAgICAgaWYgKCF0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgJiYgbV9wYXJlbnRG
cmFtZS0+dHJlZSgpLmZpbmQodGFyZ2V0RnJhbWVOYW1lKSAhPSBtX3BhcmVudEZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0lOVkFMSURfUEFSQU07CiAgICAgfSBlbHNlIGlmICghbV9w
YXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwp
KQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA4YzVkZmNhODFlMDMxMTQ2OTliYWRlMjE1
ZjkxMTNiNGI3NWRmMzUwLi43NzM5N2M5MTljNzhmN2I3YTJmMmU5MmFhMzU2MTNlMmE2NWNiZDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0xNzMs
NyArMTczLDcgQEAgRnJhbWUqIEhpdFRlc3RSZXN1bHQ6OnRhcmdldEZyYW1lKCkgY29uc3QKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmcmFtZS0+dHJl
ZSgpLT5maW5kKG1faW5uZXJVUkxFbGVtZW50LT50YXJnZXQoKSk7CisgICAgcmV0dXJuIGZyYW1l
LT50cmVlKCkuZmluZChtX2lubmVyVVJMRWxlbWVudC0+dGFyZ2V0KCkpOwogfQogCiBib29sIEhp
dFRlc3RSZXN1bHQ6OmlzU2VsZWN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMGNmOWVjMzYzOGM4MDIy
YTYzMDA0MGJmODkwMDJjMzA1ZDY2NjQ4Li44NzlmMjBmN2Y2N2NiMzI1NTRiOGY2ZGE2ZTc5ZDMw
ZWRmZTMwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpsYXllclRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZChjb25zdCBHcmFwaGljc0xheWVy
KiwKIAogUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuY2xv
c2luZ0NvbXBvc2l0b3JGbHVzaGluZ0xheWVycygpIGNvbnN0CiB7Ci0gICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkucGFyZW50KCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9y
ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpID8gJmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+
Y29tcG9zaXRvcigpIDogMDsKICAgICAgICAgaWYgKGNvbXBvc2l0b3ItPmlzRmx1c2hpbmdMYXll
cnMoKSkKICAgICAgICAgICAgIHJldHVybiBjb21wb3NpdG9yOwpAQCAtNTcyLDcgKzU3Miw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21w
b3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAKICAgICAgICAgRnJhbWUmIGZyYW1lID0gbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLmZyYW1lKCk7CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSAh
bV9yZW5kZXJWaWV3LmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOwotICAgICAgICBMT0coQ29t
cG9zaXRpbmcsICJcblVwZGF0ZSAlZCBvZiAlcy5cbiIsIG1fcm9vdExheWVyVXBkYXRlQ291bnQs
IGlzTWFpbkZyYW1lID8gIm1haW4gZnJhbWUiIDogZnJhbWUudHJlZSgpLT51bmlxdWVOYW1lKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPRyhDb21wb3NpdGluZywgIlxuVXBk
YXRlICVkIG9mICVzLlxuIiwgbV9yb290TGF5ZXJVcGRhdGVDb3VudCwgaXNNYWluRnJhbWUgPyAi
bWFpbiBmcmFtZSIgOiBmcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0yOTc4LDcgKzI5NzgsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5SUZyYW1lc09mQ29tcG9zaXRpbmdDaGFuZ2UoKQogewog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mcmFtZSgpOwogCi0g
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7
IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCZmcmFtZSkpIHsKKyAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT50cmVlKCkudHJhdmVyc2VOZXh0KCZmcmFtZSkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5kb2N1bWVudCgpICYmIGNoaWxkLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKICAgICAg
ICAgICAgIGNoaWxkLT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+c2NoZWR1bGVTZXROZWVk
c1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEF1dG9zaXplci5jcHAKaW5kZXggOTAzMzk4Yzk3YTkwMjQ0Mjc0Njcw
ZTg3Mzg5YTdlYzIzNmE5NTE3My4uNGEzYjdmNmQzYjZiMWI2MDgwYjVmODIzMTEwYjZhMmMyMTI4
NWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvc2l6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b3NpemVyLmNwcApAQCAt
MTIyLDcgKzEyMiw3IEBAIGJvb2wgVGV4dEF1dG9zaXplcjo6cHJvY2Vzc1N1YnRyZWUoUmVuZGVy
T2JqZWN0KiBsYXlvdXRSb290KQogICAgIC8vIExhcmdlc3QgYXJlYSBvZiBibG9jayB0aGF0IGNh
biBiZSB2aXNpYmxlIGF0IG9uY2UgKGFzc3VtaW5nIHRoZSBtYWluCiAgICAgLy8gZnJhbWUgZG9l
c24ndCBnZXQgc2NhbGVkIHRvIGxlc3MgdGhhbiBvdmVydmlldyBzY2FsZSksIGluIENTUyBwaXhl
bHMuCiAgICAgd2luZG93SW5mby5taW5MYXlvdXRTaXplID0gbWFpbkZyYW1lLT52aWV3KCktPmxh
eW91dFNpemUoKTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtX2RvY3VtZW50LT5mcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnBhcmVudCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKS0+aXNJbkNoaWxkRnJh
bWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkpCiAgICAgICAgICAgICB3aW5kb3dJbmZvLm1pbkxheW91
dFNpemUgPSB3aW5kb3dJbmZvLm1pbkxheW91dFNpemUuc2hydW5rVG8oZnJhbWUtPnZpZXcoKS0+
bGF5b3V0U2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAzNWZiODllYjVjMjI1YTg3YTNkMmE5YWJjYzE4
MzE2YmZhNWFiODUyLi5jMWY3YzY0NTUzOGU3ZmQ3MzcxYTRlYWMxMzMxNWM5MDljYTIzODM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb24KICAgICBWZWN0b3I8
UmVmUHRyPEZyYW1lPiA+IGZyYW1lczsKIAogICAgIC8vIFNlbmQgZXZlbnRzIG9ubHkgdG8gb3Vy
IHBhZ2UuCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4p
KQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CiAgICAgfQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdAogICAgIC8vIFNlbmQgZXZlbnRzIHRvIGV2ZXJ5
IHBhZ2UuCiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZS0+Z3JvdXAoKS5w
YWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFn
ZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICgqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4p
KQogICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggNTUxY2M2MDgxOGU0OTlhODRhMzIzN2I5
OWY0ODY0NmRjYjk2MTIzMi4uY2E3YmEzM2E2ZjEzZjUyOWM4MWI0MjZkYWE2MDU4MjZhODliNWU4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTg4LDEzICsxODgsMTAg
QEAgZmxvYXQgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFNjYWxlKCkgY29uc3QKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIEZyYW1lVHJlZSogZnJhbWVUcmVlID0gZnJh
bWUtPnRyZWUoKTsKLSAgICBBU1NFUlQoZnJhbWVUcmVlKTsKLQogICAgIC8vIFRoZSBiZWhhdmlv
dXIgb2YgY3VycmVudFNjYWxlKCkgaXMgdW5kZWZpbmVkLCB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0
aCBub24tc3RhbmRhbG9uZSBTVkcgZG9jdW1lbnRzLgogICAgIC8vIElmIHRoZSBzdmcgaXMgZW1i
ZWRkZWQsIHRoZSBzY2FsaW5nIGlzIGhhbmRsZWQgYnkgdGhlIGhvc3QgcmVuZGVyZXIsIHNvIHdo
ZW4gYXNraW5nIGZyb20gaW5zaWRlCiAgICAgLy8gdGhlIFNWRyBkb2N1bWVudCwgYSBzY2FsZSB2
YWx1ZSBvZiAxIHNlZW1zIHJlYXNvbmFibGUsIGFzIGl0IGRvZXNuJ3Qga25vdyBhbnl0aGluZyBh
Ym91dCB0aGUgcGFyZW50IHNjYWxlLgotICAgIHJldHVybiBmcmFtZVRyZWUtPnBhcmVudCgpID8g
MSA6IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgIHJldHVybiBmcmFtZS0+dHJlZSgpLnBh
cmVudCgpID8gMSA6IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogfQogCiB2b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSkKQEAgLTIwNiwxMyArMjAzLDEwIEBA
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lVHJlZSogZnJhbWVUcmVlID0g
ZnJhbWUtPnRyZWUoKTsKLSAgICBBU1NFUlQoZnJhbWVUcmVlKTsKLQogICAgIC8vIFRoZSBiZWhh
dmlvdXIgb2Ygc2V0Q3VycmVudFNjYWxlKCkgaXMgdW5kZWZpbmVkLCB3aGVuIHdlJ3JlIGRlYWxp
bmcgd2l0aCBub24tc3RhbmRhbG9uZSBTVkcgZG9jdW1lbnRzLgogICAgIC8vIFdlIGNob29zZSB0
aGUgaWdub3JlIHRoaXMgY2FsbCwgaXQncyBwcmV0dHkgdXNlbGVzcyB0byBzdXBwb3J0IGNhbGxp
bmcgc2V0Q3VycmVudFNjYWxlKCkgZnJvbSB3aXRoaW4KICAgICAvLyBhbiBlbWJlZGRlZCBTVkcg
ZG9jdW1lbnQsIGZvciB0aGUgc2FtZSByZWFzb25zIGFzIGluIGN1cnJlbnRTY2FsZSgpIC0gbmVl
ZHMgcmVzb2x1dGlvbiBieSBTVkcgV0cuCi0gICAgaWYgKGZyYW1lVHJlZS0+cGFyZW50KCkpCisg
ICAgaWYgKGZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZy
YW1lLT5zZXRQYWdlWm9vbUZhY3RvcihzY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggZmJkZDYyMzY3YjM5NzA5YTFhYjA3ZmJkNzJmMzFhMWYxNzJhMzhiZS4uNzZh
MWU4M2QyNDFiN2ZjY2JmZWYwNDAwNzA5NGZlZDVhNzYwNDY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNzA1LDcgKzcwNSw3IEBAIFZlY3RvcjxTdHJpbmc+IEludGVy
bmFsczo6Zm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShFeGNlcHRpb25Db2Rl
JiBlCiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gVmVj
dG9yPFN0cmluZz4oKTsKICAgICB9Ci0gICAgU3RyaW5nIHVuaXF1ZU5hbWUgPSBmcmFtZSgpLT50
cmVlKCktPnVuaXF1ZU5hbWUoKTsKKyAgICBTdHJpbmcgdW5pcXVlTmFtZSA9IGZyYW1lKCktPnRy
ZWUoKS51bmlxdWVOYW1lKCk7CiAgICAgaWYgKG1haW5JdGVtLT50YXJnZXQoKSAhPSB1bmlxdWVO
YW1lICYmICFtYWluSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldCh1bmlxdWVOYW1lKSkgewogICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CkBAIC03MjAsNyArNzIwLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEZvcm1Db250cm9s
U3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mIHMKICAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
U3RyaW5nIHVuaXF1ZU5hbWUgPSBmcmFtZSgpLT50cmVlKCktPnVuaXF1ZU5hbWUoKTsKKyAgICBT
dHJpbmcgdW5pcXVlTmFtZSA9IGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCk7CiAgICAgaWYg
KG1haW5JdGVtLT50YXJnZXQoKSA9PSB1bmlxdWVOYW1lKQogICAgICAgICBtYWluSXRlbS0+c2V0
RG9jdW1lbnRTdGF0ZShzdGF0ZSk7CiAgICAgZWxzZSBpZiAoSGlzdG9yeUl0ZW0qIHN1Ykl0ZW0g
PSBtYWluSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldCh1bmlxdWVOYW1lKSkKQEAgLTE1NzgsNyAr
MTU3OCw3IEBAIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZTY3JvbGxhYmxlQXJlYXMoRG9j
dW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJikKICAgICBpZiAoZnJhbWUtPnZpZXcoKS0+
c2Nyb2xsYWJsZUFyZWFzKCkpCiAgICAgICAgIGNvdW50ICs9IGZyYW1lLT52aWV3KCktPnNjcm9s
bGFibGVBcmVhcygpLT5zaXplKCk7CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkgeworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAoY2hpbGQtPnZpZXcoKSAmJiBjaGlsZC0+dmlldygpLT5zY3JvbGxhYmxlQXJlYXMo
KSkKICAgICAgICAgICAgIGNvdW50ICs9IGNoaWxkLT52aWV3KCktPnNjcm9sbGFibGVBcmVhcygp
LT5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGFjZjY5Yjk3MTVjMjRhZjgzNzdlYzdl
Y2VmYjg4YzNmYzNhNDkzYTEuLjEwNDcyNjRmYjVmODc3ZDhiZmI1ODY4NWUwZmYyZTFjYWMxMmEx
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGhh
c05vU3R5bGVJbmZvcm1hdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgaWYgKCFkb2N1bWVu
dC0+ZnJhbWUoKS0+cGFnZSgpLT5zZXR0aW5ncygpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpLT50cmVl
KCktPnBhcmVudCgpKQorICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKS0+dHJlZSgpLnBhcmVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgZG9jdW1lbnQgaXMgbm90IGluIGEgdG9w
IGZyYW1lCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuY3BwCmluZGV4IDkyMDg0NTk4N2MyZGE4ZTI3Nzg2NWE5NTBmYTllNmM1YzNlM2U5MmIu
LjRhZTI5ZGExNzlmMDQyYzdjNWIwNGE3OThiMTI2YWI4NDJkMGJjM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtOTQzLDcgKzk0Myw3IEBAIHN0YXRpYyB2
b2lkIGNsb3NlVVJMUmVjdXJzaXZlbHkoRnJhbWUqIGZyYW1lKQogCiAgICAgVmVjdG9yPFJlZlB0
cjxGcmFtZT4sIDEwPiBjaGlsZEZyYW1lczsKIAotICAgIGZvciAoUmVmUHRyPEZyYW1lPiBjaGls
ZEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZEZyYW1lOyBjaGlsZEZy
YW1lID0gY2hpbGRGcmFtZS0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZvciAoUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkRnJh
bWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgY2hpbGRGcmFtZXMuYXBwZW5kKGNoaWxkRnJhbWUpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9
IGNoaWxkRnJhbWVzLnNpemUoKTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgdm9pZCBlbmFi
bGVDcm9zc1NpdGVYSFJSZWN1cnNpdmVseShGcmFtZSogZnJhbWUpCiAgICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPEZyYW1lPiwgMTA+IGNoaWxkRnJhbWVzOwotICAgIGZvciAoUmVmUHRyPEZy
YW1lPiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZEZyYW1l
OyBjaGlsZEZyYW1lID0gY2hpbGRGcmFtZS0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZv
ciAoUmVmUHRyPEZyYW1lPiBjaGlsZEZyYW1lID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7
IGNoaWxkRnJhbWU7IGNoaWxkRnJhbWUgPSBjaGlsZEZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmco
KSkKICAgICAgICAgY2hpbGRGcmFtZXMuYXBwZW5kKGNoaWxkRnJhbWUpOwogCiAgICAgdW5zaWdu
ZWQgc2l6ZSA9IGNoaWxkRnJhbWVzLnNpemUoKTsKQEAgLTM1MjEsNyArMzUyMSw3IEBAIHZvaWQg
V2ViUGFnZVByaXZhdGU6OnNldFNjcmVlbk9yaWVudGF0aW9uKGludCBvcmllbnRhdGlvbikKICNp
ZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgIGlmIChtX21haW5GcmFtZS0+b3JpZW50
YXRpb24oKSA9PSBvcmllbnRhdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAoUmVmUHRy
PEZyYW1lPiBmcmFtZSA9IG1fbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX21haW5G
cmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAg
ICAgZnJhbWUtPnNlbmRPcmllbnRhdGlvbkNoYW5nZUV2ZW50KG9yaWVudGF0aW9uKTsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCAw
ZWIyMWZiNWYyNzFlZjdlMTg2YzVlNzM3OGM3MzAzMThjMzU4NDYxLi44Mzg1ODgwMGI3YzFhYmNk
YzFmZTg2MjY3MGY4MjJkNzUwODg0YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRCbGFja0JlcnJ5LmNwcApAQCAtODAwLDE2ICs4MDAsMTYgQEAgUGFzc1JlZlB0cjxGcmFtZT4g
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnMKICAgICBpZiAobWFyZ2luSGVpZ2h0ICE9IC0xKQogICAgICAgICBmcmFtZVZpZXctPnNl
dE1hcmdpbkhlaWdodChtYXJnaW5IZWlnaHQpOwogCi0gICAgY2hpbGRGcmFtZS0+dHJlZSgpLT5z
ZXROYW1lKG5hbWUpOwotICAgIG1fZnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFt
ZSk7CisgICAgY2hpbGRGcmFtZS0+dHJlZSgpLnNldE5hbWUobmFtZSk7CisgICAgbV9mcmFtZS0+
dHJlZSgpLmFwcGVuZENoaWxkKGNoaWxkRnJhbWUpOwogICAgIGNoaWxkRnJhbWUtPmluaXQoKTsK
IAotICAgIGlmICghY2hpbGRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICBpZiAoIWNoaWxk
RnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2ZyYW1l
LT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY2hpbGRGcmFt
ZS5nZXQoKSk7CiAKLSAgICBpZiAoIWNoaWxkRnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCisgICAg
aWYgKCFjaGlsZEZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgcmV0dXJuIGNoaWxkRnJhbWUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCAzMTIyMjlkZGRm
N2RkODBhYWFmNGVlNDc3MTUwYThmMGZhZjk0NTQ0Li5hNTgwNTVjODRlNmIzOGU1YTY1YjA4NTdl
NWQ2OWZhZjk4YWU4M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtNDU5LDkgKzQ1OSw4IEBAIEludFBvaW50
IGNvbnZlcnRQb2ludFRvRnJhbWUoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBGcmFt
ZSogdGFyZ2V0RnJhbWUsCiAgICAgICAgIHJldHVybiBwb2ludDsKIAogICAgIEFTU0VSVChzb3Vy
Y2VGcmFtZS0+dmlldygpICYmIHRhcmdldEZyYW1lLT52aWV3KCkpOwotICAgIEFTU0VSVCh0YXJn
ZXRGcmFtZS0+dHJlZSgpKTsKIAotICAgIEZyYW1lKiB0YXJnZXRGcmFtZVBhcmVudCA9IHRhcmdl
dEZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgIEZyYW1lKiB0YXJnZXRGcmFtZVBhcmVudCA9
IHRhcmdldEZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgSW50UmVjdCB0YXJnZXRGcmFtZVJl
Y3QgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKTsKICAgICBJbnRQb2ludCB0YXJn
ZXRQb2ludCA9IHBvaW50OwogCkBAIC01NjksOCArNTY4LDggQEAgVmlzaWJsZVNlbGVjdGlvbiB2
aXNpYmxlU2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpCiBGcmFtZSog
aW5jcmVtZW50RnJhbWUoRnJhbWUqIGN1cnIsIGJvb2wgZm9yd2FyZCwgYm9vbCB3cmFwRmxhZykK
IHsKICAgICByZXR1cm4gZm9yd2FyZAotICAgICAgICA/IGN1cnItPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0V2l0aFdyYXAod3JhcEZsYWcpCi0gICAgICAgIDogY3Vyci0+dHJlZSgpLT50cmF2ZXJzZVBy
ZXZpb3VzV2l0aFdyYXAod3JhcEZsYWcpOworICAgICAgICA/IGN1cnItPnRyZWUoKS50cmF2ZXJz
ZU5leHRXaXRoV3JhcCh3cmFwRmxhZykKKyAgICAgICAgOiBjdXJyLT50cmVlKCkudHJhdmVyc2VQ
cmV2aW91c1dpdGhXcmFwKHdyYXBGbGFnKTsKIH0KIAogUGFzc1JlZlB0cjxSYW5nZT4gdHJpbVdo
aXRlc3BhY2VGcm9tUmFuZ2UoUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmNwcAppbmRleCA0NDE0YTg3ZTJkNmJjN2ZjZTM0Y2NlZmYzMGFhNjM0ZjlmNzlmOTJk
Li5iM2RlZDg4ZjVkNzZkZjNjMzhiYmQyN2I2YTM3N2EyNDE1MGMxN2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y2xlYXJGcmFtZU5hbWUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewogICAgIERS
VF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lKTsKIAotICAgIGZy
YW1lLT50cmVlKCktPmNsZWFyTmFtZSgpOworICAgIGZyYW1lLT50cmVlKCkuY2xlYXJOYW1lKCk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhck9wZW5lcihFdmFzX09i
amVjdCogZXdrRnJhbWUpCkBAIC0xMzUsOCArMTM1LDggQEAgRWluYV9MaXN0KiBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmw6OmZyYW1lQ2hpbGRyZW4oY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQogCiAgICAgRWluYV9MaXN0KiBjaGlsZEZyYW1lcyA9IDA7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBmcmFtZS0+dHJlZSgpLT5jaGlsZENvdW50KCk7IGluZGV4Kysp
IHsKLSAgICAgICAgV2ViQ29yZTo6RnJhbWUgKmNoaWxkRnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5j
aGlsZChpbmRleCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgZnJhbWUt
PnRyZWUoKS5jaGlsZENvdW50KCk7IGluZGV4KyspIHsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWUg
KmNoaWxkRnJhbWUgPSBmcmFtZS0+dHJlZSgpLmNoaWxkKGluZGV4KTsKICAgICAgICAgV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwmIGNsaWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50RWZsJj4oY2hpbGRGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpOwogCiAg
ICAgICAgIGNoaWxkRnJhbWVzID0gZWluYV9saXN0X2FwcGVuZChjaGlsZEZyYW1lcywgY2xpZW50
LndlYkZyYW1lKCkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIFdlYkNvcmU6OkZyYW1lKiBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmZyYW1lUGFyZW50KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
CiB7CiAgICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUs
IDApOwogCi0gICAgcmV0dXJuIGZyYW1lLT50cmVlKCktPnBhcmVudCgpOworICAgIHJldHVybiBm
cmFtZS0+dHJlZSgpLnBhcmVudCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6bGF5b3V0RnJhbWUoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZyYW1lLmNwcAppbmRleCAxMTM5MTMxOGRkMzk1MWQ1YWZhMDIyZDYyNjAwNzkyZTQyNmExNzBj
Li43YTZlNzk3ZmUyZGFiZmY1YTdlMGJlZWVjYzMzMDViZTk1MWJiNTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMTYxLDExICsxNjEsOCBAQCBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV4dChFaW5hX0l0ZXJhdG9yX0V3a19GcmFt
ZSogaXRlcgogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGl0ZXJhdG9yLT5vYmplY3Qs
IHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAKLSAgICBXZWJDb3JlOjpGcmFtZVRyZWUqIHRyZWUg
PSBzbWFydERhdGEtPmZyYW1lLT50cmVlKCk7IC8vIGNoZWNrIGlmIGl0J3Mgc3RpbGwgdmFsaWQK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodHJlZSwgZmFsc2UpOwotCi0gICAg
aWYgKGl0ZXJhdG9yLT5jdXJyZW50SW5kZXggPCB0cmVlLT5jaGlsZENvdW50KCkpIHsKLSAgICAg
ICAgKmRhdGEgPSBFV0tQcml2YXRlOjpraXRGcmFtZSh0cmVlLT5jaGlsZChpdGVyYXRvci0+Y3Vy
cmVudEluZGV4KyspKTsKKyAgICBpZiAoaXRlcmF0b3ItPmN1cnJlbnRJbmRleCA8IHNtYXJ0RGF0
YS0+ZnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCkpIHsKKyAgICAgICAgKmRhdGEgPSBFV0tQcml2
YXRlOjpraXRGcmFtZShzbWFydERhdGEtPmZyYW1lLT50cmVlKCkuY2hpbGQoaXRlcmF0b3ItPmN1
cnJlbnRJbmRleCsrKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzMyLDcg
KzMyOSw3IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCog
ZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKG5hbWUsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLCAwKTsKICAgICBXVEY6OlN0cmluZyBmcmFtZU5hbWUgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgobmFtZSk7Ci0gICAgcmV0dXJuIEVXS1ByaXZhdGU6OmtpdEZyYW1lKHNtYXJ0
RGF0YS0+ZnJhbWUtPnRyZWUoKS0+ZmluZChXVEY6OkF0b21pY1N0cmluZyhmcmFtZU5hbWUpKSk7
CisgICAgcmV0dXJuIEVXS1ByaXZhdGU6OmtpdEZyYW1lKHNtYXJ0RGF0YS0+ZnJhbWUtPnRyZWUo
KS5maW5kKFdURjo6QXRvbWljU3RyaW5nKGZyYW1lTmFtZSkpKTsKIH0KIAogRWluYV9Cb29sIGV3
a19mcmFtZV91cmlfc2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogdXJpKQpA
QCAtMzY2LDcgKzM2Myw3IEBAIGNvbnN0IGNoYXIqIGV3a19mcmFtZV9uYW1lX2dldChjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNv
bnN0IFdURjo6U3RyaW5nIGZyYW1lTmFtZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPnRyZWUoKS0+dW5p
cXVlTmFtZSgpOworICAgIGNvbnN0IFdURjo6U3RyaW5nIGZyYW1lTmFtZSA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCk7CiAKICAgICBpZiAoKHNtYXJ0RGF0YS0+bmFtZSkg
JiYgKHNtYXJ0RGF0YS0+bmFtZSA9PSBmcmFtZU5hbWUpKQogICAgICAgICByZXR1cm4gc21hcnRE
YXRhLT5uYW1lOwpAQCAtMTE0MSwxMSArMTEzOCw4IEBAIGJvb2wgZXdrX2ZyYW1lX2NoaWxkX2Fk
ZChFdmFzX09iamVjdCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4K
ICAgICB9CiAKICAgICBjb3JlRnJhbWUgPSBjaGlsZC5nZXQoKTsKLSAgICBpZiAoY29yZUZyYW1l
LT50cmVlKCkpCi0gICAgICAgIGNvcmVGcmFtZS0+dHJlZSgpLT5zZXROYW1lKG5hbWUpOwotICAg
IGVsc2UKLSAgICAgICAgRVJSKCJubyB0cmVlIGZvciBjaGlsZCBvYmplY3QiKTsKLSAgICBzbWFy
dERhdGEtPmZyYW1lLT50cmVlKCktPmFwcGVuZENoaWxkKGNoaWxkKTsKKyAgICBjb3JlRnJhbWUt
PnRyZWUoKS5zZXROYW1lKG5hbWUpOworICAgIHNtYXJ0RGF0YS0+ZnJhbWUtPnRyZWUoKS5hcHBl
bmRDaGlsZChjaGlsZCk7CiAKICAgICBpZiAoIWV3a19mcmFtZV9pbml0KGZyYW1lLCBzbWFydERh
dGEtPnZpZXcsIGNvcmVGcmFtZSkpIHsKICAgICAgICAgZXZhc19vYmplY3RfZGVsKGZyYW1lKTsK
QEAgLTExNjcsNyArMTE2MSw3IEBAIGJvb2wgZXdrX2ZyYW1lX2NoaWxkX2FkZChFdmFzX09iamVj
dCogZXdrRnJhbWUsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4KIAogICAgIC8vIFRo
ZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9j
dW1lbnQuCiAgICAgLy8gU2VlIGZhc3QvZG9tL251bGwtcGFnZS1zaG93LW1vZGFsLWRpYWxvZy1j
cmFzaC5odG1sIGZvciBhbiBleGFtcGxlLgotICAgIGlmICghY29yZUZyYW1lLT50cmVlKCktPnBh
cmVudCgpKSB7CisgICAgaWYgKCFjb3JlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAg
ICBldmFzX29iamVjdF9kZWwoZnJhbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhZGQ1ZDBkYmIxMTc0NDU4ZDYzZTk2ZDBk
ZjUzZjkyYWRiMmZiODcxLi4yMzA0MGJmOWEwMzgzYTJmZGEzMzlhMzM5ZjE3ZTY3N2UzMTc5NGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTM2ODIsNyArMzY4Miw3IEBAIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gZXdrX3ZpZXdfZnJhbWVfY3JlYXRlKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBFdmFzCiAgICAgfQogCiAgICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRo
ZSBmcmFtZSBtYXkgaGF2ZSByZW1vdmVkIGl0c2VsZiBhbHJlYWR5LgotICAgIGlmICghY29yZUZy
YW1lLT5wYWdlKCkgfHwgIWNvcmVGcmFtZS0+dHJlZSgpIHx8ICFjb3JlRnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPnBhZ2UoKSB8fCAhY29yZUZyYW1lLT50cmVl
KCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc21hcnREYXRhLT5jaGFuZ2Vk
LmZyYW1lX3JlY3QgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggOGIwNjky
MWY5OTlmZmE2ZDdjNTYwZTBiMzIwNmJkZDMxNTA5MWFlMS4uNTcyNzQ5YWUzOWUwZDBkM2NiZmFm
NzIyNzY4ZjFmOTljMjhkYmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC0xMjcs
NyArMTI3LDcgQEAgR1NMaXN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdldEZyYW1lQ2hp
bGRyZW4oV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEdT
TGlzdCogY2hpbGRyZW4gPSAwOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkgeworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29yZUZyYW1lLT50cmVlKCkuZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIGtpdEZyYW1lID0ga2l0KGNoaWxkKTsKICAgICAgICAg
aWYgKGtpdEZyYW1lKQogICAgICAgICAgIGNoaWxkcmVuID0gZ19zbGlzdF9hcHBlbmQoY2hpbGRy
ZW4sIGtpdEZyYW1lKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6Y2xlYXJNYWluRnJhbWVOYW1lKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfRlJBTUUoZnJhbWUpKTsKIAotICAgIGNv
cmUoZnJhbWUpLT50cmVlKCktPmNsZWFyTmFtZSgpOworICAgIGNvcmUoZnJhbWUpLT50cmVlKCku
Y2xlYXJOYW1lKCk7CiB9CiAKIEF0a09iamVjdCogRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpn
ZXRSb290QWNjZXNzaWJsZUVsZW1lbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCmluZGV4IGUyYjAyYmY3Y2ZjNmVmYTlhNjU5YjU5YzFhZWY2NzAyYzY2YmViYWIuLjk5
OTc5ODYwYTEzMThlN2FlOWIxMzZiOTM0OGJjZTAxMWQ1NTE5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKQEAgLTUzMiw4ICs1MzIsOCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCBvd25lckVsZW1lbnQsIG5l
dyBGcmFtZUxvYWRlckNsaWVudChraXRGcmFtZSkpOwogICAgIGZyYW1lUHJpdmF0ZS0+Y29yZUZy
YW1lID0gY2hpbGRGcmFtZS5nZXQoKTsKIAotICAgIGNoaWxkRnJhbWUtPnRyZWUoKS0+c2V0TmFt
ZShuYW1lKTsKLSAgICBwYXJlbnRGcmFtZS0+dHJlZSgpLT5hcHBlbmRDaGlsZChjaGlsZEZyYW1l
KTsKKyAgICBjaGlsZEZyYW1lLT50cmVlKCkuc2V0TmFtZShuYW1lKTsKKyAgICBwYXJlbnRGcmFt
ZS0+dHJlZSgpLmFwcGVuZENoaWxkKGNoaWxkRnJhbWUpOwogICAgIGNoaWxkRnJhbWUtPmluaXQo
KTsKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgZnJhbWUgbWF5IGhhdmUgcnVuIGFyYml0
cmFyeSBKYXZhU2NyaXB0IHRoYXQgcmVtb3ZlZCBpdCBmcm9tIHRoZSBwYWdlIGFscmVhZHkuCkBA
IC01NDUsNyArNTQ1LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHBhcmVudEZyYW1l
LT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY2hpbGRGcmFt
ZS5nZXQoKSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkgaGF2ZSBy
ZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgotICAgIGlmICghY2hpbGRGcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKSkKKyAgICBpZiAoIWNoaWxkRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCBhY2Q3YTY5ODdjMGM2
Yzg3YjY5NzAxYjIxOTQ2NWViM2RkNGRhNDIyLi5mMGQyYWJkY2JlOTAzMTFlMDk1NzdiMTFjYzQw
M2Y3YTE2MTA0ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFt
ZS5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl9mcmFtZV9n
ZXRfbmFtZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybiAiIjsKIAogICAg
IFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogcHJpdiA9IGZyYW1lLT5wcml2OwotICAgIENTdHJpbmcg
ZnJhbWVOYW1lID0gY29yZUZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4
KCk7CisgICAgQ1N0cmluZyBmcmFtZU5hbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1l
KCkuc3RyaW5nKCkudXRmOCgpOwogICAgIGlmICghZ19zdHJjbXAwKGZyYW1lTmFtZS5kYXRhKCks
IHByaXYtPm5hbWUpKQogICAgICAgICByZXR1cm4gcHJpdi0+bmFtZTsKIApAQCAtNjU1LDcgKzY1
NSw3IEBAIFdlYktpdFdlYkZyYW1lKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9wYXJlbnQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBraXQoY29yZUZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKKyAgICByZXR1
cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKTsKIH0KIAogLyoqCkBAIC04MjgsNyAr
ODI4LDcgQEAgV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfZmluZF9mcmFtZShXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKgogICAgICAgICByZXR1cm4gMDsKIAogICAg
IFN0cmluZyBuYW1lU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChuYW1lKTsKLSAgICByZXR1cm4g
a2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5maW5kKEF0b21pY1N0cmluZyhuYW1lU3RyaW5nKSkpOwor
ICAgIHJldHVybiBraXQoY29yZUZyYW1lLT50cmVlKCkuZmluZChBdG9taWNTdHJpbmcobmFtZVN0
cmluZykpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggYzQ5YTY0OGZhZjNiYzE5YzUzYzcyMDkyM2M1NTY3ODBmYTc3OWZhYS4uMWE5
NDYzMzI4YTQzNTA0MDcwYmVjNWVhNjdmNDYzNDFkZWM1NTI1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDM5NCw3ICs0Mzk0LDcgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2hpZ2hsaWdodF90ZXh0X21hdGNoZXMoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgZ2Jvb2xlYW4KICAgICBGcmFtZSAqZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWlu
RnJhbWUoKTsKICAgICBkbyB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkKHNob3VsZEhpZ2hsaWdodCk7Ci0gICAgICAgIGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpOworICAgICAgICBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpOwogICAgIH0gd2hp
bGUgKGZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGMzM2Ni
NTEyNDBlZmU1ZTYyYzI3NTJiZjBlZjg1N2JhYjYxNzk4MmEuLjhjMTk1MjRiMmU2NjA3MWNkN2Jj
N2MzNTU2NzFhOTNjOGMzNjA1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAg
LTY2NCw3ICs2NjQsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6cGVyZm9y
bVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcGx1Z2luUmVxdWVzdCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZnJhbWUgPSBbbmV3V2ViVmlldyBtYWluRnJhbWVdOwot
ICAgICAgICAgICAgY29yZShmcmFtZSktPnRyZWUoKS0+c2V0TmFtZShmcmFtZU5hbWUpOworICAg
ICAgICAgICAgY29yZShmcmFtZSktPnRyZWUoKS5zZXROYW1lKGZyYW1lTmFtZSk7CiAgICAgICAg
ICAgICBbW25ld1dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXdTaG93Om5ld1dl
YlZpZXddOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGVhNmIzOTdlMGQxM2E1
Y2E0NWJiYzRjYmQ0NzA0MzQ3ZmUyMDdlNTQuLjQxYzZkNDBmZDllMmFkZGFiMDkwNDA0NDYwZDEx
ZTg4NjVjYjkzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFz
ZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
YkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTg0MCw3ICs4NDAsNyBAQCAtIChDU3RyaW5n
KXJlc29sdmVkVVJMU3RyaW5nRm9yVVJMOihjb25zdCBjaGFyKil1cmwgdGFyZ2V0Oihjb25zdCBj
aGFyKil0YXJnZXQKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwog
Ci0gICAgRnJhbWUqIHRhcmdldEZyYW1lID0gZnJhbWUtPnRyZWUoKS0+ZmluZChTdHJpbmc6OmZy
b21VVEY4KHRhcmdldCkpOworICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGZyYW1lLT50cmVlKCku
ZmluZChTdHJpbmc6OmZyb21VVEY4KHRhcmdldCkpOwogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAg
ICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDdhYTgxOTdkOTg2YzEzYzUw
MGEyMGFkODA5NDVjZDE0YjM3MzVlOWYuLjBjZjA2NmM5N2JlMDI1YTJlZGYwZWEwMDI4NTMwNzA0
NjhjM2NiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCkBAIC0xNjc5LDcgKzE2NzksNyBAQCAtICh2b2lkKWxvYWRQbHVnaW5S
ZXF1ZXN0OihXZWJQbHVnaW5SZXF1ZXN0ICopcGx1Z2luUmVxdWVzdAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBmcmFtZSA9IFtuZXdXZWJWaWV3IG1haW5GcmFtZV07
Ci0gICAgICAgICAgICBjb3JlKGZyYW1lKS0+dHJlZSgpLT5zZXROYW1lKGZyYW1lTmFtZSk7Cisg
ICAgICAgICAgICBjb3JlKGZyYW1lKS0+dHJlZSgpLnNldE5hbWUoZnJhbWVOYW1lKTsKICAgICAg
ICAgICAgIFtbbmV3V2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld1Nob3c6bmV3
V2ViVmlld107CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDc3OGQ3MzEw
ZWZjZjdmY2Q1NGJmY2VhZTVmMjJkNTQ1MGEwMWNkMjIuLjIzYmNhZTY1OTdhYWNmN2Q3YmZhZTNh
ZGJiN2ZkMTBjMzgwNjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xNzgsNyArMTc4LDcgQEAg
c3RhdGljIHZvaWQgYXBwbHlBcHBsZURpY3Rpb25hcnlBcHBsaWNhdGlvblF1aXJrTm9uSW5saW5l
UGFydChXZWJGcmFtZUxvYWRlckNsaWUKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKGNsaWVudC0+
d2ViRnJhbWUoKSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChm
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICBpZiAoZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQpCkBAIC0xMTU4LDcgKzExNTgsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogewogICAgIGlmICghW21fd2Vi
RnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKSB7Ci0gICAgICAgIEFTU0VSVCghY29yZShtX3dlYkZy
YW1lLmdldCgpKS0+dHJlZSgpLT5jaGlsZENvdW50KCkpOworICAgICAgICBBU1NFUlQoIWNvcmUo
bV93ZWJGcmFtZS5nZXQoKSktPnRyZWUoKS5jaGlsZENvdW50KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIApAQCAtMTQxMyw3ICsxNDEzLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW4KICAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxk
RnJhbWUodXJsLCByZWZlcnJlciwgcmVzdWx0LmdldCgpKTsKIAogICAgIC8vIFRoZSBmcmFtZSdz
IG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCi0g
ICAgaWYgKCFyZXN1bHQtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgaWYgKCFyZXN1bHQtPnRyZWUo
KS5wYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDQ1ZTRlNDY2NDhh
ZWExZWVlOTZlYjcwYzQxMzc3NTk5MzUyOTI1NmUuLjBjNDE4YjBmZDliYjYzZDk2YmE4NWRlYThh
ZGM2NTg5MzIwYzU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
MjY4LDEwICsyNjgsMTAgQEAgKyAoUGFzc1JlZlB0cjxGcmFtZT4pX2NyZWF0ZUZyYW1lV2l0aFBh
Z2U6KFBhZ2UqKXBhZ2UgZnJhbWVOYW1lOihjb25zdCBTdHJpbmcmKW4KICAgICBbZnJhbWUgcmVs
ZWFzZV07CiAgICAgZnJhbWUtPl9wcml2YXRlLT5jb3JlRnJhbWUgPSBjb3JlRnJhbWUuZ2V0KCk7
CiAKLSAgICBjb3JlRnJhbWUtPnRyZWUoKS0+c2V0TmFtZShuYW1lKTsKKyAgICBjb3JlRnJhbWUt
PnRyZWUoKS5zZXROYW1lKG5hbWUpOwogICAgIGlmIChvd25lckVsZW1lbnQpIHsKICAgICAgICAg
QVNTRVJUKG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7Ci0gICAgICAgIG93bmVy
RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+dHJlZSgpLT5hcHBlbmRDaGlsZChjb3JlRnJh
bWUuZ2V0KCkpOworICAgICAgICBvd25lckVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnRy
ZWUoKS5hcHBlbmRDaGlsZChjb3JlRnJhbWUuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvcmVGcmFt
ZS0+aW5pdCgpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZUJhY2tncm91bmRB
bmRVcGRhdGVzV2hpbGVPZmZzY3JlZW4KICAgICBOU0NvbG9yICpiYWNrZ3JvdW5kQ29sb3IgPSBb
d2ViVmlldyBiYWNrZ3JvdW5kQ29sb3JdOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2
YXRlLT5jb3JlRnJhbWU7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKSB7CisgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpIHsKICAgICAgICAgLy8gRG9uJ3QgY2FsbCBzZXRE
cmF3c0JhY2tncm91bmQ6WUVTIGhlcmUgYmVjYXVzZSBpdCBtYXkgYmUgTk8gYmVjYXVzZSBvZiBh
IGxvYWQKICAgICAgICAgLy8gaW4gcHJvZ3Jlc3M7IFdlYkZyYW1lTG9hZGVyQ2xpZW50IGtlZXBz
IGl0IHNldCB0byBOTyBkdXJpbmcgdGhlIGxvYWQgcHJvY2Vzcy4KICAgICAgICAgV2ViRnJhbWUg
KndlYkZyYW1lID0ga2l0KGZyYW1lKTsKQEAgLTM5MSw3ICszOTEsNyBAQCAtIChpZClfaW50ZXJu
YWxMb2FkRGVsZWdhdGUKIC0gKHZvaWQpX3VubWFya0FsbEJhZEdyYW1tYXIKIHsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KGNvcmVGcmFtZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgewogICAgICAg
ICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAg
ICBkb2N1bWVudC0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkdyYW1t
YXIpOwogICAgIH0KQEAgLTQwMCw3ICs0MDAsNyBAQCAtICh2b2lkKV91bm1hcmtBbGxCYWRHcmFt
bWFyCiAtICh2b2lkKV91bm1hcmtBbGxNaXNzcGVsbGluZ3MKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVG
cmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KGNvcmVGcmFt
ZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgewogICAgICAgICBpZiAoRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVu
dC0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKICAg
ICB9CkBAIC00MzQsNyArNDM0LDcgQEAgLSAoQk9PTClfYXRNb3N0T25lRnJhbWVIYXNTZWxlY3Rp
b24KICAgICAvLyBGSVhNRTogNDE4NjA1MCBpcyBvbmUga25vd24gY2FzZSB0aGF0IG1ha2VzIHRo
aXMgZGVidWcgY2hlY2sgZmFpbC4KICAgICBCT09MIGZvdW5kID0gTk87CiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBj
b3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChjb3Jl
RnJhbWUpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKQogICAgICAgICBpZiAoW2tp
dChmcmFtZSkgX2hhc1NlbGVjdGlvbl0pIHsKICAgICAgICAgICAgIGlmIChmb3VuZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gTk87CkBAIC00NDcsNyArNDQ3LDcgQEAgLSAoQk9PTClfYXRNb3N0
T25lRnJhbWVIYXNTZWxlY3Rpb24KIC0gKFdlYkZyYW1lICopX2ZpbmRGcmFtZVdpdGhTZWxlY3Rp
b24KIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKLSAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNv
cmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZy
YW1lKSkgewogICAgICAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSBraXQoZnJhbWUpOwogICAgICAg
ICBpZiAoW3dlYkZyYW1lIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICAgICAgcmV0dXJuIHdlYkZy
YW1lOwpAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBj
b250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gX3By
aXZhdGUtPmNvcmVGcmFtZS0+dmlldygpOwogICAgIAogICAgIGJvb2wgc2hvdWxkRmxhdHRlbiA9
IGZhbHNlOwotICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT50cmVlKCktPnBhcmVudCgpKSB7CisgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkgewogICAgICAgICAvLyBGb3Igc3ViZnJh
bWVzLCB3ZSBuZWVkIHRvIGluaGVyaXQgdGhlIHBhaW50IGJlaGF2aW9yIGZyb20gb3VyIHBhcmVu
dAogICAgICAgICBGcmFtZVZpZXcqIHBhcmVudFZpZXcgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZy
YW1lLT52aWV3KCkgOiAwOwogICAgICAgICBpZiAocGFyZW50VmlldykKQEAgLTg0NCw3ICs4NDQs
NyBAQCBAaW1wbGVtZW50YXRpb24gV2ViRnJhbWUgKFdlYlByaXZhdGUpCiAtIChCT09MKV9pc0Rl
c2NlbmRhbnRPZkZyYW1lOihXZWJGcmFtZSAqKWFuY2VzdG9yCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3Jl
RnJhbWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YoY29yZShhbmNlc3RvcikpOworICAgIHJldHVy
biBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT50cmVlKCkuaXNEZXNjZW5kYW50T2YoY29yZShhbmNl
c3RvcikpOwogfQogCiAtICh2b2lkKV9zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnM6KEJPT0wpc2hv
dWxkQ3JlYXRlUmVuZGVyZXJzCkBAIC05MTksNyArOTE5LDcgQEAgLSAodW5zaWduZWQpX3BlbmRp
bmdGcmFtZVVubG9hZEV2ZW50Q291bnQKIC0gKHZvaWQpX3JlY3Vyc2l2ZV9yZXN1bWVOdWxsRXZl
bnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
c2VsZik7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKSB7CisgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KGNvcmVGcmFtZSkpIHsKICAgICAgICAgTlNWaWV3IDxXZWJEb2N1bWVudFZpZXc+ICpk
b2N1bWVudFZpZXcgPSBbW2tpdChmcmFtZSkgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAg
ICAgICBpZiAoW2RvY3VtZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11d
KQogICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldyBfcmVzdW1lTnVsbEV2
ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2luc107CkBAIC05MjksNyArOTI5LDcgQEAgLSAodm9pZClf
cmVjdXJzaXZlX3Jlc3VtZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnMKIC0gKHZvaWQp
X3JlY3Vyc2l2ZV9wYXVzZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnMKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShzZWxmKTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNv
cmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KGNvcmVG
cmFtZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgewogICAgICAgICBOU1Zp
ZXcgPFdlYkRvY3VtZW50Vmlldz4gKmRvY3VtZW50VmlldyA9IFtba2l0KGZyYW1lKSBmcmFtZVZp
ZXddIGRvY3VtZW50Vmlld107CiAgICAgICAgIGlmIChbZG9jdW1lbnRWaWV3IGlzS2luZE9mQ2xh
c3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopZG9j
dW1lbnRWaWV3IF9wYXVzZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBsdWdpbnNdOwpAQCAtMTI4
Myw3ICsxMjgzLDcgQEAgLSAoTlNTdHJpbmcgKiluYW1lCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCk7CisgICAg
cmV0dXJuIGNvcmVGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKTsKIH0KIAogLSAoV2ViRnJhbWVW
aWV3ICopZnJhbWVWaWV3CkBAIC0xNDU5LDcgKzE0NTksNyBAQCAtIChXZWJGcmFtZSAqKWZpbmRG
cmFtZU5hbWVkOihOU1N0cmluZyAqKW5hbWUKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZh
dGUtPmNvcmVGcmFtZTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5maW5kKG5hbWUpKTsKKyAgICByZXR1
cm4ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLmZpbmQobmFtZSkpOwogfQogCiAtIChXZWJGcmFtZSAq
KXBhcmVudEZyYW1lCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCAtIChXZWJGcmFtZSAqKXBhcmVudEZy
YW1lCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYg
KCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtba2l0KGNvcmVG
cmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IFtba2l0KGNvcmVGcmFtZS0+dHJlZSgpLnBhcmVudCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCkBAIC0xNDc1LDggKzE0NzUsOCBAQCAtIChO
U0FycmF5ICopY2hpbGRGcmFtZXMKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNv
cmVGcmFtZTsKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKLSAgICBOU011dGFibGVBcnJheSAqY2hpbGRyZW4gPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6Y29yZUZyYW1lLT50cmVlKCktPmNoaWxkQ291bnQoKV07Ci0gICAgZm9y
IChGcmFtZSogY2hpbGQgPSBjb3JlRnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIE5TTXV0YWJsZUFycmF5
ICpjaGlsZHJlbiA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjb3JlRnJhbWUt
PnRyZWUoKS5jaGlsZENvdW50KCldOworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gY29yZUZyYW1l
LT50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpCiAgICAgICAgIFtjaGlsZHJlbiBhZGRPYmplY3Q6a2l0KGNoaWxkKV07CiAgICAg
cmV0dXJuIGNoaWxkcmVuOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IGQ5YmJiMTVkNmQ4NzE4NmRmYjcxYzUxMTYyMDQ3YTg2ZTI2YWRmZWEuLjY3OTYyNzIzZjJlZjY0
Y2Y4ZjhlNmMzMmNhNDgwYWJjNmMwNzM5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTIzMzIsMTMgKzIzMzIsMTMgQEAgLSAodm9pZClfc2V0QWRkaXRpb25hbFdlYlBs
dWdJblBhdGhzOihOU0FycmF5ICopbmV3UGF0aHMKIAogLSAodm9pZClfYXR0YWNoU2NyaXB0RGVi
dWdnZXJUb0FsbEZyYW1lcwogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gW3NlbGYgX21haW5D
b3JlRnJhbWVdOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1lXTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgW2tpdChmcmFtZSkg
X2F0dGFjaFNjcmlwdERlYnVnZ2VyXTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdn
ZXJGcm9tQWxsRnJhbWVzCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBbc2VsZiBfbWFpbkNv
cmVGcmFtZV07IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICBba2l0KGZyYW1lKSBf
ZGV0YWNoU2NyaXB0RGVidWdnZXJdOwogfQogCkBAIC0yNDU0LDcgKzI0NTQsNyBAQCAtICh2b2lk
KV9zZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplOihpbnQpY2h1bmtTaXplCiAKIC0gKHZv
aWQpX2NsZWFyTWFpbkZyYW1lTmFtZQogewotICAgIF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUo
KS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkt
PnRyZWUoKS5jbGVhck5hbWUoKTsKIH0KIAogLSAodm9pZClzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkOihCT09MKWZsYWcKQEAgLTI1MDUsNyArMjUwNSw3IEBAIC0gKEJPT0wpX2lz
VXNpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KGNv
cmVGcmFtZSkpIHsKICAgICAgICAgTlNWaWV3ICpkb2N1bWVudFZpZXcgPSBbW2tpdChmcmFtZSkg
ZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwogICAgICAgICBpZiAoW2RvY3VtZW50VmlldyBpc0tp
bmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dICYmIFsoV2ViSFRNTFZpZXcgKilkb2N1bWVu
dFZpZXcgX2lzVXNpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nXSkKICAgICAgICAgICAgIHJldHVy
biBZRVM7CkBAIC0yNTQzLDcgKzI1NDMsNyBAQCAtIChCT09MKV9pc1NvZnR3YXJlUmVuZGVyYWJs
ZQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBGcmFtZSogY29yZUZy
YW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOwotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gY29y
ZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoY29yZUZy
YW1lKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKSB7CiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICBpZiAoIXZpZXct
PmlzU29mdHdhcmVSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5POwpAQCAt
NDIxMiw3ICs0MjEyLDcgQEAgLSAodm9pZClzZXRIb3N0V2luZG93OihOU1dpbmRvdyAqKWhvc3RX
aW5kb3cKICAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IFtzZWxmIF9t
YWluQ29yZUZyYW1lXTsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpCiAgICAgICAgIFtbW2tpdChmcmFtZSkgZnJhbWVWaWV3
XSBkb2N1bWVudFZpZXddIHZpZXdXaWxsTW92ZVRvSG9zdFdpbmRvdzpob3N0V2luZG93XTsKICAg
ICBpZiAoX3ByaXZhdGUtPmhvc3RXaW5kb3cgJiYgW3NlbGYgd2luZG93XSAhPSBfcHJpdmF0ZS0+
aG9zdFdpbmRvdykKICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmljYXRpb24g
b2JqZWN0Ol9wcml2YXRlLT5ob3N0V2luZG93XTsKQEAgLTQyMjAsNyArNDIyMCw3IEBAIC0gKHZv
aWQpc2V0SG9zdFdpbmRvdzooTlNXaW5kb3cgKilob3N0V2luZG93CiAgICAgICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpA
c2VsZWN0b3IoX3dpbmRvd1dpbGxDbG9zZTopIG5hbWU6TlNXaW5kb3dXaWxsQ2xvc2VOb3RpZmlj
YXRpb24gb2JqZWN0Omhvc3RXaW5kb3ddOwogICAgIFtfcHJpdmF0ZS0+aG9zdFdpbmRvdyByZWxl
YXNlXTsKICAgICBfcHJpdmF0ZS0+aG9zdFdpbmRvdyA9IFtob3N0V2luZG93IHJldGFpbl07Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Y29yZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChjb3Jl
RnJhbWUpKQogICAgICAgICBbW1traXQoZnJhbWUpIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSB2
aWV3RGlkTW92ZVRvSG9zdFdpbmRvd107CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldERldmljZVNj
YWxlRmFjdG9yKFtzZWxmIF9kZXZpY2VTY2FsZUZhY3Rvcl0pOwogfQpAQCAtNDQxNiw4ICs0NDE2
LDggQEAgc3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZSAqZnJhbWUsIFdl
YkZpbmRPcHRpb25zIG9wdGlvbnMgPSAwKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KGZyYW1lKTsKICAgICByZXR1cm4ga2l0KChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNCYWNrd2Fy
ZHMpCi0gICAgICAgID8gY29yZUZyYW1lLT50cmVlKCktPnRyYXZlcnNlUHJldmlvdXNXaXRoV3Jh
cChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNXcmFwQXJvdW5kKQotICAgICAgICA6IGNvcmVGcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChvcHRpb25zICYgV2ViRmluZE9wdGlvbnNX
cmFwQXJvdW5kKSk7CisgICAgICAgID8gY29yZUZyYW1lLT50cmVlKCkudHJhdmVyc2VQcmV2aW91
c1dpdGhXcmFwKG9wdGlvbnMgJiBXZWJGaW5kT3B0aW9uc1dyYXBBcm91bmQpCisgICAgICAgIDog
Y29yZUZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0V2l0aFdyYXAob3B0aW9ucyAmIFdlYkZpbmRP
cHRpb25zV3JhcEFyb3VuZCkpOwogfQogCiAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilz
dHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxh
ZyB3cmFwOihCT09MKXdyYXBGbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGEzOWIwMzk5
NWNmYmI5ZDA0NGFjYzZiY2Y0Y2Y0YjBlYWRlMGY5NWQuLmYyZWZhYjJlNmYxMWYwZjk4NDA1MDkz
MjZjYWQzMDhjMTE4MWRmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yNzksNyArMjc5
LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGNvbnN0
IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25zdAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6Y2xlYXJGcmFtZU5hbWUoUVdlYkZyYW1lQWRhcHRlciAqYWRhcHRlcikKIHsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7Ci0gICAgY29yZUZyYW1lLT50cmVlKCktPmNs
ZWFyTmFtZSgpOworICAgIGNvcmVGcmFtZS0+dHJlZSgpLmNsZWFyTmFtZSgpOwogfQogCiBpbnQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKaW5kZXggOTVjMGEyZmU4NTA2Mjg2MTYxMjA4YjA2Y2E0YjkzZmJmM2E0MmJlYi4uMmFi
MzJhNjNmZTZhNWM5OTc4ZTkyZDYwNTNkMTlkZTk5NjZjYTY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBA
IC05OSw3ICs5OSw3IEBAIHN0YXRpYyBRTWFwPHVuc2lnbmVkIGxvbmcsIFFTdHJpbmc+IGR1bXBB
c3NpZ25lZFVybHM7CiBzdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChXZWJDb3JlOjpGcmFtZSogd2ViQ29yZUZyYW1lKQogewogICAgIFFXZWJGcmFtZUFk
YXB0ZXIqIGZyYW1lID0gUVdlYkZyYW1lQWRhcHRlcjo6a2l0KHdlYkNvcmVGcmFtZSk7Ci0gICAg
UVN0cmluZyBuYW1lID0gd2ViQ29yZUZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKTsKKyAgICBR
U3RyaW5nIG5hbWUgPSB3ZWJDb3JlRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCk7CiAKICAgICBi
b29sIGlzTWFpbkZyYW1lID0gZnJhbWUgPT0gZnJhbWUtPnBhZ2VBZGFwdGVyLT5tYWluRnJhbWVB
ZGFwdGVyKCk7CiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CkBAIC00ODEsNyArNDgxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRDb21taXRM
b2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQobV9mcmFtZSkpKTsKIAotICAgIGlmIChtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpIHx8
ICFtX3dlYkZyYW1lKQorICAgIGlmIChtX2ZyYW1lLT50cmVlKCkucGFyZW50KCkgfHwgIW1fd2Vi
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fd2ViRnJhbWUtPmVtaXRVcmxDaGFuZ2Vk
KCk7CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZEZpbmlzaERvY3VtZW50TG9hZCgpCiAgICAgICAgICAgICBwcmludGYoIiVzIC0gaGFzICV1
IG9udW5sb2FkIGhhbmRsZXIocylcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpLCB1bmxvYWRFdmVudENvdW50KTsKICAgICB9CiAKLSAg
ICBpZiAobV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSB8fCAhbV93ZWJGcmFtZSkKKyAgICBpZiAo
bV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpIHx8ICFtX3dlYkZyYW1lKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMo
KTsKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9n
cmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQogewogICAgIGlmIChtX3dlYkZyYW1lICYmIG1fZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgbV9pc09yaWdpbmF0aW5nTG9hZCA9IHRydWU7Ci0gICAgaWYg
KG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgfHwgIW1fd2ViRnJhbWUpCisgICAgaWYgKG1fZnJh
bWUtPnRyZWUoKS5wYXJlbnQoKSB8fCAhbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwogfQpA
QCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG9jdW1lbnRFbGVt
ZW50QXZhaWxhYmxlKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRQZXJmb3JtRmly
c3ROYXZpZ2F0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KSB8fCAhbV93ZWJGcmFtZSkKKyAgICBpZiAobV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpIHx8ICFt
X3dlYkZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXIt
PnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CiB9CkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmxvYWRVUkxJbnRvQ2hp
bGRGcmFtZSh1cmxUb0xvYWQsIGZyYW1lRGF0YS5yZWZlcnJlciwgZnJhbWVEYXRhLmZyYW1lLmdl
dCgpKTsKIAogICAgIC8vIFRoZSBmcmFtZSdzIG9ubG9hZCBoYW5kbGVyIG1heSBoYXZlIHJlbW92
ZWQgaXQgZnJvbSB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKCFmcmFtZURhdGEuZnJhbWUtPnRyZWUo
KS0+cGFyZW50KCkpCisgICAgaWYgKCFmcmFtZURhdGEuZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gZnJhbWVEYXRhLmZyYW1lLnJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1l
QWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuY3BwCmluZGV4IDc4NzdiZTgwYjdlNDU1MWYwZWI0OTc4Mzg5MzBlZGFmMTEyM2U2OTcu
LjU0N2E5NGRjZmQwMGU2MmQyNjlkNmNmYmJiOTM5YWVlMzhhZWIwMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAt
OTQsOSArOTQsOSBAQCBRV2ViRnJhbWVEYXRhOjpRV2ViRnJhbWVEYXRhKFdlYkNvcmU6OlBhZ2Uq
IHBhcmVudFBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBwYXJlbnRGcgogICAgIGZyYW1lID0gRnJhbWU6
OmNyZWF0ZShwYWdlLCBvd25lckVsZW1lbnQsIGZyYW1lTG9hZGVyQ2xpZW50KTsKIAogICAgIC8v
IEZJWE1FOiBBbGwgb2YgdGhlIGJlbG93IHNob3VsZCBwcm9iYWJseSBiZSBtb3ZlZCBvdmVyIGlu
dG8gV2ViQ29yZQotICAgIGZyYW1lLT50cmVlKCktPnNldE5hbWUobmFtZSk7CisgICAgZnJhbWUt
PnRyZWUoKS5zZXROYW1lKG5hbWUpOwogICAgIGlmIChwYXJlbnRGcmFtZSkKLSAgICAgICAgcGFy
ZW50RnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoZnJhbWUpOworICAgICAgICBwYXJlbnRGcmFt
ZS0+dHJlZSgpLmFwcGVuZENoaWxkKGZyYW1lKTsKIH0KIAogUVdlYkZyYW1lQWRhcHRlcjo6UVdl
YkZyYW1lQWRhcHRlcigpCkBAIC0xMTksNyArMTE5LDcgQEAgUVdlYkZyYW1lQWRhcHRlcjo6flFX
ZWJGcmFtZUFkYXB0ZXIoKQogCiB2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OmxvYWQoY29uc3QgUU5l
dHdvcmtSZXF1ZXN0JiByZXEsIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wZXJh
dGlvbiwgY29uc3QgUUJ5dGVBcnJheSYgYm9keSkKIHsKLSAgICBpZiAoZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCkpCisgICAgaWYgKGZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHBhZ2VB
ZGFwdGVyLT5pbnNpZGVPcGVuQ2FsbCA9IHRydWU7CiAKICAgICBRVXJsIHVybCA9IGVuc3VyZUFi
c29sdXRlVXJsKHJlcS51cmwoKSk7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBRV2ViRnJhbWVB
ZGFwdGVyOjpsb2FkKGNvbnN0IFFOZXR3b3JrUmVxdWVzdCYgcmVxLCBRTmV0d29ya0FjY2Vzc01h
bmFnZXI6Ok8KIAogICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJl
cXVlc3QoZnJhbWUsIHJlcXVlc3QpKTsKIAotICAgIGlmIChmcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KSkKKyAgICBpZiAoZnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkKICAgICAgICAgcGFnZUFkYXB0ZXIt
Pmluc2lkZU9wZW5DYWxsID0gZmFsc2U7CiB9CiAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBRV2ViU2Vj
dXJpdHlPcmlnaW4gUVdlYkZyYW1lQWRhcHRlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogCiBR
U3RyaW5nIFFXZWJGcmFtZUFkYXB0ZXI6OnVuaXF1ZU5hbWUoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lLT50cmVlKCku
dW5pcXVlTmFtZSgpOwogfQogCiAvLyBUaGlzIGNvZGUgaXMgY29waWVkIGZyb20gQ2hyb21lQ2xp
ZW50R3RrLmNwcC4KQEAgLTY5MCw4ICs2OTAsNyBAQCBRTGlzdDxRT2JqZWN0Kj4gUVdlYkZyYW1l
QWRhcHRlcjo6Y2hpbGRGcmFtZXMoKSBjb25zdAogewogICAgIFFMaXN0PFFPYmplY3QqPiBvcmln
aW5hdGluZ09iamVjdHM7CiAgICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIEZyYW1lVHJlZSogdHJl
ZSA9IGZyYW1lLT50cmVlKCk7Ci0gICAgICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkgewogICAgICAgICAg
ICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGNoaWxkLT5sb2FkZXIoKTsKICAgICAgICAgICAgIG9y
aWdpbmF0aW5nT2JqZWN0cy5hcHBlbmQobG9hZGVyLm5ldHdvcmtpbmdDb250ZXh0KCktPm9yaWdp
bmF0aW5nT2JqZWN0KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5kZXggZjAxNmE1ZThmMjAwMWY2OGNm
YzMzZDQ5ZWU3MGFjZjc1MzkyYTNiNi4uOWUzYTMyOGYzODZlZjhkOGJhZjJiNGQ4YTgxZjViYTM3
YjJlNWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
UGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YlBhZ2VBZGFwdGVyLmNwcApAQCAtNDIyLDEwICs0MjIsMTAgQEAgYm9vbCBRV2ViUGFnZUFkYXB0
ZXI6OmZpbmRUZXh0KGNvbnN0IFFTdHJpbmcmIHN1YlN0cmluZywgRmluZEZsYWcgb3B0aW9ucykK
IAogICAgIGlmIChzdWJTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIHBhZ2UtPm1haW5GcmFt
ZSgpLT5zZWxlY3Rpb24oKS5jbGVhcigpOwotICAgICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKS0+dHJlZSgpLT5maXJzdENoaWxkKCk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpLT50cmVlKCkuZmlyc3RDaGlsZCgpOwogICAgICAgICB3aGlsZSAo
ZnJhbWUpIHsKICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5jbGVhcigpOwotICAgICAg
ICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSk7
CisgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0V2l0aFdyYXAo
ZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZTBjZjM2
YzIyMzMxMTMwOGJlYWRlYmYzYTJiNmViZGM3MTkyNTZmMS4uOGNhYjY4MWJjNzRhMDQ1NGYzNTA3
Y2RlZTc2Yjk1ZTE0MTQ5M2U2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTA5MSwxNCArMTA5
MSwxNCBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbgogCiAgICAgUmVmUHRyPEZyYW1lPiBjaGls
ZEZyYW1lID0gd2ViRnJhbWUtPmluaXQobV93ZWJGcmFtZS0+d2ViVmlldygpLCBjb3JlRnJhbWUt
PnBhZ2UoKSwgb3duZXJFbGVtZW50KTsKIAotICAgIGNoaWxkRnJhbWUtPnRyZWUoKS0+c2V0TmFt
ZShuYW1lKTsKLSAgICBjb3JlRnJhbWUtPnRyZWUoKS0+YXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7
CisgICAgY2hpbGRGcmFtZS0+dHJlZSgpLnNldE5hbWUobmFtZSk7CisgICAgY29yZUZyYW1lLT50
cmVlKCkuYXBwZW5kQ2hpbGQoY2hpbGRGcmFtZSk7CiAgICAgY2hpbGRGcmFtZS0+aW5pdCgpOwog
CiAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxkRnJhbWUoVVJMLCByZWZl
cnJlciwgY2hpbGRGcmFtZS5nZXQoKSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFu
ZGxlciBtYXkgaGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgotICAgIGlmICghY2hp
bGRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICBpZiAoIWNoaWxkRnJhbWUtPnRyZWUoKS5w
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggMTg0OTVjZDA2NDJiNmZjZjQ4YWQ5ZTVh
Mjc2YmMzYWNjNjE5NTkyYi4uMDFlYWNjZWQ1YTNiNzY2NjAzOGFmNzI4NDdhNWRmODhmZjAxMDYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6Om5hbWUoCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqZnJhbWVOYW1lID0gQlN0cmluZyhjb3JlRnJhbWUt
PnRyZWUoKS0+dW5pcXVlTmFtZSgpKS5yZWxlYXNlKCk7CisgICAgKmZyYW1lTmFtZSA9IEJTdHJp
bmcoY29yZUZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKS5yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpmaW5kRnJhbWVOYW1lZCgKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIEZyYW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1lLT50cmVl
KCktPmZpbmQoQXRvbWljU3RyaW5nKG5hbWUsIFN5c1N0cmluZ0xlbihuYW1lKSkpOworICAgIEZy
YW1lKiBmb3VuZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuZmluZChBdG9taWNTdHJpbmcobmFt
ZSwgU3lzU3RyaW5nTGVuKG5hbWUpKSk7CiAgICAgaWYgKCFmb3VuZEZyYW1lKQogICAgICAgICBy
ZXR1cm4gU19PSzsKIApAQCAtNzU5LDcgKzc1OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OnBhcmVudEZyYW1lKAogICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgICpm
cmFtZSA9IDA7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpKQotICAgICAg
ICBpZiAoV2ViRnJhbWUqIHdlYkZyYW1lID0ga2l0KGNvcmVGcmFtZS0+dHJlZSgpLT5wYXJlbnQo
KSkpCisgICAgICAgIGlmIChXZWJGcmFtZSogd2ViRnJhbWUgPSBraXQoY29yZUZyYW1lLT50cmVl
KCkucGFyZW50KCkpKQogICAgICAgICAgICAgaHIgPSB3ZWJGcmFtZS0+UXVlcnlJbnRlcmZhY2Uo
SUlEX0lXZWJGcmFtZSwgKHZvaWQqKikgZnJhbWUpOwogCiAgICAgcmV0dXJuIGhyOwpAQCAtNzY4
LDcgKzc2OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBhcmVudEZy
YW1lKAogY2xhc3MgRW51bUNoaWxkRnJhbWVzIDogcHVibGljIElFbnVtVkFSSUFOVAogewogcHVi
bGljOgotICAgIEVudW1DaGlsZEZyYW1lcyhGcmFtZSogZikgOiBtX3JlZkNvdW50KDEpLCBtX2Zy
YW1lKGYpLCBtX2N1ckNoaWxkKGYgPyBmLT50cmVlKCktPmZpcnN0Q2hpbGQoKSA6IDApIHsgfQor
ICAgIEVudW1DaGlsZEZyYW1lcyhGcmFtZSogZikgOiBtX3JlZkNvdW50KDEpLCBtX2ZyYW1lKGYp
LCBtX2N1ckNoaWxkKGYgPyBmLT50cmVlKCkuZmlyc3RDaGlsZCgpIDogMCkgeyB9CiAKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpCiAgICAgewpAQCAtODE2LDcgKzgxNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVl9WVChyZ1ZhcikgPSBWVF9VTktOT1dOOwogICAgICAgICBWX1VOS05PV04ocmdW
YXIpID0gdW5rbm93bjsKIAotICAgICAgICBtX2N1ckNoaWxkID0gbV9jdXJDaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpOworICAgICAgICBtX2N1ckNoaWxkID0gbV9jdXJDaGlsZC0+dHJlZSgp
Lm5leHRTaWJsaW5nKCk7CiAgICAgICAgIGlmIChwQ2VsdEZldGNoZWQpCiAgICAgICAgICAgICAq
cENlbHRGZXRjaGVkID0gMTsKICAgICAgICAgcmV0dXJuIFNfT0s7CkBAIC04MjcsNyArODI3LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gU19G
QUxTRTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNlbHQgJiYgbV9jdXJDaGls
ZDsgaSsrKQotICAgICAgICAgICAgbV9jdXJDaGlsZCA9IG1fY3VyQ2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIG1fY3VyQ2hpbGQgPSBtX2N1ckNoaWxkLT50cmVlKCku
bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmV0dXJuIG1fY3VyQ2hpbGQgPyBTX09LIDogU19GQUxT
RTsKICAgICB9CiAKQEAgLTgzNSw3ICs4MzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBp
ZiAoIW1fZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gU19GQUxTRTsKLSAgICAgICAgbV9jdXJD
aGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOworICAgICAgICBtX2N1ckNoaWxk
ID0gbV9mcmFtZS0+dHJlZSgpLmZpcnN0Q2hpbGQoKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAg
ICAgfQogCkBAIC0yMDE5LDcgKzIwMTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjppc0Rlc2NlbmRhbnRPZkZyYW1lKAogICAgIGlmICghYW5jZXN0b3JXZWJGcmFtZSkK
ICAgICAgICAgcmV0dXJuIFNfT0s7CiAKLSAgICAqcmVzdWx0ID0gKGNvcmVGcmFtZSAmJiBjb3Jl
RnJhbWUtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2YoY29yZShhbmNlc3RvcldlYkZyYW1lLmdldCgp
KSkpID8gVFJVRSA6IEZBTFNFOworICAgICpyZXN1bHQgPSAoY29yZUZyYW1lICYmIGNvcmVGcmFt
ZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKGNvcmUoYW5jZXN0b3JXZWJGcmFtZS5nZXQoKSkpKSA/
IFRSVUUgOiBGQUxTRTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjA3Miw3ICsyMDcyLDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0
V29ybGQoSVdlYlNjcmlwdFdvcmxkKiBpV28KIHZvaWQgV2ViRnJhbWU6OnVubWFya0FsbE1pc3Nw
ZWxsaW5ncygpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcyk7Ci0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSBjb3JlRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dChjb3JlRnJhbWUpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBjb3Jl
RnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KGNvcmVGcmFt
ZSkpIHsKICAgICAgICAgRG9jdW1lbnQgKmRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgICAg
ICBpZiAoIWRvYykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwODQsNyArMjA4NCw3IEBAIHZv
aWQgV2ViRnJhbWU6OnVubWFya0FsbE1pc3NwZWxsaW5ncygpCiB2b2lkIFdlYkZyYW1lOjp1bm1h
cmtBbGxCYWRHcmFtbWFyKCkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsK
LSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KGNvcmVGcmFtZSkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IGNvcmVGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQo
Y29yZUZyYW1lKSkgewogICAgICAgICBEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgICAgIGlmICghZG9jKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAppbmRleCAyZjAyZDc0MTA3NzM0NTMwZTNiYjY3MWY3YTg4Nzk5ZWJjNDZmNmUxLi4wZWY0MjMy
YzQ3N2U2NzFkOWI3NzBjNDI3YTcwMjQ2OGM1MmY4N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApA
QCAtMjc0MCw3ICsyNzQwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpp
bml0V2l0aEZyYW1lKAogICAgIG1fbWFpbkZyYW1lID0gd2ViRnJhbWU7CiAgICAgd2ViRnJhbWUt
PlJlbGVhc2UoKTsgLy8gVGhlIFdlYkZyYW1lIGlzIG93bmVkIGJ5IHRoZSBGcmFtZSwgc28gcmVs
ZWFzZSBvdXIgcmVmZXJlbmNlIHRvIGl0LgogCi0gICAgY29yZUZyYW1lLT50cmVlKCktPnNldE5h
bWUodG9TdHJpbmcoZnJhbWVOYW1lKSk7CisgICAgY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZSh0
b1N0cmluZyhmcmFtZU5hbWUpKTsKICAgICBjb3JlRnJhbWUtPmluaXQoKTsKICAgICBzZXRHcm91
cE5hbWUoZ3JvdXBOYW1lKTsKIApAQCAtMzQ0Miw4ICszNDQyLDggQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3Ojpob3N0V2luZG93KAogc3RhdGljIEZyYW1lICppbmNyZW1lbnRG
cmFtZShGcmFtZSAqY3VyciwgYm9vbCBmb3J3YXJkLCBib29sIHdyYXBGbGFnKQogewogICAgIHJl
dHVybiBmb3J3YXJkCi0gICAgICAgID8gY3Vyci0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3Jh
cCh3cmFwRmxhZykKLSAgICAgICAgOiBjdXJyLT50cmVlKCktPnRyYXZlcnNlUHJldmlvdXNXaXRo
V3JhcCh3cmFwRmxhZyk7CisgICAgICAgID8gY3Vyci0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhX
cmFwKHdyYXBGbGFnKQorICAgICAgICA6IGN1cnItPnRyZWUoKS50cmF2ZXJzZVByZXZpb3VzV2l0
aFdyYXAod3JhcEZsYWcpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6
OnNlYXJjaEZvciggCkBAIC0zNTAxLDcgKzM1MDEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlZpZXc6OmV4ZWN1dGVDb3JlQ29tbWFuZEJ5TmFtZShCU1RSIG5hbWUsIEJTVFIgdmFs
dQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmNsZWFyTWFpbkZyYW1lTmFt
ZSgpCiB7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKKyAg
ICBtX3BhZ2UtPm1haW5GcmFtZSgpLT50cmVlKCkuY2xlYXJOYW1lKCk7CiAKICAgICByZXR1cm4g
U19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCmluZGV4IGU0NmM1ZjZhN2NjM2RmNzExNDBm
MjIyZTI3ODgyMzQ4NGUyOWYyODguLjJhNmMzMDA4ZTI1ZGRiMTU5NDU5MGNhZGY1MzExMWI5MzEy
YjY1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcApAQCAtMTY0LDggKzE2NCw4IEBAIFBhc3NS
ZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBIVE1MCiAgICAgUmVmUHRyPEZyYW1lPiBjaGlsZEZyYW1lID0gRnJhbWU6
OmNyZWF0ZShtX3BhZ2UsIG93bmVyRWxlbWVudCwgbG9hZGVyQ2xpZW50KTsKICAgICBsb2FkZXJD
bGllbnQtPnNldEZyYW1lKGNoaWxkRnJhbWUuZ2V0KCkpOwogCi0gICAgY29yZUZyYW1lLT50cmVl
KCktPmFwcGVuZENoaWxkKGNoaWxkRnJhbWUpOwotICAgIGNoaWxkRnJhbWUtPnRyZWUoKS0+c2V0
TmFtZShuYW1lKTsKKyAgICBjb3JlRnJhbWUtPnRyZWUoKS5hcHBlbmRDaGlsZChjaGlsZEZyYW1l
KTsKKyAgICBjaGlsZEZyYW1lLT50cmVlKCkuc2V0TmFtZShuYW1lKTsKICAgICBjaGlsZEZyYW1l
LT5pbml0KCk7CiAKICAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIGZyYW1lIG1heSBoYXZlIHJ1
biBhcmJpdHJhcnkgSmF2YVNjcmlwdCB0aGF0IHJlbW92ZWQgaXQgZnJvbSB0aGUgcGFnZSBhbHJl
YWR5LgpAQCAtMTc1LDcgKzE3NSw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0
ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MCiAgICAgY29y
ZUZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMSW50b0NoaWxkRnJhbWUodXJsLCByZWZlcnJlciwgY2hp
bGRGcmFtZS5nZXQoKSk7CiAKICAgICAvLyBUaGUgZnJhbWUncyBvbmxvYWQgaGFuZGxlciBtYXkg
aGF2ZSByZW1vdmVkIGl0IGZyb20gdGhlIGRvY3VtZW50LgotICAgIGlmICghY2hpbGRGcmFtZS0+
dHJlZSgpLT5wYXJlbnQoKSkKKyAgICBpZiAoIWNoaWxkRnJhbWUtPnRyZWUoKS5wYXJlbnQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggZTY0NjZiYWFhN2UyOWYyZmQ1NTk2ZTkyY2M5ZjBlZTEwZjdiZWI4YS4uYjliZjdhMTFkMjQ4
NWI5Y2JkYzVjYjFkMTU4N2JlZDYwYmYzOTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE2Niw3ICsxMTY2LDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVx
dWVzdCkKIAogICAgIGlmICghcmVxdWVzdC0+dGFyZ2V0KCkuaXNOdWxsKCkpIHsKICAgICAgICAg
Ly8gRm9yIHNlY3VyaXR5IHJlYXNvbnMsIG9ubHkgYWxsb3cgSlMgcmVxdWVzdHMgdG8gYmUgbWFk
ZSBvbiB0aGUgZnJhbWUgdGhhdCBjb250YWlucyB0aGUgcGx1Zy1pbi4KLSAgICAgICAgaWYgKGZy
YW1lLT50cmVlKCktPmZpbmQocmVxdWVzdC0+dGFyZ2V0KCkpICE9IGZyYW1lKSB7CisgICAgICAg
IGlmIChmcmFtZS0+dHJlZSgpLmZpbmQocmVxdWVzdC0+dGFyZ2V0KCkpICE9IGZyYW1lKSB7CiAg
ICAgICAgICAgICAvLyBMZXQgdGhlIHBsdWctaW4ga25vdyB0aGF0IGl0cyBmcmFtZSBsb2FkIGZh
aWxlZC4KICAgICAgICAgICAgIG1fcGx1Z2luLT5mcmFtZURpZEZhaWwocmVxdWVzdC0+cmVxdWVz
dElEKCksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDRhODU4MmRi
NzgyNTVhZTc2OTRlNTA4ZjgyYWY2OTc2ODVkMmQ4OWMuLmI4YzYxNWJkYjU5N2NjNDM2Y2RiOTU4
MWQ3Nzk4OTYwMjIxYzlhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VT
dG9yYWdlQXJlYUlELCBjCiAgICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAogICAg
IFBhZ2UqIHBhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpOwotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2N1
bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwobV9zZWN1cml0eU9yaWdpbi5nZXQoKSkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGNvbgogICAgIFBhZ2VHcm91cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3BhY2VJRCktPmNvcmVQYWdlR3JvdXAoKTsKICAg
ICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAucGFnZXMoKTsKICAgICBm
b3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCksIGVu
ZCA9IHBhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gKCppdCktPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKG1fc2VjdXJp
dHlPcmlnaW4uZ2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0NGY1MWYxODE0YzZhODVkN2FmOTRiNGZmOTBlYWMw
YTBmYzQ3MmExLi5jMTNhYmEwMjY4MGZjMmE0NjA3OWIzMmFmYjYwYmJmYWNkMjg3ZjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI3Niw3ICsxMjc2LDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW4KICAgICBpZiAoIXN1YmZyYW1lLT5jb3JlRnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKHN1YmZyYW1lLT5jb3JlRnJhbWUoKSA9PSBjb3Jl
U3ViZnJhbWUpOwotICAgIGlmICghY29yZVN1YmZyYW1lLT50cmVlKCktPnBhcmVudCgpKQorICAg
IGlmICghY29yZVN1YmZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgcmV0dXJuIGNvcmVTdWJmcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1l
bnVDbGllbnRNYWMubW0KaW5kZXggOTQ4NTE3OTM5ZTZhMzg4Zjc0YWU2ODhjODE1MDBkYjViY2I3
OTAzMS4uYTU3OWVjMzEwMmQ2ZmIyMDU4NDM2NjlmNWRjZTRkMjgxOTcxODRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4
dE1lbnVDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0KQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0aFNwb3RsaWdodCgpCiAgICAgRnJh
bWUqIG1haW5GcmFtZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgCiAg
ICAgRnJhbWUqIHNlbGVjdGlvbkZyYW1lID0gbWFpbkZyYW1lOwotICAgIGZvciAoOyBzZWxlY3Rp
b25GcmFtZTsgc2VsZWN0aW9uRnJhbWUgPSBzZWxlY3Rpb25GcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQobWFpbkZyYW1lKSkgeworICAgIGZvciAoOyBzZWxlY3Rpb25GcmFtZTsgc2VsZWN0aW9u
RnJhbWUgPSBzZWxlY3Rpb25GcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUpKSB7
CiAgICAgICAgIGlmIChzZWxlY3Rpb25GcmFtZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMzgyNjg5MDM0Mjk5ZGMyZTJiZDI0
NGVjZDFlOTc4MjVlOGFjMjBjNy4uZTYxZWM3YTQyMmI1YzRmMzYyNmVlNTM0MDk3NDE3OWIwMGQ4
YWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmNv
dW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9u
CiAKIHN0YXRpYyBGcmFtZSogZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHBhZ2UpCiB7Ci0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBh
Z2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lOwogICAgIH0KQEAgLTM1MCw3ICszNTAsNyBAQCBWZWN0b3I8SW50
UmVjdD4gRmluZENvbnRyb2xsZXI6OnJlY3RzRm9yVGV4dE1hdGNoZXMoKQogewogICAgIFZlY3Rv
cjxJbnRSZWN0PiByZWN0czsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV93ZWJQYWdlLT5j
b3JlUGFnZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpIHsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7
CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGJjZWM3MWQx
ZmViYjg2N2Y5ZTVkYjkwYzA0YzIwMTY5ODlkZDJjNGQuLmQ2MDVjYzIzNmI0ZDRkNWQwYzEyOWEz
OTQ3MjVhMzgxNzEyMWUwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMTY0LDExICsxNjQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6aW5p
dChXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW4KICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3Jl
UGFnZSgpLCBvd25lckVsZW1lbnQsICZtX2ZyYW1lTG9hZGVyQ2xpZW50KTsKICAgICBtX2NvcmVG
cmFtZSA9IGZyYW1lLmdldCgpOwogCi0gICAgZnJhbWUtPnRyZWUoKS0+c2V0TmFtZShmcmFtZU5h
bWUpOworICAgIGZyYW1lLT50cmVlKCkuc2V0TmFtZShmcmFtZU5hbWUpOwogCiAgICAgaWYgKG93
bmVyRWxlbWVudCkgewogICAgICAgICBBU1NFUlQob3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5m
cmFtZSgpKTsKLSAgICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT50cmVl
KCktPmFwcGVuZENoaWxkKGZyYW1lKTsKKyAgICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpLT50cmVlKCkuYXBwZW5kQ2hpbGQoZnJhbWUpOwogICAgIH0KIAogICAgIGZyYW1l
LT5pbml0KCk7CkBAIC0zMTEsNyArMzExLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0Fz
U3RyaW5nKCkgY29uc3QKIAogICAgIGlmIChpc0ZyYW1lU2V0KCkpIHsKICAgICAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fY29yZUZyYW1l
LT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fY29yZUZyYW1lLT50
cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIFN0cmluZyBX
ZWJGcmFtZTo6bmFtZSgpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fY29yZUZyYW1lLT50cmVlKCktPnVuaXF1ZU5h
bWUoKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCk7CiB9CiAK
IFN0cmluZyBXZWJGcmFtZTo6dXJsKCkgY29uc3QKQEAgLTQyNywxNCArNDI3LDE0IEBAIFBhc3NS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkZyYW1lOjpjaGlsZEZyYW1lcygpCiAgICAgaWYgKCFt
X2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKIAot
ICAgIHNpemVfdCBzaXplID0gbV9jb3JlRnJhbWUtPnRyZWUoKS0+Y2hpbGRDb3VudCgpOworICAg
IHNpemVfdCBzaXplID0gbV9jb3JlRnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCk7CiAgICAgaWYg
KCFzaXplKQogICAgICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+PiB2ZWN0b3I7CiAgICAgdmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc2l6ZSk7CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fY29yZUZyYW1l
LT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkgeworICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9jb3JlRnJhbWUtPnRyZWUo
KS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmco
KSkgewogICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGNoaWxkLT5sb2FkZXIoKS5jbGllbnQoKSk7CiAgICAg
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVM
b2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOwogICAgICAgICBBU1NFUlQod2ViRnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDI0
Y2EyZjI3YzI1OGY3MWQ1MDUwZTZlYzQ1YmMzZTIxODg1OTg4YTkuLmRkNjhjZWE5ZDk3MjM1NWRi
ZDRhY2UxYjhiZmI5ZThkODc5NmVhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCBib29sIFdlYlBhZ2U6Omlz
RWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB2b2lkIFdl
YlBhZ2U6OmNsZWFyTWFpbkZyYW1lTmFtZSgpCiB7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1h
aW5GcmFtZSgpKQotICAgICAgICBmcmFtZS0+dHJlZSgpLT5jbGVhck5hbWUoKTsKKyAgICAgICAg
ZnJhbWUtPnRyZWUoKS5jbGVhck5hbWUoKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKQEAgLTIwMTgsNyArMjAxOCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0RHJhd3NCYWNr
Z3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQogCiAgICAgbV9kcmF3c0JhY2tncm91bmQgPSBk
cmF3c0JhY2tncm91bmQ7CiAKLSAgICBmb3IgKEZyYW1lKiBjb3JlRnJhbWUgPSBtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCk7IGNvcmVGcmFtZTsgY29yZUZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpOyBjb3JlRnJhbWU7IGNvcmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJh
bWUtPnZpZXcoKSkKICAgICAgICAgICAgIHZpZXctPnNldFRyYW5zcGFyZW50KCFkcmF3c0JhY2tn
cm91bmQpOwogICAgIH0KQEAgLTIwMzUsNyArMjAzNSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0RHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCkK
ICAgICBtX2RyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gZHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQ7CiAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBkcmF3c1RyYW5zcGFyZW50QmFj
a2dyb3VuZCA/IENvbG9yOjp0cmFuc3BhcmVudCA6IENvbG9yOjp3aGl0ZTsKLSAgICBmb3IgKEZy
YW1lKiBjb3JlRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7IGNvcmVGcmFtZTsgY29y
ZUZyYW1lID0gY29yZUZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChG
cmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBjb3JlRnJhbWU7IGNv
cmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIHZpZXct
PnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKICAgICB9CkBAIC0yMDk4
LDcgKzIwOTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFdpbmRvd1Jlc2l6ZXJTaXplKGNvbnN0IElu
dFNpemUmIHdpbmRvd1Jlc2l6ZXJTaXplKQogCiAgICAgbV93aW5kb3dSZXNpemVyU2l6ZSA9IHdp
bmRvd1Jlc2l6ZXJTaXplOwogCi0gICAgZm9yIChGcmFtZSogY29yZUZyYW1lID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpOyBjb3JlRnJhbWU7IGNvcmVGcmFtZSA9IGNvcmVGcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKTsgY29yZUZyYW1lOyBjb3JlRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUt
PnZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcpCiAgICAgICAgICAgICB2aWV3LT53aW5kb3dSZXNp
emVyUmVjdENoYW5nZWQoKTsKQEAgLTIyODYsNyArMjI4Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCkKIAog
c3RhdGljIEZyYW1lKiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcGFnZSkKIHsKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZnJhbWU7CiAgICAgfQpAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgdm9pZCBXZWJQYWdl
OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAKIHZvaWQgV2ViUGFn
ZTo6dW5tYXJrQWxsTWlzc3BlbGxpbmdzKCkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlm
IChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50LT5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcp
OwogICAgIH0KQEAgLTI5NTcsNyArMjk1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6dW5tYXJrQWxsTWlz
c3BlbGxpbmdzKCkKIAogdm9pZCBXZWJQYWdlOjp1bm1hcmtBbGxCYWRHcmFtbWFyKCkKIHsKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhE
b2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAgICAgfQpAQCAtMzY4NCw3ICszNjg0LDcgQEAgc3Rh
dGljIGJvb2wgcGFnZUNvbnRhaW5zQW55SG9yaXpvbnRhbFNjcm9sbGJhcnMoRnJhbWUqIG1haW5G
cmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IDRlNzRkOGYyZjhkYzRkN2M1OTQ3ODVjNzRhMWJhMjYyNGI1NDBiNzMuLmQ4ZDA1
YjBhNTFhMWVjODM5N2QxMmU2NWQwNWE4MmYwNDUzNzQ2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgaWYgKG1fbGF5ZXJU
cmVlU3RhdGVJc0Zyb3plbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChGcmFtZSogZnJh
bWUgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPnRp
bGVkQmFja2luZygpKQogICAgICAgICAgICAgY29udGludWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>