<?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>164283</bug_id>
          
          <creation_ts>2016-11-01 12:16:06 -0700</creation_ts>
          <short_desc>Web Inspector: Use more references in inspector code</short_desc>
          <delta_ts>2016-11-01 15:07:37 -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>Web Inspector</component>
          <version>WebKit 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>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mattbaker</cc>
    
    <cc>mkwst</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246964</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-01 12:16:06 -0700</bug_when>
    <thetext>Summary:
Use more references in inspector code

There are plenty of InspectorInstrumentation methods which take a pointer but do not need to.
While going through the list we can make the instrumentation methods more consistent in some ways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246966</commentid>
    <comment_count>1</comment_count>
      <attachid>293566</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-01 12:18:36 -0700</bug_when>
    <thetext>Created attachment 293566
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246968</commentid>
    <comment_count>2</comment_count>
      <attachid>293567</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-01 12:20:04 -0700</bug_when>
    <thetext>Created attachment 293567
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247055</commentid>
    <comment_count>3</comment_count>
      <attachid>293567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 14:45:49 -0700</bug_when>
    <thetext>Comment on attachment 293567
[PATCH] Proposed Fix

Clearing flags on attachment: 293567

Committed r208240: &lt;http://trac.webkit.org/changeset/208240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247056</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-01 14:45:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247073</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-11-01 15:07:37 -0700</bug_when>
    <thetext>Attempted a build fix:
&lt;https://trac.webkit.org/changeset/208250&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293566</attachid>
            <date>2016-11-01 12:18:36 -0700</date>
            <delta_ts>2016-11-01 12:20:04 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>references-1.patch</filename>
            <type>text/plain</type>
            <size>79710</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNDNhZDQ4Li5lNDhkYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIw
IEBACisyMDE2LTExLTAxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBpbnNwZWN0b3Ig
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKFdl
YkNvcmU6OmZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lckltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUGFpbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUGFpbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVu
dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb21wb3NpdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21wb3Np
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
QWZ0ZXJQaW5nTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU2NoZWR1
bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFdhaXRGb3JE
ZWJ1Z2dlck9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d29ya2VyVGVybWluYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEhhbmRsZU1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dENvbnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICBDb252ZXJ0IHRvIHJl
ZmVyZW5jZXMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVu
dFVwZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpmcmFtZU5hdmln
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICBQYXNzIHJlZmVyZW5jZXMgdGhy
b3VnaCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gdGhlIEFnZW50cy4KKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXIpOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnJlbW92ZUJ5
SWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpzZXREb2N1bWVudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp3aWxsUGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAq
IHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1Rv
RnJhbWVzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRT
Y3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xl
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2Fn
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRNb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIFBhc3MgcmVmZXJl
bmNlcyB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCisKIDIwMTYtMTEtMDEgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIwODEwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IDIwODBkZWQuLjI2MmZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vCiAgICAgLy8gTWF0Y2hlZCBydWxlcy4KICAgICBTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyID0gZWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwogICAgIGF1dG8g
bWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChl
bGVtZW50LCBlbGVtZW50UHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKLSAg
ICBtYXRjaGVkQ1NTUnVsZXMgPSBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRS
dWxlcywgc3R5bGVSZXNvbHZlciwgZWxlbWVudCwgZWxlbWVudFBzZXVkb0lkKTsKKyAgICBtYXRj
aGVkQ1NTUnVsZXMgPSBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgKmVsZW1lbnQsIGVsZW1lbnRQc2V1ZG9JZCk7CiAKICAgICBpZiAoIW9y
aWdpbmFsRWxlbWVudC0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgLy8gUHNldWRvIGVs
ZW1lbnRzLgpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
ICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWF0Y2hlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRN
YXRjaGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0
YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQotICAgICAgICAgICAgICAgICAgICAgICAgLnNldE1h
dGNoZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVz
b2x2ZXIsIGVsZW1lbnQsIHBzZXVkb0lkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLCBzdHlsZVJl
c29sdmVyLCAqZWxlbWVudCwgcHNldWRvSWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgLnJl
bGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oV1RG
TW92ZShtYXRjaGVzKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjA0LDcgKzYwNCw3IEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFy
ZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKICAgICAg
ICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIu
c3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NT
UnVsZXMpOwogICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAg
IC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRN
YXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQsIE5PUFNFVURPKSkKKyAg
ICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hl
ZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1l
bnQsIE5PUFNFVURPKSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+Y3Nzb21TdHlsZSgpICYmIHBhcmVudEVsZW1lbnQt
PmNzc29tU3R5bGUoKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5
bGVTaGVldChwYXJlbnRFbGVtZW50KSkKQEAgLTEwMDksNyArMTAwOSw3IEBAIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0
T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1
bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxl
bWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiBzdHlsZVJ1bGUsIFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFz
dHlsZVJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAxNywxMCArMTAxNywxMCBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKAogICAgIC8vIFN0eWxlUnVsZXMgcmV0dXJuZWQgYnkg
U3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgbGFjayBwYXJlbnQgcG9pbnRlcnMg
c2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5IGF2YWlsYWJsZS4KICAgICAvLyBT
aW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhlIHBhcmVudCBjaGFpbiwgd2UgY29u
c3RydWN0IHRoZSBmdWxsIHdyYXBwZXJzIGhlcmUuCiAgICAgc3R5bGVSZXNvbHZlci5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkuY29sbGVjdERvY3VtZW50V3JhcHBlcnMoc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCkpOwotICAgIHN0eWxlUmVzb2x2ZXIuaW5z
cGVjdG9yQ1NTT01XcmFwcGVycygpLmNvbGxlY3RTY29wZVdyYXBwZXJzKFN0eWxlOjpTY29wZTo6
Zm9yTm9kZSgqZWxlbWVudCkpOworICAgIHN0eWxlUmVzb2x2ZXIuaW5zcGVjdG9yQ1NTT01XcmFw
cGVycygpLmNvbGxlY3RTY29wZVdyYXBwZXJzKFN0eWxlOjpTY29wZTo6Zm9yTm9kZShlbGVtZW50
KSk7CiAKICAgICAvLyBQb3NzaWJsaXR5IG9mIDpob3N0IHN0eWxlcyBpZiB0aGlzIGVsZW1lbnQg
aGFzIGEgc2hhZG93IHJvb3QuCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVt
ZW50LT5zaGFkb3dSb290KCkpCisgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVt
ZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgc3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdy
YXBwZXJzKCkuY29sbGVjdFNjb3BlV3JhcHBlcnMoc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpKTsK
IAogICAgIENTU1N0eWxlUnVsZSogY3Nzb21XcmFwcGVyID0gc3R5bGVSZXNvbHZlci5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkuZ2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhzdHlsZVJ1bGUpOwpA
QCAtMTAyOCw3ICsxMDI4LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0ID0gYmluZFN0eWxlU2hlZXQoY3Nzb21XcmFwcGVyLT5wYXJlbnRTdHlsZVNoZWV0KCkpOwot
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVp
bGRPYmplY3RGb3JSdWxlKGNzc29tV3JhcHBlciwgZWxlbWVudCkgOiBudWxscHRyOworICAgIHJl
dHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmpl
Y3RGb3JSdWxlKGNzc29tV3JhcHBlciwgJmVsZW1lbnQpIDogbnVsbHB0cjsKIH0KIAogUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCkBAIC0xMDQxLDEzICsxMDQxLDEz
IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hl
ZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSwgbnVsbHB0
cikgOiBudWxscHRyOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+
JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVs
ZW1lbnQsIFBzZXVkb0lkIHBzdWVkb0lkKQorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVt
ZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc3VlZG9JZCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPjo6Y3JlYXRlKCk7CiAKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBj
b250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKLSAgICBjb250
ZXh0LnBzZXVkb0lkID0gcHN1ZWRvSWQgPyBwc3VlZG9JZCA6IGVsZW1lbnQtPnBzZXVkb0lkKCk7
Ci0gICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgp
KTsKKyAgICBjb250ZXh0LnBzZXVkb0lkID0gcHN1ZWRvSWQgPyBwc3VlZG9JZCA6IGVsZW1lbnQu
cHNldWRvSWQoKTsKKyAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGVsZW1lbnQu
ZG9jdW1lbnQoKSk7CiAKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbWF0Y2hlZFJ1bGVz
KSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IHJ1
bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hlZFJ1bGUuZ2V0KCksIHN0eWxlUmVz
b2x2ZXIsIGVsZW1lbnQpOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5z
cGVjdG8KICAgICAgICAgaW50IGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewogICAgICAgICAgICAgdW5zaWdu
ZWQgaWdub3JlZFNwZWNpZmljaXR5OwotICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gc2VsZWN0
b3JDaGVja2VyLm1hdGNoKCpzZWxlY3RvciwgKmVsZW1lbnQsIGNvbnRleHQsIGlnbm9yZWRTcGVj
aWZpY2l0eSk7CisgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBzZWxlY3RvckNoZWNrZXIubWF0
Y2goKnNlbGVjdG9yLCBlbGVtZW50LCBjb250ZXh0LCBpZ25vcmVkU3BlY2lmaWNpdHkpOwogICAg
ICAgICAgICAgaWYgKG1hdGNoZWQpCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMt
PmFkZEl0ZW0oaW5kZXgpOwogICAgICAgICAgICAgKytpbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDQyODAxOS4uYzIxZGI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTE0OSw5
ICsxNDksOSBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGNyZWF0ZUluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JEb2N1bWVudChEb2N1bWVudCYpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCog
cGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHls
ZVJ1bGUqLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBT
dHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCosIFBzZXVkb0lkKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYsIFBzZXVk
b0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVp
bGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1
aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPE5vZGVMaXN0PiYmLCBpbnQg
ZG9jdW1lbnROb2RlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJLaXROYW1l
ZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZGYyNTg1OC4uZDg3NGExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMDk5LDE1
ICsyMDk5LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1l
bnRTdGF0ZShFbGVtZW50JiBlbGVtZW50KQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jdXN0
b21FbGVtZW50U3RhdGVDaGFuZ2VkKGVsZW1lbnRJZCwgY3VzdG9tRWxlbWVudFN0YXRlKGVsZW1l
bnQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQo
RnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0
ZWQoRnJhbWUmIGZyYW1lKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCk7Ci0gICAgQVNTRVJUKHBhZ2UpOwotICAgIGlmIChmcmFtZSAhPSAmcGFnZS0+bWFp
bkZyYW1lKCkpCisgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgbWFpbiBmcmFtZSBkb2N1bWVudCwgbmVzdGVkIGZy
YW1lIGRvY3VtZW50IHVwZGF0ZXMgYXJlIG5vdCByZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAwOTA3ZDgyLi4xY2JhNGM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTcxLDcg
KzE3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShF
bGVtZW50Jik7CiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KE5vZGUmKTsKICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZy
YW1lKik7CisgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYpOwogICAgIHZvaWQg
cHNldWRvRWxlbWVudENyZWF0ZWQoUHNldWRvRWxlbWVudCYpOwogICAgIHZvaWQgcHNldWRvRWxl
bWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggN2JlZTgyOS4u
M2VkMjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OnN0bwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQordm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5k
ZXggZjJlNzhkMi4uYWJiMzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3Rv
cmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSk7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQ
YWdlKik7CisgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3Rv
cmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYsIEZyYW1lKiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBjM2M3OGUyLi5kMjNjMmNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNTU1J1bGUu
aCIKLSNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgpAQCAtNDIs
NyArNDAsNiBAQAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgpAQCAtNTUsMjkgKzUyLDI0IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZUhlYXBBZ2VudC5oIgog
I2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNs
dWRlICJXZWJDb25zb2xlQWdlbnQuaCIKLSNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRG
cmFtZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCIKLSNp
bmNsdWRlICJSZXBsYXlDb250cm9sbGVyLmgiIC8vIGZvciBSZXBsYXlQb3NpdGlvbi4KKyNpbmNs
dWRlICJSZXBsYXlDb250cm9sbGVyLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKQEAgLTEwNSw2ICs5NywxNCBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHJldHVy
biBmcmFtZTsKIH0KIAorc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBGcmFtZSogZnJhbWUg
PSBudWxscHRyOworICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCisgICAgICAgIGZyYW1l
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1l
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBG
cmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2Vu
dCgpOwpAQCAtMzIwLDE0ICszMjAsMTQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGkKICAgICAg
ICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCh1cmwpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5z
dGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBp
bnQgdGltZXJJZCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIHNldFRpbWVyRXZl
bnROYW1lLCB0cnVlKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnN0YWxsVGltZXIodGltZXJJZCwgdGltZW91dCwgc2lu
Z2xlU2hvdCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIGNs
ZWFyVGltZXJFdmVudE5hbWUsIHRydWUpOwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdHNFbmFibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICAg
ICAgcGFnZUFnZW50LT5zY3JpcHRzRW5hYmxlZChpc0VuYWJsZWQpOwogfQogCi1JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGlt
ZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCB0aW1lckZpcmVkRXZlbnROYW1l
LCBmYWxzZSk7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnN0cnVtZQog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExheW91dEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBj
b29raWUsIFJlbmRlck9iamVjdCogcm9vdCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29v
a2llLCBSZW5kZXJPYmplY3QmIHJvb3QpCiB7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkTGF5b3V0KHJvb3QpOwpAQCAtNDg0LDEzICs0ODQsMTMgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ29tcG9z
aXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQogewogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxQYWludChyZW5kZXJlci0+ZnJhbWUoKSk7CisgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxQYWludChyZW5kZXJlci5mcmFtZSgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRS
ZWN0JiByZWN0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewogICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBhaW50KHJlbmRlcmVy
LCByZWN0KTsKQEAgLTcyNCwxNSArNzI0LDIwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYKICNl
bmRpZgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBGcmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKCFpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UgfHwgIWxvYWRlciB8fCAh
bG9hZGVyLT5mcmFtZSgpKQorICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobG9hZGVyLT5mcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CisgICAgaWYgKCFs
b2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChsb2FkZXItPmZyYW1lKCkgPT0g
JmZyYW1lKTsKKworICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChX
ZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29u
c29sZUFnZW50KCkpCiAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPnJlc2V0KCk7CiAKQEAgLTc0
Niw3ICs3NTEsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9h
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudAogICAgICAgICAgICAgZGF0YWJh
c2VBZ2VudC0+Y2xlYXJSZXNvdXJjZXMoKTsKIAogICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQot
ICAgICAgICAgICAgZG9tQWdlbnQtPnNldERvY3VtZW50KHBhZ2UtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgZG9tQWdlbnQtPnNldERvY3VtZW50KGZyYW1lLmRvY3VtZW50
KCkpOwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCiAgICAg
ICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVzZXQoKTsKQEAgLTc1OSwyMyArNzY0LDIzIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgfQogCiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAg
ICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQobG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
KTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQoZnJhbWUuZG9jdW1lbnQoKSk7CiAK
ICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQotICAgICAgICBwYWdlQWdlbnQtPmZyYW1lTmF2aWdh
dGVkKGxvYWRlcik7CisgICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQoZnJhbWUpOwog
Ci0gICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgeworICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdl
bnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2Vu
dCgpKQotICAgICAgICByZXBsYXlBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKKyAgICAg
ICAgcmVwbGF5QWdlbnQtPmZyYW1lTmF2aWdhdGVkKGZyYW1lKTsKICNlbmRpZgogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewogICAg
IGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTM5LDEwICs5NDQsMTAgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWUKICAgICAgICAgZGJBZ2VudC0+ZGlkT3BlbkRhdGFiYXNl
KFdURk1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUsIHZlcnNpb24pOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBQYWdlKiBw
YWdlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpKQotICAg
ICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4sIHBhZ2UpOworICAg
ICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4pOwogfQogCiBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkV2FpdEZvckRlYnVnZ2VyT25TdGFydElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTEyMTIsMjUg
KzEyMTcsOSBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbgogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1JbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqIHBhZ2UpCitJbnN0cnVtZW50aW5nQWdlbnRzKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIHJldHVybiBwYWdlID8gJmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7Ci19Ci0KLUluc3RydW1lbnRpbmdBZ2Vu
dHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
UGFnZSYgcGFnZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBw
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCk7Ci19
Ci0KLUluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAg
cmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShyZW5kZXJlci0+ZnJhbWUoKSk7Ci19
Ci0KLUluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSkKLXsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyAmd29ya2Vy
R2xvYmFsU2NvcGUtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
cmVuZGVyZXIuZnJhbWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
YXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggYmE2YjRmYi4uZmIxNmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzEsMTggKzMx
LDIwIEBACiAKICNwcmFnbWEgb25jZQogCisKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuaCIKICNp
bmNsdWRlICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgi
Ci0jaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSAiV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQpAQCAtNTEsMTAgKzUzLDYgQEAKICNlbmRpZgogCiAKLW5hbWVzcGFj
ZSBEZXByZWNhdGVkIHsKLWNsYXNzIFNjcmlwdE9iamVjdDsKLX0KLQogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiBjbGFzcyBDb25zb2xlTWVzc2FnZTsKIGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKQEAg
LTYzLDcgKzYxLDYgQEAgY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENTU1J1bGU7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENoYXJh
Y3RlckRhdGE7CiBjbGFzcyBET01XaW5kb3c7CkBAIC03MSwzNCArNjgsMjMgQEAgY2xhc3MgRE9N
V3JhcHBlcldvcmxkOwogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERv
Y3VtZW50TG9hZGVyOwotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvckNTU09NV3JhcHBlcnM7Ci1jbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFz
cyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNs
YXNzIE5vZGU7Ci1jbGFzcyBQYWdlOwogY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNzIFJlbmRl
ckxheWVyOwotY2xhc3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogY2xhc3MgUmVuZGVyT2JqZWN0Owog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRv
d1Jvb3Q7Ci1jbGFzcyBTdG9yYWdlQXJlYTsKLWNsYXNzIFN0eWxlUmVzb2x2ZXI7Ci1jbGFzcyBT
dHlsZVJ1bGU7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OwogY2xhc3MgVVJMOwogY2xh
c3MgV29ya2VySW5zcGVjdG9yUHJveHk7Ci1jbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAogc3RydWN0
IFJlcGxheVBvc2l0aW9uOworc3RydWN0IFdlYlNvY2tldEZyYW1lOwogCiAjZGVmaW5lIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2YWx1ZSkgaWYgKExJS0VMWSghaGFzRnJvbnRlbmRzKCkp
KSByZXR1cm4gdmFsdWU7CiAKQEAgLTExNyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKERvY3VtZW50JiwgQ2hhcmFjdGVyRGF0YSYpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoRG9jdW1lbnQmLCBOb2RlJik7
CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCYpOwotICAgIHN0YXRp
YyB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKEZyYW1lKiwgRE9NV2luZG93Kik7CisgICAgc3Rh
dGljIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUmLCBET01XaW5kb3cqKTsKICAgICBz
dGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChEb2N1bWVudCYpOwogICAgIHN0YXRp
YyB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChEb2N1bWVudCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQmIGhvc3QsIFNoYWRvd1Jvb3QmKTsKQEAgLTEz
Nyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShj
b25zdCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKICAgICBzdGF0
aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIHVybCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zdGFsbFRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCk7CisgICAgc3RhdGljIHZv
aWQgZGlkSW5zdGFsbFRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQgdGltZXJJZCwg
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOworICAg
IHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQg
dGltZXJJZCk7CiAKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxDYWxsRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2Ny
aXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwogICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlv
bihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CkBAIC0xNTEsMTYgKzEzNywxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUmLCBjb25z
dCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1
YXRlU2NyaXB0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIEZyYW1lJik7
CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0c0VuYWJsZWQoUGFnZSYsIGJvb2wgaXNFbmFibGVkKTsK
LSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lcklkKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGludCB0aW1lcklkKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52
YWxpZGF0ZUxheW91dChGcmFtZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbExheW91dChGcmFtZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBSZW5kZXJPYmplY3QqKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJiwgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2Nyb2xsKFBhZ2UmKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsQ29tcG9zaXRlKEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkQ29tcG9zaXRlKEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFBhaW50KFJlbmRlck9i
amVjdCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0IExh
eW91dFJlY3QmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUGFpbnQoUmVuZGVyT2JqZWN0Jik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYp
OwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2FsY3Vs
YXRlU3R5bGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxl
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50Jik7CkBAIC0xODIsMTQgKzE2
OCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0
YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVN0cmluZyk7CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCBkb21Db250
ZW50TG9hZGVkRXZlbnRGaXJlZChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRFdmVudEZp
cmVkKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJh
bWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkKEZyYW1lJiwgRG9jdW1lbnRMb2Fk
ZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSopOworICAg
IHN0YXRpYyB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJik7CiAgICAgc3RhdGljIHZv
aWQgbG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUmLCBEb2N1bWVudExvYWRlciYpOwogICAg
IHN0YXRpYyB2b2lkIGZyYW1lU3RhcnRlZExvYWRpbmcoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9p
ZCBmcmFtZVN0b3BwZWRMb2FkaW5nKEZyYW1lJik7CkBAIC0yMDAsNyArMTg2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7Ci0gICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSosIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CisgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRv
Q29uc29sZShXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoUGFnZSYsIEpT
Qzo6RXhlY1N0YXRlKiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKICAg
ICBzdGF0aWMgdm9pZCBjb25zb2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmLCBKU0M6OkV4ZWNT
dGF0ZSosIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CkBAIC0yMjAsMTEg
KzIwNiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFJlZlB0cjxEYXRhYmFzZT4mJiwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKIAotICAg
IHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdl
VHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQYWdlKik7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0
Y2hET01TdG9yYWdlRXZlbnQoUGFnZSYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlP
cmlnaW4qKTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lkIHdvcmtlclN0YXJ0ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckluc3BlY3RvclByb3h5KiwgY29uc3QgVVJM
Jik7Ci0gICAgc3RhdGljIHZvaWQgd29ya2VyVGVybWluYXRlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VySW5zcGVjdG9yUHJveHkqKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRXYWl0
Rm9yRGVidWdnZXJPblN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMg
dm9pZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrZXJJbnNwZWN0
b3JQcm94eSosIGNvbnN0IFVSTCYpOworICAgIHN0YXRpYyB2b2lkIHdvcmtlclRlcm1pbmF0ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlckluc3BlY3RvclByb3h5Kik7CiAKICNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKICAgICBzdGF0aWMgdm9pZCBzZXNzaW9uQ3JlYXRlZChQYWdlJiwg
UmVmUHRyPFJlcGxheVNlc3Npb24+JiYpOwpAQCAtMjU5LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVNZW1vcnlQcmVzc3VyZShQYWdlJiwgQ3JpdGljYWwpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UqKTsKKyAg
ICBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKFBhZ2UmKTsKICAgICBzdGF0aWMgdm9p
ZCB1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1lKik7CiAKICAgICBzdGF0aWMgdm9p
ZCBsYXllclRyZWVEaWRDaGFuZ2UoUGFnZSopOwpAQCAtMzExLDggKzI5Nyw4IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAg
IHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5zdGFsbFRpbWVy
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyB2
b2lkIGRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklk
LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENh
bGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgaW50IHNjcmlwdExpbmUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKQEAgLTMyNSwxNiArMzExLDE2IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVT
Y3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIEZyYW1lJik7
CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0c0VuYWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBib29sIGlzRW5hYmxlZCk7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQg
dGltZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
cmVUaW1lckltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IEZyYW1lJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
TGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJl
bmRlck9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dEltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIHZv
aWQgZGlkU2Nyb2xsSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkQ29tcG9zaXRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7Ci0gICAgc3Rh
dGljIHZvaWQgd2lsbFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0
Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBS
ZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgc3RhdGljIHZvaWQgd2lsbFBh
aW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0Jik7CisgICAgc3RhdGlj
IHZvaWQgZGlkUGFpbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZW5kZXJPYmplY3QmLCBj
b25zdCBMYXlvdXRSZWN0Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3Vt
ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1
bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYp
OwpAQCAtMzY1LDggKzM1MSw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZG9tQ29udGVu
dExvYWRlZEV2ZW50RmlyZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAg
IHN0YXRpYyB2b2lkIGxvYWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJh
bWUqKTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFBhZ2UqLCBEb2N1bWVudExvYWRlciopOwotICAgIHN0
YXRpYyB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgRnJhbWUmLCBEb2N1bWVudExvYWRlciopOworICAgIHN0YXRpYyB2b2lkIGZyYW1l
RG9jdW1lbnRVcGRhdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBz
dGF0aWMgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIERvY3VtZW50TG9hZGVyJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTdGFydGVkTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJh
bWVTdG9wcGVkTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CkBAIC0z
OTYsNyArMzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5EYXRhYmFz
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlZlB0cjxEYXRhYmFzZT4mJiwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
IAotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiosIFBh
Z2UqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4q
KTsKIAogICAgIHN0YXRpYyBib29sIHNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmKTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJTdGFydGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgV29ya2VySW5zcGVjdG9yUHJveHkqLCBjb25zdCBVUkwmKTsK
QEAgLTQ0MiwxMiArNDI4LDE1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5
ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZW5kZXJMYXllciYp
OwogCiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKFBhZ2UmKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlJik7CisKICAg
ICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KEZyYW1lJik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cisg
ICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250
ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KERvY3VtZW50Jik7CiAgICAgc3Rh
dGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChE
b2N1bWVudCopOwotICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmKTsK
ICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldv
cmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKik7CiAKICAgICBzdGF0aWMgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwpAQCAtNTM1LDcgKzUyNCw3IEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgICAgIGRvY3VtZW50RGV0YWNoZWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUqIGZyYW1lLCBET01XaW5kb3cqIGRvbVdpbmRvdykKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQo
RnJhbWUmIGZyYW1lLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JG
cmFtZShmcmFtZSkpCiAgICAgICAgIGZyYW1lV2luZG93RGlzY2FyZGVkSW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZG9tV2luZG93KTsKQEAgLTY2OSwxNCArNjU4LDE0IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250CiAgICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCB1cmwpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnQgdGltZXJJZCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJZCwgc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7CiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4
dChjb250ZXh0KSkKICAgICAgICAgZGlkSW5zdGFsbFRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCwgY29udGV4dCk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IHRpbWVySWQpCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGludCB0aW1lcklkKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC02OTEsNyAr
NjgwLDYgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24KICAgICByZXR1cm4gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiBjb29raWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CkBAIC03NjUsNyArNzUzLDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRzRW5hYmxlZChQYWdl
JiBwYWdlLCBib29sIGlzRW5hYmxlZCkKICAgICByZXR1cm4gc2NyaXB0c0VuYWJsZWRJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBpc0VuYWJsZWQpOwogfQogCi1pbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgdGltZXJJ
ZCkKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGludCB0aW1lcklkKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250
ZXh0KSkKQEAgLTc5NSw3ICs3ODMsNyBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChGcmFtZQogICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUsIFJlbmRlck9iamVjdCogcm9vdCkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBSZW5kZXJPYmplY3QmIHJvb3QpCiB7CiAgICAgRkFT
VF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGNvb2tpZS5pc1ZhbGlk
KCkpCkBAIC04MTEsMjUgKzc5OSwyNSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFNjcm9sbChQYWdlJiBwYWdlKQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsQ29tcG9zaXRlKEZyYW1lJiBmcmFtZSkKIHsKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmZnJhbWUp
KQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgd2lsbENvbXBvc2l0ZUlt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21wb3NpdGUoRnJhbWUmIGZyYW1lKQogewogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KCZmcmFtZSkpCisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICBkaWRDb21w
b3NpdGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KFJlbmRlck9iamVj
dCYgcmVuZGVyZXIpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gd2ls
bFBhaW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgcmVuZGVyZXIpOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFBhaW50KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91
dFJlY3QmIHJlY3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIocmVuZGVyZXIpKQpAQCAtODczLDcgKzg2MSw3IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KEZy
YW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uCiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXIoRnJhbWUmIGZyYW1lLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRnJhbWUoJmZyYW1lKSkKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29udGludWVBZnRlclBpbmdMb2FkZXJJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBsb2FkZXIsIHJlcXVlc3QsIHJlc3Bv
bnNlKTsKIH0KIApAQCAtOTYxLDcgKzk0OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29uCiAg
ICAgICAgIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0
ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZykKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBzY3JpcHRJ
bXBvcnRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmlu
Zyk7CkBAIC0xMDAwLDEwICs5ODgsMTAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSYgZnJhbWUpCiBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1pdExvYWQoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkK
LSAgICAgICAgZGlkQ29tbWl0TG9hZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLnBh
Z2UoKSwgbG9hZGVyKTsKKyAgICAgICAgZGlkQ29tbWl0TG9hZEltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGZyYW1lLCBsb2FkZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lKiBmcmFtZSkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmIGZy
YW1lKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKQEAgLTEwMTgsMjUgKzEwMDYsMjUgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShGcmFt
ZSYgZnJhbWUsIERvY3UKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
cmFtZVN0YXJ0ZWRMb2FkaW5nKEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFt
ZSgmZnJhbWUpKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZnJhbWVT
dGFydGVkTG9hZGluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0b3BwZWRMb2FkaW5nKEZy
YW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmZnJhbWUpKQorICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZnJhbWVTdG9wcGVkTG9hZGluZ0ltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmIGZyYW1lLCBkb3Vi
bGUgZGVsYXkpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkKKyAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbkltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCBkZWxheSk7CiB9CiAKIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihG
cmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkKKyAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmln
YXRpb25JbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiB9CiAKQEAgLTEwNjUsMTQg
KzEwNTMsMTMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVu
RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICAgICAgZGlkT3BlbkRhdGFi
YXNlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RGTW92ZShkYXRhYmFzZSksIGRvbWFpbiwg
bmFtZSwgdmVyc2lvbik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3Jh
Z2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqIHBhZ2UpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2
ZW50KFBhZ2UmIHBhZ2UsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05U
RU5EUyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIGRpZERp
c3BhdGNoRE9NU3RvcmFnZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywga2V5LCBvbGRW
YWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1cml0eU9yaWdpbiwgcGFnZSk7CisgICAg
ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KHBhZ2UpLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc3RvcmFnZVR5cGUsIHNlY3VyaXR5T3Jp
Z2luKTsKIH0KIAotaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRX
YWl0Rm9yRGVidWdnZXJPblN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFdhaXRGb3JEZWJ1Z2dl
ck9uU3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFMoZmFsc2UpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29u
dGV4dCkpCkBAIC0xMDgwLDE0ICsxMDY3LDE0IEBAIGlubGluZSBib29sIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2hvdWxkV2FpdEZvckRlYnVnZ2VyT25TdGFydChTY3JpcHRFeGVjdXRpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2Vy
SW5zcGVjdG9yUHJveHkqIHByb3h5LCBjb25zdCBVUkwmIHVybCkKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrZXJJbnNwZWN0b3JQcm94eSogcHJveHksIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHdvcmtlclN0YXJ0ZWRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBwcm94eSwgdXJsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFdvcmtlckluc3BlY3RvclByb3h5KiBwcm94eSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d29ya2VyVGVybWluYXRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrZXJJbnNwZWN0b3JQcm94eSogcHJveHkpCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250
ZXh0KSkKQEAgLTEyMjksMTYgKzEyMTYsMTQgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwbGF5YmFja0hpdFBvc2l0aW9uKFBhZ2UmIHBhZ2UsIGNvbnN0IFJlcGwKIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlTWVtb3J5UHJlc3N1
cmUoUGFnZSYgcGFnZSwgQ3JpdGljYWwgY3JpdGljYWwpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSgmcGFnZSkpCi0gICAg
ICAgIGRpZEhhbmRsZU1lbW9yeVByZXNzdXJlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY3Jp
dGljYWwpOworICAgIGRpZEhhbmRsZU1lbW9yeVByZXNzdXJlSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzRm9yUGFnZShwYWdlKSwgY3JpdGljYWwpOwogfQogI2VuZGlmCiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKiBwYWdlKQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3b3JrU3RhdGVDaGFuZ2Vk
KFBhZ2UmIHBhZ2UpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7
Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSkKLSAgICAgICAgbmV0d29ya1N0YXRlQ2hhbmdl
ZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOworICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp1cGRhdGVBcHBsaWNhdGlvbkNhY2hlU3RhdHVzKEZyYW1l
KiBmcmFtZSkKQEAgLTEyNTMsMTAgKzEyMzgsOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYgcGFnZSwgc3RkOjp1bmlxdQog
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJH
bG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1l
c3NhZ2UpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VU
b0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKIHsKLSAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JXb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkpCi0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBXVEZNb3ZlKG1lc3NhZ2Up
KTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29y
a2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFn
ZSYgcGFnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRB
cmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMTI2Niw4ICsxMjUwLDcgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQoUGFnZSYgcGFnZSwgSlNDOjpF
eGVjU3RhdGUqIHMKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25z
b2xlQ291bnQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlLCBKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVu
dHMpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoJndvcmtlckdsb2JhbFNj
b3BlKSkKLSAgICAgICAgY29uc29sZUNvdW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgc3Rh
dGUsIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCBzdGF0ZSwg
V1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp0YWtlSGVhcFNuYXBzaG90KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKQEAgLTEyODUsOCArMTI2OCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyCiAKIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsK
LSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSgmd29ya2VyR2xvYmFsU2NvcGUpKQot
ICAgICAgICBzdGFydENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB0aXRs
ZSk7CisgICAgc3RhcnRDb25zb2xlVGltaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29y
a2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpLCB0aXRsZSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcoRnJhbWUmIGZy
YW1lLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3Rh
Y2s+JiYgc3RhY2spCkBAIC0xMjk3LDggKzEyNzksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgU3Ry
aQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGlt
aW5nKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNrKQogewotICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKCZ3b3JrZXJHbG9iYWxTY29wZSkpCi0gICAg
ICAgIHN0b3BDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGl0bGUsIFdU
Rk1vdmUoc3RhY2spKTsKKyAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgdGl0bGUsIFdURk1v
dmUoc3RhY2spKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpj
b25zb2xlVGltZVN0YW1wKEZyYW1lJiBmcmFtZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiYmIGFyZ3VtZW50cykKQEAgLTEzNjAsMTIgKzEzNDEsMTUgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChQYWdlKiBwYWdl
LCBjb25zdCBSZW4KIAogaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKIHsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmIChpczxEb2N1bWVudD4oKmNvbnRleHQpKQotICAgICAgICByZXR1cm4g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLT5w
YWdlKCkpOwotICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpKQotICAgICAg
ICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7CisgICAgcmV0dXJuIGNvbnRleHQgPyBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dCgqY29udGV4dCkgOiBudWxscHRyOworfQorCitpbmxp
bmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVt
ZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQor
eworICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yUGFnZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkucGFnZSgpKTsK
KyAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4g
Jmluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMzky
LDQgKzEzNzYsMjUgQEAgaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3UKICAgICByZXR1cm4gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSk7CiB9CiAKK2lubGluZSBJbnN0cnVtZW50aW5nQWdl
bnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KFBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2UgPyAmaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UoKnBhZ2UpIDogbnVsbHB0cjsKK30KKworaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMm
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoUGFn
ZSYgcGFnZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBwYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCk7Cit9CisK
K2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSog
d29ya2VyR2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3BlID8gJmlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSgqd29ya2VyR2xvYmFsU2NvcGUp
IDogbnVsbHB0cjsKK30KKworaW5saW5lIEluc3RydW1lbnRpbmdBZ2VudHMmIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKK3sKKyAgICByZXR1cm4gd29ya2Vy
R2xvYmFsU2NvcGUuaW5zcGVjdG9yQ29udHJvbGxlcigpLm1faW5zdHJ1bWVudGluZ0FnZW50czsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzNWZhNDE1Li5jNmIyZDE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzM4
LDEzICs3MzgsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRFdmVudEZpcmVkKCkK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bG9hZEV2ZW50RmlyZWQodGltZXN0YW1wKCkpOwog
fQogCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFt
ZSYgZnJhbWUpCiB7Ci0gICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgewor
ICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1fc2NyaXB0VG9FdmFsdWF0
ZU9uTG9hZE9uY2UgPSBtX3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKICAgICAg
ICAgbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2UgPSBTdHJpbmcoKTsKICAgICB9
Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1lTmF2aWdhdGVkKGJ1aWxkT2JqZWN0Rm9y
RnJhbWUobG9hZGVyLT5mcmFtZSgpKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1l
TmF2aWdhdGVkKGJ1aWxkT2JqZWN0Rm9yRnJhbWUoJmZyYW1lKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpmcmFtZURldGFjaGVkKEZyYW1lJiBmcmFtZSkKQEAgLTg2MCwxMyArODYw
LDEzIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRSdW5KYXZhU2NyaXB0RGlhbG9nKCkK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+amF2YXNjcmlwdERpYWxvZ0Nsb3NlZCgpOwogfQog
Ci12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaWRQ
YWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewog
ICAgIGlmICghbV9lbmFibGVkIHx8ICFtX3Nob3dQYWludFJlY3RzKQogICAgICAgICByZXR1cm47
CiAKLSAgICBMYXlvdXRSZWN0IGFic29sdXRlUmVjdCA9IExheW91dFJlY3QocmVuZGVyZXItPmxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHJlY3QpKS5ib3VuZGluZ0JveCgpKTsKLSAgICBG
cmFtZVZpZXcqIHZpZXcgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS52aWV3KCk7CisgICAgTGF5b3V0
UmVjdCBhYnNvbHV0ZVJlY3QgPSBMYXlvdXRSZWN0KHJlbmRlcmVyLmxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KHJlY3QpKS5ib3VuZGluZ0JveCgpKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcg
PSByZW5kZXJlci5kb2N1bWVudCgpLnZpZXcoKTsKIAogICAgIExheW91dFJlY3Qgcm9vdFJlY3Qg
PSBhYnNvbHV0ZVJlY3Q7CiAgICAgaWYgKCF2aWV3LT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA1
YjBkOTZhLi4xMjZjOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9p
ZCBkb21Db250ZW50RXZlbnRGaXJlZCgpOwogICAgIHZvaWQgbG9hZEV2ZW50RmlyZWQoKTsKLSAg
ICB2b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBmcmFtZU5h
dmlnYXRlZChGcmFtZSYpOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZChGcmFtZSYpOwogICAgIHZv
aWQgbG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIGZy
YW1lU3RhcnRlZExvYWRpbmcoRnJhbWUmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgZGlkUnVuSmF2YVNjcmlwdERpYWxvZygpOwogICAgIHZvaWQgYXBwbHlFbXVsYXRl
ZE1lZGlhKFN0cmluZyYpOwotICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
TGF5b3V0UmVjdCYpOworICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5
b3V0UmVjdCYpOwogICAgIHZvaWQgZGlkTGF5b3V0KCk7CiAgICAgdm9pZCBkaWRTY3JvbGwoKTsK
ICAgICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCmluZGV4IDRkNWFhOTIuLmE0MjY0ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcApAQCAtMTk4LDEwICsxOTgsMTAgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6d2ls
bERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmUKICAgICBt
X3NlZ21lbnRzTWFwLmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZy
YW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEluc3BlY3RvclJlcGxh
eUFnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKHNlc3Npb25T
dGF0ZSgpICE9IFdlYkNvcmU6OlNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpCi0gICAgICAgIG1fcGFn
ZS5yZXBsYXlDb250cm9sbGVyKCkuZnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKKyAgICAgICAgbV9w
YWdlLnJlcGxheUNvbnRyb2xsZXIoKS5mcmFtZU5hdmlnYXRlZChmcmFtZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZyYW1lRGV0YWNoZWQoRnJhbWUmIGZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCBkZGRj
ZTRmLi5iNDM1ZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVz
dHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KLSAgICB2
b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBmcmFtZU5hdmln
YXRlZChGcmFtZSYpOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZChGcmFtZSYpOwogICAgIHZvaWQg
d2lsbERpc3BhdGNoRXZlbnQoY29uc3QgRXZlbnQmLCBGcmFtZSopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggN2I0
YWVmYS4uNTJhMDFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMzI1LDE0ICszMjUsMTQgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KEZyYW1lJiBmcmFtZSkKICAgICBwdXNoQ3VycmVu
dFJlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBUaW1lbGluZVJlY29yZFR5cGU6Okxh
eW91dCwgdHJ1ZSwgJmZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWRMYXlvdXQoUmVuZGVyT2JqZWN0KiByb290KQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpkaWRMYXlvdXQoUmVuZGVyT2JqZWN0JiByb290KQogewogICAgIGlmIChtX3JlY29yZFN0YWNr
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFRpbWVsaW5lUmVjb3JkRW50cnkmIGVu
dHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0gVGlt
ZWxpbmVSZWNvcmRUeXBlOjpMYXlvdXQpOwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwot
ICAgIHJvb3QtPmFic29sdXRlUXVhZHMocXVhZHMpOworICAgIHJvb3QuYWJzb2x1dGVRdWFkcyhx
dWFkcyk7CiAgICAgaWYgKHF1YWRzLnNpemUoKSA+PSAxKQogICAgICAgICBUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmFwcGVuZExheW91dFJvb3QoZW50cnkuZGF0YS5nZXQoKSwgcXVhZHNbMF0pOwog
ICAgIGVsc2UKQEAgLTM3NCwxMiArMzc0LDEyIEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6d2lsbFBhaW50KEZyYW1lJiBmcmFtZSkKICAgICBwdXNoQ3VycmVudFJlY29yZChJbnNwZWN0
b3JPYmplY3Q6OmNyZWF0ZSgpLCBUaW1lbGluZVJlY29yZFR5cGU6OlBhaW50LCB0cnVlLCAmZnJh
bWUpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQordm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBM
YXlvdXRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSA9
IG1fcmVjb3JkU3RhY2subGFzdCgpOwogICAgIEFTU0VSVChlbnRyeS50eXBlID09IFRpbWVsaW5l
UmVjb3JkVHlwZTo6UGFpbnQpOwogICAgIEZsb2F0UXVhZCBxdWFkOwotICAgIGxvY2FsVG9QYWdl
UXVhZCgqcmVuZGVyZXIsIGNsaXBSZWN0LCAmcXVhZCk7CisgICAgbG9jYWxUb1BhZ2VRdWFkKHJl
bmRlcmVyLCBjbGlwUmVjdCwgJnF1YWQpOwogICAgIGVudHJ5LmRhdGEgPSBUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZVBhaW50RGF0YShxdWFkKTsKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRS
ZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpQYWludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCAyOTVhODJmLi40MmRl
NDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgKQEAgLTEyNCwxMSArMTI0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEV2YWx1
YXRlU2NyaXB0KEZyYW1lJik7CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lJik7
CiAgICAgdm9pZCB3aWxsTGF5b3V0KEZyYW1lJik7Ci0gICAgdm9pZCBkaWRMYXlvdXQoUmVuZGVy
T2JqZWN0Kik7CisgICAgdm9pZCBkaWRMYXlvdXQoUmVuZGVyT2JqZWN0Jik7CiAgICAgdm9pZCB3
aWxsQ29tcG9zaXRlKEZyYW1lJik7CiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKTsKICAgICB2b2lk
IHdpbGxQYWludChGcmFtZSYpOwotICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiwgY29u
c3QgTGF5b3V0UmVjdCYpOworICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoRnJhbWUqKTsKICAg
ICB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVS
ZWNhbGN1bGF0aW9uKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBiOWVmNmUwLi5mMmMzMGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQq
IG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbAogCiAgICAgLy8g
RG8gdGhpcyBhZnRlciBkZXRhY2hpbmcgdGhlIGRvY3VtZW50IHNvIHRoYXQgdGhlIHVubG9hZCBl
dmVudCB3b3Jrcy4KICAgICBpZiAoY2xlYXJXaW5kb3dQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoJm1fZnJhbWUsIG1f
ZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKG1fZnJhbWUsIG1fZnJhbWUuZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCkpOwogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5yZXNldFVubGVzc1N1c3BlbmRlZEZvckRvY3VtZW50U3VzcGVuc2lvbigpOwogICAgICAgICBt
X2ZyYW1lLnNjcmlwdCgpLmNsZWFyV2luZG93U2hlbGwobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygp
LCBtX2ZyYW1lLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkFib3V0
VG9FbnRlclBhZ2VDYWNoZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCAx
YTVjNDY0Li5kMDNjMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtMjE4LDcgKzIx
OCw3IEBAIGludCBET01UaW1lcjo6aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkCiAjZW5kaWYKIAogICAgIHRpbWVyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxU
aW1lcigmY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihjb250ZXh0LCB0
aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCiAgICAgLy8gS2VlcCB0
cmFjayBvZiBuZXN0ZWQgdGltZXIgaW5zdGFsbHMuCiAgICAgaWYgKE5lc3RlZFRpbWVyc01hcCog
bmVzdGVkVGltZXJzID0gTmVzdGVkVGltZXJzTWFwOjppbnN0YW5jZUZvckNvbnRleHQoY29udGV4
dCkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBET01UaW1lcjo6cmVtb3ZlQnlJZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZW91dElkKQogICAgIGlmIChOZXN0ZWRU
aW1lcnNNYXAqIG5lc3RlZFRpbWVycyA9IE5lc3RlZFRpbWVyc01hcDo6aW5zdGFuY2VGb3JDb250
ZXh0KGNvbnRleHQpKQogICAgICAgICBuZXN0ZWRUaW1lcnMtPnJlbW92ZSh0aW1lb3V0SWQpOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcigmY29udGV4dCwg
dGltZW91dElkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVy
KGNvbnRleHQsIHRpbWVvdXRJZCk7CiAgICAgY29udGV4dC5yZW1vdmVUaW1lb3V0KHRpbWVvdXRJ
ZCk7CiB9CiAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAg
Ly8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQg
Z2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0b3IuCiAgICAgbV91c2VyR2Vz
dHVyZVRva2VuVG9Gb3J3YXJkID0gbnVsbHB0cjsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGlt
ZXIoJmNvbnRleHQsIG1fdGltZW91dElkKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNv
bnRleHQsIG1fdGltZW91dElkKTsKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBub24tb25lLXNo
b3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggM2EyZjc1OS4uZGM4ODE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApA
QCAtNDkxLDcgKzQ5MSw4IEBAIHZvaWQgRE9NV2luZG93OjpmcmFtZURlc3Ryb3llZCgpCiAKIHZv
aWQgRE9NV2luZG93Ojp3aWxsRGV0YWNoUGFnZSgpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCB0aGlzKTsKKyAgICBpZiAobV9m
cmFtZSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2Nh
cmRlZCgqbV9mcmFtZSwgdGhpcyk7CiB9CiAKIHZvaWQgRE9NV2luZG93Ojp3aWxsRGVzdHJveUNh
Y2hlZEZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMDFjZjAyMC4uMzdmYjdkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1
bWVudChSZWZQdHI8RG9jdW1lbnQ+JiYgbmV3RG9jdW1lbnQpCiAgICAgaWYgKG5ld0RvY3VtZW50
KQogICAgICAgICBuZXdEb2N1bWVudC0+ZGlkQmVjb21lQ3VycmVudERvY3VtZW50SW5GcmFtZSgp
OwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZCh0
aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVk
KCp0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKaW5kZXggMzIwYTg5Mi4uMDI3OTE3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtMTU2NSw3ICsxNTY1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChi
b29sIGFsbG93U3VidHJlZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvb2tpZSwgcm9vdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llLCAqcm9vdCk7CiAgICAgRGVidWdQYWdlT3Zlcmxh
eXM6OmRpZExheW91dChmcmFtZSgpKTsKIAogICAgIC0tbV9uZXN0ZWRMYXlvdXRDb3VudDsKQEAg
LTQyMTUsNyArNDIxNSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmLCBQYWluCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwogCiAgICAgaWYgKCFjb250ZXh0LnBhaW50
aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFp
bnQocmVuZGVyVmlldygpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UGFpbnQoKnJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGluZ1N0YXRlLmlzVG9wTGV2ZWxQYWlu
dGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CiAKQEAgLTQyNzMsNyArNDI3Myw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSCiAgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAw
OwogCiAgICAgaWYgKCFjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgewotICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KHJlbmRlclZpZXcoKSwgZGlydHlSZWN0KTsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludCgqcmVuZGVyVmlldygp
LCBkaXJ0eVJlY3QpOwogICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHByb2JhYmx5IG5vdCBmaXJl
IG1pbGVzdG9uZXMgZm9yIHNuYXBzaG90IHBhaW50aW5nLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NjIzCiAgICAgICAgIGZpcmVQYWludFJlbGF0ZWRNaWxlc3Rv
bmVzSWZOZWVkZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBhODk4MDkyLi45OGQ3
YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpCiAgICAgZm9yIChhdXRvJiBwYWdlIDog
KmFsbFBhZ2VzKSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAg
ICAgICAgZnJhbWVzLmFwcGVuZCgqZnJhbWUpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQocGFnZSk7CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZCgqcGFnZSk7CiAgICAgfQogCiAgICAgQXRv
bWljU3RyaW5nIGV2ZW50TmFtZSA9IGlzT25MaW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50
IDogZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZWJkYTE0Zi4uZTJmMzY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTI0
MzMsNyArMjQzMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoCiAgICAgICAgIHx8IGdyYXBo
aWNzTGF5ZXIgPT0gbV9tYXNrTGF5ZXIuZ2V0KCkKICAgICAgICAgfHwgZ3JhcGhpY3NMYXllciA9
PSBtX2NoaWxkQ2xpcHBpbmdNYXNrTGF5ZXIuZ2V0KCkKICAgICAgICAgfHwgZ3JhcGhpY3NMYXll
ciA9PSBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIuZ2V0KCkpIHsKLSAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQoJnJlbmRlcmVyKCkpOworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludChyZW5kZXJlcigpKTsKIAogICAgICAgICBpZiAo
IShwYWludGluZ1BoYXNlICYgR3JhcGhpY3NMYXllclBhaW50T3ZlcmZsb3dDb250ZW50cykpCiAg
ICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2luZ0ludFJlY3QoY29tcG9zaXRl
ZEJvdW5kc0luY2x1ZGluZ01hcmdpbigpKSk7CkBAIC0yNDQxLDcgKzI0NDEsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBHcmFwaAogICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2FtZSByb290
IGFzIGZvciBoaXQgdGVzdGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMgY2FuIGNvbXB1dGUgYW5k
IGNhY2hlIGNsaXBSZWN0cy4KICAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwg
Y29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsK
IAotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KCZyZW5kZXJlcigp
LCBkaXJ0eVJlY3QpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50
KHJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09
IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIHBhaW50U2Nyb2xsYmFy
KG1fb3duaW5nTGF5ZXIuaG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjb250ZXh0LCBkaXJ0eVJlY3Qp
OwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvclZlcnRpY2FsU2Nyb2xs
YmFyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRl
eCBkYWU4Y2E2Li5iZGNhZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVw
bGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRy
b2xsZXIuY3BwCkBAIC00MDMsMTAgKzQwMyw5IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6cmVw
bGF5VG9Qb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24sIERpc3BhdGNoCiAg
ICAgc3RhcnRQbGF5YmFjaygpOwogfQogCi12b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lTmF2
aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZy
YW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICBBU1NFUlQobV9zZXNzaW9uU3RhdGUg
IT0gU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSk7Ci0gICAgQVNTRVJUX0FSRyhsb2FkZXIsIGxvYWRl
cik7CiAgICAgCiAgICAgLy8gVGhlIGluaXRpYWwgY2FwdHVyaW5nIHNlZ21lbnQgaXMgY3JlYXRl
ZCBwcmlvciB0byBtYWluIGZyYW1lIG5hdmlnYXRpb24uCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
cHJpb3IgY2FwdHVyaW5nIHNlZ21lbnQgd2FzIGNvbXBsZXRlZCB3aGVuIHRoZSBmcmFtZSBkZXRh
Y2hlZCwKQEAgLTQyMSw4ICs0MjAsOCBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lTmF2
aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICAvLyBXZSBzdG9yZSB0aGUgaW5w
dXQgY3Vyc29yIGluIGJvdGggRG9jdW1lbnQgYW5kIEpTRE9NV2luZG93LCBzbyB0aGF0CiAgICAg
Ly8gcmVwbGF5IHN0YXRlIGlzIGFjY2Vzc2libGUgZnJvbSBKYXZhU2NyaXB0Q29yZSBhbmQgc2Ny
aXB0LWZyZWUgbGF5b3V0IGNvZGUuCi0gICAgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5z
ZXRJbnB1dEN1cnNvcigqbV9hY3RpdmVDdXJzb3IpOwotICAgIGxvYWRlci0+ZnJhbWUoKS0+c2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJz
b3IobV9hY3RpdmVDdXJzb3IuZ2V0KCkpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnNldElucHV0
Q3Vyc29yKCptX2FjdGl2ZUN1cnNvcik7CisgICAgZnJhbWUuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJzb3IobV9hY3RpdmVDdXJzb3Iu
Z2V0KCkpOwogfQogCiB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lRGV0YWNoZWQoRnJhbWUm
IGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmgKaW5kZXggNTg3
ZDgyZi4uZTk1OWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5o
CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3dpdGNoU2Vzc2lvbihSZWZQ
dHI8UmVwbGF5U2Vzc2lvbj4mJik7CiAKICAgICAvLyBJbnNwZWN0b3JSZXBsYXlBZ2VudCBub3Rp
ZmljYXRpb25zLgotICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKKyAg
ICB2b2lkIGZyYW1lTmF2aWdhdGVkKEZyYW1lJik7CiAgICAgdm9pZCBmcmFtZURldGFjaGVkKEZy
YW1lJik7CiAgICAgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVudCYsIEZyYW1lKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIu
Y3BwCmluZGV4IGVjNTAxZmUuLjM2ODUxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdAogCiB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8UmVm
UHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU2Vz
c2lvblN0b3JhZ2UsIHNlY3VyaXR5T3JpZ2luLCAmcGFnZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVl
LCBuZXdWYWx1ZSwgU2Vzc2lvblN0b3JhZ2UsIHNlY3VyaXR5T3JpZ2luKTsKIAogICAgIGZvciAo
YXV0byYgZnJhbWUgOiBmcmFtZXMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPnNlc3Npb25TdG9yYWdlKCk7CkBAIC04OCw3ICs4OCw3IEBA
IHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
c1RvRnJhbWVzKFBhZ2UmIHBhZ2UsIGNvCiB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmwsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBwYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
TG9jYWxTdG9yYWdlLCBzZWN1cml0eU9yaWdpbiwgcGFnZSk7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoKnBhZ2UsIGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBMb2NhbFN0b3JhZ2UsIHNlY3VyaXR5T3JpZ2luKTsKIAogICAgIGZv
ciAoYXV0byYgZnJhbWUgOiBmcmFtZXMpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2FsU3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCmluZGV4IDFkYzk5OGIuLjE1YjcxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQog
ICAgIGVsc2UgewogICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyA9IG1fY29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzID8gbV9jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMudmFsdWUoKSA6IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPnJlc3BvbnNlSGVhZGVycygpOwogICAgICAgICBtX2NvbnRleHRQcm94
eS0+c3RhcnRXb3JrZXJHbG9iYWxTY29wZShtX3NjcmlwdExvYWRlci0+dXJsKCksIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+dXNlckFnZW50KG1fc2NyaXB0TG9hZGVyLT51cmwoKSksIG1fc2Ny
aXB0TG9hZGVyLT5zY3JpcHQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
LCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9ydW50aW1l
RmxhZ3MpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVk
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50aWZpZXIoKSwg
bV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzY3JpcHRJbXBvcnRlZCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3NjcmlwdExv
YWRlci0+aWRlbnRpZmllcigpLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogICAgIH0KICAg
ICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNDhiYjEwMy4uZDRmODc1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTIyOCw3ICsyMjgsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdXJscykKICAgICAgICAgaWYgKHNjcmlwdExvYWRlci0+ZmFpbGVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTkVUV09SS19FUlIgfTsKIAotICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKHRoaXMsIHNjcmlw
dExvYWRlci0+aWRlbnRpZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCgqdGhpcywgc2NyaXB0TG9h
ZGVyLT5pZGVudGlmaWVyKCksIHNjcmlwdExvYWRlci0+c2NyaXB0KCkpOwogCiAgICAgICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgICAgIG1fc2NyaXB0LT5ldmFs
dWF0ZShTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRl
ci0+cmVzcG9uc2VVUkwoKSksIGV4Y2VwdGlvbik7CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSh0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
KnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjph
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIp
CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICAgICAgbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNl
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoY2FsbFN0YWNr
KSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UKICAgICAgICAgbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSh0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdU
Rk1vdmUobWVzc2FnZSkpOwogfQogCiBib29sIFdvcmtlckdsb2JhbFNjb3BlOjppc0NvbnRleHRU
aHJlYWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBjYjU3ZDI4Li41ZWVjMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5LmNwcApAQCAtNTYsNyArNTYsNyBAQCBXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6fldvcmtlckluc3BlY3RvclByb3h5KCkKICAgICBBU1NFUlQoIW1f
cGFnZUNoYW5uZWwpOwogfQogCi1Xb3JrZXJUaHJlYWRTdGFydE1vZGUgV29ya2VySW5zcGVjdG9y
UHJveHk6OndvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQorV29ya2VyVGhyZWFkU3RhcnRNb2RlIFdvcmtlckluc3BlY3RvclByb3h5
Ojp3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKIHsKICAgICBib29sIHBhdXNlT25TdGFydCA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2hvdWxkV2FpdEZvckRlYnVnZ2VyT25TdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKICAgICByZXR1cm4gcGF1c2VPblN0YXJ0ID8gV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpXYWl0
Rm9ySW5zcGVjdG9yIDogV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWw7CkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yUHJveHk6OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uCiAKICAgICBhbGxXb3JrZXJJbnNwZWN0b3JQ
cm94aWVzKCkuYWRkKHRoaXMpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3Jr
ZXJTdGFydGVkKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcywgbV91cmwpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29ya2VyU3RhcnRlZCgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LmdldCgpLCB0aGlzLCBtX3VybCk7CiB9CiAKIHZvaWQgV29ya2VySW5zcGVj
dG9yUHJveHk6OndvcmtlclRlcm1pbmF0ZWQoKQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFdvcmtl
ckluc3BlY3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKCkKICAgICBpZiAoIW1fd29ya2VyVGhy
ZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondv
cmtlclRlcm1pbmF0ZWQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCB0aGlzKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndvcmtlclRlcm1pbmF0ZWQoKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcyk7CiAKICAgICBhbGxXb3JrZXJJbnNwZWN0b3JQcm94
aWVzKCkucmVtb3ZlKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlcklu
c3BlY3RvclByb3h5LmgKaW5kZXggZDk1YmEyMi4uNGJjZWEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKTsgfQog
Ci0gICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHdvcmtlclN0YXJ0TW9kZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CisgICAgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHdvcmtlclN0YXJ0TW9kZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdm9pZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJUaHJlYWQqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdv
cmtlclRlcm1pbmF0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAppbmRleCA5YmQyZWQ4Li44NGRlYWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNzksNyArNzksNyBA
QCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdAogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUg
cmV2aXNpdGVkIHdoZW4gd2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NF
UlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSA9IG1faW5zcGVjdG9yUHJveHktPndvcmtlclN0YXJ0
TW9kZShtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCkpOworICAgIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSBzdGFydE1vZGUgPSBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydE1vZGUoKm1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogcHJveHkgPSBkb2N1bWVu
dC5pZGJDb25uZWN0aW9uUHJveHkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293567</attachid>
            <date>2016-11-01 12:20:04 -0700</date>
            <delta_ts>2016-11-01 14:45:49 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>ref-2.patch</filename>
            <type>text/plain</type>
            <size>79642</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNDNhZDQ4Li5lNDhkYTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIw
IEBACisyMDE2LTExLTAxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBpbnNwZWN0b3Ig
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
MjgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKFdl
YkNvcmU6OmZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lckltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUGFpbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUGFpbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVu
dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0
cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdB
Z2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDb21wb3NpdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21wb3Np
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVl
QWZ0ZXJQaW5nTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lU2NoZWR1
bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFdhaXRGb3JE
ZWJ1Z2dlck9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3b3JrZXJTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d29ya2VyVGVybWluYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEhhbmRsZU1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNv
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xl
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dENvbnNvbGVUaW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVt
ZW50aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICBDb252ZXJ0IHRvIHJl
ZmVyZW5jZXMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZE9iamVjdEZvclJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVu
dFVwZGF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlcGxheUFnZW50OjpmcmFtZU5hdmln
YXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFBhaW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICBQYXNzIHJlZmVyZW5jZXMgdGhy
b3VnaCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gdGhlIEFnZW50cy4KKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y2xlYXIpOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnJlbW92ZUJ5
SWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndpbGxEZXRhY2hQ
YWdlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
OjpzZXREb2N1bWVudCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
Ojp3aWxsUGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVOYXZpZ2F0ZWQpOgorICAgICAgICAq
IHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1Rv
RnJhbWVzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRT
Y3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xl
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2Fn
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3RhcnRNb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJUZXJtaW5hdGVkKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlckluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIFBhc3MgcmVmZXJl
bmNlcyB0byBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCisKIDIwMTYtMTEtMDEgIFJ5YW4gSGFk
ZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIwODEwMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IDIwODBkZWQuLjI2MmZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vCiAgICAgLy8gTWF0Y2hlZCBydWxlcy4KICAgICBTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyID0gZWxlbWVudC0+c3R5bGVSZXNvbHZlcigpOwogICAgIGF1dG8g
bWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChl
bGVtZW50LCBlbGVtZW50UHNldWRvSWQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKLSAg
ICBtYXRjaGVkQ1NTUnVsZXMgPSBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRS
dWxlcywgc3R5bGVSZXNvbHZlciwgZWxlbWVudCwgZWxlbWVudFBzZXVkb0lkKTsKKyAgICBtYXRj
aGVkQ1NTUnVsZXMgPSBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KG1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgKmVsZW1lbnQsIGVsZW1lbnRQc2V1ZG9JZCk7CiAKICAgICBpZiAoIW9y
aWdpbmFsRWxlbWVudC0+aXNQc2V1ZG9FbGVtZW50KCkpIHsKICAgICAgICAgLy8gUHNldWRvIGVs
ZW1lbnRzLgpAQCAtNTg3LDcgKzU4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
ICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbWF0Y2hlcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRN
YXRjaGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0
YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQotICAgICAgICAgICAgICAgICAgICAgICAgLnNldE1h
dGNoZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVz
b2x2ZXIsIGVsZW1lbnQsIHBzZXVkb0lkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRN
YXRjaGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLCBzdHlsZVJl
c29sdmVyLCAqZWxlbWVudCwgcHNldWRvSWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgLnJl
bGVhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0oV1RG
TW92ZShtYXRjaGVzKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjA0LDcgKzYwNCw3IEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgICAgICAgICAgU3R5bGVSZXNvbHZlciYgcGFy
ZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKICAgICAg
ICAgICAgICAgICBhdXRvIHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXIu
c3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NT
UnVsZXMpOwogICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAgICAgICAg
IC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRN
YXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIHBhcmVudEVsZW1lbnQsIE5PUFNFVURPKSkKKyAg
ICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hl
ZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1l
bnQsIE5PUFNFVURPKSkKICAgICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKICAgICAgICAg
ICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+Y3Nzb21TdHlsZSgpICYmIHBhcmVudEVsZW1lbnQt
PmNzc29tU3R5bGUoKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5
bGVTaGVldChwYXJlbnRFbGVtZW50KSkKQEAgLTEwMDksNyArMTAwOSw3IEBAIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBJbnNwZWN0b3JDU1NBZ2VudDo6ZGV0ZWN0
T3JpZ2luKENTU1N0CiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6UmVndWxhcjsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1
bGUqIHN0eWxlUnVsZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxl
bWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoU3R5bGVSdWxlKiBzdHlsZVJ1bGUsIFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFz
dHlsZVJ1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAxNywxMCArMTAxNywxMCBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKAogICAgIC8vIFN0eWxlUnVsZXMgcmV0dXJuZWQgYnkg
U3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgbGFjayBwYXJlbnQgcG9pbnRlcnMg
c2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5IGF2YWlsYWJsZS4KICAgICAvLyBT
aW5jZSB0aGUgaW5zcGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhlIHBhcmVudCBjaGFpbiwgd2UgY29u
c3RydWN0IHRoZSBmdWxsIHdyYXBwZXJzIGhlcmUuCiAgICAgc3R5bGVSZXNvbHZlci5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkuY29sbGVjdERvY3VtZW50V3JhcHBlcnMoc3R5bGVSZXNvbHZlci5k
b2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCkpOwotICAgIHN0eWxlUmVzb2x2ZXIuaW5z
cGVjdG9yQ1NTT01XcmFwcGVycygpLmNvbGxlY3RTY29wZVdyYXBwZXJzKFN0eWxlOjpTY29wZTo6
Zm9yTm9kZSgqZWxlbWVudCkpOworICAgIHN0eWxlUmVzb2x2ZXIuaW5zcGVjdG9yQ1NTT01XcmFw
cGVycygpLmNvbGxlY3RTY29wZVdyYXBwZXJzKFN0eWxlOjpTY29wZTo6Zm9yTm9kZShlbGVtZW50
KSk7CiAKICAgICAvLyBQb3NzaWJsaXR5IG9mIDpob3N0IHN0eWxlcyBpZiB0aGlzIGVsZW1lbnQg
aGFzIGEgc2hhZG93IHJvb3QuCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVt
ZW50LT5zaGFkb3dSb290KCkpCisgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVt
ZW50LnNoYWRvd1Jvb3QoKSkKICAgICAgICAgc3R5bGVSZXNvbHZlci5pbnNwZWN0b3JDU1NPTVdy
YXBwZXJzKCkuY29sbGVjdFNjb3BlV3JhcHBlcnMoc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpKTsK
IAogICAgIENTU1N0eWxlUnVsZSogY3Nzb21XcmFwcGVyID0gc3R5bGVSZXNvbHZlci5pbnNwZWN0
b3JDU1NPTVdyYXBwZXJzKCkuZ2V0V3JhcHBlckZvclJ1bGVJblNoZWV0cyhzdHlsZVJ1bGUpOwpA
QCAtMTAyOCw3ICsxMDI4LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSgKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNo
ZWV0ID0gYmluZFN0eWxlU2hlZXQoY3Nzb21XcmFwcGVyLT5wYXJlbnRTdHlsZVNoZWV0KCkpOwot
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVp
bGRPYmplY3RGb3JSdWxlKGNzc29tV3JhcHBlciwgZWxlbWVudCkgOiBudWxscHRyOworICAgIHJl
dHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmpl
Y3RGb3JSdWxlKGNzc29tV3JhcHBlciwgJmVsZW1lbnQpIDogbnVsbHB0cjsKIH0KIAogUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUpCkBAIC0xMDQxLDEzICsxMDQxLDEz
IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hl
ZXQgPyBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSwgbnVsbHB0
cikgOiBudWxscHRyOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVp
bGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+
JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGVs
ZW1lbnQsIFBzZXVkb0lkIHBzdWVkb0lkKQorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGU+PiYgbWF0Y2hlZFJ1bGVzLCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBFbGVt
ZW50JiBlbGVtZW50LCBQc2V1ZG9JZCBwc3VlZG9JZCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1h
dGNoPjo6Y3JlYXRlKCk7CiAKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCBj
b250ZXh0KFNlbGVjdG9yQ2hlY2tlcjo6TW9kZTo6Q29sbGVjdGluZ1J1bGVzKTsKLSAgICBjb250
ZXh0LnBzZXVkb0lkID0gcHN1ZWRvSWQgPyBwc3VlZG9JZCA6IGVsZW1lbnQtPnBzZXVkb0lkKCk7
Ci0gICAgU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlcihlbGVtZW50LT5kb2N1bWVudCgp
KTsKKyAgICBjb250ZXh0LnBzZXVkb0lkID0gcHN1ZWRvSWQgPyBwc3VlZG9JZCA6IGVsZW1lbnQu
cHNldWRvSWQoKTsKKyAgICBTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGVsZW1lbnQu
ZG9jdW1lbnQoKSk7CiAKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbWF0Y2hlZFJ1bGVz
KSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IHJ1
bGVPYmplY3QgPSBidWlsZE9iamVjdEZvclJ1bGUobWF0Y2hlZFJ1bGUuZ2V0KCksIHN0eWxlUmVz
b2x2ZXIsIGVsZW1lbnQpOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5z
cGVjdG8KICAgICAgICAgaW50IGluZGV4ID0gMDsKICAgICAgICAgZm9yIChjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9y
ID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewogICAgICAgICAgICAgdW5zaWdu
ZWQgaWdub3JlZFNwZWNpZmljaXR5OwotICAgICAgICAgICAgYm9vbCBtYXRjaGVkID0gc2VsZWN0
b3JDaGVja2VyLm1hdGNoKCpzZWxlY3RvciwgKmVsZW1lbnQsIGNvbnRleHQsIGlnbm9yZWRTcGVj
aWZpY2l0eSk7CisgICAgICAgICAgICBib29sIG1hdGNoZWQgPSBzZWxlY3RvckNoZWNrZXIubWF0
Y2goKnNlbGVjdG9yLCBlbGVtZW50LCBjb250ZXh0LCBpZ25vcmVkU3BlY2lmaWNpdHkpOwogICAg
ICAgICAgICAgaWYgKG1hdGNoZWQpCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmdTZWxlY3RvcnMt
PmFkZEl0ZW0oaW5kZXgpOwogICAgICAgICAgICAgKytpbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDQyODAxOS4uYzIxZGI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTE0OSw5
ICsxNDksOSBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGNyZWF0ZUluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JEb2N1bWVudChEb2N1bWVudCYpOwogICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCog
cGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsKIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHls
ZVJ1bGUqLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCopOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShTdHlsZVJ1bGUqLCBT
dHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCosIFBzZXVkb0lkKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYsIFBzZXVk
b0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVp
bGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1
aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPE5vZGVMaXN0PiYmLCBpbnQg
ZG9jdW1lbnROb2RlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJLaXROYW1l
ZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZGYyNTg1OC4uZDg3NGExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMDk5LDE1
ICsyMDk5LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENoYW5nZUN1c3RvbUVsZW1l
bnRTdGF0ZShFbGVtZW50JiBlbGVtZW50KQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jdXN0
b21FbGVtZW50U3RhdGVDaGFuZ2VkKGVsZW1lbnRJZCwgY3VzdG9tRWxlbWVudFN0YXRlKGVsZW1l
bnQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQo
RnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0
ZWQoRnJhbWUmIGZyYW1lKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRvY3VtZW50KCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCk7Ci0gICAgQVNTRVJUKHBhZ2UpOwotICAgIGlmIChmcmFtZSAhPSAmcGFnZS0+bWFp
bkZyYW1lKCkpCisgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgbWFpbiBmcmFtZSBkb2N1bWVudCwgbmVzdGVkIGZy
YW1lIGRvY3VtZW50IHVwZGF0ZXMgYXJlIG5vdCByZXF1aXJlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAwOTA3ZDgyLi4xY2JhNGM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTcxLDcg
KzE3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZShF
bGVtZW50Jik7CiAgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KE5vZGUmKTsKICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoRG9jdW1lbnQqKTsKLSAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZy
YW1lKik7CisgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYpOwogICAgIHZvaWQg
cHNldWRvRWxlbWVudENyZWF0ZWQoUHNldWRvRWxlbWVudCYpOwogICAgIHZvaWQgcHNldWRvRWxl
bWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggN2JlZTgyOS4u
M2VkMjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkPiBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OnN0bwogICAgICAgICAucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBl
IHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQordm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5l
d1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5k
ZXggZjJlNzhkMi4uYWJiMzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZD4gc3Rv
cmFnZUlkKFNlY3VyaXR5T3JpZ2luKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSk7CiAKICAgICAvLyBD
YWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQ
YWdlKik7CisgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3Rv
cmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYsIEZyYW1lKiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBjM2M3OGUyLi5kMjNjMmNm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKIAotI2luY2x1ZGUgIkNTU1J1bGUu
aCIKLSNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNp
bmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRhYmFzZS5oIgpAQCAtNDIs
NyArNDAsNiBAQAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgpAQCAtNTUsMjkgKzUyLDI0IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yV29ya2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZUhlYXBBZ2VudC5oIgog
I2luY2x1ZGUgIlBhZ2VSdW50aW1lQWdlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgot
I2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNs
dWRlICJXZWJDb25zb2xlQWdlbnQuaCIKLSNpbmNsdWRlICJXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRG
cmFtZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCIKLSNp
bmNsdWRlICJSZXBsYXlDb250cm9sbGVyLmgiIC8vIGZvciBSZXBsYXlQb3NpdGlvbi4KKyNpbmNs
dWRlICJSZXBsYXlDb250cm9sbGVyLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKQEAgLTEwNSw2ICs5NywxNCBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lRm9yU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHJldHVy
biBmcmFtZTsKIH0KIAorc3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBGcmFtZSogZnJhbWUg
PSBudWxscHRyOworICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCisgICAgICAgIGZyYW1l
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1l
OworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBG
cmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2Vu
dCgpOwpAQCAtMzIwLDE0ICszMjAsMTQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGkKICAgICAg
ICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbFNlbmRYTUxIdHRwUmVxdWVzdCh1cmwpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5z
dGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBp
bnQgdGltZXJJZCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmds
ZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcGF1c2VPbk5h
dGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIHNldFRpbWVyRXZl
bnROYW1lLCB0cnVlKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnN0YWxsVGltZXIodGltZXJJZCwgdGltZW91dCwgc2lu
Z2xlU2hvdCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgaW50IHRpbWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIGNs
ZWFyVGltZXJFdmVudE5hbWUsIHRydWUpOwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdHNFbmFibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICAg
ICAgcGFnZUFnZW50LT5zY3JpcHRzRW5hYmxlZChpc0VuYWJsZWQpOwogfQogCi1JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGlt
ZXJJZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCB0aW1lckZpcmVkRXZlbnROYW1l
LCBmYWxzZSk7CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnN0cnVtZQog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExheW91dEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBj
b29raWUsIFJlbmRlck9iamVjdCogcm9vdCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29v
a2llLCBSZW5kZXJPYmplY3QmIHJvb3QpCiB7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkTGF5b3V0KHJvb3QpOwpAQCAtNDg0LDEzICs0ODQsMTMgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ29tcG9z
aXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQogewogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxQYWludChyZW5kZXJlci0+ZnJhbWUoKSk7CisgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxQYWludChyZW5kZXJlci5mcmFtZSgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRS
ZWN0JiByZWN0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewogICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBhaW50KHJlbmRlcmVy
LCByZWN0KTsKQEAgLTcyNCwxNSArNzI0LDIwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYKICNl
bmRpZgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwg
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBGcmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKCFpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBhZ2UgfHwgIWxvYWRlciB8fCAh
bG9hZGVyLT5mcmFtZSgpKQorICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobG9hZGVyLT5mcmFtZSgpLT5pc01haW5GcmFtZSgpKSB7CisgICAgaWYgKCFs
b2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChsb2FkZXItPmZyYW1lKCkgPT0g
JmZyYW1lKTsKKworICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChX
ZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29u
c29sZUFnZW50KCkpCiAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPnJlc2V0KCk7CiAKQEAgLTc0
Niw3ICs3NTEsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9h
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudAogICAgICAgICAgICAgZGF0YWJh
c2VBZ2VudC0+Y2xlYXJSZXNvdXJjZXMoKTsKIAogICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdl
bnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQot
ICAgICAgICAgICAgZG9tQWdlbnQtPnNldERvY3VtZW50KHBhZ2UtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpOworICAgICAgICAgICAgZG9tQWdlbnQtPnNldERvY3VtZW50KGZyYW1lLmRvY3VtZW50
KCkpOwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCiAgICAg
ICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVzZXQoKTsKQEAgLTc1OSwyMyArNzY0LDIzIEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgfQogCiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAg
ICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQobG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgp
KTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQoZnJhbWUuZG9jdW1lbnQoKSk7CiAK
ICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQotICAgICAgICBwYWdlQWdlbnQtPmZyYW1lTmF2aWdh
dGVkKGxvYWRlcik7CisgICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQoZnJhbWUpOwog
Ci0gICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgeworICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0
aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpCiAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAg
ICB9CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdl
bnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2Vu
dCgpKQotICAgICAgICByZXBsYXlBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKKyAgICAg
ICAgcmVwbGF5QWdlbnQtPmZyYW1lTmF2aWdhdGVkKGZyYW1lKTsKICNlbmRpZgogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lKiBmcmFtZSkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lKQogewogICAg
IGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTM5LDEwICs5NDQsMTAgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWUKICAgICAgICAgZGJBZ2VudC0+ZGlkT3BlbkRhdGFiYXNl
KFdURk1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUsIHZlcnNpb24pOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBQYWdlKiBw
YWdlKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdW
YWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCgpKQotICAg
ICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4sIHBhZ2UpOworICAg
ICAgICBkb21TdG9yYWdlQWdlbnQtPmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4pOwogfQogCiBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkV2FpdEZvckRlYnVnZ2VyT25TdGFydElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKQEAgLTEyMTIsMjUg
KzEyMTcsOSBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbgogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1JbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UqIHBhZ2UpCitJbnN0cnVtZW50aW5nQWdlbnRzKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewotICAgIHJldHVybiBwYWdlID8gJmluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKCpwYWdlKSA6IG51bGxwdHI7Ci19Ci0KLUluc3RydW1lbnRpbmdBZ2Vu
dHMmIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
UGFnZSYgcGFnZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBw
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCk7Ci19
Ci0KLUluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0ZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCi17Ci0gICAg
cmV0dXJuIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShyZW5kZXJlci0+ZnJhbWUoKSk7Ci19
Ci0KLUluc3RydW1lbnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSkKLXsKLSAgICByZXR1cm4gd29ya2VyR2xvYmFsU2NvcGUgPyAmd29ya2Vy
R2xvYmFsU2NvcGUtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHMu
Z2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
cmVuZGVyZXIuZnJhbWUoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
YXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggYmE2YjRmYi4uNGIwYjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzYsMTMgKzM2
LDE0IEBACiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmgiCiAjaW5jbHVkZSAiTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYS5oIgotI2luY2x1ZGUg
IldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoV0VCX1JF
UExBWSkKQEAgLTUxLDEwICs1Miw2IEBACiAjZW5kaWYKIAogCi1uYW1lc3BhY2UgRGVwcmVjYXRl
ZCB7Ci1jbGFzcyBTY3JpcHRPYmplY3Q7Ci19Ci0KIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xh
c3MgQ29uc29sZU1lc3NhZ2U7CiBjbGFzcyBTY3JpcHRBcmd1bWVudHM7CkBAIC02Myw3ICs2MCw2
IEBAIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDU1NSdWxlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwog
Y2xhc3MgRE9NV2luZG93OwpAQCAtNzEsMzQgKzY3LDIzIEBAIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRl
cjsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIVFRQSGVh
ZGVyTWFwOwotY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOwotY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOwogY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOb2RlOwot
Y2xhc3MgUGFnZTsKIGNsYXNzIFBzZXVkb0VsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNs
YXNzIFJlbmRlckxheWVyQmFja2luZzsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwotY2xh
c3MgU3RvcmFnZUFyZWE7Ci1jbGFzcyBTdHlsZVJlc29sdmVyOwotY2xhc3MgU3R5bGVSdWxlOwog
Y2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudDsKIGNsYXNzIFVSTDsKIGNsYXNzIFdvcmtlcklu
c3BlY3RvclByb3h5OwotY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKIHN0cnVjdCBSZXBsYXlQb3Np
dGlvbjsKK3N0cnVjdCBXZWJTb2NrZXRGcmFtZTsKIAogI2RlZmluZSBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModmFsdWUpIGlmIChMSUtFTFkoIWhhc0Zyb250ZW5kcygpKSkgcmV0dXJuIHZh
bHVlOwogCkBAIC0xMTcsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNoYXJh
Y3RlckRhdGFNb2RpZmllZChEb2N1bWVudCYsIENoYXJhY3RlckRhdGEmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKERvY3VtZW50JiwgTm9kZSYpOwogICAgIHN0YXRp
YyB2b2lkIGRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgdm9pZCBmcmFt
ZVdpbmRvd0Rpc2NhcmRlZChGcmFtZSosIERPTVdpbmRvdyopOworICAgIHN0YXRpYyB2b2lkIGZy
YW1lV2luZG93RGlzY2FyZGVkKEZyYW1lJiwgRE9NV2luZG93Kik7CiAgICAgc3RhdGljIHZvaWQg
bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBhY3Rp
dmVTdHlsZVNoZWV0c1VwZGF0ZWQoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNo
U2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290Jik7CkBAIC0xMzcsOCArMTIyLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVu
dCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwogCiAgICAgc3RhdGljIHZvaWQgd2ls
bFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiB1cmwpOwotICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgaW50IHRpbWVySWQsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCwg
Ym9vbCBzaW5nbGVTaG90KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVUaW1lcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVySWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3Rh
bGxUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQsIHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRSZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQpOwog
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb24oY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpA
QCAtMTUxLDE2ICsxMzYsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSYpOwogICAgIHN0YXRp
YyB2b2lkIHNjcmlwdHNFbmFibGVkKFBhZ2UmLCBib29sIGlzRW5hYmxlZCk7Ci0gICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBpbnQgdGltZXJJZCk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQg
dGltZXJJZCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVMYXlv
dXQoRnJhbWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxMYXlvdXQoRnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIHZv
aWQgZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJlbmRl
ck9iamVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbChQYWdlJik7CiAgICAgc3RhdGlj
IHZvaWQgd2lsbENvbXBvc2l0ZShGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbXBvc2l0
ZShGcmFtZSYpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludChSZW5kZXJPYmplY3QqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0Jik7
CisgICAgc3RhdGljIHZvaWQgd2lsbFBhaW50KFJlbmRlck9iamVjdCYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmKTsKICAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERv
Y3VtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVs
ZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCYpOwpAQCAtMTgyLDE0ICsxNjcsMTQgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICBzdGF0aWMgdm9pZCB3
aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKLSAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7
CisgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwog
ICAgIHN0YXRpYyB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgZG9tQ29udGVudExvYWRlZEV2
ZW50RmlyZWQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBsb2FkRXZlbnRGaXJlZChGcmFtZSop
OwogICAgIHN0YXRpYyB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50KEZyYW1lJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZChGcmFtZSYsIERvY3VtZW50TG9hZGVyKik7Ci0gICAg
c3RhdGljIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9p
ZCBmcmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGxvYWRlckRl
dGFjaGVkRnJvbUZyYW1lKEZyYW1lJiwgRG9jdW1lbnRMb2FkZXImKTsKICAgICBzdGF0aWMgdm9p
ZCBmcmFtZVN0YXJ0ZWRMb2FkaW5nKEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTdG9w
cGVkTG9hZGluZyhGcmFtZSYpOwpAQCAtMjAwLDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwotICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUqLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4pOworICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29y
a2VyR2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50KFBhZ2UmLCBKU0M6OkV4ZWNTdGF0
ZSosIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJik7CiAgICAgc3RhdGljIHZv
aWQgY29uc29sZUNvdW50KFdvcmtlckdsb2JhbFNjb3BlJiwgSlNDOjpFeGVjU3RhdGUqLCBSZWZQ
dHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpOwpAQCAtMjIwLDExICsyMDUsMTEgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBSZWZQdHI8RGF0YWJhc2U+JiYsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKLSAgICBzdGF0aWMgdm9p
ZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3Vy
aXR5T3JpZ2luKiwgUGFnZSopOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50KFBhZ2UmLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CiAK
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRXYWl0Rm9yRGVidWdnZXJPblN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgdm9pZCB3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXb3JrZXJJbnNwZWN0b3JQcm94eSosIGNvbnN0IFVSTCYpOwotICAgIHN0
YXRpYyB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
ckluc3BlY3RvclByb3h5Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkV2FpdEZvckRlYnVnZ2Vy
T25TdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIHZvaWQgd29ya2Vy
U3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya2VySW5zcGVjdG9yUHJveHkqLCBj
b25zdCBVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBXb3JrZXJJbnNwZWN0b3JQcm94eSopOwogCiAjaWYgRU5BQkxFKFdFQl9S
RVBMQVkpCiAgICAgc3RhdGljIHZvaWQgc2Vzc2lvbkNyZWF0ZWQoUGFnZSYsIFJlZlB0cjxSZXBs
YXlTZXNzaW9uPiYmKTsKQEAgLTI1OSw3ICsyNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgZGlkSGFuZGxlTWVtb3J5UHJlc3N1cmUoUGFnZSYsIENyaXRpY2FsKTsKICNlbmRpZgogCi0g
ICAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlKik7CisgICAgc3RhdGljIHZv
aWQgbmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlJik7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQXBw
bGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogCiAgICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVl
RGlkQ2hhbmdlKFBhZ2UqKTsKQEAgLTMxMSw4ICsyOTYsOCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGZvcmNlUHNldWRvU3RhdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBF
bGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKICAgICBzdGF0aWMgdm9p
ZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
U3RyaW5nJiB1cmwpOwotICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRp
bWVySWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRJbnN0
YWxsVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVUaW1lckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAg
ICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDYWxsRnVuY3Rpb25J
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBz
Y3JpcHRMaW5lLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2FsbEZ1bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CkBAIC0zMjUsMTYgKzMxMCwxNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2Ny
aXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBjb25zdCBTdHJpbmcmIHVybCwg
aW50IGxpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0SW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSYpOwogICAgIHN0YXRp
YyB2b2lkIHNjcmlwdHNFbmFibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgYm9vbCBpc0Vu
YWJsZWQpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZp
cmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBs
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEludmFsaWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbExheW91dEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBSZW5kZXJPYmplY3Qq
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYsIFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9s
bEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxDb21wb3Np
dGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwotICAgIHN0YXRpYyB2b2lkIHdp
bGxQYWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCopOwotICAgIHN0
YXRpYyB2b2lkIGRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0
KiwgY29uc3QgTGF5b3V0UmVjdCYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCYpOworICAgIHN0YXRpYyB2b2lkIGRpZFBh
aW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0
UmVjdCYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJl
Y2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNh
bGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmKTsKQEAgLTM2NSw4
ICszNTAsOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRvbUNvbnRlbnRMb2FkZWRFdmVu
dEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9p
ZCBsb2FkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lKik7CiAgICAg
c3RhdGljIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBGcmFtZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBQYWdlKiwgRG9jdW1lbnRMb2FkZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBm
cmFtZURvY3VtZW50VXBkYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lKik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJiwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBmcmFtZURvY3VtZW50VXBk
YXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQg
bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVu
dExvYWRlciYpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU3RhcnRlZExvYWRpbmdJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU3RvcHBlZExv
YWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwpAQCAtMzk2LDcgKzM4MSw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBSZWZQdHI8RGF0YWJhc2U+JiYsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAKLSAgICBzdGF0
aWMgdm9pZCBkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qLCBQYWdlKik7CisgICAg
c3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKik7CiAKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRXYWl0Rm9yRGVidWdnZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQgd29ya2VyU3RhcnRlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFdvcmtlckluc3BlY3RvclByb3h5KiwgY29uc3QgVVJMJik7CkBAIC00NDIsMTIg
KzQyNywxNSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXImKTsKIAogICAgIHN0
YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdl
Jik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSYpOworCiAgICAgc3RhdGljIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShGcmFtZSYpOwog
ICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoRnJhbWUqKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyBJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsK
LSAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50c0ZvclJl
bmRlcmVyKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxT
Y29wZShXb3JrZXJHbG9iYWxTY29wZSopOwogCiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKQEAgLTUzNSw3ICs1MjMsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAg
ICBkb2N1bWVudERldGFjaGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQpOwog
fQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlz
Y2FyZGVkKEZyYW1lKiBmcmFtZSwgRE9NV2luZG93KiBkb21XaW5kb3cpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKEZyYW1lJiBmcmFt
ZSwgRE9NV2luZG93KiBkb21XaW5kb3cpCiB7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUp
KQogICAgICAgICBmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMs
IGRvbVdpbmRvdyk7CkBAIC02NjksMTQgKzY1NywxNCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dAogICAgICAgICB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgdXJsKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJ
bnN0YWxsVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IHRpbWVySWQs
IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgaW50IHRpbWVySWQsIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkp
CiAgICAgICAgIGRpZEluc3RhbGxUaW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVy
SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lcklkKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBp
bnQgdGltZXJJZCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQpAQCAtNjkxLDcgKzY3OSw2IEBAIGlu
bGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uCiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSgpOwogfQogCi0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2FsbEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29v
a2llLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpAQCAtNzY1LDcgKzc1Miw3IEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0c0VuYWJsZWQoUGFnZSYgcGFnZSwgYm9v
bCBpc0VuYWJsZWQpCiAgICAgcmV0dXJuIHNjcmlwdHNFbmFibGVkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSwgaXNFbmFibGVkKTsKIH0KIAotaW5saW5lIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGlt
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IHRpbWVySWQpCitpbmxpbmUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJ
ZCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC03
OTUsNyArNzgyLDcgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUKICAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYgY29va2llLCBSZW5kZXJPYmplY3QqIHJvb3QpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExheW91dChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmIGNvb2tpZSwgUmVuZGVyT2JqZWN0JiByb290KQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQpAQCAtODEx
LDI1ICs3OTgsMjUgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRT
Y3JvbGwoUGFnZSYgcGFnZSkKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbENvbXBvc2l0ZShGcmFtZSYgZnJhbWUpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkKKyAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHdpbGxDb21wb3NpdGVJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBmcmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ29tcG9zaXRlKEZyYW1lJiBmcmFtZSkKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZSgmZnJhbWUpKQor
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgZGlkQ29tcG9zaXRlSW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cyk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFBhaW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVy
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclJlbmRlcmVyKHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIHdpbGxQYWludEltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIHJlbmRlcmVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclJlbmRlcmVyKHJlbmRlcmVyKSkKQEAgLTg3Myw3ICs4NjAsNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChGcmFtZSogZnJhbWUs
IHVuc2lnbmVkIGxvbgogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnRpbnVlQWZ0ZXJQaW5nTG9hZGVyKEZyYW1lJiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1l
KCZmcmFtZSkpCisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnRpbnVlQWZ0ZXJQaW5nTG9hZGVySW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgaWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAK
QEAgLTk2MSw3ICs5NDgsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbgogICAgICAgICBkaWRM
b2FkWEhSU3luY2hyb25vdXNseUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNjcmlwdEltcG9ydGVkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7CiAgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgc2NyaXB0SW1wb3J0ZWRJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcpOwpAQCAtMTAw
MCwxMCArOTg3LDEwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUmIGZyYW1lKQogaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRp
ZENvbW1pdExvYWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZS5wYWdlKCksIGxvYWRl
cik7CisgICAgICAgIGRpZENvbW1pdExvYWRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFt
ZSwgbG9hZGVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
cmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSogZnJhbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAg
ICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JG
cmFtZShmcmFtZSkpCkBAIC0xMDE4LDI1ICsxMDA1LDI1IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUoRnJhbWUmIGZyYW1lLCBE
b2N1CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdGFydGVk
TG9hZGluZyhGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkK
KyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIGZyYW1lU3RhcnRlZExvYWRp
bmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVTdG9wcGVkTG9hZGluZyhGcmFtZSYgZnJhbWUp
CiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoJmZyYW1lKSkKKyAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFt
ZShmcmFtZSkpCiAgICAgICAgIGZyYW1lU3RvcHBlZExvYWRpbmdJbXBsKCppbnN0cnVtZW50aW5n
QWdlbnRzLCBmcmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJiBmcmFtZSwgZG91YmxlIGRlbGF5KQog
ewotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKCZmcmFtZSkpCisgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
ZnJhbWUpKQogICAgICAgICBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb25JbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBmcmFtZSwgZGVsYXkpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oRnJhbWUmIGZyYW1l
KQogewotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKCZmcmFtZSkpCisgICAgaWYgKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJh
bWUoZnJhbWUpKQogICAgICAgICBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uSW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogfQogCkBAIC0xMDY1LDE0ICsxMDUyLDEzIEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgICAgIGRpZE9wZW5EYXRhYmFzZUltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIFdURk1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUsIHZlcnNp
b24pOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3Bh
dGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBQYWdlKiBwYWdlKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChQYWdlJiBw
YWdlLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQotICAgICAgICBkaWREaXNwYXRjaERPTVN0
b3JhZ2VFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGtleSwgb2xkVmFsdWUsIG5ld1Zh
bHVlLCBzdG9yYWdlVHlwZSwgc2VjdXJpdHlPcmlnaW4sIHBhZ2UpOworICAgIGRpZERpc3BhdGNo
RE9NU3RvcmFnZUV2ZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHN0b3JhZ2VUeXBlLCBzZWN1cml0eU9yaWdpbik7CiB9CiAK
LWlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkV2FpdEZvckRlYnVn
Z2VyT25TdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoraW5saW5lIGJvb2wg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRXYWl0Rm9yRGVidWdnZXJPblN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKGZhbHNlKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQpAQCAt
MTA4MCwxNCArMTA2NiwxNCBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNob3VsZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnQoU2NyaXB0RXhlY3V0aQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJT
dGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlckluc3BlY3RvclBy
b3h5KiBwcm94eSwgY29uc3QgVVJMJiB1cmwpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndvcmtlclN0YXJ0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya2VySW5zcGVjdG9yUHJveHkqIHByb3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0
KGNvbnRleHQpKQogICAgICAgICB3b3JrZXJTdGFydGVkSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgcHJveHksIHVybCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d29ya2VyVGVybWluYXRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3Jr
ZXJJbnNwZWN0b3JQcm94eSogcHJveHkpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndvcmtlclRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya2VySW5zcGVjdG9yUHJveHkqIHByb3h5KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC0x
MjI5LDE2ICsxMjE1LDE0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
cGxheWJhY2tIaXRQb3NpdGlvbihQYWdlJiBwYWdlLCBjb25zdCBSZXBsCiBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZU1lbW9yeVByZXNzdXJlKFBhZ2UmIHBh
Z2UsIENyaXRpY2FsIGNyaXRpY2FsKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UoJnBhZ2UpKQotICAgICAgICBkaWRIYW5k
bGVNZW1vcnlQcmVzc3VyZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNyaXRpY2FsKTsKKyAg
ICBkaWRIYW5kbGVNZW1vcnlQcmVzc3VyZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
cGFnZSksIGNyaXRpY2FsKTsKIH0KICNlbmRpZgogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Om5ldHdvcmtTdGF0ZUNoYW5nZWQoUGFnZSogcGFnZSkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bmV0d29ya1N0YXRlQ2hhbmdlZChQYWdlJiBwYWdl
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCi0gICAgICAgIG5ldHdvcmtTdGF0ZUNoYW5nZWRJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzKTsKKyAgICBuZXR3b3JrU3RhdGVDaGFuZ2VkSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzRm9yUGFnZShwYWdlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6dXBkYXRlQXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSogZnJhbWUpCkBA
IC0xMjUzLDEwICsxMjM3LDkgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBhZ2UsIHN0ZDo6dW5pcXUKICAgICBhZGRNZXNz
YWdlVG9Db25zb2xlSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUs
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yV29ya2Vy
R2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpKQotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgYWRk
TWVzc2FnZVRvQ29uc29sZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYm
IGFyZ3VtZW50cykKQEAgLTEyNjYsOCArMTI0OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0YXRlKiBz
CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50KFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNjb3BlKCZ3b3JrZXJHbG9iYWxTY29wZSkpCi0gICAg
ICAgIGNvbnNvbGVDb3VudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBXVEZNb3Zl
KGFyZ3VtZW50cykpOworICAgIGNvbnNvbGVDb3VudEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
cldvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgc3RhdGUsIFdURk1vdmUoYXJn
dW1lbnRzKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dGFr
ZUhlYXBTbmFwc2hvdChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xMjg1
LDggKzEyNjcsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0
Q29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cgogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2xvYmFsU2NvcGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoJndvcmtlckdsb2JhbFNjb3BlKSkKLSAgICAgICAgc3Rh
cnRDb25zb2xlVGltaW5nSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGl0bGUpOworICAgIHN0
YXJ0Q29uc29sZVRpbWluZ0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zvcldvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKSwgdGl0bGUpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmIHN0YWNr
KQpAQCAtMTI5Nyw4ICsxMjc4LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzdG9wQ29uc29sZVRpbWluZyhGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmkKIAogaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhXb3JrZXJH
bG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4mJiBzdGFjaykKIHsKLSAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JXb3JrZXJHbG9iYWxTY29wZSgmd29ya2VyR2xvYmFsU2NvcGUpKQotICAgICAgICBzdG9wQ29u
c29sZVRpbWluZ0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpdGxlLCBXVEZNb3ZlKHN0YWNr
KSk7CisgICAgc3RvcENvbnNvbGVUaW1pbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3Jr
ZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSksIHRpdGxlLCBXVEZNb3ZlKHN0YWNrKSk7
CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVRpbWVT
dGFtcChGcmFtZSYgZnJhbWUsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBh
cmd1bWVudHMpCkBAIC0xMzYwLDEyICsxMzQwLDE1IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVu
CiAKIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBpZiAoaXM8RG9jdW1lbnQ+KCpjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS0+cGFnZSgpKTsKLSAg
ICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpOworICAgIHJldHVybiBjb250ZXh0ID8gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckNvbnRleHQoKmNvbnRleHQpIDogbnVsbHB0cjsKK30KKworaW5saW5lIEluc3RydW1l
bnRpbmdBZ2VudHMqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudGluZ0FnZW50
c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAo
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvclBhZ2UoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnBhZ2UoKSk7CisgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuICZpbnN0cnVtZW50
aW5nQWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTM5Miw0ICsxMzc1LDI1
IEBAIGlubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1CiAgICAgcmV0dXJuIGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JQYWdlKHBhZ2UpOwogfQogCitpbmxpbmUgSW5zdHJ1bWVudGluZ0FnZW50cyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBwYWdlID8gJmluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKCpwYWdl
KSA6IG51bGxwdHI7Cit9CisKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzJiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKFBhZ2UmIHBhZ2UpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gcGFnZS5pbnNwZWN0b3JD
b250cm9sbGVyKCkubV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOworfQorCitpbmxpbmUgSW5z
dHJ1bWVudGluZ0FnZW50cyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2Jh
bFNjb3BlKQoreworICAgIHJldHVybiB3b3JrZXJHbG9iYWxTY29wZSA/ICZpbnN0cnVtZW50aW5n
QWdlbnRzRm9yV29ya2VyR2xvYmFsU2NvcGUoKndvcmtlckdsb2JhbFNjb3BlKSA6IG51bGxwdHI7
Cit9CisKK2lubGluZSBJbnN0cnVtZW50aW5nQWdlbnRzJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCit7CisgICAgcmV0dXJuIHdvcmtlckdsb2JhbFNjb3Bl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKS5tX2luc3RydW1lbnRpbmdBZ2VudHM7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKaW5kZXggMzVmYTQxNS4uYzZiMmQxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTczOCwxMyArNzM4LDEz
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkRXZlbnRGaXJlZCgpCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPmxvYWRFdmVudEZpcmVkKHRpbWVzdGFtcCgpKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQog
ewotICAgIGlmIChsb2FkZXItPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpIHsKKyAgICBpZiAoZnJh
bWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBtX3NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNl
ID0gbV9wZW5kaW5nU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZE9uY2U7CiAgICAgICAgIG1fcGVuZGlu
Z1NjcmlwdFRvRXZhbHVhdGVPbkxvYWRPbmNlID0gU3RyaW5nKCk7CiAgICAgfQotICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5mcmFtZU5hdmlnYXRlZChidWlsZE9iamVjdEZvckZyYW1lKGxvYWRl
ci0+ZnJhbWUoKSkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5mcmFtZU5hdmlnYXRlZChi
dWlsZE9iamVjdEZvckZyYW1lKCZmcmFtZSkpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZnJhbWVEZXRhY2hlZChGcmFtZSYgZnJhbWUpCkBAIC04NjAsMTMgKzg2MCwxMyBAQCB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUnVuSmF2YVNjcmlwdERpYWxvZygpCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPmphdmFzY3JpcHREaWFsb2dDbG9zZWQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRpZFBhaW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkUGFpbnQoUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIW1f
ZW5hYmxlZCB8fCAhbV9zaG93UGFpbnRSZWN0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5
b3V0UmVjdCBhYnNvbHV0ZVJlY3QgPSBMYXlvdXRSZWN0KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1
dGVRdWFkKEZsb2F0UmVjdChyZWN0KSkuYm91bmRpbmdCb3goKSk7Ci0gICAgRnJhbWVWaWV3KiB2
aWV3ID0gcmVuZGVyZXItPmRvY3VtZW50KCkudmlldygpOworICAgIExheW91dFJlY3QgYWJzb2x1
dGVSZWN0ID0gTGF5b3V0UmVjdChyZW5kZXJlci5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVj
dChyZWN0KSkuYm91bmRpbmdCb3goKSk7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gcmVuZGVyZXIu
ZG9jdW1lbnQoKS52aWV3KCk7CiAKICAgICBMYXlvdXRSZWN0IHJvb3RSZWN0ID0gYWJzb2x1dGVS
ZWN0OwogICAgIGlmICghdmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggNWIwZDk2YS4uMTI2
YzlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aApAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgZG9tQ29udGVu
dEV2ZW50RmlyZWQoKTsKICAgICB2b2lkIGxvYWRFdmVudEZpcmVkKCk7Ci0gICAgdm9pZCBmcmFt
ZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRnJh
bWUmKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWQoRnJhbWUmKTsKICAgICB2b2lkIGxvYWRlckRl
dGFjaGVkRnJvbUZyYW1lKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBmcmFtZVN0YXJ0ZWRM
b2FkaW5nKEZyYW1lJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ls
bFJ1bkphdmFTY3JpcHREaWFsb2coY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIGRp
ZFJ1bkphdmFTY3JpcHREaWFsb2coKTsKICAgICB2b2lkIGFwcGx5RW11bGF0ZWRNZWRpYShTdHJp
bmcmKTsKLSAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJlY3Qm
KTsKKyAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3QmKTsK
ICAgICB2b2lkIGRpZExheW91dCgpOwogICAgIHZvaWQgZGlkU2Nyb2xsKCk7CiAgICAgdm9pZCBk
aWRSZWNhbGN1bGF0ZVN0eWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRleCA0ZDVhYTkyLi5hNDI2NGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTE5
OCwxMCArMTk4LDEwIEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlCiAgICAgbV9zZWdtZW50c01h
cC5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpmcmFtZU5hdmlnYXRl
ZChEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZnJh
bWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIGlmIChzZXNzaW9uU3RhdGUoKSAhPSBX
ZWJDb3JlOjpTZXNzaW9uU3RhdGU6OkluYWN0aXZlKQotICAgICAgICBtX3BhZ2UucmVwbGF5Q29u
dHJvbGxlcigpLmZyYW1lTmF2aWdhdGVkKGxvYWRlcik7CisgICAgICAgIG1fcGFnZS5yZXBsYXlD
b250cm9sbGVyKCkuZnJhbWVOYXZpZ2F0ZWQoZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpmcmFtZURldGFjaGVkKEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKaW5kZXggZGRkY2U0Zi4uYjQzNWVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCi0gICAgdm9pZCBmcmFtZU5h
dmlnYXRlZChEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRnJhbWUm
KTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxEaXNwYXRj
aEV2ZW50KGNvbnN0IEV2ZW50JiwgRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDdiNGFlZmEuLjUyYTAx
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTMyNSwxNCArMzI1LDE0IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6d2lsbExheW91dChGcmFtZSYgZnJhbWUpCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpMYXlvdXQsIHRydWUs
ICZmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0KFJl
bmRlck9iamVjdCogcm9vdCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTGF5b3V0
KFJlbmRlck9iamVjdCYgcm9vdCkKIHsKICAgICBpZiAobV9yZWNvcmRTdGFjay5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSA9IG1fcmVj
b3JkU3RhY2subGFzdCgpOwogICAgIEFTU0VSVChlbnRyeS50eXBlID09IFRpbWVsaW5lUmVjb3Jk
VHlwZTo6TGF5b3V0KTsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKLSAgICByb290LT5h
YnNvbHV0ZVF1YWRzKHF1YWRzKTsKKyAgICByb290LmFic29sdXRlUXVhZHMocXVhZHMpOwogICAg
IGlmIChxdWFkcy5zaXplKCkgPj0gMSkKICAgICAgICAgVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojph
cHBlbmRMYXlvdXRSb290KGVudHJ5LmRhdGEuZ2V0KCksIHF1YWRzWzBdKTsKICAgICBlbHNlCkBA
IC0zNzQsMTIgKzM3NCwxMiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWlu
dChGcmFtZSYgZnJhbWUpCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQYWludCwgdHJ1ZSwgJmZyYW1lKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6ZGlkUGFpbnQoUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYg
Y2xpcFJlY3QpCiB7CiAgICAgVGltZWxpbmVSZWNvcmRFbnRyeSYgZW50cnkgPSBtX3JlY29yZFN0
YWNrLmxhc3QoKTsKICAgICBBU1NFUlQoZW50cnkudHlwZSA9PSBUaW1lbGluZVJlY29yZFR5cGU6
OlBhaW50KTsKICAgICBGbG9hdFF1YWQgcXVhZDsKLSAgICBsb2NhbFRvUGFnZVF1YWQoKnJlbmRl
cmVyLCBjbGlwUmVjdCwgJnF1YWQpOworICAgIGxvY2FsVG9QYWdlUXVhZChyZW5kZXJlciwgY2xp
cFJlY3QsICZxdWFkKTsKICAgICBlbnRyeS5kYXRhID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVQYWludERhdGEocXVhZCk7CiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVs
aW5lUmVjb3JkVHlwZTo6UGFpbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggMjk1YTgyZi4uNDJkZTQyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBA
IC0xMjQsMTEgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChG
cmFtZSYpOwogICAgIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYpOwogICAgIHZvaWQg
d2lsbExheW91dChGcmFtZSYpOwotICAgIHZvaWQgZGlkTGF5b3V0KFJlbmRlck9iamVjdCopOwor
ICAgIHZvaWQgZGlkTGF5b3V0KFJlbmRlck9iamVjdCYpOwogICAgIHZvaWQgd2lsbENvbXBvc2l0
ZShGcmFtZSYpOwogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCk7CiAgICAgdm9pZCB3aWxsUGFpbnQo
RnJhbWUmKTsKLSAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJl
Y3QmKTsKKyAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCYsIGNvbnN0IExheW91dFJlY3Qm
KTsKICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKEZyYW1lKik7CiAgICAgdm9pZCBkaWRS
ZWNhbGN1bGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlv
bihGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYjllZjZl
MC4uZjJjMzBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNTkz
LDcgKzU5Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVu
dCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wKIAogICAgIC8vIERvIHRoaXMgYWZ0
ZXIgZGV0YWNoaW5nIHRoZSBkb2N1bWVudCBzbyB0aGF0IHRoZSB1bmxvYWQgZXZlbnQgd29ya3Mu
CiAgICAgaWYgKGNsZWFyV2luZG93UHJvcGVydGllcykgewotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKCZtX2ZyYW1lLCBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
cmFtZVdpbmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKTsKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cmVzZXRVbmxl
c3NTdXNwZW5kZWRGb3JEb2N1bWVudFN1c3BlbnNpb24oKTsKICAgICAgICAgbV9mcmFtZS5zY3Jp
cHQoKS5jbGVhcldpbmRvd1NoZWxsKG5ld0RvY3VtZW50LT5kb21XaW5kb3coKSwgbV9mcmFtZS5k
b2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpBYm91dFRvRW50ZXJQYWdl
Q2FjaGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggMWE1YzQ2NC4uZDAz
YzFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbnQg
RE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZAogI2VuZGlmCiAKICAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVk
KCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoJmNvbnRl
eHQsIHRpbWVyLT5tX3RpbWVvdXRJZCwgdGltZW91dCwgc2luZ2xlU2hvdCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGlt
ZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIC8vIEtlZXAgdHJhY2sgb2YgbmVz
dGVkIHRpbWVyIGluc3RhbGxzLgogICAgIGlmIChOZXN0ZWRUaW1lcnNNYXAqIG5lc3RlZFRpbWVy
cyA9IE5lc3RlZFRpbWVyc01hcDo6aW5zdGFuY2VGb3JDb250ZXh0KGNvbnRleHQpKQpAQCAtMjM4
LDcgKzIzOCw3IEBAIHZvaWQgRE9NVGltZXI6OnJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgaW50IHRpbWVvdXRJZCkKICAgICBpZiAoTmVzdGVkVGltZXJzTWFwKiBu
ZXN0ZWRUaW1lcnMgPSBOZXN0ZWRUaW1lcnNNYXA6Omluc3RhbmNlRm9yQ29udGV4dChjb250ZXh0
KSkKICAgICAgICAgbmVzdGVkVGltZXJzLT5yZW1vdmUodGltZW91dElkKTsKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXIoJmNvbnRleHQsIHRpbWVvdXRJZCk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcihjb250ZXh0LCB0
aW1lb3V0SWQpOwogICAgIGNvbnRleHQucmVtb3ZlVGltZW91dCh0aW1lb3V0SWQpOwogfQogCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgIC8vIE9ubHkgdGhl
IGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIgc2hvdWxkIGdldCBhbiBhZmZp
cm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgogICAgIG1fdXNlckdlc3R1cmVUb2tlblRv
Rm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKCZjb250ZXh0
LCBtX3RpbWVvdXRJZCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcihjb250ZXh0LCBtX3Rp
bWVvdXRJZCk7CiAKICAgICAvLyBTaW1wbGUgY2FzZSBmb3Igbm9uLW9uZS1zaG90IHRpbWVycy4K
ICAgICBpZiAoaXNBY3RpdmUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDNh
MmY3NTkuLmRjODgxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTQ5MSw3ICs0
OTEsOCBAQCB2b2lkIERPTVdpbmRvdzo6ZnJhbWVEZXN0cm95ZWQoKQogCiB2b2lkIERPTVdpbmRv
dzo6d2lsbERldGFjaFBhZ2UoKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVXaW5kb3dEaXNjYXJkZWQobV9mcmFtZSwgdGhpcyk7CisgICAgaWYgKG1fZnJhbWUpCisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoKm1fZnJh
bWUsIHRoaXMpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6d2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDAxY2YwMjAuLjM3ZmI3ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQoUmVmUHRy
PERvY3VtZW50PiYmIG5ld0RvY3VtZW50KQogICAgIGlmIChuZXdEb2N1bWVudCkKICAgICAgICAg
bmV3RG9jdW1lbnQtPmRpZEJlY29tZUN1cnJlbnREb2N1bWVudEluRnJhbWUoKTsKIAotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEb2N1bWVudFVwZGF0ZWQodGhpcyk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURvY3VtZW50VXBkYXRlZCgqdGhpcyk7CiB9
CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDMyMGE4OTIuLjAyNzkxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTE1NjUsNyArMTU2NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1
YnRyZWUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExheW91dChjb29raWUsIHJvb3QpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTGF5b3V0KGNvb2tpZSwgKnJvb3QpOwogICAgIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlv
dXQoZnJhbWUoKSk7CiAKICAgICAtLW1fbmVzdGVkTGF5b3V0Q291bnQ7CkBAIC00MjE1LDcgKzQy
MTUsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiwgUGFpbgogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lKCkuZG9jdW1lbnQoKTsKIAogICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZp
ZXcoKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KCpyZW5k
ZXJWaWV3KCkpOwogCiAgICAgcGFpbnRpbmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlciA9ICFzQ3Vy
cmVudFBhaW50VGltZVN0YW1wOwogCkBAIC00MjczLDcgKzQyNzMsNyBAQCB2b2lkIEZyYW1lVmll
dzo6ZGlkUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UgogICAgICAgICBzQ3VycmVudFBhaW50VGltZVN0YW1wID0gMDsKIAogICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoKnJlbmRlclZpZXcoKSwgZGlydHlSZWN0
KTsKICAgICAgICAgLy8gRklYTUU6IHNob3VsZCBwcm9iYWJseSBub3QgZmlyZSBtaWxlc3RvbmVz
IGZvciBzbmFwc2hvdCBwYWludGluZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNzYyMwogICAgICAgICBmaXJlUGFpbnRSZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVk
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTg5ODA5Mi4uOThkN2JhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKQogICAgIGZvciAoYXV0byYgcGFnZSA6ICphbGxQYWdlcykg
ewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgICAgIGZyYW1l
cy5hcHBlbmQoKmZyYW1lKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKHBhZ2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKnBhZ2UpOwogICAgIH0KIAogICAgIEF0b21pY1N0cmluZyBl
dmVudE5hbWUgPSBpc09uTGluZSA/IGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCA6IGV2ZW50TmFt
ZXMoKS5vZmZsaW5lRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCmluZGV4IGViZGExNGYuLmUyZjM2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yNDMzLDcgKzI0MzMs
NyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAogICAgICAgICB8fCBncmFwaGljc0xheWVyID09
IG1fbWFza0xheWVyLmdldCgpCiAgICAgICAgIHx8IGdyYXBoaWNzTGF5ZXIgPT0gbV9jaGlsZENs
aXBwaW5nTWFza0xheWVyLmdldCgpCiAgICAgICAgIHx8IGdyYXBoaWNzTGF5ZXIgPT0gbV9zY3Jv
bGxpbmdDb250ZW50c0xheWVyLmdldCgpKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFBhaW50KCZyZW5kZXJlcigpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUGFpbnQocmVuZGVyZXIoKSk7CiAKICAgICAgICAgaWYgKCEocGFpbnRpbmdQ
aGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE92ZXJmbG93Q29udGVudHMpKQogICAgICAgICAgICAg
ZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KGNvbXBvc2l0ZWRCb3VuZHNJbmNs
dWRpbmdNYXJnaW4oKSkpOwpAQCAtMjQ0MSw3ICsyNDQxLDcgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
R3JhcGgKICAgICAgICAgLy8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0
IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlw
UmVjdHMuCiAgICAgICAgIHBhaW50SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsIGNvbnRleHQsIGRp
cnR5UmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgcGFpbnRpbmdQaGFzZSk7CiAKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludCgmcmVuZGVyZXIoKSwgZGlydHlSZWN0
KTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJlcigp
LCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhv
cml6b250YWxTY3JvbGxiYXIoKSkgewogICAgICAgICBwYWludFNjcm9sbGJhcihtX293bmluZ0xh
eWVyLmhvcml6b250YWxTY3JvbGxiYXIoKSwgY29udGV4dCwgZGlydHlSZWN0KTsKICAgICB9IGVs
c2UgaWYgKGdyYXBoaWNzTGF5ZXIgPT0gbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggZGFlOGNhNi4u
YmRjYWVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcApA
QCAtNDAzLDEwICs0MDMsOSBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnJlcGxheVRvUG9zaXRp
b24oY29uc3QgUmVwbGF5UG9zaXRpb24mIHBvc2l0aW9uLCBEaXNwYXRjaAogICAgIHN0YXJ0UGxh
eWJhY2soKTsKIH0KIAotdm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZU5hdmlnYXRlZChEb2N1
bWVudExvYWRlciogbG9hZGVyKQordm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZU5hdmlnYXRl
ZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgQVNTRVJUKG1fc2Vzc2lvblN0YXRlICE9IFNlc3Npb25T
dGF0ZTo6SW5hY3RpdmUpOwotICAgIEFTU0VSVF9BUkcobG9hZGVyLCBsb2FkZXIpOwogICAgIAog
ICAgIC8vIFRoZSBpbml0aWFsIGNhcHR1cmluZyBzZWdtZW50IGlzIGNyZWF0ZWQgcHJpb3IgdG8g
bWFpbiBmcmFtZSBuYXZpZ2F0aW9uLgogICAgIC8vIE90aGVyd2lzZSwgdGhlIHByaW9yIGNhcHR1
cmluZyBzZWdtZW50IHdhcyBjb21wbGV0ZWQgd2hlbiB0aGUgZnJhbWUgZGV0YWNoZWQsCkBAIC00
MjEsOCArNDIwLDggQEAgdm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZU5hdmlnYXRlZChEb2N1
bWVudExvYWRlciogbG9hZGVyKQogCiAgICAgLy8gV2Ugc3RvcmUgdGhlIGlucHV0IGN1cnNvciBp
biBib3RoIERvY3VtZW50IGFuZCBKU0RPTVdpbmRvdywgc28gdGhhdAogICAgIC8vIHJlcGxheSBz
dGF0ZSBpcyBhY2Nlc3NpYmxlIGZyb20gSmF2YVNjcmlwdENvcmUgYW5kIHNjcmlwdC1mcmVlIGxh
eW91dCBjb2RlLgotICAgIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2V0SW5wdXRDdXJz
b3IoKm1fYWN0aXZlQ3Vyc29yKTsKLSAgICBsb2FkZXItPmZyYW1lKCktPnNjcmlwdCgpLmdsb2Jh
bE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPnNldElucHV0Q3Vyc29yKG1fYWN0aXZl
Q3Vyc29yLmdldCgpKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcigqbV9h
Y3RpdmVDdXJzb3IpOworICAgIGZyYW1lLnNjcmlwdCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSktPnNldElucHV0Q3Vyc29yKG1fYWN0aXZlQ3Vyc29yLmdldCgpKTsKIH0K
IAogdm9pZCBSZXBsYXlDb250cm9sbGVyOjpmcmFtZURldGFjaGVkKEZyYW1lJiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5oCmluZGV4IDU4N2Q4MmYuLmU5NTlh
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaApAQCAtMTMxLDcg
KzEzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN3aXRjaFNlc3Npb24oUmVmUHRyPFJlcGxheVNl
c3Npb24+JiYpOwogCiAgICAgLy8gSW5zcGVjdG9yUmVwbGF5QWdlbnQgbm90aWZpY2F0aW9ucy4K
LSAgICB2b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7CisgICAgdm9pZCBmcmFt
ZU5hdmlnYXRlZChGcmFtZSYpOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZChGcmFtZSYpOwogICAg
IHZvaWQgd2lsbERpc3BhdGNoRXZlbnQoY29uc3QgRXZlbnQmLCBGcmFtZSopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBl
YzUwMWZlLi4zNjg1MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QKIAogdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9y
YWdlRXZlbnRzVG9GcmFtZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+
JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hET01TdG9yYWdlRXZlbnQoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFNlc3Npb25TdG9yYWdl
LCBzZWN1cml0eU9yaWdpbiwgJnBhZ2UpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQocGFnZSwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUs
IFNlc3Npb25TdG9yYWdlLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIGZyYW1l
IDogZnJhbWVzKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5zZXNzaW9uU3RvcmFnZSgpOwpAQCAtODgsNyArODgsNyBAQCB2b2lkIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQ
YWdlJiBwYWdlLCBjbwogdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2VHcm91cCYgcGFnZUdyb3VwLCBjb25zdCBWZWN0b3I8
UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogcGFn
ZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hET01TdG9yYWdlRXZlbnQoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIExvY2FsU3RvcmFn
ZSwgc2VjdXJpdHlPcmlnaW4sIHBhZ2UpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KCpwYWdlLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgTG9jYWxTdG9yYWdlLCBzZWN1cml0eU9yaWdpbik7CiAKICAgICBmb3IgKGF1dG8mIGZy
YW1lIDogZnJhbWVzKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpLT5sb2NhbFN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApp
bmRleCAxZGM5OThiLi4xNWI3MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC0x
NTYsNyArMTU2LDcgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBlbHNlIHsK
ICAgICAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgPSBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyA/IG1fY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
LnZhbHVlKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICAgICAgbV9jb250ZXh0UHJveHktPnN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUobV9zY3JpcHRMb2FkZXItPnVybCgpLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnVzZXJBZ2VudChtX3NjcmlwdExvYWRlci0+dXJsKCkpLCBtX3NjcmlwdExvYWRlci0+
c2NyaXB0KCksIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgbV9zaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcnVudGltZUZsYWdzKTsKLSAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fc2NyaXB0TG9hZGVyLT5pZGVudGlmaWVyKCksIG1fc2NyaXB0TG9h
ZGVyLT5zY3JpcHQoKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2NyaXB0
SW1wb3J0ZWQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9zY3JpcHRMb2FkZXItPmlkZW50
aWZpZXIoKSwgbV9zY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKICAgICB9CiAgICAgbV9zY3JpcHRM
b2FkZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDQ4YmIxMDMuLmQ0Zjg3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHVybHMpCiAgICAgICAgIGlmIChzY3JpcHRMb2FkZXItPmZhaWxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5FVFdPUktfRVJSIH07CiAKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZCh0aGlzLCBzY3JpcHRMb2FkZXItPmlk
ZW50aWZpZXIoKSwgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSk7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWQoKnRoaXMsIHNjcmlwdExvYWRlci0+aWRlbnRp
ZmllcigpLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoU2NyaXB0
U291cmNlQ29kZShzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPnJlc3BvbnNl
VVJMKCkpLCBleGNlcHRpb24pOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUodGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZN
b3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMjc4LDcg
KzI3OCw3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgICAgIG1lc3NhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5
cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGNhbGxTdGFjayksIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCiAgICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUodGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2UpKTsKIH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0VGhyZWFkKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW5zcGVjdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAK
aW5kZXggY2I1N2QyOC4uNWVlYzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV29ya2VySW5zcGVjdG9y
UHJveHk6On5Xb3JrZXJJbnNwZWN0b3JQcm94eSgpCiAgICAgQVNTRVJUKCFtX3BhZ2VDaGFubmVs
KTsKIH0KIAotV29ya2VyVGhyZWFkU3RhcnRNb2RlIFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3Jr
ZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKK1dvcmtlclRocmVhZFN0YXJ0TW9kZSBXb3JrZXJJbnNwZWN0b3JQcm94eTo6d29ya2VyU3Rh
cnRNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7
CiAgICAgYm9vbCBwYXVzZU9uU3RhcnQgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3Vs
ZFdhaXRGb3JEZWJ1Z2dlck9uU3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgcmV0
dXJuIHBhdXNlT25TdGFydCA/IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6V2FpdEZvckluc3BlY3Rv
ciA6IFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lk
IFdvcmtlckluc3BlY3RvclByb3h5Ojp3b3JrZXJTdGFydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbgogCiAgICAgYWxsV29ya2VySW5zcGVjdG9yUHJveGllcygpLmFk
ZCh0aGlzKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29ya2VyU3RhcnRlZCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCksIHRoaXMsIG1fdXJsKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndvcmtlclN0YXJ0ZWQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5nZXQoKSwgdGhpcywgbV91cmwpOwogfQogCiB2b2lkIFdvcmtlckluc3BlY3RvclByb3h5Ojp3
b3JrZXJUZXJtaW5hdGVkKCkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JQ
cm94eTo6d29ya2VyVGVybWluYXRlZCgpCiAgICAgaWYgKCFtX3dvcmtlclRocmVhZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJUZXJtaW5h
dGVkKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgdGhpcyk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuZ2V0KCksIHRoaXMpOwogCiAgICAgYWxsV29ya2VySW5zcGVjdG9yUHJveGllcygpLnJlbW92
ZSh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNw
ZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbnNwZWN0b3JQcm94
eS5oCmluZGV4IGQ5NWJhMjIuLjRiY2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VySW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckluc3BlY3RvclByb3h5LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0KCk7IH0KIAotICAgIFdvcmtl
clRocmVhZFN0YXJ0TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIFdvcmtlclRocmVhZFN0YXJ0TW9kZSB3b3JrZXJTdGFydE1vZGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwogICAgIHZvaWQgd29ya2VyU3RhcnRlZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV29ya2VyVGhyZWFkKiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5h
dGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAKaW5kZXggOWJkMmVkOC4uODRkZWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3QKICAgICAvLyBGSVhNRTogVGhpcyBuZWVkIHRvIGJlIHJldmlzaXRlZCB3
aGVuIHdlIHN1cHBvcnQgbmVzdGVkIHdvcmtlciBvbmUgZGF5CiAgICAgQVNTRVJUKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSBzdGFydE1vZGUgPSBtX2luc3BlY3RvclByb3h5LT53b3JrZXJTdGFydE1vZGUobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmdldCgpKTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlID0gbV9pbnNwZWN0b3JQcm94eS0+d29ya2VyU3RhcnRNb2RlKCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIHByb3h5ID0gZG9jdW1lbnQuaWRiQ29ubmVj
dGlvblByb3h5KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>